caldwell / commit-patch

Commit patches to Darcs, Git, Mercurial, Bazaar, Monotone, Subversion, or CVS
http://www.porkrind.org/commit-patch/
GNU General Public License v2.0
21 stars 8 forks source link

svn 1.7 support #4

Closed sneakypete81 closed 11 years ago

sneakypete81 commented 12 years ago

In svn 1.7, the working copy repository format was changed - there's now a single .svn repository at the top level of the working copy.

Commit-patch is unable to parse the new format, since it requires a .svn repository at the level of the commit:

commit-partial Trying back a dir: ./.., abs:/space/local_scratch/work/trunk Trying back a dir: ./../.., abs:/space/local_scratch/work Trying back a dir: ./../../../.., abs:/space/local_scratch Trying back a dir: ./../../../../.., abs:/space Trying back a dir: ./../../../../../.., abs:/ couldn't find repo at commit-partial line 126.

A quick fix for this:

--- a/commit-patch +++ b/commit-patch @@ -48,7 +48,7 @@ while (!$vc{name}) { $vc{remove} = 'cvs rm'; $vc{patcharg} = '-p0'; $vc{lsdiffarg} = [];

This should work fine with older svn versions too, although it does remove the check for a .svn repository in the current directory.

lapo-luchini commented 11 years ago

Works for me too, even when committing in a sub-sub-directory.

--- a/commit-patch      Mon Mar 11 19:48:46 2013 -0700
+++ b/commit-patch      Mon May 13 14:31:54 2013 +0200
@@ -48,7 +48,7 @@
         $vc{remove}       = 'cvs rm';
         $vc{patcharg}     = '-p0';
         $vc{lsdiffarg}    = [];
-    } elsif (-d "$repo/.svn" && $repo eq '.') {
+    } elsif (-d "$repo/.svn") {
         $vc{name}         = 'svn';
         $vc{diff}         = 'svn diff -x -u';
         $vc{commit}       = 'svn commit';
caldwell commented 11 years ago

Thanks, all. Fixed in 10d58a70b7.