diff options
author | Junio C Hamano <junkio@cox.net> | 2006-12-25 17:46:38 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-12-25 17:46:38 -0800 |
commit | 6a1ad32519898a8fa4400e081c2d61fd3af42e2c (patch) | |
tree | 110f00c9884d8e4bf8b6cb6bc15fbc40db46782c /builtin-add.c | |
parent | 1e423f56558e74a3a94c653108f64f0305199b9a (diff) | |
download | git-6a1ad32519898a8fa4400e081c2d61fd3af42e2c.tar.gz |
git-add -f: allow adding otherwise ignored files.
Instead of just warning, refuse to add otherwise ignored files
by default, and allow it with an -f option.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'builtin-add.c')
-rw-r--r-- | builtin-add.c | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/builtin-add.c b/builtin-add.c index c54c694532..8ed4a6a9f3 100644 --- a/builtin-add.c +++ b/builtin-add.c @@ -10,7 +10,7 @@ #include "cache-tree.h" static const char builtin_add_usage[] = -"git-add [-n] [-v] [--interactive] [--] <filepattern>..."; +"git-add [-n] [-v] [-f] [--interactive] [--] <filepattern>..."; static void prune_directory(struct dir_struct *dir, const char **pathspec, int prefix) { @@ -37,9 +37,6 @@ static void prune_directory(struct dir_struct *dir, const char **pathspec, int p free(entry); continue; } - if (entry->ignored_entry) - fprintf(stderr, "warning: '%s' is an ignored path.\n", - entry->name); *dst++ = entry; } dir->nr = dst - dir->entries; @@ -94,10 +91,13 @@ static void fill_directory(struct dir_struct *dir, const char **pathspec) static struct lock_file lock_file; +static const char ignore_warning[] = +"The following paths are ignored by one of your .gitignore files:\n"; + int cmd_add(int argc, const char **argv, const char *prefix) { int i, newfd; - int verbose = 0, show_only = 0; + int verbose = 0, show_only = 0, ignored_too = 0; const char **pathspec; struct dir_struct dir; int add_interactive = 0; @@ -132,6 +132,10 @@ int cmd_add(int argc, const char **argv, const char *prefix) show_only = 1; continue; } + if (!strcmp(arg, "-f")) { + ignored_too = 1; + continue; + } if (!strcmp(arg, "-v")) { verbose = 1; continue; @@ -150,6 +154,8 @@ int cmd_add(int argc, const char **argv, const char *prefix) if (show_only) { const char *sep = "", *eof = ""; for (i = 0; i < dir.nr; i++) { + if (!ignored_too && dir.entries[i]->ignored_entry) + continue; printf("%s%s", sep, dir.entries[i]->name); sep = " "; eof = "\n"; @@ -161,6 +167,24 @@ int cmd_add(int argc, const char **argv, const char *prefix) if (read_cache() < 0) die("index file corrupt"); + if (!ignored_too) { + int has_ignored = -1; + for (i = 0; has_ignored < 0 && i < dir.nr; i++) + if (dir.entries[i]->ignored_entry) + has_ignored = i; + if (0 <= has_ignored) { + fprintf(stderr, ignore_warning); + for (i = has_ignored; i < dir.nr; i++) { + if (!dir.entries[i]->ignored_entry) + continue; + fprintf(stderr, "%s\n", dir.entries[i]->name); + } + fprintf(stderr, + "Use -f if you really want to add them.\n"); + exit(1); + } + } + for (i = 0; i < dir.nr; i++) add_file_to_index(dir.entries[i]->name, verbose); |