List of usage examples for org.eclipse.jgit.lib Repository getObjectDatabase
@NonNull public abstract ObjectDatabase getObjectDatabase();
From source file:jetbrains.buildServer.buildTriggers.vcs.git.GitMergeSupport.java
License:Apache License
@NotNull private ObjectId mergeCommits(@NotNull GitVcsRoot gitRoot, @NotNull Repository db, @NotNull RevCommit srcCommit, @NotNull RevCommit dstCommit, @NotNull String message, @NotNull MergeOptions options) throws IOException, MergeFailedException { if (!alwaysCreateMergeCommit(options)) { RevWalk walk = new RevWalk(db); try {/*from ww w .ja v a 2s. c o m*/ if (walk.isMergedInto(walk.parseCommit(dstCommit), walk.parseCommit(srcCommit))) { LOG.debug("Commit " + srcCommit.name() + " already merged into " + dstCommit + ", skip the merge"); return srcCommit; } } finally { walk.release(); } } if (tryRebase(options)) { LOG.debug("Run rebase, root " + gitRoot + ", revision " + srcCommit.name() + ", destination " + dstCommit.name()); try { return rebase(gitRoot, db, srcCommit, dstCommit); } catch (MergeFailedException e) { if (enforceLinearHistory(options)) { LOG.debug("Rebase failed, root " + gitRoot + ", revision " + srcCommit.name() + ", destination " + dstCommit.name(), e); throw e; } } catch (IOException e) { if (enforceLinearHistory(options)) { LOG.debug("Rebase failed, root " + gitRoot + ", revision " + srcCommit.name() + ", destination " + dstCommit.name(), e); throw e; } } } ResolveMerger merger = (ResolveMerger) MergeStrategy.RECURSIVE.newMerger(db, true); boolean mergeSuccessful = merger.merge(dstCommit, srcCommit); if (!mergeSuccessful) { List<String> conflicts = merger.getUnmergedPaths(); Collections.sort(conflicts); LOG.debug("Merge failed with conflicts, root " + gitRoot + ", revision " + srcCommit.name() + ", destination " + dstCommit.name() + ", conflicts " + conflicts); throw new MergeFailedException(conflicts); } ObjectInserter inserter = db.newObjectInserter(); DirCache dc = DirCache.newInCore(); DirCacheBuilder dcb = dc.builder(); dcb.addTree(new byte[] {}, 0, db.getObjectDatabase().newReader(), merger.getResultTreeId()); inserter.flush(); dcb.finish(); ObjectId writtenTreeId = dc.writeTree(inserter); CommitBuilder commitBuilder = new CommitBuilder(); commitBuilder.setCommitter(gitRoot.getTagger(db)); commitBuilder.setAuthor(gitRoot.getTagger(db)); commitBuilder.setMessage(message); commitBuilder.addParentId(dstCommit); commitBuilder.addParentId(srcCommit); commitBuilder.setTreeId(writtenTreeId); ObjectId commitId = inserter.insert(commitBuilder); inserter.flush(); return commitId; }
From source file:jetbrains.buildServer.buildTriggers.vcs.git.GitServerUtil.java
License:Apache License
public static boolean isCloned(@NotNull Repository db) throws VcsException, IOException { if (!db.getObjectDatabase().exists()) return false; ObjectReader reader = db.getObjectDatabase().newReader(); try {// ww w . ja v a2s.com for (Ref ref : db.getRefDatabase().getRefs(RefDatabase.ALL).values()) { if (reader.has(ref.getObjectId())) return true; } } finally { reader.release(); } return false; }
From source file:jetbrains.buildServer.buildTriggers.vcs.git.patch.BulkPatchBuilderImpl.java
License:Apache License
public void buildPatches(@NotNull final VcsRoot root, @NotNull final CheckoutRules rules, @NotNull final List<BulkPatchBuilderRequest> requests, @NotNull final BulkPatchBuilder patch) throws VcsException, IOException { final OperationContext ctx = myVcs.createContext(root, "bulk patch " + requests.size() + " commits"); try {/*ww w . java 2 s .c o m*/ final Repository myRepo = ctx.getRepository(); final ObjectReader contentsReader = myRepo.getObjectDatabase().newReader(); final ObjectReader treesReader = myRepo.getObjectDatabase().newReader(); for (BulkPatchBuilderRequest request : requests) { final PatchBuilder patchBuilder = patch.startPatch(request); final String prevBase = request.getFromVersion(); final String toBase = request.getToVersion(); try { new GitPatchBuilder(ctx, patchBuilder, prevBase, toBase, rules, myConfig.verboseTreeWalkLog()) { @NotNull @Override protected ObjectReader newObjectReaderForTree() { return treesReader; } @NotNull @Override protected ContentLoaderFactory contentLoaderFactory() { return new ContentLoaderFactory() { @Nullable public ObjectLoader open(@NotNull final Repository repo, @NotNull final ObjectId id) throws IOException { assert repo == myRepo; return contentsReader.open(id); } }; } }.buildPatch(); } catch (Throwable e) { throw new VcsException( "Failed to build patch " + prevBase + " -> " + toBase + ". " + e.getMessage(), e); } finally { patch.endPatch(request, patchBuilder); } } } catch (Throwable e) { throw new VcsException("Failed to complete bulk patch." + e.getMessage(), e); } finally { ctx.close(); } }
From source file:org.basinmc.maven.plugins.minecraft.patch.SafeguardMojo.java
License:Apache License
/** * {@inheritDoc}/*from ww w . ja va 2s . co m*/ */ @Override public void execute() throws MojoExecutionException, MojoFailureException { this.verifyProperties("sourceDirectory", "force"); this.getLog().info("Running repository safeguard checks"); if (this.isForced()) { this.getLog().warn("Skipping safeguard - Override is enabled\n" + "\n" + "+--------------------------------------+\n" + "| |\n" + "| THIS MAY CAUSE LOSS OF CHANGES |\n" + "| USE AT YOUR OWN RISK |\n" + "| |\n" + "+--------------------------------------+\n"); return; } try { Repository repository = new FileRepositoryBuilder().setWorkTree(this.getSourceDirectory()).build(); if (!repository.getObjectDatabase().exists()) { this.getLog().info("Skipping safeguard - No repository in source path"); return; } Git git = new Git(repository); if (!git.status().call().isClean()) { this.getLog().error( "The repository at " + this.getSourceDirectory().toString() + " is not in a clean state"); this.getLog().error( "As such the build will be halted - Please verify that all changes you wish to retain have been commited and turned into patch files"); this.getLog().error( "If you wish to override this behavior, start the build by passing -Dminecraft.force=true"); throw new MojoFailureException("Repository is in a dirty state"); } // TODO: Compare number of commits since first commit against amount of patches to // prevent accidental loss of changes due to the pending git reset operation } catch (GitAPIException ex) { throw new MojoFailureException("Failed to execute git command: " + ex.getMessage(), ex); } catch (IOException ex) { throw new MojoFailureException("Could not access source repository: " + ex.getMessage(), ex); } }
From source file:org.flowerplatform.web.git.GitService.java
License:Open Source License
public void deleteRepository(ServiceInvocationContext context, List<PathFragment> selectedNode) { Repository repository = (Repository) GenericTreeStatefulService.getNodeByPathFor(selectedNode, null); GenericTreeStatefulService service = GenericTreeStatefulService.getServiceFromPathWithRoot(selectedNode); NodeInfo repositoryNodeInfo = service.getVisibleNodes().get(repository); ProgressMonitor monitor = ProgressMonitor.create( GitPlugin.getInstance().getMessage("git.deleteRepo.monitor.title"), context.getCommunicationChannel()); try {//from w w w . ja va2s . c o m monitor.beginTask(GitPlugin.getInstance().getMessage("git.deleteRepo.monitor.message", new Object[] { GitPlugin.getInstance().getUtils().getRepositoryName(repository) }), 2); repository.getObjectDatabase().close(); repository.getRefDatabase().close(); // delete repositories from cache File[] children = repository.getDirectory().getParentFile().getParentFile().listFiles(); for (File child : children) { Repository repo = GitPlugin.getInstance().getUtils().getRepository(child); RepositoryCache.close(repo); } monitor.worked(1); // delete repository files File repoFile = repository.getDirectory().getParentFile().getParentFile(); if (GitUtils.GIT_REPOSITORIES_NAME.equals(repoFile.getParentFile().getName())) { GitPlugin.getInstance().getUtils().delete(repoFile); } monitor.worked(1); dispatchContentUpdate(repositoryNodeInfo.getParent().getNode()); } catch (Exception e) { logger.debug(GitPlugin.getInstance().getMessage("git.deleteRepo.error"), e); context.getCommunicationChannel().appendOrSendCommand( new DisplaySimpleMessageClientCommand(CommonPlugin.getInstance().getMessage("error"), GitPlugin.getInstance().getMessage("git.deleteRepo.error"), DisplaySimpleMessageClientCommand.ICON_ERROR)); } finally { monitor.done(); } }
From source file:org.impressivecode.depress.scm.git.GitOnlineLogParser.java
License:Open Source License
private static Git initializeGit(final String path) throws IOException, NoHeadException { RepositoryBuilder gitRepoBuilder = new RepositoryBuilder(); Repository gitRepo = gitRepoBuilder.setGitDir(new File(path)).readEnvironment().findGitDir().build(); Git git = new Git(gitRepo); // Make sure path contains a git repository. if (!gitRepo.getObjectDatabase().exists()) { throw new NoHeadException("Directory " + path + " does not look like a git repository."); }//from ww w. j a va 2 s . c o m return git; }
From source file:org.kercoin.magrit.core.dao.BuildDAOImpl.java
License:Open Source License
@Override public void save(BuildResult buildResult, Repository repo, String userName, Pair<Long, Integer> when) { ObjectInserter db = null;/*from w ww . j av a 2s. com*/ try { db = repo.getObjectDatabase().newInserter(); RevCommit commitId = gitUtils.getCommit(repo, buildResult.getCommitSha1()); ObjectId logSha1 = writeBlob(db, buildResult.getLog()); String content = serializeResult(buildResult, userName, when, logSha1); ObjectId resultBlobId = writeBlob(db, content.getBytes(UTF8)); String noteContent = buildNoteContent(repo, commitId, resultBlobId); writeNote(repo, commitId, noteContent); db.flush(); } catch (IOException e) { e.printStackTrace(); } finally { if (db != null) { db.release(); } } }
From source file:org.kercoin.magrit.core.utils.GitUtils.java
License:Open Source License
public byte[] showBytes(Repository repository, String revstr) throws AmbiguousObjectException, IOException { ObjectId ref = repository.resolve(revstr); if (ref == null) { return null; }/* w w w . jav a 2s .com*/ return repository.getObjectDatabase().newReader().open(ref).getBytes(); }
From source file:org.kuali.student.git.model.TestKSRevision27975.java
License:Educational Community License
@Test public void testRevision27975() throws IOException { File gitRepository = new File("target/ks-r27975"); FileUtils.deleteDirectory(gitRepository); Repository repository = GitRepositoryUtils.buildFileRepository(gitRepository, true); GitImporterMain/*from w ww. ja v a 2 s .c om*/ .main(new String[] { "src/test/resources/ks-r27975.dump.bz2", gitRepository.getAbsolutePath(), "target/ks-r27975-ks-veto.log", "target/ks-r27975-ks-copyFrom-skipped.log", "target/ks-r27975-blob.log", "0", "https://svn.kuali.org/repos/student", "uuid" }); RevWalk rw = new RevWalk(repository); Ref branch = repository.getRef("sandbox_ks-1.3-core-slice-demo_modules_ks-pom_trunk"); Assert.assertNotNull(branch); RevCommit headCommit = rw.parseCommit(branch.getObjectId()); TreeWalk tw = new TreeWalk(repository); tw.addTree(headCommit.getTree().getId()); tw.setRecursive(true); int blobCount = 0; ObjectId blobId = null; while (tw.next()) { if (tw.getFileMode(0) == FileMode.REGULAR_FILE) { blobCount++; blobId = tw.getObjectId(0); } } Assert.assertEquals(1, blobCount); ObjectLoader blobLoader = repository.getObjectDatabase().newReader().open(blobId); List<String> lines = IOUtils.readLines(blobLoader.openStream()); Assert.assertEquals("<?xml version=\"1.0\" encoding=\"UTF-8\"?>", lines.get(0)); tw.release(); rw.release(); repository.close(); }
From source file:org.sonarsource.scm.git.JGitBlameCommand.java
License:Open Source License
private static Repository buildRepository(File basedir) { RepositoryBuilder repoBuilder = new RepositoryBuilder().findGitDir(basedir).setMustExist(true); if (repoBuilder.getGitDir() == null) { throw MessageException.of(basedir + " doesn't seem to be contained in a Git repository"); }/* w ww .j a va 2 s .c o m*/ try { Repository repo = repoBuilder.build(); // SONARSCGIT-2 Force initialization of shallow commits to avoid later concurrent modification issue repo.getObjectDatabase().newReader().getShallowCommits(); return repo; } catch (IOException e) { throw new IllegalStateException("Unable to open Git repository", e); } }