Come faccio a unirmi in JGit?Come unire in JGit?
Diciamo che voglio unire master
con il ramo foo
, come posso fare questo?
Come faccio a unirmi in JGit?Come unire in JGit?
Diciamo che voglio unire master
con il ramo foo
, come posso fare questo?
Per unire, è possibile utilizzare il MergeCommand
(nella confezione org.eclipse.jgit.api), dopo un CheckoutCommand
. Per fornire un esempio, perché in effetti manca Jgit esempi:
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
}
non ho provato il codice quindi potrebbe non essere perfetto, ma è solo per fornire un inizio. E non ho incluso le importazioni. Sviluppare con JGit implica molti tentativi basati su javadoc
Troverete nella JGit repository vari test classes for Merge, tra cui ad esempio la SimpleMergeTest
Merger ourMerger = MergeStrategy.OURS.newMerger(db);
boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") });
assertTrue(merge);
JGit ha un'implementazione Java completa della strategia di fusione di git resolution dal 2010. Se hai bisogno di esempi guarda i casi di test JGit corrispondenti e dai un'occhiata a come EGit è usando MergeCommand, guarda la classe org.eclipse.egit.core.op.MergeOperation
.
Lo stesso link che hai fornito a Github afferma che l'unione è una caratteristica mancante. Cosa succede con quello? – Tower
@rFactor Potrebbe essere il caso se fornisse solo un wrapper attorno al comando 'git merge' invece di un'implementazione java nativa, ma questo non sembra più il caso. – VonC
sei in grado di confermarlo? Non sono su una macchina di sviluppo quindi non riesco a capire molto a questo punto, o lo controllerò a un certo punto e posterò qui le mie scoperte. – Tower