Version control 获取WinCvs中标记文件的修订号
这看起来应该很简单,但我找不到任何可行的解决方案 我需要一个CVS命令,该命令提供了应用于文件的标记的名称,它将为您提供修订号Version control 获取WinCvs中标记文件的修订号,version-control,branch,versioning,cvs,wincvs,Version Control,Branch,Versioning,Cvs,Wincvs,这看起来应该很简单,但我找不到任何可行的解决方案 我需要一个CVS命令,该命令提供了应用于文件的标记的名称,它将为您提供修订号 CVS树结构: (filename) | +--> 1.1-----(branch) | | | 1.1.1.1---(tag1) | | | 1.1.1.2---(tag2) |
CVS树结构:
(filename)
|
+--> 1.1-----(branch)
| |
| 1.1.1.1---(tag1)
| |
| 1.1.1.2---(tag2)
| |
| 1.1.1.3---(tag3)
| |
| :
1.2
|
|
:
例如:使用CVS命令,给定标记名“tag2”,如何让CVS为我提供修订号“1.1.1.2”?
我能找到的最接近的东西是使用带有
-Q
标志的log
命令,但这仍然为我提供了比我需要的更多的信息
示例:cvs-Q log-h文件名
将标记名传递给log
命令似乎没有效果
CVS版本信息:
我目前的解决方案是使用一个perl脚本来解析
log
命令的输出,但必须有一种更简单的方法…将标记名(带有-r选项)传递给log命令确实有效果,只是不是一个特别有用的效果,它的效果被“-h”隐藏
通常,获取版本
文件的修订号的最简单方法是在其中包含关键字;即:
# Thu 21 May 08:40:59 BST 2015
THISREV="$Revision$"
注意:要获取存储库版本号,必须在每次提交回购时提交此版本文件
如果您需要对特定文件进行修订,那么您基本上可以从日志的“符号名称”部分使用脚本。因此,对于r-1-0-0
您可以这样做:
cvs -Q log -h VERSION | awk '/^\tr-1-0-0:/ {print $NF;}'
没有与git descripe
命令直接等效的命令。不幸的是,我不是创建要进入存储库的文件的人,因此我无法强制在每个文件中添加版本行。现在我正在使用一个Perl脚本来解析log命令输出,但我真的希望有一个更快更简单的方法。虽然你没有完全回答我的问题,但你确实提出了一个解决方案,所以我将奖金授予你。现在我将坚持使用Perl脚本,因为你的建议对我来说是不可能的。我接受了这个答案,因为awk解决方案在Linux上确实适用于我,而且很可能不会得到更多的响应。不过,我想要一个在windows上工作的解决方案。作为普通git工具的标准部分安装的git bash
与所有msys
编译一样,都附带了gawk
编译。多年来,mawk.exe
程序一直作为本机win32程序提供。当然还有cygwin
之类的东西,对于“仅仅是一个awk命令”来说,这将是严重的过度(和复杂的)。