diff options
67 files changed, 1311 insertions, 1086 deletions
diff --git a/Documentation/RelNotes/1.8.1.5.txt b/Documentation/RelNotes/1.8.1.5.txt index 92da6b2777..efa68aef22 100644 --- a/Documentation/RelNotes/1.8.1.5.txt +++ b/Documentation/RelNotes/1.8.1.5.txt @@ -1,9 +1,19 @@ Git 1.8.1.5 Release Notes ========================= -Fixes since v1.8.1.5 +Fixes since v1.8.1.4 -------------------- + * Given a string with a multi-byte character that begins with '-' on + the command line where an option is expected, the option parser + used just one byte of the unknown letter when reporting an error. + + * In v1.8.1, the attribute parser was tightened too restrictive to + error out upon seeing an entry that begins with an ! (exclamation), + which may confuse users to expect a "negative match", which does + not exist. This has been demoted to a warning; such an entry is + still ignored. + * "git apply --summary" has been taught to make sure the similarity value shown in its output is sensible, even when the input had a bogus value. diff --git a/Documentation/RelNotes/1.8.2.txt b/Documentation/RelNotes/1.8.2.txt index 861ef026d6..fc606ae116 100644 --- a/Documentation/RelNotes/1.8.2.txt +++ b/Documentation/RelNotes/1.8.2.txt @@ -1,19 +1,8 @@ Git v1.8.2 Release Notes ======================== -Backward compatibility notes ----------------------------- - -In the next major release Git 2.0 (not *this* one), we will change the -behavior of the "git push" command. - -When "git push [$there]" does not say what to push, we have used the -traditional "matching" semantics so far (all your branches were sent -to the remote as long as there already are branches of the same name -over there). We will use the "simple" semantics that pushes the -current branch to the branch with the same name, only when the current -branch is set to integrate with that remote branch. There is a user -preference configuration variable "push.default" to change this. +Backward compatibility notes (this release) +------------------------------------------- "git push $there tag v1.2.3" used to allow replacing a tag v1.2.3 that already exists in the repository $there, if the rewritten tag @@ -22,17 +11,41 @@ that the old tag v1.2.3 points at. This was found to be error prone and starting with this release, any attempt to update an existing ref under refs/tags/ hierarchy will fail, without "--force". -When "git add -u" and "git add -A", that does not specify what paths -to add on the command line, is run from inside a subdirectory, the +When "git add -u" and "git add -A" that does not specify what paths +to add on the command line is run from inside a subdirectory, the scope of the operation has always been limited to the subdirectory. Many users found this counter-intuitive, given that "git commit -a" and other commands operate on the entire tree regardless of where you -are. In this release, these commands give warning in such a case and -encourage the user to say "git add -u/-A ." instead when restricting -the scope to the current directory. At Git 2.0 (not *this* one), we -plan to change these commands without pathspec to operate on the -entire tree, and training your fingers to type "." will protect you -against the future change. +are. In this release, these commands give a warning message that +suggests the users to use "git add -u/-A ." when they want to limit +the scope to the current directory; doing so will squelch the message, +while training their fingers. + + +Backward compatibility notes (for Git 2.0) +------------------------------------------ + +When "git push [$there]" does not say what to push, we have used the +traditional "matching" semantics so far (all your branches were sent +to the remote as long as there already are branches of the same name +over there). In Git 2.0, the default will change to the "simple" +semantics that pushes the current branch to the branch with the same +name, only when the current branch is set to integrate with that +remote branch. There is a user preference configuration variable +"push.default" to change this. If you are an old-timer who is used +to the "matching" semantics, you can set it to "matching" to keep the +traditional behaviour. If you want to live in the future early, +you can set it to "simple" today without waiting for Git 2.0. + +When "git add -u" and "git add -A", that does not specify what paths +to add on the command line is run from inside a subdirectory, these +commands will operate on the entire tree in Git 2.0 for consistency +with "git commit -a" and other commands. Because there will be no +mechanism to make "git add -u" behave as if "git add -u .", it is +important for those who are used to "git add -u" (without pathspec) +updating the index only for paths in the current subdirectory to start +training their fingers to explicitly say "git add -u ." when they mean +it before Git 2.0 comes. Updates since v1.8.1 @@ -463,3 +476,20 @@ details). * Scripts to test bash completion was inherently flaky as it was affected by whatever random things the user may have on $PATH. + + * An element on GIT_CEILING_DIRECTORIES could be a "logical" pathname + that uses a symbolic link to point at somewhere else (e.g. /home/me + that points at /net/host/export/home/me, and the latter directory + is automounted). Earlier when Git saw such a pathname e.g. /home/me + on this environment variable, the "ceiling" mechanism did not take + effect. With this release (the fix has also been merged to the + v1.8.1.x maintenance series), elements on GIT_CEILING_DIRECTORIES + are by default checked for such aliasing coming from symbolic + links. As this needs to actually resolve symbolic links for each + element on the GIT_CEILING_DIRECTORIES, you can disable this + mechanism for some elements by listing them after an empty element + on the GIT_CEILING_DIRECTORIES. e.g. Setting /home/me::/home/him to + GIT_CEILING_DIRECTORIES makes Git resolve symbolic links in + /home/me when checking if the current directory is under /home/me, + but does not do so for /home/him. + (merge 7ec30aa mh/maint-ceil-absolute later to maint). diff --git a/Documentation/RelNotes/1.8.3.txt b/Documentation/RelNotes/1.8.3.txt new file mode 100644 index 0000000000..a88e851f21 --- /dev/null +++ b/Documentation/RelNotes/1.8.3.txt @@ -0,0 +1,53 @@ +Git v1.8.3 Release Notes +======================== + +Backward compatibility notes (for Git 2.0) +------------------------------------------ + +When "git push [$there]" does not say what to push, we have used the +traditional "matching" semantics so far (all your branches were sent +to the remote as long as there already are branches of the same name +over there). In Git 2.0, the default will change to the "simple" +semantics that pushes the current branch to the branch with the same +name, only when the current branch is set to integrate with that +remote branch. There is a user preference configuration variable +"push.default" to change this. If you are an old-timer who is used +to the "matching" semantics, you can set it to "matching" to keep the +traditional behaviour. If you want to live in the future early, +you can set it to "simple" today without waiting for Git 2.0. + +When "git add -u" and "git add -A", that does not specify what paths +to add on the command line is run from inside a subdirectory, these +commands will operate on the entire tree in Git 2.0 for consistency +with "git commit -a" and other commands. Because there will be no +mechanism to make "git add -u" behave as if "git add -u .", it is +important for those who are used to "git add -u" (without pathspec) +updating the index only for paths in the current subdirectory to start +training their fingers to explicitly say "git add -u ." when they mean +it before Git 2.0 comes. + + +Updates since v1.8.2 +-------------------- + +UI, Workflows & Features + + + +Foreign Interface + + + +Performance, Internal Implementation, etc. + + + +Also contains minor documentation updates and code clean-ups. + + +Fixes since v1.8.2 +------------------ + +Unless otherwise noted, all the fixes since v1.8.2 in the maintenance +track are contained in this release (see release notes to them for +details). diff --git a/Documentation/config.txt b/Documentation/config.txt index bbba728d09..b3023b8172 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -443,7 +443,7 @@ core.sharedRepository:: core.warnAmbiguousRefs:: If true, Git will warn you if the ref name you passed it is ambiguous - and might match multiple refs in the .git/refs/ tree. True by default. + and might match multiple refs in the repository. True by default. core.compression:: An integer -1..9, indicating a default compression level. diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 869d965a3b..104579dc75 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -195,8 +195,8 @@ any of those replacements occurred. --color[=<when>]:: Show colored diff. - The value must be `always` (the default for `<when>`), `never`, or `auto`. - The default value is `never`. + `--color` (i.e. without '=<when>') is the same as `--color=always`. + '<when>' can be one of `always`, `never`, or `auto`. ifdef::git-diff[] It can be changed by the `color.ui` and `color.diff` configuration settings. diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt index 388a2254f9..b0944e57d5 100644 --- a/Documentation/git-add.txt +++ b/Documentation/git-add.txt @@ -100,12 +100,9 @@ apply to the index. See EDITING PATCHES below. -u:: --update:: - Only match <pathspec> against already tracked files in - the index rather than the working tree. That means that it - will never stage new files, but that it will stage modified - new contents of tracked files and that it will remove files - from the index if the corresponding files in the working tree - have been removed. + Update the index just where it already has an entry matching + <pathspec>. This removes as well as modifies index entries to + match the working tree, but adds no new files. + If no <pathspec> is given, the current version of Git defaults to "."; in other words, update all tracked files in the current directory @@ -114,10 +111,15 @@ of Git, hence the form without <pathspec> should not be used. -A:: --all:: - Like `-u`, but match <pathspec> against files in the - working tree in addition to the index. That means that it - will find new files as well as staging modified content and - removing files that are no longer in the working tree. + Update the index not only where the working tree has a file + matching <pathspec> but also where the index already has an + entry. This adds, modifies, and removes index entries to + match the working tree. ++ +If no <pathspec> is given, the current version of Git defaults to +"."; in other words, update all files in the current directory +and its subdirectories. This default will change in a future version +of Git, hence the form without <pathspec> should not be used. -N:: --intent-to-add:: diff --git a/Documentation/git-describe.txt b/Documentation/git-describe.txt index 32da244fd5..3c81e85ec5 100644 --- a/Documentation/git-describe.txt +++ b/Documentation/git-describe.txt @@ -81,8 +81,9 @@ OPTIONS that points at object deadbee....). --match <pattern>:: - Only consider tags matching the given pattern (can be used to avoid - leaking private tags made from the repository). + Only consider tags matching the given `glob(7)` pattern, + excluding the "refs/tags/" prefix. This can be used to avoid + leaking private tags from the repository. --always:: Show uniquely abbreviated commit object as fallback. diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index a0c9df85f4..c99d795618 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -13,8 +13,9 @@ SYNOPSIS [--reference <repository>] [--] <repository> [<path>] 'git submodule' [--quiet] status [--cached] [--recursive] [--] [<path>...] 'git submodule' [--quiet] init [--] [<path>...] -'git submodule' [--quiet] update [--init] [--remote] [-N|--no-fetch] [--rebase] - [--reference <repository>] [--merge] [--recursive] [--] [<path>...] +'git submodule' [--quiet] update [--init] [--remote] [-N|--no-fetch] + [-f|--force] [--rebase] [--reference <repository>] + [--merge] [--recursive] [--] [<path>...] 'git submodule' [--quiet] summary [--cached|--files] [(-n|--summary-limit) <n>] [commit] [--] [<path>...] 'git submodule' [--quiet] foreach [--recursive] <command> diff --git a/Documentation/git-update-index.txt b/Documentation/git-update-index.txt index 77a912d4ea..c92775829b 100644 --- a/Documentation/git-update-index.txt +++ b/Documentation/git-update-index.txt @@ -145,7 +145,15 @@ you will need to handle the situation manually. --index-version <n>:: Write the resulting index out in the named on-disk format version. - The current default version is 2. + Supported versions are 2, 3 and 4. The current default version is 2 + or 3, depending on whether extra features are used, such as + `git add -N`. ++ +Version 4 performs a simple pathname compression that reduces index +size by 30%-50% on large repositories, which results in faster load +time. Version 4 is relatively young (first released in in 1.8.0 in +October 2012). Other Git implementations such as JGit and libgit2 +may not support it yet. -z:: Only meaningful with `--stdin` or `--index-info`; paths are diff --git a/Documentation/git.txt b/Documentation/git.txt index 0847cdcc68..7efaa591b8 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -43,9 +43,15 @@ unreleased) version of Git, that is available from 'master' branch of the `git.git` repository. Documentation for older releases are available here: -* link:v1.8.1.4/git.html[documentation for release 1.8.1.4] +* link:v1.8.2/git.html[documentation for release 1.8.2] * release notes for + link:RelNotes/1.8.2.txt[1.8.2]. + +* link:v1.8.1.5/git.html[documentation for release 1.8.1.5] + +* release notes for + link:RelNotes/1.8.1.5.txt[1.8.1.5], link:RelNotes/1.8.1.4.txt[1.8.1.4], link:RelNotes/1.8.1.3.txt[1.8.1.3], link:RelNotes/1.8.1.2.txt[1.8.1.2], @@ -678,12 +684,19 @@ Git so take care if using Cogito etc. The '--namespace' command-line option also sets this value. 'GIT_CEILING_DIRECTORIES':: - This should be a colon-separated list of absolute paths. - If set, it is a list of directories that Git should not chdir - up into while looking for a repository directory. - It will not exclude the current working directory or - a GIT_DIR set on the command line or in the environment. - (Useful for excluding slow-loading network directories.) + This should be a colon-separated list of absolute paths. If + set, it is a list of directories that Git should not chdir up + into while looking for a repository directory (useful for + excluding slow-loading network directories). It will not + exclude the current working directory or a GIT_DIR set on the + command line or in the environment. Normally, Git has to read + the entries in this list and resolve any symlink that + might be present in order to compare them with the current + directory. However, if even this access is slow, you + can add an empty entry to the list to tell Git that the + subsequent entries are not symlinks and needn't be resolved; + e.g., + 'GIT_CEILING_DIRECTORIES=/maybe/symlink::/very/slow/non/symlink'. 'GIT_DISCOVERY_ACROSS_FILESYSTEM':: When run in a directory that does not have ".git" repository diff --git a/Documentation/gitcli.txt b/Documentation/gitcli.txt index dc9e617a10..9ac5088acd 100644 --- a/Documentation/gitcli.txt +++ b/Documentation/gitcli.txt @@ -107,13 +107,14 @@ couple of magic command line options: --------------------------------------------- $ git describe -h usage: git describe [options] <committish>* + or: git describe [options] --dirty --contains find the tag that comes after the commit --debug debug search strategy on stderr - --all use any ref in .git/refs - --tags use any tag in .git/refs/tags - --abbrev [<n>] use <n> digits to display SHA-1s - --candidates <n> consider <n> most recent tags (default: 10) + --all use any ref + --tags use any tag, even unannotated + --long always use long format + --abbrev[=<n>] use <n> digits to display SHA-1s --------------------------------------------- --help-all:: diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt index 8181e4ed2a..dc6693fe48 100644 --- a/Documentation/githooks.txt +++ b/Documentation/githooks.txt @@ -140,9 +140,11 @@ the outcome of 'git commit'. pre-rebase ~~~~~~~~~~ -This hook is called by 'git rebase' and can be used to prevent a branch -from getting rebased. - +This hook is called by 'git rebase' and can be used to prevent a +branch from getting rebased. The hook may be called with one or +two parameters. The first parameter is the upstream from which +the series was forked. The second parameter is the branch being +rebased, and is not set when rebasing the current branch. post-checkout ~~~~~~~~~~~~~ @@ -365,7 +367,7 @@ preceding SP is also omitted. Currently, no commands pass any 'extra-info'. The hook always runs after the automatic note copying (see -"notes.rewrite.<command>" in linkgit:git-config.txt) has happened, and +"notes.rewrite.<command>" in linkgit:git-config.txt[1]) has happened, and thus has access to these notes. The following command-specific comments apply: diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt index 678d1756a5..314e25da73 100644 --- a/Documentation/revisions.txt +++ b/Documentation/revisions.txt @@ -88,10 +88,10 @@ some output processing may assume ref names in UTF-8. The construct '@\{-<n>\}' means the <n>th branch checked out before the current one. -'<refname>@\{upstream\}', e.g. 'master@\{upstream\}', '@\{u\}':: - The suffix '@\{upstream\}' to a ref (short form '<refname>@\{u\}') refers to - the branch the ref is set to build on top of. A missing ref defaults - to the current branch. +'<branchname>@\{upstream\}', e.g. 'master@\{upstream\}', '@\{u\}':: + The suffix '@\{upstream\}' to a branchname (short form '<branchname>@\{u\}') + refers to the branch that the branch specified by branchname is set to build on + top of. A missing branchname defaults to the current one. '<rev>{caret}', e.g. 'HEAD{caret}, v1.5.1{caret}0':: A suffix '{caret}' to a revision parameter means the first parent of diff --git a/Documentation/technical/index-format.txt b/Documentation/technical/index-format.txt index 27c716b15f..0810251f5a 100644 --- a/Documentation/technical/index-format.txt +++ b/Documentation/technical/index-format.txt @@ -12,7 +12,7 @@ Git index format The signature is { 'D', 'I', 'R', 'C' } (stands for "dircache") 4-byte version number: - The current supported versions are 2 and 3. + The current supported versions are 2, 3 and 4. 32-bit number of index entries. @@ -93,8 +93,8 @@ Git index format 12-bit name length if the length is less than 0xFFF; otherwise 0xFFF is stored in this field. - (Version 3) A 16-bit field, only applicable if the "extended flag" - above is 1, split into (high to low bits). + (Version 3 or later) A 16-bit field, only applicable if the + "extended flag" above is 1, split into (high to low bits). 1-bit reserved for future diff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt index 5f36f8115f..35a279ab24 100644 --- a/Documentation/user-manual.txt +++ b/Documentation/user-manual.txt @@ -2337,7 +2337,7 @@ origin) fi ;; *) - echo "Usage: $0 origin|test|release" 1>&2 + echo "usage: $0 origin|test|release" 1>&2 exit 1 ;; esac @@ -2351,7 +2351,7 @@ pname=$0 usage() { - echo "Usage: $pname branch test|release" 1>&2 + echo "usage: $pname branch test|release" 1>&2 exit 1 } diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index 7952039453..6722e621d1 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v1.8.2-rc1 +DEF_VER=v1.8.2.GIT LF=' ' @@ -101,8 +101,6 @@ all:: # # Define NO_MKSTEMPS if you don't have mkstemps in the C library. # -# Define NO_STRTOK_R if you don't have strtok_r in the C library. -# # Define NO_FNMATCH if you don't have fnmatch in the C library. # # Define NO_FNMATCH_CASEFOLD if your fnmatch function doesn't have the @@ -619,22 +617,6 @@ LIB_FILE = libgit.a XDIFF_LIB = xdiff/lib.a VCSSVN_LIB = vcs-svn/lib.a -LIB_H += xdiff/xinclude.h -LIB_H += xdiff/xmacros.h -LIB_H += xdiff/xdiff.h -LIB_H += xdiff/xtypes.h -LIB_H += xdiff/xutils.h -LIB_H += xdiff/xprepare.h -LIB_H += xdiff/xdiffi.h -LIB_H += xdiff/xemit.h - -LIB_H += vcs-svn/line_buffer.h -LIB_H += vcs-svn/sliding_window.h -LIB_H += vcs-svn/repo_tree.h -LIB_H += vcs-svn/fast_export.h -LIB_H += vcs-svn/svndiff.h -LIB_H += vcs-svn/svndump.h - GENERATED_H += common-cmds.h LIB_H += advice.h @@ -736,11 +718,24 @@ LIB_H += url.h LIB_H += userdiff.h LIB_H += utf8.h LIB_H += varint.h +LIB_H += vcs-svn/fast_export.h +LIB_H += vcs-svn/line_buffer.h +LIB_H += vcs-svn/repo_tree.h +LIB_H += vcs-svn/sliding_window.h +LIB_H += vcs-svn/svndiff.h +LIB_H += vcs-svn/svndump.h LIB_H += walker.h LIB_H += wildmatch.h LIB_H += wt-status.h LIB_H += xdiff-interface.h LIB_H += xdiff/xdiff.h +LIB_H += xdiff/xdiffi.h +LIB_H += xdiff/xemit.h +LIB_H += xdiff/xinclude.h +LIB_H += xdiff/xmacros.h +LIB_H += xdiff/xprepare.h +LIB_H += xdiff/xtypes.h +LIB_H += xdiff/xutils.h LIB_OBJS += abspath.o LIB_OBJS += advice.o @@ -1249,10 +1244,6 @@ endif ifdef NO_STRTOULL COMPAT_CFLAGS += -DNO_STRTOULL endif -ifdef NO_STRTOK_R - COMPAT_CFLAGS += -DNO_STRTOK_R - COMPAT_OBJS += compat/strtok_r.o -endif ifdef NO_FNMATCH COMPAT_CFLAGS += -Icompat/fnmatch COMPAT_CFLAGS += -DNO_FNMATCH @@ -1 +1 @@ -Documentation/RelNotes/1.8.2.txt
\ No newline at end of file +Documentation/RelNotes/1.8.3.txt
\ No newline at end of file @@ -255,9 +255,11 @@ static struct match_attr *parse_attr_line(const char *line, const char *src, &res->u.pat.patternlen, &res->u.pat.flags, &res->u.pat.nowildcardlen); - if (res->u.pat.flags & EXC_FLAG_NEGATIVE) - die(_("Negative patterns are forbidden in git attributes\n" - "Use '\\!' for literal leading exclamation.")); + if (res->u.pat.flags & EXC_FLAG_NEGATIVE) { + warning(_("Negative patterns are ignored in git attributes\n" + "Use '\\!' for literal leading exclamation.")); + return NULL; + } } res->is_macro = is_macro; res->num_attr = num_attr; diff --git a/builtin/add.c b/builtin/add.c index 0dd014eb96..ab1c9e8fb7 100644 --- a/builtin/add.c +++ b/builtin/add.c @@ -328,9 +328,9 @@ static void warn_pathless_add(const char *option_name, const char *short_name) { * this is not the original behavior and can't be * changed until users trained themselves not to type * "git add -u" or "git add -A". For now, we warn and - * keep the old behavior. Later, this warning can be - * turned into a die(...), and eventually we may - * reallow the command with a new behavior. + * keep the old behavior. Later, the behavior can be changed + * to tree-wide, keeping the warning for a while, and + * eventually we can drop the warning. */ warning(_("The behavior of 'git add %s (or %s)' with no path argument from a\n" "subdirectory of the tree will change in Git 2.0 and should not be used anymore.\n" diff --git a/builtin/describe.c b/builtin/describe.c index 04c185b1fb..ca084c675e 100644 --- a/builtin/describe.c +++ b/builtin/describe.c @@ -402,8 +402,8 @@ int cmd_describe(int argc, const char **argv, const char *prefix) struct option options[] = { OPT_BOOLEAN(0, "contains", &contains, N_("find the tag that comes after the commit")), OPT_BOOLEAN(0, "debug", &debug, N_("debug search strategy on stderr")), - OPT_BOOLEAN(0, "all", &all, N_("use any ref in .git/refs")), - OPT_BOOLEAN(0, "tags", &tags, N_("use any tag in .git/refs/tags")), + OPT_BOOLEAN(0, "all", &all, N_("use any ref")), + OPT_BOOLEAN(0, "tags", &tags, N_("use any tag, even unannotated")), OPT_BOOLEAN(0, "long", &longformat, N_("always use long format")), OPT__ABBREV(&abbrev), OPT_SET_INT(0, "exact-match", &max_candidates, diff --git a/compat/strtok_r.c b/compat/strtok_r.c deleted file mode 100644 index 7b5d568a96..0000000000 --- a/compat/strtok_r.c +++ /dev/null @@ -1,61 +0,0 @@ -/* Reentrant string tokenizer. Generic version. - Copyright (C) 1991,1996-1999,2001,2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include "../git-compat-util.h" - -/* Parse S into tokens separated by characters in DELIM. - If S is NULL, the saved pointer in SAVE_PTR is used as - the next starting point. For example: - char s[] = "-abc-=-def"; - char *sp; - x = strtok_r(s, "-", &sp); // x = "abc", sp = "=-def" - x = strtok_r(NULL, "-=", &sp); // x = "def", sp = NULL - x = strtok_r(NULL, "=", &sp); // x = NULL - // s = "abc\0-def\0" -*/ -char * -gitstrtok_r (char *s, const char *delim, char **save_ptr) -{ - char *token; - - if (s == NULL) - s = *save_ptr; - - /* Scan leading delimiters. */ - s += strspn (s, delim); - if (*s == '\0') - { - *save_ptr = s; - return NULL; - } - - /* Find the end of the token. */ - token = s; - s = strpbrk (token, delim); - if (s == NULL) - /* This token finishes the string. */ - *save_ptr = token + strlen (token); - else - { - /* Terminate the token and make *SAVE_PTR point past it. */ - *s = '\0'; - *save_ptr = s + 1; - } - return token; -} diff --git a/config.mak.uname b/config.mak.uname index bb8246b63e..9080054f76 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -321,7 +321,6 @@ ifeq ($(uname_S),Windows) NO_UNSETENV = YesPlease NO_STRCASESTR = YesPlease NO_STRLCPY = YesPlease - NO_STRTOK_R = YesPlease NO_FNMATCH = YesPlease NO_MEMMEM = YesPlease # NEEDS_LIBICONV = YesPlease @@ -478,7 +477,6 @@ ifneq (,$(findstring MINGW,$(uname_S))) NO_UNSETENV = YesPlease NO_STRCASESTR = YesPlease NO_STRLCPY = YesPlease - NO_STRTOK_R = YesPlease NO_FNMATCH = YesPlease NO_MEMMEM = YesPlease NEEDS_LIBICONV = YesPlease diff --git a/configure.ac b/configure.ac index 1991258ae0..f3462d9c81 100644 --- a/configure.ac +++ b/configure.ac @@ -901,12 +901,6 @@ GIT_CHECK_FUNC(strcasestr, [NO_STRCASESTR=YesPlease]) GIT_CONF_SUBST([NO_STRCASESTR]) # -# Define NO_STRTOK_R if you don't have strtok_r -GIT_CHECK_FUNC(strtok_r, -[NO_STRTOK_R=], -[NO_STRTOK_R=YesPlease]) -GIT_CONF_SUBST([NO_STRTOK_R]) -# # Define NO_FNMATCH if you don't have fnmatch GIT_CHECK_FUNC(fnmatch, [NO_FNMATCH=], diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index b62bec0279..93eba46750 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -299,9 +299,12 @@ __git_index_file_list_filter () # the second argument. __git_ls_files_helper () { - # NOTE: $2 is not quoted in order to support multiple options - cd "$1" && git ls-files --exclude-standard $2 -} 2>/dev/null + ( + test -n "${CDPATH+set}" && unset CDPATH + # NOTE: $2 is not quoted in order to support multiple options + cd "$1" && git ls-files --exclude-standard $2 + ) 2>/dev/null +} # Execute git diff-index, returning paths relative to the directory @@ -309,8 +312,11 @@ __git_ls_files_helper () # specified in the second argument. __git_diff_index_helper () { - cd "$1" && git diff-index --name-only --relative "$2" -} 2>/dev/null + ( + test -n "${CDPATH+set}" && unset CDPATH + cd "$1" && git diff-index --name-only --relative "$2" + ) 2>/dev/null +} # __git_index_files accepts 1 or 2 arguments: # 1: Options to pass to ls-files (required). diff --git a/contrib/completion/git-completion.zsh b/contrib/completion/git-completion.zsh index 45775021ff..cf8116d477 100644 --- a/contrib/completion/git-completion.zsh +++ b/contrib/completion/git-completion.zsh @@ -60,6 +60,15 @@ __gitcomp_nl () compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0 } +__gitcomp_file () +{ + emulate -L zsh + + local IFS=$'\n' + compset -P '*[=:]' + compadd -Q -p "${2-}" -f -- ${=1} && _ret=0 +} + _git () { local _ret=1 diff --git a/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c b/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c index 41f61c5db3..f2cdefee60 100644 --- a/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c +++ b/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c @@ -401,7 +401,7 @@ static void usage(const char *name) const char *basename = strrchr(name,'/'); basename = (basename) ? basename + 1 : name; - fprintf(stderr, "Usage: %s <", basename); + fprintf(stderr, "usage: %s <", basename); while(try_op->name) { fprintf(stderr,"%s",(try_op++)->name); if(try_op->name) diff --git a/contrib/credential/osxkeychain/git-credential-osxkeychain.c b/contrib/credential/osxkeychain/git-credential-osxkeychain.c index 6beed123ab..3940202b36 100644 --- a/contrib/credential/osxkeychain/git-credential-osxkeychain.c +++ b/contrib/credential/osxkeychain/git-credential-osxkeychain.c @@ -154,7 +154,7 @@ static void read_credential(void) int main(int argc, const char **argv) { const char *usage = - "Usage: git credential-osxkeychain <get|store|erase>"; + "usage: git credential-osxkeychain <get|store|erase>"; if (!argv[1]) die(usage); diff --git a/contrib/credential/wincred/git-credential-wincred.c b/contrib/credential/wincred/git-credential-wincred.c index cbaec5f24b..a1d38f035b 100644 --- a/contrib/credential/wincred/git-credential-wincred.c +++ b/contrib/credential/wincred/git-credential-wincred.c @@ -9,6 +9,8 @@ /* common helpers */ +#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) + static void die(const char *err, ...) { char msg[4096]; @@ -30,14 +32,6 @@ static void *xmalloc(size_t size) return ret; } -static char *xstrdup(const char *str) -{ - char *ret = strdup(str); - if (!ret) - die("Out of memory"); - return ret; -} - /* MinGW doesn't have wincred.h, so we need to define stuff */ typedef struct _CREDENTIAL_ATTRIBUTEW { @@ -67,20 +61,14 @@ typedef struct _CREDENTIALW { #define CRED_MAX_ATTRIBUTES 64 typedef BOOL (WINAPI *CredWriteWT)(PCREDENTIALW, DWORD); -typedef BOOL (WINAPI *CredUnPackAuthenticationBufferWT)(DWORD, PVOID, DWORD, - LPWSTR, DWORD *, LPWSTR, DWORD *, LPWSTR, DWORD *); typedef BOOL (WINAPI *CredEnumerateWT)(LPCWSTR, DWORD, DWORD *, PCREDENTIALW **); -typedef BOOL (WINAPI *CredPackAuthenticationBufferWT)(DWORD, LPWSTR, LPWSTR, - PBYTE, DWORD *); typedef VOID (WINAPI *CredFreeT)(PVOID); typedef BOOL (WINAPI *CredDeleteWT)(LPCWSTR, DWORD, DWORD); -static HMODULE advapi, credui; +static HMODULE advapi; static CredWriteWT CredWriteW; -static CredUnPackAuthenticationBufferWT CredUnPackAuthenticationBufferW; static CredEnumerateWT CredEnumerateW; -static CredPackAuthenticationBufferWT CredPackAuthenticationBufferW; static CredFreeT CredFree; static CredDeleteWT CredDeleteW; @@ -88,74 +76,84 @@ static void load_cred_funcs(void) { /* load DLLs */ advapi = LoadLibrary("advapi32.dll"); - credui = LoadLibrary("credui.dll"); - if (!advapi || !credui) - die("failed to load DLLs"); + if (!advapi) + die("failed to load advapi32.dll"); /* get function pointers */ CredWriteW = (CredWriteWT)GetProcAddress(advapi, "CredWriteW"); - CredUnPackAuthenticationBufferW = (CredUnPackAuthenticationBufferWT) - GetProcAddress(credui, "CredUnPackAuthenticationBufferW"); CredEnumerateW = (CredEnumerateWT)GetProcAddress(advapi, "CredEnumerateW"); - CredPackAuthenticationBufferW = (CredPackAuthenticationBufferWT) - GetProcAddress(credui, "CredPackAuthenticationBufferW"); CredFree = (CredFreeT)GetProcAddress(advapi, "CredFree"); CredDeleteW = (CredDeleteWT)GetProcAddress(advapi, "CredDeleteW"); - if (!CredWriteW || !CredUnPackAuthenticationBufferW || - !CredEnumerateW || !CredPackAuthenticationBufferW || !CredFree || - !CredDeleteW) + if (!CredWriteW || !CredEnumerateW || !CredFree || !CredDeleteW) die("failed to load functions"); } -static char target_buf[1024]; -static char *protocol, *host, *path, *username; -static WCHAR *wusername, *password, *target; +static WCHAR *wusername, *password, *protocol, *host, *path, target[1024]; -static void write_item(const char *what, WCHAR *wbuf) +static void write_item(const char *what, LPCWSTR wbuf, int wlen) { char *buf; - int len = WideCharToMultiByte(CP_UTF8, 0, wbuf, -1, NULL, 0, NULL, + int len = WideCharToMultiByte(CP_UTF8, 0, wbuf, wlen, NULL, 0, NULL, FALSE); buf = xmalloc(len); - if (!WideCharToMultiByte(CP_UTF8, 0, wbuf, -1, buf, len, NULL, FALSE)) + if (!WideCharToMultiByte(CP_UTF8, 0, wbuf, wlen, buf, len, NULL, FALSE)) die("WideCharToMultiByte failed!"); printf("%s=", what); - fwrite(buf, 1, len - 1, stdout); + fwrite(buf, 1, len, stdout); putchar('\n'); free(buf); } -static int match_attr(const CREDENTIALW *cred, const WCHAR *keyword, - const char *want) +/* + * Match an (optional) expected string and a delimiter in the target string, + * consuming the matched text by updating the target pointer. + */ +static int match_part(LPCWSTR *ptarget, LPCWSTR want, LPCWSTR delim) { - int i; - if (!want) - return 1; - - for (i = 0; i < cred->AttributeCount; ++i) - if (!wcscmp(cred->Attributes[i].Keyword, keyword)) - return !strcmp((const char *)cred->Attributes[i].Value, - want); - - return 0; /* not found */ + LPCWSTR delim_pos, start = *ptarget; + int len; + + /* find start of delimiter (or end-of-string if delim is empty) */ + if (*delim) + delim_pos = wcsstr(start, delim); + else + delim_pos = start + wcslen(start); + + /* + * match text up to delimiter, or end of string (e.g. the '/' after + * host is optional if not followed by a path) + */ + if (delim_pos) + len = delim_pos - start; + else + len = wcslen(start); + + /* update ptarget if we either found a delimiter or need a match */ + if (delim_pos || want) + *ptarget = delim_pos ? delim_pos + wcslen(delim) : start + len; + + return !want || (!wcsncmp(want, start, len) && !want[len]); } static int match_cred(const CREDENTIALW *cred) { - return (!wusername || !wcscmp(wusername, cred->UserName)) && - match_attr(cred, L"git_protocol", protocol) && - match_attr(cred, L"git_host", host) && - match_attr(cred, L"git_path", path); + LPCWSTR target = cred->TargetName; + if (wusername && wcscmp(wusername, cred->UserName)) + return 0; + + return match_part(&target, L"git", L":") && + match_part(&target, protocol, L"://") && + match_part(&target, wusername, L"@") && + match_part(&target, host, L"/") && + match_part(&target, path, L""); } static void get_credential(void) { - WCHAR *user_buf, *pass_buf; - DWORD user_buf_size = 0, pass_buf_size = 0; - CREDENTIALW **creds, *cred = NULL; + CREDENTIALW **creds; DWORD num_creds; int i; @@ -165,90 +163,36 @@ static void get_credential(void) /* search for the first credential that matches username */ for (i = 0; i < num_creds; ++i) if (match_cred(creds[i])) { - cred = creds[i]; + write_item("username", creds[i]->UserName, + wcslen(creds[i]->UserName)); + write_item("password", + (LPCWSTR)creds[i]->CredentialBlob, + creds[i]->CredentialBlobSize / sizeof(WCHAR)); break; } - if (!cred) - return; - - CredUnPackAuthenticationBufferW(0, cred->CredentialBlob, - cred->CredentialBlobSize, NULL, &user_buf_size, NULL, NULL, - NULL, &pass_buf_size); - - user_buf = xmalloc(user_buf_size * sizeof(WCHAR)); - pass_buf = xmalloc(pass_buf_size * sizeof(WCHAR)); - - if (!CredUnPackAuthenticationBufferW(0, cred->CredentialBlob, - cred->CredentialBlobSize, user_buf, &user_buf_size, NULL, NULL, - pass_buf, &pass_buf_size)) - die("CredUnPackAuthenticationBuffer failed"); CredFree(creds); - - /* zero-terminate (sizes include zero-termination) */ - user_buf[user_buf_size - 1] = L'\0'; - pass_buf[pass_buf_size - 1] = L'\0'; - - write_item("username", user_buf); - write_item("password", pass_buf); - - free(user_buf); - free(pass_buf); -} - -static void write_attr(CREDENTIAL_ATTRIBUTEW *attr, const WCHAR *keyword, - const char *value) -{ - attr->Keyword = (LPWSTR)keyword; - attr->Flags = 0; - attr->ValueSize = strlen(value) + 1; /* store zero-termination */ - attr->Value = (LPBYTE)value; } static void store_credential(void) { CREDENTIALW cred; - BYTE *auth_buf; - DWORD auth_buf_size = 0; - CREDENTIAL_ATTRIBUTEW attrs[CRED_MAX_ATTRIBUTES]; if (!wusername || !password) return; - /* query buffer size */ - CredPackAuthenticationBufferW(0, wusername, password, - NULL, &auth_buf_size); - - auth_buf = xmalloc(auth_buf_size); - - if (!CredPackAuthenticationBufferW(0, wusername, password, - auth_buf, &auth_buf_size)) - die("CredPackAuthenticationBuffer failed"); - cred.Flags = 0; cred.Type = CRED_TYPE_GENERIC; cred.TargetName = target; cred.Comment = L"saved by git-credential-wincred"; - cred.CredentialBlobSize = auth_buf_size; - cred.CredentialBlob = auth_buf; + cred.CredentialBlobSize = (wcslen(password)) * sizeof(WCHAR); + cred.CredentialBlob = (LPVOID)password; cred.Persist = CRED_PERSIST_LOCAL_MACHINE; - cred.AttributeCount = 1; - cred.Attributes = attrs; + cred.AttributeCount = 0; + cred.Attributes = NULL; cred.TargetAlias = NULL; cred.UserName = wusername; - write_attr(attrs, L"git_protocol", protocol); - - if (host) { - write_attr(attrs + cred.AttributeCount, L"git_host", host); - cred.AttributeCount++; - } - - if (path) { - write_attr(attrs + cred.AttributeCount, L"git_path", path); - cred.AttributeCount++; - } - if (!CredWriteW(&cred, 0)) die("CredWrite failed"); } @@ -284,10 +228,13 @@ static void read_credential(void) while (fgets(buf, sizeof(buf), stdin)) { char *v; + int len = strlen(buf); + /* strip trailing CR / LF */ + while (len && strchr("\r\n", buf[len - 1])) + buf[--len] = 0; - if (!strcmp(buf, "\n")) + if (!*buf) break; - buf[strlen(buf)-1] = '\0'; v = strchr(buf, '='); if (!v) @@ -295,13 +242,12 @@ static void read_credential(void) *v++ = '\0'; if (!strcmp(buf, "protocol")) - protocol = xstrdup(v); + protocol = utf8_to_utf16_dup(v); else if (!strcmp(buf, "host")) - host = xstrdup(v); + host = utf8_to_utf16_dup(v); else if (!strcmp(buf, "path")) - path = xstrdup(v); + path = utf8_to_utf16_dup(v); else if (!strcmp(buf, "username")) { - username = xstrdup(v); wusername = utf8_to_utf16_dup(v); } else if (!strcmp(buf, "password")) password = utf8_to_utf16_dup(v); @@ -313,7 +259,7 @@ static void read_credential(void) int main(int argc, char *argv[]) { const char *usage = - "Usage: git credential-wincred <get|store|erase>\n"; + "usage: git credential-wincred <get|store|erase>\n"; if (!argv[1]) die(usage); @@ -330,22 +276,20 @@ int main(int argc, char *argv[]) return 0; /* prepare 'target', the unique key for the credential */ - strncat(target_buf, "git:", sizeof(target_buf)); - strncat(target_buf, protocol, sizeof(target_buf)); - strncat(target_buf, "://", sizeof(target_buf)); - if (username) { - strncat(target_buf, username, sizeof(target_buf)); - strncat(target_buf, "@", sizeof(target_buf)); + wcscpy(target, L"git:"); + wcsncat(target, protocol, ARRAY_SIZE(target)); + wcsncat(target, L"://", ARRAY_SIZE(target)); + if (wusername) { + wcsncat(target, wusername, ARRAY_SIZE(target)); + wcsncat(target, L"@", ARRAY_SIZE(target)); } if (host) - strncat(target_buf, host, sizeof(target_buf)); + wcsncat(target, host, ARRAY_SIZE(target)); if (path) { - strncat(target_buf, "/", sizeof(target_buf)); - strncat(target_buf, path, sizeof(target_buf)); + wcsncat(target, L"/", ARRAY_SIZE(target)); + wcsncat(target, path, ARRAY_SIZE(target)); } - target = utf8_to_utf16_dup(target_buf); - if (!strcmp(argv[1], "get")) get_credential(); else if (!strcmp(argv[1], "store")) diff --git a/contrib/examples/git-remote.perl b/contrib/examples/git-remote.perl index b17952a785..d42df7b418 100755 --- a/contrib/examples/git-remote.perl +++ b/contrib/examples/git-remote.perl @@ -347,7 +347,7 @@ sub rm_remote { } sub add_usage { - print STDERR "Usage: git remote add [-f] [-t track]* [-m master] <name> <url>\n"; + print STDERR "usage: git remote add [-f] [-t track]* [-m master] <name> <url>\n"; exit(1); } @@ -380,7 +380,7 @@ elsif ($ARGV[0] eq 'show') { } } if ($i >= @ARGV) { - print STDERR "Usage: git remote show <remote>\n"; + print STDERR "usage: git remote show <remote>\n"; exit(1); } my $status = 0; @@ -410,7 +410,7 @@ elsif ($ARGV[0] eq 'prune') { } } if ($i >= @ARGV) { - print STDERR "Usage: git remote prune <remote>\n"; + print STDERR "usage: git remote prune <remote>\n"; exit(1); } my $status = 0; @@ -458,13 +458,13 @@ elsif ($ARGV[0] eq 'add') { } elsif ($ARGV[0] eq 'rm') { if (@ARGV <= 1) { - print STDERR "Usage: git remote rm <remote>\n"; + print STDERR "usage: git remote rm <remote>\n"; exit(1); } exit(rm_remote($ARGV[1])); } else { - print STDERR "Usage: git remote\n"; + print STDERR "usage: git remote\n"; print STDERR " git remote add <name> <url>\n"; print STDERR " git remote rm <name>\n"; print STDERR " git remote show <name>\n"; diff --git a/contrib/examples/git-svnimport.perl b/contrib/examples/git-svnimport.perl index b09ff8f12f..c414f0d9c7 100755 --- a/contrib/examples/git-svnimport.perl +++ b/contrib/examples/git-svnimport.perl @@ -36,7 +36,7 @@ our($opt_h,$opt_o,$opt_v,$opt_u,$opt_C,$opt_i,$opt_m,$opt_M,$opt_t,$opt_T, sub usage() { print STDERR <<END; -Usage: ${\basename $0} # fetch/update GIT from SVN +usage: ${\basename $0} # fetch/update GIT from SVN [-o branch-for-HEAD] [-h] [-v] [-l max_rev] [-R repack_each_revs] [-C GIT_repository] [-t tagname] [-T trunkname] [-b branchname] [-d|-D] [-i] [-u] [-r] [-I ignorefilename] [-s start_chg] diff --git a/contrib/fast-import/git-import.perl b/contrib/fast-import/git-import.perl index f9fef6db28..0891b9e366 100755 --- a/contrib/fast-import/git-import.perl +++ b/contrib/fast-import/git-import.perl @@ -7,7 +7,7 @@ use strict; use File::Find; -my $USAGE = 'Usage: git-import branch import-message'; +my $USAGE = 'usage: git-import branch import-message'; my $branch = shift or die "$USAGE\n"; my $message = shift or die "$USAGE\n"; diff --git a/contrib/fast-import/git-import.sh b/contrib/fast-import/git-import.sh index 0ca7718d05..f8d803c5e2 100755 --- a/contrib/fast-import/git-import.sh +++ b/contrib/fast-import/git-import.sh @@ -5,7 +5,7 @@ # but is meant to be a simple fast-import example. if [ -z "$1" -o -z "$2" ]; then - echo "Usage: git-import branch import-message" + echo "usage: git-import branch import-message" exit 1 fi diff --git a/contrib/fast-import/import-zips.py b/contrib/fast-import/import-zips.py index 5cec9b0129..d12c296223 100755 --- a/contrib/fast-import/import-zips.py +++ b/contrib/fast-import/import-zips.py @@ -14,13 +14,13 @@ from time import mktime from zipfile import ZipFile if hexversion < 0x01060000: - # The limiter is the zipfile module - sys.stderr.write("import-zips.py: requires Python 1.6.0 or later.\n") - sys.exit(1) + # The limiter is the zipfile module + stderr.write("import-zips.py: requires Python 1.6.0 or later.\n") + exit(1) if len(argv) < 2: - print 'Usage:', argv[0], '<zipfile>...' - exit(1) + print 'usage:', argv[0], '<zipfile>...' + exit(1) branch_ref = 'refs/heads/import-zips' committer_name = 'Z Ip Creator' @@ -28,51 +28,51 @@ committer_email = 'zip@example.com' fast_import = popen('git fast-import --quiet', 'w') def printlines(list): - for str in list: - fast_import.write(str + "\n") + for str in list: + fast_import.write(str + "\n") for zipfile in argv[1:]: - commit_time = 0 - next_mark = 1 - common_prefix = None - mark = dict() - - zip = ZipFile(zipfile, 'r') - for name in zip.namelist(): - if name.endswith('/'): - continue - info = zip.getinfo(name) - - if commit_time < info.date_time: - commit_time = info.date_time - if common_prefix == None: - common_prefix = name[:name.rfind('/') + 1] - else: - while not name.startswith(common_prefix): - last_slash = common_prefix[:-1].rfind('/') + 1 - common_prefix = common_prefix[:last_slash] - - mark[name] = ':' + str(next_mark) - next_mark += 1 - - printlines(('blob', 'mark ' + mark[name], \ - 'data ' + str(info.file_size))) - fast_import.write(zip.read(name) + "\n") - - committer = committer_name + ' <' + committer_email + '> %d +0000' % \ - mktime(commit_time + (0, 0, 0)) - - printlines(('commit ' + branch_ref, 'committer ' + committer, \ - 'data <<EOM', 'Imported from ' + zipfile + '.', 'EOM', \ - '', 'deleteall')) - - for name in mark.keys(): - fast_import.write('M 100644 ' + mark[name] + ' ' + - name[len(common_prefix):] + "\n") - - printlines(('', 'tag ' + path.basename(zipfile), \ - 'from ' + branch_ref, 'tagger ' + committer, \ - 'data <<EOM', 'Package ' + zipfile, 'EOM', '')) + commit_time = 0 + next_mark = 1 + common_prefix = None + mark = dict() + + zip = ZipFile(zipfile, 'r') + for name in zip.namelist(): + if name.endswith('/'): + continue + info = zip.getinfo(name) + + if commit_time < info.date_time: + commit_time = info.date_time + if common_prefix == None: + common_prefix = name[:name.rfind('/') + 1] + else: + while not name.startswith(common_prefix): + last_slash = common_prefix[:-1].rfind('/') + 1 + common_prefix = common_prefix[:last_slash] + + mark[name] = ':' + str(next_mark) + next_mark += 1 + + printlines(('blob', 'mark ' + mark[name], \ + 'data ' + str(info.file_size))) + fast_import.write(zip.read(name) + "\n") + + committer = committer_name + ' <' + committer_email + '> %d +0000' % \ + mktime(commit_time + (0, 0, 0)) + + printlines(('commit ' + branch_ref, 'committer ' + committer, \ + 'data <<EOM', 'Imported from ' + zipfile + '.', 'EOM', \ + '', 'deleteall')) + + for name in mark.keys(): + fast_import.write('M 100644 ' + mark[name] + ' ' + + name[len(common_prefix):] + "\n") + + printlines(('', 'tag ' + path.basename(zipfile), \ + 'from ' + branch_ref, 'tagger ' + committer, \ + 'data <<EOM', 'Package ' + zipfile, 'EOM', '')) if fast_import.close(): - exit(1) + exit(1) diff --git a/contrib/hooks/setgitperms.perl b/contrib/hooks/setgitperms.perl index a577ad095f..2770a1b1d2 100644 --- a/contrib/hooks/setgitperms.perl +++ b/contrib/hooks/setgitperms.perl @@ -24,7 +24,7 @@ use File::Find; use File::Basename; my $usage = -"Usage: setgitperms.perl [OPTION]... <--read|--write> +"usage: setgitperms.perl [OPTION]... <--read|--write> This program uses a file `.gitmeta` to store/restore permissions and uid/gid info for all files/dirs tracked by git in the repository. diff --git a/contrib/mw-to-git/t/install-wiki.sh b/contrib/mw-to-git/t/install-wiki.sh index c6d6fa3aef..70a53f67fd 100755 --- a/contrib/mw-to-git/t/install-wiki.sh +++ b/contrib/mw-to-git/t/install-wiki.sh @@ -15,7 +15,7 @@ fi . "$WIKI_TEST_DIR"/test-gitmw-lib.sh usage () { - echo "Usage: " + echo "usage: " echo " ./install-wiki.sh <install | delete | --help>" echo " install | -i : Install a wiki on your computer." echo " delete | -d : Delete the wiki and all its pages and " @@ -9,10 +9,6 @@ #define HOST_NAME_MAX 256 #endif -#ifndef NI_MAXSERV -#define NI_MAXSERV 32 -#endif - #ifdef NO_INITGROUPS #define initgroups(x, y) (0) /* nothing */ #endif diff --git a/git-archimport.perl b/git-archimport.perl index bc32f18d6d..9cb123a07d 100755 --- a/git-archimport.perl +++ b/git-archimport.perl @@ -75,7 +75,7 @@ our($opt_h,$opt_f,$opt_v,$opt_T,$opt_t,$opt_D,$opt_a,$opt_o); sub usage() { print STDERR <<END; -Usage: git archimport # fetch/update GIT from Arch +usage: git archimport # fetch/update GIT from Arch [ -h ] [ -v ] [ -o ] [ -a ] [ -f ] [ -T ] [ -D depth ] [ -t tempdir ] repository/arch-branch [ repository/arch-branch] ... END diff --git a/git-compat-util.h b/git-compat-util.h index 490afb6af4..90e0372038 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -216,6 +216,17 @@ extern char *gitbasename(char *); #include <openssl/err.h> #endif +/* On most systems <netdb.h> would have given us this, but + * not on some systems (e.g. z/OS). + */ +#ifndef NI_MAXHOST +#define NI_MAXHOST 1025 +#endif + +#ifndef NI_MAXSERV +#define NI_MAXSERV 32 +#endif + /* On most systems <limits.h> would have given us this, but * not on some systems (e.g. GNU/Hurd). */ @@ -424,11 +435,6 @@ extern uintmax_t gitstrtoumax(const char *, char **, int); extern intmax_t gitstrtoimax(const char *, char **, int); #endif -#ifdef NO_STRTOK_R -#define strtok_r gitstrtok_r -extern char *gitstrtok_r(char *s, const char *delim, char **save_ptr); -#endif - #ifdef NO_HSTRERROR #define hstrerror githstrerror extern const char *githstrerror(int herror); diff --git a/git-cvsexportcommit.perl b/git-cvsexportcommit.perl index e6bf25232c..d13f02da95 100755 --- a/git-cvsexportcommit.perl +++ b/git-cvsexportcommit.perl @@ -420,7 +420,7 @@ sleep(1); sub usage { print STDERR <<END; -Usage: GIT_DIR=/path/to/.git git cvsexportcommit [-h] [-p] [-v] [-c] [-f] [-u] [-k] [-w cvsworkdir] [-m msgprefix] [ parent ] commit +usage: GIT_DIR=/path/to/.git git cvsexportcommit [-h] [-p] [-v] [-c] [-f] [-u] [-k] [-w cvsworkdir] [-m msgprefix] [ parent ] commit END exit(1); } diff --git a/git-cvsimport.perl b/git-cvsimport.perl index 344f1206d1..73d367cea8 100755 --- a/git-cvsimport.perl +++ b/git-cvsimport.perl @@ -38,7 +38,7 @@ sub usage(;$) { my $msg = shift; print(STDERR "Error: $msg\n") if $msg; print STDERR <<END; -Usage: git cvsimport # fetch/update GIT from CVS +usage: git cvsimport # fetch/update GIT from CVS [-o branch-for-HEAD] [-h] [-v] [-d CVSROOT] [-A author-conv-file] [-p opts-for-cvsps] [-P file] [-C GIT_repository] [-z fuzz] [-i] [-k] [-u] [-s subst] [-a] [-m] [-M regex] [-S regex] [-L commitlimit] diff --git a/git-cvsserver.perl b/git-cvsserver.perl index 3679074983..f1c3f49a83 100755 --- a/git-cvsserver.perl +++ b/git-cvsserver.perl @@ -107,7 +107,7 @@ my $work = $log->info("--------------- STARTING -----------------"); my $usage = - "Usage: git cvsserver [options] [pserver|server] [<directory> ...]\n". + "usage: git cvsserver [options] [pserver|server] [<directory> ...]\n". " --base-path <path> : Prepend to requested CVSROOT\n". " Can be read from GIT_CVSSERVER_BASE_PATH\n". " --strict-paths : Don't allow recursing into subdirectories\n". diff --git a/git-merge-one-file.sh b/git-merge-one-file.sh index f612cb847a..3373c040d4 100755 --- a/git-merge-one-file.sh +++ b/git-merge-one-file.sh @@ -18,7 +18,7 @@ USAGE='<orig blob> <our blob> <their blob> <path>' USAGE="$USAGE <orig mode> <our mode> <their mode>" -LONG_USAGE="Usage: git merge-one-file $USAGE +LONG_USAGE="usage: git merge-one-file $USAGE Blob ids and modes should be empty for missing files." diff --git a/git-relink.perl b/git-relink.perl index f29285c411..236a3521a1 100755 --- a/git-relink.perl +++ b/git-relink.perl @@ -163,7 +163,7 @@ sub link_two_files($$) { sub usage() { - print("Usage: git relink [--safe] <dir>... <master_dir> \n"); + print("usage: git relink [--safe] <dir>... <master_dir> \n"); print("All directories should contain a .git/objects/ subdirectory.\n"); print("Options\n"); print("\t--safe\t" . diff --git a/git-sh-setup.sh b/git-sh-setup.sh index 795edd2852..9cfbe7f143 100644 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -84,14 +84,14 @@ if test -n "$OPTIONS_SPEC"; then else dashless=$(basename "$0" | sed -e 's/-/ /') usage() { - die "Usage: $dashless $USAGE" + die "usage: $dashless $USAGE" } if [ -z "$LONG_USAGE" ] then - LONG_USAGE="Usage: $dashless $USAGE" + LONG_USAGE="usage: $dashless $USAGE" else - LONG_USAGE="Usage: $dashless $USAGE + LONG_USAGE="usage: $dashless $USAGE $LONG_USAGE" fi diff --git a/git-svn.perl b/git-svn.perl index b46795f593..6c7bd95032 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -382,7 +382,7 @@ sub usage { my $fd = $exit ? \*STDERR : \*STDOUT; print $fd <<""; git-svn - bidirectional operations between a single Subversion tree and git -Usage: git svn <command> [options] [arguments]\n +usage: git svn <command> [options] [arguments]\n print $fd "Available commands:\n" unless $cmd; @@ -534,7 +534,7 @@ sub cmd_fetch { } my ($remote) = @_; if (@_ > 1) { - die "Usage: $0 fetch [--all] [--parent] [svn-remote]\n"; + die "usage: $0 fetch [--all] [--parent] [svn-remote]\n"; } $Git::SVN::no_reuse_existing = undef; if ($_fetch_parent) { @@ -1404,7 +1404,7 @@ sub cmd_multi_fetch { # this command is special because it requires no metadata sub cmd_commit_diff { my ($ta, $tb, $url) = @_; - my $usage = "Usage: $0 commit-diff -r<revision> ". + my $usage = "usage: $0 commit-diff -r<revision> ". "<tree-ish> <tree-ish> [<URL>]"; fatal($usage) if (!defined $ta || !defined $tb); my $svn_path = ''; @@ -6,10 +6,10 @@ #include "run-command.h" const char git_usage_string[] = - "git [--version] [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n" + "git [--version] [--help] [-c name=value]\n" + " [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n" " [-p|--paginate|--no-pager] [--no-replace-objects] [--bare]\n" " [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]\n" - " [-c name=value] [--help]\n" " <command> [<args>]"; const char git_more_info_string[] = @@ -545,7 +545,7 @@ int main(int argc, const char **argv) commit_pager_choice(); printf("usage: %s\n\n", git_usage_string); list_common_cmds_help(); - printf("\n%s\n", git_more_info_string); + printf("\n%s\n", _(git_more_info_string)); exit(1); } cmd = argv[0]; diff --git a/gitweb/README b/gitweb/README index 6da4778b73..471dcfb691 100644 --- a/gitweb/README +++ b/gitweb/README @@ -1,9 +1,6 @@ GIT web Interface ================= -The one working on: - http://git.kernel.org/ - From the git version 1.4.0 gitweb is bundled with git. diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm index 0ebc68ac7e..5273ee8867 100644 --- a/perl/Git/SVN.pm +++ b/perl/Git/SVN.pm @@ -1493,13 +1493,18 @@ sub lookup_svn_merge { my @merged_commit_ranges; # find the tip for my $range ( @ranges ) { + if ($range =~ /[*]$/) { + warn "W: Ignoring partial merge in svn:mergeinfo " + ."dirprop: $source:$range\n"; + next; + } my ($bottom, $top) = split "-", $range; $top ||= $bottom; my $bottom_commit = $gs->find_rev_after( $bottom, 1, $top ); my $top_commit = $gs->find_rev_before( $top, 1, $bottom ); unless ($top_commit and $bottom_commit) { - warn "W:unknown path/rev in svn:mergeinfo " + warn "W: unknown path/rev in svn:mergeinfo " ."dirprop: $source:$range\n"; next; } @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: git 1.8.2\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2013-01-25 12:33+0800\n" +"POT-Creation-Date: 2013-03-05 12:36+0800\n" "PO-Revision-Date: 2012-10-02 19:35+0200\n" "Last-Translator: Ralf Thielow <ralf.thielow@gmail.com>\n" "Language-Team: German <>\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n!=1);\n" -#: advice.c:45 +#: advice.c:49 #, c-format msgid "hint: %.*s\n" msgstr "Hinweis: %.*s\n" @@ -26,7 +26,7 @@ msgstr "Hinweis: %.*s\n" #. * Message used both when 'git commit' fails and when #. * other commands doing a merge do. #. -#: advice.c:75 +#: advice.c:79 msgid "" "Fix them up in the work tree,\n" "and then use 'git add/rm <file>' as\n" @@ -73,11 +73,11 @@ msgstr "Prefix" msgid "prepend prefix to each pathname in the archive" msgstr "stellt einen Präfix vor jeden Pfadnamen in der Ausgabe" -#: archive.c:326 builtin/archive.c:91 builtin/blame.c:2380 -#: builtin/blame.c:2381 builtin/config.c:55 builtin/fast-export.c:653 +#: archive.c:326 builtin/archive.c:91 builtin/blame.c:2366 +#: builtin/blame.c:2367 builtin/config.c:55 builtin/fast-export.c:653 #: builtin/fast-export.c:655 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 +#: builtin/ls-files.c:497 builtin/ls-files.c:500 builtin/notes.c:536 +#: builtin/notes.c:693 builtin/read-tree.c:107 parse-options.h:149 msgid "file" msgstr "Datei" @@ -117,7 +117,7 @@ msgstr "Projektarchiv" msgid "retrieve the archive from remote repository <repo>" msgstr "ruft das Archiv von externem Projektarchiv <Projektarchiv> ab" -#: archive.c:347 builtin/archive.c:95 builtin/notes.c:619 +#: archive.c:347 builtin/archive.c:95 builtin/notes.c:615 msgid "command" msgstr "Programm" @@ -127,10 +127,10 @@ msgstr "Pfad zum externen \"git-upload-archive\"-Programm" #: attr.c:259 msgid "" -"Negative patterns are forbidden in git attributes\n" +"Negative patterns are ignored in git attributes\n" "Use '\\!' for literal leading exclamation." msgstr "" -"Verneinende Muster sind in Git-Attributen verboten.\n" +"Verneinende Muster werden in Git-Attributen ignoriert.\n" "Benutzen Sie '\\!' für führende Ausrufezeichen." #: bundle.c:36 @@ -306,23 +306,23 @@ msgid_plural "%lu years ago" msgstr[0] "vor %lu Jahr" msgstr[1] "vor %lu Jahren" -#: diff.c:111 +#: diff.c:112 #, c-format msgid " Failed to parse dirstat cut-off percentage '%s'\n" msgstr "" " Fehler beim Parsen des abgeschnittenen \"dirstat\" Prozentsatzes '%s'\n" -#: diff.c:116 +#: diff.c:117 #, c-format msgid " Unknown dirstat parameter '%s'\n" msgstr " Unbekannter \"dirstat\" Parameter '%s'\n" -#: diff.c:194 +#: diff.c:210 #, c-format msgid "Unknown value for 'diff.submodule' config variable: '%s'" msgstr "Unbekannter Wert in Konfigurationsvariable 'diff.dirstat': '%s'" -#: diff.c:237 +#: diff.c:260 #, c-format msgid "" "Found errors in 'diff.dirstat' config variable:\n" @@ -331,7 +331,7 @@ msgstr "" "Fehler in 'diff.dirstat' Konfigurationsvariable gefunden:\n" "%s" -#: diff.c:3494 +#: diff.c:3468 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" @@ -340,12 +340,12 @@ msgstr "" "Fehler beim Parsen des --dirstat/-X Optionsparameters:\n" "%s" -#: diff.c:3508 +#: diff.c:3482 #, c-format msgid "Failed to parse --submodule option parameter: '%s'" msgstr "Fehler beim Parsen des --submodule Optionsparameters: '%s'" -#: gpg-interface.c:59 +#: gpg-interface.c:59 gpg-interface.c:127 msgid "could not run gpg." msgstr "konnte gpg nicht ausführen" @@ -357,6 +357,16 @@ msgstr "gpg hat die Daten nicht akzeptiert" msgid "gpg failed to sign the data" msgstr "gpg beim Signieren der Daten fehlgeschlagen" +#: gpg-interface.c:112 +#, c-format +msgid "could not create temporary file '%s': %s" +msgstr "konnte temporäre Datei '%s' nicht erstellen: %s" + +#: gpg-interface.c:115 +#, c-format +msgid "failed writing detached signature to '%s': %s" +msgstr "Fehler beim Schreiben der Signatur nach '%s': %s" + #: grep.c:1622 #, c-format msgid "'%s': unable to read %s" @@ -381,7 +391,11 @@ msgstr "Vorhandene Git-Kommandos in '%s'" msgid "git commands available from elsewhere on your $PATH" msgstr "Vorhandene Git-Kommandos irgendwo in Ihrem $PATH" -#: help.c:275 +#: help.c:235 +msgid "The most commonly used git commands are:" +msgstr "Die allgemein verwendeten Git-Kommandos sind:" + +#: help.c:292 #, c-format msgid "" "'%s' appears to be a git command, but we were not\n" @@ -390,11 +404,11 @@ msgstr "" "'%s' scheint ein git-Kommando zu sein, konnte aber\n" "nicht ausgeführt werden. Vielleicht ist git-%s fehlerhaft?" -#: help.c:332 +#: help.c:349 msgid "Uh oh. Your system reports no Git commands at all." msgstr "Uh oh. Keine Git-Kommandos auf Ihrem System vorhanden." -#: help.c:354 +#: help.c:371 #, c-format msgid "" "WARNING: You called a Git command named '%s', which does not exist.\n" @@ -403,17 +417,17 @@ msgstr "" "Warnung: Sie haben das nicht existierende Git-Kommando '%s' ausgeführt.\n" "Setze fort unter der Annahme, dass Sie '%s' gemeint haben" -#: help.c:359 +#: help.c:376 #, c-format msgid "in %0.1f seconds automatically..." msgstr "automatisch in %0.1f Sekunden..." -#: help.c:366 +#: help.c:383 #, c-format msgid "git: '%s' is not a git command. See 'git --help'." msgstr "git: '%s' ist kein Git-Kommando. Siehe 'git --help'." -#: help.c:370 +#: help.c:387 msgid "" "\n" "Did you mean this?" @@ -694,39 +708,53 @@ msgstr "Konnte Objekt '%s' nicht parsen." msgid "Unable to write index." msgstr "Konnte Bereitstellung nicht schreiben." -#: parse-options.c:485 +#: parse-options.c:489 msgid "..." msgstr "..." -#: parse-options.c:503 +#: parse-options.c:507 #, c-format msgid "usage: %s" msgstr "Verwendung: %s" #. TRANSLATORS: the colon here should align with the #. one in "usage: %s" translation -#: parse-options.c:507 +#: parse-options.c:511 #, c-format msgid " or: %s" msgstr " oder: %s" -#: parse-options.c:510 +#: parse-options.c:514 #, c-format msgid " %s" msgstr " %s" -#: remote.c:1686 +#: parse-options.c:548 +msgid "-NUM" +msgstr "-NUM" + +#: pathspec.c:83 +#, c-format +msgid "Path '%s' is in submodule '%.*s'" +msgstr "Pfad '%s' befindet sich in Unterprojekt '%.*s'" + +#: pathspec.c:99 +#, c-format +msgid "'%s' is beyond a symbolic link" +msgstr "'%s' ist über einem symbolischen Link" + +#: remote.c:1653 #, c-format msgid "Your branch is ahead of '%s' by %d commit.\n" msgid_plural "Your branch is ahead of '%s' by %d commits.\n" msgstr[0] "Ihr Zweig ist vor '%s' um %d Version.\n" msgstr[1] "Ihr Zweig ist vor '%s' um %d Versionen.\n" -#: remote.c:1692 +#: remote.c:1659 msgid " (use \"git push\" to publish your local commits)\n" msgstr " (benutzen Sie \"git push\" um lokalen Versionen herauszubringen)\n" -#: remote.c:1695 +#: remote.c:1662 #, c-format msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n" msgid_plural "" @@ -737,12 +765,12 @@ msgstr[1] "" "Ihr Zweig ist zu '%s' um %d Versionen hinterher, und kann vorgespult " "werden.\n" -#: remote.c:1703 +#: remote.c:1670 msgid " (use \"git pull\" to update your local branch)\n" msgstr "" " (benutzen Sie \"git pull\" um Ihren lokalen Zweig zu aktualisieren)\n" -#: remote.c:1706 +#: remote.c:1673 #, c-format msgid "" "Your branch and '%s' have diverged,\n" @@ -757,20 +785,20 @@ msgstr[1] "" "Ihr Zweig und '%s' sind divergiert,\n" "und haben jeweils %d und %d unterschiedliche Versionen.\n" -#: remote.c:1716 +#: remote.c:1683 msgid " (use \"git pull\" to merge the remote branch into yours)\n" msgstr "" " (benutzen Sie \"git pull\" um Ihren Zweig mit dem externen " "zusammenzuführen)\n" -#: sequencer.c:123 builtin/merge.c:761 builtin/merge.c:875 builtin/merge.c:985 -#: builtin/merge.c:995 +#: 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 "Konnte '%s' nicht zum Schreiben öffnen." -#: sequencer.c:125 builtin/merge.c:333 builtin/merge.c:764 builtin/merge.c:987 -#: builtin/merge.c:1000 +#: 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 "Konnte nicht nach '%s' schreiben." @@ -973,7 +1001,7 @@ msgstr "kann Zweigspitze (HEAD) nicht auflösen" msgid "cannot abort from a branch yet to be born" msgstr "kann nicht abbrechen: bin auf einem Zweig, der noch geboren wird" -#: sequencer.c:821 builtin/apply.c:4016 +#: sequencer.c:821 builtin/apply.c:4056 #, c-format msgid "cannot open %s: %s" msgstr "Kann %s nicht öffnen: %s" @@ -1202,160 +1230,185 @@ msgstr "nicht zusammengeführt: %s" msgid "bug: unhandled diff status %c" msgstr "Fehler: unbehandelter Differenz-Status %c" -#: wt-status.c:787 +#: wt-status.c:789 msgid "You have unmerged paths." msgstr "Sie haben nicht zusammengeführte Pfade." -#: wt-status.c:790 wt-status.c:914 +#: wt-status.c:792 wt-status.c:944 msgid " (fix conflicts and run \"git commit\")" msgstr " (beheben Sie die Konflikte und führen Sie \"git commit\" aus)" -#: wt-status.c:793 +#: wt-status.c:795 msgid "All conflicts fixed but you are still merging." msgstr "" "Alle Konflikte sind behoben, aber Sie sind immer noch beim Zusammenführen." -#: wt-status.c:796 +#: wt-status.c:798 msgid " (use \"git commit\" to conclude merge)" msgstr " (benutzen Sie \"git commit\" um die Zusammenführung abzuschließen)" -#: wt-status.c:806 +#: wt-status.c:808 msgid "You are in the middle of an am session." msgstr "Eine \"am\"-Sitzung ist im Gange." -#: wt-status.c:809 +#: wt-status.c:811 msgid "The current patch is empty." msgstr "Der aktuelle Patch ist leer." -#: wt-status.c:813 +#: wt-status.c:815 msgid " (fix conflicts and then run \"git am --resolved\")" msgstr "" " (beheben Sie die Konflikte und führen Sie dann \"git am --resolved\" aus)" -#: wt-status.c:815 +#: wt-status.c:817 msgid " (use \"git am --skip\" to skip this patch)" msgstr " (benutzen Sie \"git am --skip\" um diesen Patch auszulassen)" -#: wt-status.c:817 +#: wt-status.c:819 msgid " (use \"git am --abort\" to restore the original branch)" msgstr "" " (benutzen Sie \"git am --abort\" um den ursprünglichen Zweig " "wiederherzustellen)" -#: wt-status.c:875 wt-status.c:885 +#: wt-status.c:879 wt-status.c:896 +#, c-format +msgid "You are currently rebasing branch '%s' on '%s'." +msgstr "Sie sind gerade beim Neuaufbau von Zweig '%s' auf '%s'." + +#: wt-status.c:884 wt-status.c:901 msgid "You are currently rebasing." msgstr "Sie sind gerade beim Neuaufbau." -#: wt-status.c:878 +#: wt-status.c:887 msgid " (fix conflicts and then run \"git rebase --continue\")" msgstr "" " (beheben Sie die Konflikte und führen Sie dann \"git rebase --continue\" " "aus)" -#: wt-status.c:880 +#: wt-status.c:889 msgid " (use \"git rebase --skip\" to skip this patch)" msgstr " (benutzen Sie \"git rebase --skip\" um diesen Patch auszulassen)" -#: wt-status.c:882 +#: wt-status.c:891 msgid " (use \"git rebase --abort\" to check out the original branch)" msgstr "" " (benutzen Sie \"git rebase --abort\" um den ursprünglichen Zweig " "auszuchecken)" -#: wt-status.c:888 +#: wt-status.c:904 msgid " (all conflicts fixed: run \"git rebase --continue\")" msgstr " (alle Konflikte behoben: führen Sie \"git rebase --continue\" aus)" -#: wt-status.c:890 +#: wt-status.c:908 +#, c-format +msgid "" +"You are currently splitting a commit while rebasing branch '%s' on '%s'." +msgstr "" +"Sie teilen gerade eine Version auf, während ein Neuaufbau von Zweig '%s' auf " +"'%s' im Gange ist." + +#: wt-status.c:913 msgid "You are currently splitting a commit during a rebase." msgstr "Sie teilen gerade eine Version während eines Neuaufbaus auf." -#: wt-status.c:893 +#: wt-status.c:916 msgid " (Once your working directory is clean, run \"git rebase --continue\")" msgstr "" " (Sobald Ihr Arbeitsverzeichnis sauber ist, führen Sie \"git rebase --" "continue\" aus)" -#: wt-status.c:895 +#: wt-status.c:920 +#, c-format +msgid "You are currently editing a commit while rebasing branch '%s' on '%s'." +msgstr "" +"Sie editieren gerade eine Version während eines Neuaufbaus von Zweig '%s' " +"auf '%s'." + +#: wt-status.c:925 msgid "You are currently editing a commit during a rebase." msgstr "Sie editieren gerade eine Version während eines Neuaufbaus." -#: wt-status.c:898 +#: wt-status.c:928 msgid " (use \"git commit --amend\" to amend the current commit)" msgstr "" " (benutzen Sie \"git commit --amend\" um die aktuelle Version nachzubessern)" -#: wt-status.c:900 +#: wt-status.c:930 msgid "" " (use \"git rebase --continue\" once you are satisfied with your changes)" msgstr "" " (benutzen Sie \"git rebase --continue\" sobald Ihre Änderungen " "abgeschlossen sind)" -#: wt-status.c:910 +#: wt-status.c:940 msgid "You are currently cherry-picking." msgstr "Sie führen gerade \"cherry-pick\" aus." -#: wt-status.c:917 +#: wt-status.c:947 msgid " (all conflicts fixed: run \"git commit\")" msgstr " (alle Konflikte behoben: führen Sie \"git commit\" aus)" -#: wt-status.c:926 +#: wt-status.c:958 +#, c-format +msgid "You are currently bisecting branch '%s'." +msgstr "Sie sind gerade bei einer binären Suche in Zweig '%s'." + +#: wt-status.c:962 msgid "You are currently bisecting." -msgstr "Sie sind gerade beim Halbieren." +msgstr "Sie sind gerade bei einer binären Suche." -#: wt-status.c:929 +#: wt-status.c:965 msgid " (use \"git bisect reset\" to get back to the original branch)" msgstr "" " (benutzen Sie \"git bisect reset\" um zum ursprünglichen Zweig " "zurückzukehren)" -#: wt-status.c:980 +#: wt-status.c:1064 msgid "On branch " msgstr "Auf Zweig " -#: wt-status.c:987 +#: wt-status.c:1071 msgid "Not currently on any branch." msgstr "Im Moment auf keinem Zweig." -#: wt-status.c:999 +#: wt-status.c:1083 msgid "Initial commit" msgstr "Initiale Version" -#: wt-status.c:1013 +#: wt-status.c:1097 msgid "Untracked files" msgstr "Unbeobachtete Dateien" -#: wt-status.c:1015 +#: wt-status.c:1099 msgid "Ignored files" msgstr "Ignorierte Dateien" -#: wt-status.c:1017 +#: wt-status.c:1101 #, c-format msgid "Untracked files not listed%s" msgstr "Unbeobachtete Dateien nicht aufgelistet%s" -#: wt-status.c:1019 +#: wt-status.c:1103 msgid " (use -u option to show untracked files)" msgstr " (benutzen Sie die Option -u um unbeobachteten Dateien anzuzeigen)" -#: wt-status.c:1025 +#: wt-status.c:1109 msgid "No changes" msgstr "Keine Änderungen" -#: wt-status.c:1030 +#: wt-status.c:1114 #, c-format msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" msgstr "" "keine Änderungen zum Eintragen hinzugefügt (benutzen Sie \"git add\" und/" "oder \"git commit -a\")\n" -#: wt-status.c:1033 +#: wt-status.c:1117 #, c-format msgid "no changes added to commit\n" msgstr "keine Änderungen zum Eintragen hinzugefügt\n" -#: wt-status.c:1036 +#: wt-status.c:1120 #, c-format msgid "" "nothing added to commit but untracked files present (use \"git add\" to " @@ -1364,199 +1417,239 @@ msgstr "" "nichts zum Eintragen hinzugefügt, aber es gibt unbeobachtete Dateien " "(benutzen Sie \"git add\" zum Beobachten)\n" -#: wt-status.c:1039 +#: wt-status.c:1123 #, c-format msgid "nothing added to commit but untracked files present\n" msgstr "nichts zum Eintragen hinzugefügt, aber es gibt unbeobachtete Dateien\n" -#: wt-status.c:1042 +#: wt-status.c:1126 #, c-format msgid "nothing to commit (create/copy files and use \"git add\" to track)\n" msgstr "" "nichts einzutragen (Erstellen/Kopieren Sie Dateien und benutzen Sie \"git add" "\" zum Beobachten)\n" -#: wt-status.c:1045 wt-status.c:1050 +#: wt-status.c:1129 wt-status.c:1134 #, c-format msgid "nothing to commit\n" msgstr "nichts einzutragen\n" -#: wt-status.c:1048 +#: wt-status.c:1132 #, c-format msgid "nothing to commit (use -u to show untracked files)\n" msgstr "" "nichts einzutragen (benutzen Sie die Option -u, um unbeobachtete Dateien " "anzuzeigen)\n" -#: wt-status.c:1052 +#: wt-status.c:1136 #, c-format msgid "nothing to commit, working directory clean\n" msgstr "nichts einzutragen, Arbeitsverzeichnis sauber\n" -#: wt-status.c:1160 +#: wt-status.c:1244 msgid "HEAD (no branch)" msgstr "HEAD (kein Zweig)" -#: wt-status.c:1166 +#: wt-status.c:1250 msgid "Initial commit on " msgstr "Initiale Version auf " -#: wt-status.c:1181 +#: wt-status.c:1265 msgid "behind " msgstr "hinterher " -#: wt-status.c:1184 wt-status.c:1187 +#: wt-status.c:1268 wt-status.c:1271 msgid "ahead " msgstr "voraus " -#: wt-status.c:1189 +#: wt-status.c:1273 msgid ", behind " msgstr ", hinterher " -#: builtin/add.c:19 -msgid "git add [options] [--] <filepattern>..." -msgstr "git add [Optionen] [--] [<Dateimuster>...]" +#: compat/precompose_utf8.c:58 builtin/clone.c:341 +#, c-format +msgid "failed to unlink '%s'" +msgstr "Konnte '%s' nicht entfernen." + +#: builtin/add.c:20 +msgid "git add [options] [--] <pathspec>..." +msgstr "git add [Optionen] [--] [<Pfadspezifikation>...]" -#: builtin/add.c:62 +#: builtin/add.c:63 #, c-format msgid "unexpected diff status %c" msgstr "unerwarteter Differenz-Status %c" -#: builtin/add.c:67 builtin/commit.c:231 +#: builtin/add.c:68 builtin/commit.c:231 msgid "updating files failed" msgstr "Aktualisierung der Dateien fehlgeschlagen" -#: builtin/add.c:77 +#: builtin/add.c:78 #, c-format msgid "remove '%s'\n" msgstr "lösche '%s'\n" -#: builtin/add.c:176 -#, c-format -msgid "Path '%s' is in submodule '%.*s'" -msgstr "Pfad '%s' befindet sich in Unterprojekt '%.*s'" - -#: builtin/add.c:192 +#: builtin/add.c:148 msgid "Unstaged changes after refreshing the index:" msgstr "" "Nicht bereitgestellte Änderungen nach Aktualisierung der Bereitstellung:" -#: builtin/add.c:195 builtin/add.c:460 builtin/rm.c:275 +#: builtin/add.c:151 builtin/add.c:460 builtin/rm.c:275 #, c-format msgid "pathspec '%s' did not match any files" msgstr "Pfadspezifikation '%s' stimmt mit keinen Dateien überein" -#: builtin/add.c:209 -#, c-format -msgid "'%s' is beyond a symbolic link" -msgstr "'%s' ist über einem symbolischen Link" - -#: builtin/add.c:276 +#: builtin/add.c:234 msgid "Could not read the index" msgstr "Konnte die Bereitstellung nicht lesen" -#: builtin/add.c:286 +#: builtin/add.c:244 #, c-format msgid "Could not open '%s' for writing." msgstr "Konnte '%s' nicht zum Schreiben öffnen." -#: builtin/add.c:290 +#: builtin/add.c:248 msgid "Could not write patch" msgstr "Konnte Patch nicht schreiben" -#: builtin/add.c:295 +#: builtin/add.c:253 #, c-format msgid "Could not stat '%s'" msgstr "Konnte Verzeichnis '%s' nicht lesen" -#: builtin/add.c:297 +#: builtin/add.c:255 msgid "Empty patch. Aborted." msgstr "Leerer Patch. Abgebrochen." -#: builtin/add.c:303 +#: builtin/add.c:261 #, c-format msgid "Could not apply '%s'" msgstr "Konnte '%s' nicht anwenden." -#: builtin/add.c:313 +#: builtin/add.c:271 msgid "The following paths are ignored by one of your .gitignore files:\n" msgstr "" "Die folgenden Pfade werden durch eine Ihrer \".gitignore\" Dateien " "ignoriert:\n" -#: builtin/add.c:319 builtin/clean.c:160 builtin/fetch.c:78 builtin/mv.c:63 -#: builtin/prune-packed.c:76 builtin/push.c:396 builtin/remote.c:1253 +#: builtin/add.c:277 builtin/clean.c:161 builtin/fetch.c:78 builtin/mv.c:63 +#: builtin/prune-packed.c:76 builtin/push.c:425 builtin/remote.c:1253 #: builtin/rm.c:206 msgid "dry run" msgstr "Probelauf" -#: builtin/add.c:320 builtin/apply.c:4365 builtin/commit.c:1160 -#: builtin/count-objects.c:82 builtin/fsck.c:613 builtin/log.c:1522 -#: builtin/mv.c:62 builtin/read-tree.c:112 +#: builtin/add.c:278 builtin/apply.c:4405 builtin/check-ignore.c:19 +#: builtin/commit.c:1150 builtin/count-objects.c:82 builtin/fsck.c:613 +#: builtin/log.c:1522 builtin/mv.c:62 builtin/read-tree.c:112 msgid "be verbose" msgstr "erweiterte Ausgaben" -#: builtin/add.c:322 +#: builtin/add.c:280 msgid "interactive picking" msgstr "interaktives Auswählen" -#: builtin/add.c:323 builtin/checkout.c:1031 builtin/reset.c:258 +#: builtin/add.c:281 builtin/checkout.c:1031 builtin/reset.c:258 msgid "select hunks interactively" msgstr "interaktiv Bereiche auswählen" -#: builtin/add.c:324 +#: builtin/add.c:282 msgid "edit current diff and apply" msgstr "aktuelle Unterschiede editieren und anwenden" -#: builtin/add.c:325 +#: builtin/add.c:283 msgid "allow adding otherwise ignored files" msgstr "erlaubt das Hinzufügen andernfalls ignorierter Dateien" -#: builtin/add.c:326 +#: builtin/add.c:284 msgid "update tracked files" msgstr "aktualisiert beobachtete Dateien" -#: builtin/add.c:327 +#: builtin/add.c:285 msgid "record only the fact that the path will be added later" msgstr "speichert nur, dass der Pfad später hinzugefügt werden soll" -#: builtin/add.c:328 +#: builtin/add.c:286 msgid "add changes from all tracked and untracked files" msgstr "" "fügt Änderungen von allen beobachteten und unbeobachteten Dateien hinzu" -#: builtin/add.c:329 +#: builtin/add.c:287 msgid "don't add, only refresh the index" msgstr "fügt nichts hinzu, aktualisiert nur die Bereitstellung" -#: builtin/add.c:330 +#: builtin/add.c:288 msgid "just skip files which cannot be added because of errors" msgstr "" "überspringt Dateien, die aufgrund von Fehlern nicht hinzugefügt werden " "konnten" -#: builtin/add.c:331 +#: builtin/add.c:289 msgid "check if - even missing - files are ignored in dry run" msgstr "prüft ob - auch fehlende - Dateien im Probelauf ignoriert werden" -#: builtin/add.c:353 +#: builtin/add.c:311 #, c-format msgid "Use -f if you really want to add them.\n" msgstr "Verwenden Sie -f wenn Sie diese wirklich hinzufügen möchten.\n" -#: builtin/add.c:354 +#: builtin/add.c:312 msgid "no files added" msgstr "keine Dateien hinzugefügt" -#: builtin/add.c:360 +#: builtin/add.c:318 msgid "adding files failed" msgstr "Hinzufügen von Dateien fehlgeschlagen" -#: builtin/add.c:392 +#. +#. * To be consistent with "git add -p" and most Git +#. * commands, we should default to being tree-wide, but +#. * this is not the original behavior and can't be +#. * changed until users trained themselves not to type +#. * "git add -u" or "git add -A". For now, we warn and +#. * keep the old behavior. Later, this warning can be +#. * turned into a die(...), and eventually we may +#. * reallow the command with a new behavior. +#. +#: builtin/add.c:335 +#, c-format +msgid "" +"The behavior of 'git add %s (or %s)' with no path argument from a\n" +"subdirectory of the tree will change in Git 2.0 and should not be used " +"anymore.\n" +"To add content for the whole tree, run:\n" +"\n" +" git add %s :/\n" +" (or git add %s :/)\n" +"\n" +"To restrict the command to the current directory, run:\n" +"\n" +" git add %s .\n" +" (or git add %s .)\n" +"\n" +"With the current Git version, the command is restricted to the current " +"directory." +msgstr "" +"Das Verhalten von 'git add %s (oder %s)' ohne ein Pfad-Argument von\n" +"einem Unterverzeichnis aus wird in Git 2.0 geändert und sollte nicht\n" +"mehr verwendet werden.\n" +"Um Dateien des gesamten Projektverzeichnisses hinzuzufügen, führen Sie aus:\n" +"\n" +" git add %s :/\n" +" (oder git add %s :/)\n" +"\n" +"Zur Einschränkung auf das aktuelle Verzeichnis führen Sie aus:\n" +"\n" +" git add %s .\n" +" (oder git add %s .)\n" +"\n" +"Mit der aktuellen Version von Git ist das Kommando auf das aktuelle\n" +"Verzeichnis beschränkt." + +#: builtin/add.c:381 msgid "-A and -u are mutually incompatible" msgstr "Die Optionen -A und -u sind zueinander inkompatibel." -#: builtin/add.c:394 +#: builtin/add.c:383 msgid "Option --ignore-missing can only be used together with --dry-run" msgstr "" "Die Option --ignore-missing kann nur zusammen mit --dry-run verwendet werden." @@ -1571,12 +1664,12 @@ msgstr "Nichts spezifiziert, nichts hinzugefügt.\n" msgid "Maybe you wanted to say 'git add .'?\n" msgstr "Wollten Sie vielleicht 'git add .' sagen?\n" -#: builtin/add.c:421 builtin/clean.c:203 builtin/commit.c:291 builtin/mv.c:82 -#: builtin/rm.c:235 +#: builtin/add.c:421 builtin/check-ignore.c:67 builtin/clean.c:204 +#: builtin/commit.c:291 builtin/mv.c:82 builtin/rm.c:235 msgid "index file corrupt" msgstr "Bereitstellungsdatei beschädigt" -#: builtin/add.c:481 builtin/apply.c:4461 builtin/mv.c:229 builtin/rm.c:370 +#: builtin/add.c:481 builtin/apply.c:4501 builtin/mv.c:229 builtin/rm.c:370 msgid "Unable to write new index file" msgstr "Konnte neue Bereitstellungsdatei nicht schreiben." @@ -1633,17 +1726,17 @@ msgstr "" msgid "git apply: bad git-diff - expected /dev/null on line %d" msgstr "git apply: ungültiges 'git-diff' - erwartete /dev/null in Zeile %d" -#: builtin/apply.c:1420 +#: builtin/apply.c:1422 #, c-format msgid "recount: unexpected line: %.*s" msgstr "recount: unerwartete Zeile: %.*s" -#: builtin/apply.c:1477 +#: builtin/apply.c:1479 #, c-format msgid "patch fragment without header at line %d: %.*s" msgstr "Patch-Fragment ohne Kopfbereich bei Zeile %d: %.*s" -#: builtin/apply.c:1494 +#: builtin/apply.c:1496 #, c-format msgid "" "git diff header lacks filename information when removing %d leading pathname " @@ -1658,66 +1751,66 @@ msgstr[1] "" "Dem Kopfbereich von \"git diff\" fehlen Informationen zum Dateinamen, wenn " "%d vorangestellte Teile des Pfades entfernt werden (Zeile %d)" -#: builtin/apply.c:1654 +#: builtin/apply.c:1656 msgid "new file depends on old contents" msgstr "neue Datei hängt von alten Inhalten ab" -#: builtin/apply.c:1656 +#: builtin/apply.c:1658 msgid "deleted file still has contents" msgstr "entfernte Datei hat noch Inhalte" -#: builtin/apply.c:1682 +#: builtin/apply.c:1684 #, c-format msgid "corrupt patch at line %d" msgstr "fehlerhafter Patch bei Zeile %d" -#: builtin/apply.c:1718 +#: builtin/apply.c:1720 #, c-format msgid "new file %s depends on old contents" msgstr "neue Datei %s hängt von alten Inhalten ab" -#: builtin/apply.c:1720 +#: builtin/apply.c:1722 #, c-format msgid "deleted file %s still has contents" msgstr "entfernte Datei %s hat noch Inhalte" -#: builtin/apply.c:1723 +#: builtin/apply.c:1725 #, c-format msgid "** warning: file %s becomes empty but is not deleted" msgstr "** Warnung: Datei %s wird leer, aber nicht entfernt." -#: builtin/apply.c:1869 +#: builtin/apply.c:1871 #, c-format msgid "corrupt binary patch at line %d: %.*s" msgstr "fehlerhafter Binär-Patch bei Zeile %d: %.*s" #. there has to be one hunk (forward hunk) -#: builtin/apply.c:1898 +#: builtin/apply.c:1900 #, c-format msgid "unrecognized binary patch at line %d" msgstr "nicht erkannter Binär-Patch bei Zeile %d" -#: builtin/apply.c:1984 +#: builtin/apply.c:1986 #, c-format msgid "patch with only garbage at line %d" msgstr "Patch mit nutzlosen Informationen bei Zeile %d" -#: builtin/apply.c:2074 +#: builtin/apply.c:2076 #, c-format msgid "unable to read symlink %s" msgstr "konnte symbolische Verknüpfung %s nicht lesen" -#: builtin/apply.c:2078 +#: builtin/apply.c:2080 #, c-format msgid "unable to open or read %s" msgstr "konnte %s nicht öffnen oder lesen" -#: builtin/apply.c:2682 +#: builtin/apply.c:2684 #, c-format msgid "invalid start of line: '%c'" msgstr "Ungültiger Zeilenanfang: '%c'" -#: builtin/apply.c:2800 +#: builtin/apply.c:2802 #, c-format msgid "Hunk #%d succeeded at %d (offset %d line)." msgid_plural "Hunk #%d succeeded at %d (offset %d lines)." @@ -1725,12 +1818,12 @@ msgstr[0] "Patch-Bereich #%d erfolgreich angewendet bei %d (%d Zeile versetzt)" msgstr[1] "" "Patch-Bereich #%d erfolgreich angewendet bei %d (%d Zeilen versetzt)" -#: builtin/apply.c:2812 +#: builtin/apply.c:2814 #, c-format msgid "Context reduced to (%ld/%ld) to apply fragment at %d" msgstr "Kontext reduziert zu (%ld/%ld) um Patch-Bereich bei %d anzuwenden" -#: builtin/apply.c:2818 +#: builtin/apply.c:2820 #, c-format msgid "" "while searching for:\n" @@ -1739,340 +1832,340 @@ msgstr "" "bei der Suche nach:\n" "%.*s" -#: builtin/apply.c:2837 +#: builtin/apply.c:2839 #, c-format msgid "missing binary patch data for '%s'" msgstr "keine Daten in Binär-Patch für '%s'" -#: builtin/apply.c:2940 +#: builtin/apply.c:2942 #, c-format msgid "binary patch does not apply to '%s'" msgstr "Konnte Binär-Patch nicht auf '%s' anwenden" -#: builtin/apply.c:2946 +#: builtin/apply.c:2948 #, c-format msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)" msgstr "" "Binär-Patch für '%s' erzeugt falsches Ergebnis (erwartete %s, bekam %s)" -#: builtin/apply.c:2967 +#: builtin/apply.c:2969 #, c-format msgid "patch failed: %s:%ld" msgstr "Anwendung des Patches fehlgeschlagen: %s:%ld" -#: builtin/apply.c:3089 +#: builtin/apply.c:3091 #, c-format msgid "cannot checkout %s" msgstr "kann %s nicht auschecken" -#: builtin/apply.c:3134 builtin/apply.c:3143 builtin/apply.c:3187 +#: builtin/apply.c:3136 builtin/apply.c:3145 builtin/apply.c:3189 #, c-format msgid "read of %s failed" msgstr "Konnte %s nicht lesen" -#: builtin/apply.c:3167 builtin/apply.c:3389 +#: builtin/apply.c:3169 builtin/apply.c:3391 #, c-format msgid "path %s has been renamed/deleted" msgstr "Pfad %s wurde umbenannt/gelöscht" -#: builtin/apply.c:3248 builtin/apply.c:3403 +#: builtin/apply.c:3250 builtin/apply.c:3405 #, c-format msgid "%s: does not exist in index" msgstr "%s ist nicht bereitgestellt" -#: builtin/apply.c:3252 builtin/apply.c:3395 builtin/apply.c:3417 +#: builtin/apply.c:3254 builtin/apply.c:3397 builtin/apply.c:3419 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: builtin/apply.c:3257 builtin/apply.c:3411 +#: builtin/apply.c:3259 builtin/apply.c:3413 #, c-format msgid "%s: does not match index" msgstr "%s entspricht nicht der Bereitstellung" -#: builtin/apply.c:3359 +#: builtin/apply.c:3361 msgid "removal patch leaves file contents" msgstr "Lösch-Patch hinterlässt Dateiinhalte" -#: builtin/apply.c:3428 +#: builtin/apply.c:3430 #, c-format msgid "%s: wrong type" msgstr "%s: falscher Typ" -#: builtin/apply.c:3430 +#: builtin/apply.c:3432 #, c-format msgid "%s has type %o, expected %o" msgstr "%s ist vom Typ %o, erwartete %o" -#: builtin/apply.c:3531 +#: builtin/apply.c:3533 #, c-format msgid "%s: already exists in index" msgstr "%s ist bereits bereitgestellt" -#: builtin/apply.c:3534 +#: builtin/apply.c:3536 #, c-format msgid "%s: already exists in working directory" msgstr "%s existiert bereits im Arbeitsverzeichnis" -#: builtin/apply.c:3554 +#: builtin/apply.c:3556 #, c-format msgid "new mode (%o) of %s does not match old mode (%o)" msgstr "neuer Modus (%o) von %s entspricht nicht dem alten Modus (%o)" -#: builtin/apply.c:3559 +#: builtin/apply.c:3561 #, c-format msgid "new mode (%o) of %s does not match old mode (%o) of %s" msgstr "neuer Modus (%o) von %s entspricht nicht dem alten Modus (%o) von %s" -#: builtin/apply.c:3567 +#: builtin/apply.c:3569 #, c-format msgid "%s: patch does not apply" msgstr "%s: Patch konnte nicht angewendet werden" -#: builtin/apply.c:3580 +#: builtin/apply.c:3582 #, c-format msgid "Checking patch %s..." msgstr "Prüfe Patch %s..." -#: builtin/apply.c:3635 builtin/checkout.c:215 builtin/reset.c:124 +#: builtin/apply.c:3675 builtin/checkout.c:215 builtin/reset.c:124 #, c-format msgid "make_cache_entry failed for path '%s'" msgstr "make_cache_entry für Pfad '%s' fehlgeschlagen" -#: builtin/apply.c:3778 +#: builtin/apply.c:3818 #, c-format msgid "unable to remove %s from index" msgstr "konnte %s nicht aus der Bereitstellung entfernen" -#: builtin/apply.c:3806 +#: builtin/apply.c:3846 #, c-format msgid "corrupt patch for subproject %s" msgstr "fehlerhafter Patch für Unterprojekt %s" -#: builtin/apply.c:3810 +#: builtin/apply.c:3850 #, c-format msgid "unable to stat newly created file '%s'" msgstr "konnte neu erstellte Datei '%s' nicht lesen" -#: builtin/apply.c:3815 +#: builtin/apply.c:3855 #, c-format msgid "unable to create backing store for newly created file %s" msgstr "kann internen Speicher für eben erstellte Datei %s nicht erzeugen" -#: builtin/apply.c:3818 builtin/apply.c:3926 +#: builtin/apply.c:3858 builtin/apply.c:3966 #, c-format msgid "unable to add cache entry for %s" msgstr "kann für %s keinen Eintrag in den Zwischenspeicher hinzufügen" -#: builtin/apply.c:3851 +#: builtin/apply.c:3891 #, c-format msgid "closing file '%s'" msgstr "schließe Datei '%s'" -#: builtin/apply.c:3900 +#: builtin/apply.c:3940 #, c-format msgid "unable to write file '%s' mode %o" msgstr "konnte Datei '%s' mit Modus %o nicht schreiben" -#: builtin/apply.c:3987 +#: builtin/apply.c:4027 #, c-format msgid "Applied patch %s cleanly." msgstr "Patch %s sauber angewendet" -#: builtin/apply.c:3995 +#: builtin/apply.c:4035 msgid "internal error" msgstr "interner Fehler" #. Say this even without --verbose -#: builtin/apply.c:3998 +#: builtin/apply.c:4038 #, c-format msgid "Applying patch %%s with %d reject..." msgid_plural "Applying patch %%s with %d rejects..." msgstr[0] "Wende Patch %%s mit %d Zurückweisung an..." msgstr[1] "Wende Patch %%s mit %d Zurückweisungen an..." -#: builtin/apply.c:4008 +#: builtin/apply.c:4048 #, c-format msgid "truncating .rej filename to %.*s.rej" msgstr "Verkürze Name von .rej Datei zu %.*s.rej" -#: builtin/apply.c:4029 +#: builtin/apply.c:4069 #, c-format msgid "Hunk #%d applied cleanly." msgstr "Patch-Bereich #%d sauber angewendet." -#: builtin/apply.c:4032 +#: builtin/apply.c:4072 #, c-format msgid "Rejected hunk #%d." msgstr "Patch-Bereich #%d zurückgewiesen." -#: builtin/apply.c:4182 +#: builtin/apply.c:4222 msgid "unrecognized input" msgstr "nicht erkannte Eingabe" -#: builtin/apply.c:4193 +#: builtin/apply.c:4233 msgid "unable to read index file" msgstr "Konnte Bereitstellungsdatei nicht lesen" -#: builtin/apply.c:4312 builtin/apply.c:4315 builtin/clone.c:91 +#: builtin/apply.c:4352 builtin/apply.c:4355 builtin/clone.c:91 #: builtin/fetch.c:63 msgid "path" msgstr "Pfad" -#: builtin/apply.c:4313 +#: builtin/apply.c:4353 msgid "don't apply changes matching the given path" msgstr "wendet keine Änderungen im angegebenen Pfad an" -#: builtin/apply.c:4316 +#: builtin/apply.c:4356 msgid "apply changes matching the given path" msgstr "wendet Änderungen nur im angegebenen Pfad an" -#: builtin/apply.c:4318 +#: builtin/apply.c:4358 msgid "num" msgstr "Anzahl" -#: builtin/apply.c:4319 +#: builtin/apply.c:4359 msgid "remove <num> leading slashes from traditional diff paths" msgstr "" "entfernt <Anzahl> vorangestellte Schrägstriche von herkömmlichen " "Differenzpfaden" -#: builtin/apply.c:4322 +#: builtin/apply.c:4362 msgid "ignore additions made by the patch" msgstr "ignoriert hinzugefügte Zeilen des Patches" -#: builtin/apply.c:4324 +#: builtin/apply.c:4364 msgid "instead of applying the patch, output diffstat for the input" msgstr "" "anstatt der Anwendung des Patches, wird der \"diffstat\" für die Eingabe " "ausgegeben" -#: builtin/apply.c:4328 +#: builtin/apply.c:4368 msgid "show number of added and deleted lines in decimal notation" msgstr "" "zeigt die Anzahl von hinzugefügten/entfernten Zeilen in Dezimalnotation" -#: builtin/apply.c:4330 +#: builtin/apply.c:4370 msgid "instead of applying the patch, output a summary for the input" msgstr "" "anstatt der Anwendung des Patches, wird eine Zusammenfassung für die Eingabe " "ausgegeben" -#: builtin/apply.c:4332 +#: builtin/apply.c:4372 msgid "instead of applying the patch, see if the patch is applicable" msgstr "" "anstatt der Anwendung des Patches, zeige ob Patch angewendet werden kann" -#: builtin/apply.c:4334 +#: builtin/apply.c:4374 msgid "make sure the patch is applicable to the current index" msgstr "" "stellt sicher, dass der Patch in der aktuellen Bereitstellung angewendet " "werden kann" -#: builtin/apply.c:4336 +#: builtin/apply.c:4376 msgid "apply a patch without touching the working tree" msgstr "wendet einen Patch an, ohne Änderungen im Arbeitszweig vorzunehmen" -#: builtin/apply.c:4338 +#: builtin/apply.c:4378 msgid "also apply the patch (use with --stat/--summary/--check)" msgstr "wendet den Patch an (Benutzung mit --stat/--summary/--check)" -#: builtin/apply.c:4340 +#: builtin/apply.c:4380 msgid "attempt three-way merge if a patch does not apply" msgstr "" "versucht 3-Wege-Zusammenführung, wenn der Patch nicht angewendet werden " "konnte" -#: builtin/apply.c:4342 +#: builtin/apply.c:4382 msgid "build a temporary index based on embedded index information" msgstr "" "erstellt eine temporäre Bereitstellung basierend auf den integrierten " "Bereitstellungsinformationen" -#: builtin/apply.c:4344 builtin/checkout-index.c:197 builtin/ls-files.c:460 +#: builtin/apply.c:4384 builtin/checkout-index.c:197 builtin/ls-files.c:463 msgid "paths are separated with NUL character" msgstr "Pfade sind getrennt durch NUL Zeichen" -#: builtin/apply.c:4347 +#: builtin/apply.c:4387 msgid "ensure at least <n> lines of context match" msgstr "stellt sicher, dass mindestens <n> Zeilen des Kontextes übereinstimmen" -#: builtin/apply.c:4348 +#: builtin/apply.c:4388 msgid "action" msgstr "Aktion" -#: builtin/apply.c:4349 +#: builtin/apply.c:4389 msgid "detect new or modified lines that have whitespace errors" msgstr "ermittelt neue oder geänderte Zeilen die Fehler in Leerzeichen haben" -#: builtin/apply.c:4352 builtin/apply.c:4355 +#: builtin/apply.c:4392 builtin/apply.c:4395 msgid "ignore changes in whitespace when finding context" msgstr "ignoriert Änderungen in Leerzeichen bei der Suche des Kontextes" -#: builtin/apply.c:4358 +#: builtin/apply.c:4398 msgid "apply the patch in reverse" msgstr "wendet den Patch in umgekehrter Reihenfolge an" -#: builtin/apply.c:4360 +#: builtin/apply.c:4400 msgid "don't expect at least one line of context" msgstr "erwartet keinen Kontext" -#: builtin/apply.c:4362 +#: builtin/apply.c:4402 msgid "leave the rejected hunks in corresponding *.rej files" msgstr "" "hinterlässt zurückgewiesene Patch-Bereiche in den entsprechenden *.rej " "Dateien" -#: builtin/apply.c:4364 +#: builtin/apply.c:4404 msgid "allow overlapping hunks" msgstr "erlaubt sich überlappende Patch-Bereiche" -#: builtin/apply.c:4367 +#: builtin/apply.c:4407 msgid "tolerate incorrectly detected missing new-line at the end of file" msgstr "toleriert fehlerhaft erkannten fehlenden Zeilenumbruch am Dateiende" -#: builtin/apply.c:4370 +#: builtin/apply.c:4410 msgid "do not trust the line counts in the hunk headers" msgstr "vertraut nicht den Zeilennummern im Kopf des Patch-Bereiches" -#: builtin/apply.c:4372 +#: builtin/apply.c:4412 msgid "root" msgstr "Wurzelverzeichnis" -#: builtin/apply.c:4373 +#: builtin/apply.c:4413 msgid "prepend <root> to all filenames" msgstr "stellt <Wurzelverzeichnis> vor alle Dateinamen" -#: builtin/apply.c:4395 +#: builtin/apply.c:4435 msgid "--3way outside a repository" msgstr "" "Die Option --3way kann nicht außerhalb eines Projektarchivs verwendet werden." -#: builtin/apply.c:4403 +#: builtin/apply.c:4443 msgid "--index outside a repository" msgstr "" "Die Option --index kann nicht außerhalb eines Projektarchivs verwendet " "werden." -#: builtin/apply.c:4406 +#: builtin/apply.c:4446 msgid "--cached outside a repository" msgstr "" "Die Option --cached kann nicht außerhalb eines Projektarchivs verwendet " "werden." -#: builtin/apply.c:4422 +#: builtin/apply.c:4462 #, c-format msgid "can't open patch '%s'" msgstr "kann Patch '%s' nicht öffnen" -#: builtin/apply.c:4436 +#: builtin/apply.c:4476 #, c-format msgid "squelched %d whitespace error" msgid_plural "squelched %d whitespace errors" msgstr[0] "unterdrückte %d Fehler in Leerzeichen" msgstr[1] "unterdrückte %d Fehler in Leerzeichen" -#: builtin/apply.c:4442 builtin/apply.c:4452 +#: builtin/apply.c:4482 builtin/apply.c:4492 #, c-format msgid "%d line adds whitespace errors." msgid_plural "%d lines add whitespace errors." @@ -2134,96 +2227,96 @@ msgstr "git blame [Optionen] [rev-opts] [rev] [--] Datei" msgid "[rev-opts] are documented in git-rev-list(1)" msgstr "[rev-opts] sind dokumentiert in git-rev-list(1)" -#: builtin/blame.c:2364 +#: builtin/blame.c:2350 msgid "Show blame entries as we find them, incrementally" msgstr "Zeigt \"blame\"-Einträge schrittweise, während wir sie generieren" -#: builtin/blame.c:2365 +#: builtin/blame.c:2351 msgid "Show blank SHA-1 for boundary commits (Default: off)" msgstr "Zeigt leere SHA-1 für Grenzversionen (Standard: aus)" -#: builtin/blame.c:2366 +#: builtin/blame.c:2352 msgid "Do not treat root commits as boundaries (Default: off)" msgstr "Behandelt Ursprungsversionen nicht als Grenzen (Standard: aus)" -#: builtin/blame.c:2367 +#: builtin/blame.c:2353 msgid "Show work cost statistics" msgstr "Zeigt Statistiken zum Arbeitsaufwand" -#: builtin/blame.c:2368 +#: builtin/blame.c:2354 msgid "Show output score for blame entries" msgstr "Zeigt Ausgabebewertung für \"blame\"-Einträge" -#: builtin/blame.c:2369 +#: builtin/blame.c:2355 msgid "Show original filename (Default: auto)" msgstr "Zeigt ursprünglichen Dateinamen (Standard: auto)" -#: builtin/blame.c:2370 +#: builtin/blame.c:2356 msgid "Show original linenumber (Default: off)" msgstr "Zeigt ursprüngliche Zeilennummer (Standard: aus)" -#: builtin/blame.c:2371 +#: builtin/blame.c:2357 msgid "Show in a format designed for machine consumption" msgstr "Anzeige in einem Format für maschinelle Auswertung" -#: builtin/blame.c:2372 +#: builtin/blame.c:2358 msgid "Show porcelain format with per-line commit information" msgstr "" "Anzeige in Format für Fremdprogramme mit Versionsinformationen pro Zeile" -#: builtin/blame.c:2373 +#: builtin/blame.c:2359 msgid "Use the same output mode as git-annotate (Default: off)" msgstr "Benutzt den gleichen Ausgabemodus wie \"git-annotate\" (Standard: aus)" -#: builtin/blame.c:2374 +#: builtin/blame.c:2360 msgid "Show raw timestamp (Default: off)" msgstr "Zeigt unbearbeiteten Zeitstempel (Standard: aus)" -#: builtin/blame.c:2375 +#: builtin/blame.c:2361 msgid "Show long commit SHA1 (Default: off)" msgstr "Zeigt langen Versions-SHA1 (Standard: aus)" -#: builtin/blame.c:2376 +#: builtin/blame.c:2362 msgid "Suppress author name and timestamp (Default: off)" msgstr "Unterdrückt den Namen des Autors und den Zeitstempel (Standard: aus)" -#: builtin/blame.c:2377 +#: builtin/blame.c:2363 msgid "Show author email instead of name (Default: off)" msgstr "Zeigt anstatt des Namens die Email-Adresse des Autors (Standard: aus)" -#: builtin/blame.c:2378 +#: builtin/blame.c:2364 msgid "Ignore whitespace differences" msgstr "Ignoriert Unterschiede in Leerzeichen" -#: builtin/blame.c:2379 +#: builtin/blame.c:2365 msgid "Spend extra cycles to find better match" msgstr "arbeite länger, um bessere Übereinstimmungen zu finden" -#: builtin/blame.c:2380 +#: builtin/blame.c:2366 msgid "Use revisions from <file> instead of calling git-rev-list" msgstr "Benutzt Revisionen von <Datei> anstatt \"git-rev-list\" aufzurufen" -#: builtin/blame.c:2381 +#: builtin/blame.c:2367 msgid "Use <file>'s contents as the final image" msgstr "Benutzt Inhalte der <Datei>en als entgültiges Abbild" -#: builtin/blame.c:2382 builtin/blame.c:2383 +#: builtin/blame.c:2368 builtin/blame.c:2369 msgid "score" msgstr "Bewertung" -#: builtin/blame.c:2382 +#: builtin/blame.c:2368 msgid "Find line copies within and across files" msgstr "Findet kopierte Zeilen innerhalb oder zwischen Dateien" -#: builtin/blame.c:2383 +#: builtin/blame.c:2369 msgid "Find line movements within and across files" msgstr "Findet verschobene Zeilen innerhalb oder zwischen Dateien" -#: builtin/blame.c:2384 +#: builtin/blame.c:2370 msgid "n,m" msgstr "n,m" -#: builtin/blame.c:2384 +#: builtin/blame.c:2370 msgid "Process only line range n,m, counting from 1" msgstr "Verarbeitet nur Zeilen im Bereich n,m, gezählt von 1" @@ -2360,10 +2453,19 @@ msgstr "[%s: %d voraus, %d hinterher]" msgid "[ahead %d, behind %d]" msgstr "[%d voraus, %d hinterher]" +#: builtin/branch.c:469 +msgid " **** invalid ref ****" +msgstr " **** ungültige Referenz ****" + #: builtin/branch.c:560 msgid "(no branch)" msgstr "(kein Zweig)" +#: builtin/branch.c:593 +#, c-format +msgid "object '%s' does not point to a commit" +msgstr "Objekt '%s' zeigt auf keine Version" + #: builtin/branch.c:625 msgid "some refs could not be read" msgstr "Konnte einige Referenzen nicht lesen" @@ -2437,8 +2539,8 @@ msgid "act on remote-tracking branches" msgstr "wirkt auf externe Übernahmezweige" #: builtin/branch.c:761 builtin/branch.c:767 builtin/branch.c:788 -#: builtin/branch.c:794 builtin/commit.c:1378 builtin/commit.c:1379 -#: builtin/commit.c:1380 builtin/commit.c:1381 builtin/tag.c:470 +#: builtin/branch.c:794 builtin/commit.c:1366 builtin/commit.c:1367 +#: builtin/commit.c:1368 builtin/commit.c:1369 builtin/tag.c:468 msgid "commit" msgstr "Version" @@ -2507,27 +2609,54 @@ msgstr "Konnte Zweigspitze (HEAD) nicht als gültige Referenz auflösen." msgid "HEAD not found below refs/heads!" msgstr "Zweigspitze (HEAD) wurde nicht unter \"refs/heads\" gefunden!" -#: builtin/branch.c:836 +#: builtin/branch.c:839 msgid "--column and --verbose are incompatible" msgstr "Die Optionen --column und --verbose sind inkompatibel." -#: builtin/branch.c:887 +#: builtin/branch.c:845 +msgid "branch name required" +msgstr "Zweigname erforderlich" + +#: builtin/branch.c:860 +msgid "Cannot give description to detached HEAD" +msgstr "" +"zu losgelöster Zweigspitze (HEAD) kann keine Beschreibung hinterlegt werden" + +#: builtin/branch.c:865 +msgid "cannot edit description of more than one branch" +msgstr "Beschreibung von mehr als einem Zweig kann nicht bearbeitet werden" + +#: builtin/branch.c:872 +#, c-format +msgid "No commit on branch '%s' yet." +msgstr "Noch keine Version in Zweig '%s'." + +#: builtin/branch.c:875 +#, c-format +msgid "No branch named '%s'." +msgstr "Zweig '%s' nicht vorhanden." + +#: builtin/branch.c:888 +msgid "too many branches for a rename operation" +msgstr "zu viele Zweige für eine Umbenennen-Operation angegeben" + +#: builtin/branch.c:893 #, c-format msgid "branch '%s' does not exist" msgstr "Zweig '%s' existiert nicht" -#: builtin/branch.c:899 +#: builtin/branch.c:905 #, c-format msgid "Branch '%s' has no upstream information" msgstr "Zweig '%s' hat keinen externen Übernahmezweig gesetzt" -#: builtin/branch.c:914 +#: builtin/branch.c:920 msgid "-a and -r options to 'git branch' do not make sense with a branch name" msgstr "" "Die Optionen -a und -r bei 'git branch' können nicht gemeimsam mit einem " "Zweignamen verwendet werden." -#: builtin/branch.c:917 +#: builtin/branch.c:923 #, c-format msgid "" "The --set-upstream flag is deprecated and will be removed. Consider using --" @@ -2536,7 +2665,7 @@ msgstr "" "Die --set-upstream Option ist veraltet und wird entfernt. Benutzen Sie --" "track oder --set-upstream-to\n" -#: builtin/branch.c:934 +#: builtin/branch.c:940 #, c-format msgid "" "\n" @@ -2547,12 +2676,12 @@ msgstr "" "Wenn Sie wollten, dass '%s' den Zweig '%s' als externen Übernahmezweig hat, " "führen Sie aus:\n" -#: builtin/branch.c:935 +#: builtin/branch.c:941 #, c-format msgid " git branch -d %s\n" msgstr " git branch -d %s\n" -#: builtin/branch.c:936 +#: builtin/branch.c:942 #, c-format msgid " git branch --set-upstream-to %s\n" msgstr " git branch --set-upstream-to %s\n" @@ -2630,14 +2759,39 @@ msgstr "gibt alle Attribute einer Datei aus" msgid "use .gitattributes only from the index" msgstr "verwendet .gitattributes nur von der Bereitstellung" -#: builtin/check-attr.c:21 builtin/hash-object.c:75 +#: builtin/check-attr.c:21 builtin/check-ignore.c:22 builtin/hash-object.c:75 msgid "read file names from stdin" msgstr "liest Dateinamen von der Standard-Eingabe" -#: builtin/check-attr.c:23 +#: builtin/check-attr.c:23 builtin/check-ignore.c:24 msgid "input paths are terminated by a null character" msgstr "Eingabepfade sind durch ein NUL Zeichen abgeschlossen" +#: builtin/check-ignore.c:18 builtin/checkout.c:1012 builtin/gc.c:177 +msgid "suppress progress reporting" +msgstr "unterdrückt Fortschrittsanzeige" + +#: builtin/check-ignore.c:151 +msgid "cannot specify pathnames with --stdin" +msgstr "Angabe von Pfadnamen kann nicht gemeinsam mit --stdin verwendet werden" + +#: builtin/check-ignore.c:154 +msgid "-z only makes sense with --stdin" +msgstr "Die Option -z kann nur mit --stdin verwendet werden." + +#: builtin/check-ignore.c:156 +msgid "no path specified" +msgstr "kein Pfad angegeben" + +#: builtin/check-ignore.c:160 +msgid "--quiet is only valid with a single pathname" +msgstr "Die Option --quiet ist nur mit einem einzelnen Pfadnamen gültig." + +#: builtin/check-ignore.c:162 +msgid "cannot have both --quiet and --verbose" +msgstr "" +"Die Optionen --quiet und --verbose können nicht gemeinsam verwendet werden." + #: builtin/checkout-index.c:126 msgid "git checkout-index [options] [--] [<file>...]" msgstr "git checkout-index [Optionen] [--] [<Datei>...]" @@ -2874,10 +3028,6 @@ msgstr "'%s' kann nicht mit '%s' verwendet werden" msgid "Cannot switch branch to a non-commit '%s'" msgstr "Kann Zweig nicht zu Nicht-Version '%s' wechseln" -#: builtin/checkout.c:1012 builtin/gc.c:177 -msgid "suppress progress reporting" -msgstr "unterdrückt Fortschrittsanzeige" - #: builtin/checkout.c:1013 builtin/checkout.c:1015 builtin/clone.c:89 #: builtin/remote.c:169 builtin/remote.c:171 msgid "branch" @@ -3011,47 +3161,47 @@ msgstr "Würde Projektarchiv %s überspringen\n" msgid "failed to remove %s" msgstr "Fehler beim Löschen von %s" -#: builtin/clean.c:159 +#: builtin/clean.c:160 msgid "do not print names of files removed" msgstr "gibt keine Namen von gelöschten Dateien aus" -#: builtin/clean.c:161 +#: builtin/clean.c:162 msgid "force" msgstr "erzwingt Aktion" -#: builtin/clean.c:163 +#: builtin/clean.c:164 msgid "remove whole directories" msgstr "löscht ganze Verzeichnisse" -#: builtin/clean.c:164 builtin/describe.c:413 builtin/grep.c:717 -#: builtin/ls-files.c:491 builtin/name-rev.c:231 builtin/show-ref.c:182 +#: builtin/clean.c:165 builtin/describe.c:413 builtin/grep.c:717 +#: builtin/ls-files.c:494 builtin/name-rev.c:231 builtin/show-ref.c:182 msgid "pattern" msgstr "Muster" -#: builtin/clean.c:165 +#: builtin/clean.c:166 msgid "add <pattern> to ignore rules" msgstr "fügt <Muster> zu den Regeln für ignorierte Pfade hinzu" -#: builtin/clean.c:166 +#: builtin/clean.c:167 msgid "remove ignored files, too" msgstr "löscht auch ignorierte Dateien" -#: builtin/clean.c:168 +#: builtin/clean.c:169 msgid "remove only ignored files" msgstr "löscht nur ignorierte Dateien" -#: builtin/clean.c:186 +#: builtin/clean.c:187 msgid "-x and -X cannot be used together" msgstr "Die Optionen -x und -X können nicht gemeinsam verwendet werden." -#: builtin/clean.c:190 +#: builtin/clean.c:191 msgid "" "clean.requireForce set to true and neither -n nor -f given; refusing to clean" msgstr "" "clean.requireForce auf \"true\" gesetzt und weder -n noch -f gegeben; " "Säuberung verweigert" -#: builtin/clean.c:193 +#: builtin/clean.c:194 msgid "" "clean.requireForce defaults to true and neither -n nor -f given; refusing to " "clean" @@ -3064,7 +3214,7 @@ msgid "git clone [options] [--] <repo> [<dir>]" msgstr "git clone [Optionen] [--] <Projektarchiv> [<Verzeichnis>]" #: builtin/clone.c:64 builtin/fetch.c:82 builtin/merge.c:212 -#: builtin/push.c:407 +#: builtin/push.c:436 msgid "force progress reporting" msgstr "erzwingt Fortschrittsanzeige" @@ -3178,11 +3328,6 @@ msgstr "%s existiert und ist kein Verzeichnis" msgid "failed to stat %s\n" msgstr "Konnte %s nicht lesen\n" -#: builtin/clone.c:341 -#, c-format -msgid "failed to unlink '%s'" -msgstr "Konnte '%s' nicht entfernen" - #: builtin/clone.c:346 #, c-format msgid "failed to create link '%s'" @@ -3247,7 +3392,7 @@ msgstr "Zielpfad '%s' existiert bereits und ist kein leeres Verzeichnis." msgid "working tree '%s' already exists." msgstr "Arbeitsbaum '%s' existiert bereits." -#: builtin/clone.c:759 builtin/clone.c:773 +#: builtin/clone.c:759 builtin/clone.c:771 #, c-format msgid "could not create leading directories of '%s'" msgstr "Konnte führende Verzeichnisse von '%s' nicht erstellen." @@ -3257,27 +3402,27 @@ msgstr "Konnte führende Verzeichnisse von '%s' nicht erstellen." msgid "could not create work tree dir '%s'." msgstr "Konnte Arbeitsverzeichnis '%s' nicht erstellen." -#: builtin/clone.c:783 +#: builtin/clone.c:781 #, c-format msgid "Cloning into bare repository '%s'...\n" msgstr "Klone in bloßes Projektarchiv '%s'...\n" -#: builtin/clone.c:785 +#: builtin/clone.c:783 #, c-format msgid "Cloning into '%s'...\n" msgstr "Klone nach '%s'...\n" -#: builtin/clone.c:827 +#: builtin/clone.c:818 #, c-format msgid "Don't know how to clone %s" msgstr "Weiß nicht wie %s zu klonen ist." -#: builtin/clone.c:876 +#: builtin/clone.c:867 #, c-format msgid "Remote branch %s not found in upstream %s" msgstr "externer Zweig %s nicht im anderen Projektarchiv %s gefunden" -#: builtin/clone.c:883 +#: builtin/clone.c:874 msgid "You appear to have cloned an empty repository." msgstr "Sie scheinen ein leeres Projektarchiv geklont zu haben." @@ -3314,12 +3459,12 @@ msgid "--command must be the first argument" msgstr "Die Option --command muss an erster Stelle stehen." #: builtin/commit.c:34 -msgid "git commit [options] [--] <filepattern>..." -msgstr "git commit [Optionen] [--] <Dateimuster>..." +msgid "git commit [options] [--] <pathspec>..." +msgstr "git commit [Optionen] [--] <Pfadspezifikation>..." #: builtin/commit.c:39 -msgid "git status [options] [--] <filepattern>..." -msgstr "git status [Optionen] [--] <Dateimuster>..." +msgid "git status [options] [--] <pathspec>..." +msgstr "git status [Optionen] [--] <Pfadspezifikation>..." #: builtin/commit.c:44 msgid "" @@ -3495,23 +3640,26 @@ msgstr "" "und versuchen Sie es erneut.\n" #: builtin/commit.c:735 +#, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" -"with '#' will be ignored, and an empty message aborts the commit.\n" +"with '%c' will be ignored, and an empty message aborts the commit.\n" msgstr "" "Bitte geben Sie eine Versionsbeschreibung für Ihre Änderungen ein. Zeilen,\n" -"die mit '#' beginnen, werden ignoriert, und eine leere Versionsbeschreibung\n" +"die mit '%c' beginnen, werden ignoriert, und eine leere " +"Versionsbeschreibung\n" "bricht die Eintragung ab.\n" #: builtin/commit.c:740 +#, c-format 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" +"with '%c' will be kept; you may remove them yourself if you want to.\n" "An empty message aborts the commit.\n" msgstr "" "Bitte geben Sie eine Versionsbeschreibung für Ihre Änderungen ein. Zeilen, " "die\n" -"mit '#' beginnen, werden beibehalten; wenn Sie möchten, können Sie diese " +"mit '%c' beginnen, werden beibehalten; wenn Sie möchten, können Sie diese " "entfernen.\n" "Eine leere Versionsbeschreibung bricht die Eintragung ab.\n" @@ -3533,7 +3681,7 @@ msgstr "Kann Bereitstellung nicht lesen" msgid "Error building trees" msgstr "Fehler beim Erzeugen der Zweige" -#: builtin/commit.c:832 builtin/tag.c:361 +#: builtin/commit.c:832 builtin/tag.c:359 #, c-format msgid "Please supply the message using either -m or -F option.\n" msgstr "Bitte liefere eine Beschreibung entweder mit der Option -m oder -F.\n" @@ -3543,123 +3691,123 @@ msgstr "Bitte liefere eine Beschreibung entweder mit der Option -m oder -F.\n" msgid "No existing author found with '%s'" msgstr "Kein existierender Autor mit '%s' gefunden." -#: builtin/commit.c:944 builtin/commit.c:1148 +#: builtin/commit.c:944 builtin/commit.c:1138 #, c-format msgid "Invalid untracked files mode '%s'" msgstr "Ungültiger Modus '%s' für unbeobachtete Dateien" -#: builtin/commit.c:984 +#: builtin/commit.c:974 msgid "Using both --reset-author and --author does not make sense" msgstr "" "Die Optionen --reset-author und --author können nicht gemeinsam verwendet " "werden." -#: builtin/commit.c:995 +#: builtin/commit.c:985 msgid "You have nothing to amend." msgstr "Sie haben nichts zum nachbessern." -#: builtin/commit.c:998 +#: builtin/commit.c:988 msgid "You are in the middle of a merge -- cannot amend." msgstr "Eine Zusammenführung ist im Gange -- kann nicht nachbessern." -#: builtin/commit.c:1000 +#: builtin/commit.c:990 msgid "You are in the middle of a cherry-pick -- cannot amend." msgstr "\"cherry-pick\" ist im Gange -- kann nicht nachbessern." -#: builtin/commit.c:1003 +#: builtin/commit.c:993 msgid "Options --squash and --fixup cannot be used together" msgstr "" "Die Optionen --squash und --fixup können nicht gemeinsam verwendet werden." -#: builtin/commit.c:1013 +#: builtin/commit.c:1003 msgid "Only one of -c/-C/-F/--fixup can be used." msgstr "Es kann nur eine Option von -c/-C/-F/--fixup verwendet werden." -#: builtin/commit.c:1015 +#: builtin/commit.c:1005 msgid "Option -m cannot be combined with -c/-C/-F/--fixup." msgstr "Die Option -m kann nicht mit -c/-C/-F/--fixup kombiniert werden." -#: builtin/commit.c:1023 +#: builtin/commit.c:1013 msgid "--reset-author can be used only with -C, -c or --amend." msgstr "" "Die Option --reset--author kann nur mit -C, -c oder --amend verwendet werden." -#: builtin/commit.c:1040 +#: builtin/commit.c:1030 msgid "Only one of --include/--only/--all/--interactive/--patch can be used." msgstr "" "Es kann nur eine Option von --include/--only/--all/--interactive/--patch " "verwendet werden." -#: builtin/commit.c:1042 +#: builtin/commit.c:1032 msgid "No paths with --include/--only does not make sense." msgstr "" "Die Optionen --include und --only können nur mit der Angabe von Pfaden " "verwendet werden." -#: builtin/commit.c:1044 +#: builtin/commit.c:1034 msgid "Clever... amending the last one with dirty index." msgstr "" "Klug... die letzte Version mit einer unsauberen Bereitstellung nachbessern." -#: builtin/commit.c:1046 +#: builtin/commit.c:1036 msgid "Explicit paths specified without -i nor -o; assuming --only paths..." msgstr "" "Explizite Pfade ohne -i oder -o angegeben; unter der Annahme von --only " "Pfaden..." -#: builtin/commit.c:1056 builtin/tag.c:577 +#: builtin/commit.c:1046 builtin/tag.c:575 #, c-format msgid "Invalid cleanup mode %s" msgstr "Ungültiger \"cleanup\" Modus %s" -#: builtin/commit.c:1061 +#: builtin/commit.c:1051 msgid "Paths with -a does not make sense." msgstr "Die Option -a kann nur mit der Angabe von Pfaden verwendet werden." -#: builtin/commit.c:1067 builtin/commit.c:1202 +#: builtin/commit.c:1057 builtin/commit.c:1192 msgid "--long and -z are incompatible" msgstr "Die Optionen --long und -z sind inkompatibel." -#: builtin/commit.c:1162 builtin/commit.c:1400 +#: builtin/commit.c:1152 builtin/commit.c:1388 msgid "show status concisely" msgstr "zeigt Status im Kurzformat" -#: builtin/commit.c:1164 builtin/commit.c:1402 +#: builtin/commit.c:1154 builtin/commit.c:1390 msgid "show branch information" msgstr "zeigt Zweiginformationen" -#: builtin/commit.c:1166 builtin/commit.c:1404 builtin/push.c:397 +#: builtin/commit.c:1156 builtin/commit.c:1392 builtin/push.c:426 msgid "machine-readable output" msgstr "maschinenlesbare Ausgabe" -#: builtin/commit.c:1169 builtin/commit.c:1406 +#: builtin/commit.c:1159 builtin/commit.c:1394 msgid "show status in long format (default)" msgstr "zeigt Status im Langformat (Standard)" -#: builtin/commit.c:1172 builtin/commit.c:1409 +#: builtin/commit.c:1162 builtin/commit.c:1397 msgid "terminate entries with NUL" msgstr "schließt Einträge mit NUL-Zeichen ab" -#: builtin/commit.c:1174 builtin/commit.c:1412 builtin/fast-export.c:647 -#: builtin/fast-export.c:650 builtin/tag.c:461 +#: builtin/commit.c:1164 builtin/commit.c:1400 builtin/fast-export.c:647 +#: builtin/fast-export.c:650 builtin/tag.c:459 msgid "mode" msgstr "Modus" -#: builtin/commit.c:1175 builtin/commit.c:1412 +#: builtin/commit.c:1165 builtin/commit.c:1400 msgid "show untracked files, optional modes: all, normal, no. (Default: all)" msgstr "" "zeigt nicht beobachtete Dateien, optionale Modi: all, normal, no. (Standard: " "all)" -#: builtin/commit.c:1178 +#: builtin/commit.c:1168 msgid "show ignored files" msgstr "zeigt ignorierte Dateien" -#: builtin/commit.c:1179 parse-options.h:151 +#: builtin/commit.c:1169 parse-options.h:151 msgid "when" msgstr "wann" -#: builtin/commit.c:1180 +#: builtin/commit.c:1170 msgid "" "ignore changes to submodules, optional when: all, dirty, untracked. " "(Default: all)" @@ -3667,219 +3815,219 @@ msgstr "" "ignoriert Änderungen in Unterprojekten, optional wenn: all, dirty, " "untracked. (Standard: all)" -#: builtin/commit.c:1182 +#: builtin/commit.c:1172 msgid "list untracked files in columns" msgstr "listet unbeobachtete Dateien in Spalten auf" -#: builtin/commit.c:1256 +#: builtin/commit.c:1246 msgid "couldn't look up newly created commit" msgstr "Konnte neu erstellte Version nicht nachschlagen." -#: builtin/commit.c:1258 +#: builtin/commit.c:1248 msgid "could not parse newly created commit" msgstr "Konnte neulich erstellte Version nicht analysieren." -#: builtin/commit.c:1299 +#: builtin/commit.c:1289 msgid "detached HEAD" msgstr "losgelöste Zweigspitze (HEAD)" -#: builtin/commit.c:1301 +#: builtin/commit.c:1291 msgid " (root-commit)" msgstr " (Basis-Version)" -#: builtin/commit.c:1370 +#: builtin/commit.c:1358 msgid "suppress summary after successful commit" msgstr "unterdrückt Zusammenfassung nach erfolgreicher Eintragung" -#: builtin/commit.c:1371 +#: builtin/commit.c:1359 msgid "show diff in commit message template" msgstr "zeigt Unterschiede in Versionsbeschreibungsvorlage an" -#: builtin/commit.c:1373 +#: builtin/commit.c:1361 msgid "Commit message options" msgstr "Optionen für Versionsbeschreibung" -#: builtin/commit.c:1374 builtin/tag.c:459 +#: builtin/commit.c:1362 builtin/tag.c:457 msgid "read message from file" msgstr "liest Beschreibung von Datei" -#: builtin/commit.c:1375 +#: builtin/commit.c:1363 msgid "author" msgstr "Autor" -#: builtin/commit.c:1375 +#: builtin/commit.c:1363 msgid "override author for commit" msgstr "überschreibt Autor von Version" -#: builtin/commit.c:1376 builtin/gc.c:178 +#: builtin/commit.c:1364 builtin/gc.c:178 msgid "date" msgstr "Datum" -#: builtin/commit.c:1376 +#: builtin/commit.c:1364 msgid "override date for commit" msgstr "überschreibt Datum von Version" -#: builtin/commit.c:1377 builtin/merge.c:206 builtin/notes.c:537 -#: builtin/notes.c:694 builtin/tag.c:457 +#: builtin/commit.c:1365 builtin/merge.c:206 builtin/notes.c:533 +#: builtin/notes.c:690 builtin/tag.c:455 msgid "message" msgstr "Beschreibung" -#: builtin/commit.c:1377 +#: builtin/commit.c:1365 msgid "commit message" msgstr "Versionsbeschreibung" -#: builtin/commit.c:1378 +#: builtin/commit.c:1366 msgid "reuse and edit message from specified commit" msgstr "verwendet wieder und editiert Beschreibung von der angegebenen Version" -#: builtin/commit.c:1379 +#: builtin/commit.c:1367 msgid "reuse message from specified commit" msgstr "verwendet Beschreibung der angegebenen Version wieder" -#: builtin/commit.c:1380 +#: builtin/commit.c:1368 msgid "use autosquash formatted message to fixup specified commit" msgstr "" "verwendet eine automatisch zusammengesetzte Beschreibung zum Nachbessern der " "angegebenen Version" -#: builtin/commit.c:1381 +#: builtin/commit.c:1369 msgid "use autosquash formatted message to squash specified commit" msgstr "" "verwendet eine automatisch zusammengesetzte Beschreibung zum Zusammenführen " "der angegebenen Version" -#: builtin/commit.c:1382 +#: builtin/commit.c:1370 msgid "the commit is authored by me now (used with -C/-c/--amend)" msgstr "Setzt Sie als Autor der Version (verwendet mit -C/-c/--amend)" -#: builtin/commit.c:1383 builtin/log.c:1102 builtin/revert.c:109 +#: builtin/commit.c:1371 builtin/log.c:1102 builtin/revert.c:109 msgid "add Signed-off-by:" msgstr "fügt 'Signed-off-by:'-Zeile hinzu" -#: builtin/commit.c:1384 +#: builtin/commit.c:1372 msgid "use specified template file" msgstr "verwendet angegebene Vorlagendatei" -#: builtin/commit.c:1385 +#: builtin/commit.c:1373 msgid "force edit of commit" msgstr "erzwingt Bearbeitung der Version" -#: builtin/commit.c:1386 +#: builtin/commit.c:1374 msgid "default" msgstr "Standard" -#: builtin/commit.c:1386 builtin/tag.c:462 +#: builtin/commit.c:1374 builtin/tag.c:460 msgid "how to strip spaces and #comments from message" msgstr "" "wie Leerzeichen und #Kommentare von der Beschreibung getrennt werden sollen" -#: builtin/commit.c:1387 +#: builtin/commit.c:1375 msgid "include status in commit message template" msgstr "fügt Status in die Versionsbeschreibungsvorlage ein" -#: builtin/commit.c:1388 builtin/merge.c:213 builtin/tag.c:463 +#: builtin/commit.c:1376 builtin/merge.c:213 builtin/tag.c:461 msgid "key id" msgstr "Schlüssel-ID" -#: builtin/commit.c:1389 builtin/merge.c:214 +#: builtin/commit.c:1377 builtin/merge.c:214 msgid "GPG sign commit" msgstr "signiert Version mit GPG" #. end commit message options -#: builtin/commit.c:1392 +#: builtin/commit.c:1380 msgid "Commit contents options" msgstr "Optionen für Versionsinhalt" -#: builtin/commit.c:1393 +#: builtin/commit.c:1381 msgid "commit all changed files" msgstr "trägt alle geänderten Dateien ein" -#: builtin/commit.c:1394 +#: builtin/commit.c:1382 msgid "add specified files to index for commit" msgstr "trägt die angegebenen Dateien zusätzlich zur Bereitstellung ein" -#: builtin/commit.c:1395 +#: builtin/commit.c:1383 msgid "interactively add files" msgstr "interaktives Hinzufügen von Dateien" -#: builtin/commit.c:1396 +#: builtin/commit.c:1384 msgid "interactively add changes" msgstr "interaktives Hinzufügen von Änderungen" -#: builtin/commit.c:1397 +#: builtin/commit.c:1385 msgid "commit only specified files" msgstr "trägt nur die angegebenen Dateien ein" -#: builtin/commit.c:1398 +#: builtin/commit.c:1386 msgid "bypass pre-commit hook" msgstr "umgeht \"pre-commit hook\"" -#: builtin/commit.c:1399 +#: builtin/commit.c:1387 msgid "show what would be committed" msgstr "zeigt an, was eingetragen werden würde" -#: builtin/commit.c:1410 +#: builtin/commit.c:1398 msgid "amend previous commit" msgstr "ändert vorherige Version" -#: builtin/commit.c:1411 +#: builtin/commit.c:1399 msgid "bypass post-rewrite hook" msgstr "umgeht \"post-rewrite hook\"" -#: builtin/commit.c:1416 +#: builtin/commit.c:1404 msgid "ok to record an empty change" msgstr "erlaubt Aufzeichnung einer leeren Änderung" -#: builtin/commit.c:1419 +#: builtin/commit.c:1407 msgid "ok to record a change with an empty message" msgstr "erlaubt Aufzeichnung einer Änderung mit einer leeren Beschreibung" -#: builtin/commit.c:1451 +#: builtin/commit.c:1439 msgid "could not parse HEAD commit" msgstr "Konnte Version der Zweigspitze (HEAD) nicht analysieren." -#: builtin/commit.c:1489 builtin/merge.c:508 +#: builtin/commit.c:1477 builtin/merge.c:508 #, c-format msgid "could not open '%s' for reading" msgstr "Konnte '%s' nicht zum Lesen öffnen." -#: builtin/commit.c:1496 +#: builtin/commit.c:1484 #, c-format msgid "Corrupt MERGE_HEAD file (%s)" msgstr "Beschädigte MERGE_HEAD-Datei (%s)" -#: builtin/commit.c:1503 +#: builtin/commit.c:1491 msgid "could not read MERGE_MODE" msgstr "Konnte MERGE_MODE nicht lesen" -#: builtin/commit.c:1522 +#: builtin/commit.c:1510 #, c-format msgid "could not read commit message: %s" msgstr "Konnte Versionsbeschreibung nicht lesen: %s" -#: builtin/commit.c:1536 +#: builtin/commit.c:1524 #, c-format msgid "Aborting commit; you did not edit the message.\n" msgstr "Eintragung abgebrochen; Sie haben die Beschreibung nicht editiert.\n" -#: builtin/commit.c:1541 +#: builtin/commit.c:1529 #, c-format msgid "Aborting commit due to empty commit message.\n" msgstr "Eintragung aufgrund leerer Versionsbeschreibung abgebrochen.\n" -#: builtin/commit.c:1556 builtin/merge.c:833 builtin/merge.c:858 +#: builtin/commit.c:1544 builtin/merge.c:832 builtin/merge.c:857 msgid "failed to write commit object" msgstr "Fehler beim Schreiben des Versionsobjektes." -#: builtin/commit.c:1577 +#: builtin/commit.c:1565 msgid "cannot lock HEAD ref" msgstr "Kann Referenz der Zweigspitze (HEAD) nicht sperren." -#: builtin/commit.c:1581 +#: builtin/commit.c:1569 msgid "cannot update HEAD ref" msgstr "Kann Referenz der Zweigspitze (HEAD) nicht aktualisieren." -#: builtin/commit.c:1592 +#: builtin/commit.c:1580 msgid "" "Repository has been updated, but unable to write\n" "new_index file. Check that disk is not full or quota is\n" @@ -4291,88 +4439,92 @@ msgstr "erlaubt Aktualisierung der \"HEAD\"-Referenz" msgid "deepen history of shallow clone" msgstr "vertieft die Historie eines flachen Klon" -#: builtin/fetch.c:85 builtin/log.c:1119 +#: builtin/fetch.c:86 +msgid "convert to a complete repository" +msgstr "konvertiert zu einem vollständigen Projektarchiv" + +#: builtin/fetch.c:88 builtin/log.c:1119 msgid "dir" msgstr "Verzeichnis" -#: builtin/fetch.c:86 +#: builtin/fetch.c:89 msgid "prepend this to submodule path output" msgstr "stellt dies an die Ausgabe der Unterprojekt-Pfade voran" -#: builtin/fetch.c:89 +#: builtin/fetch.c:92 msgid "default mode for recursion" msgstr "Standard-Modus für Rekursion" -#: builtin/fetch.c:201 +#: builtin/fetch.c:204 msgid "Couldn't find remote ref HEAD" msgstr "Konnte externe Referenz der Zweigspitze (HEAD) nicht finden." -#: builtin/fetch.c:254 +#: builtin/fetch.c:257 #, c-format msgid "object %s not found" msgstr "Objekt %s nicht gefunden" -#: builtin/fetch.c:259 +#: builtin/fetch.c:262 msgid "[up to date]" msgstr "[aktuell]" -#: builtin/fetch.c:273 +#: builtin/fetch.c:276 #, c-format msgid "! %-*s %-*s -> %s (can't fetch in current branch)" msgstr "! %-*s %-*s -> %s (kann nicht im aktuellen Zweig anfordern)" -#: builtin/fetch.c:274 builtin/fetch.c:360 +#: builtin/fetch.c:277 builtin/fetch.c:363 msgid "[rejected]" msgstr "[zurückgewiesen]" -#: builtin/fetch.c:285 +#: builtin/fetch.c:288 msgid "[tag update]" msgstr "[Markierungsaktualisierung]" -#: builtin/fetch.c:287 builtin/fetch.c:322 builtin/fetch.c:340 +#: builtin/fetch.c:290 builtin/fetch.c:325 builtin/fetch.c:343 msgid " (unable to update local ref)" msgstr " (kann lokale Referenz nicht aktualisieren)" -#: builtin/fetch.c:305 +#: builtin/fetch.c:308 msgid "[new tag]" msgstr "[neue Markierung]" -#: builtin/fetch.c:308 +#: builtin/fetch.c:311 msgid "[new branch]" msgstr "[neuer Zweig]" -#: builtin/fetch.c:311 +#: builtin/fetch.c:314 msgid "[new ref]" msgstr "[neue Referenz]" -#: builtin/fetch.c:356 +#: builtin/fetch.c:359 msgid "unable to update local ref" msgstr "kann lokale Referenz nicht aktualisieren" -#: builtin/fetch.c:356 +#: builtin/fetch.c:359 msgid "forced update" msgstr "Aktualisierung erzwungen" -#: builtin/fetch.c:362 +#: builtin/fetch.c:365 msgid "(non-fast-forward)" msgstr "(kein Vorspulen)" -#: builtin/fetch.c:393 builtin/fetch.c:685 +#: builtin/fetch.c:396 builtin/fetch.c:688 #, c-format msgid "cannot open %s: %s\n" msgstr "kann %s nicht öffnen: %s\n" -#: builtin/fetch.c:402 +#: builtin/fetch.c:405 #, c-format msgid "%s did not send all necessary objects\n" msgstr "%s hat nicht alle erforderlichen Objekte gesendet\n" -#: builtin/fetch.c:488 +#: builtin/fetch.c:491 #, c-format msgid "From %.*s\n" msgstr "Von %.*s\n" -#: builtin/fetch.c:499 +#: builtin/fetch.c:502 #, c-format msgid "" "some local refs could not be updated; try running\n" @@ -4381,57 +4533,57 @@ msgstr "" "Einige lokale Referenzen konnten nicht aktualisiert werden; versuchen Sie\n" "'git remote prune %s' um jeden älteren, widersprüchlichen Zweig zu löschen." -#: builtin/fetch.c:549 +#: builtin/fetch.c:552 #, c-format msgid " (%s will become dangling)" msgstr " (%s wird unreferenziert)" -#: builtin/fetch.c:550 +#: builtin/fetch.c:553 #, c-format msgid " (%s has become dangling)" msgstr " (%s wurde unreferenziert)" -#: builtin/fetch.c:557 +#: builtin/fetch.c:560 msgid "[deleted]" msgstr "[gelöscht]" -#: builtin/fetch.c:558 builtin/remote.c:1055 +#: builtin/fetch.c:561 builtin/remote.c:1055 msgid "(none)" msgstr "(nichts)" -#: builtin/fetch.c:675 +#: builtin/fetch.c:678 #, c-format msgid "Refusing to fetch into current branch %s of non-bare repository" msgstr "" "Das Anfordern in den aktuellen Zweig %s von einem nicht-bloßen Projektarchiv " "wurde verweigert." -#: builtin/fetch.c:709 +#: builtin/fetch.c:712 #, c-format msgid "Don't know how to fetch from %s" msgstr "Weiß nicht wie von %s angefordert wird." -#: builtin/fetch.c:786 +#: builtin/fetch.c:789 #, c-format msgid "Option \"%s\" value \"%s\" is not valid for %s" msgstr "Option \"%s\" Wert \"%s\" ist nicht gültig für %s" -#: builtin/fetch.c:789 +#: builtin/fetch.c:792 #, c-format msgid "Option \"%s\" is ignored for %s\n" msgstr "Option \"%s\" wird ignoriert für %s\n" -#: builtin/fetch.c:891 +#: builtin/fetch.c:894 #, c-format msgid "Fetching %s\n" msgstr "Fordere an von %s\n" -#: builtin/fetch.c:893 builtin/remote.c:100 +#: builtin/fetch.c:896 builtin/remote.c:100 #, c-format msgid "Could not fetch %s" msgstr "Konnte nicht von %s anfordern" -#: builtin/fetch.c:912 +#: builtin/fetch.c:915 msgid "" "No remote repository specified. Please, specify either a URL or a\n" "remote name from which new revisions should be fetched." @@ -4440,24 +4592,35 @@ msgstr "" "oder den Namen des externen Archivs an, von welchem neue\n" "Revisionen angefordert werden sollen." -#: builtin/fetch.c:932 +#: builtin/fetch.c:935 msgid "You need to specify a tag name." msgstr "Sie müssen den Namen der Markierung angeben." -#: builtin/fetch.c:984 +#: builtin/fetch.c:981 +msgid "--depth and --unshallow cannot be used together" +msgstr "" +"Die Optionen --depth und --unshallow können nicht gemeinsam verwendet werden." + +#: builtin/fetch.c:983 +msgid "--unshallow on a complete repository does not make sense" +msgstr "" +"Die Option --unshallow kann nicht in einem vollständigen Projektarchiv " +"verwendet werden." + +#: builtin/fetch.c:1002 msgid "fetch --all does not take a repository argument" msgstr "fetch --all akzeptiert kein Projektarchiv als Argument" -#: builtin/fetch.c:986 +#: builtin/fetch.c:1004 msgid "fetch --all does not make sense with refspecs" msgstr "fetch --all kann nicht mit Referenzspezifikationen verwendet werden." -#: builtin/fetch.c:997 +#: builtin/fetch.c:1015 #, c-format msgid "No such remote or remote group: %s" msgstr "Kein externes Archiv (einzeln oder Gruppe): %s" -#: builtin/fetch.c:1005 +#: builtin/fetch.c:1023 msgid "Fetching a group and specifying refspecs does not make sense" msgstr "" "Das Abholen einer Gruppe von externen Archiven kann nicht mit der Angabe\n" @@ -4470,7 +4633,7 @@ msgstr "" #: builtin/fmt-merge-msg.c:659 builtin/fmt-merge-msg.c:662 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:239 +#: builtin/tag.c:446 parse-options.h:133 parse-options.h:239 msgid "n" msgstr "Anzahl" @@ -4835,31 +4998,31 @@ msgstr "keine Muster angegeben" msgid "bad object %s" msgstr "ungültiges Objekt %s" -#: builtin/grep.c:866 +#: builtin/grep.c:868 msgid "--open-files-in-pager only works on the worktree" msgstr "" "Die Option --open-files-in-pager kann nur innerhalb des Arbeitsbaums " "verwendet werden." -#: builtin/grep.c:889 +#: builtin/grep.c:891 msgid "--cached or --untracked cannot be used with --no-index." msgstr "" "Die Optionen --cached und --untracked können nicht mit --no-index verwendet " "werden." -#: builtin/grep.c:894 +#: builtin/grep.c:896 msgid "--no-index or --untracked cannot be used with revs." msgstr "" "Die Optionen --no-index und --untracked können nicht mit Versionen verwendet " "werden." -#: builtin/grep.c:897 +#: builtin/grep.c:899 msgid "--[no-]exclude-standard cannot be used for tracked contents." msgstr "" "Die Option --[no-]exclude-standard kann nicht mit beobachteten Inhalten " "verwendet werden." -#: builtin/grep.c:905 +#: builtin/grep.c:907 msgid "both --cached and trees are given." msgstr "Die Option --cached kann nicht mit Zweigen verwendet werden." @@ -4899,50 +5062,50 @@ msgstr "speichert Datei wie sie ist, ohne Filter" msgid "process file as it were from this path" msgstr "verarbeitet Datei, als ob sie von diesem Pfad wäre" -#: builtin/help.c:43 +#: builtin/help.c:42 msgid "print all available commands" msgstr "Anzeige aller vorhandenen Kommandos" -#: builtin/help.c:44 +#: builtin/help.c:43 msgid "show man page" msgstr "zeigt Handbuch" -#: builtin/help.c:45 +#: builtin/help.c:44 msgid "show manual in web browser" msgstr "zeigt Handbuch in einem Webbrowser" -#: builtin/help.c:47 +#: builtin/help.c:46 msgid "show info page" msgstr "zeigt Info-Seite" -#: builtin/help.c:53 +#: builtin/help.c:52 msgid "git help [--all] [--man|--web|--info] [command]" msgstr "git help [--all] [--man|--web|--info] [Kommando]" -#: builtin/help.c:65 +#: builtin/help.c:64 #, c-format msgid "unrecognized help format '%s'" msgstr "nicht erkanntes Hilfeformat: %s" -#: builtin/help.c:93 +#: builtin/help.c:92 msgid "Failed to start emacsclient." msgstr "Konnte emacsclient nicht starten." -#: builtin/help.c:106 +#: builtin/help.c:105 msgid "Failed to parse emacsclient version." msgstr "Konnte Version des emacsclient nicht parsen." -#: builtin/help.c:114 +#: builtin/help.c:113 #, c-format msgid "emacsclient version '%d' too old (< 22)." msgstr "Version des emacsclient '%d' ist zu alt (< 22)." -#: builtin/help.c:132 builtin/help.c:160 builtin/help.c:169 builtin/help.c:177 +#: builtin/help.c:131 builtin/help.c:159 builtin/help.c:168 builtin/help.c:176 #, c-format msgid "failed to exec '%s': %s" msgstr "Fehler beim Ausführen von '%s': %s" -#: builtin/help.c:217 +#: builtin/help.c:216 #, c-format msgid "" "'%s': path for unsupported man viewer.\n" @@ -4951,7 +5114,7 @@ msgstr "" "'%s': Pfad für nicht unterstützten Handbuchbetrachter.\n" "Sie könnten stattdessen 'man.<Werkzeug>.cmd' benutzen." -#: builtin/help.c:229 +#: builtin/help.c:228 #, c-format msgid "" "'%s': cmd for supported man viewer.\n" @@ -4960,29 +5123,25 @@ msgstr "" "'%s': Kommando für unterstützten Handbuchbetrachter.\n" "Sie könnten stattdessen 'man.<Werkzeug>.path' benutzen." -#: builtin/help.c:299 -msgid "The most commonly used git commands are:" -msgstr "Die allgemein verwendeten Git-Kommandos sind:" - -#: builtin/help.c:367 +#: builtin/help.c:349 #, c-format msgid "'%s': unknown man viewer." msgstr "'%s': unbekannter Handbuch-Betrachter." -#: builtin/help.c:384 +#: builtin/help.c:366 msgid "no man viewer handled the request" msgstr "kein Handbuch-Betrachter konnte mit dieser Anfrage umgehen" -#: builtin/help.c:392 +#: builtin/help.c:374 msgid "no info viewer handled the request" msgstr "kein Informations-Betrachter konnte mit dieser Anfrage umgehen" -#: builtin/help.c:447 builtin/help.c:454 +#: builtin/help.c:429 builtin/help.c:436 #, c-format msgid "usage: %s%s" msgstr "Verwendung: %s%s" -#: builtin/help.c:470 +#: builtin/help.c:452 #, c-format msgid "`git %s' is aliased to `%s'" msgstr "für `git %s' wurde der Alias `%s' angelegt" @@ -5683,100 +5842,100 @@ msgstr "" msgid "Unknown commit %s" msgstr "Unbekannte Version %s" -#: builtin/ls-files.c:408 +#: builtin/ls-files.c:409 msgid "git ls-files [options] [<file>...]" msgstr "git ls-files [Optionen] [<Datei>...]" -#: builtin/ls-files.c:463 +#: builtin/ls-files.c:466 msgid "identify the file status with tags" msgstr "zeigt den Dateistatus mit Markierungen" -#: builtin/ls-files.c:465 +#: builtin/ls-files.c:468 msgid "use lowercase letters for 'assume unchanged' files" msgstr "" "verwendet Kleinbuchstaben für Dateien mit 'assume unchanged' Markierung" -#: builtin/ls-files.c:467 +#: builtin/ls-files.c:470 msgid "show cached files in the output (default)" msgstr "zeigt zwischengespeicherten Dateien in der Ausgabe an (Standard)" -#: builtin/ls-files.c:469 +#: builtin/ls-files.c:472 msgid "show deleted files in the output" msgstr "zeigt entfernte Dateien in der Ausgabe an" -#: builtin/ls-files.c:471 +#: builtin/ls-files.c:474 msgid "show modified files in the output" msgstr "zeigt geänderte Dateien in der Ausgabe an" -#: builtin/ls-files.c:473 +#: builtin/ls-files.c:476 msgid "show other files in the output" msgstr "zeigt sonstige Dateien in der Ausgabe an" -#: builtin/ls-files.c:475 +#: builtin/ls-files.c:478 msgid "show ignored files in the output" msgstr "zeigt ignorierte Dateien in der Ausgabe an" -#: builtin/ls-files.c:478 +#: builtin/ls-files.c:481 msgid "show staged contents' object name in the output" msgstr "zeigt Objektnamen von Inhalten in der Bereitstellung in der Ausgabe an" -#: builtin/ls-files.c:480 +#: builtin/ls-files.c:483 msgid "show files on the filesystem that need to be removed" msgstr "zeigt Dateien im Dateisystem, die gelöscht werden müssen, an" -#: builtin/ls-files.c:482 +#: builtin/ls-files.c:485 msgid "show 'other' directories' name only" msgstr "zeigt nur Namen von 'sonstigen' Verzeichnissen an" -#: builtin/ls-files.c:485 +#: builtin/ls-files.c:488 msgid "don't show empty directories" msgstr "zeigt keine leeren Verzeichnisse an" -#: builtin/ls-files.c:488 +#: builtin/ls-files.c:491 msgid "show unmerged files in the output" msgstr "zeigt nicht zusammengeführte Dateien in der Ausgabe an" -#: builtin/ls-files.c:490 +#: builtin/ls-files.c:493 msgid "show resolve-undo information" msgstr "zeigt 'resolve-undo' Informationen an" -#: builtin/ls-files.c:492 +#: builtin/ls-files.c:495 msgid "skip files matching pattern" msgstr "lässt Dateien aus, die einem Muster entsprechen" -#: builtin/ls-files.c:495 +#: builtin/ls-files.c:498 msgid "exclude patterns are read from <file>" msgstr "schließt Muster, gelesen von <Datei>, aus" -#: builtin/ls-files.c:498 +#: builtin/ls-files.c:501 msgid "read additional per-directory exclude patterns in <file>" msgstr "liest zusätzliche pro-Verzeichnis Auschlussmuster aus <Datei>" -#: builtin/ls-files.c:500 +#: builtin/ls-files.c:503 msgid "add the standard git exclusions" msgstr "fügt die standardmäßigen Git-Ausschlüsse hinzu" -#: builtin/ls-files.c:503 +#: builtin/ls-files.c:506 msgid "make the output relative to the project top directory" msgstr "Ausgabe relativ zum Projektverzeichnis" -#: builtin/ls-files.c:506 +#: builtin/ls-files.c:509 msgid "if any <file> is not in the index, treat this as an error" msgstr "" "behandle es als Fehler, wenn sich eine <Datei> nicht in der Bereitstellung " "befindet" -#: builtin/ls-files.c:507 +#: builtin/ls-files.c:510 msgid "tree-ish" msgstr "Versionsreferenz" -#: builtin/ls-files.c:508 +#: builtin/ls-files.c:511 msgid "pretend that paths removed since <tree-ish> are still present" msgstr "" "gibt vor, dass Pfade, die seit <Versionsreferenz> gelöscht wurden, immer " "noch vorhanden sind" -#: builtin/ls-files.c:510 +#: builtin/ls-files.c:513 msgid "show debugging data" msgstr "zeigt Ausgaben zur Fehlersuche an" @@ -5892,7 +6051,7 @@ msgstr "erlaubt Vorspulen (Standard)" msgid "abort if fast-forward is not possible" msgstr "bricht ab, wenn kein Vorspulen möglich ist" -#: builtin/merge.c:202 builtin/notes.c:870 builtin/revert.c:112 +#: builtin/merge.c:202 builtin/notes.c:866 builtin/revert.c:112 msgid "strategy" msgstr "Strategie" @@ -6000,11 +6159,12 @@ msgstr "" "Zusammenführung abzuschließen.\n" #: builtin/merge.c:788 +#, c-format 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" "\n" -"Lines starting with '#' will be ignored, and an empty message aborts\n" +"Lines starting with '%c' will be ignored, and an empty message aborts\n" "the commit.\n" msgstr "" "Bitte geben Sie eine Versionsbeschreibung ein um zu erklären, warum diese " @@ -6012,59 +6172,59 @@ msgstr "" "insbesondere wenn es einen aktualisierten, externen Zweig mit einem Thema-" "Zweig zusammenführt.\n" "\n" -"Zeilen beginnend mit '#' werden ignoriert, und eine leere Beschreibung " +"Zeilen beginnend mit '%c' werden ignoriert, und eine leere Beschreibung " "bricht die Eintragung ab.\n" -#: builtin/merge.c:813 +#: builtin/merge.c:812 msgid "Empty commit message." msgstr "Leere Versionsbeschreibung" -#: builtin/merge.c:825 +#: builtin/merge.c:824 #, c-format msgid "Wonderful.\n" msgstr "Wunderbar.\n" -#: builtin/merge.c:890 +#: builtin/merge.c:889 #, c-format msgid "Automatic merge failed; fix conflicts and then commit the result.\n" msgstr "" "Automatische Zusammenführung fehlgeschlagen; beheben Sie die Konflikte und " "tragen Sie dann das Ergebnis ein.\n" -#: builtin/merge.c:906 +#: builtin/merge.c:905 #, c-format msgid "'%s' is not a commit" msgstr "'%s' ist keine Version" -#: builtin/merge.c:947 +#: builtin/merge.c:946 msgid "No current branch." msgstr "Sie befinden sich auf keinem Zweig." -#: builtin/merge.c:949 +#: builtin/merge.c:948 msgid "No remote for the current branch." msgstr "Kein externes Archiv für den aktuellen Zweig." -#: builtin/merge.c:951 +#: builtin/merge.c:950 msgid "No default upstream defined for the current branch." msgstr "" "Es ist kein externes Standard-Projektarchiv für den aktuellen Zweig " "definiert." -#: builtin/merge.c:956 +#: builtin/merge.c:955 #, c-format msgid "No remote tracking branch for %s from %s" msgstr "Kein externer Übernahmezweig für %s von %s" -#: builtin/merge.c:1043 builtin/merge.c:1200 +#: builtin/merge.c:1042 builtin/merge.c:1199 #, c-format msgid "%s - not something we can merge" msgstr "%s - nichts was wir zusammenführen können" -#: builtin/merge.c:1111 +#: builtin/merge.c:1110 msgid "There is no merge to abort (MERGE_HEAD missing)." msgstr "Es gibt keine Zusammenführung zum Abbrechen (vermisse MERGE_HEAD)" -#: builtin/merge.c:1127 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." @@ -6072,12 +6232,12 @@ msgstr "" "Sie haben Ihre Zusammenführung nicht abgeschlossen (MERGE_HEAD existiert).\n" "Bitte tragen Sie Ihre Änderungen ein, bevor Sie zusammenführen können." -#: builtin/merge.c:1130 git-pull.sh:34 +#: builtin/merge.c:1129 git-pull.sh:34 msgid "You have not concluded your merge (MERGE_HEAD exists)." msgstr "" "Sie haben Ihre Zusammenführung nicht abgeschlossen (MERGE_HEAD existiert)." -#: builtin/merge.c:1134 +#: 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." @@ -6085,82 +6245,82 @@ msgstr "" "Sie haben \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert).\n" "Bitte tragen Sie Ihre Änderungen ein, bevor Sie zusammenführen können." -#: builtin/merge.c:1137 +#: builtin/merge.c:1136 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)." msgstr "" "Sie haben \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert)." -#: builtin/merge.c:1146 +#: builtin/merge.c:1145 msgid "You cannot combine --squash with --no-ff." msgstr "Sie können --squash nicht mit --no-ff kombinieren." -#: builtin/merge.c:1151 +#: builtin/merge.c:1150 msgid "You cannot combine --no-ff with --ff-only." msgstr "Sie können --no-ff nicht mit --ff--only kombinieren." -#: builtin/merge.c:1158 +#: builtin/merge.c:1157 msgid "No commit specified and merge.defaultToUpstream not set." msgstr "Keine Version angegeben und merge.defaultToUpstream ist nicht gesetzt." -#: builtin/merge.c:1190 +#: builtin/merge.c:1189 msgid "Can merge only exactly one commit into empty head" msgstr "Kann nur exakt eine Version in einem leeren Zweig zusammenführen." -#: builtin/merge.c:1193 +#: builtin/merge.c:1192 msgid "Squash commit into empty head not supported yet" msgstr "Bin auf einem Zweig, der noch geboren wird; kann nicht quetschen." -#: builtin/merge.c:1195 +#: builtin/merge.c:1194 msgid "Non-fast-forward commit does not make sense into an empty head" msgstr "" "Nicht vorzuspulende Version kann nicht in einem leeren Zweig verwendet " "werden." -#: builtin/merge.c:1311 +#: builtin/merge.c:1310 #, c-format msgid "Updating %s..%s\n" msgstr "Aktualisiere %s..%s\n" -#: builtin/merge.c:1350 +#: builtin/merge.c:1349 #, c-format msgid "Trying really trivial in-index merge...\n" msgstr "Probiere wirklich triviale \"in-index\"-Zusammenführung...\n" -#: builtin/merge.c:1357 +#: builtin/merge.c:1356 #, c-format msgid "Nope.\n" msgstr "Nein.\n" -#: builtin/merge.c:1389 +#: builtin/merge.c:1388 msgid "Not possible to fast-forward, aborting." msgstr "Vorspulen nicht möglich, breche ab." -#: builtin/merge.c:1412 builtin/merge.c:1491 +#: builtin/merge.c:1411 builtin/merge.c:1490 #, c-format msgid "Rewinding the tree to pristine...\n" msgstr "Rücklauf des Zweiges bis zum Ursprung...\n" -#: builtin/merge.c:1416 +#: builtin/merge.c:1415 #, c-format msgid "Trying merge strategy %s...\n" msgstr "Probiere Zusammenführungsstrategie %s...\n" -#: builtin/merge.c:1482 +#: builtin/merge.c:1481 #, c-format msgid "No merge strategy handled the merge.\n" msgstr "Keine Zusammenführungsstrategie behandelt diese Zusammenführung.\n" -#: builtin/merge.c:1484 +#: builtin/merge.c:1483 #, c-format msgid "Merge with strategy %s failed.\n" msgstr "Zusammenführung mit Strategie %s fehlgeschlagen.\n" -#: builtin/merge.c:1493 +#: builtin/merge.c:1492 #, c-format msgid "Using the %s to prepare resolving by hand.\n" msgstr "Benutzen Sie \"%s\" um die Auflösung per Hand vorzubereiten.\n" -#: builtin/merge.c:1505 +#: builtin/merge.c:1504 #, c-format msgid "Automatic merge went well; stopped before committing as requested\n" msgstr "" @@ -6477,82 +6637,77 @@ msgstr "git notes prune [<Optionen>]" msgid "git notes get-ref" msgstr "git notes get-ref" -#: builtin/notes.c:142 +#: builtin/notes.c:139 #, c-format msgid "unable to start 'show' for object '%s'" msgstr "konnte 'show' für Objekt '%s' nicht starten" -#: builtin/notes.c:148 -msgid "can't fdopen 'show' output fd" -msgstr "konnte Datei-Deskriptor für Ausgabe von 'show' nicht öffnen" - -#: builtin/notes.c:158 -#, c-format -msgid "failed to close pipe to 'show' for object '%s'" -msgstr "Schließen der Verbindung zu 'show' ist für Objekt '%s' fehlgeschlagen." +#: builtin/notes.c:143 +msgid "could not read 'show' output" +msgstr "Konnte Ausgabe von 'show' nicht lesen." -#: builtin/notes.c:161 +#: builtin/notes.c:151 #, c-format msgid "failed to finish 'show' for object '%s'" msgstr "konnte 'show' für Objekt '%s' nicht abschließen" -#: builtin/notes.c:178 builtin/tag.c:347 +#: builtin/notes.c:169 builtin/tag.c:341 #, c-format msgid "could not create file '%s'" msgstr "konnte Datei '%s' nicht erstellen" -#: builtin/notes.c:192 +#: builtin/notes.c:188 msgid "Please supply the note contents using either -m or -F option" msgstr "" "Bitte liefern Sie den Notiz-Inhalt unter Verwendung der Option -m oder -F." -#: builtin/notes.c:213 builtin/notes.c:976 +#: builtin/notes.c:209 builtin/notes.c:972 #, c-format msgid "Removing note for object %s\n" msgstr "Entferne Notiz für Objekt %s\n" -#: builtin/notes.c:218 +#: builtin/notes.c:214 msgid "unable to write note object" msgstr "Konnte Notiz-Objekt nicht schreiben" -#: builtin/notes.c:220 +#: builtin/notes.c:216 #, c-format msgid "The note contents has been left in %s" msgstr "Die Notiz-Inhalte wurden in %s belassen" -#: builtin/notes.c:254 builtin/tag.c:542 +#: builtin/notes.c:250 builtin/tag.c:540 #, c-format msgid "cannot read '%s'" msgstr "kann '%s' nicht lesen" -#: builtin/notes.c:256 builtin/tag.c:545 +#: builtin/notes.c:252 builtin/tag.c:543 #, c-format msgid "could not open or read '%s'" msgstr "konnte '%s' nicht öffnen oder lesen" -#: builtin/notes.c:275 builtin/notes.c:448 builtin/notes.c:450 -#: builtin/notes.c:510 builtin/notes.c:564 builtin/notes.c:647 -#: builtin/notes.c:652 builtin/notes.c:727 builtin/notes.c:769 -#: builtin/notes.c:971 builtin/tag.c:558 +#: builtin/notes.c:271 builtin/notes.c:444 builtin/notes.c:446 +#: builtin/notes.c:506 builtin/notes.c:560 builtin/notes.c:643 +#: builtin/notes.c:648 builtin/notes.c:723 builtin/notes.c:765 +#: builtin/notes.c:967 builtin/tag.c:556 #, c-format msgid "Failed to resolve '%s' as a valid ref." msgstr "Konnte '%s' nicht als gültige Referenz auflösen." -#: builtin/notes.c:278 +#: builtin/notes.c:274 #, c-format msgid "Failed to read object '%s'." msgstr "Fehler beim Lesen des Objektes '%s'." -#: builtin/notes.c:302 +#: builtin/notes.c:298 msgid "Cannot commit uninitialized/unreferenced notes tree" msgstr "Kann uninitialisierten/unreferenzierten Notiz-Baum nicht eintragen." -#: builtin/notes.c:343 +#: builtin/notes.c:339 #, c-format msgid "Bad notes.rewriteMode value: '%s'" msgstr "Ungültiger notes.rewriteMode Wert: '%s'" -#: builtin/notes.c:353 +#: builtin/notes.c:349 #, c-format msgid "Refusing to rewrite notes in %s (outside of refs/notes/)" msgstr "" @@ -6560,58 +6715,58 @@ msgstr "" #. TRANSLATORS: The first %s is the name of the #. environment variable, the second %s is its value -#: builtin/notes.c:380 +#: builtin/notes.c:376 #, c-format msgid "Bad %s value: '%s'" msgstr "Ungültiger %s Wert: '%s'" -#: builtin/notes.c:444 +#: builtin/notes.c:440 #, c-format msgid "Malformed input line: '%s'." msgstr "Fehlerhafte Eingabezeile: '%s'." -#: builtin/notes.c:459 +#: builtin/notes.c:455 #, c-format msgid "Failed to copy notes from '%s' to '%s'" msgstr "Fehler beim Kopieren der Notizen von '%s' nach '%s'" -#: builtin/notes.c:503 builtin/notes.c:557 builtin/notes.c:630 -#: builtin/notes.c:642 builtin/notes.c:715 builtin/notes.c:762 -#: builtin/notes.c:1036 +#: builtin/notes.c:499 builtin/notes.c:553 builtin/notes.c:626 +#: builtin/notes.c:638 builtin/notes.c:711 builtin/notes.c:758 +#: builtin/notes.c:1032 msgid "too many parameters" msgstr "zu viele Parameter" -#: builtin/notes.c:516 builtin/notes.c:775 +#: builtin/notes.c:512 builtin/notes.c:771 #, c-format msgid "No note found for object %s." msgstr "Kein Notiz für Objekt %s gefunden." -#: builtin/notes.c:538 builtin/notes.c:695 +#: builtin/notes.c:534 builtin/notes.c:691 msgid "note contents as a string" msgstr "Notizinhalte als Zeichenkette" -#: builtin/notes.c:541 builtin/notes.c:698 +#: builtin/notes.c:537 builtin/notes.c:694 msgid "note contents in a file" msgstr "Notizinhalte in einer Datei" -#: builtin/notes.c:543 builtin/notes.c:546 builtin/notes.c:700 -#: builtin/notes.c:703 builtin/tag.c:476 +#: builtin/notes.c:539 builtin/notes.c:542 builtin/notes.c:696 +#: builtin/notes.c:699 builtin/tag.c:474 msgid "object" msgstr "Objekt" -#: builtin/notes.c:544 builtin/notes.c:701 +#: builtin/notes.c:540 builtin/notes.c:697 msgid "reuse and edit specified note object" msgstr "Wiederverwendung und Bearbeitung des angegebenen Notiz-Objektes" -#: builtin/notes.c:547 builtin/notes.c:704 +#: builtin/notes.c:543 builtin/notes.c:700 msgid "reuse specified note object" msgstr "Wiederverwendung des angegebenen Notiz-Objektes" -#: builtin/notes.c:549 builtin/notes.c:617 +#: builtin/notes.c:545 builtin/notes.c:613 msgid "replace existing notes" msgstr "ersetzt existierende Notizen" -#: builtin/notes.c:583 +#: builtin/notes.c:579 #, c-format msgid "" "Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite " @@ -6620,26 +6775,26 @@ msgstr "" "Konnte Notizen nicht hinzufügen. Existierende Notizen für Objekt %s " "gefunden. Verwenden Sie '-f' um die existierenden Notizen zu überschreiben." -#: builtin/notes.c:588 builtin/notes.c:665 +#: builtin/notes.c:584 builtin/notes.c:661 #, c-format msgid "Overwriting existing notes for object %s\n" msgstr "Überschreibe existierende Notizen für Objekt %s\n" -#: builtin/notes.c:618 +#: builtin/notes.c:614 msgid "read objects from stdin" msgstr "liest Objekte von der Standard-Eingabe" -#: builtin/notes.c:620 +#: builtin/notes.c:616 msgid "load rewriting config for <command> (implies --stdin)" msgstr "" "lädt Konfiguration für <Kommando> beim Umschreiben von Versionen (impliziert " "--stdin)" -#: builtin/notes.c:638 +#: builtin/notes.c:634 msgid "too few parameters" msgstr "zu wenig Parameter" -#: builtin/notes.c:659 +#: builtin/notes.c:655 #, c-format msgid "" "Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite " @@ -6648,12 +6803,12 @@ msgstr "" "Kann Notizen nicht kopieren. Existierende Notizen für Objekt %s gefunden. " "Verwenden Sie '-f' um die existierenden Notizen zu überschreiben." -#: builtin/notes.c:671 +#: builtin/notes.c:667 #, c-format msgid "Missing notes on source object %s. Cannot copy." msgstr "Keine Notizen für Quell-Objekt %s. Kopie nicht möglich." -#: builtin/notes.c:720 +#: builtin/notes.c:716 #, c-format msgid "" "The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n" @@ -6662,15 +6817,15 @@ msgstr "" "Die Optionen -m/-F/-c/-C sind für das Unterkommando 'edit' veraltet.\n" "Bitte benutzen Sie stattdessen 'git notes add -f -m/-F/-c/-C'.\n" -#: builtin/notes.c:867 +#: builtin/notes.c:863 msgid "General options" msgstr "Allgemeine Optionen" -#: builtin/notes.c:869 +#: builtin/notes.c:865 msgid "Merge options" msgstr "Optionen für Zusammenführung" -#: builtin/notes.c:871 +#: builtin/notes.c:867 msgid "" "resolve notes conflicts using the given strategy (manual/ours/theirs/union/" "cat_sort_uniq)" @@ -6678,46 +6833,46 @@ msgstr "" "löst Konflikte bei Notizen mit der angegebenen Strategie auf (manual/ours/" "theirs/union/cat_sort_uniq)" -#: builtin/notes.c:873 +#: builtin/notes.c:869 msgid "Committing unmerged notes" msgstr "trägt nicht zusammengeführte Notizen ein" -#: builtin/notes.c:875 +#: builtin/notes.c:871 msgid "finalize notes merge by committing unmerged notes" msgstr "" "schließt Zusammenführung von Notizen ab, in dem nicht zusammengeführte " "Notizen eingetragen werden" -#: builtin/notes.c:877 +#: builtin/notes.c:873 msgid "Aborting notes merge resolution" msgstr "bricht Konfliktauflösung bei Zusammenführung von Notizen ab" -#: builtin/notes.c:879 +#: builtin/notes.c:875 msgid "abort notes merge" msgstr "bricht Zusammenführung von Notizen ab" -#: builtin/notes.c:974 +#: builtin/notes.c:970 #, c-format msgid "Object %s has no note\n" msgstr "Objekt %s hat keine Notiz\n" -#: builtin/notes.c:986 +#: builtin/notes.c:982 msgid "attempt to remove non-existent note is not an error" msgstr "der Versuch, eine nicht existierende Notiz zu löschen, ist kein Fehler" -#: builtin/notes.c:989 +#: builtin/notes.c:985 msgid "read object names from the standard input" msgstr "liest Objektnamen von der Standard-Eingabe" -#: builtin/notes.c:1070 +#: builtin/notes.c:1066 msgid "notes_ref" msgstr "Notiz-Referenz" -#: builtin/notes.c:1071 +#: builtin/notes.c:1067 msgid "use notes from <notes_ref>" msgstr "verwendet Notizen von <Notiz-Referenz>" -#: builtin/notes.c:1106 builtin/remote.c:1598 +#: builtin/notes.c:1102 builtin/remote.c:1598 #, c-format msgid "Unknown subcommand: %s" msgstr "Unbekanntes Unterkommando: %s" @@ -7095,28 +7250,56 @@ msgstr "" #: builtin/push.c:224 msgid "" -"Updates were rejected because the destination reference already exists\n" -"in the remote." +"Updates were rejected because the remote contains work that you do\n" +"not have locally. This is usually caused by another repository pushing\n" +"to the same ref. You may want to first merge the remote changes (e.g.,\n" +"'git pull') before pushing again.\n" +"See the 'Note about fast-forwards' in 'git push --help' for details." +msgstr "" +"Aktualisierungen wurden zurückgewiesen, weil das Fernarchiv Versionen " +"enthält,\n" +"die lokal nicht vorhanden sind. Das wird üblicherweise durch das Versenden " +"von\n" +"Versionen auf dieselbe Referenz von einem anderen Projektarchiv aus " +"verursacht.\n" +"Vielleicht müssen Sie die externen Änderungen zusammenzuführen (z.B. 'git " +"pull')\n" +"bevor Sie erneut versenden.\n" +"Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'\n" +"für weitere Details." + +#: builtin/push.c:231 +msgid "Updates were rejected because the tag already exists in the remote." msgstr "" -"Aktualisierungen wurden zurückgewiesen, weil die Zielreferenz bereits\n" +"Aktualisierungen wurden zurückgewiesen, weil die Markierung bereits\n" "im Fernarchiv existiert." -#: builtin/push.c:269 +#: builtin/push.c:234 +msgid "" +"You cannot update a remote ref that points at a non-commit object,\n" +"or update a remote ref to make it point at a non-commit object,\n" +"without using the '--force' option.\n" +msgstr "" +"Sie können keine externe Referenz aktualisieren, die auf ein Objekt zeigt,\n" +"das keine Version ist, oder es auf ein solches Objekt zeigen lassen, ohne\n" +"die Option '--force' zu verwenden.\n" + +#: builtin/push.c:294 #, c-format msgid "Pushing to %s\n" msgstr "Versende nach %s\n" -#: builtin/push.c:273 +#: builtin/push.c:298 #, c-format msgid "failed to push some refs to '%s'" msgstr "Fehler beim Versenden einiger Referenzen nach '%s'" -#: builtin/push.c:302 +#: builtin/push.c:331 #, c-format msgid "bad repository '%s'" msgstr "ungültiges Projektarchiv '%s'" -#: builtin/push.c:303 +#: builtin/push.c:332 msgid "" "No configured push destination.\n" "Either specify the URL from the command-line or configure a remote " @@ -7138,82 +7321,86 @@ msgstr "" "\n" " git push <Name>\n" -#: builtin/push.c:318 +#: builtin/push.c:347 msgid "--all and --tags are incompatible" msgstr "Die Optionen --all und --tags sind inkompatibel." -#: builtin/push.c:319 +#: builtin/push.c:348 msgid "--all can't be combined with refspecs" msgstr "" "Die Option --all kann nicht mit Referenzspezifikationen kombiniert werden." -#: builtin/push.c:324 +#: builtin/push.c:353 msgid "--mirror and --tags are incompatible" msgstr "Die Optionen --mirror und --tags sind inkompatibel." -#: builtin/push.c:325 +#: builtin/push.c:354 msgid "--mirror can't be combined with refspecs" msgstr "" "Die Option --mirror kann nicht mit Referenzspezifikationen kombiniert werden." -#: builtin/push.c:330 +#: builtin/push.c:359 msgid "--all and --mirror are incompatible" msgstr "Die Optionen --all und --mirror sind inkompatibel." -#: builtin/push.c:390 +#: builtin/push.c:419 msgid "repository" msgstr "Projektarchiv" -#: builtin/push.c:391 +#: builtin/push.c:420 msgid "push all refs" msgstr "versendet alle Referenzen" -#: builtin/push.c:392 +#: builtin/push.c:421 msgid "mirror all refs" msgstr "spiegelt alle Referenzen" -#: builtin/push.c:394 +#: builtin/push.c:423 msgid "delete refs" msgstr "löscht Referenzen" -#: builtin/push.c:395 +#: builtin/push.c:424 msgid "push tags (can't be used with --all or --mirror)" msgstr "" "versendet Markierungen (kann nicht mit --all oder --mirror verwendet werden)" -#: builtin/push.c:398 +#: builtin/push.c:427 msgid "force updates" msgstr "erzwingt Aktualisierung" -#: builtin/push.c:399 +#: builtin/push.c:428 msgid "check" msgstr "" -#: builtin/push.c:400 +#: builtin/push.c:429 msgid "control recursive pushing of submodules" msgstr "steuert rekursives Versenden von Unterprojekten" -#: builtin/push.c:402 +#: builtin/push.c:431 msgid "use thin pack" msgstr "verwendet kleinere Pakete" -#: builtin/push.c:403 builtin/push.c:404 +#: builtin/push.c:432 builtin/push.c:433 msgid "receive pack program" msgstr "'receive pack' Programm" -#: builtin/push.c:405 +#: builtin/push.c:434 msgid "set upstream for git pull/status" msgstr "setzt externes Projektarchiv für \"git pull/status\"" -#: builtin/push.c:408 +#: builtin/push.c:437 msgid "prune locally removed refs" msgstr "entfernt lokal gelöschte Referenzen" -#: builtin/push.c:418 +#: builtin/push.c:439 +msgid "bypass pre-push hook" +msgstr "umgeht \"pre-push hook\"" + +#: builtin/push.c:448 msgid "--delete is incompatible with --all, --mirror and --tags" msgstr "Die Option --delete ist inkompatibel mit --all, --mirror und --tags." -#: builtin/push.c:420 +#: builtin/push.c:450 msgid "--delete doesn't make sense without any refs" msgstr "Die Option --delete kann nur mit Referenzen verwendet werden." @@ -8390,170 +8577,164 @@ msgid "could not verify the tag '%s'" msgstr "Konnte Markierung '%s' nicht verifizieren" #: builtin/tag.c:249 +#, c-format msgid "" "\n" -"#\n" -"# Write a tag message\n" -"# Lines starting with '#' will be ignored.\n" -"#\n" +"Write a tag message\n" +"Lines starting with '%c' will be ignored.\n" msgstr "" "\n" -"#\n" -"# Geben Sie eine Markierungsbeschreibung ein.\n" -"# Zeilen, die mit '#' beginnen, werden ignoriert.\n" -"#\n" +"Geben Sie eine Markierungsbeschreibung ein.\n" +"Zeilen, die mit '%c' beginnen, werden ignoriert.\n" -#: builtin/tag.c:256 +#: builtin/tag.c:253 +#, c-format msgid "" "\n" -"#\n" -"# Write a tag message\n" -"# Lines starting with '#' will be kept; you may remove them yourself if you " +"Write a tag message\n" +"Lines starting with '%c' will be kept; you may remove them yourself if you " "want to.\n" -"#\n" msgstr "" "\n" -"#\n" -"# Geben Sie eine Markierungsbeschreibung ein.\n" -"# Zeilen, die mit '#' beginnen, werden behalten; Sie dürfen diese\n" -"# selbst entfernen wenn Sie möchten.\n" -"#\n" +"Geben Sie eine Markierungsbeschreibung ein.\n" +"Zeilen, die mit '%c' beginnen, werden behalten; Sie dürfen diese\n" +"selbst entfernen wenn Sie möchten.\n" -#: builtin/tag.c:298 +#: builtin/tag.c:292 msgid "unable to sign the tag" msgstr "konnte Markierung nicht signieren" -#: builtin/tag.c:300 +#: builtin/tag.c:294 msgid "unable to write tag file" msgstr "konnte Markierungsdatei nicht schreiben" -#: builtin/tag.c:325 +#: builtin/tag.c:319 msgid "bad object type." msgstr "ungültiger Objekt-Typ" -#: builtin/tag.c:338 +#: builtin/tag.c:332 msgid "tag header too big." msgstr "Markierungskopf zu groß." -#: builtin/tag.c:370 +#: builtin/tag.c:368 msgid "no tag message?" msgstr "keine Markierungsbeschreibung?" -#: builtin/tag.c:376 +#: builtin/tag.c:374 #, c-format msgid "The tag message has been left in %s\n" msgstr "Die Markierungsbeschreibung wurde gelassen in %s\n" -#: builtin/tag.c:425 +#: builtin/tag.c:423 msgid "switch 'points-at' requires an object" msgstr "Option 'points-at' erfordert ein Objekt" -#: builtin/tag.c:427 +#: builtin/tag.c:425 #, c-format msgid "malformed object name '%s'" msgstr "fehlerhafter Objekt-Name '%s'" -#: builtin/tag.c:447 +#: builtin/tag.c:445 msgid "list tag names" msgstr "listet Markierungsnamen auf" -#: builtin/tag.c:449 +#: builtin/tag.c:447 msgid "print <n> lines of each tag message" msgstr "zeigt <n> Zeilen jeder Markierungsbeschreibung" -#: builtin/tag.c:451 +#: builtin/tag.c:449 msgid "delete tags" msgstr "löscht Markierungen" -#: builtin/tag.c:452 +#: builtin/tag.c:450 msgid "verify tags" msgstr "überprüft Markierungen" -#: builtin/tag.c:454 +#: builtin/tag.c:452 msgid "Tag creation options" msgstr "Optionen für Erstellung von Markierungen" -#: builtin/tag.c:456 +#: builtin/tag.c:454 msgid "annotated tag, needs a message" msgstr "annotierte Markierung, benötigt eine Beschreibung" -#: builtin/tag.c:458 +#: builtin/tag.c:456 msgid "tag message" msgstr "Markierungsbeschreibung" -#: builtin/tag.c:460 +#: builtin/tag.c:458 msgid "annotated and GPG-signed tag" msgstr "annotierte und GPG-signierte Markierung" -#: builtin/tag.c:464 +#: builtin/tag.c:462 msgid "use another key to sign the tag" msgstr "verwendet einen anderen Schlüssel um die Markierung zu signieren" -#: builtin/tag.c:465 +#: builtin/tag.c:463 msgid "replace the tag if exists" msgstr "ersetzt die Markierung, wenn sie existiert" -#: builtin/tag.c:466 +#: builtin/tag.c:464 msgid "show tag list in columns" msgstr "zeigt Liste der Markierungen in Spalten" -#: builtin/tag.c:468 +#: builtin/tag.c:466 msgid "Tag listing options" msgstr "Optionen für Auflistung der Markierungen" -#: builtin/tag.c:471 +#: builtin/tag.c:469 msgid "print only tags that contain the commit" msgstr "gibt nur Markierungen aus, die diese Version beinhalten" -#: builtin/tag.c:477 +#: builtin/tag.c:475 msgid "print only tags of the object" msgstr "gibt nur Markierungen von dem Objekt aus" -#: builtin/tag.c:506 +#: builtin/tag.c:504 msgid "--column and -n are incompatible" msgstr "--column und -n sind inkompatibel" -#: builtin/tag.c:523 +#: builtin/tag.c:521 msgid "-n option is only allowed with -l." msgstr "-n Option ist nur erlaubt mit -l." -#: builtin/tag.c:525 +#: builtin/tag.c:523 msgid "--contains option is only allowed with -l." msgstr "--contains Option ist nur erlaubt mit -l." -#: builtin/tag.c:527 +#: builtin/tag.c:525 msgid "--points-at option is only allowed with -l." msgstr "--points-at Option ist nur erlaubt mit -l." -#: builtin/tag.c:535 +#: builtin/tag.c:533 msgid "only one -F or -m option is allowed." msgstr "nur eine -F oder -m Option ist erlaubt." -#: builtin/tag.c:555 +#: builtin/tag.c:553 msgid "too many params" msgstr "zu viele Parameter" -#: builtin/tag.c:561 +#: builtin/tag.c:559 #, c-format msgid "'%s' is not a valid tag name." msgstr "'%s' ist kein gültiger Markierungsname." -#: builtin/tag.c:566 +#: builtin/tag.c:564 #, c-format msgid "tag '%s' already exists" msgstr "Markierung '%s' existiert bereits" -#: builtin/tag.c:584 +#: builtin/tag.c:582 #, c-format msgid "%s: cannot lock the ref" msgstr "%s: kann Referenz nicht sperren" -#: builtin/tag.c:586 +#: builtin/tag.c:584 #, c-format msgid "%s: cannot update the ref" msgstr "%s: kann Referenz nicht aktualisieren" -#: builtin/tag.c:588 +#: builtin/tag.c:586 #, c-format msgid "Updated tag '%s' (was %s)\n" msgstr "Aktualisierte Markierung '%s' (war %s)\n" @@ -8798,7 +8979,7 @@ msgid "Print lines matching a pattern" msgstr "Stellt Zeilen dar, die einem Muster entsprechen" #: common-cmds.h:17 -msgid "Create an empty git repository or reinitialize an existing one" +msgid "Create an empty Git repository or reinitialize an existing one" msgstr "" "Erstellt ein leeres Git-Projektarchiv oder initialisiert ein bestehendes neu" @@ -8832,8 +9013,7 @@ msgstr "Baut lokale Versionen auf einem aktuellerem externen Zweig neu auf" #: common-cmds.h:24 msgid "Reset current HEAD to the specified state" -msgstr "" -"Setzt die aktuelle Zweigspitze (HEAD) zu einem spezifizierten Zustand" +msgstr "Setzt die aktuelle Zweigspitze (HEAD) zu einem spezifizierten Zustand" #: common-cmds.h:25 msgid "Remove files from the working tree and from the index" @@ -9069,7 +9249,7 @@ msgstr "" #: git-bisect.sh:140 msgid "won't bisect on seeked tree" -msgstr "\"bisect\" auf gesuchtem Zweig nicht möglich" +msgstr "binäre Suche auf gesuchtem Zweig nicht möglich" #: git-bisect.sh:144 msgid "Bad HEAD - strange symbolic ref" @@ -9102,7 +9282,7 @@ msgstr "'git bisect bad' kann nur ein Argument entgegennehmen." #. this is less optimum. #: git-bisect.sh:273 msgid "Warning: bisecting only with a bad commit." -msgstr "Warnung: halbiere nur mit einer fehlerhaften Version" +msgstr "Warnung: binäre Suche nur mit einer fehlerhaften Version" #. TRANSLATORS: Make sure to include [Y] and [n] in your #. translation. The program will only accept English input @@ -9132,7 +9312,7 @@ msgstr "" #: git-bisect.sh:347 git-bisect.sh:474 msgid "We are not bisecting." -msgstr "Wir sind nicht beim Halbieren." +msgstr "keine binäre Suche im Gange" #: git-bisect.sh:354 #, sh-format @@ -9172,12 +9352,12 @@ msgid "" "bisect run failed:\n" "exit code $res from '$command' is < 0 or >= 128" msgstr "" -"Ausführung der Halbierung fehlgeschlagen:\n" +"'bisect run' fehlgeschlagen:\n" "Rückkehrwert $res von '$command' ist < 0 oder >= 128" #: git-bisect.sh:453 msgid "bisect run cannot continue any more" -msgstr "Ausführung der Halbierung kann nicht mehr fortgesetzt werden" +msgstr "'bisect run' kann nicht mehr fortgesetzt werden" #: git-bisect.sh:459 #, sh-format @@ -9185,12 +9365,12 @@ msgid "" "bisect run failed:\n" "'bisect_state $state' exited with error code $res" msgstr "" -"Ausführung der Halbierung fehlgeschlagen:\n" +"'bisect run' fehlgeschlagen:\n" "'bisect_state $state' wurde mit Fehlerwert $res beendet" #: git-bisect.sh:466 msgid "bisect run success" -msgstr "Halbierung erfolgreich ausgeführt" +msgstr "'bisect run' erfolgreich ausgeführt" #: git-pull.sh:21 msgid "" @@ -9725,18 +9905,25 @@ msgid "blob" msgstr "Blob" #: git-submodule.sh:979 -msgid "# Submodules changed but not updated:" -msgstr "# Unterprojekte geändert, aber nicht aktualisiert:" +msgid "Submodules changed but not updated:" +msgstr "Unterprojekte geändert, aber nicht aktualisiert:" #: git-submodule.sh:981 -msgid "# Submodule changes to be committed:" -msgstr "# Änderungen in Unterprojekt zum Eintragen:" +msgid "Submodule changes to be committed:" +msgstr "Änderungen in Unterprojekt zum Eintragen:" #: git-submodule.sh:1129 #, sh-format msgid "Synchronizing submodule url for '$prefix$sm_path'" msgstr "Synchronisiere Unterprojekt-URL für '$prefix$sm_path'" +#~ msgid "can't fdopen 'show' output fd" +#~ msgstr "konnte Datei-Deskriptor für Ausgabe von 'show' nicht öffnen" + +#~ msgid "failed to close pipe to 'show' for object '%s'" +#~ msgstr "" +#~ "Schließen der Verbindung zu 'show' ist für Objekt '%s' fehlgeschlagen." + #~ msgid "You do not have a valid HEAD" #~ msgstr "Sie haben keine gültige Zweigspitze (HEAD)" diff --git a/po/git.pot b/po/git.pot index a2ab9e8263..a826dcbf9f 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 <git@vger.kernel.org>\n" -"POT-Creation-Date: 2013-02-19 13:32+0800\n" +"POT-Creation-Date: 2013-03-05 12:36+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -122,7 +122,7 @@ msgstr "" #: attr.c:259 msgid "" -"Negative patterns are forbidden in git attributes\n" +"Negative patterns are ignored in git attributes\n" "Use '\\!' for literal leading exclamation." msgstr "" @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: git 1.8.2\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2013-02-19 13:32+0800\n" -"PO-Revision-Date: 2013-02-19 10:25+0100\n" +"POT-Creation-Date: 2013-03-05 12:36+0800\n" +"PO-Revision-Date: 2013-03-05 09:17+0100\n" "Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "Language: sv\n" @@ -127,10 +127,10 @@ msgstr "sökväg till kommandot git-upload-archive på fjärren" #: attr.c:259 msgid "" -"Negative patterns are forbidden in git attributes\n" +"Negative patterns are ignored in git attributes\n" "Use '\\!' for literal leading exclamation." msgstr "" -"Negativa mönster är förbjudna i git-attribut\n" +"Negativa mönster ignoreras i git-attribut\n" "Använd '\\!' för att inleda med ett utropstecken." #: bundle.c:36 @@ -6,10 +6,10 @@ # msgid "" msgstr "" -"Project-Id-Version: git-v1.8.2-rc0-16-g20a59\n" +"Project-Id-Version: git-v1.8.2-rc2-4-g77995\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2013-02-19 13:32+0800\n" -"PO-Revision-Date: 2013-02-20 07:14+0700\n" +"POT-Creation-Date: 2013-03-05 12:36+0800\n" +"PO-Revision-Date: 2013-03-06 13:55+0700\n" "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" "Language: vi\n" @@ -131,11 +131,11 @@ msgstr "đường dẫn đến lệnh git-upload-pack trên máy chủ" #: attr.c:259 msgid "" -"Negative patterns are forbidden in git attributes\n" +"Negative patterns are ignored in git attributes\n" "Use '\\!' for literal leading exclamation." msgstr "" -"Các mẫu dạng phủ định bị cấm dùng trong các thuộc tính của git\n" -"Dùng “\\!” cho các chuỗi văn bản có dấu chấm than." +"Các mẫu dạng phủ định bị cấm dùng cho các thuộc tính của git\n" +"Dùng “\\!” cho các chuỗi văn bản có dấu chấm than dẫn đầu." #: bundle.c:36 #, c-format @@ -1269,7 +1269,7 @@ msgstr " (dùng \"git am --abort\" để phục hồi lại nhánh nguyên th #: wt-status.c:879 wt-status.c:896 #, c-format msgid "You are currently rebasing branch '%s' on '%s'." -msgstr "Bạn hiện nay đang thực hiện việc rebase nhánh '%s' trên '%s'." +msgstr "Bạn hiện nay đang thực hiện việc rebase nhánh “%s” trên “%s”." #: wt-status.c:884 wt-status.c:901 msgid "You are currently rebasing." @@ -1298,7 +1298,7 @@ msgid "" "You are currently splitting a commit while rebasing branch '%s' on '%s'." msgstr "" "Bạn hiện nay đang thực hiện việc chia tách một lần chuyển giao (commit) " -"trong khi đang rebase nhánh '%s' trên '%s'." +"trong khi đang rebase nhánh “%s” trên “%s”." #: wt-status.c:913 msgid "You are currently splitting a commit during a rebase." @@ -1317,7 +1317,7 @@ msgstr "" msgid "You are currently editing a commit while rebasing branch '%s' on '%s'." msgstr "" "Bạn hiện nay đang thực hiện việc sửa chữa một lần chuyển giao (commit) trong " -"khi đang rebase nhánh '%s' trên '%s'." +"khi đang rebase nhánh “%s” trên “%s”." #: wt-status.c:925 msgid "You are currently editing a commit during a rebase." @@ -1348,7 +1348,7 @@ msgstr " (khi tất cả các xung đột đã sửa xong: chạy lệnh \"git msgid "You are currently bisecting branch '%s'." msgstr "" "Bạn hiện nay đang thực hiện thao tác di chuyển nửa bước (bisect) trên nhánh " -"'%s'." +"“%s”." #: wt-status.c:962 msgid "You are currently bisecting." diff --git a/po/zh_CN.po b/po/zh_CN.po index 583ed3385d..c48ae10d78 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: Git\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2013-02-19 13:32+0800\n" -"PO-Revision-Date: 2013-02-19 14:44+0800\n" +"POT-Creation-Date: 2013-03-05 12:36+0800\n" +"PO-Revision-Date: 2013-03-05 13:07+0800\n" "Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n" "Language-Team: GitHub <https://github.com/gotgit/git/>\n" "Language: zh_CN\n" @@ -130,10 +130,10 @@ msgstr "远程 git-upload-archive 命令的路径" #: attr.c:259 msgid "" -"Negative patterns are forbidden in git attributes\n" +"Negative patterns are ignored in git attributes\n" "Use '\\!' for literal leading exclamation." msgstr "" -"在 git attributes 中不允许使用负值模版\n" +"负值模版在 git attributes 中被忽略\n" "当字符串确实要以感叹号开始时,使用 '\\!'。" #: bundle.c:36 diff --git a/read-cache.c b/read-cache.c index 827ae55c50..670a06bc79 100644 --- a/read-cache.c +++ b/read-cache.c @@ -1260,7 +1260,7 @@ static int verify_hdr(struct cache_header *hdr, unsigned long size) if (hdr->hdr_signature != htonl(CACHE_SIGNATURE)) return error("bad signature"); hdr_version = ntohl(hdr->hdr_version); - if (hdr_version < 2 || 4 < hdr_version) + if (hdr_version < INDEX_FORMAT_LB || INDEX_FORMAT_UB < hdr_version) return error("bad index version %d", hdr_version); git_SHA1_Init(&c); git_SHA1_Update(&c, hdr, size - 20); @@ -650,22 +650,32 @@ static dev_t get_device_or_die(const char *path, const char *prefix, int prefix_ /* * A "string_list_each_func_t" function that canonicalizes an entry * from GIT_CEILING_DIRECTORIES using real_path_if_valid(), or - * discards it if unusable. + * discards it if unusable. The presence of an empty entry in + * GIT_CEILING_DIRECTORIES turns off canonicalization for all + * subsequent entries. */ static int canonicalize_ceiling_entry(struct string_list_item *item, - void *unused) + void *cb_data) { + int *empty_entry_found = cb_data; char *ceil = item->string; - const char *real_path; - if (!*ceil || !is_absolute_path(ceil)) + if (!*ceil) { + *empty_entry_found = 1; return 0; - real_path = real_path_if_valid(ceil); - if (!real_path) + } else if (!is_absolute_path(ceil)) { return 0; - free(item->string); - item->string = xstrdup(real_path); - return 1; + } else if (*empty_entry_found) { + /* Keep entry but do not canonicalize it */ + return 1; + } else { + const char *real_path = real_path_if_valid(ceil); + if (!real_path) + return 0; + free(item->string); + item->string = xstrdup(real_path); + return 1; + } } /* @@ -705,9 +715,11 @@ static const char *setup_git_directory_gently_1(int *nongit_ok) return setup_explicit_git_dir(gitdirenv, cwd, len, nongit_ok); if (env_ceiling_dirs) { + int empty_entry_found = 0; + string_list_split(&ceiling_dirs, env_ceiling_dirs, PATH_SEP, -1); filter_string_list(&ceiling_dirs, 0, - canonicalize_ceiling_entry, NULL); + canonicalize_ceiling_entry, &empty_entry_found); ceil_offset = longest_ancestor_length(cwd, &ceiling_dirs); string_list_clear(&ceiling_dirs, 0); } diff --git a/sha1_name.c b/sha1_name.c index 95003c77ea..c50630a3ea 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -1137,7 +1137,8 @@ int get_sha1_blob(const char *name, unsigned char *sha1) static void diagnose_invalid_sha1_path(const char *prefix, const char *filename, const unsigned char *tree_sha1, - const char *object_name) + const char *object_name, + int object_name_len) { struct stat st; unsigned char sha1[20]; @@ -1147,8 +1148,8 @@ static void diagnose_invalid_sha1_path(const char *prefix, prefix = ""; if (!lstat(filename, &st)) - die("Path '%s' exists on disk, but not in '%s'.", - filename, object_name); + die("Path '%s' exists on disk, but not in '%.*s'.", + filename, object_name_len, object_name); if (errno == ENOENT || errno == ENOTDIR) { char *fullname = xmalloc(strlen(filename) + strlen(prefix) + 1); @@ -1158,16 +1159,16 @@ static void diagnose_invalid_sha1_path(const char *prefix, if (!get_tree_entry(tree_sha1, fullname, sha1, &mode)) { die("Path '%s' exists, but not '%s'.\n" - "Did you mean '%s:%s' aka '%s:./%s'?", + "Did you mean '%.*s:%s' aka '%.*s:./%s'?", fullname, filename, - object_name, + object_name_len, object_name, fullname, - object_name, + object_name_len, object_name, filename); } - die("Path '%s' does not exist in '%s'", - filename, object_name); + die("Path '%s' does not exist in '%.*s'", + filename, object_name_len, object_name); } } @@ -1332,13 +1333,8 @@ static int get_sha1_with_context_1(const char *name, } if (*cp == ':') { unsigned char tree_sha1[20]; - char *object_name = NULL; - if (only_to_die) { - object_name = xmalloc(cp-name+1); - strncpy(object_name, name, cp-name); - object_name[cp-name] = '\0'; - } - if (!get_sha1_1(name, cp-name, tree_sha1, GET_SHA1_TREEISH)) { + int len = cp - name; + if (!get_sha1_1(name, len, tree_sha1, GET_SHA1_TREEISH)) { const char *filename = cp+1; char *new_filename = NULL; @@ -1348,8 +1344,8 @@ static int get_sha1_with_context_1(const char *name, ret = get_tree_entry(tree_sha1, filename, sha1, &oc->mode); if (ret && only_to_die) { diagnose_invalid_sha1_path(prefix, filename, - tree_sha1, object_name); - free(object_name); + tree_sha1, + name, len); } hashcpy(oc->tree, tree_sha1); strncpy(oc->path, filename, @@ -1360,7 +1356,7 @@ static int get_sha1_with_context_1(const char *name, return ret; } else { if (only_to_die) - die("Invalid object name '%s'.", object_name); + die("Invalid object name '%.*s'.", len, name); } } return ret; diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh index 199f22c231..c5e55b190b 100644 --- a/t/lib-git-svn.sh +++ b/t/lib-git-svn.sh @@ -148,7 +148,7 @@ stop_httpd () { convert_to_rev_db () { "$PERL_PATH" -w -- - "$@" <<\EOF use strict; -@ARGV == 2 or die "Usage: convert_to_rev_db <input> <output>"; +@ARGV == 2 or die "usage: convert_to_rev_db <input> <output>"; open my $wr, '+>', $ARGV[1] or die "$!: couldn't open: $ARGV[1]"; open my $rd, '<', $ARGV[0] or die "$!: couldn't open: $ARGV[0]"; my $size = (stat($rd))[7]; diff --git a/t/perf/README b/t/perf/README index b2dbad4d50..c552f561bf 100644 --- a/t/perf/README +++ b/t/perf/README @@ -56,7 +56,7 @@ You can set the following variables (also in your config.mak): GIT_PERF_REPEAT_COUNT Number of times a test should be repeated for best-of-N - measurements. Defaults to 5. + measurements. Defaults to 3. GIT_PERF_MAKE_OPTS Options to use when automatically building a git tree for diff --git a/t/t0003-attributes.sh b/t/t0003-attributes.sh index 43b25137e9..0b98b6f8d0 100755 --- a/t/t0003-attributes.sh +++ b/t/t0003-attributes.sh @@ -198,7 +198,8 @@ test_expect_success 'root subdir attribute test' ' test_expect_success 'negative patterns' ' echo "!f test=bar" >.gitattributes && - test_must_fail git check-attr test -- f + git check-attr test -- '"'"'!f'"'"' 2>errors && + test_i18ngrep "Negative patterns are ignored" errors ' test_expect_success 'patterns starting with exclamation' ' diff --git a/t/t1504-ceiling-dirs.sh b/t/t1504-ceiling-dirs.sh index cce87a5ab5..3d51615e42 100755 --- a/t/t1504-ceiling-dirs.sh +++ b/t/t1504-ceiling-dirs.sh @@ -44,6 +44,10 @@ test_prefix ceil_at_sub "" GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/" test_prefix ceil_at_sub_slash "" +if test_have_prereq SYMLINKS +then + ln -s sub top +fi mkdir -p sub/dir || exit 1 cd sub/dir || exit 1 @@ -68,6 +72,19 @@ test_fail subdir_ceil_at_sub GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/" test_fail subdir_ceil_at_sub_slash +if test_have_prereq SYMLINKS +then + GIT_CEILING_DIRECTORIES="$TRASH_ROOT/top" + test_fail subdir_ceil_at_top + GIT_CEILING_DIRECTORIES="$TRASH_ROOT/top/" + test_fail subdir_ceil_at_top_slash + + GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top" + test_prefix subdir_ceil_at_top_no_resolve "sub/dir/" + GIT_CEILING_DIRECTORIES=":$TRASH_ROOT/top/" + test_prefix subdir_ceil_at_top_slash_no_resolve "sub/dir/" +fi + GIT_CEILING_DIRECTORIES="$TRASH_ROOT/sub/dir" test_prefix subdir_ceil_at_subdir "sub/dir/" diff --git a/t/t1507-rev-parse-upstream.sh b/t/t1507-rev-parse-upstream.sh index d6e576192f..b27a7209f7 100755 --- a/t/t1507-rev-parse-upstream.sh +++ b/t/t1507-rev-parse-upstream.sh @@ -54,6 +54,10 @@ test_expect_success 'my-side@{upstream} resolves to correct full name' ' test refs/remotes/origin/side = "$(full_name my-side@{u})" ' +test_expect_success 'refs/heads/my-side@{upstream} does not resolve to my-side{upstream}' ' + test_must_fail full_name refs/heads/my-side@{upstream} +' + test_expect_success 'my-side@{u} resolves to correct commit' ' git checkout side && test_commit 5 && diff --git a/t/t1509/prepare-chroot.sh b/t/t1509/prepare-chroot.sh index c5334a8fa4..62691172e3 100755 --- a/t/t1509/prepare-chroot.sh +++ b/t/t1509/prepare-chroot.sh @@ -14,7 +14,7 @@ xmkdir() { R="$1" -[ -n "$R" ] || die "Usage: prepare-chroot.sh <root>" +[ -n "$R" ] || die "usage: prepare-chroot.sh <root>" [ -x git ] || die "This script needs to be executed at git source code's top directory" [ -x /bin/busybox ] || die "You need busybox" diff --git a/templates/hooks--update.sample b/templates/hooks--update.sample index 71ab04edc0..d84758373d 100755 --- a/templates/hooks--update.sample +++ b/templates/hooks--update.sample @@ -38,7 +38,7 @@ if [ -z "$GIT_DIR" ]; then fi if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then - echo "Usage: $0 <ref> <oldrev> <newrev>" >&2 + echo "usage: $0 <ref> <oldrev> <newrev>" >&2 exit 1 fi diff --git a/test-chmtime.c b/test-chmtime.c index 92713d16da..02b42badd5 100644 --- a/test-chmtime.c +++ b/test-chmtime.c @@ -114,6 +114,6 @@ int main(int argc, const char *argv[]) return 0; usage: - fprintf(stderr, "Usage: %s %s\n", argv[0], usage_str); + fprintf(stderr, "usage: %s %s\n", argv[0], usage_str); return -1; } diff --git a/test-delta.c b/test-delta.c index af40a3c49e..4595cd6433 100644 --- a/test-delta.c +++ b/test-delta.c @@ -23,7 +23,7 @@ int main(int argc, char *argv[]) unsigned long from_size, data_size, out_size; if (argc != 5 || (strcmp(argv[1], "-d") && strcmp(argv[1], "-p"))) { - fprintf(stderr, "Usage: %s\n", usage_str); + fprintf(stderr, "usage: %s\n", usage_str); return 1; } diff --git a/test-genrandom.c b/test-genrandom.c index b3c28d9a1c..54824d0754 100644 --- a/test-genrandom.c +++ b/test-genrandom.c @@ -12,7 +12,7 @@ int main(int argc, char *argv[]) unsigned char *c; if (argc < 2 || argc > 3) { - fprintf(stderr, "Usage: %s <seed_string> [<size>]\n", argv[0]); + fprintf(stderr, "usage: %s <seed_string> [<size>]\n", argv[0]); return 1; } |