Tortoiseの非再帰的なコミットはどのように機能しますか?


110

別のブランチ(完全に異なるフォルダー構造を持つ)からマージしたSVNブランチ(私のブランチ)のコピーをローカルにチェックアウトしました。つまり、基本的には(古いファイルの)削除と(新しいファイルの)追加がたくさんあります。

マージをリポジトリ(私のブランチ)にコミットしようとすると、Tortoiseは言います

このコミットは再帰的ではなく、移動または名前変更されたフォルダーがコミット用に選択されています。このような移動/名前変更は、常にリポジトリで再帰的に実行されます。とにかくコミットしますか?

このコミットを続行しても問題ありませんか?そうでない場合、問題がないようにするにはどうすればよいですか?

また、追加した一部のファイルについては、追加後に変更を加えました(これが性質に影響する場合)。

回答:


129

Googleによる修正方法:コミットウィンドウでF5キーを押します(「警告ポップアップ」ではありません)。

詳細については、http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId = 757&dsMessageId = 2831045を参照してください。

2011年8月26日22:39に、Ryan J Ollosは次のように書いています。

数か月前から、コミットを開始すると次のダイアログボックスが表示されるのを目にしました。マージ後にコミットしようとすると頻繁に発生します。

しかし、最近気付いたことは、キャンセルしてファイルリスト(F5)を手動で更新した場合、2回目のコミットを開始してもメッセージが表示されないことです。コミットは問題なく成功し、それ以上の問題はないようです。

コミットダイアログは、バックグラウンドスレッドで作業コピーを監視して、変更通知を確認します。このような通知は、ファイルが変更/移動/名前変更された場合にOSによって送信されます...このような通知が受信されると、コミットダイアログは最初にいくつかのチェックを実行して、ほとんどのメッセージをドロップできるようにします。チェックされておらず、コミットダイアログに表示されていないファイルが何らかの理由で変更されたことを通知が示している場合、非再帰的コミットに戻ります。これは、たとえば、別のエディターでファイルを開いていて、コミットダイアログが開いているときに変更を保存すると、コミットダイアログでチェックしていなくてもそのファイルがコミットされるためです(表示されません)。 F5でダイアログを更新するまで)。

警告ダイアログが頻繁に表示される場合は、作業コピーのファイルを変更する別のツール/アプリが実行されていないか確認してください。

そして気づいたように、F5キーを押すと、「非再帰フラグ」がリセットされます。これは、更新後に、すべてのファイルが表示されるためです-ダイアログを開始した後に変更したファイルも表示されます。

ステファン


1
答えの中のリンクは死んでいるようです。インターネットアーカイブweb.archive.org/web/20150306224932/http://…
buzz3791

1
F5キーを押してみました。その結果、コミットダイアログファイルのリストにほとんどのファイルが2回(まったく同じパスと名前で)表示され、コミットしようとすると警告メッセージ表示されます。
またはMapper

26

同じ問題がありましたが、「コミット時に無視」とマークしたファイルへの変更を元に戻すことで解決しました

これらのファイルを元に戻すと、tortoisesvnはマージからの他のすべてのファイルをコミットできました


実際の理由は何ですか?これらのファイルがなぜまたはどのように問題を引き起こしていますか?
Mannoj

5

このコミットを続行しても大丈夫ですか?

いいえ、コミットはWCツリー内のすべての変更を無視し、ルートレベルの変更のみを反映します(壊れたマージ)。

最初に非再帰をチェックアウトするときにエラーが発生しました。あなたはすることができ、良いを行うフルコミットしようとする使用して --depth infinityCLIにパラメータをかTortoiseSVNのGUIでこのスイッチを見つけます。

svn commit --depth infinity . -m "Merge"

1
「最初に非再帰をチェックアウトするときにエラーが発生しました。」いいえ、必ずしもそうとは限りません。いつもと同じ方法でトイレをチェックアウトしましたが、まだ突然この問題が発生しています。実際、これは以下の代替ソリューションのいずれにも当てはまらないようです。
キースM

これは完全に誤りです。私は時々このメッセージを受け取り、いつもと同じ方法で自分の作業コピーを再帰的にチェックアウトしました
1800情報

1

また、SVNで追加した一部のファイルについては、追加後に変更を加えました(これが性質に影響する場合)。

私の場合、それがメッセージを表示する原因となったのですが、コミットのためにそれらのファイルの選択を解除しました。

少数のファイルが影響を受けた場合にのみ安全に機能する醜いソリューション:

  1. 変更されたファイルのコピーを作成する
  2. 変更されたファイルを元に戻す
  3. マージ/再統合をコミットする
  4. 変更されたファイルを元の場所にコピーします

自己通知:ターゲット(トランク)がクリーンな場合にのみブランチを再統合します。


1

TortoiseSVNは、コミットを呼び出す前に何らかの妥当性チェックを実行するようです。良いですが、エラーメッセージは非常に不明確です。

この問題に直面したとき、私はsvnコマンドラインを使用してコミットすることに戻りました。フォルダーの1つが最新でないため、コミットが失敗しました。そのフォルダだけを更新した後、もう一度「svn commit」を実行して、処理が完了しました。

編集:PS:これを試す前に、「コミット時に無視」とマークされたファイルがないことを確認してください。「コミット時に無視」は亀に固有であり、SVNコミットもこれらの変更を選択します。


1

それが私のために働いたので、私がこれを投稿すると思っただけです...

これが発生した理由は、私が作成した新しいプロジェクトの1つを部分的に名前変更し、何らかの理由でそれらがすべてコミット画面で「Missing」と表示されたためです。

プロジェクトとフォルダー(SVNがチェックを入れていた)を削除し、それを新しいプロジェクトとして再び戻した後、突然、すべての「Missing」が「Added」に変わり、何も警告せずにコミットが正常に実行されました。

お役に立てれば!


1

私はこの問題を見ました、そして、原因は明白な理由なしに追加されたステータスを持っていないいくつかの追加されたファイルでした。親フォルダーが「追加済み」として正しく表示されていても、それらは「正常」でした。私はそれらの「通常の」変更を元に戻し、手動でそれらをやり直しました。これにより、追加された各アイテムがコミットリストに2回表示されましたが、エラーが解決され、すべて正常に機能しているように見えます。

別の回答のように、ignore-on-commitとは関係がなく、TortoiseSVNのバグのように見えました。


私の知る限りでは、TortoiseSVNはファイルを再帰的に移動しません。フォルダーを移動すると、フォルダーの履歴は変更されますが、その中のファイルは変更されません。つまり、TortoiseSVNでフォルダーを移動するには、目的の宛先にフォルダーを再作成し、フォルダーを追加してから、元のフォルダーの内容を新しいフォルダーに移動する必要があります。または、コマンドラインを使用します。
Bradley Singer

これは合併ではなく、移動によるものだと思います。同様の操作でない限り、私はフォローしていません。
クリス

0

問題は、情報がツリー内で上に移動したため、mergeinfoが誰かによって、または自動的に削除されたことです。それらを再びマージする場合、今のところうまくいきます。しかし、他のすべてのユーザーは、マージされていないブランチで問題が発生します。SVNは一部のコードを失い、すでに送信されたコードを再度マージします。

したがって、これらのファイルを元に戻して再度変更することは可能ですが、変更をコミットするだけではいけません。


0

私は同じ問題を抱えていました。すべてのファイルを選択する代わりに、バージョン管理されたものをクリックし、すべてがうまくいきました。私の場合、バージョン管理されたオプションはすべてのファイルを選択したので、今はすべて問題ありません。


-4

tortoisesvnのオプションがわかりませんが、コマンドラインを使用できます

svn commit --non-recursive [folder]

それはあなたが挨拶をするのと同じようにうまくいく


他の答えは、これはあなたが実際にコミットしたいものをコミットしないと言っています。
キースM
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.