2012-08-27 14 views

Respuesta

7

a correspondencia, se puede utilizar el MergeCommand (en el paquete org.eclipse.jgit.api), después de un CheckoutCommand. Para darle un ejemplo, porque de hecho Jgit carece de ejemplos:

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 
} 

no probé el código por lo que podría no ser perfecto, pero es sólo para proporcionar un comienzo. Y no incluí las importaciones. Desarrollar con JGit implica una gran cantidad de intentos basados ​​en el javadoc

4

Usted encontrará en el JGit repository varios test classes for Merge, incluyendo por ejemplo la SimpleMergeTest

Merger ourMerger = MergeStrategy.OURS.newMerger(db); 
boolean merge = ourMerger.merge(new ObjectId[] { db.resolve("a"), db.resolve("c") }); 
assertTrue(merge); 
+0

El mismo enlace que le diste a Github establece que la fusión es una característica que falta. ¿Que pasa con eso? – Tower

+0

@rFactor Podría ser el caso si proporcionara solo un contenedor alrededor del comando 'git merge' en lugar de una implementación java completamente nativa, pero parece que ya no es el caso. – VonC

+0

¿puede confirmarlo? No estoy en una máquina de desarrollo, así que no puedo entender mucho en este punto, o simplemente lo verificaré en algún momento y publicaré aquí mis hallazgos. – Tower

2

JGit tiene una implementación completa de Java de la estrategia git resolve merge desde 2010. Si necesita ejemplos consulte los casos de prueba JGit correspondientes y vea cómo es EGit usando MergeCommand, mira la clase org.eclipse.egit.core.op.MergeOperation.

Cuestiones relacionadas