当我确实提交了repo(从TSVN到VisualSVN服务器)时,我想在评论中添加一个我正在提交的文件的版本。
例如,我要提交的文件版本号(不是svn版本)是4.0.56.896。我想这个提交文件的版本号出现在评论/消息字段中。这将是有用的,因为现在如果我想读取文件版本号,对于给出的svn修订版,我必须从repo检出修订版,然后转到文件属性来读取它。
文件版本号已知。它可以作为执行exe文件的结果获得,或者从文本文件中获取并存储然后从文本文件中提取。
但是如何将它添加到post-commit hook脚本中的注释中?
编辑:
Claryfying:
我想要处理的问题是:
我想快速了解在特定版本中提交的.dll文件的版本是什么。
例如,作为提交的结果,修订号是r1235。在本次修订中,假设我提交了一个文件dll1.dll @ VERSION 4.0.56.896。然后我做了另一个回复的承诺。让我们说这些提交后我在修订版r1490,我需要检查dll1.dll文件的版本是什么。我现在的方式是将WC更新到修订版并右键单击该文件并从那里阅读。
所以,我认为最好准备一个post-commit钩子,将关于dll1.dll文件的VERSION的信息放在Comment / Message框中,以避免“Update WC to revision”操作。 / p>
答案 0 :(得分:1)
首先是一个直截了当的回答..
为了更改提交注释,您必须设置另一个pre-revprop-change
挂钩以允许更改修订属性。允许对修订属性进行pellmell更改可能是一种危险的做法,因为用户可以更改提交更改的人员以及何时更改。这就是为什么不允许更改版本属性。
所以,首先创建一个pre-revprop-change
钩子。示例脚本在Subversion存储库目录的pre-revprop-change.tmpl
目录中以hooks
给出。它只允许更改svn:log
修订版属性,但不会验证它是否为同一用户。
一旦你创建了这样一个钩子,添加一个改变提交注释的post-commit钩子是相当简单的。 $REVISION
和$REPO
被传递到post-commit
钩子,您只需通过svn pg --revprop svn:log -r $REV $REPO
获取提交消息然后修改它,并通过以下方式设置提交消息svn ps svn:log --revprop -r "$commit_msg" $REV
。
回到您的原始问题:
当我确实提交回购(从TSVN到VisualSVN服务器)时,我想在评论中添加我提交的其中一个文件的版本。
那是什么版本?如果它是Subversion修订版,我不会打扰。如果有一些version.txt文件,你可以从那里拉出来。如果每个文件都有不同的版本,那么如果您提交多个文件并且每个文件的版本不同,那么您只会添加混淆。
您遇到的问题是什么,这是解决该问题的最佳方法吗?解释一下,我可能会给你一个比试图动态操作提交评论更好的答案。
您想要的是找到您向客户发布的内容的方法。客户的版本为4.0.56.896,您希望能够找到该特定版本。
标记的用途。当您将软件发布给客户时,您应该对其进行标记。哎呀,你甚至可以把它标记为4.0.56.896。找到标签要比搜索日志更快,然后尝试弄清楚你是否检查过它。您也不必担心更改提交注释。
它听起来真的是你需要更好地控制你的构建和发布过程。每个版本都是客户可能拥有的吗?你做任何测试吗?是否有发布计划,或者您是否在追逐错误并不断扑灭火灾?
这就是改变控制的全部内容。我建议您查看Jenkins以帮助您构建流程。 Jenkins将根据您的每次更改自动构建和测试您的代码(如果您愿意,还可以按计划进行测试)。您可以跟踪项目的历史记录,甚至跟踪构建的状态。例如,当构建从开发测试移动到QA测试到UAT测试时,我们会更改构建描述。它可以帮助我们跟踪正在发生的事情。我们甚至通过Jenkins进行标记。
Jenkins也可以保留您的构建产品,因此您不必将它们检入Subversion。 (请告诉我你不要把你的内置二进制文件检入Subversion。这是另一种不好的做法。)您还可以将NuGet集成到构建过程中。 (NuGet可以帮助您打包可重用的DLL或.NET生成的任何内容,因此您可以在其他项目中使用它们。)
答案 1 :(得分:0)
虽然David的回答
svn help pg
只为存储库文件中的现有示例(我没有其他属性,并且懒得创建sample-repo)
>svn pg svn:keywords "^/trunk/Scartel-Yota.ini"
Date Revision Author Id
示例1
>wmic datafile where Name="FlylinkDC.exe" get Version
Version
7, 7, 503, 17574
和17574
是此文件的编译的修订版
示例2
>wmic datafile where Name="TortoiseProc.exe" get Version
Version
1.8.8.25755
我假设 25755
是修订版,但是这些数据(完全)已添加到关于屏幕,以便轻松识别已使用的应用程序版本
TortoiseSVN 1.8.8,Build 25755 - 32 Bit,2014/08/10 14:44:06