I have a remote bare repository (no working dir) that creates install-tars. Works nice. But now I want to create tars only of the changed files. I tried it this way:
git archive --format=tar --prefix='/' HEAD `git diff V1.02 --name-only` | gzip -9 > ~/tars/update-v1.02-`git describe master --tags`.tar.gz
This works great with my local repository. It creates a tar with the files from tagged version V1.02 to the latest commit. But it doesn't work with bare reposities. Is there another solution?
The two commit form of git diff
will work in a bare repository (git diff [options] <commit> <commit> [--] [<path>...]
).
The following should do what I understand you want:
git archive --format=tar --prefix='/' master `git diff V1.02 master --name-only` | gzip -9 > ~/tars/update-v1.02-`git describe master --tags`.tar.gz
I also suggest changing the HEAD
from your original command to master
(as shown above) to be consistent with the rest of the command, and be resilient if someone changes which branch HEAD
points to (alternatively replacing all occurrences of master
with HEAD
in the example above).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With