diff -r 649fd6c3ed33 -r e147748f750b mercurial/ui.py --- a/mercurial/ui.py Sun Mar 29 01:57:17 2020 +0900 +++ b/mercurial/ui.py Thu Apr 02 21:58:10 2020 +0530 @@ -1914,6 +1914,12 @@ # instead default to E to plumb commit messages to # avoid confusion. editor = b'E' + elif pycompat.isdarwin: + # vi on darwin is POSIX compatible to a fault, and that includes + # exiting non-zero if you make any mistake when running an ex + # command. Proof: `vi -c ':unknown' -c ':qa'; echo $?` produces 1, + # while s/vi/vim/ doesn't. + editor = b'vim' else: editor = b'vi' return encoding.environ.get(b"HGEDITOR") or self.config(