Example usage for org.eclipse.jgit.api CloneCommand CloneCommand

List of usage examples for org.eclipse.jgit.api CloneCommand CloneCommand

Introduction

In this page you can find the example usage for org.eclipse.jgit.api CloneCommand CloneCommand.

Prototype

public CloneCommand() 

Source Link

Document

Create clone command with no repository set

Usage

From source file:com.addthis.hydra.job.store.JobStoreGit.java

License:Apache License

/**
 * Initialize the git repo in the specified directory
 *
 * @throws Exception If there is a problem during initialization
 *//*from   w w  w  . j  ava 2  s  .  co  m*/
private void initialize() throws Exception {
    synchronized (gitDir) {
        FileBasedConfig config = repository.getConfig();
        for (String branch : Arrays.asList(branchName, "master")) {
            config.setString("branch", branch, "merge", "refs/heads/" + branch);
            config.setString("branch", branch, "remote", "origin");

        }
        config.setString("remote", "origin", "fetch", "+refs/*:refs/*");
        config.setString("remote", "origin", "url", gitUrl);
        if (!gitDir.exists()) {
            if (remote) {
                new CloneCommand().setCredentialsProvider(provider).setRemote("origin").setBranch("master")
                        .setURI(gitUrl).setDirectory(baseDir).call();
                git.branchCreate().setName(branchName).call();
                git.checkout().setName(branchName).call();
            } else {
                repository.create();
            }
        }
        if (!jobDir.exists()) {
            Files.initDirectory(jobDir);
        }
    }
}

From source file:com.ejwa.gitdepmavenplugin.DownloaderMojo.java

License:Open Source License

private Git clone(Pom pom, GitDependency dependency) throws MojoExecutionException {
    final CloneCommand c = new CloneCommand();
    final String location = dependency.getLocation();

    c.setURI(location);/*w ww  .j  a v  a  2s.co m*/
    c.setCloneAllBranches(true);
    c.setProgressMonitor(new TextProgressMonitor());

    final GitDependencyHandler dependencyHandler = new GitDependencyHandler(dependency);
    final String version = dependencyHandler.getDependencyVersion(pom);
    final String tempDirectory = Directory.getTempDirectoryString(location, version);

    c.setDirectory(new File(tempDirectory));
    return c.call();
}

From source file:com.ejwa.mavengitdepplugin.DownloaderMojo.java

License:Open Source License

private Git clone(POM pom, GitDependency dependency) {
    final CloneCommand c = new CloneCommand();

    c.setURI(dependency.getLocation());//  w w  w  .  ja v a2s  . c  o m
    c.setCloneAllBranches(true);
    c.setProgressMonitor(new TextProgressMonitor());

    final GitDependencyHandler dependencyHandler = new GitDependencyHandler(dependency);
    final String version = dependencyHandler.getDependencyVersion(pom);
    final String tempDirectory = Directory.getTempDirectoryString(dependency.getLocation(), version);
    c.setDirectory(new File(tempDirectory));

    return c.call();
}

From source file:com.gitblit.manager.GitblitManager.java

License:Apache License

/**
 * Creates a personal fork of the specified repository. The clone is view
 * restricted by default and the owner of the source repository is given
 * access to the clone.//  ww  w .j  a  va2  s  .  c  om
 *
 * @param repository
 * @param user
 * @return the repository model of the fork, if successful
 * @throws GitBlitException
 */
@Override
public RepositoryModel fork(RepositoryModel repository, UserModel user) throws GitBlitException {
    String cloneName = MessageFormat.format("{0}/{1}.git", user.getPersonalPath(),
            StringUtils.stripDotGit(StringUtils.getLastPathElement(repository.name)));
    String fromUrl = MessageFormat.format("file://{0}/{1}",
            repositoryManager.getRepositoriesFolder().getAbsolutePath(), repository.name);

    // clone the repository
    try {
        Repository canonical = getRepository(repository.name);
        File folder = new File(repositoryManager.getRepositoriesFolder(), cloneName);
        CloneCommand clone = new CloneCommand();
        clone.setBare(true);

        // fetch branches with exclusions
        Collection<Ref> branches = canonical.getRefDatabase().getRefs(Constants.R_HEADS).values();
        List<String> branchesToClone = new ArrayList<String>();
        for (Ref branch : branches) {
            String name = branch.getName();
            if (name.startsWith(Constants.R_TICKET)) {
                // exclude ticket branches
                continue;
            }
            branchesToClone.add(name);
        }
        clone.setBranchesToClone(branchesToClone);
        clone.setURI(fromUrl);
        clone.setDirectory(folder);
        Git git = clone.call();

        // fetch tags
        FetchCommand fetch = git.fetch();
        fetch.setRefSpecs(new RefSpec("+refs/tags/*:refs/tags/*"));
        fetch.call();

        git.getRepository().close();
    } catch (Exception e) {
        throw new GitBlitException(e);
    }

    // create a Gitblit repository model for the clone
    RepositoryModel cloneModel = repository.cloneAs(cloneName);
    // owner has REWIND/RW+ permissions
    cloneModel.addOwner(user.username);

    // ensure initial access restriction of the fork
    // is not lower than the source repository  (issue-495/ticket-167)
    if (repository.accessRestriction.exceeds(cloneModel.accessRestriction)) {
        cloneModel.accessRestriction = repository.accessRestriction;
    }

    repositoryManager.updateRepositoryModel(cloneName, cloneModel, false);

    // add the owner of the source repository to the clone's access list
    if (!ArrayUtils.isEmpty(repository.owners)) {
        for (String owner : repository.owners) {
            UserModel originOwner = userManager.getUserModel(owner);
            if (originOwner != null && !originOwner.canClone(cloneModel)) {
                // origin owner can't yet clone fork, grant explicit clone access
                originOwner.setRepositoryPermission(cloneName, AccessPermission.CLONE);
                reviseUser(originOwner.username, originOwner);
            }
        }
    }

    // grant origin's user list clone permission to fork
    List<String> users = repositoryManager.getRepositoryUsers(repository);
    List<UserModel> cloneUsers = new ArrayList<UserModel>();
    for (String name : users) {
        if (!name.equalsIgnoreCase(user.username)) {
            UserModel cloneUser = userManager.getUserModel(name);
            if (cloneUser.canClone(repository) && !cloneUser.canClone(cloneModel)) {
                // origin user can't yet clone fork, grant explicit clone access
                cloneUser.setRepositoryPermission(cloneName, AccessPermission.CLONE);
            }
            cloneUsers.add(cloneUser);
        }
    }
    userManager.updateUserModels(cloneUsers);

    // grant origin's team list clone permission to fork
    List<String> teams = repositoryManager.getRepositoryTeams(repository);
    List<TeamModel> cloneTeams = new ArrayList<TeamModel>();
    for (String name : teams) {
        TeamModel cloneTeam = userManager.getTeamModel(name);
        if (cloneTeam.canClone(repository) && !cloneTeam.canClone(cloneModel)) {
            // origin team can't yet clone fork, grant explicit clone access
            cloneTeam.setRepositoryPermission(cloneName, AccessPermission.CLONE);
        }
        cloneTeams.add(cloneTeam);
    }
    userManager.updateTeamModels(cloneTeams);

    // add this clone to the cached model
    repositoryManager.addToCachedRepositoryList(cloneModel);

    if (pluginManager != null) {
        for (RepositoryLifeCycleListener listener : pluginManager
                .getExtensions(RepositoryLifeCycleListener.class)) {
            try {
                listener.onFork(repository, cloneModel);
            } catch (Throwable t) {
                logger.error(String.format("failed to call plugin onFork %s", repository.name), t);
            }
        }
    }
    return cloneModel;
}

From source file:com.gitblit.utils.JGitUtils.java

License:Apache License

/**
 * Clone or Fetch a repository. If the local repository does not exist,
 * clone is called. If the repository does exist, fetch is called. By
 * default the clone/fetch retrieves the remote heads, tags, and notes.
 *
 * @param repositoriesFolder//  w  w w  .  j  a  va2  s  .  co  m
 * @param name
 * @param fromUrl
 * @param bare
 * @param credentialsProvider
 * @return CloneResult
 * @throws Exception
 */
public static CloneResult cloneRepository(File repositoriesFolder, String name, String fromUrl, boolean bare,
        CredentialsProvider credentialsProvider) throws Exception {
    CloneResult result = new CloneResult();
    if (bare) {
        // bare repository, ensure .git suffix
        if (!name.toLowerCase().endsWith(Constants.DOT_GIT_EXT)) {
            name += Constants.DOT_GIT_EXT;
        }
    } else {
        // normal repository, strip .git suffix
        if (name.toLowerCase().endsWith(Constants.DOT_GIT_EXT)) {
            name = name.substring(0, name.indexOf(Constants.DOT_GIT_EXT));
        }
    }
    result.name = name;

    File folder = new File(repositoriesFolder, name);
    if (folder.exists()) {
        File gitDir = FileKey.resolve(new File(repositoriesFolder, name), FS.DETECTED);
        Repository repository = new FileRepositoryBuilder().setGitDir(gitDir).build();
        result.fetchResult = fetchRepository(credentialsProvider, repository);
        repository.close();
    } else {
        CloneCommand clone = new CloneCommand();
        clone.setBare(bare);
        clone.setCloneAllBranches(true);
        clone.setURI(fromUrl);
        clone.setDirectory(folder);
        if (credentialsProvider != null) {
            clone.setCredentialsProvider(credentialsProvider);
        }
        Repository repository = clone.call().getRepository();

        // Now we have to fetch because CloneCommand doesn't fetch
        // refs/notes nor does it allow manual RefSpec.
        result.createdRepository = true;
        result.fetchResult = fetchRepository(credentialsProvider, repository);
        repository.close();
    }
    return result;
}

From source file:com.googlesource.gerrit.plugins.github.git.GitCloneStep.java

License:Apache License

@Override
public void doImport(ProgressMonitor progress) throws GitCloneFailedException,
        GitDestinationAlreadyExistsException, GitDestinationNotWritableException {
    CloneCommand clone = new CloneCommand();
    String sourceUri = getSourceUri();
    clone.setURI(sourceUri);/*from w w w  .j  a  v  a2s .c om*/
    clone.setBare(true);
    clone.setDirectory(destinationDirectory);
    if (progress != null) {
        clone.setProgressMonitor(progress);
    }
    try {
        LOG.info(sourceUri + "| Clone into " + destinationDirectory);
        clone.call();
    } catch (Throwable e) {
        throw new GitCloneFailedException(sourceUri, e);
    }
}

From source file:com.mortardata.project.EmbeddedMortarProject.java

License:Apache License

Git cloneGitMirror(File mirrorPath, CredentialsProvider cp) throws GitAPIException, IOException {
    logger.debug("git clone " + getGitMirrorURL());
    return new CloneCommand().setDirectory(mirrorPath).setURI(getGitMirrorURL()).setCredentialsProvider(cp)
            .setCloneAllBranches(true).call();
}

From source file:com.rimerosolutions.ant.git.tasks.CloneTask.java

License:Apache License

@Override
public void execute() {
    try {//from   w  w w . j  av a  2s  . c  om
        CloneCommand cloneCommand = new CloneCommand();

        if (branchToTrack != null) {
            cloneCommand.setBranch(branchToTrack);
        }

        if (!branchNames.isEmpty()) {
            cloneCommand.setBranchesToClone(branchNames);
        }

        cloneCommand.setURI(getUri()).setBare(bare).setCloneAllBranches(cloneAllBranches)
                .setCloneSubmodules(cloneSubModules).setNoCheckout(noCheckout).setDirectory(getDirectory());

        setupCredentials(cloneCommand);

        if (getProgressMonitor() != null) {
            cloneCommand.setProgressMonitor(getProgressMonitor());
        }

        cloneCommand.call();
    } catch (Exception e) {
        throw new GitBuildException(String.format(MESSAGE_CLONE_FAILED, getUri()), e);
    }
}

From source file:com.surevine.gateway.scm.git.jgit.JGitGitFacade.java

License:Open Source License

@Override
public void clone(final LocalRepoBean repoBean) throws GitException {
    CloneCommand cloneCommand = new CloneCommand();
    cloneCommand.setDirectory(repoBean.getRepoDirectory().toFile());
    cloneCommand.setURI(repoBean.getCloneSourceURI());
    cloneCommand.setBare(repoBean.isLocalBare());
    try {/*from  w w w  . j a va2 s.  c o  m*/
        cloneCommand.call();
    } catch (GitAPIException e) {
        LOGGER.error(e);
        throw new GitException(e);
    }
}

From source file:com.surevine.gateway.scm.git.jgit.TestUtility.java

License:Open Source License

public static LocalRepoBean createBareClone(final LocalRepoBean nonBareSource) throws Exception {
    final String projectKey = nonBareSource.getProjectKey();
    final String repoSlug = nonBareSource.getSlug() + "_bare";
    final String cloneURL = nonBareSource.getRepoDirectory().toString();
    final Path repoPath = Paths.get(PropertyUtil.getGitDir(), "local_scm", projectKey, repoSlug);
    Files.createDirectories(repoPath.getParent());

    final CloneCommand cloneCommand = new CloneCommand();
    cloneCommand.setBare(true).setCloneAllBranches(true).setURI(cloneURL).call();

    final LocalRepoBean repoBean = new LocalRepoBean();
    repoBean.setProjectKey(projectKey);//from   w  w w.ja  v  a 2s.c o m
    repoBean.setSlug(repoSlug);
    repoBean.setLocalBare(true);
    return repoBean;
}