SVN 能做到吗?我已经做了一些研究,目前看来似乎不支持这种功能。
编辑
我们不想为每个发布将源代码复制到不同的文件夹中。这会导致开发人员机器上大量不必要的文件重复,并且只提供每个发布的修订号记录。我可以使用文本文档完成这项工作!
编辑2
我的目标是拥有一个单一视图,显示我发布的时间顺序,其中我可以看到每个发布之间发生的所有代码更改。这样就更容易编写发布说明了。
并不是这样的。在SVN中发布版本的一般做法是创建一个"tags"目录,每个特定版本的发布源代码都会拷贝到其中。例如:/tags/release-0.11
... 基本上是没有什么可以防止你意外破坏tags
目录的操作,但有些人会设置一些钩子函数来防止对发布标记的意外提交。
这里有一篇不错的文章介绍了如何在SVN中进行发布流程。
Richard,标签非常接近,但我想知道你需要的是否不是专门的发布分支。
为此,请从主干早期创建一个名为“Release”的分支。然后像平常一样在主干上工作,当您准备好发布时,将您在主干上的更改合并到“Release”中。这是您应该修改发布的唯一方式。
如果您愿意,可以从“Release”中打标签,但这不是必需的。
但这将为您提供一个具有主干修订版本子集的分支。使用以下命令查找发布日期:
svn log --stop-on-copy svn://server/project/branches/release
这将提供一个带版本修订的发行日期列表。若要查看每个版本中包含的内容,请执行以下操作:svn mergeinfo --show-revs=merged "svn://server/project/trunk" "svn://server/project/branches/release"@<release revision>
还要注意的是,通过这种方式工作,您不会被限制在严格顺序发布主干中的所有内容上 - 您可以挑选修订版本,如果您不想立即发布它们,则可以排除某些修订版本,但仍然包括随后的修订版本。
请看SVN手册的这些主题:
标签和分支是“写时复制”的,意味着在代码库中不会有额外的副本。通常情况下,除非需要进行分支开发,否则一个开发人员不需要本地副本。
如果为每个发布版本设置标签,则可以通过浏览代码库来查看标签。上面的链接直接讲述了命令行工具的使用方法,但是Windows上也有图形用户界面(GUI)工具,如TortoiseSVN。您可以获得历史记录、进行比较等等。
要查看发布版本所做的更改,只需显示从所需标签的修订版本到上一个标签修订版本+1的主干日志。一旦您习惯了这种方式,就会觉得很简单,而且并不需要太多额外的工作。
我们的构建工具还会将一些包含版本号信息的文件提交回主干,评论中包含构建的版本号。如果您的主要代码位于主干中,则这也可以作为版本标记(请在版本提交之间查看)。
使用提交信息+1。
为了一个项目,我创建了一个名为build的SVN用户。构建机器使用此登录名进行SVN操作。每当构建机器/进程进行构建时,它还会更新一个文件,并将SVN提交消息作为版本/其他标识符。然后,我们还为该构建创建了一个标记。这样,在主干中,我们可以看到构建何时/在哪里与其他更改交织在一起。
因此,我的建议(最简单的方法)是创建另一个名为build(或任何您想要的名称)的文件,并在构建脚本/进程中附加到该文件或仅对其进行修改,然后以发布版本名称作为提交消息将其检入/提交。简单明了。然后,它将显示在您的历史记录查询中。