54 votes

JGit : Impossible de trouver un tutoriel ou un exemple simple

Je n'arrive pas à trouver un seul tutoriel fonctionnel pour JGit.

Il serait très utile que quelqu'un ait un bon lien ou un exemple simple (p.ex. cat-a-file) qui fonctionne (La réponse du Comment "cat" un fichier dans JGit ? ne compile pas avec JGit V.1.0).

Malheureusement, l'officiel Documentation JGit est pour les débutants comme moi pas très utile. Mais je pense qu'il doit y avoir beaucoup de développeurs qui utilisent JGit... ?

107voto

Luca Geretti Points 4756

En effet, il existe très peu de documentation sur l'utilisation de l'API.

Pour le bien des autres lecteurs, je propose ici un test simple pour les opérations les plus courantes :

  1. Créer le référentiel
  2. Clonez-le
  3. Ajouter un fichier
  4. Engagez-vous
  5. Pousser
  6. Piste origin/master en master (ceci est nécessaire si vous clonez un repo nu)
  7. Tirer (inutilement, dans ce cas, mais peu importe)

En particulier, notez que l'ajout de fichiers nécessite un motif et non un chemin. De plus, le suivi nécessite .setForce(true) en raison de l'existence de master sur le clone.

Veuillez noter que cet exemple se veut simple et autonome.

import java.io.File;
import java.io.IOException;

import org.eclipse.jgit.api.*;
import org.eclipse.jgit.api.errors.*;
import org.eclipse.jgit.api.CreateBranchCommand.SetupUpstreamMode;
import org.eclipse.jgit.internal.storage.file.FileRepository;
import org.eclipse.jgit.lib.Repository;

import org.junit.Before;
import org.junit.Test;

public class TestJGit {

    private String localPath, remotePath;
    private Repository localRepo;
    private Git git;

    @Before
    public void init() throws IOException {
        localPath = "/home/me/repos/mytest";
        remotePath = "git@github.com:me/mytestrepo.git";
        localRepo = new FileRepository(localPath + "/.git");
        git = new Git(localRepo);
    }

    @Test
    public void testCreate() throws IOException {
        Repository newRepo = new FileRepository(localPath + ".git");
        newRepo.create();
    }

    @Test
    public void testClone() throws IOException, GitAPIException {
        Git.cloneRepository().setURI(remotePath)
                .setDirectory(new File(localPath)).call();
    }

    @Test
    public void testAdd() throws IOException, GitAPIException {
        File myfile = new File(localPath + "/myfile");
        myfile.createNewFile();
        git.add().addFilepattern("myfile").call();
    }

    @Test
    public void testCommit() throws IOException, GitAPIException,
            JGitInternalException {
        git.commit().setMessage("Added myfile").call();
    }

    @Test
    public void testPush() throws IOException, JGitInternalException,
            GitAPIException {
        git.push().call();
    }

    @Test
    public void testTrackMaster() throws IOException, JGitInternalException,
            GitAPIException {
        git.branchCreate().setName("master")
                .setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM)
                .setStartPoint("origin/master").setForce(true).call();
    }

    @Test
    public void testPull() throws IOException, GitAPIException {
        git.pull().call();
    }
}

34voto

centic Points 1898

J'ai créé un jgit-cookbook Il s'agit d'une collection de recettes simples et autonomes qui peuvent être utilisées pour faire diverses choses dans JGit. Il devrait déjà contenir les choses de base que vous feriez avec JGit, les suggestions de nouveaux snippets sont les bienvenues !

1voto

Teraokay Points 55

Voici un très bon tutoriel de "mise en route" : http://alblue.bandlem.com/2013/11/embedding-jgit.html

0voto

Igal Points 836

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X