From: Junio C Hamano Date: Thu, 21 Oct 2010 22:57:30 GMT Subject: Re: [PATCH v2 2/4] run_builtin(): save "-h" detection result for later use Message-ID: <7vsjzzrw6d.fsf@alter.siamese.dyndns.org> In-Reply-To: <1287544320-8499-2-git-send-email-pclouds@gmail.com> Nguyễn Thái Ngọc Duy writes: > When run_builtin() sees "-h" as the first argument, it assumes: > > - this is the call for help usage > - the real git command will only print help usage then exit > > So it skips all setup in this case. Unfortunately, some commands do > other things before calling parse_options(), which is often where the > help usage is printed. Some of those things may try to access the > repository unnecessarily. If a repository is broken, the command may > die() before it prints help usage, not really helpful. What does die() message say in that case? If it says "your repository is broken", that may be more useful than giving a help message. I dunno. > Demonstrating "git foo -h" fails depends on individual commands and > is generally difficult to do. Instead GIT_TRACE is used to check > if a command does set repo. If it does, it is supposed to fail if > repo setup code chokes. Hmm, I am not sure I understand this one. If you are interested in changing the behaviour of these commands when run with "-h" in a corrupt repository, perhaps you can deliberately corrupt the test repository in the trash directory you start with, and run these commands there, no? For a good measure, you could use CEILING_DIRECTORIES to make sure the tests do not climb up to the project repository.