aboutsummaryrefslogtreecommitdiffstats
path: root/examples/showcase/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'examples/showcase/main.go')
-rw-r--r--examples/showcase/main.go61
1 files changed, 61 insertions, 0 deletions
diff --git a/examples/showcase/main.go b/examples/showcase/main.go
new file mode 100644
index 0000000..ff5c7d3
--- /dev/null
+++ b/examples/showcase/main.go
@@ -0,0 +1,61 @@
+package main
+
+import (
+ "fmt"
+ "os"
+ "strings"
+
+ "gopkg.in/src-d/go-git.v4"
+ . "gopkg.in/src-d/go-git.v4/examples"
+)
+
+func main() {
+ CheckArgs("<url>")
+ url := os.Args[1]
+
+ r := git.NewMemoryRepository()
+
+ // Clone the given repository, creating the remote, the local branches
+ // and fetching the objects, exactly as:
+ Info("git clone %s", url)
+
+ err := r.Clone(&git.CloneOptions{URL: url})
+ CheckIfError(err)
+
+ // Getting the latest commit on the current branch
+ Info("git log -1")
+
+ // ... retrieving the branch being pointed by HEAD
+ ref, err := r.Head()
+ CheckIfError(err)
+
+ // ... retrieving the commit object
+ commit, err := r.Commit(ref.Hash())
+ CheckIfError(err)
+ fmt.Println(commit)
+
+ // List the tree from HEAD
+ Info("git ls-tree -r HEAD")
+
+ // ... retrieve the tree from the commit
+ tree, err := commit.Tree()
+ CheckIfError(err)
+
+ // ... get the files iterator and print the file
+ tree.Files().ForEach(func(f *git.File) error {
+ fmt.Printf("100644 blob %s %s\n", f.Hash, f.Name)
+ return nil
+ })
+
+ // List the history of the repository
+ Info("git log --oneline")
+
+ commits, err := commit.History()
+ CheckIfError(err)
+
+ for _, c := range commits {
+ hash := c.Hash.String()
+ line := strings.Split(c.Message, "\n")
+ fmt.Println(hash[:7], line[0])
+ }
+}