Skip to content

Commit

Permalink
Save username -> Full Name <email@addr.es> map file
Browse files Browse the repository at this point in the history
When the user specifies a username -> Full Name <email@addr.es> map
file with the -A option, save a copy of that file as
$git_dir/svn-authors. When running git-svnimport with an existing GIT
directory, use $git_dir/svn-authors (if it exists) unless a file was
explicitly specified with -A.

Signed-off-by: Karl Hasselström <kha@treskal.com>
Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Karl Hasselström authored and Junio C Hamano committed Feb 27, 2006
1 parent 80804d0 commit d3cac2c
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 5 deletions.
5 changes: 5 additions & 0 deletions Documentation/git-svnimport.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,11 @@ When importing incrementally, you might need to edit the .git/svn2git file.
"username". If encountering a commit made by a user not in the
list, abort.

For convenience, this data is saved to $GIT_DIR/svn-authors
each time the -A option is provided, and read from that same
file each time git-svnimport is run with an existing GIT
repository without -A.

-m::
Attempt to detect merges based on the commit message. This option
will enable default regexes that try to capture the name source
Expand Down
25 changes: 20 additions & 5 deletions git-svnimport.perl
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
use strict;
use warnings;
use Getopt::Std;
use File::Copy;
use File::Spec;
use File::Temp qw(tempfile);
use File::Path qw(mkpath);
Expand Down Expand Up @@ -68,10 +69,16 @@ END
push (@mergerx, qr/$opt_M/);
}

# Absolutize filename now, since we will have chdir'ed by the time we
# get around to opening it.
$opt_A = File::Spec->rel2abs($opt_A) if $opt_A;

our %users = ();
if ($opt_A) {
die "Cannot open $opt_A\n" unless -f $opt_A;
open(my $authors,$opt_A);
our $users_file = undef;
sub read_users($) {
$users_file = File::Spec->rel2abs(@_);
die "Cannot open $users_file\n" unless -f $users_file;
open(my $authors,$users_file);
while(<$authors>) {
chomp;
next unless /^(\S+?)\s*=\s*(.+?)\s*<(.+)>\s*$/;
Expand Down Expand Up @@ -302,6 +309,14 @@ ($$)
-d $git_dir
or die "Could not create git subdir ($git_dir).\n";

my $default_authors = "$git_dir/svn-authors";
if ($opt_A) {
read_users($opt_A);
copy($opt_A,$default_authors) or die "Copy failed: $!";
} else {
read_users($default_authors) if -f $default_authors;
}

open BRANCHES,">>", "$git_dir/svn2git";

sub node_kind($$$) {
Expand Down Expand Up @@ -498,8 +513,8 @@ sub commit {

if (not defined $author) {
$author_name = $author_email = "unknown";
} elsif ($opt_A) {
die "User $author is not listed in $opt_A\n"
} elsif (defined $users_file) {
die "User $author is not listed in $users_file\n"
unless exists $users{$author};
($author_name,$author_email) = @{$users{$author}};
} elsif ($author =~ /^(.*?)\s+<(.*)>$/) {
Expand Down

0 comments on commit d3cac2c

Please sign in to comment.