回答
在善變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