List of usage examples for org.eclipse.jgit.lib RefUpdate delete
public Result delete(RevWalk walk) throws IOException
From source file:org.kuali.student.git.importer.ConvertOldBranchesToTagsMain.java
License:Educational Community License
/** * @param args//from w w w. j a v a2s . co m */ public static void main(String[] args) { if (args.length != 3 && args.length != 4) { System.err.println("USAGE: <git repository> <mode> <bare> [<ref prefix>]"); System.err.println("\t<mode> : tag or delete"); System.err.println("\t<bare> : 0 (false) or 1 (true)"); System.err.println("\t<ref prefix> : refs/heads (default) or say refs/remotes/origin (test clone)"); System.exit(-1); } boolean bare = false; if (args[2].trim().equals("1")) { bare = true; } boolean tagMode = false; boolean deleteMode = false; if (args[1].equals("tag")) tagMode = true; else if (args[1].equals("delete")) deleteMode = true; String refPrefix = Constants.R_HEADS; if (args.length == 4) refPrefix = args[3].trim(); try { Repository repo = GitRepositoryUtils.buildFileRepository(new File(args[0]).getAbsoluteFile(), false, bare); Collection<Ref> repositoryHeads = repo.getRefDatabase().getRefs(refPrefix).values(); RevWalk rw = new RevWalk(repo); Git git = new Git(repo); ObjectInserter objectInserter = repo.newObjectInserter(); List<String> branchesToDelete = new ArrayList<>(); for (Ref ref : repositoryHeads) { if (!ref.getName().contains("@")) continue; // we only want those with @ in the name if (deleteMode) branchesToDelete.add(ref.getName()); if (!tagMode) continue; // else tag mode String simpleTagName = ref.getName().replaceFirst(refPrefix, ""); RevCommit commit = rw.parseCommit(ref.getObjectId()); ObjectId tagId = null; // tag this commit tagId = GitRefUtils.insertTag(simpleTagName, commit, objectInserter); if (tagId != null) { // update the tag reference // copied from JGit's TagCommand Result updateResult = GitRefUtils.createTagReference(repo, simpleTagName, tagId); if (updateResult != Result.NEW) { log.warn("problem creating tag reference for " + simpleTagName + " result = " + updateResult); } } } if (deleteMode) { for (String branch : branchesToDelete) { RefUpdate update = repo.updateRef(branch); update.setForceUpdate(true); Result result = update.delete(rw); if (result != Result.FORCED) { log.warn("failed to delete the branch ref = " + branch); } } } rw.release(); objectInserter.flush(); objectInserter.release(); } catch (Exception e) { log.error("unexpected Exception ", e); } }