Jon Loeliger <jdl@freescale.com> writes:It is because Untracked uses different program than git-diff-* and, it mishandles unmerged paths. Let me see... Yup, it uses "git-ls-files --others", which considers that unmerged paths do not "exist" in the index. This is wrong. The attached is a patch to fix ls-files. I also think that file3 should not appear in "Updated but not checked in (will commit)" list -- we are _not_ going to commit unmerged paths until you tell git what you want to do with them. The patch in the next message fixes it. -- >8 -- cut here -- >8 -- Subject: ls-files: --others should not say unmerged paths are unknown. Jon Loeliger noticed that an unmerged path appears as "Untracked" in git-status output, even though we show the same path as updated/changed. Since --others means "we have not told git about that path", we should not show unmerged paths -- obviously, git knows about them; it just does not know what we want to do about them yet. Signed-off-by: Junio C Hamano <junkio@cox.net> --- ls-files.c | 26 ++++++++++++++++++++++++-- 1 files changed, 24 insertions(+), 2 deletions(-) applies-to: f571975209b0bc38ca099684f9731efe4163b396 fcbc3083e37f3c025d85d7b2c8a1c53d07a81fac diff --git a/ls-files.c b/ls-files.c index d9c8b21..f7653e7 100644 --- a/ls-files.c +++ b/ls-files.c @@ -348,6 +348,29 @@ static void show_dir_entry(const char *t putchar(line_terminator); } +static void show_other_files(void) +{ + int i; + for (i = 0; i < nr_dir; i++) { + /* We should not have a matching entry, but we + * may have an unmerged entry for this path. + */ + struct nond_on_fs *ent = dir[i]; + int pos = cache_name_pos(ent->name, ent->len); + struct cache_entry *ce; + if (0 <= pos) + die("bug in show-other-files"); + pos = -pos - 1; + if (pos < active_nr) { + ce = active_cache[pos]; + if (ce_namelen(ce) == ent->len && + !memcmp(ce->name, ent->name, ent->len)) + continue; /* Yup, this one exists unmerged */ + } + show_dir_entry(tag_other, ent); + } +} + static void show_killed_files(void) { int i; @@ -438,8 +461,7 @@ static void show_files(void) read_directory(path, base, baselen); qsort(dir, nr_dir, sizeof(struct nond_on_fs *), cmp_name); if (show_others) - for (i = 0; i < nr_dir; i++) - show_dir_entry(tag_other, dir[i]); + show_other_files(); if (show_killed) show_killed_files(); } --- 0.99.9.GIT - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
| Sitsofe Wheeler | Reading EeePC900 battery info causes stalls (was Re: How how latent should non-pre... |
| Rafael J. Wysocki | [Bug #10954] hda_intel: azx_get_response timeout, switching to polling mode: last ... |
| Artem Bityutskiy | [RFC PATCH 06/26] UBIFS: add superblock and master node |
| Alan Cox | Re: TALPA - a threat model? well sorta. |
git: | |
| Michael Hendricks | removing content from git history |
| Daniel Berlin | git annotate runs out of memory |
| Abdelrazak Younes | Git-windows and git-svn? |
| Shawn O. Pearce | Re: git-import.sh using git-fast-import |
| Darrin Chandler | Re: bcw(4) is gone |
| GVG GVG | ssh_exchange_identification: Connection closed by remote host |
| Stuart Henderson | Re: SMTP flood + spamdb |
| Theo de Raadt | Re: Richard Stallman... |
| Johannes Berg | mac80211 truesize bugs |
| Mike Galbraith | Re: [tbench regression fixes]: digging out smelly deadmen. |
| Florian Wiessner | Re: POHMELFS high performance network filesystem. Transactions, failover, performa... |
| Jussi Kivilinna | [PATCH v2 2/2] [iproute2/tc] hfsc: add link layer overhead adaption |
