Browse Source

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 20 years ago
parent
commit
7ee74a99b2
  1. 7
      Documentation/git-svnimport.txt
  2. 12
      git-svnimport.perl

7
Documentation/git-svnimport.txt

@ -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

12
git-svnimport.perl

@ -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;
} }

Loading…
Cancel
Save