我想在我的 SVN 存储库中保留一份第 3 方代码的副本。(所以我可以运行报告和测试)
我如何将某个文件夹/路径从他们的仓库同步到我的?
显然,我不能只从他们的仓库中导出并提交给我的,因为这会错过删除。
自动化解决方案的额外酷点。
svn:externals 可以使用,但并不理想。如果关闭了第 3 方回购,我将无法访问代码。
谢谢,
我想在我的 SVN 存储库中保留一份第 3 方代码的副本。(所以我可以运行报告和测试)
我如何将某个文件夹/路径从他们的仓库同步到我的?
显然,我不能只从他们的仓库中导出并提交给我的,因为这会错过删除。
自动化解决方案的额外酷点。
svn:externals 可以使用,但并不理想。如果关闭了第 3 方回购,我将无法访问代码。
谢谢,
如果第 3 方代码位于 SVN 存储库中,您可以使用svn:externals属性。
我正是用svk做的。
有一些关于使用 svk 进行镜像和 svn repo的文档,但不是很好;也许这个程序总结会有所帮助。
如果您不希望它位于主目录下的默认位置,请将您的SVKROOT
环境变量设置为您的 svk 存储库的适当路径。请注意,这将包含您使用 svk 所做的一切,包括多个 svn 存储库的镜像,因此它可以变得非常大。
svk init
初始化回购。应该询问您是否要初始化它(如果它不存在)。之后您可能还会收到一条错误消息,“无法识别命令,请尝试 /usr/bin/svk 帮助。”;这似乎是一个无害的错误。
设置你的镜像,给出你想要镜像的仓库的路径,以及你想要放置镜像的 svk 仓库中的路径,例如:
svk mirror sv+ssh://foo.com/data/repo/head/project //mirror/foo.com/project svk mirror sv+ssh://bar.com/data/repo/head/funstuff //mirror /bar.com/funstuff
运行svk sync -a
以同步所有镜像。每当您想从镜像存储库将副本更新到最新版本时,您都会运行此程序。
如果您第一次收到有关 Time::Progress 模块丢失的错误,您可能使用的是最新版本的 Fedora、Ubuntu 或其他带有损坏的 svk 包的发行版。有一些解决方法;我只是sudo cpan Time::Progress
为了从 CPAN 中获取我需要的东西。
做svk co /mirror/foo.com/project
一个检查你的项目。当然,您将拥有完整的历史记录和其他所有内容,只需使用 svk 命令而不是 svn 命令。
我在想svk可能能够做到这一点。您将为源存储库和目标存储库设置镜像,并让两个签出指向同一位置。
然后只需从源存储库中提取并推送到目标......或类似的东西。
您应该能够使用由 cron 作业运行的 shell 脚本来自动化它。
您可能应该使用一些 DVCS 工具,如 Mercurial(使用 hgsubversion 或 hgsvn)或 Git(git-svn)来制作 SVN 的镜像。