git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Set permissions of each new file before "cvs add"ing it.
@ 2006-12-03 19:51 Jim Meyering
  2006-12-04  2:41 ` Junio C Hamano
  2006-12-04 16:51 ` Robin Rosenberg
  0 siblings, 2 replies; 5+ messages in thread
From: Jim Meyering @ 2006-12-03 19:51 UTC (permalink / raw)
  To: git

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.

Signed-off-by: Jim Meyering <jim@meyering.net>
---
 git-cvsexportcommit.perl |   19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl
index 7bac16e..f819eb2 100755
--- a/git-cvsexportcommit.perl
+++ b/git-cvsexportcommit.perl
@@ -268,6 +268,7 @@ if (($? >> 8) == 2) {
 }

 foreach my $f (@afiles) {
+    set_new_file_permissions($f);
     if (grep { $_ eq $f } @bfiles) {
       system('cvs', 'add','-kb',$f);
     } else {
@@ -342,3 +343,21 @@ sub safe_pipe_capture {
     }
     return wantarray ? @output : join('',@output);
 }
+
+# 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";
+}
--

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-12-04 16:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-12-03 19:51 Set permissions of each new file before "cvs add"ing it Jim Meyering
2006-12-04  2:41 ` Junio C Hamano
2006-12-04  2:47   ` Junio C Hamano
2006-12-04  7:55     ` Jim Meyering
2006-12-04 16:51 ` Robin Rosenberg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).