java api mercurial javahg

Mercurial API para Java?



javahg (5)

¿Existe una API simple para acceder a los repositorios de Mercurial desde Java?

Hay complementos para Netbeans y Eclipse, pero a diferencia de sus contrapartes de Subversion, no usan una biblioteca común de nivel inferior, sino que traen sus propios contenedores para llamar al binario Mercurial. Llamar al binario estaría bien (por ahora), pero parece muy difícil usar esos complementos en aplicaciones independientes (fuera del IDE para el que fueron creados).

También hay HgKit, pero eso es muy pre-alfa.


¿Has mirado a Jython? Por lo que puedo ver here , debería ayudar a usar los módulos de python mercurial desde dentro de un entorno Java, al igual que JRuby para Ruby.



También hay un hg4j pero por ahora solo permite leer el repositorio.


Una nueva opción es JavaHg , que le proporciona una API Java de alto nivel. Las pruebas unitarias dan un buen ejemplo de cómo se programa con él (a partir de JavaHg 0.1):

public void commitTest() throws IOException { Repository repo = getTestRepository(); writeFile("x", "abc"); CommitCommand commit = CommitCommand.on(repo); StatusCommand status = StatusCommand.on(repo); List<StatusLine> statusLines = status.lines(); Assert.assertEquals(1, statusLines.size()); Assert.assertEquals(StatusLine.Type.UNKNOWN, statusLines.get(0).getType()); AddCommand.on(repo).execute(); statusLines = status.lines(); Assert.assertEquals(1, statusLines.size()); Assert.assertEquals(StatusLine.Type.ADDED, statusLines.get(0).getType()); commit.message("Add a file").user("Martin Geisler"); Changeset cset = commit.execute(); Assert.assertEquals("Martin Geisler", cset.getUser()); statusLines = status.lines(); Assert.assertEquals(0, statusLines.size()); }

Interactúa con el servidor de comandos Mercurial presente en la versión 1.9 y posteriores. Esto significa que habrá un proceso Mercurial persistente que acepta múltiples comandos y así evitará la sobrecarga de inicio normalmente asociada con el lanzamiento de Mercurial. Esperamos que se use en una próxima versión de MercurialEclipse. (Soy uno de los autores de JavaHg).


hg4j tiene ahora más funcionalidad (es decir, clona) y parece estar en desarrollo real