org.eclipse.jgit.util
Class ChangeIdUtil

java.lang.Object
  extended by org.eclipse.jgit.util.ChangeIdUtil

public class ChangeIdUtil
extends Object

Utilities for creating and working with Change-Id's, like the one used by Gerrit Code Review.

A Change-Id is a SHA-1 computed from the content of a commit, in a similar fashion to how the commit id is computed. Unlike the commit id a Change-Id is retained in the commit and subsequent revised commits in the footer of the commit text.


Constructor Summary
ChangeIdUtil()
           
 
Method Summary
static ObjectId computeChangeId(ObjectId treeId, ObjectId firstParentId, PersonIdent author, PersonIdent committer, String message)
          Compute a Change-Id.
static int indexOfChangeId(String message, String delimiter)
          Return the index in the String message where the Change-Id entry in the footer begins.
static int indexOfFirstFooterLine(String[] lines)
          Find the index of the first line of the footer paragraph in an array of the lines, or lines.length if no footer is available
static String insertId(String message, ObjectId changeId)
          Find the right place to insert a Change-Id and return it.
static String insertId(String message, ObjectId changeId, boolean replaceExisting)
          Find the right place to insert a Change-Id and return it.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ChangeIdUtil

public ChangeIdUtil()
Method Detail

computeChangeId

public static ObjectId computeChangeId(ObjectId treeId,
                                       ObjectId firstParentId,
                                       PersonIdent author,
                                       PersonIdent committer,
                                       String message)
                                throws IOException
Compute a Change-Id.

Parameters:
treeId - The id of the tree that would be committed
firstParentId - parent id of previous commit or null
author - the PersonIdent for the presumed author and time
committer - the PersonIdent for the presumed committer and time
message - The commit message
Returns:
the change id SHA1 string (without the 'I') or null if the message is not complete enough
Throws:
IOException

insertId

public static String insertId(String message,
                              ObjectId changeId)
Find the right place to insert a Change-Id and return it.

The Change-Id is inserted before the first footer line but after a Bug line.

Parameters:
message -
changeId -
Returns:
a commit message with an inserted Change-Id line

insertId

public static String insertId(String message,
                              ObjectId changeId,
                              boolean replaceExisting)
Find the right place to insert a Change-Id and return it.

If no Change-Id is found the Change-Id is inserted before the first footer line but after a Bug line. If Change-Id is found and replaceExisting is set to false, the message is unchanged. If Change-Id is found and replaceExisting is set to true, the Change-Id is replaced with changeId.

Parameters:
message -
changeId -
replaceExisting -
Returns:
a commit message with an inserted Change-Id line

indexOfChangeId

public static int indexOfChangeId(String message,
                                  String delimiter)
Return the index in the String message where the Change-Id entry in the footer begins. If there are more than one entries matching the pattern, return the index of the last one in the last section. Because of Bug: 400818 we release the constraint here that a footer must contain only lines matching footerPattern.

Parameters:
message -
delimiter - the line delimiter, like "\n" or "\r\n", needed to find the footer
Returns:
the index of the ChangeId footer in the message, or -1 if no ChangeId footer available

indexOfFirstFooterLine

public static int indexOfFirstFooterLine(String[] lines)
Find the index of the first line of the footer paragraph in an array of the lines, or lines.length if no footer is available

Parameters:
lines - the commit message split into lines and the line delimiters stripped off
Returns:
the index of the first line of the footer paragraph, or lines.length if no footer is available


Copyright © 2013. All Rights Reserved.