2

我想在我的 SVN 存储库中保留一份第 3 方代码的副本。(所以我可以运行报告和测试)

我如何将某个文件夹/路径从他们的仓库同步到我的?

显然,我不能只从他们的仓库中导出并提交给我的,因为这会错过删除。

自动化解决方案的额外酷点。

svn:externals 可以使用,但并不理想。如果关闭了第 3 方回购,我将无法访问代码。

谢谢,

4

4 回答 4

3

如果第 3 方代码位于 SVN 存储库中,您可以使用svn:externals属性。

于 2009-03-11T10:46:55.943 回答
2

我正是用svk做的。

有一些关于使用 svk 进行镜像和 svn repo的文档,但不是很好;也许这个程序总结会有所帮助。

  1. 如果您不希望它位于主目录下的默认位置,请将您的SVKROOT环境变量设置为您的 svk 存储库的适当路径。请注意,这将包含您使用 svk 所做的一切,包括多个 svn 存储库的镜像,因此它可以变得非常大。

  2. svk init初始化回购。应该询问您是否要初始化它(如果它不存在)。之后您可能还会收到一条错误消息,“无法识别命令,请尝试 /usr/bin/svk 帮助。”;这似乎是一个无害的错误。

  3. 设置你的镜像,给出你想要镜像的仓库的路径,以及你想要放置镜像的 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

  4. 运行svk sync -a以同步所有镜像。每当您想从镜像存储库将副本更新到最新版本时,您都会运行此程序。

    如果您第一次收到有关 Time::Progress 模块丢失的错误,您可能使用的是最新版本的 Fedora、Ubuntu 或其他带有损坏的 svk 包的发行版。有一些解决方法;我只是sudo cpan Time::Progress为了从 CPAN 中获取我需要的东西。

  5. svk co /mirror/foo.com/project一个检查你的项目。当然,您将拥有完整的历史记录和其他所有内容,只需使用 svk 命令而不是 svn 命令。

于 2009-06-21T01:21:48.890 回答
0

我在想svk可能能够做到这一点。您将为源存储库和目标存储库设置镜像,并让两个签出指向同一位置。

然后只需从源存储库中提取并推送到目标......或类似的东西。

您应该能够使用由 cron 作业运行的 shell 脚本来自动化它。

于 2009-03-11T12:40:03.627 回答
-1

您可能应该使用一些 DVCS 工具,如 Mercurial(使用 hgsubversion 或 hgsvn)或 Git(git-svn)来制作 SVN 的镜像。

于 2009-03-11T11:58:31.513 回答