diff options
author | merlin <clamores.pro@gmail.com> | 2021-11-07 20:39:51 +0300 |
---|---|---|
committer | merlin <clamores.pro@gmail.com> | 2021-11-08 00:17:11 +0300 |
commit | b939cf8471d8c1aac1960a833c7275e5b79ed013 (patch) | |
tree | 4aa92d59c4665555343f272c914238070bbaeb6b /config/branch.go | |
parent | 3211a7a12a0ec2922d257fb14f09c6ecfb0b7c77 (diff) | |
download | go-git-b939cf8471d8c1aac1960a833c7275e5b79ed013.tar.gz |
config: add support for branch description
Diffstat (limited to 'config/branch.go')
-rw-r--r-- | config/branch.go | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/config/branch.go b/config/branch.go index fe86cf5..a8fe0b5 100644 --- a/config/branch.go +++ b/config/branch.go @@ -2,6 +2,7 @@ package config import ( "errors" + "strings" "github.com/go-git/go-git/v5/plumbing" format "github.com/go-git/go-git/v5/plumbing/format/config" @@ -26,6 +27,12 @@ type Branch struct { // "true" and "interactive". "false" is undocumented and // typically represented by the non-existence of this field Rebase string + // Description explains what the branch is for. + // Multi-line explanations may be used. + // + // Original git command to edit: + // git branch --edit-description + Description string raw *format.Subsection } @@ -75,9 +82,20 @@ func (b *Branch) marshal() *format.Subsection { b.raw.SetOption(rebaseKey, b.Rebase) } + if b.Description == "" { + b.raw.RemoveOption(descriptionKey) + } else { + desc := quoteDescription(b.Description) + b.raw.SetOption(descriptionKey, desc) + } + return b.raw } +func quoteDescription(desc string) string { + return strings.ReplaceAll(desc, "\n", `\n`) +} + func (b *Branch) unmarshal(s *format.Subsection) error { b.raw = s @@ -85,6 +103,11 @@ func (b *Branch) unmarshal(s *format.Subsection) error { b.Remote = b.raw.Options.Get(remoteSection) b.Merge = plumbing.ReferenceName(b.raw.Options.Get(mergeKey)) b.Rebase = b.raw.Options.Get(rebaseKey) + b.Description = unquoteDescription(b.raw.Options.Get(descriptionKey)) return b.Validate() } + +func unquoteDescription(desc string) string { + return strings.ReplaceAll(desc, `\n`, "\n") +} |