11

在我的 Subversion 项目中,我有几个目录,其中包含我的代码需要的其他开源项目。例如 ffmpeg、freetype、matrixssl 和其他一些。

更新 SVN 以保存这些项目之一的最新版本的最佳方法是什么?

本质上,我将执行以下操作(以 ffmpeg 为例):

1) Rename current ffmpeg folder to ffmpeg.old
2) Download new version of ffmpeg from net
3) Make sure it and my code compile and work fine together
4) Update subversion to now hold the "new" version of ffmpeg
5) Delete ffmpeg.old directory tree
4

5 回答 5

11

你可以看看 svnbook 谈论供应商分支。这正是你试图完成的

您可以使用svn_load_dirs.pl替换您的手动步骤 1-5。svn_load_dirs.pl 还将跟踪新的、移动的或删除的文件。

于 2008-10-10T20:45:36.877 回答
2

我在 CMake 中遇到了同样的情况,我将二进制 win32 版本检查到我们的供应商目录中:

branches/
trunk/
vendor/
    cmake/
        cmake-2.6.0/
        cmake-2.6.1/
        cmake-2.6.2/
        ...

然后我使用 svn:externals 来引用我正在使用的 CMake 版本。使测试升级到新版本变得非常容易,而且我使用的 CMake 版本也很清楚。

于 2008-10-10T20:36:43.713 回答
1

一切都是正确的,除了您不需要步骤 1 和 5 - 如果步骤 3 失败,则使用 svn revert 功能恢复更改。

于 2008-10-10T20:31:18.060 回答
0

我想你有两个选择。

一种)

  1. SVN 删除所有文件。
  2. 获取最新信息并使其发挥作用。
  3. SVN 添加所有文件。

专业人士:如果最新版本中不存在额外的文件,将确保不会保留它们。

缺点:可能很耗时。

二)

  1. 在旧版本上下载并安装新版本。
  2. 让它起作用。
  3. SVN 添加任何新文件。

Pro:您可以看到该工具的文件中发生了哪些变化。

缺点:最终可能会变得混乱。根据工具覆盖可能会导致错误。

于 2008-10-10T20:33:16.933 回答
0

如果某些供应商项目也使用 Subversion,您可以将svn:externals属性添加到您的分支/主干的父目录。

查看SVN 书籍以获取更多详细信息。

于 2008-10-11T06:37:36.997 回答