TortoiseSVNで非再帰的なコミットを行う方法は?
-
19-08-2019 - |
質問
TortoiseSVNを使用して、チェックアウトした一番上のディレクトリ(ほとんどの場合、とにかくトランク)でプロパティ(svn:ignoreなど)を変更すると、クライアントはプロジェクト全体を再帰的に処理します。
大きなツリー、多くのデータ、長い時間がかかります。
これを回避するにはどうすればよいですか?他のどこかに変更があるかもしれませんが、私はそれらに興味がなく、とにかくチェックを外すことを知っています。
スパースチェックアウト機能は知っていますが、スパースチェックアウトがないため、ここにどのように適用できるかわかりません。 2つ目のスパースチェックアウトを作成し、変更/コミットを適用してから、もう1つのコピーを更新する必要がありますか?
解決
試してください:
svn commit --non-recursive [target]
[編集: OPは質問を更新して、通常のSubversionコマンドラインではなくTortoiseSVNを参照していることを明確にしました。]
いいえ、TortoiseSVNは非再帰的にコミットする直接的な方法を提供しません。ただし、ディレクトリの最上位で何かをコミットするが、ではない下位レベル(たとえば、選択を解除する)、これにより必然的に非再帰的なコミットが発生します。 こちらをご覧ください。
したがって、回避策があります。本当に、本当にこれをやりたいのに、コマンドラインが気に入らない場合は、基になるディレクトリのファイルに些細な変更を加え、ダミーの変更を選択解除して実際のファイルをコミットしてから、ダミーの変更を元に戻します。これにより、TortoiseSVNは非再帰的なコミットを強制されます。
他のヒント
ディレクトリで操作を行っているため、亀はその中のすべてに影響を与える可能性があると想定しているため、作業コピー内を完全に見下ろしています。
作業コピーのチェックは、ネットワーク操作を伴わないファイルシステム上のローカル操作であるため、大規模なリポジトリでもかなり高速になります
Tortoiseが変更されたすべてのファイルを検出した後、関心のあるファイルのみを選択してコミットできます。
いずれにせよ、違いはディレクトリがプレーンファイルとは異なる方法で処理されることにあり、この処理の違いはTortoiseだけでなく、subversion自体の動作にも反映される可能性があります。