diff options
67 files changed, 5155 insertions, 1989 deletions
diff --git a/Documentation/RelNotes/1.7.10.3.txt b/Documentation/RelNotes/1.7.10.3.txt new file mode 100644 index 0000000000..703fbf1d60 --- /dev/null +++ b/Documentation/RelNotes/1.7.10.3.txt @@ -0,0 +1,43 @@ +Git v1.7.10.3 Release Notes +=========================== + +Fixes since v1.7.10.2 +--------------------- + + * The message file for German translation has been updated a bit. + + * Running "git checkout" on an unborn branch used to corrupt HEAD. + + * When checking out another commit from an already detached state, we + used to report all commits that are not reachable from any of the + refs as lossage, but some of them might be reachable from the new + HEAD, and there is no need to warn about them. + + * Some time ago, "git clone" lost the progress output for its + "checkout" phase; when run without any "--quiet" option, it should + give progress to the lengthy operation. + + * The directory path used in "git diff --no-index", when it recurses + down, was broken with a recent update after v1.7.10.1 release. + + * "log -z --pretty=tformat:..." did not terminate each record with + NUL. The fix is not entirely correct when the output also asks for + --patch and/or --stat, though. + + * The DWIM behaviour for "log --pretty=format:%gd -g" was somewhat + broken and gave undue precedence to configured log.date, causing + "git stash list" to show "stash@{time stamp string}". + + * "git status --porcelain" ignored "--branch" option by mistake. The + output for "git status --branch -z" was also incorrect and did not + terminate the record for the current branch name with NUL as asked. + + * When a submodule repository uses alternate object store mechanism, + some commands that were started from the superproject did not + notice it and failed with "No such object" errors. The subcommands + of "git submodule" command that recursed into the submodule in a + separate process were OK; only the ones that cheated and peeked + directly into the submodule's repository from the primary process + were affected. + +Also contains minor fixes and documentation updates. diff --git a/Documentation/RelNotes/1.7.11.txt b/Documentation/RelNotes/1.7.11.txt index 9ef7e18ca5..7931f77076 100644 --- a/Documentation/RelNotes/1.7.11.txt +++ b/Documentation/RelNotes/1.7.11.txt @@ -79,12 +79,19 @@ Foreign Interface Performance and Internal Implementation (please report possible regressions) + * Bash completion script (in contrib/) have been cleaned up to make + future work on it simpler. + * An experimental "version 4" format of the index file has been introduced to reduce on-disk footprint and I/O overhead. * "git archive" learned to produce its output without reading the blob object it writes out in memory in its entirety. + * "git index-pack" that runs when fetching or pushing objects to + complete the packfile on the receiving end learned to use multiple + threads to do its job when available. + * The code to compute hash values for lines used by the internal diff engine was optimized on little-endian machines, using the same trick the kernel folks came up with. @@ -116,35 +123,27 @@ Unless otherwise noted, all the fixes since v1.7.10 in the maintenance releases are contained in this release (see release notes to them for details). - * The DWIM behaviour for "log --pretty=format:%gd -g" was somewhat - broken and gave undue precedence to configured log.date, causing - "git stash list" to show "stash@{time stamp string}". - (merge 55ccf85 jk/maint-reflog-walk-count-vs-time later to maint). + * The progress indicator for a large "git checkout" was sent to + stderr even if it is not a terminal. + (merge e9fc64c ap/checkout-no-progress-for-non-tty later to maint). - * Running "git checkout" on an unborn branch used to corrupt HEAD. - (merge 8338f77 ef/checkout-empty later to maint). + * A name taken from mailmap was copied into an internal buffer + incorrectly and could overun the buffer if it is too long. + (merge c9b4e9e jk/format-person-part-buffer-limit later to maint). - * When checking out another commit from an already detached state, we - used to report all commits that are not reachable from any of the - refs as lossage, but some of them might be reachable from the new - HEAD, and there is no need to warn about them. - (merge 5d88639 js/checkout-detach-count later to maint). + * A malformed commit object that has a header line chomped in the + middle could kill git with a NULL pointer dereference. + (merge a9c7a8a jk/pretty-commit-header-incomplete-line later to maint). - * Some time ago, "git clone" lost the progress output for its - "checkout" phase; when run without any "--quiet" option, it should - give progress to the lengthy operation. - (merge 8f63da1 ef/maint-clone-progress-fix later to maint). + * An author/committer name that is a single character was mishandled + as an invalid name by mistake. + (merge d9955fd jk/ident-split-fix later to maint). - * "git status --porcelain" ignored "--branch" option by mistake. The - output for "git status --branch -z" was also incorrect and did not - terminate the record for the current branch name with NUL as asked. - (merge d4a6bf1 jk/maint-status-porcelain-z-b later to maint). + * "git grep -e '$pattern'", unlike the case where the patterns are + read from a file, did not treat individual lines in the given + pattern argument as separate regular expressions as it should. + (merge ec83061 rs/maint-grep-F later to maint). * "git diff --stat" used to fully count a binary file with modified execution bits whose contents is unmodified, which was not quite right. - - * "log -z --pretty=tformat:..." did not terminate each record with - NUL. The fix is not entirely correct when the output also asks for - --patch and/or --stat, though. - (merge fafd382 jk/maint-tformat-with-z later to maint). diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt index 3f5d216a09..d9463cb387 100644 --- a/Documentation/git-config.txt +++ b/Documentation/git-config.txt @@ -198,9 +198,7 @@ If not set explicitly with '--file', there are three files where 'git config' will search for configuration options: $GIT_DIR/config:: - Repository specific configuration file. (The filename is - of course relative to the repository root, not the working - directory.) + Repository specific configuration file. ~/.gitconfig:: User-specific configuration file. Also called "global" diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt index 4785f1c5c6..3bec036883 100644 --- a/Documentation/git-grep.txt +++ b/Documentation/git-grep.txt @@ -31,7 +31,9 @@ SYNOPSIS DESCRIPTION ----------- Look for specified patterns in the tracked files in the work tree, blobs -registered in the index file, or blobs in given tree objects. +registered in the index file, or blobs in given tree objects. Patterns +are lists of one or more search expressions separated by newline +characters. An empty string as search expression matches all lines. CONFIGURATION diff --git a/Documentation/git-index-pack.txt b/Documentation/git-index-pack.txt index 909687fed4..39e6d0ddd8 100644 --- a/Documentation/git-index-pack.txt +++ b/Documentation/git-index-pack.txt @@ -74,6 +74,16 @@ OPTIONS --strict:: Die, if the pack contains broken objects or links. +--threads=<n>:: + Specifies the number of threads to spawn when resolving + deltas. This requires that index-pack be compiled with + pthreads otherwise this option is ignored with a warning. + This is meant to reduce packing time on multiprocessor + machines. The required amount of memory for the delta search + window is however multiplied by the number of threads. + Specifying 0 will cause git to auto-detect the number of CPU's + and use maximum 3 threads. + Note ---- diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt index f63b81aad6..4cc3e9586f 100644 --- a/Documentation/git-rev-parse.txt +++ b/Documentation/git-rev-parse.txt @@ -137,7 +137,8 @@ shown. If the pattern does not contain a globbing character (`?`, --git-dir:: Show `$GIT_DIR` if defined. Otherwise show the path to - the .git directory, relative to the current directory. + the .git directory. The path shown, when relative, is + relative to the current working directory. + If `$GIT_DIR` is not defined and the current directory is not detected to lie in a git repository or work tree diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index c83a856574..9e488c0aad 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -43,9 +43,9 @@ if you choose to go that route. Submodules are composed from a so-called `gitlink` tree entry in the main repository that refers to a particular commit object within the inner repository that is completely separate. -A record in the `.gitmodules` file at the root of the source -tree assigns a logical name to the submodule and describes -the default URL the submodule shall be cloned from. +A record in the `.gitmodules` (see linkgit:gitmodules[5]) file at the +root of the source tree assigns a logical name to the submodule and +describes the default URL the submodule shall be cloned from. The logical name can be used for overriding this URL within your local repository configuration (see 'submodule init'). diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt index 34ee785064..cfe8d2b5df 100644 --- a/Documentation/git-svn.txt +++ b/Documentation/git-svn.txt @@ -189,18 +189,16 @@ and have no uncommitted changes. last fetched commit from the upstream SVN. 'dcommit':: - Commit each diff from a specified head directly to the SVN + Commit each diff from the current branch directly to the SVN repository, and then rebase or reset (depending on whether or not there is a diff between SVN and head). This will create a revision in SVN for each commit in git. - It is recommended that you run 'git svn' fetch and rebase (not - pull or merge) your commits against the latest changes in the - SVN repository. - An optional revision or branch argument may be specified, and - causes 'git svn' to do all work on that revision/branch - instead of HEAD. - This is advantageous over 'set-tree' (below) because it produces - cleaner, more linear history. ++ +When an optional git branch name (or a git commit object name) +is specified as an argument, the subcommand works on the specified +branch, not on the current branch. ++ +Use of 'dcommit' is preferred to 'set-tree' (below). + --no-rebase;; After committing, do not rebase or reset. @@ -572,6 +570,8 @@ config key: svn.repackflags --merge:: -s<strategy>:: --strategy=<strategy>:: +-p:: +--preserve-merges:: These are only used with the 'dcommit' and 'rebase' commands. + Passed directly to 'git rebase' when using 'dcommit' if a @@ -800,18 +800,19 @@ have each person clone that repository with 'git clone': REBASE VS. PULL/MERGE --------------------- - -Originally, 'git svn' recommended that the 'remotes/git-svn' branch be -pulled or merged from. This is because the author favored +Prefer to use 'git svn rebase' or 'git rebase', rather than +'git pull' or 'git merge' to synchronize unintegrated commits with a 'git svn' +branch. Doing so will keep the history of unintegrated commits linear with +respect to the upstream SVN repository and allow the use of the preferred +'git svn dcommit' subcommand to push unintegrated commits back into SVN. + +Originally, 'git svn' recommended that developers pulled or merged from +the 'git svn' branch. This was because the author favored `git svn set-tree B` to commit a single head rather than the -`git svn set-tree A..B` notation to commit multiple commits. - -If you use `git svn set-tree A..B` to commit several diffs and you do -not have the latest remotes/git-svn merged into my-branch, you should -use `git svn rebase` to update your work branch instead of `git pull` or -`git merge`. `pull`/`merge` can cause non-linear history to be flattened -when committing into SVN, which can lead to merge commits reversing -previous commits in SVN. +`git svn set-tree A..B` notation to commit multiple commits. Use of +'git pull' or 'git merge' with `git svn set-tree A..B` will cause non-linear +history to be flattened when committing into SVN and this can lead to merge +commits unexpectedly reversing previous commits in SVN. MERGE TRACKING -------------- diff --git a/Documentation/technical/pack-protocol.txt b/Documentation/technical/pack-protocol.txt index 546980c0a4..49cdc571cd 100644 --- a/Documentation/technical/pack-protocol.txt +++ b/Documentation/technical/pack-protocol.txt @@ -351,7 +351,7 @@ Then the server will start sending its packfile data. A simple clone may look like this (with no 'have' lines): ---- - C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d\0multi_ack \ + C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d multi_ack \ side-band-64k ofs-delta\n C: 0032want 7d1665144a3a975c05f1f43902ddaf084e784dbe\n C: 0032want 5a3f6be755bbb7deae50065988cbfa1ffa9ab68a\n @@ -367,7 +367,7 @@ A simple clone may look like this (with no 'have' lines): An incremental update (fetch) response might look like this: ---- - C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d\0multi_ack \ + C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d multi_ack \ side-band-64k ofs-delta\n C: 0032want 7d1665144a3a975c05f1f43902ddaf084e784dbe\n C: 0032want 5a3f6be755bbb7deae50065988cbfa1ffa9ab68a\n diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index c92dbed2ec..ebbe873494 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v1.7.10.GIT +DEF_VER=v1.7.11-rc0 LF=' ' @@ -2226,7 +2226,7 @@ builtin/branch.o builtin/checkout.o builtin/clone.o builtin/reset.o branch.o tra builtin/bundle.o bundle.o transport.o: bundle.h builtin/bisect--helper.o builtin/rev-list.o bisect.o: bisect.h builtin/clone.o builtin/fetch-pack.o transport.o: fetch-pack.h -builtin/grep.o builtin/pack-objects.o transport-helper.o thread-utils.o: thread-utils.h +builtin/index-pack.o builtin/grep.o builtin/pack-objects.o transport-helper.o thread-utils.o: thread-utils.h builtin/send-pack.o transport.o: send-pack.h builtin/log.o builtin/shortlog.o: shortlog.h builtin/prune.o builtin/reflog.o reachable.o: reachable.h diff --git a/archive-tar.c b/archive-tar.c index 93387ea336..dc91c6b50d 100644 --- a/archive-tar.c +++ b/archive-tar.c @@ -139,13 +139,13 @@ static void strbuf_append_ext_header(struct strbuf *sb, const char *keyword, static unsigned int ustar_header_chksum(const struct ustar_header *header) { - char *p = (char *)header; + const char *p = (const char *)header; unsigned int chksum = 0; while (p < header->chksum) chksum += *p++; chksum += sizeof(header->chksum) * ' '; p += sizeof(header->chksum); - while (p < (char *)header + sizeof(struct ustar_header)) + while (p < (const char *)header + sizeof(struct ustar_header)) chksum += *p++; return chksum; } @@ -254,18 +254,11 @@ static void parse_treeish_arg(const char **argv, /* Remotes are only allowed to fetch actual refs */ if (remote) { char *ref = NULL; - const char *refname, *colon = NULL; - - colon = strchr(name, ':'); - if (colon) - refname = xstrndup(name, colon - name); - else - refname = name; - - if (!dwim_ref(refname, strlen(refname), sha1, &ref)) - die("no such ref: %s", refname); - if (refname != name) - free((void *)refname); + const char *colon = strchr(name, ':'); + int refnamelen = colon ? colon - name : strlen(name); + + if (!dwim_ref(name, refnamelen, sha1, &ref)) + die("no such ref: %.*s", refnamelen, name); free(ref); } diff --git a/builtin/apply.c b/builtin/apply.c index 1793c33ee9..dda9ea09c9 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -50,7 +50,7 @@ static const char *fake_ancestor; static int line_termination = '\n'; static unsigned int p_context = UINT_MAX; static const char * const apply_usage[] = { - "git apply [options] [<patch>...]", + N_("git apply [options] [<patch>...]"), NULL }; @@ -3959,66 +3959,66 @@ int cmd_apply(int argc, const char **argv, const char *prefix_) const char *whitespace_option = NULL; struct option builtin_apply_options[] = { - { OPTION_CALLBACK, 0, "exclude", NULL, "path", - "don't apply changes matching the given path", + { OPTION_CALLBACK, 0, "exclude", NULL, N_("path"), + N_("don't apply changes matching the given path"), 0, option_parse_exclude }, - { OPTION_CALLBACK, 0, "include", NULL, "path", - "apply changes matching the given path", + { OPTION_CALLBACK, 0, "include", NULL, N_("path"), + N_("apply changes matching the given path"), 0, option_parse_include }, - { OPTION_CALLBACK, 'p', NULL, NULL, "num", - "remove <num> leading slashes from traditional diff paths", + { OPTION_CALLBACK, 'p', NULL, NULL, N_("num"), + N_("remove <num> leading slashes from traditional diff paths"), 0, option_parse_p }, OPT_BOOLEAN(0, "no-add", &no_add, - "ignore additions made by the patch"), + N_("ignore additions made by the patch")), OPT_BOOLEAN(0, "stat", &diffstat, - "instead of applying the patch, output diffstat for the input"), + N_("instead of applying the patch, output diffstat for the input")), OPT_NOOP_NOARG(0, "allow-binary-replacement"), OPT_NOOP_NOARG(0, "binary"), OPT_BOOLEAN(0, "numstat", &numstat, - "shows number of added and deleted lines in decimal notation"), + N_("shows number of added and deleted lines in decimal notation")), OPT_BOOLEAN(0, "summary", &summary, - "instead of applying the patch, output a summary for the input"), + N_("instead of applying the patch, output a summary for the input")), OPT_BOOLEAN(0, "check", &check, - "instead of applying the patch, see if the patch is applicable"), + N_("instead of applying the patch, see if the patch is applicable")), OPT_BOOLEAN(0, "index", &check_index, - "make sure the patch is applicable to the current index"), + N_("make sure the patch is applicable to the current index")), OPT_BOOLEAN(0, "cached", &cached, - "apply a patch without touching the working tree"), + N_("apply a patch without touching the working tree")), OPT_BOOLEAN(0, "apply", &force_apply, - "also apply the patch (use with --stat/--summary/--check)"), + N_("also apply the patch (use with --stat/--summary/--check)")), OPT_FILENAME(0, "build-fake-ancestor", &fake_ancestor, - "build a temporary index based on embedded index information"), + N_("build a temporary index based on embedded index information")), { OPTION_CALLBACK, 'z', NULL, NULL, NULL, - "paths are separated with NUL character", + N_("paths are separated with NUL character"), PARSE_OPT_NOARG, option_parse_z }, OPT_INTEGER('C', NULL, &p_context, - "ensure at least <n> lines of context match"), - { OPTION_CALLBACK, 0, "whitespace", &whitespace_option, "action", - "detect new or modified lines that have whitespace errors", + N_("ensure at least <n> lines of context match")), + { OPTION_CALLBACK, 0, "whitespace", &whitespace_option, N_("action"), + N_("detect new or modified lines that have whitespace errors"), 0, option_parse_whitespace }, { OPTION_CALLBACK, 0, "ignore-space-change", NULL, NULL, - "ignore changes in whitespace when finding context", + N_("ignore changes in whitespace when finding context"), PARSE_OPT_NOARG, option_parse_space_change }, { OPTION_CALLBACK, 0, "ignore-whitespace", NULL, NULL, - "ignore changes in whitespace when finding context", + N_("ignore changes in whitespace when finding context"), PARSE_OPT_NOARG, option_parse_space_change }, OPT_BOOLEAN('R', "reverse", &apply_in_reverse, - "apply the patch in reverse"), + N_("apply the patch in reverse")), OPT_BOOLEAN(0, "unidiff-zero", &unidiff_zero, - "don't expect at least one line of context"), + N_("don't expect at least one line of context")), OPT_BOOLEAN(0, "reject", &apply_with_reject, - "leave the rejected hunks in corresponding *.rej files"), + N_("leave the rejected hunks in corresponding *.rej files")), OPT_BOOLEAN(0, "allow-overlap", &allow_overlap, - "allow overlapping hunks"), - OPT__VERBOSE(&apply_verbosely, "be verbose"), + N_("allow overlapping hunks")), + OPT__VERBOSE(&apply_verbosely, N_("be verbose")), OPT_BIT(0, "inaccurate-eof", &options, - "tolerate incorrectly detected missing new-line at the end of file", + N_("tolerate incorrectly detected missing new-line at the end of file"), INACCURATE_EOF), OPT_BIT(0, "recount", &options, - "do not trust the line counts in the hunk headers", + N_("do not trust the line counts in the hunk headers"), RECOUNT), - { OPTION_CALLBACK, 0, "directory", NULL, "root", - "prepend <root> to all filenames", + { OPTION_CALLBACK, 0, "directory", NULL, N_("root"), + N_("prepend <root> to all filenames"), 0, option_parse_directory }, OPT_END() }; diff --git a/builtin/blame.c b/builtin/blame.c index 324d476abf..24d3dd5292 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -88,6 +88,20 @@ struct origin { char path[FLEX_ARRAY]; }; +static int diff_hunks(mmfile_t *file_a, mmfile_t *file_b, long ctxlen, + xdl_emit_hunk_consume_func_t hunk_func, void *cb_data) +{ + xpparam_t xpp = {0}; + xdemitconf_t xecfg = {0}; + xdemitcb_t ecb = {NULL}; + + xpp.flags = xdl_opts; + xecfg.ctxlen = ctxlen; + xecfg.hunk_func = hunk_func; + ecb.priv = cb_data; + return xdi_diff(file_a, file_b, &xpp, &xecfg, &ecb); +} + /* * Prepare diff_filespec and convert it using diff textconv API * if the textconv driver exists. @@ -759,12 +773,14 @@ struct blame_chunk_cb_data { long tlno; }; -static void blame_chunk_cb(void *data, long same, long p_next, long t_next) +static int blame_chunk_cb(long start_a, long count_a, + long start_b, long count_b, void *data) { struct blame_chunk_cb_data *d = data; - blame_chunk(d->sb, d->tlno, d->plno, same, d->target, d->parent); - d->plno = p_next; - d->tlno = t_next; + blame_chunk(d->sb, d->tlno, d->plno, start_b, d->target, d->parent); + d->plno = start_a + count_a; + d->tlno = start_b + count_b; + return 0; } /* @@ -779,8 +795,7 @@ static int pass_blame_to_parent(struct scoreboard *sb, int last_in_target; mmfile_t file_p, file_o; struct blame_chunk_cb_data d; - xpparam_t xpp; - xdemitconf_t xecfg; + memset(&d, 0, sizeof(d)); d.sb = sb; d.target = target; d.parent = parent; last_in_target = find_last_in_target(sb, target); @@ -791,11 +806,7 @@ static int pass_blame_to_parent(struct scoreboard *sb, fill_origin_blob(&sb->revs->diffopt, target, &file_o); num_get_patch++; - memset(&xpp, 0, sizeof(xpp)); - xpp.flags = xdl_opts; - memset(&xecfg, 0, sizeof(xecfg)); - xecfg.ctxlen = 0; - xdi_diff_hunks(&file_p, &file_o, blame_chunk_cb, &d, &xpp, &xecfg); + diff_hunks(&file_p, &file_o, 0, blame_chunk_cb, &d); /* The rest (i.e. anything after tlno) are the same as the parent */ blame_chunk(sb, d.tlno, d.plno, last_in_target, target, parent); @@ -899,12 +910,15 @@ struct handle_split_cb_data { long tlno; }; -static void handle_split_cb(void *data, long same, long p_next, long t_next) +static int handle_split_cb(long start_a, long count_a, + long start_b, long count_b, void *data) { struct handle_split_cb_data *d = data; - handle_split(d->sb, d->ent, d->tlno, d->plno, same, d->parent, d->split); - d->plno = p_next; - d->tlno = t_next; + handle_split(d->sb, d->ent, d->tlno, d->plno, start_b, d->parent, + d->split); + d->plno = start_a + count_a; + d->tlno = start_b + count_b; + return 0; } /* @@ -922,8 +936,7 @@ static void find_copy_in_blob(struct scoreboard *sb, int cnt; mmfile_t file_o; struct handle_split_cb_data d; - xpparam_t xpp; - xdemitconf_t xecfg; + memset(&d, 0, sizeof(d)); d.sb = sb; d.ent = ent; d.parent = parent; d.split = split; /* @@ -943,12 +956,8 @@ static void find_copy_in_blob(struct scoreboard *sb, * file_o is a part of final image we are annotating. * file_p partially may match that image. */ - memset(&xpp, 0, sizeof(xpp)); - xpp.flags = xdl_opts; - memset(&xecfg, 0, sizeof(xecfg)); - xecfg.ctxlen = 1; memset(split, 0, sizeof(struct blame_entry [3])); - xdi_diff_hunks(file_p, &file_o, handle_split_cb, &d, &xpp, &xecfg); + diff_hunks(file_p, &file_o, 1, handle_split_cb, &d); /* remainder, if any, all match the preimage */ handle_split(sb, ent, d.tlno, d.plno, ent->num_lines, parent, split); } diff --git a/builtin/checkout.c b/builtin/checkout.c index 3ddda34f7a..e8c1b1f189 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -343,7 +343,7 @@ static int reset_tree(struct tree *tree, struct checkout_opts *o, int worktree) opts.reset = 1; opts.merge = 1; opts.fn = oneway_merge; - opts.verbose_update = !o->quiet; + opts.verbose_update = !o->quiet && isatty(2); opts.src_index = &the_index; opts.dst_index = &the_index; parse_tree(tree); @@ -420,7 +420,7 @@ static int merge_working_tree(struct checkout_opts *opts, topts.update = 1; topts.merge = 1; topts.gently = opts->merge && old->commit; - topts.verbose_update = !opts->quiet; + topts.verbose_update = !opts->quiet && isatty(2); topts.fn = twoway_merge; if (opts->overwrite_ignore) { topts.dir = xcalloc(1, sizeof(*topts.dir)); diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index 10db15b184..149db88726 100644 --- a/builtin/fetch-pack.c +++ b/builtin/fetch-pack.c @@ -528,6 +528,7 @@ static void filter_refs(struct ref **refs, int nr_match, char **match) struct ref **newtail = &newlist; struct ref *ref, *next; struct ref *fastarray[32]; + int match_pos; if (nr_match && !args.fetch_all) { if (ARRAY_SIZE(fastarray) < nr_match) @@ -540,6 +541,7 @@ static void filter_refs(struct ref **refs, int nr_match, char **match) else return_refs = NULL; + match_pos = 0; for (ref = *refs; ref; ref = next) { next = ref->next; if (!memcmp(ref->name, "refs/", 5) && @@ -553,15 +555,20 @@ static void filter_refs(struct ref **refs, int nr_match, char **match) continue; } else { - int i; - for (i = 0; i < nr_match; i++) { - if (!strcmp(ref->name, match[i])) { - match[i][0] = '\0'; - return_refs[i] = ref; + int cmp = -1; + while (match_pos < nr_match) { + cmp = strcmp(ref->name, match[match_pos]); + if (cmp < 0) /* definitely do not have it */ + break; + else if (cmp == 0) { /* definitely have it */ + match[match_pos][0] = '\0'; + return_refs[match_pos] = ref; break; } + else /* might have it; keep looking */ + match_pos++; } - if (i < nr_match) + if (!cmp) continue; /* we will link it later */ } free(ref); @@ -777,6 +784,8 @@ static struct ref *do_fetch_pack(int fd[2], struct ref *ref = copy_ref_list(orig_ref); unsigned char sha1[20]; + sort_ref_list(&ref, ref_compare_name); + if (is_repository_shallow() && !server_supports("shallow")) die("Server does not support shallow clients"); if (server_supports("multi_ack_detailed")) { @@ -834,21 +843,12 @@ static int remove_duplicates(int nr_heads, char **heads) { int src, dst; - for (src = dst = 0; src < nr_heads; src++) { - /* If heads[src] is different from any of - * heads[0..dst], push it in. - */ - int i; - for (i = 0; i < dst; i++) { - if (!strcmp(heads[i], heads[src])) - break; - } - if (i < dst) - continue; - if (src != dst) - heads[dst] = heads[src]; - dst++; - } + if (!nr_heads) + return 0; + + for (src = dst = 1; src < nr_heads; src++) + if (strcmp(heads[src], heads[dst-1])) + heads[dst++] = heads[src]; return dst; } @@ -899,9 +899,11 @@ static void fetch_pack_setup(void) int cmd_fetch_pack(int argc, const char **argv, const char *prefix) { - int i, ret, nr_heads; + int i, ret; struct ref *ref = NULL; - char *dest = NULL, **heads; + const char *dest = NULL; + int alloc_heads = 0, nr_heads = 0; + char **heads = NULL; int fd[2]; char *pack_lockfile = NULL; char **pack_lockfile_ptr = NULL; @@ -909,84 +911,79 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) packet_trace_identity("fetch-pack"); - nr_heads = 0; - heads = NULL; - for (i = 1; i < argc; i++) { + for (i = 1; i < argc && *argv[i] == '-'; i++) { const char *arg = argv[i]; - if (*arg == '-') { - if (!prefixcmp(arg, "--upload-pack=")) { - args.uploadpack = arg + 14; - continue; - } - if (!prefixcmp(arg, "--exec=")) { - args.uploadpack = arg + 7; - continue; - } - if (!strcmp("--quiet", arg) || !strcmp("-q", arg)) { - args.quiet = 1; - continue; - } - if (!strcmp("--keep", arg) || !strcmp("-k", arg)) { - args.lock_pack = args.keep_pack; - args.keep_pack = 1; - continue; - } - if (!strcmp("--thin", arg)) { - args.use_thin_pack = 1; - continue; - } - if (!strcmp("--include-tag", arg)) { - args.include_tag = 1; - continue; - } - if (!strcmp("--all", arg)) { - args.fetch_all = 1; - continue; - } - if (!strcmp("--stdin", arg)) { - args.stdin_refs = 1; - continue; - } - if (!strcmp("-v", arg)) { - args.verbose = 1; - continue; - } - if (!prefixcmp(arg, "--depth=")) { - args.depth = strtol(arg + 8, NULL, 0); - continue; - } - if (!strcmp("--no-progress", arg)) { - args.no_progress = 1; - continue; - } - if (!strcmp("--stateless-rpc", arg)) { - args.stateless_rpc = 1; - continue; - } - if (!strcmp("--lock-pack", arg)) { - args.lock_pack = 1; - pack_lockfile_ptr = &pack_lockfile; - continue; - } - usage(fetch_pack_usage); + if (!prefixcmp(arg, "--upload-pack=")) { + args.uploadpack = arg + 14; + continue; } - dest = (char *)arg; - heads = (char **)(argv + i + 1); - nr_heads = argc - i - 1; - break; + if (!prefixcmp(arg, "--exec=")) { + args.uploadpack = arg + 7; + continue; + } + if (!strcmp("--quiet", arg) || !strcmp("-q", arg)) { + args.quiet = 1; + continue; + } + if (!strcmp("--keep", arg) || !strcmp("-k", arg)) { + args.lock_pack = args.keep_pack; + args.keep_pack = 1; + continue; + } + if (!strcmp("--thin", arg)) { + args.use_thin_pack = 1; + continue; + } + if (!strcmp("--include-tag", arg)) { + args.include_tag = 1; + continue; + } + if (!strcmp("--all", arg)) { + args.fetch_all = 1; + continue; + } + if (!strcmp("--stdin", arg)) { + args.stdin_refs = 1; + continue; + } + if (!strcmp("-v", arg)) { + args.verbose = 1; + continue; + } + if (!prefixcmp(arg, "--depth=")) { + args.depth = strtol(arg + 8, NULL, 0); + continue; + } + if (!strcmp("--no-progress", arg)) { + args.no_progress = 1; + continue; + } + if (!strcmp("--stateless-rpc", arg)) { + args.stateless_rpc = 1; + continue; + } + if (!strcmp("--lock-pack", arg)) { + args.lock_pack = 1; + pack_lockfile_ptr = &pack_lockfile; + continue; + } + usage(fetch_pack_usage); } - if (!dest) + + if (i < argc) + dest = argv[i++]; + else usage(fetch_pack_usage); + /* + * Copy refs from cmdline to growable list, then append any + * refs from the standard input: + */ + ALLOC_GROW(heads, argc - i, alloc_heads); + for (; i < argc; i++) + heads[nr_heads++] = xstrdup(argv[i]); if (args.stdin_refs) { - /* - * Copy refs from cmdline to new growable list, then - * append the refs from the standard input. - */ - int alloc_heads = nr_heads; - int size = nr_heads * sizeof(*heads); - heads = memcpy(xmalloc(size), heads, size); if (args.stateless_rpc) { /* in stateless RPC mode we use pkt-line to read * from stdin, until we get a flush packet @@ -1018,7 +1015,7 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) fd[0] = 0; fd[1] = 1; } else { - conn = git_connect(fd, (char *)dest, args.uploadpack, + conn = git_connect(fd, dest, args.uploadpack, args.verbose ? CONNECT_VERBOSE : 0); } @@ -1057,6 +1054,11 @@ int cmd_fetch_pack(int argc, const char **argv, const char *prefix) return ret; } +static int compare_heads(const void *a, const void *b) +{ + return strcmp(*(const char **)a, *(const char **)b); +} + struct ref *fetch_pack(struct fetch_pack_args *my_args, int fd[], struct child_process *conn, const struct ref *ref, @@ -1076,8 +1078,11 @@ struct ref *fetch_pack(struct fetch_pack_args *my_args, st.st_mtime = 0; } - if (heads && nr_heads) + if (heads && nr_heads) { + qsort(heads, nr_heads, sizeof(*heads), compare_heads); nr_heads = remove_duplicates(nr_heads, heads); + } + if (!ref) { packet_flush(fd[1]); die("no matching remote head"); diff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c index 4ee6a88d75..bf93b043b7 100644 --- a/builtin/fmt-merge-msg.c +++ b/builtin/fmt-merge-msg.c @@ -462,7 +462,10 @@ static void fmt_tag_signature(struct strbuf *tagbuf, strbuf_add(tagbuf, tag_body, buf + len - tag_body); } strbuf_complete_line(tagbuf); - strbuf_add_lines(tagbuf, "# ", sig->buf, sig->len); + if (sig->len) { + strbuf_addch(tagbuf, '\n'); + strbuf_add_lines(tagbuf, "# ", sig->buf, sig->len); + } } static void fmt_merge_msg_sigs(struct strbuf *out) @@ -627,8 +630,7 @@ int fmt_merge_msg(struct strbuf *in, struct strbuf *out, rev.ignore_merges = 1; rev.limited = 1; - if (suffixcmp(out->buf, "\n")) - strbuf_addch(out, '\n'); + strbuf_complete_line(out); for (i = 0; i < origins.nr; i++) shortlog(origins.items[i].string, diff --git a/builtin/grep.c b/builtin/grep.c index 643938d905..fe1726f5ef 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -600,15 +600,12 @@ static int file_callback(const struct option *opt, const char *arg, int unset) if (!patterns) die_errno(_("cannot open '%s'"), arg); while (strbuf_getline(&sb, patterns, '\n') == 0) { - char *s; - size_t len; - /* ignore empty line like grep does */ if (sb.len == 0) continue; - s = strbuf_detach(&sb, &len); - append_grep_pat(grep_opt, s, len, arg, ++lno, GREP_PATTERN); + append_grep_pat(grep_opt, sb.buf, sb.len, arg, ++lno, + GREP_PATTERN); } if (!from_stdin) fclose(patterns); diff --git a/builtin/index-pack.c b/builtin/index-pack.c index 83555e5635..dc2cfe6e6f 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -9,6 +9,7 @@ #include "progress.h" #include "fsck.h" #include "exec_cmd.h" +#include "thread-utils.h" static const char index_pack_usage[] = "git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--verify] [--strict] (<pack-file> | --stdin [--fix-thin] [<pack-file>])"; @@ -38,6 +39,19 @@ struct base_data { int ofs_first, ofs_last; }; +#if !defined(NO_PTHREADS) && defined(NO_PREAD) +/* NO_PREAD uses compat/pread.c, which is not thread-safe. Disable threading. */ +#define NO_PTHREADS +#endif + +struct thread_local { +#ifndef NO_PTHREADS + pthread_t thread; +#endif + struct base_data *base_cache; + size_t base_cache_used; +}; + /* * Even if sizeof(union delta_base) == 24 on 64-bit archs, we really want * to memcmp() only the first 20 bytes. @@ -54,11 +68,11 @@ struct delta_entry { static struct object_entry *objects; static struct delta_entry *deltas; -static struct base_data *base_cache; -static size_t base_cache_used; +static struct thread_local nothread_data; static int nr_objects; static int nr_deltas; static int nr_resolved_deltas; +static int nr_threads; static int from_stdin; static int strict; @@ -75,6 +89,77 @@ static git_SHA_CTX input_ctx; static uint32_t input_crc32; static int input_fd, output_fd, pack_fd; +#ifndef NO_PTHREADS + +static struct thread_local *thread_data; +static int nr_dispatched; +static int threads_active; + +static pthread_mutex_t read_mutex; +#define read_lock() lock_mutex(&read_mutex) +#define read_unlock() unlock_mutex(&read_mutex) + +static pthread_mutex_t counter_mutex; +#define counter_lock() lock_mutex(&counter_mutex) +#define counter_unlock() unlock_mutex(&counter_mutex) + +static pthread_mutex_t work_mutex; +#define work_lock() lock_mutex(&work_mutex) +#define work_unlock() unlock_mutex(&work_mutex) + +static pthread_key_t key; + +static inline void lock_mutex(pthread_mutex_t *mutex) +{ + if (threads_active) + pthread_mutex_lock(mutex); +} + +static inline void unlock_mutex(pthread_mutex_t *mutex) +{ + if (threads_active) + pthread_mutex_unlock(mutex); +} + +/* + * Mutex and conditional variable can't be statically-initialized on Windows. + */ +static void init_thread(void) +{ + init_recursive_mutex(&read_mutex); + pthread_mutex_init(&counter_mutex, NULL); + pthread_mutex_init(&work_mutex, NULL); + pthread_key_create(&key, NULL); + thread_data = xcalloc(nr_threads, sizeof(*thread_data)); + threads_active = 1; +} + +static void cleanup_thread(void) +{ + if (!threads_active) + return; + threads_active = 0; + pthread_mutex_destroy(&read_mutex); + pthread_mutex_destroy(&counter_mutex); + pthread_mutex_destroy(&work_mutex); + pthread_key_delete(key); + free(thread_data); +} + +#else + +#define read_lock() +#define read_unlock() + +#define counter_lock() +#define counter_unlock() + +#define work_lock() +#define work_unlock() + +#endif + + static int mark_link(struct object *obj, int type, void *data) { if (!obj) @@ -226,6 +311,25 @@ static NORETURN void bad_object(unsigned long offset, const char *format, ...) die(_("pack has bad object at offset %lu: %s"), offset, buf); } +static inline struct thread_local *get_thread_data(void) +{ +#ifndef NO_PTHREADS + if (threads_active) + return pthread_getspecific(key); + assert(!threads_active && + "This should only be reached when all threads are gone"); +#endif + return ¬hread_data; +} + +#ifndef NO_PTHREADS +static void set_thread_data(struct thread_local *data) +{ + if (threads_active) + pthread_setspecific(key, data); +} +#endif + static struct base_data *alloc_base_data(void) { struct base_data *base = xmalloc(sizeof(struct base_data)); @@ -240,15 +344,16 @@ static void free_base_data(struct base_data *c) if (c->data) { free(c->data); c->data = NULL; - base_cache_used -= c->size; + get_thread_data()->base_cache_used -= c->size; } } static void prune_base_data(struct base_data *retain) { struct base_data *b; - for (b = base_cache; - base_cache_used > delta_base_cache_limit && b; + struct thread_local *data = get_thread_data(); + for (b = data->base_cache; + data->base_cache_used > delta_base_cache_limit && b; b = b->child) { if (b->data && b != retain) free_base_data(b); @@ -260,12 +365,12 @@ static void link_base_data(struct base_data *base, struct base_data *c) if (base) base->child = c; else - base_cache = c; + get_thread_data()->base_cache = c; c->base = base; c->child = NULL; if (c->data) - base_cache_used += c->size; + get_thread_data()->base_cache_used += c->size; prune_base_data(c); } @@ -275,7 +380,7 @@ static void unlink_base_data(struct base_data *c) if (base) base->child = NULL; else - base_cache = NULL; + get_thread_data()->base_cache = NULL; free_base_data(c); } @@ -467,19 +572,24 @@ static void sha1_object(const void *data, unsigned long size, enum object_type type, unsigned char *sha1) { hash_sha1_file(data, size, typename(type), sha1); + read_lock(); if (has_sha1_file(sha1)) { void *has_data; enum object_type has_type; unsigned long has_size; has_data = read_sha1_file(sha1, &has_type, &has_size); + read_unlock(); if (!has_data) die(_("cannot read existing object %s"), sha1_to_hex(sha1)); if (size != has_size || type != has_type || memcmp(data, has_data, size) != 0) die(_("SHA1 COLLISION FOUND WITH %s !"), sha1_to_hex(sha1)); free(has_data); - } + } else + read_unlock(); + if (strict) { + read_lock(); if (type == OBJ_BLOB) { struct blob *blob = lookup_blob(sha1); if (blob) @@ -513,6 +623,7 @@ static void sha1_object(const void *data, unsigned long size, } obj->flags |= FLAG_CHECKED; } + read_unlock(); } } @@ -558,7 +669,7 @@ static void *get_base_data(struct base_data *c) if (!delta_nr) { c->data = get_data_from_pack(obj); c->size = obj->size; - base_cache_used += c->size; + get_thread_data()->base_cache_used += c->size; prune_base_data(c); } for (; delta_nr > 0; delta_nr--) { @@ -574,7 +685,7 @@ static void *get_base_data(struct base_data *c) free(raw); if (!c->data) bad_object(obj->idx.offset, _("failed to apply delta")); - base_cache_used += c->size; + get_thread_data()->base_cache_used += c->size; prune_base_data(c); } free(delta); @@ -602,7 +713,9 @@ static void resolve_delta(struct object_entry *delta_obj, bad_object(delta_obj->idx.offset, _("failed to apply delta")); sha1_object(result->data, result->size, delta_obj->real_type, delta_obj->idx.sha1); + counter_lock(); nr_resolved_deltas++; + counter_unlock(); } static struct base_data *find_unresolved_deltas_1(struct base_data *base, @@ -688,19 +801,50 @@ static int compare_delta_entry(const void *a, const void *b) objects[delta_b->obj_no].type); } -/* Parse all objects and return the pack content SHA1 hash */ +static void resolve_base(struct object_entry *obj) +{ + struct base_data *base_obj = alloc_base_data(); + base_obj->obj = obj; + base_obj->data = NULL; + find_unresolved_deltas(base_obj); +} + +#ifndef NO_PTHREADS +static void *threaded_second_pass(void *data) +{ + set_thread_data(data); + for (;;) { + int i; + work_lock(); + display_progress(progress, nr_resolved_deltas); + while (nr_dispatched < nr_objects && + is_delta_type(objects[nr_dispatched].type)) + nr_dispatched++; + if (nr_dispatched >= nr_objects) { + work_unlock(); + break; + } + i = nr_dispatched++; + work_unlock(); + + resolve_base(&objects[i]); + } + return NULL; +} +#endif + +/* + * First pass: + * - find locations of all objects; + * - calculate SHA1 of all non-delta objects; + * - remember base (SHA1 or offset) for all deltas. + */ static void parse_pack_objects(unsigned char *sha1) { int i; struct delta_entry *delta = deltas; struct stat st; - /* - * First pass: - * - find locations of all objects; - * - calculate SHA1 of all non-delta objects; - * - remember base (SHA1 or offset) for all deltas. - */ if (verbose) progress = start_progress( from_stdin ? _("Receiving objects") : _("Indexing objects"), @@ -734,6 +878,19 @@ static void parse_pack_objects(unsigned char *sha1) if (S_ISREG(st.st_mode) && lseek(input_fd, 0, SEEK_CUR) - input_len != st.st_size) die(_("pack has junk at the end")); +} + +/* + * Second pass: + * - for all non-delta objects, look if it is used as a base for + * deltas; + * - if used as a base, uncompress the object and apply all deltas, + * recursively checking if the resulting object is used as a base + * for some more deltas. + */ +static void resolve_deltas(void) +{ + int i; if (!nr_deltas) return; @@ -742,29 +899,83 @@ static void parse_pack_objects(unsigned char *sha1) qsort(deltas, nr_deltas, sizeof(struct delta_entry), compare_delta_entry); - /* - * Second pass: - * - for all non-delta objects, look if it is used as a base for - * deltas; - * - if used as a base, uncompress the object and apply all deltas, - * recursively checking if the resulting object is used as a base - * for some more deltas. - */ if (verbose) progress = start_progress(_("Resolving deltas"), nr_deltas); + +#ifndef NO_PTHREADS + nr_dispatched = 0; + if (nr_threads > 1 || getenv("GIT_FORCE_THREADS")) { + init_thread(); + for (i = 0; i < nr_threads; i++) { + int ret = pthread_create(&thread_data[i].thread, NULL, + threaded_second_pass, thread_data + i); + if (ret) + die("unable to create thread: %s", strerror(ret)); + } + for (i = 0; i < nr_threads; i++) + pthread_join(thread_data[i].thread, NULL); + cleanup_thread(); + return; + } +#endif + for (i = 0; i < nr_objects; i++) { struct object_entry *obj = &objects[i]; - struct base_data *base_obj = alloc_base_data(); if (is_delta_type(obj->type)) continue; - base_obj->obj = obj; - base_obj->data = NULL; - find_unresolved_deltas(base_obj); + resolve_base(obj); display_progress(progress, nr_resolved_deltas); } } +/* + * Third pass: + * - append objects to convert thin pack to full pack if required + * - write the final 20-byte SHA-1 + */ +static void fix_unresolved_deltas(struct sha1file *f, int nr_unresolved); +static void conclude_pack(int fix_thin_pack, const char *curr_pack, unsigned char *pack_sha1) +{ + if (nr_deltas == nr_resolved_deltas) { + stop_progress(&progress); + /* Flush remaining pack final 20-byte SHA1. */ + flush(); + return; + } + + if (fix_thin_pack) { + struct sha1file *f; + unsigned char read_sha1[20], tail_sha1[20]; + char msg[48]; + int nr_unresolved = nr_deltas - nr_resolved_deltas; + int nr_objects_initial = nr_objects; + if (nr_unresolved <= 0) + die(_("confusion beyond insanity")); + objects = xrealloc(objects, + (nr_objects + nr_unresolved + 1) + * sizeof(*objects)); + f = sha1fd(output_fd, curr_pack); + fix_unresolved_deltas(f, nr_unresolved); + sprintf(msg, "completed with %d local objects", + nr_objects - nr_objects_initial); + stop_progress_msg(&progress, msg); + sha1close(f, tail_sha1, 0); + hashcpy(read_sha1, pack_sha1); + fixup_pack_header_footer(output_fd, pack_sha1, + curr_pack, nr_objects, + read_sha1, consumed_bytes-20); + if (hashcmp(read_sha1, tail_sha1) != 0) + die("Unexpected tail checksum for %s " + "(disk corruption?)", curr_pack); + } + if (nr_deltas != nr_resolved_deltas) + die(Q_("pack has %d unresolved delta", + "pack has %d unresolved deltas", + nr_deltas - nr_resolved_deltas), + nr_deltas - nr_resolved_deltas); +} + static int write_compressed(struct sha1file *f, void *in, unsigned int size) { git_zstream stream; @@ -968,6 +1179,18 @@ static int git_index_pack_config(const char *k, const char *v, void *cb) die("bad pack.indexversion=%"PRIu32, opts->version); return 0; } + if (!strcmp(k, "pack.threads")) { + nr_threads = git_config_int(k, v); + if (nr_threads < 0) + die("invalid number of threads specified (%d)", + nr_threads); +#ifdef NO_PTHREADS + if (nr_threads != 1) + warning("no threads support, ignoring %s", k); + nr_threads = 1; +#endif + return 0; + } return git_default_config(k, v, cb); } @@ -1129,6 +1352,17 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix) keep_msg = ""; } else if (!prefixcmp(arg, "--keep=")) { keep_msg = arg + 7; + } else if (!prefixcmp(arg, "--threads=")) { + char *end; + nr_threads = strtoul(arg+10, &end, 0); + if (!arg[10] || *end || nr_threads < 0) + usage(index_pack_usage); +#ifdef NO_PTHREADS + if (nr_threads != 1) + warning("no threads support, " + "ignoring %s", arg); + nr_threads = 1; +#endif } else if (!prefixcmp(arg, "--pack_header=")) { struct pack_header *hdr; char *c; @@ -1200,47 +1434,22 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix) if (strict) opts.flags |= WRITE_IDX_STRICT; +#ifndef NO_PTHREADS + if (!nr_threads) { + nr_threads = online_cpus(); + /* An experiment showed that more threads does not mean faster */ + if (nr_threads > 3) + nr_threads = 3; + } +#endif + curr_pack = open_pack_file(pack_name); parse_pack_header(); objects = xcalloc(nr_objects + 1, sizeof(struct object_entry)); deltas = xcalloc(nr_objects, sizeof(struct delta_entry)); parse_pack_objects(pack_sha1); - if (nr_deltas == nr_resolved_deltas) { - stop_progress(&progress); - /* Flush remaining pack final 20-byte SHA1. */ - flush(); - } else { - if (fix_thin_pack) { - struct sha1file *f; - unsigned char read_sha1[20], tail_sha1[20]; - char msg[48]; - int nr_unresolved = nr_deltas - nr_resolved_deltas; - int nr_objects_initial = nr_objects; - if (nr_unresolved <= 0) - die(_("confusion beyond insanity")); - objects = xrealloc(objects, - (nr_objects + nr_unresolved + 1) - * sizeof(*objects)); - f = sha1fd(output_fd, curr_pack); - fix_unresolved_deltas(f, nr_unresolved); - sprintf(msg, "completed with %d local objects", - nr_objects - nr_objects_initial); - stop_progress_msg(&progress, msg); - sha1close(f, tail_sha1, 0); - hashcpy(read_sha1, pack_sha1); - fixup_pack_header_footer(output_fd, pack_sha1, - curr_pack, nr_objects, - read_sha1, consumed_bytes-20); - if (hashcmp(read_sha1, tail_sha1) != 0) - die("Unexpected tail checksum for %s " - "(disk corruption?)", curr_pack); - } - if (nr_deltas != nr_resolved_deltas) - die(Q_("pack has %d unresolved delta", - "pack has %d unresolved deltas", - nr_deltas - nr_resolved_deltas), - nr_deltas - nr_resolved_deltas); - } + resolve_deltas(); + conclude_pack(fix_thin_pack, curr_pack, pack_sha1); free(deltas); if (strict) check_objects(); diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index 1861093e9d..ccfcbad146 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -200,22 +200,178 @@ static void copy_pack_data(struct sha1file *f, } /* Return 0 if we will bust the pack-size limit */ -static unsigned long write_object(struct sha1file *f, - struct object_entry *entry, - off_t write_offset) +static unsigned long write_no_reuse_object(struct sha1file *f, struct object_entry *entry, + unsigned long limit, int usable_delta) { - unsigned long size, limit, datalen; - void *buf; + unsigned long size, datalen; unsigned char header[10], dheader[10]; unsigned hdrlen; enum object_type type; + void *buf; + + if (!usable_delta) { + buf = read_sha1_file(entry->idx.sha1, &type, &size); + if (!buf) + die("unable to read %s", sha1_to_hex(entry->idx.sha1)); + /* + * make sure no cached delta data remains from a + * previous attempt before a pack split occurred. + */ + free(entry->delta_data); + entry->delta_data = NULL; + entry->z_delta_size = 0; + } else if (entry->delta_data) { + size = entry->delta_size; + buf = entry->delta_data; + entry->delta_data = NULL; + type = (allow_ofs_delta && entry->delta->idx.offset) ? + OBJ_OFS_DELTA : OBJ_REF_DELTA; + } else { + buf = get_delta(entry); + size = entry->delta_size; + type = (allow_ofs_delta && entry->delta->idx.offset) ? + OBJ_OFS_DELTA : OBJ_REF_DELTA; + } + + if (entry->z_delta_size) + datalen = entry->z_delta_size; + else + datalen = do_compress(&buf, size); + + /* + * The object header is a byte of 'type' followed by zero or + * more bytes of length. + */ + hdrlen = encode_in_pack_object_header(type, size, header); + + if (type == OBJ_OFS_DELTA) { + /* + * Deltas with relative base contain an additional + * encoding of the relative offset for the delta + * base from this object's position in the pack. + */ + off_t ofs = entry->idx.offset - entry->delta->idx.offset; + unsigned pos = sizeof(dheader) - 1; + dheader[pos] = ofs & 127; + while (ofs >>= 7) + dheader[--pos] = 128 | (--ofs & 127); + if (limit && hdrlen + sizeof(dheader) - pos + datalen + 20 >= limit) { + free(buf); + return 0; + } + sha1write(f, header, hdrlen); + sha1write(f, dheader + pos, sizeof(dheader) - pos); + hdrlen += sizeof(dheader) - pos; + } else if (type == OBJ_REF_DELTA) { + /* + * Deltas with a base reference contain + * an additional 20 bytes for the base sha1. + */ + if (limit && hdrlen + 20 + datalen + 20 >= limit) { + free(buf); + return 0; + } + sha1write(f, header, hdrlen); + sha1write(f, entry->delta->idx.sha1, 20); + hdrlen += 20; + } else { + if (limit && hdrlen + datalen + 20 >= limit) { + free(buf); + return 0; + } + sha1write(f, header, hdrlen); + } + sha1write(f, buf, datalen); + free(buf); + + return hdrlen + datalen; +} + +/* Return 0 if we will bust the pack-size limit */ +static unsigned long write_reuse_object(struct sha1file *f, struct object_entry *entry, + unsigned long limit, int usable_delta) +{ + struct packed_git *p = entry->in_pack; + struct pack_window *w_curs = NULL; + struct revindex_entry *revidx; + off_t offset; + enum object_type type = entry->type; + unsigned long datalen; + unsigned char header[10], dheader[10]; + unsigned hdrlen; + + if (entry->delta) + type = (allow_ofs_delta && entry->delta->idx.offset) ? + OBJ_OFS_DELTA : OBJ_REF_DELTA; + hdrlen = encode_in_pack_object_header(type, entry->size, header); + + offset = entry->in_pack_offset; + revidx = find_pack_revindex(p, offset); + datalen = revidx[1].offset - offset; + if (!pack_to_stdout && p->index_version > 1 && + check_pack_crc(p, &w_curs, offset, datalen, revidx->nr)) { + error("bad packed object CRC for %s", sha1_to_hex(entry->idx.sha1)); + unuse_pack(&w_curs); + return write_no_reuse_object(f, entry, limit, usable_delta); + } + + offset += entry->in_pack_header_size; + datalen -= entry->in_pack_header_size; + + if (!pack_to_stdout && p->index_version == 1 && + check_pack_inflate(p, &w_curs, offset, datalen, entry->size)) { + error("corrupt packed object for %s", sha1_to_hex(entry->idx.sha1)); + unuse_pack(&w_curs); + return write_no_reuse_object(f, entry, limit, usable_delta); + } + + if (type == OBJ_OFS_DELTA) { + off_t ofs = entry->idx.offset - entry->delta->idx.offset; + unsigned pos = sizeof(dheader) - 1; + dheader[pos] = ofs & 127; + while (ofs >>= 7) + dheader[--pos] = 128 | (--ofs & 127); + if (limit && hdrlen + sizeof(dheader) - pos + datalen + 20 >= limit) { + unuse_pack(&w_curs); + return 0; + } + sha1write(f, header, hdrlen); + sha1write(f, dheader + pos, sizeof(dheader) - pos); + hdrlen += sizeof(dheader) - pos; + reused_delta++; + } else if (type == OBJ_REF_DELTA) { + if (limit && hdrlen + 20 + datalen + 20 >= limit) { + unuse_pack(&w_curs); + return 0; + } + sha1write(f, header, hdrlen); + sha1write(f, entry->delta->idx.sha1, 20); + hdrlen += 20; + reused_delta++; + } else { + if (limit && hdrlen + datalen + 20 >= limit) { + unuse_pack(&w_curs); + return 0; + } + sha1write(f, header, hdrlen); + } + copy_pack_data(f, p, &w_curs, offset, datalen); + unuse_pack(&w_curs); + reused++; + return hdrlen + datalen; +} + +/* Return 0 if we will bust the pack-size limit */ +static unsigned long write_object(struct sha1file *f, + struct object_entry *entry, + off_t write_offset) +{ + unsigned long limit, len; int usable_delta, to_reuse; if (!pack_to_stdout) crc32_begin(f); - type = entry->type; - /* apply size limit if limited packsize and not first object */ if (!pack_size_limit || !nr_written) limit = 0; @@ -243,11 +399,11 @@ static unsigned long write_object(struct sha1file *f, to_reuse = 0; /* explicit */ else if (!entry->in_pack) to_reuse = 0; /* can't reuse what we don't have */ - else if (type == OBJ_REF_DELTA || type == OBJ_OFS_DELTA) + else if (entry->type == OBJ_REF_DELTA || entry->type == OBJ_OFS_DELTA) /* check_object() decided it for us ... */ to_reuse = usable_delta; /* ... but pack split may override that */ - else if (type != entry->in_pack_type) + else if (entry->type != entry->in_pack_type) to_reuse = 0; /* pack has delta which is unusable */ else if (entry->delta) to_reuse = 0; /* we want to pack afresh */ @@ -256,153 +412,19 @@ static unsigned long write_object(struct sha1file *f, * and we do not need to deltify it. */ - if (!to_reuse) { - no_reuse: - if (!usable_delta) { - buf = read_sha1_file(entry->idx.sha1, &type, &size); - if (!buf) - die("unable to read %s", sha1_to_hex(entry->idx.sha1)); - /* - * make sure no cached delta data remains from a - * previous attempt before a pack split occurred. - */ - free(entry->delta_data); - entry->delta_data = NULL; - entry->z_delta_size = 0; - } else if (entry->delta_data) { - size = entry->delta_size; - buf = entry->delta_data; - entry->delta_data = NULL; - type = (allow_ofs_delta && entry->delta->idx.offset) ? - OBJ_OFS_DELTA : OBJ_REF_DELTA; - } else { - buf = get_delta(entry); - size = entry->delta_size; - type = (allow_ofs_delta && entry->delta->idx.offset) ? - OBJ_OFS_DELTA : OBJ_REF_DELTA; - } - - if (entry->z_delta_size) - datalen = entry->z_delta_size; - else - datalen = do_compress(&buf, size); - - /* - * The object header is a byte of 'type' followed by zero or - * more bytes of length. - */ - hdrlen = encode_in_pack_object_header(type, size, header); - - if (type == OBJ_OFS_DELTA) { - /* - * Deltas with relative base contain an additional - * encoding of the relative offset for the delta - * base from this object's position in the pack. - */ - off_t ofs = entry->idx.offset - entry->delta->idx.offset; - unsigned pos = sizeof(dheader) - 1; - dheader[pos] = ofs & 127; - while (ofs >>= 7) - dheader[--pos] = 128 | (--ofs & 127); - if (limit && hdrlen + sizeof(dheader) - pos + datalen + 20 >= limit) { - free(buf); - return 0; - } - sha1write(f, header, hdrlen); - sha1write(f, dheader + pos, sizeof(dheader) - pos); - hdrlen += sizeof(dheader) - pos; - } else if (type == OBJ_REF_DELTA) { - /* - * Deltas with a base reference contain - * an additional 20 bytes for the base sha1. - */ - if (limit && hdrlen + 20 + datalen + 20 >= limit) { - free(buf); - return 0; - } - sha1write(f, header, hdrlen); - sha1write(f, entry->delta->idx.sha1, 20); - hdrlen += 20; - } else { - if (limit && hdrlen + datalen + 20 >= limit) { - free(buf); - return 0; - } - sha1write(f, header, hdrlen); - } - sha1write(f, buf, datalen); - free(buf); - } - else { - struct packed_git *p = entry->in_pack; - struct pack_window *w_curs = NULL; - struct revindex_entry *revidx; - off_t offset; - - if (entry->delta) - type = (allow_ofs_delta && entry->delta->idx.offset) ? - OBJ_OFS_DELTA : OBJ_REF_DELTA; - hdrlen = encode_in_pack_object_header(type, entry->size, header); - - offset = entry->in_pack_offset; - revidx = find_pack_revindex(p, offset); - datalen = revidx[1].offset - offset; - if (!pack_to_stdout && p->index_version > 1 && - check_pack_crc(p, &w_curs, offset, datalen, revidx->nr)) { - error("bad packed object CRC for %s", sha1_to_hex(entry->idx.sha1)); - unuse_pack(&w_curs); - goto no_reuse; - } - - offset += entry->in_pack_header_size; - datalen -= entry->in_pack_header_size; - if (!pack_to_stdout && p->index_version == 1 && - check_pack_inflate(p, &w_curs, offset, datalen, entry->size)) { - error("corrupt packed object for %s", sha1_to_hex(entry->idx.sha1)); - unuse_pack(&w_curs); - goto no_reuse; - } + if (!to_reuse) + len = write_no_reuse_object(f, entry, limit, usable_delta); + else + len = write_reuse_object(f, entry, limit, usable_delta); + if (!len) + return 0; - if (type == OBJ_OFS_DELTA) { - off_t ofs = entry->idx.offset - entry->delta->idx.offset; - unsigned pos = sizeof(dheader) - 1; - dheader[pos] = ofs & 127; - while (ofs >>= 7) - dheader[--pos] = 128 | (--ofs & 127); - if (limit && hdrlen + sizeof(dheader) - pos + datalen + 20 >= limit) { - unuse_pack(&w_curs); - return 0; - } - sha1write(f, header, hdrlen); - sha1write(f, dheader + pos, sizeof(dheader) - pos); - hdrlen += sizeof(dheader) - pos; - reused_delta++; - } else if (type == OBJ_REF_DELTA) { - if (limit && hdrlen + 20 + datalen + 20 >= limit) { - unuse_pack(&w_curs); - return 0; - } - sha1write(f, header, hdrlen); - sha1write(f, entry->delta->idx.sha1, 20); - hdrlen += 20; - reused_delta++; - } else { - if (limit && hdrlen + datalen + 20 >= limit) { - unuse_pack(&w_curs); - return 0; - } - sha1write(f, header, hdrlen); - } - copy_pack_data(f, p, &w_curs, offset, datalen); - unuse_pack(&w_curs); - reused++; - } if (usable_delta) written_delta++; written++; if (!pack_to_stdout) entry->idx.crc32 = crc32_end(f); - return hdrlen + datalen; + return len; } enum write_one_status { @@ -1327,7 +1349,7 @@ static void get_object_details(void) for (i = 0; i < nr_objects; i++) { struct object_entry *entry = sorted_by_offset[i]; check_object(entry); - if (big_file_threshold <= entry->size) + if (big_file_threshold < entry->size) entry->no_try_delta = 1; } diff --git a/builtin/remote.c b/builtin/remote.c index 0f0c594b2f..920262d76e 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -674,7 +674,7 @@ static int mv(int argc, const char **argv) strlen(rename.old), rename.new, strlen(rename.new)); } else - warning(_("Not updating non-default fetch respec\n" + warning(_("Not updating non-default fetch refspec\n" "\t%s\n" "\tPlease update the configuration manually if necessary."), buf2.buf); @@ -951,6 +951,7 @@ extern struct alternate_object_database { char base[FLEX_ARRAY]; /* more */ } *alt_odb_list; extern void prepare_alt_odb(void); +extern void read_info_alternates(const char * relative_base, int depth); extern void add_to_alternates_file(const char *reference); typedef int alt_odb_fn(struct alternate_object_database *, void *); extern void foreach_alt_odb(alt_odb_fn, void*); diff --git a/compat/win32/pthread.h b/compat/win32/pthread.h index 2e20548557..8ad187344f 100644 --- a/compat/win32/pthread.h +++ b/compat/win32/pthread.h @@ -86,6 +86,11 @@ static inline int pthread_key_create(pthread_key_t *keyp, void (*destructor)(voi return (*keyp = TlsAlloc()) == TLS_OUT_OF_INDEXES ? EAGAIN : 0; } +static inline int pthread_key_delete(pthread_key_t key) +{ + return TlsFree(key) ? 0 : EINVAL; +} + static inline int pthread_setspecific(pthread_key_t key, const void *value) { return TlsSetValue(key, (void *)value) ? 0 : EINVAL; diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 9f56ec7a6b..1689f99539 100755 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -676,9 +676,7 @@ __git_complete_revlist_file () *) pfx="$ref:$pfx" ;; esac - local IFS=$'\n' - COMPREPLY=($(compgen -P "$pfx" \ - -W "$(git --git-dir="$(__gitdir)" ls-tree "$ls" \ + __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" \ | sed '/^100... blob /{ s,^.* ,, s,$, , @@ -692,7 +690,7 @@ __git_complete_revlist_file () s,$,/, } s/^.* //')" \ - -- "$cur_")) + "$pfx" "$cur_" "" ;; *...*) pfx="${cur_%...*}..." @@ -2599,25 +2597,10 @@ _git_whatchanged () _git_log } -_git () +_main_git () { local i c=1 command __git_dir - if [[ -n ${ZSH_VERSION-} ]]; then - emulate -L bash - setopt KSH_TYPESET - - # workaround zsh's bug that leaves 'words' as a special - # variable in versions < 4.3.12 - typeset -h words - - # workaround zsh's bug that quotes spaces in the COMPREPLY - # array if IFS doesn't contain spaces. - typeset -h IFS - fi - - local cur words cword prev - _get_comp_words_by_ref -n =: cur words cword prev while [ $c -lt $cword ]; do i="${words[c]}" case "$i" in @@ -2665,24 +2648,8 @@ _git () fi } -_gitk () +_main_gitk () { - if [[ -n ${ZSH_VERSION-} ]]; then - emulate -L bash - setopt KSH_TYPESET - - # workaround zsh's bug that leaves 'words' as a special - # variable in versions < 4.3.12 - typeset -h words - - # workaround zsh's bug that quotes spaces in the COMPREPLY - # array if IFS doesn't contain spaces. - typeset -h IFS - fi - - local cur words cword prev - _get_comp_words_by_ref -n =: cur words cword prev - __git_has_doubledash && return local g="$(__gitdir)" @@ -2703,16 +2670,55 @@ _gitk () __git_complete_revlist } -complete -o bashdefault -o default -o nospace -F _git git 2>/dev/null \ - || complete -o default -o nospace -F _git git -complete -o bashdefault -o default -o nospace -F _gitk gitk 2>/dev/null \ - || complete -o default -o nospace -F _gitk gitk +__git_func_wrap () +{ + if [[ -n ${ZSH_VERSION-} ]]; then + emulate -L bash + setopt KSH_TYPESET + + # workaround zsh's bug that leaves 'words' as a special + # variable in versions < 4.3.12 + typeset -h words + + # workaround zsh's bug that quotes spaces in the COMPREPLY + # array if IFS doesn't contain spaces. + typeset -h IFS + fi + local cur words cword prev + _get_comp_words_by_ref -n =: cur words cword prev + $1 +} + +# Setup completion for certain functions defined above by setting common +# variables and workarounds. +# This is NOT a public function; use at your own risk. +__git_complete () +{ + local wrapper="__git_wrap${2}" + eval "$wrapper () { __git_func_wrap $2 ; }" + complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \ + || complete -o default -o nospace -F $wrapper $1 +} + +# wrapper for backwards compatibility +_git () +{ + __git_wrap_main_git +} + +# wrapper for backwards compatibility +_gitk () +{ + __git_wrap_main_gitk +} + +__git_complete git _main_git +__git_complete gitk _main_gitk # The following are necessary only for Cygwin, and only are needed # when the user has tab-completed the executable name and consequently # included the '.exe' suffix. # if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then -complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \ - || complete -o default -o nospace -F _git git.exe +__git_complete git.exe _main_git fi diff --git a/contrib/credential/osxkeychain/Makefile b/contrib/credential/osxkeychain/Makefile index 75c07f8be4..4b3a08a2ba 100644 --- a/contrib/credential/osxkeychain/Makefile +++ b/contrib/credential/osxkeychain/Makefile @@ -2,10 +2,13 @@ all:: git-credential-osxkeychain CC = gcc RM = rm -f -CFLAGS = -g -Wall +CFLAGS = -g -O2 -Wall + +-include ../../../config.mak.autogen +-include ../../../config.mak git-credential-osxkeychain: git-credential-osxkeychain.o - $(CC) -o $@ $< -Wl,-framework -Wl,Security + $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) -Wl,-framework -Wl,Security git-credential-osxkeychain.o: git-credential-osxkeychain.c $(CC) -c $(CFLAGS) $< diff --git a/diff-no-index.c b/diff-no-index.c index b44473e3c1..f0b0010aed 100644 --- a/diff-no-index.c +++ b/diff-no-index.c @@ -68,6 +68,7 @@ static int queue_diff(struct diff_options *o, struct string_list p1 = STRING_LIST_INIT_DUP; struct string_list p2 = STRING_LIST_INIT_DUP; int i1, i2, ret = 0; + size_t len1 = 0, len2 = 0; if (name1 && read_directory(name1, &p1)) return -1; @@ -80,18 +81,23 @@ static int queue_diff(struct diff_options *o, strbuf_addstr(&buffer1, name1); if (buffer1.len && buffer1.buf[buffer1.len - 1] != '/') strbuf_addch(&buffer1, '/'); + len1 = buffer1.len; } if (name2) { strbuf_addstr(&buffer2, name2); if (buffer2.len && buffer2.buf[buffer2.len - 1] != '/') strbuf_addch(&buffer2, '/'); + len2 = buffer2.len; } for (i1 = i2 = 0; !ret && (i1 < p1.nr || i2 < p2.nr); ) { const char *n1, *n2; int comp; + strbuf_setlen(&buffer1, len1); + strbuf_setlen(&buffer2, len2); + if (i1 == p1.nr) comp = 1; else if (i2 == p2.nr) @@ -117,8 +123,8 @@ static int queue_diff(struct diff_options *o, } string_list_clear(&p1, 0); string_list_clear(&p2, 0); - strbuf_reset(&buffer1); - strbuf_reset(&buffer2); + strbuf_release(&buffer1); + strbuf_release(&buffer2); return ret; } else { @@ -74,7 +74,6 @@ char *common_prefix(const char **pathspec) int fill_directory(struct dir_struct *dir, const char **pathspec) { - const char *path; size_t len; /* @@ -82,15 +81,9 @@ int fill_directory(struct dir_struct *dir, const char **pathspec) * use that to optimize the directory walk */ len = common_prefix_len(pathspec); - path = ""; - - if (len) - path = xmemdupz(*pathspec, len); /* Read the directory and prune it */ - read_directory(dir, path, len, pathspec); - if (*path) - free((char *)path); + read_directory(dir, pathspec ? *pathspec : "", len, pathspec); return len; } @@ -960,16 +953,17 @@ static int read_directory_recursive(struct dir_struct *dir, int check_only, const struct path_simplify *simplify) { - DIR *fdir = opendir(*base ? base : "."); + DIR *fdir; int contents = 0; struct dirent *de; struct strbuf path = STRBUF_INIT; - if (!fdir) - return 0; - strbuf_add(&path, base, baselen); + fdir = opendir(path.len ? path.buf : "."); + if (!fdir) + goto out; + while ((de = readdir(fdir)) != NULL) { switch (treat_path(dir, de, &path, baselen, simplify)) { case path_recurse: @@ -984,12 +978,11 @@ static int read_directory_recursive(struct dir_struct *dir, } contents++; if (check_only) - goto exit_early; - else - dir_add_name(dir, path.buf, path.len); + break; + dir_add_name(dir, path.buf, path.len); } -exit_early: closedir(fdir); + out: strbuf_release(&path); return contents; @@ -1302,7 +1302,7 @@ class P4Submit(Command, P4UserMap): if not m.match(name): if verbose: - print "tag %s does not match regexp %s" % (name, validTagRegexp) + print "tag %s does not match regexp %s" % (name, validLabelRegexp) continue # Get the p4 commit this corresponds to @@ -1451,7 +1451,7 @@ class P4Submit(Command, P4UserMap): rebase.rebase() if gitConfig("git-p4.exportLabels", "--bool") == "true": - self.exportLabels = true + self.exportLabels = True if self.exportLabels: p4Labels = getP4Labels(self.depotPath) @@ -2711,7 +2711,7 @@ class P4Sync(Command, P4UserMap): sys.stdout.write("\n") if gitConfig("git-p4.importLabels", "--bool") == "true": - self.importLabels = true + self.importLabels = True if self.importLabels: p4Labels = getP4Labels(self.depotPaths) diff --git a/git-sh-setup.sh b/git-sh-setup.sh index 7b3ae75d7a..770a86e2b7 100644 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -218,27 +218,8 @@ clear_local_git_env() { unset $(git rev-parse --local-env-vars) } -# Make sure we are in a valid repository of a vintage we understand, -# if we require to be in a git repository. -if test -z "$NONGIT_OK" -then - GIT_DIR=$(git rev-parse --git-dir) || exit - if [ -z "$SUBDIRECTORY_OK" ] - then - test -z "$(git rev-parse --show-cdup)" || { - exit=$? - echo >&2 "You need to run this command from the toplevel of the working tree." - exit $exit - } - fi - test -n "$GIT_DIR" && GIT_DIR=$(cd "$GIT_DIR" && pwd) || { - echo >&2 "Unable to determine absolute path of git directory" - exit 1 - } - : ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"} -fi -# Fix some commands on Windows +# Platform specific tweaks to work around some commands case $(uname -s) in *MINGW*) # Windows has its own (incompatible) sort and find @@ -269,3 +250,23 @@ case $(uname -s) in return 1 } esac + +# Make sure we are in a valid repository of a vintage we understand, +# if we require to be in a git repository. +if test -z "$NONGIT_OK" +then + GIT_DIR=$(git rev-parse --git-dir) || exit + if [ -z "$SUBDIRECTORY_OK" ] + then + test -z "$(git rev-parse --show-cdup)" || { + exit=$? + echo >&2 "You need to run this command from the toplevel of the working tree." + exit $exit + } + fi + test -n "$GIT_DIR" && GIT_DIR=$(cd "$GIT_DIR" && pwd) || { + echo >&2 "Unable to determine absolute path of git directory" + exit 1 + } + : ${GIT_OBJECT_DIRECTORY="$GIT_DIR/objects"} +fi diff --git a/git-svn.perl b/git-svn.perl index 31d02b5f70..c84842ff03 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -106,7 +106,7 @@ my ($_stdin, $_help, $_edit, $_message, $_file, $_branch_dest, $_template, $_shared, $_version, $_fetch_all, $_no_rebase, $_fetch_parent, - $_merge, $_strategy, $_dry_run, $_local, + $_merge, $_strategy, $_preserve_merges, $_dry_run, $_local, $_prefix, $_no_checkout, $_url, $_verbose, $_git_format, $_commit_url, $_tag, $_merge_info, $_interactive); $Git::SVN::_follow_parent = 1; @@ -255,6 +255,7 @@ my %cmd = ( 'local|l' => \$_local, 'fetch-all|all' => \$_fetch_all, 'dry-run|n' => \$_dry_run, + 'preserve-merges|p' => \$_preserve_merges, %fc_opts } ], 'commit-diff' => [ \&cmd_commit_diff, 'Commit a diff between two trees', @@ -1592,6 +1593,7 @@ sub rebase_cmd { push @cmd, '-v' if $_verbose; push @cmd, qw/--merge/ if $_merge; push @cmd, "--strategy=$_strategy" if $_strategy; + push @cmd, "--preserve-merges" if $_preserve_merges; @cmd; } @@ -3,18 +3,64 @@ #include "userdiff.h" #include "xdiff-interface.h" -void append_header_grep_pattern(struct grep_opt *opt, enum grep_header_field field, const char *pat) +static struct grep_pat *create_grep_pat(const char *pat, size_t patlen, + const char *origin, int no, + enum grep_pat_token t, + enum grep_header_field field) { struct grep_pat *p = xcalloc(1, sizeof(*p)); - p->pattern = pat; - p->patternlen = strlen(pat); - p->origin = "header"; - p->no = 0; - p->token = GREP_PATTERN_HEAD; + p->pattern = xmemdupz(pat, patlen); + p->patternlen = patlen; + p->origin = origin; + p->no = no; + p->token = t; p->field = field; - *opt->header_tail = p; - opt->header_tail = &p->next; + return p; +} + +static void do_append_grep_pat(struct grep_pat ***tail, struct grep_pat *p) +{ + **tail = p; + *tail = &p->next; p->next = NULL; + + switch (p->token) { + case GREP_PATTERN: /* atom */ + case GREP_PATTERN_HEAD: + case GREP_PATTERN_BODY: + for (;;) { + struct grep_pat *new_pat; + size_t len = 0; + char *cp = p->pattern + p->patternlen, *nl = NULL; + while (++len <= p->patternlen) { + if (*(--cp) == '\n') { + nl = cp; + break; + } + } + if (!nl) + break; + new_pat = create_grep_pat(nl + 1, len - 1, p->origin, + p->no, p->token, p->field); + new_pat->next = p->next; + if (!p->next) + *tail = &new_pat->next; + p->next = new_pat; + *nl = '\0'; + p->patternlen -= len; + } + break; + default: + break; + } +} + +void append_header_grep_pattern(struct grep_opt *opt, + enum grep_header_field field, const char *pat) +{ + struct grep_pat *p = create_grep_pat(pat, strlen(pat), "header", 0, + GREP_PATTERN_HEAD, field); + do_append_grep_pat(&opt->header_tail, p); } void append_grep_pattern(struct grep_opt *opt, const char *pat, @@ -26,15 +72,8 @@ void append_grep_pattern(struct grep_opt *opt, const char *pat, void append_grep_pat(struct grep_opt *opt, const char *pat, size_t patlen, const char *origin, int no, enum grep_pat_token t) { - struct grep_pat *p = xcalloc(1, sizeof(*p)); - p->pattern = pat; - p->patternlen = patlen; - p->origin = origin; - p->no = no; - p->token = t; - *opt->pattern_tail = p; - opt->pattern_tail = &p->next; - p->next = NULL; + struct grep_pat *p = create_grep_pat(pat, patlen, origin, no, t, 0); + do_append_grep_pat(&opt->pattern_tail, p); } struct grep_opt *grep_opt_dup(const struct grep_opt *opt) @@ -430,6 +469,7 @@ void free_grep_patterns(struct grep_opt *opt) free_pcre_regexp(p); else regfree(&p->regexp); + free(p->pattern); break; default: break; @@ -38,7 +38,7 @@ struct grep_pat { const char *origin; int no; enum grep_pat_token token; - const char *pattern; + char *pattern; size_t patternlen; enum grep_header_field field; regex_t regexp; @@ -205,7 +205,7 @@ int split_ident_line(struct ident_split *split, const char *line, int len) if (!split->mail_begin) return status; - for (cp = split->mail_begin - 2; line < cp; cp--) + for (cp = split->mail_begin - 2; line <= cp; cp--) if (!isspace(*cp)) { split->name_end = cp + 1; break; diff --git a/parse-options.c b/parse-options.c index 850cfa78c9..ab70c29c49 100644 --- a/parse-options.c +++ b/parse-options.c @@ -490,7 +490,7 @@ static int usage_argh(const struct option *opts, FILE *outfile) s = literal ? "[%s]" : "[<%s>]"; else s = literal ? " %s" : " <%s>"; - return fprintf(outfile, s, opts->argh ? opts->argh : "..."); + return fprintf(outfile, s, opts->argh ? _(opts->argh) : _("...")); } #define USAGE_OPTS_WIDTH 24 @@ -508,13 +508,16 @@ static int usage_with_options_internal(struct parse_opt_ctx_t *ctx, if (!err && ctx && ctx->flags & PARSE_OPT_SHELL_EVAL) fprintf(outfile, "cat <<\\EOF\n"); - fprintf(outfile, "usage: %s\n", *usagestr++); + fprintf_ln(outfile, _("usage: %s"), _(*usagestr++)); while (*usagestr && **usagestr) - fprintf(outfile, " or: %s\n", *usagestr++); + /* TRANSLATORS: the colon here should align with the + one in "usage: %s" translation */ + fprintf_ln(outfile, _(" or: %s"), _(*usagestr++)); while (*usagestr) { - fprintf(outfile, "%s%s\n", - **usagestr ? " " : "", - *usagestr); + if (**usagestr) + fprintf_ln(outfile, _(" %s"), _(*usagestr)); + else + putchar('\n'); usagestr++; } @@ -528,7 +531,7 @@ static int usage_with_options_internal(struct parse_opt_ctx_t *ctx, if (opts->type == OPTION_GROUP) { fputc('\n', outfile); if (*opts->help) - fprintf(outfile, "%s\n", opts->help); + fprintf(outfile, "%s\n", _(opts->help)); continue; } if (!full && (opts->flags & PARSE_OPT_HIDDEN)) @@ -558,7 +561,7 @@ static int usage_with_options_internal(struct parse_opt_ctx_t *ctx, fputc('\n', outfile); pad = USAGE_OPTS_WIDTH; } - fprintf(outfile, "%*s%s\n", pad + USAGE_GAP, "", opts->help); + fprintf(outfile, "%*s%s\n", pad + USAGE_GAP, "", _(opts->help)); } fputc('\n', outfile); diff --git a/parse-options.h b/parse-options.h index da999f8995..77a4a8b2e6 100644 --- a/parse-options.h +++ b/parse-options.h @@ -66,12 +66,14 @@ typedef int parse_opt_ll_cb(struct parse_opt_ctx_t *ctx, * * `argh`:: * token to explain the kind of argument this option wants. Keep it - * homogeneous across the repository. + * homogeneous across the repository. Should be wrapped by N_() for + * translation. * * `help`:: * the short help associated to what the option does. * Must never be NULL (except for OPTION_END). * OPTION_GROUP uses this pointer to store the group header. + * Should be wrapped by N_() for translation. * * `flags`:: * mask of parse_opt_option_flags. @@ -128,7 +130,7 @@ struct option { #define OPT_BOOL(s, l, v, h) OPT_SET_INT(s, l, v, h, 1) #define OPT_SET_PTR(s, l, v, h, p) { OPTION_SET_PTR, (s), (l), (v), NULL, \ (h), PARSE_OPT_NOARG, NULL, (p) } -#define OPT_INTEGER(s, l, v, h) { OPTION_INTEGER, (s), (l), (v), "n", (h) } +#define OPT_INTEGER(s, l, v, h) { OPTION_INTEGER, (s), (l), (v), N_("n"), (h) } #define OPT_STRING(s, l, v, a, h) { OPTION_STRING, (s), (l), (v), (a), (h) } #define OPT_STRING_LIST(s, l, v, a, h) \ { OPTION_CALLBACK, (s), (l), (v), (a), \ @@ -136,7 +138,7 @@ struct option { #define OPT_UYN(s, l, v, h) { OPTION_CALLBACK, (s), (l), (v), NULL, \ (h), PARSE_OPT_NOARG, &parse_opt_tertiary } #define OPT_DATE(s, l, v, h) \ - { OPTION_CALLBACK, (s), (l), (v), "time",(h), 0, \ + { OPTION_CALLBACK, (s), (l), (v), N_("time"),(h), 0, \ parse_opt_approxidate_cb } #define OPT_CALLBACK(s, l, v, a, h, f) \ { OPTION_CALLBACK, (s), (l), (v), (a), (h), 0, (f) } @@ -144,21 +146,22 @@ struct option { { OPTION_NUMBER, 0, NULL, (v), NULL, (h), \ PARSE_OPT_NOARG | PARSE_OPT_NONEG, (f) } #define OPT_FILENAME(s, l, v, h) { OPTION_FILENAME, (s), (l), (v), \ - "file", (h) } + N_("file"), (h) } #define OPT_COLOR_FLAG(s, l, v, h) \ - { OPTION_CALLBACK, (s), (l), (v), "when", (h), PARSE_OPT_OPTARG, \ + { OPTION_CALLBACK, (s), (l), (v), N_("when"), (h), PARSE_OPT_OPTARG, \ parse_opt_color_flag_cb, (intptr_t)"always" } #define OPT_NOOP_NOARG(s, l) \ { OPTION_CALLBACK, (s), (l), NULL, NULL, \ - "no-op (backward compatibility)", \ + N_("no-op (backward compatibility)"), \ PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, parse_opt_noop_cb } /* Deprecated synonym */ #define OPT_BOOLEAN OPT_COUNTUP /* parse_options() will filter out the processed options and leave the - * non-option arguments in argv[]. + * non-option arguments in argv[]. usagestr strings should be marked + * for translation with N_(). * Returns the number of arguments left in argv[]. */ extern int parse_options(int argc, const char **argv, const char *prefix, @@ -222,15 +225,15 @@ extern int parse_opt_noop_cb(const struct option *, const char *, int); #define OPT__VERBOSE(var, h) OPT_BOOLEAN('v', "verbose", (var), (h)) #define OPT__QUIET(var, h) OPT_BOOLEAN('q', "quiet", (var), (h)) #define OPT__VERBOSITY(var) \ - { OPTION_CALLBACK, 'v', "verbose", (var), NULL, "be more verbose", \ + { OPTION_CALLBACK, 'v', "verbose", (var), NULL, N_("be more verbose"), \ PARSE_OPT_NOARG, &parse_opt_verbosity_cb, 0 }, \ - { OPTION_CALLBACK, 'q', "quiet", (var), NULL, "be more quiet", \ + { OPTION_CALLBACK, 'q', "quiet", (var), NULL, N_("be more quiet"), \ PARSE_OPT_NOARG, &parse_opt_verbosity_cb, 0 } #define OPT__DRY_RUN(var, h) OPT_BOOLEAN('n', "dry-run", (var), (h)) #define OPT__FORCE(var, h) OPT_BOOLEAN('f', "force", (var), (h)) #define OPT__ABBREV(var) \ - { OPTION_CALLBACK, 0, "abbrev", (var), "n", \ - "use <n> digits to display SHA-1s", \ + { OPTION_CALLBACK, 0, "abbrev", (var), N_("n"), \ + N_("use <n> digits to display SHA-1s"), \ PARSE_OPT_OPTARG, &parse_opt_abbrev_cb, 0 } #define OPT__COLOR(var, h) \ OPT_COLOR_FLAG(0, "color", (var), (h)) @@ -8,6 +8,9 @@ Leader: Byrial Jensen <byrial@vip.cybercity.dk> Language: de (German) Repository: https://github.com/ralfth/git-po-de Leader: Ralf Thielow <ralf.thielow@googlemail.com> +Members: Thomas Rast <trast@student.ethz.ch> + Jan Krüger <jk@jk.gs> + Christian Stimming <stimming@tuhh.de> Language: is (Icelandic) Leader: Ævar Arnfjörð Bjarmason <avarab@gmail.com> @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: git 1.7.10\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2012-04-28 20:17+0800\n" +"POT-Creation-Date: 2012-05-15 06:31+0800\n" "PO-Revision-Date: 2012-03-28 18:46+0200\n" "Last-Translator: Ralf Thielow <ralf.thielow@googlemail.com>\n" "Language-Team: German\n" @@ -34,8 +34,8 @@ msgid "" "or use 'git commit -a'." msgstr "" "Korrigiere dies im Arbeitsbaum,\n" -"und benutze dann 'git add/rm <Datei>' wie\n" -"vorgesehen, um die Auflösung zu markieren und dann einzutragen,\n" +"und benutze dann 'git add/rm <Datei>'\n" +"um die Auflösung entsprechend zu markieren und einzutragen,\n" "oder benutze 'git commit -a'." #: commit.c:48 @@ -54,7 +54,7 @@ msgstr "Speicher verbraucht" #: connected.c:39 msgid "Could not run 'git rev-list'" -msgstr "'git rev-list' konnte nicht ausgeführt werden" +msgstr "Konnte 'git rev-list' nicht ausführen" #: connected.c:48 #, c-format @@ -111,7 +111,7 @@ msgid_plural ", %d deletions(-)" msgstr[0] ", %d Zeile entfernt(-)" msgstr[1] ", %d Zeilen entfernt(-)" -#: diff.c:3435 +#: diff.c:3439 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" @@ -122,7 +122,7 @@ msgstr "" #: gpg-interface.c:59 msgid "could not run gpg." -msgstr "gpg konnte nicht ausgeführt werden" +msgstr "konnte gpg nicht ausführen" #: gpg-interface.c:71 msgid "gpg did not accept the data" @@ -145,7 +145,7 @@ msgstr "'%s': %s" #: grep.c:1308 #, c-format msgid "'%s': short read %s" -msgstr "'%s': kurz gelesen %s" +msgstr "'%s': read() zu kurz %s" #: help.c:287 #, c-format @@ -169,9 +169,10 @@ msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n" msgid_plural "" "Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n" msgstr[0] "" -"Dein Zweig ist hinter '%s' um %d Version, und kann vorgespult werden.\n" +"Dein Zweig ist zu '%s' um %d Version hinterher, und kann vorgespult werden.\n" msgstr[1] "" -"Dein Zweig ist hinter '%s' um %d Versionen, und kann vorgespult werden.\n" +"Dein Zweig ist zu '%s' um %d Versionen hinterher, und kann vorgespult " +"werden.\n" #: remote.c:1621 #, c-format @@ -259,7 +260,8 @@ msgstr "Du hast keine gültige Zweigspitze (HEAD)" #, c-format msgid "Commit %s is a merge but no -m option was given." msgstr "" -"Version %s ist eine Zusammenführung, aber es wurde keine Option -m angegeben." +"Version %s ist eine Zusammenführung, aber die Option -m wurde nicht " +"angegeben." #: sequencer.c:324 #, c-format @@ -294,8 +296,8 @@ msgstr "Konnte %s nicht zurücksetzen... %s" msgid "could not apply %s... %s" msgstr "Konnte %s nicht anwenden... %s" -#: sequencer.c:450 sequencer.c:909 builtin/log.c:289 builtin/log.c:719 -#: builtin/log.c:1335 builtin/log.c:1554 builtin/merge.c:347 +#: sequencer.c:450 sequencer.c:909 builtin/log.c:288 builtin/log.c:713 +#: builtin/log.c:1329 builtin/log.c:1548 builtin/merge.c:347 #: builtin/shortlog.c:181 msgid "revision walk setup failed" msgstr "Einrichtung des Revisionsgangs fehlgeschlagen" @@ -331,12 +333,12 @@ msgstr "Keine Versionen geparst." #: sequencer.c:591 #, c-format msgid "Could not open %s" -msgstr "%s konnte nicht geöffnet werden." +msgstr "Konnte %s nicht öffnen" #: sequencer.c:595 #, c-format msgid "Could not read %s." -msgstr "%s konnte nicht gelesen werden." +msgstr "Konnte %s nicht lesen." #: sequencer.c:602 #, c-format @@ -360,7 +362,7 @@ msgstr "Fehlerhaftes Optionsblatt: %s" #: sequencer.c:666 msgid "a cherry-pick or revert is already in progress" -msgstr "\"cherry-pick\" oder \"revert\" wird bereits ausgeführt" +msgstr "\"cherry-pick\" oder \"revert\" ist bereits im Gang" #: sequencer.c:667 msgid "try \"git cherry-pick (--continue | --quit | --abort)\"" @@ -378,7 +380,7 @@ msgstr "Fehler beim Einpacken von %s." #: sequencer.c:706 sequencer.c:840 msgid "no cherry-pick or revert in progress" -msgstr "kein \"cherry-pick\" oder \"revert\" in Ausführung" +msgstr "kein \"cherry-pick\" oder \"revert\" im Gang" #: sequencer.c:708 msgid "cannot resolve HEAD" @@ -386,7 +388,7 @@ msgstr "kann Zweigspitze (HEAD) nicht auflösen" #: sequencer.c:710 msgid "cannot abort from a branch yet to be born" -msgstr "kann nicht von einem Zweig abbrechen, der noch geboren wird" +msgstr "kann nicht abbrechen: bin auf einem Zweig, der noch geboren wird" #: sequencer.c:732 #, c-format @@ -462,7 +464,7 @@ msgstr "" #: wt-status.c:143 msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)" msgstr "" -" (benutze \"git add/rm <Datei>...\" wie vorgesehen, um die Auflösung zu " +" (benutze \"git add/rm <Datei>...\" um die Auflösung entsprechend zu " "markieren)" #: wt-status.c:151 @@ -475,12 +477,11 @@ msgstr "Änderungen, die nicht zum Eintragen bereitgestellt sind:" #: wt-status.c:173 msgid " (use \"git add <file>...\" to update what will be committed)" -msgstr " (benutze \"git add <Datei>...\" zur Aktualisierung der Eintragung)" +msgstr " (benutze \"git add <Datei>...\" zum Bereitstellen)" #: wt-status.c:175 msgid " (use \"git add/rm <file>...\" to update what will be committed)" -msgstr "" -" (benutze \"git add/rm <Datei>...\" zur Aktualisierung der Eintragung)" +msgstr " (benutze \"git add/rm <Datei>...\" zum Bereitstellen)" #: wt-status.c:176 msgid "" @@ -492,7 +493,7 @@ msgstr "" #: wt-status.c:178 msgid " (commit or discard the untracked or modified content in submodules)" msgstr "" -" (trage ein oder verwerfe den ungefolgten oder geänderten Inhalt in den " +" (trage ein oder verwerfe den unbeobachteten oder geänderten Inhalt in den " "Unterprojekten)" #: wt-status.c:187 @@ -547,7 +548,7 @@ msgstr "geänderter Inhalt, " #: wt-status.c:252 msgid "untracked content, " -msgstr "unverfolgter Inhalt, " +msgstr "unbeobachteter Inhalt, " #: wt-status.c:266 #, c-format @@ -608,7 +609,7 @@ msgstr "Initiale Version" #: wt-status.c:745 msgid "Untracked" -msgstr "Unverfolgte" +msgstr "Unbeobachtete" #: wt-status.c:747 msgid "Ignored" @@ -617,11 +618,11 @@ msgstr "Ignorierte" #: wt-status.c:749 #, c-format msgid "Untracked files not listed%s" -msgstr "Unverfolgte Dateien nicht aufgelistet%s" +msgstr "Unbeobachtete Dateien nicht aufgelistet%s" #: wt-status.c:751 msgid " (use -u option to show untracked files)" -msgstr " (benutze die Option -u um unverfolgte Dateien anzuzeigen)" +msgstr " (benutze die Option -u um unbeobachteten Dateien anzuzeigen)" #: wt-status.c:757 msgid "No changes" @@ -639,11 +640,12 @@ msgstr " (benutze \"git add\" und/oder \"git commit -a\")" #: wt-status.c:765 #, c-format msgid "nothing added to commit but untracked files present%s\n" -msgstr "nichts zum Eintragen hinzugefügt, aber es gibt unverfolgte Dateien%s\n" +msgstr "" +"nichts zum Eintragen hinzugefügt, aber es gibt unbeobachtete Dateien%s\n" #: wt-status.c:767 msgid " (use \"git add\" to track)" -msgstr " (benutze \"git add\" zum Verfolgen)" +msgstr " (benutze \"git add\" zum Beobachten)" #: wt-status.c:769 wt-status.c:772 wt-status.c:775 #, c-format @@ -652,11 +654,11 @@ msgstr "nichts zum Eintragen%s\n" #: wt-status.c:770 msgid " (create/copy files and use \"git add\" to track)" -msgstr " (Erstelle/Kopiere Dateien und benutze \"git add\" zum Verfolgen)" +msgstr " (Erstelle/Kopiere Dateien und benutze \"git add\" zum Beobachten)" #: wt-status.c:773 msgid " (use -u to show untracked files)" -msgstr " (benutze -u um unverfolgte Dateien anzuzeigen)" +msgstr " (benutze die Option -u um unbeobachtete Dateien anzuzeigen)" #: wt-status.c:776 msgid " (working directory clean)" @@ -672,15 +674,15 @@ msgstr "Initiale Version auf " #: wt-status.c:905 msgid "behind " -msgstr "hinter " +msgstr "hinterher " #: wt-status.c:908 wt-status.c:911 msgid "ahead " -msgstr "über " +msgstr "voraus " #: wt-status.c:913 msgid ", behind " -msgstr ", hinter " +msgstr ", hinterher " #: builtin/add.c:62 #, c-format @@ -689,7 +691,7 @@ msgstr "unerwarteter Differenz-Status %c" #: builtin/add.c:67 builtin/commit.c:298 msgid "updating files failed" -msgstr "Aktualisierung von Dateien fehlgeschlagen" +msgstr "Aktualisierung der Dateien fehlgeschlagen" #: builtin/add.c:77 #, c-format @@ -732,7 +734,7 @@ msgstr "Konnte Patch nicht schreiben" #: builtin/add.c:295 #, c-format msgid "Could not stat '%s'" -msgstr "Verzeichnis '%s' konnte nicht gelesen werden" +msgstr "Konnte Verzeichnis '%s' nicht lesen" #: builtin/add.c:297 msgid "Empty patch. Aborted." @@ -779,7 +781,7 @@ msgstr "Nichts spezifiziert, nichts hinzugefügt.\n" #: builtin/add.c:414 #, c-format msgid "Maybe you wanted to say 'git add .'?\n" -msgstr "Wolltest du vieleicht 'git add .' sagen?\n" +msgstr "Wolltest du vielleicht 'git add .' sagen?\n" #: builtin/add.c:420 builtin/clean.c:95 builtin/commit.c:358 builtin/mv.c:82 #: builtin/rm.c:162 @@ -801,7 +803,7 @@ msgstr "Konnte Ausgabe nicht umleiten." #: builtin/archive.c:37 msgid "git archive: Remote with no URL" -msgstr "git archive: Anderes Archiv ohne URL" +msgstr "git archive: Externes Archiv ohne URL" #: builtin/archive.c:58 msgid "git archive: expected ACK/NAK, got EOF" @@ -815,7 +817,7 @@ msgstr "git archive: NACK %s" #: builtin/archive.c:65 #, c-format msgid "remote error: %s" -msgstr "Versandfehler: %s" +msgstr "Fehler am anderen Ende: %s" #: builtin/archive.c:66 msgid "git archive: protocol error" @@ -831,7 +833,7 @@ msgid "" "deleting branch '%s' that has been merged to\n" " '%s', but not yet merged to HEAD." msgstr "" -"entferne Zweig '%s' der zusammengeführt wurde mit\n" +"entferne Zweig '%s', der zusammengeführt wurde mit\n" " '%s', aber noch nicht mit der Zweigspitze (HEAD) zusammengeführt " "wurde." @@ -841,13 +843,13 @@ msgid "" "not deleting branch '%s' that is not yet merged to\n" " '%s', even though it is merged to HEAD." msgstr "" -"entferne nicht Zweig '%s' der noch nicht zusammengeführt wurde mit\n" +"entferne Zweig '%s' nicht, der noch nicht zusammengeführt wurde mit\n" " '%s', obwohl er mit der Zweigspitze (HEAD) zusammengeführt wurde." #. TRANSLATORS: This is "remote " in "remote branch '%s' not found" #: builtin/branch.c:164 msgid "remote " -msgstr "entfernter " +msgstr "externer " #: builtin/branch.c:172 msgid "cannot use -a with -d" @@ -860,7 +862,8 @@ msgstr "Konnte Versionsobjekt für Zweigspitze (HEAD) nicht nachschlagen." #: builtin/branch.c:183 #, c-format msgid "Cannot delete the branch '%s' which you are currently on." -msgstr "Kann Zweig '%s' nicht entfernen auf dem du dich gerade befindest." +msgstr "" +"Kann Zweig '%s' nicht entfernen, da du dich gerade auf diesem befindest." #: builtin/branch.c:193 #, c-format @@ -903,17 +906,17 @@ msgstr "Zweig '%s' zeigt auf keine Version" #: builtin/branch.c:396 #, c-format msgid "behind %d] " -msgstr "hinter %d] " +msgstr "%d hinterher] " #: builtin/branch.c:398 #, c-format msgid "ahead %d] " -msgstr "vor %d] " +msgstr "%d voraus] " #: builtin/branch.c:400 #, c-format msgid "ahead %d, behind %d] " -msgstr "vor %d, hinter %d] " +msgstr "%d voraus, %d hinterher] " #: builtin/branch.c:503 msgid "(no branch)" @@ -921,7 +924,7 @@ msgstr "(kein Zweig)" #: builtin/branch.c:568 msgid "some refs could not be read" -msgstr "einige Referenzen konnten nicht gelesen werden" +msgstr "Konnte einige Referenzen nicht lesen" #: builtin/branch.c:581 msgid "cannot rename the current branch while not on any." @@ -965,7 +968,7 @@ msgstr "Konnte Beschreibungsvorlage für Zweig nicht schreiben: %s\n" #: builtin/branch.c:750 msgid "Failed to resolve HEAD as a valid ref." -msgstr "Zweigspitze (HEAD) konnte nicht als gültige Referenz aufgelöst werden." +msgstr "Konnte Zweigspitze (HEAD) nicht als gültige Referenz auflösen." #: builtin/branch.c:755 builtin/clone.c:558 msgid "HEAD not found below refs/heads!" @@ -988,7 +991,7 @@ msgstr "Um ein Paket zu erstellen wird ein Projektarchiv benötigt." #: builtin/bundle.c:60 msgid "Need a repository to unbundle." -msgstr "Zum Zerlegen wird ein Projektarchiv benötigt." +msgstr "Zum Entpacken wird ein Projektarchiv benötigt." #: builtin/checkout.c:113 builtin/checkout.c:146 #, c-format @@ -1100,12 +1103,12 @@ msgid_plural "" "\n" "%s\n" msgstr[0] "" -"Warnung: Du verlässt %d Version zurückliegend, nicht verbunden zu\n" +"Warnung: Du bist um %d Version hinterher, nicht verbunden zu\n" "einem deiner Zweige:\n" "\n" "%s\n" msgstr[1] "" -"Warnung: Du verlässt %d Versionen zurückliegend, nicht verbunden zu\n" +"Warnung: Du bist um %d Versionen hinterher, nicht verbunden zu\n" "einem deiner Zweige:\n" "\n" "%s\n" @@ -1135,7 +1138,7 @@ msgstr "Vorherige Position der Zweigspitze (HEAD) war" #: builtin/checkout.c:723 msgid "You are on a branch yet to be born" -msgstr "Du bist auf einem Zweig, der noch nicht geboren wurde." +msgstr "du bist auf einem Zweig, der noch geboren wird" #. case (1) #: builtin/checkout.c:854 @@ -1195,16 +1198,16 @@ msgid "" "git checkout: updating paths is incompatible with switching branches.\n" "Did you intend to checkout '%s' which can not be resolved as commit?" msgstr "" -"git checkout: Aktualisierung der Pfade ist inkompatibel mit dem Wechsel von " -"Zweigen.\n" +"git checkout: Die Aktualisierung von Pfaden ist inkompatibel mit dem Wechsel " +"von Zweigen.\n" "Hast du beabsichtigt '%s' auszuchecken, welcher nicht als Version aufgelöst " "werden kann?" #: builtin/checkout.c:1062 msgid "git checkout: updating paths is incompatible with switching branches." msgstr "" -"git checkout: Aktualisierung von Pfaden ist inkompatibel mit dem Wechsel von " -"Zweigen." +"git checkout: Die Aktualisierung von Pfaden ist inkompatibel mit dem Wechsel " +"von Zweigen." #: builtin/checkout.c:1067 msgid "git checkout: --detach does not take a path argument" @@ -1216,7 +1219,7 @@ msgid "" "checking out of the index." msgstr "" "git checkout: --ours/--theirs, --force and --merge sind inkompatibel wenn\n" -"du außerhalb der Bereitstellung auscheckst." +"du aus der Bereitstellung auscheckst." #: builtin/checkout.c:1089 msgid "Cannot switch branch to a non-commit." @@ -1235,7 +1238,7 @@ 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; " -"Ablehnung der Reinigung" +"Säuberung verweigert" #: builtin/clean.c:85 msgid "" @@ -1243,12 +1246,12 @@ msgid "" "clean" msgstr "" "clean.requireForce standardmäßig auf \"true\" gesetzt und weder -n noch -f " -"gegeben; Ablehnung der Reinigung" +"gegeben; Säuberung verweigert" #: builtin/clean.c:155 builtin/clean.c:176 #, c-format msgid "Would remove %s\n" -msgstr "Würde entfernen %s\n" +msgstr "Würde %s entfernen\n" #: builtin/clean.c:159 builtin/clean.c:179 #, c-format @@ -1288,7 +1291,7 @@ msgstr "Fehler beim Erstellen von Verzeichnis '%s'" #: builtin/clone.c:308 builtin/diff.c:75 #, c-format msgid "failed to stat '%s'" -msgstr "'%s' konnte nicht gelesen werden" +msgstr "Konnte '%s' nicht lesen" #: builtin/clone.c:310 #, c-format @@ -1298,22 +1301,22 @@ msgstr "%s existiert und ist kein Verzeichnis" #: builtin/clone.c:324 #, c-format msgid "failed to stat %s\n" -msgstr "%s konnte nicht gelesen werden\n" +msgstr "Konnte %s nicht lesen\n" #: builtin/clone.c:341 #, c-format msgid "failed to unlink '%s'" -msgstr "Verknüpfung von '%s' konnte nicht aufgehoben werden." +msgstr "Konnte '%s' nicht entfernen" #: builtin/clone.c:346 #, c-format msgid "failed to create link '%s'" -msgstr "Verknüpfung '%s' konnte nicht erstellt werden." +msgstr "Konnte Verknüpfung '%s' nicht erstellen" #: builtin/clone.c:350 #, c-format msgid "failed to copy file to '%s'" -msgstr "Datei konnte nicht nach '%s' kopiert werden." +msgstr "Konnte Datei nicht nach '%s' kopieren" #: builtin/clone.c:373 #, c-format @@ -1323,13 +1326,13 @@ msgstr "Fertig.\n" #: builtin/clone.c:440 #, c-format msgid "Could not find remote branch %s to clone." -msgstr "Entfernter Zweig %s konnte nicht zum Klonen gefunden werden." +msgstr "Konnte zu klonenden externer Zweig %s nicht finden." #: builtin/clone.c:549 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n" msgstr "" -"Entfernte Zweigspitze (HEAD) bezieht sich auf eine nicht existierende " -"Referenz und kann nicht ausgecheckt werden.\n" +"Externe Zweigspitze (HEAD) bezieht sich auf eine nicht existierende Referenz " +"und kann nicht ausgecheckt werden.\n" #: builtin/clone.c:639 msgid "Too many arguments." @@ -1337,7 +1340,7 @@ msgstr "Zu viele Argumente." #: builtin/clone.c:643 msgid "You must specify a repository to clone." -msgstr "Du musst ein Projektarchiv zum Klonen spezifizieren." +msgstr "Du musst ein Projektarchiv zum Klonen angeben." #: builtin/clone.c:654 #, c-format @@ -1376,7 +1379,7 @@ msgstr "Konnte Arbeitsverzeichnis '%s' nicht erstellen." #: builtin/clone.c:728 #, c-format msgid "Cloning into bare repository '%s'...\n" -msgstr "Klone in leeres Projektarchiv '%s'...\n" +msgstr "Klone in bloßes Projektarchiv '%s'...\n" #: builtin/clone.c:730 #, c-format @@ -1391,7 +1394,7 @@ msgstr "Weiß nicht wie %s zu klonen ist." #: builtin/clone.c:835 #, c-format msgid "Remote branch %s not found in upstream %s" -msgstr "entfernter Zweig %s nicht im anderen Projektarchiv gefunden %s" +msgstr "externer Zweig %s nicht im anderen Projektarchiv %s gefunden" #: builtin/clone.c:842 msgid "You appear to have cloned an empty repository." @@ -1477,7 +1480,7 @@ msgstr "Konnte new_index Datei nicht schreiben" #: builtin/commit.c:457 #, c-format msgid "cannot do a partial commit during a %s." -msgstr "Kann keine partielle Eintragung während eines %s durchführen." +msgstr "Kann keine partielle Eintragung durchführen, während %s im Gange ist." #: builtin/commit.c:466 msgid "cannot read the index" @@ -1570,8 +1573,8 @@ msgid "" " Lines starting\n" "with '#' will be ignored, and an empty message aborts the commit.\n" msgstr "" -" Zeilen beginnend\n" -"mit '#' werden ignoriert, und eine leere Versionsbeschreibung bricht die " +" Zeilen, die mit '#'\n" +"beginnen, werden ignoriert, und eine leere Versionsbeschreibung bricht die " "Eintragung ab.\n" #: builtin/commit.c:820 @@ -1580,8 +1583,8 @@ msgid "" "with '#' will be kept; you may remove them yourself if you want to.\n" "An empty message aborts the commit.\n" msgstr "" -" Zeilen beginnend\n" -"mit '#' werden beibehalten; wenn du möchtest, kannst du diese entfernen.\n" +" Zeilen, die mit '#'\n" +"beginnen, werden beibehalten; wenn du möchtest, kannst du diese entfernen.\n" "Eine leere Versionsbeschreibung bricht die Eintragung ab.\n" #: builtin/commit.c:832 @@ -1600,7 +1603,7 @@ msgstr "Kann Bereitstellung nicht lesen" #: builtin/commit.c:896 msgid "Error building trees" -msgstr "Fehler beim Erzeugen der Bäume" +msgstr "Fehler beim Erzeugen der Zweige" #: builtin/commit.c:911 builtin/tag.c:357 #, c-format @@ -1615,7 +1618,7 @@ msgstr "Kein existierender Autor mit '%s' gefunden." #: builtin/commit.c:1023 builtin/commit.c:1217 #, c-format msgid "Invalid untracked files mode '%s'" -msgstr "Ungültiger Modus '%s' für unverfolgte Dateien" +msgstr "Ungültiger Modus '%s' für unbeobachtete Dateien" #: builtin/commit.c:1063 msgid "Using both --reset-author and --author does not make sense" @@ -1628,7 +1631,7 @@ msgstr "Du hast nichts zum nachbessern." #: builtin/commit.c:1076 #, c-format msgid "You are in the middle of a %s -- cannot amend." -msgstr "Du bist in der Mitte eines %s -- kann nicht nachbessern." +msgstr "%s ist im Gange -- kann nicht nachbessern." #: builtin/commit.c:1078 msgid "Options --squash and --fixup cannot be used together" @@ -1660,12 +1663,12 @@ msgstr "--include/--only machen ohne Pfade keinen Sinn." #: builtin/commit.c:1119 msgid "Clever... amending the last one with dirty index." msgstr "" -"Klug... nachbessern der letzten Version mit einem unsauberen Bereitstellung." +"Klug... die letzte Version mit einer unsauberen Bereitstellung nachbessern." #: builtin/commit.c:1121 msgid "Explicit paths specified without -i nor -o; assuming --only paths..." msgstr "" -"Explizite Pfade ohne -i oder -o spezifiziert; unter der Annahme von --only " +"Explizite Pfade ohne -i oder -o angegeben; unter der Annahme von --only " "Pfaden..." #: builtin/commit.c:1131 builtin/tag.c:556 @@ -1762,12 +1765,12 @@ msgstr "annotierte Markierung %s hat keinen eingebetteten Namen" #: builtin/describe.c:240 #, c-format msgid "tag '%s' is really '%s' here" -msgstr "Markierung '%s' ist wirklich '%s' hier" +msgstr "Markierung '%s' ist eigentlich '%s' hier" #: builtin/describe.c:267 #, c-format msgid "Not a valid object name %s" -msgstr "kein gültiger Objekt-Name %s" +msgstr "%s ist kein gültiger Objekt-Name" #: builtin/describe.c:270 #, c-format @@ -1782,7 +1785,7 @@ msgstr "kein Markierung entspricht exakt '%s'" #: builtin/describe.c:289 #, c-format msgid "searching to describe %s\n" -msgstr "suche um zu beschreiben %s\n" +msgstr "suche zur Beschreibung von %s\n" #: builtin/describe.c:329 #, c-format @@ -1810,7 +1813,7 @@ msgstr "" #: builtin/describe.c:378 #, c-format msgid "traversed %lu commits\n" -msgstr "verarbeitete %lu Versionen\n" +msgstr "%lu Versionen durchlaufen\n" #: builtin/describe.c:381 #, c-format @@ -1818,7 +1821,7 @@ msgid "" "more than %i tags found; listed %i most recent\n" "gave up search at %s\n" msgstr "" -"mehr als %i Markierungen gefunden; Führe die %i jüngsten auf\n" +"mehr als %i Markierungen gefunden; Führe die ersten %i auf\n" "Suche bei %s aufgegeben\n" #: builtin/describe.c:436 @@ -1831,7 +1834,7 @@ msgstr "Keine Namen gefunden, kann nichts beschreiben." #: builtin/describe.c:482 msgid "--dirty is incompatible with committishes" -msgstr "--dirty ist inkompatibel mit \"committish\"-Werten" +msgstr "--dirty ist inkompatibel mit Versionen" #: builtin/diff.c:77 #, c-format @@ -1850,26 +1853,26 @@ msgstr "Kein Git-Projektarchiv" #: builtin/diff.c:347 #, c-format msgid "invalid object '%s' given." -msgstr "Ungültiges Objekt '%s' gegeben." +msgstr "Objekt '%s' ist ungültig." #: builtin/diff.c:352 #, c-format msgid "more than %d trees given: '%s'" -msgstr "Mehr als %d Bäume gegeben: '%s'" +msgstr "Mehr als %d Zweige angegeben: '%s'" #: builtin/diff.c:362 #, c-format msgid "more than two blobs given: '%s'" -msgstr "Mehr als zwei Blobs gegeben: '%s'" +msgstr "Mehr als zwei Blobs angegeben: '%s'" #: builtin/diff.c:370 #, c-format msgid "unhandled object '%s' given." -msgstr "unbehandeltes Objekt '%s' gegeben" +msgstr "unbehandeltes Objekt '%s' angegeben" #: builtin/fetch.c:200 msgid "Couldn't find remote ref HEAD" -msgstr "Konnte entfernte Referenz der Zweigspitze (HEAD) nicht finden." +msgstr "Konnte externe Referenz der Zweigspitze (HEAD) nicht finden." #: builtin/fetch.c:253 #, c-format @@ -1948,7 +1951,7 @@ msgstr "" #: builtin/fetch.c:549 #, c-format msgid " (%s will become dangling)\n" -msgstr " (%s wird unreferenziert werden)\n" +msgstr " (%s wird unreferenziert)\n" #: builtin/fetch.c:550 #, c-format @@ -1961,14 +1964,14 @@ msgstr "[gelöscht]" #: builtin/fetch.c:558 msgid "(none)" -msgstr "(keine)" +msgstr "(nichts)" #: builtin/fetch.c:675 #, c-format msgid "Refusing to fetch into current branch %s of non-bare repository" msgstr "" -"Ablehnung des Anforderns in aktuellen Zweig %s von einem nicht-leeren " -"Projektarchiv" +"Das Anfordern in den aktuellen Zweig %s von einem nicht-bloßen" +"\"Projektarchiv wurde verweigert." #: builtin/fetch.c:709 #, c-format @@ -1988,29 +1991,29 @@ msgstr "Option \"%s\" wird ignoriert für %s\n" #: builtin/fetch.c:888 #, c-format msgid "Fetching %s\n" -msgstr "Hole %s ab\n" +msgstr "Fordere an von %s\n" #: builtin/fetch.c:890 #, c-format msgid "Could not fetch %s" -msgstr "Konnte %s nicht anfordern" +msgstr "Konnte nicht von %s anfordern" #: builtin/fetch.c:907 msgid "" "No remote repository specified. Please, specify either a URL or a\n" "remote name from which new revisions should be fetched." msgstr "" -"Kein entferntes Projektarchiv spezifiziert. Bitte spezifiziere entweder\n" -"eine URL oder einen Entfernungsname, von welchem neue Revisionen angefordert " -"werden sollen." +"Kein externes Projektarchiv angegeben. Bitte gebe entweder eine URL\n" +"oder den Namen des externen Archivs an, von welchem neue\n" +"Versionen angefordert werden sollen." #: builtin/fetch.c:927 msgid "You need to specify a tag name." -msgstr "Du musst den Namen der Markierung spezifizieren." +msgstr "Du musst den Namen der Markierung angeben." #: builtin/fetch.c:979 msgid "fetch --all does not take a repository argument" -msgstr "fetch -all nimmt kein Projektarchiv als Argument" +msgstr "fetch --all akzeptiert kein Projektarchiv als Argument" #: builtin/fetch.c:981 msgid "fetch --all does not make sense with refspecs" @@ -2019,7 +2022,7 @@ msgstr "fetch --all macht keinen Sinn mit Referenzspezifikationen" #: builtin/fetch.c:992 #, c-format msgid "No such remote or remote group: %s" -msgstr "Keine solche Entfernung oder Entfernungsgruppe: %s" +msgstr "Kein externes Archiv (einzeln oder Gruppe): %s" #: builtin/fetch.c:1000 msgid "Fetching a group and specifying refspecs does not make sense" @@ -2032,37 +2035,34 @@ msgstr "" msgid "Invalid %s: '%s'" msgstr "Ungültiger %s: '%s'" -#: builtin/gc.c:78 -msgid "Too many options specified" -msgstr "Zu viele Optionen spezifiziert" - -#: builtin/gc.c:103 +#: builtin/gc.c:90 #, c-format msgid "insanely long object directory %.*s" -msgstr "wahnsinnig langes Objekt-Verzeichnis %.*s" +msgstr "zu langes Objekt-Verzeichnis %.*s" -#: builtin/gc.c:223 +#: builtin/gc.c:221 #, c-format msgid "Auto packing the repository for optimum performance.\n" -msgstr "Automatische Paketierung des Repositories für optimale Leitung.\n" +msgstr "" +"Die Datenbank des Projektarchivs wird für eine optimale Performance " +"komprimiert.\n" -#: builtin/gc.c:226 +#: builtin/gc.c:224 #, c-format msgid "" "Auto packing the repository for optimum performance. You may also\n" "run \"git gc\" manually. See \"git help gc\" for more information.\n" msgstr "" -"Automatische Paketierung des Repositories für optimale Leitung. Du darfst " -"auch\n" -"\"git gc\" manuell ausführen. Siehe \"git help gc\" für weitere " -"Informationen.\n" +"Die Datenbank des Projektarchivs wird für eine optimale Performance\n" +"komprimiert. Du kannst auch \"git gc\" manuell ausführen. Siehe \"git help gc" +"\" für weitere Informationen.\n" -#: builtin/gc.c:256 +#: builtin/gc.c:251 msgid "" "There are too many unreachable loose objects; run 'git prune' to remove them." msgstr "" -"Es gibt zu viele unerreichbare, verlorene Objekte; führe 'git prune' aus um " -"diese zu entfernen." +"Es gibt zu viele unerreichbare lose Objekte; führe 'git prune' aus, um diese " +"zu entfernen." #: builtin/grep.c:216 #, c-format @@ -2077,12 +2077,12 @@ msgstr "Fehler beim Verzeichniswechsel: %s" #: builtin/grep.c:478 builtin/grep.c:512 #, c-format msgid "unable to read tree (%s)" -msgstr "konnte Baum (%s) nicht lesen" +msgstr "konnte Zweig (%s) nicht lesen" #: builtin/grep.c:526 #, c-format msgid "unable to grep from object of type %s" -msgstr "kann \"grep\" nicht mit Objekt des Typs \"%s\" durchführen" +msgstr "kann \"grep\" nicht mit Objekten des Typs \"%s\" durchführen" #: builtin/grep.c:584 #, c-format @@ -2101,7 +2101,7 @@ msgstr "keine Muster gegeben" #: builtin/grep.c:902 #, c-format msgid "bad object %s" -msgstr "schlechtes Objekt %s" +msgstr "ungültiges Objekt %s" #: builtin/grep.c:943 msgid "--open-files-in-pager only works on the worktree" @@ -2118,11 +2118,11 @@ msgstr "--no-index oder --untracked kann nicht mit Revisionen benutzt werden" #: builtin/grep.c:974 msgid "--[no-]exclude-standard cannot be used for tracked contents." msgstr "" -"--[no-]exlude-standard kann nicht mit verfolgten Inhalten benutzt werden" +"--[no-]exlude-standard kann nicht mit beobachteten Inhalten benutzt werden" #: builtin/grep.c:982 msgid "both --cached and trees are given." -msgstr "sowohl --cached als auch Bäume gegeben" +msgstr "sowohl --cached als auch Zweige gegeben" #: builtin/init-db.c:35 #, c-format @@ -2132,12 +2132,12 @@ msgstr "Konnte %s nicht schreibbar für Gruppen machen" #: builtin/init-db.c:62 #, c-format msgid "insanely long template name %s" -msgstr "verrückt langer Vorlagen-Name %s" +msgstr "zu langer Vorlagen-Name %s" #: builtin/init-db.c:67 #, c-format msgid "cannot stat '%s'" -msgstr "'%s' kann nicht gelesen werden" +msgstr "Kann '%s' nicht lesen" #: builtin/init-db.c:73 #, c-format @@ -2157,12 +2157,12 @@ msgstr "kann Verknüfpung '%s' nicht lesen" #: builtin/init-db.c:99 #, c-format msgid "insanely long symlink %s" -msgstr "verrückt lange symbolische Verknüpfung %s" +msgstr "zu lange symbolische Verknüpfung %s" #: builtin/init-db.c:102 #, c-format msgid "cannot symlink '%s' '%s'" -msgstr "kann '%s' '%s' nicht symbolisch verknüpfen" +msgstr "kann '%s' nicht mit '%s' symbolisch verknüpfen" #: builtin/init-db.c:106 #, c-format @@ -2177,12 +2177,12 @@ msgstr "ignoriere Vorlage %s" #: builtin/init-db.c:133 #, c-format msgid "insanely long template path %s" -msgstr "verrückt langer Vorlagen-Pfad %s" +msgstr "zu langer Vorlagen-Pfad %s" #: builtin/init-db.c:141 #, c-format msgid "templates not found %s" -msgstr "Vorlagen nicht gefunden %s" +msgstr "keine Vorlagen in '%s' gefunden" #: builtin/init-db.c:154 #, c-format @@ -2192,7 +2192,7 @@ msgstr "kopiere keine Vorlagen mit einer falschen Formatversion %d von '%s'" #: builtin/init-db.c:192 #, c-format msgid "insane git directory %s" -msgstr "verrücktes git Verzeichnis %s" +msgstr "ungültiges git Verzeichnis %s" #: builtin/init-db.c:322 builtin/init-db.c:325 #, c-format @@ -2202,12 +2202,12 @@ msgstr "%s existiert bereits" #: builtin/init-db.c:354 #, c-format msgid "unable to handle file type %d" -msgstr "kann Dateityp %d nicht behandeln" +msgstr "kann nicht mit Dateityp %d umgehen" #: builtin/init-db.c:357 #, c-format msgid "unable to move %s to %s" -msgstr "konnte %s nicht nach %s verschieben" +msgstr "Konnte %s nicht nach %s verschieben" #: builtin/init-db.c:362 #, c-format @@ -2234,11 +2234,11 @@ msgstr "Initialisierte leeres" #: builtin/init-db.c:421 msgid " shared" -msgstr " geteilt" +msgstr " geteiltes" #: builtin/init-db.c:440 msgid "cannot tell cwd" -msgstr "kann nicht \"cwd\" sagen" +msgstr "kann aktuelles Verzeichnis nicht bestimmen" #: builtin/init-db.c:521 builtin/init-db.c:528 #, c-format @@ -2248,7 +2248,7 @@ msgstr "kann Verzeichnis %s nicht erstellen" #: builtin/init-db.c:532 #, c-format msgid "cannot chdir to %s" -msgstr "kann nicht zu Verzeichnis %s wechseln" +msgstr "kann nicht in Verzeichnis %s wechseln" #: builtin/init-db.c:554 #, c-format @@ -2298,15 +2298,15 @@ msgstr "Kann Patch-Datei %s nicht öffnen" #: builtin/log.c:700 msgid "Need exactly one range." -msgstr "Brauche genau einen Bereich." +msgstr "Brauche genau einen Versionsbereich." #: builtin/log.c:708 msgid "Not a range." -msgstr "Kein Bereich." +msgstr "Kein Versionsbereich." #: builtin/log.c:745 msgid "Could not extract email from committer identity." -msgstr "Konnte E-Mail von der Intentität des Einreichers nicht extrahieren." +msgstr "Konnte E-Mail-Adresse des Einreichers nicht extrahieren." #: builtin/log.c:791 msgid "Cover letter needs email format" @@ -2315,7 +2315,7 @@ msgstr "Anschreiben benötigt E-Mail-Format" #: builtin/log.c:885 #, c-format msgid "insane in-reply-to: %s" -msgstr "verrücktes in-reply-to: %s" +msgstr "ungültiges in-reply-to: %s" #: builtin/log.c:958 msgid "Two output directories?" @@ -2328,11 +2328,11 @@ msgstr "unechte Einreicher-Informationen %s" #: builtin/log.c:1224 msgid "-n and -k are mutually exclusive." -msgstr "-n und -k sind zueinander exklusiv" +msgstr "-n und -k schliessen sich gegenseitig aus" #: builtin/log.c:1226 msgid "--subject-prefix and -k are mutually exclusive." -msgstr "--subject-prefix und -k sind zueinander exklusiv" +msgstr "--subject-prefix und -k schliessen sich gegenseitig aus" #: builtin/log.c:1231 builtin/shortlog.c:284 #, c-format @@ -2369,8 +2369,8 @@ msgstr "Fehler beim Erstellen der Ausgabedateien." msgid "" "Could not find a tracked remote branch, please specify <upstream> manually.\n" msgstr "" -"Konnte gefolgten, entfernten Zweig nicht finden, bitte spezifiziere " -"<upstream> manuell.\n" +"Konnte gefolgten, externen Zweig nicht finden, bitte gebe <upstream> manuell " +"an.\n" #: builtin/log.c:1536 builtin/log.c:1538 builtin/log.c:1550 #, c-format @@ -2420,7 +2420,7 @@ msgstr " (nichts zu quetschen)" #: builtin/merge.c:329 #, c-format msgid "Squash commit -- not updating HEAD\n" -msgstr "Quetsche Version -- aktualisiere Zweigspitze (HEAD) nicht\n" +msgstr "Quetsche Version -- Zweigspitze (HEAD) wird nicht aktualisiert\n" #: builtin/merge.c:361 msgid "Writing SQUASH_MSG" @@ -2434,7 +2434,8 @@ msgstr "Schließe SQUASH_MSG ab" #, c-format msgid "No merge message -- not updating HEAD\n" msgstr "" -"Keine Zusammenführungsbeschreibung -- aktualisiere Zweigspitze (HEAD) nicht\n" +"Keine Zusammenführungsbeschreibung -- Zweigspitze (HEAD) wird nicht " +"aktualisiert\n" #: builtin/merge.c:437 #, c-format @@ -2444,7 +2445,7 @@ msgstr "'%s' zeigt auf keine Version" #: builtin/merge.c:536 #, c-format msgid "Bad branch.%s.mergeoptions string: %s" -msgstr "Schlechter branch.%s.mergeoptions String: %s" +msgstr "Ungültiger branch.%s.mergeoptions String: %s" #: builtin/merge.c:629 msgid "git write-tree failed to write a tree" @@ -2460,7 +2461,7 @@ msgstr "Konnte Bereitstellung nicht schreiben." #: builtin/merge.c:710 msgid "Not handling anything other than two heads merge." -msgstr "Behandle nichts anderes als die Zusammenführung von zwei Köpfen." +msgstr "Es wird nur die Zusammenführung von zwei Zweigen behandelt." #: builtin/merge.c:724 #, c-format @@ -2481,7 +2482,7 @@ msgstr "konnte nicht von '%s' lesen" #, c-format msgid "Not committing merge; use 'git commit' to complete the merge.\n" msgstr "" -"Zusammenführung nicht eingetragen; benutze 'git commit' um die " +"Zusammenführung wurde nicht eingetragen; benutze 'git commit' um die " "Zusammenführung abzuschließen.\n" #: builtin/merge.c:892 @@ -2494,7 +2495,7 @@ msgid "" msgstr "" "Bitte gebe eine Versionsbeschreibung ein um zu erklären, warum diese " "Zusammenführung erforderlich ist,\n" -"insbesondere wenn es einen aktualisierten entfernten Zweig mit einem Thema-" +"insbesondere wenn es einen aktualisierten, externen Zweig mit einem Thema-" "Zweig zusammenführt.\n" "\n" "Zeilen beginnend mit '#' werden ignoriert, und eine leere Beschreibung " @@ -2523,21 +2524,22 @@ msgstr "'%s' ist keine Version" #: builtin/merge.c:1050 msgid "No current branch." -msgstr "Kein aktueller Zweig." +msgstr "Du befindest dich auf keinem Zweig." #: builtin/merge.c:1052 msgid "No remote for the current branch." -msgstr "Kein anderes Archiv für den aktuellen Zweig." +msgstr "Kein externes Archiv für den aktuellen Zweig." #: builtin/merge.c:1054 msgid "No default upstream defined for the current branch." msgstr "" -"Kein entferntes Standard-Projektarchiv für den aktuellen Zweig definiert." +"Es ist kein externes Standard-Projektarchiv für den aktuellen Zweig " +"definiert." #: builtin/merge.c:1059 #, c-format msgid "No remote tracking branch for %s from %s" -msgstr "Kein entfernter Übernahmezweig für %s von %s" +msgstr "Kein externer Übernahmezweig für %s von %s" #: builtin/merge.c:1146 builtin/merge.c:1303 #, c-format @@ -2566,15 +2568,13 @@ msgid "" "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n" "Please, commit your changes before you can merge." msgstr "" -"Du hast deinen \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD " -"existiert).\n" +"Du hast \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert).\n" "Bitte trage deine Änderungen ein, bevor du zusammenführen kannst." #: builtin/merge.c:1240 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)." msgstr "" -"Du hast deinen \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD " -"existiert)." +"Du hast \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert)." #: builtin/merge.c:1249 msgid "You cannot combine --squash with --no-ff." @@ -2586,20 +2586,19 @@ msgstr "Du kannst --no-ff nicht mit --ff--only kombinieren." #: builtin/merge.c:1261 msgid "No commit specified and merge.defaultToUpstream not set." -msgstr "Keine Version spezifiziert und merge.defaultToUpstream nicht gesetzt." +msgstr "Keine Version angegeben und merge.defaultToUpstream ist nicht gesetzt." #: builtin/merge.c:1293 msgid "Can merge only exactly one commit into empty head" -msgstr "Kann nur exakt eine Version in einem leeren Kopf zusammenführen." +msgstr "Kann nur exakt eine Version in einem leeren Zweig zusammenführen." #: builtin/merge.c:1296 msgid "Squash commit into empty head not supported yet" -msgstr "" -"Quetschen einer Version in einen leeren Kopf wird momentan nicht unterstützt." +msgstr "Bin auf einem Zweig, der noch geboren wird; kann nicht quetschen." #: builtin/merge.c:1298 msgid "Non-fast-forward commit does not make sense into an empty head" -msgstr "nicht vorzuspulende Version macht in einem leeren Kopf keinen Sinn" +msgstr "nicht vorzuspulende Version macht in einem leeren Zweig keinen Sinn" #: builtin/merge.c:1413 #, c-format @@ -2623,7 +2622,7 @@ msgstr "Vorspulen nicht möglich, breche ab." #: builtin/merge.c:1513 builtin/merge.c:1592 #, c-format msgid "Rewinding the tree to pristine...\n" -msgstr "Rücklauf des Baumes bis zum Ursprung...\n" +msgstr "Rücklauf des Zweiges bis zum Ursprung...\n" #: builtin/merge.c:1517 #, c-format @@ -2633,7 +2632,7 @@ msgstr "Probiere Zusammenführungsstrategie %s...\n" #: builtin/merge.c:1583 #, c-format msgid "No merge strategy handled the merge.\n" -msgstr "Keine Zusammenführungsstrategie behandelt die Zusammenführung.\n" +msgstr "Keine Zusammenführungsstrategie behandelt diese Zusammenführung.\n" #: builtin/merge.c:1585 #, c-format @@ -2649,17 +2648,17 @@ msgstr "Benutze \"%s\" um die Auflösung per Hand vorzubereiten.\n" #, c-format msgid "Automatic merge went well; stopped before committing as requested\n" msgstr "" -"Automatische Zusammenführung gut gegangen; stoppe, wie angefragt, vor der " -"Eintragung\n" +"Automatische Zusammenführung abgeschlossen; halte, wie gewünscht, vor der " +"Eintragung an\n" #: builtin/mv.c:108 #, c-format msgid "Checking rename of '%s' to '%s'\n" -msgstr "Prüfe Umbenennen von '%s' nach '%s'\n" +msgstr "Prüfe Umbenennung von '%s' nach '%s'\n" #: builtin/mv.c:112 msgid "bad source" -msgstr "schlechte Quelle" +msgstr "ungültige Quelle" #: builtin/mv.c:115 msgid "can not move directory into itself" @@ -2684,7 +2683,7 @@ msgstr "nicht unter Versionskontrolle" #: builtin/mv.c:173 msgid "destination exists" -msgstr "Ziel existiert" +msgstr "Ziel existiert bereits" #: builtin/mv.c:181 #, c-format @@ -2712,7 +2711,7 @@ msgstr "Benenne %s nach %s um\n" #: builtin/mv.c:215 #, c-format msgid "renaming '%s' failed" -msgstr "Umbenennen von '%s' fehlgeschlagen" +msgstr "Umbenennung von '%s' fehlgeschlagen" #: builtin/notes.c:139 #, c-format @@ -2726,12 +2725,12 @@ msgstr "konnte Datei-Deskriptor für Ausgabe von 'show' nicht öffnen" #: builtin/notes.c:155 #, c-format msgid "failed to close pipe to 'show' for object '%s'" -msgstr "Schließen der Pipe zu 'show' für Objekt '%s' fehlgeschlagen." +msgstr "Schließen der Verbindung zu 'show' ist für Objekt '%s' fehlgeschlagen." #: builtin/notes.c:158 #, c-format msgid "failed to finish 'show' for object '%s'" -msgstr "'show' konnte für Objekt '%s' nicht abgeschlossen werden" +msgstr "konnte 'show' für Objekt '%s' nicht abschließen" #: builtin/notes.c:175 builtin/tag.c:343 #, c-format @@ -2772,7 +2771,7 @@ msgstr "konnte '%s' nicht öffnen oder lesen" #: builtin/notes.c:968 builtin/reset.c:293 builtin/tag.c:537 #, c-format msgid "Failed to resolve '%s' as a valid ref." -msgstr "'%s' konnte nicht als gültige Referenz aufgelöst werden." +msgstr "Konnte '%s' nicht als gültige Referenz auflösen." #: builtin/notes.c:275 #, c-format @@ -2786,7 +2785,7 @@ msgstr "Kann uninitialisierten/unreferenzierten Notiz-Baum nicht eintragen." #: builtin/notes.c:340 #, c-format msgid "Bad notes.rewriteMode value: '%s'" -msgstr "Schlechter notes.rewriteMode Wert: '%s'" +msgstr "Ungültiger notes.rewriteMode Wert: '%s'" #: builtin/notes.c:350 #, c-format @@ -2799,7 +2798,7 @@ msgstr "" #: builtin/notes.c:377 #, c-format msgid "Bad %s value: '%s'" -msgstr "Schlechter %s Wert: '%s'" +msgstr "Ungültiger %s Wert: '%s'" #: builtin/notes.c:441 #, c-format @@ -2852,7 +2851,7 @@ msgstr "" #: builtin/notes.c:668 #, c-format msgid "Missing notes on source object %s. Cannot copy." -msgstr "Vermisse Notizen für Quell-Objekt %s. Kann nicht kopieren." +msgstr "Keine Notizen für Quell-Objekt %s. Kopie nicht möglich." #: builtin/notes.c:717 #, c-format @@ -2860,7 +2859,7 @@ msgid "" "The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n" "Please use 'git notes add -f -m/-F/-c/-C' instead.\n" msgstr "" -"Die Optionen -m/-F/-c/-C sind veraltet für das 'edit' Unterkommando.\n" +"Die Optionen -m/-F/-c/-C sind für das Unterkommando 'edit' veraltet.\n" "Bitte benutze stattdessen 'git notes add -f -m/-F/-c/-C'.\n" #: builtin/notes.c:971 @@ -2873,25 +2872,25 @@ msgstr "Objekt %s hat keine Notiz\n" msgid "Unknown subcommand: %s" msgstr "Unbekanntes Unterkommando: %s" -#: builtin/pack-objects.c:2310 +#: builtin/pack-objects.c:2315 #, c-format msgid "unsupported index version %s" msgstr "Nicht unterstützte Bereitstellungsversion %s" -#: builtin/pack-objects.c:2314 +#: builtin/pack-objects.c:2319 #, c-format msgid "bad index version '%s'" -msgstr "Schlechte Bereitstellungsversion '%s'" +msgstr "Ungültige Bereitstellungsversion '%s'" -#: builtin/pack-objects.c:2322 +#: builtin/pack-objects.c:2342 #, c-format msgid "option %s does not accept negative form" msgstr "Option %s akzeptiert keine negative Form" -#: builtin/pack-objects.c:2326 +#: builtin/pack-objects.c:2346 #, c-format msgid "unable to parse value '%s' for option %s" -msgstr "konnte Wert '%s' für Option %s nicht analysieren" +msgstr "konnte Wert '%s' für Option %s nicht parsen" #: builtin/push.c:45 msgid "tag shorthand without <tag>" @@ -2914,7 +2913,7 @@ msgstr "" "Um die Historie, führend zum aktuellen (freistehende Zweigspitze (HEAD))\n" "Status zu versenden, benutze\n" "\n" -" git push %s HEAD:<Name-des-entfernten-Zweiges>\n" +" git push %s HEAD:<Name-des-externen-Zweiges>\n" #: builtin/push.c:91 #, c-format @@ -2924,17 +2923,16 @@ msgid "" "\n" " git push --set-upstream %s %s\n" msgstr "" -"Der aktuelle Zweig %s hat keinen Zweig im entfernten Projektarchiv.\n" -"Um den aktuellen Zweig zu versenden und die Entfernung als entferntes\n" -"Projektarchiv zu setzen, benutze\n" +"Der aktuelle Zweig %s hat keinen Zweig im externen Projektarchiv.\n" +"Um den aktuellen Zweig zu versenden und das Fernarchiv als externes\n" +"Projektarchiv zu verwenden, benutze\n" "\n" " git push --set-upstream %s %s\n" #: builtin/push.c:99 #, c-format msgid "The current branch %s has multiple upstream branches, refusing to push." -msgstr "" -"Der aktuelle Zweig %s hat mehrere entfernte Zweige, Versand verweigert." +msgstr "Der aktuelle Zweig %s hat mehrere externe Zweige, Versand verweigert." #: builtin/push.c:102 #, c-format @@ -2943,16 +2941,16 @@ msgid "" "your current branch '%s', without telling me what to push\n" "to update which remote branch." msgstr "" -"Du versendest nach '%s', welches kein entferntes Projektarchiv deines\n" +"Du versendest nach '%s', welches kein externes Projektarchiv deines\n" "aktuellen Zweiges '%s' ist, ohne mir mitzuteilen, was ich versenden\n" -"soll um welchen entfernten Zweig zu aktualisieren." +"soll, um welchen externen Zweig zu aktualisieren." #: builtin/push.c:131 msgid "" "You didn't specify any refspecs to push, and push.default is \"nothing\"." msgstr "" -"Du hast keine Referenzspezifikationen zum Versenden spezifiziert, und push." -"default ist \"nothing\"." +"Du hast keine Referenzspezifikationen zum Versenden angegeben, und " +"push.default ist \"nothing\"." #: builtin/push.c:138 msgid "" @@ -2962,10 +2960,10 @@ msgid "" "See the 'Note about fast-forwards' in 'git push --help' for details." msgstr "" "Aktualisierungen wurden zurückgewiesen, weil die Spitze deines aktuellen\n" -"Zweiges hinter seinem entfernten Gegenstück ist. Führe die entfernten\n" -"Änderungen zusammen (z.B. 'git pull') bevor du erneut versendest.\n" -"Siehe auch die 'Note about fast-forwards' Sektion von 'git push --help'\n" -"für weitere Details." +"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Führe die\n" +"externen Änderungen zusammen (z.B. 'git pull') bevor du erneut versendest.\n" +"Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help' für\n" +"weitere Details." #: builtin/push.c:144 msgid "" @@ -2975,10 +2973,10 @@ msgid "" "variable to 'current' or 'upstream' to push only the current branch." msgstr "" "Aktualisierungen wurden zurückgewiesen, weil die Spitze eines versendeten\n" -"Zweiges hinter seinem entfernten Gegenstück ist. Wenn du nicht beabsichtigt\n" -"hast, diesen Zweig zu versenden, kannst du auch den zu versendenden Zweig\n" -"spezifizieren oder die Konfigurationsvariable 'push.default' zu 'current'\n" -"oder 'upstream' setze, um nur den aktuellen Zweig zu versenden." +"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Wenn du nicht\n" +"beabsichtigt hast, diesen Zweig zu versenden, kannst du auch den zu versendenden\n" +"Zweig spezifizieren oder die Konfigurationsvariable 'push.default' zu 'current'\n" +"oder 'upstream' setzen, um nur den aktuellen Zweig zu versenden." #: builtin/push.c:150 msgid "" @@ -2988,16 +2986,16 @@ msgid "" "See the 'Note about fast-forwards' in 'git push --help' for details." msgstr "" "Aktualisierungen wurden zurückgewiesen, weil die Spitze eines versendeten\n" -"Zweiges hinter seinem entfernten Gegenstück ist. Checke diesen Zweig aus\n" -"und führe die entfernten Änderungen zusammen (z.B. 'git pull') bevor du\n" -"erneut versendest.\n" -"Sie auch die 'Note about fast-forwards' Sektion von 'git push --help'\n" +"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Checke diesen\n" +"Zweig aus und führe die externen Änderungen zusammen (z.B. 'git pull')\n" +"bevor du erneut versendest.\n" +"Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'\n" "für weitere Details." #: builtin/push.c:190 #, c-format msgid "Pushing to %s\n" -msgstr "Schiebe zu %s\n" +msgstr "Versende nach %s\n" #: builtin/push.c:194 #, c-format @@ -3007,7 +3005,7 @@ msgstr "Fehler beim Versenden einiger Referenzen nach '%s'" #: builtin/push.c:226 #, c-format msgid "bad repository '%s'" -msgstr "schlechtes Projektarchiv '%s'" +msgstr "ungültiges Projektarchiv '%s'" #: builtin/push.c:227 msgid "" @@ -3023,7 +3021,7 @@ msgid "" msgstr "" "Kein Ziel zum Versenden konfiguriert.\n" "Entweder spezifizierst du die URL von der Kommandozeile oder konfigurierst " -"ein entferntes Projektarchiv unter Benutzung von\n" +"ein externes Projektarchiv unter Benutzung von\n" "\n" " git remote add <Name> <URL>\n" "\n" @@ -3051,29 +3049,29 @@ msgstr "--mirror kann nicht mit Referenzspezifikationen kombiniert werden" msgid "--all and --mirror are incompatible" msgstr "--all und --mirror sind inkompatibel" -#: builtin/push.c:342 +#: builtin/push.c:334 msgid "--delete is incompatible with --all, --mirror and --tags" msgstr "--delete ist inkompatibel mit --all, --mirror und --tags" -#: builtin/push.c:344 +#: builtin/push.c:336 msgid "--delete doesn't make sense without any refs" -msgstr "--delete macht ohne irgendeine Referenz ohne keinen Sinn" +msgstr "--delete macht ohne irgendeine Referenz keinen Sinn" #: builtin/reset.c:33 msgid "mixed" -msgstr "gemischt" +msgstr "mixed" #: builtin/reset.c:33 msgid "soft" -msgstr "weich" +msgstr "soft" #: builtin/reset.c:33 msgid "hard" -msgstr "hart" +msgstr "hard" #: builtin/reset.c:33 msgid "keep" -msgstr "halten" +msgstr "keep" #: builtin/reset.c:77 msgid "You do not have a valid HEAD." @@ -3109,7 +3107,8 @@ msgstr "Nicht bereitgestellte Änderungen nach Zurücksetzung:" #, c-format msgid "Cannot do a %s reset in the middle of a merge." msgstr "" -"Kann keine %s Zurücksetzung innerhalb einer Zusammenführung durchführen." +"Kann keine '%s' Zurücksetzung durchführen, während eine Zusammenführung im " +"Gange ist." #: builtin/reset.c:297 #, c-format @@ -3128,17 +3127,17 @@ msgstr "" #: builtin/reset.c:313 #, c-format msgid "Cannot do %s reset with paths." -msgstr "Kann keine %s Zurücksetzung mit Pfaden machen." +msgstr "Eine '%s' Zurücksetzung mit Pfaden ist nicht möglich." #: builtin/reset.c:325 #, c-format msgid "%s reset is not allowed in a bare repository" -msgstr "%s Zurücksetzung ist in einem leeren Projektarchiv nicht erlaubt" +msgstr "'%s' Zurücksetzung ist in einem bloßen Projektarchiv nicht erlaubt" #: builtin/reset.c:341 #, c-format msgid "Could not reset index file to revision '%s'." -msgstr "Konnte Bereitstellungsdatei nicht zu Revision '%s' zurücksetzen." +msgstr "Konnte Bereitstellungsdatei nicht zu Version '%s' zurücksetzen." #: builtin/revert.c:70 builtin/revert.c:92 #, c-format @@ -3189,7 +3188,7 @@ msgstr "" #: builtin/rm.c:194 #, c-format msgid "not removing '%s' recursively without -r" -msgstr "entferne '%s' nicht rekursiv ohne -r" +msgstr "'%s' wird nicht ohne -r rekursiv entfernt" #: builtin/rm.c:230 #, c-format @@ -3237,7 +3236,7 @@ msgstr "" "\n" "#\n" "# Gebe eine Markierungsbeschreibung ein\n" -"# Zeilen beginnend mit '#' werden ignoriert.\n" +"# Zeilen, die mit '#' beginnen, werden ignoriert.\n" "#\n" #: builtin/tag.c:254 @@ -3252,8 +3251,8 @@ msgstr "" "\n" "#\n" "# Gebe eine Markierungsbeschreibung ein\n" -"# Zeilen beginnend mit '#' werden behalten; du darfst diese selbst entfernen " -"wenn du möchtest.\n" +"# Zeilen, die mit '#' beginnen, werden behalten; du darfst diese\n" +"# selbst entfernen wenn du möchtest.\n" "#\n" #: builtin/tag.c:294 @@ -3266,7 +3265,7 @@ msgstr "konnte Markierungsdatei nicht schreiben" #: builtin/tag.c:321 msgid "bad object type." -msgstr "schlechter Objekt-Typ" +msgstr "ungültiger Objekt-Typ" #: builtin/tag.c:334 msgid "tag header too big." @@ -3283,7 +3282,7 @@ msgstr "Die Markierungsbeschreibung wurde gelassen in %s\n" #: builtin/tag.c:421 msgid "switch 'points-at' requires an object" -msgstr "Wechseln von 'points-at' erfordert ein Objekt" +msgstr "Option 'points-at' erfordert ein Objekt" #: builtin/tag.c:423 #, c-format @@ -3351,8 +3350,7 @@ msgid "" "It does not apply to blobs recorded in its index." msgstr "" "Hast du den Patch per Hand editiert?\n" -"Er kann nicht auf aufgezeichnete Blobs in seiner Bereitstellung angewendet " -"werden." +"Er kann nicht auf die Blobs in seiner 'index' Zeile angewendet werden." #: git-am.sh:163 msgid "Falling back to patching base and 3-way merge..." @@ -3388,7 +3386,7 @@ msgstr "Bitte werde dir klar. --skip oder --abort?" #: git-am.sh:513 msgid "Resolve operation not in progress, we are not resuming." -msgstr "keine Auflösung in Durchführung, wir setzen nicht fort." +msgstr "Es ist keine Auflösung im Gange, es wird nicht fortgesetzt." #: git-am.sh:579 #, sh-format @@ -3399,8 +3397,8 @@ msgstr "" #: git-am.sh:755 msgid "cannot be interactive without stdin connected to a terminal." msgstr "" -"Kann nicht interaktiv sein, ohne das die Standard-Eingabe mit einem Terminal " -"verbunden ist." +"Kann nicht interaktiv sein, ohne dass die Standard-Eingabe mit einem " +"Terminal verbunden ist." #. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a] #. in your translation. The program will only accept English @@ -3437,11 +3435,11 @@ msgstr "nicht erkannte Option: '$arg'" #: git-bisect.sh:99 #, sh-format msgid "'$arg' does not appear to be a valid revision" -msgstr "'$arg' scheint keine gültige Option zu sein" +msgstr "'$arg' scheint keine gültige Version zu sein" #: git-bisect.sh:117 msgid "Bad HEAD - I need a HEAD" -msgstr "Schlechte Zweigspitze (HEAD) - Ich brauche eine Zweigspitze (HEAD)" +msgstr "Ungültige Zweigspitze (HEAD) - Zweigspitze (HEAD) wird benötigt" #: git-bisect.sh:130 #, sh-format @@ -3453,30 +3451,30 @@ msgstr "" #: git-bisect.sh:140 msgid "won't bisect on seeked tree" -msgstr "werde nicht auf gesuchtem Baum halbieren" +msgstr "\"bisect\" auf gesuchtem Zweig nicht möglich" #: git-bisect.sh:144 msgid "Bad HEAD - strange symbolic ref" -msgstr "Schlechte Zweigspitze (HEAD) - merkwürdige symbolische Referenz" +msgstr "Ungültige Zweigspitze (HEAD) - merkwürdige symbolische Referenz" #: git-bisect.sh:189 #, sh-format msgid "Bad bisect_write argument: $state" -msgstr "Schlechtes \"bisect_write\" Argument: $state" +msgstr "Ungültiges \"bisect_write\" Argument: $state" #: git-bisect.sh:218 #, sh-format msgid "Bad rev input: $arg" -msgstr "Schlechte Referenz-Eingabe: $arg" +msgstr "Ungültige Referenz-Eingabe: $arg" #: git-bisect.sh:232 msgid "Please call 'bisect_state' with at least one argument." -msgstr "Bitte rufe 'bisect_state' mit mindestens einem Argument." +msgstr "Bitte rufe 'bisect_state' mit mindestens einem Argument auf." #: git-bisect.sh:244 #, sh-format msgid "Bad rev input: $rev" -msgstr "Schlechte Referenz-Eingabe: $rev" +msgstr "Ungültige Referenz-Eingabe: $rev" #: git-bisect.sh:250 msgid "'git bisect bad' can take only one argument." @@ -3500,7 +3498,7 @@ msgid "" "Could not check out original HEAD '$branch'.\n" "Try 'git bisect reset <commit>'." msgstr "" -"Konnte die originale Zweigspitze (HEAD) '$branch' nicht auschecken.\n" +"Konnte die ursprüngliche Zweigspitze (HEAD) '$branch' nicht auschecken.\n" "Versuche 'git bisect reset <Version>'." #: git-bisect.sh:390 @@ -3526,9 +3524,9 @@ msgid "" "Please, fix them up in the work tree, and then use 'git add/rm <file>'\n" "as appropriate to mark resolution, or use 'git commit -a'." msgstr "" -"\"pull\" ist nicht möglich weil du nicht zusammengeführte Dateien hast.\n" +"\"pull\" ist nicht möglich, weil du nicht zusammengeführte Dateien hast.\n" "Bitte korrigiere dies im Arbeitsbaum und benutze dann 'git add/rm <Datei>'\n" -"wie vorgesehen, um die Auflösung zu markieren, oder benutze 'git commit -a'." +"um die Auflösung entsprechend zu markieren, oder benutze 'git commit -a'." #: git-pull.sh:25 msgid "Pull is not possible because you have unmerged files." @@ -3543,7 +3541,7 @@ msgstr "" #: git-pull.sh:253 msgid "Cannot merge multiple branches into empty head" -msgstr "Kann nicht mehrere Zweige in einen leeren Kopf zusammenführen" +msgstr "Kann nicht mehrere Zweige in einen ungeborenen Zweig zusammenführen" #: git-pull.sh:257 msgid "Cannot rebase onto multiple branches" @@ -3600,7 +3598,7 @@ msgstr "Kein \"stash\" gefunden." #: git-stash.sh:359 #, sh-format msgid "Too many revisions specified: $REV" -msgstr "Zu viele Revisionen spezifiziert: $REV" +msgstr "Zu viele Revisionen angegeben: $REV" #: git-stash.sh:365 #, sh-format @@ -3610,7 +3608,7 @@ msgstr "$reference ist keine gültige Referenz" #: git-stash.sh:393 #, sh-format msgid "'$args' is not a stash-like commit" -msgstr "'$args' ist keine \"stash\"-artiger Version" +msgstr "'$args' ist keine \"stash\"-artige Version" #: git-stash.sh:404 #, sh-format @@ -3623,7 +3621,8 @@ msgstr "unfähig die Bereitstellung zu aktualisieren" #: git-stash.sh:416 msgid "Cannot apply a stash in the middle of a merge" -msgstr "Kann keinen \"stash\" innerhalb einer Zusammenführung anwenden" +msgstr "" +"Kann \"stash\" nicht anwenden, solang eine Zusammenführung im Gange ist" #: git-stash.sh:424 msgid "Conflicts in index. Try without --index." @@ -3653,12 +3652,12 @@ msgstr "Kein Zweigname spezifiziert" #: git-stash.sh:570 msgid "(To restore them type \"git stash apply\")" -msgstr "(Um es wiederherzustellen schreibe \"git stash apply\")" +msgstr "(Zur Wiederherstellung gebe \"git stash apply\" ein)" #: git-submodule.sh:56 #, sh-format msgid "cannot strip one component off url '$remoteurl'" -msgstr "Kann eine Komponente von URL '$remoteurl' nicht abstreifen" +msgstr "Kann eine Komponente von URL '$remoteurl' nicht extrahieren" #: git-submodule.sh:109 #, sh-format @@ -3674,152 +3673,156 @@ msgstr "Klonen von '$url' in Unterprojekt-Pfad '$sm_path' fehlgeschlagen" #, sh-format msgid "Gitdir '$a' is part of the submodule path '$b' or vice versa" msgstr "" -"Git-Verzeichnis '$a' ist Teil des Unterprojekt-Pfades '$b' oder umgekehrt" +"Git-Verzeichnis '$a' ist Teil des Unterprojekt-Pfades '$b', oder umgekehrt" -#: git-submodule.sh:249 +#: git-submodule.sh:248 #, sh-format msgid "repo URL: '$repo' must be absolute or begin with ./|../" msgstr "repo URL: '$repo' muss absolut sein oder mit ./|../ beginnen" -#: git-submodule.sh:266 -#, sh-format -msgid "'$sm_path' already exists in the index" -msgstr "'$sm_path' existiert bereits in der Bereitstellung" +#: git-submodule.sh:265 +#, sh-format +msgid "'$path' already exists in the index" +msgstr "'$path' existiert bereits in der Bereitstellung" -#: git-submodule.sh:283 +#: git-submodule.sh:282 #, sh-format msgid "'$sm_path' already exists and is not a valid git repo" msgstr "'$sm_path' existiert bereits und ist kein gültiges Git-Projektarchiv" -#: git-submodule.sh:297 +#: git-submodule.sh:296 #, sh-format msgid "Unable to checkout submodule '$sm_path'" msgstr "Unfähig Unterprojekt '$sm_path' auszuchecken" -#: git-submodule.sh:302 +#: git-submodule.sh:301 #, sh-format msgid "Failed to add submodule '$sm_path'" msgstr "Hinzufügen von Unterprojekt '$sm_path' fehlgeschlagen" -#: git-submodule.sh:307 +#: git-submodule.sh:306 #, sh-format msgid "Failed to register submodule '$sm_path'" msgstr "Registierung von Unterprojekt '$sm_path' fehlgeschlagen" -#: git-submodule.sh:349 +#: git-submodule.sh:348 #, sh-format msgid "Entering '$prefix$sm_path'" msgstr "Betrete '$prefix$sm_path'" -#: git-submodule.sh:363 +#: git-submodule.sh:360 #, sh-format msgid "Stopping at '$sm_path'; script returned non-zero status." msgstr "Stoppe bei '$sm_path'; Skript gab nicht-Null Status zurück." -#: git-submodule.sh:405 +#: git-submodule.sh:402 #, sh-format msgid "No url found for submodule path '$sm_path' in .gitmodules" msgstr "Keine URL für Unterprojekt-Pfad '$sm_path' in .gitmodules gefunden" -#: git-submodule.sh:414 +#: git-submodule.sh:411 #, sh-format msgid "Failed to register url for submodule path '$sm_path'" -msgstr "Fehler beim Registrieren der URL für Unterprojekt-Pfad '$sm_path'" +msgstr "Registrierung der URL für Unterprojekt-Pfad '$sm_path' fehlgeschlagen" -#: git-submodule.sh:422 +#: git-submodule.sh:419 #, sh-format msgid "Failed to register update mode for submodule path '$sm_path'" -msgstr "" -"Fehler beim Registrieren des Aktualisierungsmodus für Unterprojekt-Pfad " -"'$sm_path'" +msgstr "Registrierung des Aktualisierungsmodus für Unterprojekt-Pfad " +"'$sm_path' fehlgeschlagen" -#: git-submodule.sh:424 +#: git-submodule.sh:421 #, sh-format msgid "Submodule '$name' ($url) registered for path '$sm_path'" -msgstr "Unterprojekt '$name' ($url) registriert für Pfad '$sm_path'" +msgstr "Unterprojekt '$name' ($url) ist für Pfad '$sm_path' registriert" -#: git-submodule.sh:523 +#: git-submodule.sh:520 #, sh-format msgid "" "Submodule path '$sm_path' not initialized\n" "Maybe you want to use 'update --init'?" msgstr "" -"Unterprojekt-Pfad '$sm_path' nicht initialisiert\n" +"Unterprojekt-Pfad '$sm_path' ist nicht initialisiert\n" "Vielleicht möchtest du 'update --init' benutzen?" -#: git-submodule.sh:536 +#: git-submodule.sh:533 #, sh-format msgid "Unable to find current revision in submodule path '$sm_path'" -msgstr "Konnte aktuelle Revision in Unterprojekt-Pfad '$sm_path' nicht finden" +msgstr "Konnte aktuelle Version in Unterprojekt-Pfad '$sm_path' nicht finden" -#: git-submodule.sh:555 +#: git-submodule.sh:552 #, sh-format msgid "Unable to fetch in submodule path '$sm_path'" msgstr "Konnte in Unterprojekt-Pfad '$sm_path' nicht anfordern" -#: git-submodule.sh:569 +#: git-submodule.sh:566 #, sh-format msgid "Unable to rebase '$sha1' in submodule path '$sm_path'" msgstr "Neuaufbau von '$sha1' in Unterprojekt-Pfad '$sm_path' nicht möglich" -#: git-submodule.sh:570 +#: git-submodule.sh:567 #, sh-format msgid "Submodule path '$sm_path': rebased into '$sha1'" msgstr "Unterprojekt-Pfad '$sm_path': neu aufgebaut in '$sha1'" -#: git-submodule.sh:575 +#: git-submodule.sh:572 #, sh-format msgid "Unable to merge '$sha1' in submodule path '$sm_path'" -msgstr "Konnte '$sha1' nicht in Unterprojekt-Pfad '$sm_path' zusammenführen" +msgstr "" +"Zusammenführung von '$sha1' in Unterprojekt-Pfad '$sm_path' fehlgeschlagen" -#: git-submodule.sh:576 +#: git-submodule.sh:573 #, sh-format msgid "Submodule path '$sm_path': merged in '$sha1'" msgstr "Unterprojekt-Pfad '$sm_path': zusammengeführt in '$sha1'" -#: git-submodule.sh:581 +#: git-submodule.sh:578 #, sh-format msgid "Unable to checkout '$sha1' in submodule path '$sm_path'" msgstr "Konnte '$sha1' in Unterprojekt-Pfad '$sm_path' nicht auschecken." -#: git-submodule.sh:582 +#: git-submodule.sh:579 #, sh-format msgid "Submodule path '$sm_path': checked out '$sha1'" msgstr "Unterprojekt-Pfad: '$sm_path': '$sha1' ausgecheckt" -#: git-submodule.sh:604 git-submodule.sh:927 +#: git-submodule.sh:601 git-submodule.sh:924 #, sh-format msgid "Failed to recurse into submodule path '$sm_path'" msgstr "Fehler bei Rekursion in Unterprojekt-Pfad '$sm_path'" -#: git-submodule.sh:712 +#: git-submodule.sh:709 msgid "--" msgstr "--" -#: git-submodule.sh:770 +#: git-submodule.sh:767 #, sh-format msgid " Warn: $name doesn't contain commit $sha1_src" msgstr " Warnung: $name beinhaltet nicht Version $sha1_src" -#: git-submodule.sh:773 +#: git-submodule.sh:770 #, sh-format msgid " Warn: $name doesn't contain commit $sha1_dst" msgstr " Warnung: $name beinhaltet nicht Version $sha1_dst" -#: git-submodule.sh:776 +#: git-submodule.sh:773 #, sh-format msgid " Warn: $name doesn't contain commits $sha1_src and $sha1_dst" -msgstr " Warnung: $name beinhaltet nich die Versionen $sha1_src und $sha1_dst" +msgstr "" +" Warnung: $name beinhaltet nicht die Versionen $sha1_src und $sha1_dst" -#: git-submodule.sh:801 +#: git-submodule.sh:798 msgid "blob" msgstr "Blob" -#: git-submodule.sh:802 +#: git-submodule.sh:799 msgid "submodule" msgstr "Unterprojekt" -#: git-submodule.sh:973 +#: git-submodule.sh:970 #, sh-format msgid "Synchronizing submodule url for '$name'" msgstr "Synchronisiere Unterprojekt-URL für '$name'" + +#~ msgid "Too many options specified" +#~ msgstr "Zu viele Optionen angegeben" diff --git a/po/git.pot b/po/git.pot index 730cac7b83..decd3d59e5 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: 2012-04-28 20:17+0800\n" +"POT-Creation-Date: 2012-05-15 06:42+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" @@ -35,6 +35,80 @@ msgid "" "or use 'git commit -a'." msgstr "" +#: bundle.c:36 +#, c-format +msgid "'%s' does not look like a v2 bundle file" +msgstr "" + +#: bundle.c:63 +#, c-format +msgid "unrecognized header: %s%s (%d)" +msgstr "" + +#: bundle.c:89 builtin/commit.c:697 +#, c-format +msgid "could not open '%s'" +msgstr "" + +#: bundle.c:140 +msgid "Repository lacks these prerequisite commits:" +msgstr "" + +#: bundle.c:164 sequencer.c:533 sequencer.c:965 builtin/log.c:289 +#: builtin/log.c:719 builtin/log.c:1335 builtin/log.c:1554 builtin/merge.c:347 +#: builtin/shortlog.c:181 +msgid "revision walk setup failed" +msgstr "" + +#: bundle.c:186 +#, c-format +msgid "The bundle contains %d ref" +msgid_plural "The bundle contains %d refs" +msgstr[0] "" +msgstr[1] "" + +#: bundle.c:192 +#, c-format +msgid "The bundle requires this ref" +msgid_plural "The bundle requires these %d refs" +msgstr[0] "" +msgstr[1] "" + +#: bundle.c:290 +msgid "rev-list died" +msgstr "" + +#: bundle.c:296 builtin/log.c:1231 builtin/shortlog.c:284 +#, c-format +msgid "unrecognized argument: %s" +msgstr "" + +#: bundle.c:331 +#, c-format +msgid "ref '%s' is excluded by the rev-list options" +msgstr "" + +#: bundle.c:376 +msgid "Refusing to create empty bundle." +msgstr "" + +#: bundle.c:394 +msgid "Could not spawn pack-objects" +msgstr "" + +#: bundle.c:412 +msgid "pack-objects died" +msgstr "" + +#: bundle.c:415 +#, c-format +msgid "cannot create '%s'" +msgstr "" + +#: bundle.c:437 +msgid "index-pack died" +msgstr "" + #: commit.c:48 #, c-format msgid "could not parse %s" @@ -63,6 +137,73 @@ msgstr "" msgid "failed to close rev-list's stdin: %s" msgstr "" +#: date.c:95 +msgid "in the future" +msgstr "" + +#: date.c:101 +#, c-format +msgid "%lu second ago" +msgid_plural "%lu seconds ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:108 +#, c-format +msgid "%lu minute ago" +msgid_plural "%lu minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:115 +#, c-format +msgid "%lu hour ago" +msgid_plural "%lu hours ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:122 +#, c-format +msgid "%lu day ago" +msgid_plural "%lu days ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:128 +#, c-format +msgid "%lu week ago" +msgid_plural "%lu weeks ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:135 +#, c-format +msgid "%lu month ago" +msgid_plural "%lu months ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:146 +#, c-format +msgid "%lu year" +msgid_plural "%lu years" +msgstr[0] "" +msgstr[1] "" + +#: date.c:149 +#, c-format +msgid "%s, %lu month ago" +msgid_plural "%s, %lu months ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:154 date.c:159 +#, c-format +msgid "%lu year ago" +msgid_plural "%lu years ago" +msgstr[0] "" +msgstr[1] "" + #: diff.c:105 #, c-format msgid " Failed to parse dirstat cut-off percentage '%.*s'\n" @@ -105,7 +246,7 @@ msgid_plural ", %d deletions(-)" msgstr[0] "" msgstr[1] "" -#: diff.c:3435 +#: diff.c:3478 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" @@ -139,13 +280,53 @@ msgstr "" msgid "'%s': short read %s" msgstr "" -#: help.c:287 +#: help.c:207 +#, c-format +msgid "available git commands in '%s'" +msgstr "" + +#: help.c:214 +msgid "git commands available from elsewhere on your $PATH" +msgstr "" + +#: help.c:270 #, c-format msgid "" "'%s' appears to be a git command, but we were not\n" "able to execute it. Maybe git-%s is broken?" msgstr "" +#: help.c:327 +msgid "Uh oh. Your system reports no Git commands at all." +msgstr "" + +#: help.c:349 +#, c-format +msgid "" +"WARNING: You called a Git command named '%s', which does not exist.\n" +"Continuing under the assumption that you meant '%s'" +msgstr "" + +#: help.c:354 +#, c-format +msgid "in %0.1f seconds automatically..." +msgstr "" + +#: help.c:361 +#, c-format +msgid "git: '%s' is not a git command. See 'git --help'." +msgstr "" + +#: help.c:365 +msgid "" +"\n" +"Did you mean this?" +msgid_plural "" +"\n" +"Did you mean one of these?" +msgstr[0] "" +msgstr[1] "" + #: remote.c:1607 #, c-format msgid "Your branch is ahead of '%s' by %d commit.\n" @@ -172,227 +353,239 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: sequencer.c:120 builtin/merge.c:865 builtin/merge.c:978 +#: sequencer.c:121 builtin/merge.c:865 builtin/merge.c:978 #: builtin/merge.c:1088 builtin/merge.c:1098 #, c-format msgid "Could not open '%s' for writing" msgstr "" -#: sequencer.c:122 builtin/merge.c:333 builtin/merge.c:868 +#: sequencer.c:123 builtin/merge.c:333 builtin/merge.c:868 #: builtin/merge.c:1090 builtin/merge.c:1103 #, c-format msgid "Could not write to '%s'" msgstr "" -#: sequencer.c:143 +#: sequencer.c:144 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add <paths>' or 'git rm <paths>'" msgstr "" -#: sequencer.c:146 +#: sequencer.c:147 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add <paths>' or 'git rm <paths>'\n" "and commit the result with 'git commit'" msgstr "" -#: sequencer.c:159 sequencer.c:685 sequencer.c:768 +#: sequencer.c:160 sequencer.c:741 sequencer.c:824 #, c-format msgid "Could not write to %s" msgstr "" -#: sequencer.c:162 +#: sequencer.c:163 #, c-format msgid "Error wrapping up %s" msgstr "" -#: sequencer.c:177 +#: sequencer.c:178 msgid "Your local changes would be overwritten by cherry-pick." msgstr "" -#: sequencer.c:179 +#: sequencer.c:180 msgid "Your local changes would be overwritten by revert." msgstr "" -#: sequencer.c:182 +#: sequencer.c:183 msgid "Commit your changes or stash them to proceed." msgstr "" #. TRANSLATORS: %s will be "revert" or "cherry-pick" -#: sequencer.c:232 +#: sequencer.c:233 #, c-format msgid "%s: Unable to write new index file" msgstr "" -#: sequencer.c:298 +#: sequencer.c:261 +msgid "Could not resolve HEAD commit\n" +msgstr "" + +#: sequencer.c:282 +msgid "Unable to update cache tree\n" +msgstr "" + +#: sequencer.c:323 +#, c-format +msgid "Could not parse commit %s\n" +msgstr "" + +#: sequencer.c:328 +#, c-format +msgid "Could not parse parent commit %s\n" +msgstr "" + +#: sequencer.c:358 msgid "Your index file is unmerged." msgstr "" -#: sequencer.c:301 +#: sequencer.c:361 msgid "You do not have a valid HEAD" msgstr "" -#: sequencer.c:316 +#: sequencer.c:376 #, c-format msgid "Commit %s is a merge but no -m option was given." msgstr "" -#: sequencer.c:324 +#: sequencer.c:384 #, c-format msgid "Commit %s does not have parent %d" msgstr "" -#: sequencer.c:328 +#: sequencer.c:388 #, c-format msgid "Mainline was specified but commit %s is not a merge." msgstr "" #. TRANSLATORS: The first %s will be "revert" or #. "cherry-pick", the second %s a SHA1 -#: sequencer.c:339 +#: sequencer.c:399 #, c-format msgid "%s: cannot parse parent commit %s" msgstr "" -#: sequencer.c:343 +#: sequencer.c:403 #, c-format msgid "Cannot get commit message for %s" msgstr "" -#: sequencer.c:427 +#: sequencer.c:491 #, c-format msgid "could not revert %s... %s" msgstr "" -#: sequencer.c:428 +#: sequencer.c:492 #, c-format msgid "could not apply %s... %s" msgstr "" -#: sequencer.c:450 sequencer.c:909 builtin/log.c:289 builtin/log.c:719 -#: builtin/log.c:1335 builtin/log.c:1554 builtin/merge.c:347 -#: builtin/shortlog.c:181 -msgid "revision walk setup failed" -msgstr "" - -#: sequencer.c:453 +#: sequencer.c:536 msgid "empty commit set passed" msgstr "" -#: sequencer.c:461 +#: sequencer.c:544 #, c-format msgid "git %s: failed to read the index" msgstr "" -#: sequencer.c:466 +#: sequencer.c:549 #, c-format msgid "git %s: failed to refresh the index" msgstr "" -#: sequencer.c:551 +#: sequencer.c:607 #, c-format msgid "Cannot %s during a %s" msgstr "" -#: sequencer.c:573 +#: sequencer.c:629 #, c-format msgid "Could not parse line %d." msgstr "" -#: sequencer.c:578 +#: sequencer.c:634 msgid "No commits parsed." msgstr "" -#: sequencer.c:591 +#: sequencer.c:647 #, c-format msgid "Could not open %s" msgstr "" -#: sequencer.c:595 +#: sequencer.c:651 #, c-format msgid "Could not read %s." msgstr "" -#: sequencer.c:602 +#: sequencer.c:658 #, c-format msgid "Unusable instruction sheet: %s" msgstr "" -#: sequencer.c:630 +#: sequencer.c:686 #, c-format msgid "Invalid key: %s" msgstr "" -#: sequencer.c:633 +#: sequencer.c:689 #, c-format msgid "Invalid value for %s: %s" msgstr "" -#: sequencer.c:645 +#: sequencer.c:701 #, c-format msgid "Malformed options sheet: %s" msgstr "" -#: sequencer.c:666 +#: sequencer.c:722 msgid "a cherry-pick or revert is already in progress" msgstr "" -#: sequencer.c:667 +#: sequencer.c:723 msgid "try \"git cherry-pick (--continue | --quit | --abort)\"" msgstr "" -#: sequencer.c:671 +#: sequencer.c:727 #, c-format msgid "Could not create sequencer directory %s" msgstr "" -#: sequencer.c:687 sequencer.c:772 +#: sequencer.c:743 sequencer.c:828 #, c-format msgid "Error wrapping up %s." msgstr "" -#: sequencer.c:706 sequencer.c:840 +#: sequencer.c:762 sequencer.c:896 msgid "no cherry-pick or revert in progress" msgstr "" -#: sequencer.c:708 +#: sequencer.c:764 msgid "cannot resolve HEAD" msgstr "" -#: sequencer.c:710 +#: sequencer.c:766 msgid "cannot abort from a branch yet to be born" msgstr "" -#: sequencer.c:732 +#: sequencer.c:788 builtin/apply.c:3689 #, c-format msgid "cannot open %s: %s" msgstr "" -#: sequencer.c:735 +#: sequencer.c:791 #, c-format msgid "cannot read %s: %s" msgstr "" -#: sequencer.c:736 +#: sequencer.c:792 msgid "unexpected end of file" msgstr "" -#: sequencer.c:742 +#: sequencer.c:798 #, c-format msgid "stored pre-cherry-pick HEAD file '%s' is corrupt" msgstr "" -#: sequencer.c:765 +#: sequencer.c:821 #, c-format msgid "Could not format %s." msgstr "" -#: sequencer.c:927 +#: sequencer.c:983 msgid "Can't revert as initial commit" msgstr "" -#: sequencer.c:928 +#: sequencer.c:984 msgid "Can't cherry-pick into empty head" msgstr "" @@ -415,232 +608,232 @@ msgstr "" msgid "Upstream branch '%s' not stored as a remote-tracking branch" msgstr "" -#: wt-status.c:134 +#: wt-status.c:135 msgid "Unmerged paths:" msgstr "" -#: wt-status.c:140 wt-status.c:157 +#: wt-status.c:141 wt-status.c:158 #, c-format msgid " (use \"git reset %s <file>...\" to unstage)" msgstr "" -#: wt-status.c:142 wt-status.c:159 +#: wt-status.c:143 wt-status.c:160 msgid " (use \"git rm --cached <file>...\" to unstage)" msgstr "" -#: wt-status.c:143 +#: wt-status.c:144 msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)" msgstr "" -#: wt-status.c:151 +#: wt-status.c:152 msgid "Changes to be committed:" msgstr "" -#: wt-status.c:169 +#: wt-status.c:170 msgid "Changes not staged for commit:" msgstr "" -#: wt-status.c:173 +#: wt-status.c:174 msgid " (use \"git add <file>...\" to update what will be committed)" msgstr "" -#: wt-status.c:175 +#: wt-status.c:176 msgid " (use \"git add/rm <file>...\" to update what will be committed)" msgstr "" -#: wt-status.c:176 +#: wt-status.c:177 msgid "" " (use \"git checkout -- <file>...\" to discard changes in working directory)" msgstr "" -#: wt-status.c:178 +#: wt-status.c:179 msgid " (commit or discard the untracked or modified content in submodules)" msgstr "" -#: wt-status.c:187 +#: wt-status.c:188 #, c-format msgid "%s files:" msgstr "" -#: wt-status.c:190 +#: wt-status.c:191 #, c-format msgid " (use \"git %s <file>...\" to include in what will be committed)" msgstr "" -#: wt-status.c:207 +#: wt-status.c:208 msgid "bug" msgstr "" -#: wt-status.c:212 +#: wt-status.c:213 msgid "both deleted:" msgstr "" -#: wt-status.c:213 +#: wt-status.c:214 msgid "added by us:" msgstr "" -#: wt-status.c:214 +#: wt-status.c:215 msgid "deleted by them:" msgstr "" -#: wt-status.c:215 +#: wt-status.c:216 msgid "added by them:" msgstr "" -#: wt-status.c:216 +#: wt-status.c:217 msgid "deleted by us:" msgstr "" -#: wt-status.c:217 +#: wt-status.c:218 msgid "both added:" msgstr "" -#: wt-status.c:218 +#: wt-status.c:219 msgid "both modified:" msgstr "" -#: wt-status.c:248 +#: wt-status.c:249 msgid "new commits, " msgstr "" -#: wt-status.c:250 +#: wt-status.c:251 msgid "modified content, " msgstr "" -#: wt-status.c:252 +#: wt-status.c:253 msgid "untracked content, " msgstr "" -#: wt-status.c:266 +#: wt-status.c:267 #, c-format msgid "new file: %s" msgstr "" -#: wt-status.c:269 +#: wt-status.c:270 #, c-format msgid "copied: %s -> %s" msgstr "" -#: wt-status.c:272 +#: wt-status.c:273 #, c-format msgid "deleted: %s" msgstr "" -#: wt-status.c:275 +#: wt-status.c:276 #, c-format msgid "modified: %s" msgstr "" -#: wt-status.c:278 +#: wt-status.c:279 #, c-format msgid "renamed: %s -> %s" msgstr "" -#: wt-status.c:281 +#: wt-status.c:282 #, c-format msgid "typechange: %s" msgstr "" -#: wt-status.c:284 +#: wt-status.c:285 #, c-format msgid "unknown: %s" msgstr "" -#: wt-status.c:287 +#: wt-status.c:288 #, c-format msgid "unmerged: %s" msgstr "" -#: wt-status.c:290 +#: wt-status.c:291 #, c-format msgid "bug: unhandled diff status %c" msgstr "" -#: wt-status.c:713 +#: wt-status.c:737 msgid "On branch " msgstr "" -#: wt-status.c:720 +#: wt-status.c:744 msgid "Not currently on any branch." msgstr "" -#: wt-status.c:731 +#: wt-status.c:755 msgid "Initial commit" msgstr "" -#: wt-status.c:745 +#: wt-status.c:769 msgid "Untracked" msgstr "" -#: wt-status.c:747 +#: wt-status.c:771 msgid "Ignored" msgstr "" -#: wt-status.c:749 +#: wt-status.c:773 #, c-format msgid "Untracked files not listed%s" msgstr "" -#: wt-status.c:751 +#: wt-status.c:775 msgid " (use -u option to show untracked files)" msgstr "" -#: wt-status.c:757 +#: wt-status.c:781 msgid "No changes" msgstr "" -#: wt-status.c:761 +#: wt-status.c:785 #, c-format msgid "no changes added to commit%s\n" msgstr "" -#: wt-status.c:763 +#: wt-status.c:787 msgid " (use \"git add\" and/or \"git commit -a\")" msgstr "" -#: wt-status.c:765 +#: wt-status.c:789 #, c-format msgid "nothing added to commit but untracked files present%s\n" msgstr "" -#: wt-status.c:767 +#: wt-status.c:791 msgid " (use \"git add\" to track)" msgstr "" -#: wt-status.c:769 wt-status.c:772 wt-status.c:775 +#: wt-status.c:793 wt-status.c:796 wt-status.c:799 #, c-format msgid "nothing to commit%s\n" msgstr "" -#: wt-status.c:770 +#: wt-status.c:794 msgid " (create/copy files and use \"git add\" to track)" msgstr "" -#: wt-status.c:773 +#: wt-status.c:797 msgid " (use -u to show untracked files)" msgstr "" -#: wt-status.c:776 +#: wt-status.c:800 msgid " (working directory clean)" msgstr "" -#: wt-status.c:884 +#: wt-status.c:908 msgid "HEAD (no branch)" msgstr "" -#: wt-status.c:890 +#: wt-status.c:914 msgid "Initial commit on " msgstr "" -#: wt-status.c:905 +#: wt-status.c:929 msgid "behind " msgstr "" -#: wt-status.c:908 wt-status.c:911 +#: wt-status.c:932 wt-status.c:935 msgid "ahead " msgstr "" -#: wt-status.c:913 +#: wt-status.c:937 msgid ", behind " msgstr "" @@ -649,7 +842,7 @@ msgstr "" msgid "unexpected diff status %c" msgstr "" -#: builtin/add.c:67 builtin/commit.c:298 +#: builtin/add.c:67 builtin/commit.c:226 msgid "updating files failed" msgstr "" @@ -739,15 +932,359 @@ msgstr "" msgid "Maybe you wanted to say 'git add .'?\n" msgstr "" -#: builtin/add.c:420 builtin/clean.c:95 builtin/commit.c:358 builtin/mv.c:82 +#: builtin/add.c:420 builtin/clean.c:95 builtin/commit.c:286 builtin/mv.c:82 #: builtin/rm.c:162 msgid "index file corrupt" msgstr "" -#: builtin/add.c:476 builtin/mv.c:229 builtin/rm.c:260 +#: builtin/add.c:476 builtin/apply.c:4100 builtin/mv.c:229 builtin/rm.c:260 msgid "Unable to write new index file" msgstr "" +#: builtin/apply.c:106 +#, c-format +msgid "unrecognized whitespace option '%s'" +msgstr "" + +#: builtin/apply.c:121 +#, c-format +msgid "unrecognized whitespace ignore option '%s'" +msgstr "" + +#: builtin/apply.c:815 +#, c-format +msgid "Cannot prepare timestamp regexp %s" +msgstr "" + +#: builtin/apply.c:824 +#, c-format +msgid "regexec returned %d for input: %s" +msgstr "" + +#: builtin/apply.c:905 +#, c-format +msgid "unable to find filename in patch at line %d" +msgstr "" + +#: builtin/apply.c:937 +#, c-format +msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d" +msgstr "" + +#: builtin/apply.c:941 +#, c-format +msgid "git apply: bad git-diff - inconsistent new filename on line %d" +msgstr "" + +#: builtin/apply.c:942 +#, c-format +msgid "git apply: bad git-diff - inconsistent old filename on line %d" +msgstr "" + +#: builtin/apply.c:949 +#, c-format +msgid "git apply: bad git-diff - expected /dev/null on line %d" +msgstr "" + +#: builtin/apply.c:1394 +#, c-format +msgid "recount: unexpected line: %.*s" +msgstr "" + +#: builtin/apply.c:1451 +#, c-format +msgid "patch fragment without header at line %d: %.*s" +msgstr "" + +#: builtin/apply.c:1468 +#, c-format +msgid "" +"git diff header lacks filename information when removing %d leading pathname " +"component (line %d)" +msgid_plural "" +"git diff header lacks filename information when removing %d leading pathname " +"components (line %d)" +msgstr[0] "" +msgstr[1] "" + +#: builtin/apply.c:1628 +msgid "new file depends on old contents" +msgstr "" + +#: builtin/apply.c:1630 +msgid "deleted file still has contents" +msgstr "" + +#: builtin/apply.c:1656 +#, c-format +msgid "corrupt patch at line %d" +msgstr "" + +#: builtin/apply.c:1692 +#, c-format +msgid "new file %s depends on old contents" +msgstr "" + +#: builtin/apply.c:1694 +#, c-format +msgid "deleted file %s still has contents" +msgstr "" + +#: builtin/apply.c:1697 +#, c-format +msgid "** warning: file %s becomes empty but is not deleted" +msgstr "" + +#: builtin/apply.c:1843 +#, c-format +msgid "corrupt binary patch at line %d: %.*s" +msgstr "" + +#. there has to be one hunk (forward hunk) +#: builtin/apply.c:1872 +#, c-format +msgid "unrecognized binary patch at line %d" +msgstr "" + +#: builtin/apply.c:1958 +#, c-format +msgid "patch with only garbage at line %d" +msgstr "" + +#: builtin/apply.c:2048 +#, c-format +msgid "unable to read symlink %s" +msgstr "" + +#: builtin/apply.c:2052 +#, c-format +msgid "unable to open or read %s" +msgstr "" + +#: builtin/apply.c:2123 +msgid "oops" +msgstr "" + +#: builtin/apply.c:2645 +#, c-format +msgid "invalid start of line: '%c'" +msgstr "" + +#: builtin/apply.c:2763 +#, c-format +msgid "Hunk #%d succeeded at %d (offset %d line)." +msgid_plural "Hunk #%d succeeded at %d (offset %d lines)." +msgstr[0] "" +msgstr[1] "" + +#: builtin/apply.c:2775 +#, c-format +msgid "Context reduced to (%ld/%ld) to apply fragment at %d" +msgstr "" + +#: builtin/apply.c:2781 +#, c-format +msgid "" +"while searching for:\n" +"%.*s" +msgstr "" + +#: builtin/apply.c:2800 +#, c-format +msgid "missing binary patch data for '%s'" +msgstr "" + +#: builtin/apply.c:2903 +#, c-format +msgid "binary patch does not apply to '%s'" +msgstr "" + +#: builtin/apply.c:2909 +#, c-format +msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)" +msgstr "" + +#: builtin/apply.c:2930 +#, c-format +msgid "patch failed: %s:%ld" +msgstr "" + +#: builtin/apply.c:3045 +#, c-format +msgid "patch %s has been renamed/deleted" +msgstr "" + +#: builtin/apply.c:3052 builtin/apply.c:3069 +#, c-format +msgid "read of %s failed" +msgstr "" + +#: builtin/apply.c:3084 +msgid "removal patch leaves file contents" +msgstr "" + +#: builtin/apply.c:3105 +#, c-format +msgid "%s: already exists in working directory" +msgstr "" + +#: builtin/apply.c:3143 +#, c-format +msgid "%s: has been deleted/renamed" +msgstr "" + +#: builtin/apply.c:3148 builtin/apply.c:3179 +#, c-format +msgid "%s: %s" +msgstr "" + +#: builtin/apply.c:3159 +#, c-format +msgid "%s: does not exist in index" +msgstr "" + +#: builtin/apply.c:3173 +#, c-format +msgid "%s: does not match index" +msgstr "" + +#: builtin/apply.c:3190 +#, c-format +msgid "%s: wrong type" +msgstr "" + +#: builtin/apply.c:3192 +#, c-format +msgid "%s has type %o, expected %o" +msgstr "" + +#: builtin/apply.c:3247 +#, c-format +msgid "%s: already exists in index" +msgstr "" + +#: builtin/apply.c:3266 +#, c-format +msgid "new mode (%o) of %s does not match old mode (%o)%s%s" +msgstr "" + +#: builtin/apply.c:3272 +#, c-format +msgid "%s: patch does not apply" +msgstr "" + +#: builtin/apply.c:3285 +#, c-format +msgid "Checking patch %s..." +msgstr "" + +#: builtin/apply.c:3340 builtin/checkout.c:212 builtin/reset.c:158 +#, c-format +msgid "make_cache_entry failed for path '%s'" +msgstr "" + +#: builtin/apply.c:3483 +#, c-format +msgid "unable to remove %s from index" +msgstr "" + +#: builtin/apply.c:3510 +#, c-format +msgid "corrupt patch for subproject %s" +msgstr "" + +#: builtin/apply.c:3514 +#, c-format +msgid "unable to stat newly created file '%s'" +msgstr "" + +#: builtin/apply.c:3519 +#, c-format +msgid "unable to create backing store for newly created file %s" +msgstr "" + +#: builtin/apply.c:3522 +#, c-format +msgid "unable to add cache entry for %s" +msgstr "" + +#: builtin/apply.c:3555 +#, c-format +msgid "closing file '%s'" +msgstr "" + +#: builtin/apply.c:3604 +#, c-format +msgid "unable to write file '%s' mode %o" +msgstr "" + +#: builtin/apply.c:3660 +#, c-format +msgid "Applied patch %s cleanly." +msgstr "" + +#: builtin/apply.c:3668 +msgid "internal error" +msgstr "" + +#. Say this even without --verbose +#: builtin/apply.c:3671 +#, c-format +msgid "Applying patch %%s with %d reject..." +msgid_plural "Applying patch %%s with %d rejects..." +msgstr[0] "" +msgstr[1] "" + +#: builtin/apply.c:3681 +#, c-format +msgid "truncating .rej filename to %.*s.rej" +msgstr "" + +#: builtin/apply.c:3702 +#, c-format +msgid "Hunk #%d applied cleanly." +msgstr "" + +#: builtin/apply.c:3705 +#, c-format +msgid "Rejected hunk #%d." +msgstr "" + +#: builtin/apply.c:3836 +msgid "unrecognized input" +msgstr "" + +#: builtin/apply.c:3847 +msgid "unable to read index file" +msgstr "" + +#: builtin/apply.c:4042 +msgid "--index outside a repository" +msgstr "" + +#: builtin/apply.c:4045 +msgid "--cached outside a repository" +msgstr "" + +#: builtin/apply.c:4061 +#, c-format +msgid "can't open patch '%s'" +msgstr "" + +#: builtin/apply.c:4075 +#, c-format +msgid "squelched %d whitespace error" +msgid_plural "squelched %d whitespace errors" +msgstr[0] "" +msgstr[1] "" + +#: builtin/apply.c:4081 builtin/apply.c:4091 +#, c-format +msgid "%d line adds whitespace errors." +msgid_plural "%d lines add whitespace errors." +msgstr[0] "" +msgstr[1] "" + #: builtin/archive.c:17 #, c-format msgid "could not create archive file '%s'" @@ -783,143 +1320,172 @@ msgstr "" msgid "git archive: expected a flush" msgstr "" -#: builtin/branch.c:137 +#: builtin/branch.c:144 #, c-format msgid "" "deleting branch '%s' that has been merged to\n" " '%s', but not yet merged to HEAD." msgstr "" -#: builtin/branch.c:141 +#: builtin/branch.c:148 #, c-format msgid "" "not deleting branch '%s' that is not yet merged to\n" " '%s', even though it is merged to HEAD." msgstr "" -#. TRANSLATORS: This is "remote " in "remote branch '%s' not found" -#: builtin/branch.c:164 -msgid "remote " -msgstr "" - -#: builtin/branch.c:172 +#: builtin/branch.c:180 msgid "cannot use -a with -d" msgstr "" -#: builtin/branch.c:178 +#: builtin/branch.c:186 msgid "Couldn't look up commit object for HEAD" msgstr "" -#: builtin/branch.c:183 +#: builtin/branch.c:191 #, c-format msgid "Cannot delete the branch '%s' which you are currently on." msgstr "" -#: builtin/branch.c:193 +#: builtin/branch.c:202 +#, c-format +msgid "remote branch '%s' not found." +msgstr "" + +#: builtin/branch.c:203 #, c-format -msgid "%sbranch '%s' not found." +msgid "branch '%s' not found." msgstr "" -#: builtin/branch.c:201 +#: builtin/branch.c:210 #, c-format msgid "Couldn't look up commit object for '%s'" msgstr "" -#: builtin/branch.c:207 +#: builtin/branch.c:216 #, c-format msgid "" "The branch '%s' is not fully merged.\n" "If you are sure you want to delete it, run 'git branch -D %s'." msgstr "" -#: builtin/branch.c:215 +#: builtin/branch.c:225 #, c-format -msgid "Error deleting %sbranch '%s'" +msgid "Error deleting remote branch '%s'" msgstr "" -#: builtin/branch.c:221 +#: builtin/branch.c:226 #, c-format -msgid "Deleted %sbranch %s (was %s).\n" +msgid "Error deleting branch '%s'" msgstr "" -#: builtin/branch.c:226 +#: builtin/branch.c:233 +#, c-format +msgid "Deleted remote branch %s (was %s).\n" +msgstr "" + +#: builtin/branch.c:234 +#, c-format +msgid "Deleted branch %s (was %s).\n" +msgstr "" + +#: builtin/branch.c:239 msgid "Update of config-file failed" msgstr "" -#: builtin/branch.c:324 +#: builtin/branch.c:337 #, c-format msgid "branch '%s' does not point at a commit" msgstr "" -#: builtin/branch.c:396 +#: builtin/branch.c:409 #, c-format -msgid "behind %d] " +msgid "[%s: behind %d]" msgstr "" -#: builtin/branch.c:398 +#: builtin/branch.c:411 #, c-format -msgid "ahead %d] " +msgid "[behind %d]" msgstr "" -#: builtin/branch.c:400 +#: builtin/branch.c:415 #, c-format -msgid "ahead %d, behind %d] " +msgid "[%s: ahead %d]" msgstr "" -#: builtin/branch.c:503 +#: builtin/branch.c:417 +#, c-format +msgid "[ahead %d]" +msgstr "" + +#: builtin/branch.c:420 +#, c-format +msgid "[%s: ahead %d, behind %d]" +msgstr "" + +#: builtin/branch.c:423 +#, c-format +msgid "[ahead %d, behind %d]" +msgstr "" + +#: builtin/branch.c:535 msgid "(no branch)" msgstr "" -#: builtin/branch.c:568 +#: builtin/branch.c:600 msgid "some refs could not be read" msgstr "" -#: builtin/branch.c:581 +#: builtin/branch.c:613 msgid "cannot rename the current branch while not on any." msgstr "" -#: builtin/branch.c:591 +#: builtin/branch.c:623 #, c-format msgid "Invalid branch name: '%s'" msgstr "" -#: builtin/branch.c:606 +#: builtin/branch.c:638 msgid "Branch rename failed" msgstr "" -#: builtin/branch.c:610 +#: builtin/branch.c:642 #, c-format msgid "Renamed a misnamed branch '%s' away" msgstr "" -#: builtin/branch.c:614 +#: builtin/branch.c:646 #, c-format msgid "Branch renamed to %s, but HEAD is not updated!" msgstr "" -#: builtin/branch.c:621 +#: builtin/branch.c:653 msgid "Branch is renamed, but update of config-file failed" msgstr "" -#: builtin/branch.c:636 +#: builtin/branch.c:668 #, c-format msgid "malformed object name %s" msgstr "" -#: builtin/branch.c:660 +#: builtin/branch.c:692 #, c-format -msgid "could not write branch description template: %s\n" +msgid "could not write branch description template: %s" msgstr "" -#: builtin/branch.c:750 +#: builtin/branch.c:783 msgid "Failed to resolve HEAD as a valid ref." msgstr "" -#: builtin/branch.c:755 builtin/clone.c:558 +#: builtin/branch.c:788 builtin/clone.c:558 msgid "HEAD not found below refs/heads!" msgstr "" -#: builtin/branch.c:813 +#: builtin/branch.c:808 +msgid "--column and --verbose are incompatible" +msgstr "" + +#: builtin/branch.c:857 msgid "-a and -r options to 'git branch' do not make sense with a branch name" msgstr "" @@ -966,11 +1532,6 @@ msgstr "" msgid "Unable to add merge result for '%s'" msgstr "" -#: builtin/checkout.c:212 builtin/reset.c:158 -#, c-format -msgid "make_cache_entry failed for path '%s'" -msgstr "" - #: builtin/checkout.c:234 builtin/checkout.c:392 msgid "corrupt index file" msgstr "" @@ -1058,96 +1619,96 @@ msgid "" "\n" msgstr "" -#: builtin/checkout.c:693 +#: builtin/checkout.c:694 msgid "internal error in revision walk" msgstr "" -#: builtin/checkout.c:697 +#: builtin/checkout.c:698 msgid "Previous HEAD position was" msgstr "" -#: builtin/checkout.c:723 +#: builtin/checkout.c:724 msgid "You are on a branch yet to be born" msgstr "" #. case (1) -#: builtin/checkout.c:854 +#: builtin/checkout.c:855 #, c-format msgid "invalid reference: %s" msgstr "" #. case (1): want a tree -#: builtin/checkout.c:893 +#: builtin/checkout.c:894 #, c-format msgid "reference is not a tree: %s" msgstr "" -#: builtin/checkout.c:973 +#: builtin/checkout.c:974 msgid "-B cannot be used with -b" msgstr "" -#: builtin/checkout.c:982 +#: builtin/checkout.c:983 msgid "--patch is incompatible with all other options" msgstr "" -#: builtin/checkout.c:985 +#: builtin/checkout.c:986 msgid "--detach cannot be used with -b/-B/--orphan" msgstr "" -#: builtin/checkout.c:987 +#: builtin/checkout.c:988 msgid "--detach cannot be used with -t" msgstr "" -#: builtin/checkout.c:993 +#: builtin/checkout.c:994 msgid "--track needs a branch name" msgstr "" -#: builtin/checkout.c:1000 +#: builtin/checkout.c:1001 msgid "Missing branch name; try -b" msgstr "" -#: builtin/checkout.c:1006 +#: builtin/checkout.c:1007 msgid "--orphan and -b|-B are mutually exclusive" msgstr "" -#: builtin/checkout.c:1008 +#: builtin/checkout.c:1009 msgid "--orphan cannot be used with -t" msgstr "" -#: builtin/checkout.c:1018 +#: builtin/checkout.c:1019 msgid "git checkout: -f and -m are incompatible" msgstr "" -#: builtin/checkout.c:1052 +#: builtin/checkout.c:1053 msgid "invalid path specification" msgstr "" -#: builtin/checkout.c:1060 +#: builtin/checkout.c:1061 #, c-format msgid "" "git checkout: updating paths is incompatible with switching branches.\n" "Did you intend to checkout '%s' which can not be resolved as commit?" msgstr "" -#: builtin/checkout.c:1062 +#: builtin/checkout.c:1063 msgid "git checkout: updating paths is incompatible with switching branches." msgstr "" -#: builtin/checkout.c:1067 +#: builtin/checkout.c:1068 msgid "git checkout: --detach does not take a path argument" msgstr "" -#: builtin/checkout.c:1070 +#: builtin/checkout.c:1071 msgid "" "git checkout: --ours/--theirs, --force and --merge are incompatible when\n" "checking out of the index." msgstr "" -#: builtin/checkout.c:1089 +#: builtin/checkout.c:1090 msgid "Cannot switch branch to a non-commit." msgstr "" -#: builtin/checkout.c:1092 +#: builtin/checkout.c:1093 msgid "--ours/--theirs is incompatible with switching branches." msgstr "" @@ -1316,7 +1877,11 @@ msgstr "" msgid "You appear to have cloned an empty repository." msgstr "" -#: builtin/commit.c:42 +#: builtin/column.c:51 +msgid "--command must be the first argument" +msgstr "" + +#: builtin/commit.c:43 msgid "" "Your name and email address were configured automatically based\n" "on your username and hostname. Please check that they are accurate.\n" @@ -1330,14 +1895,14 @@ msgid "" " git commit --amend --reset-author\n" msgstr "" -#: builtin/commit.c:54 +#: builtin/commit.c:55 msgid "" "You asked to amend the most recent commit, but doing so would make\n" "it empty. You can repeat your command with --allow-empty, or you can\n" "remove the commit entirely with \"git reset HEAD^\".\n" msgstr "" -#: builtin/commit.c:59 +#: builtin/commit.c:60 msgid "" "The previous cherry-pick is now empty, possibly due to conflict resolution.\n" "If you wish to commit it anyway, use:\n" @@ -1347,278 +1912,277 @@ msgid "" "Otherwise, please use 'git reset'\n" msgstr "" -#: builtin/commit.c:205 builtin/reset.c:33 -msgid "merge" -msgstr "" - -#: builtin/commit.c:208 -msgid "cherry-pick" -msgstr "" - -#: builtin/commit.c:325 +#: builtin/commit.c:253 msgid "failed to unpack HEAD tree object" msgstr "" -#: builtin/commit.c:367 +#: builtin/commit.c:295 msgid "unable to create temporary index" msgstr "" -#: builtin/commit.c:373 +#: builtin/commit.c:301 msgid "interactive add failed" msgstr "" -#: builtin/commit.c:406 builtin/commit.c:427 builtin/commit.c:473 +#: builtin/commit.c:334 builtin/commit.c:355 builtin/commit.c:405 msgid "unable to write new_index file" msgstr "" -#: builtin/commit.c:457 -#, c-format -msgid "cannot do a partial commit during a %s." +#: builtin/commit.c:386 +msgid "cannot do a partial commit during a merge." +msgstr "" + +#: builtin/commit.c:388 +msgid "cannot do a partial commit during a cherry-pick." msgstr "" -#: builtin/commit.c:466 +#: builtin/commit.c:398 msgid "cannot read the index" msgstr "" -#: builtin/commit.c:486 +#: builtin/commit.c:418 msgid "unable to write temporary index file" msgstr "" -#: builtin/commit.c:561 builtin/commit.c:567 +#: builtin/commit.c:493 builtin/commit.c:499 #, c-format msgid "invalid commit: %s" msgstr "" -#: builtin/commit.c:590 +#: builtin/commit.c:522 msgid "malformed --author parameter" msgstr "" -#: builtin/commit.c:651 +#: builtin/commit.c:583 #, c-format msgid "Malformed ident string: '%s'" msgstr "" -#: builtin/commit.c:689 builtin/commit.c:722 builtin/commit.c:1033 +#: builtin/commit.c:621 builtin/commit.c:654 builtin/commit.c:968 #, c-format msgid "could not lookup commit %s" msgstr "" -#: builtin/commit.c:701 builtin/shortlog.c:296 +#: builtin/commit.c:633 builtin/shortlog.c:296 #, c-format msgid "(reading log message from standard input)\n" msgstr "" -#: builtin/commit.c:703 +#: builtin/commit.c:635 msgid "could not read log from standard input" msgstr "" -#: builtin/commit.c:707 +#: builtin/commit.c:639 #, c-format msgid "could not read log file '%s'" msgstr "" -#: builtin/commit.c:713 +#: builtin/commit.c:645 msgid "commit has empty message" msgstr "" -#: builtin/commit.c:729 +#: builtin/commit.c:661 msgid "could not read MERGE_MSG" msgstr "" -#: builtin/commit.c:733 +#: builtin/commit.c:665 msgid "could not read SQUASH_MSG" msgstr "" -#: builtin/commit.c:737 +#: builtin/commit.c:669 #, c-format msgid "could not read '%s'" msgstr "" -#: builtin/commit.c:765 -#, c-format -msgid "could not open '%s'" -msgstr "" - -#: builtin/commit.c:789 +#: builtin/commit.c:721 msgid "could not write commit template" msgstr "" -#: builtin/commit.c:799 +#: builtin/commit.c:732 #, c-format msgid "" "\n" -"It looks like you may be committing a %s.\n" +"It looks like you may be committing a merge.\n" "If this is not correct, please remove the file\n" "\t%s\n" "and try again.\n" msgstr "" -#: builtin/commit.c:812 -msgid "Please enter the commit message for your changes." +#: builtin/commit.c:737 +#, c-format +msgid "" +"\n" +"It looks like you may be committing a cherry-pick.\n" +"If this is not correct, please remove the file\n" +"\t%s\n" +"and try again.\n" msgstr "" -#: builtin/commit.c:815 +#: builtin/commit.c:749 msgid "" -" Lines starting\n" +"Please enter the commit message for your changes. Lines starting\n" "with '#' will be ignored, and an empty message aborts the commit.\n" msgstr "" -#: builtin/commit.c:820 +#: builtin/commit.c:754 msgid "" -" Lines starting\n" +"Please enter the commit message for your changes. Lines starting\n" "with '#' will be kept; you may remove them yourself if you want to.\n" "An empty message aborts the commit.\n" msgstr "" -#: builtin/commit.c:832 +#: builtin/commit.c:767 #, c-format msgid "%sAuthor: %s" msgstr "" -#: builtin/commit.c:839 +#: builtin/commit.c:774 #, c-format msgid "%sCommitter: %s" msgstr "" -#: builtin/commit.c:859 +#: builtin/commit.c:794 msgid "Cannot read index" msgstr "" -#: builtin/commit.c:896 +#: builtin/commit.c:831 msgid "Error building trees" msgstr "" -#: builtin/commit.c:911 builtin/tag.c:357 +#: builtin/commit.c:846 builtin/tag.c:361 #, c-format msgid "Please supply the message using either -m or -F option.\n" msgstr "" -#: builtin/commit.c:1008 +#: builtin/commit.c:943 #, c-format msgid "No existing author found with '%s'" msgstr "" -#: builtin/commit.c:1023 builtin/commit.c:1217 +#: builtin/commit.c:958 builtin/commit.c:1158 #, c-format msgid "Invalid untracked files mode '%s'" msgstr "" -#: builtin/commit.c:1063 +#: builtin/commit.c:998 msgid "Using both --reset-author and --author does not make sense" msgstr "" -#: builtin/commit.c:1074 +#: builtin/commit.c:1009 msgid "You have nothing to amend." msgstr "" -#: builtin/commit.c:1076 -#, c-format -msgid "You are in the middle of a %s -- cannot amend." +#: builtin/commit.c:1012 +msgid "You are in the middle of a merge -- cannot amend." +msgstr "" + +#: builtin/commit.c:1014 +msgid "You are in the middle of a cherry-pick -- cannot amend." msgstr "" -#: builtin/commit.c:1078 +#: builtin/commit.c:1017 msgid "Options --squash and --fixup cannot be used together" msgstr "" -#: builtin/commit.c:1088 +#: builtin/commit.c:1027 msgid "Only one of -c/-C/-F/--fixup can be used." msgstr "" -#: builtin/commit.c:1090 +#: builtin/commit.c:1029 msgid "Option -m cannot be combined with -c/-C/-F/--fixup." msgstr "" -#: builtin/commit.c:1098 +#: builtin/commit.c:1037 msgid "--reset-author can be used only with -C, -c or --amend." msgstr "" -#: builtin/commit.c:1115 +#: builtin/commit.c:1054 msgid "Only one of --include/--only/--all/--interactive/--patch can be used." msgstr "" -#: builtin/commit.c:1117 +#: builtin/commit.c:1056 msgid "No paths with --include/--only does not make sense." msgstr "" -#: builtin/commit.c:1119 +#: builtin/commit.c:1058 msgid "Clever... amending the last one with dirty index." msgstr "" -#: builtin/commit.c:1121 +#: builtin/commit.c:1060 msgid "Explicit paths specified without -i nor -o; assuming --only paths..." msgstr "" -#: builtin/commit.c:1131 builtin/tag.c:556 +#: builtin/commit.c:1070 builtin/tag.c:577 #, c-format msgid "Invalid cleanup mode %s" msgstr "" -#: builtin/commit.c:1136 +#: builtin/commit.c:1075 msgid "Paths with -a does not make sense." msgstr "" -#: builtin/commit.c:1315 +#: builtin/commit.c:1258 msgid "couldn't look up newly created commit" msgstr "" -#: builtin/commit.c:1317 +#: builtin/commit.c:1260 msgid "could not parse newly created commit" msgstr "" -#: builtin/commit.c:1358 +#: builtin/commit.c:1301 msgid "detached HEAD" msgstr "" -#: builtin/commit.c:1360 +#: builtin/commit.c:1303 msgid " (root-commit)" msgstr "" -#: builtin/commit.c:1450 +#: builtin/commit.c:1447 msgid "could not parse HEAD commit" msgstr "" -#: builtin/commit.c:1487 builtin/merge.c:509 +#: builtin/commit.c:1485 builtin/merge.c:509 #, c-format msgid "could not open '%s' for reading" msgstr "" -#: builtin/commit.c:1494 +#: builtin/commit.c:1492 #, c-format msgid "Corrupt MERGE_HEAD file (%s)" msgstr "" -#: builtin/commit.c:1501 +#: builtin/commit.c:1499 msgid "could not read MERGE_MODE" msgstr "" -#: builtin/commit.c:1520 +#: builtin/commit.c:1518 #, c-format msgid "could not read commit message: %s" msgstr "" -#: builtin/commit.c:1534 +#: builtin/commit.c:1532 #, c-format msgid "Aborting commit; you did not edit the message.\n" msgstr "" -#: builtin/commit.c:1539 +#: builtin/commit.c:1537 #, c-format msgid "Aborting commit due to empty commit message.\n" msgstr "" -#: builtin/commit.c:1554 builtin/merge.c:936 builtin/merge.c:961 +#: builtin/commit.c:1552 builtin/merge.c:936 builtin/merge.c:961 msgid "failed to write commit object" msgstr "" -#: builtin/commit.c:1575 +#: builtin/commit.c:1573 msgid "cannot lock HEAD ref" msgstr "" -#: builtin/commit.c:1579 +#: builtin/commit.c:1577 msgid "cannot update HEAD ref" msgstr "" -#: builtin/commit.c:1590 +#: builtin/commit.c:1588 msgid "" "Repository has been updated, but unable to write\n" "new_index file. Check that disk is not full or quota is\n" @@ -1815,19 +2379,19 @@ msgstr "" #: builtin/fetch.c:549 #, c-format -msgid " (%s will become dangling)\n" +msgid " (%s will become dangling)" msgstr "" #: builtin/fetch.c:550 #, c-format -msgid " (%s has become dangling)\n" +msgid " (%s has become dangling)" msgstr "" #: builtin/fetch.c:557 msgid "[deleted]" msgstr "" -#: builtin/fetch.c:558 +#: builtin/fetch.c:558 builtin/remote.c:1055 msgid "(none)" msgstr "" @@ -1856,7 +2420,7 @@ msgstr "" msgid "Fetching %s\n" msgstr "" -#: builtin/fetch.c:890 +#: builtin/fetch.c:890 builtin/remote.c:100 #, c-format msgid "Could not fetch %s" msgstr "" @@ -1893,28 +2457,24 @@ msgstr "" msgid "Invalid %s: '%s'" msgstr "" -#: builtin/gc.c:78 -msgid "Too many options specified" -msgstr "" - -#: builtin/gc.c:103 +#: builtin/gc.c:90 #, c-format msgid "insanely long object directory %.*s" msgstr "" -#: builtin/gc.c:223 +#: builtin/gc.c:221 #, c-format msgid "Auto packing the repository for optimum performance.\n" msgstr "" -#: builtin/gc.c:226 +#: builtin/gc.c:224 #, c-format msgid "" "Auto packing the repository for optimum performance. You may also\n" "run \"git gc\" manually. See \"git help gc\" for more information.\n" msgstr "" -#: builtin/gc.c:256 +#: builtin/gc.c:251 msgid "" "There are too many unreachable loose objects; run 'git prune' to remove them." msgstr "" @@ -1978,6 +2538,306 @@ msgstr "" msgid "both --cached and trees are given." msgstr "" +#: builtin/help.c:59 +#, c-format +msgid "unrecognized help format '%s'" +msgstr "" + +#: builtin/help.c:87 +msgid "Failed to start emacsclient." +msgstr "" + +#: builtin/help.c:100 +msgid "Failed to parse emacsclient version." +msgstr "" + +#: builtin/help.c:108 +#, c-format +msgid "emacsclient version '%d' too old (< 22)." +msgstr "" + +#: builtin/help.c:126 builtin/help.c:154 builtin/help.c:163 builtin/help.c:171 +#, c-format +msgid "failed to exec '%s': %s" +msgstr "" + +#: builtin/help.c:211 +#, c-format +msgid "" +"'%s': path for unsupported man viewer.\n" +"Please consider using 'man.<tool>.cmd' instead." +msgstr "" + +#: builtin/help.c:223 +#, c-format +msgid "" +"'%s': cmd for supported man viewer.\n" +"Please consider using 'man.<tool>.path' instead." +msgstr "" + +#: builtin/help.c:287 +msgid "The most commonly used git commands are:" +msgstr "" + +#: builtin/help.c:355 +#, c-format +msgid "'%s': unknown man viewer." +msgstr "" + +#: builtin/help.c:372 +msgid "no man viewer handled the request" +msgstr "" + +#: builtin/help.c:380 +msgid "no info viewer handled the request" +msgstr "" + +#: builtin/help.c:391 +#, c-format +msgid "'%s': not a documentation directory." +msgstr "" + +#: builtin/help.c:432 builtin/help.c:439 +#, c-format +msgid "usage: %s%s" +msgstr "" + +#: builtin/help.c:453 +#, c-format +msgid "`git %s' is aliased to `%s'" +msgstr "" + +#: builtin/index-pack.c:169 +#, c-format +msgid "object type mismatch at %s" +msgstr "" + +#: builtin/index-pack.c:189 +msgid "object of unexpected type" +msgstr "" + +#: builtin/index-pack.c:226 +#, c-format +msgid "cannot fill %d byte" +msgid_plural "cannot fill %d bytes" +msgstr[0] "" +msgstr[1] "" + +#: builtin/index-pack.c:236 +msgid "early EOF" +msgstr "" + +#: builtin/index-pack.c:237 +msgid "read error on input" +msgstr "" + +#: builtin/index-pack.c:249 +msgid "used more bytes than were available" +msgstr "" + +#: builtin/index-pack.c:256 +msgid "pack too large for current definition of off_t" +msgstr "" + +#: builtin/index-pack.c:272 +#, c-format +msgid "unable to create '%s'" +msgstr "" + +#: builtin/index-pack.c:277 +#, c-format +msgid "cannot open packfile '%s'" +msgstr "" + +#: builtin/index-pack.c:291 +msgid "pack signature mismatch" +msgstr "" + +#: builtin/index-pack.c:311 +#, c-format +msgid "pack has bad object at offset %lu: %s" +msgstr "" + +#: builtin/index-pack.c:405 +#, c-format +msgid "inflate returned %d" +msgstr "" + +#: builtin/index-pack.c:450 +msgid "offset value overflow for delta base object" +msgstr "" + +#: builtin/index-pack.c:458 +msgid "delta base offset is out of bound" +msgstr "" + +#: builtin/index-pack.c:466 +#, c-format +msgid "unknown object type %d" +msgstr "" + +#: builtin/index-pack.c:495 +msgid "cannot pread pack file" +msgstr "" + +#: builtin/index-pack.c:497 +#, c-format +msgid "premature end of pack file, %lu byte missing" +msgid_plural "premature end of pack file, %lu bytes missing" +msgstr[0] "" +msgstr[1] "" + +#: builtin/index-pack.c:510 +msgid "serious inflate inconsistency" +msgstr "" + +#: builtin/index-pack.c:583 +#, c-format +msgid "cannot read existing object %s" +msgstr "" + +#: builtin/index-pack.c:586 +#, c-format +msgid "SHA1 COLLISION FOUND WITH %s !" +msgstr "" + +#: builtin/index-pack.c:598 +#, c-format +msgid "invalid blob object %s" +msgstr "" + +#: builtin/index-pack.c:610 +#, c-format +msgid "invalid %s" +msgstr "" + +#: builtin/index-pack.c:612 +msgid "Error in object" +msgstr "" + +#: builtin/index-pack.c:614 +#, c-format +msgid "Not all child objects of %s are reachable" +msgstr "" + +#: builtin/index-pack.c:687 builtin/index-pack.c:713 +msgid "failed to apply delta" +msgstr "" + +#: builtin/index-pack.c:850 +msgid "Receiving objects" +msgstr "" + +#: builtin/index-pack.c:850 +msgid "Indexing objects" +msgstr "" + +#: builtin/index-pack.c:872 +msgid "pack is corrupted (SHA1 mismatch)" +msgstr "" + +#: builtin/index-pack.c:877 +msgid "cannot fstat packfile" +msgstr "" + +#: builtin/index-pack.c:880 +msgid "pack has junk at the end" +msgstr "" + +#: builtin/index-pack.c:903 +msgid "Resolving deltas" +msgstr "" + +#: builtin/index-pack.c:954 +msgid "confusion beyond insanity" +msgstr "" + +#: builtin/index-pack.c:973 +#, c-format +msgid "pack has %d unresolved delta" +msgid_plural "pack has %d unresolved deltas" +msgstr[0] "" +msgstr[1] "" + +#: builtin/index-pack.c:998 +#, c-format +msgid "unable to deflate appended object (%d)" +msgstr "" + +#: builtin/index-pack.c:1077 +#, c-format +msgid "local object %s is corrupt" +msgstr "" + +#: builtin/index-pack.c:1101 +msgid "error while closing pack file" +msgstr "" + +#: builtin/index-pack.c:1114 +#, c-format +msgid "cannot write keep file '%s'" +msgstr "" + +#: builtin/index-pack.c:1122 +#, c-format +msgid "cannot close written keep file '%s'" +msgstr "" + +#: builtin/index-pack.c:1135 +msgid "cannot store pack file" +msgstr "" + +#: builtin/index-pack.c:1146 +msgid "cannot store index file" +msgstr "" + +#: builtin/index-pack.c:1247 +#, c-format +msgid "Cannot open existing pack file '%s'" +msgstr "" + +#: builtin/index-pack.c:1249 +#, c-format +msgid "Cannot open existing pack idx file for '%s'" +msgstr "" + +#: builtin/index-pack.c:1296 +#, c-format +msgid "non delta: %d object" +msgid_plural "non delta: %d objects" +msgstr[0] "" +msgstr[1] "" + +#: builtin/index-pack.c:1303 +#, c-format +msgid "chain length = %d: %lu object" +msgid_plural "chain length = %d: %lu objects" +msgstr[0] "" +msgstr[1] "" + +#: builtin/index-pack.c:1330 +msgid "Cannot come back to cwd" +msgstr "" + +#: builtin/index-pack.c:1374 builtin/index-pack.c:1377 +#: builtin/index-pack.c:1389 builtin/index-pack.c:1393 +#, c-format +msgid "bad %s" +msgstr "" + +#: builtin/index-pack.c:1407 +msgid "--fix-thin cannot be used without --stdin" +msgstr "" + +#: builtin/index-pack.c:1411 builtin/index-pack.c:1421 +#, c-format +msgid "packfile name '%s' does not end with '.pack'" +msgstr "" + +#: builtin/index-pack.c:1430 +msgid "--verify with no packfile name given" +msgstr "" + #: builtin/init-db.c:35 #, c-format msgid "Could not make %s writable by group" @@ -2186,11 +3046,6 @@ msgstr "" msgid "--subject-prefix and -k are mutually exclusive." msgstr "" -#: builtin/log.c:1231 builtin/shortlog.c:284 -#, c-format -msgid "unrecognized argument: %s" -msgstr "" - #: builtin/log.c:1234 msgid "--name-only does not make sense" msgstr "" @@ -2535,7 +3390,7 @@ msgstr "" msgid "Renaming %s to %s\n" msgstr "" -#: builtin/mv.c:215 +#: builtin/mv.c:215 builtin/remote.c:731 #, c-format msgid "renaming '%s' failed" msgstr "" @@ -2559,7 +3414,7 @@ msgstr "" msgid "failed to finish 'show' for object '%s'" msgstr "" -#: builtin/notes.c:175 builtin/tag.c:343 +#: builtin/notes.c:175 builtin/tag.c:347 #, c-format msgid "could not create file '%s'" msgstr "" @@ -2582,12 +3437,12 @@ msgstr "" msgid "The note contents has been left in %s" msgstr "" -#: builtin/notes.c:251 builtin/tag.c:521 +#: builtin/notes.c:251 builtin/tag.c:542 #, c-format msgid "cannot read '%s'" msgstr "" -#: builtin/notes.c:253 builtin/tag.c:524 +#: builtin/notes.c:253 builtin/tag.c:545 #, c-format msgid "could not open or read '%s'" msgstr "" @@ -2595,7 +3450,7 @@ msgstr "" #: builtin/notes.c:272 builtin/notes.c:445 builtin/notes.c:447 #: builtin/notes.c:507 builtin/notes.c:561 builtin/notes.c:644 #: builtin/notes.c:649 builtin/notes.c:724 builtin/notes.c:766 -#: builtin/notes.c:968 builtin/reset.c:293 builtin/tag.c:537 +#: builtin/notes.c:968 builtin/reset.c:293 builtin/tag.c:558 #, c-format msgid "Failed to resolve '%s' as a valid ref." msgstr "" @@ -2687,27 +3542,27 @@ msgstr "" msgid "Object %s has no note\n" msgstr "" -#: builtin/notes.c:1103 +#: builtin/notes.c:1103 builtin/remote.c:1598 #, c-format msgid "Unknown subcommand: %s" msgstr "" -#: builtin/pack-objects.c:2310 +#: builtin/pack-objects.c:2315 #, c-format msgid "unsupported index version %s" msgstr "" -#: builtin/pack-objects.c:2314 +#: builtin/pack-objects.c:2319 #, c-format msgid "bad index version '%s'" msgstr "" -#: builtin/pack-objects.c:2322 +#: builtin/pack-objects.c:2342 #, c-format msgid "option %s does not accept negative form" msgstr "" -#: builtin/pack-objects.c:2326 +#: builtin/pack-objects.c:2346 #, c-format msgid "unable to parse value '%s' for option %s" msgstr "" @@ -2720,7 +3575,28 @@ msgstr "" msgid "--delete only accepts plain target ref names" msgstr "" -#: builtin/push.c:84 +#: builtin/push.c:99 +msgid "" +"\n" +"To choose either option permanently, see push.default in 'git help config'." +msgstr "" + +#: builtin/push.c:102 +#, c-format +msgid "" +"The upstream branch of your current branch does not match\n" +"the name of your current branch. To push to the upstream branch\n" +"on the remote, use\n" +"\n" +" git push %s HEAD:%s\n" +"\n" +"To push to the branch of the same name on the remote, use\n" +"\n" +" git push %s %s\n" +"%s" +msgstr "" + +#: builtin/push.c:121 #, c-format msgid "" "You are not currently on a branch.\n" @@ -2730,7 +3606,7 @@ msgid "" " git push %s HEAD:<name-of-remote-branch>\n" msgstr "" -#: builtin/push.c:91 +#: builtin/push.c:128 #, c-format msgid "" "The current branch %s has no upstream branch.\n" @@ -2739,12 +3615,12 @@ msgid "" " git push --set-upstream %s %s\n" msgstr "" -#: builtin/push.c:99 +#: builtin/push.c:136 #, c-format msgid "The current branch %s has multiple upstream branches, refusing to push." msgstr "" -#: builtin/push.c:102 +#: builtin/push.c:139 #, c-format msgid "" "You are pushing to remote '%s', which is not the upstream of\n" @@ -2752,12 +3628,12 @@ msgid "" "to update which remote branch." msgstr "" -#: builtin/push.c:131 +#: builtin/push.c:174 msgid "" "You didn't specify any refspecs to push, and push.default is \"nothing\"." msgstr "" -#: builtin/push.c:138 +#: builtin/push.c:181 msgid "" "Updates were rejected because the tip of your current branch is behind\n" "its remote counterpart. Merge the remote changes (e.g. 'git pull')\n" @@ -2765,7 +3641,7 @@ msgid "" "See the 'Note about fast-forwards' in 'git push --help' for details." msgstr "" -#: builtin/push.c:144 +#: builtin/push.c:187 msgid "" "Updates were rejected because a pushed branch tip is behind its remote\n" "counterpart. If you did not intend to push that branch, you may want to\n" @@ -2773,7 +3649,7 @@ msgid "" "variable to 'current' or 'upstream' to push only the current branch." msgstr "" -#: builtin/push.c:150 +#: builtin/push.c:193 msgid "" "Updates were rejected because a pushed branch tip is behind its remote\n" "counterpart. Check out this branch and merge the remote changes\n" @@ -2781,22 +3657,22 @@ msgid "" "See the 'Note about fast-forwards' in 'git push --help' for details." msgstr "" -#: builtin/push.c:190 +#: builtin/push.c:233 #, c-format msgid "Pushing to %s\n" msgstr "" -#: builtin/push.c:194 +#: builtin/push.c:237 #, c-format msgid "failed to push some refs to '%s'" msgstr "" -#: builtin/push.c:226 +#: builtin/push.c:269 #, c-format msgid "bad repository '%s'" msgstr "" -#: builtin/push.c:227 +#: builtin/push.c:270 msgid "" "No configured push destination.\n" "Either specify the URL from the command-line or configure a remote " @@ -2809,34 +3685,377 @@ msgid "" " git push <name>\n" msgstr "" -#: builtin/push.c:242 +#: builtin/push.c:285 msgid "--all and --tags are incompatible" msgstr "" -#: builtin/push.c:243 +#: builtin/push.c:286 msgid "--all can't be combined with refspecs" msgstr "" -#: builtin/push.c:248 +#: builtin/push.c:291 msgid "--mirror and --tags are incompatible" msgstr "" -#: builtin/push.c:249 +#: builtin/push.c:292 msgid "--mirror can't be combined with refspecs" msgstr "" -#: builtin/push.c:254 +#: builtin/push.c:297 msgid "--all and --mirror are incompatible" msgstr "" -#: builtin/push.c:342 +#: builtin/push.c:385 msgid "--delete is incompatible with --all, --mirror and --tags" msgstr "" -#: builtin/push.c:344 +#: builtin/push.c:387 msgid "--delete doesn't make sense without any refs" msgstr "" +#: builtin/remote.c:98 +#, c-format +msgid "Updating %s" +msgstr "" + +#: builtin/remote.c:130 +msgid "" +"--mirror is dangerous and deprecated; please\n" +"\t use --mirror=fetch or --mirror=push instead" +msgstr "" + +#: builtin/remote.c:147 +#, c-format +msgid "unknown mirror argument: %s" +msgstr "" + +#: builtin/remote.c:185 +msgid "specifying a master branch makes no sense with --mirror" +msgstr "" + +#: builtin/remote.c:187 +msgid "specifying branches to track makes sense only with fetch mirrors" +msgstr "" + +#: builtin/remote.c:195 builtin/remote.c:646 +#, c-format +msgid "remote %s already exists." +msgstr "" + +#: builtin/remote.c:199 builtin/remote.c:650 +#, c-format +msgid "'%s' is not a valid remote name" +msgstr "" + +#: builtin/remote.c:243 +#, c-format +msgid "Could not setup master '%s'" +msgstr "" + +#: builtin/remote.c:299 +#, c-format +msgid "more than one %s" +msgstr "" + +#: builtin/remote.c:339 +#, c-format +msgid "Could not get fetch map for refspec %s" +msgstr "" + +#: builtin/remote.c:440 builtin/remote.c:448 +msgid "(matching)" +msgstr "" + +#: builtin/remote.c:452 +msgid "(delete)" +msgstr "" + +#: builtin/remote.c:595 builtin/remote.c:601 builtin/remote.c:607 +#, c-format +msgid "Could not append '%s' to '%s'" +msgstr "" + +#: builtin/remote.c:639 builtin/remote.c:792 builtin/remote.c:890 +#, c-format +msgid "No such remote: %s" +msgstr "" + +#: builtin/remote.c:656 +#, c-format +msgid "Could not rename config section '%s' to '%s'" +msgstr "" + +#: builtin/remote.c:662 builtin/remote.c:799 +#, c-format +msgid "Could not remove config section '%s'" +msgstr "" + +#: builtin/remote.c:677 +#, c-format +msgid "" +"Not updating non-default fetch respec\n" +"\t%s\n" +"\tPlease update the configuration manually if necessary." +msgstr "" + +#: builtin/remote.c:683 +#, c-format +msgid "Could not append '%s'" +msgstr "" + +#: builtin/remote.c:694 +#, c-format +msgid "Could not set '%s'" +msgstr "" + +#: builtin/remote.c:716 +#, c-format +msgid "deleting '%s' failed" +msgstr "" + +#: builtin/remote.c:750 +#, c-format +msgid "creating '%s' failed" +msgstr "" + +#: builtin/remote.c:764 +#, c-format +msgid "Could not remove branch %s" +msgstr "" + +#: builtin/remote.c:834 +msgid "" +"Note: A branch outside the refs/remotes/ hierarchy was not removed;\n" +"to delete it, use:" +msgid_plural "" +"Note: Some branches outside the refs/remotes/ hierarchy were not removed;\n" +"to delete them, use:" +msgstr[0] "" +msgstr[1] "" + +#: builtin/remote.c:943 +#, c-format +msgid " new (next fetch will store in remotes/%s)" +msgstr "" + +#: builtin/remote.c:946 +msgid " tracked" +msgstr "" + +#: builtin/remote.c:948 +msgid " stale (use 'git remote prune' to remove)" +msgstr "" + +#: builtin/remote.c:950 +msgid " ???" +msgstr "" + +#: builtin/remote.c:991 +#, c-format +msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch" +msgstr "" + +#: builtin/remote.c:998 +#, c-format +msgid "rebases onto remote %s" +msgstr "" + +#: builtin/remote.c:1001 +#, c-format +msgid " merges with remote %s" +msgstr "" + +#: builtin/remote.c:1002 +msgid " and with remote" +msgstr "" + +#: builtin/remote.c:1004 +#, c-format +msgid "merges with remote %s" +msgstr "" + +#: builtin/remote.c:1005 +msgid " and with remote" +msgstr "" + +#: builtin/remote.c:1051 +msgid "create" +msgstr "" + +#: builtin/remote.c:1054 +msgid "delete" +msgstr "" + +#: builtin/remote.c:1058 +msgid "up to date" +msgstr "" + +#: builtin/remote.c:1061 +msgid "fast-forwardable" +msgstr "" + +#: builtin/remote.c:1064 +msgid "local out of date" +msgstr "" + +#: builtin/remote.c:1071 +#, c-format +msgid " %-*s forces to %-*s (%s)" +msgstr "" + +#: builtin/remote.c:1074 +#, c-format +msgid " %-*s pushes to %-*s (%s)" +msgstr "" + +#: builtin/remote.c:1078 +#, c-format +msgid " %-*s forces to %s" +msgstr "" + +#: builtin/remote.c:1081 +#, c-format +msgid " %-*s pushes to %s" +msgstr "" + +#: builtin/remote.c:1118 +#, c-format +msgid "* remote %s" +msgstr "" + +#: builtin/remote.c:1119 +#, c-format +msgid " Fetch URL: %s" +msgstr "" + +#: builtin/remote.c:1120 builtin/remote.c:1285 +msgid "(no URL)" +msgstr "" + +#: builtin/remote.c:1129 builtin/remote.c:1131 +#, c-format +msgid " Push URL: %s" +msgstr "" + +#: builtin/remote.c:1133 builtin/remote.c:1135 builtin/remote.c:1137 +#, c-format +msgid " HEAD branch: %s" +msgstr "" + +#: builtin/remote.c:1139 +#, c-format +msgid "" +" HEAD branch (remote HEAD is ambiguous, may be one of the following):\n" +msgstr "" + +#: builtin/remote.c:1151 +#, c-format +msgid " Remote branch:%s" +msgid_plural " Remote branches:%s" +msgstr[0] "" +msgstr[1] "" + +#: builtin/remote.c:1154 builtin/remote.c:1181 +msgid " (status not queried)" +msgstr "" + +#: builtin/remote.c:1163 +msgid " Local branch configured for 'git pull':" +msgid_plural " Local branches configured for 'git pull':" +msgstr[0] "" +msgstr[1] "" + +#: builtin/remote.c:1171 +msgid " Local refs will be mirrored by 'git push'" +msgstr "" + +#: builtin/remote.c:1178 +#, c-format +msgid " Local ref configured for 'git push'%s:" +msgid_plural " Local refs configured for 'git push'%s:" +msgstr[0] "" +msgstr[1] "" + +#: builtin/remote.c:1216 +msgid "Cannot determine remote HEAD" +msgstr "" + +#: builtin/remote.c:1218 +msgid "Multiple remote HEAD branches. Please choose one explicitly with:" +msgstr "" + +#: builtin/remote.c:1228 +#, c-format +msgid "Could not delete %s" +msgstr "" + +#: builtin/remote.c:1236 +#, c-format +msgid "Not a valid ref: %s" +msgstr "" + +#: builtin/remote.c:1238 +#, c-format +msgid "Could not setup %s" +msgstr "" + +#: builtin/remote.c:1274 +#, c-format +msgid " %s will become dangling!" +msgstr "" + +#: builtin/remote.c:1275 +#, c-format +msgid " %s has become dangling!" +msgstr "" + +#: builtin/remote.c:1281 +#, c-format +msgid "Pruning %s" +msgstr "" + +#: builtin/remote.c:1282 +#, c-format +msgid "URL: %s" +msgstr "" + +#: builtin/remote.c:1295 +#, c-format +msgid " * [would prune] %s" +msgstr "" + +#: builtin/remote.c:1298 +#, c-format +msgid " * [pruned] %s" +msgstr "" + +#: builtin/remote.c:1387 builtin/remote.c:1461 +#, c-format +msgid "No such remote '%s'" +msgstr "" + +#: builtin/remote.c:1414 +msgid "no remote specified" +msgstr "" + +#: builtin/remote.c:1447 +msgid "--add --delete doesn't make sense" +msgstr "" + +#: builtin/remote.c:1487 +#, c-format +msgid "Invalid old URL pattern: %s" +msgstr "" + +#: builtin/remote.c:1495 +#, c-format +msgid "No such URL found: %s" +msgstr "" + +#: builtin/remote.c:1497 +msgid "Will not delete all non-push URLs" +msgstr "" + #: builtin/reset.c:33 msgid "mixed" msgstr "" @@ -2850,6 +4069,10 @@ msgid "hard" msgstr "" #: builtin/reset.c:33 +msgid "merge" +msgstr "" + +#: builtin/reset.c:33 msgid "keep" msgstr "" @@ -2921,15 +4144,15 @@ msgstr "" msgid "%s: %s cannot be used with %s" msgstr "" -#: builtin/revert.c:127 +#: builtin/revert.c:131 msgid "program error" msgstr "" -#: builtin/revert.c:213 +#: builtin/revert.c:221 msgid "revert failed" msgstr "" -#: builtin/revert.c:228 +#: builtin/revert.c:236 msgid "cherry-pick failed" msgstr "" @@ -2969,32 +4192,32 @@ msgstr "" msgid "Missing author: %s" msgstr "" -#: builtin/tag.c:58 +#: builtin/tag.c:60 #, c-format msgid "malformed object at '%s'" msgstr "" -#: builtin/tag.c:205 +#: builtin/tag.c:207 #, c-format msgid "tag name too long: %.*s..." msgstr "" -#: builtin/tag.c:210 +#: builtin/tag.c:212 #, c-format msgid "tag '%s' not found." msgstr "" -#: builtin/tag.c:225 +#: builtin/tag.c:227 #, c-format msgid "Deleted tag '%s' (was %s)\n" msgstr "" -#: builtin/tag.c:237 +#: builtin/tag.c:239 #, c-format msgid "could not verify the tag '%s'" msgstr "" -#: builtin/tag.c:247 +#: builtin/tag.c:249 msgid "" "\n" "#\n" @@ -3003,7 +4226,7 @@ msgid "" "#\n" msgstr "" -#: builtin/tag.c:254 +#: builtin/tag.c:256 msgid "" "\n" "#\n" @@ -3013,85 +4236,177 @@ msgid "" "#\n" msgstr "" -#: builtin/tag.c:294 +#: builtin/tag.c:298 msgid "unable to sign the tag" msgstr "" -#: builtin/tag.c:296 +#: builtin/tag.c:300 msgid "unable to write tag file" msgstr "" -#: builtin/tag.c:321 +#: builtin/tag.c:325 msgid "bad object type." msgstr "" -#: builtin/tag.c:334 +#: builtin/tag.c:338 msgid "tag header too big." msgstr "" -#: builtin/tag.c:366 +#: builtin/tag.c:370 msgid "no tag message?" msgstr "" -#: builtin/tag.c:372 +#: builtin/tag.c:376 #, c-format msgid "The tag message has been left in %s\n" msgstr "" -#: builtin/tag.c:421 +#: builtin/tag.c:425 msgid "switch 'points-at' requires an object" msgstr "" -#: builtin/tag.c:423 +#: builtin/tag.c:427 #, c-format msgid "malformed object name '%s'" msgstr "" -#: builtin/tag.c:502 +#: builtin/tag.c:506 +msgid "--column and -n are incompatible" +msgstr "" + +#: builtin/tag.c:523 msgid "-n option is only allowed with -l." msgstr "" -#: builtin/tag.c:504 +#: builtin/tag.c:525 msgid "--contains option is only allowed with -l." msgstr "" -#: builtin/tag.c:506 +#: builtin/tag.c:527 msgid "--points-at option is only allowed with -l." msgstr "" -#: builtin/tag.c:514 +#: builtin/tag.c:535 msgid "only one -F or -m option is allowed." msgstr "" -#: builtin/tag.c:534 +#: builtin/tag.c:555 msgid "too many params" msgstr "" -#: builtin/tag.c:540 +#: builtin/tag.c:561 #, c-format msgid "'%s' is not a valid tag name." msgstr "" -#: builtin/tag.c:545 +#: builtin/tag.c:566 #, c-format msgid "tag '%s' already exists" msgstr "" -#: builtin/tag.c:563 +#: builtin/tag.c:584 #, c-format msgid "%s: cannot lock the ref" msgstr "" -#: builtin/tag.c:565 +#: builtin/tag.c:586 #, c-format msgid "%s: cannot update the ref" msgstr "" -#: builtin/tag.c:567 +#: builtin/tag.c:588 #, c-format msgid "Updated tag '%s' (was %s)\n" msgstr "" +#: git.c:16 +msgid "See 'git help <command>' for more information on a specific command." +msgstr "" + +#: common-cmds.h:8 +msgid "Add file contents to the index" +msgstr "" + +#: common-cmds.h:9 +msgid "Find by binary search the change that introduced a bug" +msgstr "" + +#: common-cmds.h:10 +msgid "List, create, or delete branches" +msgstr "" + +#: common-cmds.h:11 +msgid "Checkout a branch or paths to the working tree" +msgstr "" + +#: common-cmds.h:12 +msgid "Clone a repository into a new directory" +msgstr "" + +#: common-cmds.h:13 +msgid "Record changes to the repository" +msgstr "" + +#: common-cmds.h:14 +msgid "Show changes between commits, commit and working tree, etc" +msgstr "" + +#: common-cmds.h:15 +msgid "Download objects and refs from another repository" +msgstr "" + +#: common-cmds.h:16 +msgid "Print lines matching a pattern" +msgstr "" + +#: common-cmds.h:17 +msgid "Create an empty git repository or reinitialize an existing one" +msgstr "" + +#: common-cmds.h:18 +msgid "Show commit logs" +msgstr "" + +#: common-cmds.h:19 +msgid "Join two or more development histories together" +msgstr "" + +#: common-cmds.h:20 +msgid "Move or rename a file, a directory, or a symlink" +msgstr "" + +#: common-cmds.h:21 +msgid "Fetch from and merge with another repository or a local branch" +msgstr "" + +#: common-cmds.h:22 +msgid "Update remote refs along with associated objects" +msgstr "" + +#: common-cmds.h:23 +msgid "Forward-port local commits to the updated upstream head" +msgstr "" + +#: common-cmds.h:24 +msgid "Reset current HEAD to the specified state" +msgstr "" + +#: common-cmds.h:25 +msgid "Remove files from the working tree and from the index" +msgstr "" + +#: common-cmds.h:26 +msgid "Show various types of objects" +msgstr "" + +#: common-cmds.h:27 +msgid "Show the working tree status" +msgstr "" + +#: common-cmds.h:28 +msgid "Create, list, delete or verify a tag object signed with GPG" +msgstr "" + #: git-am.sh:50 msgid "You need to set your committer info first" msgstr "" diff --git a/po/pt_PT.po b/po/pt_PT.po index d28c568c73..517ec29a4a 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -8,17 +8,17 @@ msgid "" msgstr "" "Project-Id-Version: Git\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2012-03-16 20:18+0800\n" -"PO-Revision-Date: 2012-04-05 20:48+0100\n" +"POT-Creation-Date: 2012-05-08 16:06+0800\n" +"PO-Revision-Date: 2012-05-14 21:17+0100\n" "Last-Translator: Marco Sousa <marcomsousa AT gmail.com>\n" "Language-Team: Portuguese\n" -"Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Language: pt\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: advice.c:34 +#: advice.c:40 #, c-format msgid "hint: %.*s\n" msgstr "dica: %.*s\n" @@ -27,7 +27,7 @@ msgstr "dica: %.*s\n" #. * Message used both when 'git commit' fails and when #. * other commands doing a merge do. #. -#: advice.c:64 +#: advice.c:70 msgid "" "Fix them up in the work tree,\n" "and then use 'git add/rm <file>' as\n" @@ -35,12 +35,95 @@ msgid "" "or use 'git commit -a'." msgstr "" -#: commit.c:47 +#: bundle.c:36 +#, c-format +msgid "'%s' does not look like a v2 bundle file" +msgstr "" + +#: bundle.c:63 +#, c-format +msgid "unrecognized header: %s%s (%d)" +msgstr "cabeçalho não reconhecido: %s%s (%d)" + +#: bundle.c:89 +#: builtin/commit.c:753 +#, c-format +msgid "could not open '%s'" +msgstr "não é possivel abrir '%s'" + +#: bundle.c:140 +msgid "Repository lacks these prerequisite commits:" +msgstr "" + +#: bundle.c:164 +#: sequencer.c:533 +#: sequencer.c:965 +#: builtin/log.c:289 +#: builtin/log.c:719 +#: builtin/log.c:1335 +#: builtin/log.c:1554 +#: builtin/merge.c:347 +#: builtin/shortlog.c:181 +msgid "revision walk setup failed" +msgstr "" + +#: bundle.c:186 +#, c-format +msgid "The bundle contains %d ref" +msgid_plural "The bundle contains %d refs" +msgstr[0] "" +msgstr[1] "" + +#: bundle.c:192 +#, c-format +msgid "The bundle requires this ref" +msgid_plural "The bundle requires these %d refs" +msgstr[0] "" +msgstr[1] "" + +#: bundle.c:290 +msgid "rev-list died" +msgstr "rev-list morreu" + +#: bundle.c:296 +#: builtin/log.c:1231 +#: builtin/shortlog.c:284 +#, c-format +msgid "unrecognized argument: %s" +msgstr "argumento não reconhecido: %s" + +#: bundle.c:331 +#, c-format +msgid "ref '%s' is excluded by the rev-list options" +msgstr "" + +#: bundle.c:376 +msgid "Refusing to create empty bundle." +msgstr "" + +#: bundle.c:394 +msgid "Could not spawn pack-objects" +msgstr "Não foi possível pawn pack-objects" + +#: bundle.c:412 +msgid "pack-objects died" +msgstr "" + +#: bundle.c:415 +#, c-format +msgid "cannot create '%s'" +msgstr "não consegue crear '%s'" + +#: bundle.c:437 +msgid "index-pack died" +msgstr "" + +#: commit.c:48 #, c-format msgid "could not parse %s" msgstr "não consigo parsear %s" -#: commit.c:49 +#: commit.c:50 #, c-format msgid "%s %s is not a commit!" msgstr "%s %s não é um commit!" @@ -64,6 +147,74 @@ msgstr "" msgid "failed to close rev-list's stdin: %s" msgstr "" +#: date.c:95 +msgid "in the future" +msgstr "" + +#: date.c:101 +#, c-format +msgid "%lu second ago" +msgid_plural "%lu seconds ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:108 +#, c-format +msgid "%lu minute ago" +msgid_plural "%lu minutes ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:115 +#, c-format +msgid "%lu hour ago" +msgid_plural "%lu hours ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:122 +#, c-format +msgid "%lu day ago" +msgid_plural "%lu days ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:128 +#, c-format +msgid "%lu week ago" +msgid_plural "%lu weeks ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:135 +#, c-format +msgid "%lu month ago" +msgid_plural "%lu months ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:146 +#, c-format +msgid "%lu year" +msgid_plural "%lu years" +msgstr[0] "" +msgstr[1] "" + +#: date.c:149 +#, c-format +msgid "%s, %lu month ago" +msgid_plural "%s, %lu months ago" +msgstr[0] "" +msgstr[1] "" + +#: date.c:154 +#: date.c:159 +#, c-format +msgid "%lu year ago" +msgid_plural "%lu years ago" +msgstr[0] "" +msgstr[1] "" + #: diff.c:105 #, c-format msgid " Failed to parse dirstat cut-off percentage '%.*s'\n" @@ -81,32 +232,32 @@ msgid "" "%s" msgstr "" -#: diff.c:1336 +#: diff.c:1400 msgid " 0 files changed\n" msgstr " 0 ficheros modificados\n" -#: diff.c:1340 +#: diff.c:1404 #, c-format msgid " %d file changed" msgid_plural " %d files changed" msgstr[0] " %d ficheiro modificado" msgstr[1] " %d ficheiros modificados" -#: diff.c:1357 +#: diff.c:1421 #, c-format msgid ", %d insertion(+)" msgid_plural ", %d insertions(+)" msgstr[0] ", %d adição(+)" msgstr[1] ", %d adições(+)" -#: diff.c:1368 +#: diff.c:1432 #, c-format msgid ", %d deletion(-)" msgid_plural ", %d deletions(-)" msgstr[0] ", %d eliminado(-)" msgstr[1] ", %d eliminados(-)" -#: diff.c:3424 +#: diff.c:3478 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" @@ -140,13 +291,53 @@ msgstr "'%s': %s" msgid "'%s': short read %s" msgstr "" -#: help.c:287 +#: help.c:207 +#, c-format +msgid "available git commands in '%s'" +msgstr "" + +#: help.c:214 +msgid "git commands available from elsewhere on your $PATH" +msgstr "" + +#: help.c:270 #, c-format msgid "" "'%s' appears to be a git command, but we were not\n" "able to execute it. Maybe git-%s is broken?" msgstr "" +#: help.c:327 +msgid "Uh oh. Your system reports no Git commands at all." +msgstr "" + +#: help.c:349 +#, c-format +msgid "" +"WARNING: You called a Git command named '%s', which does not exist.\n" +"Continuing under the assumption that you meant '%s'" +msgstr "" + +#: help.c:354 +#, c-format +msgid "in %0.1f seconds automatically..." +msgstr "" + +#: help.c:361 +#, c-format +msgid "git: '%s' is not a git command. See 'git --help'." +msgstr "" + +#: help.c:365 +msgid "" +"\n" +"Did you mean this?" +msgid_plural "" +"\n" +"Did you mean one of these?" +msgstr[0] "" +msgstr[1] "" + #: remote.c:1607 #, c-format msgid "Your branch is ahead of '%s' by %d commit.\n" @@ -172,475 +363,502 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: sequencer.c:120 -#: builtin/merge.c:864 -#: builtin/merge.c:985 -#: builtin/merge.c:1095 -#: builtin/merge.c:1105 +#: sequencer.c:121 +#: builtin/merge.c:865 +#: builtin/merge.c:978 +#: builtin/merge.c:1088 +#: builtin/merge.c:1098 #, c-format msgid "Could not open '%s' for writing" msgstr "" -#: sequencer.c:122 -#: builtin/merge.c:334 -#: builtin/merge.c:867 -#: builtin/merge.c:1097 -#: builtin/merge.c:1110 +#: sequencer.c:123 +#: builtin/merge.c:333 +#: builtin/merge.c:868 +#: builtin/merge.c:1090 +#: builtin/merge.c:1103 #, c-format msgid "Could not write to '%s'" msgstr "Não foi possível escrever para '%s'" -#: sequencer.c:143 +#: sequencer.c:144 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add <paths>' or 'git rm <paths>'" msgstr "" -#: sequencer.c:146 +#: sequencer.c:147 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add <paths>' or 'git rm <paths>'\n" "and commit the result with 'git commit'" msgstr "" -#: sequencer.c:159 -#: sequencer.c:685 -#: sequencer.c:768 +#: sequencer.c:160 +#: sequencer.c:741 +#: sequencer.c:824 #, c-format msgid "Could not write to %s" msgstr "Não foi possível gravar para %s" -#: sequencer.c:162 +#: sequencer.c:163 #, c-format msgid "Error wrapping up %s" msgstr "" -#: sequencer.c:177 +#: sequencer.c:178 msgid "Your local changes would be overwritten by cherry-pick." msgstr "" -#: sequencer.c:179 +#: sequencer.c:180 msgid "Your local changes would be overwritten by revert." msgstr "" -#: sequencer.c:182 +#: sequencer.c:183 msgid "Commit your changes or stash them to proceed." msgstr "" #. TRANSLATORS: %s will be "revert" or "cherry-pick" -#: sequencer.c:232 +#: sequencer.c:233 #, c-format msgid "%s: Unable to write new index file" msgstr "" -#: sequencer.c:298 +#: sequencer.c:261 +msgid "Could not resolve HEAD commit\n" +msgstr "" + +#: sequencer.c:282 +msgid "Unable to update cache tree\n" +msgstr "" + +#: sequencer.c:323 +#, c-format +msgid "Could not parse commit %s\n" +msgstr "Não foi possível analisar commit %s\n" + +#: sequencer.c:328 +#, c-format +msgid "Could not parse parent commit %s\n" +msgstr "Não foi possível analisar commit parent %s\n" + +#: sequencer.c:358 msgid "Your index file is unmerged." msgstr "O seu ficheiro de índice é não fundido." -#: sequencer.c:301 +#: sequencer.c:361 msgid "You do not have a valid HEAD" msgstr "Você não tem uma HEAD válida" -#: sequencer.c:316 +#: sequencer.c:376 #, c-format msgid "Commit %s is a merge but no -m option was given." msgstr "" -#: sequencer.c:324 +#: sequencer.c:384 #, c-format msgid "Commit %s does not have parent %d" msgstr "" -#: sequencer.c:328 +#: sequencer.c:388 #, c-format msgid "Mainline was specified but commit %s is not a merge." msgstr "" #. TRANSLATORS: The first %s will be "revert" or #. "cherry-pick", the second %s a SHA1 -#: sequencer.c:339 +#: sequencer.c:399 #, c-format msgid "%s: cannot parse parent commit %s" msgstr "" -#: sequencer.c:343 +#: sequencer.c:403 #, c-format msgid "Cannot get commit message for %s" msgstr "Não é possível obter mensagem commit para %s" -#: sequencer.c:427 +#: sequencer.c:491 #, c-format msgid "could not revert %s... %s" msgstr "" -#: sequencer.c:428 +#: sequencer.c:492 #, c-format msgid "could not apply %s... %s" msgstr "" -#: sequencer.c:450 -#: sequencer.c:909 -#: builtin/log.c:288 -#: builtin/log.c:713 -#: builtin/log.c:1329 -#: builtin/log.c:1548 -#: builtin/merge.c:348 -#: builtin/shortlog.c:181 -msgid "revision walk setup failed" -msgstr "" - -#: sequencer.c:453 +#: sequencer.c:536 msgid "empty commit set passed" msgstr "passado commit com o set vazio" -#: sequencer.c:461 +#: sequencer.c:544 #, c-format msgid "git %s: failed to read the index" msgstr "" -#: sequencer.c:466 +#: sequencer.c:549 #, c-format msgid "git %s: failed to refresh the index" msgstr "" -#: sequencer.c:551 +#: sequencer.c:607 #, c-format msgid "Cannot %s during a %s" msgstr "Não foi possível abrir %s durante um %s" -#: sequencer.c:573 +#: sequencer.c:629 #, c-format msgid "Could not parse line %d." msgstr "Não foi possível parsear linha %d." -#: sequencer.c:578 +#: sequencer.c:634 msgid "No commits parsed." msgstr "Nenhum commit parseado." -#: sequencer.c:591 +#: sequencer.c:647 #, c-format msgid "Could not open %s" msgstr "Não foi possível abrir %s" -#: sequencer.c:595 +#: sequencer.c:651 #, c-format msgid "Could not read %s." msgstr "Não foi possível ler %s." -#: sequencer.c:602 +#: sequencer.c:658 #, c-format msgid "Unusable instruction sheet: %s" msgstr "" -#: sequencer.c:630 +#: sequencer.c:686 #, c-format msgid "Invalid key: %s" msgstr "" -#: sequencer.c:633 +#: sequencer.c:689 #, c-format msgid "Invalid value for %s: %s" msgstr "Valor inválido para %s: %s" -#: sequencer.c:645 +#: sequencer.c:701 #, c-format msgid "Malformed options sheet: %s" msgstr "" -#: sequencer.c:666 +#: sequencer.c:722 msgid "a cherry-pick or revert is already in progress" msgstr "" -#: sequencer.c:667 +#: sequencer.c:723 msgid "try \"git cherry-pick (--continue | --quit | --abort)\"" msgstr "" -#: sequencer.c:671 +#: sequencer.c:727 #, c-format msgid "Could not create sequencer directory %s" msgstr "" -#: sequencer.c:687 -#: sequencer.c:772 +#: sequencer.c:743 +#: sequencer.c:828 #, c-format msgid "Error wrapping up %s." msgstr "" -#: sequencer.c:706 -#: sequencer.c:840 +#: sequencer.c:762 +#: sequencer.c:896 msgid "no cherry-pick or revert in progress" msgstr "" -#: sequencer.c:708 +#: sequencer.c:764 msgid "cannot resolve HEAD" msgstr "" -#: sequencer.c:710 +#: sequencer.c:766 msgid "cannot abort from a branch yet to be born" msgstr "" -#: sequencer.c:732 +#: sequencer.c:788 +#: builtin/apply.c:3682 #, c-format msgid "cannot open %s: %s" msgstr "não foi possível abrir %s: %s" -#: sequencer.c:735 +#: sequencer.c:791 #, c-format msgid "cannot read %s: %s" msgstr "não foi possível ler %s: %s" -#: sequencer.c:736 +#: sequencer.c:792 msgid "unexpected end of file" msgstr "" -#: sequencer.c:742 +#: sequencer.c:798 #, c-format msgid "stored pre-cherry-pick HEAD file '%s' is corrupt" msgstr "" -#: sequencer.c:765 +#: sequencer.c:821 #, c-format msgid "Could not format %s." msgstr "Não foi possível formatear %s." -#: sequencer.c:927 +#: sequencer.c:983 msgid "Can't revert as initial commit" msgstr "" -#: sequencer.c:928 +#: sequencer.c:984 msgid "Can't cherry-pick into empty head" msgstr "" -#: wt-status.c:134 +#: sha1_name.c:864 +msgid "HEAD does not point to a branch" +msgstr "" + +#: sha1_name.c:867 +#, c-format +msgid "No such branch: '%s'" +msgstr "Não existe rama '%s'" + +#: sha1_name.c:869 +#, c-format +msgid "No upstream configured for branch '%s'" +msgstr "" + +#: sha1_name.c:872 +#, c-format +msgid "Upstream branch '%s' not stored as a remote-tracking branch" +msgstr "" + +#: wt-status.c:135 msgid "Unmerged paths:" msgstr "caminhos não fundidos:" -#: wt-status.c:140 -#: wt-status.c:157 +#: wt-status.c:141 +#: wt-status.c:158 #, c-format msgid " (use \"git reset %s <file>...\" to unstage)" msgstr "" -#: wt-status.c:142 -#: wt-status.c:159 +#: wt-status.c:143 +#: wt-status.c:160 msgid " (use \"git rm --cached <file>...\" to unstage)" msgstr "" -#: wt-status.c:143 +#: wt-status.c:144 msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)" msgstr " (usa \"git add/rm <ficheiro>...\" para marcar como resolvido)" -#: wt-status.c:151 +#: wt-status.c:152 msgid "Changes to be committed:" msgstr "Mudanças a serem commitadas" -#: wt-status.c:169 +#: wt-status.c:170 msgid "Changes not staged for commit:" msgstr "" -#: wt-status.c:173 +#: wt-status.c:174 msgid " (use \"git add <file>...\" to update what will be committed)" msgstr " (usa \"git add <ficheiro>...\" para actualizar o que vai ser commitado)" -#: wt-status.c:175 +#: wt-status.c:176 msgid " (use \"git add/rm <file>...\" to update what will be committed)" msgstr " (usa \"git add/rm <ficheiro>...\" para actualizar o que vai ser commitado)" -#: wt-status.c:176 +#: wt-status.c:177 msgid " (use \"git checkout -- <file>...\" to discard changes in working directory)" msgstr "" -#: wt-status.c:178 +#: wt-status.c:179 msgid " (commit or discard the untracked or modified content in submodules)" msgstr "" -#: wt-status.c:187 +#: wt-status.c:188 #, c-format msgid "%s files:" msgstr "%s ficheros:" -#: wt-status.c:190 +#: wt-status.c:191 #, c-format msgid " (use \"git %s <file>...\" to include in what will be committed)" msgstr "" -#: wt-status.c:207 +#: wt-status.c:208 msgid "bug" msgstr "erro" -#: wt-status.c:212 +#: wt-status.c:213 msgid "both deleted:" msgstr "eliminados em ambos:" -#: wt-status.c:213 +#: wt-status.c:214 msgid "added by us:" msgstr "adicionado por nós:" -#: wt-status.c:214 +#: wt-status.c:215 msgid "deleted by them:" msgstr "eliminados por eles:" -#: wt-status.c:215 +#: wt-status.c:216 msgid "added by them:" msgstr "adicionados por eles:" -#: wt-status.c:216 +#: wt-status.c:217 msgid "deleted by us:" msgstr "eliminados por nós:" -#: wt-status.c:217 +#: wt-status.c:218 msgid "both added:" msgstr "adicionados em ambos:" -#: wt-status.c:218 +#: wt-status.c:219 msgid "both modified:" msgstr "modificados em ambos:" -#: wt-status.c:248 +#: wt-status.c:249 msgid "new commits, " msgstr "novos commits, " -#: wt-status.c:250 +#: wt-status.c:251 msgid "modified content, " msgstr "conteúdo modificado, " -#: wt-status.c:252 +#: wt-status.c:253 msgid "untracked content, " msgstr "conteúdo não seguido" -#: wt-status.c:266 +#: wt-status.c:267 #, c-format msgid "new file: %s" msgstr "novo ficheiro: %s" -#: wt-status.c:269 +#: wt-status.c:270 #, c-format msgid "copied: %s -> %s" msgstr "copiado: %s -> %s" -#: wt-status.c:272 +#: wt-status.c:273 #, c-format msgid "deleted: %s" msgstr "eliminado: %s" -#: wt-status.c:275 +#: wt-status.c:276 #, c-format msgid "modified: %s" msgstr "modificado: %s" -#: wt-status.c:278 +#: wt-status.c:279 #, c-format msgid "renamed: %s -> %s" msgstr "mudado de nome: %s -> %s" -#: wt-status.c:281 +#: wt-status.c:282 #, c-format msgid "typechange: %s" msgstr "" -#: wt-status.c:284 +#: wt-status.c:285 #, c-format msgid "unknown: %s" msgstr "desconhecido: %s" -#: wt-status.c:287 +#: wt-status.c:288 #, c-format msgid "unmerged: %s" msgstr "não fundidos: %s" -#: wt-status.c:290 +#: wt-status.c:291 #, c-format msgid "bug: unhandled diff status %c" msgstr "" -#: wt-status.c:713 +#: wt-status.c:737 msgid "On branch " msgstr "Na rama" -#: wt-status.c:720 +#: wt-status.c:744 msgid "Not currently on any branch." msgstr "Não está em nenhuma rama." -#: wt-status.c:731 +#: wt-status.c:755 msgid "Initial commit" msgstr "Commit inicial" -#: wt-status.c:745 +#: wt-status.c:769 msgid "Untracked" msgstr "Não seguido" -#: wt-status.c:747 +#: wt-status.c:771 msgid "Ignored" msgstr "Ignorado" -#: wt-status.c:749 +#: wt-status.c:773 #, c-format msgid "Untracked files not listed%s" msgstr "" -#: wt-status.c:751 +#: wt-status.c:775 msgid " (use -u option to show untracked files)" msgstr "" -#: wt-status.c:757 +#: wt-status.c:781 msgid "No changes" msgstr "Sem mudanças" -#: wt-status.c:761 +#: wt-status.c:785 #, c-format msgid "no changes added to commit%s\n" msgstr "nenhuma alteração adicionado ao commit%s\n" -#: wt-status.c:763 +#: wt-status.c:787 msgid " (use \"git add\" and/or \"git commit -a\")" msgstr " (usa \"git add\" e/ou \"git commit -a\")" -#: wt-status.c:765 +#: wt-status.c:789 #, c-format msgid "nothing added to commit but untracked files present%s\n" msgstr "" -#: wt-status.c:767 +#: wt-status.c:791 msgid " (use \"git add\" to track)" msgstr " (usa \"git add\" para seguir)" -#: wt-status.c:769 -#: wt-status.c:772 -#: wt-status.c:775 +#: wt-status.c:793 +#: wt-status.c:796 +#: wt-status.c:799 #, c-format msgid "nothing to commit%s\n" msgstr "nada para fazer commit%s\n" -#: wt-status.c:770 +#: wt-status.c:794 msgid " (create/copy files and use \"git add\" to track)" msgstr "" -#: wt-status.c:773 +#: wt-status.c:797 msgid " (use -u to show untracked files)" msgstr "" -#: wt-status.c:776 +#: wt-status.c:800 msgid " (working directory clean)" msgstr " (directório de trabalho vacio)" -#: wt-status.c:884 +#: wt-status.c:908 msgid "HEAD (no branch)" msgstr "HEAD (Não é rama)" -#: wt-status.c:890 +#: wt-status.c:914 msgid "Initial commit on " msgstr "Commit inicial em " -#: wt-status.c:905 +#: wt-status.c:929 msgid "behind " msgstr "atrás " -#: wt-status.c:908 -#: wt-status.c:911 +#: wt-status.c:932 +#: wt-status.c:935 msgid "ahead " msgstr "a frente " -#: wt-status.c:913 +#: wt-status.c:937 msgid ", behind " msgstr ", atrás " @@ -650,7 +868,7 @@ msgid "unexpected diff status %c" msgstr "" #: builtin/add.c:67 -#: builtin/commit.c:298 +#: builtin/commit.c:282 msgid "updating files failed" msgstr "Falou a atualização dos ficheiros" @@ -744,18 +962,359 @@ msgstr "" #: builtin/add.c:420 #: builtin/clean.c:95 -#: builtin/commit.c:358 +#: builtin/commit.c:342 #: builtin/mv.c:82 #: builtin/rm.c:162 msgid "index file corrupt" msgstr "ficheiro index corrupto" #: builtin/add.c:476 +#: builtin/apply.c:4093 #: builtin/mv.c:229 #: builtin/rm.c:260 msgid "Unable to write new index file" msgstr "" +#: builtin/apply.c:106 +#, c-format +msgid "unrecognized whitespace option '%s'" +msgstr "espaço em braco não reconhecido: '%s'" + +#: builtin/apply.c:121 +#, c-format +msgid "unrecognized whitespace ignore option '%s'" +msgstr "" + +#: builtin/apply.c:815 +#, c-format +msgid "Cannot prepare timestamp regexp %s" +msgstr "" + +#: builtin/apply.c:824 +#, c-format +msgid "regexec returned %d for input: %s" +msgstr "" + +#: builtin/apply.c:905 +#, c-format +msgid "unable to find filename in patch at line %d" +msgstr "" + +#: builtin/apply.c:934 +#, c-format +msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d" +msgstr "" + +#: builtin/apply.c:937 +#, c-format +msgid "git apply: bad git-diff - inconsistent %s filename on line %d" +msgstr "" + +#: builtin/apply.c:944 +#, c-format +msgid "git apply: bad git-diff - expected /dev/null on line %d" +msgstr "" + +#: builtin/apply.c:1387 +#, c-format +msgid "recount: unexpected line: %.*s" +msgstr "" + +#: builtin/apply.c:1444 +#, c-format +msgid "patch fragment without header at line %d: %.*s" +msgstr "" + +#: builtin/apply.c:1461 +#, c-format +msgid "git diff header lacks filename information when removing %d leading pathname component (line %d)" +msgid_plural "git diff header lacks filename information when removing %d leading pathname components (line %d)" +msgstr[0] "" +msgstr[1] "" + +#: builtin/apply.c:1621 +msgid "new file depends on old contents" +msgstr "" + +#: builtin/apply.c:1623 +msgid "deleted file still has contents" +msgstr "" + +#: builtin/apply.c:1649 +#, c-format +msgid "corrupt patch at line %d" +msgstr "" + +#: builtin/apply.c:1685 +#, c-format +msgid "new file %s depends on old contents" +msgstr "" + +#: builtin/apply.c:1687 +#, c-format +msgid "deleted file %s still has contents" +msgstr "" + +#: builtin/apply.c:1690 +#, c-format +msgid "** warning: file %s becomes empty but is not deleted" +msgstr "" + +#: builtin/apply.c:1836 +#, c-format +msgid "corrupt binary patch at line %d: %.*s" +msgstr "" + +#. there has to be one hunk (forward hunk) +#: builtin/apply.c:1865 +#, c-format +msgid "unrecognized binary patch at line %d" +msgstr "" + +#: builtin/apply.c:1951 +#, c-format +msgid "patch with only garbage at line %d" +msgstr "" + +#: builtin/apply.c:2041 +#, c-format +msgid "unable to read symlink %s" +msgstr "" + +#: builtin/apply.c:2045 +#, c-format +msgid "unable to open or read %s" +msgstr "Não foi possível abrir o ler %s" + +#: builtin/apply.c:2116 +msgid "oops" +msgstr "" + +#: builtin/apply.c:2638 +#, c-format +msgid "invalid start of line: '%c'" +msgstr "começo de linha inválido: '%c'" + +#: builtin/apply.c:2756 +#, c-format +msgid "Hunk #%d succeeded at %d (offset %d line)." +msgid_plural "Hunk #%d succeeded at %d (offset %d lines)." +msgstr[0] "" +msgstr[1] "" + +#: builtin/apply.c:2768 +#, c-format +msgid "Context reduced to (%ld/%ld) to apply fragment at %d" +msgstr "" + +#: builtin/apply.c:2774 +#, c-format +msgid "" +"while searching for:\n" +"%.*s" +msgstr "" + +#: builtin/apply.c:2793 +#, c-format +msgid "missing binary patch data for '%s'" +msgstr "" + +#: builtin/apply.c:2896 +#, c-format +msgid "binary patch does not apply to '%s'" +msgstr "" + +#: builtin/apply.c:2902 +#, c-format +msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)" +msgstr "" + +#: builtin/apply.c:2923 +#, c-format +msgid "patch failed: %s:%ld" +msgstr "" + +#: builtin/apply.c:3038 +#, c-format +msgid "patch %s has been renamed/deleted" +msgstr "" + +#: builtin/apply.c:3045 +#: builtin/apply.c:3062 +#, c-format +msgid "read of %s failed" +msgstr "ler %s falhou" + +#: builtin/apply.c:3077 +msgid "removal patch leaves file contents" +msgstr "" + +#: builtin/apply.c:3098 +#, c-format +msgid "%s: already exists in working directory" +msgstr "%s: já existe no espaço de trabalho" + +#: builtin/apply.c:3136 +#, c-format +msgid "%s: has been deleted/renamed" +msgstr "" + +#: builtin/apply.c:3141 +#: builtin/apply.c:3172 +#, c-format +msgid "%s: %s" +msgstr "%s: %s" + +#: builtin/apply.c:3152 +#, c-format +msgid "%s: does not exist in index" +msgstr "" + +#: builtin/apply.c:3166 +#, c-format +msgid "%s: does not match index" +msgstr "%s: não tem correspondencia ao index" + +#: builtin/apply.c:3183 +#, c-format +msgid "%s: wrong type" +msgstr "" + +#: builtin/apply.c:3185 +#, c-format +msgid "%s has type %o, expected %o" +msgstr "" + +#: builtin/apply.c:3240 +#, c-format +msgid "%s: already exists in index" +msgstr "%s: já existe no indíce" + +#: builtin/apply.c:3259 +#, c-format +msgid "new mode (%o) of %s does not match old mode (%o)%s%s" +msgstr "" + +#: builtin/apply.c:3265 +#, c-format +msgid "%s: patch does not apply" +msgstr "" + +#: builtin/apply.c:3278 +#, c-format +msgid "Checking patch %s..." +msgstr "" + +#: builtin/apply.c:3333 +#: builtin/checkout.c:212 +#: builtin/reset.c:158 +#, c-format +msgid "make_cache_entry failed for path '%s'" +msgstr "" + +#: builtin/apply.c:3476 +#, c-format +msgid "unable to remove %s from index" +msgstr "" + +#: builtin/apply.c:3503 +#, c-format +msgid "corrupt patch for subproject %s" +msgstr "" + +#: builtin/apply.c:3507 +#, c-format +msgid "unable to stat newly created file '%s'" +msgstr "não é possivel 'stat' o novo ficheiro creado '%s'" + +#: builtin/apply.c:3512 +#, c-format +msgid "unable to create backing store for newly created file %s" +msgstr "" + +#: builtin/apply.c:3515 +#, c-format +msgid "unable to add cache entry for %s" +msgstr "" + +#: builtin/apply.c:3548 +#, c-format +msgid "closing file '%s'" +msgstr "fechar fichero '%s'" + +#: builtin/apply.c:3597 +#, c-format +msgid "unable to write file '%s' mode %o" +msgstr "" + +#: builtin/apply.c:3653 +#, c-format +msgid "Applied patch %s cleanly." +msgstr "" + +#: builtin/apply.c:3661 +msgid "internal error" +msgstr "" + +#. Say this even without --verbose +#: builtin/apply.c:3664 +#, c-format +msgid "Applying patch %%s with %d reject..." +msgid_plural "Applying patch %%s with %d rejects..." +msgstr[0] "" +msgstr[1] "" + +#: builtin/apply.c:3674 +#, c-format +msgid "truncating .rej filename to %.*s.rej" +msgstr "" + +#: builtin/apply.c:3695 +#, c-format +msgid "Hunk #%d applied cleanly." +msgstr "" + +#: builtin/apply.c:3698 +#, c-format +msgid "Rejected hunk #%d." +msgstr "" + +#: builtin/apply.c:3829 +msgid "unrecognized input" +msgstr "entrada não reconhecida" + +#: builtin/apply.c:3840 +msgid "unable to read index file" +msgstr "Não foi possível ler o fichero indíce" + +#: builtin/apply.c:4035 +msgid "--index outside a repository" +msgstr "--index fora de um repositorio" + +#: builtin/apply.c:4038 +msgid "--cached outside a repository" +msgstr "--cached fora de um repositorio" + +#: builtin/apply.c:4054 +#, c-format +msgid "can't open patch '%s'" +msgstr "não é possivel abrir patch '%s'" + +#: builtin/apply.c:4068 +#, c-format +msgid "squelched %d whitespace error" +msgid_plural "squelched %d whitespace errors" +msgstr[0] "" +msgstr[1] "" + +#: builtin/apply.c:4074 +#: builtin/apply.c:4084 +#, c-format +msgid "%d line adds whitespace errors." +msgid_plural "%d lines add whitespace errors." +msgstr[0] "" +msgstr[1] "" + #: builtin/archive.c:17 #, c-format msgid "could not create archive file '%s'" @@ -791,144 +1350,158 @@ msgstr "" msgid "git archive: expected a flush" msgstr "" -#: builtin/branch.c:137 +#: builtin/branch.c:144 #, c-format msgid "" "deleting branch '%s' that has been merged to\n" " '%s', but not yet merged to HEAD." msgstr "" -#: builtin/branch.c:141 +#: builtin/branch.c:148 #, c-format msgid "" "not deleting branch '%s' that is not yet merged to\n" " '%s', even though it is merged to HEAD." msgstr "" -#. TRANSLATORS: This is "remote " in "remote branch '%s' not found" -#: builtin/branch.c:163 -msgid "remote " -msgstr "remota" - -#: builtin/branch.c:171 +#: builtin/branch.c:180 msgid "cannot use -a with -d" msgstr "Não é possível usar -a com um -d" -#: builtin/branch.c:177 +#: builtin/branch.c:186 msgid "Couldn't look up commit object for HEAD" msgstr "" -#: builtin/branch.c:182 +#: builtin/branch.c:191 #, c-format msgid "Cannot delete the branch '%s' which you are currently on." msgstr "" -#: builtin/branch.c:192 +#: builtin/branch.c:202 #, c-format -msgid "%sbranch '%s' not found." -msgstr "%sbranch '%s' não encontrado." +msgid "remote branch '%s' not found." +msgstr "rama remota '%s não encontrada." -#: builtin/branch.c:200 +#: builtin/branch.c:203 +#, c-format +msgid "branch '%s' not found." +msgstr "rama '%s' não encontrado." + +#: builtin/branch.c:210 #, c-format msgid "Couldn't look up commit object for '%s'" msgstr "" -#: builtin/branch.c:206 +#: builtin/branch.c:216 #, c-format msgid "" "The branch '%s' is not fully merged.\n" "If you are sure you want to delete it, run 'git branch -D %s'." msgstr "" -#: builtin/branch.c:214 +#: builtin/branch.c:225 #, c-format -msgid "Error deleting %sbranch '%s'" +msgid "Error deleting remote branch '%s'" msgstr "" -#: builtin/branch.c:219 +#: builtin/branch.c:226 #, c-format -msgid "Deleted %sbranch %s (was %s).\n" +msgid "Error deleting branch '%s'" +msgstr "Erro a eliminar rama '%s'" + +#: builtin/branch.c:233 +#, c-format +msgid "Deleted remote branch %s (was %s).\n" msgstr "" -#: builtin/branch.c:224 +#: builtin/branch.c:234 +#, c-format +msgid "Deleted branch %s (was %s).\n" +msgstr "Eliminar rama %s (era %s).\n" + +#: builtin/branch.c:239 msgid "Update of config-file failed" msgstr "" -#: builtin/branch.c:322 +#: builtin/branch.c:337 #, c-format msgid "branch '%s' does not point at a commit" msgstr "" -#: builtin/branch.c:394 +#: builtin/branch.c:409 #, c-format msgid "behind %d] " msgstr "atrás %d] " -#: builtin/branch.c:396 +#: builtin/branch.c:411 #, c-format msgid "ahead %d] " msgstr "a frente %d] " -#: builtin/branch.c:398 +#: builtin/branch.c:413 #, c-format msgid "ahead %d, behind %d] " msgstr "a frente %d, atrás %d] " -#: builtin/branch.c:501 +#: builtin/branch.c:521 msgid "(no branch)" msgstr "(não é rama)" -#: builtin/branch.c:566 +#: builtin/branch.c:586 msgid "some refs could not be read" msgstr "" -#: builtin/branch.c:579 +#: builtin/branch.c:599 msgid "cannot rename the current branch while not on any." msgstr "" -#: builtin/branch.c:589 +#: builtin/branch.c:609 #, c-format msgid "Invalid branch name: '%s'" msgstr "Nome da rama inválida: '%s'" -#: builtin/branch.c:604 +#: builtin/branch.c:624 msgid "Branch rename failed" msgstr "Falhou renomeação da rama" -#: builtin/branch.c:608 +#: builtin/branch.c:628 #, c-format msgid "Renamed a misnamed branch '%s' away" msgstr "Renomeado uma rama erronea '%s'" -#: builtin/branch.c:612 +#: builtin/branch.c:632 #, c-format msgid "Branch renamed to %s, but HEAD is not updated!" msgstr "" -#: builtin/branch.c:619 +#: builtin/branch.c:639 msgid "Branch is renamed, but update of config-file failed" msgstr "" -#: builtin/branch.c:634 +#: builtin/branch.c:654 #, c-format msgid "malformed object name %s" msgstr "" -#: builtin/branch.c:658 +#: builtin/branch.c:678 #, c-format -msgid "could not write branch description template: %s\n" +msgid "could not write branch description template: %s" msgstr "" -#: builtin/branch.c:746 +#: builtin/branch.c:769 msgid "Failed to resolve HEAD as a valid ref." msgstr "" -#: builtin/branch.c:751 +#: builtin/branch.c:774 #: builtin/clone.c:558 msgid "HEAD not found below refs/heads!" msgstr "" -#: builtin/branch.c:809 +#: builtin/branch.c:794 +msgid "--column and --verbose are incompatible" +msgstr "--column e --verbose são incompatíveis" + +#: builtin/branch.c:843 msgid "-a and -r options to 'git branch' do not make sense with a branch name" msgstr "" @@ -977,12 +1550,6 @@ msgstr "" msgid "Unable to add merge result for '%s'" msgstr "" -#: builtin/checkout.c:212 -#: builtin/reset.c:158 -#, c-format -msgid "make_cache_entry failed for path '%s'" -msgstr "" - #: builtin/checkout.c:234 #: builtin/checkout.c:392 msgid "corrupt index file" @@ -997,7 +1564,7 @@ msgstr "" #: builtin/checkout.c:302 #: builtin/checkout.c:498 #: builtin/clone.c:583 -#: builtin/merge.c:811 +#: builtin/merge.c:812 msgid "unable to write new index file" msgstr "" @@ -1016,42 +1583,42 @@ msgstr "" msgid "Can not do reflog for '%s'\n" msgstr "" -#: builtin/checkout.c:565 +#: builtin/checkout.c:566 msgid "HEAD is now at" msgstr "HEAD é agora em " -#: builtin/checkout.c:572 +#: builtin/checkout.c:573 #, c-format msgid "Reset branch '%s'\n" msgstr "Reset rama '%s'\n" -#: builtin/checkout.c:575 +#: builtin/checkout.c:576 #, c-format msgid "Already on '%s'\n" msgstr "Já em '%s'\n" -#: builtin/checkout.c:579 +#: builtin/checkout.c:580 #, c-format msgid "Switched to and reset branch '%s'\n" msgstr "" -#: builtin/checkout.c:581 +#: builtin/checkout.c:582 #, c-format msgid "Switched to a new branch '%s'\n" msgstr "Mudado para a nova rama '%s'\n" -#: builtin/checkout.c:583 +#: builtin/checkout.c:584 #, c-format msgid "Switched to branch '%s'\n" msgstr "Mudado para a rama '%s'\n" -#: builtin/checkout.c:639 +#: builtin/checkout.c:640 #, c-format msgid " ... and %d more.\n" msgstr " ... e %d mais.\n" #. The singular version -#: builtin/checkout.c:645 +#: builtin/checkout.c:646 #, c-format msgid "" "Warning: you are leaving %d commit behind, not connected to\n" @@ -1066,7 +1633,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: builtin/checkout.c:663 +#: builtin/checkout.c:664 #, c-format msgid "" "If you want to keep them by creating a new branch, this may be a good time\n" @@ -1076,96 +1643,96 @@ msgid "" "\n" msgstr "" -#: builtin/checkout.c:692 +#: builtin/checkout.c:693 msgid "internal error in revision walk" msgstr "" -#: builtin/checkout.c:696 +#: builtin/checkout.c:697 msgid "Previous HEAD position was" msgstr "" -#: builtin/checkout.c:722 +#: builtin/checkout.c:723 msgid "You are on a branch yet to be born" msgstr "" #. case (1) -#: builtin/checkout.c:853 +#: builtin/checkout.c:854 #, c-format msgid "invalid reference: %s" msgstr "" #. case (1): want a tree -#: builtin/checkout.c:892 +#: builtin/checkout.c:893 #, c-format msgid "reference is not a tree: %s" msgstr "" -#: builtin/checkout.c:972 +#: builtin/checkout.c:973 msgid "-B cannot be used with -b" msgstr "" -#: builtin/checkout.c:981 +#: builtin/checkout.c:982 msgid "--patch is incompatible with all other options" msgstr "" -#: builtin/checkout.c:984 +#: builtin/checkout.c:985 msgid "--detach cannot be used with -b/-B/--orphan" msgstr "" -#: builtin/checkout.c:986 +#: builtin/checkout.c:987 msgid "--detach cannot be used with -t" msgstr "" -#: builtin/checkout.c:992 +#: builtin/checkout.c:993 msgid "--track needs a branch name" msgstr "" -#: builtin/checkout.c:999 +#: builtin/checkout.c:1000 msgid "Missing branch name; try -b" msgstr "" -#: builtin/checkout.c:1005 +#: builtin/checkout.c:1006 msgid "--orphan and -b|-B are mutually exclusive" msgstr "" -#: builtin/checkout.c:1007 +#: builtin/checkout.c:1008 msgid "--orphan cannot be used with -t" msgstr "" -#: builtin/checkout.c:1017 +#: builtin/checkout.c:1018 msgid "git checkout: -f and -m are incompatible" msgstr "" -#: builtin/checkout.c:1051 +#: builtin/checkout.c:1052 msgid "invalid path specification" msgstr "" -#: builtin/checkout.c:1059 +#: builtin/checkout.c:1060 #, c-format msgid "" "git checkout: updating paths is incompatible with switching branches.\n" "Did you intend to checkout '%s' which can not be resolved as commit?" msgstr "" -#: builtin/checkout.c:1061 +#: builtin/checkout.c:1062 msgid "git checkout: updating paths is incompatible with switching branches." msgstr "" -#: builtin/checkout.c:1066 +#: builtin/checkout.c:1067 msgid "git checkout: --detach does not take a path argument" msgstr "" -#: builtin/checkout.c:1069 +#: builtin/checkout.c:1070 msgid "" "git checkout: --ours/--theirs, --force and --merge are incompatible when\n" "checking out of the index." msgstr "" -#: builtin/checkout.c:1088 +#: builtin/checkout.c:1089 msgid "Cannot switch branch to a non-commit." msgstr "" -#: builtin/checkout.c:1091 +#: builtin/checkout.c:1092 msgid "--ours/--theirs is incompatible with switching branches." msgstr "" @@ -1217,12 +1784,12 @@ msgstr "" #: builtin/clone.c:302 #, c-format msgid "failed to open '%s'" -msgstr "" +msgstr "falhou a abrir '%s'" #: builtin/clone.c:306 #, c-format msgid "failed to create directory '%s'" -msgstr "" +msgstr "falhou a criar o directório '%s'" #: builtin/clone.c:308 #: builtin/diff.c:75 @@ -1253,7 +1820,7 @@ msgstr "" #: builtin/clone.c:350 #, c-format msgid "failed to copy file to '%s'" -msgstr "" +msgstr "falhou a copiar o ficheiro para '%s'" #: builtin/clone.c:373 #, c-format @@ -1336,7 +1903,11 @@ msgstr "" msgid "You appear to have cloned an empty repository." msgstr "" -#: builtin/commit.c:42 +#: builtin/column.c:51 +msgid "--command must be the first argument" +msgstr "" + +#: builtin/commit.c:43 msgid "" "Your name and email address were configured automatically based\n" "on your username and hostname. Please check that they are accurate.\n" @@ -1360,14 +1931,14 @@ msgstr "" "\n" " git commit --amend --reset-author\n" -#: builtin/commit.c:54 +#: builtin/commit.c:55 msgid "" "You asked to amend the most recent commit, but doing so would make\n" "it empty. You can repeat your command with --allow-empty, or you can\n" "remove the commit entirely with \"git reset HEAD^\".\n" msgstr "" -#: builtin/commit.c:59 +#: builtin/commit.c:60 msgid "" "The previous cherry-pick is now empty, possibly due to conflict resolution.\n" "If you wish to commit it anyway, use:\n" @@ -1377,286 +1948,289 @@ msgid "" "Otherwise, please use 'git reset'\n" msgstr "" -#: builtin/commit.c:205 -#: builtin/reset.c:33 -msgid "merge" -msgstr "juntar" - -#: builtin/commit.c:208 -msgid "cherry-pick" -msgstr "cherry-pick" - -#: builtin/commit.c:325 +#: builtin/commit.c:309 msgid "failed to unpack HEAD tree object" msgstr "" -#: builtin/commit.c:367 +#: builtin/commit.c:351 msgid "unable to create temporary index" msgstr "" -#: builtin/commit.c:373 +#: builtin/commit.c:357 msgid "interactive add failed" msgstr "falhou adicionar interativo" -#: builtin/commit.c:406 -#: builtin/commit.c:427 -#: builtin/commit.c:473 +#: builtin/commit.c:390 +#: builtin/commit.c:411 +#: builtin/commit.c:461 msgid "unable to write new_index file" msgstr "" -#: builtin/commit.c:457 -#, c-format -msgid "cannot do a partial commit during a %s." +#: builtin/commit.c:442 +msgid "cannot do a partial commit during a merge." +msgstr "" + +#: builtin/commit.c:444 +msgid "cannot do a partial commit during a cherry-pick." msgstr "" -#: builtin/commit.c:466 +#: builtin/commit.c:454 msgid "cannot read the index" msgstr "não foi possível ler o indíce" -#: builtin/commit.c:486 +#: builtin/commit.c:474 msgid "unable to write temporary index file" msgstr "" -#: builtin/commit.c:550 -#: builtin/commit.c:556 +#: builtin/commit.c:549 +#: builtin/commit.c:555 #, c-format msgid "invalid commit: %s" msgstr "commit inválido: %s" -#: builtin/commit.c:579 +#: builtin/commit.c:578 msgid "malformed --author parameter" msgstr "" -#: builtin/commit.c:635 +#: builtin/commit.c:639 #, c-format msgid "Malformed ident string: '%s'" msgstr "" -#: builtin/commit.c:670 -#: builtin/commit.c:703 -#: builtin/commit.c:1000 +#: builtin/commit.c:677 +#: builtin/commit.c:710 +#: builtin/commit.c:1024 #, c-format msgid "could not lookup commit %s" msgstr "" -#: builtin/commit.c:682 +#: builtin/commit.c:689 #: builtin/shortlog.c:296 #, c-format msgid "(reading log message from standard input)\n" msgstr "" -#: builtin/commit.c:684 +#: builtin/commit.c:691 msgid "could not read log from standard input" msgstr "" -#: builtin/commit.c:688 +#: builtin/commit.c:695 #, c-format msgid "could not read log file '%s'" msgstr "não é possivel ler o ficheiro de log '%s'" -#: builtin/commit.c:694 +#: builtin/commit.c:701 msgid "commit has empty message" msgstr "a mensagem do commit está vazia" -#: builtin/commit.c:710 +#: builtin/commit.c:717 msgid "could not read MERGE_MSG" msgstr "não é possivel ler MERGE_MSG" -#: builtin/commit.c:714 +#: builtin/commit.c:721 msgid "could not read SQUASH_MSG" msgstr "não é possivel ler SQUASH_MSG" -#: builtin/commit.c:718 +#: builtin/commit.c:725 #, c-format msgid "could not read '%s'" msgstr "não é possivel ler '%s'" -#: builtin/commit.c:746 -#, c-format -msgid "could not open '%s'" -msgstr "não é possivel abrir '%s'" - -#: builtin/commit.c:770 +#: builtin/commit.c:777 msgid "could not write commit template" msgstr "" -#: builtin/commit.c:783 +#: builtin/commit.c:788 #, c-format msgid "" "\n" -"It looks like you may be committing a %s.\n" +"It looks like you may be committing a merge.\n" "If this is not correct, please remove the file\n" "\t%s\n" "and try again.\n" msgstr "" -#: builtin/commit.c:796 -msgid "Please enter the commit message for your changes." -msgstr "Por favor insira a mensagem de commit das suas alterações." +#: builtin/commit.c:793 +#, c-format +msgid "" +"\n" +"It looks like you may be committing a cherry-pick.\n" +"If this is not correct, please remove the file\n" +"\t%s\n" +"and try again.\n" +msgstr "" -#: builtin/commit.c:799 +#: builtin/commit.c:805 msgid "" -" Lines starting\n" +"Please enter the commit message for your changes. Lines starting\n" "with '#' will be ignored, and an empty message aborts the commit.\n" msgstr "" -#: builtin/commit.c:804 +#: builtin/commit.c:810 msgid "" -" Lines starting\n" +"Please enter the commit message for your changes. Lines starting\n" "with '#' will be kept; you may remove them yourself if you want to.\n" "An empty message aborts the commit.\n" msgstr "" -#: builtin/commit.c:816 +#: builtin/commit.c:823 #, c-format msgid "%sAuthor: %s" msgstr "%sAutor: %s" -#: builtin/commit.c:823 +#: builtin/commit.c:830 #, c-format msgid "%sCommitter: %s" msgstr "%sCommitador: %s" -#: builtin/commit.c:843 +#: builtin/commit.c:850 msgid "Cannot read index" msgstr "" -#: builtin/commit.c:880 +#: builtin/commit.c:887 msgid "Error building trees" msgstr "" -#: builtin/commit.c:895 -#: builtin/tag.c:357 +#: builtin/commit.c:902 +#: builtin/tag.c:361 #, c-format msgid "Please supply the message using either -m or -F option.\n" msgstr "" -#: builtin/commit.c:975 +#: builtin/commit.c:999 #, c-format msgid "No existing author found with '%s'" msgstr "" -#: builtin/commit.c:990 -#: builtin/commit.c:1182 +#: builtin/commit.c:1014 +#: builtin/commit.c:1214 #, c-format msgid "Invalid untracked files mode '%s'" msgstr "" -#: builtin/commit.c:1030 +#: builtin/commit.c:1054 msgid "Using both --reset-author and --author does not make sense" msgstr "" -#: builtin/commit.c:1041 +#: builtin/commit.c:1065 msgid "You have nothing to amend." msgstr "Você não tem nada a corregir." -#: builtin/commit.c:1043 -#, c-format -msgid "You are in the middle of a %s -- cannot amend." +#: builtin/commit.c:1068 +msgid "You are in the middle of a merge -- cannot amend." +msgstr "" + +#: builtin/commit.c:1070 +msgid "You are in the middle of a cherry-pick -- cannot amend." msgstr "" -#: builtin/commit.c:1045 +#: builtin/commit.c:1073 msgid "Options --squash and --fixup cannot be used together" msgstr "" -#: builtin/commit.c:1055 +#: builtin/commit.c:1083 msgid "Only one of -c/-C/-F/--fixup can be used." msgstr "" -#: builtin/commit.c:1057 +#: builtin/commit.c:1085 msgid "Option -m cannot be combined with -c/-C/-F/--fixup." msgstr "" -#: builtin/commit.c:1063 +#: builtin/commit.c:1093 msgid "--reset-author can be used only with -C, -c or --amend." msgstr "" -#: builtin/commit.c:1080 +#: builtin/commit.c:1110 msgid "Only one of --include/--only/--all/--interactive/--patch can be used." msgstr "" -#: builtin/commit.c:1082 +#: builtin/commit.c:1112 msgid "No paths with --include/--only does not make sense." msgstr "" -#: builtin/commit.c:1084 +#: builtin/commit.c:1114 msgid "Clever... amending the last one with dirty index." msgstr "" -#: builtin/commit.c:1086 +#: builtin/commit.c:1116 msgid "Explicit paths specified without -i nor -o; assuming --only paths..." msgstr "" -#: builtin/commit.c:1096 -#: builtin/tag.c:556 +#: builtin/commit.c:1126 +#: builtin/tag.c:577 #, c-format msgid "Invalid cleanup mode %s" msgstr "" -#: builtin/commit.c:1101 +#: builtin/commit.c:1131 msgid "Paths with -a does not make sense." msgstr "" -#: builtin/commit.c:1280 +#: builtin/commit.c:1315 msgid "couldn't look up newly created commit" msgstr "" -#: builtin/commit.c:1282 +#: builtin/commit.c:1317 msgid "could not parse newly created commit" msgstr "" -#: builtin/commit.c:1323 +#: builtin/commit.c:1358 msgid "detached HEAD" msgstr "" -#: builtin/commit.c:1325 +#: builtin/commit.c:1360 msgid " (root-commit)" msgstr " (root-commit)" -#: builtin/commit.c:1415 +#: builtin/commit.c:1450 msgid "could not parse HEAD commit" msgstr "" -#: builtin/commit.c:1452 +#: builtin/commit.c:1487 #: builtin/merge.c:509 #, c-format msgid "could not open '%s' for reading" msgstr "" -#: builtin/commit.c:1459 +#: builtin/commit.c:1494 #, c-format msgid "Corrupt MERGE_HEAD file (%s)" msgstr "" -#: builtin/commit.c:1466 +#: builtin/commit.c:1501 msgid "could not read MERGE_MODE" msgstr "" -#: builtin/commit.c:1485 +#: builtin/commit.c:1520 #, c-format msgid "could not read commit message: %s" msgstr "" -#: builtin/commit.c:1499 +#: builtin/commit.c:1534 +#, c-format +msgid "Aborting commit; you did not edit the message.\n" +msgstr "" + +#: builtin/commit.c:1539 #, c-format msgid "Aborting commit due to empty commit message.\n" msgstr "" -#: builtin/commit.c:1514 -#: builtin/merge.c:935 -#: builtin/merge.c:968 +#: builtin/commit.c:1554 +#: builtin/merge.c:936 +#: builtin/merge.c:961 msgid "failed to write commit object" msgstr "" -#: builtin/commit.c:1535 +#: builtin/commit.c:1575 msgid "cannot lock HEAD ref" msgstr "" -#: builtin/commit.c:1539 +#: builtin/commit.c:1579 msgid "cannot update HEAD ref" msgstr "" -#: builtin/commit.c:1550 +#: builtin/commit.c:1590 msgid "" "Repository has been updated, but unable to write\n" "new_index file. Check that disk is not full or quota is\n" @@ -1779,127 +2353,133 @@ msgstr "" msgid "Couldn't find remote ref HEAD" msgstr "" -#: builtin/fetch.c:252 +#: builtin/fetch.c:253 #, c-format msgid "object %s not found" -msgstr "" +msgstr "objecto %s não encontrado" -#: builtin/fetch.c:258 +#: builtin/fetch.c:259 msgid "[up to date]" msgstr "[Actualizada]" -#: builtin/fetch.c:272 +#: builtin/fetch.c:273 #, c-format msgid "! %-*s %-*s -> %s (can't fetch in current branch)" msgstr "" -#: builtin/fetch.c:273 -#: builtin/fetch.c:351 +#: builtin/fetch.c:274 +#: builtin/fetch.c:360 msgid "[rejected]" msgstr "[rejeitado]" -#: builtin/fetch.c:284 +#: builtin/fetch.c:285 msgid "[tag update]" msgstr "[etiqueta actualizada]" -#: builtin/fetch.c:286 -#: builtin/fetch.c:313 -#: builtin/fetch.c:331 +#: builtin/fetch.c:287 +#: builtin/fetch.c:322 +#: builtin/fetch.c:340 msgid " (unable to update local ref)" msgstr "" -#: builtin/fetch.c:298 +#: builtin/fetch.c:305 msgid "[new tag]" msgstr "[nova etiqueta]" -#: builtin/fetch.c:302 +#: builtin/fetch.c:308 msgid "[new branch]" msgstr "[nova rama]" -#: builtin/fetch.c:347 +#: builtin/fetch.c:311 +msgid "[new ref]" +msgstr "[nova ref]" + +#: builtin/fetch.c:356 msgid "unable to update local ref" msgstr "" -#: builtin/fetch.c:347 +#: builtin/fetch.c:356 msgid "forced update" msgstr "actualização forçada" -#: builtin/fetch.c:353 +#: builtin/fetch.c:362 msgid "(non-fast-forward)" -msgstr "" +msgstr "(non-fast-forward)" -#: builtin/fetch.c:384 -#: builtin/fetch.c:676 +#: builtin/fetch.c:393 +#: builtin/fetch.c:685 #, c-format msgid "cannot open %s: %s\n" -msgstr "" +msgstr "não é possivel abrir %s: %s\n" -#: builtin/fetch.c:393 +#: builtin/fetch.c:402 #, c-format msgid "%s did not send all necessary objects\n" msgstr "" -#: builtin/fetch.c:479 +#: builtin/fetch.c:488 #, c-format msgid "From %.*s\n" msgstr "Para %.*s\n" -#: builtin/fetch.c:490 +#: builtin/fetch.c:499 #, c-format msgid "" "some local refs could not be updated; try running\n" " 'git remote prune %s' to remove any old, conflicting branches" msgstr "" -#: builtin/fetch.c:540 +#: builtin/fetch.c:549 #, c-format -msgid " (%s will become dangling)\n" +msgid " (%s will become dangling)" msgstr "" -#: builtin/fetch.c:541 +#: builtin/fetch.c:550 #, c-format -msgid " (%s has become dangling)\n" +msgid " (%s has become dangling)" msgstr "" -#: builtin/fetch.c:548 +#: builtin/fetch.c:557 msgid "[deleted]" msgstr "[eliminado]" -#: builtin/fetch.c:549 +#: builtin/fetch.c:558 +#: builtin/remote.c:1055 msgid "(none)" msgstr "(nenhum)" -#: builtin/fetch.c:666 +#: builtin/fetch.c:675 #, c-format msgid "Refusing to fetch into current branch %s of non-bare repository" msgstr "" -#: builtin/fetch.c:700 +#: builtin/fetch.c:709 #, c-format msgid "Don't know how to fetch from %s" msgstr "" -#: builtin/fetch.c:777 +#: builtin/fetch.c:786 #, c-format msgid "Option \"%s\" value \"%s\" is not valid for %s" msgstr "" -#: builtin/fetch.c:780 +#: builtin/fetch.c:789 #, c-format msgid "Option \"%s\" is ignored for %s\n" msgstr "" -#: builtin/fetch.c:879 +#: builtin/fetch.c:888 #, c-format msgid "Fetching %s\n" msgstr "Baixando %s\n" -#: builtin/fetch.c:881 +#: builtin/fetch.c:890 +#: builtin/remote.c:100 #, c-format msgid "Could not fetch %s" msgstr "" -#: builtin/fetch.c:898 +#: builtin/fetch.c:907 msgid "" "No remote repository specified. Please, specify either a URL or a\n" "remote name from which new revisions should be fetched." @@ -1907,24 +2487,24 @@ msgstr "" "Nenhum repositório remoto especificado. Por favor, especifique um URL ou o\n" "nome remoto a partir do qual novas revisões devem ser obtida." -#: builtin/fetch.c:918 +#: builtin/fetch.c:927 msgid "You need to specify a tag name." msgstr "Você precisa especificar um nome da etiqueta." -#: builtin/fetch.c:970 +#: builtin/fetch.c:979 msgid "fetch --all does not take a repository argument" msgstr "" -#: builtin/fetch.c:972 +#: builtin/fetch.c:981 msgid "fetch --all does not make sense with refspecs" msgstr "" -#: builtin/fetch.c:983 +#: builtin/fetch.c:992 #, c-format msgid "No such remote or remote group: %s" msgstr "" -#: builtin/fetch.c:991 +#: builtin/fetch.c:1000 msgid "Fetching a group and specifying refspecs does not make sense" msgstr "" @@ -1933,28 +2513,24 @@ msgstr "" msgid "Invalid %s: '%s'" msgstr "Inválido %s: '%s'" -#: builtin/gc.c:78 -msgid "Too many options specified" -msgstr "Demasiadas opções especificadas" - -#: builtin/gc.c:103 +#: builtin/gc.c:90 #, c-format msgid "insanely long object directory %.*s" msgstr "" -#: builtin/gc.c:223 +#: builtin/gc.c:221 #, c-format msgid "Auto packing the repository for optimum performance.\n" msgstr "" -#: builtin/gc.c:226 +#: builtin/gc.c:224 #, c-format msgid "" "Auto packing the repository for optimum performance. You may also\n" "run \"git gc\" manually. See \"git help gc\" for more information.\n" msgstr "" -#: builtin/gc.c:256 +#: builtin/gc.c:251 msgid "There are too many unreachable loose objects; run 'git prune' to remove them." msgstr "" @@ -2018,6 +2594,314 @@ msgstr "" msgid "both --cached and trees are given." msgstr "" +#: builtin/help.c:59 +#, c-format +msgid "unrecognized help format '%s'" +msgstr "formato ajuda não reconhecido '%s'" + +#: builtin/help.c:87 +msgid "Failed to start emacsclient." +msgstr "" + +#: builtin/help.c:100 +msgid "Failed to parse emacsclient version." +msgstr "" + +#: builtin/help.c:108 +#, c-format +msgid "emacsclient version '%d' too old (< 22)." +msgstr "" + +#: builtin/help.c:126 +#: builtin/help.c:154 +#: builtin/help.c:163 +#: builtin/help.c:171 +#, c-format +msgid "failed to exec '%s': %s" +msgstr "" + +#: builtin/help.c:211 +#, c-format +msgid "" +"'%s': path for unsupported man viewer.\n" +"Please consider using 'man.<tool>.cmd' instead." +msgstr "" + +#: builtin/help.c:223 +#, c-format +msgid "" +"'%s': cmd for supported man viewer.\n" +"Please consider using 'man.<tool>.path' instead." +msgstr "" + +#: builtin/help.c:287 +msgid "The most commonly used git commands are:" +msgstr "" + +#: builtin/help.c:355 +#, c-format +msgid "'%s': unknown man viewer." +msgstr "" + +#: builtin/help.c:372 +msgid "no man viewer handled the request" +msgstr "" + +#: builtin/help.c:380 +msgid "no info viewer handled the request" +msgstr "" + +#: builtin/help.c:391 +#, c-format +msgid "'%s': not a documentation directory." +msgstr "" + +#: builtin/help.c:432 +#: builtin/help.c:439 +#, c-format +msgid "usage: %s%s" +msgstr "" + +#: builtin/help.c:453 +#, c-format +msgid "`git %s' is aliased to `%s'" +msgstr "" + +#: builtin/index-pack.c:84 +#, c-format +msgid "object type mismatch at %s" +msgstr "" + +#: builtin/index-pack.c:104 +msgid "object of unexpected type" +msgstr "" + +#: builtin/index-pack.c:141 +#, c-format +msgid "cannot fill %d byte" +msgid_plural "cannot fill %d bytes" +msgstr[0] "" +msgstr[1] "" + +#: builtin/index-pack.c:151 +msgid "early EOF" +msgstr "" + +#: builtin/index-pack.c:152 +msgid "read error on input" +msgstr "" + +#: builtin/index-pack.c:164 +msgid "used more bytes than were available" +msgstr "" + +#: builtin/index-pack.c:171 +msgid "pack too large for current definition of off_t" +msgstr "" + +#: builtin/index-pack.c:187 +#, c-format +msgid "unable to create '%s'" +msgstr "não é possivel crear '%s'" + +#: builtin/index-pack.c:192 +#, c-format +msgid "cannot open packfile '%s'" +msgstr "Não é possivel abrir o ficheiro packfile '%s'" + +#: builtin/index-pack.c:206 +msgid "pack signature mismatch" +msgstr "" + +#: builtin/index-pack.c:226 +#, c-format +msgid "pack has bad object at offset %lu: %s" +msgstr "" + +#: builtin/index-pack.c:300 +#, c-format +msgid "inflate returned %d" +msgstr "" + +#: builtin/index-pack.c:345 +msgid "offset value overflow for delta base object" +msgstr "" + +#: builtin/index-pack.c:353 +msgid "delta base offset is out of bound" +msgstr "" + +#: builtin/index-pack.c:361 +#, c-format +msgid "unknown object type %d" +msgstr "ojecto com tipo desconhecido %d" + +#: builtin/index-pack.c:390 +msgid "cannot pread pack file" +msgstr "Não é possivel pread pack file" + +#: builtin/index-pack.c:392 +#, c-format +msgid "premature end of pack file, %lu byte missing" +msgid_plural "premature end of pack file, %lu bytes missing" +msgstr[0] "" +msgstr[1] "" + +#: builtin/index-pack.c:405 +msgid "serious inflate inconsistency" +msgstr "" + +#: builtin/index-pack.c:476 +#, c-format +msgid "cannot read existing object %s" +msgstr "não foi possível ler objecto existente %s" + +#: builtin/index-pack.c:479 +#, c-format +msgid "SHA1 COLLISION FOUND WITH %s !" +msgstr "" + +#: builtin/index-pack.c:488 +#, c-format +msgid "invalid blob object %s" +msgstr "inválido objecto blob %s" + +#: builtin/index-pack.c:500 +#, c-format +msgid "invalid %s" +msgstr "inválido: %s" + +#: builtin/index-pack.c:502 +msgid "Error in object" +msgstr "" + +#: builtin/index-pack.c:504 +#, c-format +msgid "Not all child objects of %s are reachable" +msgstr "" + +#: builtin/index-pack.c:576 +#: builtin/index-pack.c:602 +msgid "failed to apply delta" +msgstr "" + +#: builtin/index-pack.c:706 +msgid "Receiving objects" +msgstr "" + +#: builtin/index-pack.c:706 +msgid "Indexing objects" +msgstr "" + +#: builtin/index-pack.c:728 +msgid "pack is corrupted (SHA1 mismatch)" +msgstr "" + +#: builtin/index-pack.c:733 +msgid "cannot fstat packfile" +msgstr "Não é possivel fstat packfile" + +#: builtin/index-pack.c:736 +msgid "pack has junk at the end" +msgstr "" + +#: builtin/index-pack.c:754 +msgid "Resolving deltas" +msgstr "Resolvendo deltas" + +#: builtin/index-pack.c:787 +#, c-format +msgid "unable to deflate appended object (%d)" +msgstr "" + +#: builtin/index-pack.c:866 +#, c-format +msgid "local object %s is corrupt" +msgstr "" + +#: builtin/index-pack.c:890 +msgid "error while closing pack file" +msgstr "" + +#: builtin/index-pack.c:903 +#, c-format +msgid "cannot write keep file '%s'" +msgstr "não é possivel escrever o fichero kepp '%s'" + +#: builtin/index-pack.c:911 +#, c-format +msgid "cannot close written keep file '%s'" +msgstr "Não é possivel fechar o fichero escrito '%s'" + +#: builtin/index-pack.c:924 +msgid "cannot store pack file" +msgstr "Não é possivel guardar o fichero pack" + +#: builtin/index-pack.c:935 +msgid "cannot store index file" +msgstr "Não é possivel guardar fichero index" + +#: builtin/index-pack.c:1024 +#, c-format +msgid "Cannot open existing pack file '%s'" +msgstr "Não é possivel abrir o existente ficheiro pack %s" + +#: builtin/index-pack.c:1026 +#, c-format +msgid "Cannot open existing pack idx file for '%s'" +msgstr "Não é possivel abrir o ficheiro 'pack idx' para '%s'" + +#: builtin/index-pack.c:1073 +#, c-format +msgid "non delta: %d object" +msgid_plural "non delta: %d objects" +msgstr[0] "" +msgstr[1] "" + +#: builtin/index-pack.c:1080 +#, c-format +msgid "chain length = %d: %lu object" +msgid_plural "chain length = %d: %lu objects" +msgstr[0] "" +msgstr[1] "" + +#: builtin/index-pack.c:1107 +msgid "Cannot come back to cwd" +msgstr "" + +#: builtin/index-pack.c:1140 +#: builtin/index-pack.c:1143 +#: builtin/index-pack.c:1155 +#: builtin/index-pack.c:1159 +#, c-format +msgid "bad %s" +msgstr "inválido %s" + +#: builtin/index-pack.c:1173 +msgid "--fix-thin cannot be used without --stdin" +msgstr "" + +#: builtin/index-pack.c:1177 +#: builtin/index-pack.c:1187 +#, c-format +msgid "packfile name '%s' does not end with '.pack'" +msgstr "" + +#: builtin/index-pack.c:1196 +msgid "--verify with no packfile name given" +msgstr "" + +#: builtin/index-pack.c:1220 +msgid "confusion beyond insanity" +msgstr "" + +#: builtin/index-pack.c:1239 +#, c-format +msgid "pack has %d unresolved delta" +msgid_plural "pack has %d unresolved deltas" +msgstr[0] "" +msgstr[1] "" + #: builtin/init-db.c:35 #, c-format msgid "Could not make %s writable by group" @@ -2160,167 +3044,161 @@ msgstr "" msgid "Cannot access work tree '%s'" msgstr "" -#: builtin/log.c:187 +#: builtin/log.c:188 #, c-format msgid "Final output: %d %s\n" msgstr "" -#: builtin/log.c:395 -#: builtin/log.c:483 +#: builtin/log.c:401 +#: builtin/log.c:489 #, c-format msgid "Could not read object %s" msgstr "" -#: builtin/log.c:507 +#: builtin/log.c:513 #, c-format msgid "Unknown type: %d" msgstr "Tipo desconhecido: %d" -#: builtin/log.c:596 +#: builtin/log.c:602 msgid "format.headers without value" msgstr "" -#: builtin/log.c:669 +#: builtin/log.c:675 msgid "name of output directory is too long" msgstr "nome do diretório de saída é demasiado longo" -#: builtin/log.c:680 +#: builtin/log.c:686 #, c-format msgid "Cannot open patch file %s" msgstr "Não é possivel abrir o ficheiro patch %s" -#: builtin/log.c:694 +#: builtin/log.c:700 msgid "Need exactly one range." msgstr "Necessita de exatamente um intervalo." -#: builtin/log.c:702 +#: builtin/log.c:708 msgid "Not a range." msgstr "Não é um intervalo." -#: builtin/log.c:739 +#: builtin/log.c:745 msgid "Could not extract email from committer identity." msgstr "Não foi possível extrair a identidade do committer do e-mail." -#: builtin/log.c:785 +#: builtin/log.c:791 msgid "Cover letter needs email format" msgstr "Carta de apresentação necessita um modelo de e-mail" -#: builtin/log.c:879 +#: builtin/log.c:885 #, c-format msgid "insane in-reply-to: %s" msgstr "" -#: builtin/log.c:952 +#: builtin/log.c:958 msgid "Two output directories?" msgstr "Dois diretórios de saída?" -#: builtin/log.c:1173 +#: builtin/log.c:1179 #, c-format msgid "bogus committer info %s" msgstr "" -#: builtin/log.c:1218 +#: builtin/log.c:1224 msgid "-n and -k are mutually exclusive." msgstr "" -#: builtin/log.c:1220 +#: builtin/log.c:1226 msgid "--subject-prefix and -k are mutually exclusive." msgstr "" -#: builtin/log.c:1225 -#: builtin/shortlog.c:284 -#, c-format -msgid "unrecognized argument: %s" -msgstr "argumento não reconhecido: %s" - -#: builtin/log.c:1228 +#: builtin/log.c:1234 msgid "--name-only does not make sense" msgstr "" -#: builtin/log.c:1230 +#: builtin/log.c:1236 msgid "--name-status does not make sense" msgstr "" -#: builtin/log.c:1232 +#: builtin/log.c:1238 msgid "--check does not make sense" msgstr "" -#: builtin/log.c:1255 +#: builtin/log.c:1261 msgid "standard output, or directory, which one?" msgstr "saída padrão, ou diretório, qual deles?" -#: builtin/log.c:1257 +#: builtin/log.c:1263 #, c-format msgid "Could not create directory '%s'" msgstr "" -#: builtin/log.c:1410 +#: builtin/log.c:1416 msgid "Failed to create output files" msgstr "Falhou ao criar ficheiros de saída" -#: builtin/log.c:1514 +#: builtin/log.c:1520 #, c-format msgid "Could not find a tracked remote branch, please specify <upstream> manually.\n" msgstr "" -#: builtin/log.c:1530 -#: builtin/log.c:1532 -#: builtin/log.c:1544 +#: builtin/log.c:1536 +#: builtin/log.c:1538 +#: builtin/log.c:1550 #, c-format msgid "Unknown commit %s" msgstr "Commit desconhecido %s" -#: builtin/merge.c:91 +#: builtin/merge.c:90 msgid "switch `m' requires a value" msgstr "" -#: builtin/merge.c:128 +#: builtin/merge.c:127 #, c-format msgid "Could not find merge strategy '%s'.\n" msgstr "" -#: builtin/merge.c:129 +#: builtin/merge.c:128 #, c-format msgid "Available strategies are:" msgstr "As estratégias disponíveis são:" -#: builtin/merge.c:134 +#: builtin/merge.c:133 #, c-format msgid "Available custom strategies are:" msgstr "Estratégias personalizadas disponíveis são:" -#: builtin/merge.c:241 +#: builtin/merge.c:240 msgid "could not run stash." msgstr "" -#: builtin/merge.c:246 +#: builtin/merge.c:245 msgid "stash failed" msgstr "falhou o stash" -#: builtin/merge.c:251 +#: builtin/merge.c:250 #, c-format msgid "not a valid object: %s" msgstr "" -#: builtin/merge.c:270 -#: builtin/merge.c:287 +#: builtin/merge.c:269 +#: builtin/merge.c:286 msgid "read-tree failed" msgstr "" -#: builtin/merge.c:317 +#: builtin/merge.c:316 msgid " (nothing to squash)" msgstr " (nada para squash)" -#: builtin/merge.c:330 +#: builtin/merge.c:329 #, c-format msgid "Squash commit -- not updating HEAD\n" msgstr "" -#: builtin/merge.c:362 +#: builtin/merge.c:361 msgid "Writing SQUASH_MSG" msgstr "Escrevendo SQUASH_MSG" -#: builtin/merge.c:364 +#: builtin/merge.c:363 msgid "Finishing SQUASH_MSG" msgstr "Terminando SQUASH_MSG" @@ -2347,35 +3225,35 @@ msgstr "" msgid "failed to read the cache" msgstr "" -#: builtin/merge.c:696 +#: builtin/merge.c:697 msgid "Unable to write index." msgstr "" -#: builtin/merge.c:709 +#: builtin/merge.c:710 msgid "Not handling anything other than two heads merge." msgstr "" -#: builtin/merge.c:723 +#: builtin/merge.c:724 #, c-format msgid "Unknown option for merge-recursive: -X%s" msgstr "" -#: builtin/merge.c:737 +#: builtin/merge.c:738 #, c-format msgid "unable to write %s" msgstr "" -#: builtin/merge.c:876 +#: builtin/merge.c:877 #, c-format msgid "Could not read from '%s'" msgstr "" -#: builtin/merge.c:885 +#: builtin/merge.c:886 #, c-format msgid "Not committing merge; use 'git commit' to complete the merge.\n" msgstr "Não commitando um merge; usa 'git commit' para completar o merge.\n" -#: builtin/merge.c:891 +#: builtin/merge.c:892 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" @@ -2384,144 +3262,144 @@ msgid "" "the commit.\n" msgstr "" -#: builtin/merge.c:915 +#: builtin/merge.c:916 msgid "Empty commit message." msgstr "Mensagem de commit vazia." -#: builtin/merge.c:927 +#: builtin/merge.c:928 #, c-format msgid "Wonderful.\n" msgstr "Fastastico.\n" -#: builtin/merge.c:1000 +#: builtin/merge.c:993 #, c-format msgid "Automatic merge failed; fix conflicts and then commit the result.\n" msgstr "" -#: builtin/merge.c:1016 +#: builtin/merge.c:1009 #, c-format msgid "'%s' is not a commit" msgstr "'%s' não é um commit" -#: builtin/merge.c:1057 +#: builtin/merge.c:1050 msgid "No current branch." msgstr "Nenhuma rama actual" -#: builtin/merge.c:1059 +#: builtin/merge.c:1052 msgid "No remote for the current branch." msgstr "" -#: builtin/merge.c:1061 +#: builtin/merge.c:1054 msgid "No default upstream defined for the current branch." msgstr "" -#: builtin/merge.c:1066 +#: builtin/merge.c:1059 #, c-format msgid "No remote tracking branch for %s from %s" msgstr "" -#: builtin/merge.c:1188 +#: builtin/merge.c:1146 +#: builtin/merge.c:1303 +#, c-format +msgid "%s - not something we can merge" +msgstr "" + +#: builtin/merge.c:1214 msgid "There is no merge to abort (MERGE_HEAD missing)." msgstr "" -#: builtin/merge.c:1204 +#: builtin/merge.c:1230 #: git-pull.sh:31 msgid "" "You have not concluded your merge (MERGE_HEAD exists).\n" "Please, commit your changes before you can merge." msgstr "" -#: builtin/merge.c:1207 +#: builtin/merge.c:1233 #: git-pull.sh:34 msgid "You have not concluded your merge (MERGE_HEAD exists)." msgstr "" -#: builtin/merge.c:1211 +#: builtin/merge.c:1237 msgid "" "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n" "Please, commit your changes before you can merge." msgstr "" -#: builtin/merge.c:1214 +#: builtin/merge.c:1240 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)." msgstr "" -#: builtin/merge.c:1223 +#: builtin/merge.c:1249 msgid "You cannot combine --squash with --no-ff." msgstr "" -#: builtin/merge.c:1228 +#: builtin/merge.c:1254 msgid "You cannot combine --no-ff with --ff-only." msgstr "" -#: builtin/merge.c:1235 +#: builtin/merge.c:1261 msgid "No commit specified and merge.defaultToUpstream not set." msgstr "" -#: builtin/merge.c:1266 +#: builtin/merge.c:1293 msgid "Can merge only exactly one commit into empty head" msgstr "" -#: builtin/merge.c:1269 +#: builtin/merge.c:1296 msgid "Squash commit into empty head not supported yet" msgstr "" -#: builtin/merge.c:1271 +#: builtin/merge.c:1298 msgid "Non-fast-forward commit does not make sense into an empty head" msgstr "" -#: builtin/merge.c:1275 -#: builtin/merge.c:1319 -#, c-format -msgid "%s - not something we can merge" -msgstr "" - -#: builtin/merge.c:1385 +#: builtin/merge.c:1413 #, c-format msgid "Updating %s..%s\n" msgstr "Actualizando %s..%s\n" -#: builtin/merge.c:1423 +#: builtin/merge.c:1451 #, c-format msgid "Trying really trivial in-index merge...\n" msgstr "" -#: builtin/merge.c:1430 +#: builtin/merge.c:1458 #, c-format msgid "Nope.\n" msgstr "Não.\n" -#: builtin/merge.c:1462 +#: builtin/merge.c:1490 msgid "Not possible to fast-forward, aborting." msgstr "" -#: builtin/merge.c:1485 -#: builtin/merge.c:1562 +#: builtin/merge.c:1513 +#: builtin/merge.c:1592 #, c-format msgid "Rewinding the tree to pristine...\n" msgstr "" -#: builtin/merge.c:1489 +#: builtin/merge.c:1517 #, c-format msgid "Trying merge strategy %s...\n" msgstr "" -#: builtin/merge.c:1553 +#: builtin/merge.c:1583 #, c-format msgid "No merge strategy handled the merge.\n" msgstr "" -#: builtin/merge.c:1555 +#: builtin/merge.c:1585 #, c-format msgid "Merge with strategy %s failed.\n" msgstr "Fundir com a estratégia %s falhou.\n" -#: builtin/merge.c:1564 +#: builtin/merge.c:1594 #, c-format msgid "Using the %s to prepare resolving by hand.\n" msgstr "" -#: builtin/merge.c:1575 +#: builtin/merge.c:1606 #, c-format msgid "Automatic merge went well; stopped before committing as requested\n" msgstr "" @@ -2584,6 +3462,7 @@ msgid "Renaming %s to %s\n" msgstr "Mudar de nome %s para %s\n" #: builtin/mv.c:215 +#: builtin/remote.c:731 #, c-format msgid "renaming '%s' failed" msgstr "mudar de nome '%s' falhou" @@ -2608,7 +3487,7 @@ msgid "failed to finish 'show' for object '%s'" msgstr "" #: builtin/notes.c:175 -#: builtin/tag.c:343 +#: builtin/tag.c:347 #, c-format msgid "could not create file '%s'" msgstr "" @@ -2633,13 +3512,13 @@ msgid "The note contents has been left in %s" msgstr "" #: builtin/notes.c:251 -#: builtin/tag.c:521 +#: builtin/tag.c:542 #, c-format msgid "cannot read '%s'" msgstr "não consegue ler '%s'" #: builtin/notes.c:253 -#: builtin/tag.c:524 +#: builtin/tag.c:545 #, c-format msgid "could not open or read '%s'" msgstr "" @@ -2655,7 +3534,7 @@ msgstr "" #: builtin/notes.c:766 #: builtin/notes.c:968 #: builtin/reset.c:293 -#: builtin/tag.c:537 +#: builtin/tag.c:558 #, c-format msgid "Failed to resolve '%s' as a valid ref." msgstr "" @@ -2750,39 +3629,61 @@ msgid "Object %s has no note\n" msgstr "" #: builtin/notes.c:1103 +#: builtin/remote.c:1598 #, c-format msgid "Unknown subcommand: %s" msgstr "" -#: builtin/pack-objects.c:2310 +#: builtin/pack-objects.c:2315 #, c-format msgid "unsupported index version %s" msgstr "" -#: builtin/pack-objects.c:2314 +#: builtin/pack-objects.c:2319 #, c-format msgid "bad index version '%s'" msgstr "" -#: builtin/pack-objects.c:2322 +#: builtin/pack-objects.c:2342 #, c-format msgid "option %s does not accept negative form" msgstr "opção %s não aceita formato negativo" -#: builtin/pack-objects.c:2326 +#: builtin/pack-objects.c:2346 #, c-format msgid "unable to parse value '%s' for option %s" msgstr "" -#: builtin/push.c:44 +#: builtin/push.c:45 msgid "tag shorthand without <tag>" msgstr "" -#: builtin/push.c:63 +#: builtin/push.c:64 msgid "--delete only accepts plain target ref names" msgstr "--delete só aceita nomes simples para o ref de destino" -#: builtin/push.c:73 +#: builtin/push.c:99 +msgid "" +"\n" +"To choose either option permanently, see push.default in 'git help config'." +msgstr "" + +#: builtin/push.c:102 +#, c-format +msgid "" +"The upstream branch of your current branch does not match\n" +"the name of your current branch. To push to the upstream branch\n" +"on the remote, use\n" +"\n" +" git push %s HEAD:%s\n" +"\n" +"To push to the branch of the same name on the remote, use\n" +"\n" +" git push %s %s\n" +"%s" +msgstr "" + +#: builtin/push.c:121 #, c-format msgid "" "You are not currently on a branch.\n" @@ -2792,7 +3693,7 @@ msgid "" " git push %s HEAD:<name-of-remote-branch>\n" msgstr "" -#: builtin/push.c:80 +#: builtin/push.c:128 #, c-format msgid "" "The current branch %s has no upstream branch.\n" @@ -2801,39 +3702,63 @@ msgid "" " git push --set-upstream %s %s\n" msgstr "" -#: builtin/push.c:88 +#: builtin/push.c:136 #, c-format msgid "The current branch %s has multiple upstream branches, refusing to push." msgstr "" -#: builtin/push.c:111 +#: builtin/push.c:139 +#, c-format +msgid "" +"You are pushing to remote '%s', which is not the upstream of\n" +"your current branch '%s', without telling me what to push\n" +"to update which remote branch." +msgstr "" + +#: builtin/push.c:174 msgid "You didn't specify any refspecs to push, and push.default is \"nothing\"." msgstr "" -#: builtin/push.c:131 +#: builtin/push.c:181 +msgid "" +"Updates were rejected because the tip of your current branch is behind\n" +"its remote counterpart. Merge the remote changes (e.g. 'git pull')\n" +"before pushing again.\n" +"See the 'Note about fast-forwards' in 'git push --help' for details." +msgstr "" + +#: builtin/push.c:187 +msgid "" +"Updates were rejected because a pushed branch tip is behind its remote\n" +"counterpart. If you did not intend to push that branch, you may want to\n" +"specify branches to push or set the 'push.default' configuration\n" +"variable to 'current' or 'upstream' to push only the current branch." +msgstr "" + +#: builtin/push.c:193 +msgid "" +"Updates were rejected because a pushed branch tip is behind its remote\n" +"counterpart. Check out this branch and merge the remote changes\n" +"(e.g. 'git pull') before pushing again.\n" +"See the 'Note about fast-forwards' in 'git push --help' for details." +msgstr "" + +#: builtin/push.c:233 #, c-format msgid "Pushing to %s\n" msgstr "Pushing para %s\n" -#: builtin/push.c:135 +#: builtin/push.c:237 #, c-format msgid "failed to push some refs to '%s'" msgstr "" -#: builtin/push.c:143 -#, c-format -msgid "" -"To prevent you from losing history, non-fast-forward updates were rejected\n" -"Merge the remote changes (e.g. 'git pull') before pushing again. See the\n" -"'Note about fast-forwards' section of 'git push --help' for details.\n" -msgstr "" - -#: builtin/push.c:160 +#: builtin/push.c:269 #, c-format msgid "bad repository '%s'" msgstr "repositorio inválido '%s'" -#: builtin/push.c:161 +#: builtin/push.c:270 msgid "" "No configured push destination.\n" "Either specify the URL from the command-line or configure a remote repository using\n" @@ -2845,34 +3770,390 @@ msgid "" " git push <name>\n" msgstr "" -#: builtin/push.c:176 +#: builtin/push.c:285 msgid "--all and --tags are incompatible" msgstr "--all e --tags are são incompatíveis" -#: builtin/push.c:177 +#: builtin/push.c:286 msgid "--all can't be combined with refspecs" msgstr "" -#: builtin/push.c:182 +#: builtin/push.c:291 msgid "--mirror and --tags are incompatible" msgstr "" -#: builtin/push.c:183 +#: builtin/push.c:292 msgid "--mirror can't be combined with refspecs" msgstr "" -#: builtin/push.c:188 +#: builtin/push.c:297 msgid "--all and --mirror are incompatible" msgstr "" -#: builtin/push.c:274 +#: builtin/push.c:385 msgid "--delete is incompatible with --all, --mirror and --tags" msgstr "" -#: builtin/push.c:276 +#: builtin/push.c:387 msgid "--delete doesn't make sense without any refs" msgstr "" +#: builtin/remote.c:98 +#, c-format +msgid "Updating %s" +msgstr "Actualizando %s" + +#: builtin/remote.c:130 +msgid "" +"--mirror is dangerous and deprecated; please\n" +"\t use --mirror=fetch or --mirror=push instead" +msgstr "" + +#: builtin/remote.c:147 +#, c-format +msgid "unknown mirror argument: %s" +msgstr "argumento mirror não conhecido: %s" + +#: builtin/remote.c:185 +msgid "specifying a master branch makes no sense with --mirror" +msgstr "" + +#: builtin/remote.c:187 +msgid "specifying branches to track makes sense only with fetch mirrors" +msgstr "" + +#: builtin/remote.c:195 +#: builtin/remote.c:646 +#, c-format +msgid "remote %s already exists." +msgstr "o remoto %s já existe" + +#: builtin/remote.c:199 +#: builtin/remote.c:650 +#, c-format +msgid "'%s' is not a valid remote name" +msgstr "'%s' não é um nombe remoto valido" + +#: builtin/remote.c:243 +#, c-format +msgid "Could not setup master '%s'" +msgstr "Não foi possível configurar a rama master '%s'" + +#: builtin/remote.c:299 +#, c-format +msgid "more than one %s" +msgstr "" + +#: builtin/remote.c:339 +#, c-format +msgid "Could not get fetch map for refspec %s" +msgstr "" + +#: builtin/remote.c:440 +#: builtin/remote.c:448 +msgid "(matching)" +msgstr "" + +#: builtin/remote.c:452 +msgid "(delete)" +msgstr "(eliminado)" + +#: builtin/remote.c:595 +#: builtin/remote.c:601 +#: builtin/remote.c:607 +#, c-format +msgid "Could not append '%s' to '%s'" +msgstr "Não foi possível adicionar o '%s' para o '%s'" + +#: builtin/remote.c:639 +#: builtin/remote.c:792 +#: builtin/remote.c:890 +#, c-format +msgid "No such remote: %s" +msgstr "" + +#: builtin/remote.c:656 +#, c-format +msgid "Could not rename config section '%s' to '%s'" +msgstr "Não foi possível renombrar a secção da configuração de '%s' para '%s'" + +#: builtin/remote.c:662 +#: builtin/remote.c:799 +#, c-format +msgid "Could not remove config section '%s'" +msgstr "Não foi possível remover a secção da configuração '%s'" + +#: builtin/remote.c:677 +#, c-format +msgid "" +"Not updating non-default fetch respec\n" +"\t%s\n" +"\tPlease update the configuration manually if necessary." +msgstr "" + +#: builtin/remote.c:683 +#, c-format +msgid "Could not append '%s'" +msgstr "Não foi possível adicionar '%s'" + +#: builtin/remote.c:694 +#, c-format +msgid "Could not set '%s'" +msgstr "Não foi possível atribuir '%s'" + +#: builtin/remote.c:716 +#, c-format +msgid "deleting '%s' failed" +msgstr "falhou eliminar '%s'" + +#: builtin/remote.c:750 +#, c-format +msgid "creating '%s' failed" +msgstr "falhou a criar '%s'" + +#: builtin/remote.c:764 +#, c-format +msgid "Could not remove branch %s" +msgstr "Não foi possível remover rama %s" + +#: builtin/remote.c:834 +msgid "" +"Note: A branch outside the refs/remotes/ hierarchy was not removed;\n" +"to delete it, use:" +msgid_plural "" +"Note: Some branches outside the refs/remotes/ hierarchy were not removed;\n" +"to delete them, use:" +msgstr[0] "" +msgstr[1] "" + +#: builtin/remote.c:943 +#, c-format +msgid " new (next fetch will store in remotes/%s)" +msgstr "" + +#: builtin/remote.c:946 +msgid " tracked" +msgstr "seguido" + +#: builtin/remote.c:948 +msgid " stale (use 'git remote prune' to remove)" +msgstr "" + +#: builtin/remote.c:950 +msgid " ???" +msgstr " ???" + +#: builtin/remote.c:991 +#, c-format +msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch" +msgstr "" + +#: builtin/remote.c:998 +#, c-format +msgid "rebases onto remote %s" +msgstr "" + +#: builtin/remote.c:1001 +#, c-format +msgid " merges with remote %s" +msgstr "Fundir com servidor remoto %s" + +#: builtin/remote.c:1002 +msgid " and with remote" +msgstr " e com remoto" + +#: builtin/remote.c:1004 +#, c-format +msgid "merges with remote %s" +msgstr "Fundir com servidor remoto %s" + +#: builtin/remote.c:1005 +msgid " and with remote" +msgstr " e com remoto" + +#: builtin/remote.c:1051 +msgid "create" +msgstr "creado" + +#: builtin/remote.c:1054 +msgid "delete" +msgstr "eliminado" + +#: builtin/remote.c:1058 +msgid "up to date" +msgstr "actualizado" + +#: builtin/remote.c:1061 +msgid "fast-forwardable" +msgstr "fast-forwardable" + +#: builtin/remote.c:1064 +msgid "local out of date" +msgstr "local desatualizada" + +#: builtin/remote.c:1071 +#, c-format +msgid " %-*s forces to %-*s (%s)" +msgstr "" + +#: builtin/remote.c:1074 +#, c-format +msgid " %-*s pushes to %-*s (%s)" +msgstr "" + +#: builtin/remote.c:1078 +#, c-format +msgid " %-*s forces to %s" +msgstr "" + +#: builtin/remote.c:1081 +#, c-format +msgid " %-*s pushes to %s" +msgstr "" + +#: builtin/remote.c:1118 +#, c-format +msgid "* remote %s" +msgstr "* remota %s" + +#: builtin/remote.c:1119 +#, c-format +msgid " Fetch URL: %s" +msgstr "" + +#: builtin/remote.c:1120 +#: builtin/remote.c:1285 +msgid "(no URL)" +msgstr "(nenhum URL)" + +#: builtin/remote.c:1129 +#: builtin/remote.c:1131 +#, c-format +msgid " Push URL: %s" +msgstr "" + +#: builtin/remote.c:1133 +#: builtin/remote.c:1135 +#: builtin/remote.c:1137 +#, c-format +msgid " HEAD branch: %s" +msgstr "Rama HEAD: %s" + +#: builtin/remote.c:1139 +#, c-format +msgid " HEAD branch (remote HEAD is ambiguous, may be one of the following):\n" +msgstr "" + +#: builtin/remote.c:1151 +#, c-format +msgid " Remote branch:%s" +msgid_plural " Remote branches:%s" +msgstr[0] "Rama remota:%s" +msgstr[1] "Ramas remotas:%s'" + +#: builtin/remote.c:1154 +#: builtin/remote.c:1181 +msgid " (status not queried)" +msgstr "" + +#: builtin/remote.c:1163 +msgid " Local branch configured for 'git pull':" +msgid_plural " Local branches configured for 'git pull':" +msgstr[0] "" +msgstr[1] "" + +#: builtin/remote.c:1171 +msgid " Local refs will be mirrored by 'git push'" +msgstr "" + +#: builtin/remote.c:1178 +#, c-format +msgid " Local ref configured for 'git push'%s:" +msgid_plural " Local refs configured for 'git push'%s:" +msgstr[0] "" +msgstr[1] "" + +#: builtin/remote.c:1216 +msgid "Cannot determine remote HEAD" +msgstr "" + +#: builtin/remote.c:1218 +msgid "Multiple remote HEAD branches. Please choose one explicitly with:" +msgstr "" + +#: builtin/remote.c:1228 +#, c-format +msgid "Could not delete %s" +msgstr "Não foi possível abrir %s" + +#: builtin/remote.c:1236 +#, c-format +msgid "Not a valid ref: %s" +msgstr "" + +#: builtin/remote.c:1238 +#, c-format +msgid "Could not setup %s" +msgstr "Não foi possível configurar %s" + +#: builtin/remote.c:1274 +#, c-format +msgid " %s will become dangling!" +msgstr "" + +#: builtin/remote.c:1275 +#, c-format +msgid " %s has become dangling!" +msgstr "" + +#: builtin/remote.c:1281 +#, c-format +msgid "Pruning %s" +msgstr "Apagando %s" + +#: builtin/remote.c:1282 +#, c-format +msgid "URL: %s" +msgstr "URL: %s" + +#: builtin/remote.c:1295 +#, c-format +msgid " * [would prune] %s" +msgstr "" + +#: builtin/remote.c:1298 +#, c-format +msgid " * [pruned] %s" +msgstr "" + +#: builtin/remote.c:1387 +#: builtin/remote.c:1461 +#, c-format +msgid "No such remote '%s'" +msgstr "Não existe este remoto '%s'" + +#: builtin/remote.c:1414 +msgid "no remote specified" +msgstr "Nenhum remoto especificado" + +#: builtin/remote.c:1447 +msgid "--add --delete doesn't make sense" +msgstr "" + +#: builtin/remote.c:1487 +#, c-format +msgid "Invalid old URL pattern: %s" +msgstr "" + +#: builtin/remote.c:1495 +#, c-format +msgid "No such URL found: %s" +msgstr "Nenhum URL encontrado: %s" + +#: builtin/remote.c:1497 +msgid "Will not delete all non-push URLs" +msgstr "" + #: builtin/reset.c:33 msgid "mixed" msgstr "mistura" @@ -2886,6 +4167,10 @@ msgid "hard" msgstr "forte" #: builtin/reset.c:33 +msgid "merge" +msgstr "juntar" + +#: builtin/reset.c:33 msgid "keep" msgstr "manter" @@ -2953,20 +4238,20 @@ msgid "Could not reset index file to revision '%s'." msgstr "" #: builtin/revert.c:70 -#: builtin/revert.c:91 +#: builtin/revert.c:92 #, c-format msgid "%s: %s cannot be used with %s" msgstr "" -#: builtin/revert.c:126 +#: builtin/revert.c:131 msgid "program error" msgstr "erro do programa" -#: builtin/revert.c:209 +#: builtin/revert.c:221 msgid "revert failed" msgstr "falhou o revert" -#: builtin/revert.c:224 +#: builtin/revert.c:236 msgid "cherry-pick failed" msgstr "cherry-pick falhou" @@ -3006,32 +4291,32 @@ msgstr "" msgid "Missing author: %s" msgstr "Autor em falta: %s" -#: builtin/tag.c:58 +#: builtin/tag.c:60 #, c-format msgid "malformed object at '%s'" msgstr "" -#: builtin/tag.c:205 +#: builtin/tag.c:207 #, c-format msgid "tag name too long: %.*s..." msgstr "" -#: builtin/tag.c:210 +#: builtin/tag.c:212 #, c-format msgid "tag '%s' not found." msgstr "etiqueta '%s' não foi encontrada." -#: builtin/tag.c:225 +#: builtin/tag.c:227 #, c-format msgid "Deleted tag '%s' (was %s)\n" msgstr "" -#: builtin/tag.c:237 +#: builtin/tag.c:239 #, c-format msgid "could not verify the tag '%s'" msgstr "" -#: builtin/tag.c:247 +#: builtin/tag.c:249 msgid "" "\n" "#\n" @@ -3040,7 +4325,7 @@ msgid "" "#\n" msgstr "" -#: builtin/tag.c:254 +#: builtin/tag.c:256 msgid "" "\n" "#\n" @@ -3049,159 +4334,251 @@ msgid "" "#\n" msgstr "" -#: builtin/tag.c:294 +#: builtin/tag.c:298 msgid "unable to sign the tag" msgstr "" -#: builtin/tag.c:296 +#: builtin/tag.c:300 msgid "unable to write tag file" msgstr "" -#: builtin/tag.c:321 +#: builtin/tag.c:325 msgid "bad object type." msgstr "" -#: builtin/tag.c:334 +#: builtin/tag.c:338 msgid "tag header too big." msgstr "" -#: builtin/tag.c:366 +#: builtin/tag.c:370 msgid "no tag message?" msgstr "nenhuma mensaje para a etiqueta?" -#: builtin/tag.c:372 +#: builtin/tag.c:376 #, c-format msgid "The tag message has been left in %s\n" msgstr "" -#: builtin/tag.c:421 +#: builtin/tag.c:425 msgid "switch 'points-at' requires an object" msgstr "" -#: builtin/tag.c:423 +#: builtin/tag.c:427 #, c-format msgid "malformed object name '%s'" msgstr "" -#: builtin/tag.c:502 +#: builtin/tag.c:506 +msgid "--column and -n are incompatible" +msgstr "--column e -n are são incompatíveis" + +#: builtin/tag.c:523 msgid "-n option is only allowed with -l." msgstr "" -#: builtin/tag.c:504 +#: builtin/tag.c:525 msgid "--contains option is only allowed with -l." msgstr "" -#: builtin/tag.c:506 +#: builtin/tag.c:527 msgid "--points-at option is only allowed with -l." msgstr "" -#: builtin/tag.c:514 +#: builtin/tag.c:535 msgid "only one -F or -m option is allowed." msgstr "" -#: builtin/tag.c:534 +#: builtin/tag.c:555 msgid "too many params" msgstr "demasiado parametros" -#: builtin/tag.c:540 +#: builtin/tag.c:561 #, c-format msgid "'%s' is not a valid tag name." msgstr "" -#: builtin/tag.c:545 +#: builtin/tag.c:566 #, c-format msgid "tag '%s' already exists" msgstr "etiqueta '%s' já existe" -#: builtin/tag.c:563 +#: builtin/tag.c:584 #, c-format msgid "%s: cannot lock the ref" msgstr "" -#: builtin/tag.c:565 +#: builtin/tag.c:586 #, c-format msgid "%s: cannot update the ref" msgstr "" -#: builtin/tag.c:567 +#: builtin/tag.c:588 #, c-format msgid "Updated tag '%s' (was %s)\n" msgstr "" -#: git-am.sh:49 +#: git.c:16 +msgid "See 'git help <command>' for more information on a specific command." +msgstr "" + +#: common-cmds.h:8 +msgid "Add file contents to the index" +msgstr "" + +#: common-cmds.h:9 +msgid "Find by binary search the change that introduced a bug" +msgstr "" + +#: common-cmds.h:10 +msgid "List, create, or delete branches" +msgstr "Listar, criar ou apagar ramas" + +#: common-cmds.h:11 +msgid "Checkout a branch or paths to the working tree" +msgstr "" + +#: common-cmds.h:12 +msgid "Clone a repository into a new directory" +msgstr "" + +#: common-cmds.h:13 +msgid "Record changes to the repository" +msgstr "Gravar alterações para o repositório" + +#: common-cmds.h:14 +msgid "Show changes between commits, commit and working tree, etc" +msgstr "" + +#: common-cmds.h:15 +msgid "Download objects and refs from another repository" +msgstr "" + +#: common-cmds.h:16 +msgid "Print lines matching a pattern" +msgstr "" + +#: common-cmds.h:17 +msgid "Create an empty git repository or reinitialize an existing one" +msgstr "" + +#: common-cmds.h:18 +msgid "Show commit logs" +msgstr "Mostrado logs de commits" + +#: common-cmds.h:19 +msgid "Join two or more development histories together" +msgstr "" + +#: common-cmds.h:20 +msgid "Move or rename a file, a directory, or a symlink" +msgstr "" + +#: common-cmds.h:21 +msgid "Fetch from and merge with another repository or a local branch" +msgstr "" + +#: common-cmds.h:22 +msgid "Update remote refs along with associated objects" +msgstr "" + +#: common-cmds.h:23 +msgid "Forward-port local commits to the updated upstream head" +msgstr "" + +#: common-cmds.h:24 +msgid "Reset current HEAD to the specified state" +msgstr "" + +#: common-cmds.h:25 +msgid "Remove files from the working tree and from the index" +msgstr "" + +#: common-cmds.h:26 +msgid "Show various types of objects" +msgstr "" + +#: common-cmds.h:27 +msgid "Show the working tree status" +msgstr "Mostrar o estado los ramos das árvores de trabalho" + +#: common-cmds.h:28 +msgid "Create, list, delete or verify a tag object signed with GPG" +msgstr "" + +#: git-am.sh:50 msgid "You need to set your committer info first" msgstr "Necessitas primeiro de especificiar os teus dados de committer" -#: git-am.sh:136 +#: git-am.sh:137 msgid "Repository lacks necessary blobs to fall back on 3-way merge." msgstr "" -#: git-am.sh:147 +#: git-am.sh:154 msgid "" "Did you hand edit your patch?\n" "It does not apply to blobs recorded in its index." msgstr "" -#: git-am.sh:156 +#: git-am.sh:163 msgid "Falling back to patching base and 3-way merge..." msgstr "" -#: git-am.sh:268 +#: git-am.sh:275 msgid "Only one StGIT patch series can be applied at once" msgstr "" -#: git-am.sh:355 +#: git-am.sh:362 #, sh-format msgid "Patch format $patch_format is not supported." msgstr "" -#: git-am.sh:357 +#: git-am.sh:364 msgid "Patch format detection failed." msgstr "Falhou a detecção do formato do patch." -#: git-am.sh:411 +#: git-am.sh:418 msgid "-d option is no longer supported. Do not use." msgstr "" -#: git-am.sh:474 +#: git-am.sh:481 #, sh-format msgid "previous rebase directory $dotest still exists but mbox given." msgstr "" -#: git-am.sh:479 +#: git-am.sh:486 msgid "Please make up your mind. --skip or --abort?" msgstr "" -#: git-am.sh:506 +#: git-am.sh:513 msgid "Resolve operation not in progress, we are not resuming." msgstr "" -#: git-am.sh:572 +#: git-am.sh:579 #, sh-format msgid "Dirty index: cannot apply patches (dirty: $files)" msgstr "" -#: git-am.sh:748 +#: git-am.sh:755 msgid "cannot be interactive without stdin connected to a terminal." msgstr "" #. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a] #. in your translation. The program will only accept English #. input at this point. -#: git-am.sh:759 +#: git-am.sh:766 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all " msgstr "Aplicar? Sim[y]/[n]ão/[e]ditar/[v]er patch/[a]ceitar todos " -#: git-am.sh:795 +#: git-am.sh:802 #, sh-format msgid "Applying: $FIRSTLINE" msgstr "Aplicando: $FIRSTLINE" -#: git-am.sh:840 +#: git-am.sh:847 msgid "No changes -- Patch already applied." msgstr "Nenhuma mudança -- Já foi aplicado o patch." -#: git-am.sh:866 +#: git-am.sh:873 msgid "applying to an empty history" msgstr "" @@ -3296,7 +4673,7 @@ msgstr "" #: git-bisect.sh:474 msgid "We are not bisecting." -msgstr "" +msgstr "Não estamos a bisseccionar." #: git-pull.sh:21 msgid "" @@ -3433,163 +4810,171 @@ msgstr "" msgid "cannot strip one component off url '$remoteurl'" msgstr "" -#: git-submodule.sh:108 +#: git-submodule.sh:109 #, sh-format -msgid "No submodule mapping found in .gitmodules for path '$path'" +msgid "No submodule mapping found in .gitmodules for path '$sm_path'" msgstr "" -#: git-submodule.sh:149 +#: git-submodule.sh:150 #, sh-format -msgid "Clone of '$url' into submodule path '$path' failed" +msgid "Clone of '$url' into submodule path '$sm_path' failed" msgstr "" -#: git-submodule.sh:159 +#: git-submodule.sh:160 #, sh-format msgid "Gitdir '$a' is part of the submodule path '$b' or vice versa" msgstr "" -#: git-submodule.sh:247 +#: git-submodule.sh:249 #, sh-format msgid "repo URL: '$repo' must be absolute or begin with ./|../" msgstr "" -#: git-submodule.sh:264 +#: git-submodule.sh:266 #, sh-format -msgid "'$path' already exists in the index" +msgid "'$sm_path' already exists in the index" msgstr "" -#: git-submodule.sh:281 +#: git-submodule.sh:283 #, sh-format -msgid "'$path' already exists and is not a valid git repo" +msgid "'$sm_path' already exists and is not a valid git repo" msgstr "" -#: git-submodule.sh:295 +#: git-submodule.sh:297 #, sh-format -msgid "Unable to checkout submodule '$path'" +msgid "Unable to checkout submodule '$sm_path'" msgstr "" -#: git-submodule.sh:300 +#: git-submodule.sh:302 #, sh-format -msgid "Failed to add submodule '$path'" +msgid "Failed to add submodule '$sm_path'" msgstr "" -#: git-submodule.sh:305 +#: git-submodule.sh:307 #, sh-format -msgid "Failed to register submodule '$path'" +msgid "Failed to register submodule '$sm_path'" msgstr "" -#: git-submodule.sh:347 +#: git-submodule.sh:349 #, sh-format -msgid "Entering '$prefix$path'" -msgstr "Entrando '$prefix$path'" +msgid "Entering '$prefix$sm_path'" +msgstr "Entrando '$prefix$sm_path'" -#: git-submodule.sh:359 +#: git-submodule.sh:363 #, sh-format -msgid "Stopping at '$path'; script returned non-zero status." +msgid "Stopping at '$sm_path'; script returned non-zero status." msgstr "" -#: git-submodule.sh:401 +#: git-submodule.sh:405 #, sh-format -msgid "No url found for submodule path '$path' in .gitmodules" +msgid "No url found for submodule path '$sm_path' in .gitmodules" msgstr "" -#: git-submodule.sh:410 +#: git-submodule.sh:414 #, sh-format -msgid "Failed to register url for submodule path '$path'" +msgid "Failed to register url for submodule path '$sm_path'" msgstr "" -#: git-submodule.sh:418 +#: git-submodule.sh:422 #, sh-format -msgid "Failed to register update mode for submodule path '$path'" +msgid "Failed to register update mode for submodule path '$sm_path'" msgstr "" -#: git-submodule.sh:420 +#: git-submodule.sh:424 #, sh-format -msgid "Submodule '$name' ($url) registered for path '$path'" +msgid "Submodule '$name' ($url) registered for path '$sm_path'" msgstr "" -#: git-submodule.sh:519 +#: git-submodule.sh:523 #, sh-format msgid "" -"Submodule path '$path' not initialized\n" +"Submodule path '$sm_path' not initialized\n" "Maybe you want to use 'update --init'?" msgstr "" -#: git-submodule.sh:532 +#: git-submodule.sh:536 #, sh-format -msgid "Unable to find current revision in submodule path '$path'" +msgid "Unable to find current revision in submodule path '$sm_path'" msgstr "" -#: git-submodule.sh:551 +#: git-submodule.sh:555 #, sh-format -msgid "Unable to fetch in submodule path '$path'" +msgid "Unable to fetch in submodule path '$sm_path'" msgstr "" -#: git-submodule.sh:565 +#: git-submodule.sh:569 #, sh-format -msgid "Unable to rebase '$sha1' in submodule path '$path'" +msgid "Unable to rebase '$sha1' in submodule path '$sm_path'" msgstr "" -#: git-submodule.sh:566 +#: git-submodule.sh:570 #, sh-format -msgid "Submodule path '$path': rebased into '$sha1'" +msgid "Submodule path '$sm_path': rebased into '$sha1'" msgstr "" -#: git-submodule.sh:571 +#: git-submodule.sh:575 #, sh-format -msgid "Unable to merge '$sha1' in submodule path '$path'" +msgid "Unable to merge '$sha1' in submodule path '$sm_path'" msgstr "" -#: git-submodule.sh:572 +#: git-submodule.sh:576 #, sh-format -msgid "Submodule path '$path': merged in '$sha1'" +msgid "Submodule path '$sm_path': merged in '$sha1'" msgstr "" -#: git-submodule.sh:577 +#: git-submodule.sh:581 #, sh-format -msgid "Unable to checkout '$sha1' in submodule path '$path'" +msgid "Unable to checkout '$sha1' in submodule path '$sm_path'" msgstr "" -#: git-submodule.sh:578 +#: git-submodule.sh:582 #, sh-format -msgid "Submodule path '$path': checked out '$sha1'" +msgid "Submodule path '$sm_path': checked out '$sha1'" msgstr "" -#: git-submodule.sh:600 -#: git-submodule.sh:923 +#: git-submodule.sh:604 +#: git-submodule.sh:927 #, sh-format -msgid "Failed to recurse into submodule path '$path'" +msgid "Failed to recurse into submodule path '$sm_path'" msgstr "" -#: git-submodule.sh:708 +#: git-submodule.sh:712 msgid "--" msgstr "--" -#: git-submodule.sh:766 +#: git-submodule.sh:770 #, sh-format msgid " Warn: $name doesn't contain commit $sha1_src" msgstr "" -#: git-submodule.sh:769 +#: git-submodule.sh:773 #, sh-format msgid " Warn: $name doesn't contain commit $sha1_dst" msgstr "" -#: git-submodule.sh:772 +#: git-submodule.sh:776 #, sh-format msgid " Warn: $name doesn't contain commits $sha1_src and $sha1_dst" msgstr "" -#: git-submodule.sh:797 +#: git-submodule.sh:801 msgid "blob" msgstr "blob" -#: git-submodule.sh:798 +#: git-submodule.sh:802 msgid "submodule" msgstr "submódulos" -#: git-submodule.sh:969 +#: git-submodule.sh:973 #, sh-format msgid "Synchronizing submodule url for '$name'" msgstr "" +#~ msgid "cherry-pick" +#~ msgstr "cherry-pick" + +#~ msgid "Please enter the commit message for your changes." +#~ msgstr "Por favor insira a mensagem de commit das suas alterações." + +#~ msgid "Too many options specified" +#~ msgstr "Demasiadas opções especificadas" diff --git a/po/zh_CN.po b/po/zh_CN.po index 701b693378..155c75e57e 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: Git\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2012-04-28 20:17+0800\n" +"POT-Creation-Date: 2012-05-15 06:31+0800\n" "PO-Revision-Date: 2012-01-30 00:00+0800\n" "Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n" "Language-Team: GitHub <https://github.com/gotgit/git/>\n" @@ -113,7 +113,7 @@ msgid ", %d deletion(-)" msgid_plural ", %d deletions(-)" msgstr[0] ",删除 %d 行(-)" -#: diff.c:3435 +#: diff.c:3439 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" @@ -2010,21 +2010,17 @@ msgstr "获取组并指定引用表达式没有意义" msgid "Invalid %s: '%s'" msgstr "无效的 %s:'%s'" -#: builtin/gc.c:78 -msgid "Too many options specified" -msgstr "指定了太多的选项" - -#: builtin/gc.c:103 +#: builtin/gc.c:90 #, c-format msgid "insanely long object directory %.*s" msgstr "不正常的长对象目录 %.*s" -#: builtin/gc.c:223 +#: builtin/gc.c:221 #, c-format msgid "Auto packing the repository for optimum performance.\n" msgstr "自动打包版本库以求最佳性能。\n" -#: builtin/gc.c:226 +#: builtin/gc.c:224 #, c-format msgid "" "Auto packing the repository for optimum performance. You may also\n" @@ -2033,7 +2029,7 @@ msgstr "" "自动打包版本库以求最佳性能。您还可以手动运行 \"git gc\"。\n" "参见 \"git help gc\" 以获取更多信息。\n" -#: builtin/gc.c:256 +#: builtin/gc.c:251 msgid "" "There are too many unreachable loose objects; run 'git prune' to remove them." msgstr "有太多不可达的松散对象,运行 'git prune' 删除它们。" @@ -2825,22 +2821,22 @@ msgstr "对象 %s 没有注解\n" msgid "Unknown subcommand: %s" msgstr "未知子命令:%s" -#: builtin/pack-objects.c:2310 +#: builtin/pack-objects.c:2315 #, c-format msgid "unsupported index version %s" msgstr "不支持的索引版本 %s" -#: builtin/pack-objects.c:2314 +#: builtin/pack-objects.c:2319 #, c-format msgid "bad index version '%s'" msgstr "坏的索引版本 '%s'" -#: builtin/pack-objects.c:2322 +#: builtin/pack-objects.c:2342 #, c-format msgid "option %s does not accept negative form" msgstr "选项 %s 不接受否定格式" -#: builtin/pack-objects.c:2326 +#: builtin/pack-objects.c:2346 #, c-format msgid "unable to parse value '%s' for option %s" msgstr "不能解析值 '%s' 针对于选项 %s" @@ -2907,9 +2903,9 @@ msgid "" "before pushing again.\n" "See the 'Note about fast-forwards' in 'git push --help' for details." msgstr "" -"更新被拒绝,因为您当前分支落后于对应的远程分支。再次推送前先与远程变更\n" -"合并(如 'git pull')。\n" -"详见 'git push --help' 中的 'Note about fast-forwards' 的内容。" +"更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。\n" +"再次推送前,先与远程变更合并(如 'git pull')。详见\n" +"'git push --help' 中的 'Note about fast-forwards' 小节。" #: builtin/push.c:144 msgid "" @@ -2918,9 +2914,10 @@ msgid "" "specify branches to push or set the 'push.default' configuration\n" "variable to 'current' or 'upstream' to push only the current branch." msgstr "" -"更新被拒绝,因为推送的一个分支落后于对应的远程分支。如果您并非有意推送\n" -"该分支,您可以指定要推送的分支或者设置 'push.default' 配置变量为\n" -"'current' 或 'upstream' 以便只推送当前分支。" +"更新被拒绝,因为推送的一个分支的最新提交落后于其对应的远程分支。\n" +"如果您并非有意推送该分支,您可以在推送时指定要推送的分支,或者将\n" +"配置变量 'push.default' 设置为 'current' 或 'upstream' 以便只推送" +"当前分支。" #: builtin/push.c:150 msgid "" @@ -2929,9 +2926,9 @@ msgid "" "(e.g. 'git pull') before pushing again.\n" "See the 'Note about fast-forwards' in 'git push --help' for details." msgstr "" -"更新被拒绝,因为推送的一个分支落后于对应的远程分支。检出该分支并在再次\n" -"推送之前与远程变更合并(如 'git pull')。\n" -"详见 'git push --help' 中的 'Note about fast-forwards' 的内容。" +"更新被拒绝,因为推送的一个分支的最新提交落后于其对应的远程分支。\n" +"检出该分支并与远程变更合并(如 'git pull'),然后再推送。详见\n" +"'git push --help' 中的 'Note about fast-forwards' 小节。" #: builtin/push.c:190 #, c-format @@ -2989,11 +2986,11 @@ msgstr "--mirror 不能和引用表达式共用" msgid "--all and --mirror are incompatible" msgstr "--all 和 --mirror 不兼容" -#: builtin/push.c:342 +#: builtin/push.c:334 msgid "--delete is incompatible with --all, --mirror and --tags" msgstr "--delete 与 --all、--mirror 及 --tags 不兼容" -#: builtin/push.c:344 +#: builtin/push.c:336 msgid "--delete doesn't make sense without any refs" msgstr "--delete 未接任何引用没有意义" @@ -3601,67 +3598,67 @@ msgstr "无法克隆 '$url' 到子模组路径 '$sm_path'" msgid "Gitdir '$a' is part of the submodule path '$b' or vice versa" msgstr "Gitdir '$a' 在子模组路径 '$b' 之下或者相反" -#: git-submodule.sh:249 +#: git-submodule.sh:248 #, sh-format msgid "repo URL: '$repo' must be absolute or begin with ./|../" msgstr "版本库URL:'$repo' 必须是绝对路径或以 ./|../ 起始" -#: git-submodule.sh:266 +#: git-submodule.sh:265 #, sh-format msgid "'$sm_path' already exists in the index" msgstr "'$sm_path' 已经存在于索引中" -#: git-submodule.sh:283 +#: git-submodule.sh:282 #, sh-format msgid "'$sm_path' already exists and is not a valid git repo" msgstr "'$sm_path' 已存在且不是一个有效的 git 版本库" -#: git-submodule.sh:297 +#: git-submodule.sh:296 #, sh-format msgid "Unable to checkout submodule '$sm_path'" msgstr "不能检出子模组 '$sm_path'" -#: git-submodule.sh:302 +#: git-submodule.sh:301 #, sh-format msgid "Failed to add submodule '$sm_path'" msgstr "无法添加子模组 '$sm_path'" -#: git-submodule.sh:307 +#: git-submodule.sh:306 #, sh-format msgid "Failed to register submodule '$sm_path'" msgstr "无法注册子模组 '$sm_path'" -#: git-submodule.sh:349 +#: git-submodule.sh:348 #, sh-format msgid "Entering '$prefix$sm_path'" msgstr "正在进入 '$prefix$sm_path'" -#: git-submodule.sh:363 +#: git-submodule.sh:360 #, sh-format msgid "Stopping at '$sm_path'; script returned non-zero status." msgstr "停止于 '$sm_path',脚本返回非零值。" -#: git-submodule.sh:405 +#: git-submodule.sh:402 #, sh-format msgid "No url found for submodule path '$sm_path' in .gitmodules" msgstr "在 .gitmodules 中未找到子模组路径 '$sm_path' 的 url" -#: git-submodule.sh:414 +#: git-submodule.sh:411 #, sh-format msgid "Failed to register url for submodule path '$sm_path'" msgstr "无法为子模组路径 '$sm_path' 注册 url" -#: git-submodule.sh:422 +#: git-submodule.sh:419 #, sh-format msgid "Failed to register update mode for submodule path '$sm_path'" msgstr "无法为子模组路径 '$sm_path' 注册更新模式" -#: git-submodule.sh:424 +#: git-submodule.sh:421 #, sh-format msgid "Submodule '$name' ($url) registered for path '$sm_path'" msgstr "子模组 '$name' ($url) 已为路径 '$sm_path' 注册" -#: git-submodule.sh:523 +#: git-submodule.sh:520 #, sh-format msgid "" "Submodule path '$sm_path' not initialized\n" @@ -3670,82 +3667,85 @@ msgstr "" "子模组路径 '$sm_path' 没有初始化\n" "也许您想用 'update --init'?" -#: git-submodule.sh:536 +#: git-submodule.sh:533 #, sh-format msgid "Unable to find current revision in submodule path '$sm_path'" msgstr "无法在子模组路径 '$sm_path' 中找到当前版本" -#: git-submodule.sh:555 +#: git-submodule.sh:552 #, sh-format msgid "Unable to fetch in submodule path '$sm_path'" msgstr "无法在子模组路径 '$sm_path' 中获取" -#: git-submodule.sh:569 +#: git-submodule.sh:566 #, sh-format msgid "Unable to rebase '$sha1' in submodule path '$sm_path'" msgstr "无法在子模组路径 '$sm_path' 中变基 '$sha1'" -#: git-submodule.sh:570 +#: git-submodule.sh:567 #, sh-format msgid "Submodule path '$sm_path': rebased into '$sha1'" msgstr "子模组路径 '$sm_path':变基至 '$sha1'" -#: git-submodule.sh:575 +#: git-submodule.sh:572 #, sh-format msgid "Unable to merge '$sha1' in submodule path '$sm_path'" msgstr "无法合并 '$sha1' 到子模组路径 '$sm_path' 中" -#: git-submodule.sh:576 +#: git-submodule.sh:573 #, sh-format msgid "Submodule path '$sm_path': merged in '$sha1'" msgstr "子模组路径 '$sm_path':已合并入 '$sha1'" -#: git-submodule.sh:581 +#: git-submodule.sh:578 #, sh-format msgid "Unable to checkout '$sha1' in submodule path '$sm_path'" msgstr "无法在子模组路径 '$sm_path' 中检出 '$sha1'" -#: git-submodule.sh:582 +#: git-submodule.sh:579 #, sh-format msgid "Submodule path '$sm_path': checked out '$sha1'" msgstr "子模组路径 '$sm_path':检出 '$sha1'" -#: git-submodule.sh:604 git-submodule.sh:927 +#: git-submodule.sh:601 git-submodule.sh:924 #, sh-format msgid "Failed to recurse into submodule path '$sm_path'" msgstr "无法递归进子模组路径 '$sm_path'" -#: git-submodule.sh:712 +#: git-submodule.sh:709 msgid "--" msgstr "--" # 译者:注意保持前导空格 -#: git-submodule.sh:770 +#: git-submodule.sh:767 #, sh-format msgid " Warn: $name doesn't contain commit $sha1_src" msgstr " 警告:$name 未包含提交 $sha1_src" # 译者:注意保持前导空格 -#: git-submodule.sh:773 +#: git-submodule.sh:770 #, sh-format msgid " Warn: $name doesn't contain commit $sha1_dst" msgstr " 警告:$name 未包含提交 $sha1_dst" # 译者:注意保持前导空格 -#: git-submodule.sh:776 +#: git-submodule.sh:773 #, sh-format msgid " Warn: $name doesn't contain commits $sha1_src and $sha1_dst" msgstr " 警告:$name 未包含提交 $sha1_src 和 $sha1_dst" -#: git-submodule.sh:801 +#: git-submodule.sh:798 msgid "blob" msgstr "blob" -#: git-submodule.sh:802 +#: git-submodule.sh:799 msgid "submodule" msgstr "子模组" -#: git-submodule.sh:973 +#: git-submodule.sh:970 #, sh-format msgid "Synchronizing submodule url for '$name'" msgstr "为 '$name' 同步子模组 url" + +#~ msgid "Too many options specified" +#~ msgstr "指定了太多的选项" @@ -439,12 +439,14 @@ static char *get_header(const struct commit *commit, const char *key) int key_len = strlen(key); const char *line = commit->buffer; - for (;;) { + while (line) { const char *eol = strchr(line, '\n'), *next; if (line == eol) return NULL; if (!eol) { + warning("malformed commit (header is missing newline): %s", + sha1_to_hex(commit->object.sha1)); eol = line + strlen(line); next = NULL; } else @@ -456,6 +458,7 @@ static char *get_header(const struct commit *commit, const char *key) } line = next; } + return NULL; } static char *replace_encoding_header(char *buf, const char *encoding) @@ -547,8 +550,10 @@ static size_t format_person_part(struct strbuf *sb, char part, mail_end = s.mail_end; if (part == 'N' || part == 'E') { /* mailmap lookup */ - strlcpy(person_name, name_start, name_end - name_start + 1); - strlcpy(person_mail, mail_start, mail_end - mail_start + 1); + snprintf(person_name, sizeof(person_name), "%.*s", + (int)(name_end - name_start), name_start); + snprintf(person_mail, sizeof(person_mail), "%.*s", + (int)(mail_end - mail_start), mail_start); mailmap_name(person_mail, sizeof(person_mail), person_name, sizeof(person_name)); name_start = person_name; name_end = name_start + strlen(person_name); @@ -259,8 +259,13 @@ static void clear_ref_dir(struct ref_dir *dir); static void free_ref_entry(struct ref_entry *entry) { - if (entry->flag & REF_DIR) - clear_ref_dir(get_ref_dir(entry)); + if (entry->flag & REF_DIR) { + /* + * Do not use get_ref_dir() here, as that might + * trigger the reading of loose refs. + */ + clear_ref_dir(&entry->u.subdir); + } free(entry); } @@ -273,6 +278,12 @@ static void add_entry_to_dir(struct ref_dir *dir, struct ref_entry *entry) { ALLOC_GROW(dir->entries, dir->nr + 1, dir->alloc); dir->entries[dir->nr++] = entry; + /* optimize for the case that entries are added in order */ + if (dir->nr == 1 || + (dir->nr == dir->sorted + 1 && + strcmp(dir->entries[dir->nr - 2]->name, + dir->entries[dir->nr - 1]->name) < 0)) + dir->sorted = dir->nr; } /* @@ -294,12 +305,13 @@ static void clear_ref_dir(struct ref_dir *dir) * "refs/heads/") or "" for the top-level directory. */ static struct ref_entry *create_dir_entry(struct ref_cache *ref_cache, - const char *dirname, int incomplete) + const char *dirname, size_t len, + int incomplete) { struct ref_entry *direntry; - int len = strlen(dirname); direntry = xcalloc(1, sizeof(struct ref_entry) + len + 1); - memcpy(direntry->name, dirname, len + 1); + memcpy(direntry->name, dirname, len); + direntry->name[len] = '\0'; direntry->u.subdir.ref_cache = ref_cache; direntry->flag = REF_DIR | (incomplete ? REF_INCOMPLETE : 0); return direntry; @@ -314,28 +326,42 @@ static int ref_entry_cmp(const void *a, const void *b) static void sort_ref_dir(struct ref_dir *dir); +struct string_slice { + size_t len; + const char *str; +}; + +static int ref_entry_cmp_sslice(const void *key_, const void *ent_) +{ + struct string_slice *key = (struct string_slice *)key_; + struct ref_entry *ent = *(struct ref_entry **)ent_; + int entlen = strlen(ent->name); + int cmplen = key->len < entlen ? key->len : entlen; + int cmp = memcmp(key->str, ent->name, cmplen); + if (cmp) + return cmp; + return key->len - entlen; +} + /* * Return the entry with the given refname from the ref_dir * (non-recursively), sorting dir if necessary. Return NULL if no * such entry is found. dir must already be complete. */ -static struct ref_entry *search_ref_dir(struct ref_dir *dir, const char *refname) +static struct ref_entry *search_ref_dir(struct ref_dir *dir, + const char *refname, size_t len) { - struct ref_entry *e, **r; - int len; + struct ref_entry **r; + struct string_slice key; if (refname == NULL || !dir->nr) return NULL; sort_ref_dir(dir); - - len = strlen(refname) + 1; - e = xmalloc(sizeof(struct ref_entry) + len); - memcpy(e->name, refname, len); - - r = bsearch(&e, dir->entries, dir->nr, sizeof(*dir->entries), ref_entry_cmp); - - free(e); + key.len = len; + key.str = refname; + r = bsearch(&key, dir->entries, dir->nr, sizeof(*dir->entries), + ref_entry_cmp_sslice); if (r == NULL) return NULL; @@ -351,9 +377,10 @@ static struct ref_entry *search_ref_dir(struct ref_dir *dir, const char *refname * directory cannot be found. dir must already be complete. */ static struct ref_dir *search_for_subdir(struct ref_dir *dir, - const char *subdirname, int mkdir) + const char *subdirname, size_t len, + int mkdir) { - struct ref_entry *entry = search_ref_dir(dir, subdirname); + struct ref_entry *entry = search_ref_dir(dir, subdirname, len); if (!entry) { if (!mkdir) return NULL; @@ -363,7 +390,7 @@ static struct ref_dir *search_for_subdir(struct ref_dir *dir, * therefore, create an empty record for it but mark * the record complete. */ - entry = create_dir_entry(dir->ref_cache, subdirname, 0); + entry = create_dir_entry(dir->ref_cache, subdirname, len, 0); add_entry_to_dir(dir, entry); } return get_ref_dir(entry); @@ -381,15 +408,11 @@ static struct ref_dir *search_for_subdir(struct ref_dir *dir, static struct ref_dir *find_containing_dir(struct ref_dir *dir, const char *refname, int mkdir) { - struct strbuf dirname; const char *slash; - strbuf_init(&dirname, PATH_MAX); for (slash = strchr(refname, '/'); slash; slash = strchr(slash + 1, '/')) { + size_t dirnamelen = slash - refname + 1; struct ref_dir *subdir; - strbuf_add(&dirname, - refname + dirname.len, - (slash + 1) - (refname + dirname.len)); - subdir = search_for_subdir(dir, dirname.buf, mkdir); + subdir = search_for_subdir(dir, refname, dirnamelen, mkdir); if (!subdir) { dir = NULL; break; @@ -397,7 +420,6 @@ static struct ref_dir *find_containing_dir(struct ref_dir *dir, dir = subdir; } - strbuf_release(&dirname); return dir; } @@ -412,7 +434,7 @@ static struct ref_entry *find_ref(struct ref_dir *dir, const char *refname) dir = find_containing_dir(dir, refname, 0); if (!dir) return NULL; - entry = search_ref_dir(dir, refname); + entry = search_ref_dir(dir, refname, strlen(refname)); return (entry && !(entry->flag & REF_DIR)) ? entry : NULL; } @@ -822,7 +844,7 @@ static struct ref_dir *get_packed_refs(struct ref_cache *refs) const char *packed_refs_file; FILE *f; - refs->packed = create_dir_entry(refs, "", 0); + refs->packed = create_dir_entry(refs, "", 0, 0); if (*refs->name) packed_refs_file = git_path_submodule(refs->name, "packed-refs"); else @@ -887,7 +909,8 @@ static void read_loose_refs(const char *dirname, struct ref_dir *dir) } else if (S_ISDIR(st.st_mode)) { strbuf_addch(&refname, '/'); add_entry_to_dir(dir, - create_dir_entry(refs, refname.buf, 1)); + create_dir_entry(refs, refname.buf, + refname.len, 1)); } else { if (*refs->name) { hashclr(sha1); @@ -917,12 +940,12 @@ static struct ref_dir *get_loose_refs(struct ref_cache *refs) * are about to read the only subdirectory that can * hold references: */ - refs->loose = create_dir_entry(refs, "", 0); + refs->loose = create_dir_entry(refs, "", 0, 0); /* * Create an incomplete entry for "refs/": */ add_entry_to_dir(get_ref_dir(refs->loose), - create_dir_entry(refs, "refs/", 1)); + create_dir_entry(refs, "refs/", 5, 1)); } return get_ref_dir(refs->loose); } @@ -7,6 +7,7 @@ #include "dir.h" #include "tag.h" #include "string-list.h" +#include "mergesort.h" enum map_direction { FROM_SRC, FROM_DST }; @@ -918,6 +919,27 @@ void free_refs(struct ref *ref) } } +int ref_compare_name(const void *va, const void *vb) +{ + const struct ref *a = va, *b = vb; + return strcmp(a->name, b->name); +} + +static void *ref_list_get_next(const void *a) +{ + return ((const struct ref *)a)->next; +} + +static void ref_list_set_next(void *a, void *next) +{ + ((struct ref *)a)->next = next; +} + +void sort_ref_list(struct ref **l, int (*cmp)(const void *, const void *)) +{ + *l = llist_mergesort(*l, ref_list_get_next, ref_list_set_next, cmp); +} + static int count_refspec_match(const char *pattern, struct ref *refs, struct ref **matched_ref) @@ -72,6 +72,8 @@ extern const struct refspec *tag_refspec; struct ref *alloc_ref(const char *name); struct ref *copy_ref(const struct ref *ref); struct ref *copy_ref_list(const struct ref *ref); +void sort_ref_list(struct ref **, int (*cmp)(const void *, const void *)); +int ref_compare_name(const void *, const void *); int check_ref_type(const struct ref *ref, int flags); diff --git a/sha1_file.c b/sha1_file.c index 3c4f1652f1..4ccaf7ac19 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -229,7 +229,6 @@ char *sha1_pack_index_name(const unsigned char *sha1) struct alternate_object_database *alt_odb_list; static struct alternate_object_database **alt_odb_tail; -static void read_info_alternates(const char * alternates, int depth); static int git_open_noatime(const char *name); /* @@ -354,7 +353,7 @@ static void link_alt_odb_entries(const char *alt, const char *ep, int sep, } } -static void read_info_alternates(const char * relative_base, int depth) +void read_info_alternates(const char * relative_base, int depth) { char *map; size_t mapsz; diff --git a/streaming.c b/streaming.c index 3a3cd1206a..4d978e54e4 100644 --- a/streaming.c +++ b/streaming.c @@ -121,7 +121,7 @@ static enum input_source istream_source(const unsigned char *sha1, case OI_LOOSE: return loose; case OI_PACKED: - if (!oi->u.packed.is_delta && big_file_threshold <= size) + if (!oi->u.packed.is_delta && big_file_threshold < size) return pack_non_delta; /* fallthru */ default: diff --git a/submodule.c b/submodule.c index 784b58039d..959d349ea7 100644 --- a/submodule.c +++ b/submodule.c @@ -63,6 +63,9 @@ static int add_submodule_odb(const char *path) alt_odb->name[40] = '\0'; alt_odb->name[41] = '\0'; alt_odb_list = alt_odb; + + /* add possible alternates from the submodule */ + read_info_alternates(objects_directory.buf, 0); prepare_alt_odb(); done: strbuf_release(&objects_directory); diff --git a/t/Makefile b/t/Makefile index 6091211f10..88e289fc8b 100644 --- a/t/Makefile +++ b/t/Makefile @@ -28,7 +28,7 @@ test: pre-clean $(TEST_LINT) prove: pre-clean $(TEST_LINT) @echo "*** prove ***"; GIT_CONFIG=.git/config $(PROVE) --exec '$(SHELL_PATH_SQ)' $(GIT_PROVE_OPTS) $(T) :: $(GIT_TEST_OPTS) - $(MAKE) clean + $(MAKE) clean-except-prove-cache $(T): @echo "*** $@ ***"; GIT_CONFIG=.git/config '$(SHELL_PATH_SQ)' $@ $(GIT_TEST_OPTS) @@ -36,9 +36,11 @@ $(T): pre-clean: $(RM) -r test-results -clean: +clean-except-prove-cache: $(RM) -r 'trash directory'.* test-results $(RM) -r valgrind/bin + +clean: clean-except-prove-cache $(RM) .prove test-lint: test-lint-duplicates test-lint-executable diff --git a/t/perf/p5302-pack-index.sh b/t/perf/p5302-pack-index.sh new file mode 100755 index 0000000000..6cb5b0d55b --- /dev/null +++ b/t/perf/p5302-pack-index.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +test_description="Tests index-pack performance" + +. ./perf-lib.sh + +test_perf_large_repo + +test_expect_success 'repack' ' + git repack -ad && + PACK=`ls .git/objects/pack/*.pack | head -n1` && + test -f "$PACK" && + export PACK +' + +test_perf 'index-pack 0 threads' ' + GIT_DIR=t1 git index-pack --threads=1 --stdin < $PACK +' + +test_perf 'index-pack 1 thread ' ' + GIT_DIR=t2 GIT_FORCE_THREADS=1 git index-pack --threads=1 --stdin < $PACK +' + +test_perf 'index-pack 2 threads' ' + GIT_DIR=t3 git index-pack --threads=2 --stdin < $PACK +' + +test_perf 'index-pack 4 threads' ' + GIT_DIR=t4 git index-pack --threads=4 --stdin < $PACK +' + +test_perf 'index-pack 8 threads' ' + GIT_DIR=t5 git index-pack --threads=8 --stdin < $PACK +' + +test_perf 'index-pack default number of threads' ' + GIT_DIR=t6 git index-pack --stdin < $PACK +' + +test_done diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index 4983bd7775..025c1c610e 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh @@ -247,6 +247,7 @@ test_expect_success '-p handles "no changes" gracefully' ' ' test_expect_failure 'exchange two commits with -p' ' + git checkout H && FAKE_LINES="2 1" git rebase -i -p HEAD~2 && test H = $(git cat-file commit HEAD^ | sed -ne \$p) && test G = $(git cat-file commit HEAD | sed -ne \$p) diff --git a/t/t3411-rebase-preserve-around-merges.sh b/t/t3411-rebase-preserve-around-merges.sh index ace8e54e9b..dc81bf27eb 100755 --- a/t/t3411-rebase-preserve-around-merges.sh +++ b/t/t3411-rebase-preserve-around-merges.sh @@ -56,6 +56,7 @@ test_expect_success 'squash F1 into D1' ' # And rebase G1..M1 onto E2 test_expect_success 'rebase two levels of merge' ' + git checkout A1 && test_commit G1 && test_commit H1 && test_commit I1 && diff --git a/t/t4041-diff-submodule-option.sh b/t/t4041-diff-submodule-option.sh index bf9a7526bd..6c01d0c056 100755 --- a/t/t4041-diff-submodule-option.sh +++ b/t/t4041-diff-submodule-option.sh @@ -458,4 +458,38 @@ EOF test_cmp expected actual ' +test_expect_success 'diff --submodule with objects referenced by alternates' ' + mkdir sub_alt && + (cd sub_alt && + git init && + echo a >a && + git add a && + git commit -m a + ) && + mkdir super && + (cd super && + git clone -s ../sub_alt sub && + git init && + git add sub && + git commit -m "sub a" + ) && + (cd sub_alt && + sha1_before=$(git rev-parse --short HEAD) + echo b >b && + git add b && + git commit -m b + sha1_after=$(git rev-parse --short HEAD) + echo "Submodule sub $sha1_before..$sha1_after: + > b" >../expected + ) && + (cd super && + (cd sub && + git fetch && + git checkout origin/master + ) && + git diff --submodule > ../actual + ) + test_cmp expected actual +' + test_done diff --git a/t/t4053-diff-no-index.sh b/t/t4053-diff-no-index.sh new file mode 100755 index 0000000000..4dc8c67edc --- /dev/null +++ b/t/t4053-diff-no-index.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +test_description='diff --no-index' + +. ./test-lib.sh + +test_expect_success 'setup' ' + mkdir a && + mkdir b && + echo 1 >a/1 && + echo 2 >a/2 +' + +test_expect_success 'git diff --no-index directories' ' + git diff --no-index a b >cnt + test $? = 1 && test_line_count = 14 cnt +' + +test_done diff --git a/t/t6006-rev-list-format.sh b/t/t6006-rev-list-format.sh index a01d244502..f94f0c48e6 100755 --- a/t/t6006-rev-list-format.sh +++ b/t/t6006-rev-list-format.sh @@ -283,4 +283,11 @@ test_expect_success 'oneline with empty message' ' test_line_count = 5 testg.txt ' +test_expect_success 'single-character name is parsed correctly' ' + git commit --author="a <a@example.com>" --allow-empty -m foo && + echo "a <a@example.com>" >expect && + git log -1 --format="%an <%ae>" >actual && + test_cmp expect actual +' + test_done diff --git a/t/t7408-submodule-reference.sh b/t/t7408-submodule-reference.sh index a45fadc58e..b770b2f04d 100755 --- a/t/t7408-submodule-reference.sh +++ b/t/t7408-submodule-reference.sh @@ -28,7 +28,7 @@ git prune' cd "$base_dir" -test_expect_success 'preparing supermodule' \ +test_expect_success 'preparing superproject' \ 'test_create_repo super && cd super && echo file > file && git add file && @@ -55,7 +55,7 @@ diff expected current' cd "$base_dir" -test_expect_success 'cloning supermodule' \ +test_expect_success 'cloning superproject' \ 'git clone super super-clone' cd "$base_dir" diff --git a/t/t7810-grep.sh b/t/t7810-grep.sh index d9ad633310..24e9b1974d 100755 --- a/t/t7810-grep.sh +++ b/t/t7810-grep.sh @@ -351,6 +351,11 @@ test_expect_success 'grep -f, multiple patterns' ' test_cmp expected actual ' +test_expect_success 'grep, multiple patterns' ' + git grep "$(cat patterns)" >actual && + test_cmp expected actual +' + cat >expected <<EOF file:foo mmap bar file:foo_mmap bar diff --git a/t/t9300-fast-import.sh b/t/t9300-fast-import.sh index 7da0e8da7b..2aa1824a94 100755 --- a/t/t9300-fast-import.sh +++ b/t/t9300-fast-import.sh @@ -1657,7 +1657,7 @@ M 160000 :6 sub INPUT_END test_expect_success \ - 'P: supermodule & submodule mix' \ + 'P: superproject & submodule mix' \ 'git fast-import <input && git checkout subuse1 && rm -rf sub && mkdir sub && (cd sub && diff --git a/t/t9811-git-p4-label-import.sh b/t/t9811-git-p4-label-import.sh index fb00ffab24..095238fffe 100755 --- a/t/t9811-git-p4-label-import.sh +++ b/t/t9811-git-p4-label-import.sh @@ -195,6 +195,26 @@ test_expect_success 'tag that cannot be exported' ' ) ' +test_expect_success 'use git config to enable import/export of tags' ' + git p4 clone --verbose --dest="$git" //depot@all && + ( + cd "$git" && + git config git-p4.exportLabels true && + git config git-p4.importLabels true && + git tag CFG_A_GIT_TAG && + git p4 rebase --verbose && + git p4 submit --verbose && + git tag && + git tag | grep TAG_F1_1 + ) && + ( + cd "$cli" && + p4 labels && + p4 labels | grep CFG_A_GIT_TAG + ) +' + + test_expect_success 'kill p4d' ' kill_p4d ' diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index 5bda6b6e18..9a80c60945 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -63,7 +63,7 @@ run_completion () local _cword _words=( $1 ) (( _cword = ${#_words[@]} - 1 )) - _git && print_comp + __git_wrap_main_git && print_comp } test_completion () diff --git a/unpack-trees.c b/unpack-trees.c index bcee99c52e..ad40109432 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -1210,7 +1210,7 @@ static int verify_uptodate_1(struct cache_entry *ce, return 0; /* * NEEDSWORK: the current default policy is to allow - * submodule to be out of sync wrt the supermodule + * submodule to be out of sync wrt the superproject * index. This needs to be tightened later for * submodules that are marked to be automatically * checked out. diff --git a/xdiff-interface.c b/xdiff-interface.c index 0e2c169227..ecfa05f616 100644 --- a/xdiff-interface.c +++ b/xdiff-interface.c @@ -156,50 +156,6 @@ int xdi_diff_outf(mmfile_t *mf1, mmfile_t *mf2, return ret; } -struct xdiff_emit_hunk_state { - xdiff_emit_hunk_consume_fn consume; - void *consume_callback_data; -}; - -static int process_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb, - xdemitconf_t const *xecfg) -{ - long s1, s2, same, p_next, t_next; - xdchange_t *xch, *xche; - struct xdiff_emit_hunk_state *state = ecb->priv; - xdiff_emit_hunk_consume_fn fn = state->consume; - void *consume_callback_data = state->consume_callback_data; - - for (xch = xscr; xch; xch = xche->next) { - xche = xdl_get_hunk(xch, xecfg); - - s1 = XDL_MAX(xch->i1 - xecfg->ctxlen, 0); - s2 = XDL_MAX(xch->i2 - xecfg->ctxlen, 0); - same = s2 + XDL_MAX(xch->i1 - s1, 0); - p_next = xche->i1 + xche->chg1; - t_next = xche->i2 + xche->chg2; - - fn(consume_callback_data, same, p_next, t_next); - } - return 0; -} - -int xdi_diff_hunks(mmfile_t *mf1, mmfile_t *mf2, - xdiff_emit_hunk_consume_fn fn, void *consume_callback_data, - xpparam_t const *xpp, xdemitconf_t *xecfg) -{ - struct xdiff_emit_hunk_state state; - xdemitcb_t ecb; - - memset(&state, 0, sizeof(state)); - memset(&ecb, 0, sizeof(ecb)); - state.consume = fn; - state.consume_callback_data = consume_callback_data; - xecfg->emit_func = (void (*)())process_diff; - ecb.priv = &state; - return xdi_diff(mf1, mf2, xpp, xecfg, &ecb); -} - int read_mmfile(mmfile_t *ptr, const char *filename) { struct stat st; diff --git a/xdiff-interface.h b/xdiff-interface.h index 49d1116fc3..eff7762ee1 100644 --- a/xdiff-interface.h +++ b/xdiff-interface.h @@ -4,15 +4,11 @@ #include "xdiff/xdiff.h" typedef void (*xdiff_emit_consume_fn)(void *, char *, unsigned long); -typedef void (*xdiff_emit_hunk_consume_fn)(void *, long, long, long); int xdi_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp, xdemitconf_t const *xecfg, xdemitcb_t *ecb); int xdi_diff_outf(mmfile_t *mf1, mmfile_t *mf2, xdiff_emit_consume_fn fn, void *consume_callback_data, xpparam_t const *xpp, xdemitconf_t const *xecfg); -int xdi_diff_hunks(mmfile_t *mf1, mmfile_t *mf2, - xdiff_emit_hunk_consume_fn fn, void *consume_callback_data, - xpparam_t const *xpp, xdemitconf_t *xecfg); int parse_hunk_header(char *line, int len, int *ob, int *on, int *nb, int *nn); diff --git a/xdiff/xdiff.h b/xdiff/xdiff.h index 09215afe6e..219a3bbca6 100644 --- a/xdiff/xdiff.h +++ b/xdiff/xdiff.h @@ -86,13 +86,17 @@ typedef struct s_xdemitcb { typedef long (*find_func_t)(const char *line, long line_len, char *buffer, long buffer_size, void *priv); +typedef int (*xdl_emit_hunk_consume_func_t)(long start_a, long count_a, + long start_b, long count_b, + void *cb_data); + typedef struct s_xdemitconf { long ctxlen; long interhunkctxlen; unsigned long flags; find_func_t find_func; void *find_func_priv; - void (*emit_func)(); + xdl_emit_hunk_consume_func_t hunk_func; } xdemitconf_t; typedef struct s_bdiffparam { diff --git a/xdiff/xdiffi.c b/xdiff/xdiffi.c index bc889e8789..1b7012a119 100644 --- a/xdiff/xdiffi.c +++ b/xdiff/xdiffi.c @@ -538,13 +538,26 @@ void xdl_free_script(xdchange_t *xscr) { } } +static int xdl_call_hunk_func(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb, + xdemitconf_t const *xecfg) +{ + xdchange_t *xch, *xche; + + for (xch = xscr; xch; xch = xche->next) { + xche = xdl_get_hunk(xch, xecfg); + if (xecfg->hunk_func(xch->i1, xche->i1 + xche->chg1 - xch->i1, + xch->i2, xche->i2 + xche->chg2 - xch->i2, + ecb->priv) < 0) + return -1; + } + return 0; +} int xdl_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp, xdemitconf_t const *xecfg, xdemitcb_t *ecb) { xdchange_t *xscr; xdfenv_t xe; - emit_func_t ef = xecfg->emit_func ? - (emit_func_t)xecfg->emit_func : xdl_emit_diff; + emit_func_t ef = xecfg->hunk_func ? xdl_call_hunk_func : xdl_emit_diff; if (xdl_do_diff(mf1, mf2, xpp, &xe) < 0) { diff --git a/xdiff/xutils.c b/xdiff/xutils.c index 1b3b471ac8..9504eaecb8 100644 --- a/xdiff/xutils.c +++ b/xdiff/xutils.c @@ -122,35 +122,6 @@ void *xdl_cha_alloc(chastore_t *cha) { return data; } - -void *xdl_cha_first(chastore_t *cha) { - chanode_t *sncur; - - if (!(cha->sncur = sncur = cha->head)) - return NULL; - - cha->scurr = 0; - - return (char *) sncur + sizeof(chanode_t) + cha->scurr; -} - - -void *xdl_cha_next(chastore_t *cha) { - chanode_t *sncur; - - if (!(sncur = cha->sncur)) - return NULL; - cha->scurr += cha->isize; - if (cha->scurr == sncur->icurr) { - if (!(sncur = cha->sncur = sncur->next)) - return NULL; - cha->scurr = 0; - } - - return (char *) sncur + sizeof(chanode_t) + cha->scurr; -} - - long xdl_guess_lines(mmfile_t *mf, long sample) { long nl = 0, size, tsize = 0; char const *data, *cur, *top; @@ -280,9 +251,11 @@ static unsigned long xdl_hash_record_with_whitespace(char const **data, #ifdef XDL_FAST_HASH -#define ONEBYTES 0x0101010101010101ul -#define NEWLINEBYTES 0x0a0a0a0a0a0a0a0aul -#define HIGHBITS 0x8080808080808080ul +#define REPEAT_BYTE(x) ((~0ul / 0xff) * (x)) + +#define ONEBYTES REPEAT_BYTE(0x01) +#define NEWLINEBYTES REPEAT_BYTE(0x0a) +#define HIGHBITS REPEAT_BYTE(0x80) /* Return the high bit set in the first byte that is a zero */ static inline unsigned long has_zero(unsigned long a) @@ -299,21 +272,19 @@ static inline long count_masked_bytes(unsigned long mask) * that works for the bytemasks without having to * mask them first. */ - return mask * 0x0001020304050608 >> 56; - } else { /* - * Modified Carl Chatfield G+ version for 32-bit * + * return mask * 0x0001020304050608 >> 56; * - * (a) gives us - * -1 (0, ff), 0 (ffff) or 1 (ffffff) - * (b) gives us - * 0 for 0, 1 for (ff ffff ffffff) - * (a+b+1) gives us - * correct 0-3 bytemask count result + * Doing it like this avoids warnings on 32-bit machines. */ - long a = (mask - 256) >> 23; - long b = mask & 1; - return a + b + 1; + long a = (REPEAT_BYTE(0x01) / 0xff + 1); + return mask * a >> (sizeof(long) * 7); + } else { + /* Carl Chatfield / Jan Achrenius G+ version for 32-bit */ + /* (000000 0000ff 00ffff ffffff) -> ( 1 1 2 3 ) */ + long a = (0x0ff0001 + mask) >> 23; + /* Fix the 1 for 00 case */ + return a & mask; } } @@ -430,20 +401,6 @@ int xdl_num_out(char *out, long val) { return str - out; } - -long xdl_atol(char const *str, char const **next) { - long val, base; - char const *top; - - for (top = str; XDL_ISDIGIT(*top); top++); - if (next) - *next = top; - for (val = 0, base = 1, top--; top >= str; top--, base *= 10) - val += base * (long)(*top - '0'); - return val; -} - - int xdl_emit_hunk_hdr(long s1, long c1, long s2, long c2, const char *func, long funclen, xdemitcb_t *ecb) { int nb = 0; diff --git a/xdiff/xutils.h b/xdiff/xutils.h index 714719a89c..ad1428ed69 100644 --- a/xdiff/xutils.h +++ b/xdiff/xutils.h @@ -31,14 +31,11 @@ int xdl_emit_diffrec(char const *rec, long size, char const *pre, long psize, int xdl_cha_init(chastore_t *cha, long isize, long icount); void xdl_cha_free(chastore_t *cha); void *xdl_cha_alloc(chastore_t *cha); -void *xdl_cha_first(chastore_t *cha); -void *xdl_cha_next(chastore_t *cha); long xdl_guess_lines(mmfile_t *mf, long sample); int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags); unsigned long xdl_hash_record(char const **data, char const *top, long flags); unsigned int xdl_hashbits(unsigned int size); int xdl_num_out(char *out, long val); -long xdl_atol(char const *str, char const **next); int xdl_emit_hunk_hdr(long s1, long c1, long s2, long c2, const char *func, long funclen, xdemitcb_t *ecb); int xdl_fall_back_diff(xdfenv_t *diff_env, xpparam_t const *xpp, |