From: Jason Merrill Date: Mon, 6 Apr 2009 20:37:59 +0000 (-0400) Subject: git-svn: add fetch --parent option X-Git-Tag: v1.6.3-rc0~17 X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=c2abd83fea0c332e907f5bc23bea4eeca091a86b;p=git.git git-svn: add fetch --parent option Signed-off-by: Jason Merrill Acked-By: Eric Wong --- diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt index b7b1af813..85b2c8da5 100644 --- a/Documentation/git-svn.txt +++ b/Documentation/git-svn.txt @@ -97,6 +97,9 @@ COMMANDS makes 'git-log' (even without --date=local) show the same times that `svn log` would in the local timezone. +--parent;; + Fetch only from the SVN parent of the current HEAD. + This doesn't interfere with interoperating with the Subversion repository you cloned from, but if you wish for your local Git repository to be able to interoperate with someone else's local Git diff --git a/git-svn.perl b/git-svn.perl index d9197989d..cb718b851 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()); } }