From: Junio C Hamano Date: Sat, 1 Oct 2005 19:01:07 +0000 (-0700) Subject: Honor extractor's umask in git-tar-tree. X-Git-Tag: v0.99.8~22 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=38ec15a973a1f075f0d94d130b0ef279562921cd;p=git.git Honor extractor's umask in git-tar-tree. The archive generated with git-tar-tree had 0755 and 0644 mode bits. This inconvenienced the extractor with umask 002 by robbing g+w bit unconditionally. Just write it out with loose permissions bits and let the umask of the extractor do its job. Signed-off-by: Junio C Hamano --- diff --git a/tar-tree.c b/tar-tree.c index 2716ae3e..970c4bb5 100644 --- a/tar-tree.c +++ b/tar-tree.c @@ -353,6 +353,8 @@ static void traverse_tree(void *buffer, unsigned long size, if (size < namelen + 20 || sscanf(buffer, "%o", &mode) != 1) die("corrupt 'tree' file"); + if (S_ISDIR(mode) || S_ISREG(mode)) + mode |= (mode & 0100) ? 0777 : 0666; buffer = sha1 + 20; size -= namelen + 20;