Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit f22a5cb

Browse files
authored
Merge pull request #998 from mcuadros/ref-helpers
plumbing: ReferenceName constructors
2 parents 50bbba3 + dee8f51 commit f22a5cb

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

Diff for: plumbing/reference.go

+30
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,36 @@ func (r ReferenceType) String() string {
5555
// ReferenceName reference name's
5656
type ReferenceName string
5757

58+
// NewBranchReferenceName returns a reference name describing a branch based on
59+
// his short name.
60+
func NewBranchReferenceName(name string) ReferenceName {
61+
return ReferenceName(refHeadPrefix + name)
62+
}
63+
64+
// NewNoteReferenceName returns a reference name describing a note based on his
65+
// short name.
66+
func NewNoteReferenceName(name string) ReferenceName {
67+
return ReferenceName(refNotePrefix + name)
68+
}
69+
70+
// NewRemoteReferenceName returns a reference name describing a remote branch
71+
// based on his short name and the remote name.
72+
func NewRemoteReferenceName(remote, name string) ReferenceName {
73+
return ReferenceName(refRemotePrefix + fmt.Sprintf("%s/%s", remote, name))
74+
}
75+
76+
// NewRemoteHEADReferenceName returns a reference name describing a the HEAD
77+
// branch of a remote.
78+
func NewRemoteHEADReferenceName(remote string) ReferenceName {
79+
return ReferenceName(refRemotePrefix + fmt.Sprintf("%s/%s", remote, HEAD))
80+
}
81+
82+
// NewTagReferenceName returns a reference name describing a tag based on short
83+
// his name.
84+
func NewTagReferenceName(name string) ReferenceName {
85+
return ReferenceName(refTagPrefix + name)
86+
}
87+
5888
// IsBranch check if a reference is a branch
5989
func (r ReferenceName) IsBranch() bool {
6090
return strings.HasPrefix(string(r), refHeadPrefix)

Diff for: plumbing/reference_test.go

+25
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,31 @@ func (s *ReferenceSuite) TestNewHashReference(c *C) {
5454
c.Assert(r.Hash(), Equals, NewHash("6ecf0ef2c2dffb796033e5a02219af86ec6584e5"))
5555
}
5656

57+
func (s *ReferenceSuite) TestNewBranchReferenceName(c *C) {
58+
r := NewBranchReferenceName("foo")
59+
c.Assert(r.String(), Equals, "refs/heads/foo")
60+
}
61+
62+
func (s *ReferenceSuite) TestNewNoteReferenceName(c *C) {
63+
r := NewNoteReferenceName("foo")
64+
c.Assert(r.String(), Equals, "refs/notes/foo")
65+
}
66+
67+
func (s *ReferenceSuite) TestNewRemoteReferenceName(c *C) {
68+
r := NewRemoteReferenceName("bar", "foo")
69+
c.Assert(r.String(), Equals, "refs/remotes/bar/foo")
70+
}
71+
72+
func (s *ReferenceSuite) TestNewRemoteHEADReferenceName(c *C) {
73+
r := NewRemoteHEADReferenceName("foo")
74+
c.Assert(r.String(), Equals, "refs/remotes/foo/HEAD")
75+
}
76+
77+
func (s *ReferenceSuite) TestNewTagReferenceName(c *C) {
78+
r := NewTagReferenceName("foo")
79+
c.Assert(r.String(), Equals, "refs/tags/foo")
80+
}
81+
5782
func (s *ReferenceSuite) TestIsBranch(c *C) {
5883
r := ExampleReferenceName
5984
c.Assert(r.IsBranch(), Equals, true)

0 commit comments

Comments
 (0)