From: Junio C Hamano Date: Sat, 01 Oct 2005 19:07:14 GMT Subject: Honor extractor's umask in git-tar-tree. Message-ID: <7vk6gx3vkt.fsf_-_@assigned-by-dhcp.cox.net> In-Reply-To: <7vr7b53y0n.fsf@assigned-by-dhcp.cox.net> 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 --- Junio C Hamano writes: > Unrelated to the topic at hand, but related to the mode bits -- > tar-tree generates archives with 0644/0755 permission bits. It > might not be a bad idea to just let the tar command honor umask > of the extracter, by storing 0666 and 0777 in the archive. > > I always work in an environment where umask 002 is the norm, and > get irritated when upstream tarballs of other peoples' projects > create directories with mode 0755, making me do chmod 2775 on > them. diff --git a/tar-tree.c b/tar-tree.c --- a/tar-tree.c +++ b/tar-tree.c @@ -353,6 +353,7 @@ static void traverse_tree(void *buffer, if (size < namelen + 20 || sscanf(buffer, "%o", &mode) != 1) die("corrupt 'tree' file"); + mode |= (mode & 0100) ? 0777 : 0666; buffer = sha1 + 20; size -= namelen + 20;