git-svn: allow dcommit for those who only fetch from SVM with useSvmProps
authorEric Wong <normalperson@yhbt.net>
Thu, 15 Feb 2007 02:47:16 +0000 (18:47 -0800)
committerEric Wong <normalperson@yhbt.net>
Fri, 23 Feb 2007 08:57:13 +0000 (00:57 -0800)
This allows users to use SVM (SVN::Mirror) to mirror a remote
repository to use dcommit to commit to the repository that SVM
was mirroring.  When dcommit is used in this manner, the automatic
fetch + rebase/reset does not happen; in which case the user will
have to manually invoke svm/svk, run 'git svn fetch', and finally
'git rebase'.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl

index 201418e09c3168b683052ad8fdeccaf84a9330d3..bfe5d6b97e97cba4df1196f40e8f9bad61b91d0d 100755 (executable)
@@ -309,8 +309,7 @@ sub cmd_dcommit {
                die "Unable to determine upstream SVN information from ",
                    "$head history:\n  $ctx\n";
        }
-       my $gs = Git::SVN->find_by_url($url) or
-                          die "Can't determine fetch information for $url\n";
+       my $gs = Git::SVN->find_by_url($url);
        my $last_rev;
        foreach my $d (@refs) {
                if (!verify_ref("$d~1")) {
@@ -345,6 +344,13 @@ sub cmd_dcommit {
                }
        }
        return if $_dry_run;
+       unless ($gs) {
+               warn "Could not determine fetch information for $url\n",
+                    "Will not attempt to fetch and rebase commits.\n",
+                    "This probably means you have useSvmProps and should\n",
+                    "now resync your SVN::Mirror repository.\n";
+               return;
+       }
        $gs->fetch;
        # we always want to rebase against the current HEAD, not any
        # head that was passed to us