是否可以在提交前预测修订号?
这会很有用。我想在changelog中编写修订版号,并将其与提供的更改一起提交。
我知道在我的提交到达repo之前可以更改数字但是仍然很高兴知道。
我正在使用rst格式
以纯文本编写更改日志更多信息:每个提交消息都包含问题ID,这也出现在更改日志的标题中。
请坚持这个问题
我在问这是否可行,以及如果这样做有意义或其他原因。
我为什么需要这个?我需要这些信息,部署应用程序的人会知道这些更改出现在哪个版本中,这样他就可以相应地更新生产服务器。无论如何,他都会读取更改日志,因为它包含有关数据库更改和其他重要内容的信息。如果他不使用blame
来查看此条目所属的修订版,那会更容易一些。
答案 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)
答案 5 :(得分:0)
我建议在更改日志中写下您正在解决的问题编号,问题跟踪系统将自动扫描svn存储库并在问题和修订号之间建立关联(许多问题跟踪会这样做,JIRA,Redmine ,Trac等)。 此外,使用版本号是不可靠的,因为在写入更改日志期间,其他人可以在之前(已经提到)进行提交。