Thread (1 message) 1 message, 1 author, 2016-08-11

Re: Set permissions of each new file before "cvs add"ing it.

From: Junio C Hamano <hidden>
Date: 2016-08-11 19:26:24

Jim Meyering [off-list ref] writes:
Without the following patch, git-cvsexportcommit would fail to propagate
permissions of files added in git to the CVS repository.  I.e., when I
added an executable script in coreutils' git repo, then tried to propagate
that addition to the mirroring CVS repository, the script ended up added
not executable there.
Thanks.  But...
+# For any file we want to add to cvs, we must first set its permissions
+# properly, *before* the "cvs add ..." command.  Otherwise, it is impossible
+# to change the permission of the file in the CVS repository using only cvs
+# commands.  This should be fixed in cvs-1.12.14.
+sub set_new_file_permissions {
+    my ($file) = @_;
+    # Given input like this:
+    # ba45154d8e9f5f49f46c8c2c2d8a554db7c3465f ...
+    # :000000 100755 0000000... b595dc6... A  tests/du/one-file-system
+    # extract the three octal permission digits:
+    my $cmd = 'git-whatchanged --max-count=1 --pretty=oneline -- $f'
+      . q! | sed -n '2s/^:00* [0-7][0-7][0-7]\([0-7][0-7][0-7]\) .*/\1/p'!;
+    my $perm = `$cmd`;
+
+    chmod oct($perm), $file
+      or die "failed to set permissions of \"$file\": $!\n";
+}
Why sed in a Perl script ;-)?
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help