summaryrefslogtreecommitdiff
path: root/reference.go
diff options
context:
space:
mode:
authorCarlos Martín Nieto <[email protected]>2015-07-24 14:23:15 +0200
committerCarlos Martín Nieto <[email protected]>2015-07-24 14:23:15 +0200
commitb4ba35d85c4d2967c7e70350c98cb944de96d51d (patch)
tree3c79852208b39348bc3c395944e25ac550750a17 /reference.go
parentd307391e08f681f4e9b38f9505ad2484f980e1b6 (diff)
parentec93213f21f57e6b378bf9f6ceb05c9fd1f15daf (diff)
Merge pull request #228 from clns/ref-additions
Reference additions
Diffstat (limited to 'reference.go')
-rw-r--r--reference.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/reference.go b/reference.go
index d24e054..140082f 100644
--- a/reference.go
+++ b/reference.go
@@ -315,6 +315,11 @@ func (v *Reference) IsTag() bool {
return C.git_reference_is_tag(v.ptr) == 1
}
+// IsNote checks if the reference is a note.
+func (v *Reference) IsNote() bool {
+ return C.git_reference_is_note(v.ptr) == 1
+}
+
func (v *Reference) Free() {
runtime.SetFinalizer(v, nil)
C.git_reference_free(v.ptr)
@@ -425,3 +430,22 @@ func (v *ReferenceIterator) Free() {
runtime.SetFinalizer(v, nil)
C.git_reference_iterator_free(v.ptr)
}
+
+// ReferenceIsValidName ensures the reference name is well-formed.
+//
+// Valid reference names must follow one of two patterns:
+//
+// 1. Top-level names must contain only capital letters and underscores,
+// and must begin and end with a letter. (e.g. "HEAD", "ORIG_HEAD").
+//
+// 2. Names prefixed with "refs/" can be almost anything. You must avoid
+// the characters '~', '^', ':', ' \ ', '?', '[', and '*', and the sequences
+// ".." and " @ {" which have special meaning to revparse.
+func ReferenceIsValidName(name string) bool {
+ cname := C.CString(name)
+ defer C.free(unsafe.Pointer(cname))
+ if C.git_reference_is_valid_name(cname) == 1 {
+ return true
+ }
+ return false
+}