summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Jason Merrill <jason@redhat.com>2009-04-06 16:37:59 -0400
committerLibravatar Eric Wong <normalperson@yhbt.net>2009-04-11 17:53:52 -0700
commitc2abd83fea0c332e907f5bc23bea4eeca091a86b (patch)
tree67341067f3c33746c9337e88579391c69834e15d
parentUpdate draft release notes to 1.6.3 (diff)
downloadtgif-c2abd83fea0c332e907f5bc23bea4eeca091a86b.tar.xz
git-svn: add fetch --parent option
Signed-off-by: Jason Merrill <jason@redhat.com> Acked-By: Eric Wong <normalperson@yhbt.net>
-rw-r--r--Documentation/git-svn.txt3
-rwxr-xr-xgit-svn.perl18
2 files changed, 17 insertions, 4 deletions
diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index b7b1af813d..85b2c8da5d 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 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());
}
}