Rather than uploading every checked-out file of a repository and the
repository objects themselves, skip the checkout and instruct git to compact
before upload. The result is that only a handful of files are transferred,
rather than hundreds or thousands for large repositories.
The HEAD ref is updated before upload so that a hard reset works as before on
the target. The reflog is also disabled in order to avoid uploading useless log
files.
This change is backwards-compatible, but it will only have an effect on new
repositories.
Allow each builder to cache some files for re-use in the next build. This
allows for poor-man's dependency chaining.
Additionally, add a common cache pool for all builds. This can be used for
saving (for example) downloaded files to be shared between builds.
- Allow comparing to a sepcific 'golden' manifest with `--compare-to`
- By default pick the first manifest to compare to, instead of always
comparing against the previous one, which is confusing
- Show line-by-line difference if `-v` given
I was running into trouble using gitian LXC INSIDE a VirtualBox VM, because
the 10.0.2.x IP range overlaps with the range that VirtualBox uses for
its internal NAT network.
This commit makes it possible to override the host and guest IP that
is used during LXC image creation and the build, using environment variables:
- `GITIAN_HOST_IP` (default=10.0.2.2, host IP from the viewpoint of the
VM, can be used for both LXC and KVM)
- `LXC_GUEST_IP` (default=10.0.2.5, guest IP from the viewpoint of the
host, effective for LXC only)
When these are not defined the behavior remains the same as before.
To make test builds it can be useful to point gitian at an
alternative repository.
This commit makes this possible by adding a `--url PAIRS` command line
option, that allows to optionally specify where to fetch the code, for
example:
gbuild --url bitcoin=https://github.com/laanwj/bitcoin.git --commit bitcoin=2014_03_...
- Fixes problem where the gitian URL varies for different branches of the same repository
- Explicitly fetching tags using + allows repository to overwrite existing tags (changed tag)
- Fetching branch heads to local heads correctly makes branch names available for commit option
- Fetching both branches and tags at the same time optimizes things slightly