You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@subversion.apache.org by Geoff Hoffman <gh...@cardinalpath.com> on 2013/06/21 00:34:01 UTC

Advice for changing filename case in SVN on case insensitive system

We have a bunch of Kohana 3.2 projects in revision control, all with lower
case filenames.

We're upgrading to Kohana 3.3; one of the main changes to Kohana 3.3 is
implementing PSR-0 filename conventions, which require the class
Model_Myclass to be found in Model/Myclass.php ... in our current repo it's
in model/myclass.php (all lower case).

I thought I could just svn rename, however I'm confused by the output I'm
seeing:

svn rename myclass.php Myclass.php
svn: E155007: Path '/Full/Path/To/Myclass.php' is not a directory

Making things more confusing, we're on Macs without the extended case
sensitive filename option in OS X, and we have mixed/outdated SVN versions
across our organization: our server is running 1.6.6 and workstations a
hodgepodge of 1.6.19 - 1.7.7

I need some advice on how to deal with all of this. I thought about
installing VirtualBox and using Linux command line to do everything, but
that seems like a bit overkill.

Thanks in advance!

Geoff

-- 


Connect with us on twitter <http://twitter.com/cardinalpath>, google+<https://plus.google.com/108076800625872227241/posts>
, facebook <http://www.facebook.com/CardinalPath>, or linkedin<http://www.linkedin.com/company/cardinal-path>
.

Catch our next training in San Diego Jun 17 - 21<http://training.cardinalpath.com/google-adwords-analytics/san-diego/?utm_campaign=cp-cpt&utm_source=sig-referral&utm_medium=email&utm_content=sandiego-2013-06-17>
, Tampa Jun 24 -28<http://training.cardinalpath.com/google-adwords-analytics/tampa/?utm_campaign=cp-cpt&utm_source=sig-referral&utm_medium=email&utm_content=tampa-2013-06-24>
, Austin, Jul 8 - 12<http://training.cardinalpath.com/google-adwords-analytics/austin/?utm_campaign=cp-cpt&utm_source=sig-referral&utm_medium=email&utm_content=austin-2013-07-08>
, San Francisco Jul 15 - 19<http://training.cardinalpath.com/google-adwords-analytics/san-francisco/?utm_campaign=cp-cpt&utm_source=sig-referral&utm_medium=email&utm_content=sanfrancisco-2013-07-15#2013-07-15>
 or See All<http://training.cardinalpath.com/locations/?utm_campaign=cp-s4s&utm_source=cp-email-footer&utm_medium=email&utm_content=see-all>
.

This email, including any attachments, is for the sole use of the intended 
recipient and may contain confidential information. If you are not the 
intended recipient, please immediately notify us by reply email or by 
telephone, delete this email and destroy any copies. Thank you.


Re: Advice for changing filename case in SVN on case insensitive system

Posted by Branko Čibej <br...@wandisco.com>.
On 21.06.2013 23:48, Thomas Harold wrote:
> On 6/20/2013 6:56 PM, Geoff Hoffman wrote:
>> deleting the file from Subversion, then adding the copy with the correct
>> case.
>>
>> Question: Doesn't that blow away revision history? If I didn't care
>> about revision history I would just start over with a fresh repo.
>
> If you use "svn mv" to do the change, it does not blow away the
> revision history for the file.  You can, however, choose to have log
> output stop on copy.
>
> http://svnbook.red-bean.com/en/1.7/svn.ref.svn.html#svn.ref.svn.sw.stop_on_copy
>
>
> (In TortoiseSVN's log viewer, there is a checkbox at the bottom called
> "Stop on copy/rename" that you can turn off.)
>
>>
>> I also thought about doing full URL svn mv's but seemed like that could
>> take a very long time to do...
>>
>
> It probably will be slow, depending on which access method you use,
> and each "mv" would result in a new transaction in the repository.

Not necessarily. There's an alternative command-line tool called svnmucc
which can perform several remote renames in one transaction.

Also there's no reason for remote renames to be any slower than local
renames + svn commit.

-- Brane


-- 
Branko Čibej | Director of Subversion
WANdisco // Non-Stop Data
e. brane@wandisco.com

Re: Advice for changing filename case in SVN on case insensitive system

Posted by Thomas Harold <th...@nybeta.com>.
On 6/20/2013 6:56 PM, Geoff Hoffman wrote:
> deleting the file from Subversion, then adding the copy with the correct
> case.
>
> Question: Doesn't that blow away revision history? If I didn't care
> about revision history I would just start over with a fresh repo.

If you use "svn mv" to do the change, it does not blow away the revision 
history for the file.  You can, however, choose to have log output stop 
on copy.

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.html#svn.ref.svn.sw.stop_on_copy

(In TortoiseSVN's log viewer, there is a checkbox at the bottom called 
"Stop on copy/rename" that you can turn off.)

>
> I also thought about doing full URL svn mv's but seemed like that could
> take a very long time to do...
>

It probably will be slow, depending on which access method you use, and 
each "mv" would result in a new transaction in the repository.  I tend 
to only do server-side moves (URL to URL) for the renaming of upper 
level folders in the tree, which is a rare occurrence for us.  All other 
moves we try to do at the working copy level.

(As with everything, it's best to do a test on an inconsequential file 
before doing any mass moves.)

Re: Advice for changing filename case in SVN on case insensitive system

Posted by Andy Levy <an...@gmail.com>.
On Fri, Jun 21, 2013 at 7:03 PM, Johan Corveleyn <jc...@gmail.com> wrote:
> On Fri, Jun 21, 2013 at 12:56 AM, Geoff Hoffman
> <gh...@cardinalpath.com> wrote:
>> Yes, that helps, Dave, thanks.
>>
>> But,
>>
>> deleting the file from Subversion, then adding the copy with the correct
>> case.
>>
>> Question: Doesn't that blow away revision history? If I didn't care about
>> revision history I would just start over with a fresh repo.
>>
>> I also thought about doing full URL svn mv's but seemed like that could take
>> a very long time to do...
>>
>
> Why would that be slow? A server-side move is very quick, the files
> themselves are not transferred over the network, ...

While the operation itself may be fast, you have to execute it for
each URL individually unless you use svnmucc.

Re: Advice for changing filename case in SVN on case insensitive system

Posted by Johan Corveleyn <jc...@gmail.com>.
On Fri, Jun 21, 2013 at 12:56 AM, Geoff Hoffman
<gh...@cardinalpath.com> wrote:
> Yes, that helps, Dave, thanks.
>
> But,
>
> deleting the file from Subversion, then adding the copy with the correct
> case.
>
> Question: Doesn't that blow away revision history? If I didn't care about
> revision history I would just start over with a fresh repo.
>
> I also thought about doing full URL svn mv's but seemed like that could take
> a very long time to do...
>

Why would that be slow? A server-side move is very quick, the files
themselves are not transferred over the network, ...

This is still a good workaround for executing case-only renames when
it doesn't work in the working copy. The only problem is that you
often want to combine the rename with refactoring of related source
code (referencing the file-to-be-renamed). And that's of course not
possible when doing just a server-side rename.

> On Thu, Jun 20, 2013 at 3:45 PM, Dave Huang <kh...@azeotrope.org> wrote:
...
>> (Interesting/surprising that SVN 1.7 only fixed svn rename on Windows, but
>> not on other OSes with case-insensitive filesystems like MacOS X)

The reason for this is that APR (the Apache Portable Runtime [1], a
library svn heavily depends on for making platform specific behavior
generically accessible) does not have the required plumbing for MacOS
X.

I'm talking about the so called "truename" functionality, which, given
a filepath in a certain casing, returns the actual filepath in it's
correct on-disk casing (if present). This is implemented in APR for
Windows, but not for MacOS.

Why not? Simply because no-one has stepped up to do it. As soon as APR
supports this feature on MacOS, Subversion will be able to add support
for case-only renames on case-insensitive filesystems on MacOS.

I'm sure the nice APR folks would welcome constructive people who want
to work on this (and other things), so patches welcome I suppose :-)
...

[1] http://apr.apache.org/

--
Johan

Re: Advice for changing filename case in SVN on case insensitive system

Posted by Geoff Hoffman <gh...@cardinalpath.com>.
Yes, that helps, Dave, thanks.

But,

deleting the file from Subversion, then adding the copy with the correct
case.

Question: Doesn't that blow away revision history? If I didn't care about
revision history I would just start over with a fresh repo.

I also thought about doing full URL svn mv's but seemed like that could
take a very long time to do...





Geoff Hoffman
Solutions Architect & LAMP Engineer
phone +1 623.399.4918
mobile +1 480.231.8323
web CardinalPath.com <http://goo.gl/TuuiO>



On Thu, Jun 20, 2013 at 3:45 PM, Dave Huang <kh...@azeotrope.org> wrote:

> On 6/20/2013 5:34 PM, Geoff Hoffman wrote:
>
>> We have a bunch of Kohana 3.2 projects in revision control, all with
>> lower case filenames.
>>
>> We're upgrading to Kohana 3.3; one of the main changes to Kohana 3.3 is
>> implementing PSR-0 filename conventions, which require the class
>> Model_Myclass to be found in Model/Myclass.php ... in our current repo it's
>> in model/myclass.php (all lower case).
>>
>> I thought I could just svn rename, however I'm confused by the output I'm
>> seeing:
>>
>> svn rename myclass.php Myclass.php
>> svn: E155007: Path '/Full/Path/To/Myclass.php' is not a directory
>>
>
> Perhaps http://subversion.apache.org/**faq.html#case-change<http://subversion.apache.org/faq.html#case-change>might be helpful.
>
> (Interesting/surprising that SVN 1.7 only fixed svn rename on Windows, but
> not on other OSes with case-insensitive filesystems like MacOS X)
>

-- 


Connect with us on twitter <http://twitter.com/cardinalpath>, google+<https://plus.google.com/108076800625872227241/posts>
, facebook <http://www.facebook.com/CardinalPath>, or linkedin<http://www.linkedin.com/company/cardinal-path>
.

Catch our next training in San Diego Jun 17 - 21<http://training.cardinalpath.com/google-adwords-analytics/san-diego/?utm_campaign=cp-cpt&utm_source=sig-referral&utm_medium=email&utm_content=sandiego-2013-06-17>
, Tampa Jun 24 -28<http://training.cardinalpath.com/google-adwords-analytics/tampa/?utm_campaign=cp-cpt&utm_source=sig-referral&utm_medium=email&utm_content=tampa-2013-06-24>
, Austin, Jul 8 - 12<http://training.cardinalpath.com/google-adwords-analytics/austin/?utm_campaign=cp-cpt&utm_source=sig-referral&utm_medium=email&utm_content=austin-2013-07-08>
, San Francisco Jul 15 - 19<http://training.cardinalpath.com/google-adwords-analytics/san-francisco/?utm_campaign=cp-cpt&utm_source=sig-referral&utm_medium=email&utm_content=sanfrancisco-2013-07-15#2013-07-15>
 or See All<http://training.cardinalpath.com/locations/?utm_campaign=cp-s4s&utm_source=cp-email-footer&utm_medium=email&utm_content=see-all>
.

This email, including any attachments, is for the sole use of the intended 
recipient and may contain confidential information. If you are not the 
intended recipient, please immediately notify us by reply email or by 
telephone, delete this email and destroy any copies. Thank you.


Re: Advice for changing filename case in SVN on case insensitive system

Posted by Dave Huang <kh...@azeotrope.org>.
On 6/20/2013 5:34 PM, Geoff Hoffman wrote:
> We have a bunch of Kohana 3.2 projects in revision control, all with 
> lower case filenames.
>
> We're upgrading to Kohana 3.3; one of the main changes to Kohana 3.3 
> is implementing PSR-0 filename conventions, which require the class 
> Model_Myclass to be found in Model/Myclass.php ... in our current repo 
> it's in model/myclass.php (all lower case).
>
> I thought I could just svn rename, however I'm confused by the output 
> I'm seeing:
>
> svn rename myclass.php Myclass.php
> svn: E155007: Path '/Full/Path/To/Myclass.php' is not a directory

Perhaps http://subversion.apache.org/faq.html#case-change might be helpful.

(Interesting/surprising that SVN 1.7 only fixed svn rename on Windows, 
but not on other OSes with case-insensitive filesystems like MacOS X)