时间:2010-05-04 12:33:35

标签: svn version-control

我在我的主页上使用了一个脚本,但我想将其本地化。此外,CSS使用来自特殊文件夹的图像,该文件夹不适合我的文件夹层次结构。 因为我不想采用这些路径和设置,所以我必须修改原始来源。

目前我的存储库看起来像这样:

     
  • /的3rdParty
  •   
         
    • /公司A
    •     
             
      • / CompanyAProduct1
      •       
                 
        • / V1_0
        •        
        • / V1_1
        •       
            
        
     
  • / MyProductA
  •   
         
    • /分支
    •    
    • /标签
    •    
    • /中继线
    •     
             
      • /导入
      •      
      • /出口
      •      
      • /源
      •     
        

通过svn:externals我将我需要的所有内容(lib,dll或代码)映射到import文件夹中。现在我想修改导入文件夹中的文件,但这也将修改原始源(据我所知)。 在我的导入文件夹中修改版本但是原始源不受影响的最佳解决方案是什么?我应该制作第三方代码的分支吗?但是我必须更新每个新版本的原始资源。

2 个答案:

答案 0 :(得分:1)

阅读Subversion红皮书版本控制与Subversion 供应商分支部分:

http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html

  

一般供应商分支机构管理程序
  管理供应商分支通常是这样的:首先,您创建一个顶级目录(例如/ vendor)来保存供应商分支。然后,将第三方代码导入该顶级目录的子目录中。然后,将该子目录复制到适当位置的主开发分支(例如/ trunk)。您始终在主开发分支中进行本地更改。对于您要跟踪的每个新版本的代码,您将其带入供应商分支并将更改合并到/ trunk中,从而解决本地更改与上游更改之间发生的任何冲突。 ... (有关具体命令和完整示例,请参阅Vendor Branches chapter of the redbook章的其余部分。)

基本上,您检查与项目分开的供应商代码,标记版本,然后将其复制到项目中。 这将允许您在保留指向原始发行版本的指针的同时进行本地修改。

优势在于,当供应商发布其产品的新版本时,红皮书会描述如何将新版本合并到您的项目中,以便您对原始版本所做的相同本地更改将应用​​于新版本。当然,这在理论上是合理的,但在实践中可能会有一些问题:

  

但事情并不总是那么简单,事实上,源文件在软件版本之间移动是很常见的。这使得确保我们的修改对新版本代码仍然有效的过程变得复杂,并且事情可能会迅速降级到我们必须在新版本中手动重新创建自定义的情况。

答案 1 :(得分:0)

是的,您应该制作第三方代码的分支,并在那里进行所需的更改。如果您有第三方的更新,您可以通过使用合并来更新新版本。