Merge branch 'jc/add'
authorJunio C Hamano <junkio@cox.net>
Wed, 15 Feb 2006 09:58:26 +0000 (01:58 -0800)
committerJunio C Hamano <junkio@cox.net>
Wed, 15 Feb 2006 09:58:26 +0000 (01:58 -0800)
* jc/add:
  Detect misspelled pathspec to git-add
  ls-files --error-unmatch pathspec error reporting fix.

1  2 
ls-files.c

diff --combined ls-files.c
@@@ -20,7 -20,6 +20,7 @@@ static int show_unmerged = 0
  static int show_modified = 0;
  static int show_killed = 0;
  static int show_other_directories = 0;
 +static int show_valid_bit = 0;
  static int line_terminator = '\n';
  
  static int prefix_len = 0, prefix_offset = 0;
@@@ -458,23 -457,6 +458,23 @@@ static void show_ce_entry(const char *t
        if (pathspec && !match(pathspec, ps_matched, ce->name, len))
                return;
  
 +      if (tag && *tag && show_valid_bit &&
 +          (ce->ce_flags & htons(CE_VALID))) {
 +              static char alttag[4];
 +              memcpy(alttag, tag, 3);
 +              if (isalpha(tag[0]))
 +                      alttag[0] = tolower(tag[0]);
 +              else if (tag[0] == '?')
 +                      alttag[0] = '!';
 +              else {
 +                      alttag[0] = 'v';
 +                      alttag[1] = tag[0];
 +                      alttag[2] = ' ';
 +                      alttag[3] = 0;
 +              }
 +              tag = alttag;
 +      }
 +
        if (!show_stage) {
                fputs(tag, stdout);
                write_name_quoted("", 0, ce->name + offset,
@@@ -551,7 -533,7 +551,7 @@@ static void show_files(void
                        err = lstat(ce->name, &st);
                        if (show_deleted && err)
                                show_ce_entry(tag_removed, ce);
 -                      if (show_modified && ce_modified(ce, &st))
 +                      if (show_modified && ce_modified(ce, &st, 0))
                                show_ce_entry(tag_modified, ce);
                }
        }
@@@ -624,7 -606,7 +624,7 @@@ static void verify_pathspec(void
  }
  
  static const char ls_files_usage[] =
 -      "git-ls-files [-z] [-t] (--[cached|deleted|others|stage|unmerged|killed|modified])* "
 +      "git-ls-files [-z] [-t] [-v] (--[cached|deleted|others|stage|unmerged|killed|modified])* "
        "[ --ignored ] [--exclude=<pattern>] [--exclude-from=<file>] "
        "[ --exclude-per-directory=<filename> ] [--full-name] [--] [<file>]*";
  
@@@ -649,15 -631,13 +649,15 @@@ int main(int argc, const char **argv
                        line_terminator = 0;
                        continue;
                }
 -              if (!strcmp(arg, "-t")) {
 +              if (!strcmp(arg, "-t") || !strcmp(arg, "-v")) {
                        tag_cached = "H ";
                        tag_unmerged = "M ";
                        tag_removed = "R ";
                        tag_modified = "C ";
                        tag_other = "? ";
                        tag_killed = "K ";
 +                      if (arg[1] == 'v')
 +                              show_valid_bit = 1;
                        continue;
                }
                if (!strcmp(arg, "-c") || !strcmp(arg, "--cached")) {
                        if (ps_matched[num])
                                continue;
                        error("pathspec '%s' did not match any.",
-                             pathspec[num] + prefix_len);
+                             pathspec[num] + prefix_offset);
                }
                return errors ? 1 : 0;
        }