是否可以重命名svn存储库中的目录.
不创建将重命名此目录的新修订.
我想从第一个修订版开始更改此目录的名称.
据我所知,svndumpfilter实用程序可以用于此.
这是对的吗?
有谁能给我一些小例子怎么做?
您应该svnadmin转储您的存储库,处理转储文件并svnadmin将处理过的文件加载到空的repo中.不需要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类被重命名.
我希望这个程序对其他人也有用.
顺便说一句.我知道这个问题已经很老了,但我希望我的答案可以帮助那些遇到这个问题的人.