Re: [PATCH 3/3] completion: Prevents GIT_PS1_DIRTYSTATE from breaking when CWD is .git
- From
Ted Pavlic <ted@tedpavlic.com>
- Date
- Feb 11, 2009, 17:20 UTC
- Message-ID
- <499308DA.9090208@tedpavlic.com>
- In-Reply-To
- <7vprhogbfa.fsf@gitster.siamese.dyndns.org>
>> This patch uses "git rev-parse --is-inside-work-tree" to determine >> whether a "--work-tree=.." should be added to the "git diff". > > Why ".."? What prevents you from "cd .git/refs/heads"?
It was my impression that --work-tree=.. was relative to the GIT_DIR. My tests seem to confirm that. Within the git work tree I do:
echo "test">>COPYING
then
cd .git/refs/heads git --work=tree=.. diff
and that produces a diff of COPYING showing the new line.
("man git" confused me about how WORK_TREE was supposed to work)> Your "is-inside-work-tree" might be a good change, but if you were to > spend a letter to notify the users, "Warning: You are inside GIT_DIR! This > is something unusual, proceed with caution." is a lot more important > notice to give them than "You seem to have unstaged changes" notice.
Ok, so if "is-inside-git-dir" then send a special "!" flag (and no dirtyState flags)? Does that seem reasonable?
Additionally, is it a good idea to echo the branch name when inside the git dir? That is, what does it "mean" to be on "master" when you're inside .git?
Show 5 quoted lines
> You have at least three possible states: > * You are not in git repository at all; > * You are somewhere in $GIT_DIR, perhaps in a bare repository, perhaps a > repository with a work tree. > * You are inside a work tree.
It seems like (psuedocode)...
if git rev-parse --is-inside-git-dir; then use '!' flag to indicate caution
elif git rev-parse --is-inside-work-tree; then proceed as before (with '*' and '+' flags)
else do nothing
I think that handles those cases. No?
Thanks -- --Ted
--
Ted Pavlic <ted@tedpavlic.com>
Please visit my ALS association page:
http://web.alsa.org/goto/tedpavlic
My family appreciates your support in the fight to defeat ALS.