Mercurial:使用在文本文件中定义的名称标记当前版本

时间:2011-09-16 18:00:12

标签: windows mercurial cmd

通常在Mercurial中如果我想标记当前版本,我会这样做:

hg tag version12

这会将我当前的修订标记为“version12”

现在假设文本“version12”位于名为buildNumbers.txt的文件中。如何发出DOS命令以使用buildNumbers.txt文件中包含的文本对其进行标记?

我已经尝试过将文本文件用于管道。

hg tag < buildNumbers.txt

但这导致HG再次给我帮助屏幕。这告诉我它不理解这个命令。

那么有谁知道如何从文本文件中提取版本号并将其作为参数提供?

4 个答案:

答案 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 $_}