Re: git-svn and renames

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Eric Wong <normalperson@xxxxxxxx> wrote:
> Rogan Dawes <lists@xxxxxxxxxxxx> wrote:
> > Hi folks,
> > 
> > I am trying to push my local changes to an imported SVN project back to 
> > the SVN repo. For anyone who cares, this is the WebGoat repository which 
> > you can find at http://dawes.za.net/rogan/webgoat/webgoat.git/
> > 
> > I am trying to push it back to the primary GoogleCode repo. I have 
> > successfully managed to push 20 or so commits, but I am now running up 
> > against a problem with a renamed/moved file.
> > 
> > I moved a file from a directory to a subdirectory, and made minimal 
> > changes to this file so that it remained a valid Java class. i.e. I 
> > changed the package, and a few other minor things. As can be seen at 
> > <http://dawes.za.net/gitweb.cgi?p=rogan/webgoat/webgoat.git;a=commitdiff;h=486416188a3e49d60e1510166ac197e5e66cc4d2>, 
> >  git detects the rename with 93% similarity.
> > 
> > However, when I try to push this change to the Google repo, git-svn dies 
> > with the following error:
> > 
> > $ git svn dcommit
> > RA layer request failed: PROPFIND request failed on '/svn/trunk/ 
> > webgoat/main/project/JavaSource/org/owasp/webgoat/lessons/DefaultLessonAction.java': 
> > PROPFIND of '/svn/trunk/ 
> > webgoat/main/project/JavaSource/org/owasp/webgoat/lessons/DefaultLessonAction.java': 
> > 400 Bad Request (https://webgoat.googlecode.com) at 
> > /home/rdawes/bin/git-svn line 400
> > 
> > [Yes, those paths have a space in them, however this does not seem to 
> > have prevented me from committing the previous 20 or so changes.]
> > 
> > I noted the following in the git-svn documentation, with regards to 
> > handling renames. However, I am not renaming a directory, only a couple 
> > of files.
> 
> I've personally noted a rename issue with committing funky characters
> "#{}" in filenames (I was renaming to get rid of those funky characters of
> course).   Haven't had proper time to look into it.
> 
> Did any previous successful commits have renames in them?  You may want
> to set similarity to 100% to disable rename detection.

SVN over HTTP is most definitely behaves differently from svn:// and
file:// wrt strange file names.  I'll see if I can work on this again in
day or two, or if anybody wants to pick up where I left off, my
work-in-progress test case is below (it's currently failing, of course).

I'll have to look into how (if) svk handles it and also at the svn
command-line client.  I'm fairly sure the command-line svn client
handles it somehow...

Right now I'm getting sleepy, my vision is blurring and I'm seeing
"SVN" as "S/M" through my tired eyes...

>From 4c0165488390ad0cafb3eea700d8c873576131c2 Mon Sep 17 00:00:00 2001
From: Eric Wong <normalperson@xxxxxxxx>
Date: Thu, 12 Jul 2007 01:48:14 -0700
Subject: [PATCH] git-svn: WIP test for commiting renames over DAV with funky file names

---
 t/lib-git-svn.sh                         |   26 +++++++
 t/t9115-git-svn-dcommit-funky-renames.sh |   37 +++++++++++
 t/t9115/funky-names.dump                 |  105 ++++++++++++++++++++++++++++++
 3 files changed, 168 insertions(+), 0 deletions(-)
 create mode 100755 t/t9115-git-svn-dcommit-funky-renames.sh
 create mode 100644 t/t9115/funky-names.dump

diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh
index f6fe78c..60b26d4 100644
--- a/t/lib-git-svn.sh
+++ b/t/lib-git-svn.sh
@@ -48,3 +48,29 @@ svnrepo="file://$svnrepo"
 poke() {
 	test-chmtime +1 "$1"
 }
+
+SVN_HTTPD_MODULE_PATH=/usr/lib/apache2/modules
+SVN_HTTPD_PATH=/usr/sbin/apache2
+SVN_HTTPD_PORT=3443
+start_httpd () {
+mkdir $GIT_DIR/logs
+
+	cat > "$GIT_DIR/httpd.conf" <<EOF
+ServerName "git-svn test"
+ServerRoot "$GIT_DIR"
+DocumentRoot "$GIT_DIR"
+PidFile "$GIT_DIR/httpd.pid"
+Listen 127.0.0.1:$SVN_HTTPD_PORT
+LoadModule dav_module $SVN_HTTPD_MODULE_PATH/mod_dav.so
+LoadModule dav_svn_module $SVN_HTTPD_MODULE_PATH/mod_dav_svn.so
+<Location /svn>
+	DAV svn
+	SVNPath $rawsvnrepo
+</Location>
+EOF
+	$SVN_HTTPD_PATH -f $GIT_DIR/httpd.conf -k start
+}
+
+stop_httpd () {
+	$SVN_HTTPD_PATH -f $GIT_DIR/httpd.conf -k stop
+}
diff --git a/t/t9115-git-svn-dcommit-funky-renames.sh b/t/t9115-git-svn-dcommit-funky-renames.sh
new file mode 100755
index 0000000..b451ca2
--- /dev/null
+++ b/t/t9115-git-svn-dcommit-funky-renames.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+#
+# Copyright (c) 2007 Eric Wong
+
+
+test_description='git-svn dcommit can commit renames of files with ugly names'
+
+. ./lib-git-svn.sh
+
+test_expect_success 'load repository with strange names' "
+	svnadmin load -q $rawsvnrepo < ../t9115/funky-names.dump &&
+	start_httpd
+"
+
+test_expect_success 'init and fetch repository' "
+	git svn init http://127.0.0.1:$SVN_HTTPD_PORT/svn &&
+	git svn fetch &&
+	git reset --hard git-svn
+	"
+
+test_expect_success 'create file in existing ugly and empty dir' '
+	mkdir "#{bad_directory_name}" &&
+	echo hi > "#{bad_directory_name}/ foo" &&
+	git update-index --add "#{bad_directory_name}/ foo" &&
+	git commit -m "new file in ugly parent" &&
+	git svn dcommit
+	'
+
+test_expect_success 'rename ugly file' '
+	git mv "#{bad_directory_name}/ foo" "file name with feces" &&
+	git commit -m "rename ugly file" &&
+	git svn dcommit --rmdir
+	'
+
+stop_httpd
+
+test_done
diff --git a/t/t9115/funky-names.dump b/t/t9115/funky-names.dump
new file mode 100644
index 0000000..da0440a
--- /dev/null
+++ b/t/t9115/funky-names.dump
@@ -0,0 +1,105 @@
+SVN-fs-dump-format-version: 2
+
+UUID: 819c44fe-2bcc-4066-88e4-985e2bc0b418
+
+Revision-number: 0
+Prop-content-length: 56
+Content-length: 56
+
+K 8
+svn:date
+V 27
+2007-07-12T07:54:26.062914Z
+PROPS-END
+
+Revision-number: 1
+Prop-content-length: 152
+Content-length: 152
+
+K 7
+svn:log
+V 44
+what will those wacky people think of next?
+
+K 10
+svn:author
+V 12
+normalperson
+K 8
+svn:date
+V 27
+2007-07-12T08:00:05.011573Z
+PROPS-END
+
+Node-path:  leading space
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Node-path:  leading space file
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 5
+Text-content-md5: e4fa20c67542cdc21271e08d329397ab
+Content-length: 15
+
+PROPS-END
+ugly
+
+
+Node-path: #{bad_directory_name}
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Node-path: #{cool_name}
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 18
+Text-content-md5: 87dac40ca337dfa3dcc8911388c3ddda
+Content-length: 28
+
+PROPS-END
+strange name here
+
+
+Node-path: dir name with spaces
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
+Node-path: file name with spaces
+Node-kind: file
+Node-action: add
+Prop-content-length: 10
+Text-content-length: 7
+Text-content-md5: c1f10cfd640618484a2a475c11410fd3
+Content-length: 17
+
+PROPS-END
+spaces
+
+
+Node-path: regular_dir_name
+Node-kind: dir
+Node-action: add
+Prop-content-length: 10
+Content-length: 10
+
+PROPS-END
+
+
-- 
Eric Wong
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux