{"thread":{"id":"34983","subject":"[PATCH v2] Add core.mode configuration","startedAt":"2013-09-21T13:12:13Z","lastAt":"2013-09-21T13:12:13Z","messageCount":1,"participants":["Felipe Contreras"],"isPatch":true,"patchVersion":2,"patchTotal":null},"messages":[{"id":"227968","messageId":"1379769133-31732-1-git-send-email-felipe.contreras@gmail.com","threadId":"34983","inReplyTo":null,"subject":"[PATCH v2] Add core.mode configuration","fromName":"Felipe Contreras","fromEmail":"felipe.contreras@gmail.com","sentAt":"2013-09-21T13:12:13Z","receivedAt":"2013-09-21T13:12:13Z","isPatch":true,"sender":{"key":"felipe.contreras@gmail.com","avatar":"https://avatars.githubusercontent.com/u/8358?v=4"},"body":"So that we can specify general modes of operation, specifically, add the\n'next' mode, which makes Git pre v2.0 behave as Git v2.0.\n\nSigned-off-by: Felipe Contreras <felipe.contreras@gmail.com>\n---\n builtin/add.c | 13 +++++++++----\n cache.h       |  6 ++++++\n config.c      | 13 +++++++++++++\n environment.c |  1 +\n 4 files changed, 29 insertions(+), 4 deletions(-)\n\ndiff --git a/builtin/add.c b/builtin/add.c\nindex 8266a9c..95a396d 100644\n--- a/builtin/add.c\n+++ b/builtin/add.c\n@@ -483,14 +483,16 @@ int cmd_add(int argc, const char **argv, const char *prefix)\n \t */\n \tmemset(&update_data, 0, sizeof(update_data));\n \tif (!take_worktree_changes && addremove_explicit < 0)\n-\t\tupdate_data.warn_add_would_remove = 1;\n+\t\tif (git_mode == MODE_CURRENT)\n+\t\t\tupdate_data.warn_add_would_remove = 1;\n \n \tif (!take_worktree_changes && addremove_explicit < 0 && argc)\n \t\t/*\n \t\t * Turn \"git add pathspec...\" to \"git add -A pathspec...\"\n \t\t * in Git 2.0 but not yet\n \t\t */\n-\t\t; /* addremove = 1; */\n+\t\tif (git_mode != MODE_CURRENT)\n+\t\t\taddremove = 1;\n \n \tif (!show_only && ignore_missing)\n \t\tdie(_(\"Option --ignore-missing can only be used together with --dry-run\"));\n@@ -503,10 +505,13 @@ int cmd_add(int argc, const char **argv, const char *prefix)\n \t\tshort_option_with_implicit_dot = \"-u\";\n \t}\n \tif (option_with_implicit_dot && !argc) {\n-\t\tstatic const char *here[2] = { \".\", NULL };\n+\t\tstatic const char *here[2] = { \":/\", NULL };\n \t\targc = 1;\n \t\targv = here;\n-\t\timplicit_dot = 1;\n+\t\tif (git_mode == MODE_CURRENT) {\n+\t\t\there[0] = \".\";\n+\t\t\timplicit_dot = 1;\n+\t\t}\n \t}\n \n \tadd_new_files = !take_worktree_changes && !refresh_only;\ndiff --git a/cache.h b/cache.h\nindex 85b544f..f28240f 100644\n--- a/cache.h\n+++ b/cache.h\n@@ -627,9 +627,15 @@ enum push_default_type {\n \tPUSH_DEFAULT_UNSPECIFIED\n };\n \n+enum git_mode {\n+\tMODE_CURRENT = 0,\n+\tMODE_NEXT\n+};\n+\n extern enum branch_track git_branch_track;\n extern enum rebase_setup_type autorebase;\n extern enum push_default_type push_default;\n+extern enum git_mode git_mode;\n \n enum object_creation_mode {\n \tOBJECT_CREATION_USES_HARDLINKS = 0,\ndiff --git a/config.c b/config.c\nindex e13a7b6..f0e0370 100644\n--- a/config.c\n+++ b/config.c\n@@ -831,6 +831,19 @@ static int git_default_core_config(const char *var, const char *value)\n \t\treturn 0;\n \t}\n \n+\tif (!strcmp(var, \"core.mode\")) {\n+\t\tif (!value)\n+\t\t\treturn config_error_nonbool(var);\n+\t\telse if (!strcmp(value, \"current\"))\n+\t\t\tgit_mode = MODE_CURRENT;\n+\t\telse if (!strcmp(value, \"next\")) {\n+\t\t\tgit_mode = MODE_NEXT;\n+\t\t\tpush_default = PUSH_DEFAULT_SIMPLE;\n+\t\t} else\n+\t\t\tdie(\"wrong mode '%s'\", value);\n+\t\treturn 0;\n+\t}\n+\n \t/* Add other config variables here and to Documentation/config.txt. */\n \treturn 0;\n }\ndiff --git a/environment.c b/environment.c\nindex 5398c36..751e14d 100644\n--- a/environment.c\n+++ b/environment.c\n@@ -62,6 +62,7 @@ int merge_log_config = -1;\n int precomposed_unicode = -1; /* see probe_utf8_pathname_composition() */\n struct startup_info *startup_info;\n unsigned long pack_size_limit_cfg;\n+enum git_mode git_mode = MODE_CURRENT;\n \n /*\n  * The character that begins a commented line in user-editable file\n-- \n1.8.4.3.g9a9e30e.dirty\n"}]}