Carl Worth <cworth@xxxxxxxxxx> wrote: > On Sat, 4 Mar 2006 12:52:17 -0500, "Eric Jaffe" wrote: > > I was wondering if anyone else thinks that git-status should be more > > like "git-diff --name-status". That is, > > # A a/newfile.c > > # M a/oldfile.c > > Something like that does seem appealing. > > There are at least two issues with doing it: > > 1) It might be tricky coming up with canonical single characters to be > used consistently within git. For example, git-ls-files currently > does do some single-character state indication, but it can be > rather confusing at times. For example: > > State Option Character > ----- ------ --------- > Modified -m C > Unmerged -u M > Cached -c H > > And that looks like a permanent problem. For legacy reasons, > I don't think we can change either the options or the output > characters of git-ls-files. But perhaps we could at least > agree on a single, consistent mapping for all future uses. > > 2) In an important sense, git-status is not verbose enough. For > example, given a single line such as the following: > > modified: some-file > > This could indicate at least two different states for some-file: > > 1) Modified and updated into the index > > 2) Modified in working tree, but not updated in the index I've played around with this idea a little bit in pg's pg-status command but I most likely do not have all cases covered. In general I try to show HEAD<-->index first using uppercase letters then index<-->working directory second in lowercase letters. Here's the critical portion of pg-status: git-diff-index --cached --name-status HEAD | sed -e 's/ / /' if test $index_only = n then git-diff-files --name-status | sed \ -e 's/ / /' \ -e 's/^D /g /' \ -e 's/^M /m /' \ -e '/^U /d' pg--ls-others | sed 's/^/x /' fi Thus far I've found it useful to behave this way and I haven't run up against any states which didn't make immediate sense to me. Here's the documentation I have in pg-status describing what it can show: Status indicators (displayed in column 1): A : New file has been marked for addition with pg-add. D : Existing file has been marked as deleted with pg-rm. M : Existing file has been modified (and is known to the index). U : File still has unmerged hunks, see pg-resolved. m : Existing file (maybe) has been modified (use -q to know for sure). g : File has been removed from directory but not marked with pg-rm. x : File is not known to repository and isn't being ignored. -- Shawn. - : send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html