Example usage for org.eclipse.jgit.lib TreeFormatter TreeFormatter

List of usage examples for org.eclipse.jgit.lib TreeFormatter TreeFormatter

Introduction

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

Prototype

public TreeFormatter() 

Source Link

Document

Create an empty formatter with a default buffer size.

Usage

From source file:com.gitblit.utils.JGitUtils.java

License:Apache License

/**
 * Create an orphaned branch in a repository.
 *
 * @param repository/*w ww.j  a  v a  2s .com*/
 * @param branchName
 * @param author
 *            if unspecified, Gitblit will be the author of this new branch
 * @return true if successful
 */
public static boolean createOrphanBranch(Repository repository, String branchName, PersonIdent author) {
    boolean success = false;
    String message = "Created branch " + branchName;
    if (author == null) {
        author = new PersonIdent("Gitblit", "gitblit@localhost");
    }
    try {
        ObjectInserter odi = repository.newObjectInserter();
        try {
            // Create a blob object to insert into a tree
            ObjectId blobId = odi.insert(Constants.OBJ_BLOB, message.getBytes(Constants.CHARACTER_ENCODING));

            // Create a tree object to reference from a commit
            TreeFormatter tree = new TreeFormatter();
            tree.append(".branch", FileMode.REGULAR_FILE, blobId);
            ObjectId treeId = odi.insert(tree);

            // Create a commit object
            CommitBuilder commit = new CommitBuilder();
            commit.setAuthor(author);
            commit.setCommitter(author);
            commit.setEncoding(Constants.CHARACTER_ENCODING);
            commit.setMessage(message);
            commit.setTreeId(treeId);

            // Insert the commit into the repository
            ObjectId commitId = odi.insert(commit);
            odi.flush();

            RevWalk revWalk = new RevWalk(repository);
            try {
                RevCommit revCommit = revWalk.parseCommit(commitId);
                if (!branchName.startsWith("refs/")) {
                    branchName = "refs/heads/" + branchName;
                }
                RefUpdate ru = repository.updateRef(branchName);
                ru.setNewObjectId(commitId);
                ru.setRefLogMessage("commit: " + revCommit.getShortMessage(), false);
                Result rc = ru.forceUpdate();
                switch (rc) {
                case NEW:
                case FORCED:
                case FAST_FORWARD:
                    success = true;
                    break;
                default:
                    success = false;
                }
            } finally {
                revWalk.close();
            }
        } finally {
            odi.close();
        }
    } catch (Throwable t) {
        error(t, repository, "Failed to create orphan branch {1} in repository {0}", branchName);
    }
    return success;
}

From source file:com.microsoft.gittf.core.tasks.CreateCommitTask.java

License:Open Source License

private ObjectId createTree(final ObjectInserter repositoryInserter,
        final Map<CommitTreePath, CommitTreeEntry> tree) throws IOException {
    if (tree.isEmpty()) {
        return createEmptyTree(repositoryInserter);
    }/*from   www  . j a  va2s. c o  m*/

    TreeFormatter treeFormatter = new TreeFormatter();

    for (Entry<CommitTreePath, CommitTreeEntry> entry : tree.entrySet()) {
        String name = entry.getKey().getName();
        FileMode mode = entry.getValue().getFileMode();
        ObjectId objectId = entry.getValue().getObjectID();

        treeFormatter.append(name, mode, objectId);
    }

    return treeFormatter.insertTo(repositoryInserter);
}

From source file:com.microsoft.gittf.core.tasks.CreateCommitTask.java

License:Open Source License

protected ObjectId createEmptyTree(ObjectInserter repositoryInserter) throws IOException {
    TreeFormatter treeFormatter = new TreeFormatter();
    return treeFormatter.insertTo(repositoryInserter);
}

From source file:com.palantir.gerrit.gerritci.servlets.JobsServlet.java

License:Apache License

public Map<String, Map<String, String>> parseJobRequest(HttpServletRequest req, String projectName)
        throws JsonSyntaxException, IOException, NoSuchProjectException, NoFilepatternException,
        GitAPIException {//  ww  w.j ava 2 s. c  o m
    Map<String, Map<String, String>> jobToParams = new HashMap<String, Map<String, String>>();

    File projectConfigDirectory = new File(sitePaths.etc_dir, projectName);
    if (!projectConfigDirectory.exists())
        projectConfigDirectory.mkdir();
    File projectConfigFile = new File(projectConfigDirectory, "created_jobs");
    if (!projectConfigFile.exists())
        projectConfigFile.createNewFile();

    JsonObject requestBody = (JsonObject) (new JsonParser()).parse(CharStreams.toString(req.getReader()));

    // get number of jobs
    // If all jobs are deleted, we must purge jobs
    int numOfJobs = requestBody.get("items").getAsJsonArray().size();

    ArrayList<String> receivedJobNames = new ArrayList<String>();

    if (numOfJobs < 1) {
        ArrayList<String> deletedJobs = updateProjectJobFiles(projectConfigFile, projectConfigDirectory,
                receivedJobNames);
        for (String deleted : deletedJobs) {
            jobToParams.put(deleted, null);
        }
        return jobToParams;
    }

    CurrentUser currentUser = this.projectControlFactory.controlFor(new NameKey(projectName)).getCurrentUser();
    String gitPath = getGitPath(sitePaths);
    File gitDir = new File(gitPath, projectName + ".git");
    Repository repository = new FileRepositoryBuilder().setGitDir(gitDir).build();
    ObjectInserter objectInserter = repository.newObjectInserter();
    HashMap<String, ObjectId> jobsToIds = new HashMap<String, ObjectId>();
    // assign file name and append to tree
    TreeFormatter treeFormatter = new TreeFormatter();
    // for each received job, create or rewrite its config file and add to
    // jobToParams
    for (int i = 0; i < numOfJobs; i++) {
        JsonObject jobObject = requestBody.get("items").getAsJsonArray().get(i).getAsJsonObject();
        String jobName = jobObject.get("jobName").toString();
        //Remove leading and trailing quotations ex. "jobname" becomes jobname
        jobName = jobName.substring(1, jobName.length() - 1);
        receivedJobNames.add(jobName);
        String type = jobObject.get("jobType").toString();
        type = type.substring(1, type.length() - 1);
        int numOfParams = jobObject.get("items").getAsJsonArray().size();
        JsonArray paramsArray = jobObject.get("items").getAsJsonArray();
        FileBasedConfig jobConfig = makeJobConfigFile(projectConfigDirectory, jobName, currentUser);
        Map<String, String> parsedParams = new HashMap<String, String>();
        parsedParams.put("projectName", projectName);
        for (int j = 0; j < numOfParams; j++) {
            String field = paramsArray.get(j).getAsJsonObject().get("field").toString();
            field = field.substring(1, field.length() - 1);
            String value = paramsArray.get(j).getAsJsonObject().get("value").toString();
            value = value.substring(1, value.length() - 1);
            parsedParams.put(field, value);
            // update jobconfig files
            jobConfig.setString("jobType", type, field, value);
        }
        jobConfig.save();
        jobsToIds.put(jobName, createGitFileId(repository, jobConfig, objectInserter, jobName));
        jobToParams.put(jobName, parsedParams);
    }
    for (String jobName : jobsToIds.keySet()) {
        treeFormatter.append(jobName + ".config", FileMode.REGULAR_FILE, jobsToIds.get(jobName));
    }
    ObjectId treeId = objectInserter.insert(treeFormatter);
    objectInserter.flush();
    updateProjectRef(treeId, objectInserter, repository, currentUser);
    // update or create project files for all jobs
    ArrayList<String> deletedJobs = updateProjectJobFiles(projectConfigFile, projectConfigDirectory,
            receivedJobNames);
    for (String deleted : deletedJobs) {
        jobToParams.put(deleted, null);
    }
    // returns map of job name to params
    return jobToParams;
}

From source file:net.polydawn.mdm.Plumbing.java

License:Open Source License

/**
 * Create a new "empty" commit in a new branch. If the branch name already exists,
 * a forced update will be performed.// w  w  w.j ava 2  s .com
 *
 * @return result of the branch update.
 * @throws IOException
 */
public static RefUpdate.Result createOrphanBranch(Repository repo, String branchName) throws IOException {
    ObjectInserter odi = repo.newObjectInserter();
    try {
        // Create an (empty) tree object to reference from a commit.
        TreeFormatter tree = new TreeFormatter();
        ObjectId treeId = odi.insert(tree);

        // Create a commit object... most data is nulls or silly placeholders; I expect you'll amend this commit.
        CommitBuilder commit = new CommitBuilder();
        PersonIdent author = new PersonIdent("mdm", "");
        commit.setAuthor(author);
        commit.setCommitter(author);
        commit.setMessage("");
        commit.setTreeId(treeId);

        // Insert the commit into the repository.
        ObjectId commitId = odi.insert(commit);
        odi.flush();

        // (Re)extract the commit we just flushed, and update a new branch ref to point to it.
        RevWalk revWalk = new RevWalk(repo);
        try {
            RevCommit revCommit = revWalk.parseCommit(commitId);
            if (!branchName.startsWith("refs/"))
                branchName = "refs/heads/" + branchName;
            RefUpdate ru = repo.updateRef(branchName);
            ru.setNewObjectId(commitId);
            ru.setRefLogMessage("commit: " + revCommit.getShortMessage(), false);
            return ru.forceUpdate();
        } finally {
            revWalk.release();
        }
    } finally {
        odi.release();
    }
}

From source file:org.kuali.student.git.model.tree.GitTreeNodeData.java

License:Educational Community License

public ObjectId buildTree(ObjectInserter inserter) throws IOException {

    log.debug("buildTree: starting");

    if (!isDirty() && originalTreeObjectId != null) {

        return originalTreeObjectId;
    }//from  w ww  .j a v  a2  s . c  o m

    // else we need to recompute the tree at this level.

    TreeFormatter tree = new TreeFormatter();

    List<JGitTreeData> treeDataList = new ArrayList<JGitTreeData>();

    for (Map.Entry<String, ObjectId> entry : this.blobReferences.entrySet()) {
        String name = entry.getKey();
        ObjectId sha1 = entry.getValue();

        treeDataList.add(new JGitTreeData(name, FileMode.REGULAR_FILE, sha1));

        log.debug(String.format("added entry (name=%s, sha1=%s", name, sha1));

    }

    for (Map.Entry<String, GitTreeNodeData> entry : this.subTreeReferences.entrySet()) {

        String name = entry.getKey();
        GitTreeNodeData nodeData = entry.getValue();

        ObjectId subTreeId = nodeData.buildTree(inserter);

        treeDataList.add(new JGitTreeData(name, FileMode.TREE, subTreeId));

        log.debug(String.format("added tree (name=%s, sha1=%s", name, subTreeId));
    }

    /*
     * Compare the string sort vs byte sort
     */

    Collections.sort(treeDataList, JGitTreeData.GIT_SORT_ORDERING);

    for (JGitTreeData treeData : treeDataList) {

        tree.append(treeData.getName(), treeData.getFileMode(), treeData.getObjectId());
    }

    log.debug("buildTree: finished");

    return inserter.insert(tree);
}

From source file:org.kuali.student.git.model.tree.utils.JGitTreeUtils.java

License:Educational Community License

public static ObjectId createTree(List<JGitTreeData> data, ObjectInserter inserter) throws IOException {

    TreeFormatter tf = new TreeFormatter();

    Collections.sort(data, JGitTreeData.GIT_SORT_ORDERING);

    for (JGitTreeData treeData : data) {

        tf.append(treeData.getName(), treeData.getFileMode(), treeData.getObjectId());
    }/*from  w w  w  . j a  v  a2  s .  c  o  m*/

    ObjectId treeId = inserter.insert(tf);

    return treeId;

}

From source file:org.kuali.student.git.model.utils.GitTestUtils.java

License:Educational Community License

public static void createBranch(Repository repository, String branchName, String fileName, String fileContent)
        throws IOException, BranchRefExistsException {

    ObjectInserter inserter = repository.newObjectInserter();

    // store the blob
    ObjectId blobId = inserter.insert(Constants.OBJ_BLOB, fileContent.getBytes());

    // create the tree
    TreeFormatter tf = new TreeFormatter();

    tf.append(fileName, FileMode.REGULAR_FILE, blobId);

    ObjectId treeId = inserter.insert(tf);

    // make the commit
    CommitBuilder cb = new CommitBuilder();

    PersonIdent pi;//  ww w  . j a v a2 s  .com
    cb.setAuthor(pi = new PersonIdent("admin", "admin@kuali.org"));

    cb.setCommitter(pi);

    cb.setMessage("committed " + fileName);

    cb.setTreeId(treeId);

    cb.setEncoding("UTF-8");

    // save the branch

    ObjectId commit = inserter.insert(cb);

    GitRefUtils.createBranch(repository, branchName, commit);

    inserter.flush();
    inserter.release();
}

From source file:org.moxie.utils.JGitUtils.java

License:Apache License

/**
 * Create an orphaned branch in a repository.
 * /*from  w  ww .j a  va 2s . c o  m*/
 * @param repository
 * @param branchName
 * @param author
 *            if unspecified, Moxie will be the author of this new branch
 * @return true if successful
 */
public static boolean createOrphanBranch(Repository repository, String branchName, PersonIdent author) {
    boolean success = false;
    String message = "Created branch " + branchName;
    if (author == null) {
        author = new PersonIdent("Moxie", "moxie@localhost");
    }
    try {
        ObjectInserter odi = repository.newObjectInserter();
        try {
            // Create a blob object to insert into a tree
            ObjectId blobId = odi.insert(Constants.OBJ_BLOB, message.getBytes(Constants.CHARACTER_ENCODING));

            // Create a tree object to reference from a commit
            TreeFormatter tree = new TreeFormatter();
            tree.append("NEWBRANCH", FileMode.REGULAR_FILE, blobId);
            ObjectId treeId = odi.insert(tree);

            // Create a commit object
            CommitBuilder commit = new CommitBuilder();
            commit.setAuthor(author);
            commit.setCommitter(author);
            commit.setEncoding(Constants.CHARACTER_ENCODING);
            commit.setMessage(message);
            commit.setTreeId(treeId);

            // Insert the commit into the repository
            ObjectId commitId = odi.insert(commit);
            odi.flush();

            RevWalk revWalk = new RevWalk(repository);
            try {
                RevCommit revCommit = revWalk.parseCommit(commitId);
                if (!branchName.startsWith("refs/")) {
                    branchName = "refs/heads/" + branchName;
                }
                RefUpdate ru = repository.updateRef(branchName);
                ru.setNewObjectId(commitId);
                ru.setRefLogMessage("commit: " + revCommit.getShortMessage(), false);
                Result rc = ru.forceUpdate();
                switch (rc) {
                case NEW:
                case FORCED:
                case FAST_FORWARD:
                    success = true;
                    break;
                default:
                    success = false;
                }
            } finally {
                revWalk.release();
            }
        } finally {
            odi.release();
        }
    } catch (Throwable t) {
        t.printStackTrace();
    }
    return success;
}

From source file:playRepository.BareCommit.java

License:Apache License

private TreeFormatter newTreeWith(String fileName, ObjectId fileObjectId) {
    TreeFormatter formatter = new TreeFormatter();
    formatter.append(fileName, FileMode.REGULAR_FILE, fileObjectId);
    return formatter;
}