Code

git-merge: add --ff and --no-ff options
[git.git] / builtin-add.c
index 82c806acf003e04f2435477eb4624eb72fe4fb32..0d7d0ce4209114245ca07842d7d5a4546e5b6cfd 100644 (file)
@@ -14,7 +14,7 @@
 #include "revision.h"
 
 static const char builtin_add_usage[] =
-"git-add [-n] [-v] [-f] [--interactive | -i] [-u] [--] <filepattern>...";
+"git-add [-n] [-v] [-f] [--interactive | -i] [-u] [--refresh] [--] <filepattern>...";
 
 static int take_worktree_changes;
 static const char *excludes_file;
@@ -95,9 +95,10 @@ static void update_callback(struct diff_queue_struct *q,
                const char *path = p->one->path;
                switch (p->status) {
                default:
-                       die("unexpacted diff status %c", p->status);
+                       die("unexpected diff status %c", p->status);
                case DIFF_STATUS_UNMERGED:
                case DIFF_STATUS_MODIFIED:
+               case DIFF_STATUS_TYPE_CHANGED:
                        add_file_to_cache(path, verbose);
                        break;
                case DIFF_STATUS_DELETED:
@@ -109,12 +110,12 @@ static void update_callback(struct diff_queue_struct *q,
        }
 }
 
-static void update(int verbose, const char **files)
+static void update(int verbose, const char *prefix, const char **files)
 {
        struct rev_info rev;
-       init_revisions(&rev, "");
+       init_revisions(&rev, prefix);
        setup_revisions(0, NULL, &rev, NULL);
-       rev.prune_data = get_pathspec(rev.prefix, files);
+       rev.prune_data = get_pathspec(prefix, files);
        rev.diffopt.output_format = DIFF_FORMAT_CALLBACK;
        rev.diffopt.format_callback = update_callback;
        rev.diffopt.format_callback_data = &verbose;
@@ -154,7 +155,7 @@ static int git_add_config(const char *var, const char *value)
 
 static struct lock_file lock_file;
 
-static const char ignore_warning[] =
+static const char ignore_error[] =
 "The following paths are ignored by one of your .gitignore files:\n";
 
 int cmd_add(int argc, const char **argv, const char *prefix)
@@ -216,7 +217,7 @@ int cmd_add(int argc, const char **argv, const char *prefix)
        }
 
        if (take_worktree_changes) {
-               update(verbose, argv + i);
+               update(verbose, prefix, argv + i);
                goto finish;
        }
 
@@ -249,12 +250,12 @@ int cmd_add(int argc, const char **argv, const char *prefix)
                die("index file corrupt");
 
        if (dir.ignored_nr) {
-               fprintf(stderr, ignore_warning);
+               fprintf(stderr, ignore_error);
                for (i = 0; i < dir.ignored_nr; i++) {
                        fprintf(stderr, "%s\n", dir.ignored[i]->name);
                }
                fprintf(stderr, "Use -f if you really want to add them.\n");
-               exit(1);
+               die("no files added");
        }
 
        for (i = 0; i < dir.nr; i++)