mirror of
https://github.com/git/git.git
synced 2024-12-18 06:14:59 +08:00
Merge branch 'bc/archive-pax-header-mode'
Implementations of "tar" that do not understand an extended pax header would extract the contents of it in a regular file; make sure the permission bits of this file follows the same tar.umask configuration setting. * bc/archive-pax-header-mode: archive: honor tar.umask even for pax headers
This commit is contained in:
commit
4740891e47
@ -192,7 +192,7 @@ static int write_extended_header(struct archiver_args *args,
|
||||
unsigned int mode;
|
||||
memset(&header, 0, sizeof(header));
|
||||
*header.typeflag = TYPEFLAG_EXT_HEADER;
|
||||
mode = 0100666;
|
||||
mode = 0100666 & ~tar_umask;
|
||||
sprintf(header.name, "%s.paxheader", sha1_to_hex(sha1));
|
||||
prepare_header(args, &header, mode, size);
|
||||
write_blocked(&header, sizeof(header));
|
||||
@ -300,7 +300,7 @@ static int write_global_extended_header(struct archiver_args *args)
|
||||
strbuf_append_ext_header(&ext_header, "comment", sha1_to_hex(sha1), 40);
|
||||
memset(&header, 0, sizeof(header));
|
||||
*header.typeflag = TYPEFLAG_GLOBAL_HEADER;
|
||||
mode = 0100666;
|
||||
mode = 0100666 & ~tar_umask;
|
||||
strcpy(header.name, "pax_global_header");
|
||||
prepare_header(args, &header, mode, ext_header.len);
|
||||
write_blocked(&header, sizeof(header));
|
||||
|
@ -113,4 +113,9 @@ test_expect_success 'archive empty subtree by direct pathspec' '
|
||||
check_dir extract sub
|
||||
'
|
||||
|
||||
test_expect_success 'archive applies umask even for pax headers' '
|
||||
git archive --format=tar HEAD >archive.tar &&
|
||||
! grep 0666 archive.tar
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user