7

我有一个使用 subversion 进行源代码控制的 asp.net/C# 应用程序。

我的应用程序会在每个版本上自动增加它的 AssembleVersion 和 AssemblyFileVersion,这就像一个魅力,并在网站的管理端显示版本号。

当我们进行部署时,我们会跟踪 AssembleVersion 和 AssemblyFileVersion,但是,当出现问题并且我们需要回滚到某个版本时,我们不知道要在 subversion 中定位哪个版本。

我有几个想法:

  1. 将 AssembleVersion 保存为每个文件中的注释
  2. 在提交注释中有一个关键字在每次提交时被 AssembleVersion 替换(仍然需要弄清楚如何去做)

任何帮助和建议将不胜感激

更新: 选项“1”实际上是一个愚蠢的想法,因为这意味着每次我构建时,所有文件都将被标记为已更新,当我提交时,每个文件都将被更新

4

8 回答 8

4

当我构建时,我把那个构建号放在任何地方。

  • 我把它放在svn的标签中。
  • 我把它放在我构建的每个程序集的程序集元数据中。
  • 我将它附加到我的安装程序中文件名的末尾。
  • 我把它放在我部署的每个网页的页脚中。
  • 我把它放在我的报告的页脚。
  • 我把它放在我的客户端应用程序的启动画面中。
  • 我把它放在我的安装程序的欢迎屏幕上。

我唯一不放的是我的咖啡,我喝的是黑色的。

所有这些都让维护人员一眼就知道他们所看到的代码来自哪里,他们是在查看网页,还是查看资源管理器中构建的程序集之一的属性,或者其他什么。

于 2010-07-28T11:12:20.517 回答
4

如何使用标签。

http://svnbook.red-bean.com/en/1.1/ch04s06.html

于 2010-07-28T11:05:30.500 回答
3

如果您碰巧经常构建,标签并不是很有用。也许找到一种方法来更新基于 svn 版本的程序集版本呢?还包括分支名称,因为它们共享修订。

并且您应该能够在您的 ASP.NET 页面中提取程序集版本并以编程方式将其打印在页脚或其他内容中。

于 2010-07-28T11:35:52.780 回答
2

您可以使用最有意义的 AssembleVersion 或 AssemblyFileVersion 标记 Subversion 主干。

您还可以像当前在部署时跟踪 AssembleVersion 和 AssemblyFileVersion 一样跟踪 Subversion 修订号。

于 2010-07-28T11:06:14.850 回答
2

更新AssemblyVersion和后,将标签应用到源代码树AssemblyFileVersion

于 2010-07-28T11:06:44.763 回答
2

您可以“分支发布”。在创建发布版本之前,您可以分支主干,然后使用发布版本号在新分支上创建一个标签。

              + release tag
             /
            +--------------------- release branch
           /  
----------+----------------------------------------------------- trunk

这将允许您跟踪 SVN 中的所有单独版本。它还允许您在可以作为补丁发布的发布分支上进行孤立的错误修复。然后可以将错误修复合并回主干。

              +                 + patch release tag
             /                 /
            +-----------------+-+---- release branch
           /                    | merged fix into trunk...
----------+----------------------------------------------------- trunk
于 2010-07-28T11:29:52.580 回答
2

标签/分支绝对是这里推荐的方法。

您还可以(或另外)在您的 AssemblyInfo 中包含 svn 修订号。一种方法是使用来自http://msbuildtasks.tigris.org的 msbuildtasks 项目中的 AssemblyInfo 任务

欲了解更多信息,谷歌msbuild svn 修订程序集信息

然后,您可以不使用标签/分支,因为您始终可以签出特定修订版,和/或从特定修订版创建分支。

于 2010-07-28T11:39:03.383 回答
0

另一种选择是使用最后更改的版本作为您的内部版本号。这意味着每次您构建您的自动标记。使用 hudson/jenkins 很容易,因为您有一个环境变量 SVN_REVISION。问题是修订号变得非常大,关于 1.0.0.20456 与 1.0.0.20489 的走廊讨论是满嘴的。

于 2011-07-27T15:12:27.113 回答