我将在这里建立一个规则,即所有svn:外部引用都应该来自另一个项目的标记,而不是来自它的主干或任何分支。这是一个合理的规则吗?或者你认为这种方法存在问题/问题?我正在努力实现一个稳定的开发环境,我想知道这个规则是否会使开发变得更慢或更难。
发布于 2009-08-07 20:42:14
您担心的是,带有"svn:externals“的项目可以在没有提交到该项目的情况下进行更改。这是一个问题,因为很难发现破坏性的更改或回滚到一个好的版本。
因此,要求svn:外部引用是稳定的是一个很好的规则。只允许引用标记是实现这一点的一种方法。另一种方法是使用-r语法将外部版本固定到固定版本。示例from the subversion book
第三方/外观-r148 http://svn.example.com/skinproj
这也将保护您免受标签更改的影响,这是一种比我喜欢的更常见的糟糕做法。
话虽如此,在稳定性和持续集成之间仍然存在权衡。通常情况下,您需要更改和修复外部依赖项。在这种情况下,您希望CI服务器尽快通知您依赖项中的某些更改破坏了您的项目,以便问题可以尽快修复。大多数持续集成服务器都支持检查外部。
出于这个原因,我认为让外部跟踪依赖项的主干头部是可以的(如果您有CI服务器的话)。在标记和创建稳定的维护分支时,只需将外部代码固定到固定版本即可。
发布于 2009-08-07 13:55:23
我认为这归结于你的软件开发实践的成熟度。您是否有变更管理流程?自动构建和报告?等。最安全的做法是链接到项目的标记构建(即lib、dll、jar等)。
如果外部项目每周发布频繁的bug修复,这可能既有帮助又有障碍。我发现,如果没有好的配置管理策略,链接到标签很容易错过关键更新。而且,当您开始“升级”依赖项时,可能会有许多小的更改,这些更改加起来会带来大量的工作。
对于相对稳定的项目,这是一个好主意。唯一的问题是,并不是所有的IDE都明确表示源目录是外部引用。在这种情况下,开发人员检入对该标记的更改就变得非常容易。在我的记忆中,Subversion还没有实现“只读”,尽管我已经使用了一个更老的版本。
发布于 2009-08-07 13:56:17
那么实际上允许外部变量的决定呢?确保你这样做是出于正确的理由。通常更好的做法是直接从原始位置签出,或者在多个地方签入依赖项。在过去,我曾被外部引用烧伤过。如果你要进行分支,它们就会成为一个真正的问题,除非你这样做的时候“冻结”外部。
但是为了回答你的问题,有一个特定的位置来放置和引用所有的外部变量是很有意义的。这意味着你可以控制那个位置的内容,人们知道当他们把东西放在那里的时候,它就会被用作外部设备,从而被许多项目所依赖。
https://stackoverflow.com/questions/1244702
复制相似问题