我正在努力为以下问题找到可行的策略.
我们有几个依赖于我们框架的Web项目.一切都存储在我们的SVN中,并拥有自己的项目,包含所有必要的目录结构(主干,标签,分支).在一个例子中 - 我们有项目webprj01和webprj02,我们有一个框架frm01.所有这些都有通常的SVN项目结构 - 主干,标签,分支机构.
webprj01和webprj01都依赖于frm01,在现实生活中,frm01作为webprj01和webprj02的子目录存在.要在SVN中实现这一点,可以设置svn:external属性,我们可以设置frm01指向webprj01和webprj02的trunk中的/ frm01/trunk.
要进行现实生活中的编码,我们必须将所有三个项目作为工作副本进行检出,并对其自己的工作副本中的特定代码库进行更改.无法将更改从webprj01/frm01发布到SVN.更改需要在frm01工作副本中完成,并通过SVN传输到webprj01/frm01和webprj02/frm01工作副本.
此解决方案在分支时存在依赖性问题.我从SVN/webprj01/trunk创建了一个生产分支到/webprj01/branches/release-1.0.0.在处理第二个项目webprj02和frm01的两天内,我不再能够通过分支发行版1.0.0中的svn:externals进行稳定的结账.目录frm01已经指向frm01/trunk的新变化.
描述的只是问题的简化版本.在我们的现实生活中,依赖关系有时会达到五个层次.我希望能够随时从SVN获得稳定的代码.换句话说.当我将webprj01分支/标记为release-1.0.0时.我希望在创建后的一年内获得该特定标记的稳定代码.
很明显,使用svn:externals描述的策略不起作用.您对这种情况的体验是什么?没有必要使用一个结账.即使使用构建脚本或其他解决方案也会有所帮助.我正在寻找长期解决这个问题的方法,因为我们容易出错,因此不会在很大程度上取决于人类行为.