diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2016-08-22 00:17:21 +0200 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2016-08-22 00:17:21 +0200 |
commit | a045606fc9c5cbf30b409384cbdad4804f01c61d (patch) | |
tree | 2b72458903060790280adaaf0f53c5aa4ba73a82 /examples/basic/main.go | |
parent | b32e92d013f6fe0d97f094c4b1991100d568f980 (diff) | |
download | go-git-a045606fc9c5cbf30b409384cbdad4804f01c61d.tar.gz |
examples: improved basic and remote examples
Diffstat (limited to 'examples/basic/main.go')
-rw-r--r-- | examples/basic/main.go | 58 |
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) } |