0
DiffEntry
が届いたツリー(古いものか新しいもの)を迅速かつ簡単に判別する方法が見つからないようです。私の場合は、欠陥/作業ツリーの "発信"(言い換えれば)変更だけに興味があります。他の/マスターブランチからの新しい "着信"変更は関心がありません。JGitのDiffCommandでどのブランチが変更されたかを知るには?
IOW、ファイルのパス名、バージョン、変更の種類のみが必要はまだ他の/ masterブランチにはありません...私は確かに必要ないファイル内容の変更を解析します。マスターブランチの変更は最終的には興味深いものになるでしょうが、私が持っているプログラムによるユースケースを混乱させています。
コードスニペットは:
AbstractTreeIterator oldTreeParser = prepareTreeParser(repository, oldBranchName);
AbstractTreeIterator newTreeParser = prepareTreeParser(repository, newBranchName);
gitInstance = new Git(repository);
List<DiffEntry> diff = gitInstance.diff().setOldTree(oldTreeParser).setNewTree(newTreeParser).setShowNameAndStatusOnly(true).call();
for (DiffEntry entry : diff)
{
// is entry from oldTree or newTree or both?
}
私は、MODIFYがファイルを変更したブランチを判断するのにgetChangeType()で十分ではないと思います。またADDとDELETEの場合は、もともとブランチのどちらにもパートAがないと言うので、誤解を招きます。その場合、チームの他の人がパートAをマスターブランチに追加します。私の作業ブランチとマスターを比較すると、私の支店は部分Aを削除したと思っています。「削除」アクションは真実ではないだけでなく、そのケースを私が実際に行っているケースと区別する方法もないようです。私の枝の中の部分Aを削除しました。 –
私が本当に後にしているのは、DiffEntryが古いブランチ、新しいブランチ、またはその両方から来た場所です。あるいは、何らかの理由でDiffCommandがそれを判断できない場合は、別のAPIアプローチが可能でしょうか?大きなパフォーマンスのヒットではないものがあります。これは、diff出力を解析すると(数十、数百、または数千のファイルを扱うことがあるかもしれません)場合があります。 –
私には、Gitの概念のいくつか(例えばブランチとは何か、diffとは何か)の理解には不一致があるようです。私の知る限り、変更タイプADDは実際の加算を示し、DELETEは実際の削除を示します。疑問がある場合は、あなたの前提を立証したり否定したりするためのテストケースに戻ってください。 –