0

同様の構造を持つ 2 つのディレクトリがあります。

./projectA
          /directory1
                 /file1
          /directory2
                 /file2
                 /file3
                 /file4
          /directory3
          /directoryA
./projectB
          /directory1
          /directory2
                 /file3
          /directory3
          /directoryB

projectA を projectB にマージしたいと思います。ディレクトリまたはファイルが A に存在し、B には存在しない場合、A から B への svn copy を実行して、対応するターゲットにします。A のファイルに対応するファイルが B にある場合は、警告を表示します。どうすればこれを自動的に行うことができますか? シェル スクリプトまたはツールを使用できます。

ありがとう

4

1 に答える 1

1

このコマンドを使用すると、フォルダを無視して、にあるprojectAが にないすべてのファイルを取得します。projectB.svn

diff -qr projectA projectB --exclude=.svn | grep "^Only in projectA:" | cut -d: -f2 | sed 's/^ *//g

このコマンドを使用すると、両方のフォルダーに存在し、異なるファイル (つまり、コピーする前に確認する必要があるファイル) をすべて取得できます。

diff -qr projectA projectB --exclude=.svn | grep "^Files " | cut -d" " -f2 | sed 's!projectA!!g'

ただし、2 番目のコマンドは、スペースが含まれるファイルでは機能しません。

必要なファイル名を含む 2 つのリストが作成されたので、それらを適切に処理する小さなスクリプトを簡単に作成できます。

于 2013-10-17T05:39:21.653 に答える