summaryrefslogtreecommitdiff
path: root/refs.go
diff options
context:
space:
mode:
Diffstat (limited to 'refs.go')
-rw-r--r--refs.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/refs.go b/refs.go
new file mode 100644
index 0000000..8558029
--- /dev/null
+++ b/refs.go
@@ -0,0 +1,47 @@
+package main
+
+import (
+ "fmt"
+ "os"
+
+ git "go.wit.com/lib/libgit2"
+ "go.wit.com/log"
+)
+
+func showRefs() error {
+ log.Info("how do you do this with libgit2 and git2go? notsure.")
+ repo, err := git.OpenRepository(argv.RepoPath)
+ if err != nil {
+ log.Info("open failed", argv.RepoPath, err)
+ return err
+ }
+ ref, err := repo.Head()
+ log.Info("head", ref, err, ref.Name())
+ fmt.Printf("%+v\n", ref)
+ walkRepo(repo)
+ return nil
+}
+
+func walkRepo(repo *git.Repository) {
+ ri, err := repo.NewReferenceIterator()
+ exitIf(err)
+
+ for {
+ ref, err := ri.Next()
+ if err != nil {
+ log.Info("done", err)
+ return
+ }
+ log.Info("head", ref, err, ref.Name(), ref.SymbolicTarget(), ref.Shorthand())
+ // fmt.Printf("%+v\n", ref)
+ // SymbolicTarget()
+ }
+}
+
+func exitIf(err error) {
+ if err == nil {
+ return
+ }
+ log.Info("exit due to error", err)
+ os.Exit(-1)
+}