是否可以重命名svn仓库中的目录。是否可以通过svndumpfilter更改存储库中的目录名称?
不创建新版本,其中将重命名该目录。
我想从第一个修订版开始更改此目录的名称。
据我了解svndumpfilter实用程序可用于此。
它是正确的吗?
有没有人可以给我一个小例子如何做到这一点?
是否可以重命名svn仓库中的目录。是否可以通过svndumpfilter更改存储库中的目录名称?
不创建新版本,其中将重命名该目录。
我想从第一个修订版开始更改此目录的名称。
据我了解svndumpfilter实用程序可用于此。
它是正确的吗?
有没有人可以给我一个小例子如何做到这一点?
你应该svnadmin的转储你的资料库,处理转储文件和svnadmin的负载在一个空的回购协议处理的文件。没有需要svndumpfilter。
svnadmin dump /repos/path > old.dump
转储文件可以用Sed或其他工具(确保二进制数据不会被破坏)进行处理并更换目录名。例如:
sed -b -e "s#^\(Node.*path\): dir1/dir_old#\1: dir1/dir_new#" old.dump > new.dump
一旦你处理完转储文件:
svnadmin create /newrepos/path
svnadmin load /newrepos/path < new.dump
我肯定建议不使用SED,因为它是不知道的文件格式,你可能很容易使SVN转储文件无法使用。
此外,如果您想要更换一点而不仅仅是一个路径,则需要更新或者直接删除SHA1和MD5校验码。
修改SVN转储并不像开始时那样微不足道。
昨天我有同样的问题,我为此写了一个小程序。我在这里公布给大家使用:
https://github.com/nlmarco/svndumptransformer
它是免费软件,并欢迎您来修改它,如果你想/需要更多的功能。
该程序仅修改文本内容(如果文件 - 例如图像 - 被标记为具有MIME类型“application/octet-stream”,则不会被修改)。而且由于它真的读取和理解SVN转储格式,因此它不会修改属于SVN转储的结构数据 - 与上面的sed命令不同。
对我来说,这个程序目前在重命名产品方面效果很好 - 导致所有路径以及项目配置文件(=> gradle)和几十个Java类被重命名。
我希望这个程序对其他人也有用。
Btw。我知道这个问题很老,但我希望我的答案现在可以帮助其他遇到这个问题的人。
不像svn dump那样使用像sed这样的简单工具来处理复杂的数据结构。没有人保证你的字符串':dir1'永远不会出现在别的地方。 – reto 2011-10-19 17:36:44
在这种情况下,加载处理后的文件时会出现“Checksum mismatch”错误。请参阅转储文件格式:http://svn.apache.org/repos/asf/subversion/trunk/notes/dump-load-format.txt – fglez 2011-10-21 07:47:07
这太棒了。有用。它是唯一的简单方法如何在svn dump中移动文件夹! – qub1n 2014-04-29 12:22:04