English 中文(简体)
使用乌龟HG的强制版号
原标题:Force version numbers with TortoiseHG

我们在Mercurial 版本控制下有一个 Java 应用程序 。 我们正在努力执行 < a href=" http:// en.wikipedia. org/wiki/Software_ reversing #Sconces- based_ identisters" rel= “nofollow” > reverse schema into the application, 我想知道TortoiseHG 如何帮助。 是否可以在做出承诺时, 或必须让开发者感到如此孤单, 我们目前的计划包括在我们向 UAT 推进时, 为每个版本号码创建书签 。

最佳回答

原则上,你必须在《乌龟Hg》之外这样做。 Mercurial(以及因此的《乌龟Hg》)的任务是保持你工作副本的状态,

不过,你可能会得到一点帮助:在hg enture 被运行之前,TortoiseHg可以启动这个“外边”动作,“http://www.selenic.com/mercurial/hgrc.5.html#hooks>> pre-commithook 。这是一个在hg enture 被运行之前运行的脚本,该脚本有机会更改文件。

当您尝试执行此方案时, 请记住 Mercurial 是 < 坚固 > 分散的 < / 坚固 > 版本控制系统( 这并不令人惊讶... ), 因此人们在不与中央服务器交谈的情况下做出承诺 < em> local < / em > 。 因此无法保证一个版本数字不被其他人使用。 唯一的变通办法是使用一个修改过的散列作为版本“ 数量 ”, 但是随后您不会获得更好的递增数字。 如果您有一个集中的构建服务器, 那么您就可以让版本数字加插, 但是, 然后再回到一个简单的集中的世界视图 。

最后,我要指出,Mercurial有一个code>latesttagtery 模板关键字 ,对于中央建筑机非常有用:它计算距离到最新标记,而这种距离在建筑机上一般是单调增加的。使用它就像它一样。

hg parents --template "{latesttag}+{latesttagdistance}-{node|short}"

“http://selenic.com/hg/files/tip/setup.py>setup.py file ,以获得更多灵感。

问题回答

最好让构建系统在您的发行档案和/或文件名称中插入当前版本标识符。

第一个问题是,你怎么获得这个版本标识符。基本上有三种方式:

  1. By letting the build server issue a hg id command to find out the build error.
  2. By having a version file which is populated by a changegroup hook configured in your Mercurial repo configuration.
  3. By having a version file which is populated using the keyword extension. (Not recommended!)

第一种方法是直接从Mercurial直接提取信息信息,它几乎不需要为开发者设置任何设置。 其缺点在于它将建筑系统与特定版本控制系统紧密结合。

第二种方法与存储器系统保持独立,如果您从源归档中建立,或者如果您想要手动指定版本标签,则将继续使用。下边是它确实需要您设置钩子,然而,由于建筑机器通常是特别配置的中央服务器,这不应该是一个大问题。

我提到第三种办法是为了做到完整,但我认为大家一致认为,你确实希望避免这一机制。

最好采用1和2的混合方法,先尝试第2种方法,当找不到 < code> version 文件时,再回到第1种方法。为了更好地支持 < code> hg 归档 源导出,您还可以检查 < code>.hg_archival.txt 文件 。

第二个问题是,你对构建数字使用何种价值:

  1. The version identifier (from hg id -i).
  2. The local revision number (from hg id -n).
  3. An identifier using latesttag and latesttagdistance, see Martin’s answer.

前者的优点在于它相当简单,并且独特地确定了所构建的准确版本。 虽然它不易为人读,也不能从散列中得出相对年龄。

第二个数字有一个递增数字, 但是这个数字只适用于建设机器的存储器, 所以您应该为开发者提供一个方法, 来循环这个数字, 以获得更改的 hash id, 否则它将毫无用处 。

我个人特别喜欢的第三种方法,它以人类可以读取的方式使用标记和距离提供时间信息,并另外指定精确修改的节点代号。虽然时间很长。





相关问题
Version numbering basics? [closed]

Suppose I have a web application with some basic functions. I want to market it. So I would like to assign a version number - something like 0.0.1. What I want to know is are there any constraints ...

Versioning problem

people. I hope you can help me. In our development process we have a unix based file server with SFTP access (let’s call it A). This server store a large numer of xslt files we are working on. The ...

ECM - Document Control Management / Versioning and CMS

I anticipate this is going to be a very broad question however I shall endevour to be as concise as possible without divulging too much project critical information. For quite some time I have been ...

How do other development teams approach version numbers?

Our application is quite mature, and thus we are up to version 16. However, this can give the impression that the software is old and out of touch (how many commercial applications are there with a ...

SVN avoid storing passwords in plain text?

Under a bare bones setup for SVN on windows (without using VisualSVN), as per the instructions, the passwords are to be entered in the passwd file. Does SVN provide a way to encrypt or atleast mask ...

热门标签