svn import: skip initial revisions Add a flag to skip initial revisions: some SVN repositories have initial setup cruft in their logs which we might want to ignore. Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de>
diff --git a/Documentation/git-svnimport.txt b/Documentation/git-svnimport.txt index be03a65..a144c6c 100644 --- a/Documentation/git-svnimport.txt +++ b/Documentation/git-svnimport.txt
@@ -12,7 +12,7 @@ 'git-svnimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ] [ -C <GIT_repository> ] [ -i ] [ -u ] [ -b branch_subdir ] [ -t trunk_subdir ] [ -T tag_subdir ] - [ -m ] [ -M regex ] [ <SVN_repository_URL> ] + [ -s start_chg ] [ -m ] [ -M regex ] [ <SVN_repository_URL> ] DESCRIPTION @@ -36,6 +36,11 @@ The GIT repository to import to. If the directory doesn't exist, it will be created. Default is the current directory. +-s <start_rev>:: + Start importing at this SVN change number. The default is 1. ++ +When importing incementally, you might need to edit the .git/svn2git file. + -i:: Import-only: don't perform a checkout after importing. This option ensures the working directory and cache remain untouched and will
diff --git a/git-svnimport.perl b/git-svnimport.perl index 10ffb54..896222b 100755 --- a/git-svnimport.perl +++ b/git-svnimport.perl
@@ -31,19 +31,19 @@ $SIG{'PIPE'}="IGNORE"; $ENV{'TZ'}="UTC"; -our($opt_h,$opt_o,$opt_v,$opt_u,$opt_C,$opt_i,$opt_m,$opt_M,$opt_t,$opt_T,$opt_b); +our($opt_h,$opt_o,$opt_v,$opt_u,$opt_C,$opt_i,$opt_m,$opt_M,$opt_t,$opt_T,$opt_b,$opt_s); sub usage() { print STDERR <<END; Usage: ${\basename $0} # fetch/update GIT from CVS [-o branch-for-HEAD] [-h] [-v] [-C GIT_repository] [-t tagname] [-T trunkname] [-b branchname] - [-i] [-u] [-s subst] [-m] [-M regex] [SVN_URL] + [-i] [-u] [-s start_chg] [-m] [-M regex] [SVN_URL] END exit(1); } -getopts("b:C:hivmM:o:t:T:u") or usage(); +getopts("b:C:hivmM:o:s:t:T:u") or usage(); usage if $opt_h; my $tag_name = $opt_t || "tags"; @@ -192,7 +192,7 @@ my $maxnum = 0; my $last_rev = ""; my $last_branch; -my $current_rev = 0; +my $current_rev = $opt_s ? ($opt_s-1) : 0; unless(-d $git_dir) { system("git-init-db"); die "Cannot init the GIT db at $git_tree: $?\n" if $?; @@ -364,7 +364,7 @@ } my $rev; - if(defined $parent) { + if($revision > $opt_s and defined $parent) { open(H,"git-rev-parse --verify $parent |"); $rev = <H>; close(H) or do { @@ -377,7 +377,7 @@ return; } $rev = $branches{($parent eq $opt_o) ? "/" : $parent}{"LAST"}; - if($revision != 1 and not $rev) { + if($revision != $opt_s and not $rev) { print STDERR "$revision: do not know ancestor for '$parent'!\n"; return; }