From: Johan Herland <johan@herland.net>
To: Robin Rosenberg <robin.rosenberg.lists@dewire.com>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>
Subject: [PATCH] Fix 'git cvsexportcommit -w $cvsdir ...' when used with relative $GIT_DIR
Date: Tue, 12 Feb 2008 00:43:41 +0100 [thread overview]
Message-ID: <200802120043.41610.johan@herland.net> (raw)
In-Reply-To: <200802112158.16830.robin.rosenberg.lists@dewire.com>
When using the '-w $cvsdir' option to cvsexportcommit, it will chdir into
$cvsdir before executing several other git commands. If $GIT_DIR is set to
a relative path (e.g. '.'), the git commands executed by cvsexportcommit
will naturally fail.
Therefore, ensure that $GIT_DIR is absolute before the chdir to $cvsdir.
Signed-off-by: Johan Herland <johan@herland.net>
---
On Monday 11 February 2008, Robin Rosenberg wrote:
> måndagen den 11 februari 2008 skrev Johan Herland:
> > - # Remember where our GIT_DIR is before changing to CVS checkout
> > + # Oops no GIT_DIR set. Figure out for ourselves
>
> That's not an "Oops". It's perfectly normal not to have GIT_DIR set.
Of course not. Fixed.
> > + unless ($ENV{GIT_DIR} =~ m[^/]) {
>
> Hmm. C:/foo? You should probably use rel2abs in the File::Spec
> module.
Thanks. Fixed.
Have fun! :)
...Johan
git-cvsexportcommit.perl | 11 +++++------
1 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl
index d2e50c3..2a8ad1e 100755
--- a/git-cvsexportcommit.perl
+++ b/git-cvsexportcommit.perl
@@ -5,6 +5,7 @@ use Getopt::Std;
use File::Temp qw(tempdir);
use Data::Dumper;
use File::Basename qw(basename dirname);
+use File::Spec;
our ($opt_h, $opt_P, $opt_p, $opt_v, $opt_c, $opt_f, $opt_a, $opt_m, $opt_d, $opt_u, $opt_w);
@@ -15,17 +16,15 @@ $opt_h && usage();
die "Need at least one commit identifier!" unless @ARGV;
if ($opt_w) {
+ # Remember where GIT_DIR is before changing to CVS checkout
unless ($ENV{GIT_DIR}) {
- # Remember where our GIT_DIR is before changing to CVS checkout
+ # No GIT_DIR set. Figure it out for ourselves
my $gd =`git-rev-parse --git-dir`;
chomp($gd);
- if ($gd eq '.git') {
- my $wd = `pwd`;
- chomp($wd);
- $gd = $wd."/.git" ;
- }
$ENV{GIT_DIR} = $gd;
}
+ # Make sure GIT_DIR is absolute
+ $ENV{GIT_DIR} = File::Spec->rel2abs($ENV{GIT_DIR});
if (! -d $opt_w."/CVS" ) {
die "$opt_w is not a CVS checkout";
--
1.5.4.2.g41ac4
next prev parent reply other threads:[~2008-02-11 23:44 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-11 1:28 [PATCH] Fix 'git cvsexportcommit -w $cvsdir ...' when used with relative $GIT_DIR Johan Herland
2008-02-11 20:10 ` Junio C Hamano
2008-02-11 20:58 ` Robin Rosenberg
2008-02-11 23:43 ` Johan Herland [this message]
2008-02-12 20:41 ` Robin Rosenberg
2008-02-13 3:11 ` [PATCH] Add testcase for 'git cvsexportcommit -w $cvsdir ...' " Johan Herland
2008-02-13 7:58 ` Junio C Hamano
2008-02-13 9:26 ` Jakub Narebski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200802120043.41610.johan@herland.net \
--to=johan@herland.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=robin.rosenberg.lists@dewire.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).