如何在重命名SVN文件夹时将其拆分为自己的存储库?

Tum*_*oid 41 svn split repository

我想将目录从大型Subversion存储库拆分为自己的存储库,并将文件的历史记录保存在该目录中.

我尝试了常规方法

svnadmin dump /path/to/repo > largerepo.dump
cat largerepo.dump | svndumpfilter include my/directory >mydir.dump
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为多年来已经移动和复制了目录,并且文件已经移入和移出存储库的其他部分.结果是很多这些:

svndumpfilter: Invalid copy source path '/some/old/path'
Run Code Online (Sandbox Code Playgroud)

我尝试的下一件事是在/some/old/path它们出现时包含那些,并且在包含很长的文件和目录列表之后,svndumpfilter完成,但导入生成的转储不会产生与当前目录相同的文件.

那么,如何在保留历史记录的同时正确地从该存储库中拆分目录?

编辑:我特别想trunk/myproj成为一个新的存储库中的主干PLUS让新的存储库不包含其他任何旧的东西,即.任何人都不可能在拆分之前更新到旧版本并获取/查看文件.

我试过的svndumpfilter解决方案可以实现这一点,遗憾的是它不可行,因为路径/文件已被移动.ng解决方案是不可接受的,因为它基本上是克隆+删除附加内容,这保留了所有历史记录,而不仅仅是相关的myproj历史记录.

小智 17

我有一个类似的问题拆分存储库..

svndumpfilter: Invalid copy source path /dir/old_dir
Run Code Online (Sandbox Code Playgroud)

我解决这个问题的方法是包括正在请求的其他旧目录,或者你知道你移动了.在我的情况下,我已将3个目录移动到另一个目录中.

例如.将文件夹A,B,C移动到文件夹D中

cat project.dump | svndumpfilter include A B C D > new.dump
Run Code Online (Sandbox Code Playgroud)

这似乎解决了我的问题.我能够将文件夹D与Repo的其余部分分开.在另一方面,当排除DI没有得到错误时,我猜是因为删除D不需要链接/历史记录到A,B,C


aur*_*rte 14

当svndumpfilter包含的目录/文件之一最初是从未包含的树的一部分复制或移动时,会发生此问题.

要解决此问题,请使用以下脚本:svndumpfilter3


Ant*_* O. 6

我已经尝试过至少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
Run Code Online (Sandbox Code Playgroud)

这是我尝试过但没有奏效的内容: