通常在Mercurial中如果我想标记当前版本,我会这样做:
hg tag version12
这会将我当前的修订标记为“version12”
现在假设文本“version12”位于名为buildNumbers.txt
的文件中。如何发出DOS命令以使用buildNumbers.txt
文件中包含的文本对其进行标记?
我已经尝试过将文本文件用于管道。
hg tag < buildNumbers.txt
但这导致HG再次给我帮助屏幕。这告诉我它不理解这个命令。
那么有谁知道如何从文本文件中提取版本号并将其作为参数提供?
答案 0 :(得分:4)
鉴于buildNumbers.txt只包含一行带有一个标签(没有whitepsace):
for /f %v in (buildNumbers.txt) do hg tag %v
如果buildNumbers.txt的结构更加复杂(您没有指定),请参阅for命令的“选项”。
答案 1 :(得分:1)
如果buildNumbers.txt
是oneliner,您可以使用PowerShell
脚本!
UrdaNumber.txt内容:
1.0
<强> UrdaHgTag.ps1:强>
$ver = cat .\UrdaNumber.Txt
hg tag $($ver)
如果在存储库中执行,则会将当前修订标记为1.0
。
答案 2 :(得分:1)
这会是你需要的吗?
D:\code>md htagtest
D:\code>echo bla>tagfile
D:\code>hg init
D:\code>touch a b c
D:\code>hg add a b c
D:\code>hg commit -m first
D:\code>cat tagfile | xargs hg tag
D:\code>hg log
changeset: 1:2dce938a816a
tag: tip
user: Tempos
date: Sat Sep 17 00:34:36 2011 +0300
summary: Added tag bla for changeset 349e58fd49a1
changeset: 0:349e58fd49a1
tag: bla
user: Tempos
date: Sat Sep 17 00:34:27 2011 +0300
summary: first
D:\code>
答案 3 :(得分:1)
另一个PowerShell版本,用管道在一行中完成:
cat buildnumber.txt | %{hg tag $_}
请注意,这会使用一个循环,因此如果您的文件中有多行,则必须使用Select-Object
,除非您想要多个标记
cat buildnumber.txt | Select-Object -first 1 | %{hg tag $_}