Alex Rivera | Logout

Usage of 'pull' command in Jgit

Asked 2012-11-15T14:51:02.870
12

I'm a new user of git and am using JGit to interact with a remote git repository. In JGit, I used CloneCommand to initially to clone a repo, and it worked without a issue. However, when I try to use PullCommand, which is the equivalent of SVN update AFAIK, the local repo contents are not updated.

This is the code that I used:

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

localPath = "/home/test/git_repo_test";
remotePath = "https://github.com/test/repo_1.git";

try {
    localRepo = new FileRepository(localPath + "/.git");
} catch (IOException e) {
    e.printStackTrace();  
}
git = new Git(localRepo);

PullCommand pullCmd = git.pull();
try {
    pullCmd.call();
} catch (GitAPIException e) {
    e.printStackTrace();  
}

This doesn't update the local repository for new files which I have pushed to the remote repository using the command line. However, if I delete the local repository and take a clone again, all the changes are reflected.

Please let me know what is the correct approach of using PullCommand in JGit.

EDIT:

The structure of the remote repository:

root ____ file_1
  |______ directory_1
              |__________ file_2 
              |__________ file_3

directory_1 and the two files are pushed from the commandline after the initial cloning and I tried this code so that it will get reflected in the local repository, which is not happening.

The code used to clone the repository:

File file = new File(localPath);
CloneCommand cloneCmd = git.cloneRepository();
try {
    cloneCmd.setURI(remotePath)
            .setDirectory(file)
            .call();
} catch (GitAPIException e) {
    e.printStackTrace();  
}

Here, git, localPath and remotePath are the same

Edit
Report

1 Answer

4

Documentations says about constructor of Git class following:

Constructs a new Git object which can interact with the specified git repository. All command classes returned by methods of this class will always interact with this git repository.

So, as I can suggest, you have to pass path of remote repo to constructor, now you're trying to pull from your local repo.

answered 2012-11-15T15:02:36.720

Your Answer