2014-07-22 14 views
8

Sto cercando di utilizzare jGit per clonare un repository e controllare un commit particolare.Controlla la revisione specifica dal repository Git con JGit

Supponendo che l'hash di commit sia: 1e9ae842ca94f326215358917c620ac407323c81.

Il mio primo passo è:

// Cloning the repository 
    Git.cloneRepository() 
     .setURI(remotePath) 
     .setDirectory(localPath) 
     .call(); 

Poi ho trovato un'altra domanda che ha suggerito questo approccio:

git.checkout(). 
       setCreateBranch(true). 
       setName("branchName"). 
       setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK). 
       setStartPoint("origin/" + branchName). 
       call(); 

Ma io sono sicuro come collegare le due cose insieme?

Qualche idea?

risposta

14

Si dovrà clonare il repository prima, quindi il primo passo aveva ragione:

Git.cloneRepository().setURI(remotePath).setDirectory(localPath).call(); 

alla cassa solo un commit per la sua identificazione è possibile chiamare checkout in questo modo:

git.checkout().setName("<id-to-commit>").call(); 

Ma si noti che ciò comporterà uno detached HEAD. Per evitare questo, puoi dire allo checkout di creare prima un nuovo ramo che punta al commit e poi checkout a questo ramo.

git.checkout().setCreateBranch(true).setName("new-branch").setStartPoint("<id-to-commit>").call(); 

L'API non è molto intuitiva, ma fa ciò che dovrebbe.

+1

Grazie, questo è proprio quello di cui avevo bisogno! – MrD

Problemi correlati