List of usage examples for org.eclipse.jgit.api Git getRepository
public Repository getRepository()
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; }