0

私は cvs を使用しており (任意ではありません)、v2 ブランチに新しいパッケージ階層を作成してプロジェクトをリファクタリングしました。次に、ブランチ v1 で発生した変更をブランチ v2 にマージする必要があります。しかし、ファイルのパスが変更されたため、通常の比較はできません。Eclipse (または他のツール) でこれを行う方法はありますか? ファイル名を使用するだけでは、ファイルの起源が同じかどうかを確実に知る方法はありません。私の場合、すべてのファイル名が一意であるため、これは問題ではありません。2 つのファイルを手動で選択して diff を実行できることはわかっていますが、これを実行するにはクラスが多すぎます。ツールが差分を自動的に検出するファイルが変更されたときのように、ファイルの自動ペアリングを探しています

くだらないVCSでそのようなマージを行うための他の提案はありますか?

更新: 私が行った変更についてのいくつかの説明は、より明確になるかもしれません

v1
Folder1
   file1
   file2
   file3
   file4
   file5

v2
FolderA
   file1
   FolderA1
      file2
      FolderA11
          file3
   FolderA2
      file4
FolderB
   file5

ご覧のとおり、動きにパターンはありません。これは、フラットな階層の前にあったもののまったく新しい階層です。つまり、フォルダーの差分を実行できません。私が欲しいのは、たとえば v1:folder1/file4 と v2:FolderA/FolderA2/file4 を組み合わせて、ファイルが移動されたという事実を気にせずにコンテンツの変更を確認できるようにすることです。つまり、ファイル名だけを使用してファイルを照合するパスなしの diff

4

3 に答える 3

0

両方のブランチをダウンロードし、http: //winmerge.org/などの比較ツールを使用してローカルディレクトリを比較します。

于 2013-01-15T16:28:59.937 に答える
0

私が書いたライブラリを試すことができます。2 つのフォルダーの内容を比較して、真/偽、またはそれらの違いを詳細に比較できます。(サブフォルダーもその内容と比較されます)

リンクは次のとおりです。 https://badandmadstudio.wordpress.com/projects/dircompare-java/

于 2013-09-16T13:07:09.433 に答える
0

次のシェル スクリプト スニペットを試してください。

ls -R /path/to/source1 | grep '.java\|.js\|.css' | grep -v ':$' >allfiles.txt
ls -R /path/to/source2 | grep '.java\|.js\|.css' | grep -v ':$' >>allfiles.txt
cat allfiles.txt | sort | uniq -d > same_files.txt
cat allfiles.txt | sort | uniq -u > different_files.txt

# This will compare the same files one-by-one
for i in `cat same_files.txt`; do 
    FILE1=`find /path/to/source1 -name $i`; 
    FILE2=`find /path/to/source2 -name $i`;
    diff -q $FILE1 $FILE2 
done

トリックはuniqコマンドとその特別なスイッチです。-d重複のみを残し、重複を-u整理します。

Windows で実行するには、httpCygwin : //www.cygwin.com/ を使用します。

于 2013-01-15T19:33:28.873 に答える