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

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

Introduction

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

Prototype

public static Git wrap(Repository repo) 

Source Link

Document

Wrap repository

Usage

From source file:br.com.ingenieux.mojo.beanstalk.bundle.CodeCommitFastDeployMojo.java

License:Apache License

@Override
protected Git getGitRepo() throws Exception {
    if (stagingDirectory.exists() && new File(stagingDirectory, "HEAD").exists()) {
        Git git = Git.open(stagingDirectory);

        git.fetch().setRemote(getRemoteUrl(null, null)).setProgressMonitor(new TextProgressMonitor())
                .setRefSpecs(new RefSpec("refs/heads/master")).call();
    } else {//w  w  w. jav  a  2  s .c o  m
        Git.cloneRepository().setURI(getRemoteUrl(null, null)).setProgressMonitor(new TextProgressMonitor())
                .setDirectory(stagingDirectory).setNoCheckout(true).setBare(true).call();
    }

    Repository r = null;

    RepositoryBuilder b = new RepositoryBuilder().setGitDir(stagingDirectory).setWorkTree(sourceDirectory);

    r = b.build();

    final Git git = Git.wrap(r);

    return git;
}

From source file:br.com.riselabs.cotonet.builder.NetworkBuilder.java

License:Open Source License

/**
 * Returns the conflicting merge scenarios
 * /*from   w  w  w. j  a  v  a2 s  . com*/
 * @return - a list of merge scenarios. it may be empty in case of no
 *         conflict.
 * @throws IOException
 */
private List<MergeScenario> getMergeScenarios() throws IOException {
    List<MergeScenario> result = new ArrayList<MergeScenario>();
    List<RevCommit> mergeCommits = new ArrayList<RevCommit>();
    Iterable<RevCommit> gitlog;
    try {
        Git git = Git.wrap(getProject().getRepository());
        gitlog = git.log().call();
        for (RevCommit commit : gitlog) {
            if (commit.getParentCount() == 2) {
                mergeCommits.add(commit);
                // collecting merge commits
                // we know there is only to parents
                RevCommit leftParent = commit.getParent(0);
                RevCommit rightParent = commit.getParent(1);
                ThreeWayMerger merger = MergeStrategy.RECURSIVE.newMerger(getProject().getRepository(), true);
                // selecting the conflicting ones
                boolean noConflicts = false;
                try {
                    noConflicts = merger.merge(leftParent, rightParent);
                } catch (NoMergeBaseException e) {
                    StringBuilder sb = new StringBuilder();
                    sb.append("[" + project.getName() + ":" + project.getUrl() + "] "
                            + "Skipping merge scenario due to '" + e.getMessage() + "'\n");
                    sb.append("---> Skipped scenario:\n");
                    sb.append("::Base (<several>): \n");
                    sb.append("::Left (" + leftParent.getAuthorIdent().getWhen().toString() + "):"
                            + leftParent.getName() + "\n");
                    sb.append("::Right (" + rightParent.getAuthorIdent().getWhen().toString() + "):"
                            + rightParent.getName() + "\n");
                    Logger.log(log, sb.toString());
                    Logger.logStackTrace(log, e);
                    continue;
                }
                if (noConflicts) {
                    continue;
                }
                RevWalk walk = new RevWalk(getProject().getRepository());
                // for merges without a base commit
                if (merger.getBaseCommitId() == null)
                    continue;
                RevCommit baseCommit = walk.lookupCommit(merger.getBaseCommitId());
                walk.close();

                Timestamp mergeDate = new Timestamp(commit.getAuthorIdent().getWhen().getTime());
                result.add(new MergeScenario(baseCommit, leftParent, rightParent, commit, mergeDate));
            }
        }
    } catch (GitAPIException e) {
        Logger.logStackTrace(log, e);
    }
    return result;
}

From source file:br.com.riselabs.cotonet.builder.NetworkBuilder.java

License:Open Source License

/**
 * Returns the conflicting files of the given scenario.
 * /*  w ww . ja v a  2s  .co m*/
 * @param scenario
 * @return
 * @throws CheckoutConflictException
 * @throws GitAPIException
 */
private List<File> getConflictingFiles(MergeScenario scenario)
        throws CheckoutConflictException, GitAPIException {
    Git git = Git.wrap(getProject().getRepository());
    // this is for the cases of restarting after exception in a conflict
    // scenario analysis
    try {
        git.reset().setRef(scenario.getLeft().getName()).setMode(ResetType.HARD).call();
    } catch (JGitInternalException e) {
        Logger.log(log, "[" + project.getName() + "] JGit Reset Command ended with exception."
                + " Trying external reset command.");
        ExternalGitCommand egit = new ExternalGitCommand();
        try {
            egit.setType(CommandType.RESET).setDirectory(project.getRepository().getDirectory().getParentFile())
                    .call();
        } catch (BlameException e1) {
            Logger.logStackTrace(log, e1);
            return null;
        }
    }

    CheckoutCommand ckoutCmd = git.checkout();
    ckoutCmd.setName(scenario.getLeft().getName());
    ckoutCmd.setStartPoint(scenario.getLeft());
    ckoutCmd.call();

    MergeCommand mergeCmd = git.merge();
    mergeCmd.setCommit(false);
    mergeCmd.setStrategy(MergeStrategy.RECURSIVE);
    mergeCmd.include(scenario.getRight());

    Set<String> conflictingPaths;
    try {
        // dealing with MissingObjectException
        MergeResult mResult = mergeCmd.call();
        // dealing with Ghosts conflicts
        conflictingPaths = mResult.getConflicts().keySet();
    } catch (NullPointerException | JGitInternalException e) {
        StringBuilder sb = new StringBuilder();
        sb.append("[" + project.getName() + ":" + project.getUrl() + "] " + "Skipping merge scenario due to '"
                + e.getMessage() + "'\n");
        sb.append("--> Exception: " + e.getClass());
        sb.append("--> Skipped scenario:\n");
        sb.append("::Base:" + scenario.getBase().getName() + "\n");
        sb.append("::Left:" + scenario.getLeft().getName() + "\n");
        sb.append("::Right:" + scenario.getRight().getName() + "\n");
        Logger.log(log, sb.toString());
        return null;
    }
    List<File> result = new ArrayList<File>();
    for (String path : conflictingPaths) {
        result.add(new File(getProject().getRepository().getDirectory().getParent(), path));
    }
    return result;
}

From source file:br.com.riselabs.cotonet.test.helpers.ConflictBasedRepositoryTestCase.java

License:Open Source License

public MergeResult runMerge(MergeScenario scenario) throws RefAlreadyExistsException, RefNotFoundException,
        InvalidRefNameException, CheckoutConflictException, GitAPIException {
    Git git = Git.wrap(db);
    CheckoutCommand ckoutCmd = git.checkout();
    ckoutCmd.setName(scenario.getLeft().getName());
    ckoutCmd.setStartPoint(scenario.getLeft());
    ckoutCmd.call();/*w  w  w . j av a 2  s  . c  o  m*/

    MergeCommand mergeCmd = git.merge();
    mergeCmd.setCommit(false);
    mergeCmd.include(scenario.getRight());
    return mergeCmd.call();
}

From source file:br.com.riselabs.cotonet.test.helpers.ConflictBasedRepositoryTestCase.java

License:Open Source License

public static void logAllCommits(Repository repo) throws Exception {
    Git git = Git.wrap(repo);
    Iterable<RevCommit> commits = git.log().all().call();
    for (RevCommit c : commits) {
        System.out.println("time(s): " + c.getCommitTime() + ", author: " + c.getAuthorIdent().getName());
    }// w  w w . java2 s . c  o m
}

From source file:br.com.riselabs.cotonet.test.helpers.ConflictBasedRepositoryTestCase.java

License:Open Source License

/**
 * Creates a collaboration scenario with five developers (Devs A, B, C, D,
 * and E) and two files (Foo.java and Bar.java).
 * //from w ww .  j av  a  2 s. c o m
 * @return
 * @throws Exception
 */
public MergeScenario setCollaborationScenarioInTempRepository() throws Exception {
    Git git = Git.wrap(db);

    RevCommit mergeBaseCommit, lastMasterCommit, lastSideCommit;

    // first versions of Foo and Bar
    writeTrashFile("Foo.java", "1");
    writeTrashFile("Bar.java", "1");
    git.add().addFilepattern("Foo.java").addFilepattern("Bar.java").call();
    git.commit().setMessage("initial commit").setAuthor(devs.get("devY")).call();

    writeTrashFile("Foo.java", "1\n2\n3\n4\n5\n6\n7\n8\n");
    writeTrashFile("Bar.java", "1\n2\n3\n4\n");
    git.add().addFilepattern("Foo.java").addFilepattern("Bar.java").call();
    mergeBaseCommit = git.commit().setMessage("m0").setAuthor(devs.get("devX")).call();

    // Dev E changes Foo
    writeTrashFile("Foo.java", "1\n2\n3\n4\n5-master\n6\n7\n8\n");
    git.add().addFilepattern("Foo.java").call();
    git.commit().setMessage("m1").setAuthor(devs.get("devE")).call();

    // Dev C changes Foo
    writeTrashFile("Foo.java", "1\n2\n3\n4-master\n5\n6\n7\n8\n");
    writeTrashFile("Bar.java", "1\n2\n3-master\n4-master\n");
    git.add().addFilepattern("Foo.java").addFilepattern("Bar.java").call();
    git.commit().setMessage("m2").setAuthor(devs.get("devC")).call();

    // Dev B changes
    writeTrashFile("Bar.java", "1\n2\n3\n4-master\n");
    git.add().addFilepattern("Bar.java").call();
    lastMasterCommit = git.commit().setMessage("m3").setAuthor(devs.get("devB")).call();

    // updating the tree with the changes
    createBranch(mergeBaseCommit, "refs/heads/side");
    checkoutBranch("refs/heads/side");

    // Dev D changes Foo
    writeTrashFile("Foo.java", "1\n2\n3\n4-side\n5\n6\n7\n8\n");
    git.add().addFilepattern("Foo.java").call();
    git.commit().setMessage("s1").setAuthor(devs.get("devD")).call();

    // Dev E changes Bar
    writeTrashFile("Bar.java", "1\n2\n3\n4\n5\n");
    git.add().addFilepattern("Bar.java").call();
    git.commit().setMessage("s2").setAuthor(devs.get("devE")).call();

    // Dev A changes Bar
    writeTrashFile("Bar.java", "1\n2\n3-side\n4-side\n5\n");
    git.add().addFilepattern("Bar.java").call();
    lastSideCommit = git.commit().setMessage("s3").setAuthor(devs.get("devA")).call();

    return new MergeScenario(null, mergeBaseCommit, lastMasterCommit, lastSideCommit, null, null);
}

From source file:br.com.riselabs.cotonet.test.helpers.ConflictBasedRepositoryTestCase.java

License:Open Source License

/**
 * Creates a collaboration scenario with five developers (Devs A, B, C, D,
 * and E) and two files (Foo.java and Bar.java).
 * //from   w  w  w . j  a  v  a 2  s . c  o m
 * @return
 * @throws Exception
 */
public MergeScenario setCollaborationScenarioInBareRepository() throws Exception {
    Git git = Git.wrap(db);

    RevCommit mergeBaseCommit, lastMasterCommit, lastSideCommit;

    TestRepository<Repository> db_t = new TestRepository<Repository>(db);

    BranchBuilder master = db_t.branch("master");

    // first versions of Foo and Bar
    master.commit().add("Foo.java", "1").add("Bar.java", "1").message("initial commit").author(devs.get("devY"))
            .create();

    mergeBaseCommit = master.commit().add("Foo.java", "1\n2\n3\n4\n5\n6\n7\n8\n")
            .add("Bar.java", "1\n2\n3\n4\n").message("m0").author(devs.get("devX")).create();

    // Dev E changes Foo
    master.commit().add("Foo.java", "1\n2\n3\n4\n5-master\n6\n7\n8\n").message("m1").author(devs.get("devE"))
            .create();

    // Dev C changes Foo
    master.commit().add("Foo.java", "1\n2\n3\n4-master\n5\n6\n7\n8\n")
            .add("Bar.java", "1\n2\n3-master\n4-master\n").message("m2").author(devs.get("devC")).create();

    // Dev B changes
    lastMasterCommit = master.commit().add("Bar.java", "1\n2\n3\n4-master\n").message("m3")
            .author(devs.get("devB")).create();

    // updating the tree with the changes
    db_t.getRevWalk().parseCommit(mergeBaseCommit);

    // creating a new branc: side
    BranchBuilder side = db_t.branch("side");

    // Dev D changes Foo
    side.commit().parent(mergeBaseCommit).add("Foo.java", "1\n2\n3\n4-side\n5\n6\n7\n8\n").message("s1")
            .author(devs.get("devD")).create();

    // Dev E changes Bar
    side.commit().add("Bar.java", "1\n2\n3\n4\n5\n").message("s2").author(devs.get("devE")).create();

    // Dev A changes Bar
    lastSideCommit = side.commit().add("Bar.java", "1\n2\n3-side\n4-side\n5\n").message("s3")
            .author(devs.get("devA")).create();

    git.checkout().setName("master").setStartPoint(lastMasterCommit).call();
    return new MergeScenario(null, mergeBaseCommit, lastMasterCommit, lastSideCommit, null, null);
}

From source file:br.com.riselabs.cotonet.test.helpers.ConflictBasedRepositoryTestCase.java

License:Open Source License

/**
 * Merges the scenario created by/* w  ww . j a v a  2  s. c  o m*/
 * {@code #setCollaborationScenarioInBareRepository()} or
 * {@code #setCollaborationScenarioInTempRepository()} .
 * 
 * @throws Exception
 */
public void setResolvedMergeConflictScenario() throws Exception {
    MergeScenario ms = setCollaborationScenarioInTempRepository();
    Git git = Git.wrap(db);
    checkoutBranch("refs/heads/master");
    // Dev Y changes Bar
    git.merge().include(ms.getRight()).call();
    writeTrashFile("Bar.java", "1\n2\n3-merged\n4-merged\n5\n");
    writeTrashFile("Foo.java", "1\n2\n3\n4-merged\n5\n6\n7\n8\n");
    git.add().addFilepattern("Bar.java").addFilepattern("Foo.java").call();
    git.commit().setMessage("merge s3 into m3").setAuthor(devs.get("devY")).call();
}

From source file:br.com.riselabs.cotonet.test.helpers.RepositoryTestCaseTest.java

License:Open Source License

@Before
public void setup() {
    git = Git.wrap(db);
}

From source file:com.cloudcontrolled.cctrl.maven.plugin.push.CloudcontrolledPush.java

License:Apache License

private String push(String remoteLocation) throws MojoExecutionException {
    Repository repository = null;//from w  w  w  .j  ava  2s  .com
    Git git;
    try {
        repository = getRepository();
        git = Git.wrap(repository);

        PushCommand pushCommand = git.push();
        pushCommand.setRemote(remoteLocation);
        pushCommand.setRefSpecs(new RefSpec(repository.getFullBranch()));

        Iterable<PushResult> pushResult = pushCommand.call();
        Iterator<PushResult> result = pushResult.iterator();

        StringBuffer buffer = new StringBuffer();
        if (result.hasNext()) {
            while (result.hasNext()) {
                String line = result.next().getMessages();
                if (!line.isEmpty()) {
                    buffer.append(line);
                    if (result.hasNext()) {
                        buffer.append(System.getProperty("line.separator"));
                    }
                }
            }
        }

        return buffer.toString();
    } catch (Exception e) {
        throw new MojoExecutionException(e.getClass().getSimpleName(), e);
    } finally {
        if (repository != null) {
            repository.close();
        }
    }
}