我有一个遗留的CVS存储库,应该迁移到Perforce.
对于每个模块,我需要确定该模块中存在哪些分支.
我只想要一个分支名称列表,没有标签.出于脚本原因,它必须是命令行工具.
例如(假设有一个cvs-list-branches.sh脚本):
$ ./cvs-list-branches.sh module1 HEAD dev_foobar Release_1_2 Release_1_3 $
小智.. 25
作为一个快速的黑客:)对于rlog也是如此.
cvs log -h | awk -F"[.:]" '/^\t/&&$(NF-1)==0{print $1}' | sort -u
根据bdevay改进版本,隐藏不相关的输出并左对齐结果:
cvs log -h 2>&1 | awk -F"[.:]" '/^\t/&&$(NF-1)==0{print $1}' | awk '{print $1}' | sort -u
小美化:`cvs log -h 2>&1 | awk -F"[:]"'/ ^\t/&& $(NF-1)== 0 {print $ 1}'| awk'{print $ 1}'| sort -u`它还隐藏以"cvs log:"开头的行,并将结果与左对齐. (3认同)
Oliver Giese.. 15
你可以简单地解析日志输出cvs log -h
.对于每个文件,将有一个名为的部分Symbolic names :
.其中列出的所有标签的修订号都包含零作为最后一位但是一位数是分支.例如:
$ cvs log -h Rcs file : '/cvsroot/Module/File.pas,v' Working file : 'File.pas' Head revision : 1.1 Branch revision : Locks : strict Access : Symbolic names : 1.1 : 'Release-1-0' 1.1.2.4 : 'Release-1-1' 1.1.0.2 : 'Maintenance-BRANCH' Keyword substitution : 'kv' Total revisions : 5 Selected revisions : 0 Description : ===============================================
在这个例子Maintenance-BRANCH
中显然是一个分支,因为它的修订号列为1.1.0 .2.这有时也称为魔术分支修订号.
作为一个快速的黑客:)对于rlog也是如此.
cvs log -h | awk -F"[.:]" '/^\t/&&$(NF-1)==0{print $1}' | sort -u
根据bdevay改进版本,隐藏不相关的输出并左对齐结果:
cvs log -h 2>&1 | awk -F"[.:]" '/^\t/&&$(NF-1)==0{print $1}' | awk '{print $1}' | sort -u
你可以简单地解析日志输出cvs log -h
.对于每个文件,将有一个名为的部分Symbolic names :
.其中列出的所有标签的修订号都包含零作为最后一位但是一位数是分支.例如:
$ cvs log -h Rcs file : '/cvsroot/Module/File.pas,v' Working file : 'File.pas' Head revision : 1.1 Branch revision : Locks : strict Access : Symbolic names : 1.1 : 'Release-1-0' 1.1.2.4 : 'Release-1-1' 1.1.0.2 : 'Maintenance-BRANCH' Keyword substitution : 'kv' Total revisions : 5 Selected revisions : 0 Description : ===============================================
在这个例子Maintenance-BRANCH
中显然是一个分支,因为它的修订号列为1.1.0 .2.这有时也称为魔术分支修订号.