我想将目录从大型Subversion存储库拆分为自己的存储库,并将文件的历史记录保存在该目录中.
我尝试了常规方法
svnadmin dump /path/to/repo > largerepo.dump cat largerepo.dump | svndumpfilter include my/directory >mydir.dump
但这不起作用,因为多年来已经移动和复制了目录,并且文件已经移入和移出存储库的其他部分.结果是很多这些:
svndumpfilter: Invalid copy source path '/some/old/path'
我尝试的下一件事是在/some/old/path
它们出现时包含那些,并且在包含很长的文件和目录列表之后,svndumpfilter完成,但导入生成的转储不会产生与当前目录相同的文件.
那么,如何在保留历史记录的同时正确地从该存储库中拆分目录?
编辑:我特别想trunk/myproj
成为一个新的存储库中的主干PLUS让新的存储库不包含其他任何旧的东西,即.任何人都不可能在拆分之前更新到旧版本并获取/查看文件.
我试过的svndumpfilter解决方案可以实现这一点,遗憾的是它不可行,因为路径/文件已被移动.ng的解决方案是不可接受的,因为它基本上是克隆+删除附加内容,这保留了所有历史记录,而不仅仅是相关的myproj历史记录.
我有一个类似的问题拆分存储库..
svndumpfilter: Invalid copy source path /dir/old_dir
我解决这个问题的方法是包括正在请求的其他旧目录,或者你知道你移动了.在我的情况下,我已将3个目录移动到另一个目录中.
例如.将文件夹A,B,C移动到文件夹D中
cat project.dump | svndumpfilter include A B C D > new.dump
这似乎解决了我的问题.我能够将文件夹D与Repo的其余部分分开.在另一方面,当排除DI没有得到错误时,我猜是因为删除D不需要链接/历史记录到A,B,C
当svndumpfilter包含的目录/文件之一最初是从未包含的树的一部分复制或移动时,会发生此问题.
要解决此问题,请使用以下脚本:svndumpfilter3
我已经尝试过至少4个不同的应用程序来做到这一点,唯一真正有用的是使用 svndumpfilterIN:
cd /usr/local/bin/ sudo wget --no-check-certificate https://raw.github.com/jasperlee108/svndumpfilterIN/master/svndumpfilter.py sudo chmod +x svndumpfilter.py # To be sure nothing will happened on the original repo : cp -au /path/to/repo /tmp/largerepo.repo/ svnadmin dump /path/to/repo > /tmp/largerepo.dump svndumpfilter.py /tmp/largerepo.dump --repo=/tmp/largerepo.repo --output-dump=/tmp/mydir.dump include my/directory
这是我尝试过但没有奏效的内容:
http://furius.ca/pubcode/pub/conf/bin/svndumpfilter3.html(来自上一个回答)
包括在另一个先前的答案中所述的有问题的路径.问题:我仍然在目标转储中有我不想要的路径
svndumpsanitizer(我仍然有目标转储中不需要的路径)