我正在使用svn 1.9.7版,而我不小心执行了以下操作:
cp dir1 / a.txt dir2 / a.txt
svn rm dir1 / a.txt
svn添加dir2 / a.txt
svn提交
我打算这样做:
svn mv dir1 / a.txt dir2 / a.txt
svn提交
结果,我再也看不到文件a.txt
的先前版本历史记录。如果我浏览回旧版本并检查a.txt
的历史记录,仍然可以看到dir1/a.txt
的历史记录。
到目前为止,基本目录中已有成千上万的新更改。是否有办法仅在新位置获取a.txt
的合并历史记录?自从我移到新位置以来,a.txt
中的更改很少。因此,如果完成工作,我不会介意复制粘贴。
P.S .:我读了很多有关similar问题的帖子,但是找不到能解决我的情况的东西。请帮忙!
答案 0 :(得分:1)
两种可能的方式:
肮脏的骇客。使用OS-cp和SVN移动创建(在小型新测试仓库中)两个修订,将这些修订转储到转储(svnadmin dump
),查找差异并在提交 new “ big”时重播安全性的回购(转储整个回购,转储修订版,将大转储加载到副本,编辑小转储,加载)
更棘手但又“自然”的方式。在“错误动作”之前将WC更新为修订版:您将在旧位置保存旧文件。分支WC,正确地将文件移动到新位置(与TRUNK中的位置相同),将从TRUNK到BRANCH 进行樱桃拾取合并,以进行修订,从而更改有问题的文件 OR (如果这些变更集包含的文件超过singe)仅合并子树-此singe文件 OR (如果要具有完整的清除历史记录)会在分支点修补后保存文件中的所有更改|应用补丁并在每个补丁的基础上提交BRANCH,返回到TRUNK的HEAD并合并分支。结果,您将获得修复的公共历史记录(其中一部分与旧的“纯主干”相反,在分支中)