Example usage for org.eclipse.jgit.lib ObjectReader getObjectSize

List of usage examples for org.eclipse.jgit.lib ObjectReader getObjectSize

Introduction

In this page you can find the example usage for org.eclipse.jgit.lib ObjectReader getObjectSize.

Prototype

public <T extends ObjectId> AsyncObjectSizeQueue<T> getObjectSize(Iterable<T> objectIds,
        final boolean reportMissing) 

Source Link

Document

Asynchronous object size lookup.

Usage

From source file:com.gitblit.servlet.RawServlet.java

License:Apache License

protected boolean streamFromRepo(HttpServletRequest request, HttpServletResponse response,
        Repository repository, RevCommit commit, String requestedPath) throws IOException {

    boolean served = false;
    RevWalk rw = new RevWalk(repository);
    TreeWalk tw = new TreeWalk(repository);
    try {/*from   w w w .  j  a  va  2  s  .c  o  m*/
        tw.reset();
        tw.addTree(commit.getTree());
        PathFilter f = PathFilter.create(requestedPath);
        tw.setFilter(f);
        tw.setRecursive(true);
        MutableObjectId id = new MutableObjectId();
        ObjectReader reader = tw.getObjectReader();
        while (tw.next()) {
            FileMode mode = tw.getFileMode(0);
            if (mode == FileMode.GITLINK || mode == FileMode.TREE) {
                continue;
            }
            tw.getObjectId(id, 0);

            String filename = StringUtils.getLastPathElement(requestedPath);
            try {
                String userAgent = request.getHeader("User-Agent");
                if (userAgent != null && userAgent.indexOf("MSIE 5.5") > -1) {
                    response.setHeader("Content-Disposition",
                            "filename=\"" + URLEncoder.encode(filename, Constants.ENCODING) + "\"");
                } else if (userAgent != null && userAgent.indexOf("MSIE") > -1) {
                    response.setHeader("Content-Disposition",
                            "attachment; filename=\"" + URLEncoder.encode(filename, Constants.ENCODING) + "\"");
                } else {
                    response.setHeader("Content-Disposition", "attachment; filename=\""
                            + new String(filename.getBytes(Constants.ENCODING), "latin1") + "\"");
                }
            } catch (UnsupportedEncodingException e) {
                response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
            }

            long len = reader.getObjectSize(id, org.eclipse.jgit.lib.Constants.OBJ_BLOB);
            setContentType(response, "application/octet-stream");
            response.setIntHeader("Content-Length", (int) len);
            ObjectLoader ldr = repository.open(id);
            ldr.copyTo(response.getOutputStream());
            served = true;
        }
    } finally {
        tw.close();
        rw.dispose();
    }

    response.flushBuffer();
    return served;
}

From source file:org.kuali.student.git.importer.ReportBlobSizePerBranch.java

License:Educational Community License

/**
 * @param args//w w  w .ja  v  a  2 s.c  o  m
 */
public static void main(String[] args) {

    if (args.length != 3 && args.length != 4) {
        System.err.println(
                "USAGE: <git repository> <bare: 0 or 1> <output file name>[<refs prefix: default to refs/heads >]");
        System.exit(-1);
    }

    String gitRepositoryPath = args[0];

    String bareString = args[1].trim();

    boolean bare = false;

    if (bareString.equals("1"))
        bare = true;

    String refPrefix = Constants.R_HEADS;

    String outputFileName = args[2].trim();

    if (args.length == 4)
        refPrefix = args[3].trim();

    try {

        PrintWriter outputWriter = new PrintWriter(outputFileName);
        Repository repo = GitRepositoryUtils.buildFileRepository(new File(gitRepositoryPath).getAbsoluteFile(),
                false, bare);

        Map<String, Ref> branchHeads = repo.getRefDatabase().getRefs(refPrefix);

        ObjectReader objectReader = repo.newObjectReader();

        RevWalk rw = new RevWalk(objectReader);

        TreeWalk tw = new TreeWalk(objectReader);

        tw.setRecursive(true);

        String header = String.format(
                "Branch Name :: Total Commits in Graph :: Total Blob Size in Bytes :: Total Blob Size in Mega Bytes :: Total Blob Size in Giga Bytes");

        System.out.println(header);

        outputWriter.println(header);

        for (Map.Entry<String, Ref> entry : branchHeads.entrySet()) {

            String branchName = entry.getKey();
            Ref branchRef = entry.getValue();

            Set<ObjectId> blobIds = new HashSet<>();

            RevCommit commit = rw.parseCommit(branchRef.getObjectId());

            RevWalk commitHistoryWalk = new RevWalk(objectReader);

            commitHistoryWalk.markStart(commit);

            processCommit(commit, tw, blobIds);

            int totalReachableCommits = 0;

            while ((commit = commitHistoryWalk.next()) != null) {

                processCommit(commit, tw, blobIds);

                totalReachableCommits++;
            }

            long totalSize = 0L;

            AsyncObjectSizeQueue<ObjectId> sq = objectReader.getObjectSize(blobIds, true);

            while (sq.next())
                totalSize += sq.getSize();

            BigDecimal totalCounter = new BigDecimal(totalSize);

            String output = String.format("%s::%d::%s::%s::%s", branchName, totalReachableCommits,
                    totalCounter.toString(), getMB(totalCounter).toString(), getGB(totalCounter).toString());

            System.out.println(output);
            outputWriter.println(output);

            commitHistoryWalk.release();

        }

        tw.release();
        rw.release();
        objectReader.release();

        outputWriter.close();

    } catch (Exception e) {

        log.error("unexpected exception", e);

    }

}

From source file:svnserver.repository.git.filter.GitFilterLink.java

License:GNU General Public License

@Override
public long getSize(@NotNull GitObject<? extends ObjectId> objectId) throws IOException, SVNException {
    final ObjectReader reader = objectId.getRepo().newObjectReader();
    return reader.getObjectSize(objectId.getObject(), Constants.OBJ_BLOB) + LINK_PREFIX.length;
}

From source file:svnserver.repository.git.filter.GitFilterRaw.java

License:GNU General Public License

@Override
public long getSize(@NotNull GitObject<? extends ObjectId> objectId) throws IOException, SVNException {
    final ObjectReader reader = objectId.getRepo().newObjectReader();
    return reader.getObjectSize(objectId.getObject(), Constants.OBJ_BLOB);
}