我想在我的SVN回购中保留第三方代码的副本。 (所以我可以运行报告和测试)
我怎样才能将某个文件夹/路径从他们的仓库同步到我的?
显然,我不能只是从他们的仓库进行出口并承诺我的,因为这会错过删除。
自动化解决方案的额外酷点。
svn:可以使用外部,但不是理想的。如果第三方回购已关闭,我将无法访问该代码。
谢谢,
答案 0 :(得分:3)
如果第三方代码驻留在SVN仓库中,您可以使用svn:externals属性。
答案 1 :(得分:2)
我使用svk完成此操作。
mirroring and svn repo with svk上有一些文件,但不是很好;也许这个程序的总结会有所帮助。
如果您不希望将其置于主目录下的默认位置,请将SVKROOT
环境变量设置为svk repo的相应路径。请注意,这将包含您使用svk所做的一切,包括多个svn repos的镜像,因此它可能会变得非常大。
svk init
初始化回购。系统会询问您是否要初始化它(如果它尚不存在)。您可能还会收到错误消息,“命令无法识别,请尝试/ usr / bin / svk帮助。”;这似乎是一个无害的错误。
设置镜像,提供要镜像的repo的路径,以及svk repo中要放置镜像的路径,例如:
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包。这有一些workarounds;我只是sudo cpan Time::Progress
从CPAN中获取了我需要的东西。
执行svk co /mirror/foo.com/project
以结帐项目。当然,您将拥有完整的历史记录和其他所有内容,只需使用svk命令而不是svn命令。
答案 2 :(得分:0)
我在想svk可能会这样做。您可以为源和目标存储库设置镜像,并有两个签出指向同一位置。
然后从源存储库中拉出并推送到目标......或类似的东西。
你应该能够通过cron作业运行的shell脚本自动化它。
答案 3 :(得分:-1)
您应该使用某些DVCS工具(例如Mercurial(使用hgsubversion或hgsvn)或Git(git-svn))制作SVN的镜像。