diff options
author | Jason Merrill <jason@redhat.com> | 2009-04-06 16:37:59 -0400 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-04-11 17:53:52 -0700 |
commit | c2abd83fea0c332e907f5bc23bea4eeca091a86b (patch) | |
tree | 67341067f3c33746c9337e88579391c69834e15d /git-svn.perl | |
parent | e37347bba651f051998f23a3701b555f1a194557 (diff) | |
download | git-c2abd83fea0c332e907f5bc23bea4eeca091a86b.tar.gz |
git-svn: add fetch --parent option
Signed-off-by: Jason Merrill <jason@redhat.com>
Acked-By: Eric Wong <normalperson@yhbt.net>
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-x | git-svn.perl | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/git-svn.perl b/git-svn.perl index d9197989d2..cb718b8519 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -63,7 +63,7 @@ $sha1_short = qr/[a-f\d]{4,40}/; my ($_stdin, $_help, $_edit, $_message, $_file, $_template, $_shared, - $_version, $_fetch_all, $_no_rebase, + $_version, $_fetch_all, $_no_rebase, $_fetch_parent, $_merge, $_strategy, $_dry_run, $_local, $_prefix, $_no_checkout, $_url, $_verbose, $_git_format, $_commit_url, $_tag); @@ -112,6 +112,7 @@ my %cmd = ( fetch => [ \&cmd_fetch, "Download new revisions from SVN", { 'revision|r=s' => \$_revision, 'fetch-all|all' => \$_fetch_all, + 'parent|p' => \$_fetch_parent, %fc_opts } ], clone => [ \&cmd_clone, "Initialize and fetch revisions", { 'revision|r=s' => \$_revision, @@ -381,12 +382,21 @@ sub cmd_fetch { } my ($remote) = @_; if (@_ > 1) { - die "Usage: $0 fetch [--all] [svn-remote]\n"; + die "Usage: $0 fetch [--all] [--parent] [svn-remote]\n"; } - $remote ||= $Git::SVN::default_repo_id; - if ($_fetch_all) { + if ($_fetch_parent) { + my ($url, $rev, $uuid, $gs) = working_head_info('HEAD'); + unless ($gs) { + die "Unable to determine upstream SVN information from ", + "working tree history\n"; + } + # just fetch, don't checkout. + $_no_checkout = 'true'; + $_fetch_all ? $gs->fetch_all : $gs->fetch; + } elsif ($_fetch_all) { cmd_multi_fetch(); } else { + $remote ||= $Git::SVN::default_repo_id; Git::SVN::fetch_all($remote, Git::SVN::read_all_remotes()); } } |