在提交之前预测修订号

时间:2011-08-23 12:44:10

标签: svn version revision

是否可以在提交前预测修订号?

这会很有用。我想在changelog中编写修订版号,并将其与提供的更改一起提交。

我知道在我的提交到达repo之前可以更改数字但是仍然很高兴知道。

我正在使用rst格式

以纯文本编写更改日志

更多信息:每个提交消息都包含问题ID,这也出现在更改日志的标题中。

请坚持这个问题
我在问这是否可行,以及如果这样做有意义或其他原因。




我为什么需要这个?我需要这些信息,部署应用程序的人会知道这些更改出现在哪个版本中,这样他就可以相应地更新生产服务器。无论如何,他都会读取更改日志,因为它包含有关数据库更改和其他重要内容的信息。如果他不使用blame来查看此条目所属的修订版,那会更容易一些。

6 个答案:

答案 0 :(得分:6)

有点hacky但这应该适用于Linux:如果你在提示符下键入

svn up

答案的最后一行是

At revision 42.

Updated to revision 42.

其中42是整个svn服务器上最后一次提交的修订号。所以下一个提交将是这个+ 1。您可以使用此命令获取它:

svn up | sed -ne 's/revision //p' | sed -e 's/[^0-9]*//g'

如果你足够快,你可以希望没有人会在你之前提交。如果你有svn服务器的 root 的工作副本,你可以锁定它以防止任何提交并在最后解锁它:

svn lock rootdir
svn unlock rootdir

答案 1 :(得分:3)

此方法避免与工作副本 repo进行交互。

使用存储库顶部root目录中的info命令直接查询SVN服务器:

svn info https://myserver/svn/my-project-root-dir

这将显示如下内容:

Path: my-project-root-dir
URL: https://myserver/svn/my-project-root-dir
Relative URL: ^/
Repository Root: https://myserver/svn/my-project-root-dir
Repository UUID: 7f430767-c695-4424-a1c3-24180d67394b
Revision: 2255
Node Kind: directory
Last Changed Author: joe
Last Changed Rev: 2255
Last Changed Date: 2016-11-13 20:22:33 +0100

所以你的“下一个”svn版本将是2256。

让我们说:

$ svn info https://myserver/svn/my-project-root-dir | grep "Last Changed Rev: " | awk -F ": " -- '{ print $2 }'
2255

或获得自动增量(bash):

$ R=$(svn info https://myserver/svn/my-project-root-dir  | grep "Last Changed Rev: " | awk -F ": " -- '{ print $2 }'); let R+=1; echo $R
2256

答案 2 :(得分:2)

按要求坚持问题:不,这是不可能的 - 无论如何都不可靠。

这是一个鸡与蛋的问题:只有在提交成功时才会分配修订号,因此您不能将其包含在提交本身中。

你可以继续猜测“好吧,我们正在修改12345,所以下一个版本是12346”,但是你在猜测(即使你花了几毫秒) ,我已经成功地进行了修改,你猜错了。不是出于邪恶的意图,请注意 - 我没有机制知道你即将犯下。

答案 3 :(得分:0)

如果您需要问题跟踪的修订号或某些功能跟踪,则可以使用提交后挂钩通过整个提交日志消息向您的问题/功能跟踪服务器发送电子邮件。然后,问题跟踪器可以解析此电子邮件并将内容添加到相应的问题中。关键是您进行提交的问题编号。换句话说,您需要以特定格式在提交日志消息中指定问题编号,以便问题跟踪器在解析电子邮件时可以查找它。

答案 4 :(得分:0)

您可以创建预提交挂钩,在其中编写更改日志,并使用特殊标记来表示svn可以相应修改的更改日志区域。

更多信息herehere

答案 5 :(得分:0)

我建议在更改日志中写下您正在解决的问题编号,问题跟踪系统将自动扫描svn存储库并在问题和修订号之间建立关联(许多问题跟踪会这样做,JIRA,Redmine ,Trac等)。 此外,使用版本号是不可靠的,因为在写入更改日志期间,其他人可以在之前(已经提到)进行提交。