* [PATCH 0/3] Handful of cvsexportcommit patches
@ 2006-05-27 16:36 Yann Dirson
2006-05-27 16:39 ` [PATCH 1/3] Do not call 'cmp' with non-existant -q flag Yann Dirson
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Yann Dirson @ 2006-05-27 16:36 UTC (permalink / raw)
To: junkio; +Cc: git
The following series contains a collection of cvsexportcommit changes I have at hand.
The support for creating directory files was only tested on a 1.0.7 code base, I'll
have to shake this one before being confident with it, but that will be done next week.
In the meantime, it may still be of interest for someone :)
Best regards,
--
Yann Dirson <ydirson@altern.org> |
Debian-related: <dirson@debian.org> | Support Debian GNU/Linux:
| Freedom, Power, Stability, Gratis
http://ydirson.free.fr/ | Check <http://www.debian.org/>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 1/3] Do not call 'cmp' with non-existant -q flag.
2006-05-27 16:36 [PATCH 0/3] Handful of cvsexportcommit patches Yann Dirson
@ 2006-05-27 16:39 ` Yann Dirson
2006-05-27 16:39 ` [PATCH 2/3] Document current cvsps limitations Yann Dirson
2006-05-27 16:39 ` [PATCH 3/3] Make cvsexportcommit create parent directories as needed Yann Dirson
2 siblings, 0 replies; 6+ messages in thread
From: Yann Dirson @ 2006-05-27 16:39 UTC (permalink / raw)
To: junkio; +Cc: git
I cannot find when that flag was removed if it ever existed, I can find
nothing about it in the ChangeLog and NEWS file of GNU diff. The current
flag is -s aka --quiet aka --silent, so let's use -s, assuming it is a
portable flag. Feel free to lart me with a POSIX bible if needed.
Signed-off-by: Yann Dirson <ydirson@altern.org>
---
git-cvsexportcommit.perl | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl
index f994443..ed87dc9 100755
--- a/git-cvsexportcommit.perl
+++ b/git-cvsexportcommit.perl
@@ -151,7 +151,7 @@ foreach my $f (@bfiles) {
my $blob = `git-ls-tree $tree "$f" | cut -f 1 | cut -d ' ' -f 3`;
chomp $blob;
`git-cat-file blob $blob > $tmpdir/blob`;
- if (system('cmp', '-q', $f, "$tmpdir/blob")) {
+ if (system('cmp', '-s', $f, "$tmpdir/blob")) {
warn "Binary file $f in CVS does not match parent.\n";
$dirty = 1;
next;
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 2/3] Document current cvsps limitations.
2006-05-27 16:36 [PATCH 0/3] Handful of cvsexportcommit patches Yann Dirson
2006-05-27 16:39 ` [PATCH 1/3] Do not call 'cmp' with non-existant -q flag Yann Dirson
@ 2006-05-27 16:39 ` Yann Dirson
2006-05-27 19:13 ` Yann Dirson
2006-05-27 16:39 ` [PATCH 3/3] Make cvsexportcommit create parent directories as needed Yann Dirson
2 siblings, 1 reply; 6+ messages in thread
From: Yann Dirson @ 2006-05-27 16:39 UTC (permalink / raw)
To: junkio; +Cc: git
Since there is no bugtracker that I know of, let's just use the scripts
themselves to document their limitations.
Signed-off-by: Yann Dirson <ydirson@altern.org>
---
git-cvsexportcommit.perl | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl
index ed87dc9..3e4e90b 100755
--- a/git-cvsexportcommit.perl
+++ b/git-cvsexportcommit.perl
@@ -1,5 +1,12 @@
#!/usr/bin/perl -w
+# Known limitations:
+# - cannot add or remove binary files
+# - cannot add parent directories when needed
+# - does not propagate permissions
+# - tells "ready for commit" even when things could not be completed
+# (eg addition of a binary file)
+
use strict;
use Getopt::Std;
use File::Temp qw(tempdir);
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH 3/3] Make cvsexportcommit create parent directories as needed.
2006-05-27 16:36 [PATCH 0/3] Handful of cvsexportcommit patches Yann Dirson
2006-05-27 16:39 ` [PATCH 1/3] Do not call 'cmp' with non-existant -q flag Yann Dirson
2006-05-27 16:39 ` [PATCH 2/3] Document current cvsps limitations Yann Dirson
@ 2006-05-27 16:39 ` Yann Dirson
2006-06-17 17:46 ` [PATCH] git-cvsexportcommit.perl: fix typo Sven Verdoolaege
2 siblings, 1 reply; 6+ messages in thread
From: Yann Dirson @ 2006-05-27 16:39 UTC (permalink / raw)
To: junkio; +Cc: git
This is a quick port of my initial patch for 1.0.7, that I had forgotten to
post. Possibly needs some testing before applying to master.
Signed-off-by: Yann Dirson <ydirson@altern.org>
---
git-cvsexportcommit.perl | 37 ++++++++++++++++++++++++++++++++-----
1 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl
index 3e4e90b..57088c3 100755
--- a/git-cvsexportcommit.perl
+++ b/git-cvsexportcommit.perl
@@ -2,7 +2,6 @@ #!/usr/bin/perl -w
# Known limitations:
# - cannot add or remove binary files
-# - cannot add parent directories when needed
# - does not propagate permissions
# - tells "ready for commit" even when things could not be completed
# (eg addition of a binary file)
@@ -11,7 +10,7 @@ use strict;
use Getopt::Std;
use File::Temp qw(tempdir);
use Data::Dumper;
-use File::Basename qw(basename);
+use File::Basename qw(basename dirname);
unless ($ENV{GIT_DIR} && -r $ENV{GIT_DIR}){
die "GIT_DIR is not defined or is unreadable";
@@ -91,7 +90,7 @@ close MSG;
`git-cat-file commit $commit | sed -e '1,/^\$/d' >> .msg`;
$? && die "Error extracting the commit message";
-my (@afiles, @dfiles, @mfiles);
+my (@afiles, @dfiles, @mfiles, @dirs);
my @files = safe_pipe_capture('git-diff-tree', '-r', $parent, $commit);
#print @files;
$? && die "Error in git-diff-tree";
@@ -99,7 +98,14 @@ foreach my $f (@files) {
chomp $f;
my @fields = split(m!\s+!, $f);
if ($fields[4] eq 'A') {
- push @afiles, $fields[5];
+ my $path = $fields[5];
+ push @afiles, $path;
+ # add any needed parent directories
+ $path = dirname $path;
+ while (!-d $path and ! grep { $_ eq $path } @dirs) {
+ unshift @dirs, $path;
+ $path = dirname $path;
+ }
}
if ($fields[4] eq 'M') {
push @mfiles, $fields[5];
@@ -114,13 +120,21 @@ undef @files; # don't need it anymore
# check that the files are clean and up to date according to cvs
my $dirty;
+foreach my $d (@dirs) {
+ if (-e $d) {
+ $dirty = 1;
+ warn "$d exists and is not a directory!\n";
+ }
+}
foreach my $f (@afiles) {
# This should return only one value
my @status = grep(m/^File/, safe_pipe_capture('cvs', '-q', 'status' ,$f));
if (@status > 1) { warn 'Strange! cvs status returned more than one line?'};
- unless ($status[0] =~ m/Status: Unknown$/) {
+ if (-d dirname $f and $status[0] !~ m/Status: Unknown$/
+ and $status[0] !~ m/^File: no file /) {
$dirty = 1;
warn "File $f is already known in your CVS checkout -- perhaps it has been added by another user. Or this may indicate that it exists on a different branch. If this is the case, use -f to force the merge.\n";
+ warn "Status was: $status\n";
}
}
foreach my $f (@mfiles, @dfiles) {
@@ -146,6 +160,19 @@ ### you MUST call cleanupcvs(@file
###
+print "Creating new directories\n";
+foreach my $d (@dirs) {
+ unless (mkdir $d) {
+ warn "Could not mkdir $d: $!";
+ $dirty = 1;
+ }
+ `cvs add $d`;
+ if ($?) {
+ $dirty = 1;
+ warn "Failed to cvs add directory $d -- you may need to do it manually";
+ }
+}
+
print "'Patching' binary files\n";
my @bfiles = grep(m/^Binary/, safe_pipe_capture('git-diff-tree', '-p', $parent, $commit));
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/3] Document current cvsps limitations.
2006-05-27 16:39 ` [PATCH 2/3] Document current cvsps limitations Yann Dirson
@ 2006-05-27 19:13 ` Yann Dirson
0 siblings, 0 replies; 6+ messages in thread
From: Yann Dirson @ 2006-05-27 19:13 UTC (permalink / raw)
To: junkio; +Cc: git
Well, you will have corrected by yourself, but I did mean
"cvsexportcommit limitations" :)
--
Yann Dirson <ydirson@altern.org> |
Debian-related: <dirson@debian.org> | Support Debian GNU/Linux:
| Freedom, Power, Stability, Gratis
http://ydirson.free.fr/ | Check <http://www.debian.org/>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH] git-cvsexportcommit.perl: fix typo
2006-05-27 16:39 ` [PATCH 3/3] Make cvsexportcommit create parent directories as needed Yann Dirson
@ 2006-06-17 17:46 ` Sven Verdoolaege
0 siblings, 0 replies; 6+ messages in thread
From: Sven Verdoolaege @ 2006-06-17 17:46 UTC (permalink / raw)
To: Yann Dirson; +Cc: junkio, git
---
git-cvsexportcommit.perl | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl
index 57088c3..d1051d0 100755
--- a/git-cvsexportcommit.perl
+++ b/git-cvsexportcommit.perl
@@ -134,7 +134,7 @@ foreach my $f (@afiles) {
and $status[0] !~ m/^File: no file /) {
$dirty = 1;
warn "File $f is already known in your CVS checkout -- perhaps it has been added by another user. Or this may indicate that it exists on a different branch. If this is the case, use -f to force the merge.\n";
- warn "Status was: $status\n";
+ warn "Status was: $status[0]\n";
}
}
foreach my $f (@mfiles, @dfiles) {
--
1.4.0-dirty
^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2006-06-17 17:46 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-05-27 16:36 [PATCH 0/3] Handful of cvsexportcommit patches Yann Dirson
2006-05-27 16:39 ` [PATCH 1/3] Do not call 'cmp' with non-existant -q flag Yann Dirson
2006-05-27 16:39 ` [PATCH 2/3] Document current cvsps limitations Yann Dirson
2006-05-27 19:13 ` Yann Dirson
2006-05-27 16:39 ` [PATCH 3/3] Make cvsexportcommit create parent directories as needed Yann Dirson
2006-06-17 17:46 ` [PATCH] git-cvsexportcommit.perl: fix typo Sven Verdoolaege
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).