From: Eric Wong <normalperson@yhbt.net>
To: Rogan Dawes <lists@dawes.za.net>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Re: git-svn and renames
Date: Thu, 12 Jul 2007 02:06:35 -0700 [thread overview]
Message-ID: <20070712090635.GA18155@mayonaise> (raw)
In-Reply-To: <20070711082000.GA29371@muzzle>
Eric Wong <normalperson@yhbt.net> wrote:
> Rogan Dawes <lists@dawes.za.net> 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@yhbt.net>
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
next prev parent reply other threads:[~2007-07-12 9:06 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-07-10 13:11 git-svn and renames Rogan Dawes
2007-07-10 13:20 ` David Kastrup
2007-07-10 14:18 ` Rogan Dawes
2007-07-10 13:42 ` Florian Weimer
2007-07-10 14:01 ` Rogan Dawes
2007-07-11 8:20 ` Eric Wong
2007-07-12 9:06 ` Eric Wong [this message]
2007-07-12 16:51 ` Rogan Dawes
2007-07-16 4:53 ` [PATCH] git-svn: fix commiting renames over DAV with funky file names Eric Wong
2007-07-16 6:36 ` Rogan Dawes
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070712090635.GA18155@mayonaise \
--to=normalperson@yhbt.net \
--cc=git@vger.kernel.org \
--cc=lists@dawes.za.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).