0

我正在使用 svn 在我的工作中实施更好的“工作实践”。我们已经使用 svn 几年了,但我们只是使用它,我认为它的容量是 20%;我们将它用于源代码版本控制,但我们不使用标签或分支概念。

对于未来,我们希望能够在每次修订或发布后借助标签保留应用程序代码的快照。这是帮助我找到最佳策略方向的文章这也给了我一些理解,但给我留下了更多的问题。

这是我要遵循的模式:

  • 团队不断地在主干上工作。
  • 主干在每个修订版和每个发行版都被标记,以便可以获得任何版本的快照。
  • 标记后,团队继续在主干上工作。
  • 如果团队想要尝试任何东西,他们会分支代码并在完成后将更改合并回主干。

问题是我们还有一个应用程序依赖的自制框架。在我们的上下文中,标签的帮助是能够纠正现有版本中的一个小错误,而无需将最新版本发送给客户端;后备箱中的版本。正如您所想象的,框架与应用程序不在同一组文件夹中,因此,我认为必须创建与应用程序发布相关联的框架代码标签会非常难过。考虑到框架本身也可以在没有应用程序特定要求的情况下进行更改。

出于这个原因,如果在应用程序的先前版本中发现框架中的错误,我不知道哪种是创建标签和减轻痛苦的最佳策略。目前,应用程序是指框架,该框架的库位于每个应用程序解决方案的 libs 文件夹中。在这种情况下你会怎么做?哦,我必须指出该框架有 400 000 行代码。复制和过去的解决方案将被拒绝。:)

如果我必须修复以前版本中的错误,我该如何处理标签?我知道每次我想签入标签结构时,Subversion 都会通知我。即使Subversion通知我,我是否必须使用标签创建一个分支,更正错误,然后将修改合并/签入回标签文件夹?

我的应用程序中也有依赖项,例如DataDynamics.ActiveReportsMindscape.LightSpeed,它们也是 Visual Studio 中的依赖项,因为这些应用程序集成在 IDE 中。如果我必须更正使用这些 IDE 插件以前版本的以前版本中的错误,我该如何处理?

最后,如果您能寄给我一些书籍或文章来帮助我对所有这些问题进行更深入的解释,我们将不胜感激。

非常感谢您的时间。

4

1 回答 1

1

嗯,框架是一个软件产品,框架的客户是使用它的应用程序。所以框架应该遵循与应用程序本身相同的规则。

所以这是场景。您发布了应用程序的 A3.0 版本。此版本使用框架的 F2.4 版本。该框架的 SVN 存储库有一个 F2.4 版本的标签。SVN 存储库有一个 A3.0 版本的标签。

您的应用程序的客户端在 A3.0 版本中发现了一个错误。您创建一个名为 A3.0.1 的新分支,您将在其中修复错误。框架与此错误有关。因此,您在此分支中修复应用程序的代码,将修复合并到适用的主干,准备就绪后,您进行发布并创建名为 A3.0.1 的标记。在分支和标签中,您仍在使用框架的 F2.4 版本。

客户端在 A3.0.1 中发现了另一个错误。因此,您创建了一个名为 A3.0.2 的新分支来修复此错误。经过调查,您意识到这是为框架而来的。所以你要求框架团队修复这个错误,并为你提供 F2.4.1 版本。在框架团队中,他们创建了一个分支 F2.4.1 来修复错误。一旦准备就绪,他们就会发布 F2.4.1 并为此版本创建一个标签。您在分支 A3.0.2 中包含 F2.4.1,确保错误已修复(也许您还需要在应用程序代码中进行一些更改),准备就绪后,您发布版本 A3.0.2 并为它。您的版本 A3.0.2 现在依赖于框架 F2.4.1。

关于 VS 插件,如果它们不向后兼容,除了保留旧版本之外,我没有看到任何其他解决方案。但我不会依赖 IDE,更不用说 IDE 的特定插件来创建和构建软件。IDE 应该是可互换的,至少应该有一种独立于 IDE 的软件构建方式。

于 2012-05-19T16:20:34.323 回答