乌龟svn质量重命名文件合并

时间:2014-09-22 15:43:57

标签: svn tortoisesvn

我有一个文件夹,其中一个同事必须重命名其中的所有文件。该文件夹包含大约12000个文件,这些文件使用重命名工具重命名。现在我遇到Tortoise SVN无法识别文件的问题,因为现在名称不同。这导致了我的问题:我可以告诉subversion文件是否已重命名,以便它在文件夹中查找并查找匹配的文件?内容没有改变,只有名字。

我知道有一种方法可以告诉乌龟,如果同时选择了两个文件,缺少的条目和新文件,并选择“修复移动”,则重命名文件。但这只适用于两个文件。我有12000个文件,没有人会手动重命名。文件名仅部分更改。例如:data.00001.house.txt - > data.house.txt

任何帮助将不胜感激。 问候, 弗洛里安

2 个答案:

答案 0 :(得分:5)

我认为你必须重新访问你同事的重命名工具。希望它是一个.bat文件或可以修改的东西 更改它以便正确使用SVN MOVE命令。

i.e. instead of:
mv <oldname> <newname>
use:
SVN MOVE <oldname> <newname>

你会注意到这不是一个真正的Tortoise解决方案,而是一个通用的Subversion解决方案,使用Subversion命令行“SVN MOVE”命令。 见:http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.move.html

小规模测试以确保其有效。然后删除他所有的坏文件,还原他的更改,重新运行新的实用程序,检查它,然后你就完成了。

答案 1 :(得分:0)

如何重命名文件?这是邪恶方式的命令行描述:

copy %FILE% %DIR%
svn delete %FILE%
svn add %DIR%\%FILE%
svn commit -m"Moved %FILE% to %DIR."

在此方法中,文件将复制到新位置,并删除旧文件并添加新文件。这个问题是Subversion旧的已删除文件与新删除的文件没有任何关系。它类似于:

svn delete --keep-local foo
svn add foo
svn commit -m"Deleted and added foo"

我删除了一个名为foo的文件(并保留了本地副本),然后将其添加回来。对于Subversion,即使两个foo文件都在同一目录中,甚至还有相同的内容,他们是两个不同的文件,不共享共同的历史。

您要确保重命名工具正在执行的操作是:

svn move %FILE% %DIR%
svn commit -m"Moved %FILE% to %DIR"

您的重命名工具是如何工作的?这是64,000美元的问题。最好的办法是记录其中一个重命名的文件(使用详细模式,并确保没有设置停止复制)并查看历史记录是否跟回旧位置和名称。

如果没有,您可能需要重命名。这意味着撤消初始重命名,提交更改,然后重做重命名的正确方法。

使用命令行工具,不要依赖第三方工具。

让我们说重命名发生在修订版12345中:

C> svn merge -c -12345 .

这将撤消更改12345

现在,您必须重命名每个文件。我不是批处理专家,但对于每个文件,请使用svn move进行重命名。