An open API service indexing awesome lists of open source software.

https://github.com/ssrathi/golang_git

Implementation of git internals from scratch in Go language
https://github.com/ssrathi/golang_git

git go golang

Last synced: 4 months ago
JSON representation

Implementation of git internals from scratch in Go language

Awesome Lists containing this project

README

          

[![Builds](https://github.com/ssrathi/gogit/workflows/Build/badge.svg?branch=master)](https://github.com/ssrathi/gogit/actions?query=branch%3Amaster+workflow%3ABuild)
[![Go Report Card](https://goreportcard.com/badge/github.com/ssrathi/gogit)](https://goreportcard.com/report/github.com/ssrathi/gogit)
[![GoDoc](https://godoc.org/github.com/ssrathi/gogit?status.svg)](https://godoc.org/github.com/ssrathi/gogit)

# gogit

Implementation of git internal commands in Go language.

This project is part of a learning exercise to implement a subset of "git"
commands. It can be used to create and maintain git objects, such as blobs,
trees, commits, references and tags.

[demo](https://asciinema.org/a/331278?speed=2&autoplay=1&t=8)

# Video with explanation

This video is a supplemental tech-talk recording explaining the internals of "git" (Delievered at Nutanix, Inc, 2020)

[tech-talk](https://players.brightcove.net/5850956868001/default_default/index.html?videoId=6304540004001)

## Supported commands
```
gogit - the stupid content tracker

usage: gogit []
Valid commands:
init Create an empty Git repository
hash-object Compute object ID and optionally creates a blob from a file
cat-file Provide content or type and size information for repository objects
ls-tree List the contents of a tree object
mktree Build a tree-object from ls-tree formatted text
checkout restore working tree files
commit-tree Create a new commit object
log Shows the commit logs
show-ref List references in a local repository
update-ref Update the object name stored in a ref safely
rev-parse Parse a given git identifier

Use "gogit --help" for help on a specific command
```

## Installation
```
go get github.com/ssrathi/gogit
```

## Contributing

Contributions are most welcome! Please create a new issue and link your PR to it.