List of usage examples for org.eclipse.jgit.lib TreeFormatter TreeFormatter
public TreeFormatter()
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; }