List of usage examples for org.eclipse.jgit.api Git getRepository
public Repository getRepository()
From source file:org.craftercms.deployer.impl.processors.GitDiffProcessor.java
License:Open Source License
protected ChangeSet resolveChangeSetFromCommits(Git git, ObjectId fromCommitId, ObjectId toCommitId) throws DeployerException { String fromCommitIdStr = fromCommitId != null ? fromCommitId.name() : "{empty}"; String toCommitIdStr = toCommitId != null ? toCommitId.name() : "{empty}"; if (!Objects.equals(fromCommitId, toCommitId)) { logger.info("Calculating change set from commits: {} -> {}", fromCommitIdStr, toCommitIdStr); try (ObjectReader reader = git.getRepository().newObjectReader()) { AbstractTreeIterator fromTreeIter = getTreeIteratorForCommit(git, reader, fromCommitId); AbstractTreeIterator toTreeIter = getTreeIteratorForCommit(git, reader, toCommitId); List<DiffEntry> diffEntries = git.diff().setOldTree(fromTreeIter).setNewTree(toTreeIter).call(); return processDiffEntries(diffEntries); } catch (IOException | GitAPIException e) { throw new DeployerException( "Failed to calculate change set from commits: " + fromCommitIdStr + " -> " + toCommitIdStr, e);//from ww w .j av a 2s .co m } } else { logger.info("Commits are the same. No change set will be calculated", fromCommitIdStr, toCommitIdStr); return null; } }
From source file:org.craftercms.deployer.impl.processors.GitDiffProcessor.java
License:Open Source License
protected AbstractTreeIterator getTreeIteratorForCommit(Git git, ObjectReader reader, ObjectId commitId) throws IOException { if (commitId != null) { RevTree tree = getTreeForCommit(git.getRepository(), commitId); CanonicalTreeParser treeParser = new CanonicalTreeParser(); treeParser.reset(reader, tree.getId()); return treeParser; } else {/*from w ww . j a v a 2 s.c o m*/ return new EmptyTreeIterator(); } }
From source file:org.craftercms.deployer.impl.processors.GitPullProcessor.java
License:Open Source License
protected ChangeSet pullChanges(Git git) { try {/* w ww .j av a 2s . c o m*/ logger.info("Executing git pull for repository {}...", localRepositoryFolder); ObjectId head = git.getRepository().resolve(Constants.HEAD); PullResult pullResult = git.pull().call(); if (pullResult.isSuccessful()) { MergeResult mergeResult = pullResult.getMergeResult(); switch (mergeResult.getMergeStatus()) { case FAST_FORWARD: logger.info("Changes successfully pulled from remote {} for repository {}. Processing them...", remoteRepositoryUrl, localRepositoryFolder); return resolveChangeSetFromPull(git, head, mergeResult.getNewHead()); case ALREADY_UP_TO_DATE: logger.info("Git repository {} up to date (no changes pulled from remote {})", localRepositoryFolder, remoteRepositoryUrl); return new ChangeSetImpl(); default: // Not supported merge results throw new DeploymentException("Received unsupported merge result after executing pull command: " + mergeResult.getMergeStatus()); } } } catch (Exception e) { throw new DeploymentException("Git pull for repository " + localRepositoryFolder + " failed", e); } return new ChangeSetImpl(); }
From source file:org.craftercms.deployer.impl.processors.GitPullProcessor.java
License:Open Source License
protected ChangeSet resolveChangeSetFromPull(Git git, ObjectId oldHead, ObjectId newHead) throws IOException, GitAPIException { List<String> createdFiles = new ArrayList<>(); List<String> updatedFiles = new ArrayList<>(); List<String> deletedFiles = new ArrayList<>(); RevWalk revWalk = new RevWalk(git.getRepository()); ObjectId oldHeadTree = revWalk.parseCommit(oldHead).getTree().getId(); ObjectId newHeadTree = revWalk.parseCommit(newHead).getTree().getId(); // prepare the two iterators to compute the diff between try (ObjectReader reader = git.getRepository().newObjectReader()) { CanonicalTreeParser oldTreeIter = new CanonicalTreeParser(); CanonicalTreeParser newTreeIter = new CanonicalTreeParser(); oldTreeIter.reset(reader, oldHeadTree); newTreeIter.reset(reader, newHeadTree); // finally get the list of changed files List<DiffEntry> diffs = git.diff().setNewTree(newTreeIter).setOldTree(oldTreeIter).call(); for (DiffEntry entry : diffs) { switch (entry.getChangeType()) { case MODIFY: updatedFiles.add(entry.getNewPath()); logger.debug("Updated file: {}", entry.getNewPath()); break; case DELETE: deletedFiles.add(entry.getOldPath()); logger.debug("Deleted file: {}", entry.getOldPath()); break; case RENAME: deletedFiles.add(entry.getOldPath()); createdFiles.add(entry.getNewPath()); logger.debug("Renamed file: {} -> {}", entry.getOldPath(), entry.getNewPath()); break; case COPY: createdFiles.add(entry.getNewPath()); logger.debug("Copied file: {} -> {}", entry.getOldPath(), entry.getNewPath()); break; default: // ADD createdFiles.add(entry.getNewPath()); logger.debug("New file: {}", entry.getNewPath()); break; }/*from ww w.ja v a 2 s . co m*/ } } return new ChangeSetImpl(createdFiles, updatedFiles, deletedFiles); }
From source file:org.craftercms.studio.impl.v1.deployment.EnvironmentStoreGitBranchDeployer.java
License:Open Source License
private void addWorkAreaRemote(String site, Repository envStoreRepo) { envStoreRepo.getRemoteName("work-area"); Git git = new Git(envStoreRepo); StoredConfig config = git.getRepository().getConfig(); Path siteRepoPath = Paths.get(rootPath, "sites", site, ".git"); config.setString("remote", "work-area", "url", siteRepoPath.normalize().toAbsolutePath().toString()); try {// ww w. j ava 2 s . c o m config.save(); } catch (IOException e) { logger.error("Error adding work area as remote for environment store.", e); } }
From source file:org.curioswitch.gradle.plugins.ci.CurioGenericCiPlugin.java
License:Open Source License
private static Set<String> computeAffectedFilesForBranch(Git git, String branch, Project rootProject) throws IOException { String masterRemote = git.getRepository().getRemoteNames().contains("upstream") ? "upstream" : "origin"; CanonicalTreeParser oldTreeParser = parserForBranch(git, git.getRepository().exactRef("refs/remotes/" + masterRemote + "/master")); CanonicalTreeParser newTreeParser = parserForBranch(git, git.getRepository().exactRef(Constants.HEAD)); return computeAffectedFiles(git, oldTreeParser, newTreeParser, rootProject); }
From source file:org.curioswitch.gradle.plugins.ci.CurioGenericCiPlugin.java
License:Open Source License
private static Set<String> computeAffectedFilesForMaster(Git git, Project rootProject) throws IOException { ObjectId oldTreeId = git.getRepository().resolve("HEAD^{tree}"); ObjectId newTreeId = git.getRepository().resolve("HEAD^^{tree}"); final CanonicalTreeParser oldTreeParser; final CanonicalTreeParser newTreeParser; try (ObjectReader reader = git.getRepository().newObjectReader()) { oldTreeParser = parser(reader, oldTreeId); newTreeParser = parser(reader, newTreeId); }//from w w w. j av a 2 s . c o m return computeAffectedFiles(git, oldTreeParser, newTreeParser, rootProject); }
From source file:org.curioswitch.gradle.plugins.ci.CurioGenericCiPlugin.java
License:Open Source License
private static CanonicalTreeParser parserForBranch(Git git, Ref branch) throws IOException { try (RevWalk walk = new RevWalk(git.getRepository())) { RevCommit commit = walk.parseCommit(branch.getObjectId()); RevTree tree = walk.parseTree(commit.getTree().getId()); final CanonicalTreeParser parser; try (ObjectReader reader = git.getRepository().newObjectReader()) { parser = parser(reader, tree.getId()); }//www . jav a 2 s . c o m walk.dispose(); return parser; } }
From source file:org.dstadler.jgit.api.JGitPrintContent.java
License:BSD License
public static void main(String[] args) throws Exception { File gitWorkDir = new File("C:\\Users\\kishore\\git\\JavaRepos\\.git"); Git git = Git.open(gitWorkDir); Repository repo = git.getRepository(); ObjectId lastCommitId = repo.resolve(Constants.HEAD); RevWalk revWalk = new RevWalk(repo); RevCommit commit = revWalk.parseCommit(lastCommitId); RevTree tree = commit.getTree();/*from w ww . java2 s.c o m*/ TreeWalk treeWalk = new TreeWalk(repo); treeWalk.addTree(tree); treeWalk.setRecursive(true); treeWalk.setFilter(PathFilter.ALL); if (!treeWalk.next()) { System.out.println("Nothing found!"); return; } ObjectId objectId = treeWalk.getObjectId(0); System.err.println(treeWalk.getPathString()); System.err.println(objectId.getName()); ObjectLoader loader = repo.open(objectId); ByteArrayOutputStream out = new ByteArrayOutputStream(); loader.copyTo(out); System.out.println("file1.txt:\n" + out.toString()); }
From source file:org.eclipse.oomph.setup.git.impl.GitCloneTaskImpl.java
License:Open Source License
public boolean isNeeded(final SetupTaskContext context) throws Exception { if (StringUtil.isEmpty(getRemoteURI())) { return false; }/*from w w w . ja v a 2 s . c o m*/ // If the EGit UI is available, this will contain the list of repositories that have been added to the repositories view. Set<String> repositories = null; // Force start egit to make the clone appears in the repositories view and so projects are connected by the egit team provider. try { Class<?> egitUIActivatorClass = CommonPlugin.loadClass("org.eclipse.egit.ui", "org.eclipse.egit.ui.Activator"); Object egitUIActivator = ReflectUtil.invokeMethod("getDefault", egitUIActivatorClass); repositoryUtil = ReflectUtil.invokeMethod("getRepositoryUtil", egitUIActivator); @SuppressWarnings("unchecked") List<String> configuredRepositories = (List<String>) ReflectUtil .invokeMethod("getConfiguredRepositories", repositoryUtil); repositories = new HashSet<String>(configuredRepositories); } catch (Throwable ex) { // Ignore. } String location = getLocation(); workDir = new File(location); if (!workDir.isDirectory()) { return true; } workDirExisted = true; boolean needsToBeAdded = repositories != null && !repositories.contains(new File(workDir, ".git").toString()); if (workDir.list().length > 1) { // Even though cloning isn't needed, return true if the repository needs to be added to the repositories view. bypassCloning = true; return needsToBeAdded; } context.log("Opening Git clone " + workDir); try { Git git = Git.open(workDir); if (!hasWorkTree(git) || !hasReflog(git)) { FileUtil.rename(workDir); workDirExisted = false; return true; } Repository repository = git.getRepository(); String checkoutBranch = getCheckoutBranch(); String remoteName = getRemoteName(); String remoteURI = getRemoteURI(); String pushURI = getPushURI(); configureRepository(context, repository, checkoutBranch, remoteName, remoteURI, pushURI, getConfigSections()); hasCheckout = repository.getAllRefs().containsKey("refs/heads/" + checkoutBranch); if (!hasCheckout) { cachedGit = git; cachedRepository = repository; return true; } // Even though cloning isn't needed, return true if the repository needs to be added to the repositories view. bypassCloning = true; return needsToBeAdded; } catch (Throwable ex) { if (!workDirExisted) { FileUtil.delete(workDir, new NullProgressMonitor() { @Override public boolean isCanceled() { return context.isCanceled(); } }); } throw new Exception(ex); } }