back to listing index


[web search]
Original source (
Tags: git golang go library package
Clipped on: 2016-02-16

Skip to content
Pure Go read access of a Git repository
Go Shell


Pure Go read access to a git repository.

State: Actively maintained, used in production site, but without warranty, of course.
Maturity level: 4/5 (works well in all tested repositories, expect API change, few corner cases not implemented yet)
License: Free software (MIT License)
Installation: Just run  go get 
API documentation:
Contact:, @speedata
Dependencies: None
Contribution: We like to get any kind of feedback (success stories, bug reports, merge requests, ...)


Sample application to list the latest directory (recursively):

package main

import (

func walk(dirname string, te *gogit.TreeEntry) int {
    log.Println(path.Join(dirname, te.Name))
    return 0

func main() {
    wd, err := os.Getwd()
    if err != nil {
    repository, err := gogit.OpenRepository(filepath.Join(wd, "src/"))
    if err != nil {
    ref, err := repository.LookupReference("HEAD")
    if err != nil {
    ci, err := repository.LookupCommit(ref.Oid)
    if err != nil {

Sample application

We use  gogit  as the backend in This is a mirror of CTAN, the comprehensive TeX archive network with approx. 25GB of data. We rsync it from the main site at every night and add the changes to a git repository (with the regular git command). Then we use this web front end to retrieve the historic files.

The git repository is around 60 GB (Oct. 2013).