2016-07-15 5 views
7

Ich habe ein Repository in zwei verschiedenen Ordnern (folder1 und folder2). Innerhalb Repositories hat eine "oldFile" DateiJGit bekommen Dateien gezogen

Im folder1 ich die folgenden Schritte ausführen:

echo 123 > oldFile 
touch newFile 
git add newFile oldFile 
git commit -m "Change the oldFile from folder1 and add the newFile" oldFile newFile 
git push origin master 

Danach wird in der folder2 ich die nächsten Schritte:

echo zxc > oldFile; 
git add oldFile; 
git commit oldFile -m "Change oldFile from folder2" 

In diesem Fall möchte ich Erhalten Sie einen Zusammenführungskonflikt

Und ich möchte gezogene Dateien sehen. Ich habe das Beispiel von here.

ObjectId oldHead = repository.resolve("HEAD^{tree}"); //save old objectId 

PullResult pullResult = pullCommand.setProgressMonitor(new TextProgressMonitor(new OutputStreamWriter(System.out))).call(); 

ObjectId head = repository.resolve("HEAD^{tree}"); 

ObjectReader reader = repository.newObjectReader(); 
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); 
oldTreeIter.reset(reader, oldHead); 
CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); 
newTreeIter.reset(reader, head); 
List<DiffEntry> diffs= git.diff() 
        .setNewTree(newTreeIter) 
        .setOldTree(oldTreeIter) 
        .call(); 

In pullResult.getMergeResult().getMergeConflicts() ich nur haben oldFile-Datei und die diffs Sammlung ist leer.

In einem einfachen Fall (wenn ich die „oldfile“ nicht ändern von folder2) die Differentiale Sammlung ist nicht leer - es hat 1 die Datei „newFile“ und pullResult.getMergeResult().getMergeConflicts() ist leer (es ist offensichtlich).

Was mache ich falsch? Ich möchte in Konflikt stehende Dateien und erfolgreich gezogene Dateien erhalten.

+0

nicht die 'git pull' Befehl zeigen Sie die Dateinamen, die zusammen mit Konflikten Fehler Konflikte hatte? –

Antwort

4

Ich fand die Antwort. benötigen

ObjectId head = git.getRepository().resolve("refs/remotes/origin/HEAD^{tree}");

statt

ObjectId head = repository.resolve("HEAD^{tree}");