6
0
mirror of https://github.com/grdl/git-get.git synced 2026-02-04 12:46:46 +00:00

Add go modules and instructions for static building

This commit is contained in:
Grzegorz Dlugoszewski
2020-05-16 14:10:35 +02:00
parent 653873c238
commit 30205fbbdf
4 changed files with 62 additions and 0 deletions

View File

@@ -1,2 +1,32 @@
# git-get
## Build
How to build with libgit2 statically linked into a single executable without dependencies:
- Install development packages for libssh2 and openssl:
```
sudo apt install libssh2-1-del libssl-dev
```
- `git2go` library is added as a submodule (pointing to a correct v30 release). This, in turn, contains `libgit2` submodule.
To ensure the submodules are cloned run:
```
git submodule update --init --recursive
```
- build the static `git2go` library:
```
cd static/git2go && make install-static
```
- ensure our `git-get` module uses the static `git2go` library instead of the one downloaded by Go modules by having
the following line in `go.mod`:
```
replace github.com/libgit2/git2go/v30 => ./static/git2go
```
- build `git-get` with `--tags static` flag:
```
go build -i --tags static
```

22
git-get.go Normal file
View File

@@ -0,0 +1,22 @@
package main
import (
"github.com/libgit2/git2go/v30"
)
import "fmt"
func main() {
options := &git.CloneOptions{
CheckoutOpts: nil,
FetchOptions: nil,
Bare: false,
CheckoutBranch: "",
RemoteCreateCallback: nil,
}
repo, err := git.Clone("https://gitlab.com/grdl/dotfiles.git", "/tmp/dotfiles/", options)
if err != nil {
panic(err.Error())
}
fmt.Println(repo.IsBare())
}

8
go.mod Normal file
View File

@@ -0,0 +1,8 @@
module git-get
go 1.14
require github.com/libgit2/git2go/v30 v30.0.3
replace github.com/libgit2/git2go/v30 => ./static/git2go

2
go.sum Normal file
View File

@@ -0,0 +1,2 @@
github.com/libgit2/git2go/v30 v30.0.3 h1:v+KRMhx85kHS0JzkPft7Wnt3+VUrYQrD/SQ77usTO/w=
github.com/libgit2/git2go/v30 v30.0.3/go.mod h1:YReiQ7xhMoyAL4ISYFLZt+OGqn6xtLqvTC1xJ9oAH7Y=