git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "René Scharfe" <rene.scharfe@lsrfire.ath.cx>
To: BJ Hargrave <bj@bjhargrave.com>
Cc: git@vger.kernel.org, Jeff King <peff@peff.net>,
	Junio C Hamano <gitster@pobox.com>
Subject: Re: tar on Mac does not like empty tar from git archive
Date: Wed, 10 Apr 2013 19:00:20 +0200	[thread overview]
Message-ID: <51659AA4.80203@lsrfire.ath.cx> (raw)
In-Reply-To: <ABD0C67A-0B2B-4E32-AF49-93FBABC032A7@bjhargrave.com>

Am 08.04.2013 20:36, schrieb BJ Hargrave:
> Git 1.8.2.1 includes commit bd54cf17 - archive: handle commits with
> an empty tree
> 
> Test 2 of t5004-archive-corner-cases, "tar archive of empty tree is
> empty", fails on Mac OS X 10.8.3 (with XCode 4.6.1) since the tar
> command exits with return code 1 on the generated tar file.
> 
> expecting success:
> 	git archive --format=tar HEAD >empty.tar &&
> 	make_dir extract &&
> 	"$TAR" xf empty.tar -C extract &&
> 	check_dir extract
> 
> tar: Damaged tar archive
> tar: Error exit delayed from previous errors.
> not ok 2 - tar archive of empty tree is empty
> 
> tar tf "trash directory.t5004-archive-corner-cases/empty.tar"; echo $?
> tar: Damaged tar archive
> tar: Error exit delayed from previous errors.
> 1
> 
> tar --version
> bsdtar 2.8.3 - libarchive 2.8.3
> 
> It appears that bsdtar does not like the empty tar files created by
> git archive. An empty tar file created by bsdtar is accepted.
> 
> tar cT /dev/null | tar t; echo $?
> 0

I've opened an issue for libarchive for that behaviour:
http://code.google.com/p/libarchive/issues/detail?id=314

We can work around bsdtar's dislike of not-quite-empty tar archives by
leaving out the comment that contains the commit hash.

-- >8 --
Subject: t5004: fix issue with empty archive test and bsdtar

bsdtar, which is the default tar on Mac OS X, handles empty archives
just fine but reports archives containing only a pax extended header
comment as damaged.  Work around the issue by explicitly generating
the archive for the tree and not the commit, which causes git archive
to omit the commit hash comment record from the tar file.

Reported-by: BJ Hargrave <bj@bjhargrave.com>
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
---
 t/t5004-archive-corner-cases.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/t/t5004-archive-corner-cases.sh b/t/t5004-archive-corner-cases.sh
index cdb7d7a..bfdb56a 100755
--- a/t/t5004-archive-corner-cases.sh
+++ b/t/t5004-archive-corner-cases.sh
@@ -28,7 +28,7 @@ check_dir() {
 }
 
 test_expect_success 'tar archive of empty tree is empty' '
-	git archive --format=tar HEAD >empty.tar &&
+	git archive --format=tar HEAD: >empty.tar &&
 	make_dir extract &&
 	"$TAR" xf empty.tar -C extract &&
 	check_dir extract
-- 
1.8.2.1

      parent reply	other threads:[~2013-04-10 17:00 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-08 18:36 tar on Mac does not like empty tar from git archive BJ Hargrave
2013-04-08 21:05 ` Jeff King
2013-04-08 22:07   ` BJ Hargrave
2013-04-09 19:37   ` René Scharfe
2013-04-10 17:00 ` René Scharfe [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51659AA4.80203@lsrfire.ath.cx \
    --to=rene.scharfe@lsrfire.ath.cx \
    --cc=bj@bjhargrave.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=peff@peff.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).