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