如何解决如何从Powershell中获取最新的Mercurial标签
|| 如果我从DOS提示符下运行以下命令: hg父母--template {latesttag} 然后我得到了按预期返回的最新标签值。但是,如果我在Powershell控制台中运行相同的命令,则会出现以下错误: hg父母:选项-i无法识别 我需要在Powershell中运行命令,以便将其结果作为变量使用。知道我需要做什么才能使命令运行吗?解决方法
您只需要用引号将ѭ0括起来即可,以便Powershell知道它是一个字符串:
hg parents --template \'{latesttag}\'
但是,有时候,通过Powershell解析事物的方式,您必须双重确保双引号能够保留(例如,传递包含空格但应为1的参数而不是多个参数,例如路径或更长的模板):
hg parents --template \'\"{latesttag}\"\'
, 这个答案带有巨大的免责声明:
可能有比这更好/不同的方法,仅利用PowerShell代码,但我不是PowerShell专家
我是以下课程库的作者
我制作了一个.NET类库Mercurial.Net,该类库使.NET程序可以环绕hg
命令行客户端,而不必处理执行所有这些操作,等待程序完成等所有复杂过程。注意:您将需要安装Mercurial,并且可以通过PATH获得使类库正常工作。
可以通过Nuget软件包安装。
由于我不是PowerShell专家,因此我将说明如何使用C#代码和我的库来执行此操作。
考虑到该库尚未实现所有选项(可惜),可悲的是我的库无法使用parents命令,但log命令可以,尽管它可能会有更多开销。您将必须判断这是否可以接受。
不能使用parents命令的原因是,到目前为止,我决定不对Mercurial中的模板语法实施支持,因为那样我便知道期望什么样的输出并将其解析回适当的.NET实例。
这是可以找到最前端标签的.NET代码:
var repo = new Repository(\".\");
var tags = repo.Log(new LogCommand().WithRevision(\"tag()\")).First().Tags.ToArray();
这将使用标记名数组填充“ 5”。 log命令以相反的顺序返回日志,首先是最新的变更集,因此ѭ6将找到最新的变更集。
如果您需要最接近的标签,它也是当前工作文件夹的祖先,则这里是更改后的代码:
repo.Log(new LogCommand().WithRevision(\"tag() and ancestors(.)\")).First().Tags...
^---------------^
如果包含标签,则包括工作文件夹的修订。如果需要祖先(不包括工作文件夹的修订版):
repo.Log(new LogCommand().WithRevision(\"tag() and ancestors(.) and not .\")).First().Tags...
^--------^
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。