Example usage for org.eclipse.jgit.lib ObjectId fromString

List of usage examples for org.eclipse.jgit.lib ObjectId fromString

Introduction

In this page you can find the example usage for org.eclipse.jgit.lib ObjectId fromString.

Prototype

public static ObjectId fromString(String str) 

Source Link

Document

Convert an ObjectId from hex characters.

Usage

From source file:ShowFileDiff.java

License:Apache License

private static AbstractTreeIterator prepareTreeParser(Repository repository, String objectId)
        throws IOException, MissingObjectException, IncorrectObjectTypeException {
    // from the commit we can build the tree which allows us to construct the TreeParser
    RevWalk walk = new RevWalk(repository);
    RevCommit commit = walk.parseCommit(ObjectId.fromString(objectId));
    RevTree tree = walk.parseTree(commit.getTree().getId());

    CanonicalTreeParser oldTreeParser = new CanonicalTreeParser();
    ObjectReader oldReader = repository.newObjectReader();
    try {//from  w  w  w.  jav  a2 s .c om
        oldTreeParser.reset(oldReader, tree.getId());
    } finally {
        oldReader.release();
    }

    walk.dispose();

    return oldTreeParser;
}

From source file:at.bitandart.zoubek.mervin.gerrit.GitURIParser.java

License:Open Source License

/**
 * loads the referenced commit/*ww w  .  j  ava 2 s . c o  m*/
 * 
 * @throws IOException
 *             if an error occurs during parsing the URI
 */
private void loadCommit() throws IOException {
    if (repository == null)
        loadRepository();
    RevWalk revWalk = new RevWalk(repository);
    commit = revWalk.parseCommit(ObjectId.fromString(commitHash));
    revWalk.close();
}

From source file:au.id.soundadvice.systemdesign.versioning.jgit.GitVersionControl.java

License:Open Source License

@Override
public Optional<BufferedReader> getBufferedReader(IdentityValidator identityValidator, String filename,
        Optional<VersionInfo> version) throws IOException {
    if (version.isPresent()) {
        Pair<String, ObjectId> diff = diffCache.get();
        if (!version.get().getId().equals(diff.getKey())) {
            // Grab the id of the commit we are trying to diff against
            ObjectId id = ObjectId.fromString(version.get().getId());
            RevWalk revWalk = new RevWalk(repo.getRepository());
            try {
                // Read the commit
                RevCommit commit = revWalk.parseCommit(id);
                ObjectId matchedDirectory = findMatchingIdentity(identityValidator, commit.getTree());
                diff = new Pair<>(version.get().getId(), matchedDirectory);
                diffCache.set(diff);//  w ww  .j a  v  a 2  s. c  o  m
            } finally {
                revWalk.release();
            }
        }

        if (ObjectId.zeroId().equals(diff.getValue())) {
            // No such tree
            return Optional.empty();
        } else {
            // Find the file in this tree
            TreeWalk treeWalk = new TreeWalk(repo.getRepository());
            try {
                treeWalk.setRecursive(false);
                treeWalk.addTree(diff.getValue());

                while (treeWalk.next()) {
                    if (filename.equals(treeWalk.getNameString())) {
                        // Read the file
                        ObjectLoader loader = repo.getRepository().open(treeWalk.getObjectId(0));
                        ObjectStream stream = loader.openStream();
                        InputStreamReader reader = new InputStreamReader(stream, StandardCharsets.UTF_8);
                        return Optional.of(new BufferedReader(reader));
                    }
                }
                // No such file
                return Optional.empty();
            } finally {
                treeWalk.release();
            }
        }
    } else {
        Path path = identityValidator.getDirectoryPath().resolve(filename);
        if (Files.exists(path)) {
            return Optional.of(Files.newBufferedReader(path));
        } else {
            return Optional.empty();
        }
    }
}

From source file:br.com.riselabs.cotonet.util.CodefaceHelper.java

License:Open Source License

private static void createMergeBasedTags(Project project) throws IOException {
    Map<String, String> tagsMap;
    MergeScenarioDAO dao = new MergeScenarioDAO();
    Repository repository = project.getRepository();
    List<MergeScenario> scenarios = new ArrayList<MergeScenario>();
    try {//from w  w  w  . j  a  v  a2s .com
        scenarios = dao.list(project.getID());
    } catch (InvalidCotonetBeanException e1) {
        Logger.logStackTrace(e1);
    }
    try (Git git = new Git(repository)) {
        // remove existing tags
        for (String tag : repository.getTags().keySet()) {
            git.tagDelete().setTags(tag).call();
        }
    } catch (GitAPIException e) {
        Logger.logStackTrace(e);
    }

    tagsMap = new HashMap<String, String>();
    for (MergeScenario scenario : scenarios) {
        String tagT = project.getName() + "T" + scenario.getID();
        String tagB = project.getName() + "B" + scenario.getID();

        tagsMap.put(tagB, scenario.getSHA1Merge());
        RevCommit earlier = getEarlierCommit(project.getRepository(), scenario.getSHA1Merge(), 3);
        tagsMap.put(tagT, earlier.getName());

        // prepare test-repository
        try (Git git = new Git(repository)) {

            try (RevWalk walk = new RevWalk(repository)) {
                ObjectId refCommitID = ObjectId.fromString(scenario.getSHA1Merge());
                RevCommit refCommit = walk.parseCommit(refCommitID);
                git.tag().setObjectId(refCommit).setName(tagB).call();
                git.tag().setObjectId(earlier).setName(tagT).call();

                walk.dispose();
            } catch (ConcurrentRefUpdateException e) {
                e.printStackTrace();
            } catch (InvalidTagNameException e) {
                e.printStackTrace();
            } catch (NoHeadException e) {
                e.printStackTrace();
            } catch (GitAPIException e) {
                e.printStackTrace();
            }
        } catch (RevisionSyntaxException e) {
            Logger.logStackTrace(e);
        }
    }
    try {
        createTagToSHA1MappingFile(project.getName(), tagsMap);
    } catch (NullPointerException | EmptyContentException e) {
        Logger.logStackTrace(e);
    }
}

From source file:br.com.riselabs.cotonet.util.CodefaceHelper.java

License:Open Source License

/**
 * Returns a commit from the given repository dated {@code i} months
 * earlier./*  www.ja v  a2s  .c o  m*/
 * 
 * @param repo
 * @param refCommit
 * @param i
 * @return
 * @throws IOException
 * @throws IncorrectObjectTypeException
 * @throws MissingObjectException
 */
private static RevCommit getEarlierCommit(Repository repo, String refCommit, int i)
        throws MissingObjectException, IncorrectObjectTypeException, IOException {
    RevCommit result = null;
    try (RevWalk rw = new RevWalk(repo)) {
        ObjectId refID = ObjectId.fromString(refCommit);
        RevCommit base = rw.parseCommit(refID);
        rw.markStart(base);
        Date baseDate = base.getAuthorIdent().getWhen();
        Instant instant = baseDate.toInstant();
        ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
        LocalDate reference = zdt.toLocalDate();
        RevCommit aux;
        while ((aux = rw.next()) != null) {
            Date resultDate = aux.getAuthorIdent().getWhen();
            instant = resultDate.toInstant();
            zdt = instant.atZone(ZoneId.systemDefault());
            LocalDate imonths = zdt.toLocalDate();
            long days = ChronoUnit.DAYS.between(imonths, reference);
            if ((days % 30) > i) {
                return aux;
            } else {
                // in case it reaches the beginning of the tree returns the
                // last commit
                result = aux;
            }
        }
        rw.close();
    }
    return result;
}

From source file:br.edu.ifpb.scm.api.loads.Loader.java

public static void showFileDiffs(Git gitRepository) {
    Repository repo = gitRepository.getRepository();

    try {/*from   www . ja v  a  2  s  .  c o m*/
        ObjectId head = ObjectId.fromString("c24af304077e4a6d1925db7cd35d0cd1ed488d6a");
        ObjectId previousHead = ObjectId.fromString("c16be41e77bb53a4b639cb864c9a6e4d0f8df7c2");
        ObjectReader reader = repo.newObjectReader();

        CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
        oldTreeIter.reset(reader, previousHead);
        CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
        newTreeIter.reset(reader, head);

        List<DiffEntry> listDiffs = gitRepository.diff().setOldTree(oldTreeIter).setNewTree(newTreeIter).call();

        listDiffs.stream().forEach((DiffEntry diff) -> {

            DiffFormatter formatter = new DiffFormatter(System.out);
            formatter.setRepository(repo);
            System.out.println(diff);
            try {
                formatter.format(diff);
            } catch (IOException ex) {
                Logger.getLogger(Loader.class.getName()).log(Level.SEVERE, null, ex);
            }
        });
    } catch (IOException | GitAPIException ex) {
        Logger.getLogger(Loader.class.getName()).log(Level.SEVERE, null, ex);
    }
}

From source file:br.edu.ifpb.scm.api.loads.LoaderVersions.java

public static void funcionando(final String commit) throws IOException, GitAPIException {
    org.eclipse.jgit.api.Git git = org.eclipse.jgit.api.Git.open(PATH);
    try (org.eclipse.jgit.lib.Repository repository = git.getRepository()) {
        // The {tree} will return the underlying tree-id instead of the commit-id itself!
        // For a description of what the carets do see e.g. http://www.paulboxley.com/blog/2011/06/git-caret-and-tilde
        // This means we are selecting the parent of the parent of the parent of the parent of current HEAD and
        // take the tree-ish of it
        //id da tree
        // a RevWalk allows to walk over commits based on some filtering that is defined

        ObjectId obj = ObjectId.fromString(commit);
        RevWalk walk = new RevWalk(repository);
        RevCommit revCommit = walk.parseCommit(obj);

        RevCommit[] arra = revCommit.getParents();

        ObjectId obj2 = ObjectId.fromString(arra[0].getName());
        RevWalk walk2 = new RevWalk(repository);
        RevCommit revCommit2 = walk2.parseCommit(obj2);

        ObjectId oldHead = repository.resolve(revCommit2.getTree().getName());
        ObjectId head = repository.resolve(revCommit.getTree().getName());

        //Pegando o codigo de cada commit pra arvore
        System.out.println("Printing diff between tree: " + oldHead.getName() + " and " + head.getName());

        // prepare the two iterators to compute the diff between
        try (ObjectReader reader = repository.newObjectReader()) {
            CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
            oldTreeIter.reset(reader, oldHead);
            CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
            newTreeIter.reset(reader, head);

            // finally get the list of changed files
            try (org.eclipse.jgit.api.Git g = new org.eclipse.jgit.api.Git(repository)) {
                List<DiffEntry> diffs = g.diff().setNewTree(newTreeIter).setOldTree(oldTreeIter).call();
                diffs.stream().forEach((entry) -> {
                    System.out.println("Entry: " + entry);
                });/*  w  ww. jav  a 2 s .  c  o  m*/
            }
        }
    }

    System.out.println("Done");

}

From source file:com.amd.gerrit.plugins.manifestsubscription.ManifestSubscription.java

License:Open Source License

@Override
public void onGitReferenceUpdated(Event event) {
    String projectName = event.getProjectName();
    String refName = event.getRefName();
    String branchName = refName.startsWith("refs/heads/") ? refName.substring(11) : "";
    ProjectBranchKey pbKey = new ProjectBranchKey(projectName, branchName);

    if (event.getNewObjectId().equals(ObjectId.zeroId().toString())) {
        // This happens when there's a branch deletion and possibly other events
        log.info("Project: " + projectName + "\nrefName: " + refName);
    } else if (REFS_CONFIG.equals(refName)) {
        // possible change in enabled repos
        processProjectConfigChange(event);
    } else if (enabledManifestSource.containsKey(projectName)
            && enabledManifestSource.get(projectName).getBranches().contains(branchName)) {
        processManifestChange(event, projectName, branchName);

    } else if (subscribedRepos.containsRow(pbKey)) {
        //updates in subscribed repos

        // Manifest store and branch
        Map<String, Map<String, Set<com.amd.gerrit.plugins.manifestsubscription.manifest.Project>>> destinations = subscribedRepos
                .row(pbKey);/*from   w ww.j  av a2  s  . c  o  m*/

        for (String store : destinations.keySet()) {
            for (String storeBranch : destinations.get(store).keySet()) {
                Set<com.amd.gerrit.plugins.manifestsubscription.manifest.Project> ps = destinations.get(store)
                        .get(storeBranch);

                Manifest manifest = manifestStores.get(store, storeBranch);
                String manifestSrc = manifestSource.get(store, storeBranch);
                StringBuilder extraCommitMsg = new StringBuilder();

                Project.NameKey p = new Project.NameKey(projectName);
                try (Repository r = gitRepoManager.openRepository(p); RevWalk walk = new RevWalk(r)) {

                    RevCommit c = walk.parseCommit(ObjectId.fromString(event.getNewObjectId()));

                    extraCommitMsg.append(event.getNewObjectId().substring(0, 7));
                    extraCommitMsg.append(" ");
                    extraCommitMsg.append(projectName);
                    extraCommitMsg.append(" ");
                    extraCommitMsg.append(c.getShortMessage());
                } catch (IOException e) {
                    e.printStackTrace();
                }

                // these are project from the above manifest previously
                // cached in the lookup table
                for (com.amd.gerrit.plugins.manifestsubscription.manifest.Project updateProject : ps) {
                    updateProject.setRevision(event.getNewObjectId());
                }

                try {
                    Utilities.updateManifest(gitRepoManager, metaDataUpdateFactory, changeHooks, store,
                            STORE_BRANCH_PREFIX + storeBranch, manifest, manifestSrc, extraCommitMsg.toString(),
                            null);
                } catch (JAXBException | IOException e) {
                    e.printStackTrace();
                }

            }
        }

    }

}

From source file:com.amd.gerrit.plugins.manifestsubscription.ManifestSubscription.java

License:Open Source License

private ProjectConfig parseConfig(Project.NameKey p, String idStr) throws IOException, ConfigInvalidException {
    ObjectId id = ObjectId.fromString(idStr);
    if (ObjectId.zeroId().equals(id)) {
        return null;
    }/* w w  w.ja va2  s  .c  om*/
    return ProjectConfig.read(metaDataUpdateFactory.create(p), id);
}

From source file:com.bacoder.integration.test.TestJerseySources.java

License:Apache License

public void testJerseySources() throws InitializationException, URISyntaxException, ProcessingException {
    GitRepository repository = new GitRepository(new URI("https://github.com/jersey/jersey.git"),
            new GitConfig().setCommitRevision(ObjectId.fromString("ce83e9bc94e153a22ecd6917d6885c897e58d61e"))
                    .setProgressMonitor(new TextProgressMonitor()));
    repository.process(new GitEntryProcessor() {
        @Override/*from   w ww.jav a 2 s  .c o m*/
        public void process(GitEntry entry) throws Exception {
            String extension = Files.getFileExtension(entry.getPath());
            if ("java".equals(extension)) {
                LOG.info("Parsing: " + entry.getPath());
                parseJava(entry.open().openStream());
            } else if ("properties".equals(extension)) {
                LOG.info("Parsing: " + entry.getPath());
                Properties properties = parseProperties(entry.open().openStream());

                java.util.Properties expected = new java.util.Properties();
                try {
                    expected.load(entry.open().openStream());
                } catch (Exception e) {
                    throw new RuntimeException("Unable to load properties" + e);
                }

                for (KeyValue keyValue : properties.getKeyValues()) {
                    String key = keyValue.getKey().getSanitizedText();
                    Assert.assertTrue(expected.containsKey(key),
                            String.format("Key \"%s\" does not exist in expected Java properties", key));
                    String value = keyValue.getValue().getSanitizedText();
                    Assert.assertEquals(value, expected.get(key),
                            String.format("Value \"%s\" does not match expected Java property value \"%s\"",
                                    value, expected.get(key)));
                }
            }
        }
    });
}