aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/reference.go14
-rw-r--r--core/reference_test.go7
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)