web-dev-qa-db-ja.com

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

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

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

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

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

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

108
user1447725

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

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

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

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

ただし、最近気づいたのは、キャンセルしてからファイルリスト(F5)を手動で更新しても、もう一度コミットを開始したときにメッセージが表示されないことです。コミットは問題なく成功するようです。

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

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

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

ステファン

122
ichaki5748

私は同じ問題を抱えていましたが、「無視してコミット」とマークしたファイルの変更を元に戻すことで解決しました

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

25
Kevin Brady

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

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

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

svn commit --depth infinity . -m "Merge"
6
Lazy Badger

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

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

ほんの数個のファイルが影響を受ける場合にのみ安全に動作するUいソリューション:

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

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

1
Thomas Weller

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

別の答えのように、commit-on-commitとは何の関係もありませんでした。TortoiseSVNのバグのように見えました。

1
Chris

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

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

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

お役に立てれば!

1
Danny Lager

TortoiseSVNは、commitを呼び出す前に、何らかの種類の有効性チェックを実行しているようです。良いですが、エラーメッセージは非常に不明瞭です。

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

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

1
sgowd

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

0
Bruno Milanez

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

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

0
Nicolas