Revert "Merge branch 'sb/submodule-core-worktree'"
[gitweb.git] / git-cvsimport.perl
index 0a31ebd82020f3aca0020d357c2028d5e7b5e37b..b31613cb8aa8decd3f808d5d29e047243fa1eac6 100755 (executable)
@@ -26,6 +26,7 @@
 use IO::Pipe;
 use POSIX qw(strftime tzset dup2 ENOENT);
 use IPC::Open2;
+use Git qw(get_tz_offset);
 
 $SIG{'PIPE'}="IGNORE";
 set_timezone('UTC');
@@ -37,7 +38,7 @@ (;$)
        my $msg = shift;
        print(STDERR "Error: $msg\n") if $msg;
        print STDERR <<END;
-Usage: git cvsimport     # fetch/update GIT from CVS
+usage: git cvsimport     # fetch/update GIT from CVS
        [-o branch-for-HEAD] [-h] [-v] [-d CVSROOT] [-A author-conv-file]
        [-p opts-for-cvsps] [-P file] [-C GIT_repository] [-z fuzz] [-i] [-k]
        [-u] [-s subst] [-a] [-m] [-M regex] [-S regex] [-L commitlimit]
@@ -600,7 +601,9 @@ ($)
        my ($d) = @_;
        m#(\d{2,4})/(\d\d)/(\d\d)\s(\d\d):(\d\d)(?::(\d\d))?#
                or die "Unparseable date: $d\n";
-       my $y=$1; $y-=1900 if $y>1900;
+       my $y=$1;
+       $y+=100 if $y<70;
+       $y+=1900 if $y<1000;
        return timegm($6||0,$5,$4,$3,$2-1,$y);
 }
 
@@ -641,6 +644,7 @@ sub is_sha1 {
 
 sub get_headref ($) {
        my $name = shift;
+       $name =~ s/'/'\\''/g;
        my $r = `git rev-parse --verify '$name' 2>/dev/null`;
        return undef unless $? == 0;
        chomp $r;
@@ -864,7 +868,9 @@ sub commit {
        }
 
        set_timezone($author_tz);
-       my $commit_date = strftime("%s %z", localtime($date));
+       # $date is in the seconds since epoch format
+       my $tz_offset = get_tz_offset($date);
+       my $commit_date = "$date $tz_offset";
        set_timezone('UTC');
        $ENV{GIT_AUTHOR_NAME} = $author_name;
        $ENV{GIT_AUTHOR_EMAIL} = $author_email;
@@ -918,7 +924,7 @@ sub commit {
                # (See check_refname_component in refs.c.)
                1 while $xtag =~ s/
                        (?: \.\.        # Tag cannot contain '..'.
-                       |   \@        # Tag cannot contain '@{'.
+                       |   \@\{        # Tag cannot contain '@{'.
                        | ^ -           # Tag cannot begin with '-'.
                        |   \.lock $    # Tag cannot end with '.lock'.
                        | ^ \.          # Tag cannot begin...
@@ -1159,7 +1165,7 @@ sub commit {
                die "Fast-forward update failed: $?\n" if $?;
        }
        else {
-               system(qw(git merge cvsimport HEAD), "$remote/$opt_o");
+               system(qw(git merge -m cvsimport), "$remote/$opt_o");
                die "Could not merge $opt_o into the current branch.\n" if $?;
        }
 } else {