我的任务是提取subversion (1.6)存储库的子目录,并将其放入自己的新存储库中。
出于几个原因,我希望使用svnsync将子目录复制到新的存储库中。我现在想确保这是安全的,因为SVNBook说(颠覆1.5)
svnsync对镜像存储库中的更改非常敏感,这些更改不是作为镜像操作的一部分进行的。为了防止这种情况发生,最好是svnsync进程是唯一允许修改镜像存储库的进程。
和(颠覆1.6)
警告不要以某种方式修改镜像存储库,使其版本历史与镜像存储库的版本历史发生偏差。唯一发生在镜像存储库上的提交和修订属性修改应该是由svnsync工具执行的修改。
如果您想使用svnsync实际保持镜像的最新情况,我假设这是有效的。
我们的用例是
有人能确认这个用例是可行的吗?
发布于 2010-11-29 16:02:06
在这种情况下,我总是倾向于为这类任务使用dump->filter->load方法,因为它是最干净的路由。(虽然我意识到在大型存储库上花费了相当长的时间)。在你的案子里有什么可以排除的吗?
也就是说,在同步之后,您将得到一个完整的、功能良好的存储库,因此它应该可以工作。为了保持干净,在第一次同步之后,在镜像回购上运行以下命令:
svnlook pl -v --revprop -r0 <path to repo root>你会看到三个svn:同步..。由svnsync init命令创建的属性。我建议在你写之前把它们删除。我不认为这是绝对必要的,但它应该防止事故发生(例如,在这两个存储库各自为政之后,尝试重新同步)。
不过,我还是会按dump>filter->load作为正确的路线.(噢,标记旧子目录,然后从头中删除它)。
发布于 2010-12-02 17:03:55
由于我必须稍微调整目标存储库中的目录,下面是我最后要做的事情(旧的repo有一个路径前缀/SOME/,我想去掉它):
svnsync init [new repo URL] [old repo URL]svnsync sync [new repo URL]svnadmin dump [new repo PATH] >REPO.dumpsvndumptool.py merge -i REPO.dump -s '^SOME\/DIR\/' '' -x SOME -x SOME/DIR -o REPO_filtered.dumpmv [new repo PATH] [away]svnadmin create [new repo PATH]svnadmin load --force-uuid [new repo PATH] <REPO_filtered.dumphttps://serverfault.com/questions/206992
复制相似问题