This is compliant with
https://github.com/golang/go/wiki/Modules#releasing-modules-v2-or-higher,
which says
```
Major branch: Update the go.mod file to include a /v3 at the end of the
module path in the module directive (e.g., module
github.com/my/module/v3). Update import statements within the module to
also use /v3 (e.g., import "github.com/my/module/v3/mypkg"). Tag the
release with v3.0.0.
```
This also means that unfortunately we cannot keep using libgit2's exact
version number (plus a build number for git2go purposes, since go only
recognizes vMAJOR.MINOR.PATCH format).
(Tentatively) fixes: #536
This change adds a `go.mod` file. An empty file is sufficient since this
project has no external dependencies. For people that want to use the static
version of libgit2, this module can be vendored and the following can be added
to their `go.mod` file:
replace github.com/libgit2/git2go => ./vendor/github.com/libgit2/git2go
This change:
* Uses the installed version of both the library and the pkgconfig file,
which fixes path resolution on Ubuntu Xenial.
* Uses quoting liberally so that paths with spaces in them are correctly
handled.
* Moves the build+install directories to static-build/ in the git2go
repository to avoid having a dirty vendor/libgit2 checkout.
This includes updating the `Index.WriteTreeTo` test as it was abusing an
oversight of the object creation safety checks and creating a tree referencing
a non-existent blob. Instead we update it to the primary purpose of this method
which is to write into a repository from an unattached index.
When using the static linking option on platforms that use pkg-config,
use ONLY pkg-config to get the CFLAGS and LDFLAGS. This prevents pulling
in dependencies and flags for any non-vendored version that may be
present on the host.
The main practical effect of this is that if someone doesn't need/want
any sort of remote access support at all they can completely disable
libcurl, libssh2, libssl, etc and produce a smaller/simpler binary and
greatly simplify their build-time dependencies. When done properly, the
generated pkg-config file will tell cgo everything it needs to know.
This also prevents confusion if there is a system copy of libgit2 that
is being given priority over the vendored build.
Signed-off-by: Ryan Graham <r.m.graham@gmail.com>