GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - src-d/go-git: Project has been moved to: https://github.com/go-git/go-git

This repository was archived by the owner on Sep 11, 2020. It is now read-only.
BranchesTags
Open more actions menu

Latest commit

 

History

1,540 Commits
1,540 Commits

Folders and files

NameName
Last commit message
Last commit date
_examples
_examples
 
 
cli/go-git
cli/go-git
 
 
config
config
 
 
internal
internal
 
 
plumbing
plumbing
 
 
storage
storage
 
 
utils
utils
 
 
.gitignore
.gitignore
 
 
.travis.yml
.travis.yml
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
COMPATIBILITY.md
COMPATIBILITY.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
DCO
DCO
 
 
LICENSE
LICENSE
 
 
MAINTAINERS
MAINTAINERS
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
appveyor.yml
appveyor.yml
 
 
blame.go
blame.go
 
 
blame_test.go
blame_test.go
 
 
common.go
common.go
 
 
common_test.go
common_test.go
 
 
doc.go
doc.go
 
 
example_test.go
example_test.go
 
 
go.mod
go.mod
 
 
go.sum
go.sum
 
 
object_walker.go
object_walker.go
 
 
options.go
options.go
 
 
options_test.go
options_test.go
 
 
prune.go
prune.go
 
 
prune_test.go
prune_test.go
 
 
references.go
references.go
 
 
references_test.go
references_test.go
 
 
remote.go
remote.go
 
 
remote_test.go
remote_test.go
 
 
repository.go
repository.go
 
 
repository_test.go
repository_test.go
 
 
repository_unix_test.go
repository_unix_test.go
 
 
repository_windows_test.go
repository_windows_test.go
 
 
status.go
status.go
 
 
submodule.go
submodule.go
 
 
submodule_test.go
submodule_test.go
 
 
worktree.go
worktree.go
 
 
worktree_bsd.go
worktree_bsd.go
 
 
worktree_commit.go
worktree_commit.go
 
 
worktree_commit_test.go
worktree_commit_test.go
 
 
worktree_linux.go
worktree_linux.go
 
 
worktree_status.go
worktree_status.go
 
 
worktree_test.go
worktree_test.go
 
 
worktree_unix_other.go
worktree_unix_other.go
 
 
worktree_windows.go
worktree_windows.go
 
 

Repository files navigation

WE CONTINUE THE DEVELOPMENT AT go-git/go-git. This repository is abandoned, and no further updates will be done on the code base, nor issue/prs will be answered or attended.

go-git logo GoDoc Build Status Build status codecov.io Go Report Card

go-git is a highly extensible git implementation library written in pure Go.

It can be used to manipulate git repositories at low level (plumbing) or high level (porcelain), through an idiomatic Go API. It also supports several types of storage, such as in-memory filesystems, or custom implementations thanks to the Storer interface.

It's being actively developed since 2015 and is being used extensively by source{d} and Keybase, and by many other libraries and tools.

Comparison with git

go-git aims to be fully compatible with git, all the porcelain operations are implemented to work exactly as git does.

git is a humongous project with years of development by thousands of contributors, making it challenging for go-git to implement all the features. You can find a comparison of go-git vs git in the compatibility documentation.

Installation

The recommended way to install go-git is:

go get -u gopkg.in/src-d/go-git.v4/...

We use gopkg.in to version the API, this means that when go get clones the package, it's the latest tag matching v4.* that is cloned and not the master branch.

Examples

Please note that the CheckIfError and Info functions used in the examples are from the examples package just to be used in the examples.

Basic example

A basic example that mimics the standard git clone command

// Clone the given repository to the given directory
Info("git clone https://github.com/src-d/go-git")

_, err := git.PlainClone("/tmp/foo", false, &git.CloneOptions{
    URL:      "https://github.com/src-d/go-git",
    Progress: os.Stdout,
})

CheckIfError(err)

Outputs:

Counting objects: 4924, done.
Compressing objects: 100% (1333/1333), done.
Total 4924 (delta 530), reused 6 (delta 6), pack-reused 3533

In-memory example

Cloning a repository into memory and printing the history of HEAD, just like git log does

// Clones the given repository in memory, creating the remote, the local
// branches and fetching the objects, exactly as:
Info("git clone https://github.com/src-d/go-siva")

r, err := git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
    URL: "https://github.com/src-d/go-siva",
})

CheckIfError(err)

// Gets the HEAD history from HEAD, just like this command:
Info("git log")

// ... retrieves the branch pointed by HEAD
ref, err := r.Head()
CheckIfError(err)


// ... retrieves the commit history
cIter, err := r.Log(&git.LogOptions{From: ref.Hash()})
CheckIfError(err)

// ... just iterates over the commits, printing it
err = cIter.ForEach(func(c *object.Commit) error {
	fmt.Println(c)
	return nil
})
CheckIfError(err)

Outputs:

commit ded8054fd0c3994453e9c8aacaf48d118d42991e
Author: Santiago M. Mola <[email protected]>
Date:   Sat Nov 12 21:18:41 2016 +0100

    index: ReadFrom/WriteTo returns IndexReadError/IndexWriteError. (#9)

commit df707095626f384ce2dc1a83b30f9a21d69b9dfc
Author: Santiago M. Mola <[email protected]>
Date:   Fri Nov 11 13:23:22 2016 +0100

    readwriter: fix bug when writing index. (#10)

    When using ReadWriter on an existing siva file, absolute offset for
    index entries was not being calculated correctly.
...

You can find this example and many others in the examples folder.

Contribute

Contributions are more than welcome, if you are interested please take a look to our Contributing Guidelines.

License

Apache License Version 2.0, see LICENSE

About

Project has been moved to: https://github.com/go-git/go-git

github.com/go-git/go-git

Topics

gitgit-clientgit-servergo-gitgolang

Resources

Readme
Apache-2.0 license

Code of conduct

Code of conduct

Contributing

Contributing
Activity
Custom properties

Stars

4.9k stars

Watchers

3 watching

Forks

528 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.