summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/git/ref.go57
1 files changed, 37 insertions, 20 deletions
diff --git a/modules/git/ref.go b/modules/git/ref.go
index cd8d268184..47cc04b7fb 100644
--- a/modules/git/ref.go
+++ b/modules/git/ref.go
@@ -55,40 +55,57 @@ func (ref *Reference) Commit() (*Commit, error) {
// ShortName returns the short name of the reference
func (ref *Reference) ShortName() string {
- if ref == nil {
- return ""
- }
- if strings.HasPrefix(ref.Name, BranchPrefix) {
- return strings.TrimPrefix(ref.Name, BranchPrefix)
+ return RefName(ref.Name).ShortName()
+}
+
+// RefGroup returns the group type of the reference
+func (ref *Reference) RefGroup() string {
+ return RefName(ref.Name).RefGroup()
+}
+
+// RefName represents a git reference name
+type RefName string
+
+func (ref RefName) IsBranch() bool {
+ return strings.HasPrefix(string(ref), BranchPrefix)
+}
+
+func (ref RefName) IsTag() bool {
+ return strings.HasPrefix(string(ref), TagPrefix)
+}
+
+// ShortName returns the short name of the reference name
+func (ref RefName) ShortName() string {
+ refName := string(ref)
+ if strings.HasPrefix(refName, BranchPrefix) {
+ return strings.TrimPrefix(refName, BranchPrefix)
}
- if strings.HasPrefix(ref.Name, TagPrefix) {
- return strings.TrimPrefix(ref.Name, TagPrefix)
+ if strings.HasPrefix(refName, TagPrefix) {
+ return strings.TrimPrefix(refName, TagPrefix)
}
- if strings.HasPrefix(ref.Name, RemotePrefix) {
- return strings.TrimPrefix(ref.Name, RemotePrefix)
+ if strings.HasPrefix(refName, RemotePrefix) {
+ return strings.TrimPrefix(refName, RemotePrefix)
}
- if strings.HasPrefix(ref.Name, PullPrefix) && strings.IndexByte(ref.Name[pullLen:], '/') > -1 {
- return ref.Name[pullLen : strings.IndexByte(ref.Name[pullLen:], '/')+pullLen]
+ if strings.HasPrefix(refName, PullPrefix) && strings.IndexByte(refName[pullLen:], '/') > -1 {
+ return refName[pullLen : strings.IndexByte(refName[pullLen:], '/')+pullLen]
}
- return ref.Name
+ return refName
}
// RefGroup returns the group type of the reference
-func (ref *Reference) RefGroup() string {
- if ref == nil {
- return ""
- }
- if strings.HasPrefix(ref.Name, BranchPrefix) {
+func (ref RefName) RefGroup() string {
+ refName := string(ref)
+ if strings.HasPrefix(refName, BranchPrefix) {
return "heads"
}
- if strings.HasPrefix(ref.Name, TagPrefix) {
+ if strings.HasPrefix(refName, TagPrefix) {
return "tags"
}
- if strings.HasPrefix(ref.Name, RemotePrefix) {
+ if strings.HasPrefix(refName, RemotePrefix) {
return "remotes"
}
- if strings.HasPrefix(ref.Name, PullPrefix) && strings.IndexByte(ref.Name[pullLen:], '/') > -1 {
+ if strings.HasPrefix(refName, PullPrefix) && strings.IndexByte(refName[pullLen:], '/') > -1 {
return "pull"
}
return ""