在Windows上使用TortoiseSVN改变文件名大小写

32
我一直在使用Windows机作为测试服务器进行开发项目。最终我希望“上线”版本能在Linux机器上运行。但当我尝试在Linux机器上测试时,发现由于Windows对文件名大小写不敏感,而Linux则敏感,需要修改几个文件名的大小写。当我在Windows中更改文件名后,TortoiseSVN识别到文件已更改并标记了我的文件夹。但是,当我尝试提交更改时,TortoiseSVN告诉我没有做出任何更改,并且它实际上还原了我所做的全部文件名更改回原始大小写。

我的问题是,有没有简单的方法可以从Windows PC上更改文件名大小写,并在代码库中显示更改?如果可能的话,我想避免删除、提交、替换和再次提交的流程以保持我的提交干净。谢谢!


1
svn ren(重命名)有什么问题吗?在TSvn中,右键单击文件并从上下文菜单中选择“重命名”。 - Ken White
3个回答

33

从弹出菜单中使用Tortoise SVN中的重命名选项。有关详细信息,请参见此处(“移动文件和文件夹”章节)。

当您更改了多个文件名的大小写时,换句话说,您更改了文件名 - 它们不再受版本控制 - 这就是为什么SVN客户端会注意到曾经受版本控制的文件已经消失的原因(显然,这是由于SVN客户端没有得到正确通知)。

如果您不小心更改大小写或者您的IDE更改大小写时发生这种情况- 请选择两个文件,它们被显示为“丢失”和“非版本”,然后出现特殊的菜单选项修复移动。请查看这里


1
在Tortoise中使用重命名选项非常好用!我之前一直试图在Windows资源管理器中简单地重命名文件。谢谢,pmod! - Brad Turner
2
我卡在这里一段时间,直到意识到你必须提交文件夹而不是文件。也许值得添加这个提示! - Ewanw
1
@Ewanw,您应该能够提交选定的文件以及整个文件夹 - 这取决于用户。如果您只有“一个更改”,那么在选择特定文件的一般情况下,您可以更好地控制应提交什么。 - pmod
当我尝试仅更新文件时,子版本会报错。这是因为您提交了“已移动”的文件而没有提交删除的文件。它会显示错误“无法提交 X,因为它是从 Y 移动过来的,而 Y 不属于提交的一部分;移动的两个步骤必须同时提交”。 - Ewanw

21
我发现Tortoise SVN有一个自动修复文件名大小写更改的设置。默认情况下为true,因此如果您仅更改名称中字母的大小写,则它将自动为您撤消更改... 我必须补充说,这是非常烦人的默认设置。幸运的是,如果您导航到TortoiseSVN设置->高级->FixCaseRenames,您可以将其更改为false,它将不再自动更正大小写更改。设置位置

谢谢!我刚想合并两个分支,但我的开发人员使用了不同的大小写创建了相同的文件夹。我差点疯了。 - Chriszuma
2
WTF。谁认为在提交时默默地重命名我的几十个文件是个好主意?毫无意义。我不打算做几十个svn重命名——你甚至注意到了文件被重命名了,那么在重命名之前问一下怎么样?无论如何,谢谢! - Costa
如果您已启用Windows 10的SetCaseSensitiveInfo目录,则需要注意此问题,否则当Subversion重命名文件时,您将会丢失数据。 - aolszowka

1

如果有人在Windows操作系统上搜索如何使用SmartSVN进行此操作(大小写不敏感),步骤如下:

  1. 在浏览器中选择文件,在菜单“修改” -> “重命名”中使用一些临时名称(例如,在文件名末尾添加X),提交更改
  2. 在浏览器中选择文件,在菜单“修改” -> “重命名”中使用正确大小写的正确文件名,提交更改

只有在这种情况下,文件的日志才会被保存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接