{"thread":{"id":"39262","subject":"[PATCH] fixed translation in config file to enhance user output message from the porcelain command(git config). This fixes the error and die function by wrapping it in the _(...) function. This also avoid the code from breaking","startedAt":"2015-05-06T18:51:13Z","lastAt":"2015-05-06T19:47:39Z","messageCount":5,"participants":["Alangi Derick","Junio C Hamano","Stefan Beller"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"260678","messageId":"554a6462.c2bbb40a.1e2a.0255@mx.google.com","threadId":"39262","inReplyTo":null,"subject":"[PATCH] fixed translation in config file to enhance user output message from the porcelain command(git config). This fixes the error and die function by wrapping it in the _(...) function. This also avoid the code from breaking","fromName":"Alangi Derick","fromEmail":"alangiderick@gmail.com","sentAt":"2015-05-06T18:51:13Z","receivedAt":"2015-05-06T18:51:13Z","isPatch":true,"sender":{"key":"alangiderick@gmail.com","avatar":"https://gravatar.com/avatar/f5878e69e83b4cf7ed499336c4a114dc2cb253253bc57c9b8ffcf0e129320795?d=mp&s=160"},"body":"Signed-off-by: Alangi Derick <alangiderick@gmail.com>\n---\n config.c | 46 +++++++++++++++++++++++-----------------------\n 1 file changed, 23 insertions(+), 23 deletions(-)\n\ndiff --git a/config.c b/config.c\nindex 66c0a51..cc41dbb 100644\n--- a/config.c\n+++ b/config.c\n@@ -76,7 +76,7 @@ static int config_buf_ungetc(int c, struct config_source *conf)\n \tif (conf->u.buf.pos > 0) {\n \t\tconf->u.buf.pos--;\n \t\tif (conf->u.buf.buf[conf->u.buf.pos] != c)\n-\t\t\tdie(\"BUG: config_buf can only ungetc the same character\");\n+\t\t\tdie(_(\"BUG: config_buf can only ungetc the same character\"));\n \t\treturn c;\n \t}\n \n@@ -106,7 +106,7 @@ static int handle_path_include(const char *path, struct config_include_data *inc\n \n \texpanded = expand_user_path(path);\n \tif (!expanded)\n-\t\treturn error(\"Could not expand include path '%s'\", path);\n+\t\treturn error(_(\"Could not expand include path '%s'\"), path);\n \tpath = expanded;\n \n \t/*\n@@ -117,7 +117,7 @@ static int handle_path_include(const char *path, struct config_include_data *inc\n \t\tchar *slash;\n \n \t\tif (!cf || !cf->path)\n-\t\t\treturn error(\"relative config includes must come from files\");\n+\t\t\treturn error(_(\"relative config includes must come from files\"));\n \n \t\tslash = find_last_dir_sep(cf->path);\n \t\tif (slash)\n@@ -177,7 +177,7 @@ int git_config_parse_parameter(const char *text,\n \n \tpair = strbuf_split_str(text, '=', 2);\n \tif (!pair[0])\n-\t\treturn error(\"bogus config parameter: %s\", text);\n+\t\treturn error(_(\"bogus config parameter: %s\"), text);\n \n \tif (pair[0]->len && pair[0]->buf[pair[0]->len - 1] == '=') {\n \t\tstrbuf_setlen(pair[0], pair[0]->len - 1);\n@@ -189,7 +189,7 @@ int git_config_parse_parameter(const char *text,\n \tstrbuf_trim(pair[0]);\n \tif (!pair[0]->len) {\n \t\tstrbuf_list_free(pair);\n-\t\treturn error(\"bogus config parameter: %s\", text);\n+\t\treturn error(_(\"bogus config parameter: %s\"), text);\n \t}\n \tstrbuf_tolower(pair[0]);\n \tif (fn(pair[0]->buf, value, data) < 0) {\n@@ -854,7 +854,7 @@ static int git_default_core_config(const char *var, const char *value)\n \t\t\tcomment_line_char = value[0];\n \t\t\tauto_comment_line_char = 0;\n \t\t} else\n-\t\t\treturn error(\"core.commentChar should only be one character\");\n+\t\t\treturn error(_(\"core.commentChar should only be one character\"));\n \t\treturn 0;\n \t}\n \n@@ -949,7 +949,7 @@ static int git_default_branch_config(const char *var, const char *value)\n \t\telse if (!strcmp(value, \"always\"))\n \t\t\tautorebase = AUTOREBASE_ALWAYS;\n \t\telse\n-\t\t\treturn error(\"Malformed value for %s\", var);\n+\t\t\treturn error(_(\"Malformed value for %s\"), var);\n \t\treturn 0;\n \t}\n \n@@ -976,8 +976,8 @@ static int git_default_push_config(const char *var, const char *value)\n \t\t\tpush_default = PUSH_DEFAULT_CURRENT;\n \t\telse {\n \t\t\terror(\"Malformed value for %s: %s\", var, value);\n-\t\t\treturn error(\"Must be one of nothing, matching, simple, \"\n-\t\t\t\t     \"upstream or current.\");\n+\t\t\treturn error(_(\"Must be one of nothing, matching, simple, \"\n+\t\t\t\t     \"upstream or current.\"));\n \t\t}\n \t\treturn 0;\n \t}\n@@ -1124,10 +1124,10 @@ static int git_config_from_blob_sha1(config_fn_t fn,\n \n \tbuf = read_sha1_file(sha1, &type, &size);\n \tif (!buf)\n-\t\treturn error(\"unable to load config blob object '%s'\", name);\n+\t\treturn error(_(\"unable to load config blob object '%s'\"), name);\n \tif (type != OBJ_BLOB) {\n \t\tfree(buf);\n-\t\treturn error(\"reference '%s' does not point to a blob\", name);\n+\t\treturn error(_(\"reference '%s' does not point to a blob\"), name);\n \t}\n \n \tret = git_config_from_buf(fn, name, buf, size, data);\n@@ -1143,7 +1143,7 @@ static int git_config_from_blob_ref(config_fn_t fn,\n \tunsigned char sha1[20];\n \n \tif (get_sha1(name, sha1) < 0)\n-\t\treturn error(\"unable to resolve config blob '%s'\", name);\n+\t\treturn error(_(\"unable to resolve config blob '%s'\"), name);\n \treturn git_config_from_blob_sha1(fn, name, sha1, data);\n }\n \n@@ -1173,7 +1173,7 @@ unsigned long git_env_ulong(const char *k, unsigned long val)\n {\n \tconst char *v = getenv(k);\n \tif (v && !git_parse_ulong(v, &val))\n-\t\tdie(\"failed to parse %s\", k);\n+\t\tdie(_(\"failed to parse %s\"), k);\n \treturn val;\n }\n \n@@ -1720,7 +1720,7 @@ static int store_aux(const char *key, const char *value, void *cb)\n \n static int write_error(const char *filename)\n {\n-\terror(\"failed to write new configuration file %s\", filename);\n+\terror(_(\"failed to write new configuration file %s\"), filename);\n \n \t/* Same error code as \"failed to rename\". */\n \treturn 4;\n@@ -1859,12 +1859,12 @@ int git_config_parse_key(const char *key, char **store_key, int *baselen_)\n \t */\n \n \tif (last_dot == NULL || last_dot == key) {\n-\t\terror(\"key does not contain a section: %s\", key);\n+\t\terror(_(\"key does not contain a section: %s\"), key);\n \t\treturn -CONFIG_NO_SECTION_OR_NAME;\n \t}\n \n \tif (!last_dot[1]) {\n-\t\terror(\"key does not contain variable name: %s\", key);\n+\t\terror(_(\"key does not contain variable name: %s\"), key);\n \t\treturn -CONFIG_NO_SECTION_OR_NAME;\n \t}\n \n@@ -1886,12 +1886,12 @@ int git_config_parse_key(const char *key, char **store_key, int *baselen_)\n \t\tif (!dot || i > baselen) {\n \t\t\tif (!iskeychar(c) ||\n \t\t\t    (i == baselen + 1 && !isalpha(c))) {\n-\t\t\t\terror(\"invalid key: %s\", key);\n+\t\t\t\terror(_(\"invalid key: %s\"), key);\n \t\t\t\tgoto out_free_ret_1;\n \t\t\t}\n \t\t\tc = tolower(c);\n \t\t} else if (c == '\\n') {\n-\t\t\terror(\"invalid key (newline): %s\", key);\n+\t\t\terror(_(\"invalid key (newline): %s\"), key);\n \t\t\tgoto out_free_ret_1;\n \t\t}\n \t\t(*store_key)[i] = c;\n@@ -2113,7 +2113,7 @@ int git_config_set_multivar_in_file(const char *config_filename,\n \t}\n \n \tif (commit_lock_file(lock) < 0) {\n-\t\terror(\"could not commit config file %s\", config_filename);\n+\t\terror(_(\"could not commit config file %s\"), config_filename);\n \t\tret = CONFIG_NO_WRITE;\n \t\tlock = NULL;\n \t\tgoto out_free;\n@@ -2228,7 +2228,7 @@ int git_config_rename_section_in_file(const char *config_filename,\n \tlock = xcalloc(1, sizeof(struct lock_file));\n \tout_fd = hold_lock_file_for_update(lock, config_filename, 0);\n \tif (out_fd < 0) {\n-\t\tret = error(\"could not lock config file %s\", config_filename);\n+\t\tret = error(_(\"could not lock config file %s\"), config_filename);\n \t\tgoto out;\n \t}\n \n@@ -2240,7 +2240,7 @@ int git_config_rename_section_in_file(const char *config_filename,\n \tfstat(fileno(config_file), &st);\n \n \tif (chmod(lock->filename.buf, st.st_mode & 07777) < 0) {\n-\t\tret = error(\"chmod on %s failed: %s\",\n+\t\tret = error(_(\"chmod on %s failed: %s\"),\n \t\t\t\tlock->filename.buf, strerror(errno));\n \t\tgoto out;\n \t}\n@@ -2295,7 +2295,7 @@ int git_config_rename_section_in_file(const char *config_filename,\n \tfclose(config_file);\n unlock_and_out:\n \tif (commit_lock_file(lock) < 0)\n-\t\tret = error(\"could not commit config file %s\", config_filename);\n+\t\tret = error(_(\"could not commit config file %s\"), config_filename);\n out:\n \tfree(filename_buf);\n \treturn ret;\n@@ -2313,7 +2313,7 @@ int git_config_rename_section(const char *old_name, const char *new_name)\n #undef config_error_nonbool\n int config_error_nonbool(const char *var)\n {\n-\treturn error(\"Missing value for '%s'\", var);\n+\treturn error(_(\"Missing value for '%s'\"), var);\n }\n \n int parse_config_key(const char *var,\n-- \n2.4.0.dirty\n"},{"id":"260680","messageId":"xmqqoalxtsq9.fsf@gitster.dls.corp.google.com","threadId":"39262","inReplyTo":"554a6462.c2bbb40a.1e2a.0255@mx.google.com","subject":"Re: [PATCH] fixed translation in config file to enhance user output message from the porcelain command(git config). This fixes the error and die function by wrapping it in the _(...) function. This also avoid the code from breaking","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-05-06T19:23:58Z","receivedAt":"2015-05-06T19:23:58Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Alangi Derick <alangiderick@gmail.com> writes:\n\n>> Cc: unlisted-recipients:; (no To-header on input)\n\nThe comments in $gmane/268330 still applies to this one.\n\n    It seems you are posting putting the list in Bcc. Don't do that:\n    it makes it painful to reply to your message (I had to re-add\n    git@vger manually).\n\n\n>> Subject: Re: [PATCH] fixed translation in config file to enhance user output message from the porcelain command(git config). This fixes the error and die function by wrapping it in the _(...) function. This also avoid the code from breaking\n\nThe first paragraph of your commit message becomes the patch title\nand conveyed on the \"Subject:\" line.  So\n\n (1) Keep the first paragraph to one single line.\n (2) Keep the length of that line short and to the point.\n\nAlso the comments in $gmane/268335 still applies to this one.\n\nSubmittingPatches prefers to see an \"<area>:\" prefix so\nthat output of \"git shortlog --no-merges -100\" would give the\nreaders a better overview of the changes.\n\nWhen \"fix a translation error in config file...\" appears among 100\nother commits in \"git shortlog\" output, what kind of change would a\nreader imagine this to be, though?\n\nMy answer to that question would be: \"There was an existing\ntranslation in 'git config' output, that was incorrect in some\nunspecified way, and this change corrects that breakage.\"\n\nAnd that is not what is going on, so the change is mistitled.\n\nPerhaps\n\n    config.c: mark error strings for translation\n\nor something, modelling after 8262aaa2 (config.c: mark error and\nwarnings strings for translation, 2014-08-07), may be more\nappropriate.  Personally, I do not think the log message for this\nchange needs anything more than that title.\n\n> Signed-off-by: Alangi Derick <alangiderick@gmail.com>\n> ---\n>  config.c | 46 +++++++++++++++++++++++-----------------------\n>  1 file changed, 23 insertions(+), 23 deletions(-)\n>\n> diff --git a/config.c b/config.c\n> index 66c0a51..cc41dbb 100644\n> --- a/config.c\n> +++ b/config.c\n> @@ -76,7 +76,7 @@ static int config_buf_ungetc(int c, struct config_source *conf)\n>  \tif (conf->u.buf.pos > 0) {\n>  \t\tconf->u.buf.pos--;\n>  \t\tif (conf->u.buf.buf[conf->u.buf.pos] != c)\n> -\t\t\tdie(\"BUG: config_buf can only ungetc the same character\");\n> +\t\t\tdie(_(\"BUG: config_buf can only ungetc the same character\"));\n\nI do not think this change is a good idea.\n\nComments in $gmane/268373 still applies to this version.\n\n\"BUG:\" is a sign that we encountered an unexpected condition, and\nuntranslated message is much easier for Git developers to spot where\nit came from.\n\n> @@ -976,8 +976,8 @@ static int git_default_push_config(const char *var, const char *value)\n>  \t\t\tpush_default = PUSH_DEFAULT_CURRENT;\n>  \t\telse {\n>  \t\t\terror(\"Malformed value for %s: %s\", var, value);\n\nWhy not this one?\n\n> -\t\t\treturn error(\"Must be one of nothing, matching, simple, \"\n> -\t\t\t\t     \"upstream or current.\");\n> +\t\t\treturn error(_(\"Must be one of nothing, matching, simple, \"\n> +\t\t\t\t     \"upstream or current.\"));\n>  \t\t}\n>  \t\treturn 0;\n>  \t}\n"},{"id":"260681","messageId":"CAGZ79kaVhYi8amQkRMsHEWZCyMOSWr7NwRaz5TG+pyz5O79k6g@mail.gmail.com","threadId":"39262","inReplyTo":"554a6462.c2bbb40a.1e2a.0255@mx.google.com","subject":"Re: [PATCH] fixed translation in config file to enhance user output message from the porcelain command(git config). This fixes the error and die function by wrapping it in the _(...) function. This also avoid the code from breaking","fromName":"Stefan Beller","fromEmail":"sbeller@google.com","sentAt":"2015-05-06T19:26:30Z","receivedAt":"2015-05-06T19:26:30Z","isPatch":true,"sender":{"key":"stefanbeller@gmail.com","avatar":"https://avatars.githubusercontent.com/u/455868?v=4"},"body":"Please don't BCC all recipients, but just CC or send it to them.\n\n\nOn Wed, May 6, 2015 at 11:51 AM, Alangi Derick <alangiderick@gmail.com> wrote:\n\nUsually here comes a rationale why the changes below are worth accepting\nsuch as:\n\n    This enables translations in git-config, which is a porcelain user facing\n    command, so we want to show localized error messages.\n\nMind that there are 2 different files ./config.c and ./builtin/config.c\nWhile ./builtin/config.c is used for the \"git config\" command and would\nbenefit from the error translation, I am unsure about ./config.c\n\nAll files directly in the top level directory from Git are usually quite\nlibrary like and used by the different commands in the builtin/ directory.\nSo I suspect there is a plumbing command which would make use of\nthese code paths, which is what we want to avoid.\n\n> Signed-off-by: Alangi Derick <alangiderick@gmail.com>\n> ---\n>  config.c | 46 +++++++++++++++++++++++-----------------------\n>  1 file changed, 23 insertions(+), 23 deletions(-)\n>\n> diff --git a/config.c b/config.c\n> index 66c0a51..cc41dbb 100644\n> --- a/config.c\n> +++ b/config.c\n> @@ -76,7 +76,7 @@ static int config_buf_ungetc(int c, struct config_source *conf)\n>         if (conf->u.buf.pos > 0) {\n>                 conf->u.buf.pos--;\n>                 if (conf->u.buf.buf[conf->u.buf.pos] != c)\n> -                       die(\"BUG: config_buf can only ungetc the same character\");\n> +                       die(_(\"BUG: config_buf can only ungetc the same character\"));\n>                 return c;\n>         }\n>\n> @@ -106,7 +106,7 @@ static int handle_path_include(const char *path, struct config_include_data *inc\n>\n>         expanded = expand_user_path(path);\n>         if (!expanded)\n> -               return error(\"Could not expand include path '%s'\", path);\n> +               return error(_(\"Could not expand include path '%s'\"), path);\n>         path = expanded;\n>\n>         /*\n> @@ -117,7 +117,7 @@ static int handle_path_include(const char *path, struct config_include_data *inc\n>                 char *slash;\n>\n>                 if (!cf || !cf->path)\n> -                       return error(\"relative config includes must come from files\");\n> +                       return error(_(\"relative config includes must come from files\"));\n>\n>                 slash = find_last_dir_sep(cf->path);\n>                 if (slash)\n> @@ -177,7 +177,7 @@ int git_config_parse_parameter(const char *text,\n>\n>         pair = strbuf_split_str(text, '=', 2);\n>         if (!pair[0])\n> -               return error(\"bogus config parameter: %s\", text);\n> +               return error(_(\"bogus config parameter: %s\"), text);\n>\n>         if (pair[0]->len && pair[0]->buf[pair[0]->len - 1] == '=') {\n>                 strbuf_setlen(pair[0], pair[0]->len - 1);\n> @@ -189,7 +189,7 @@ int git_config_parse_parameter(const char *text,\n>         strbuf_trim(pair[0]);\n>         if (!pair[0]->len) {\n>                 strbuf_list_free(pair);\n> -               return error(\"bogus config parameter: %s\", text);\n> +               return error(_(\"bogus config parameter: %s\"), text);\n>         }\n>         strbuf_tolower(pair[0]);\n>         if (fn(pair[0]->buf, value, data) < 0) {\n> @@ -854,7 +854,7 @@ static int git_default_core_config(const char *var, const char *value)\n>                         comment_line_char = value[0];\n>                         auto_comment_line_char = 0;\n>                 } else\n> -                       return error(\"core.commentChar should only be one character\");\n> +                       return error(_(\"core.commentChar should only be one character\"));\n>                 return 0;\n>         }\n>\n> @@ -949,7 +949,7 @@ static int git_default_branch_config(const char *var, const char *value)\n>                 else if (!strcmp(value, \"always\"))\n>                         autorebase = AUTOREBASE_ALWAYS;\n>                 else\n> -                       return error(\"Malformed value for %s\", var);\n> +                       return error(_(\"Malformed value for %s\"), var);\n>                 return 0;\n>         }\n>\n> @@ -976,8 +976,8 @@ static int git_default_push_config(const char *var, const char *value)\n>                         push_default = PUSH_DEFAULT_CURRENT;\n>                 else {\n>                         error(\"Malformed value for %s: %s\", var, value);\n> -                       return error(\"Must be one of nothing, matching, simple, \"\n> -                                    \"upstream or current.\");\n> +                       return error(_(\"Must be one of nothing, matching, simple, \"\n> +                                    \"upstream or current.\"));\n>                 }\n>                 return 0;\n>         }\n> @@ -1124,10 +1124,10 @@ static int git_config_from_blob_sha1(config_fn_t fn,\n>\n>         buf = read_sha1_file(sha1, &type, &size);\n>         if (!buf)\n> -               return error(\"unable to load config blob object '%s'\", name);\n> +               return error(_(\"unable to load config blob object '%s'\"), name);\n>         if (type != OBJ_BLOB) {\n>                 free(buf);\n> -               return error(\"reference '%s' does not point to a blob\", name);\n> +               return error(_(\"reference '%s' does not point to a blob\"), name);\n>         }\n>\n>         ret = git_config_from_buf(fn, name, buf, size, data);\n> @@ -1143,7 +1143,7 @@ static int git_config_from_blob_ref(config_fn_t fn,\n>         unsigned char sha1[20];\n>\n>         if (get_sha1(name, sha1) < 0)\n> -               return error(\"unable to resolve config blob '%s'\", name);\n> +               return error(_(\"unable to resolve config blob '%s'\"), name);\n>         return git_config_from_blob_sha1(fn, name, sha1, data);\n>  }\n>\n> @@ -1173,7 +1173,7 @@ unsigned long git_env_ulong(const char *k, unsigned long val)\n>  {\n>         const char *v = getenv(k);\n>         if (v && !git_parse_ulong(v, &val))\n> -               die(\"failed to parse %s\", k);\n> +               die(_(\"failed to parse %s\"), k);\n>         return val;\n>  }\n>\n> @@ -1720,7 +1720,7 @@ static int store_aux(const char *key, const char *value, void *cb)\n>\n>  static int write_error(const char *filename)\n>  {\n> -       error(\"failed to write new configuration file %s\", filename);\n> +       error(_(\"failed to write new configuration file %s\"), filename);\n>\n>         /* Same error code as \"failed to rename\". */\n>         return 4;\n> @@ -1859,12 +1859,12 @@ int git_config_parse_key(const char *key, char **store_key, int *baselen_)\n>          */\n>\n>         if (last_dot == NULL || last_dot == key) {\n> -               error(\"key does not contain a section: %s\", key);\n> +               error(_(\"key does not contain a section: %s\"), key);\n>                 return -CONFIG_NO_SECTION_OR_NAME;\n>         }\n>\n>         if (!last_dot[1]) {\n> -               error(\"key does not contain variable name: %s\", key);\n> +               error(_(\"key does not contain variable name: %s\"), key);\n>                 return -CONFIG_NO_SECTION_OR_NAME;\n>         }\n>\n> @@ -1886,12 +1886,12 @@ int git_config_parse_key(const char *key, char **store_key, int *baselen_)\n>                 if (!dot || i > baselen) {\n>                         if (!iskeychar(c) ||\n>                             (i == baselen + 1 && !isalpha(c))) {\n> -                               error(\"invalid key: %s\", key);\n> +                               error(_(\"invalid key: %s\"), key);\n>                                 goto out_free_ret_1;\n>                         }\n>                         c = tolower(c);\n>                 } else if (c == '\\n') {\n> -                       error(\"invalid key (newline): %s\", key);\n> +                       error(_(\"invalid key (newline): %s\"), key);\n>                         goto out_free_ret_1;\n>                 }\n>                 (*store_key)[i] = c;\n> @@ -2113,7 +2113,7 @@ int git_config_set_multivar_in_file(const char *config_filename,\n>         }\n>\n>         if (commit_lock_file(lock) < 0) {\n> -               error(\"could not commit config file %s\", config_filename);\n> +               error(_(\"could not commit config file %s\"), config_filename);\n>                 ret = CONFIG_NO_WRITE;\n>                 lock = NULL;\n>                 goto out_free;\n> @@ -2228,7 +2228,7 @@ int git_config_rename_section_in_file(const char *config_filename,\n>         lock = xcalloc(1, sizeof(struct lock_file));\n>         out_fd = hold_lock_file_for_update(lock, config_filename, 0);\n>         if (out_fd < 0) {\n> -               ret = error(\"could not lock config file %s\", config_filename);\n> +               ret = error(_(\"could not lock config file %s\"), config_filename);\n>                 goto out;\n>         }\n>\n> @@ -2240,7 +2240,7 @@ int git_config_rename_section_in_file(const char *config_filename,\n>         fstat(fileno(config_file), &st);\n>\n>         if (chmod(lock->filename.buf, st.st_mode & 07777) < 0) {\n> -               ret = error(\"chmod on %s failed: %s\",\n> +               ret = error(_(\"chmod on %s failed: %s\"),\n>                                 lock->filename.buf, strerror(errno));\n>                 goto out;\n>         }\n> @@ -2295,7 +2295,7 @@ int git_config_rename_section_in_file(const char *config_filename,\n>         fclose(config_file);\n>  unlock_and_out:\n>         if (commit_lock_file(lock) < 0)\n> -               ret = error(\"could not commit config file %s\", config_filename);\n> +               ret = error(_(\"could not commit config file %s\"), config_filename);\n>  out:\n>         free(filename_buf);\n>         return ret;\n> @@ -2313,7 +2313,7 @@ int git_config_rename_section(const char *old_name, const char *new_name)\n>  #undef config_error_nonbool\n>  int config_error_nonbool(const char *var)\n>  {\n> -       return error(\"Missing value for '%s'\", var);\n> +       return error(_(\"Missing value for '%s'\"), var);\n>  }\n>\n>  int parse_config_key(const char *var,\n> --\n> 2.4.0.dirty\n> --\n> To unsubscribe from this list: send the line \"unsubscribe git\" in\n> the body of a message to majordomo@vger.kernel.org\n> More majordomo info at  http://vger.kernel.org/majordomo-info.html\n"},{"id":"260682","messageId":"CAKB+oNt7WFqqXLwjxyoEVj2_eP2wworpb-_uXXkEvVgQgR8uTg@mail.gmail.com","threadId":"39262","inReplyTo":"CAGZ79kaVhYi8amQkRMsHEWZCyMOSWr7NwRaz5TG+pyz5O79k6g@mail.gmail.com","subject":"Re: [PATCH] fixed translation in config file to enhance user output message from the porcelain command(git config). This fixes the error and die function by wrapping it in the _(...) function. This also avoid the code from breaking","fromName":"Alangi Derick","fromEmail":"alangiderick@gmail.com","sentAt":"2015-05-06T19:33:35Z","receivedAt":"2015-05-06T19:33:35Z","isPatch":true,"sender":{"key":"alangiderick@gmail.com","avatar":"https://gravatar.com/avatar/f5878e69e83b4cf7ed499336c4a114dc2cb253253bc57c9b8ffcf0e129320795?d=mp&s=160"},"body":"Thanks so much for the correction. So the points i should not is that;\n- I shouldn't Bcc but i should instead Cc\n- I should work with porcelain commands and not plumbing commands\n- My patch should have a description and a brief title\nBut my problem is figuring out the porcelain commands from the\nplumbing commands. But that is a task for me to do. Let me fix the Bcc\nproblem.\n"},{"id":"260683","messageId":"xmqqk2wltrms.fsf@gitster.dls.corp.google.com","threadId":"39262","inReplyTo":"CAKB+oNt7WFqqXLwjxyoEVj2_eP2wworpb-_uXXkEvVgQgR8uTg@mail.gmail.com","subject":"Re: [PATCH] fixed translation in config file to enhance user output message from the porcelain command(git config). This fixes the error and die function by wrapping it in the _(...) function. This also avoid the code from breaking","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-05-06T19:47:39Z","receivedAt":"2015-05-06T19:47:39Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Alangi Derick <alangiderick@gmail.com> writes:\n\n> Thanks so much for the correction. So the points i should not is that;\n> - I shouldn't Bcc but i should instead Cc\n\nYou are sending to a single recipient, git@vger.kernel.org; To:\nshould be the most natural thing to do, not Cc:.\n\n> But my problem is figuring out the porcelain commands from the\n> plumbing commands.\n\n\"git help git\" should list the commands in categories.\n"}]}