diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/reference.go | 14 | ||||
-rw-r--r-- | core/reference_test.go | 7 |
2 files changed, 21 insertions, 0 deletions
diff --git a/core/reference.go b/core/reference.go index 4be4971..7d3f378 100644 --- a/core/reference.go +++ b/core/reference.go @@ -34,6 +34,20 @@ const ( // ReferenceName reference name's type ReferenceName string +// AsRemote returns a new remote reference name using current one as base +func (r ReferenceName) AsRemote(remote string) ReferenceName { + return ReferenceName(refRemotePrefix + remote + "/" + r.alias()) +} + +func (r ReferenceName) String() string { + return string(r) +} + +func (r ReferenceName) alias() string { + parts := strings.Split(string(r), "/") + return parts[len(parts)-1] +} + const ( HEAD ReferenceName = "HEAD" ) diff --git a/core/reference_test.go b/core/reference_test.go index 05d20b4..5d88f0e 100644 --- a/core/reference_test.go +++ b/core/reference_test.go @@ -10,6 +10,13 @@ const ( ExampleReferenceName ReferenceName = "refs/heads/v4" ) +func (s *ReferenceSuite) TestReferenceNameAsRemote(c *C) { + c.Assert( + ExampleReferenceName.AsRemote("foo").String(), + Equals, "refs/remotes/foo/v4", + ) +} + func (s *ReferenceSuite) TestNewReferenceFromStrings(c *C) { r := NewReferenceFromStrings("refs/heads/v4", "6ecf0ef2c2dffb796033e5a02219af86ec6584e5") c.Assert(r.Type(), Equals, HashReference) |