diff options
author | Eric Wong <normalperson@yhbt.net> | 2006-02-16 18:13:32 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-02-17 01:01:24 -0800 |
commit | defc649229eef2461ad1c2fea53985b8c10fd3db (patch) | |
tree | 1a2ac72dccf4b6e257596b482b2ed5a7b0cea584 /contrib | |
parent | git-svn: fix revision order when XML::Simple is not loaded (diff) | |
download | tgif-defc649229eef2461ad1c2fea53985b8c10fd3db.tar.xz |
git-svn: ensure fetch always works chronologically.
We run svn log against a URL without a working copy for the first fetch,
so we end up a log that's sorted from highest to lowest. That's bad, we
always want lowest to highest. Just default to --revision 0:HEAD now if
-r isn't specified for the first fetch.
Also sort the revisions after we get them just in case somebody
accidentally reverses the argument to --revision for whatever reason.
Thanks again to Emmanuel Guerin for helping me find this.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'contrib')
-rwxr-xr-x | contrib/git-svn/git-svn | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/contrib/git-svn/git-svn b/contrib/git-svn/git-svn index ddd9579801..2caf0570ff 100755 --- a/contrib/git-svn/git-svn +++ b/contrib/git-svn/git-svn @@ -168,14 +168,15 @@ sub fetch { my (@parents) = @_; $SVN_URL ||= file_to_s("$GIT_DIR/$GIT_SVN/info/url"); my @log_args = -d $SVN_WC ? ($SVN_WC) : ($SVN_URL); - if (-d $SVN_WC && !$_revision) { - $_revision = 'BASE:HEAD'; + unless ($_revision) { + $_revision = -d $SVN_WC ? 'BASE:HEAD' : '0:HEAD'; } - push @log_args, "-r$_revision" if $_revision; + push @log_args, "-r$_revision"; push @log_args, '--stop-on-copy' unless $_no_stop_copy; eval { require XML::Simple or croak $! }; my $svn_log = $@ ? svn_log_raw(@log_args) : svn_log_xml(@log_args); + @$svn_log = sort { $a->{revision} <=> $b->{revision} } @$svn_log; my $base = shift @$svn_log or croak "No base revision!\n"; my $last_commit = undef; |