2010-10-06 37 views
3

我有一些项目使用了几个可能会超时更改的外部(库)。我尝试使用trunk/branches/tags模式保持项目干净,当我制作标签(或发布)时,我想要及时冻结整个数据源,也就是当时的外部数据源。如何管理SVN中的历史外部

我能想到的两种方法可以做到这一点:

  • 我可以设置为指向一个特定的修订版本的外部组件,但似乎有点麻烦的,除非有一个自动化(一些很好的外壳命令,使所有的外部指向最新版本在那一刻?)
  • 我可以本地化的外部,如果再次有一些很好的自动化,将抓住当前的外部和“本地化”,即使它永久硬拷贝在项目中。

TortoiseSVN存在这种情况吗?或者我以某种方式破坏系统?

+0

我经常使用你提到的第一种方法,但使用tortise svn手动编辑外部。我希望我知道一个更自动化的方式来编辑外部。 – 2010-10-06 21:21:38

回答

2

据我所知,TortoiseSVN不提供这样复杂的功能。你需要实现自己的脚本来检查这些外部/改变它们,也就是你所说的自动化。

其实,我们在项目中也有同样的不便。我们有一个项目树(树干 - 我们的工作源),外部标签(其他团队工作源),他们有自己的标签,而且,我们有一个当然项目树的标签。所以,我们已经嵌套了3个,4个以上的外部命令。我们现在所做的是perl脚本(调用svn命令行工具并处理其结果),递归检查我们的项目树标记中的所有外部标记是外部标记还是不标记(这是我们自己的规则 - 在标记所有外部标记必须是标签)。这种检查的主要观点是,如果至少有一个外部指向主干 - 我们项目树背后的主要思想将变得毫无意义(基于另一个重要规则 - 从不对标签进行更改)。作为一项规则,如果违反这些规则(因此甚至无法从这些源构建应用程序),获取该特定源的状态是有问题的。

总结一下,我建议开发自己的概念,规则和使用脚本进行自动化。

+1

您提出了一个很好的观点,即“外部应始终是标签”政策。我可能会这样做。 – MPelletier 2010-10-06 21:55:22

+0

一个小的更正:标签外部必须是标签;在工作主干中,通常有适合其他干线的外部设备。这意味着需要一个特定的标记程序:1.项目主干进入分支; 2.所有外部到树干都将被外部代替为标签; 3.检查后 - 分支去标记 – pmod 2010-10-07 06:40:47

+0

我不是在质疑贵公司的政策,但同时我正在努力为自己开发一个。将项目的中继点指向外部标签会不会太糟糕?当外部变化被释放后,你的项目干线可以指向新的标签以表示它已更新。否则,你有一个项目主干指向一个潜在的不兼容的外部干线......我只是在想“大声”,辩论远未完成。 – MPelletier 2010-10-07 13:43:01