回答
在善变1.4及更高版本可以使用summary命令更优雅,这使输出这样当变化存在:
$ hg summary
parent: 0:ad218537bdef tip
commited
branch: default
commit: 1 modified
update: (current)
这个提交后:
$ hg summary
parent: 1:ef93d692f646 tip
sfsdf
branch: default
commit: (clean)
update: (current)
另外,还可以安装prompt extension,做这样的事情:
$ hg prompt '{status}'
将输出一个!
或?
或没有适当的。
这两者当然只是替代文本输出。我找不到任何直接使用退出代码的东西,但是由于$?检查你可以做的管道中的最后一个命令?
hg summary | grep -q 'commit: (clean)'
这将设置$?非零如果有任何更改未提交:
$ hg summary | grep -q 'commit: (clean)' ; echo $?
0
$ echo more >> that
$ hg summary | grep -q 'commit: (clean)' ; echo $?
1
应该有一些比单纯
[ `hg st |wc -l` -eq 0 ] && echo hi
您也可以运行hg id
。如果散列以+
结尾,则表示工作副本已更改。这应该甚至适用于老版本的hg。
这听起来像你已经在使用zsh;好吧,几天前我帮助更新了内置的VCS_INFO的Mercurial支持,以便将VCS信息放入提示中。为下一个版本提供支持,以显示工作目录(除其他外)的更改。如果你不想等,你可以grab the necessary files from CVS。
目前我的提示包括这(使用唯一内置的zsh功能):
(hg)[1801+ branchname somemq.patch, anycurrentbookmarks]
谢谢!这听起来像一个黑客,但实际上似乎是工作:)嗯。自从我上次看到CVS被使用以来已经有一段时间了;) – 2010-02-17 18:35:21
如果您添加了一个未添加到存储库中的新文件,这不起作用 – etalon11 2018-02-12 09:57:43
我用:
hg status -m -a -r -d -u
如果与被跟踪的文件没有变化,则命令输出一个空的字符串。
Works good!我添加了参数“-u”来跟踪也属于未提交更改的未知文件。 – etalon11 2018-02-12 09:59:32
我现在用的这个庆典 - 摘录了一段时间:
if [[ $(hg status 2>/dev/null) ]]
then
# do something
fi
这是由未跟踪的文件触发的,也可能不是您想要的。 – xixixao 2016-01-24 03:01:21
两个id
和summary
比status
慢,所以这是我目前知道的最快方式,而忽略未跟踪文件:
[[ -z `hg status | grep -v '^?'` ]] && echo no-changes || echo has-changes
- 1. Mercurial:更改某些未提交的提交的用户名?
- 2. 将已提交的变更集转换为Mercurial中的未提交更改
- 3. 如何获得Mercurial中未提交更改的年龄?
- 4. 如何放弃尚未提交的所有Mercurial更改
- 5. 避免SVN提交中未经过预先测试的提交
- 6. LINQ提交更改不提交更改
- 7. 复制Mercurial库与未提交的修改
- 8. Git存储库的未提交更改
- 9. TFS提交未更改的文件
- 10. 合并未提交的更改
- 11. egit pull与未提交的更改
- 12. 修改推送提交的提交消息。 (Mercurial)
- 13. 如果在Mercurial中有未提交的subrepo更改,我如何使“提交”中止?
- 14. Git - 推送新提交并忽略未提交的更改
- 15. git diff最后提交加上所有未提交的更改?
- 16. Subversion将未提交的更改提交到一个新分支
- 17. 更改与Mercurial中过去提交相关的名称
- 18. 提交更改
- 19. 使用Spring测试执行SQL脚本测试正在提交更改
- 20. JavaScript更改为DropDownList.SelectedIndex未提交
- 21. PHP HTML表单 - AJAX更改未提交
- 22. Mercurial:从未版本的副本中提取更改
- 23. 在每次提交后自动运行Jenkins测试(更改)
- 24. 将更改合并到未提交更改的工作区
- 25. Git更改没有提交提交和未跟踪文件
- 26. 如何获得提交后提交mercurial?
- 27. 如何让Mercurial再次提交提交?
- 28. 在与mercurial文件交叉更改
- 29. 更改源提交
- 30. LostFocus提交更改
感谢您的回答。我结束了(在zsh中)'[[“没有改变”=''hg ci -m tick'']] || hg推'。我不喜欢它,因为在某些未来版本的mercurial中,确切的措辞可能会改变(这也适用于您的hg摘要解决方案)。是的,'hg prompt'{status}''应该可以正常工作,除了我更喜欢使用核心hg功能,因为脚本将在外部主机上运行,所以我的自定义扩展(手动更新)有一天会变得不可兼容hg(autoupdated)版本。 – 2010-02-06 18:14:35
看起来好像mercurial不是被设计成和git一样在脚本中使用,是吗? – 2010-02-06 18:15:09
您对字符串更改的担忧是有道理的,但是在不同的语言环境下运行不够,我认为这不会成为问题。 mercurial的作者Matt Mackal认为API的文本输出部分,如果有其他选项可用,不允许改变它。你不会看到格式的变化。 – 2010-02-06 21:51:49