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

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

Introduction

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

Prototype

public static final String toString(ObjectId i) 

Source Link

Document

Convert an ObjectId into a hex string representation.

Usage

From source file:com.google.gitiles.CommitSoyData.java

License:Open Source License

public Map<String, Object> toSoyData(RevCommit commit, KeySet keys) throws IOException {
    Map<String, Object> data = Maps.newHashMapWithExpectedSize(KeySet.DEFAULT.keys.size());
    if (keys.keys.contains("author")) {
        data.put("author", toSoyData(commit.getAuthorIdent(), dateFormatter));
    }//www. j a  v a2s  .  c  om
    if (keys.keys.contains("committer")) {
        data.put("committer", toSoyData(commit.getCommitterIdent(), dateFormatter));
    }
    if (keys.keys.contains("sha")) {
        data.put("sha", ObjectId.toString(commit));
    }
    if (keys.keys.contains("abbrevSha")) {
        ObjectReader reader = repo.getObjectDatabase().newReader();
        try {
            data.put("abbrevSha", reader.abbreviate(commit).name());
        } finally {
            reader.release();
        }
    }
    if (keys.keys.contains("url")) {
        data.put("url", GitilesView.revision().copyFrom(view).setRevision(commit).toUrl());
    }
    if (keys.keys.contains("logUrl")) {
        Revision rev = view.getRevision();
        GitilesView.Builder logView = GitilesView.log().copyFrom(view)
                .setRevision(rev.getId().equals(commit) ? rev.getName() : commit.name(), commit)
                .setOldRevision(Revision.NULL).setTreePath(null);
        data.put("logUrl", logView.toUrl());
    }
    if (keys.keys.contains("tree")) {
        data.put("tree", ObjectId.toString(commit.getTree()));
    }
    if (keys.keys.contains("treeUrl")) {
        data.put("treeUrl", GitilesView.path().copyFrom(view).setTreePath("/").toUrl());
    }
    if (keys.keys.contains("parents")) {
        data.put("parents", toSoyData(view, commit.getParents()));
    }
    if (keys.keys.contains("shortMessage")) {
        data.put("shortMessage", commit.getShortMessage());
    }
    if (keys.keys.contains("branches")) {
        data.put("branches", getRefsById(commit, Constants.R_HEADS));
    }
    if (keys.keys.contains("tags")) {
        data.put("tags", getRefsById(commit, Constants.R_TAGS));
    }
    if (keys.keys.contains("message")) {
        if (linkifier != null) {
            data.put("message", linkifier.linkify(req, commit.getFullMessage()));
        } else {
            data.put("message", commit.getFullMessage());
        }
    }
    if (keys.keys.contains("diffTree")) {
        data.put("diffTree", computeDiffTree(commit));
    }
    checkState(keys.keys.size() == data.size(), "bad commit data keys: %s != %s", keys.keys, data.keySet());
    return ImmutableMap.copyOf(data);
}

From source file:com.google.gitiles.GitwebRedirectFilterTest.java

License:Open Source License

@Test
public void show() throws Exception {
    assertGone(newRequest("a=commit"));
    assertGone(newRequest("a=commit;p=test"));
    RevCommit commit = repo.branch("refs/heads/master").commit().create();
    assertRedirectsTo(GitilesView.revision().setHostName(HOST_NAME).setServletPath(SERVLET_PATH)
            .setRepositoryName("test").setRevision(commit).toUrl(),
            newRequest("a=commit;p=test&h=" + ObjectId.toString(commit)));
}

From source file:com.google.gitiles.PathServlet.java

License:Open Source License

private void showSymlink(HttpServletRequest req, HttpServletResponse res, RevWalk rw, TreeWalk tw)
        throws IOException {
    GitilesView view = ViewFilter.getView(req);
    ObjectId id = tw.getObjectId(0);//from   w w w  . ja  v  a2s . co  m
    Map<String, Object> data = Maps.newHashMap();

    ObjectLoader loader = rw.getObjectReader().open(id, OBJ_BLOB);
    String target;
    try {
        target = RawParseUtils.decode(loader.getCachedBytes(TreeSoyData.MAX_SYMLINK_SIZE));
    } catch (LargeObjectException.OutOfMemory e) {
        throw e;
    } catch (LargeObjectException e) {
        data.put("sha", ObjectId.toString(id));
        data.put("data", null);
        data.put("size", Long.toString(loader.getSize()));
        render(req, res, "gitiles.pathDetail", ImmutableMap.of("title", ViewFilter.getView(req).getTreePath(),
                "type", FileType.REGULAR_FILE.toString(), "data", data));
        return;
    }

    String url = resolveTargetUrl(
            GitilesView.path().copyFrom(view).setTreePath(dirname(view.getTreePath())).build(), target);
    data.put("title", view.getTreePath());
    data.put("target", target);
    if (url != null) {
        data.put("targetUrl", url);
    }

    // TODO(sop): Allow caching files by SHA-1 when no S cookie is sent.
    render(req, res, "gitiles.pathDetail", ImmutableMap.of("title", ViewFilter.getView(req).getTreePath(),
            "type", FileType.SYMLINK.toString(), "data", data));
}

From source file:com.google.gitiles.PathServlet.java

License:Open Source License

private void showGitlink(HttpServletRequest req, HttpServletResponse res, RevWalk rw, TreeWalk tw, RevTree root)
        throws IOException {
    GitilesView view = ViewFilter.getView(req);
    SubmoduleWalk sw = SubmoduleWalk.forPath(ServletUtils.getRepository(req), root, view.getTreePath());

    String remoteUrl;//from   w  ww . j  a v  a  2  s.  co  m
    try {
        remoteUrl = sw.getRemoteUrl();
    } catch (ConfigInvalidException e) {
        throw new IOException(e);
    } finally {
        sw.release();
    }

    Map<String, Object> data = Maps.newHashMap();
    data.put("sha", ObjectId.toString(tw.getObjectId(0)));
    data.put("remoteUrl", remoteUrl);

    // TODO(dborowitz): Guess when we can put commit SHAs in the URL.
    String httpUrl = resolveHttpUrl(remoteUrl);
    if (httpUrl != null) {
        data.put("httpUrl", httpUrl);
    }

    // TODO(sop): Allow caching links by SHA-1 when no S cookie is sent.
    render(req, res, "gitiles.pathDetail",
            ImmutableMap.of("title", view.getTreePath(), "type", FileType.GITLINK.toString(), "data", data));
}

From source file:com.google.gitiles.RefServletTest.java

License:Open Source License

private String id(String refName) throws IOException {
    return ObjectId.toString(repo.getRepository().getRef(refName).getObjectId());
}

From source file:com.google.gitiles.RefServletTest.java

License:Open Source License

private String peeled(String refName) throws IOException {
    return ObjectId
            .toString(repo.getRepository().peel(repo.getRepository().getRef(refName)).getPeeledObjectId());
}

From source file:com.google.gitiles.RevisionServlet.java

License:Open Source License

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
    GitilesView view = ViewFilter.getView(req);
    Repository repo = ServletUtils.getRepository(req);

    RevWalk walk = new RevWalk(repo);
    try {/*from  w  w w  .  ja  va  2s .  c  om*/
        List<RevObject> objects = listObjects(walk, view.getRevision().getId());
        List<Map<String, ?>> soyObjects = Lists.newArrayListWithCapacity(objects.size());
        boolean hasBlob = false;

        // TODO(sop): Allow caching commits by SHA-1 when no S cookie is sent.
        for (RevObject obj : objects) {
            try {
                switch (obj.getType()) {
                case OBJ_COMMIT:
                    soyObjects.add(ImmutableMap.of("type", Constants.TYPE_COMMIT, "data",
                            new CommitSoyData(linkifier, req, repo, walk, view).toSoyData((RevCommit) obj,
                                    KeySet.DETAIL_DIFF_TREE)));
                    break;
                case OBJ_TREE:
                    soyObjects.add(ImmutableMap.of("type", Constants.TYPE_TREE, "data",
                            new TreeSoyData(walk, view).toSoyData(obj)));
                    break;
                case OBJ_BLOB:
                    soyObjects.add(ImmutableMap.of("type", Constants.TYPE_BLOB, "data",
                            new BlobSoyData(walk, view).toSoyData(obj)));
                    hasBlob = true;
                    break;
                case OBJ_TAG:
                    soyObjects.add(ImmutableMap.of("type", Constants.TYPE_TAG, "data",
                            new TagSoyData(linkifier, req).toSoyData((RevTag) obj)));
                    break;
                default:
                    log.warn("Bad object type for %s: %s", ObjectId.toString(obj.getId()), obj.getType());
                    res.setStatus(SC_NOT_FOUND);
                    return;
                }
            } catch (MissingObjectException e) {
                log.warn("Missing object " + ObjectId.toString(obj.getId()), e);
                res.setStatus(SC_NOT_FOUND);
                return;
            } catch (IncorrectObjectTypeException e) {
                log.warn("Incorrect object type for " + ObjectId.toString(obj.getId()), e);
                res.setStatus(SC_NOT_FOUND);
                return;
            }
        }

        render(req, res, "gitiles.revisionDetail", ImmutableMap.of("title", view.getRevision().getName(),
                "objects", soyObjects, "hasBlob", hasBlob));
    } finally {
        walk.release();
    }
}

From source file:com.google.gitiles.TagSoyData.java

License:Open Source License

public Map<String, Object> toSoyData(RevTag tag) {
    Map<String, Object> data = Maps.newHashMapWithExpectedSize(4);
    data.put("sha", ObjectId.toString(tag));
    if (tag.getTaggerIdent() != null) {
        data.put("tagger", CommitSoyData.toSoyData(tag.getTaggerIdent(), dateFormatter));
    }/*from   w  w  w.j a  v  a  2s.c  o  m*/
    data.put("object", ObjectId.toString(tag.getObject()));
    data.put("message", linkifier.linkify(req, tag.getFullMessage()));
    return data;
}

From source file:com.googlesource.gerrit.plugins.manifest.UpdateCommand.java

License:Apache License

private void updateManifest() throws Exception {
    manifestUpdater.read(srcRef, srcFile);

    for (ManifestOperation operation : operations) {
        operation.transform(manifestUpdater);
    }/* w  ww  . ja v a  2 s . co  m*/

    RevCommit commit = manifestUpdater.write(dstRef, dstFile, getCommitMessage());
    out.write(("Commit: " + ObjectId.toString(commit.getId()) + "\n").getBytes(ENC));
    out.flush();
}

From source file:com.googlesource.gerrit.plugins.refprotection.BackupRef.java

License:Open Source License

public void createBackup(RefUpdatedEvent event, ProjectResource project) {
    String refName = event.getRefName();

    try (Repository git = repoManager.openRepository(project.getNameKey())) {
        String backupRef = get(project, refName);

        // No-op if the backup branch name is same as the original
        if (backupRef.equals(refName)) {
            return;
        }/*from w  w w. jav  a 2s .  com*/

        try (RevWalk revWalk = new RevWalk(git)) {
            RefUpdateAttribute refUpdate = event.refUpdate.get();
            if (cfg.getFromGerritConfig(pluginName).getBoolean("createTag", false)) {
                TagBuilder tag = new TagBuilder();
                AccountAttribute submitter = event.submitter.get();
                tag.setTagger(new PersonIdent(submitter.name, submitter.email));
                tag.setObjectId(revWalk.parseCommit(ObjectId.fromString(refUpdate.oldRev)));
                String update = "Non-fast-forward update to";
                if (refUpdate.newRev.equals(ObjectId.zeroId().getName())) {
                    update = "Deleted";
                }
                String type = "branch";
                String fullMessage = "";
                if (refUpdate.refName.startsWith(R_TAGS)) {
                    type = "tag";
                    try {
                        RevTag origTag = revWalk.parseTag(ObjectId.fromString(refUpdate.oldRev));
                        SimpleDateFormat format = new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy ZZZZ");
                        PersonIdent taggerIdent = origTag.getTaggerIdent();
                        String tagger = String.format("Tagger: %s <%s>\nDate:   %s", taggerIdent.getName(),
                                taggerIdent.getEmailAddress(), format.format(taggerIdent.getWhen()));
                        fullMessage = "\n\nOriginal tag:\n" + tagger + "\n\n" + origTag.getFullMessage();
                    } catch (MissingObjectException e) {
                        log.warn("Original tag does not exist", e);
                    } catch (IncorrectObjectTypeException e) {
                        log.warn("Original tag was not a tag", e);
                    } catch (IOException e) {
                        log.warn("Unable to read original tag details", e);
                    }
                }
                tag.setMessage(update + " " + type + " " + refUpdate.refName + fullMessage);
                tag.setTag(backupRef);

                ObjectInserter inserter = git.newObjectInserter();
                ObjectId tagId = inserter.insert(tag);
                inserter.flush();
                RefUpdate tagRef = git.updateRef(tag.getTag());
                tagRef.setNewObjectId(tagId);
                tagRef.setRefLogMessage("tagged deleted branch/tag " + tag.getTag(), false);
                tagRef.setForceUpdate(false);
                Result result = tagRef.update();
                switch (result) {
                case NEW:
                case FORCED:
                    log.debug("Successfully created backup tag");
                    break;

                case LOCK_FAILURE:
                    log.error("Failed to lock repository while creating backup tag");
                    break;

                case REJECTED:
                    log.error("Tag already exists while creating backup tag");
                    break;

                default:
                    log.error("Unknown error while creating backup tag");
                }
            } else {
                BranchInput input = new BranchInput();
                input.ref = backupRef;
                // We need to parse the commit to ensure if it's a tag, we get the
                // commit the tag points to!
                input.revision = ObjectId
                        .toString(revWalk.parseCommit(ObjectId.fromString(refUpdate.oldRev)).getId());

                try {
                    createBranchFactory.create(backupRef).apply(project, input);
                } catch (BadRequestException | AuthException | ResourceConflictException | IOException e) {
                    log.error(e.getMessage(), e);
                }
            }
        }
    } catch (RepositoryNotFoundException e) {
        log.error("Repository does not exist", e);
    } catch (IOException e) {
        log.error("Could not open repository", e);
    }
}