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:
30
README.md
30
README.md
@@ -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
22
git-get.go
Normal 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
8
go.mod
Normal 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
|
||||
|
||||
Reference in New Issue
Block a user