我有一个存储库,其中有一个嵌套存储库,使用svn:externals
属性更新外部库中的文件。问题是我需要从这个库中的一个头文件中注释掉一个函数声明,并且将修改后的头文件放在根存储库中。Subversion svn:外部文件覆盖?
有没有办法可以做到这一点,以便在库更新时,它会用我的版本覆盖该特定文件?
我有一个存储库,其中有一个嵌套存储库,使用svn:externals
属性更新外部库中的文件。问题是我需要从这个库中的一个头文件中注释掉一个函数声明,并且将修改后的头文件放在根存储库中。Subversion svn:外部文件覆盖?
有没有办法可以做到这一点,以便在库更新时,它会用我的版本覆盖该特定文件?
你想要什么听起来像“供应商分支”场景对我来说。
当前仓库
root
|-- myproject
|
-- mycode
|
-- library -> svn:externals to a remote svn or your own libraryproject
建议库
root
|-- myproject
|
-- mycode
|
-- library -> copied/branched from ^/vendor/library/current (modified at this location as much as you like)
|
-- vendor
|
--library
|
--current
|
--imported-version-1.0
|
--imported-version-1.1
如何创建布局
创建^/vendor/library/current并将原始未修改的库代码下载到它中。
svn commit ^/vendor/library/current
svn cp ^/vendor/library/current ^/vendor/library/imported-version-1.0 (tag the import)
svn cp ^/vendor/library/current ^/myproject/library (branch the code into your project)
修改^/myproject的/库,并承诺
如何在没有丢失所做的修改
下载库的最新原释放到^ /供应商更新库/库/当前OVERWRITING文件。
svn commit ^/vendor/library/current (checks in the difference between the two library releases)
svn cp ^/vendor/library/current ^/vendor/library/imported-version-1.1 (tag the change)
cd /your-local-workspace/myproject/library (will be merge target)
svn merge ^/vendor/library/current (get all CHANGES from the upstream branch and apply them to your modified library)
svn commit
利润
相反分支“当前”,直接到你的项目,你可以跳转到一个“我 - 修改 - 库”目录,并通过外部组件利用它的。如果您有多个需要相同库的修改版本的项目,建议您这样做。
请记住,供应商分支在处理重命名和删除时会遇到问题,因为这些分支不能通过覆盖进行跟踪。跨版本库合并是SVN的一个不同而又相当年轻的话题。
如果你尝试一下,反馈给我们如何去:)
克里斯托夫
还没有尝试过,但它似乎会工作。如果我有麻烦,我会稍后再尝试并留下反馈意见。谢谢。 – Jengerer 2010-09-28 01:26:46
有没有内置的功能来帮助你做到这一点。
处理此问题的一般实践方法是:制作您正在使用的库的分支,然后在那里进行所需的更改,并使用新创建的分支作为根项目的外部。根据我的经验,我发现这是针对你所描述的问题的简单有效的解决方案。
+1,我想这样的选择,但我还没有找到它。 – Wrikken 2010-09-20 19:03:57