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

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

Introduction

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

Prototype

public Repository getRepository() 

Source Link

Document

Get repository

Usage

From source file:org.obiba.opal.core.vcs.command.OpalWriteTaxonomyCommand.java

License:Open Source License

@Override
public Iterable<PushResult> execute(Git git) {
    try {//  w  ww. ja  v a 2 s.  co  m
        File localRepo = git.getRepository().getWorkTree();
        serializeTaxonomy(localRepo);
        git.add().addFilepattern(".").call();

        return commitAndPush(git);
    } catch (IOException | GitAPIException e) {
        throw new GitException(e);
    }
}

From source file:org.obiba.opal.core.vcs.command.OpalWriteViewsCommand.java

License:Open Source License

@Override
public Iterable<PushResult> execute(Git git) {
    try {/*w  w w  .j a  v a2  s. c  o  m*/
        File localRepo = git.getRepository().getWorkTree();
        List<String> varFilesToRemove = Lists.newArrayList();
        StringBuilder message = new StringBuilder();
        serializeAllViewFiles(localRepo, varFilesToRemove, message);
        String currentMessage = getCommitMessage();
        setCommitMessage((Strings.isNullOrEmpty(currentMessage) ? "Update " : currentMessage + " ") + message);

        for (String toRemove : varFilesToRemove) {
            git.rm().addFilepattern(toRemove).call();
        }
        git.add().addFilepattern(".").call();
        return commitAndPush(git);
    } catch (IOException | GitAPIException e) {
        throw new GitException(e);
    }
}

From source file:org.ocpsoft.redoculous.model.impl.GitRepository.java

License:Open Source License

@Override
public String getCurrentRef() {
    Git git = null;
    try {//from  w ww .j a v a2 s. c o m
        git = git(getBaseDir());
        return git.getRepository().getBranch();
    } catch (Exception e) {
        throw new RuntimeException("Failed to initialize repository [" + getUrl() + "] [" + getKey() + "]", e);
    } finally {
        if (git != null)
            git.getRepository().close();
    }
}

From source file:org.ocpsoft.redoculous.model.impl.GitRepository.java

License:Open Source License

public List<String> getLogForCurrentBranch() throws GitAPIException {
    Git git = null;
    try {/*from   w  ww. j  a v a  2 s. c om*/
        git = git(getBaseDir());
        List<String> results = new ArrayList<String>();
        Iterable<RevCommit> commits = git.log().call();

        for (RevCommit commit : commits)
            results.add(commit.getFullMessage());

        return results;
    } catch (Exception e) {
        throw new RuntimeException("Failed to get log for repository [" + getUrl() + "] [" + getKey() + "]", e);
    } finally {
        if (git != null)
            git.getRepository().close();
    }
}

From source file:org.ocpsoft.redoculous.model.impl.GitRepository.java

License:Open Source License

@Override
public Set<String> getRefs() {
    if (refs == null) {
        try {/*ww  w. j  a va2s  .  co  m*/
            refs = new LinkedHashSet<String>();

            Git git = null;
            try {
                git = Git.open(getRepoDir());
                List<Ref> branches = git.branchList().setListMode(ListMode.ALL).call();
                refs.addAll(processRefs(branches));
                List<Ref> tags = git.tagList().call();
                refs.addAll(processRefs(tags));
            } finally {
                if (git != null) {
                    git.getRepository().close();
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(
                    "Failed to get list of active refs for repository [" + getUrl() + "] [" + getKey() + "]",
                    e);
        }
    }
    return refs;
}

From source file:org.ocpsoft.redoculous.model.impl.GitRepository.java

License:Open Source License

private void cloneRepository() {
    File refsDir = getRefsDir();/*  w w  w.  j a va  2s . c om*/
    File cacheDir = getCacheDir();

    if (!getRepoDir().exists()) {
        RedoculousProgressMonitor monitor = new RedoculousProgressMonitor();
        try {
            getRepoDir().mkdirs();
            refsDir.mkdirs();
            cacheDir.mkdirs();

            Git git = Git.cloneRepository().setURI(getUrl()).setRemote("origin").setCloneAllBranches(true)
                    .setDirectory(getRepoDir()).setProgressMonitor(monitor).call();

            try {
                git.fetch().setRemote("origin").setTagOpt(TagOpt.FETCH_TAGS).setThin(false).setTimeout(10)
                        .setProgressMonitor(monitor).call();
            } finally {
                git.getRepository().close();
            }

        } catch (Exception e) {
            throw new RuntimeException("Could not clone repository [" + getUrl() + "] [" + getKey() + "]", e);
        }
    }
}

From source file:org.ocpsoft.redoculous.model.impl.GitRepository.java

License:Open Source License

@Override
public void initRef(String ref) {
    File repoDir = getRepoDir();/*from   w w w . j  a va 2 s  .co m*/

    File refDir = getRefDir(ref);
    File refCacheDir = getCachedRefDir(ref);

    ref = resolveRef(ref);

    if (!refDir.exists()) {
        log.info("Creating ref copy [" + getUrl() + "] [" + ref + "] [" + getKey() + "]");
        refDir.mkdirs();
        refCacheDir.mkdirs();
        Git git = null;
        try {
            git = Git.open(repoDir);
            git.reset().setMode(ResetType.HARD).call();
            git.clean().setCleanDirectories(true).call();
            git.checkout().setName(ref).call();

            log.info("Deleting cache for [" + getUrl() + "] [" + ref + "] [" + getKey() + "]");
            Files.delete(refDir, true);
            Files.delete(refCacheDir, true);
            refCacheDir.mkdirs();
            Files.copyDirectory(repoDir, refDir, new FileFilter() {
                @Override
                public boolean accept(File file) {
                    return !(file.getName().equals(".git") || file.getName().equals(".gitignore"));
                }
            });
        } catch (Exception e) {
            if (git != null) {
                git.getRepository().close();
                git = null;
            }
            Files.delete(refDir, true);
            Files.delete(refCacheDir, true);
            throw new RewriteException(
                    "Could checkout ref [" + ref + "] from repository [" + getUrl() + "] [" + getKey() + "].",
                    e);
        } finally {
            if (git != null) {
                git.getRepository().close();
            }
        }
    }
}

From source file:org.ocpsoft.redoculous.model.impl.GitRepository.java

License:Open Source License

@Override
public void update() {
    File repoDir = getRepoDir();//w w  w . j a v a 2  s  .  c om

    Git git = null;
    RedoculousProgressMonitor monitor = new RedoculousProgressMonitor();
    try {
        log.info("Handling update request for [" + getUrl() + "] [" + getKey() + "]");
        git = Git.open(repoDir);

        git.fetch().setTagOpt(TagOpt.FETCH_TAGS).setRemote("origin")
                .setRefSpecs(new RefSpec("+refs/heads/*:refs/remotes/origin/*")).setProgressMonitor(monitor)
                .call();

        git.fetch().setTagOpt(TagOpt.FETCH_TAGS).setRemote("origin")
                .setRefSpecs(new RefSpec("+refs/tags/*:refs/tags/*")).setProgressMonitor(monitor).call();

        git.reset().setMode(ResetType.HARD).setRef("refs/remotes/origin/" + git.getRepository().getBranch())
                .call();

        git.clean().setCleanDirectories(true).call();

        Files.delete(getRefsDir(), true);
        Files.delete(getCacheDir(), true);
    } catch (Exception e) {
        throw new RuntimeException("Could not update repository [" + getUrl() + "] [" + getKey() + "]", e);
    } finally {
        if (git != null)
            git.getRepository().close();
    }
}

From source file:org.openengsb.connector.git.internal.RepositoryFixture.java

License:Apache License

public static void addFile(Git git, String filename) throws IOException, NoFilepatternException {
    FileWriter writer = new FileWriter(new File(git.getRepository().getWorkTree(), filename));
    writer.write(filename + "\n");
    writer.close();//from   w  w w .j av  a  2  s.  c  om
    AddCommand add = git.add();
    add.addFilepattern(filename).call();
}

From source file:org.ossmeter.platform.vcs.git.GitManager.java

License:Open Source License

/**
 * To set the startRevision to the first commit, use 'null'
 * FIXME: This should HANDLE the exception probably..
 *//*from   ww  w .j a va  2  s.  c  om*/
@Override
public VcsRepositoryDelta getDelta(VcsRepository repository, String startRevision, String endRevision)
        throws Exception {
    // Clone into local repo
    Git git = getGit((GitRepository) repository);

    VcsRepositoryDelta vcsDelta = new VcsRepositoryDelta();
    vcsDelta.setRepository(repository);

    Repository repo = git.getRepository();
    RevWalk walk = new RevWalk(repo);

    Iterable<RevCommit> logs = git.log().call();
    Iterator<RevCommit> iterator = logs.iterator();

    boolean foundStart = false;
    boolean foundEnd = false;

    List<RevCommit> commits = new ArrayList<RevCommit>();

    // Reorder the commits (currently they are latest first)
    while (iterator.hasNext()) {
        commits.add(0, walk.parseCommit(iterator.next()));
    }

    for (int i = 0; i < commits.size(); i++) {
        RevCommit commit = commits.get(i);
        RevCommit prevCommit = i - 1 < 0 ? null : commits.get(i - 1);

        if (startRevision == null || commit.getId().getName().equals(startRevision)) {
            foundStart = true;
        }
        if (commit.getId().getName().equals(endRevision)) {
            foundEnd = true;
        }

        VcsCommit vcsCommit = null;
        if (foundStart) {
            // Setup the meta data for the commit
            vcsCommit = new VcsCommit();
            vcsCommit.setRevision(commit.getId().getName());
            vcsCommit.setMessage(commit.getFullMessage());
            vcsCommit.setAuthor(commit.getAuthorIdent().getName());
            vcsCommit.setDelta(vcsDelta);
            int date = commit.getCommitTime();
            long datelong = (long) date * (long) 1000;
            vcsCommit.setJavaDate(new java.util.Date(datelong));
            vcsDelta.getCommits().add(vcsCommit);

            if (prevCommit != null) {
                // Do a diff against the succeeding commit
                ObjectId thisCommitId = repo.resolve(commit.getId().getName() + "^{tree}");
                ObjectId prevCommitId = repo.resolve(prevCommit.getId().getName() + "^{tree}");

                ObjectReader reader = repo.newObjectReader();

                CanonicalTreeParser currentTreeIter = new CanonicalTreeParser();
                currentTreeIter.reset(reader, thisCommitId);

                CanonicalTreeParser prevTreeIter = new CanonicalTreeParser();
                prevTreeIter.reset(reader, prevCommitId);

                List<DiffEntry> diffs = git.diff().setNewTree(currentTreeIter).setOldTree(prevTreeIter).call();

                for (DiffEntry diff : diffs) {
                    VcsChangeType change = convertChangeType(diff.getChangeType());
                    if (change == null)
                        continue;
                    VcsCommitItem item = new VcsCommitItem();
                    String path = diff.getNewPath();
                    if (change.equals(VcsChangeType.DELETED)) {
                        path = diff.getOldPath();
                    }
                    item.setPath(path);
                    item.setChangeType(change);
                    item.setCommit(vcsCommit);
                    vcsCommit.getItems().add(item);
                }
            } else {
                // First commit: everything is ADDED
                //                vcsCommit = new VcsCommit();
                TreeWalk treeWalk = new TreeWalk(repo);
                treeWalk.addTree(commit.getTree());
                while (treeWalk.next()) {
                    if (treeWalk.isSubtree()) {
                        treeWalk.enterSubtree();
                    } else {
                        VcsCommitItem item = new VcsCommitItem();
                        item.setPath(treeWalk.getPathString());
                        item.setChangeType(VcsChangeType.ADDED);
                        item.setCommit(vcsCommit);
                        vcsCommit.getItems().add(item);
                    }
                }
            }
        }

        if (foundEnd) {
            break;
        }
    }

    return vcsDelta;
}