2011-08-23 49 views
1

是否可以预测版本号之前提交?预测版本号之前提交

这将是有益的。我想在changelog中编写修订号,并将它与它提供的更改一起提交。

我知道我犯达到回购前的数量可以改变,但它仍然会是不错的知道。

我使用的第一个格式化

更多信息写我以纯文本更新日志:每一个提交信息中包含的问题ID号,这也出现在更新日志的标题。

请坚持问题
我在问这是否可能以及如何,如果这是有道理的或其他什么。




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

+0

如果你写的changelog别人犯? – SLaks

+0

这可能是可能的,但从不100%可靠(例如,其他人可能同时提交)。你需要提供更多关于你正在使用什么来编写更改日志的信息,你是哪一个平台等等。 –

+0

@Pekka,我正在用纯文本格式编写我的更改日志,使用第一个格式 – seler

回答

2

的要求坚持这样一个问题:没有,这是不可能的 - 不可靠的,反正。

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

你可以继续,“好的,我们在修订12345,所以下一次修订是12346”,但是当你猜测(即使它需要你几毫秒),我已经成功地进行了修改,你猜错了。不要以恶意为目的,介意你 - 我没有任何机制知道你即将提交。

+0

最后答复。根据@Piskvor的说法,唯一的选择是在下一次提交时将修订版本附加到changelog。 – seler

+0

@seler:但是这会让你每次提交两次修订(最好):实际的文件,以及没有内容的修订版本与以前的修订版本号,对不对?更不用提一个触发另一个触发的危险,并触发另一个触发 - 激光模式的教科书示例(http://www.catb.org/jargon/html/S/software-laser.html)。 – Piskvor

+0

是的,那会让我有两个提交代码的代码,一个更新到更新日志。这正是我想要避免和发布我的问题的原因。 – seler

0

如果你需要跟踪问题或某些特征跟踪的版本号,那么您可以使用post-commit钩子来发送电子邮件到您的问题/功能跟踪服务器与整个提交日志信息。然后,问题跟踪器可以解析此电子邮件并将内容添加到相应问题中。关键是你提交的问题编号。换句话说,您需要以特定格式在提交日志消息中指定问题编号,以便问题跟踪器在解析电子邮件时查找它。

0

你可以做一个pre-commit钩子,你写的更新日志,并使用一个特殊的标记来表示svn的可以相应地修改变更日志的区域。

更多信息herehere

+1

在钩子脚本中不要修改事件导致客户端/服务器同步的原始来源。 – khmarbaise

+0

也许强制更新后提交获取实际的文件?这可以通过post commit钩子来完成吗? –

+0

不,导致钩子脚本在服务器上运行,而工作副本在客户端上,所以没有选择。 – khmarbaise

0

我会建议在更改写日志,您正在解决的问题数量和问题跟踪系统会自动扫描svn库,使问题和版本号之间的关联(很多问题跟踪都是这样的,JIRA,Redmine,Trac等)。 此外使用版本号是不可靠的,因为在写更改日志的过程中,其他人可以在之前(已经提到)进行提交。

+0

问题编号已在更新日志中。请回答我的问题,如果这是可能的,否则不要发布无关的答案。 – seler

5

有点哈克,但这应该在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服务器的的工作副本,你可以将其锁定,以防止任何承诺,并在年底解锁:

svn lock rootdir 
svn unlock rootdir 
+2

您的第一个stackoverflow答案?欢迎!非常好的是,你正确地设计了答案格式,它显示了对细节的关注。 –

1

这种方法避免了工作副本回购互动。

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

这将显示类似:

在顶部root目录版本库的直接查询与信息命令SVN服务器

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 

或得到一个自动增量(庆典):

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