archive: provide builtin .tar.gz filter
This works exactly as if the user had configured it via: [tar "tgz"] command = gzip -cn [tar "tar.gz"] command = gzip -cn but since it is so common, it's convenient to have it builtin without the user needing to do anything. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
767cf4579f
commit
0e804e0993
@ -110,6 +110,9 @@ tar.<format>.command::
|
|||||||
to the command (e.g., "-9"). An output file with the same
|
to the command (e.g., "-9"). An output file with the same
|
||||||
extension as `<format>` will be use this format if no other
|
extension as `<format>` will be use this format if no other
|
||||||
format is given.
|
format is given.
|
||||||
|
+
|
||||||
|
The "tar.gz" and "tgz" formats are defined automatically and default to
|
||||||
|
`gzip -cn`. You may override them with custom commands.
|
||||||
|
|
||||||
ATTRIBUTES
|
ATTRIBUTES
|
||||||
----------
|
----------
|
||||||
@ -143,6 +146,14 @@ git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz::
|
|||||||
|
|
||||||
Create a compressed tarball for v1.4.0 release.
|
Create a compressed tarball for v1.4.0 release.
|
||||||
|
|
||||||
|
git archive --format=tar.gz --prefix=git-1.4.0/ v1.4.0 >git-1.4.0.tar.gz::
|
||||||
|
|
||||||
|
Same as above, but using the builtin tar.gz handling.
|
||||||
|
|
||||||
|
git archive --prefix=git-1.4.0/ -o git-1.4.0.tar.gz v1.4.0::
|
||||||
|
|
||||||
|
Same as above, but the format is inferred from the output file.
|
||||||
|
|
||||||
git archive --format=tar --prefix=git-1.4.0/ v1.4.0{caret}\{tree\} | gzip >git-1.4.0.tar.gz::
|
git archive --format=tar --prefix=git-1.4.0/ v1.4.0{caret}\{tree\} | gzip >git-1.4.0.tar.gz::
|
||||||
|
|
||||||
Create a compressed tarball for v1.4.0 release, but without a
|
Create a compressed tarball for v1.4.0 release, but without a
|
||||||
|
@ -357,6 +357,8 @@ void init_tar_archiver(void)
|
|||||||
int i;
|
int i;
|
||||||
register_archiver(&tar_archiver);
|
register_archiver(&tar_archiver);
|
||||||
|
|
||||||
|
tar_filter_config("tar.tgz.command", "gzip -cn", NULL);
|
||||||
|
tar_filter_config("tar.tar.gz.command", "gzip -cn", NULL);
|
||||||
git_config(git_tar_config, NULL);
|
git_config(git_tar_config, NULL);
|
||||||
for (i = 0; i < nr_tar_filters; i++) {
|
for (i = 0; i < nr_tar_filters; i++) {
|
||||||
/* omit any filters that never had a command configured */
|
/* omit any filters that never had a command configured */
|
||||||
|
@ -26,6 +26,8 @@ commit id embedding:
|
|||||||
|
|
||||||
. ./test-lib.sh
|
. ./test-lib.sh
|
||||||
UNZIP=${UNZIP:-unzip}
|
UNZIP=${UNZIP:-unzip}
|
||||||
|
GZIP=${GZIP:-gzip}
|
||||||
|
GUNZIP=${GUNZIP:-gzip -d}
|
||||||
|
|
||||||
SUBSTFORMAT=%H%n
|
SUBSTFORMAT=%H%n
|
||||||
|
|
||||||
@ -295,4 +297,40 @@ test_expect_success 'extension matching requires dot' '
|
|||||||
test_cmp b.tar config-implicittar.foo
|
test_cmp b.tar config-implicittar.foo
|
||||||
'
|
'
|
||||||
|
|
||||||
|
if $GZIP --version >/dev/null 2>&1; then
|
||||||
|
test_set_prereq GZIP
|
||||||
|
else
|
||||||
|
say "Skipping some tar.gz tests because gzip not found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
test_expect_success GZIP 'git archive --format=tgz' '
|
||||||
|
git archive --format=tgz HEAD >j.tgz
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success GZIP 'git archive --format=tar.gz' '
|
||||||
|
git archive --format=tar.gz HEAD >j1.tar.gz &&
|
||||||
|
test_cmp j.tgz j1.tar.gz
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success GZIP 'infer tgz from .tgz filename' '
|
||||||
|
git archive --output=j2.tgz HEAD &&
|
||||||
|
test_cmp j.tgz j2.tgz
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success GZIP 'infer tgz from .tar.gz filename' '
|
||||||
|
git archive --output=j3.tar.gz HEAD &&
|
||||||
|
test_cmp j.tgz j3.tar.gz
|
||||||
|
'
|
||||||
|
|
||||||
|
if $GUNZIP --version >/dev/null 2>&1; then
|
||||||
|
test_set_prereq GUNZIP
|
||||||
|
else
|
||||||
|
say "Skipping some tar.gz tests because gunzip was not found"
|
||||||
|
fi
|
||||||
|
|
||||||
|
test_expect_success GZIP,GUNZIP 'extract tgz file' '
|
||||||
|
$GUNZIP -c <j.tgz >j.tar &&
|
||||||
|
test_cmp b.tar j.tar
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user