Jak scalić JGit?Jak połączyć w JGit?
Załóżmy, że chcę połączyć master
z oddziałem foo
, jak to zrobić?
Jak scalić JGit?Jak połączyć w JGit?
Załóżmy, że chcę połączyć master
z oddziałem foo
, jak to zrobić?
Aby scalić, można użyć (w opakowaniu org.eclipse.jgit.api) MergeCommand
po CheckoutCommand
. Aby zapewnić Ci przykład, bo rzeczywiście Jgit brakuje przykładów:
Git git = ... // you get it through a CloneCommand, InitCommand
// or through the file system
CheckoutCommand coCmd = git.checkout();
// Commands are part of the api module, which include git-like calls
coCmd.setName("master");
coCmd.setCreateBranch(false); // probably not needed, just to make sure
coCmd.call(); // switch to "master" branch
MergeCommand mgCmd = git.merge();
mgCmd.include("foo"); // "foo" is considered as a Ref to a branch
MergeResult res = mgCmd.call(); // actually do the merge
if (res.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING)){
System.out.println(res.getConflicts().toString());
// inform the user he has to handle the conflicts
}
nie próbowałem kodu, więc nie może być doskonały, ale to tylko, aby zapewnić start. I nie uwzględniłem przywozu. Rozwijających się JGit implikuje wiele prób opartych na javadoc
Znajdziecie w JGit repository różnych test classes for Merge, w tym na przykład SimpleMergeTest
Merger ourMerger = MergeStrategy.OURS.newMerger(db);
boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") });
assertTrue(merge);
JGit jest pełnowartościowy wykonania Java GIT resolve strategii seryjnej od roku 2010. Jeśli trzeba spojrzeć na przykłady odpowiednich testów JGit i patrzeć jak Egit jest używając MergeCommand, spójrz na klasę org.eclipse.egit.core.op.MergeOperation
.
To samo łącze, które dałeś Githubowi, że łączenie jest brakującą cechą. Co z tym? – Tower
@rFactor Mogło by tak być, gdyby zawierał tylko otoki wokół polecenia 'git merge' zamiast w pełni natywnej implementacji java, ale wydaje się, że już tak nie jest. – VonC
Czy jesteś w stanie to potwierdzić? Nie pracuję na maszynie programistycznej, więc nie mogę się zbytnio zorientować w tym punkcie, albo sprawdzę ją w pewnym momencie i opublikuję tutaj moje wyniki. – Tower