在我的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
你可以看看svnbook谈论 供应商分支。这正是您尝试完成的任务
您可以使用 svn_load_dirs.pl 更换手动步骤1-5。 svn_load_dirs.pl还将跟踪新的,已移动或已删除的文件。
我和CMake有相同的情况,我将二进制win32版本保存到我们的供应商目录中:
branches/
trunk/
vendor/
cmake/
cmake-2.6.0/
cmake-2.6.1/
cmake-2.6.2/
...
然后我使用svn:externals来引用我正在使用的CMake版本。使测试升级到新版本变得非常容易,而且我也清楚使用哪个版本的CMake。
你可以看看svnbook谈论 供应商分支。这正是您尝试完成的任务
您可以使用 svn_load_dirs.pl 更换手动步骤1-5。 svn_load_dirs.pl还将跟踪新的,已移动或已删除的文件。
我和CMake有相同的情况,我将二进制win32版本保存到我们的供应商目录中:
branches/
trunk/
vendor/
cmake/
cmake-2.6.0/
cmake-2.6.1/
cmake-2.6.2/
...
然后我使用svn:externals来引用我正在使用的CMake版本。使测试升级到新版本变得非常容易,而且我也清楚使用哪个版本的CMake。
一切都是正确的,除了您不需要步骤1和5 - 如果步骤3失败,则使用svn还原功能还原更改。
我想你有两个选择。
一个)
- SVN删除所有文件。
- 获取最新信息并使其发挥作用。
- SVN添加所有文件。
Pro:如果最新版本中没有多余文件,请确保不会保留额外文件。
骗局:可能很费时间。
B)
- 下载旧版本并安装新版本。
- 让它起作用。
- SVN添加任何新文件。
Pro:您可以看到该工具文件中的更改内容。
骗局:最终会变得杂乱无章。根据工具覆盖可能会导致错误。
如果某些供应商项目也使用Subversion,您可以添加
该 SVN:外部组件 属性到您的分支/主干的父目录。
看看吧 SVN书 更多细节。