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>
maint
Matthias Urlichs 2005-10-10 15:14:21 +02:00
parent bf267d99e8
commit 7ee74a99b2
2 changed files with 12 additions and 7 deletions

View File

@ -12,7 +12,7 @@ SYNOPSIS
'git-svnimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ] 'git-svnimport' [ -o <branch-for-HEAD> ] [ -h ] [ -v ]
[ -C <GIT_repository> ] [ -i ] [ -u ] [ -C <GIT_repository> ] [ -i ] [ -u ]
[ -b branch_subdir ] [ -t trunk_subdir ] [ -T tag_subdir ] [ -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 DESCRIPTION
@ -36,6 +36,11 @@ OPTIONS
The GIT repository to import to. If the directory doesn't The GIT repository to import to. If the directory doesn't
exist, it will be created. Default is the current directory. 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:: -i::
Import-only: don't perform a checkout after importing. This option Import-only: don't perform a checkout after importing. This option
ensures the working directory and cache remain untouched and will ensures the working directory and cache remain untouched and will

View File

@ -31,19 +31,19 @@ die "Need CVN:COre 1.2.1 or better" if $SVN::Core::VERSION lt "1.2.1";
$SIG{'PIPE'}="IGNORE"; $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,$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() { sub usage() {
print STDERR <<END; print STDERR <<END;
Usage: ${\basename $0} # fetch/update GIT from CVS Usage: ${\basename $0} # fetch/update GIT from CVS
[-o branch-for-HEAD] [-h] [-v] [-o branch-for-HEAD] [-h] [-v]
[-C GIT_repository] [-t tagname] [-T trunkname] [-b branchname] [-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 END
exit(1); 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; usage if $opt_h;


my $tag_name = $opt_t || "tags"; my $tag_name = $opt_t || "tags";
@ -192,7 +192,7 @@ $ENV{GIT_INDEX_FILE} = $git_index;
my $maxnum = 0; my $maxnum = 0;
my $last_rev = ""; my $last_rev = "";
my $last_branch; my $last_branch;
my $current_rev = 0; my $current_rev = $opt_s ? ($opt_s-1) : 0;
unless(-d $git_dir) { unless(-d $git_dir) {
system("git-init-db"); system("git-init-db");
die "Cannot init the GIT db at $git_tree: $?\n" if $?; die "Cannot init the GIT db at $git_tree: $?\n" if $?;
@ -364,7 +364,7 @@ sub commit {
} }


my $rev; my $rev;
if(defined $parent) { if($revision > $opt_s and defined $parent) {
open(H,"git-rev-parse --verify $parent |"); open(H,"git-rev-parse --verify $parent |");
$rev = <H>; $rev = <H>;
close(H) or do { close(H) or do {
@ -377,7 +377,7 @@ sub commit {
return; return;
} }
$rev = $branches{($parent eq $opt_o) ? "/" : $parent}{"LAST"}; $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"; print STDERR "$revision: do not know ancestor for '$parent'!\n";
return; return;
} }