Example usage for org.eclipse.jgit.api Git cloneRepository

List of usage examples for org.eclipse.jgit.api Git cloneRepository

Introduction

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

Prototype

public static CloneCommand cloneRepository() 

Source Link

Document

Return a command object to execute a clone command

Usage

From source file:org.kaazing.bower.dependency.maven.plugin.UploadBowerArtifactMojo.java

License:Open Source License

/**
 * Checkouts a git repo/* w  w w  .  ja  v  a2s.c om*/
 * @param outputDir
 * @param gitUrl
 * @param credentialsProvider 
 * @return
 * @throws MojoExecutionException
 */
Git checkoutGitRepo(File outputDir, String gitUrl, CredentialsProvider credentialsProvider)
        throws MojoExecutionException {
    outputDir.mkdir();
    try {
        return Git.cloneRepository().setURI(gitUrl).setDirectory(outputDir)
                .setCredentialsProvider(credentialsProvider).call();
    } catch (Exception e) {
        throw new MojoExecutionException("Could not fetch git repository", e);
    }
}

From source file:org.kabir.github.merges.model.GitRepositoryManager.java

License:Open Source License

public String cloneUserRepository() {
    //TODO these should be picked up by the regexp in the validator
    String gitUrl = gitRepositoryDetails.getGitUrl();
    if (!gitUrl.endsWith(".git") || gitUrl.indexOf('/') == -1) {
        facesContext.addMessage(null,/*from w  ww . j  a  va  2  s.c  o  m*/
                new FacesMessage(gitUrl + " does not apear to be a valid git repository"));
        return "error";
    }

    if (!initGitHubHelperAndAuthenticate()) {
        facesContext.addMessage(null, new FacesMessage("Wrong username/password"));
        return "error";
    }

    File cloneDirectory = new File(userConfig.getCheckoutsDirectory(), gitRepositoryDetails.getName());

    if (cloneDirectory.exists()) {
        facesContext.addMessage(null,
                new FacesMessage("Clone '" + gitRepositoryDetails.getName() + "' already exists."));
        return "existing";
    }

    Git git = null;
    BranchManager branchManager = null;
    try {
        git = Git.cloneRepository().setURI(gitUrl).setCredentialsProvider(getCredentialsProvider())
                .setProgressMonitor(new TextProgressMonitor()).setDirectory(cloneDirectory).call();

        //This checkouts the main and testing branches from the remote
        branchManager = new BranchManager(git, gitRepositoryDetails.getMainBranch(),
                gitRepositoryDetails.getTestingBranch());

        //Store the git repository metadata
        gitRepositoryDetails.store(userConfig);
        userConfig.addCheckout(gitRepositoryDetails);
    } catch (Exception e) {
        Util.recursiveDelete(cloneDirectory);
        facesContext.addMessage(null, new FacesMessage("Error cloning the repository " + e.getMessage()));
        return "error";
    }

    branchStatus = new BranchStatus(branchManager);

    return "view";
}

From source file:org.kie.commons.java.nio.fs.jgit.JGitFileSystemTest.java

License:Apache License

@Test
public void testRemoteRoot() throws IOException, GitAPIException {
    final JGitFileSystemProvider fsProvider = mock(JGitFileSystemProvider.class);

    final File tempDir = createTempDirectory();
    final Git git = Git.cloneRepository().setNoCheckout(false).setBare(true).setCloneAllBranches(true)
            .setURI(setupGit().getRepository().getDirectory().toString()).setDirectory(tempDir).call();

    final JGitFileSystem fileSystem = new JGitFileSystem(fsProvider, null, git, "my-repo",
            CredentialsProvider.getDefault());

    assertThat(fileSystem.isReadOnly()).isFalse();
    assertThat(fileSystem.getSeparator()).isEqualTo("/");
    assertThat(fileSystem.getName()).isEqualTo("my-repo");

    assertThat(fileSystem.getRootDirectories()).hasSize(1);
    final Path root = fileSystem.getRootDirectories().iterator().next();
    assertThat(root.toString()).isEqualTo("/");

    assertThat(root.getRoot().toString()).isEqualTo("/");
}

From source file:org.kie.commons.java.nio.fs.jgit.util.JGitUtil.java

License:Apache License

public static Git cloneRepository(final File repoFolder, final String fromURI, final boolean bare,
        final CredentialsProvider credentialsProvider) {

    if (!repoFolder.getName().endsWith(DOT_GIT_EXT)) {
        throw new RuntimeException("Invalid name");
    }//from  ww  w .  j a v a2 s.c  o m

    try {
        final File gitDir = RepositoryCache.FileKey.resolve(repoFolder, DETECTED);
        final Repository repository;
        final Git git;
        if (gitDir != null && gitDir.exists()) {
            repository = new FileRepository(gitDir);
            git = new Git(repository);
        } else {
            git = Git.cloneRepository().setBare(bare).setCloneAllBranches(true).setURI(fromURI)
                    .setDirectory(repoFolder).setCredentialsProvider(credentialsProvider).call();
            repository = git.getRepository();
        }

        fetchRepository(git, credentialsProvider);

        repository.close();

        return git;
    } catch (final Exception ex) {
        throw new RuntimeException(ex);
    }
}

From source file:org.kie.workbench.common.migration.MigrationToolTest.java

License:Apache License

private static void cloneProjectRepo(final String spaceName, final String projectName) throws GitAPIException {
    final File projectDir = getProjectDir(spaceName, projectName);
    final String projectRepoDir = getProjectRepoDir(spaceName, projectName).getAbsolutePath();
    Git.cloneRepository().setURI(projectRepoDir).setDirectory(projectDir).call();
}

From source file:org.kie.workbench.common.project.migration.cli.maven.PomEditorWithGitTest.java

License:Apache License

@Test
public void testPomEditor() throws Exception {
    final String repoName = "myrepoxxxx";
    HashMap<String, Object> env = new HashMap<>();
    env.put("init", Boolean.TRUE);
    env.put("internal", Boolean.TRUE);
    final JGitFileSystem fs = (JGitFileSystem) ioService.newFileSystem(URI.create("git://" + repoName), env);

    ioService.startBatch(fs);//  ww  w .ja  v a  2s. c om
    ioService.write(fs.getPath("/pom.xml"), new String(
            java.nio.file.Files.readAllBytes(new File("src/test/projects/generic/pom.xml").toPath())));
    ioService.endBatch();

    Path tmpCloned = Files.createTempDirectory("cloned");
    final File gitClonedFolder = new File(tmpCloned.toFile(), ".clone.git");

    final Git cloned = Git.cloneRepository()
            .setURI(fs.getGit().getRepository().getDirectory().toURI().toString()).setBare(false)
            .setDirectory(gitClonedFolder).call();

    assertNotNull(cloned);

    Path pomPath = Paths.get("file://" + gitClonedFolder.toString() + "/pom.xml");
    byte[] encoded = Files.readAllBytes(pomPath);
    String pomOriginal = new String(encoded, StandardCharsets.UTF_8);

    Model model = editor.updatePom(pomPath, cdiWrapper);
    assertNotNull(model);

    PullCommand pc = cloned.pull().setRemote("origin").setRebase(Boolean.TRUE);
    PullResult pullRes = pc.call();
    assertEquals(pullRes.getRebaseResult().getStatus(), RebaseResult.Status.UP_TO_DATE);

    RebaseCommand rb = cloned.rebase().setUpstream("origin/master");
    RebaseResult rbResult = rb.setPreserveMerges(true).call();
    assertTrue(rbResult.getStatus().isSuccessful());

    pomPath = Paths.get("file://" + gitClonedFolder.toString() + "/pom.xml");
    encoded = Files.readAllBytes(pomPath);
    String pomUpdated = new String(encoded, StandardCharsets.UTF_8);

    assertFalse(pomOriginal.equals(pomUpdated));
}

From source file:org.kie.workbench.common.services.backend.compiler.DefaultMavenCompilerTest.java

License:Apache License

@Test
public void buildWithCloneTest() throws Exception {
    final String repoName = "myrepo";
    final JGitFileSystem fs = (JGitFileSystem) ioService.newFileSystem(URI.create("git://" + repoName),
            new HashMap<String, Object>() {
                {//from   w w w .  j  av  a2  s  .c o m
                    put("init", Boolean.TRUE);
                    put("internal", Boolean.TRUE);
                }
            });

    ioService.startBatch(fs);

    ioService.write(fs.getPath("/pom.xml"), new String(java.nio.file.Files
            .readAllBytes(new File("src/test/projects/dummy_multimodule_untouched/pom.xml").toPath())));
    ioService.write(fs.getPath("/dummyA/src/main/java/dummy/DummyA.java"),
            new String(java.nio.file.Files.readAllBytes(new File(
                    "src/test/projects/dummy_multimodule_untouched/dummyA/src/main/java/dummy/DummyA.java")
                            .toPath())));
    ioService.write(fs.getPath("/dummyB/src/main/java/dummy/DummyB.java"),
            new String(java.nio.file.Files.readAllBytes(new File(
                    "src/test/projects/dummy_multimodule_untouched/dummyB/src/main/java/dummy/DummyB.java")
                            .toPath())));
    ioService.write(fs.getPath("/dummyA/pom.xml"), new String(java.nio.file.Files
            .readAllBytes(new File("src/test/projects/dummy_multimodule_untouched/dummyA/pom.xml").toPath())));
    ioService.write(fs.getPath("/dummyB/pom.xml"), new String(java.nio.file.Files
            .readAllBytes(new File("src/test/projects/dummy_multimodule_untouched/dummyB/pom.xml").toPath())));
    ioService.endBatch();

    Path tmpRootCloned = Files.createTempDirectory("cloned");

    Path tmpCloned = Files.createDirectories(Paths.get(tmpRootCloned.toString(), "dummy"));

    final File gitClonedFolder = new File(tmpCloned.toFile(), ".clone.git");

    final Git cloned = Git.cloneRepository()
            .setURI(fs.getGit().getRepository().getDirectory().toURI().toString()).setBare(false)
            .setDirectory(gitClonedFolder).call();

    assertThat(cloned).isNotNull();

    //Compile the repo

    Path prjFolder = Paths.get(gitClonedFolder + "/");
    byte[] encoded = Files.readAllBytes(Paths.get(prjFolder + "/pom.xml"));
    String pomAsAstring = new String(encoded, StandardCharsets.UTF_8);
    assertThat(pomAsAstring).doesNotContain(TestConstants.TAKARI_LIFECYCLE_ARTIFACT);

    final AFCompiler compiler = KieMavenCompilerFactory
            .getCompiler(EnumSet.of(KieDecorator.ENABLE_LOGGING, KieDecorator.ENABLE_INCREMENTAL_BUILD));
    WorkspaceCompilationInfo info = new WorkspaceCompilationInfo(prjFolder);
    CompilationRequest req = new DefaultCompilationRequest(mavenRepoPath, info,
            new String[] { MavenCLIArgs.COMPILE }, Boolean.TRUE);

    CompilationResponse res = compiler.compile(req);

    TestUtil.saveMavenLogIfCompilationResponseNotSuccessfull(tmpCloned, res, this.getClass(), testName);
    assertThat(res.isSuccessful()).isTrue();

    Path incrementalConfiguration = Paths.get(prjFolder + TestConstants.TARGET_TAKARI_PLUGIN);
    assertThat(incrementalConfiguration.toFile()).exists();

    encoded = Files.readAllBytes(Paths.get(prjFolder + "/pom.xml"));
    pomAsAstring = new String(encoded, StandardCharsets.UTF_8);
    assertThat(pomAsAstring).contains(TestConstants.KIE_TAKARI_LIFECYCLE_ARTIFACT);

    TestUtil.rm(tmpRootCloned.toFile());
}

From source file:org.kie.workbench.common.services.backend.compiler.DefaultMavenCompilerTest.java

License:Apache License

@Test
public void buildWithPullRebaseUberfireTest() throws Exception {

    //Setup origin in memory
    final URI originRepo = URI.create("git://repo");
    final JGitFileSystem origin = (JGitFileSystem) ioService.newFileSystem(originRepo,
            new HashMap<String, Object>() {
                {/*w  w  w .ja  v  a 2 s. c  om*/
                    put("init", Boolean.TRUE);
                    put("internal", Boolean.TRUE);
                    put("listMode", "ALL");
                }
            });
    ioService.startBatch(origin);

    ioService.write(origin.getPath("/pom.xml"), new String(java.nio.file.Files
            .readAllBytes(new File("src/test/projects/dummy_multimodule_untouched/pom.xml").toPath())));
    ioService.write(origin.getPath("/dummyA/src/main/java/dummy/DummyA.java"),
            new String(java.nio.file.Files.readAllBytes(new File(
                    "src/test/projects/dummy_multimodule_untouched/dummyA/src/main/java/dummy/DummyA.java")
                            .toPath())));
    ioService.write(origin.getPath("/dummyB/src/main/java/dummy/DummyB.java"),
            new String(java.nio.file.Files.readAllBytes(new File(
                    "src/test/projects/dummy_multimodule_untouched/dummyB/src/main/java/dummy/DummyB.java")
                            .toPath())));
    ioService.write(origin.getPath("/dummyA/pom.xml"), new String(java.nio.file.Files
            .readAllBytes(new File("src/test/projects/dummy_multimodule_untouched/dummyA/pom.xml").toPath())));
    ioService.write(origin.getPath("/dummyB/pom.xml"), new String(java.nio.file.Files
            .readAllBytes(new File("src/test/projects/dummy_multimodule_untouched/dummyB/pom.xml").toPath())));
    ioService.endBatch();

    // clone into a regularfs
    Path tmpRootCloned = Files.createTempDirectory("cloned");
    Path tmpCloned = Files.createDirectories(Paths.get(tmpRootCloned.toString(), ".clone"));

    final Git cloned = Git.cloneRepository()
            .setURI(origin.getGit().getRepository().getDirectory().toURI().toString()).setBare(false)
            .setDirectory(tmpCloned.toFile()).call();

    assertThat(cloned).isNotNull();

    PullCommand pc = cloned.pull().setRemote("origin").setRebase(Boolean.TRUE);
    PullResult pullRes = pc.call();
    assertThat(pullRes.getRebaseResult().getStatus()).isEqualTo(RebaseResult.Status.UP_TO_DATE);// nothing changed yet

    RebaseCommand rb = cloned.rebase().setUpstream("origin/master");
    RebaseResult rbResult = rb.setPreserveMerges(true).call();
    assertThat(rbResult.getStatus().isSuccessful()).isTrue();

    //Compile the repo
    final AFCompiler compiler = KieMavenCompilerFactory
            .getCompiler(EnumSet.of(KieDecorator.ENABLE_LOGGING, KieDecorator.ENABLE_INCREMENTAL_BUILD));

    byte[] encoded = Files.readAllBytes(Paths.get(tmpCloned + "/pom.xml"));
    String pomAsAstring = new String(encoded, StandardCharsets.UTF_8);
    assertThat(pomAsAstring).doesNotContain(TestConstants.TAKARI_LIFECYCLE_ARTIFACT);

    Path prjFolder = Paths.get(tmpCloned + "/");

    WorkspaceCompilationInfo info = new WorkspaceCompilationInfo(prjFolder);
    CompilationRequest req = new DefaultCompilationRequest(mavenRepoPath, info,
            new String[] { MavenCLIArgs.COMPILE }, Boolean.TRUE);

    CompilationResponse res = compiler.compile(req);
    TestUtil.saveMavenLogIfCompilationResponseNotSuccessfull(tmpCloned, res, this.getClass(), testName);

    assertThat(res.isSuccessful()).isTrue();

    Path incrementalConfiguration = Paths.get(prjFolder + TestConstants.TARGET_TAKARI_PLUGIN);
    assertThat(incrementalConfiguration.toFile()).exists();

    encoded = Files.readAllBytes(Paths.get(prjFolder + "/pom.xml"));
    pomAsAstring = new String(encoded, StandardCharsets.UTF_8);
    assertThat(pomAsAstring).contains(TestConstants.KIE_TAKARI_LIFECYCLE_ARTIFACT);

    TestUtil.rm(tmpRootCloned.toFile());
}

From source file:org.kie.workbench.common.services.backend.compiler.DefaultMavenCompilerTest.java

License:Apache License

@Test
public void buildWithAllDecoratorsTest() throws Exception {
    final AFCompiler compiler = KieMavenCompilerFactory
            .getCompiler(EnumSet.of(KieDecorator.ENABLE_LOGGING, KieDecorator.UPDATE_JGIT_BEFORE_BUILD));

    String MASTER_BRANCH = "master";

    //Setup origin in memory
    final URI originRepo = URI.create("git://repo");
    final JGitFileSystem origin = (JGitFileSystem) ioService.newFileSystem(originRepo,
            new HashMap<String, Object>() {
                {/*from   ww  w.j a  va2 s .  co m*/
                    put("init", Boolean.TRUE);
                    put("internal", Boolean.TRUE);
                    put("listMode", "ALL");
                }
            });
    assertThat(origin).isNotNull();

    ioService.startBatch(origin);

    ioService.write(origin.getPath("/pom.xml"), new String(java.nio.file.Files
            .readAllBytes(new File("target/test-classes/kjar-2-single-resources/pom.xml").toPath())));
    ioService.write(origin.getPath("/src/main/java/org/kie/maven/plugin/test/Person.java"),
            new String(java.nio.file.Files.readAllBytes(new File(
                    "target/test-classes/kjar-2-single-resources/src/main/java/org/kie/maven/plugin/test/Person.java")
                            .toPath())));
    ioService.write(origin.getPath("/src/main/resources/AllResourceTypes/simple-rules.drl"),
            new String(java.nio.file.Files.readAllBytes(new File(
                    "target/test-classes/kjar-2-single-resources/src/main/resources/AllResourceTypes/simple-rules.drl")
                            .toPath())));
    ioService.write(origin.getPath("/src/main/resources/META-INF/kmodule.xml"),
            new String(java.nio.file.Files.readAllBytes(new File(
                    "target/test-classes/kjar-2-single-resources/src/main/resources/META-INF/kmodule.xml")
                            .toPath())));
    ioService.endBatch();

    RevCommit lastCommit = origin.getGit()
            .resolveRevCommit(origin.getGit().getRef(MASTER_BRANCH).getObjectId());
    assertThat(lastCommit).isNotNull();

    // clone into a regularfs
    Path tmpRootCloned = Files.createTempDirectory("cloned");
    Path tmpCloned = Files.createDirectories(Paths.get(tmpRootCloned.toString(), ".clone.git"));

    final Git cloned = Git.cloneRepository()
            .setURI(origin.getGit().getRepository().getDirectory().toURI().toString()).setBare(false)
            .setDirectory(tmpCloned.toFile()).call();

    assertThat(cloned).isNotNull();

    WorkspaceCompilationInfo info = new WorkspaceCompilationInfo(Paths.get(tmpCloned + "/"));
    CompilationRequest req = new DefaultCompilationRequest(mavenRepoPath, info, new String[] {
            MavenCLIArgs.COMPILE, MavenCLIArgs.ALTERNATE_USER_SETTINGS + TestUtilMaven.getSettingsFile() },
            Boolean.TRUE);
    CompilationResponse res = compiler.compile(req);
    TestUtil.saveMavenLogIfCompilationResponseNotSuccessfull(tmpCloned, res, this.getClass(), testName);

    assertThat(res.isSuccessful()).isTrue();

    lastCommit = origin.getGit().resolveRevCommit(origin.getGit().getRef(MASTER_BRANCH).getObjectId());
    assertThat(lastCommit).isNotNull();

    //change one file and commit on the origin repo
    ioService.write(origin.getPath("/src/main/java/org/kie/maven/plugin/test/Person.java"),
            new String(java.nio.file.Files.readAllBytes(new File("src/test/projects/Person.java").toPath())));

    RevCommit commitBefore = origin.getGit()
            .resolveRevCommit(origin.getGit().getRef(MASTER_BRANCH).getObjectId());
    assertThat(commitBefore).isNotNull();
    assertThat(lastCommit.getId().toString()).isNotEqualTo(commitBefore.getId().toString());

    //recompile
    res = compiler.compile(req);
    TestUtil.saveMavenLogIfCompilationResponseNotSuccessfull(tmpCloned, res, this.getClass(), testName);
    assertThat(res.isSuccessful()).isTrue();

    TestUtil.rm(tmpRootCloned.toFile());
}

From source file:org.kie.workbench.common.services.backend.compiler.impl.JGitUtils.java

License:Apache License

public static Git tempClone(final JGitFileSystem fs, final String uuid) {
    try {/*from  w w  w  .  j ava 2  s .  co m*/
        return Git.cloneRepository().setURI(fs.getGit().getRepository().getDirectory().toURI().toString())
                .setDirectory(new File(TEMP + uuid,
                        fs.getGit().getRepository().getDirectory().getName().replaceFirst("\\.git", "")))
                .setBare(false).setCloneAllBranches(true).call();
    } catch (GitAPIException e) {
        throw new RuntimeException(e);
    }
}