Example #1
0
        /// <summary>Parse the tag message and return the first "line" of it.</summary>
        /// <remarks>
        /// Parse the tag message and return the first "line" of it.
        /// <p>
        /// The first line is everything up to the first pair of LFs. This is the
        /// "oneline" format, suitable for output in a single line display.
        /// <p>
        /// This method parses and returns the message portion of the tag buffer,
        /// after taking the tag's character set into account and decoding the buffer
        /// using that character set. This method is a fairly expensive operation and
        /// produces a new string on each invocation.
        /// </remarks>
        /// <returns>
        /// decoded tag message as a string. Never null. The returned string
        /// does not contain any LFs, even if the first paragraph spanned
        /// multiple lines. Embedded LFs are converted to spaces.
        /// </returns>
        public string GetShortMessage()
        {
            byte[] raw  = buffer;
            int    msgB = RawParseUtils.TagMessage(raw, 0);

            if (msgB < 0)
            {
                return(string.Empty);
            }
            Encoding enc  = RawParseUtils.ParseEncoding(raw);
            int      msgE = RawParseUtils.EndOfParagraph(raw, msgB);
            string   str  = RawParseUtils.Decode(enc, raw, msgB, msgE);

            if (RevCommit.HasLF(raw, msgB, msgE))
            {
                str = str.Replace('\n', ' ');
            }
            return(str);
        }