Class CommitBuilder


  • public class CommitBuilder
    extends java.lang.Object
    Mutable builder to construct a commit recording the state of a project. Applications should use this object when they need to manually construct a commit and want precise control over its fields. For a higher level interface see CommitCommand. To read a commit object, construct a RevWalk and obtain a RevCommit instance by calling RevWalk.parseCommit(AnyObjectId).
    • Field Detail

      • EMPTY_OBJECTID_LIST

        private static final ObjectId[] EMPTY_OBJECTID_LIST
      • htree

        private static final byte[] htree
      • hparent

        private static final byte[] hparent
      • hauthor

        private static final byte[] hauthor
      • hcommitter

        private static final byte[] hcommitter
      • hgpgsig

        private static final byte[] hgpgsig
      • hencoding

        private static final byte[] hencoding
      • parentIds

        private ObjectId[] parentIds
      • message

        private java.lang.String message
      • encoding

        private java.nio.charset.Charset encoding
    • Constructor Detail

      • CommitBuilder

        public CommitBuilder()
        Initialize an empty commit.
    • Method Detail

      • getTreeId

        public ObjectId getTreeId()
        Get id of the root tree listing this commit's snapshot.
        Returns:
        id of the root tree listing this commit's snapshot.
      • setTreeId

        public void setTreeId​(AnyObjectId id)
        Set the tree id for this commit object.
        Parameters:
        id - the tree identity.
      • getAuthor

        public PersonIdent getAuthor()
        Get the author of this commit (who wrote it).
        Returns:
        the author of this commit (who wrote it).
      • setAuthor

        public void setAuthor​(PersonIdent newAuthor)
        Set the author (name, email address, and date) of who wrote the commit.
        Parameters:
        newAuthor - the new author. Should not be null.
      • getCommitter

        public PersonIdent getCommitter()
        Get the committer and commit time for this object.
        Returns:
        the committer and commit time for this object.
      • setCommitter

        public void setCommitter​(PersonIdent newCommitter)
        Set the committer and commit time for this object.
        Parameters:
        newCommitter - the committer information. Should not be null.
      • setGpgSignature

        public void setGpgSignature​(GpgSignature newSignature)
        Set the GPG signature of this commit.

        Note, the signature set here will change the payload of the commit, i.e. the output of build() will include the signature. Thus, the typical flow will be:

        1. call build() without a signature set to obtain payload
        2. create GpgSignature from payload
        3. set GpgSignature

        Parameters:
        newSignature - the signature to set or null to unset
        Since:
        5.3
      • getGpgSignature

        public GpgSignature getGpgSignature()
        Get the GPG signature of this commit.
        Returns:
        the GPG signature of this commit, maybe null if the commit is not to be signed
        Since:
        5.3
      • getParentIds

        public ObjectId[] getParentIds()
        Get the ancestors of this commit.
        Returns:
        the ancestors of this commit. Never null.
      • setParentId

        public void setParentId​(AnyObjectId newParent)
        Set the parent of this commit.
        Parameters:
        newParent - the single parent for the commit.
      • setParentIds

        public void setParentIds​(AnyObjectId parent1,
                                 AnyObjectId parent2)
        Set the parents of this commit.
        Parameters:
        parent1 - the first parent of this commit. Typically this is the current value of the HEAD reference and is thus the current branch's position in history.
        parent2 - the second parent of this merge commit. Usually this is the branch being merged into the current branch.
      • setParentIds

        public void setParentIds​(ObjectId... newParents)
        Set the parents of this commit.
        Parameters:
        newParents - the entire list of parents for this commit.
      • setParentIds

        public void setParentIds​(java.util.List<? extends AnyObjectId> newParents)
        Set the parents of this commit.
        Parameters:
        newParents - the entire list of parents for this commit.
      • addParentId

        public void addParentId​(AnyObjectId additionalParent)
        Add a parent onto the end of the parent list.
        Parameters:
        additionalParent - new parent to add onto the end of the current parent list.
      • getMessage

        public java.lang.String getMessage()
        Get the complete commit message.
        Returns:
        the complete commit message.
      • setMessage

        public void setMessage​(java.lang.String newMessage)
        Set the commit message.
        Parameters:
        newMessage - the commit message. Should not be null.
      • setEncoding

        @Deprecated
        public void setEncoding​(java.lang.String encodingName)
        Deprecated.
        Set the encoding for the commit information.
        Parameters:
        encodingName - the encoding name. See Charset.forName(String).
      • setEncoding

        public void setEncoding​(java.nio.charset.Charset enc)
        Set the encoding for the commit information.
        Parameters:
        enc - the encoding to use.
      • getEncoding

        public java.nio.charset.Charset getEncoding()
        Get the encoding that should be used for the commit message text.
        Returns:
        the encoding that should be used for the commit message text.
      • build

        public byte[] build()
                     throws java.io.UnsupportedEncodingException
        Format this builder's state as a commit object.
        Returns:
        this object in the canonical commit format, suitable for storage in a repository.
        Throws:
        java.io.UnsupportedEncodingException - the encoding specified by getEncoding() is not supported by this Java runtime.
      • writeGpgSignatureString

        static void writeGpgSignatureString​(java.lang.String in,
                                            java.io.OutputStream out)
                                     throws java.io.IOException,
                                            java.lang.IllegalArgumentException
        Writes signature to output as per gpgsig header.

        CRLF and CR will be sanitized to LF and signature will have a hanging indent of one space starting with line two. A trailing line break is not written; the caller is supposed to terminate the GPG signature header by writing a single newline.

        Parameters:
        in - signature string with line breaks
        out - output stream
        Throws:
        java.io.IOException - thrown by the output stream
        java.lang.IllegalArgumentException - if the signature string contains non 7-bit ASCII chars
      • toByteArray

        public byte[] toByteArray()
                           throws java.io.UnsupportedEncodingException
        Format this builder's state as a commit object.
        Returns:
        this object in the canonical commit format, suitable for storage in a repository.
        Throws:
        java.io.UnsupportedEncodingException - the encoding specified by getEncoding() is not supported by this Java runtime.
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object