Honor extractor's umask in git-tar-tree.
- From
Junio C Hamano <junkio@cox.net>
- Date
- Oct 1, 2005, 19:07 UTC
- 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 <junkio@cox.net> --- Junio C Hamano <junkio@cox.net> writes:
Show 9 quoted lines
> 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;