Merge part of kh/svnimport branch into master
This commit is contained in:
commit
f3a4ec48e4
@ -13,7 +13,8 @@ SYNOPSIS
|
|||||||
[ -C <GIT_repository> ] [ -i ] [ -u ] [-l limit_rev]
|
[ -C <GIT_repository> ] [ -i ] [ -u ] [-l limit_rev]
|
||||||
[ -b branch_subdir ] [ -T trunk_subdir ] [ -t tag_subdir ]
|
[ -b branch_subdir ] [ -T trunk_subdir ] [ -t tag_subdir ]
|
||||||
[ -s start_chg ] [ -m ] [ -r ] [ -M regex ]
|
[ -s start_chg ] [ -m ] [ -r ] [ -M regex ]
|
||||||
[ -I <ignorefile_name> ] <SVN_repository_URL> [ <path> ]
|
[ -I <ignorefile_name> ] [ -A <author_file> ]
|
||||||
|
<SVN_repository_URL> [ <path> ]
|
||||||
|
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
@ -71,6 +72,16 @@ When importing incrementally, you might need to edit the .git/svn2git file.
|
|||||||
syntaxes are similar enough that using the Subversion patterns
|
syntaxes are similar enough that using the Subversion patterns
|
||||||
directly with "-I .gitignore" will almost always just work.)
|
directly with "-I .gitignore" will almost always just work.)
|
||||||
|
|
||||||
|
-A <author_file>::
|
||||||
|
Read a file with lines on the form
|
||||||
|
|
||||||
|
username = User's Full Name <email@addr.es>
|
||||||
|
|
||||||
|
and use "User's Full Name <email@addr.es>" as the GIT
|
||||||
|
author and committer for Subversion commits made by
|
||||||
|
"username". If encountering a commit made by a user not in the
|
||||||
|
list, abort.
|
||||||
|
|
||||||
-m::
|
-m::
|
||||||
Attempt to detect merges based on the commit message. This option
|
Attempt to detect merges based on the commit message. This option
|
||||||
will enable default regexes that try to capture the name source
|
will enable default regexes that try to capture the name source
|
||||||
|
@ -30,7 +30,7 @@ $SIG{'PIPE'}="IGNORE";
|
|||||||
$ENV{'TZ'}="UTC";
|
$ENV{'TZ'}="UTC";
|
||||||
|
|
||||||
our($opt_h,$opt_o,$opt_v,$opt_u,$opt_C,$opt_i,$opt_m,$opt_M,$opt_t,$opt_T,
|
our($opt_h,$opt_o,$opt_v,$opt_u,$opt_C,$opt_i,$opt_m,$opt_M,$opt_t,$opt_T,
|
||||||
$opt_b,$opt_r,$opt_I,$opt_s,$opt_l,$opt_d,$opt_D);
|
$opt_b,$opt_r,$opt_I,$opt_A,$opt_s,$opt_l,$opt_d,$opt_D);
|
||||||
|
|
||||||
sub usage() {
|
sub usage() {
|
||||||
print STDERR <<END;
|
print STDERR <<END;
|
||||||
@ -38,12 +38,12 @@ Usage: ${\basename $0} # fetch/update GIT from SVN
|
|||||||
[-o branch-for-HEAD] [-h] [-v] [-l max_rev]
|
[-o branch-for-HEAD] [-h] [-v] [-l max_rev]
|
||||||
[-C GIT_repository] [-t tagname] [-T trunkname] [-b branchname]
|
[-C GIT_repository] [-t tagname] [-T trunkname] [-b branchname]
|
||||||
[-d|-D] [-i] [-u] [-r] [-I ignorefilename] [-s start_chg]
|
[-d|-D] [-i] [-u] [-r] [-I ignorefilename] [-s start_chg]
|
||||||
[-m] [-M regex] [SVN_URL]
|
[-m] [-M regex] [-A author_file] [SVN_URL]
|
||||||
END
|
END
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
getopts("b:C:dDhiI:l:mM:o:rs:t:T:uv") or usage();
|
getopts("A:b:C:dDhiI:l:mM:o:rs:t:T:uv") or usage();
|
||||||
usage if $opt_h;
|
usage if $opt_h;
|
||||||
|
|
||||||
my $tag_name = $opt_t || "tags";
|
my $tag_name = $opt_t || "tags";
|
||||||
@ -68,6 +68,19 @@ if ($opt_M) {
|
|||||||
push (@mergerx, qr/$opt_M/);
|
push (@mergerx, qr/$opt_M/);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
our %users = ();
|
||||||
|
if ($opt_A) {
|
||||||
|
die "Cannot open $opt_A\n" unless -f $opt_A;
|
||||||
|
open(my $authors,$opt_A);
|
||||||
|
while(<$authors>) {
|
||||||
|
chomp;
|
||||||
|
next unless /^(\S+?)\s*=\s*(.+?)\s*<(.+)>\s*$/;
|
||||||
|
(my $user,my $name,my $email) = ($1,$2,$3);
|
||||||
|
$users{$user} = [$name,$email];
|
||||||
|
}
|
||||||
|
close($authors);
|
||||||
|
}
|
||||||
|
|
||||||
select(STDERR); $|=1; select(STDOUT);
|
select(STDERR); $|=1; select(STDOUT);
|
||||||
|
|
||||||
|
|
||||||
@ -485,6 +498,10 @@ sub commit {
|
|||||||
|
|
||||||
if (not defined $author) {
|
if (not defined $author) {
|
||||||
$author_name = $author_email = "unknown";
|
$author_name = $author_email = "unknown";
|
||||||
|
} elsif ($opt_A) {
|
||||||
|
die "User $author is not listed in $opt_A\n"
|
||||||
|
unless exists $users{$author};
|
||||||
|
($author_name,$author_email) = @{$users{$author}};
|
||||||
} elsif ($author =~ /^(.*?)\s+<(.*)>$/) {
|
} elsif ($author =~ /^(.*?)\s+<(.*)>$/) {
|
||||||
($author_name, $author_email) = ($1, $2);
|
($author_name, $author_email) = ($1, $2);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user