From: Junio C Hamano Date: Thu, 29 Nov 2012 20:52:49 +0000 (-0800) Subject: Merge branch 'km/send-email-remove-cruft-in-address' X-Git-Tag: v1.8.1-rc0~8 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/90583f17290db0a0e1007b2c32ca6637e7fbb07c?hp=d0e98107bac36af7526fdb5c080ce9dfb56161ce Merge branch 'km/send-email-remove-cruft-in-address' * km/send-email-remove-cruft-in-address: git-send-email: allow edit invalid email address git-send-email: ask what to do with an invalid email address git-send-email: remove invalid addresses earlier git-send-email: fix fallback code in extract_valid_address() git-send-email: remove garbage after email address --- diff --git a/Documentation/RelNotes/1.8.0.2.txt b/Documentation/RelNotes/1.8.0.2.txt new file mode 100644 index 0000000000..5d08021a8d --- /dev/null +++ b/Documentation/RelNotes/1.8.0.2.txt @@ -0,0 +1,15 @@ +Git v1.8.0.2 Release Notes +========================== + +Fixes since v1.8.0.1 +-------------------- + + * "git p4" used to try expanding malformed "$keyword$" that spans + across multiple lines. + + * "git update-ref -d --deref SYM" to delete a ref through a symbolic + ref that points to it did not remove it correctly. + + * Syntax highlighting in "gitweb" was not quite working. + +Also contains other minor fixes and documentation updates. diff --git a/Documentation/RelNotes/1.8.1.txt b/Documentation/RelNotes/1.8.1.txt index 34c5b26977..207043adca 100644 --- a/Documentation/RelNotes/1.8.1.txt +++ b/Documentation/RelNotes/1.8.1.txt @@ -27,7 +27,7 @@ Updates since v1.8.0 UI, Workflows & Features - * Command-line completion for tcsh has been added. + * Command-line completion scripts for tcsh and zsh have been added. * We used to have a workaround for a bug in ancient "less" that causes it to exit without any output when the terminal is resized. @@ -44,6 +44,11 @@ UI, Workflows & Features give the default number of context lines in the patch output, to override the hardcoded default of 3 lines. + * When "git checkout" checks out a branch, it tells the user how far + behind (or ahead) the new branch is relative to the remote tracking + branch it builds upon. The message now also advises how to sync + them up by pushing or pulling. + * "git config --get" used to diagnose presence of multiple definitions of the same variable in the same configuration file as an error, but it now applies the "last one wins" rule used by the @@ -51,6 +56,10 @@ UI, Workflows & Features API regression but it is expected that nobody will notice it in practice. + * "git log -p -S" now looks for the after applying + the textconv filter (if defined); earlier it inspected the contents + of the blobs without filtering. + * "git format-patch" learned the "--notes=" option to give notes for the commit after the three-dash lines in its output. diff --git a/Documentation/git-fast-import.txt b/Documentation/git-fast-import.txt index 959e4d3aee..d1844ead4a 100644 --- a/Documentation/git-fast-import.txt +++ b/Documentation/git-fast-import.txt @@ -562,8 +562,12 @@ A `` string must use UNIX-style directory separators (forward slash `/`), may contain any byte other than `LF`, and must not start with double quote (`"`). -If an `LF` or double quote must be encoded into `` shell-style -quoting should be used, e.g. `"path/with\n and \" in it"`. +A path can use C-style string quoting; this is accepted in all cases +and mandatory if the filename starts with double quote or contains +`LF`. In C-style quoting, the complete name should be surrounded with +double quotes, and any `LF`, backslash, or double quote characters +must be escaped by preceding them with a backslash (e.g., +`"path/with\n, \\ and \" in it"`). The value of `` must be in canonical form. That is it must not: diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt index fe46c4258a..6d19d59ce5 100644 --- a/Documentation/git-push.txt +++ b/Documentation/git-push.txt @@ -286,7 +286,8 @@ leading to commit A. The history looks like this: ---------------- Further suppose that the other person already pushed changes leading to A -back to the original repository you two obtained the original commit X. +back to the original repository from which you two obtained the original +commit X. The push done by the other person updated the branch that used to point at commit X to point at commit A. It is a fast-forward. diff --git a/Documentation/technical/api-command.txt b/Documentation/technical/api-command.txt new file mode 100644 index 0000000000..ea9b2eda31 --- /dev/null +++ b/Documentation/technical/api-command.txt @@ -0,0 +1,99 @@ +Integrating new subcommands +=========================== + +This is how-to documentation for people who want to add extension +commands to git. It should be read alongside api-builtin.txt. + +Runtime environment +------------------- + +git subcommands are standalone executables that live in the git exec +path, normally /usr/lib/git-core. The git executable itself is a +thin wrapper that knows where the subcommands live, and runs them by +passing command-line arguments to them. + +(If "git foo" is not found in the git exec path, the wrapper +will look in the rest of your $PATH for it. Thus, it's possible +to write local git extensions that don't live in system space.) + +Implementation languages +------------------------ + +Most subcommands are written in C or shell. A few are written in +Perl. + +While we strongly encourage coding in portable C for portability, +these specific scripting languages are also acceptable. We won't +accept more without a very strong technical case, as we don't want +to broaden the git suite's required dependencies. Import utilities, +surgical tools, remote helpers and other code at the edges of the +git suite are more lenient and we allow Python (and even Tcl/tk), +but they should not be used for core functions. + +This may change in the future. Especially Python is not allowed in +core because we need better Python integration in the git Windows +installer before we can be confident people in that environment +won't experience an unacceptably large loss of capability. + +C commands are normally written as single modules, named after the +command, that link a collection of functions called libgit. Thus, +your command 'git-foo' would normally be implemented as a single +"git-foo.c" (or "builtin/foo.c" if it is to be linked to the main +binary); this organization makes it easy for people reading the code +to find things. + +See the CodingGuidelines document for other guidance on what we consider +good practice in C and shell, and api-builtin.txt for the support +functions available to built-in commands written in C. + +What every extension command needs +---------------------------------- + +You must have a man page, written in asciidoc (this is what git help +followed by your subcommand name will display). Be aware that there is +a local asciidoc configuration and macros which you should use. It's +often helpful to start by cloning an existing page and replacing the +text content. + +You must have a test, written to report in TAP (Test Anything Protocol). +Tests are executables (usually shell scripts) that live in the 't' +subdirectory of the tree. Each test name begins with 't' and a sequence +number that controls where in the test sequence it will be executed; +conventionally the rest of the name stem is that of the command +being tested. + +Read the file t/README to learn more about the conventions to be used +in writing tests, and the test support library. + +Integrating a command +--------------------- + +Here are the things you need to do when you want to merge a new +subcommand into the git tree. + +0. Don't forget to sign off your patch! + +1. Append your command name to one of the variables BUILTIN_OBJS, +EXTRA_PROGRAMS, SCRIPT_SH, SCRIPT_PERL or SCRIPT_PYTHON. + +2. Drop its test in the t directory. + +3. If your command is implemented in an interpreted language with a +p-code intermediate form, make sure .gitignore in the main directory +includes a pattern entry that ignores such files. Python .pyc and +.pyo files will already be covered. + +4. If your command has any dependency on a particular version of +your language, document it in the INSTALL file. + +5. There is a file command-list.txt in the distribution main directory +that categorizes commands by type, so they can be listed in appropriate +subsections in the documentation's summary command list. Add an entry +for yours. To understand the categories, look at git-cmmands.txt +in the main directory. + +6. Give the maintainer one paragraph to include in the RelNotes file +to describe the new feature; a good place to do so is in the cover +letter [PATCH 0/n]. + +That's all there is to it. diff --git a/Makefile b/Makefile index 9bc5e40365..4ad6fbd64e 100644 --- a/Makefile +++ b/Makefile @@ -1573,7 +1573,7 @@ else REMOTE_CURL_NAMES = $(REMOTE_CURL_PRIMARY) $(REMOTE_CURL_ALIASES) PROGRAM_OBJS += http-fetch.o PROGRAMS += $(REMOTE_CURL_NAMES) - curl_check := $(shell (echo 070908; curl-config --vernum) | sort -r | sed -ne 2p) + curl_check := $(shell (echo 070908; curl-config --vernum) 2>/dev/null | sort -r | sed -ne 2p) ifeq "$(curl_check)" "070908" ifndef NO_EXPAT PROGRAM_OBJS += http-push.o diff --git a/builtin/commit.c b/builtin/commit.c index 1dd2ec5e6f..d6dd3df8b1 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -755,7 +755,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix, ident_shown++ ? "" : "\n", author_ident->buf); - if (!user_ident_sufficiently_given()) + if (!committer_ident_sufficiently_given()) status_printf_ln(s, GIT_COLOR_NORMAL, _("%s" "Committer: %s"), @@ -1265,7 +1265,7 @@ static void print_summary(const char *prefix, const unsigned char *sha1, strbuf_addstr(&format, "\n Author: "); strbuf_addbuf_percentquote(&format, &author_ident); } - if (!user_ident_sufficiently_given()) { + if (!committer_ident_sufficiently_given()) { strbuf_addstr(&format, "\n Committer: "); strbuf_addbuf_percentquote(&format, &committer_ident); if (advice_implicit_identity) { diff --git a/builtin/remote.c b/builtin/remote.c index a5a4b23231..937484d7c7 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -39,7 +39,7 @@ static const char * const builtin_remote_rm_usage[] = { }; static const char * const builtin_remote_sethead_usage[] = { - N_("git remote set-head (-a | -d | ])"), + N_("git remote set-head (-a | -d | )"), NULL }; diff --git a/builtin/rm.c b/builtin/rm.c index 2aea3b5653..dabfcf6890 100644 --- a/builtin/rm.c +++ b/builtin/rm.c @@ -234,6 +234,21 @@ int cmd_rm(int argc, const char **argv, const char *prefix) if (read_cache() < 0) die(_("index file corrupt")); + /* + * Drop trailing directory separators from directories so we'll find + * submodules in the index. + */ + for (i = 0; i < argc; i++) { + size_t pathlen = strlen(argv[i]); + if (pathlen && is_dir_sep(argv[i][pathlen - 1]) && + is_directory(argv[i])) { + do { + pathlen--; + } while (pathlen && is_dir_sep(argv[i][pathlen - 1])); + argv[i] = xmemdupz(argv[i], pathlen); + } + } + pathspec = get_pathspec(prefix, argv); refresh_index(&the_index, REFRESH_QUIET, pathspec, NULL, NULL); diff --git a/cache.h b/cache.h index dbd8018b58..18fdd18f36 100644 --- a/cache.h +++ b/cache.h @@ -1149,11 +1149,8 @@ struct config_include_data { #define CONFIG_INCLUDE_INIT { 0 } extern int git_config_include(const char *name, const char *value, void *data); -#define IDENT_NAME_GIVEN 01 -#define IDENT_MAIL_GIVEN 02 -#define IDENT_ALL_GIVEN (IDENT_NAME_GIVEN|IDENT_MAIL_GIVEN) -extern int user_ident_explicitly_given; -extern int user_ident_sufficiently_given(void); +extern int committer_ident_sufficiently_given(void); +extern int author_ident_sufficiently_given(void); extern const char *git_commit_encoding; extern const char *git_log_output_encoding; diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 0960acc586..0b77eb1fa4 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -23,10 +23,6 @@ # 3) Consider changing your PS1 to also show the current branch, # see git-prompt.sh for details. -if [[ -n ${ZSH_VERSION-} ]]; then - autoload -U +X bashcompinit && bashcompinit -fi - case "$COMP_WORDBREAKS" in *:*) : great ;; *) COMP_WORDBREAKS="$COMP_WORDBREAKS:" @@ -169,7 +165,6 @@ __git_reassemble_comp_words_by_ref() } if ! type _get_comp_words_by_ref >/dev/null 2>&1; then -if [[ -z ${ZSH_VERSION:+set} ]]; then _get_comp_words_by_ref () { local exclude cur_ words_ cword_ @@ -197,32 +192,6 @@ _get_comp_words_by_ref () shift done } -else -_get_comp_words_by_ref () -{ - while [ $# -gt 0 ]; do - case "$1" in - cur) - cur=${COMP_WORDS[COMP_CWORD]} - ;; - prev) - prev=${COMP_WORDS[COMP_CWORD-1]} - ;; - words) - words=("${COMP_WORDS[@]}") - ;; - cword) - cword=$COMP_CWORD - ;; - -n) - # assume COMP_WORDBREAKS is already set sanely - shift - ;; - esac - shift - done -} -fi fi # Generates completion reply with compgen, appending a space to possible @@ -989,6 +958,8 @@ _git_clone () --upload-pack --template= --depth + --single-branch + --branch " return ;; @@ -2430,20 +2401,71 @@ __gitk_main () __git_complete_revlist } -__git_func_wrap () -{ - if [[ -n ${ZSH_VERSION-} ]]; then - emulate -L bash - setopt KSH_TYPESET +if [[ -n ${ZSH_VERSION-} ]]; then + echo "WARNING: this script is deprecated, please see git-completion.zsh" 1>&2 - # workaround zsh's bug that leaves 'words' as a special - # variable in versions < 4.3.12 - typeset -h words + autoload -U +X compinit && compinit - # workaround zsh's bug that quotes spaces in the COMPREPLY - # array if IFS doesn't contain spaces. - typeset -h IFS - fi + __gitcomp () + { + emulate -L zsh + + local cur_="${3-$cur}" + + case "$cur_" in + --*=) + ;; + *) + local c IFS=$' \t\n' + local -a array + for c in ${=1}; do + c="$c${4-}" + case $c in + --*=*|*.) ;; + *) c="$c " ;; + esac + array+=("$c") + done + compset -P '*[=:]' + compadd -Q -S '' -p "${2-}" -a -- array && _ret=0 + ;; + esac + } + + __gitcomp_nl () + { + emulate -L zsh + + local IFS=$'\n' + compset -P '*[=:]' + compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0 + } + + __git_zsh_helper () + { + emulate -L ksh + local cur cword prev + cur=${words[CURRENT-1]} + prev=${words[CURRENT-2]} + let cword=CURRENT-1 + __${service}_main + } + + _git () + { + emulate -L zsh + local _ret=1 + __git_zsh_helper + let _ret && _default -S '' && _ret=0 + return _ret + } + + compdef _git git gitk + return +fi + +__git_func_wrap () +{ local cur words cword prev _get_comp_words_by_ref -n =: cur words cword prev $1 diff --git a/contrib/completion/git-completion.zsh b/contrib/completion/git-completion.zsh new file mode 100644 index 0000000000..45775021ff --- /dev/null +++ b/contrib/completion/git-completion.zsh @@ -0,0 +1,78 @@ +#compdef git gitk + +# zsh completion wrapper for git +# +# You need git's bash completion script installed somewhere, by default on the +# same directory as this script. +# +# If your script is on ~/.git-completion.sh instead, you can configure it on +# your ~/.zshrc: +# +# zstyle ':completion:*:*:git:*' script ~/.git-completion.sh +# +# The recommended way to install this script is to copy to +# '~/.zsh/completion/_git', and then add the following to your ~/.zshrc file: +# +# fpath=(~/.zsh/completion $fpath) + +complete () +{ + # do nothing + return 0 +} + +zstyle -s ":completion:*:*:git:*" script script +test -z "$script" && script="$(dirname ${funcsourcetrace[1]%:*})"/git-completion.bash +ZSH_VERSION='' . "$script" + +__gitcomp () +{ + emulate -L zsh + + local cur_="${3-$cur}" + + case "$cur_" in + --*=) + ;; + *) + local c IFS=$' \t\n' + local -a array + for c in ${=1}; do + c="$c${4-}" + case $c in + --*=*|*.) ;; + *) c="$c " ;; + esac + array+=("$c") + done + compset -P '*[=:]' + compadd -Q -S '' -p "${2-}" -a -- array && _ret=0 + ;; + esac +} + +__gitcomp_nl () +{ + emulate -L zsh + + local IFS=$'\n' + compset -P '*[=:]' + compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0 +} + +_git () +{ + local _ret=1 + () { + emulate -L ksh + local cur cword prev + cur=${words[CURRENT-1]} + prev=${words[CURRENT-2]} + let cword=CURRENT-1 + __${service}_main + } + let _ret && _default -S '' && _ret=0 + return _ret +} + +_git diff --git a/contrib/emacs/git.el b/contrib/emacs/git.el index 65c95d9d5a..5ffc506f6d 100644 --- a/contrib/emacs/git.el +++ b/contrib/emacs/git.el @@ -1671,7 +1671,7 @@ Commands: "Entry point into git-status mode." (interactive "DSelect directory: ") (setq dir (git-get-top-dir dir)) - (if (file-directory-p (concat (file-name-as-directory dir) ".git")) + (if (file-exists-p (concat (file-name-as-directory dir) ".git")) (let ((buffer (or (and git-reuse-status-buffer (git-find-status-buffer dir)) (create-file-buffer (expand-file-name "*git-status*" dir))))) (switch-to-buffer buffer) diff --git a/contrib/mw-to-git/git-remote-mediawiki b/contrib/mw-to-git/git-remote-mediawiki index 68555d4265..094129de09 100755 --- a/contrib/mw-to-git/git-remote-mediawiki +++ b/contrib/mw-to-git/git-remote-mediawiki @@ -711,6 +711,14 @@ sub fetch_mw_revisions { return ($n, @revisions); } +sub fe_escape_path { + my $path = shift; + $path =~ s/\\/\\\\/g; + $path =~ s/"/\\"/g; + $path =~ s/\n/\\n/g; + return '"' . $path . '"'; +} + sub import_file_revision { my $commit = shift; my %commit = %{$commit}; @@ -738,15 +746,17 @@ sub import_file_revision { print STDOUT "from refs/mediawiki/$remotename/master^0\n"; } if ($content ne DELETED_CONTENT) { - print STDOUT "M 644 inline $title.mw\n"; + print STDOUT "M 644 inline " . + fe_escape_path($title . ".mw") . "\n"; literal_data($content); if (%mediafile) { - print STDOUT "M 644 inline $mediafile{title}\n"; + print STDOUT "M 644 inline " + . fe_escape_path($mediafile{title}) . "\n"; literal_data_raw($mediafile{content}); } print STDOUT "\n\n"; } else { - print STDOUT "D $title.mw\n"; + print STDOUT "D " . fe_escape_path($title . ".mw") . "\n"; } # mediawiki revision number in the git note diff --git a/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh b/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh index 246d47d8fb..b6405ce262 100755 --- a/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh +++ b/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh @@ -318,4 +318,30 @@ test_expect_success 'git push with \ in format control' ' ' +test_expect_success 'fast-import meta-characters in page name (mw -> git)' ' + wiki_reset && + wiki_editpage \"file\"_\\_foo "expect to be called \"file\"_\\_foo" false && + git clone mediawiki::'"$WIKI_URL"' mw_dir_21 && + test_path_is_file mw_dir_21/\"file\"_\\_foo.mw && + wiki_getallpage ref_page_21 && + test_diff_directories mw_dir_21 ref_page_21 +' + + +test_expect_success 'fast-import meta-characters in page name (git -> mw) ' ' + wiki_reset && + git clone mediawiki::'"$WIKI_URL"' mw_dir_22 && + ( + cd mw_dir_22 && + echo "this file is called \"file\"_\\_foo.mw" >\"file\"_\\_foo && + git add . && + git commit -am "file \"file\"_\\_foo" && + git pull && + git push + ) && + wiki_getallpage ref_page_22 && + test_diff_directories mw_dir_22 ref_page_22 +' + + test_done diff --git a/diffcore-pickaxe.c b/diffcore-pickaxe.c index a209376354..b097fa7661 100644 --- a/diffcore-pickaxe.c +++ b/diffcore-pickaxe.c @@ -157,19 +157,15 @@ static void diffcore_pickaxe_grep(struct diff_options *o) return; } -static unsigned int contains(struct diff_filespec *one, struct diff_options *o, +static unsigned int contains(mmfile_t *mf, struct diff_options *o, regex_t *regexp, kwset_t kws) { unsigned int cnt; unsigned long sz; const char *data; - if (!o->pickaxe[0]) - return 0; - if (diff_populate_filespec(one, 0)) - return 0; - sz = one->size; - data = one->data; + sz = mf->size; + data = mf->ptr; cnt = 0; if (regexp) { @@ -199,26 +195,53 @@ static unsigned int contains(struct diff_filespec *one, struct diff_options *o, cnt++; } } - diff_free_filespec_data(one); return cnt; } static int has_changes(struct diff_filepair *p, struct diff_options *o, regex_t *regexp, kwset_t kws) { - if (!DIFF_FILE_VALID(p->one)) { - if (!DIFF_FILE_VALID(p->two)) - return 0; /* ignore unmerged */ + struct userdiff_driver *textconv_one = get_textconv(p->one); + struct userdiff_driver *textconv_two = get_textconv(p->two); + mmfile_t mf1, mf2; + int ret; + + if (!o->pickaxe[0]) + return 0; + + /* + * If we have an unmodified pair, we know that the count will be the + * same and don't even have to load the blobs. Unless textconv is in + * play, _and_ we are using two different textconv filters (e.g., + * because a pair is an exact rename with different textconv attributes + * for each side, which might generate different content). + */ + if (textconv_one == textconv_two && diff_unmodified_pair(p)) + return 0; + + fill_one(p->one, &mf1, &textconv_one); + fill_one(p->two, &mf2, &textconv_two); + + if (!mf1.ptr) { + if (!mf2.ptr) + ret = 0; /* ignore unmerged */ /* created */ - return contains(p->two, o, regexp, kws) != 0; - } - if (!DIFF_FILE_VALID(p->two)) - return contains(p->one, o, regexp, kws) != 0; - if (!diff_unmodified_pair(p)) { - return contains(p->one, o, regexp, kws) != - contains(p->two, o, regexp, kws); + ret = contains(&mf2, o, regexp, kws) != 0; } - return 0; + else if (!mf2.ptr) /* removed */ + ret = contains(&mf1, o, regexp, kws) != 0; + else + ret = contains(&mf1, o, regexp, kws) != + contains(&mf2, o, regexp, kws); + + if (textconv_one) + free(mf1.ptr); + if (textconv_two) + free(mf2.ptr); + diff_free_filespec_data(p->one); + diff_free_filespec_data(p->two); + + return ret; } static void diffcore_pickaxe_count(struct diff_options *o) diff --git a/git-send-email.perl b/git-send-email.perl index f3bbc166d6..94c7f76a15 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -753,16 +753,11 @@ sub file_declares_8bit_cte { } } -my $prompting = 0; if (!defined $sender) { $sender = $repoauthor || $repocommitter || ''; - $sender = ask("Who should the emails appear to be from? [$sender] ", - default => $sender, - valid_re => qr/\@.*\./, confirm_only => 1); - print "Emails will be sent from: ", $sender, "\n"; - $prompting++; } +my $prompting = 0; if (!@initial_to && !defined $to_cmd) { my $to = ask("Who should the emails be sent to (if any)? ", default => "", diff --git a/gitweb/gitweb.perl b/gitweb/gitweb.perl index e8812fa2b9..0f207f2e20 100755 --- a/gitweb/gitweb.perl +++ b/gitweb/gitweb.perl @@ -540,7 +540,7 @@ sub evaluate_uri { # $feature{'remote_heads'}{'default'} = [1]; # To have project specific config enable override in $GITWEB_CONFIG # $feature{'remote_heads'}{'override'} = 1; - # and in project config gitweb.remote_heads = 0|1; + # and in project config gitweb.remoteheads = 0|1; 'remote_heads' => { 'sub' => sub { feature_bool('remote_heads', @_) }, 'override' => 0, @@ -2696,12 +2696,15 @@ sub git_get_project_config { # only subsection, if exists, is case sensitive, # and not lowercased by 'git config -z -l' if (my ($hi, $mi, $lo) = ($key =~ /^([^.]*)\.(.*)\.([^.]*)$/)) { + $lo =~ s/_//g; $key = join(".", lc($hi), $mi, lc($lo)); + return if ($lo =~ /\W/ || $hi =~ /\W/); } else { $key = lc($key); + $key =~ s/_//g; + return if ($key =~ /\W/); } $key =~ s/^gitweb\.//; - return if ($key =~ m/\W/); # type sanity check if (defined $type) { diff --git a/ident.c b/ident.c index a4bf206e2f..ac9672f607 100644 --- a/ident.c +++ b/ident.c @@ -10,7 +10,12 @@ static struct strbuf git_default_name = STRBUF_INIT; static struct strbuf git_default_email = STRBUF_INIT; static char git_default_date[50]; -int user_ident_explicitly_given; + +#define IDENT_NAME_GIVEN 01 +#define IDENT_MAIL_GIVEN 02 +#define IDENT_ALL_GIVEN (IDENT_NAME_GIVEN|IDENT_MAIL_GIVEN) +static int committer_ident_explicitly_given; +static int author_ident_explicitly_given; #ifdef NO_GECOS_IN_PWENT #define get_gecos(ignored) "&" @@ -109,7 +114,8 @@ const char *ident_default_email(void) if (email && email[0]) { strbuf_addstr(&git_default_email, email); - user_ident_explicitly_given |= IDENT_MAIL_GIVEN; + committer_ident_explicitly_given |= IDENT_MAIL_GIVEN; + author_ident_explicitly_given |= IDENT_MAIL_GIVEN; } else copy_email(xgetpwuid_self(), &git_default_email); strbuf_trim(&git_default_email); @@ -327,6 +333,10 @@ const char *fmt_name(const char *name, const char *email) const char *git_author_info(int flag) { + if (getenv("GIT_AUTHOR_NAME")) + author_ident_explicitly_given |= IDENT_NAME_GIVEN; + if (getenv("GIT_AUTHOR_EMAIL")) + author_ident_explicitly_given |= IDENT_MAIL_GIVEN; return fmt_ident(getenv("GIT_AUTHOR_NAME"), getenv("GIT_AUTHOR_EMAIL"), getenv("GIT_AUTHOR_DATE"), @@ -336,16 +346,16 @@ const char *git_author_info(int flag) const char *git_committer_info(int flag) { if (getenv("GIT_COMMITTER_NAME")) - user_ident_explicitly_given |= IDENT_NAME_GIVEN; + committer_ident_explicitly_given |= IDENT_NAME_GIVEN; if (getenv("GIT_COMMITTER_EMAIL")) - user_ident_explicitly_given |= IDENT_MAIL_GIVEN; + committer_ident_explicitly_given |= IDENT_MAIL_GIVEN; return fmt_ident(getenv("GIT_COMMITTER_NAME"), getenv("GIT_COMMITTER_EMAIL"), getenv("GIT_COMMITTER_DATE"), flag); } -int user_ident_sufficiently_given(void) +static int ident_is_sufficient(int user_ident_explicitly_given) { #ifndef WINDOWS return (user_ident_explicitly_given & IDENT_MAIL_GIVEN); @@ -354,6 +364,16 @@ int user_ident_sufficiently_given(void) #endif } +int committer_ident_sufficiently_given(void) +{ + return ident_is_sufficient(committer_ident_explicitly_given); +} + +int author_ident_sufficiently_given(void) +{ + return ident_is_sufficient(author_ident_explicitly_given); +} + int git_ident_config(const char *var, const char *value, void *data) { if (!strcmp(var, "user.name")) { @@ -361,7 +381,8 @@ int git_ident_config(const char *var, const char *value, void *data) return config_error_nonbool(var); strbuf_reset(&git_default_name); strbuf_addstr(&git_default_name, value); - user_ident_explicitly_given |= IDENT_NAME_GIVEN; + committer_ident_explicitly_given |= IDENT_NAME_GIVEN; + author_ident_explicitly_given |= IDENT_NAME_GIVEN; return 0; } @@ -370,7 +391,8 @@ int git_ident_config(const char *var, const char *value, void *data) return config_error_nonbool(var); strbuf_reset(&git_default_email); strbuf_addstr(&git_default_email, value); - user_ident_explicitly_given |= IDENT_MAIL_GIVEN; + committer_ident_explicitly_given |= IDENT_MAIL_GIVEN; + author_ident_explicitly_given |= IDENT_MAIL_GIVEN; return 0; } diff --git a/po/git.pot b/po/git.pot index e5611581e6..009eacba27 100644 --- a/po/git.pot +++ b/po/git.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: Git Mailing List \n" -"POT-Creation-Date: 2012-10-16 08:38+0800\n" +"POT-Creation-Date: 2012-11-23 14:27+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -60,7 +60,7 @@ msgstr "" msgid "archive format" msgstr "" -#: archive.c:323 builtin/log.c:1079 +#: archive.c:323 builtin/log.c:1084 msgid "prefix" msgstr "" @@ -68,9 +68,9 @@ msgstr "" msgid "prepend prefix to each pathname in the archive" msgstr "" -#: archive.c:325 builtin/archive.c:91 builtin/blame.c:2389 -#: builtin/blame.c:2390 builtin/config.c:56 builtin/fast-export.c:642 -#: builtin/fast-export.c:644 builtin/grep.c:801 builtin/hash-object.c:77 +#: archive.c:325 builtin/archive.c:91 builtin/blame.c:2390 +#: builtin/blame.c:2391 builtin/config.c:55 builtin/fast-export.c:642 +#: builtin/fast-export.c:644 builtin/grep.c:715 builtin/hash-object.c:77 #: builtin/ls-files.c:494 builtin/ls-files.c:497 builtin/notes.c:540 #: builtin/notes.c:697 builtin/read-tree.c:107 parse-options.h:149 msgid "file" @@ -120,6 +120,12 @@ msgstr "" msgid "path to the remote git-upload-archive command" msgstr "" +#: attr.c:259 +msgid "" +"Negative patterns are forbidden in git attributes\n" +"Use '\\!' for literal leading exclamation." +msgstr "" + #: bundle.c:36 #, c-format msgid "'%s' does not look like a v2 bundle file" @@ -130,7 +136,7 @@ msgstr "" msgid "unrecognized header: %s%s (%d)" msgstr "" -#: bundle.c:89 builtin/commit.c:672 +#: bundle.c:89 builtin/commit.c:674 #, c-format msgid "could not open '%s'" msgstr "" @@ -140,7 +146,7 @@ msgid "Repository lacks these prerequisite commits:" msgstr "" #: bundle.c:164 sequencer.c:562 sequencer.c:994 builtin/log.c:290 -#: builtin/log.c:727 builtin/log.c:1313 builtin/log.c:1529 builtin/merge.c:347 +#: builtin/log.c:732 builtin/log.c:1319 builtin/log.c:1535 builtin/merge.c:347 #: builtin/shortlog.c:181 msgid "revision walk setup failed" msgstr "" @@ -167,7 +173,7 @@ msgstr[1] "" msgid "rev-list died" msgstr "" -#: bundle.c:300 builtin/log.c:1209 builtin/shortlog.c:284 +#: bundle.c:300 builtin/log.c:1215 builtin/shortlog.c:284 #, c-format msgid "unrecognized argument: %s" msgstr "" @@ -293,24 +299,24 @@ msgid_plural "%lu years ago" msgstr[0] "" msgstr[1] "" -#: diff.c:105 +#: diff.c:111 #, c-format -msgid " Failed to parse dirstat cut-off percentage '%.*s'\n" +msgid " Failed to parse dirstat cut-off percentage '%s'\n" msgstr "" -#: diff.c:110 +#: diff.c:116 #, c-format -msgid " Unknown dirstat parameter '%.*s'\n" +msgid " Unknown dirstat parameter '%s'\n" msgstr "" -#: diff.c:210 +#: diff.c:219 #, c-format msgid "" "Found errors in 'diff.dirstat' config variable:\n" "%s" msgstr "" -#: diff.c:3458 +#: diff.c:3467 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" @@ -329,17 +335,17 @@ msgstr "" msgid "gpg failed to sign the data" msgstr "" -#: grep.c:1441 +#: grep.c:1622 #, c-format msgid "'%s': unable to read %s" msgstr "" -#: grep.c:1458 +#: grep.c:1639 #, c-format msgid "'%s': %s" msgstr "" -#: grep.c:1469 +#: grep.c:1650 #, c-format msgid "'%s': short read %s" msgstr "" @@ -391,6 +397,15 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" +#: merge.c:56 +msgid "failed to read the cache" +msgstr "" + +#: merge.c:110 builtin/checkout.c:333 builtin/checkout.c:534 +#: builtin/clone.c:586 +msgid "unable to write new index file" +msgstr "" + #: merge-recursive.c:190 #, c-format msgid "(bad commit)\n" @@ -563,7 +578,7 @@ msgstr "" msgid "Auto-merging %s" msgstr "" -#: merge-recursive.c:1633 git-submodule.sh:869 +#: merge-recursive.c:1633 git-submodule.sh:893 msgid "submodule" msgstr "" @@ -633,7 +648,7 @@ msgstr "" msgid "Could not parse object '%s'" msgstr "" -#: merge-recursive.c:2009 builtin/merge.c:696 +#: merge-recursive.c:2009 builtin/merge.c:643 msgid "Unable to write index." msgstr "" @@ -684,14 +699,14 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: sequencer.c:123 builtin/merge.c:864 builtin/merge.c:977 -#: builtin/merge.c:1087 builtin/merge.c:1097 +#: sequencer.c:123 builtin/merge.c:761 builtin/merge.c:874 builtin/merge.c:984 +#: builtin/merge.c:994 #, c-format msgid "Could not open '%s' for writing" msgstr "" -#: sequencer.c:125 builtin/merge.c:333 builtin/merge.c:867 -#: builtin/merge.c:1089 builtin/merge.c:1102 +#: sequencer.c:125 builtin/merge.c:333 builtin/merge.c:764 builtin/merge.c:986 +#: builtin/merge.c:999 #, c-format msgid "Could not write to '%s'" msgstr "" @@ -1299,7 +1314,7 @@ msgstr "" msgid "unexpected diff status %c" msgstr "" -#: builtin/add.c:67 builtin/commit.c:230 +#: builtin/add.c:67 builtin/commit.c:231 msgid "updating files failed" msgstr "" @@ -1317,7 +1332,7 @@ msgstr "" msgid "Unstaged changes after refreshing the index:" msgstr "" -#: builtin/add.c:195 builtin/add.c:460 builtin/rm.c:186 +#: builtin/add.c:195 builtin/add.c:460 builtin/rm.c:260 #, c-format msgid "pathspec '%s' did not match any files" msgstr "" @@ -1360,12 +1375,12 @@ msgstr "" #: builtin/add.c:319 builtin/clean.c:52 builtin/fetch.c:78 builtin/mv.c:63 #: builtin/prune-packed.c:76 builtin/push.c:388 builtin/remote.c:1253 -#: builtin/rm.c:133 +#: builtin/rm.c:206 msgid "dry run" msgstr "" -#: builtin/add.c:320 builtin/apply.c:4354 builtin/commit.c:1154 -#: builtin/count-objects.c:82 builtin/fsck.c:613 builtin/log.c:1477 +#: builtin/add.c:320 builtin/apply.c:4354 builtin/commit.c:1160 +#: builtin/count-objects.c:82 builtin/fsck.c:613 builtin/log.c:1483 #: builtin/mv.c:62 builtin/read-tree.c:112 msgid "be verbose" msgstr "" @@ -1374,7 +1389,7 @@ msgstr "" msgid "interactive picking" msgstr "" -#: builtin/add.c:323 builtin/checkout.c:1028 builtin/reset.c:248 +#: builtin/add.c:323 builtin/checkout.c:1031 builtin/reset.c:248 msgid "select hunks interactively" msgstr "" @@ -1441,12 +1456,12 @@ msgstr "" msgid "Maybe you wanted to say 'git add .'?\n" msgstr "" -#: builtin/add.c:421 builtin/clean.c:95 builtin/commit.c:290 builtin/mv.c:82 -#: builtin/rm.c:162 +#: builtin/add.c:421 builtin/clean.c:95 builtin/commit.c:291 builtin/mv.c:82 +#: builtin/rm.c:235 msgid "index file corrupt" msgstr "" -#: builtin/add.c:481 builtin/apply.c:4450 builtin/mv.c:229 builtin/rm.c:260 +#: builtin/add.c:481 builtin/apply.c:4450 builtin/mv.c:229 builtin/rm.c:355 msgid "Unable to write new index file" msgstr "" @@ -1975,95 +1990,95 @@ msgstr "" msgid "[rev-opts] are documented in git-rev-list(1)" msgstr "" -#: builtin/blame.c:2373 +#: builtin/blame.c:2374 msgid "Show blame entries as we find them, incrementally" msgstr "" -#: builtin/blame.c:2374 +#: builtin/blame.c:2375 msgid "Show blank SHA-1 for boundary commits (Default: off)" msgstr "" -#: builtin/blame.c:2375 +#: builtin/blame.c:2376 msgid "Do not treat root commits as boundaries (Default: off)" msgstr "" -#: builtin/blame.c:2376 +#: builtin/blame.c:2377 msgid "Show work cost statistics" msgstr "" -#: builtin/blame.c:2377 +#: builtin/blame.c:2378 msgid "Show output score for blame entries" msgstr "" -#: builtin/blame.c:2378 +#: builtin/blame.c:2379 msgid "Show original filename (Default: auto)" msgstr "" -#: builtin/blame.c:2379 +#: builtin/blame.c:2380 msgid "Show original linenumber (Default: off)" msgstr "" -#: builtin/blame.c:2380 +#: builtin/blame.c:2381 msgid "Show in a format designed for machine consumption" msgstr "" -#: builtin/blame.c:2381 +#: builtin/blame.c:2382 msgid "Show porcelain format with per-line commit information" msgstr "" -#: builtin/blame.c:2382 +#: builtin/blame.c:2383 msgid "Use the same output mode as git-annotate (Default: off)" msgstr "" -#: builtin/blame.c:2383 +#: builtin/blame.c:2384 msgid "Show raw timestamp (Default: off)" msgstr "" -#: builtin/blame.c:2384 +#: builtin/blame.c:2385 msgid "Show long commit SHA1 (Default: off)" msgstr "" -#: builtin/blame.c:2385 +#: builtin/blame.c:2386 msgid "Suppress author name and timestamp (Default: off)" msgstr "" -#: builtin/blame.c:2386 +#: builtin/blame.c:2387 msgid "Show author email instead of name (Default: off)" msgstr "" -#: builtin/blame.c:2387 +#: builtin/blame.c:2388 msgid "Ignore whitespace differences" msgstr "" -#: builtin/blame.c:2388 +#: builtin/blame.c:2389 msgid "Spend extra cycles to find better match" msgstr "" -#: builtin/blame.c:2389 +#: builtin/blame.c:2390 msgid "Use revisions from instead of calling git-rev-list" msgstr "" -#: builtin/blame.c:2390 +#: builtin/blame.c:2391 msgid "Use 's contents as the final image" msgstr "" -#: builtin/blame.c:2391 builtin/blame.c:2392 +#: builtin/blame.c:2392 builtin/blame.c:2393 msgid "score" msgstr "" -#: builtin/blame.c:2391 +#: builtin/blame.c:2392 msgid "Find line copies within and across files" msgstr "" -#: builtin/blame.c:2392 +#: builtin/blame.c:2393 msgid "Find line movements within and across files" msgstr "" -#: builtin/blame.c:2393 +#: builtin/blame.c:2394 msgid "n,m" msgstr "" -#: builtin/blame.c:2393 +#: builtin/blame.c:2394 msgid "Process only line range n,m, counting from 1" msgstr "" @@ -2097,269 +2112,269 @@ msgid "" " '%s', even though it is merged to HEAD." msgstr "" -#: builtin/branch.c:181 +#: builtin/branch.c:163 +#, c-format +msgid "Couldn't look up commit object for '%s'" +msgstr "" + +#: builtin/branch.c:167 +#, c-format +msgid "" +"The branch '%s' is not fully merged.\n" +"If you are sure you want to delete it, run 'git branch -D %s'." +msgstr "" + +#: builtin/branch.c:180 +msgid "Update of config-file failed" +msgstr "" + +#: builtin/branch.c:208 msgid "cannot use -a with -d" msgstr "" -#: builtin/branch.c:187 +#: builtin/branch.c:214 msgid "Couldn't look up commit object for HEAD" msgstr "" -#: builtin/branch.c:192 +#: builtin/branch.c:222 #, c-format msgid "Cannot delete the branch '%s' which you are currently on." msgstr "" -#: builtin/branch.c:203 +#: builtin/branch.c:235 #, c-format msgid "remote branch '%s' not found." msgstr "" -#: builtin/branch.c:204 +#: builtin/branch.c:236 #, c-format msgid "branch '%s' not found." msgstr "" -#: builtin/branch.c:211 -#, c-format -msgid "Couldn't look up commit object for '%s'" -msgstr "" - -#: builtin/branch.c:217 -#, c-format -msgid "" -"The branch '%s' is not fully merged.\n" -"If you are sure you want to delete it, run 'git branch -D %s'." -msgstr "" - -#: builtin/branch.c:226 +#: builtin/branch.c:250 #, c-format msgid "Error deleting remote branch '%s'" msgstr "" -#: builtin/branch.c:227 +#: builtin/branch.c:251 #, c-format msgid "Error deleting branch '%s'" msgstr "" -#: builtin/branch.c:234 +#: builtin/branch.c:258 #, c-format msgid "Deleted remote branch %s (was %s).\n" msgstr "" -#: builtin/branch.c:235 +#: builtin/branch.c:259 #, c-format msgid "Deleted branch %s (was %s).\n" msgstr "" -#: builtin/branch.c:240 -msgid "Update of config-file failed" -msgstr "" - -#: builtin/branch.c:338 +#: builtin/branch.c:361 #, c-format msgid "branch '%s' does not point at a commit" msgstr "" -#: builtin/branch.c:410 +#: builtin/branch.c:433 #, c-format msgid "[%s: behind %d]" msgstr "" -#: builtin/branch.c:412 +#: builtin/branch.c:435 #, c-format msgid "[behind %d]" msgstr "" -#: builtin/branch.c:416 +#: builtin/branch.c:439 #, c-format msgid "[%s: ahead %d]" msgstr "" -#: builtin/branch.c:418 +#: builtin/branch.c:441 #, c-format msgid "[ahead %d]" msgstr "" -#: builtin/branch.c:421 +#: builtin/branch.c:444 #, c-format msgid "[%s: ahead %d, behind %d]" msgstr "" -#: builtin/branch.c:424 +#: builtin/branch.c:447 #, c-format msgid "[ahead %d, behind %d]" msgstr "" -#: builtin/branch.c:537 +#: builtin/branch.c:560 msgid "(no branch)" msgstr "" -#: builtin/branch.c:602 +#: builtin/branch.c:625 msgid "some refs could not be read" msgstr "" -#: builtin/branch.c:615 +#: builtin/branch.c:638 msgid "cannot rename the current branch while not on any." msgstr "" -#: builtin/branch.c:625 +#: builtin/branch.c:648 #, c-format msgid "Invalid branch name: '%s'" msgstr "" -#: builtin/branch.c:640 +#: builtin/branch.c:663 msgid "Branch rename failed" msgstr "" -#: builtin/branch.c:644 +#: builtin/branch.c:667 #, c-format msgid "Renamed a misnamed branch '%s' away" msgstr "" -#: builtin/branch.c:648 +#: builtin/branch.c:671 #, c-format msgid "Branch renamed to %s, but HEAD is not updated!" msgstr "" -#: builtin/branch.c:655 +#: builtin/branch.c:678 msgid "Branch is renamed, but update of config-file failed" msgstr "" -#: builtin/branch.c:670 +#: builtin/branch.c:693 #, c-format msgid "malformed object name %s" msgstr "" -#: builtin/branch.c:694 +#: builtin/branch.c:717 #, c-format msgid "could not write branch description template: %s" msgstr "" -#: builtin/branch.c:724 +#: builtin/branch.c:747 msgid "Generic options" msgstr "" -#: builtin/branch.c:726 +#: builtin/branch.c:749 msgid "show hash and subject, give twice for upstream branch" msgstr "" -#: builtin/branch.c:727 +#: builtin/branch.c:750 msgid "suppress informational messages" msgstr "" -#: builtin/branch.c:728 +#: builtin/branch.c:751 msgid "set up tracking mode (see git-pull(1))" msgstr "" -#: builtin/branch.c:730 +#: builtin/branch.c:753 msgid "change upstream info" msgstr "" -#: builtin/branch.c:734 +#: builtin/branch.c:757 msgid "use colored output" msgstr "" -#: builtin/branch.c:735 +#: builtin/branch.c:758 msgid "act on remote-tracking branches" msgstr "" -#: builtin/branch.c:738 builtin/branch.c:744 builtin/branch.c:765 -#: builtin/branch.c:771 builtin/commit.c:1362 builtin/commit.c:1363 -#: builtin/commit.c:1364 builtin/commit.c:1365 builtin/tag.c:470 +#: builtin/branch.c:761 builtin/branch.c:767 builtin/branch.c:788 +#: builtin/branch.c:794 builtin/commit.c:1376 builtin/commit.c:1377 +#: builtin/commit.c:1378 builtin/commit.c:1379 builtin/tag.c:470 msgid "commit" msgstr "" -#: builtin/branch.c:739 builtin/branch.c:745 +#: builtin/branch.c:762 builtin/branch.c:768 msgid "print only branches that contain the commit" msgstr "" -#: builtin/branch.c:751 +#: builtin/branch.c:774 msgid "Specific git-branch actions:" msgstr "" -#: builtin/branch.c:752 +#: builtin/branch.c:775 msgid "list both remote-tracking and local branches" msgstr "" -#: builtin/branch.c:754 +#: builtin/branch.c:777 msgid "delete fully merged branch" msgstr "" -#: builtin/branch.c:755 +#: builtin/branch.c:778 msgid "delete branch (even if not merged)" msgstr "" -#: builtin/branch.c:756 +#: builtin/branch.c:779 msgid "move/rename a branch and its reflog" msgstr "" -#: builtin/branch.c:757 +#: builtin/branch.c:780 msgid "move/rename a branch, even if target exists" msgstr "" -#: builtin/branch.c:758 +#: builtin/branch.c:781 msgid "list branch names" msgstr "" -#: builtin/branch.c:759 +#: builtin/branch.c:782 msgid "create the branch's reflog" msgstr "" -#: builtin/branch.c:761 +#: builtin/branch.c:784 msgid "edit the description for the branch" msgstr "" -#: builtin/branch.c:762 +#: builtin/branch.c:785 msgid "force creation (when already exists)" msgstr "" -#: builtin/branch.c:765 +#: builtin/branch.c:788 msgid "print only not merged branches" msgstr "" -#: builtin/branch.c:771 +#: builtin/branch.c:794 msgid "print only merged branches" msgstr "" -#: builtin/branch.c:775 +#: builtin/branch.c:798 msgid "list branches in columns" msgstr "" -#: builtin/branch.c:788 +#: builtin/branch.c:811 msgid "Failed to resolve HEAD as a valid ref." msgstr "" -#: builtin/branch.c:793 builtin/clone.c:561 +#: builtin/branch.c:816 builtin/clone.c:561 msgid "HEAD not found below refs/heads!" msgstr "" -#: builtin/branch.c:813 +#: builtin/branch.c:836 msgid "--column and --verbose are incompatible" msgstr "" -#: builtin/branch.c:864 +#: builtin/branch.c:887 #, c-format msgid "branch '%s' does not exist" msgstr "" -#: builtin/branch.c:876 +#: builtin/branch.c:899 #, c-format msgid "Branch '%s' has no upstream information" msgstr "" -#: builtin/branch.c:891 +#: builtin/branch.c:914 msgid "-a and -r options to 'git branch' do not make sense with a branch name" msgstr "" -#: builtin/branch.c:894 +#: builtin/branch.c:917 #, c-format msgid "" "The --set-upstream flag is deprecated and will be removed. Consider using --" "track or --set-upstream-to\n" msgstr "" -#: builtin/branch.c:911 +#: builtin/branch.c:934 #, c-format msgid "" "\n" @@ -2367,12 +2382,12 @@ msgid "" "\n" msgstr "" -#: builtin/branch.c:912 +#: builtin/branch.c:935 #, c-format msgid " git branch -d %s\n" msgstr "" -#: builtin/branch.c:913 +#: builtin/branch.c:936 #, c-format msgid " git branch --set-upstream-to %s\n" msgstr "" @@ -2561,11 +2576,6 @@ msgstr "" msgid "path '%s' is unmerged" msgstr "" -#: builtin/checkout.c:333 builtin/checkout.c:534 builtin/clone.c:586 -#: builtin/merge.c:811 -msgid "unable to write new index file" -msgstr "" - #: builtin/checkout.c:448 msgid "you need to resolve your current index first" msgstr "" @@ -2594,7 +2604,7 @@ msgstr "" msgid "Switched to and reset branch '%s'\n" msgstr "" -#: builtin/checkout.c:618 +#: builtin/checkout.c:618 builtin/checkout.c:955 #, c-format msgid "Switched to a new branch '%s'\n" msgstr "" @@ -2659,124 +2669,124 @@ msgstr "" msgid "reference is not a tree: %s" msgstr "" -#: builtin/checkout.c:961 +#: builtin/checkout.c:964 msgid "paths cannot be used with switching branches" msgstr "" -#: builtin/checkout.c:964 builtin/checkout.c:968 +#: builtin/checkout.c:967 builtin/checkout.c:971 #, c-format msgid "'%s' cannot be used with switching branches" msgstr "" -#: builtin/checkout.c:972 builtin/checkout.c:975 builtin/checkout.c:980 -#: builtin/checkout.c:983 +#: builtin/checkout.c:975 builtin/checkout.c:978 builtin/checkout.c:983 +#: builtin/checkout.c:986 #, c-format msgid "'%s' cannot be used with '%s'" msgstr "" -#: builtin/checkout.c:988 +#: builtin/checkout.c:991 #, c-format msgid "Cannot switch branch to a non-commit '%s'" msgstr "" -#: builtin/checkout.c:1009 builtin/gc.c:177 +#: builtin/checkout.c:1012 builtin/gc.c:177 msgid "suppress progress reporting" msgstr "" -#: builtin/checkout.c:1010 builtin/checkout.c:1012 builtin/clone.c:89 +#: builtin/checkout.c:1013 builtin/checkout.c:1015 builtin/clone.c:89 #: builtin/remote.c:169 builtin/remote.c:171 msgid "branch" msgstr "" -#: builtin/checkout.c:1011 +#: builtin/checkout.c:1014 msgid "create and checkout a new branch" msgstr "" -#: builtin/checkout.c:1013 +#: builtin/checkout.c:1016 msgid "create/reset and checkout a branch" msgstr "" -#: builtin/checkout.c:1014 +#: builtin/checkout.c:1017 msgid "create reflog for new branch" msgstr "" -#: builtin/checkout.c:1015 +#: builtin/checkout.c:1018 msgid "detach the HEAD at named commit" msgstr "" -#: builtin/checkout.c:1016 +#: builtin/checkout.c:1019 msgid "set upstream info for new branch" msgstr "" -#: builtin/checkout.c:1018 +#: builtin/checkout.c:1021 msgid "new branch" msgstr "" -#: builtin/checkout.c:1018 +#: builtin/checkout.c:1021 msgid "new unparented branch" msgstr "" -#: builtin/checkout.c:1019 +#: builtin/checkout.c:1022 msgid "checkout our version for unmerged files" msgstr "" -#: builtin/checkout.c:1021 +#: builtin/checkout.c:1024 msgid "checkout their version for unmerged files" msgstr "" -#: builtin/checkout.c:1023 +#: builtin/checkout.c:1026 msgid "force checkout (throw away local modifications)" msgstr "" -#: builtin/checkout.c:1024 +#: builtin/checkout.c:1027 msgid "perform a 3-way merge with the new branch" msgstr "" -#: builtin/checkout.c:1025 builtin/merge.c:215 +#: builtin/checkout.c:1028 builtin/merge.c:215 msgid "update ignored files (default)" msgstr "" -#: builtin/checkout.c:1026 builtin/log.c:1111 parse-options.h:241 +#: builtin/checkout.c:1029 builtin/log.c:1116 parse-options.h:241 msgid "style" msgstr "" -#: builtin/checkout.c:1027 +#: builtin/checkout.c:1030 msgid "conflict style (merge or diff3)" msgstr "" -#: builtin/checkout.c:1030 +#: builtin/checkout.c:1033 msgid "second guess 'git checkout no-such-branch'" msgstr "" -#: builtin/checkout.c:1054 +#: builtin/checkout.c:1057 msgid "-b, -B and --orphan are mutually exclusive" msgstr "" -#: builtin/checkout.c:1071 +#: builtin/checkout.c:1074 msgid "--track needs a branch name" msgstr "" -#: builtin/checkout.c:1078 +#: builtin/checkout.c:1081 msgid "Missing branch name; try -b" msgstr "" -#: builtin/checkout.c:1113 +#: builtin/checkout.c:1116 msgid "invalid path specification" msgstr "" -#: builtin/checkout.c:1120 +#: builtin/checkout.c:1123 #, c-format msgid "" "Cannot update paths and switch to branch '%s' at the same time.\n" "Did you intend to checkout '%s' which can not be resolved as commit?" msgstr "" -#: builtin/checkout.c:1125 +#: builtin/checkout.c:1128 #, c-format msgid "git checkout: --detach does not take a path argument '%s'" msgstr "" -#: builtin/checkout.c:1129 +#: builtin/checkout.c:1132 msgid "" "git checkout: --ours/--theirs, --force and --merge are incompatible when\n" "checking out of the index." @@ -2798,8 +2808,8 @@ msgstr "" msgid "remove whole directories" msgstr "" -#: builtin/clean.c:56 builtin/describe.c:413 builtin/grep.c:803 -#: builtin/ls-files.c:491 builtin/name-rev.c:231 builtin/show-ref.c:199 +#: builtin/clean.c:56 builtin/describe.c:413 builtin/grep.c:717 +#: builtin/ls-files.c:491 builtin/name-rev.c:231 builtin/show-ref.c:182 msgid "pattern" msgstr "" @@ -2920,7 +2930,7 @@ msgstr "" msgid "path to git-upload-pack on the remote" msgstr "" -#: builtin/clone.c:93 builtin/fetch.c:83 builtin/grep.c:748 +#: builtin/clone.c:93 builtin/fetch.c:83 builtin/grep.c:662 msgid "depth" msgstr "" @@ -3134,93 +3144,93 @@ msgid "" "Otherwise, please use 'git reset'\n" msgstr "" -#: builtin/commit.c:257 +#: builtin/commit.c:258 msgid "failed to unpack HEAD tree object" msgstr "" -#: builtin/commit.c:299 +#: builtin/commit.c:300 msgid "unable to create temporary index" msgstr "" -#: builtin/commit.c:305 +#: builtin/commit.c:306 msgid "interactive add failed" msgstr "" -#: builtin/commit.c:338 builtin/commit.c:359 builtin/commit.c:409 +#: builtin/commit.c:339 builtin/commit.c:360 builtin/commit.c:410 msgid "unable to write new_index file" msgstr "" -#: builtin/commit.c:390 +#: builtin/commit.c:391 msgid "cannot do a partial commit during a merge." msgstr "" -#: builtin/commit.c:392 +#: builtin/commit.c:393 msgid "cannot do a partial commit during a cherry-pick." msgstr "" -#: builtin/commit.c:402 +#: builtin/commit.c:403 msgid "cannot read the index" msgstr "" -#: builtin/commit.c:422 +#: builtin/commit.c:423 msgid "unable to write temporary index file" msgstr "" -#: builtin/commit.c:509 builtin/commit.c:515 +#: builtin/commit.c:511 builtin/commit.c:517 #, c-format msgid "invalid commit: %s" msgstr "" -#: builtin/commit.c:538 +#: builtin/commit.c:540 msgid "malformed --author parameter" msgstr "" -#: builtin/commit.c:558 +#: builtin/commit.c:560 #, c-format msgid "Malformed ident string: '%s'" msgstr "" -#: builtin/commit.c:596 builtin/commit.c:629 builtin/commit.c:952 +#: builtin/commit.c:598 builtin/commit.c:631 builtin/commit.c:954 #, c-format msgid "could not lookup commit %s" msgstr "" -#: builtin/commit.c:608 builtin/shortlog.c:296 +#: builtin/commit.c:610 builtin/shortlog.c:296 #, c-format msgid "(reading log message from standard input)\n" msgstr "" -#: builtin/commit.c:610 +#: builtin/commit.c:612 msgid "could not read log from standard input" msgstr "" -#: builtin/commit.c:614 +#: builtin/commit.c:616 #, c-format msgid "could not read log file '%s'" msgstr "" -#: builtin/commit.c:620 +#: builtin/commit.c:622 msgid "commit has empty message" msgstr "" -#: builtin/commit.c:636 +#: builtin/commit.c:638 msgid "could not read MERGE_MSG" msgstr "" -#: builtin/commit.c:640 +#: builtin/commit.c:642 msgid "could not read SQUASH_MSG" msgstr "" -#: builtin/commit.c:644 +#: builtin/commit.c:646 #, c-format msgid "could not read '%s'" msgstr "" -#: builtin/commit.c:705 +#: builtin/commit.c:707 msgid "could not write commit template" msgstr "" -#: builtin/commit.c:716 +#: builtin/commit.c:718 #, c-format msgid "" "\n" @@ -3230,7 +3240,7 @@ msgid "" "and try again.\n" msgstr "" -#: builtin/commit.c:721 +#: builtin/commit.c:723 #, c-format msgid "" "\n" @@ -3240,356 +3250,364 @@ msgid "" "and try again.\n" msgstr "" -#: builtin/commit.c:733 +#: builtin/commit.c:735 msgid "" "Please enter the commit message for your changes. Lines starting\n" "with '#' will be ignored, and an empty message aborts the commit.\n" msgstr "" -#: builtin/commit.c:738 +#: builtin/commit.c:740 msgid "" "Please enter the commit message for your changes. Lines starting\n" "with '#' will be kept; you may remove them yourself if you want to.\n" "An empty message aborts the commit.\n" msgstr "" -#: builtin/commit.c:751 +#: builtin/commit.c:753 #, c-format msgid "%sAuthor: %s" msgstr "" -#: builtin/commit.c:758 +#: builtin/commit.c:760 #, c-format msgid "%sCommitter: %s" msgstr "" -#: builtin/commit.c:778 +#: builtin/commit.c:780 msgid "Cannot read index" msgstr "" -#: builtin/commit.c:815 +#: builtin/commit.c:817 msgid "Error building trees" msgstr "" -#: builtin/commit.c:830 builtin/tag.c:361 +#: builtin/commit.c:832 builtin/tag.c:361 #, c-format msgid "Please supply the message using either -m or -F option.\n" msgstr "" -#: builtin/commit.c:927 +#: builtin/commit.c:929 #, c-format msgid "No existing author found with '%s'" msgstr "" -#: builtin/commit.c:942 builtin/commit.c:1142 +#: builtin/commit.c:944 builtin/commit.c:1148 #, c-format msgid "Invalid untracked files mode '%s'" msgstr "" -#: builtin/commit.c:982 +#: builtin/commit.c:984 msgid "Using both --reset-author and --author does not make sense" msgstr "" -#: builtin/commit.c:993 +#: builtin/commit.c:995 msgid "You have nothing to amend." msgstr "" -#: builtin/commit.c:996 +#: builtin/commit.c:998 msgid "You are in the middle of a merge -- cannot amend." msgstr "" -#: builtin/commit.c:998 +#: builtin/commit.c:1000 msgid "You are in the middle of a cherry-pick -- cannot amend." msgstr "" -#: builtin/commit.c:1001 +#: builtin/commit.c:1003 msgid "Options --squash and --fixup cannot be used together" msgstr "" -#: builtin/commit.c:1011 +#: builtin/commit.c:1013 msgid "Only one of -c/-C/-F/--fixup can be used." msgstr "" -#: builtin/commit.c:1013 +#: builtin/commit.c:1015 msgid "Option -m cannot be combined with -c/-C/-F/--fixup." msgstr "" -#: builtin/commit.c:1021 +#: builtin/commit.c:1023 msgid "--reset-author can be used only with -C, -c or --amend." msgstr "" -#: builtin/commit.c:1038 +#: builtin/commit.c:1040 msgid "Only one of --include/--only/--all/--interactive/--patch can be used." msgstr "" -#: builtin/commit.c:1040 +#: builtin/commit.c:1042 msgid "No paths with --include/--only does not make sense." msgstr "" -#: builtin/commit.c:1042 +#: builtin/commit.c:1044 msgid "Clever... amending the last one with dirty index." msgstr "" -#: builtin/commit.c:1044 +#: builtin/commit.c:1046 msgid "Explicit paths specified without -i nor -o; assuming --only paths..." msgstr "" -#: builtin/commit.c:1054 builtin/tag.c:577 +#: builtin/commit.c:1056 builtin/tag.c:577 #, c-format msgid "Invalid cleanup mode %s" msgstr "" -#: builtin/commit.c:1059 +#: builtin/commit.c:1061 msgid "Paths with -a does not make sense." msgstr "" -#: builtin/commit.c:1156 builtin/commit.c:1384 +#: builtin/commit.c:1067 builtin/commit.c:1202 +msgid "--long and -z are incompatible" +msgstr "" + +#: builtin/commit.c:1162 builtin/commit.c:1398 msgid "show status concisely" msgstr "" -#: builtin/commit.c:1158 builtin/commit.c:1386 +#: builtin/commit.c:1164 builtin/commit.c:1400 msgid "show branch information" msgstr "" -#: builtin/commit.c:1160 builtin/commit.c:1388 builtin/push.c:389 +#: builtin/commit.c:1166 builtin/commit.c:1402 builtin/push.c:389 msgid "machine-readable output" msgstr "" -#: builtin/commit.c:1163 builtin/commit.c:1390 +#: builtin/commit.c:1169 builtin/commit.c:1404 +msgid "show status in long format (default)" +msgstr "" + +#: builtin/commit.c:1172 builtin/commit.c:1407 msgid "terminate entries with NUL" msgstr "" -#: builtin/commit.c:1165 builtin/commit.c:1393 builtin/fast-export.c:636 +#: builtin/commit.c:1174 builtin/commit.c:1410 builtin/fast-export.c:636 #: builtin/fast-export.c:639 builtin/tag.c:461 msgid "mode" msgstr "" -#: builtin/commit.c:1166 builtin/commit.c:1393 +#: builtin/commit.c:1175 builtin/commit.c:1410 msgid "show untracked files, optional modes: all, normal, no. (Default: all)" msgstr "" -#: builtin/commit.c:1169 +#: builtin/commit.c:1178 msgid "show ignored files" msgstr "" -#: builtin/commit.c:1170 parse-options.h:151 +#: builtin/commit.c:1179 parse-options.h:151 msgid "when" msgstr "" -#: builtin/commit.c:1171 +#: builtin/commit.c:1180 msgid "" "ignore changes to submodules, optional when: all, dirty, untracked. " "(Default: all)" msgstr "" -#: builtin/commit.c:1173 +#: builtin/commit.c:1182 msgid "list untracked files in columns" msgstr "" -#: builtin/commit.c:1242 +#: builtin/commit.c:1256 msgid "couldn't look up newly created commit" msgstr "" -#: builtin/commit.c:1244 +#: builtin/commit.c:1258 msgid "could not parse newly created commit" msgstr "" -#: builtin/commit.c:1285 +#: builtin/commit.c:1299 msgid "detached HEAD" msgstr "" -#: builtin/commit.c:1287 +#: builtin/commit.c:1301 msgid " (root-commit)" msgstr "" -#: builtin/commit.c:1354 +#: builtin/commit.c:1368 msgid "suppress summary after successful commit" msgstr "" -#: builtin/commit.c:1355 +#: builtin/commit.c:1369 msgid "show diff in commit message template" msgstr "" -#: builtin/commit.c:1357 +#: builtin/commit.c:1371 msgid "Commit message options" msgstr "" -#: builtin/commit.c:1358 builtin/tag.c:459 +#: builtin/commit.c:1372 builtin/tag.c:459 msgid "read message from file" msgstr "" -#: builtin/commit.c:1359 +#: builtin/commit.c:1373 msgid "author" msgstr "" -#: builtin/commit.c:1359 +#: builtin/commit.c:1373 msgid "override author for commit" msgstr "" -#: builtin/commit.c:1360 builtin/gc.c:178 +#: builtin/commit.c:1374 builtin/gc.c:178 msgid "date" msgstr "" -#: builtin/commit.c:1360 +#: builtin/commit.c:1374 msgid "override date for commit" msgstr "" -#: builtin/commit.c:1361 builtin/merge.c:206 builtin/notes.c:537 +#: builtin/commit.c:1375 builtin/merge.c:206 builtin/notes.c:537 #: builtin/notes.c:694 builtin/tag.c:457 msgid "message" msgstr "" -#: builtin/commit.c:1361 +#: builtin/commit.c:1375 msgid "commit message" msgstr "" -#: builtin/commit.c:1362 +#: builtin/commit.c:1376 msgid "reuse and edit message from specified commit" msgstr "" -#: builtin/commit.c:1363 +#: builtin/commit.c:1377 msgid "reuse message from specified commit" msgstr "" -#: builtin/commit.c:1364 +#: builtin/commit.c:1378 msgid "use autosquash formatted message to fixup specified commit" msgstr "" -#: builtin/commit.c:1365 +#: builtin/commit.c:1379 msgid "use autosquash formatted message to squash specified commit" msgstr "" -#: builtin/commit.c:1366 +#: builtin/commit.c:1380 msgid "the commit is authored by me now (used with -C/-c/--amend)" msgstr "" -#: builtin/commit.c:1367 builtin/log.c:1068 builtin/revert.c:109 +#: builtin/commit.c:1381 builtin/log.c:1073 builtin/revert.c:109 msgid "add Signed-off-by:" msgstr "" -#: builtin/commit.c:1368 +#: builtin/commit.c:1382 msgid "use specified template file" msgstr "" -#: builtin/commit.c:1369 +#: builtin/commit.c:1383 msgid "force edit of commit" msgstr "" -#: builtin/commit.c:1370 +#: builtin/commit.c:1384 msgid "default" msgstr "" -#: builtin/commit.c:1370 builtin/tag.c:462 +#: builtin/commit.c:1384 builtin/tag.c:462 msgid "how to strip spaces and #comments from message" msgstr "" -#: builtin/commit.c:1371 +#: builtin/commit.c:1385 msgid "include status in commit message template" msgstr "" -#: builtin/commit.c:1372 builtin/merge.c:213 builtin/tag.c:463 +#: builtin/commit.c:1386 builtin/merge.c:213 builtin/tag.c:463 msgid "key id" msgstr "" -#: builtin/commit.c:1373 builtin/merge.c:214 +#: builtin/commit.c:1387 builtin/merge.c:214 msgid "GPG sign commit" msgstr "" #. end commit message options -#: builtin/commit.c:1376 +#: builtin/commit.c:1390 msgid "Commit contents options" msgstr "" -#: builtin/commit.c:1377 +#: builtin/commit.c:1391 msgid "commit all changed files" msgstr "" -#: builtin/commit.c:1378 +#: builtin/commit.c:1392 msgid "add specified files to index for commit" msgstr "" -#: builtin/commit.c:1379 +#: builtin/commit.c:1393 msgid "interactively add files" msgstr "" -#: builtin/commit.c:1380 +#: builtin/commit.c:1394 msgid "interactively add changes" msgstr "" -#: builtin/commit.c:1381 +#: builtin/commit.c:1395 msgid "commit only specified files" msgstr "" -#: builtin/commit.c:1382 +#: builtin/commit.c:1396 msgid "bypass pre-commit hook" msgstr "" -#: builtin/commit.c:1383 +#: builtin/commit.c:1397 msgid "show what would be committed" msgstr "" -#: builtin/commit.c:1391 +#: builtin/commit.c:1408 msgid "amend previous commit" msgstr "" -#: builtin/commit.c:1392 +#: builtin/commit.c:1409 msgid "bypass post-rewrite hook" msgstr "" -#: builtin/commit.c:1397 +#: builtin/commit.c:1414 msgid "ok to record an empty change" msgstr "" -#: builtin/commit.c:1400 +#: builtin/commit.c:1417 msgid "ok to record a change with an empty message" msgstr "" -#: builtin/commit.c:1432 +#: builtin/commit.c:1449 msgid "could not parse HEAD commit" msgstr "" -#: builtin/commit.c:1470 builtin/merge.c:508 +#: builtin/commit.c:1487 builtin/merge.c:508 #, c-format msgid "could not open '%s' for reading" msgstr "" -#: builtin/commit.c:1477 +#: builtin/commit.c:1494 #, c-format msgid "Corrupt MERGE_HEAD file (%s)" msgstr "" -#: builtin/commit.c:1484 +#: builtin/commit.c:1501 msgid "could not read MERGE_MODE" msgstr "" -#: builtin/commit.c:1503 +#: builtin/commit.c:1520 #, c-format msgid "could not read commit message: %s" msgstr "" -#: builtin/commit.c:1517 +#: builtin/commit.c:1534 #, c-format msgid "Aborting commit; you did not edit the message.\n" msgstr "" -#: builtin/commit.c:1522 +#: builtin/commit.c:1539 #, c-format msgid "Aborting commit due to empty commit message.\n" msgstr "" -#: builtin/commit.c:1537 builtin/merge.c:935 builtin/merge.c:960 +#: builtin/commit.c:1554 builtin/merge.c:832 builtin/merge.c:857 msgid "failed to write commit object" msgstr "" -#: builtin/commit.c:1558 +#: builtin/commit.c:1575 msgid "cannot lock HEAD ref" msgstr "" -#: builtin/commit.c:1562 +#: builtin/commit.c:1579 msgid "cannot update HEAD ref" msgstr "" -#: builtin/commit.c:1573 +#: builtin/commit.c:1590 msgid "" "Repository has been updated, but unable to write\n" "new_index file. Check that disk is not full or quota is\n" @@ -3600,115 +3618,115 @@ msgstr "" msgid "git config [options]" msgstr "" -#: builtin/config.c:52 +#: builtin/config.c:51 msgid "Config file location" msgstr "" -#: builtin/config.c:53 +#: builtin/config.c:52 msgid "use global config file" msgstr "" -#: builtin/config.c:54 +#: builtin/config.c:53 msgid "use system config file" msgstr "" -#: builtin/config.c:55 +#: builtin/config.c:54 msgid "use repository config file" msgstr "" -#: builtin/config.c:56 +#: builtin/config.c:55 msgid "use given config file" msgstr "" -#: builtin/config.c:57 +#: builtin/config.c:56 msgid "Action" msgstr "" -#: builtin/config.c:58 +#: builtin/config.c:57 msgid "get value: name [value-regex]" msgstr "" -#: builtin/config.c:59 +#: builtin/config.c:58 msgid "get all values: key [value-regex]" msgstr "" -#: builtin/config.c:60 +#: builtin/config.c:59 msgid "get values for regexp: name-regex [value-regex]" msgstr "" -#: builtin/config.c:61 +#: builtin/config.c:60 msgid "replace all matching variables: name value [value_regex]" msgstr "" -#: builtin/config.c:62 +#: builtin/config.c:61 msgid "add a new variable: name value" msgstr "" -#: builtin/config.c:63 +#: builtin/config.c:62 msgid "remove a variable: name [value-regex]" msgstr "" -#: builtin/config.c:64 +#: builtin/config.c:63 msgid "remove all matches: name [value-regex]" msgstr "" -#: builtin/config.c:65 +#: builtin/config.c:64 msgid "rename section: old-name new-name" msgstr "" -#: builtin/config.c:66 +#: builtin/config.c:65 msgid "remove a section: name" msgstr "" -#: builtin/config.c:67 +#: builtin/config.c:66 msgid "list all" msgstr "" -#: builtin/config.c:68 +#: builtin/config.c:67 msgid "open an editor" msgstr "" -#: builtin/config.c:69 builtin/config.c:70 +#: builtin/config.c:68 builtin/config.c:69 msgid "slot" msgstr "" -#: builtin/config.c:69 +#: builtin/config.c:68 msgid "find the color configured: [default]" msgstr "" -#: builtin/config.c:70 +#: builtin/config.c:69 msgid "find the color setting: [stdout-is-tty]" msgstr "" -#: builtin/config.c:71 +#: builtin/config.c:70 msgid "Type" msgstr "" -#: builtin/config.c:72 +#: builtin/config.c:71 msgid "value is \"true\" or \"false\"" msgstr "" -#: builtin/config.c:73 +#: builtin/config.c:72 msgid "value is decimal number" msgstr "" -#: builtin/config.c:74 +#: builtin/config.c:73 msgid "value is --bool or --int" msgstr "" -#: builtin/config.c:75 +#: builtin/config.c:74 msgid "value is a path (file or directory name)" msgstr "" -#: builtin/config.c:76 +#: builtin/config.c:75 msgid "Other" msgstr "" -#: builtin/config.c:77 +#: builtin/config.c:76 msgid "terminate values with NUL byte" msgstr "" -#: builtin/config.c:78 +#: builtin/config.c:77 msgid "respect include directives on lookup" msgstr "" @@ -3851,31 +3869,31 @@ msgstr "" msgid "'%s': not a regular file or symlink" msgstr "" -#: builtin/diff.c:224 +#: builtin/diff.c:228 #, c-format msgid "invalid option: %s" msgstr "" -#: builtin/diff.c:301 +#: builtin/diff.c:305 msgid "Not a git repository" msgstr "" -#: builtin/diff.c:344 +#: builtin/diff.c:348 #, c-format msgid "invalid object '%s' given." msgstr "" -#: builtin/diff.c:349 +#: builtin/diff.c:353 #, c-format msgid "more than %d trees given: '%s'" msgstr "" -#: builtin/diff.c:359 +#: builtin/diff.c:363 #, c-format msgid "more than two blobs given: '%s'" msgstr "" -#: builtin/diff.c:367 +#: builtin/diff.c:371 #, c-format msgid "unhandled object '%s' given." msgstr "" @@ -3988,7 +4006,7 @@ msgstr "" msgid "deepen history of shallow clone" msgstr "" -#: builtin/fetch.c:85 builtin/log.c:1083 +#: builtin/fetch.c:85 builtin/log.c:1088 msgid "dir" msgstr "" @@ -4155,8 +4173,8 @@ msgstr "" msgid "git fmt-merge-msg [-m ] [--log[=]|--no-log] [--file ]" msgstr "" -#: builtin/fmt-merge-msg.c:653 builtin/fmt-merge-msg.c:656 builtin/grep.c:787 -#: builtin/merge.c:188 builtin/show-branch.c:656 builtin/show-ref.c:192 +#: builtin/fmt-merge-msg.c:653 builtin/fmt-merge-msg.c:656 builtin/grep.c:701 +#: builtin/merge.c:188 builtin/show-branch.c:656 builtin/show-ref.c:175 #: builtin/tag.c:448 parse-options.h:133 parse-options.h:235 msgid "n" msgstr "" @@ -4312,225 +4330,225 @@ msgstr "" msgid "grep: failed to create thread: %s" msgstr "" -#: builtin/grep.c:455 +#: builtin/grep.c:365 #, c-format msgid "Failed to chdir: %s" msgstr "" -#: builtin/grep.c:531 builtin/grep.c:565 +#: builtin/grep.c:443 builtin/grep.c:478 #, c-format msgid "unable to read tree (%s)" msgstr "" -#: builtin/grep.c:579 +#: builtin/grep.c:493 #, c-format msgid "unable to grep from object of type %s" msgstr "" -#: builtin/grep.c:637 +#: builtin/grep.c:551 #, c-format msgid "switch `%c' expects a numerical value" msgstr "" -#: builtin/grep.c:654 +#: builtin/grep.c:568 #, c-format msgid "cannot open '%s'" msgstr "" -#: builtin/grep.c:729 +#: builtin/grep.c:643 msgid "search in index instead of in the work tree" msgstr "" -#: builtin/grep.c:731 +#: builtin/grep.c:645 msgid "find in contents not managed by git" msgstr "" -#: builtin/grep.c:733 +#: builtin/grep.c:647 msgid "search in both tracked and untracked files" msgstr "" -#: builtin/grep.c:735 +#: builtin/grep.c:649 msgid "search also in ignored files" msgstr "" -#: builtin/grep.c:738 +#: builtin/grep.c:652 msgid "show non-matching lines" msgstr "" -#: builtin/grep.c:740 +#: builtin/grep.c:654 msgid "case insensitive matching" msgstr "" -#: builtin/grep.c:742 +#: builtin/grep.c:656 msgid "match patterns only at word boundaries" msgstr "" -#: builtin/grep.c:744 +#: builtin/grep.c:658 msgid "process binary files as text" msgstr "" -#: builtin/grep.c:746 +#: builtin/grep.c:660 msgid "don't match patterns in binary files" msgstr "" -#: builtin/grep.c:749 +#: builtin/grep.c:663 msgid "descend at most levels" msgstr "" -#: builtin/grep.c:753 +#: builtin/grep.c:667 msgid "use extended POSIX regular expressions" msgstr "" -#: builtin/grep.c:756 +#: builtin/grep.c:670 msgid "use basic POSIX regular expressions (default)" msgstr "" -#: builtin/grep.c:759 +#: builtin/grep.c:673 msgid "interpret patterns as fixed strings" msgstr "" -#: builtin/grep.c:762 +#: builtin/grep.c:676 msgid "use Perl-compatible regular expressions" msgstr "" -#: builtin/grep.c:765 +#: builtin/grep.c:679 msgid "show line numbers" msgstr "" -#: builtin/grep.c:766 +#: builtin/grep.c:680 msgid "don't show filenames" msgstr "" -#: builtin/grep.c:767 +#: builtin/grep.c:681 msgid "show filenames" msgstr "" -#: builtin/grep.c:769 +#: builtin/grep.c:683 msgid "show filenames relative to top directory" msgstr "" -#: builtin/grep.c:771 +#: builtin/grep.c:685 msgid "show only filenames instead of matching lines" msgstr "" -#: builtin/grep.c:773 +#: builtin/grep.c:687 msgid "synonym for --files-with-matches" msgstr "" -#: builtin/grep.c:776 +#: builtin/grep.c:690 msgid "show only the names of files without match" msgstr "" -#: builtin/grep.c:778 +#: builtin/grep.c:692 msgid "print NUL after filenames" msgstr "" -#: builtin/grep.c:780 +#: builtin/grep.c:694 msgid "show the number of matches instead of matching lines" msgstr "" -#: builtin/grep.c:781 +#: builtin/grep.c:695 msgid "highlight matches" msgstr "" -#: builtin/grep.c:783 +#: builtin/grep.c:697 msgid "print empty line between matches from different files" msgstr "" -#: builtin/grep.c:785 +#: builtin/grep.c:699 msgid "show filename only once above matches from same file" msgstr "" -#: builtin/grep.c:788 +#: builtin/grep.c:702 msgid "show context lines before and after matches" msgstr "" -#: builtin/grep.c:791 +#: builtin/grep.c:705 msgid "show context lines before matches" msgstr "" -#: builtin/grep.c:793 +#: builtin/grep.c:707 msgid "show context lines after matches" msgstr "" -#: builtin/grep.c:794 +#: builtin/grep.c:708 msgid "shortcut for -C NUM" msgstr "" -#: builtin/grep.c:797 +#: builtin/grep.c:711 msgid "show a line with the function name before matches" msgstr "" -#: builtin/grep.c:799 +#: builtin/grep.c:713 msgid "show the surrounding function" msgstr "" -#: builtin/grep.c:802 +#: builtin/grep.c:716 msgid "read patterns from file" msgstr "" -#: builtin/grep.c:804 +#: builtin/grep.c:718 msgid "match " msgstr "" -#: builtin/grep.c:806 +#: builtin/grep.c:720 msgid "combine patterns specified with -e" msgstr "" -#: builtin/grep.c:818 +#: builtin/grep.c:732 msgid "indicate hit with exit status without output" msgstr "" -#: builtin/grep.c:820 +#: builtin/grep.c:734 msgid "show only matches from files that match all patterns" msgstr "" -#: builtin/grep.c:822 +#: builtin/grep.c:736 msgid "show parse tree for grep expression" msgstr "" -#: builtin/grep.c:826 +#: builtin/grep.c:740 msgid "pager" msgstr "" -#: builtin/grep.c:826 +#: builtin/grep.c:740 msgid "show matching files in the pager" msgstr "" -#: builtin/grep.c:829 +#: builtin/grep.c:743 msgid "allow calling of grep(1) (ignored by this build)" msgstr "" -#: builtin/grep.c:830 builtin/show-ref.c:201 +#: builtin/grep.c:744 builtin/show-ref.c:184 msgid "show usage" msgstr "" -#: builtin/grep.c:921 +#: builtin/grep.c:811 msgid "no pattern given." msgstr "" -#: builtin/grep.c:935 +#: builtin/grep.c:825 #, c-format msgid "bad object %s" msgstr "" -#: builtin/grep.c:976 +#: builtin/grep.c:866 msgid "--open-files-in-pager only works on the worktree" msgstr "" -#: builtin/grep.c:999 +#: builtin/grep.c:889 msgid "--cached or --untracked cannot be used with --no-index." msgstr "" -#: builtin/grep.c:1004 +#: builtin/grep.c:894 msgid "--no-index or --untracked cannot be used with revs." msgstr "" -#: builtin/grep.c:1007 +#: builtin/grep.c:897 msgid "--[no-]exclude-standard cannot be used for tracked contents." msgstr "" -#: builtin/grep.c:1015 +#: builtin/grep.c:905 msgid "both --cached and trees are given." msgstr "" @@ -5114,219 +5132,219 @@ msgstr "" msgid "Final output: %d %s\n" msgstr "" -#: builtin/log.c:403 builtin/log.c:494 +#: builtin/log.c:405 builtin/log.c:497 #, c-format msgid "Could not read object %s" msgstr "" -#: builtin/log.c:518 +#: builtin/log.c:521 #, c-format msgid "Unknown type: %d" msgstr "" -#: builtin/log.c:608 +#: builtin/log.c:613 msgid "format.headers without value" msgstr "" -#: builtin/log.c:682 +#: builtin/log.c:687 msgid "name of output directory is too long" msgstr "" -#: builtin/log.c:693 +#: builtin/log.c:698 #, c-format msgid "Cannot open patch file %s" msgstr "" -#: builtin/log.c:707 +#: builtin/log.c:712 msgid "Need exactly one range." msgstr "" -#: builtin/log.c:715 +#: builtin/log.c:720 msgid "Not a range." msgstr "" -#: builtin/log.c:789 +#: builtin/log.c:794 msgid "Cover letter needs email format" msgstr "" -#: builtin/log.c:862 +#: builtin/log.c:867 #, c-format msgid "insane in-reply-to: %s" msgstr "" -#: builtin/log.c:890 +#: builtin/log.c:895 msgid "git format-patch [options] [ | ]" msgstr "" -#: builtin/log.c:935 +#: builtin/log.c:940 msgid "Two output directories?" msgstr "" -#: builtin/log.c:1063 +#: builtin/log.c:1068 msgid "use [PATCH n/m] even with a single patch" msgstr "" -#: builtin/log.c:1066 +#: builtin/log.c:1071 msgid "use [PATCH] even with multiple patches" msgstr "" -#: builtin/log.c:1070 +#: builtin/log.c:1075 msgid "print patches to standard out" msgstr "" -#: builtin/log.c:1072 +#: builtin/log.c:1077 msgid "generate a cover letter" msgstr "" -#: builtin/log.c:1074 +#: builtin/log.c:1079 msgid "use simple number sequence for output file names" msgstr "" -#: builtin/log.c:1075 +#: builtin/log.c:1080 msgid "sfx" msgstr "" -#: builtin/log.c:1076 +#: builtin/log.c:1081 msgid "use instead of '.patch'" msgstr "" -#: builtin/log.c:1078 +#: builtin/log.c:1083 msgid "start numbering patches at instead of 1" msgstr "" -#: builtin/log.c:1080 +#: builtin/log.c:1085 msgid "Use [] instead of [PATCH]" msgstr "" -#: builtin/log.c:1083 +#: builtin/log.c:1088 msgid "store resulting files in " msgstr "" -#: builtin/log.c:1086 +#: builtin/log.c:1091 msgid "don't strip/add [PATCH]" msgstr "" -#: builtin/log.c:1089 +#: builtin/log.c:1094 msgid "don't output binary diffs" msgstr "" -#: builtin/log.c:1091 +#: builtin/log.c:1096 msgid "don't include a patch matching a commit upstream" msgstr "" -#: builtin/log.c:1093 +#: builtin/log.c:1098 msgid "show patch format instead of default (patch + stat)" msgstr "" -#: builtin/log.c:1095 +#: builtin/log.c:1100 msgid "Messaging" msgstr "" -#: builtin/log.c:1096 +#: builtin/log.c:1101 msgid "header" msgstr "" -#: builtin/log.c:1097 +#: builtin/log.c:1102 msgid "add email header" msgstr "" -#: builtin/log.c:1098 builtin/log.c:1100 +#: builtin/log.c:1103 builtin/log.c:1105 msgid "email" msgstr "" -#: builtin/log.c:1098 +#: builtin/log.c:1103 msgid "add To: header" msgstr "" -#: builtin/log.c:1100 +#: builtin/log.c:1105 msgid "add Cc: header" msgstr "" -#: builtin/log.c:1102 +#: builtin/log.c:1107 msgid "message-id" msgstr "" -#: builtin/log.c:1103 +#: builtin/log.c:1108 msgid "make first mail a reply to " msgstr "" -#: builtin/log.c:1104 builtin/log.c:1107 +#: builtin/log.c:1109 builtin/log.c:1112 msgid "boundary" msgstr "" -#: builtin/log.c:1105 +#: builtin/log.c:1110 msgid "attach the patch" msgstr "" -#: builtin/log.c:1108 +#: builtin/log.c:1113 msgid "inline the patch" msgstr "" -#: builtin/log.c:1112 +#: builtin/log.c:1117 msgid "enable message threading, styles: shallow, deep" msgstr "" -#: builtin/log.c:1114 +#: builtin/log.c:1119 msgid "signature" msgstr "" -#: builtin/log.c:1115 +#: builtin/log.c:1120 msgid "add a signature" msgstr "" -#: builtin/log.c:1117 +#: builtin/log.c:1122 msgid "don't print the patch filenames" msgstr "" -#: builtin/log.c:1157 +#: builtin/log.c:1163 #, c-format msgid "bogus committer info %s" msgstr "" -#: builtin/log.c:1202 +#: builtin/log.c:1208 msgid "-n and -k are mutually exclusive." msgstr "" -#: builtin/log.c:1204 +#: builtin/log.c:1210 msgid "--subject-prefix and -k are mutually exclusive." msgstr "" -#: builtin/log.c:1212 +#: builtin/log.c:1218 msgid "--name-only does not make sense" msgstr "" -#: builtin/log.c:1214 +#: builtin/log.c:1220 msgid "--name-status does not make sense" msgstr "" -#: builtin/log.c:1216 +#: builtin/log.c:1222 msgid "--check does not make sense" msgstr "" -#: builtin/log.c:1239 +#: builtin/log.c:1245 msgid "standard output, or directory, which one?" msgstr "" -#: builtin/log.c:1241 +#: builtin/log.c:1247 #, c-format msgid "Could not create directory '%s'" msgstr "" -#: builtin/log.c:1394 +#: builtin/log.c:1400 msgid "Failed to create output files" msgstr "" -#: builtin/log.c:1443 +#: builtin/log.c:1449 msgid "git cherry [-v] [ [ []]]" msgstr "" -#: builtin/log.c:1498 +#: builtin/log.c:1504 #, c-format msgid "" "Could not find a tracked remote branch, please specify manually.\n" msgstr "" -#: builtin/log.c:1511 builtin/log.c:1513 builtin/log.c:1525 +#: builtin/log.c:1517 builtin/log.c:1519 builtin/log.c:1531 #, c-format msgid "Unknown commit %s" msgstr "" @@ -5603,35 +5621,31 @@ msgstr "" msgid "git write-tree failed to write a tree" msgstr "" -#: builtin/merge.c:678 -msgid "failed to read the cache" -msgstr "" - -#: builtin/merge.c:709 +#: builtin/merge.c:656 msgid "Not handling anything other than two heads merge." msgstr "" -#: builtin/merge.c:723 +#: builtin/merge.c:670 #, c-format msgid "Unknown option for merge-recursive: -X%s" msgstr "" -#: builtin/merge.c:737 +#: builtin/merge.c:684 #, c-format msgid "unable to write %s" msgstr "" -#: builtin/merge.c:876 +#: builtin/merge.c:773 #, c-format msgid "Could not read from '%s'" msgstr "" -#: builtin/merge.c:885 +#: builtin/merge.c:782 #, c-format msgid "Not committing merge; use 'git commit' to complete the merge.\n" msgstr "" -#: builtin/merge.c:891 +#: builtin/merge.c:788 msgid "" "Please enter a commit message to explain why this merge is necessary,\n" "especially if it merges an updated upstream into a topic branch.\n" @@ -5640,140 +5654,140 @@ msgid "" "the commit.\n" msgstr "" -#: builtin/merge.c:915 +#: builtin/merge.c:812 msgid "Empty commit message." msgstr "" -#: builtin/merge.c:927 +#: builtin/merge.c:824 #, c-format msgid "Wonderful.\n" msgstr "" -#: builtin/merge.c:992 +#: builtin/merge.c:889 #, c-format msgid "Automatic merge failed; fix conflicts and then commit the result.\n" msgstr "" -#: builtin/merge.c:1008 +#: builtin/merge.c:905 #, c-format msgid "'%s' is not a commit" msgstr "" -#: builtin/merge.c:1049 +#: builtin/merge.c:946 msgid "No current branch." msgstr "" -#: builtin/merge.c:1051 +#: builtin/merge.c:948 msgid "No remote for the current branch." msgstr "" -#: builtin/merge.c:1053 +#: builtin/merge.c:950 msgid "No default upstream defined for the current branch." msgstr "" -#: builtin/merge.c:1058 +#: builtin/merge.c:955 #, c-format msgid "No remote tracking branch for %s from %s" msgstr "" -#: builtin/merge.c:1145 builtin/merge.c:1302 +#: builtin/merge.c:1042 builtin/merge.c:1199 #, c-format msgid "%s - not something we can merge" msgstr "" -#: builtin/merge.c:1213 +#: builtin/merge.c:1110 msgid "There is no merge to abort (MERGE_HEAD missing)." msgstr "" -#: builtin/merge.c:1229 git-pull.sh:31 +#: builtin/merge.c:1126 git-pull.sh:31 msgid "" "You have not concluded your merge (MERGE_HEAD exists).\n" "Please, commit your changes before you can merge." msgstr "" -#: builtin/merge.c:1232 git-pull.sh:34 +#: builtin/merge.c:1129 git-pull.sh:34 msgid "You have not concluded your merge (MERGE_HEAD exists)." msgstr "" -#: builtin/merge.c:1236 +#: builtin/merge.c:1133 msgid "" "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n" "Please, commit your changes before you can merge." msgstr "" -#: builtin/merge.c:1239 +#: builtin/merge.c:1136 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)." msgstr "" -#: builtin/merge.c:1248 +#: builtin/merge.c:1145 msgid "You cannot combine --squash with --no-ff." msgstr "" -#: builtin/merge.c:1253 +#: builtin/merge.c:1150 msgid "You cannot combine --no-ff with --ff-only." msgstr "" -#: builtin/merge.c:1260 +#: builtin/merge.c:1157 msgid "No commit specified and merge.defaultToUpstream not set." msgstr "" -#: builtin/merge.c:1292 +#: builtin/merge.c:1189 msgid "Can merge only exactly one commit into empty head" msgstr "" -#: builtin/merge.c:1295 +#: builtin/merge.c:1192 msgid "Squash commit into empty head not supported yet" msgstr "" -#: builtin/merge.c:1297 +#: builtin/merge.c:1194 msgid "Non-fast-forward commit does not make sense into an empty head" msgstr "" -#: builtin/merge.c:1412 +#: builtin/merge.c:1309 #, c-format msgid "Updating %s..%s\n" msgstr "" -#: builtin/merge.c:1450 +#: builtin/merge.c:1348 #, c-format msgid "Trying really trivial in-index merge...\n" msgstr "" -#: builtin/merge.c:1457 +#: builtin/merge.c:1355 #, c-format msgid "Nope.\n" msgstr "" -#: builtin/merge.c:1489 +#: builtin/merge.c:1387 msgid "Not possible to fast-forward, aborting." msgstr "" -#: builtin/merge.c:1512 builtin/merge.c:1591 +#: builtin/merge.c:1410 builtin/merge.c:1489 #, c-format msgid "Rewinding the tree to pristine...\n" msgstr "" -#: builtin/merge.c:1516 +#: builtin/merge.c:1414 #, c-format msgid "Trying merge strategy %s...\n" msgstr "" -#: builtin/merge.c:1582 +#: builtin/merge.c:1480 #, c-format msgid "No merge strategy handled the merge.\n" msgstr "" -#: builtin/merge.c:1584 +#: builtin/merge.c:1482 #, c-format msgid "Merge with strategy %s failed.\n" msgstr "" -#: builtin/merge.c:1593 +#: builtin/merge.c:1491 #, c-format msgid "Using the %s to prepare resolving by hand.\n" msgstr "" -#: builtin/merge.c:1605 +#: builtin/merge.c:1503 #, c-format msgid "Automatic merge went well; stopped before committing as requested\n" msgstr "" @@ -6323,143 +6337,143 @@ msgstr "" msgid "deflate error (%d)" msgstr "" -#: builtin/pack-objects.c:2398 +#: builtin/pack-objects.c:2397 #, c-format msgid "unsupported index version %s" msgstr "" -#: builtin/pack-objects.c:2402 +#: builtin/pack-objects.c:2401 #, c-format msgid "bad index version '%s'" msgstr "" -#: builtin/pack-objects.c:2425 +#: builtin/pack-objects.c:2424 #, c-format msgid "option %s does not accept negative form" msgstr "" -#: builtin/pack-objects.c:2429 +#: builtin/pack-objects.c:2428 #, c-format msgid "unable to parse value '%s' for option %s" msgstr "" -#: builtin/pack-objects.c:2448 +#: builtin/pack-objects.c:2447 msgid "do not show progress meter" msgstr "" -#: builtin/pack-objects.c:2450 +#: builtin/pack-objects.c:2449 msgid "show progress meter" msgstr "" -#: builtin/pack-objects.c:2452 +#: builtin/pack-objects.c:2451 msgid "show progress meter during object writing phase" msgstr "" -#: builtin/pack-objects.c:2455 +#: builtin/pack-objects.c:2454 msgid "similar to --all-progress when progress meter is shown" msgstr "" -#: builtin/pack-objects.c:2456 +#: builtin/pack-objects.c:2455 msgid "version[,offset]" msgstr "" -#: builtin/pack-objects.c:2457 +#: builtin/pack-objects.c:2456 msgid "write the pack index file in the specified idx format version" msgstr "" -#: builtin/pack-objects.c:2460 +#: builtin/pack-objects.c:2459 msgid "maximum size of each output pack file" msgstr "" -#: builtin/pack-objects.c:2462 +#: builtin/pack-objects.c:2461 msgid "ignore borrowed objects from alternate object store" msgstr "" -#: builtin/pack-objects.c:2464 +#: builtin/pack-objects.c:2463 msgid "ignore packed objects" msgstr "" -#: builtin/pack-objects.c:2466 +#: builtin/pack-objects.c:2465 msgid "limit pack window by objects" msgstr "" -#: builtin/pack-objects.c:2468 +#: builtin/pack-objects.c:2467 msgid "limit pack window by memory in addition to object limit" msgstr "" -#: builtin/pack-objects.c:2470 +#: builtin/pack-objects.c:2469 msgid "maximum length of delta chain allowed in the resulting pack" msgstr "" -#: builtin/pack-objects.c:2472 +#: builtin/pack-objects.c:2471 msgid "reuse existing deltas" msgstr "" -#: builtin/pack-objects.c:2474 +#: builtin/pack-objects.c:2473 msgid "reuse existing objects" msgstr "" -#: builtin/pack-objects.c:2476 +#: builtin/pack-objects.c:2475 msgid "use OFS_DELTA objects" msgstr "" -#: builtin/pack-objects.c:2478 +#: builtin/pack-objects.c:2477 msgid "use threads when searching for best delta matches" msgstr "" -#: builtin/pack-objects.c:2480 +#: builtin/pack-objects.c:2479 msgid "do not create an empty pack output" msgstr "" -#: builtin/pack-objects.c:2482 +#: builtin/pack-objects.c:2481 msgid "read revision arguments from standard input" msgstr "" -#: builtin/pack-objects.c:2484 +#: builtin/pack-objects.c:2483 msgid "limit the objects to those that are not yet packed" msgstr "" -#: builtin/pack-objects.c:2487 +#: builtin/pack-objects.c:2486 msgid "include objects reachable from any reference" msgstr "" -#: builtin/pack-objects.c:2490 +#: builtin/pack-objects.c:2489 msgid "include objects referred by reflog entries" msgstr "" -#: builtin/pack-objects.c:2493 +#: builtin/pack-objects.c:2492 msgid "output pack to stdout" msgstr "" -#: builtin/pack-objects.c:2495 +#: builtin/pack-objects.c:2494 msgid "include tag objects that refer to objects to be packed" msgstr "" -#: builtin/pack-objects.c:2497 +#: builtin/pack-objects.c:2496 msgid "keep unreachable objects" msgstr "" -#: builtin/pack-objects.c:2498 parse-options.h:141 +#: builtin/pack-objects.c:2497 parse-options.h:141 msgid "time" msgstr "" -#: builtin/pack-objects.c:2499 +#: builtin/pack-objects.c:2498 msgid "unpack unreachable objects newer than