Skip to content

Commit

Permalink
ls-files: --others should not say unmerged paths are unknown.
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Junio C Hamano committed Nov 7, 2005
1 parent 0cfddac commit fcbc308
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions ls-files.c
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,29 @@ static void show_dir_entry(const char *tag, struct nond_on_fs *ent)
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;
Expand Down Expand Up @@ -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();
}
Expand Down

0 comments on commit fcbc308

Please sign in to comment.