{"thread":{"id":"4316","subject":"[PATCH 0/1] Tried to fix git-svn's handling of filenames with embedded '@'.","startedAt":"2006-05-28T18:15:04Z","lastAt":"2006-05-30T02:03:46Z","messageCount":9,"participants":["Seth Falcon","Junio C Hamano","Eric Wong"],"isPatch":true,"patchVersion":1,"patchTotal":1},"messages":[{"id":"20826","messageId":"m21wuem2xj.fsf@ziti.fhcrc.org","threadId":"4316","inReplyTo":null,"subject":"[PATCH 0/1] Tried to fix git-svn's handling of filenames with embedded '@'.","fromName":"Seth Falcon","fromEmail":"sethfalcon@gmail.com","sentAt":"2006-05-28T18:15:04Z","receivedAt":"2006-05-28T18:15:04Z","isPatch":true,"sender":{"key":"sethfalcon@gmail.com","avatar":"https://gravatar.com/avatar/fd62fe73d3013b12fce71d5269ec52eaca3c4cee479efc6eea3603d6f1d8bf8d?d=mp&s=160"},"body":"Hi Eric, all,\n\nI decided to give git-svn a try for a large svn project and during my\nfirst git-svn fetch operation, I'm seeing a failure that seems related\nto recent changes in the handling of svn keywords.\n\nHere is the traceback:\n\nsvn: Syntax error parsing revision '.R'\n256 at /home/sfalcon/util/scm/bin/git-svn line 1124\n        main::safe_qx('svn', 'propget', 'svn:keywords', 'Biobase/inst/Code/R/get@PKGNAME@.R') called at /home/sfalcon/util/scm/bin/git-svn line 900\n        main::do_update_index('ARRAY(0x8395840)', 'add', 'undef')\n        called at /home/sfalcon/util/scm/bin/git-svn line 926\n\nUnfortunately, my project has a file named \"get@PKGNAME@.R\" and svn\nthinks the '@.R' part is specifying a revision.  Here comes a patch\nthat got me going again.  Not sure it is the right fix, nor whether it\ncovers all places where some action will be needed.\n\nBest,\n\n+ seth\n"},{"id":"20828","messageId":"m2verqkobr.fsf@ziti.fhcrc.org","threadId":"4316","inReplyTo":"m21wuem2xj.fsf@ziti.fhcrc.org","subject":"[PATCH 1/1] Tried to fix git-svn's handling of filenames with embedded '@'.","fromName":"Seth Falcon","fromEmail":"sethfalcon@gmail.com","sentAt":"2006-05-28T18:15:52Z","receivedAt":"2006-05-28T18:15:52Z","isPatch":true,"sender":{"key":"sethfalcon@gmail.com","avatar":"https://gravatar.com/avatar/fd62fe73d3013b12fce71d5269ec52eaca3c4cee479efc6eea3603d6f1d8bf8d?d=mp&s=160"},"body":"svn has trouble parsing files with embedded '@' characters.  For\nexample,\n\n  svn propget svn:keywords foo@bar.c\n  svn: Syntax error parsing revision 'bar.c'\n\nI asked about this on #svn and the workaround suggested was to append\nan explicit revision specifier:\n\n  svn propget svn:keywords foo@bar.c@BASE\n\nThis patch appends '@BASE' to the filename in all calls to 'svn\npropget'.\n---\n contrib/git-svn/git-svn.perl |    7 ++++---\n 1 files changed, 4 insertions(+), 3 deletions(-)\n\ndiff --git a/contrib/git-svn/git-svn.perl b/contrib/git-svn/git-svn.perl\nindex b3e0684..498ffe0 100755\n--- a/contrib/git-svn/git-svn.perl\n+++ b/contrib/git-svn/git-svn.perl\n@@ -336,7 +336,7 @@ sub show_ignore {\n \tmy %ign;\n \tFile::Find::find({wanted=>sub{if(lstat $_ && -d _ && -d \"$_/.svn\"){\n \t\ts#^\\./##;\n-\t\t@{$ign{$_}} = safe_qx(qw(svn propget svn:ignore),$_);\n+\t\t@{$ign{$_}} = safe_qx(qw(svn propget svn:ignore),$_ . \"\\@BASE\");\n \t\t}}, no_chdir=>1},'.');\n \n \tprint \"\\n# /\\n\";\n@@ -860,7 +860,7 @@ sub sys { system(@_) == 0 or croak $? }\n \n sub eol_cp {\n \tmy ($from, $to) = @_;\n-\tmy $es = safe_qx(qw/svn propget svn:eol-style/, $to);\n+\tmy $es = safe_qx(qw/svn propget svn:eol-style/, $to . \"\\@BASE\");\n \topen my $rfd, '<', $from or croak $!;\n \tbinmode $rfd or croak $!;\n \topen my $wfd, '>', $to or croak $!;\n@@ -898,7 +898,8 @@ sub do_update_index {\n \twhile (my $x = <$p>) {\n \t\tchomp $x;\n \t\tif (!$no_text_base && lstat $x && ! -l _ &&\n-\t\t\t\tsafe_qx(qw/svn propget svn:keywords/,$x)) {\n+\t\t\t\tsafe_qx(qw/svn propget svn:keywords/,\n+                                        $x . \"\\@BASE\")) {\n \t\t\tmy $mode = -x _ ? 0755 : 0644;\n \t\t\tmy ($v,$d,$f) = File::Spec->splitpath($x);\n \t\t\tmy $tb = File::Spec->catfile($d, '.svn', 'tmp',\n-- \n1.3.3.gb931\n"},{"id":"20834","messageId":"7vlksldgp2.fsf@assigned-by-dhcp.cox.net","threadId":"4316","inReplyTo":"m2verqkobr.fsf@ziti.fhcrc.org","subject":"Re: [PATCH 1/1] Tried to fix git-svn's handling of filenames with embedded '@'.","fromName":"Junio C Hamano","fromEmail":"junkio@cox.net","sentAt":"2006-05-28T20:42:33Z","receivedAt":"2006-05-28T20:42:33Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Seth Falcon <sethfalcon@gmail.com> writes:\n\n> svn has trouble parsing files with embedded '@' characters.  For\n> example,\n>\n>   svn propget svn:keywords foo@bar.c\n>   svn: Syntax error parsing revision 'bar.c'\n>\n> I asked about this on #svn and the workaround suggested was to append\n> an explicit revision specifier:\n>\n>   svn propget svn:keywords foo@bar.c@BASE\n>\n> This patch appends '@BASE' to the filename in all calls to 'svn\n> propget'.\n\nEric, this sounds sane to me.  Ack?\n"},{"id":"20859","messageId":"20060529052403.GA24077@localdomain","threadId":"4316","inReplyTo":"7vlksldgp2.fsf@assigned-by-dhcp.cox.net","subject":"Re: [PATCH 1/1] Tried to fix git-svn's handling of filenames with embedded '@'.","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2006-05-29T05:25:01Z","receivedAt":"2006-05-29T05:25:01Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"Junio C Hamano <junkio@cox.net> wrote:\n> Seth Falcon <sethfalcon@gmail.com> writes:\n> \n> > svn has trouble parsing files with embedded '@' characters.  For\n> > example,\n> >\n> >   svn propget svn:keywords foo@bar.c\n> >   svn: Syntax error parsing revision 'bar.c'\n> >\n> > I asked about this on #svn and the workaround suggested was to append\n> > an explicit revision specifier:\n> >\n> >   svn propget svn:keywords foo@bar.c@BASE\n> >\n> > This patch appends '@BASE' to the filename in all calls to 'svn\n> > propget'.\n> \n> Eric, this sounds sane to me.  Ack?\n\nDoesn't work with svn 1.1 (a requirement of mine, unfortunately).  I'll\nhave a fix for that in a bit.\n\n-- \nEric Wong\n"},{"id":"20866","messageId":"20060529063543.GA8128@localdomain","threadId":"4316","inReplyTo":"m2verqkobr.fsf@ziti.fhcrc.org","subject":"Re: [PATCH 1/1] Tried to fix git-svn's handling of filenames with embedded '@'.","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2006-05-29T06:35:43Z","receivedAt":"2006-05-29T06:35:43Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"Seth: how does this work?\n\nIck, I just found out keyword killing tests don't pass with\nsvn 1.1, though...\n\n--- \n\nsvn has trouble parsing files with embedded '@' characters.  For\nexample,\n\n  svn propget svn:keywords foo@bar.c\n  svn: Syntax error parsing revision 'bar.c'\n\nI asked about this on #svn and the workaround suggested was to append\nan explicit revision specifier:\n\n  svn propget svn:keywords foo@bar.c@BASE\n\nThis patch appends '@BASE' to the filename in all calls to 'svn\npropget'.\n\nPatch originally by Seth Falcon <sethfalcon@gmail.com>\nSeth: signoff?\n\n[ew: Made to work with older svn that don't support peg revisions]\n\nSigned-off-by: Eric Wong <normalperson@yhbt.net>\n---\n contrib/git-svn/git-svn.perl |   17 +++++++++++++----\n 1 files changed, 13 insertions(+), 4 deletions(-)\n\ndiff --git a/contrib/git-svn/git-svn.perl b/contrib/git-svn/git-svn.perl\nindex b3e0684..54b93f4 100755\n--- a/contrib/git-svn/git-svn.perl\n+++ b/contrib/git-svn/git-svn.perl\n@@ -34,7 +34,7 @@ my $sha1_short = qr/[a-f\\d]{4,40}/;\n my ($_revision,$_stdin,$_no_ignore_ext,$_no_stop_copy,$_help,$_rmdir,$_edit,\n \t$_find_copies_harder, $_l, $_version, $_upgrade, $_authors);\n my (@_branch_from, %tree_map, %users);\n-my $_svn_co_url_revs;\n+my ($_svn_co_url_revs, $_svn_pg_peg_revs);\n \n my %fc_opts = ( 'no-ignore-externals' => \\$_no_ignore_ext,\n \t\t'branch|b=s' => \\@_branch_from,\n@@ -336,7 +336,7 @@ sub show_ignore {\n \tmy %ign;\n \tFile::Find::find({wanted=>sub{if(lstat $_ && -d _ && -d \"$_/.svn\"){\n \t\ts#^\\./##;\n-\t\t@{$ign{$_}} = safe_qx(qw(svn propget svn:ignore),$_);\n+\t\t@{$ign{$_}} = svn_propget_base('svn:ignore', $_);\n \t\t}}, no_chdir=>1},'.');\n \n \tprint \"\\n# /\\n\";\n@@ -860,7 +860,7 @@ sub sys { system(@_) == 0 or croak $? }\n \n sub eol_cp {\n \tmy ($from, $to) = @_;\n-\tmy $es = safe_qx(qw/svn propget svn:eol-style/, $to);\n+\tmy $es = svn_propget_base('svn:eol-style', $to);\n \topen my $rfd, '<', $from or croak $!;\n \tbinmode $rfd or croak $!;\n \topen my $wfd, '>', $to or croak $!;\n@@ -898,7 +898,7 @@ sub do_update_index {\n \twhile (my $x = <$p>) {\n \t\tchomp $x;\n \t\tif (!$no_text_base && lstat $x && ! -l _ &&\n-\t\t\t\tsafe_qx(qw/svn propget svn:keywords/,$x)) {\n+\t\t\t\tsvn_propget_base('svn:keywords', $x)) {\n \t\t\tmy $mode = -x _ ? 0755 : 0644;\n \t\t\tmy ($v,$d,$f) = File::Spec->splitpath($x);\n \t\t\tmy $tb = File::Spec->catfile($d, '.svn', 'tmp',\n@@ -1136,6 +1136,9 @@ sub svn_compat_check {\n \tif (grep /usage: checkout URL\\[\\@REV\\]/,@co_help) {\n \t\t$_svn_co_url_revs = 1;\n \t}\n+\tif (grep /\\[TARGET\\[\\@REV\\]\\.\\.\\.\\]/, `svn propget -h`) {\n+\t\t$_svn_pg_peg_revs = 1;\n+\t}\n \n \t# I really, really hope nobody hits this...\n \tunless (grep /stop-on-copy/, (safe_qx(qw(svn log -h)))) {\n@@ -1215,6 +1218,12 @@ sub load_authors {\n \tclose $authors or croak $!;\n }\n \n+sub svn_propget_base {\n+\tmy ($p, $f) = @_;\n+\t$f .= '@BASE' if $_svn_pg_peg_revs;\n+\treturn safe_qx(qw/svn propget/, $p, $f);\n+}\n+\n __END__\n \n Data structures:\n-- \n1.3.3.gef0f\n"},{"id":"20895","messageId":"m24pz8lo4o.fsf@ziti.fhcrc.org","threadId":"4316","inReplyTo":"20060529063543.GA8128@localdomain","subject":"Re: [PATCH 1/1] Tried to fix git-svn's handling of filenames with embedded '@'.","fromName":"Seth Falcon","fromEmail":"sethfalcon@gmail.com","sentAt":"2006-05-29T17:47:03Z","receivedAt":"2006-05-29T17:47:03Z","isPatch":true,"sender":{"key":"sethfalcon@gmail.com","avatar":"https://gravatar.com/avatar/fd62fe73d3013b12fce71d5269ec52eaca3c4cee479efc6eea3603d6f1d8bf8d?d=mp&s=160"},"body":"Eric Wong <normalperson@yhbt.net> writes:\n\n> Seth: how does this work?\n\nYour revised patch works for me, thanks.\n\n+ seth\n"},{"id":"20946","messageId":"1148954626387-git-send-email-normalperson@yhbt.net","threadId":"4316","inReplyTo":"20060529063543.GA8128@localdomain","subject":"[PATCH] git-svn: compat fixes for older svn and dash","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2006-05-30T02:03:44Z","receivedAt":"2006-05-30T02:03:44Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"\nThe following patches work around problems I had with testing\ngit-svn on my Debian Sarge box.\n"},{"id":"20947","messageId":"11489546262736-git-send-email-normalperson@yhbt.net","threadId":"4316","inReplyTo":"20060529063543.GA8128@localdomain","subject":"[PATCH] git-svn: t0001: workaround a heredoc bug in old versions of dash","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2006-05-30T02:03:45Z","receivedAt":"2006-05-30T02:03:45Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"The dash installed on my Debian Sarge boxes don't seem to like\n<<'' as a heredoc starter.  Recent versions of dash do not need\nthis fix.\n\nSigned-off-by: Eric Wong <normalperson@yhbt.net>\n\n---\n\n contrib/git-svn/t/t0001-contrib-git-svn-props.sh |    3 ++-\n 1 files changed, 2 insertions(+), 1 deletions(-)\n\nedbca3e1b96747330a4b1459e914b07105b3bc44\ndiff --git a/contrib/git-svn/t/t0001-contrib-git-svn-props.sh b/contrib/git-svn/t/t0001-contrib-git-svn-props.sh\nindex 6fa7889..23a5a2a 100644\n--- a/contrib/git-svn/t/t0001-contrib-git-svn-props.sh\n+++ b/contrib/git-svn/t/t0001-contrib-git-svn-props.sh\n@@ -20,9 +20,10 @@ a_empty_cr=\n a_empty_crlf=\n \n cd import\n-\tcat >> kw.c <<''\n+\tcat >> kw.c <<\\EOF\n /* Make it look like somebody copied a file from CVS into SVN: */\n /* $Id: kw.c,v 1.1.1.1 1994/03/06 00:00:00 eric Exp $ */\n+EOF\n \n \tprintf \"Hello\\r\\nWorld\\r\\n\" > crlf\n \ta_crlf=`git-hash-object -w crlf`\n-- \n1.3.2.g7d11\n"},{"id":"20948","messageId":"1148954626357-git-send-email-normalperson@yhbt.net","threadId":"4316","inReplyTo":"20060529063543.GA8128@localdomain","subject":"[PATCH] git-svn: remove assertion that broke with older versions of svn","fromName":"Eric Wong","fromEmail":"normalperson@yhbt.net","sentAt":"2006-05-30T02:03:46Z","receivedAt":"2006-05-30T02:03:46Z","isPatch":true,"sender":{"key":"e@80x24.org","avatar":null},"body":"svn < 1.3.x would display changes to keywords lines as modified\nif they aren't expanded in the working copy.  We already check\nfor changes against the git tree here, so checking against the\nsvn one is probably excessive.\n\nSigned-off-by: Eric Wong <normalperson@yhbt.net>\n\n---\n\n contrib/git-svn/git-svn.perl |    1 -\n 1 files changed, 0 insertions(+), 1 deletions(-)\n\nb430de64cb228512b9a817499203827c0ef645aa\ndiff --git a/contrib/git-svn/git-svn.perl b/contrib/git-svn/git-svn.perl\nindex b3e0684..aac8779 100755\n--- a/contrib/git-svn/git-svn.perl\n+++ b/contrib/git-svn/git-svn.perl\n@@ -567,7 +567,6 @@ sub precommit_check {\n sub svn_checkout_tree {\n \tmy ($svn_rev, $treeish) = @_;\n \tmy $from = file_to_s(\"$REV_DIR/$svn_rev\");\n-\tassert_svn_wc_clean($svn_rev);\n \tassert_tree($from);\n \tprint \"diff-tree $from $treeish\\n\";\n \tmy $pid = open my $diff_fh, '-|';\n-- \n1.3.2.g7d11\n"}]}