aboutsummaryrefslogtreecommitdiffstats
path: root/examples/basic/main.go
diff options
context:
space:
mode:
authorMáximo Cuadros <mcuadros@gmail.com>2016-08-22 00:17:21 +0200
committerMáximo Cuadros <mcuadros@gmail.com>2016-08-22 00:17:21 +0200
commita045606fc9c5cbf30b409384cbdad4804f01c61d (patch)
tree2b72458903060790280adaaf0f53c5aa4ba73a82 /examples/basic/main.go
parentb32e92d013f6fe0d97f094c4b1991100d568f980 (diff)
downloadgo-git-a045606fc9c5cbf30b409384cbdad4804f01c61d.tar.gz
examples: improved basic and remote examples
Diffstat (limited to 'examples/basic/main.go')
-rw-r--r--examples/basic/main.go58
1 files changed, 35 insertions, 23 deletions
diff --git a/examples/basic/main.go b/examples/basic/main.go
index 510b39d..4c65a70 100644
--- a/examples/basic/main.go
+++ b/examples/basic/main.go
@@ -2,37 +2,49 @@ package main
import (
"fmt"
- "os"
+
+ "github.com/fatih/color"
"gopkg.in/src-d/go-git.v4"
)
func main() {
- url := os.Args[1]
- fmt.Printf("Retrieving %q ...\n", url)
- r, err := git.NewMemoryRepository()
- if err != nil {
- panic(err)
- }
-
- if err = r.Clone(&git.RepositoryCloneOptions{URL: url}); err != nil {
- panic(err)
- }
-
- iter, err := r.Commits()
- if err != nil {
- panic(err)
- }
+ r := git.NewMemoryRepository()
- defer iter.Close()
+ // Clone the given repository, creating the remote, the local branches
+ // and fetching the objects, exactly as:
+ // > git clone https://github.com/git-fixtures/basic.git
+ color.Blue("git clone https://github.com/git-fixtures/basic.git")
- var count = 0
- iter.ForEach(func(commit *git.Commit) error {
- count++
- fmt.Println(commit)
+ r.Clone(&git.RepositoryCloneOptions{
+ URL: "https://github.com/git-fixtures/basic.git",
+ })
+ // Getting the latest commit on the current branch
+ // > git log -1
+ color.Blue("git log -1")
+
+ // ... retrieving the branch being pointed by HEAD
+ ref, _ := r.Head()
+ // ... retrieving the commit object
+ commit, _ := r.Commit(ref.Hash())
+ fmt.Println(commit)
+
+ // List the tree from HEAD
+ // > git ls-tree -r HEAD
+ color.Blue("git ls-tree -r HEAD")
+
+ // ... retrieve the tree from the commit
+ tree := commit.Tree()
+ // ... create a tree walker, allows to you intereste all nested trees
+ walker := git.NewTreeWalker(r, tree)
+ walker.ForEach(func(fullpath string, e git.TreeEntry) error {
+ // we ignore the tree
+ if e.Mode.Perm() == 0 {
+ return nil
+ }
+
+ fmt.Printf("100644 blob %s %s\n", e.Hash, fullpath)
return nil
})
-
- fmt.Println("total commits:", count)
}