package bluej.groupwork.git;
import bluej.groupwork.TeamworkCommandError;
import bluej.groupwork.TeamworkCommandResult;
import java.io.IOException;
import java.util.Collection;
import org.eclipse.jgit.api.LsRemoteCommand;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.lib.Ref;
import org.eclipse.jgit.lib.StoredConfig;
| Git command to share a project
|
| @author Fabio Heday
|
public class GitShareCommand
extends GitCommand{
public GitShareCommand(GitRepository repository)
{
super(repository);
}
@Override
public TeamworkCommandResult getResult()
{
try {
if (isRemoteRepoEmpty()) {
Git.init().setDirectory(getRepository().getProjectPath()).call();
Git repo = Git.open(this.getRepository().getProjectPath());
StoredConfig config = repo.getRepository().getConfig();
config.setString("remote", "origin", "url", getRepository().getReposUrl());
config.setString("remote", "origin", "fetch", "+refs/heads/*:refs/remotes/origin/*");
config.setString("branch", "master", "remote", "origin");
config.setString("branch", "master", "merge", "refs/heads/master");
config.save();
repo.close();
}
else {
return new TeamworkCommandError("Remote Git repository already has a project.", "Remote Git repository already has a project.");
}
} catch (GitAPIException | IOException ex) {
return new TeamworkCommandError(ex.getMessage(), ex.getLocalizedMessage());
}
return new TeamworkCommandResult();
}
private boolean isRemoteRepoEmpty() throws GitAPIException
{
try {
String gitUrl = getRepository().getReposUrl();
LsRemoteCommand lsRemoteCommand = Git.lsRemoteRepository();
lsRemoteCommand.setRemote(gitUrl);
lsRemoteCommand.setCredentialsProvider(getRepository().getCredentialsProvider());
disableFingerprintCheck(lsRemoteCommand);
lsRemoteCommand.setTags(false);
lsRemoteCommand.setHeads(false);
Collection<Ref> ref;
ref = lsRemoteCommand.call();
return ref.isEmpty();
} catch (GitAPIException ex) {
throw ex;
}
}
}
top,
use,
map,
class GitShareCommand
. GitShareCommand
. getResult
. isRemoteRepoEmpty
80 neLoCode
+ 2 LoComm