List of usage examples for org.eclipse.jgit.lib Repository newObjectReader
@NonNull
public ObjectReader newObjectReader()
From source file:com.searchcode.app.jobs.IndexGitRepoJob.java
private RepositoryChanged updateGitRepository(String repoName, String repoRemoteLocation, String repoUserName, String repoPassword, String repoLocations, String branch, boolean useCredentials) { boolean changed = false; List<String> changedFiles = new ArrayList<>(); List<String> deletedFiles = new ArrayList<>(); Singleton.getLogger().info("Attempting to pull latest from " + repoRemoteLocation + " for " + repoName); try {/*from w ww . ja v a2 s .c o m*/ Repository localRepository = new FileRepository(new File(repoLocations + "/" + repoName + "/.git")); Ref head = localRepository.getRef("HEAD"); Git git = new Git(localRepository); git.reset(); git.clean(); PullCommand pullCmd = git.pull(); if (useCredentials) { pullCmd.setCredentialsProvider(new UsernamePasswordCredentialsProvider(repoUserName, repoPassword)); } pullCmd.call(); Ref newHEAD = localRepository.getRef("HEAD"); if (!head.toString().equals(newHEAD.toString())) { changed = true; // Get the differences between the the heads which we updated at // and use these to just update the differences between them ObjectId oldHead = localRepository.resolve(head.getObjectId().getName() + "^{tree}"); ObjectId newHead = localRepository.resolve(newHEAD.getObjectId().getName() + "^{tree}"); ObjectReader reader = localRepository.newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); oldTreeIter.reset(reader, oldHead); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); newTreeIter.reset(reader, newHead); List<DiffEntry> entries = git.diff().setNewTree(newTreeIter).setOldTree(oldTreeIter).call(); for (DiffEntry entry : entries) { if ("DELETE".equals(entry.getChangeType().name())) { deletedFiles.add(FilenameUtils.separatorsToUnix(entry.getOldPath())); } else { changedFiles.add(FilenameUtils.separatorsToUnix(entry.getNewPath())); } } } } catch (IOException | GitAPIException | InvalidPathException ex) { changed = false; Singleton.getLogger().warning("ERROR - caught a " + ex.getClass() + " in " + this.getClass() + "\n with message: " + ex.getMessage()); } return new RepositoryChanged(changed, changedFiles, deletedFiles); }
From source file:com.searchcode.app.jobs.repository.IndexGitHistoryJob.java
public void getRevisionChanges(Repository localRepository, Git git, GitChangeSet oldRevison, GitChangeSet newRevision) throws IOException, GitAPIException { ObjectId oldHead = localRepository.resolve(oldRevison.getRevision() + "^{tree}"); ObjectId newHead = localRepository.resolve(newRevision.getRevision() + "^{tree}"); ObjectReader reader = localRepository.newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); oldTreeIter.reset(reader, oldHead);//from w w w.jav a 2s. c om CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); newTreeIter.reset(reader, newHead); List<DiffEntry> entries = git.diff().setNewTree(newTreeIter).setOldTree(oldTreeIter).call(); GitService gs = new GitService(); SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); for (DiffEntry entry : entries) { if ("DELETE".equals(entry.getChangeType().name())) { System.out.println("DEL " + entry.getOldPath()); String contents = gs.fetchFileRevision(localRepository.getWorkTree().toString() + "/.git", oldRevison.getRevision(), entry.getOldPath()); CodeIndexDocument cd = new CodeIndexDocument(entry.getNewPath(), "thumbor", entry.getOldPath(), entry.getOldPath(), entry.getOldPath(), "md5hash", "Java", contents.split("\\r?\\n").length, contents, "", oldRevison.getAuthor()); cd.setRevision(oldRevison.getRevision()); cd.setYearMonthDay(sdf.format(oldRevison.getExpiry())); cd.setYearMonth(cd.getYearMonthDay().substring(0, 6)); cd.setYear(cd.getYearMonthDay().substring(0, 4)); cd.setMessage(oldRevison.getMessage()); cd.setDeleted("TRUE"); Singleton.getCodeIndexer().indexTimeDocument(cd); } else { System.out.println("ADD " + entry.getNewPath()); String contents = gs.fetchFileRevision(localRepository.getWorkTree().toString() + "/.git", newRevision.getRevision(), entry.getNewPath()); CodeIndexDocument cd = new CodeIndexDocument(entry.getNewPath(), "thumbor", entry.getNewPath(), entry.getNewPath(), entry.getNewPath(), "md5hash", "Java", contents.split("\\r?\\n").length, contents, "", newRevision.getAuthor()); cd.setRevision(newRevision.getRevision()); cd.setYearMonthDay(sdf.format(oldRevison.getExpiry())); cd.setYearMonth(cd.getYearMonthDay().substring(0, 6)); cd.setYear(cd.getYearMonthDay().substring(0, 4)); cd.setMessage(newRevision.getMessage()); cd.setDeleted("FALSE"); Singleton.getCodeIndexer().indexTimeDocument(cd); } } }
From source file:com.searchcode.app.jobs.repository.IndexGitRepoJob.java
License:Open Source License
/** * Update a git repository and return if it has changed and the differences *///from ww w .j a v a2s. c o m public RepositoryChanged updateGitRepository(String repoName, String repoRemoteLocation, String repoUserName, String repoPassword, String repoLocations, String branch, boolean useCredentials) { boolean changed = false; List<String> changedFiles = new ArrayList<>(); List<String> deletedFiles = new ArrayList<>(); Singleton.getLogger().info("Attempting to pull latest from " + repoRemoteLocation + " for " + repoName); Repository localRepository = null; Git git = null; try { localRepository = new FileRepository(new File(repoLocations + "/" + repoName + "/.git")); Ref head = localRepository.getRef("HEAD"); git = new Git(localRepository); git.reset(); git.clean(); PullCommand pullCmd = git.pull(); if (useCredentials) { pullCmd.setCredentialsProvider(new UsernamePasswordCredentialsProvider(repoUserName, repoPassword)); } pullCmd.call(); Ref newHEAD = localRepository.getRef("HEAD"); if (!head.toString().equals(newHEAD.toString())) { changed = true; // Get the differences between the the heads which we updated at // and use these to just update the differences between them ObjectId oldHead = localRepository.resolve(head.getObjectId().getName() + "^{tree}"); ObjectId newHead = localRepository.resolve(newHEAD.getObjectId().getName() + "^{tree}"); ObjectReader reader = localRepository.newObjectReader(); CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); oldTreeIter.reset(reader, oldHead); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); newTreeIter.reset(reader, newHead); List<DiffEntry> entries = git.diff().setNewTree(newTreeIter).setOldTree(oldTreeIter).call(); for (DiffEntry entry : entries) { if ("DELETE".equals(entry.getChangeType().name())) { deletedFiles.add(FilenameUtils.separatorsToUnix(entry.getOldPath())); } else { changedFiles.add(FilenameUtils.separatorsToUnix(entry.getNewPath())); } } } } catch (IOException | GitAPIException | InvalidPathException ex) { changed = false; Singleton.getLogger().warning("ERROR - caught a " + ex.getClass() + " in " + this.getClass() + " updateGitRepository for " + repoName + "\n with message: " + ex.getMessage()); } finally { Singleton.getHelpers().closeQuietly(localRepository); Singleton.getHelpers().closeQuietly(git); } return new RepositoryChanged(changed, changedFiles, deletedFiles); }
From source file:com.searchcode.app.service.GitService.java
/** * Given a repository location, revision and file path will retrieve that files contents. N.B. it returns the whole * file so you MAY end up running into serious memory issues, and should be aware of this *//*w w w. ja v a 2 s. co m*/ public String fetchFileRevision(String repoLocation, String revision, String filePath) throws MissingObjectException, IncorrectObjectTypeException, IOException { Repository localRepository = new FileRepository(new File(repoLocation)); ObjectId id = localRepository.resolve(revision); ObjectReader reader = localRepository.newObjectReader(); try { RevWalk walk = new RevWalk(reader); RevCommit commit = walk.parseCommit(id); RevTree tree = commit.getTree(); TreeWalk treewalk = TreeWalk.forPath(reader, filePath, tree); if (treewalk != null) { byte[] data = reader.open(treewalk.getObjectId(0)).getBytes(); return new String(data, "utf-8"); } else { return ""; } } finally { reader.close(); } }
From source file:com.tasktop.c2c.server.scm.service.GitBrowseUtil.java
License:Open Source License
public static Commit resolveCommit(Repository r, String commitId) throws IOException { ObjectId oid = null;/*from w ww .jav a 2s . com*/ Commit commit = new Commit(); if (commitId.length() < 40) { ObjectReader or = r.newObjectReader(); try { AbbreviatedObjectId aid = AbbreviatedObjectId.fromString(commitId); Collection<ObjectId> oids = or.resolve(aid); if (oids == null || oids.size() == 0) { commit.setSha("nex"); return commit; } else if (oids.size() > 1) { commit.setSha("ambigous"); return commit; } else { oid = oids.iterator().next(); } } finally { or.release(); } } else { oid = ObjectId.fromString(commitId); } RevWalk rw = new RevWalk(r); try { RevCommit rc = rw.parseCommit(oid); return GitDomain.createCommit(rc); } catch (MissingObjectException ex) { commit.setSha("nex"); return commit; } catch (IncorrectObjectTypeException ex) { commit.setSha("nex"); return commit; } }
From source file:com.tasktop.c2c.server.scm.service.GitServiceBean.java
License:Open Source License
private static AbstractTreeIterator getTreeIterator(final Repository repo, final RevTree tree) throws IOException { final CanonicalTreeParser treeParser = new CanonicalTreeParser(); if (tree != null) { treeParser.reset(repo.newObjectReader(), tree); }// w ww . j a v a 2 s . co m return treeParser; }
From source file:de.fkoeberle.autocommit.git.FileSetDeltaBuilder.java
License:Open Source License
FileSetDeltaBuilder(Repository repository) { this(repository.newObjectReader()); }
From source file:de.ks.blogging.grav.pages.RepositorySupport.java
License:Apache License
private static AbstractTreeIterator prepareTreeParser(Repository repository, String objectId) throws IOException, IncorrectObjectTypeException { RevWalk walk = new RevWalk(repository); ObjectId resolve = repository.resolve(objectId); RevCommit commit = walk.parseCommit(resolve); RevTree tree = walk.parseTree(commit.getTree().getId()); CanonicalTreeParser oldTreeParser = new CanonicalTreeParser(); try (ObjectReader oldReader = repository.newObjectReader()) { oldTreeParser.reset(oldReader, tree.getId()); }//from www . j a va 2 s . c om walk.dispose(); return oldTreeParser; }
From source file:elegit.DiffHelper.java
License:Open Source License
private static AbstractTreeIterator prepareTreeParser(Repository repository, String objectId) throws IOException { // from the commit we can build the tree which allows us to construct the TreeParser try (RevWalk walk = new RevWalk(repository)) { RevCommit commit = walk.parseCommit(ObjectId.fromString(objectId)); RevTree tree = walk.parseTree(commit.getTree().getId()); CanonicalTreeParser oldTreeParser = new CanonicalTreeParser(); try (ObjectReader oldReader = repository.newObjectReader()) { oldTreeParser.reset(oldReader, tree.getId()); }/*from w w w . j a va 2 s .c o m*/ walk.dispose(); return oldTreeParser; } }
From source file:facade.GitFacade.java
private static AbstractTreeIterator prepareTreeParser(Repository repository, String commitId) throws IOException { RevWalk walk = new RevWalk(repository); RevCommit commit = walk.parseCommit(ObjectId.fromString(commitId)); RevTree tree = walk.parseTree(commit.getTree().getId()); CanonicalTreeParser treeParser = new CanonicalTreeParser(); ObjectReader reader = repository.newObjectReader(); treeParser.reset(reader, tree.getId()); walk.dispose();/* ww w . j a v a 2s .co m*/ return treeParser; }