diff options
46 files changed, 4376 insertions, 2685 deletions
diff --git a/Documentation/RelNotes/2.10.0.txt b/Documentation/RelNotes/2.10.0.txt index 88d336ff16..c110091580 100644 --- a/Documentation/RelNotes/2.10.0.txt +++ b/Documentation/RelNotes/2.10.0.txt @@ -118,6 +118,15 @@ UI, Workflows & Features "git branch --delete/--move [--remote]". (merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint). + * "git rev-parse --git-path hooks/<hook>" learned to take + core.hooksPath configuration variable (introduced during 2.9 cycle) + into account. + (merge 9445b49 ab/hooks later to maint). + + * "git log --show-signature" and other commands that display the + verification status of PGP signature now shows the longer key-id, + as 32-bit key-id is so last century. + Performance, Internal Implementation, Development Support etc. @@ -170,7 +179,7 @@ Performance, Internal Implementation, Development Support etc. the standard output and the standard error of an external process, which is cumbersome to hand-roll correctly without deadlocking. - The codepath to sign data in a prepared buffer with GPG has been + * The codepath to sign data in a prepared buffer with GPG has been updated to use this API to read from the status-fd to check for errors (instead of relying on GPG's exit status). (merge efee955 jk/gpg-interface-cleanup later to maint). @@ -235,6 +244,17 @@ Performance, Internal Implementation, Development Support etc. * The API to iterate over all the refs (i.e. for_each_ref(), etc.) has been revamped. + * The handling of the "text=auto" attribute has been corrected. + $ echo "* text=auto eol=crlf" >.gitattributes + used to have the same effect as + $ echo "* text eol=crlf" >.gitattributes + i.e. declaring all files are text (ignoring "auto"). The + combination has been fixed to be equivalent to doing + $ git config core.autocrlf true + + * Documentation has been updated to show better example usage + of the updated "text=auto" attribute. + * A few tests that specifically target "git rebase -i" have been added. @@ -288,6 +308,13 @@ Performance, Internal Implementation, Development Support etc. compared only for changes that touch the same set of paths. (merge b3dfeeb kw/patch-ids-optim later to maint). + * A handful of tests that were broken under gettext-poison build have + been fixed. + + * The recent i18n patch we added during this cycle did a bit too much + refactoring of the messages to avoid word-legos; the repetition has + been reduced to help translators. + Also contains various documentation updates and code clean-ups. @@ -543,7 +570,7 @@ notes for details). caused tests in t7063 to fail because it wanted to verify the behaviour of the fast-path. - * Squelch compiler warnings for netmalloc (in compat/) library. + * Squelch compiler warnings for nedmalloc (in compat/) library. * A small memory leak in the command line parsing of "git blame" has been plugged. @@ -582,7 +609,62 @@ notes for details). that strips the trailing slash of '/'. (merge 189d035 js/mv-dir-to-new-directory later to maint). + * The "t/" hierarchy is prone to get an unusual pathname; "make test" + has been taught to make sure they do not contain paths that cannot + be checked out on Windows (and the mechanism can be reusable to + catch pathnames that are not portable to other platforms as need + arises). + (merge c2cafd3 js/test-lint-pathname later to maint). + + * When "git merge-recursive" works on history with many criss-cross + merges in "verbose" mode, the names the command assigns to the + virtual merge bases could have overwritten each other by unintended + reuse of the same piece of memory. + (merge 5447a76 rs/pull-signed-tag later to maint). + + * "git checkout --detach <branch>" used to give the same advice + message as that is issued when "git checkout <tag>" (or anything + that is not a branch name) is given, but asking with "--detach" is + an explicit enough sign that the user knows what is going on. The + advice message has been squelched in this case. + (merge 779b88a sb/checkout-explit-detach-no-advice later to maint). + + * "git difftool" by default ignores the error exit from the backend + commands it spawns, because often they signal that they found + differences by exiting with a non-zero status code just like "diff" + does; the exit status codes 126 and above however are special in + that they are used to signal that the command is not executable, + does not exist, or killed by a signal. "git difftool" has been + taught to notice these exit status codes. + (merge 45a4f5d jk/difftool-command-not-found later to maint). + + * On Windows, help.browser configuration variable used to be ignored, + which has been corrected. + (merge 6db5967 js/no-html-bypass-on-windows later to maint). + + * The "git -c var[=val] cmd" facility to append a configuration + variable definition at the end of the search order was described in + git(1) manual page, but not in git-config(1), which was more likely + place for people to look for when they ask "can I make a one-shot + override, and if so how?" + (merge ae1f709 dg/document-git-c-in-git-config-doc later to maint). + + * The tempfile (hence its user lockfile) API lets the caller to open + a file descriptor to a temporary file, write into it and then + finalize it by first closing the filehandle and then either + removing or renaming the temporary file. When the process spawns a + subprocess after obtaining the file descriptor, and if the + subprocess has not exited when the attempt to remove or rename is + made, the last step fails on Windows, because the subprocess has + the file descriptor still open. Open tempfile with O_CLOEXEC flag + to avoid this (on Windows, this is mapped to O_NOINHERIT). + (merge 05d1ed6 bw/mingw-avoid-inheriting-fd-to-lockfile later to maint). + * Other minor clean-ups and documentation updates (merge 02a8cfa rs/merge-add-strategies-simplification later to maint). (merge af4941d rs/merge-recursive-string-list-init later to maint). (merge 1eb47f1 rs/use-strbuf-add-unique-abbrev later to maint). + (merge ddd0bfa jk/tighten-alloc later to maint). + (merge ecf30b2 rs/mailinfo-lib later to maint). + (merge 0eb75ce sg/reflog-past-root later to maint). + (merge 175d38c hv/doc-commit-reference-style later to maint). diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index e8ad978824..500230c054 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches @@ -121,6 +121,11 @@ its behaviour. Try to make sure your explanation can be understood without external resources. Instead of giving a URL to a mailing list archive, summarize the relevant points of the discussion. +If you want to reference a previous commit in the history of a stable +branch use the format "abbreviated sha1 (subject, date)". So for example +like this: "Commit f86a374 (pack-bitmap.c: fix a memleak, 2015-03-30) +noticed [...]". + (3) Generate your patch using Git tools out of your commits. diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt index f163113a6f..83f86b9231 100644 --- a/Documentation/git-config.txt +++ b/Documentation/git-config.txt @@ -263,6 +263,9 @@ The files are read in the order given above, with last value found taking precedence over values read earlier. When multiple values are taken then all values of a key from all files will be used. +You may override individual configuration parameters when running any git +command by using the `-c` option. See linkgit:git[1] for details. + All writing options will per default write to the repository specific configuration file. Note that this also affects options like `--replace-all` and `--unset`. *'git config' will only ever change one file at a time*. diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt index 078b556665..0d933ac355 100644 --- a/Documentation/git-ls-files.txt +++ b/Documentation/git-ls-files.txt @@ -159,8 +159,7 @@ not accessible in the working tree. + <eolattr> is the attribute that is used when checking out or committing, it is either "", "-text", "text", "text=auto", "text eol=lf", "text eol=crlf". -Note: Currently Git does not support "text=auto eol=lf" or "text=auto eol=crlf", -that may change in the future. +Since Git 2.10 "text=auto eol=lf" and "text=auto eol=crlf" are supported. + Both the <eolinfo> in the index ("i/<eolinfo>") and in the working tree ("w/<eolinfo>") are shown for regular files, diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt index 807577a59f..7aff940202 100644 --- a/Documentation/gitattributes.txt +++ b/Documentation/gitattributes.txt @@ -182,23 +182,6 @@ While Git normally leaves file contents alone, it can be configured to normalize line endings to LF in the repository and, optionally, to convert them to CRLF when files are checked out. -Here is an example that will make Git normalize .txt, .vcproj and .sh -files, ensure that .vcproj files have CRLF and .sh files have LF in -the working directory, and prevent .jpg files from being normalized -regardless of their content. - ------------------------- -* text=auto -*.txt text -*.vcproj text eol=crlf -*.sh text eol=lf -*.jpg -text ------------------------- - -Other source code management systems normalize all text files in their -repositories, and there are two ways to enable similar automatic -normalization in Git. - If you simply want to have CRLF line endings in your working directory regardless of the repository you are working with, you can set the config variable "core.autocrlf" without using any attributes. @@ -208,35 +191,42 @@ config variable "core.autocrlf" without using any attributes. autocrlf = true ------------------------ -This does not force normalization of all text files, but does ensure +This does not force normalization of text files, but does ensure that text files that you introduce to the repository have their line endings normalized to LF when they are added, and that files that are already normalized in the repository stay normalized. -If you want to interoperate with a source code management system that -enforces end-of-line normalization, or you simply want all text files -in your repository to be normalized, you should instead set the `text` -attribute to "auto" for _all_ files. +If you want to ensure that text files that any contributor introduces to +the repository have their line endings normalized, you can set the +`text` attribute to "auto" for _all_ files. ------------------------ * text=auto ------------------------ -This ensures that all files that Git considers to be text will have -normalized (LF) line endings in the repository. The `core.eol` -configuration variable controls which line endings Git will use for -normalized files in your working directory; the default is to use the -native line ending for your platform, or CRLF if `core.autocrlf` is -set. +The attributes allow a fine-grained control, how the line endings +are converted. +Here is an example that will make Git normalize .txt, .vcproj and .sh +files, ensure that .vcproj files have CRLF and .sh files have LF in +the working directory, and prevent .jpg files from being normalized +regardless of their content. + +------------------------ +* text=auto +*.txt text +*.vcproj text eol=crlf +*.sh text eol=lf +*.jpg -text +------------------------ + +NOTE: When `text=auto` conversion is enabled in a cross-platform +project using push and pull to a central repository the text files +containing CRLFs should be normalized. -NOTE: When `text=auto` normalization is enabled in an existing -repository, any text files containing CRLFs should be normalized. If -they are not they will be normalized the next time someone tries to -change them, causing unfortunate misattribution. From a clean working -directory: +From a clean working directory: ------------------------------------------------- -$ echo "* text=auto" >>.gitattributes +$ echo "* text=auto" >.gitattributes $ rm .git/index # Remove the index to force Git to $ git reset # re-scan the working directory $ git status # Show files that will be normalized diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index eea85c3404..1ca5c0e366 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v2.10.0-rc0 +DEF_VER=v2.10.0-rc2 LF=' ' diff --git a/builtin/checkout.c b/builtin/checkout.c index 4866111522..8672d0724f 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -658,7 +658,8 @@ static void update_refs_for_switch(const struct checkout_opts *opts, update_ref(msg.buf, "HEAD", new->commit->object.oid.hash, NULL, REF_NODEREF, UPDATE_REFS_DIE_ON_ERR); if (!opts->quiet) { - if (old->path && advice_detached_head) + if (old->path && + advice_detached_head && !opts->force_detach) detach_advice(new->name); describe_detached_head(_("HEAD is now at"), new->commit); } diff --git a/builtin/help.c b/builtin/help.c index 88480131cf..e8f79d7af5 100644 --- a/builtin/help.c +++ b/builtin/help.c @@ -379,17 +379,10 @@ static void get_html_page_path(struct strbuf *page_path, const char *page) free(to_free); } -/* - * If open_html is not defined in a platform-specific way (see for - * example compat/mingw.h), we use the script web--browse to display - * HTML. - */ -#ifndef open_html static void open_html(const char *path) { execl_git_cmd("web--browse", "-c", "help.browser", path, (char *)NULL); } -#endif static void show_html_page(const char *git_cmd) { diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 92e1213ecc..011db00d31 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -1478,11 +1478,9 @@ static struct command **queue_command(struct command **tail, refname = line + 82; reflen = linelen - 82; - cmd = xcalloc(1, st_add3(sizeof(struct command), reflen, 1)); + FLEX_ALLOC_MEM(cmd, ref_name, refname, reflen); hashcpy(cmd->old_sha1, old_sha1); hashcpy(cmd->new_sha1, new_sha1); - memcpy(cmd->ref_name, refname, reflen); - cmd->ref_name[reflen] = '\0'; *tail = cmd; return &cmd->next; } @@ -1576,6 +1576,15 @@ int commit_tree_extended(const char *msg, size_t msg_len, return result; } +void set_merge_remote_desc(struct commit *commit, + const char *name, struct object *obj) +{ + struct merge_remote_desc *desc; + FLEX_ALLOC_STR(desc, name, name); + desc->obj = obj; + commit->util = desc; +} + struct commit *get_merge_parent(const char *name) { struct object *obj; @@ -1585,13 +1594,8 @@ struct commit *get_merge_parent(const char *name) return NULL; obj = parse_object(oid.hash); commit = (struct commit *)peel_to_type(name, 0, obj, OBJ_COMMIT); - if (commit && !commit->util) { - struct merge_remote_desc *desc; - desc = xmalloc(sizeof(*desc)); - desc->obj = obj; - desc->name = strdup(name); - commit->util = desc; - } + if (commit && !commit->util) + set_merge_remote_desc(commit, name, obj); return commit; } @@ -362,9 +362,11 @@ extern void for_each_mergetag(each_mergetag_fn fn, struct commit *commit, void * struct merge_remote_desc { struct object *obj; /* the named object, could be a tag */ - const char *name; + char name[FLEX_ARRAY]; }; #define merge_remote_util(commit) ((struct merge_remote_desc *)((commit)->util)) +extern void set_merge_remote_desc(struct commit *commit, + const char *name, struct object *obj); /* * Given "name" from the command line to merge, find the commit object diff --git a/compat/mingw.c b/compat/mingw.c index 2b5467dead..3fbfda5978 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -1930,48 +1930,6 @@ int mingw_raise(int sig) } } - -static const char *make_backslash_path(const char *path) -{ - static char buf[PATH_MAX + 1]; - char *c; - - if (strlcpy(buf, path, PATH_MAX) >= PATH_MAX) - die("Too long path: %.*s", 60, path); - - for (c = buf; *c; c++) { - if (*c == '/') - *c = '\\'; - } - return buf; -} - -void mingw_open_html(const char *unixpath) -{ - const char *htmlpath = make_backslash_path(unixpath); - typedef HINSTANCE (WINAPI *T)(HWND, const char *, - const char *, const char *, const char *, INT); - T ShellExecute; - HMODULE shell32; - int r; - - shell32 = LoadLibrary("shell32.dll"); - if (!shell32) - die("cannot load shell32.dll"); - ShellExecute = (T)GetProcAddress(shell32, "ShellExecuteA"); - if (!ShellExecute) - die("cannot run browser"); - - printf("Launching default browser to display HTML ...\n"); - r = HCAST(int, ShellExecute(NULL, "open", htmlpath, - NULL, "\\", SW_SHOWNORMAL)); - FreeLibrary(shell32); - /* see the MSDN documentation referring to the result codes here */ - if (r <= 32) { - die("failed to launch browser for %.*s", MAX_PATH, unixpath); - } -} - int link(const char *oldpath, const char *newpath) { typedef BOOL (WINAPI *T)(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); diff --git a/compat/mingw.h b/compat/mingw.h index 95e128fcfd..034fff9479 100644 --- a/compat/mingw.h +++ b/compat/mingw.h @@ -67,6 +67,10 @@ typedef int pid_t; #define F_SETFD 2 #define FD_CLOEXEC 0x1 +#if !defined O_CLOEXEC && defined O_NOINHERIT +#define O_CLOEXEC O_NOINHERIT +#endif + #ifndef EAFNOSUPPORT #define EAFNOSUPPORT WSAEAFNOSUPPORT #endif @@ -417,9 +421,6 @@ int mingw_offset_1st_component(const char *path); #include <inttypes.h> #endif -void mingw_open_html(const char *path); -#define open_html mingw_open_html - /** * Converts UTF-8 encoded string to UTF-16LE. * @@ -652,46 +652,34 @@ int git_parse_ulong(const char *value, unsigned long *ret) NORETURN static void die_bad_number(const char *name, const char *value) { + const char * error_type = (errno == ERANGE)? _("out of range"):_("invalid unit"); + if (!value) value = ""; if (!(cf && cf->name)) - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s': out of range") - : _("bad numeric config value '%s' for '%s': invalid unit"), - value, name); + die(_("bad numeric config value '%s' for '%s': %s"), + value, name, error_type); switch (cf->origin_type) { case CONFIG_ORIGIN_BLOB: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in blob %s: out of range") - : _("bad numeric config value '%s' for '%s' in blob %s: invalid unit"), - value, name, cf->name); + die(_("bad numeric config value '%s' for '%s' in blob %s: %s"), + value, name, cf->name, error_type); case CONFIG_ORIGIN_FILE: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in file %s: out of range") - : _("bad numeric config value '%s' for '%s' in file %s: invalid unit"), - value, name, cf->name); + die(_("bad numeric config value '%s' for '%s' in file %s: %s"), + value, name, cf->name, error_type); case CONFIG_ORIGIN_STDIN: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in standard input: out of range") - : _("bad numeric config value '%s' for '%s' in standard input: invalid unit"), - value, name); + die(_("bad numeric config value '%s' for '%s' in standard input: %s"), + value, name, error_type); case CONFIG_ORIGIN_SUBMODULE_BLOB: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in submodule-blob %s: out of range") - : _("bad numeric config value '%s' for '%s' in submodule-blob %s: invalid unit"), - value, name, cf->name); + die(_("bad numeric config value '%s' for '%s' in submodule-blob %s: %s"), + value, name, cf->name, error_type); case CONFIG_ORIGIN_CMDLINE: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in command line %s: out of range") - : _("bad numeric config value '%s' for '%s' in command line %s: invalid unit"), - value, name, cf->name); + die(_("bad numeric config value '%s' for '%s' in command line %s: %s"), + value, name, cf->name, error_type); default: - die(errno == ERANGE - ? _("bad numeric config value '%s' for '%s' in %s: out of range") - : _("bad numeric config value '%s' for '%s' in %s: invalid unit"), - value, name, cf->name); + die(_("bad numeric config value '%s' for '%s' in %s: %s"), + value, name, cf->name, error_type); } } diff --git a/contrib/hooks/multimail/CHANGES b/contrib/hooks/multimail/CHANGES index 100cc7a6d3..2076cf972b 100644 --- a/contrib/hooks/multimail/CHANGES +++ b/contrib/hooks/multimail/CHANGES @@ -1,3 +1,62 @@ +Release 1.4.0 +============= + +New features to troubleshoot a git-multimail installation +--------------------------------------------------------- + +* One can now perform a basic check of git-multimail's setup by + running the hook with the environment variable + GIT_MULTIMAIL_CHECK_SETUP set to a non-empty string. See + doc/troubleshooting.rst for details. + +* A new log files system was added. See the multimailhook.logFile, + multimailhook.errorLogFile and multimailhook.debugLogFile variables. + +* git_multimail.py can now be made more verbose using + multimailhook.verbose. + +* A new option --check-ref-filter is now available to help debugging + the refFilter* options. + +Formatting emails +----------------- + +* Formatting of emails was made slightly more compact, to reduce the + odds of having long subject lines truncated or wrapped in short list + of commits. + +* multimailhook.emailPrefix may now use the '%(repo_shortname)s' + placeholder for the repository's short name. + +* A new option multimailhook.subjectMaxLength is available to truncate + overly long subject lines. + +Bug fixes and minor changes +--------------------------- + +* Options refFilterDoSendRegex and refFilterDontSendRegex were + essentially broken. They should work now. + +* The behavior when both refFilter{Do,Dont}SendRegex and + refFilter{Exclusion,Inclusion}Regex are set have been slightly + changed. Exclusion/Inclusion is now strictly stronger than + DoSend/DontSend. + +* The management of precedence when a setting can be computed in + multiple ways has been considerably refactored and modified. + multimailhook.from and multimailhook.reponame now have precedence + over the environment-specific settings ($GL_REPO/$GL_USER for + gitolite, --stash-user/repo for Stash, --submitter/--project for + Gerrit). + +* The coverage of the testsuite has been considerably improved. All + configuration variables now appear at least once in the testsuite. + +This version was tested with Python 2.6 to 3.5. It also mostly works +with Python 2.4, but there is one known breakage in the testsuite +related to non-ascii characters. It was tested with Git +1.7.10.406.gdc801, 1.8.5.6, 2.1.4, and 2.10.0.rc0.1.g07c9292. + Release 1.3.1 (bugfix-only release) =================================== diff --git a/contrib/hooks/multimail/CONTRIBUTING.rst b/contrib/hooks/multimail/CONTRIBUTING.rst index 530ecbfcf1..da65570e9b 100644 --- a/contrib/hooks/multimail/CONTRIBUTING.rst +++ b/contrib/hooks/multimail/CONTRIBUTING.rst @@ -4,8 +4,9 @@ Contributing git-multimail is an open-source project, built by volunteers. We would welcome your help! -The current maintainers are Michael Haggerty <mhagger@alum.mit.edu> -and Matthieu Moy <matthieu.moy@grenoble-inp.fr>. +The current maintainers are Matthieu Moy +<matthieu.moy@grenoble-inp.fr> and Michael Haggerty +<mhagger@alum.mit.edu>. Please note that although a copy of git-multimail is distributed in the "contrib" section of the main Git project, development takes place @@ -22,6 +23,10 @@ to the maintainers). Please sign off your patches as per the `Git project practice <https://github.com/git/git/blob/master/Documentation/SubmittingPatches#L234>`__. +Please vote for issues you would like to be addressed in priority +(click "add your reaction" and then the "+1" thumbs-up button on the +GitHub issue). + General discussion of git-multimail can take place on the main `Git mailing list`_. diff --git a/contrib/hooks/multimail/README b/contrib/hooks/multimail/README index 22a23cdb94..5105373aea 100644 --- a/contrib/hooks/multimail/README +++ b/contrib/hooks/multimail/README @@ -1,11 +1,11 @@ -git-multimail 1.3.1 -=================== +git-multimail version 1.4.0 +=========================== .. image:: https://travis-ci.org/git-multimail/git-multimail.svg?branch=master :target: https://travis-ci.org/git-multimail/git-multimail git-multimail is a tool for sending notification emails on pushes to a -Git repository. It includes a Python module called git_multimail.py, +Git repository. It includes a Python module called ``git_multimail.py``, which can either be used as a hook script directly or can be imported as a Python module into another script. @@ -93,20 +93,20 @@ Requirements Invocation ---------- -git_multimail.py is designed to be used as a ``post-receive`` hook in a +``git_multimail.py`` is designed to be used as a ``post-receive`` hook in a Git repository (see githooks(5)). Link or copy it to $GIT_DIR/hooks/post-receive within the repository for which email notifications are desired. Usually it should be installed on the central repository for a project, to which all commits are eventually pushed. -For use on pre-v1.5.1 Git servers, git_multimail.py can also work as +For use on pre-v1.5.1 Git servers, ``git_multimail.py`` can also work as an ``update`` hook, taking its arguments on the command line. To use this script in this manner, link or copy it to $GIT_DIR/hooks/update. Please note that the script is not completely reliable in this mode -[2]_. +[1]_. -Alternatively, git_multimail.py can be imported as a Python module +Alternatively, ``git_multimail.py`` can be imported as a Python module into your own Python post-receive script. This method is a bit more work, but allows the behavior of the hook to be customized using arbitrary Python code. For example, you can use a custom environment @@ -122,7 +122,7 @@ arbitrary Python code. For example, you can use a custom environment Or you can change how emails are sent by writing your own Mailer class. The ``post-receive`` script in this directory demonstrates how -to use git_multimail.py as a Python module. (If you make interesting +to use ``git_multimail.py`` as a Python module. (If you make interesting changes of this type, please consider sharing them with the community.) @@ -151,7 +151,10 @@ multimailhook.environment the repository name is derived from the repository's path. gitolite - the username of the pusher is read from $GL_USER, the repository + Environment to use when ``git-multimail`` is ran as a gitolite_ + hook. + + The username of the pusher is read from $GL_USER, the repository name is read from $GL_REPO, and the From: header value is optionally read from gitolite.conf (see multimailhook.from). @@ -444,7 +447,9 @@ multimailhook.emailPrefix email filtering (though filtering based on the X-Git-* email headers is probably more robust). Default is the short name of the repository in square brackets; e.g., ``[myrepo]``. Set this - value to the empty string to suppress the email prefix. + value to the empty string to suppress the email prefix. You may + use the placeholder ``%(repo_shortname)s`` for the short name of + the repository. multimailhook.emailMaxLines The maximum number of lines that should be included in the body of @@ -461,6 +466,17 @@ multimailhook.emailMaxLineLength lines, the diffs are probably unreadable anyway. To disable line truncation, set this option to 0. +multimailhook.subjectMaxLength + The maximum length of the subject line (i.e. the ``oneline`` field + in templates, not including the prefix). Lines longer than this + limit are truncated to this length with a trailing ``[...]`` added + to indicate the missing text. This option The default is to use + ``multimailhook.emailMaxLineLength``. This option avoids sending + emails with overly long subject lines, but should not be needed if + the commit messages follow the Git convention (one short subject + line, then a blank line, then the message body). To disable line + truncation, set this option to 0. + multimailhook.maxCommitEmails The maximum number of commit emails to send for a given change. When the number of patches is larger that this value, only the @@ -474,12 +490,15 @@ multimailhook.emailStrictUTF8 not valid UTF-8 are converted to the Unicode replacement character, U+FFFD. The default is `true`. + This option is ineffective with Python 3, where non-UTF-8 + characters are unconditionally replaced. + multimailhook.diffOpts Options passed to ``git diff-tree`` when generating the summary information for ReferenceChange emails. Default is ``--stat --summary --find-copies-harder``. Add -p to those options to include a unified diff of changes in addition to the usual summary - output. Shell quoting is allowed; see multimailhook.logOpts for + output. Shell quoting is allowed; see ``multimailhook.logOpts`` for details. multimailhook.graphOpts @@ -564,6 +583,8 @@ multimailhook.refFilterInclusionRegex, multimailhook.refFilterExclusionRegex, mu the user-interface is not stable yet (in particular, the option names may change). If you want to participate in stabilizing the feature, please contact the maintainers and/or send pull-requests. + If you are happy with the current shape of the feature, please + report it too. Regular expressions that can be used to limit refs for which email updates will be sent. It is an error to specify both an inclusion @@ -613,6 +634,32 @@ multimailhook.refFilterInclusionRegex, multimailhook.refFilterExclusionRegex, mu [multimailhook] refFilterExclusionRegex = ^refs/tags/|^refs/heads/master$ + ``refFilterInclusionRegex`` and ``refFilterExclusionRegex`` are + strictly stronger than ``refFilterDoSendRegex`` and + ``refFilterDontSendRegex``. In other words, adding a ref to a + DoSend/DontSend regex has no effect if it is already excluded by a + Exclusion/Inclusion regex. + +multimailhook.logFile, multimailhook.errorLogFile, multimailhook.debugLogFile + + When set, these variable designate path to files where + git-multimail will log some messages. Normal messages and error + messages are sent to ``logFile``, and error messages are also sent + to ``errorLogFile``. Debug messages and all other messages are + sent to ``debugLogFile``. The recommended way is to set only one + of these variables, but it is also possible to set several of them + (part of the information is then duplicated in several log files, + for example errors are duplicated to all log files). + + Relative path are relative to the Git repository where the push is + done. + +multimailhook.verbose + + Verbosity level of git-multimail on its standard output. By + default, show only error and info messages. If set to true, show + also debug messages. + Email filtering aids -------------------- @@ -628,8 +675,8 @@ Customizing email contents git-multimail mostly generates emails by expanding templates. The templates can be customized. To avoid the need to edit -git_multimail.py directly, the preferred way to change the templates -is to write a separate Python script that imports git_multimail.py as +``git_multimail.py`` directly, the preferred way to change the templates +is to write a separate Python script that imports ``git_multimail.py`` as a module, then replaces the templates in place. See the provided post-receive script for an example of how this is done. @@ -645,8 +692,8 @@ GenericEnvironment a stand-alone Git repository. GitoliteEnvironment - a Git repository that is managed by gitolite - [3]_. For such repositories, the identity of the pusher is read from + a Git repository that is managed by gitolite_. For such + repositories, the identity of the pusher is read from environment variable $GL_USER, the name of the repository is read from $GL_REPO (if it is not overridden by multimailhook.reponame), and the From: header value is optionally read from gitolite.conf @@ -662,7 +709,7 @@ option to the script. If you need to customize the script in ways that are not supported by the existing environments, you can define your own environment class class using arbitrary Python code. To do so, you need to import -git_multimail.py as a Python module, as demonstrated by the example +``git_multimail.py`` as a Python module, as demonstrated by the example post-receive script. Then implement your environment class; it should usually inherit from one of the existing Environment classes and possibly one or more of the EnvironmentMixin classes. Then set the @@ -690,9 +737,7 @@ contribute to git-multimail. Footnotes --------- -.. [1] http://www.python.org/dev/peps/pep-0394/ - -.. [2] Because of the way information is passed to update hooks, the +.. [1] Because of the way information is passed to update hooks, the script's method of determining whether a commit has already been seen does not work when it is used as an ``update`` script. In particular, no notification email will be generated for a @@ -700,4 +745,4 @@ Footnotes push. A workaround is to use --force-send to force sending the emails. -.. [3] https://github.com/sitaramc/gitolite +.. _gitolite: https://github.com/sitaramc/gitolite diff --git a/contrib/hooks/multimail/README.Git b/contrib/hooks/multimail/README.Git index 1210bde045..161b0230a0 100644 --- a/contrib/hooks/multimail/README.Git +++ b/contrib/hooks/multimail/README.Git @@ -6,10 +6,10 @@ website: https://github.com/git-multimail/git-multimail The version in this directory was obtained from the upstream project -on May 13 2016 and consists of the "git-multimail" subdirectory from +on August 17 2016 and consists of the "git-multimail" subdirectory from revision - 3ce5470d4abf7251604cbf64e73a962e1b617f5e refs/tags/1.3.1 + 07b1cb6bfd7be156c62e1afa17cae13b850a869f refs/tags/1.4.0 Please see the README file in this directory for information about how to report bugs or contribute to git-multimail. diff --git a/contrib/hooks/multimail/doc/troubleshooting.rst b/contrib/hooks/multimail/doc/troubleshooting.rst index d3f346f076..651b509ee6 100644 --- a/contrib/hooks/multimail/doc/troubleshooting.rst +++ b/contrib/hooks/multimail/doc/troubleshooting.rst @@ -1,6 +1,40 @@ Troubleshooting issues with git-multimail: a FAQ ================================================ +How to check that git-multimail is properly set up? +--------------------------------------------------- + +Since version 1.4.0, git-multimail allows a simple self-checking of +its configuration: run it with the environment variable +``GIT_MULTIMAIL_CHECK_SETUP`` set to a non-empty string. You should +get something like this:: + + $ GIT_MULTIMAIL_CHECK_SETUP=true /home/moy/dev/git-multimail/git-multimail/git_multimail.py + Environment values: + administrator : 'the administrator of this repository' + charset : 'utf-8' + emailprefix : '[git-multimail] ' + fqdn : 'anie' + projectdesc : 'UNNAMED PROJECT' + pusher : 'moy' + repo_path : '/home/moy/dev/git-multimail' + repo_shortname : 'git-multimail' + + Now, checking that git-multimail's standard input is properly set ... + Please type some text and then press Return + foo + You have just entered: + foo + git-multimail seems properly set up. + +If you forgot to set an important variable, you may get instead:: + + $ GIT_MULTIMAIL_CHECK_SETUP=true /home/moy/dev/git-multimail/git-multimail/git_multimail.py + No email recipients configured! + +Do not set ``$GIT_MULTIMAIL_CHECK_SETUP`` other than for testing your +configuration: it would disable the hook completely. + Git is not using the right address in the From/To/Reply-To field ---------------------------------------------------------------- diff --git a/contrib/hooks/multimail/git_multimail.py b/contrib/hooks/multimail/git_multimail.py index 54ab4a4942..c7f86403cf 100755 --- a/contrib/hooks/multimail/git_multimail.py +++ b/contrib/hooks/multimail/git_multimail.py @@ -1,8 +1,8 @@ #! /usr/bin/env python -__version__ = '1.3.1' +__version__ = '1.4.0' -# Copyright (c) 2015 Matthieu Moy and others +# Copyright (c) 2015-2016 Matthieu Moy and others # Copyright (c) 2012-2014 Michael Haggerty and others # Derived from contrib/hooks/post-receive-email, which is # Copyright (c) 2007 Andy Parkins @@ -56,6 +56,7 @@ import socket import subprocess import shlex import optparse +import logging import smtplib try: import ssl @@ -86,8 +87,8 @@ if PYTHON3: def str_to_bytes(s): return s.encode(ENCODING) - def bytes_to_str(s): - return s.decode(ENCODING) + def bytes_to_str(s, errors='strict'): + return s.decode(ENCODING, errors) unicode = str @@ -98,6 +99,15 @@ if PYTHON3: f.buffer.write(msg.encode(sys.getdefaultencoding())) except UnicodeEncodeError: f.buffer.write(msg.encode(ENCODING)) + + def read_line(f): + # Try reading with the default encoding. If it fails, + # try UTF-8. + out = f.buffer.readline() + try: + return out.decode(sys.getdefaultencoding()) + except UnicodeEncodeError: + return out.decode(ENCODING) else: def is_string(s): try: @@ -108,12 +118,15 @@ else: def str_to_bytes(s): return s - def bytes_to_str(s): + def bytes_to_str(s, errors='strict'): return s def write_str(f, msg): f.write(msg) + def read_line(f): + return f.readline() + def next(it): return it.next() @@ -213,8 +226,8 @@ reference pointing at a previous point in the repository history. \\ O -- O -- O (%(oldrev_short)s) -Any revisions marked "omits" are not gone; other references still -refer to them. Any revisions marked "discards" are gone forever. +Any revisions marked "omit" are not gone; other references still +refer to them. Any revisions marked "discard" are gone forever. """ @@ -233,8 +246,8 @@ You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. -Any revisions marked "omits" are not gone; other references still -refer to them. Any revisions marked "discards" are gone forever. +Any revisions marked "omit" are not gone; other references still +refer to them. Any revisions marked "discard" are gone forever. """ @@ -258,22 +271,22 @@ from the repository. NEW_REVISIONS_TEMPLATE = """\ The %(tot)s revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions -listed as "adds" were already present in the repository and have only +listed as "add" were already present in the repository and have only been added to this reference. """ TAG_CREATED_TEMPLATE = """\ - at %(newrev_short)-9s (%(newrev_type)s) + at %(newrev_short)-8s (%(newrev_type)s) """ TAG_UPDATED_TEMPLATE = """\ *** WARNING: tag %(short_refname)s was modified! *** - from %(oldrev_short)-9s (%(oldrev_type)s) - to %(newrev_short)-9s (%(newrev_type)s) + from %(oldrev_short)-8s (%(oldrev_type)s) + to %(newrev_short)-8s (%(newrev_type)s) """ @@ -286,7 +299,7 @@ TAG_DELETED_TEMPLATE = """\ # The template used in summary tables. It looks best if this uses the # same alignment as TAG_CREATED_TEMPLATE and TAG_UPDATED_TEMPLATE. BRIEF_SUMMARY_TEMPLATE = """\ -%(action)10s %(rev_short)-9s %(text)s +%(action)8s %(rev_short)-8s %(text)s """ @@ -434,11 +447,16 @@ def read_output(cmd, input=None, keepends=False, **kw): input = str_to_bytes(input) else: stdin = None + errors = 'strict' + if 'errors' in kw: + errors = kw['errors'] + del kw['errors'] p = subprocess.Popen( - cmd, stdin=stdin, stdout=subprocess.PIPE, stderr=subprocess.PIPE, **kw + tuple(str_to_bytes(w) for w in cmd), + stdin=stdin, stdout=subprocess.PIPE, stderr=subprocess.PIPE, **kw ) (out, err) = p.communicate(input) - out = bytes_to_str(out) + out = bytes_to_str(out, errors=errors) retcode = p.wait() if retcode: raise CommandError(cmd, retcode) @@ -1020,7 +1038,9 @@ class Change(object): for line in footer: yield line - def get_alt_fromaddr(self): + def get_specific_fromaddr(self): + """For kinds of Changes which specify it, return the kind-specific + From address to use.""" return None @@ -1045,7 +1065,7 @@ class Revision(Change): self.cc_recipients = ', '.join(to.strip() for to in self._cc_recipients()) if self.cc_recipients: self.environment.log_msg( - 'Add %s to CC for %s\n' % (self.cc_recipients, self.rev.sha1)) + 'Add %s to CC for %s' % (self.cc_recipients, self.rev.sha1)) def _cc_recipients(self): cc_recipients = [] @@ -1065,6 +1085,10 @@ class Revision(Change): ['log', '--format=%s', '--no-walk', self.rev.sha1] ) + max_subject_length = self.environment.get_max_subject_length() + if max_subject_length > 0 and len(oneline) > max_subject_length: + oneline = oneline[:max_subject_length - 6] + ' [...]' + values['rev'] = self.rev.sha1 values['rev_short'] = self.rev.short values['change_type'] = self.change_type @@ -1121,7 +1145,7 @@ class Revision(Change): for line in read_git_lines( ['log'] + self.environment.commitlogopts + ['-1', self.rev.sha1], keepends=True, - ): + errors='replace'): if line.startswith('Date: ') and self.environment.date_substitute: yield self.environment.date_substitute + line[len('Date: '):] else: @@ -1135,7 +1159,7 @@ class Revision(Change): self._contains_diff() return Change.generate_email(self, push, body_filter, extra_header_values) - def get_alt_fromaddr(self): + def get_specific_fromaddr(self): return self.environment.from_commit @@ -1193,7 +1217,7 @@ class ReferenceChange(Change): # Tracking branch: environment.log_warning( '*** Push-update of tracking branch %r\n' - '*** - incomplete email generated.\n' + '*** - incomplete email generated.' % (refname,) ) klass = OtherReferenceChange @@ -1201,7 +1225,7 @@ class ReferenceChange(Change): # Some other reference namespace: environment.log_warning( '*** Push-update of strange reference %r\n' - '*** - incomplete email generated.\n' + '*** - incomplete email generated.' % (refname,) ) klass = OtherReferenceChange @@ -1209,7 +1233,7 @@ class ReferenceChange(Change): # Anything else (is there anything else?) environment.log_warning( '*** Unknown type of update to %r (%s)\n' - '*** - incomplete email generated.\n' + '*** - incomplete email generated.' % (refname, rev.type,) ) klass = OtherReferenceChange @@ -1446,9 +1470,9 @@ class ReferenceChange(Change): if discards and adds: for (sha1, subject) in discards: if sha1 in discarded_commits: - action = 'discards' + action = 'discard' else: - action = 'omits' + action = 'omit' yield self.expand( BRIEF_SUMMARY_TEMPLATE, action=action, rev_short=sha1, text=subject, @@ -1457,7 +1481,7 @@ class ReferenceChange(Change): if sha1 in new_commits: action = 'new' else: - action = 'adds' + action = 'add' yield self.expand( BRIEF_SUMMARY_TEMPLATE, action=action, rev_short=sha1, text=subject, @@ -1469,9 +1493,9 @@ class ReferenceChange(Change): elif discards: for (sha1, subject) in discards: if sha1 in discarded_commits: - action = 'discards' + action = 'discard' else: - action = 'omits' + action = 'omit' yield self.expand( BRIEF_SUMMARY_TEMPLATE, action=action, rev_short=sha1, text=subject, @@ -1490,7 +1514,7 @@ class ReferenceChange(Change): if sha1 in new_commits: action = 'new' else: - action = 'adds' + action = 'add' yield self.expand( BRIEF_SUMMARY_TEMPLATE, action=action, rev_short=sha1, text=subject, @@ -1543,7 +1567,7 @@ class ReferenceChange(Change): for r in discarded_revisions: (sha1, subject) = r.rev.get_summary() yield r.expand( - BRIEF_SUMMARY_TEMPLATE, action='discards', text=subject, + BRIEF_SUMMARY_TEMPLATE, action='discard', text=subject, ) for line in self.generate_revision_change_graph(push): yield line @@ -1581,7 +1605,7 @@ class ReferenceChange(Change): ) yield '\n' - def get_alt_fromaddr(self): + def get_specific_fromaddr(self): return self.environment.from_refchange @@ -1791,13 +1815,13 @@ class AnnotatedTagChange(ReferenceChange): except CommandError: prevtag = None if prevtag: - yield ' replaces %s\n' % (prevtag,) + yield ' replaces %s\n' % (prevtag,) else: prevtag = None - yield ' length %s bytes\n' % (read_git_output(['cat-file', '-s', tagobject]),) + yield ' length %s bytes\n' % (read_git_output(['cat-file', '-s', tagobject]),) - yield ' tagged by %s\n' % (tagger,) - yield ' on %s\n' % (tagged,) + yield ' by %s\n' % (tagger,) + yield ' on %s\n' % (tagged,) yield '\n' # Show the content of the tag message; this might contain a @@ -1914,6 +1938,9 @@ class OtherReferenceChange(ReferenceChange): class Mailer(object): """An object that can send emails.""" + def __init__(self, environment): + self.environment = environment + def send(self, lines, to_addrs): """Send an email consisting of lines. @@ -1948,14 +1975,14 @@ class SendMailer(Mailer): 'Try setting multimailhook.sendmailCommand.' ) - def __init__(self, command=None, envelopesender=None): + def __init__(self, environment, command=None, envelopesender=None): """Construct a SendMailer instance. command should be the command and arguments used to invoke sendmail, as a list of strings. If an envelopesender is provided, it will also be passed to the command, via '-f envelopesender'.""" - + super(SendMailer, self).__init__(environment) if command: self.command = command[:] else: @@ -1968,7 +1995,7 @@ class SendMailer(Mailer): try: p = subprocess.Popen(self.command, stdin=subprocess.PIPE) except OSError: - sys.stderr.write( + self.environment.get_logger().error( '*** Cannot execute command: %s\n' % ' '.join(self.command) + '*** %s\n' % sys.exc_info()[1] + '*** Try setting multimailhook.mailer to "smtp"\n' + @@ -1979,15 +2006,16 @@ class SendMailer(Mailer): lines = (str_to_bytes(line) for line in lines) p.stdin.writelines(lines) except Exception: - sys.stderr.write( + self.environment.get_logger().error( '*** Error while generating commit email\n' '*** - mail sending aborted.\n' ) - try: + if hasattr(p, 'terminate'): # subprocess.terminate() is not available in Python 2.4 p.terminate() - except AttributeError: - pass + else: + import signal + os.kill(p.pid, signal.SIGTERM) raise else: p.stdin.close() @@ -1999,14 +2027,16 @@ class SendMailer(Mailer): class SMTPMailer(Mailer): """Send emails using Python's smtplib.""" - def __init__(self, envelopesender, smtpserver, + def __init__(self, environment, + envelopesender, smtpserver, smtpservertimeout=10.0, smtpserverdebuglevel=0, smtpencryption='none', smtpuser='', smtppass='', smtpcacerts='' ): + super(SMTPMailer, self).__init__(environment) if not envelopesender: - sys.stderr.write( + self.environment.get_logger().error( 'fatal: git_multimail: cannot use SMTPMailer without a sender address.\n' 'please set either multimailhook.envelopeSender or user.email\n' ) @@ -2041,7 +2071,7 @@ class SMTPMailer(Mailer): self.smtp = call(smtplib.SMTP_SSL, self.smtpserver, timeout=self.smtpservertimeout) elif self.security == 'tls': if 'ssl' not in sys.modules: - sys.stderr.write( + self.environment.get_logger().error( '*** Your Python version does not have the ssl library installed\n' '*** smtpEncryption=tls is not available.\n' '*** Either upgrade Python to 2.6 or later\n' @@ -2071,7 +2101,7 @@ class SMTPMailer(Mailer): self.smtp.sock, cert_reqs=ssl.CERT_NONE ) - sys.stderr.write( + self.environment.get_logger().error( '*** Warning, the server certificat is not verified (smtp) ***\n' '*** set the option smtpCACerts ***\n' ) @@ -2094,10 +2124,10 @@ class SMTPMailer(Mailer): % self.smtpserverdebuglevel) self.smtp.set_debuglevel(self.smtpserverdebuglevel) except Exception: - sys.stderr.write( + self.environment.get_logger().error( '*** Error establishing SMTP connection to %s ***\n' - % self.smtpserver) - sys.stderr.write('*** %s\n' % sys.exc_info()[1]) + '*** %s\n' + % (self.smtpserver, sys.exc_info()[1])) sys.exit(1) def __del__(self): @@ -2115,10 +2145,11 @@ class SMTPMailer(Mailer): to_addrs = [email for (name, email) in getaddresses([to_addrs])] self.smtp.sendmail(self.envelopesender, to_addrs, msg) except smtplib.SMTPResponseException: - sys.stderr.write('*** Error sending email ***\n') err = sys.exc_info()[1] - sys.stderr.write('*** Error %d: %s\n' % (err.smtp_code, - bytes_to_str(err.smtp_error))) + self.environment.get_logger().error( + '*** Error sending email ***\n' + '*** Error %d: %s\n' + % (err.smtp_code, bytes_to_str(err.smtp_error))) try: smtp = self.smtp # delete the field before quit() so that in case of @@ -2126,9 +2157,10 @@ class SMTPMailer(Mailer): del self.smtp smtp.quit() except: - sys.stderr.write('*** Error closing the SMTP connection ***\n') - sys.stderr.write('*** Exiting anyway ... ***\n') - sys.stderr.write('*** %s\n' % sys.exc_info()[1]) + self.environment.get_logger().error( + '*** Error closing the SMTP connection ***\n' + '*** Exiting anyway ... ***\n' + '*** %s\n' % sys.exc_info()[1]) sys.exit(1) @@ -2250,6 +2282,11 @@ class Environment(object): to send and when computing what commits are considered new to the repository. Default is "^refs/notes/". + get_max_subject_length() + + Return an int giving the maximal length for the subject + (git log --oneline). + They should also define the following attributes: announce_show_shortlog (bool) @@ -2324,6 +2361,15 @@ class Environment(object): multimailhook.fromRefchange and multimailhook.fromCommit by ConfigEnvironmentMixin. + log_file, error_log_file, debug_log_file (string) + + Name of a file to which logs should be sent. + + verbose (int) + + How verbose the system should be. + - 0 (default): show info, errors, ... + - 1 : show basic debug info """ REPO_NAME_RE = re.compile(r'^(?P<name>.+?)(?:\.git)$') @@ -2346,6 +2392,7 @@ class Environment(object): self.quiet = False self.stdout = False self.combine_when_single_commit = True + self.logger = None self.COMPUTED_KEYS = [ 'administrator', @@ -2360,6 +2407,12 @@ class Environment(object): self._values = None + def get_logger(self): + """Get (possibly creates) the logger associated to this environment.""" + if self.logger is None: + self.logger = Logger(self) + return self.logger + def get_repo_shortname(self): """Use the last part of the repo path, with ".git" stripped off if present.""" @@ -2467,6 +2520,11 @@ class Environment(object): # which we simply do not have right now. return "^refs/notes/" + def get_max_subject_length(self): + """Return the maximal subject line (git log --oneline) length. + Longer subject lines will be truncated.""" + raise NotImplementedError() + def filter_body(self, lines): """Filter the lines intended for an email body. @@ -2482,19 +2540,22 @@ class Environment(object): """Write the string msg on a log file or on stderr. Sends the text to stderr by default, override to change the behavior.""" - write_str(sys.stderr, msg) + self.get_logger().info(msg) def log_warning(self, msg): """Write the string msg on a log file or on stderr. Sends the text to stderr by default, override to change the behavior.""" - write_str(sys.stderr, msg) + self.get_logger().warning(msg) def log_error(self, msg): """Write the string msg on a log file or on stderr. Sends the text to stderr by default, override to change the behavior.""" - write_str(sys.stderr, msg) + self.get_logger().error(msg) + + def check(self): + pass class ConfigEnvironmentMixin(Environment): @@ -2613,6 +2674,14 @@ class ConfigOptionsEnvironmentMixin(ConfigEnvironmentMixin): if combine is not None: self.combine_when_single_commit = combine + self.log_file = config.get('logFile', default=None) + self.error_log_file = config.get('errorLogFile', default=None) + self.debug_log_file = config.get('debugLogFile', default=None) + if config.get_bool('Verbose', default=False): + self.verbose = 1 + else: + self.verbose = 0 + def get_administrator(self): return ( self.config.get('administrator') or @@ -2631,11 +2700,21 @@ class ConfigOptionsEnvironmentMixin(ConfigEnvironmentMixin): if emailprefix is not None: emailprefix = emailprefix.strip() if emailprefix: - return emailprefix + ' ' - else: - return '' + emailprefix += ' ' else: - return '[%s] ' % (self.get_repo_shortname(),) + emailprefix = '[%(repo_shortname)s] ' + short_name = self.get_repo_shortname() + try: + return emailprefix % {'repo_shortname': short_name} + except: + self.get_logger().error( + '*** Invalid multimailhook.emailPrefix: %s\n' % emailprefix + + '*** %s\n' % sys.exc_info()[1] + + "*** Only the '%(repo_shortname)s' placeholder is allowed\n" + ) + raise ConfigurationException( + '"%s" is not an allowed setting for emailPrefix' % emailprefix + ) def get_sender(self): return self.config.get('envelopesender') @@ -2656,9 +2735,9 @@ class ConfigOptionsEnvironmentMixin(ConfigEnvironmentMixin): def get_fromaddr(self, change=None): fromaddr = self.config.get('from') if change: - alt_fromaddr = change.get_alt_fromaddr() - if alt_fromaddr: - fromaddr = alt_fromaddr + specific_fromaddr = change.get_specific_fromaddr() + if specific_fromaddr: + fromaddr = specific_fromaddr if fromaddr: fromaddr = self.process_addr(fromaddr, change) if fromaddr: @@ -2684,7 +2763,7 @@ class ConfigOptionsEnvironmentMixin(ConfigEnvironmentMixin): class FilterLinesEnvironmentMixin(Environment): """Handle encoding and maximum line length of body lines. - emailmaxlinelength (int or None) + email_max_line_length (int or None) The maximum length of any single line in the email body. Longer lines are truncated at that length with ' [...]' @@ -2699,10 +2778,13 @@ class FilterLinesEnvironmentMixin(Environment): """ - def __init__(self, strict_utf8=True, emailmaxlinelength=500, **kw): + def __init__(self, strict_utf8=True, + email_max_line_length=500, max_subject_length=500, + **kw): super(FilterLinesEnvironmentMixin, self).__init__(**kw) self.__strict_utf8 = strict_utf8 - self.__emailmaxlinelength = emailmaxlinelength + self.__email_max_line_length = email_max_line_length + self.__max_subject_length = max_subject_length def filter_body(self, lines): lines = super(FilterLinesEnvironmentMixin, self).filter_body(lines) @@ -2711,15 +2793,18 @@ class FilterLinesEnvironmentMixin(Environment): lines = (line.decode(ENCODING, 'replace') for line in lines) # Limit the line length in Unicode-space to avoid # splitting characters: - if self.__emailmaxlinelength: - lines = limit_linelength(lines, self.__emailmaxlinelength) + if self.__email_max_line_length > 0: + lines = limit_linelength(lines, self.__email_max_line_length) if not PYTHON3: lines = (line.encode(ENCODING, 'replace') for line in lines) - elif self.__emailmaxlinelength: - lines = limit_linelength(lines, self.__emailmaxlinelength) + elif self.__email_max_line_length: + lines = limit_linelength(lines, self.__email_max_line_length) return lines + def get_max_subject_length(self): + return self.__max_subject_length + class ConfigFilterLinesEnvironmentMixin( ConfigEnvironmentMixin, @@ -2732,9 +2817,13 @@ class ConfigFilterLinesEnvironmentMixin( if strict_utf8 is not None: kw['strict_utf8'] = strict_utf8 - emailmaxlinelength = config.get('emailmaxlinelength') - if emailmaxlinelength is not None: - kw['emailmaxlinelength'] = int(emailmaxlinelength) + email_max_line_length = config.get('emailmaxlinelength') + if email_max_line_length is not None: + kw['email_max_line_length'] = int(email_max_line_length) + + max_subject_length = config.get('subjectMaxLength', default=email_max_line_length) + if max_subject_length is not None: + kw['max_subject_length'] = int(max_subject_length) super(ConfigFilterLinesEnvironmentMixin, self).__init__( config=config, **kw @@ -2750,7 +2839,7 @@ class MaxlinesEnvironmentMixin(Environment): def filter_body(self, lines): lines = super(MaxlinesEnvironmentMixin, self).filter_body(lines) - if self.__emailmaxlines: + if self.__emailmaxlines > 0: lines = limit_lines(lines, self.__emailmaxlines) return lines @@ -2843,25 +2932,64 @@ class StaticRecipientsEnvironmentMixin(Environment): # actual *contents* of the change being reported, we only # choose based on the *type* of the change. Therefore we can # compute them once and for all: - if not (refchange_recipients or - announce_recipients or - revision_recipients or - scancommitforcc): - raise ConfigurationException('No email recipients configured!') self.__refchange_recipients = refchange_recipients self.__announce_recipients = announce_recipients self.__revision_recipients = revision_recipients + def check(self): + if not (self.get_refchange_recipients(None) or + self.get_announce_recipients(None) or + self.get_revision_recipients(None) or + self.get_scancommitforcc()): + raise ConfigurationException('No email recipients configured!') + super(StaticRecipientsEnvironmentMixin, self).check() + def get_refchange_recipients(self, refchange): + if self.__refchange_recipients is None: + return super(StaticRecipientsEnvironmentMixin, + self).get_refchange_recipients(refchange) return self.__refchange_recipients def get_announce_recipients(self, annotated_tag_change): + if self.__announce_recipients is None: + return super(StaticRecipientsEnvironmentMixin, + self).get_refchange_recipients(annotated_tag_change) return self.__announce_recipients def get_revision_recipients(self, revision): + if self.__revision_recipients is None: + return super(StaticRecipientsEnvironmentMixin, + self).get_refchange_recipients(revision) return self.__revision_recipients +class CLIRecipientsEnvironmentMixin(Environment): + """Mixin storing recipients information comming from the + command-line.""" + + def __init__(self, cli_recipients=None, **kw): + super(CLIRecipientsEnvironmentMixin, self).__init__(**kw) + self.__cli_recipients = cli_recipients + + def get_refchange_recipients(self, refchange): + if self.__cli_recipients is None: + return super(CLIRecipientsEnvironmentMixin, + self).get_refchange_recipients(refchange) + return self.__cli_recipients + + def get_announce_recipients(self, annotated_tag_change): + if self.__cli_recipients is None: + return super(CLIRecipientsEnvironmentMixin, + self).get_announce_recipients(annotated_tag_change) + return self.__cli_recipients + + def get_revision_recipients(self, revision): + if self.__cli_recipients is None: + return super(CLIRecipientsEnvironmentMixin, + self).get_revision_recipients(revision) + return self.__cli_recipients + + class ConfigRecipientsEnvironmentMixin( ConfigEnvironmentMixin, StaticRecipientsEnvironmentMixin @@ -2935,24 +3063,20 @@ class StaticRefFilterEnvironmentMixin(Environment): if ref_filter_do_send_regex and ref_filter_dont_send_regex: raise ConfigurationException( "Cannot specify both a ref doSend and dontSend regex.") - if ref_filter_do_send_regex or ref_filter_dont_send_regex: - self.__is_do_send_filter = bool(ref_filter_do_send_regex) - if ref_filter_incl_regex: - ref_filter_send_regex = ref_filter_incl_regex - elif ref_filter_excl_regex: - ref_filter_send_regex = ref_filter_excl_regex - else: - ref_filter_send_regex = '.*' - self.__is_do_send_filter = True - try: - self.__send_compiled_regex = re.compile(ref_filter_send_regex) - except Exception: - raise ConfigurationException( - 'Invalid Ref Filter Regex "%s": %s' % - (ref_filter_send_regex, sys.exc_info()[1])) + self.__is_do_send_filter = bool(ref_filter_do_send_regex) + if ref_filter_do_send_regex: + ref_filter_send_regex = ref_filter_do_send_regex + elif ref_filter_dont_send_regex: + ref_filter_send_regex = ref_filter_dont_send_regex else: - self.__send_compiled_regex = self.__compiled_regex - self.__is_do_send_filter = self.__is_inclusion_filter + ref_filter_send_regex = '.*' + self.__is_do_send_filter = True + try: + self.__send_compiled_regex = re.compile(ref_filter_send_regex) + except Exception: + raise ConfigurationException( + 'Invalid Ref Filter Regex "%s": %s' % + (ref_filter_send_regex, sys.exc_info()[1])) def get_ref_filter_regex(self, send_filter=False): if send_filter: @@ -3023,34 +3147,21 @@ class GenericEnvironmentMixin(Environment): return self.osenv.get('USER', self.osenv.get('USERNAME', 'unknown user')) -class GenericEnvironment( - ProjectdescEnvironmentMixin, - ConfigMaxlinesEnvironmentMixin, - ComputeFQDNEnvironmentMixin, - ConfigFilterLinesEnvironmentMixin, - ConfigRecipientsEnvironmentMixin, - ConfigRefFilterEnvironmentMixin, - PusherDomainEnvironmentMixin, - ConfigOptionsEnvironmentMixin, - GenericEnvironmentMixin, - Environment, - ): - pass +class GitoliteEnvironmentHighPrecMixin(Environment): + def get_pusher(self): + return self.osenv.get('GL_USER', 'unknown user') -class GitoliteEnvironmentMixin(Environment): +class GitoliteEnvironmentLowPrecMixin(Environment): def get_repo_shortname(self): # The gitolite environment variable $GL_REPO is a pretty good # repo_shortname (though it's probably not as good as a value # the user might have explicitly put in his config). return ( self.osenv.get('GL_REPO', None) or - super(GitoliteEnvironmentMixin, self).get_repo_shortname() + super(GitoliteEnvironmentLowPrecMixin, self).get_repo_shortname() ) - def get_pusher(self): - return self.osenv.get('GL_USER', 'unknown user') - def get_fromaddr(self, change=None): GL_USER = self.osenv.get('GL_USER') if GL_USER is not None: @@ -3088,7 +3199,7 @@ class GitoliteEnvironmentMixin(Environment): return m.group(1) finally: f.close() - return super(GitoliteEnvironmentMixin, self).get_fromaddr(change) + return super(GitoliteEnvironmentLowPrecMixin, self).get_fromaddr(change) class IncrementalDateTime(object): @@ -3109,67 +3220,43 @@ class IncrementalDateTime(object): return formatted -class GitoliteEnvironment( - ProjectdescEnvironmentMixin, - ConfigMaxlinesEnvironmentMixin, - ComputeFQDNEnvironmentMixin, - ConfigFilterLinesEnvironmentMixin, - ConfigRecipientsEnvironmentMixin, - ConfigRefFilterEnvironmentMixin, - PusherDomainEnvironmentMixin, - ConfigOptionsEnvironmentMixin, - GitoliteEnvironmentMixin, - Environment, - ): - pass - - -class StashEnvironmentMixin(Environment): +class StashEnvironmentHighPrecMixin(Environment): def __init__(self, user=None, repo=None, **kw): - super(StashEnvironmentMixin, self).__init__(**kw) + super(StashEnvironmentHighPrecMixin, + self).__init__(user=user, repo=repo, **kw) self.__user = user self.__repo = repo - def get_repo_shortname(self): - return self.__repo - def get_pusher(self): return re.match('(.*?)\s*<', self.__user).group(1) def get_pusher_email(self): return self.__user - def get_fromaddr(self, change=None): - return self.__user +class StashEnvironmentLowPrecMixin(Environment): + def __init__(self, user=None, repo=None, **kw): + super(StashEnvironmentLowPrecMixin, self).__init__(**kw) + self.__repo = repo + self.__user = user -class StashEnvironment( - StashEnvironmentMixin, - ProjectdescEnvironmentMixin, - ConfigMaxlinesEnvironmentMixin, - ComputeFQDNEnvironmentMixin, - ConfigFilterLinesEnvironmentMixin, - ConfigRecipientsEnvironmentMixin, - ConfigRefFilterEnvironmentMixin, - PusherDomainEnvironmentMixin, - ConfigOptionsEnvironmentMixin, - Environment, - ): - pass + def get_repo_shortname(self): + return self.__repo + + def get_fromaddr(self, change=None): + return self.__user -class GerritEnvironmentMixin(Environment): +class GerritEnvironmentHighPrecMixin(Environment): def __init__(self, project=None, submitter=None, update_method=None, **kw): - super(GerritEnvironmentMixin, self).__init__(**kw) + super(GerritEnvironmentHighPrecMixin, + self).__init__(submitter=submitter, project=project, **kw) self.__project = project self.__submitter = submitter self.__update_method = update_method "Make an 'update_method' value available for templates." self.COMPUTED_KEYS += ['update_method'] - def get_repo_shortname(self): - return self.__project - def get_pusher(self): if self.__submitter: if self.__submitter.find('<') != -1: @@ -3192,16 +3279,10 @@ class GerritEnvironmentMixin(Environment): if self.__submitter: return self.__submitter else: - return super(GerritEnvironmentMixin, self).get_pusher_email() - - def get_fromaddr(self, change=None): - if self.__submitter and self.__submitter.find('<') != -1: - return self.__submitter - else: - return super(GerritEnvironmentMixin, self).get_fromaddr(change) + return super(GerritEnvironmentHighPrecMixin, self).get_pusher_email() def get_default_ref_ignore_regex(self): - default = super(GerritEnvironmentMixin, self).get_default_ref_ignore_regex() + default = super(GerritEnvironmentHighPrecMixin, self).get_default_ref_ignore_regex() return default + '|^refs/changes/|^refs/cache-automerge/|^refs/meta/' def get_revision_recipients(self, revision): @@ -3214,25 +3295,26 @@ class GerritEnvironmentMixin(Environment): if committer == 'Gerrit Code Review': return [] else: - return super(GerritEnvironmentMixin, self).get_revision_recipients(revision) + return super(GerritEnvironmentHighPrecMixin, self).get_revision_recipients(revision) def get_update_method(self): return self.__update_method -class GerritEnvironment( - GerritEnvironmentMixin, - ProjectdescEnvironmentMixin, - ConfigMaxlinesEnvironmentMixin, - ComputeFQDNEnvironmentMixin, - ConfigFilterLinesEnvironmentMixin, - ConfigRecipientsEnvironmentMixin, - ConfigRefFilterEnvironmentMixin, - PusherDomainEnvironmentMixin, - ConfigOptionsEnvironmentMixin, - Environment, - ): - pass +class GerritEnvironmentLowPrecMixin(Environment): + def __init__(self, project=None, submitter=None, **kw): + super(GerritEnvironmentLowPrecMixin, self).__init__(**kw) + self.__project = project + self.__submitter = submitter + + def get_repo_shortname(self): + return self.__project + + def get_fromaddr(self, change=None): + if self.__submitter and self.__submitter.find('<') != -1: + return self.__submitter + else: + return super(GerritEnvironmentLowPrecMixin, self).get_fromaddr(change) class Push(object): @@ -3498,13 +3580,13 @@ class Push(object): if not change.recipients: change.environment.log_warning( '*** no recipients configured so no email will be sent\n' - '*** for %r update %s->%s\n' + '*** for %r update %s->%s' % (change.refname, change.old.sha1, change.new.sha1,) ) else: if not change.environment.quiet: change.environment.log_msg( - 'Sending notification emails to: %s\n' % (change.recipients,)) + 'Sending notification emails to: %s' % (change.recipients,)) extra_values = {'send_date': next(send_date)} rev = change.send_single_combined_email(sha1s) @@ -3527,14 +3609,14 @@ class Push(object): change.environment.log_warning( '*** Too many new commits (%d), not sending commit emails.\n' % len(sha1s) + '*** Try setting multimailhook.maxCommitEmails to a greater value\n' + - '*** Currently, multimailhook.maxCommitEmails=%d\n' % max_emails + '*** Currently, multimailhook.maxCommitEmails=%d' % max_emails ) return for (num, sha1) in enumerate(sha1s): rev = Revision(change, GitObject(sha1), num=num + 1, tot=len(sha1s)) if not rev.recipients and rev.cc_recipients: - change.environment.log_msg('*** Replacing Cc: with To:\n') + change.environment.log_msg('*** Replacing Cc: with To:') rev.recipients = rev.cc_recipients rev.cc_recipients = None if rev.recipients: @@ -3548,7 +3630,7 @@ class Push(object): if unhandled_sha1s: change.environment.log_error( 'ERROR: No emails were sent for the following new commits:\n' - ' %s\n' + ' %s' % ('\n '.join(sorted(unhandled_sha1s)),) ) @@ -3562,12 +3644,23 @@ def include_ref(refname, ref_filter_regex, is_inclusion_filter): def run_as_post_receive_hook(environment, mailer): - ref_filter_regex, is_inclusion_filter = environment.get_ref_filter_regex(True) + environment.check() + send_filter_regex, send_is_inclusion_filter = environment.get_ref_filter_regex(True) + ref_filter_regex, is_inclusion_filter = environment.get_ref_filter_regex(False) changes = [] - for line in sys.stdin: + while True: + line = read_line(sys.stdin) + if line == '': + break (oldrev, newrev, refname) = line.strip().split(' ', 2) + environment.get_logger().debug( + "run_as_post_receive_hook: oldrev=%s, newrev=%s, refname=%s" % + (oldrev, newrev, refname)) + if not include_ref(refname, ref_filter_regex, is_inclusion_filter): continue + if not include_ref(refname, send_filter_regex, send_is_inclusion_filter): + continue changes.append( ReferenceChange.create(environment, oldrev, newrev, refname) ) @@ -3579,9 +3672,13 @@ def run_as_post_receive_hook(environment, mailer): def run_as_update_hook(environment, mailer, refname, oldrev, newrev, force_send=False): - ref_filter_regex, is_inclusion_filter = environment.get_ref_filter_regex(True) + environment.check() + send_filter_regex, send_is_inclusion_filter = environment.get_ref_filter_regex(True) + ref_filter_regex, is_inclusion_filter = environment.get_ref_filter_regex(False) if not include_ref(refname, ref_filter_regex, is_inclusion_filter): return + if not include_ref(refname, send_filter_regex, send_is_inclusion_filter): + return changes = [ ReferenceChange.create( environment, @@ -3596,6 +3693,75 @@ def run_as_update_hook(environment, mailer, refname, oldrev, newrev, force_send= mailer.__del__() +def check_ref_filter(environment): + send_filter_regex, send_is_inclusion = environment.get_ref_filter_regex(True) + ref_filter_regex, ref_is_inclusion = environment.get_ref_filter_regex(False) + + def inc_exc_lusion(b): + if b: + return 'inclusion' + else: + return 'exclusion' + + if send_filter_regex: + sys.stdout.write("DoSend/DontSend filter regex (" + + (inc_exc_lusion(send_is_inclusion)) + + '): ' + send_filter_regex.pattern + + '\n') + if send_filter_regex: + sys.stdout.write("Include/Exclude filter regex (" + + (inc_exc_lusion(ref_is_inclusion)) + + '): ' + ref_filter_regex.pattern + + '\n') + sys.stdout.write(os.linesep) + + sys.stdout.write( + "Refs marked as EXCLUDE are excluded by either refFilterInclusionRegex\n" + "or refFilterExclusionRegex. No emails will be sent for commits included\n" + "in these refs.\n" + "Refs marked as DONT-SEND are excluded by either refFilterDoSendRegex or\n" + "refFilterDontSendRegex, but not by either refFilterInclusionRegex or\n" + "refFilterExclusionRegex. Emails will be sent for commits included in these\n" + "refs only when the commit reaches a ref which isn't excluded.\n" + "Refs marked as DO-SEND are not excluded by any filter. Emails will\n" + "be sent normally for commits included in these refs.\n") + + sys.stdout.write(os.linesep) + + for refname in read_git_lines(['for-each-ref', '--format', '%(refname)']): + sys.stdout.write(refname) + if not include_ref(refname, ref_filter_regex, ref_is_inclusion): + sys.stdout.write(' EXCLUDE') + elif not include_ref(refname, send_filter_regex, send_is_inclusion): + sys.stdout.write(' DONT-SEND') + else: + sys.stdout.write(' DO-SEND') + + sys.stdout.write(os.linesep) + + +def show_env(environment, out): + out.write('Environment values:\n') + for (k, v) in sorted(environment.get_values().items()): + if k: # Don't show the {'' : ''} pair. + out.write(' %s : %r\n' % (k, v)) + out.write('\n') + # Flush to avoid interleaving with further log output + out.flush() + + +def check_setup(environment): + environment.check() + show_env(environment, sys.stdout) + sys.stdout.write("Now, checking that git-multimail's standard input " + "is properly set ..." + os.linesep) + sys.stdout.write("Please type some text and then press Return" + os.linesep) + stdin = sys.stdin.readline() + sys.stdout.write("You have just entered:" + os.linesep) + sys.stdout.write(stdin) + sys.stdout.write("git-multimail seems properly set up." + os.linesep) + + def choose_mailer(config, environment): mailer = config.get('mailer', default='sendmail') @@ -3608,6 +3774,7 @@ def choose_mailer(config, environment): smtppass = config.get('smtppass', default='') smtpcacerts = config.get('smtpcacerts', default='') mailer = SMTPMailer( + environment, envelopesender=(environment.get_sender() or environment.get_fromaddr()), smtpserver=smtpserver, smtpservertimeout=smtpservertimeout, smtpserverdebuglevel=smtpserverdebuglevel, @@ -3620,43 +3787,41 @@ def choose_mailer(config, environment): command = config.get('sendmailcommand') if command: command = shlex.split(command) - mailer = SendMailer(command=command, envelopesender=environment.get_sender()) + mailer = SendMailer(environment, + command=command, envelopesender=environment.get_sender()) else: environment.log_error( 'fatal: multimailhook.mailer is set to an incorrect value: "%s"\n' % mailer + - 'please use one of "smtp" or "sendmail".\n' + 'please use one of "smtp" or "sendmail".' ) sys.exit(1) return mailer KNOWN_ENVIRONMENTS = { - 'generic': GenericEnvironmentMixin, - 'gitolite': GitoliteEnvironmentMixin, - 'stash': StashEnvironmentMixin, - 'gerrit': GerritEnvironmentMixin, + 'generic': {'highprec': GenericEnvironmentMixin}, + 'gitolite': {'highprec': GitoliteEnvironmentHighPrecMixin, + 'lowprec': GitoliteEnvironmentLowPrecMixin}, + 'stash': {'highprec': StashEnvironmentHighPrecMixin, + 'lowprec': StashEnvironmentLowPrecMixin}, + 'gerrit': {'highprec': GerritEnvironmentHighPrecMixin, + 'lowprec': GerritEnvironmentLowPrecMixin}, } def choose_environment(config, osenv=None, env=None, recipients=None, hook_info=None): + env_name = choose_environment_name(config, env, osenv) + environment_klass = build_environment_klass(env_name) + env = build_environment(environment_klass, env_name, config, + osenv, recipients, hook_info) + return env + + +def choose_environment_name(config, env, osenv): if not osenv: osenv = os.environ - environment_mixins = [ - ConfigRefFilterEnvironmentMixin, - ProjectdescEnvironmentMixin, - ConfigMaxlinesEnvironmentMixin, - ComputeFQDNEnvironmentMixin, - ConfigFilterLinesEnvironmentMixin, - PusherDomainEnvironmentMixin, - ConfigOptionsEnvironmentMixin, - ] - environment_kw = { - 'osenv': osenv, - 'config': config, - } - if not env: env = config.get('environment') @@ -3665,8 +3830,58 @@ def choose_environment(config, osenv=None, env=None, recipients=None, env = 'gitolite' else: env = 'generic' + return env + + +COMMON_ENVIRONMENT_MIXINS = [ + ConfigRecipientsEnvironmentMixin, + CLIRecipientsEnvironmentMixin, + ConfigRefFilterEnvironmentMixin, + ProjectdescEnvironmentMixin, + ConfigMaxlinesEnvironmentMixin, + ComputeFQDNEnvironmentMixin, + ConfigFilterLinesEnvironmentMixin, + PusherDomainEnvironmentMixin, + ConfigOptionsEnvironmentMixin, + ] + + +def build_environment_klass(env_name): + if 'class' in KNOWN_ENVIRONMENTS[env_name]: + return KNOWN_ENVIRONMENTS[env_name]['class'] + + environment_mixins = [] + known_env = KNOWN_ENVIRONMENTS[env_name] + if 'highprec' in known_env: + high_prec_mixin = known_env['highprec'] + environment_mixins.append(high_prec_mixin) + environment_mixins = environment_mixins + COMMON_ENVIRONMENT_MIXINS + if 'lowprec' in known_env: + low_prec_mixin = known_env['lowprec'] + environment_mixins.append(low_prec_mixin) + environment_mixins.append(Environment) + klass_name = env_name.capitalize() + 'Environement' + environment_klass = type( + klass_name, + tuple(environment_mixins), + {}, + ) + KNOWN_ENVIRONMENTS[env_name]['class'] = environment_klass + return environment_klass + - environment_mixins.insert(0, KNOWN_ENVIRONMENTS[env]) +GerritEnvironment = build_environment_klass('gerrit') +StashEnvironment = build_environment_klass('stash') +GitoliteEnvironment = build_environment_klass('gitolite') +GenericEnvironment = build_environment_klass('generic') + + +def build_environment(environment_klass, env, config, + osenv, recipients, hook_info): + environment_kw = { + 'osenv': osenv, + 'config': config, + } if env == 'stash': environment_kw['user'] = hook_info['stash_user'] @@ -3676,20 +3891,8 @@ def choose_environment(config, osenv=None, env=None, recipients=None, environment_kw['submitter'] = hook_info['submitter'] environment_kw['update_method'] = hook_info['update_method'] - if recipients: - environment_mixins.insert(0, StaticRecipientsEnvironmentMixin) - environment_kw['refchange_recipients'] = recipients - environment_kw['announce_recipients'] = recipients - environment_kw['revision_recipients'] = recipients - environment_kw['scancommitforcc'] = config.get('scancommitforcc') - else: - environment_mixins.insert(0, ConfigRecipientsEnvironmentMixin) + environment_kw['cli_recipients'] = recipients - environment_klass = type( - 'EffectiveEnvironment', - tuple(environment_mixins) + (Environment,), - {}, - ) return environment_klass(**environment_kw) @@ -3710,7 +3913,8 @@ def get_version(): return __version__ -def compute_gerrit_options(options, args, required_gerrit_options): +def compute_gerrit_options(options, args, required_gerrit_options, + raw_refname): if None in required_gerrit_options: raise SystemExit("Error: Specify all of --oldrev, --newrev, --refname, " "and --project; or none of them.") @@ -3727,24 +3931,11 @@ def compute_gerrit_options(options, args, required_gerrit_options): # Gerrit oddly omits 'refs/heads/' in the refname when calling # ref-updated hook; put it back. git_dir = get_git_dir() - if (not os.path.exists(os.path.join(git_dir, options.refname)) and + if (not os.path.exists(os.path.join(git_dir, raw_refname)) and os.path.exists(os.path.join(git_dir, 'refs', 'heads', - options.refname))): + raw_refname))): options.refname = 'refs/heads/' + options.refname - # Convert each string option unicode for Python3. - if PYTHON3: - opts = ['environment', 'recipients', 'oldrev', 'newrev', 'refname', - 'project', 'submitter', 'stash-user', 'stash-repo'] - for opt in opts: - if not hasattr(options, opt): - continue - obj = getattr(options, opt) - if obj: - enc = obj.encode('utf-8', 'surrogateescape') - dec = enc.decode('utf-8', 'replace') - setattr(options, opt, dec) - # New revisions can appear in a gerrit repository either due to someone # pushing directly (in which case options.submitter will be set), or they # can press "Submit this patchset" in the web UI for some CR (in which @@ -3784,6 +3975,20 @@ def compute_gerrit_options(options, args, required_gerrit_options): def check_hook_specific_args(options, args): + raw_refname = options.refname + # Convert each string option unicode for Python3. + if PYTHON3: + opts = ['environment', 'recipients', 'oldrev', 'newrev', 'refname', + 'project', 'submitter', 'stash_user', 'stash_repo'] + for opt in opts: + if not hasattr(options, opt): + continue + obj = getattr(options, opt) + if obj: + enc = obj.encode('utf-8', 'surrogateescape') + dec = enc.decode('utf-8', 'replace') + setattr(options, opt, dec) + # First check for stash arguments if (options.stash_user is None) != (options.stash_repo is None): raise SystemExit("Error: Specify both of --stash-user and " @@ -3797,12 +4002,78 @@ def check_hook_specific_args(options, args): required_gerrit_options = (options.oldrev, options.newrev, options.refname, options.project) if required_gerrit_options != (None,) * 4: - return compute_gerrit_options(options, args, required_gerrit_options) + return compute_gerrit_options(options, args, required_gerrit_options, + raw_refname) # No special options in use, just return what we started with return options, args, {} +class Logger(object): + def parse_verbose(self, verbose): + if verbose > 0: + return logging.DEBUG + else: + return logging.INFO + + def create_log_file(self, environment, name, path, verbosity): + log_file = logging.getLogger(name) + file_handler = logging.FileHandler(path) + log_fmt = logging.Formatter("%(asctime)s [%(levelname)-5.5s] %(message)s") + file_handler.setFormatter(log_fmt) + log_file.addHandler(file_handler) + log_file.setLevel(verbosity) + return log_file + + def __init__(self, environment): + self.environment = environment + self.loggers = [] + stderr_log = logging.getLogger('git_multimail.stderr') + + class EncodedStderr(object): + def write(self, x): + write_str(sys.stderr, x) + + def flush(self): + sys.stderr.flush() + + stderr_handler = logging.StreamHandler(EncodedStderr()) + stderr_log.addHandler(stderr_handler) + stderr_log.setLevel(self.parse_verbose(environment.verbose)) + self.loggers.append(stderr_log) + + if environment.debug_log_file is not None: + debug_log_file = self.create_log_file( + environment, 'git_multimail.debug', environment.debug_log_file, logging.DEBUG) + self.loggers.append(debug_log_file) + + if environment.log_file is not None: + log_file = self.create_log_file( + environment, 'git_multimail.file', environment.log_file, logging.INFO) + self.loggers.append(log_file) + + if environment.error_log_file is not None: + error_log_file = self.create_log_file( + environment, 'git_multimail.error', environment.error_log_file, logging.ERROR) + self.loggers.append(error_log_file) + + def info(self, msg): + for l in self.loggers: + l.info(msg) + + def debug(self, msg): + for l in self.loggers: + l.debug(msg) + + def warning(self, msg): + for l in self.loggers: + l.warning(msg) + + def error(self, msg): + for l in self.loggers: + l.error(msg) + + def main(args): parser = optparse.OptionParser( description=__doc__, @@ -3829,7 +4100,7 @@ def main(args): '--show-env', action='store_true', default=False, help=( 'Write to stderr the values determined for the environment ' - '(intended for debugging purposes).' + '(intended for debugging purposes), then proceed normally.' ), ) parser.add_option( @@ -3854,6 +4125,22 @@ def main(args): "Display git-multimail's version" ), ) + + parser.add_option( + '--python-version', action='store_true', default=False, + help=( + "Display the version of Python used by git-multimail" + ), + ) + + parser.add_option( + '--check-ref-filter', action='store_true', default=False, + help=( + 'List refs and show information on how git-multimail ' + 'will process them.' + ) + ) + # The following options permit this script to be run as a gerrit # ref-updated hook. See e.g. # code.google.com/p/gerrit/source/browse/Documentation/config-hooks.txt @@ -3880,11 +4167,16 @@ def main(args): sys.stdout.write('git-multimail version ' + get_version() + '\n') return + if options.python_version: + sys.stdout.write('Python version ' + sys.version + '\n') + return + if options.c: Config.add_config_parameters(options.c) config = Config('multimailhook') + environment = None try: environment = choose_environment( config, osenv=os.environ, @@ -3894,38 +4186,52 @@ def main(args): ) if options.show_env: - sys.stderr.write('Environment values:\n') - for (k, v) in sorted(environment.get_values().items()): - sys.stderr.write(' %s : %r\n' % (k, v)) - sys.stderr.write('\n') + show_env(environment, sys.stderr) if options.stdout or environment.stdout: mailer = OutputMailer(sys.stdout) else: mailer = choose_mailer(config, environment) + must_check_setup = os.environ.get('GIT_MULTIMAIL_CHECK_SETUP') + if must_check_setup == '': + must_check_setup = False + if options.check_ref_filter: + check_ref_filter(environment) + elif must_check_setup: + check_setup(environment) # Dual mode: if arguments were specified on the command line, run # like an update hook; otherwise, run as a post-receive hook. - if args: + elif args: if len(args) != 3: parser.error('Need zero or three non-option arguments') (refname, oldrev, newrev) = args + environment.get_logger().debug( + "run_as_update_hook: refname=%s, oldrev=%s, newrev=%s, force_send=%s" % + (refname, oldrev, newrev, options.force_send)) run_as_update_hook(environment, mailer, refname, oldrev, newrev, options.force_send) else: run_as_post_receive_hook(environment, mailer) except ConfigurationException: sys.exit(sys.exc_info()[1]) + except SystemExit: + raise except Exception: t, e, tb = sys.exc_info() import traceback - sys.stdout.write('\n') - sys.stdout.write('Exception \'' + t.__name__ + - '\' raised. Please report this as a bug to\n') - sys.stdout.write('https://github.com/git-multimail/git-multimail/issues\n') - sys.stdout.write('with the information below:\n\n') - sys.stdout.write('git-multimail version ' + get_version() + '\n') - sys.stdout.write('Python version ' + sys.version + '\n') - traceback.print_exc(file=sys.stdout) + sys.stderr.write('\n') # Avoid mixing message with previous output + msg = ( + 'Exception \'' + t.__name__ + + '\' raised. Please report this as a bug to\n' + 'https://github.com/git-multimail/git-multimail/issues\n' + 'with the information below:\n\n' + 'git-multimail version ' + get_version() + '\n' + 'Python version ' + sys.version + '\n' + + traceback.format_exc()) + try: + environment.get_logger().error(msg) + except: + sys.stderr.write(msg) sys.exit(1) if __name__ == '__main__': @@ -189,33 +189,25 @@ static enum eol output_eol(enum crlf_action crlf_action) } static void check_safe_crlf(const char *path, enum crlf_action crlf_action, - struct text_stat *stats, enum safe_crlf checksafe) + struct text_stat *old_stats, struct text_stat *new_stats, + enum safe_crlf checksafe) { - if (!checksafe) - return; - - if (output_eol(crlf_action) == EOL_LF) { + if (old_stats->crlf && !new_stats->crlf ) { /* - * CRLFs would not be restored by checkout: - * check if we'd remove CRLFs + * CRLFs would not be restored by checkout */ - if (stats->crlf) { - if (checksafe == SAFE_CRLF_WARN) - warning("CRLF will be replaced by LF in %s.\nThe file will have its original line endings in your working directory.", path); - else /* i.e. SAFE_CRLF_FAIL */ - die("CRLF would be replaced by LF in %s.", path); - } - } else if (output_eol(crlf_action) == EOL_CRLF) { + if (checksafe == SAFE_CRLF_WARN) + warning("CRLF will be replaced by LF in %s.\nThe file will have its original line endings in your working directory.", path); + else /* i.e. SAFE_CRLF_FAIL */ + die("CRLF would be replaced by LF in %s.", path); + } else if (old_stats->lonelf && !new_stats->lonelf ) { /* - * CRLFs would be added by checkout: - * check if we have "naked" LFs + * CRLFs would be added by checkout */ - if (stats->lonelf) { - if (checksafe == SAFE_CRLF_WARN) - warning("LF will be replaced by CRLF in %s.\nThe file will have its original line endings in your working directory.", path); - else /* i.e. SAFE_CRLF_FAIL */ - die("LF would be replaced by CRLF in %s", path); - } + if (checksafe == SAFE_CRLF_WARN) + warning("LF will be replaced by CRLF in %s.\nThe file will have its original line endings in your working directory.", path); + else /* i.e. SAFE_CRLF_FAIL */ + die("LF would be replaced by CRLF in %s", path); } } @@ -233,12 +225,35 @@ static int has_cr_in_index(const char *path) return has_cr; } +static int will_convert_lf_to_crlf(size_t len, struct text_stat *stats, + enum crlf_action crlf_action) +{ + if (output_eol(crlf_action) != EOL_CRLF) + return 0; + /* No "naked" LF? Nothing to convert, regardless. */ + if (!stats->lonelf) + return 0; + + if (crlf_action == CRLF_AUTO || crlf_action == CRLF_AUTO_INPUT || crlf_action == CRLF_AUTO_CRLF) { + /* If we have any CR or CRLF line endings, we do not touch it */ + /* This is the new safer autocrlf-handling */ + if (stats->lonecr || stats->crlf) + return 0; + + if (convert_is_binary(len, stats)) + return 0; + } + return 1; + +} + static int crlf_to_git(const char *path, const char *src, size_t len, struct strbuf *buf, enum crlf_action crlf_action, enum safe_crlf checksafe) { struct text_stat stats; char *dst; + int convert_crlf_into_lf; if (crlf_action == CRLF_BINARY || (src && !len)) @@ -252,6 +267,8 @@ static int crlf_to_git(const char *path, const char *src, size_t len, return 1; gather_stats(src, len, &stats); + /* Optimization: No CRLF? Nothing to convert, regardless. */ + convert_crlf_into_lf = !!stats.crlf; if (crlf_action == CRLF_AUTO || crlf_action == CRLF_AUTO_INPUT || crlf_action == CRLF_AUTO_CRLF) { if (convert_is_binary(len, &stats)) @@ -263,12 +280,24 @@ static int crlf_to_git(const char *path, const char *src, size_t len, if (checksafe == SAFE_CRLF_RENORMALIZE) checksafe = SAFE_CRLF_FALSE; else if (has_cr_in_index(path)) - return 0; + convert_crlf_into_lf = 0; } - check_safe_crlf(path, crlf_action, &stats, checksafe); - - /* Optimization: No CRLF? Nothing to convert, regardless. */ - if (!stats.crlf) + if (checksafe && len) { + struct text_stat new_stats; + memcpy(&new_stats, &stats, sizeof(new_stats)); + /* simulate "git add" */ + if (convert_crlf_into_lf) { + new_stats.lonelf += new_stats.crlf; + new_stats.crlf = 0; + } + /* simulate "git checkout" */ + if (will_convert_lf_to_crlf(len, &new_stats, crlf_action)) { + new_stats.crlf += new_stats.lonelf; + new_stats.lonelf = 0; + } + check_safe_crlf(path, crlf_action, &stats, &new_stats, checksafe); + } + if (!convert_crlf_into_lf) return 0; /* @@ -314,21 +343,9 @@ static int crlf_to_worktree(const char *path, const char *src, size_t len, return 0; gather_stats(src, len, &stats); - - /* No "naked" LF? Nothing to convert, regardless. */ - if (!stats.lonelf) + if (!will_convert_lf_to_crlf(len, &stats, crlf_action)) return 0; - if (crlf_action == CRLF_AUTO || crlf_action == CRLF_AUTO_INPUT || crlf_action == CRLF_AUTO_CRLF) { - /* If we have any CR or CRLF line endings, we do not touch it */ - /* This is the new safer autocrlf-handling */ - if (stats.lonecr || stats.crlf ) - return 0; - - if (convert_is_binary(len, &stats)) - return 0; - } - /* are we "faking" in place editing ? */ if (src == buf->buf) to_free = strbuf_detach(buf, NULL); diff --git a/git-compat-util.h b/git-compat-util.h index 590bfddf73..db89ba7748 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -667,6 +667,10 @@ void *gitmemmem(const void *haystack, size_t haystacklen, #define getpagesize() sysconf(_SC_PAGESIZE) #endif +#ifndef O_CLOEXEC +#define O_CLOEXEC 0 +#endif + #ifdef FREAD_READS_DIRECTORIES #ifdef fopen #undef fopen @@ -815,7 +819,7 @@ extern FILE *fopen_for_writing(const char *path); * you can do: * * struct foo *f; - * FLEX_ALLOC_STR(f, name, src); + * FLEXPTR_ALLOC_STR(f, name, src); * * and "name" will point to a block of memory after the struct, which will be * freed along with the struct (but the pointer can be repointed anywhere). diff --git a/git-difftool--helper.sh b/git-difftool--helper.sh index 84d6cc021c..7bfb6737df 100755 --- a/git-difftool--helper.sh +++ b/git-difftool--helper.sh @@ -86,6 +86,13 @@ else do launch_merge_tool "$1" "$2" "$5" status=$? + if test $status -ge 126 + then + # Command not found (127), not executable (126) or + # exited via a signal (>= 128). + exit $status + fi + if test "$status" != 0 && test "$GIT_DIFFTOOL_TRUST_EXIT_CODE" = true then diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index e2da524f5a..7e558b068c 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -404,51 +404,12 @@ pick_one_preserving_merges () { this_nth_commit_message () { n=$1 - case "$n" in - 1) gettext "This is the 1st commit message:";; - 2) gettext "This is the 2nd commit message:";; - 3) gettext "This is the 3rd commit message:";; - 4) gettext "This is the 4th commit message:";; - 5) gettext "This is the 5th commit message:";; - 6) gettext "This is the 6th commit message:";; - 7) gettext "This is the 7th commit message:";; - 8) gettext "This is the 8th commit message:";; - 9) gettext "This is the 9th commit message:";; - 10) gettext "This is the 10th commit message:";; - # TRANSLATORS: if the language you are translating into - # doesn't allow you to compose a sentence in this fashion, - # consider translating as if this and the following few strings - # were "This is the commit message ${n}:" - *1[0-9]|*[04-9]) eval_gettext "This is the \${n}th commit message:";; - *1) eval_gettext "This is the \${n}st commit message:";; - *2) eval_gettext "This is the \${n}nd commit message:";; - *3) eval_gettext "This is the \${n}rd commit message:";; - *) eval_gettext "This is the commit message \${n}:";; - esac + eval_gettext "This is the commit message #\${n}:" } + skip_nth_commit_message () { n=$1 - case "$n" in - 1) gettext "The 1st commit message will be skipped:";; - 2) gettext "The 2nd commit message will be skipped:";; - 3) gettext "The 3rd commit message will be skipped:";; - 4) gettext "The 4th commit message will be skipped:";; - 5) gettext "The 5th commit message will be skipped:";; - 6) gettext "The 6th commit message will be skipped:";; - 7) gettext "The 7th commit message will be skipped:";; - 8) gettext "The 8th commit message will be skipped:";; - 9) gettext "The 9th commit message will be skipped:";; - 10) gettext "The 10th commit message will be skipped:";; - # TRANSLATORS: if the language you are translating into - # doesn't allow you to compose a sentence in this fashion, - # consider translating as if this and the following few strings - # were "The commit message ${n} will be skipped:" - *1[0-9]|*[04-9]) eval_gettext "The \${n}th commit message will be skipped:";; - *1) eval_gettext "The \${n}st commit message will be skipped:";; - *2) eval_gettext "The \${n}nd commit message will be skipped:";; - *3) eval_gettext "The \${n}rd commit message will be skipped:";; - *) eval_gettext "The commit message \${n} will be skipped:";; - esac + eval_gettext "The commit message #\${n} will be skipped:" } update_squash_messages () { diff --git a/gpg-interface.c b/gpg-interface.c index 08356f92e7..8672edaf48 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -217,6 +217,7 @@ int verify_signed_buffer(const char *payload, size_t payload_size, argv_array_pushl(&gpg.args, gpg_program, "--status-fd=1", + "--keyid-format=long", "--verify", temp.filename.buf, "-", NULL); diff --git a/lockfile.h b/lockfile.h index 3d301937b0..d26ad27b2b 100644 --- a/lockfile.h +++ b/lockfile.h @@ -55,6 +55,10 @@ * * calling `fdopen_lock_file()` to get a `FILE` pointer for the * open file and writing to the file using stdio. * + * Note that the file descriptor returned by hold_lock_file_for_update() + * is marked O_CLOEXEC, so the new contents must be written by the + * current process, not a spawned one. + * * When finished writing, the caller can: * * * Close the file descriptor and rename the lockfile to its final diff --git a/mailinfo.c b/mailinfo.c index 9f19ca1080..e19abe3cb9 100644 --- a/mailinfo.c +++ b/mailinfo.c @@ -179,12 +179,6 @@ static void handle_content_type(struct mailinfo *mi, struct strbuf *line) } } -static void handle_message_id(struct mailinfo *mi, const struct strbuf *line) -{ - if (mi->add_message_id) - mi->message_id = strdup(line->buf); -} - static void handle_content_transfer_encoding(struct mailinfo *mi, const struct strbuf *line) { @@ -495,7 +489,8 @@ static int check_header(struct mailinfo *mi, len = strlen("Message-Id: "); strbuf_add(&sb, line->buf + len, line->len - len); decode_header(mi, &sb); - handle_message_id(mi, &sb); + if (mi->add_message_id) + mi->message_id = strbuf_detach(&sb, NULL); ret = 1; goto check_header_out; } diff --git a/merge-recursive.c b/merge-recursive.c index e5243c2b76..e34912683c 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -73,12 +73,9 @@ static struct tree *shift_tree_object(struct tree *one, struct tree *two, static struct commit *make_virtual_commit(struct tree *tree, const char *comment) { struct commit *commit = alloc_commit_node(); - struct merge_remote_desc *desc = xmalloc(sizeof(*desc)); - desc->name = comment; - desc->obj = (struct object *)commit; + set_merge_remote_desc(commit, comment, (struct object *)commit); commit->tree = tree; - commit->util = desc; commit->object.parsed = 1; return commit; } @@ -380,6 +380,8 @@ static void adjust_git_path(struct strbuf *buf, int git_dir_len) get_index_file(), strlen(get_index_file())); else if (git_db_env && dir_prefix(base, "objects")) replace_dir(buf, git_dir_len + 7, get_object_directory()); + else if (git_hooks_path && dir_prefix(base, "hooks")) + replace_dir(buf, git_dir_len + 5, git_hooks_path); else if (git_common_dir_env) update_common_dir(buf, git_dir_len, NULL); } diff --git a/po/git.pot b/po/git.pot index 1c408b5ff8..fed61cfb08 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: 2016-08-15 22:43+0800\n" +"POT-Creation-Date: 2016-08-27 23:21+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" @@ -567,122 +567,93 @@ msgstr "" msgid "bad config line %d in %s" msgstr "" -#: config.c:660 -#, c-format -msgid "bad numeric config value '%s' for '%s': out of range" +#: config.c:655 +msgid "out of range" msgstr "" -#: config.c:661 -#, c-format -msgid "bad numeric config value '%s' for '%s': invalid unit" +#: config.c:655 +msgid "invalid unit" msgstr "" -#: config.c:667 +#: config.c:661 #, c-format -msgid "bad numeric config value '%s' for '%s' in blob %s: out of range" +msgid "bad numeric config value '%s' for '%s': %s" msgstr "" -#: config.c:668 +#: config.c:666 #, c-format -msgid "bad numeric config value '%s' for '%s' in blob %s: invalid unit" +msgid "bad numeric config value '%s' for '%s' in blob %s: %s" msgstr "" -#: config.c:672 +#: config.c:669 #, c-format -msgid "bad numeric config value '%s' for '%s' in file %s: out of range" +msgid "bad numeric config value '%s' for '%s' in file %s: %s" msgstr "" -#: config.c:673 +#: config.c:672 #, c-format -msgid "bad numeric config value '%s' for '%s' in file %s: invalid unit" +msgid "bad numeric config value '%s' for '%s' in standard input: %s" msgstr "" -#: config.c:677 +#: config.c:675 #, c-format -msgid "bad numeric config value '%s' for '%s' in standard input: out of range" +msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s" msgstr "" #: config.c:678 #, c-format -msgid "bad numeric config value '%s' for '%s' in standard input: invalid unit" -msgstr "" - -#: config.c:682 -#, c-format -msgid "" -"bad numeric config value '%s' for '%s' in submodule-blob %s: out of range" -msgstr "" - -#: config.c:683 -#, c-format -msgid "" -"bad numeric config value '%s' for '%s' in submodule-blob %s: invalid unit" -msgstr "" - -#: config.c:687 -#, c-format -msgid "bad numeric config value '%s' for '%s' in command line %s: out of range" -msgstr "" - -#: config.c:688 -#, c-format -msgid "bad numeric config value '%s' for '%s' in command line %s: invalid unit" -msgstr "" - -#: config.c:692 -#, c-format -msgid "bad numeric config value '%s' for '%s' in %s: out of range" +msgid "bad numeric config value '%s' for '%s' in command line %s: %s" msgstr "" -#: config.c:693 +#: config.c:681 #, c-format -msgid "bad numeric config value '%s' for '%s' in %s: invalid unit" +msgid "bad numeric config value '%s' for '%s' in %s: %s" msgstr "" -#: config.c:780 +#: config.c:768 #, c-format msgid "failed to expand user dir in: '%s'" msgstr "" -#: config.c:861 config.c:872 +#: config.c:849 config.c:860 #, c-format msgid "bad zlib compression level %d" msgstr "" -#: config.c:990 +#: config.c:978 #, c-format msgid "invalid mode for object creation: %s" msgstr "" -#: config.c:1324 +#: config.c:1312 msgid "unable to parse command-line config" msgstr "" -#: config.c:1374 +#: config.c:1362 msgid "unknown error occurred while reading the configuration files" msgstr "" -#: config.c:1728 +#: config.c:1716 #, c-format msgid "unable to parse '%s' from command-line config" msgstr "" -#: config.c:1730 +#: config.c:1718 #, c-format msgid "bad config variable '%s' in file '%s' at line %d" msgstr "" -#: config.c:1789 +#: config.c:1777 #, c-format msgid "%s has multiple values" msgstr "" -#: config.c:2323 +#: config.c:2311 #, c-format msgid "could not set '%s' to '%s'" msgstr "" -#: config.c:2325 +#: config.c:2313 #, c-format msgid "could not unset '%s'" msgstr "" @@ -941,233 +912,233 @@ msgstr "" msgid "unable to write new index file" msgstr "" -#: merge-recursive.c:212 +#: merge-recursive.c:209 msgid "(bad commit)\n" msgstr "" -#: merge-recursive.c:234 +#: merge-recursive.c:231 #, c-format msgid "addinfo_cache failed for path '%s'" msgstr "" -#: merge-recursive.c:304 +#: merge-recursive.c:301 msgid "error building trees" msgstr "" -#: merge-recursive.c:723 +#: merge-recursive.c:720 #, c-format msgid "failed to create path '%s'%s" msgstr "" -#: merge-recursive.c:734 +#: merge-recursive.c:731 #, c-format msgid "Removing %s to make room for subdirectory\n" msgstr "" -#: merge-recursive.c:748 merge-recursive.c:767 +#: merge-recursive.c:745 merge-recursive.c:764 msgid ": perhaps a D/F conflict?" msgstr "" -#: merge-recursive.c:757 +#: merge-recursive.c:754 #, c-format msgid "refusing to lose untracked file at '%s'" msgstr "" -#: merge-recursive.c:799 +#: merge-recursive.c:796 #, c-format msgid "cannot read object %s '%s'" msgstr "" -#: merge-recursive.c:801 +#: merge-recursive.c:798 #, c-format msgid "blob expected for %s '%s'" msgstr "" -#: merge-recursive.c:825 +#: merge-recursive.c:822 #, c-format msgid "failed to open '%s': %s" msgstr "" -#: merge-recursive.c:836 +#: merge-recursive.c:833 #, c-format msgid "failed to symlink '%s': %s" msgstr "" -#: merge-recursive.c:841 +#: merge-recursive.c:838 #, c-format msgid "do not know what to do with %06o %s '%s'" msgstr "" -#: merge-recursive.c:981 +#: merge-recursive.c:978 msgid "Failed to execute internal merge" msgstr "" -#: merge-recursive.c:985 +#: merge-recursive.c:982 #, c-format msgid "Unable to add %s to database" msgstr "" -#: merge-recursive.c:1084 merge-recursive.c:1098 +#: merge-recursive.c:1081 merge-recursive.c:1095 #, c-format msgid "" "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left " "in tree." msgstr "" -#: merge-recursive.c:1090 merge-recursive.c:1103 +#: merge-recursive.c:1087 merge-recursive.c:1100 #, c-format msgid "" "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left " "in tree at %s." msgstr "" -#: merge-recursive.c:1146 +#: merge-recursive.c:1143 msgid "rename" msgstr "" -#: merge-recursive.c:1146 +#: merge-recursive.c:1143 msgid "renamed" msgstr "" -#: merge-recursive.c:1203 +#: merge-recursive.c:1200 #, c-format msgid "%s is a directory in %s adding as %s instead" msgstr "" -#: merge-recursive.c:1228 +#: merge-recursive.c:1225 #, c-format msgid "" "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s" "\"->\"%s\" in \"%s\"%s" msgstr "" -#: merge-recursive.c:1233 +#: merge-recursive.c:1230 msgid " (left unresolved)" msgstr "" -#: merge-recursive.c:1295 +#: merge-recursive.c:1292 #, c-format msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s" msgstr "" -#: merge-recursive.c:1328 +#: merge-recursive.c:1325 #, c-format msgid "Renaming %s to %s and %s to %s instead" msgstr "" -#: merge-recursive.c:1534 +#: merge-recursive.c:1531 #, c-format msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s" msgstr "" -#: merge-recursive.c:1549 +#: merge-recursive.c:1546 #, c-format msgid "Adding merged %s" msgstr "" -#: merge-recursive.c:1556 merge-recursive.c:1769 +#: merge-recursive.c:1553 merge-recursive.c:1766 #, c-format msgid "Adding as %s instead" msgstr "" -#: merge-recursive.c:1613 +#: merge-recursive.c:1610 #, c-format msgid "cannot read object %s" msgstr "" -#: merge-recursive.c:1616 +#: merge-recursive.c:1613 #, c-format msgid "object %s is not a blob" msgstr "" -#: merge-recursive.c:1669 +#: merge-recursive.c:1666 msgid "modify" msgstr "" -#: merge-recursive.c:1669 +#: merge-recursive.c:1666 msgid "modified" msgstr "" -#: merge-recursive.c:1679 +#: merge-recursive.c:1676 msgid "content" msgstr "" -#: merge-recursive.c:1686 +#: merge-recursive.c:1683 msgid "add/add" msgstr "" -#: merge-recursive.c:1721 +#: merge-recursive.c:1718 #, c-format msgid "Skipped %s (merged same as existing)" msgstr "" -#: merge-recursive.c:1735 +#: merge-recursive.c:1732 #, c-format msgid "Auto-merging %s" msgstr "" -#: merge-recursive.c:1739 git-submodule.sh:919 +#: merge-recursive.c:1736 git-submodule.sh:919 msgid "submodule" msgstr "" -#: merge-recursive.c:1740 +#: merge-recursive.c:1737 #, c-format msgid "CONFLICT (%s): Merge conflict in %s" msgstr "" -#: merge-recursive.c:1834 +#: merge-recursive.c:1831 #, c-format msgid "Removing %s" msgstr "" -#: merge-recursive.c:1860 +#: merge-recursive.c:1857 msgid "file/directory" msgstr "" -#: merge-recursive.c:1866 +#: merge-recursive.c:1863 msgid "directory/file" msgstr "" -#: merge-recursive.c:1871 +#: merge-recursive.c:1868 #, c-format msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s" msgstr "" -#: merge-recursive.c:1880 +#: merge-recursive.c:1877 #, c-format msgid "Adding %s" msgstr "" -#: merge-recursive.c:1917 +#: merge-recursive.c:1914 msgid "Already up-to-date!" msgstr "" -#: merge-recursive.c:1926 +#: merge-recursive.c:1923 #, c-format msgid "merging of trees %s and %s failed" msgstr "" -#: merge-recursive.c:2009 +#: merge-recursive.c:2006 msgid "Merging:" msgstr "" -#: merge-recursive.c:2022 +#: merge-recursive.c:2019 #, c-format msgid "found %u common ancestor:" msgid_plural "found %u common ancestors:" msgstr[0] "" msgstr[1] "" -#: merge-recursive.c:2061 +#: merge-recursive.c:2058 msgid "merge returned no commit" msgstr "" -#: merge-recursive.c:2124 +#: merge-recursive.c:2121 #, c-format msgid "Could not parse object '%s'" msgstr "" -#: merge-recursive.c:2138 builtin/merge.c:641 builtin/merge.c:788 +#: merge-recursive.c:2135 builtin/merge.c:641 builtin/merge.c:788 msgid "Unable to write index." msgstr "" @@ -1227,7 +1198,7 @@ msgstr "" msgid "malformed object name '%s'" msgstr "" -#: path.c:796 +#: path.c:798 #, c-format msgid "Could not make %s writable by group" msgstr "" @@ -1745,7 +1716,7 @@ msgid "git %s: failed to refresh the index" msgstr "" #: sequencer.c:705 -msgid "Cannot revert during a another revert." +msgid "Cannot revert during another revert." msgstr "" #: sequencer.c:706 @@ -2841,7 +2812,7 @@ msgstr "" msgid "interactive picking" msgstr "" -#: builtin/add.c:257 builtin/checkout.c:1156 builtin/reset.c:286 +#: builtin/add.c:257 builtin/checkout.c:1157 builtin/reset.c:286 msgid "select hunks interactively" msgstr "" @@ -4454,7 +4425,7 @@ msgstr "" msgid "terminate input and output records by a NUL character" msgstr "" -#: builtin/check-ignore.c:18 builtin/checkout.c:1137 builtin/gc.c:325 +#: builtin/check-ignore.c:18 builtin/checkout.c:1138 builtin/gc.c:325 msgid "suppress progress reporting" msgstr "" @@ -4626,45 +4597,45 @@ msgstr "" msgid "Can not do reflog for '%s': %s\n" msgstr "" -#: builtin/checkout.c:663 +#: builtin/checkout.c:664 msgid "HEAD is now at" msgstr "" -#: builtin/checkout.c:667 builtin/clone.c:661 +#: builtin/checkout.c:668 builtin/clone.c:661 msgid "unable to update HEAD" msgstr "" -#: builtin/checkout.c:671 +#: builtin/checkout.c:672 #, c-format msgid "Reset branch '%s'\n" msgstr "" -#: builtin/checkout.c:674 +#: builtin/checkout.c:675 #, c-format msgid "Already on '%s'\n" msgstr "" -#: builtin/checkout.c:678 +#: builtin/checkout.c:679 #, c-format msgid "Switched to and reset branch '%s'\n" msgstr "" -#: builtin/checkout.c:680 builtin/checkout.c:1069 +#: builtin/checkout.c:681 builtin/checkout.c:1070 #, c-format msgid "Switched to a new branch '%s'\n" msgstr "" -#: builtin/checkout.c:682 +#: builtin/checkout.c:683 #, c-format msgid "Switched to branch '%s'\n" msgstr "" -#: builtin/checkout.c:733 +#: builtin/checkout.c:734 #, c-format msgid " ... and %d more.\n" msgstr "" -#: builtin/checkout.c:739 +#: builtin/checkout.c:740 #, c-format msgid "" "Warning: you are leaving %d commit behind, not connected to\n" @@ -4679,7 +4650,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: builtin/checkout.c:758 +#: builtin/checkout.c:759 #, c-format msgid "" "If you want to keep it by creating a new branch, this may be a good time\n" @@ -4696,162 +4667,162 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: builtin/checkout.c:794 +#: builtin/checkout.c:795 msgid "internal error in revision walk" msgstr "" -#: builtin/checkout.c:798 +#: builtin/checkout.c:799 msgid "Previous HEAD position was" msgstr "" -#: builtin/checkout.c:825 builtin/checkout.c:1064 +#: builtin/checkout.c:826 builtin/checkout.c:1065 msgid "You are on a branch yet to be born" msgstr "" -#: builtin/checkout.c:970 +#: builtin/checkout.c:971 #, c-format msgid "only one reference expected, %d given." msgstr "" -#: builtin/checkout.c:1010 builtin/worktree.c:214 +#: builtin/checkout.c:1011 builtin/worktree.c:214 #, c-format msgid "invalid reference: %s" msgstr "" -#: builtin/checkout.c:1039 +#: builtin/checkout.c:1040 #, c-format msgid "reference is not a tree: %s" msgstr "" -#: builtin/checkout.c:1078 +#: builtin/checkout.c:1079 msgid "paths cannot be used with switching branches" msgstr "" -#: builtin/checkout.c:1081 builtin/checkout.c:1085 +#: builtin/checkout.c:1082 builtin/checkout.c:1086 #, c-format msgid "'%s' cannot be used with switching branches" msgstr "" -#: builtin/checkout.c:1089 builtin/checkout.c:1092 builtin/checkout.c:1097 -#: builtin/checkout.c:1100 +#: builtin/checkout.c:1090 builtin/checkout.c:1093 builtin/checkout.c:1098 +#: builtin/checkout.c:1101 #, c-format msgid "'%s' cannot be used with '%s'" msgstr "" -#: builtin/checkout.c:1105 +#: builtin/checkout.c:1106 #, c-format msgid "Cannot switch branch to a non-commit '%s'" msgstr "" -#: builtin/checkout.c:1138 builtin/checkout.c:1140 builtin/clone.c:88 +#: builtin/checkout.c:1139 builtin/checkout.c:1141 builtin/clone.c:88 #: builtin/remote.c:165 builtin/remote.c:167 builtin/worktree.c:324 #: builtin/worktree.c:326 msgid "branch" msgstr "" -#: builtin/checkout.c:1139 +#: builtin/checkout.c:1140 msgid "create and checkout a new branch" msgstr "" -#: builtin/checkout.c:1141 +#: builtin/checkout.c:1142 msgid "create/reset and checkout a branch" msgstr "" -#: builtin/checkout.c:1142 +#: builtin/checkout.c:1143 msgid "create reflog for new branch" msgstr "" -#: builtin/checkout.c:1143 builtin/worktree.c:328 +#: builtin/checkout.c:1144 builtin/worktree.c:328 msgid "detach HEAD at named commit" msgstr "" -#: builtin/checkout.c:1144 +#: builtin/checkout.c:1145 msgid "set upstream info for new branch" msgstr "" -#: builtin/checkout.c:1146 +#: builtin/checkout.c:1147 msgid "new-branch" msgstr "" -#: builtin/checkout.c:1146 +#: builtin/checkout.c:1147 msgid "new unparented branch" msgstr "" -#: builtin/checkout.c:1147 +#: builtin/checkout.c:1148 msgid "checkout our version for unmerged files" msgstr "" -#: builtin/checkout.c:1149 +#: builtin/checkout.c:1150 msgid "checkout their version for unmerged files" msgstr "" -#: builtin/checkout.c:1151 +#: builtin/checkout.c:1152 msgid "force checkout (throw away local modifications)" msgstr "" -#: builtin/checkout.c:1152 +#: builtin/checkout.c:1153 msgid "perform a 3-way merge with the new branch" msgstr "" -#: builtin/checkout.c:1153 builtin/merge.c:231 +#: builtin/checkout.c:1154 builtin/merge.c:231 msgid "update ignored files (default)" msgstr "" -#: builtin/checkout.c:1154 builtin/log.c:1459 parse-options.h:250 +#: builtin/checkout.c:1155 builtin/log.c:1459 parse-options.h:250 msgid "style" msgstr "" -#: builtin/checkout.c:1155 +#: builtin/checkout.c:1156 msgid "conflict style (merge or diff3)" msgstr "" -#: builtin/checkout.c:1158 +#: builtin/checkout.c:1159 msgid "do not limit pathspecs to sparse entries only" msgstr "" -#: builtin/checkout.c:1160 +#: builtin/checkout.c:1161 msgid "second guess 'git checkout <no-such-branch>'" msgstr "" -#: builtin/checkout.c:1162 +#: builtin/checkout.c:1163 msgid "do not check if another worktree is holding the given ref" msgstr "" -#: builtin/checkout.c:1163 builtin/clone.c:60 builtin/fetch.c:117 +#: builtin/checkout.c:1164 builtin/clone.c:60 builtin/fetch.c:117 #: builtin/merge.c:228 builtin/pull.c:116 builtin/push.c:536 #: builtin/send-pack.c:168 msgid "force progress reporting" msgstr "" -#: builtin/checkout.c:1194 +#: builtin/checkout.c:1195 msgid "-b, -B and --orphan are mutually exclusive" msgstr "" -#: builtin/checkout.c:1211 +#: builtin/checkout.c:1212 msgid "--track needs a branch name" msgstr "" -#: builtin/checkout.c:1216 +#: builtin/checkout.c:1217 msgid "Missing branch name; try -b" msgstr "" -#: builtin/checkout.c:1252 +#: builtin/checkout.c:1253 msgid "invalid path specification" msgstr "" -#: builtin/checkout.c:1259 +#: builtin/checkout.c:1260 #, c-format msgid "" "Cannot update paths and switch to branch '%s' at the same time.\n" "Did you intend to checkout '%s' which can not be resolved as commit?" msgstr "" -#: builtin/checkout.c:1264 +#: builtin/checkout.c:1265 #, c-format msgid "git checkout: --detach does not take a path argument '%s'" msgstr "" -#: builtin/checkout.c:1268 +#: builtin/checkout.c:1269 msgid "" "git checkout: --ours/--theirs, --force and --merge are incompatible when\n" "checking out of the index." @@ -5221,7 +5192,7 @@ msgstr "" msgid "cannot unlink temporary alternates file" msgstr "" -#: builtin/clone.c:863 builtin/receive-pack.c:1857 +#: builtin/clone.c:863 builtin/receive-pack.c:1855 msgid "Too many arguments." msgstr "" @@ -7065,48 +7036,48 @@ msgstr "" msgid "no info viewer handled the request" msgstr "" -#: builtin/help.c:408 +#: builtin/help.c:401 msgid "Defining attributes per path" msgstr "" -#: builtin/help.c:409 +#: builtin/help.c:402 msgid "Everyday Git With 20 Commands Or So" msgstr "" -#: builtin/help.c:410 +#: builtin/help.c:403 msgid "A Git glossary" msgstr "" -#: builtin/help.c:411 +#: builtin/help.c:404 msgid "Specifies intentionally untracked files to ignore" msgstr "" -#: builtin/help.c:412 +#: builtin/help.c:405 msgid "Defining submodule properties" msgstr "" -#: builtin/help.c:413 +#: builtin/help.c:406 msgid "Specifying revisions and ranges for Git" msgstr "" -#: builtin/help.c:414 +#: builtin/help.c:407 msgid "A tutorial introduction to Git (for version 1.5.1 or newer)" msgstr "" -#: builtin/help.c:415 +#: builtin/help.c:408 msgid "An overview of recommended workflows with Git" msgstr "" -#: builtin/help.c:427 +#: builtin/help.c:420 msgid "The common Git guides are:\n" msgstr "" -#: builtin/help.c:448 builtin/help.c:465 +#: builtin/help.c:441 builtin/help.c:458 #, c-format msgid "usage: %s%s" msgstr "" -#: builtin/help.c:481 +#: builtin/help.c:474 #, c-format msgid "`git %s' is aliased to `%s'" msgstr "" @@ -9643,11 +9614,11 @@ msgstr "" msgid "git receive-pack <git-dir>" msgstr "" -#: builtin/receive-pack.c:1845 +#: builtin/receive-pack.c:1843 msgid "quiet" msgstr "" -#: builtin/receive-pack.c:1859 +#: builtin/receive-pack.c:1857 msgid "You must specify a directory." msgstr "" @@ -12606,167 +12577,43 @@ msgstr "" msgid "Could not pick $sha1" msgstr "" -#: git-rebase--interactive.sh:408 git-rebase--interactive.sh:474 -msgid "This is the 1st commit message:" -msgstr "" - -#: git-rebase--interactive.sh:409 -msgid "This is the 2nd commit message:" -msgstr "" - -#: git-rebase--interactive.sh:410 -msgid "This is the 3rd commit message:" -msgstr "" - -#: git-rebase--interactive.sh:411 -msgid "This is the 4th commit message:" +#: git-rebase--interactive.sh:407 +#, sh-format +msgid "This is the commit message #${n}:" msgstr "" #: git-rebase--interactive.sh:412 -msgid "This is the 5th commit message:" -msgstr "" - -#: git-rebase--interactive.sh:413 -msgid "This is the 6th commit message:" -msgstr "" - -#: git-rebase--interactive.sh:414 -msgid "This is the 7th commit message:" -msgstr "" - -#: git-rebase--interactive.sh:415 -msgid "This is the 8th commit message:" -msgstr "" - -#: git-rebase--interactive.sh:416 -msgid "This is the 9th commit message:" -msgstr "" - -#: git-rebase--interactive.sh:417 -msgid "This is the 10th commit message:" -msgstr "" - -#. TRANSLATORS: if the language you are translating into -#. doesn't allow you to compose a sentence in this fashion, -#. consider translating as if this and the following few strings -#. were "This is the commit message ${n}:" -#: git-rebase--interactive.sh:422 #, sh-format -msgid "This is the ${n}th commit message:" +msgid "The commit message #${n} will be skipped:" msgstr "" #: git-rebase--interactive.sh:423 #, sh-format -msgid "This is the ${n}st commit message:" -msgstr "" - -#: git-rebase--interactive.sh:424 -#, sh-format -msgid "This is the ${n}nd commit message:" -msgstr "" - -#: git-rebase--interactive.sh:425 -#, sh-format -msgid "This is the ${n}rd commit message:" -msgstr "" - -#: git-rebase--interactive.sh:426 -#, sh-format -msgid "This is the commit message ${n}:" -msgstr "" - -#: git-rebase--interactive.sh:432 -msgid "The 1st commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:433 -msgid "The 2nd commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:434 -msgid "The 3rd commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:435 -msgid "The 4th commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:436 -msgid "The 5th commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:437 -msgid "The 6th commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:438 -msgid "The 7th commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:439 -msgid "The 8th commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:440 -msgid "The 9th commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:441 -msgid "The 10th commit message will be skipped:" -msgstr "" - -#. TRANSLATORS: if the language you are translating into -#. doesn't allow you to compose a sentence in this fashion, -#. consider translating as if this and the following few strings -#. were "The commit message ${n} will be skipped:" -#: git-rebase--interactive.sh:446 -#, sh-format -msgid "The ${n}th commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:447 -#, sh-format -msgid "The ${n}st commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:448 -#, sh-format -msgid "The ${n}nd commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:449 -#, sh-format -msgid "The ${n}rd commit message will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:450 -#, sh-format -msgid "The commit message ${n} will be skipped:" -msgstr "" - -#: git-rebase--interactive.sh:462 -#, sh-format msgid "This is a combination of $count commit." msgid_plural "This is a combination of $count commits." msgstr[0] "" msgstr[1] "" -#: git-rebase--interactive.sh:470 +#: git-rebase--interactive.sh:431 #, sh-format msgid "Cannot write $fixup_msg" msgstr "" -#: git-rebase--interactive.sh:473 +#: git-rebase--interactive.sh:434 msgid "This is a combination of 2 commits." msgstr "" -#: git-rebase--interactive.sh:514 git-rebase--interactive.sh:557 -#: git-rebase--interactive.sh:560 +#: git-rebase--interactive.sh:435 +msgid "This is the 1st commit message:" +msgstr "" + +#: git-rebase--interactive.sh:475 git-rebase--interactive.sh:518 +#: git-rebase--interactive.sh:521 #, sh-format msgid "Could not apply $sha1... $rest" msgstr "" -#: git-rebase--interactive.sh:588 +#: git-rebase--interactive.sh:549 #, sh-format msgid "" "Could not amend commit after successfully picking $sha1... $rest\n" @@ -12776,31 +12623,31 @@ msgid "" "you are able to reword the commit." msgstr "" -#: git-rebase--interactive.sh:603 +#: git-rebase--interactive.sh:564 #, sh-format msgid "Stopped at $sha1_abbrev... $rest" msgstr "" -#: git-rebase--interactive.sh:618 +#: git-rebase--interactive.sh:579 #, sh-format msgid "Cannot '$squash_style' without a previous commit" msgstr "" -#: git-rebase--interactive.sh:660 +#: git-rebase--interactive.sh:621 #, sh-format msgid "Executing: $rest" msgstr "" -#: git-rebase--interactive.sh:668 +#: git-rebase--interactive.sh:629 #, sh-format msgid "Execution failed: $rest" msgstr "" -#: git-rebase--interactive.sh:670 +#: git-rebase--interactive.sh:631 msgid "and made changes to the index and/or the working tree" msgstr "" -#: git-rebase--interactive.sh:672 +#: git-rebase--interactive.sh:633 msgid "" "You can fix the problem, and then run\n" "\n" @@ -12808,7 +12655,7 @@ msgid "" msgstr "" #. TRANSLATORS: after these lines is a command to be issued by the user -#: git-rebase--interactive.sh:685 +#: git-rebase--interactive.sh:646 #, sh-format msgid "" "Execution succeeded: $rest\n" @@ -12818,49 +12665,49 @@ msgid "" "\tgit rebase --continue" msgstr "" -#: git-rebase--interactive.sh:696 +#: git-rebase--interactive.sh:657 #, sh-format msgid "Unknown command: $command $sha1 $rest" msgstr "" -#: git-rebase--interactive.sh:697 +#: git-rebase--interactive.sh:658 msgid "Please fix this using 'git rebase --edit-todo'." msgstr "" -#: git-rebase--interactive.sh:732 +#: git-rebase--interactive.sh:693 #, sh-format msgid "Successfully rebased and updated $head_name." msgstr "" -#: git-rebase--interactive.sh:779 +#: git-rebase--interactive.sh:740 msgid "Could not skip unnecessary pick commands" msgstr "" -#: git-rebase--interactive.sh:937 +#: git-rebase--interactive.sh:898 #, sh-format msgid "" "Warning: the SHA-1 is missing or isn't a commit in the following line:\n" " - $line" msgstr "" -#: git-rebase--interactive.sh:970 +#: git-rebase--interactive.sh:931 #, sh-format msgid "" "Warning: the command isn't recognized in the following line:\n" " - $line" msgstr "" -#: git-rebase--interactive.sh:1009 +#: git-rebase--interactive.sh:970 msgid "could not detach HEAD" msgstr "" -#: git-rebase--interactive.sh:1047 +#: git-rebase--interactive.sh:1008 msgid "" "Warning: some commits may have been dropped accidentally.\n" "Dropped commits (newer to older):" msgstr "" -#: git-rebase--interactive.sh:1055 +#: git-rebase--interactive.sh:1016 msgid "" "To avoid this message, use \"drop\" to explicitly remove a commit.\n" "\n" @@ -12869,26 +12716,26 @@ msgid "" "The possible behaviours are: ignore, warn, error." msgstr "" -#: git-rebase--interactive.sh:1066 +#: git-rebase--interactive.sh:1027 #, sh-format msgid "" "Unrecognized setting $check_level for option rebase.missingCommitsCheck. " "Ignoring." msgstr "" -#: git-rebase--interactive.sh:1083 +#: git-rebase--interactive.sh:1044 msgid "You can fix this with 'git rebase --edit-todo'." msgstr "" -#: git-rebase--interactive.sh:1084 +#: git-rebase--interactive.sh:1045 msgid "Or you can abort the rebase with 'git rebase --abort'." msgstr "" -#: git-rebase--interactive.sh:1108 +#: git-rebase--interactive.sh:1069 msgid "Could not remove CHERRY_PICK_HEAD" msgstr "" -#: git-rebase--interactive.sh:1113 +#: git-rebase--interactive.sh:1074 #, sh-format msgid "" "You have staged changes in your working tree.\n" @@ -12906,21 +12753,21 @@ msgid "" " git rebase --continue\n" msgstr "" -#: git-rebase--interactive.sh:1130 +#: git-rebase--interactive.sh:1091 msgid "Error trying to find the author identity to amend commit" msgstr "" -#: git-rebase--interactive.sh:1135 +#: git-rebase--interactive.sh:1096 msgid "" "You have uncommitted changes in your working tree. Please commit them\n" "first and then run 'git rebase --continue' again." msgstr "" -#: git-rebase--interactive.sh:1140 git-rebase--interactive.sh:1144 +#: git-rebase--interactive.sh:1101 git-rebase--interactive.sh:1105 msgid "Could not commit staged changes." msgstr "" -#: git-rebase--interactive.sh:1168 +#: git-rebase--interactive.sh:1129 msgid "" "\n" "You are editing the todo file of an ongoing interactive rebase.\n" @@ -12929,51 +12776,51 @@ msgid "" "\n" msgstr "" -#: git-rebase--interactive.sh:1176 git-rebase--interactive.sh:1337 +#: git-rebase--interactive.sh:1137 git-rebase--interactive.sh:1298 msgid "Could not execute editor" msgstr "" -#: git-rebase--interactive.sh:1184 +#: git-rebase--interactive.sh:1145 msgid "You need to set your committer info first" msgstr "" -#: git-rebase--interactive.sh:1192 +#: git-rebase--interactive.sh:1153 #, sh-format msgid "Could not checkout $switch_to" msgstr "" -#: git-rebase--interactive.sh:1197 +#: git-rebase--interactive.sh:1158 msgid "No HEAD?" msgstr "" -#: git-rebase--interactive.sh:1198 +#: git-rebase--interactive.sh:1159 #, sh-format msgid "Could not create temporary $state_dir" msgstr "" -#: git-rebase--interactive.sh:1200 +#: git-rebase--interactive.sh:1161 msgid "Could not mark as interactive" msgstr "" -#: git-rebase--interactive.sh:1210 git-rebase--interactive.sh:1215 +#: git-rebase--interactive.sh:1171 git-rebase--interactive.sh:1176 msgid "Could not init rewritten commits" msgstr "" -#: git-rebase--interactive.sh:1315 +#: git-rebase--interactive.sh:1276 #, sh-format msgid "Rebase $shortrevisions onto $shortonto ($todocount command)" msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)" msgstr[0] "" msgstr[1] "" -#: git-rebase--interactive.sh:1320 +#: git-rebase--interactive.sh:1281 msgid "" "\n" "However, if you remove everything, the rebase will be aborted.\n" "\n" msgstr "" -#: git-rebase--interactive.sh:1327 +#: git-rebase--interactive.sh:1288 msgid "Note that empty commits are commented out" msgstr "" diff --git a/po/pt_PT.po b/po/pt_PT.po index f2cc93fe2a..13610a0aa9 100644 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: Git\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2016-05-24 23:42+0800\n" -"PO-Revision-Date: 2016-05-31 18:17+0000\n" +"POT-Creation-Date: 2016-08-15 22:43+0800\n" +"PO-Revision-Date: 2016-08-24 14:07+0000\n" "Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -23,9 +23,34 @@ msgstr "" #: advice.c:55 #, c-format msgid "hint: %.*s\n" -msgstr "sugestão: %.*s\n" +msgstr "dica: %.*s\n" -#: advice.c:88 +#: advice.c:83 +msgid "Cherry-picking is not possible because you have unmerged files." +msgstr "Não é possível efetuar cherry-pick porque tem ficheiros não integrados." + +#: advice.c:85 +msgid "Committing is not possible because you have unmerged files." +msgstr "Não é possível submeter porque tem ficheiros não integrados." + +#: advice.c:87 +msgid "Merging is not possible because you have unmerged files." +msgstr "Não é possível integrar porque tem ficheiros não integrados." + +#: advice.c:89 +msgid "Pulling is not possible because you have unmerged files." +msgstr "Não é possível puxar porque tem ficheiros não integrados." + +#: advice.c:91 +msgid "Reverting is not possible because you have unmerged files." +msgstr "Não é possível reverte porque tem ficheiros não integrados." + +#: advice.c:93 +#, c-format +msgid "It is not possible to %s because you have unmerged files." +msgstr "Não é possível efetuar %s porque tem ficheiros não integrados." + +#: advice.c:101 msgid "" "Fix them up in the work tree, and then use 'git add/rm <file>'\n" "as appropriate to mark resolution and make a commit." @@ -33,18 +58,49 @@ msgstr "" "Corrija-os na árvore de trabalho e use 'git add/rm <ficheiro>'\n" "conforme apropriado para marcá-los como resolvidos e submeta." -#: advice.c:101 builtin/merge.c:1238 +#: advice.c:109 +msgid "Exiting because of an unresolved conflict." +msgstr "A terminar devido a conflito não resolvido." + +#: advice.c:114 builtin/merge.c:1181 msgid "You have not concluded your merge (MERGE_HEAD exists)." msgstr "Não concluído a integração (MERGE_HEAD presente)." -#: advice.c:103 +#: advice.c:116 msgid "Please, commit your changes before merging." msgstr "Submeta as suas alterações antes de integrar." -#: advice.c:104 +#: advice.c:117 msgid "Exiting because of unfinished merge." msgstr "A terminar devido a integração incompleta." +#: advice.c:123 +#, c-format +msgid "" +"Note: checking out '%s'.\n" +"\n" +"You are in 'detached HEAD' state. You can look around, make experimental\n" +"changes and commit them, and you can discard any commits you make in this\n" +"state without impacting any branches by performing another checkout.\n" +"\n" +"If you want to create a new branch to retain commits you create, you may\n" +"do so (now or later) by using -b with the checkout command again. Example:\n" +"\n" +" git checkout -b <new-branch-name>\n" +"\n" +msgstr "" +"Nota: a extrair '%s'.\n" +"\n" +"Encontra-se em estado 'HEAD destacada'. Pode inspecionar, fazer alterações\n" +"experimentais e submetê-las e pode descartar qualquer commit que faça neste\n" +"estado sem interferir outro ramo se extrair outro ramo.\n" +"\n" +"Se deseja criar um novo ramo para reter os commits que criou, pode fazê-lo\n" +"(agora ou mais tarde) usando -b com o comando checkout outra vez. Exemplo:\n" +"\n" +" git checkout -b <novo-nome-ramo>\n" +"\n" + #: archive.c:12 msgid "git archive [<options>] <tree-ish> [<path>...]" msgstr "git archive [<opções>] <árvore-etc> [<caminho>...]" @@ -64,7 +120,7 @@ msgstr "" msgid "git archive --remote <repo> [--exec <cmd>] --list" msgstr "git archive --remote <repo> [--exec <cmd>] --list" -#: archive.c:344 builtin/add.c:137 builtin/add.c:420 builtin/rm.c:327 +#: archive.c:344 builtin/add.c:139 builtin/add.c:435 builtin/rm.c:327 #, c-format msgid "pathspec '%s' did not match any files" msgstr "o especificador de caminho '%s' não corresponde a nenhum ficheiro" @@ -77,7 +133,7 @@ msgstr "fmt" msgid "archive format" msgstr "formato do arquivo" -#: archive.c:430 builtin/log.c:1395 +#: archive.c:430 builtin/log.c:1422 msgid "prefix" msgstr "prefixo" @@ -85,11 +141,11 @@ msgstr "prefixo" msgid "prepend prefix to each pathname in the archive" msgstr "preceder o prefixo a cada nome de caminho dentro do arquivo" -#: archive.c:432 builtin/archive.c:88 builtin/blame.c:2548 -#: builtin/blame.c:2549 builtin/config.c:60 builtin/fast-export.c:987 -#: builtin/fast-export.c:989 builtin/grep.c:722 builtin/hash-object.c:100 -#: builtin/ls-files.c:459 builtin/ls-files.c:462 builtin/notes.c:398 -#: builtin/notes.c:561 builtin/read-tree.c:109 parse-options.h:153 +#: archive.c:432 builtin/archive.c:88 builtin/blame.c:2553 builtin/blame.c:2554 +#: builtin/config.c:59 builtin/fast-export.c:987 builtin/fast-export.c:989 +#: builtin/grep.c:722 builtin/hash-object.c:100 builtin/ls-files.c:460 +#: builtin/ls-files.c:463 builtin/notes.c:399 builtin/notes.c:562 +#: builtin/read-tree.c:109 parse-options.h:153 msgid "file" msgstr "ficheiro" @@ -122,7 +178,7 @@ msgid "list supported archive formats" msgstr "listar formatos de arquivo suportados" #: archive.c:451 builtin/archive.c:90 builtin/clone.c:82 -#: builtin/submodule--helper.c:776 +#: builtin/submodule--helper.c:832 msgid "repo" msgstr "repo" @@ -130,7 +186,7 @@ msgstr "repo" msgid "retrieve the archive from remote repository <repo>" msgstr "obter o arquivo a partir do repositório remoto <repo>" -#: archive.c:453 builtin/archive.c:92 builtin/notes.c:482 +#: archive.c:453 builtin/archive.c:92 builtin/notes.c:483 msgid "command" msgstr "comando" @@ -138,6 +194,28 @@ msgstr "comando" msgid "path to the remote git-upload-archive command" msgstr "caminho para o comando git-upload-archive no remoto" +#: archive.c:461 +msgid "Unexpected option --remote" +msgstr "Opção inesperada --remote" + +#: archive.c:463 +msgid "Option --exec can only be used together with --remote" +msgstr "A opção --exec só pode ser usada em conjunto com --remote" + +#: archive.c:465 +msgid "Unexpected option --output" +msgstr "Opção inesperada --output" + +#: archive.c:487 +#, c-format +msgid "Unknown archive format '%s'" +msgstr "Formato de arquivo desconhecido '%s'" + +#: archive.c:494 +#, c-format +msgid "Argument not supported for format '%s': -%d" +msgstr "Argumento não suportado para o formato '%s': -%d" + #: attr.c:263 msgid "" "Negative patterns are ignored in git attributes\n" @@ -146,6 +224,130 @@ msgstr "" "Os padrões negativos são ignorados nos atributos do git\n" "Use '\\!' para uma exclamação literal à esquerda." +#: bisect.c:441 +#, c-format +msgid "Could not open file '%s'" +msgstr "Não foi possível abrir o ficheiro '%s'" + +#: bisect.c:446 +#, c-format +msgid "Badly quoted content in file '%s': %s" +msgstr "Conteúdo incorretamente citado no ficheiro '%s': %s" + +#: bisect.c:655 +#, c-format +msgid "We cannot bisect more!\n" +msgstr "Não se está a bissetar mais!\n" + +#: bisect.c:708 +#, c-format +msgid "Not a valid commit name %s" +msgstr "%s não é um nome de commit válido" + +#: bisect.c:732 +#, c-format +msgid "" +"The merge base %s is bad.\n" +"This means the bug has been fixed between %s and [%s].\n" +msgstr "" +"A base de integração %s é má (bad).\n" +"Significa que o bug foi corrigido entre %s e [%s].\n" + +#: bisect.c:737 +#, c-format +msgid "" +"The merge base %s is new.\n" +"The property has changed between %s and [%s].\n" +msgstr "" +"A base de integração %s é nova (new).\n" +"A propriedade foi mudada entre %s e [%s].\n" + +#: bisect.c:742 +#, c-format +msgid "" +"The merge base %s is %s.\n" +"This means the first '%s' commit is between %s and [%s].\n" +msgstr "" +"A base de integração %s é %s.\n" +"Significa que o primeiro commit '%s' está entre %s e [%s].\n" + +#: bisect.c:750 +#, c-format +msgid "" +"Some %s revs are not ancestor of the %s rev.\n" +"git bisect cannot work properly in this case.\n" +"Maybe you mistook %s and %s revs?\n" +msgstr "" +"Algumas revisões %s não antecedem a revisão %s.\n" +"git bisect não pode funcionar corretamente nesta situação.\n" +"Talvez confundiu revisões %s e %s?\n" + +#: bisect.c:763 +#, c-format +msgid "" +"the merge base between %s and [%s] must be skipped.\n" +"So we cannot be sure the first %s commit is between %s and %s.\n" +"We continue anyway." +msgstr "" +"tem-se que saltar a base de integração entre %s e [%s].\n" +"Portanto não se pode ter a certeza que o primeiro commit %s está entre %s e " +"%s.\n" +"Continua-se de qualquer maneira." + +#: bisect.c:798 +#, c-format +msgid "Bisecting: a merge base must be tested\n" +msgstr "A bissetar: uma base de integração tem de ser testada\n" + +#: bisect.c:849 +#, c-format +msgid "a %s revision is needed" +msgstr "precisa-se de uma revisão %s" + +#: bisect.c:866 builtin/notes.c:174 builtin/tag.c:248 +#, c-format +msgid "could not create file '%s'" +msgstr "não foi possível criar o ficheiro '%s'" + +#: bisect.c:917 +#, c-format +msgid "could not read file '%s'" +msgstr "não foi possível ler o ficheiro '%s'" + +#: bisect.c:947 +msgid "reading bisect refs failed" +msgstr "falha ao ler referências bissetadas" + +#: bisect.c:967 +#, c-format +msgid "%s was both %s and %s\n" +msgstr "%s era %s e %s em simultâneo\n" + +#: bisect.c:975 +#, c-format +msgid "" +"No testable commit found.\n" +"Maybe you started with bad path parameters?\n" +msgstr "" +"Nenhum commit testável encontrado.\n" +"Talvez tenha começado com parâmetros de caminho incorretos?\n" + +#: bisect.c:994 +#, c-format +msgid "(roughly %d step)" +msgid_plural "(roughly %d steps)" +msgstr[0] "(aproximadamente %d passo)" +msgstr[1] "(aproximadamente %d passos)" + +#. TRANSLATORS: the last %s will be replaced with +#. "(roughly %d steps)" translation +#: bisect.c:998 +#, c-format +msgid "Bisecting: %d revision left to test after this %s\n" +msgid_plural "Bisecting: %d revisions left to test after this %s\n" +msgstr[0] "A bissetar: falta %d revisão para testar depois desta %s\n" +msgstr[1] "A bissetar: faltam %d revisões para testar depois desta %s\n" + #: branch.c:53 #, c-format msgid "" @@ -293,7 +495,7 @@ msgstr "'%s' não parece ser um ficheiro bundle v2" msgid "unrecognized header: %s%s (%d)" msgstr "cabeçalho não reconhecido: %s%s (%d)" -#: bundle.c:87 builtin/commit.c:777 +#: bundle.c:87 builtin/commit.c:778 #, c-format msgid "could not open '%s'" msgstr "não foi possível abrir '%s'" @@ -302,10 +504,10 @@ msgstr "não foi possível abrir '%s'" msgid "Repository lacks these prerequisite commits:" msgstr "O repositório não possuí estes commits pré-requisitados:" -#: bundle.c:163 ref-filter.c:1462 sequencer.c:627 sequencer.c:1073 -#: builtin/blame.c:2755 builtin/commit.c:1056 builtin/log.c:340 -#: builtin/log.c:863 builtin/log.c:1308 builtin/log.c:1633 builtin/log.c:1875 -#: builtin/merge.c:361 builtin/shortlog.c:170 +#: bundle.c:163 ref-filter.c:1462 sequencer.c:630 sequencer.c:1085 +#: builtin/blame.c:2763 builtin/commit.c:1057 builtin/log.c:348 +#: builtin/log.c:890 builtin/log.c:1336 builtin/log.c:1659 builtin/log.c:1901 +#: builtin/merge.c:356 builtin/shortlog.c:170 msgid "revision walk setup failed" msgstr "falha ao configurar percurso de revisões" @@ -344,7 +546,7 @@ msgstr "rev-list terminou inesperadamente" msgid "ref '%s' is excluded by the rev-list options" msgstr "a referência '%s' é excluída pelas opções de rev-list" -#: bundle.c:443 builtin/log.c:163 builtin/log.c:1538 builtin/shortlog.c:273 +#: bundle.c:443 builtin/log.c:165 builtin/log.c:1565 builtin/shortlog.c:273 #, c-format msgid "unrecognized argument: %s" msgstr "argumento não reconhecido: %s" @@ -362,13 +564,13 @@ msgstr "não é possível criar '%s'" msgid "index-pack died" msgstr "index-pack terminou inesperadamente" -#: color.c:275 +#: color.c:290 #, c-format msgid "invalid color value: %.*s" msgstr "valor de cor inválido: %.*s" -#: commit.c:40 builtin/am.c:437 builtin/am.c:473 builtin/am.c:1504 -#: builtin/am.c:2134 +#: commit.c:40 builtin/am.c:433 builtin/am.c:469 builtin/am.c:1505 +#: builtin/am.c:2119 #, c-format msgid "could not parse %s" msgstr "não foi possível analisar %s" @@ -382,129 +584,242 @@ msgstr "%s %s não é um commit!" msgid "memory exhausted" msgstr "memória esgotada" -#: config.c:475 config.c:477 -#, fuzzy, c-format -msgid "bad config line %d in %s %s" -msgstr "linha %d de configuração incorreta em %s %s" +#: config.c:516 +#, c-format +msgid "bad config line %d in blob %s" +msgstr "linha de configuração %d incorreta no blob %s" + +#: config.c:520 +#, c-format +msgid "bad config line %d in file %s" +msgstr "linha de configuração %d incorreta no ficheiro %s" + +#: config.c:524 +#, c-format +msgid "bad config line %d in standard input" +msgstr "linha de configuração %d incorreta na entrada padrão" -#: config.c:593 -#, c-format, fuzzy -msgid "bad numeric config value '%s' for '%s' in %s %s: %s" -msgstr "valor numérico '%s' da configuração '%s' em %s %s incorreto: %s" +#: config.c:528 +#, c-format +msgid "bad config line %d in submodule-blob %s" +msgstr "linha de configuração %d incorreta no submódulo-blob %s" -#: config.c:595 +#: config.c:532 #, c-format -msgid "bad numeric config value '%s' for '%s': %s" -msgstr "valor numérico '%s' da configuração '%s' incorreto: %s" +msgid "bad config line %d in command line %s" +msgstr "linha de configuração %d incorreta na linha de comandos %s" -#: config.c:680 +#: config.c:536 +#, c-format +msgid "bad config line %d in %s" +msgstr "linha de configuração %d incorreta em %s" + +#: config.c:660 +#, c-format +msgid "bad numeric config value '%s' for '%s': out of range" +msgstr "valor numérico '%s' da configuração '%s' incorreto: fora de intervalo" + +#: config.c:661 +#, c-format +msgid "bad numeric config value '%s' for '%s': invalid unit" +msgstr "valor numérico '%s' da configuração '%s' incorreto: unidade inválida" + +#: config.c:667 +#, c-format +msgid "bad numeric config value '%s' for '%s' in blob %s: out of range" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto no blob %s: fora de " +"intervalo" + +#: config.c:668 +#, c-format +msgid "bad numeric config value '%s' for '%s' in blob %s: invalid unit" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto no blob %s: unidade " +"inválida" + +#: config.c:672 +#, c-format +msgid "bad numeric config value '%s' for '%s' in file %s: out of range" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: fora de " +"intervalo" + +#: config.c:673 +#, c-format +msgid "bad numeric config value '%s' for '%s' in file %s: invalid unit" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: unidade " +"inválida" + +#: config.c:677 +#, c-format +msgid "bad numeric config value '%s' for '%s' in standard input: out of range" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto na entrada padrão: fora " +"de intervalo" + +#: config.c:678 +#, c-format +msgid "bad numeric config value '%s' for '%s' in standard input: invalid unit" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto na entrada padrão: " +"unidade inválida" + +#: config.c:682 +#, c-format +msgid "" +"bad numeric config value '%s' for '%s' in submodule-blob %s: out of range" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: " +"fora de intervalo" + +#: config.c:683 +#, c-format +msgid "" +"bad numeric config value '%s' for '%s' in submodule-blob %s: invalid unit" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: " +"unidade inválida" + +#: config.c:687 +#, c-format +msgid "bad numeric config value '%s' for '%s' in command line %s: out of range" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto na linha de comandos %s: " +"fora de intervalo" + +#: config.c:688 +#, c-format +msgid "bad numeric config value '%s' for '%s' in command line %s: invalid unit" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto na linha de comandos %s: " +"unidade inválida" + +#: config.c:692 +#, c-format +msgid "bad numeric config value '%s' for '%s' in %s: out of range" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto em %s: fora de intervalo" + +#: config.c:693 +#, c-format +msgid "bad numeric config value '%s' for '%s' in %s: invalid unit" +msgstr "" +"valor numérico '%s' da configuração '%s' incorreto em %s: unidade inválida" + +#: config.c:780 #, c-format msgid "failed to expand user dir in: '%s'" msgstr "falha ao expandir diretório de utilizador em: '%s'" -#: config.c:761 config.c:772 +#: config.c:861 config.c:872 #, c-format msgid "bad zlib compression level %d" msgstr "nível de compressão zlib %d incorreto" -#: config.c:890 +#: config.c:990 #, c-format msgid "invalid mode for object creation: %s" msgstr "modo inválido para criação de objeto: %s" -#: config.c:1228 +#: config.c:1324 msgid "unable to parse command-line config" msgstr "não é possível analisar configuração de linha de comandos" -#: config.c:1284 -msgid "unknown error occured while reading the configuration files" +#: config.c:1374 +msgid "unknown error occurred while reading the configuration files" msgstr "" "ocorreu um erro desconhecido durante a leitura dos ficheiros de configuração" -#: config.c:1629 +#: config.c:1728 #, c-format msgid "unable to parse '%s' from command-line config" msgstr "não é possível analisar '%s' da configuração de linha de comandos" -#: config.c:1631 +#: config.c:1730 #, c-format msgid "bad config variable '%s' in file '%s' at line %d" msgstr "variável de configuração '%s' incorreta no ficheiro '%s' na linha %d" -#: config.c:1690 +#: config.c:1789 #, c-format msgid "%s has multiple values" msgstr "%s tem múltiplos valores" -#: config.c:2224 +#: config.c:2323 #, c-format msgid "could not set '%s' to '%s'" msgstr "não foi possível definir '%s' como '%s'" -#: config.c:2226 +#: config.c:2325 #, c-format msgid "could not unset '%s'" msgstr "não foi possível reiniciar '%s'" -#: connected.c:69 +#: connected.c:63 builtin/fsck.c:173 builtin/prune.c:140 +msgid "Checking connectivity" +msgstr "A verificar conectividade" + +#: connected.c:74 msgid "Could not run 'git rev-list'" msgstr "Não foi possível executar 'git rev-list'" -#: connected.c:89 +#: connected.c:94 msgid "failed write to rev-list" msgstr "falha ao escrever para rev-list" -#: connected.c:96 +#: connected.c:101 msgid "failed to close rev-list's stdin" msgstr "falha ao fechar entrada padrão de rev-list" -#: date.c:95 +#: date.c:97 msgid "in the future" msgstr "no futuro" -#: date.c:101 +#: date.c:103 #, c-format msgid "%lu second ago" msgid_plural "%lu seconds ago" -msgstr[0] "há %lu segundo atrás" -msgstr[1] "há %lu segundos atrás" +msgstr[0] "há %lu segundo" +msgstr[1] "há %lu segundos" -#: date.c:108 +#: date.c:110 #, c-format msgid "%lu minute ago" msgid_plural "%lu minutes ago" -msgstr[0] "há %lu minuto atrás" -msgstr[1] "há %lu minutos atrás" +msgstr[0] "há %lu minuto" +msgstr[1] "há %lu minutos" -#: date.c:115 +#: date.c:117 #, c-format msgid "%lu hour ago" msgid_plural "%lu hours ago" -msgstr[0] "há %lu hora atrás" -msgstr[1] "há %lu horas atrás" +msgstr[0] "há %lu hora" +msgstr[1] "há %lu horas" -#: date.c:122 +#: date.c:124 #, c-format msgid "%lu day ago" msgid_plural "%lu days ago" -msgstr[0] "há %lu dia atrás" -msgstr[1] "há %lu dias atrás" +msgstr[0] "há %lu dia" +msgstr[1] "há %lu dias" -#: date.c:128 +#: date.c:130 #, c-format msgid "%lu week ago" msgid_plural "%lu weeks ago" -msgstr[0] "há %lu semana atrás" -msgstr[1] "há %lu semanas atrás" +msgstr[0] "há %lu semana" +msgstr[1] "há %lu semanas" -#: date.c:135 +#: date.c:137 #, c-format msgid "%lu month ago" msgid_plural "%lu months ago" -msgstr[0] "há %lu mês atrás" -msgstr[1] "há %lu meses atrás" +msgstr[0] "há %lu mês" +msgstr[1] "há %lu meses" -#: date.c:146 +#: date.c:148 #, c-format msgid "%lu year" msgid_plural "%lu years" @@ -512,26 +827,26 @@ msgstr[0] "%lu ano" msgstr[1] "%lu anos" #. TRANSLATORS: "%s" is "<n> years" -#: date.c:149 +#: date.c:151 #, c-format msgid "%s, %lu month ago" msgid_plural "%s, %lu months ago" msgstr[0] "há %s e %lu mês" msgstr[1] "há %s e %lu meses" -#: date.c:154 date.c:159 +#: date.c:156 date.c:161 #, c-format msgid "%lu year ago" msgid_plural "%lu years ago" -msgstr[0] "há %lu ano atrás" -msgstr[1] "há %lu anos atrás" +msgstr[0] "há %lu ano" +msgstr[1] "há %lu anos" #: diffcore-order.c:24 #, c-format msgid "failed to read orderfile '%s'" msgstr "falha ao ler o ficheiro de comando '%s'" -#: diffcore-rename.c:538 +#: diffcore-rename.c:540 msgid "Performing inexact rename detection" msgstr "Deteção de mudança de nome inexata em curso" @@ -559,16 +874,16 @@ msgstr "" "Erros encontrados na variável de configuração 'diff.dirstat':\n" "%s" -#: diff.c:3007 +#: diff.c:3017 #, c-format msgid "external diff died, stopping at %s" msgstr "o diff externo terminou inesperadamente, interrompido em %s" -#: diff.c:3405 +#: diff.c:3415 msgid "--follow requires exactly one pathspec" msgstr "--follow requer exatamente um único especificador de caminho" -#: diff.c:3568 +#: diff.c:3578 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" @@ -577,7 +892,7 @@ msgstr "" "Falha ao analisar parâmetro da opção --dirstat/-X:\n" "%s" -#: diff.c:3582 +#: diff.c:3592 #, c-format msgid "Failed to parse --submodule option parameter: '%s'" msgstr "Falha ao analisar parâmetro da opção --submodule: '%s'" @@ -590,39 +905,30 @@ msgstr "falha ao obter nome e informação do kernel" msgid "Untracked cache is disabled on this system or location." msgstr "A cache não controlada está desativada neste sistema ou localização." -#: gpg-interface.c:166 gpg-interface.c:235 -msgid "could not run gpg." -msgstr "não foi possível executar gpg." - #: gpg-interface.c:178 -msgid "gpg did not accept the data" -msgstr "gpg não aceitou os dados" - -#: gpg-interface.c:189 msgid "gpg failed to sign the data" msgstr "gpg não assinou os dados" -#: gpg-interface.c:222 -#, c-format -msgid "could not create temporary file '%s'" -msgstr "não foi possível criar ficheiro temporário '%s'" +#: gpg-interface.c:208 +msgid "could not create temporary file" +msgstr "não foi possível criar ficheiro temporário" -#: gpg-interface.c:224 +#: gpg-interface.c:210 #, c-format msgid "failed writing detached signature to '%s'" msgstr "falha ao escrever assinatura destacada em '%s'" -#: grep.c:1718 +#: grep.c:1792 #, c-format msgid "'%s': unable to read %s" msgstr "'%s': não foi possível ler %s" -#: grep.c:1735 builtin/clone.c:382 builtin/diff.c:84 builtin/rm.c:155 +#: grep.c:1809 builtin/clone.c:382 builtin/diff.c:84 builtin/rm.c:155 #, c-format msgid "failed to stat '%s'" msgstr "falha ao invocar stat de '%s'" -#: grep.c:1746 +#: grep.c:1820 #, c-format msgid "'%s': short read" msgstr "'%s': leitura truncada" @@ -672,7 +978,7 @@ msgstr "automaticamente em %0.1f..." msgid "git: '%s' is not a git command. See 'git --help'." msgstr "git: '%s' não é um comando do git. Consulte 'git --help'." -#: help.c:404 help.c:464 +#: help.c:404 help.c:470 msgid "" "\n" "Did you mean this?" @@ -686,7 +992,7 @@ msgstr[1] "" "\n" "Queria dizer deste?" -#: help.c:460 +#: help.c:466 #, c-format msgid "%s: %s - %s" msgstr "%s: %s - %s" @@ -719,83 +1025,78 @@ msgstr "Não é foi possível criar '%s.lock': %s" msgid "failed to read the cache" msgstr "falha ao ler a cache" -#: merge.c:94 builtin/am.c:2007 builtin/am.c:2042 builtin/checkout.c:375 -#: builtin/checkout.c:586 builtin/clone.c:732 +#: merge.c:94 builtin/am.c:1992 builtin/am.c:2027 builtin/checkout.c:375 +#: builtin/checkout.c:589 builtin/clone.c:732 msgid "unable to write new index file" msgstr "não foi possível escrever novo ficheiro de índice" -#: merge-recursive.c:189 -#, c-format +#: merge-recursive.c:212 msgid "(bad commit)\n" msgstr "(commit incorreto)\n" -#: merge-recursive.c:209 +#: merge-recursive.c:234 #, c-format msgid "addinfo_cache failed for path '%s'" msgstr "addinfo_cache falhou no caminho '%s'" -#: merge-recursive.c:270 +#: merge-recursive.c:304 msgid "error building trees" msgstr "erro ao construir árvores" -#: merge-recursive.c:689 +#: merge-recursive.c:723 #, c-format msgid "failed to create path '%s'%s" msgstr "falha ao criar o caminho '%s'%s" -#: merge-recursive.c:700 +#: merge-recursive.c:734 #, c-format msgid "Removing %s to make room for subdirectory\n" msgstr "A remover %s para criar espaço para o subdiretório\n" -#: merge-recursive.c:714 merge-recursive.c:735 +#: merge-recursive.c:748 merge-recursive.c:767 msgid ": perhaps a D/F conflict?" msgstr ": talvez um conflito D/F?" -#: merge-recursive.c:725 +#: merge-recursive.c:757 #, c-format msgid "refusing to lose untracked file at '%s'" msgstr "perda de ficheiro não controlado em '%s' recusada" -#: merge-recursive.c:765 +#: merge-recursive.c:799 #, c-format msgid "cannot read object %s '%s'" msgstr "não é possível ler o objeto %s: '%s'" -#: merge-recursive.c:767 +#: merge-recursive.c:801 #, c-format msgid "blob expected for %s '%s'" msgstr "blob para %s '%s' esperado" -#: merge-recursive.c:790 builtin/clone.c:376 +#: merge-recursive.c:825 #, c-format -msgid "failed to open '%s'" -msgstr "falha ao abrir '%s'" +msgid "failed to open '%s': %s" +msgstr "falha ao abrir '%s': %s" -#: merge-recursive.c:798 +#: merge-recursive.c:836 #, c-format -msgid "failed to symlink '%s'" -msgstr "falha ao criar a ligação simbólica '%s'" +msgid "failed to symlink '%s': %s" +msgstr "falha ao criar a ligação simbólica '%s': %s" -#: merge-recursive.c:801 +#: merge-recursive.c:841 #, c-format msgid "do not know what to do with %06o %s '%s'" msgstr "não sei o que fazer com %06o %s '%s'" -#: merge-recursive.c:939 +#: merge-recursive.c:981 msgid "Failed to execute internal merge" msgstr "Falha ao executar integração interna" -#: merge-recursive.c:943 +#: merge-recursive.c:985 #, c-format msgid "Unable to add %s to database" msgstr "Não é possível adicionar %s à base de dados" -#: merge-recursive.c:959 -msgid "unsupported object type in the tree" -msgstr "tipo de objeto sem suporte encontrado na árvore" - -#: merge-recursive.c:1034 merge-recursive.c:1048 +#: merge-recursive.c:1084 merge-recursive.c:1098 #, c-format msgid "" "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left " @@ -804,7 +1105,7 @@ msgstr "" "CONFLITO (%s/eliminar): %s eliminado em %s e %s em %s. Versão de %s de %s " "deixada na árvore." -#: merge-recursive.c:1040 merge-recursive.c:1053 +#: merge-recursive.c:1090 merge-recursive.c:1103 #, c-format msgid "" "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left " @@ -813,169 +1114,160 @@ msgstr "" "CONFLITO (%s/eliminar): %s eliminado em %s e %s em %s. Versão de %s de %s " "deixada na árvore em %s." -#: merge-recursive.c:1094 +#: merge-recursive.c:1146 msgid "rename" msgstr "mudar nome" -#: merge-recursive.c:1094 +#: merge-recursive.c:1146 msgid "renamed" msgstr "nome mudado" -#: merge-recursive.c:1150 +#: merge-recursive.c:1203 #, c-format msgid "%s is a directory in %s adding as %s instead" msgstr "%s é um diretório em %s adicionando %s no seu lugar" -#: merge-recursive.c:1172 +#: merge-recursive.c:1228 #, c-format msgid "" "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s" "\"->\"%s\" in \"%s\"%s" msgstr "" -"CONFLITO (mudar nome/mudar nome): Mudar o nome \"%s\"->\"%s\" no ramo \"%s\" " -"mudar o nome \"%s\"->\"%s\" em \"%s\"%s" +"CONFLITO (mudar nome/mudar nome): Mudar o nome \"%s\"->\"%s\" no ramo \"%s\" mudar " +"o nome \"%s\"->\"%s\" em \"%s\"%s" -#: merge-recursive.c:1177 +#: merge-recursive.c:1233 msgid " (left unresolved)" msgstr " (por resolver)" -#: merge-recursive.c:1231 +#: merge-recursive.c:1295 #, c-format msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s" msgstr "" -"CONFLITO (mudar nome/mudar nome): Mudar de nome %s->%s em %s. Mudar o nome " -"%s->%s em %s" +"CONFLITO (mudar nome/mudar nome): Mudar de nome %s->%s em %s. Mudar o nome %" +"s->%s em %s" -#: merge-recursive.c:1261 +#: merge-recursive.c:1328 #, c-format msgid "Renaming %s to %s and %s to %s instead" msgstr "A mudar o nome de %s para %s e de %s para %s, em alternativa" -#: merge-recursive.c:1460 +#: merge-recursive.c:1534 #, c-format msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s" msgstr "" "CONFLITO (mudar nome/adicionar): Mudar o nome %s->%s em %s. %s adicionado em " "%s" -#: merge-recursive.c:1470 +#: merge-recursive.c:1549 #, c-format msgid "Adding merged %s" msgstr "A adicionar %s integrado" -#: merge-recursive.c:1475 merge-recursive.c:1677 +#: merge-recursive.c:1556 merge-recursive.c:1769 #, c-format msgid "Adding as %s instead" msgstr "A adicionar como %s, em alternativa." -#: merge-recursive.c:1526 +#: merge-recursive.c:1613 #, c-format msgid "cannot read object %s" msgstr "não foi possível ler o objeto %s" -#: merge-recursive.c:1529 +#: merge-recursive.c:1616 #, c-format msgid "object %s is not a blob" msgstr "o objeto %s não é um blob" -#: merge-recursive.c:1581 +#: merge-recursive.c:1669 msgid "modify" msgstr "modificar" -#: merge-recursive.c:1581 +#: merge-recursive.c:1669 msgid "modified" msgstr "modificado" -#: merge-recursive.c:1591 +#: merge-recursive.c:1679 msgid "content" msgstr "conteúdo" -#: merge-recursive.c:1598 +#: merge-recursive.c:1686 msgid "add/add" msgstr "adicionar/adicionar" -#: merge-recursive.c:1632 +#: merge-recursive.c:1721 #, c-format msgid "Skipped %s (merged same as existing)" msgstr "%s ignorado (integrado é igual ao existente)" -#: merge-recursive.c:1646 +#: merge-recursive.c:1735 #, c-format msgid "Auto-merging %s" msgstr "A integrar automaticamente %s" -#: merge-recursive.c:1650 git-submodule.sh:941 +#: merge-recursive.c:1739 git-submodule.sh:919 msgid "submodule" msgstr "submódulo" -#: merge-recursive.c:1651 +#: merge-recursive.c:1740 #, c-format msgid "CONFLICT (%s): Merge conflict in %s" msgstr "CONFLITO (%s): conflito de integração em %s" -#: merge-recursive.c:1737 +#: merge-recursive.c:1834 #, c-format msgid "Removing %s" msgstr "A remover %s" -#: merge-recursive.c:1762 +#: merge-recursive.c:1860 msgid "file/directory" msgstr "ficheiro/diretório" -#: merge-recursive.c:1768 +#: merge-recursive.c:1866 msgid "directory/file" msgstr "diretório/ficheiro" -#: merge-recursive.c:1773 +#: merge-recursive.c:1871 #, c-format msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s" msgstr "" "CONFLITO (%s): Há um diretório designado %s em %s. A adicionar %s como %s" -#: merge-recursive.c:1781 +#: merge-recursive.c:1880 #, c-format msgid "Adding %s" msgstr "A adicionar %s" -#: merge-recursive.c:1798 -msgid "Fatal merge failure, shouldn't happen." -msgstr "Falha de integração fatal, não devia acontecer." - -#: merge-recursive.c:1817 +#: merge-recursive.c:1917 msgid "Already up-to-date!" msgstr "Já está atualizado!" -#: merge-recursive.c:1826 +#: merge-recursive.c:1926 #, c-format msgid "merging of trees %s and %s failed" msgstr "falha ao integrar as árvores %s e %s" -#: merge-recursive.c:1856 -#, c-format -msgid "Unprocessed path??? %s" -msgstr "Caminho não processado??? %s" - -#: merge-recursive.c:1904 +#: merge-recursive.c:2009 msgid "Merging:" msgstr "A integrar:" -#: merge-recursive.c:1917 +#: merge-recursive.c:2022 #, c-format msgid "found %u common ancestor:" msgid_plural "found %u common ancestors:" msgstr[0] "%u antecessor comum encontrado:" msgstr[1] "%u antecessores comuns encontrados:" -#: merge-recursive.c:1954 +#: merge-recursive.c:2061 msgid "merge returned no commit" msgstr "a integração não retornou nenhum commit" -#: merge-recursive.c:2011 +#: merge-recursive.c:2124 #, c-format msgid "Could not parse object '%s'" msgstr "Não foi possível analisar o objeto '%s'" -#: merge-recursive.c:2022 builtin/merge.c:649 builtin/merge.c:831 +#: merge-recursive.c:2138 builtin/merge.c:641 builtin/merge.c:788 msgid "Unable to write index." msgstr "Não é possível escrever no índice." @@ -1022,7 +1314,7 @@ msgstr "utilização: %s" msgid " or: %s" msgstr " ou: %s" -#: parse-options.c:597 +#: parse-options.c:598 #, c-format msgid " %s" msgstr " %s" @@ -1108,7 +1400,7 @@ msgstr "" "Não há nada para excluir de acordo com o padrão :(excluir).\n" "Talvez se tenha esquecido de acrescentar ':/' ou '.' ?" -#: pretty.c:971 +#: pretty.c:973 msgid "unable to parse --pretty format" msgstr "não foi possível analisar o formato de --pretty" @@ -1134,23 +1426,22 @@ msgstr "" "GIT_INDEX_VERSION definido, mas com valor inválido.\n" "A usar a versão %i" -#: refs.c:543 builtin/merge.c:764 builtin/merge.c:883 builtin/merge.c:985 -#: builtin/merge.c:995 +#: refs.c:551 builtin/merge.c:840 #, c-format msgid "Could not open '%s' for writing" msgstr "Não foi possível abrir '%s' para escrita" -#: refs/files-backend.c:2243 +#: refs/files-backend.c:2534 #, c-format msgid "could not delete reference %s: %s" msgstr "não foi possível eliminar a referência %s: %s" -#: refs/files-backend.c:2246 +#: refs/files-backend.c:2537 #, c-format msgid "could not delete references: %s" msgstr "não foi possível eliminar as referências: %s" -#: refs/files-backend.c:2255 +#: refs/files-backend.c:2546 #, c-format msgid "could not remove reference %s" msgstr "não foi possível eliminar a referência %s" @@ -1308,79 +1599,79 @@ msgstr "%s segue %s e %s em simultâneo" msgid "Internal error" msgstr "Erro interno" -#: remote.c:1678 remote.c:1721 +#: remote.c:1677 remote.c:1720 msgid "HEAD does not point to a branch" msgstr "HEAD não aponta para um ramo" -#: remote.c:1687 +#: remote.c:1686 #, c-format msgid "no such branch: '%s'" msgstr "ramo inexistente: '%s'" -#: remote.c:1690 +#: remote.c:1689 #, c-format msgid "no upstream configured for branch '%s'" msgstr "nenhum ramo a montante configurado para o ramo '%s'" -#: remote.c:1696 +#: remote.c:1695 #, c-format msgid "upstream branch '%s' not stored as a remote-tracking branch" msgstr "" "o ramo a montante '%s' não está guardado como um ramo de monitorização remoto" -#: remote.c:1711 +#: remote.c:1710 #, c-format msgid "push destination '%s' on remote '%s' has no local tracking branch" msgstr "" "o destino de publicação '%s' no remoto '%s' não é seguido por nenhum ramo " "local" -#: remote.c:1726 +#: remote.c:1725 #, c-format msgid "branch '%s' has no remote for pushing" msgstr "o ramo '%s' não tem nenhum remoto para publicar" -#: remote.c:1737 +#: remote.c:1736 #, c-format msgid "push refspecs for '%s' do not include '%s'" msgstr "" "'%2$s' não faz parte dos especificadores de referência de '%1$s' para " "publicação" -#: remote.c:1750 +#: remote.c:1749 msgid "push has no destination (push.default is 'nothing')" msgstr "publicação sem destino (push.default é 'nothing')" -#: remote.c:1772 +#: remote.c:1771 msgid "cannot resolve 'simple' push to a single destination" msgstr "não é possível resolver a publicação 'simple' num único destino" -#: remote.c:2074 +#: remote.c:2073 #, c-format msgid "Your branch is based on '%s', but the upstream is gone.\n" msgstr "A base do seu ramo é '%s', mas o ramo a montante desapareceu.\n" -#: remote.c:2078 +#: remote.c:2077 msgid " (use \"git branch --unset-upstream\" to fixup)\n" msgstr " (use \"git branch --unset-upstream\" para corrigir)\n" -#: remote.c:2081 +#: remote.c:2080 #, c-format msgid "Your branch is up-to-date with '%s'.\n" msgstr "O seu ramo está atualizado com '%s'.\n" -#: remote.c:2085 +#: remote.c:2084 #, c-format msgid "Your branch is ahead of '%s' by %d commit.\n" msgid_plural "Your branch is ahead of '%s' by %d commits.\n" msgstr[0] "O seu ramo está à frente de '%s' por %d commit.\n" msgstr[1] "O seu ramo está à frente de '%s' por %d commits.\n" -#: remote.c:2091 +#: remote.c:2090 msgid " (use \"git push\" to publish your local commits)\n" msgstr " (use \"git push\" para publicar os commits locais)\n" -#: remote.c:2094 +#: remote.c:2093 #, c-format msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n" msgid_plural "" @@ -1392,11 +1683,11 @@ msgstr[1] "" "O seu ramo está atrás de '%s' por %d commits, podendo ser atualizado com " "avanço rápido.\n" -#: remote.c:2102 +#: remote.c:2101 msgid " (use \"git pull\" to update your local branch)\n" msgstr " (use \"git pull\" para atualizar o seu ramo local)\n" -#: remote.c:2105 +#: remote.c:2104 #, c-format msgid "" "Your branch and '%s' have diverged,\n" @@ -1411,20 +1702,20 @@ msgstr[1] "" "O seu ramo e '%s' divergiram,\n" "tendo cada um %d e %d commits diferentes, respetivamente.\n" -#: remote.c:2115 +#: remote.c:2114 msgid " (use \"git pull\" to merge the remote branch into yours)\n" msgstr " (use \"git pull\" para integrar o ramo remoto no seu ramo)\n" -#: revision.c:2142 +#: revision.c:2132 msgid "your current branch appears to be broken" msgstr "o ramo atual parece estar danificado" -#: revision.c:2145 +#: revision.c:2135 #, c-format msgid "your current branch '%s' does not have any commits yet" msgstr "o ramo atual '%s' ainda não contém nenhum commit" -#: revision.c:2339 +#: revision.c:2329 msgid "--first-parent is incompatible with --bisect" msgstr "--first-parent é incompatível com --bisect" @@ -1437,15 +1728,15 @@ msgstr "falha ao abrir /dev/null" msgid "dup2(%d,%d) failed" msgstr "dup2(%d,%d) falhou" -#: send-pack.c:295 +#: send-pack.c:298 msgid "failed to sign the push certificate" msgstr "falha ao assinar o certificado de publicação" -#: send-pack.c:404 +#: send-pack.c:411 msgid "the receiving end does not support --signed push" msgstr "o recetor não suporta publicação com --signed" -#: send-pack.c:406 +#: send-pack.c:413 msgid "" "not sending a push certificate since the receiving end does not support --" "signed push" @@ -1453,10 +1744,14 @@ msgstr "" "certificado de publicação não enviado uma vez que o recetor não suporta " "publicação com --signed" -#: send-pack.c:418 +#: send-pack.c:425 msgid "the receiving end does not support --atomic push" msgstr "o recetor não suporta publicação com --atomic" +#: send-pack.c:430 +msgid "the receiving end does not support push options" +msgstr "o recetor não suporta opções de publicação" + #: sequencer.c:174 msgid "" "after resolving the conflicts, mark the corrected paths\n" @@ -1475,14 +1770,14 @@ msgstr "" "com 'git add <caminhos>' ou 'git rm <caminhos>'\n" "e submeta o resultado com 'git commit'" -#: sequencer.c:190 sequencer.c:833 sequencer.c:912 +#: sequencer.c:190 sequencer.c:841 sequencer.c:924 #, c-format msgid "Could not write to %s" msgstr "Não foi possível escrever em %s" -#: sequencer.c:193 +#: sequencer.c:193 sequencer.c:843 sequencer.c:928 #, c-format -msgid "Error wrapping up %s" +msgid "Error wrapping up %s." msgstr "Erro ao rematar %s." #: sequencer.c:208 @@ -1495,47 +1790,52 @@ msgstr "As suas alterações locais serão substituídas por revert." #: sequencer.c:213 msgid "Commit your changes or stash them to proceed." -msgstr "Submeta ou empilhe (stash) as suas alterações para continuar." +msgstr "Submeta ou esconda as suas alterações para continuar." + +#: sequencer.c:228 +#, c-format +msgid "%s: fast-forward" +msgstr "%s: avanço rápido" #. TRANSLATORS: %s will be "revert" or "cherry-pick" -#: sequencer.c:300 +#: sequencer.c:303 #, c-format msgid "%s: Unable to write new index file" msgstr "%s: Não foi possível escrever novo ficheiro de índice" -#: sequencer.c:318 +#: sequencer.c:321 msgid "Could not resolve HEAD commit\n" msgstr "Não foi possível resolver o commit HEAD\n" -#: sequencer.c:338 +#: sequencer.c:341 msgid "Unable to update cache tree\n" msgstr "Não foi possível atualizar a árvore de cache\n" -#: sequencer.c:390 +#: sequencer.c:393 #, c-format msgid "Could not parse commit %s\n" msgstr "Não foi possível analisar o commit %s\n" -#: sequencer.c:395 +#: sequencer.c:398 #, c-format msgid "Could not parse parent commit %s\n" msgstr "Não foi possível analisar o commit pai %s\n" -#: sequencer.c:460 +#: sequencer.c:463 msgid "Your index file is unmerged." msgstr "Ficheiro de índice não integrado." -#: sequencer.c:479 +#: sequencer.c:482 #, c-format msgid "Commit %s is a merge but no -m option was given." msgstr "O commit %s é uma integração mas não foi fornecida nenhuma opção -m." -#: sequencer.c:487 +#: sequencer.c:490 #, c-format msgid "Commit %s does not have parent %d" msgstr "O commit %s não tem o pai %d" -#: sequencer.c:491 +#: sequencer.c:494 #, c-format msgid "Mainline was specified but commit %s is not a merge." msgstr "" @@ -1543,157 +1843,194 @@ msgstr "" #. TRANSLATORS: The first %s will be "revert" or #. "cherry-pick", the second %s a SHA1 -#: sequencer.c:504 +#: sequencer.c:507 #, c-format msgid "%s: cannot parse parent commit %s" msgstr "%s: não foi possível analisar o commit pai %s" -#: sequencer.c:508 +#: sequencer.c:511 #, c-format msgid "Cannot get commit message for %s" msgstr "Não é possível obter a mensagem de commit de %s" -#: sequencer.c:594 +#: sequencer.c:597 #, c-format msgid "could not revert %s... %s" msgstr "não foi possível reverter %s... %s" -#: sequencer.c:595 +#: sequencer.c:598 #, c-format msgid "could not apply %s... %s" msgstr "não foi possível aplicar %s... %s" -#: sequencer.c:630 +#: sequencer.c:633 msgid "empty commit set passed" msgstr "o conjunto de commits especificado está vazio" -#: sequencer.c:638 +#: sequencer.c:641 #, c-format msgid "git %s: failed to read the index" msgstr "git %s: falha ao ler o índice" -#: sequencer.c:642 +#: sequencer.c:645 #, c-format msgid "git %s: failed to refresh the index" msgstr "git %s: falha ao atualizar o índice" -#: sequencer.c:702 -#, c-format -msgid "Cannot %s during a %s" -msgstr "Não foi possível efetuar %s durante %s" +#: sequencer.c:705 +msgid "Cannot revert during a another revert." +msgstr "Não é possível reverter durante outra reversão." + +#: sequencer.c:706 +msgid "Cannot revert during a cherry-pick." +msgstr "Não é possível reverter durante um cherry-pick." + +#: sequencer.c:709 +msgid "Cannot cherry-pick during a revert." +msgstr "Não é possível efetuar cherry-pick durante uma reversão." + +#: sequencer.c:710 +msgid "Cannot cherry-pick during another cherry-pick." +msgstr "" +"Não é possível efetuar cherry-pick durante outro cherry-pick. durante um " +"cherry-pick." -#: sequencer.c:724 +#: sequencer.c:732 #, c-format msgid "Could not parse line %d." msgstr "Não foi possível analisar a linha %d." -#: sequencer.c:729 +#: sequencer.c:737 msgid "No commits parsed." msgstr "Nenhum commit analisado." -#: sequencer.c:741 +#: sequencer.c:749 #, c-format msgid "Could not open %s" msgstr "Não foi possível abrir %s" -#: sequencer.c:745 +#: sequencer.c:753 #, c-format msgid "Could not read %s." msgstr "Não foi possível ler %s." -#: sequencer.c:752 +#: sequencer.c:760 #, c-format msgid "Unusable instruction sheet: %s" msgstr "Folha de instruções inutilizável: %s" -#: sequencer.c:782 +#: sequencer.c:790 #, c-format msgid "Invalid key: %s" msgstr "Chave inválida: %s" -#: sequencer.c:785 builtin/pull.c:50 builtin/pull.c:52 +#: sequencer.c:793 builtin/pull.c:50 builtin/pull.c:52 #, c-format msgid "Invalid value for %s: %s" msgstr "Valor inválido de %s: %s" -#: sequencer.c:795 +#: sequencer.c:803 #, c-format msgid "Malformed options sheet: %s" msgstr "Folha de opções malformada: %s" -#: sequencer.c:814 +#: sequencer.c:822 msgid "a cherry-pick or revert is already in progress" msgstr "cherry-pick ou revert em curso" -#: sequencer.c:815 +#: sequencer.c:823 msgid "try \"git cherry-pick (--continue | --quit | --abort)\"" msgstr "tente \"git cherry-pick (--continue | --quit |--abort)\"" -#: sequencer.c:819 +#: sequencer.c:827 #, c-format msgid "Could not create sequencer directory %s" msgstr "Não foi possível criar o diretório do sequenciador %s" -#: sequencer.c:835 sequencer.c:916 -#, c-format -msgid "Error wrapping up %s." -msgstr "Erro ao rematar %s." - -#: sequencer.c:854 sequencer.c:986 +#: sequencer.c:862 sequencer.c:998 msgid "no cherry-pick or revert in progress" msgstr "nenhum cherry-pick ou revert em curso" -#: sequencer.c:856 +#: sequencer.c:864 msgid "cannot resolve HEAD" msgstr "não é possível resolver HEAD" -#: sequencer.c:858 +#: sequencer.c:866 sequencer.c:900 msgid "cannot abort from a branch yet to be born" msgstr "não é possível abortar um ramo ainda não criado" -#: sequencer.c:878 builtin/fetch.c:610 builtin/fetch.c:851 +#: sequencer.c:886 builtin/fetch.c:724 builtin/fetch.c:970 #, c-format msgid "cannot open %s" msgstr "não é possível abrir %s" -#: sequencer.c:880 +#: sequencer.c:888 #, c-format msgid "cannot read %s: %s" msgstr "não é possível ler %s: %s" -#: sequencer.c:881 +#: sequencer.c:889 msgid "unexpected end of file" msgstr "fim de ficheiro inesperado" -#: sequencer.c:887 +#: sequencer.c:895 #, c-format msgid "stored pre-cherry-pick HEAD file '%s' is corrupt" msgstr "o ficheiro HEAD de pre-cherry-pick '%s' está corrompido" -#: sequencer.c:909 +#: sequencer.c:921 #, c-format msgid "Could not format %s." msgstr "Não foi possível formatar %s." -#: sequencer.c:1054 +#: sequencer.c:1066 #, c-format msgid "%s: can't cherry-pick a %s" msgstr "%s: não é possível efetuar cherry-pick de %s" -#: sequencer.c:1057 +#: sequencer.c:1069 #, c-format msgid "%s: bad revision" msgstr "%s: revisão incorreta" -#: sequencer.c:1091 +#: sequencer.c:1102 msgid "Can't revert as initial commit" msgstr "Não é possível reverter como commit inicial" -#: sequencer.c:1092 -msgid "Can't cherry-pick into empty head" -msgstr "Não é possível efetuar cherry-pick numa cabeça vazia" +#: setup.c:160 +#, c-format +msgid "" +"%s: no such path in the working tree.\n" +"Use 'git <command> -- <path>...' to specify paths that do not exist locally." +msgstr "" +"%s: não há tal caminho na árvore de trabalho.\n" +"Use 'git <comando> -- <caminho>...' para especificar caminhos que não " +"existem localmente." + +#: setup.c:173 +#, c-format +msgid "" +"ambiguous argument '%s': unknown revision or path not in the working tree.\n" +"Use '--' to separate paths from revisions, like this:\n" +"'git <command> [<revision>...] -- [<file>...]'" +msgstr "" +"argumento ambíguo '%s': revisão ou caminho desconhecidos não encontrado na " +"árvore de trabalho.\n" +"Use '--' para separar caminhos de revisões, assim:\n" +"'git <comando> [<revisão>...] -- [<ficheiro>...]'" -#: setup.c:248 +#: setup.c:223 +#, c-format +msgid "" +"ambiguous argument '%s': both revision and filename\n" +"Use '--' to separate paths from revisions, like this:\n" +"'git <command> [<revision>...] -- [<file>...]'" +msgstr "" +"argumento ambíguo '%s': revisão e nome de ficheiro\n" +"Use '--' para separar caminhos de revisões, assim:\n" +"'git <comando> [<revisão>...] -- [<ficheiro>...]'" + +#: setup.c:248 builtin/apply.c:3362 builtin/apply.c:3373 builtin/apply.c:3419 #, c-format msgid "failed to read %s" msgstr "falha ao ler %s" @@ -1707,16 +2044,53 @@ msgstr "Esperava-se versão do repositório git <= %d, obteve-se %d" msgid "unknown repository extensions found:" msgstr "extensões de repositório desconhecidas encontradas:" -#: sha1_file.c:1080 +#: setup.c:762 +#, c-format +msgid "Not a git repository (or any of the parent directories): %s" +msgstr "Não é um repositório git (ou um dos diretórios pai): %s" + +#: setup.c:764 setup.c:915 builtin/index-pack.c:1641 +msgid "Cannot come back to cwd" +msgstr "Não é possível voltar ao diretório de trabalho atual" + +#: setup.c:845 +msgid "Unable to read current working directory" +msgstr "Não é possível ler o diretório de trabalho atual" + +#: setup.c:920 +#, c-format +msgid "" +"Not a git repository (or any parent up to mount point %s)\n" +"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)." +msgstr "" +"Não é um repositório git (ou um diretório pai até ao ponto de montagem %s)\n" +"Interrompido no limite do sistema de ficheiros " +"(GIT_DISCOVERY_ACROSS_FILESYSTEM não definido)." + +#: setup.c:927 +#, c-format +msgid "Cannot change to '%s/..'" +msgstr "Não é possível mudar para '%s/..'" + +#: setup.c:989 +#, c-format +msgid "" +"Problem with core.sharedRepository filemode value (0%.3o).\n" +"The owner of files must always have read and write permissions." +msgstr "" +"Problema com o valor core.sharedRepository modo de ficheiro (0%.3o).\n" +"O dono dos ficheiros tem de ter sempre permissões de leitura e escrita." + +#: sha1_file.c:1046 msgid "offset before end of packfile (broken .idx?)" msgstr "offset antes do fim do ficheiro de pacote (.idx danificado?)" -#: sha1_file.c:2458 +#: sha1_file.c:2434 #, c-format msgid "offset before start of pack index for %s (corrupt index?)" msgstr "offset antes do início do índice do pacote %s (índice corrompido?)" -#: sha1_file.c:2462 +#: sha1_file.c:2438 #, c-format msgid "offset beyond end of pack index for %s (truncated index?)" msgstr "offset depois do fim do índice do pacote %s (índice truncado?)" @@ -1775,10 +2149,10 @@ msgstr "falha ao preparar .gitmodules atualizado" msgid "negative values not allowed for submodule.fetchJobs" msgstr "não é permitido valores negativos em submodule.fetchJobs" -#: submodule-config.c:355 +#: submodule-config.c:358 #, c-format msgid "invalid value for %s" -msgstr "Valor inválido de %s" +msgstr "valor inválido de %s" #: trailer.c:237 #, c-format @@ -1834,6 +2208,56 @@ msgstr "não foi possível abrir ficheiro temporário" msgid "could not rename temporary file to %s" msgstr "não foi possível mudar o nome do ficheiro temporário para %s" +#: transport.c:62 +#, c-format +msgid "Would set upstream of '%s' to '%s' of '%s'\n" +msgstr "Iria definir o ramo a montante de '%s' como '%s' de '%s'\n" + +#: transport.c:151 +#, c-format +msgid "transport: invalid depth option '%s'" +msgstr "transporte: opção de profundidade '%s' inválida" + +#: transport.c:771 +#, c-format +msgid "" +"The following submodule paths contain changes that can\n" +"not be found on any remote:\n" +msgstr "" +"Os seguintes caminhos de submódulo contêm alterações que\n" +"não puderam ser encontradas a nenhum remoto:\n" + +#: transport.c:775 +#, c-format +msgid "" +"\n" +"Please try\n" +"\n" +"\tgit push --recurse-submodules=on-demand\n" +"\n" +"or cd to the path and use\n" +"\n" +"\tgit push\n" +"\n" +"to push them to a remote.\n" +"\n" +msgstr "" +"\n" +"Por favor tente\n" +"\n" +"\tgit push --recurse-submodules=on-demand\n" +"\n" +"ou cd para o caminho e use\n" +"\n" +"\tgit push\n" +"\n" +"para publicá-las no remoto.\n" +"\n" + +#: transport.c:783 +msgid "Aborting." +msgstr "Abortado." + #: transport-helper.c:1041 #, c-format msgid "Could not read ref %s" @@ -1843,11 +2267,11 @@ msgstr "Não foi possível ler a referência %s" #, c-format msgid "" "Your local changes to the following files would be overwritten by checkout:\n" -"%%sPlease commit your changes or stash them before you can switch branches." +"%%sPlease commit your changes or stash them before you switch branches." msgstr "" "As suas alterações locais nos seguintes ficheiros seriam substituídas ao " "extrair:\n" -"%%sSubmeta as suas alterações ou empilhe-as (stash) antes de trocar de ramo." +"%%sSubmeta as suas alterações ou esconda-as antes de trocar de ramo." #: unpack-trees.c:66 #, c-format @@ -1863,11 +2287,11 @@ msgstr "" #, c-format msgid "" "Your local changes to the following files would be overwritten by merge:\n" -"%%sPlease commit your changes or stash them before you can merge." +"%%sPlease commit your changes or stash them before you merge." msgstr "" "As suas alterações locais nos seguintes ficheiros seriam substituídas ao " "integrar:\n" -"%%sSubmeta as suas alterações ou empilhe-as (stash) antes de integrar." +"%%sSubmeta as suas alterações ou esconda-as antes de integrar." #: unpack-trees.c:71 #, c-format @@ -1883,11 +2307,11 @@ msgstr "" #, c-format msgid "" "Your local changes to the following files would be overwritten by %s:\n" -"%%sPlease commit your changes or stash them before you can %s." +"%%sPlease commit your changes or stash them before you %s." msgstr "" -"As suas alterações locais nos seguintes ficheiros seriam substituídas por %s:" -"\n" -"%%sSubmeta as suas alterações ou empilhe-as (stash) antes de efetuar %s." +"As suas alterações locais nos seguintes ficheiros seriam substituídas por %" +"s:\n" +"%%sSubmeta as suas alterações ou esconda-as antes de efetuar %s." #: unpack-trees.c:76 #, c-format @@ -1895,8 +2319,8 @@ msgid "" "Your local changes to the following files would be overwritten by %s:\n" "%%s" msgstr "" -"As suas alterações locais nos seguintes ficheiros seriam substituídas por %s:" -"\n" +"As suas alterações locais nos seguintes ficheiros seriam substituídas por " +"%s:\n" "%%s" #: unpack-trees.c:81 @@ -1905,15 +2329,15 @@ msgid "" "Updating the following directories would lose untracked files in it:\n" "%s" msgstr "" -"Perder-se-iam ficheiros não controlados ao atualizar os seguintes diretórios:" -"\n" +"Perder-se-iam ficheiros não controlados ao atualizar os seguintes " +"diretórios:\n" "%s" #: unpack-trees.c:85 #, c-format msgid "" "The following untracked working tree files would be removed by checkout:\n" -"%%sPlease move or remove them before you can switch branches." +"%%sPlease move or remove them before you switch branches." msgstr "" "Os seguintes ficheiros não controlados na árvore de trabalho seriam " "removidos ao extrair:\n" @@ -1933,7 +2357,7 @@ msgstr "" #, c-format msgid "" "The following untracked working tree files would be removed by merge:\n" -"%%sPlease move or remove them before you can merge." +"%%sPlease move or remove them before you merge." msgstr "" "Os seguintes ficheiros não controlados na árvore de trabalho seriam " "removidos ao integrar:\n" @@ -1953,7 +2377,7 @@ msgstr "" #, c-format msgid "" "The following untracked working tree files would be removed by %s:\n" -"%%sPlease move or remove them before you can %s." +"%%sPlease move or remove them before you %s." msgstr "" "Os seguintes ficheiros não controlados na árvore de trabalho seriam " "removidos por %s:\n" @@ -1974,7 +2398,7 @@ msgstr "" msgid "" "The following untracked working tree files would be overwritten by " "checkout:\n" -"%%sPlease move or remove them before you can switch branches." +"%%sPlease move or remove them before you switch branches." msgstr "" "Os seguintes ficheiros não controlados da árvore de trabalho seriam " "substituídos ao extrair:\n" @@ -1995,7 +2419,7 @@ msgstr "" #, c-format msgid "" "The following untracked working tree files would be overwritten by merge:\n" -"%%sPlease move or remove them before you can merge." +"%%sPlease move or remove them before you merge." msgstr "" "Os seguintes ficheiros não controlados da árvore de trabalho seriam " "substituídos ao integrar:\n" @@ -2015,7 +2439,7 @@ msgstr "" #, c-format msgid "" "The following untracked working tree files would be overwritten by %s:\n" -"%%sPlease move or remove them before you can %s." +"%%sPlease move or remove them before you %s." msgstr "" "Os seguintes ficheiros não controlados da árvore de trabalho seriam " "substituídos por %s:\n" @@ -2106,43 +2530,43 @@ msgstr "número de porta inválido" msgid "invalid '..' path segment" msgstr "segmento de caminho '..' inválido" -#: wrapper.c:222 wrapper.c:381 +#: worktree.c:282 +#, c-format +msgid "failed to read '%s'" +msgstr "falha ao ler '%s'" + +#: wrapper.c:222 wrapper.c:392 #, c-format msgid "could not open '%s' for reading and writing" msgstr "não foi possível abrir '%s' para leitura e escrita" -#: wrapper.c:224 wrapper.c:383 builtin/am.c:779 +#: wrapper.c:224 wrapper.c:394 builtin/am.c:778 #, c-format msgid "could not open '%s' for writing" msgstr "não foi possível abrir '%s' para escrita" -#: wrapper.c:226 wrapper.c:385 builtin/am.c:323 builtin/am.c:772 -#: builtin/am.c:860 builtin/commit.c:1711 builtin/merge.c:1086 +#: wrapper.c:226 wrapper.c:396 builtin/am.c:324 builtin/am.c:771 +#: builtin/am.c:859 builtin/commit.c:1712 builtin/merge.c:1029 #: builtin/pull.c:407 #, c-format msgid "could not open '%s' for reading" msgstr "não foi possível abrir '%s' para leitura" -#: wrapper.c:594 wrapper.c:615 +#: wrapper.c:605 wrapper.c:626 #, c-format msgid "unable to access '%s'" msgstr "não é possível aceder a '%s'" -#: wrapper.c:623 +#: wrapper.c:634 msgid "unable to get current working directory" msgstr "não é possível de obter o diretório de trabalho atual" -#: wrapper.c:650 -#, c-format -msgid "could not open %s for writing" -msgstr "não foi possível abrir %s para escrita" - -#: wrapper.c:661 builtin/am.c:410 +#: wrapper.c:658 #, c-format msgid "could not write to %s" msgstr "não foi possível escrever para %s" -#: wrapper.c:667 +#: wrapper.c:660 #, c-format msgid "could not close %s" msgstr "não foi possível fechar %s" @@ -2174,11 +2598,11 @@ msgstr "" msgid " (use \"git rm <file>...\" to mark resolution)" msgstr " (use \"git rm <ficheiro>...\" para marcar como resolvido)" -#: wt-status.c:198 wt-status.c:881 +#: wt-status.c:198 wt-status.c:882 msgid "Changes to be committed:" msgstr "Alterações para serem submetidas:" -#: wt-status.c:216 wt-status.c:890 +#: wt-status.c:216 wt-status.c:891 msgid "Changes not staged for commit:" msgstr "Alterações não preparadas para submeter:" @@ -2237,11 +2661,6 @@ msgstr "adicionado por ambos:" msgid "both modified:" msgstr "modificado por ambos:" -#: wt-status.c:266 -#, c-format -msgid "bug: unhandled unmerged status %x" -msgstr "" - #: wt-status.c:274 msgid "new file:" msgstr "novo ficheiro:" @@ -2286,20 +2705,15 @@ msgstr "conteúdo modificado, " msgid "untracked content, " msgstr "conteúdo não controlado, " -#: wt-status.c:391 -#, c-format -msgid "bug: unhandled diff status %c" -msgstr "" - -#: wt-status.c:755 +#: wt-status.c:756 msgid "Submodules changed but not updated:" msgstr "Submódulos alterados mas não atualizados:" -#: wt-status.c:757 +#: wt-status.c:758 msgid "Submodule changes to be committed:" msgstr "Alterações em submódulos para serem submetidas:" -#: wt-status.c:838 +#: wt-status.c:839 msgid "" "Do not touch the line above.\n" "Everything below will be removed." @@ -2307,100 +2721,104 @@ msgstr "" "Não altere a linha acima.\n" "Tudo o que estiver abaixo será removido." -#: wt-status.c:949 +#: wt-status.c:950 msgid "You have unmerged paths." msgstr "Há caminhos não integrados." -#: wt-status.c:952 +#: wt-status.c:953 msgid " (fix conflicts and run \"git commit\")" msgstr " (corrija os conflitos e execute \"git commit\")" -#: wt-status.c:956 +#: wt-status.c:955 +msgid " (use \"git merge --abort\" to abort the merge)" +msgstr " (use \"git am --abort\" para abortar a integração)" + +#: wt-status.c:960 msgid "All conflicts fixed but you are still merging." msgstr "Todos os conflitos foram corrigidos mas ainda está a integrar." -#: wt-status.c:959 +#: wt-status.c:963 msgid " (use \"git commit\" to conclude merge)" msgstr " (use \"git commit\" para concluir a integração)" -#: wt-status.c:969 +#: wt-status.c:973 msgid "You are in the middle of an am session." msgstr "Sessão am em curso." -#: wt-status.c:972 +#: wt-status.c:976 msgid "The current patch is empty." msgstr "O patch atual está vazio." -#: wt-status.c:976 +#: wt-status.c:980 msgid " (fix conflicts and then run \"git am --continue\")" msgstr " (corrija os conflitos e execute \"git am --continue\")" -#: wt-status.c:978 +#: wt-status.c:982 msgid " (use \"git am --skip\" to skip this patch)" msgstr " (use \"git am --skip\" para ignorar este patch)" -#: wt-status.c:980 +#: wt-status.c:984 msgid " (use \"git am --abort\" to restore the original branch)" msgstr " (use \"git am --abort\" para restaurar o ramo original)" -#: wt-status.c:1105 +#: wt-status.c:1109 msgid "No commands done." msgstr "Nenhum comando concluído." -#: wt-status.c:1108 +#: wt-status.c:1112 #, c-format msgid "Last command done (%d command done):" msgid_plural "Last commands done (%d commands done):" msgstr[0] "Último comando concluído (%d comando concluído):" msgstr[1] "Últimos comandos concluídos (%d comandos concluídos):" -#: wt-status.c:1119 +#: wt-status.c:1123 #, c-format msgid " (see more in file %s)" msgstr " (veja mais no ficheiro %s)" -#: wt-status.c:1124 +#: wt-status.c:1128 msgid "No commands remaining." msgstr "Nenhum comando por concluir." -#: wt-status.c:1127 +#: wt-status.c:1131 #, c-format msgid "Next command to do (%d remaining command):" msgid_plural "Next commands to do (%d remaining commands):" msgstr[0] "Próximo comando a executar (%d comando restante):" msgstr[1] "Próximos comandos a executar (%d comandos restantes):" -#: wt-status.c:1135 +#: wt-status.c:1139 msgid " (use \"git rebase --edit-todo\" to view and edit)" msgstr " (use \"git rebase --edit-todo\" para visualizar e editar)" -#: wt-status.c:1148 +#: wt-status.c:1152 #, c-format msgid "You are currently rebasing branch '%s' on '%s'." msgstr "Está a realizar rebase do ramo '%s' sobre '%s'." -#: wt-status.c:1153 +#: wt-status.c:1157 msgid "You are currently rebasing." msgstr "Está a rebasear neste momento." -#: wt-status.c:1167 +#: wt-status.c:1171 msgid " (fix conflicts and then run \"git rebase --continue\")" msgstr " (corrija os conflitos e execute \"git rebase --continue\")" -#: wt-status.c:1169 +#: wt-status.c:1173 msgid " (use \"git rebase --skip\" to skip this patch)" msgstr " (use \"git rebase --skip\" para ignorar este patch)" -#: wt-status.c:1171 +#: wt-status.c:1175 msgid " (use \"git rebase --abort\" to check out the original branch)" msgstr " (use \"git rebase --abort\" para restaurar o ramo original)" -#: wt-status.c:1177 +#: wt-status.c:1181 msgid " (all conflicts fixed: run \"git rebase --continue\")" msgstr "" " (todos os conflitos foram corrigidos: execute \"git rebase --continue\")" -#: wt-status.c:1181 +#: wt-status.c:1185 #, c-format msgid "" "You are currently splitting a commit while rebasing branch '%s' on '%s'." @@ -2408,126 +2826,126 @@ msgstr "" "Está a dividir um commit ao mesmo tempo que se efetua rebase do ramo '%s' " "sobre '%s'." -#: wt-status.c:1186 +#: wt-status.c:1190 msgid "You are currently splitting a commit during a rebase." msgstr "Está a dividir um commit durante um rebase." -#: wt-status.c:1189 +#: wt-status.c:1193 msgid " (Once your working directory is clean, run \"git rebase --continue\")" msgstr "" " (Assim que o diretório de trabalho estiver limpo, execute \"git rebase --" "continue\")" -#: wt-status.c:1193 +#: wt-status.c:1197 #, c-format msgid "You are currently editing a commit while rebasing branch '%s' on '%s'." msgstr "" "Está a editar um commit ao mesmo tempo que efetua rebase do ramo '%s' sobre " "'%s'." -#: wt-status.c:1198 +#: wt-status.c:1202 msgid "You are currently editing a commit during a rebase." msgstr "Está a editar um commit durante um rebase." -#: wt-status.c:1201 +#: wt-status.c:1205 msgid " (use \"git commit --amend\" to amend the current commit)" msgstr " (use \"git commit --amend\" para emendar o commit atual)" -#: wt-status.c:1203 +#: wt-status.c:1207 msgid "" " (use \"git rebase --continue\" once you are satisfied with your changes)" msgstr "" " (use \"git rebase --continue\" assim que estiver satisfeito com as " "alterações)" -#: wt-status.c:1213 +#: wt-status.c:1217 #, c-format msgid "You are currently cherry-picking commit %s." msgstr "Está a realizar cherry-pick do commit %s." -#: wt-status.c:1218 +#: wt-status.c:1222 msgid " (fix conflicts and run \"git cherry-pick --continue\")" msgstr " (corrija os conflitos e execute \"git cherry-pick --continue\")" -#: wt-status.c:1221 +#: wt-status.c:1225 msgid " (all conflicts fixed: run \"git cherry-pick --continue\")" msgstr "" " (todos os conflitos foram corrigidos: execute \"git cherry-pick --continue" "\")" -#: wt-status.c:1223 +#: wt-status.c:1227 msgid " (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)" msgstr "" " (use \"git cherry-pick --abort\" para cancelar a operação de cherry-pick)" -#: wt-status.c:1232 +#: wt-status.c:1236 #, c-format msgid "You are currently reverting commit %s." msgstr "Está a reverter o commit %s neste comento." -#: wt-status.c:1237 +#: wt-status.c:1241 msgid " (fix conflicts and run \"git revert --continue\")" msgstr " (corrija dos conflitos e execute \"git revert --continue\")" -#: wt-status.c:1240 +#: wt-status.c:1244 msgid " (all conflicts fixed: run \"git revert --continue\")" msgstr "" " (todos os conflitos foram corrigidos: execute \"git revert --continue\")" -#: wt-status.c:1242 +#: wt-status.c:1246 msgid " (use \"git revert --abort\" to cancel the revert operation)" msgstr " (use \"git rever --abort\" para cancelar a operação de reversão)" -#: wt-status.c:1253 +#: wt-status.c:1257 #, c-format msgid "You are currently bisecting, started from branch '%s'." msgstr "Está a bissetar, iniciado a partir do ramo '%s'." -#: wt-status.c:1257 +#: wt-status.c:1261 msgid "You are currently bisecting." msgstr "Está a bissetar neste momento." -#: wt-status.c:1260 +#: wt-status.c:1264 msgid " (use \"git bisect reset\" to get back to the original branch)" msgstr " (use \"git bisect reset\" para voltar ao ramo original)" -#: wt-status.c:1460 +#: wt-status.c:1464 msgid "On branch " msgstr "No ramo " -#: wt-status.c:1466 +#: wt-status.c:1470 msgid "interactive rebase in progress; onto " msgstr "rebase interativo em curso; sobre " -#: wt-status.c:1468 +#: wt-status.c:1472 msgid "rebase in progress; onto " msgstr "rebase em curso; sobre " -#: wt-status.c:1473 +#: wt-status.c:1477 msgid "HEAD detached at " msgstr "HEAD destacada em " -#: wt-status.c:1475 +#: wt-status.c:1479 msgid "HEAD detached from " msgstr "HEAD destacada de " -#: wt-status.c:1478 +#: wt-status.c:1482 msgid "Not currently on any branch." msgstr "Não se encontra em nenhum ramo neste momento." -#: wt-status.c:1496 +#: wt-status.c:1500 msgid "Initial commit" msgstr "Commit inicial" -#: wt-status.c:1510 +#: wt-status.c:1514 msgid "Untracked files" msgstr "Ficheiros não controlados" -#: wt-status.c:1512 +#: wt-status.c:1516 msgid "Ignored files" msgstr "Ficheiros ignorados" -#: wt-status.c:1516 +#: wt-status.c:1520 #, c-format msgid "" "It took %.2f seconds to enumerate untracked files. 'status -uno'\n" @@ -2539,32 +2957,32 @@ msgstr "" "cuidado de não se esquecer de adicionar novos ficheiros\n" "(consulte 'git help status')." -#: wt-status.c:1522 +#: wt-status.c:1526 #, c-format msgid "Untracked files not listed%s" msgstr "Ficheiros não controlados não listados%s" -#: wt-status.c:1524 +#: wt-status.c:1528 msgid " (use -u option to show untracked files)" msgstr " (use a opção -u para mostrar os ficheiros não controlados)" -#: wt-status.c:1530 +#: wt-status.c:1534 msgid "No changes" msgstr "Sem alterações" -#: wt-status.c:1535 +#: wt-status.c:1539 #, c-format msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" msgstr "" "nenhuma alteração adicionada para submeter (use \"git add\" e/ou \"git " "commit -a\")\n" -#: wt-status.c:1538 +#: wt-status.c:1542 #, c-format msgid "no changes added to commit\n" msgstr "nenhuma alteração adicionada para submeter\n" -#: wt-status.c:1541 +#: wt-status.c:1545 #, c-format msgid "" "nothing added to commit but untracked files present (use \"git add\" to " @@ -2573,54 +2991,54 @@ msgstr "" "não foi adicionado nada para submeter, mas existem ficheiros não controlados " "(use \"git add\" para controlá-los)\n" -#: wt-status.c:1544 +#: wt-status.c:1548 #, c-format msgid "nothing added to commit but untracked files present\n" msgstr "" "não foi adicionado nada para submeter, mas existem ficheiros não " "controlados\n" -#: wt-status.c:1547 +#: wt-status.c:1551 #, c-format msgid "nothing to commit (create/copy files and use \"git add\" to track)\n" msgstr "" "não há nada para submeter (crie/copie ficheiros e use \"git add\" para " "controlá-los)\n" -#: wt-status.c:1550 wt-status.c:1555 +#: wt-status.c:1554 wt-status.c:1559 #, c-format msgid "nothing to commit\n" msgstr "não há nada para submeter\n" -#: wt-status.c:1553 +#: wt-status.c:1557 #, c-format msgid "nothing to commit (use -u to show untracked files)\n" msgstr "" -"não há nada para submeter (use -u para mostrar os ficheiros não controlados)" -"\n" +"não há nada para submeter (use -u para mostrar os ficheiros não " +"controlados)\n" -#: wt-status.c:1557 +#: wt-status.c:1561 #, c-format -msgid "nothing to commit, working directory clean\n" -msgstr "não há nada para submeter, diretório de trabalho limpo\n" +msgid "nothing to commit, working tree clean\n" +msgstr "não há nada para submeter, árvore de trabalho limpa\n" -#: wt-status.c:1664 +#: wt-status.c:1668 msgid "Initial commit on " msgstr "Commit inicial em " -#: wt-status.c:1668 +#: wt-status.c:1672 msgid "HEAD (no branch)" msgstr "HEAD (nenhum ramo)" -#: wt-status.c:1697 +#: wt-status.c:1701 msgid "gone" msgstr "desaparecido" -#: wt-status.c:1699 wt-status.c:1707 +#: wt-status.c:1703 wt-status.c:1711 msgid "behind " msgstr "atrás " -#: wt-status.c:1702 wt-status.c:1705 +#: wt-status.c:1706 wt-status.c:1709 msgid "ahead " msgstr "à frente " @@ -2638,257 +3056,271 @@ msgstr "git add [<opções>] [--] <caminho>..." msgid "unexpected diff status %c" msgstr "diff status inesperado %c" -#: builtin/add.c:70 builtin/commit.c:280 +#: builtin/add.c:71 builtin/commit.c:281 msgid "updating files failed" msgstr "falha ao atualizar os ficheiros" -#: builtin/add.c:80 +#: builtin/add.c:81 #, c-format msgid "remove '%s'\n" msgstr "remover '%s'\n" -#: builtin/add.c:134 +#: builtin/add.c:136 msgid "Unstaged changes after refreshing the index:" msgstr "Alterações não preparadas depois de atualizar o índice:" -#: builtin/add.c:194 builtin/rev-parse.c:811 +#: builtin/add.c:196 builtin/rev-parse.c:811 msgid "Could not read the index" msgstr "Não foi possível ler o índice" -#: builtin/add.c:205 +#: builtin/add.c:207 #, c-format msgid "Could not open '%s' for writing." msgstr "Não foi possível abrir '%s' para escrita." -#: builtin/add.c:209 +#: builtin/add.c:211 msgid "Could not write patch" msgstr "Não foi possível escrever patch" -#: builtin/add.c:212 +#: builtin/add.c:214 msgid "editing patch failed" msgstr "falha ao editar patch" -#: builtin/add.c:215 +#: builtin/add.c:217 #, c-format msgid "Could not stat '%s'" msgstr "Não foi possível obter stat de '%s'" -#: builtin/add.c:217 +#: builtin/add.c:219 msgid "Empty patch. Aborted." msgstr "Patch vazio. Abortado." -#: builtin/add.c:222 +#: builtin/add.c:224 #, c-format msgid "Could not apply '%s'" msgstr "Não foi possível aplicar '%s'" -#: builtin/add.c:232 +#: builtin/add.c:234 msgid "The following paths are ignored by one of your .gitignore files:\n" msgstr "Os seguintes caminhos estão ignorados por algum ficheiro .gitignore:\n" -#: builtin/add.c:249 builtin/clean.c:870 builtin/fetch.c:112 builtin/mv.c:111 -#: builtin/prune-packed.c:55 builtin/pull.c:197 builtin/push.c:511 -#: builtin/remote.c:1332 builtin/rm.c:268 builtin/send-pack.c:162 +#: builtin/add.c:253 builtin/clean.c:870 builtin/fetch.c:113 builtin/mv.c:111 +#: builtin/prune-packed.c:55 builtin/pull.c:197 builtin/push.c:521 +#: builtin/remote.c:1327 builtin/rm.c:268 builtin/send-pack.c:162 msgid "dry run" msgstr "simular ação" -#: builtin/add.c:250 builtin/apply.c:4563 builtin/check-ignore.c:19 -#: builtin/commit.c:1333 builtin/count-objects.c:85 builtin/fsck.c:557 -#: builtin/log.c:1826 builtin/mv.c:110 builtin/read-tree.c:114 +#: builtin/add.c:254 builtin/apply.c:4854 builtin/check-ignore.c:19 +#: builtin/commit.c:1334 builtin/count-objects.c:85 builtin/fsck.c:593 +#: builtin/log.c:1852 builtin/mv.c:110 builtin/read-tree.c:114 msgid "be verbose" msgstr "ser verboso" -#: builtin/add.c:252 +#: builtin/add.c:256 msgid "interactive picking" msgstr "seleção interativa" -#: builtin/add.c:253 builtin/checkout.c:1154 builtin/reset.c:286 +#: builtin/add.c:257 builtin/checkout.c:1156 builtin/reset.c:286 msgid "select hunks interactively" msgstr "selecionar blocos interativamente" -#: builtin/add.c:254 +#: builtin/add.c:258 msgid "edit current diff and apply" msgstr "editar o diff atual e aplicá-lo" -#: builtin/add.c:255 +#: builtin/add.c:259 msgid "allow adding otherwise ignored files" msgstr "permitir adicionar ficheiros ignorados" -#: builtin/add.c:256 +#: builtin/add.c:260 msgid "update tracked files" msgstr "atualizar ficheiros controlados" -#: builtin/add.c:257 +#: builtin/add.c:261 msgid "record only the fact that the path will be added later" msgstr "registar apenas o facto de que o caminho será adicionado mais tarde" -#: builtin/add.c:258 +#: builtin/add.c:262 msgid "add changes from all tracked and untracked files" msgstr "" "adicionar alterações de todos os ficheiros controlados ou não controlados" -#: builtin/add.c:261 +#: builtin/add.c:265 msgid "ignore paths removed in the working tree (same as --no-all)" msgstr "" "ignorar caminhos removidos na árvore de trabalho (o mesmo que --no-all)" -#: builtin/add.c:263 +#: builtin/add.c:267 msgid "don't add, only refresh the index" msgstr "não adicionar, apenas atualizar o índice" -#: builtin/add.c:264 +#: builtin/add.c:268 msgid "just skip files which cannot be added because of errors" msgstr "ignorar ficheiros que não podem ser adicionados por causa de erros" -#: builtin/add.c:265 +#: builtin/add.c:269 msgid "check if - even missing - files are ignored in dry run" msgstr "verificar quais os ficheiros ignorados na simulação" -#: builtin/add.c:287 +#: builtin/add.c:270 builtin/update-index.c:958 +msgid "(+/-)x" +msgstr "(+/-)x" + +#: builtin/add.c:270 builtin/update-index.c:959 +msgid "override the executable bit of the listed files" +msgstr "substituir o bit executável dos ficheiros listados" + +#: builtin/add.c:292 #, c-format msgid "Use -f if you really want to add them.\n" msgstr "Use -f se deseja mesmo adicioná-los.\n" -#: builtin/add.c:294 +#: builtin/add.c:300 msgid "adding files failed" msgstr "falha ao adicionar ficheiros" -#: builtin/add.c:330 +#: builtin/add.c:336 msgid "-A and -u are mutually incompatible" msgstr "-A e -u são mutuamente incompatíveis" -#: builtin/add.c:337 +#: builtin/add.c:343 msgid "Option --ignore-missing can only be used together with --dry-run" msgstr "A opção --ignore-missing só pode ser usada em conjunto com --dry-run" #: builtin/add.c:352 #, c-format +msgid "--chmod param '%s' must be either -x or +x" +msgstr "o parâmetro '%s' de --chmod tem de ser -x ou +x" + +#: builtin/add.c:367 +#, c-format msgid "Nothing specified, nothing added.\n" msgstr "Não foi especificado nada, nada adicionado.\n" -#: builtin/add.c:353 +#: builtin/add.c:368 #, c-format msgid "Maybe you wanted to say 'git add .'?\n" msgstr "Queria dizer 'git add .'?\n" -#: builtin/add.c:358 builtin/check-ignore.c:172 builtin/clean.c:914 -#: builtin/commit.c:339 builtin/mv.c:131 builtin/reset.c:235 builtin/rm.c:298 +#: builtin/add.c:373 builtin/check-ignore.c:172 builtin/checkout.c:279 +#: builtin/checkout.c:473 builtin/clean.c:914 builtin/commit.c:340 +#: builtin/mv.c:131 builtin/reset.c:235 builtin/rm.c:298 #: builtin/submodule--helper.c:240 msgid "index file corrupt" msgstr "ficheiro de índice corrompido" -#: builtin/add.c:439 builtin/apply.c:4661 builtin/mv.c:283 builtin/rm.c:430 +#: builtin/add.c:454 builtin/apply.c:4784 builtin/mv.c:286 builtin/rm.c:431 msgid "Unable to write new index file" msgstr "Não foi possível escrever novo ficheiro de índice" -#: builtin/am.c:256 builtin/commit.c:749 builtin/merge.c:1089 +#: builtin/am.c:257 builtin/commit.c:750 builtin/merge.c:1032 #, c-format msgid "could not read '%s'" msgstr "não foi possível ler '%s'" -#: builtin/am.c:430 +#: builtin/am.c:426 msgid "could not parse author script" msgstr "não foi possível analisar o autor do script" -#: builtin/am.c:507 +#: builtin/am.c:503 #, c-format msgid "'%s' was deleted by the applypatch-msg hook" msgstr "'%s' foi eliminado pelo hook applypatch-msg" -#: builtin/am.c:548 builtin/notes.c:300 +#: builtin/am.c:544 builtin/notes.c:301 #, c-format msgid "Malformed input line: '%s'." msgstr "Linha de entrada malformada: '%s'." -#: builtin/am.c:585 builtin/notes.c:315 +#: builtin/am.c:581 builtin/notes.c:316 #, c-format msgid "Failed to copy notes from '%s' to '%s'" msgstr "Falha ao copiar notas de '%s' para '%s'" -#: builtin/am.c:611 +#: builtin/am.c:607 msgid "fseek failed" msgstr "falha ao invocar fseek" -#: builtin/am.c:788 +#: builtin/am.c:787 #, c-format msgid "could not parse patch '%s'" msgstr "não foi possível analisar o patch '%s'" -#: builtin/am.c:853 +#: builtin/am.c:852 msgid "Only one StGIT patch series can be applied at once" msgstr "Só pode ser aplicada uma série de patches StGIT duma só vez" -#: builtin/am.c:900 +#: builtin/am.c:899 msgid "invalid timestamp" msgstr "carimbo de data/hora inválido" -#: builtin/am.c:903 builtin/am.c:911 +#: builtin/am.c:902 builtin/am.c:910 msgid "invalid Date line" msgstr "linha de Data inválida" -#: builtin/am.c:908 +#: builtin/am.c:907 msgid "invalid timezone offset" msgstr "mudança de fuso horário inválida" -#: builtin/am.c:995 +#: builtin/am.c:996 msgid "Patch format detection failed." msgstr "Falha ao detetar o formato do patch." -#: builtin/am.c:1000 builtin/clone.c:380 +#: builtin/am.c:1001 builtin/clone.c:380 #, c-format msgid "failed to create directory '%s'" msgstr "falha ao criar o diretório '%s'" -#: builtin/am.c:1004 +#: builtin/am.c:1005 msgid "Failed to split patches." msgstr "Falha ao dividir patches." -#: builtin/am.c:1136 builtin/commit.c:365 +#: builtin/am.c:1137 builtin/commit.c:366 msgid "unable to write index file" msgstr "não é possível escrever o ficheiro de índice" -#: builtin/am.c:1187 +#: builtin/am.c:1188 #, c-format msgid "When you have resolved this problem, run \"%s --continue\"." msgstr "Após resolver este problema, execute \"%s --continue\"." -#: builtin/am.c:1188 +#: builtin/am.c:1189 #, c-format msgid "If you prefer to skip this patch, run \"%s --skip\" instead." msgstr "Se preferir ignorar este patch, execute \"%s --skip\"." -#: builtin/am.c:1189 +#: builtin/am.c:1190 #, c-format msgid "To restore the original branch and stop patching, run \"%s --abort\"." msgstr "" "Para restaurar o ramo original e interromper a aplicação dos patches, " "execute \"%s --abort\"." -#: builtin/am.c:1327 +#: builtin/am.c:1328 msgid "Patch is empty. Was it split wrong?" msgstr "O patch está vazio. Foi dividido incorretamente?" -#: builtin/am.c:1401 builtin/log.c:1516 +#: builtin/am.c:1402 builtin/log.c:1543 #, c-format msgid "invalid ident line: %s" msgstr "linha de identidade inválida: %s" -#: builtin/am.c:1428 +#: builtin/am.c:1429 #, c-format msgid "unable to parse commit %s" msgstr "não foi possível analisar o commit %s" -#: builtin/am.c:1630 +#: builtin/am.c:1602 msgid "Repository lacks necessary blobs to fall back on 3-way merge." msgstr "" "O repositório não tem os blobs necessários para recorrer a integração com 3 " "pontos." -#: builtin/am.c:1632 +#: builtin/am.c:1604 msgid "Using index info to reconstruct a base tree..." msgstr "A usar informação do índice para reconstruir uma árvore de base..." -#: builtin/am.c:1651 +#: builtin/am.c:1623 msgid "" "Did you hand edit your patch?\n" "It does not apply to blobs recorded in its index." @@ -2896,41 +3328,41 @@ msgstr "" "Editou o patch manualmente?\n" "Não é possível aplicá-lo aos blobs registados no índice." -#: builtin/am.c:1657 +#: builtin/am.c:1629 msgid "Falling back to patching base and 3-way merge..." msgstr "" "A recorrer a uma de base para aplicação de patches e integração com 3 " "pontos..." -#: builtin/am.c:1672 +#: builtin/am.c:1654 msgid "Failed to merge in the changes." msgstr "Falha ao integrar as alterações." -#: builtin/am.c:1696 builtin/merge.c:636 +#: builtin/am.c:1679 builtin/merge.c:628 msgid "git write-tree failed to write a tree" msgstr "git write-tree falhou ao escrever uma árvore" -#: builtin/am.c:1703 +#: builtin/am.c:1686 msgid "applying to an empty history" msgstr "a aplicar a um histórico vazio" -#: builtin/am.c:1716 builtin/commit.c:1775 builtin/merge.c:841 -#: builtin/merge.c:866 +#: builtin/am.c:1699 builtin/commit.c:1776 builtin/merge.c:798 +#: builtin/merge.c:823 msgid "failed to write commit object" msgstr "falha ao escrever objeto de commit" -#: builtin/am.c:1748 builtin/am.c:1752 +#: builtin/am.c:1731 builtin/am.c:1735 #, c-format msgid "cannot resume: %s does not exist." msgstr "não é possível continuar: %s não existe." -#: builtin/am.c:1768 +#: builtin/am.c:1751 msgid "cannot be interactive without stdin connected to a terminal." msgstr "" "não é possível entrar em modo interativo sem um entrada padrão conectada a " "um terminal." -#: builtin/am.c:1773 +#: builtin/am.c:1756 msgid "Commit Body is:" msgstr "Corpo do commit:" @@ -2938,35 +3370,35 @@ msgstr "Corpo do commit:" #. in your translation. The program will only accept English #. input at this point. #. -#: builtin/am.c:1783 +#: builtin/am.c:1766 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: " msgstr "Aplicar? [y]sim/[n]ão/[e]ditar/[v]er patch/[a]ceitar todos: " -#: builtin/am.c:1833 +#: builtin/am.c:1816 #, c-format msgid "Dirty index: cannot apply patches (dirty: %s)" msgstr "Índice modificado: não é possível aplicar patches (modificado: %s)" -#: builtin/am.c:1868 builtin/am.c:1940 +#: builtin/am.c:1853 builtin/am.c:1925 #, c-format msgid "Applying: %.*s" msgstr "A aplicar: %.*s" -#: builtin/am.c:1884 +#: builtin/am.c:1869 msgid "No changes -- Patch already applied." msgstr "Nenhuma alteração -- Já foi aplicado o patch." -#: builtin/am.c:1892 +#: builtin/am.c:1877 #, c-format msgid "Patch failed at %s %.*s" msgstr "Falha ao aplicar o patch em %s %.*s" -#: builtin/am.c:1898 +#: builtin/am.c:1883 #, c-format msgid "The copy of the patch that failed is found in: %s" msgstr "A cópia do patch que falhou encontra-se em: %s" -#: builtin/am.c:1943 +#: builtin/am.c:1928 msgid "" "No changes - did you forget to use 'git add'?\n" "If there is nothing left to stage, chances are that something else\n" @@ -2976,7 +3408,7 @@ msgstr "" "Se não há nada por preparar, provavelmente essas mesmas alterações\n" "já foram introduzidas; pode querer ignorar este patch." -#: builtin/am.c:1950 +#: builtin/am.c:1935 msgid "" "You still have unmerged paths in your index.\n" "Did you forget to use 'git add'?" @@ -2984,17 +3416,17 @@ msgstr "" "Ainda há caminhos não integrados no índice.\n" "Esqueceu-se de usar 'git add'?" -#: builtin/am.c:2058 builtin/am.c:2062 builtin/am.c:2074 builtin/reset.c:308 +#: builtin/am.c:2043 builtin/am.c:2047 builtin/am.c:2059 builtin/reset.c:308 #: builtin/reset.c:316 #, c-format msgid "Could not parse object '%s'." msgstr "Não foi possível analisar o objeto '%s'." -#: builtin/am.c:2110 +#: builtin/am.c:2095 msgid "failed to clean index" msgstr "falha ao limpar o índice" -#: builtin/am.c:2144 +#: builtin/am.c:2129 msgid "" "You seem to have moved HEAD since the last 'am' failure.\n" "Not rewinding to ORIG_HEAD" @@ -3002,155 +3434,155 @@ msgstr "" "Parece que a HEAD foi movida desde a última vez que o 'am' falhou.\n" "Não recuando a ORIG_HEAD" -#: builtin/am.c:2205 +#: builtin/am.c:2192 #, c-format msgid "Invalid value for --patch-format: %s" msgstr "Valor inválido de --patch-format: %s" -#: builtin/am.c:2238 +#: builtin/am.c:2225 msgid "git am [<options>] [(<mbox>|<Maildir>)...]" msgstr "git am [<opções>] [(<mbox>|<Maildir>)...]" -#: builtin/am.c:2239 +#: builtin/am.c:2226 msgid "git am [<options>] (--continue | --skip | --abort)" msgstr "git am [<opções>] (--continue | --skip | --abort)" -#: builtin/am.c:2245 +#: builtin/am.c:2232 msgid "run interactively" msgstr "executar interativamente" -#: builtin/am.c:2247 +#: builtin/am.c:2234 msgid "historical option -- no-op" msgstr "opção histórica -- sem-ação" -#: builtin/am.c:2249 +#: builtin/am.c:2236 msgid "allow fall back on 3way merging if needed" msgstr "permitir recorrer a integração com 3 pontos se necessário" -#: builtin/am.c:2250 builtin/init-db.c:478 builtin/prune-packed.c:57 -#: builtin/repack.c:171 +#: builtin/am.c:2237 builtin/init-db.c:481 builtin/prune-packed.c:57 +#: builtin/repack.c:172 msgid "be quiet" msgstr "silencioso" -#: builtin/am.c:2252 +#: builtin/am.c:2239 msgid "add a Signed-off-by line to the commit message" msgstr "adicionar uma linha com Signed-of-by no fim da mensagem de commit" -#: builtin/am.c:2255 +#: builtin/am.c:2242 msgid "recode into utf8 (default)" msgstr "recodificar em utf8 (predefinição)" -#: builtin/am.c:2257 +#: builtin/am.c:2244 msgid "pass -k flag to git-mailinfo" msgstr "passar a opção -k ao git-mailinfo" -#: builtin/am.c:2259 +#: builtin/am.c:2246 msgid "pass -b flag to git-mailinfo" msgstr "passar a opção -b ao git-mailinfo" -#: builtin/am.c:2261 +#: builtin/am.c:2248 msgid "pass -m flag to git-mailinfo" msgstr "passar a opção -m ao git-mailinfo" -#: builtin/am.c:2263 +#: builtin/am.c:2250 msgid "pass --keep-cr flag to git-mailsplit for mbox format" msgstr "passar a opção --keep-cr ao gitmailsplit para formato de mbox" -#: builtin/am.c:2266 +#: builtin/am.c:2253 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr" msgstr "" "não passar a opção --keep-cr ao git-mailsplit independentemente de am.keepcr" -#: builtin/am.c:2269 +#: builtin/am.c:2256 msgid "strip everything before a scissors line" msgstr "retirar todo o conteúdo antes da linha de tesoura" -#: builtin/am.c:2270 builtin/apply.c:4546 +#: builtin/am.c:2257 builtin/apply.c:4837 msgid "action" msgstr "ação" -#: builtin/am.c:2271 builtin/am.c:2274 builtin/am.c:2277 builtin/am.c:2280 -#: builtin/am.c:2283 builtin/am.c:2286 builtin/am.c:2289 builtin/am.c:2292 -#: builtin/am.c:2298 +#: builtin/am.c:2258 builtin/am.c:2261 builtin/am.c:2264 builtin/am.c:2267 +#: builtin/am.c:2270 builtin/am.c:2273 builtin/am.c:2276 builtin/am.c:2279 +#: builtin/am.c:2285 msgid "pass it through git-apply" msgstr "transmitir ao git-apply" -#: builtin/am.c:2279 builtin/apply.c:4570 +#: builtin/am.c:2266 builtin/apply.c:4861 msgid "root" msgstr "raiz" -#: builtin/am.c:2282 builtin/am.c:2285 builtin/apply.c:4508 -#: builtin/apply.c:4511 builtin/clone.c:90 builtin/fetch.c:95 +#: builtin/am.c:2269 builtin/am.c:2272 builtin/apply.c:4799 +#: builtin/apply.c:4802 builtin/clone.c:90 builtin/fetch.c:96 #: builtin/pull.c:179 builtin/submodule--helper.c:277 -#: builtin/submodule--helper.c:404 builtin/submodule--helper.c:485 -#: builtin/submodule--helper.c:488 builtin/submodule--helper.c:767 -#: builtin/submodule--helper.c:770 +#: builtin/submodule--helper.c:402 builtin/submodule--helper.c:482 +#: builtin/submodule--helper.c:485 builtin/submodule--helper.c:823 +#: builtin/submodule--helper.c:826 msgid "path" msgstr "caminho" -#: builtin/am.c:2288 builtin/fmt-merge-msg.c:666 builtin/fmt-merge-msg.c:669 -#: builtin/grep.c:706 builtin/merge.c:199 builtin/pull.c:134 -#: builtin/pull.c:193 builtin/repack.c:178 builtin/repack.c:182 -#: builtin/show-branch.c:645 builtin/show-ref.c:175 builtin/tag.c:340 -#: parse-options.h:132 parse-options.h:134 parse-options.h:244 +#: builtin/am.c:2275 builtin/fmt-merge-msg.c:666 builtin/fmt-merge-msg.c:669 +#: builtin/grep.c:706 builtin/merge.c:200 builtin/pull.c:134 builtin/pull.c:193 +#: builtin/repack.c:181 builtin/repack.c:185 builtin/show-branch.c:645 +#: builtin/show-ref.c:175 builtin/tag.c:340 parse-options.h:132 +#: parse-options.h:134 parse-options.h:244 msgid "n" msgstr "n" -#: builtin/am.c:2291 builtin/apply.c:4514 +#: builtin/am.c:2278 builtin/apply.c:4805 msgid "num" msgstr "num" -#: builtin/am.c:2294 builtin/for-each-ref.c:37 builtin/replace.c:438 +#: builtin/am.c:2281 builtin/for-each-ref.c:37 builtin/replace.c:438 #: builtin/tag.c:372 msgid "format" msgstr "formato" -#: builtin/am.c:2295 +#: builtin/am.c:2282 msgid "format the patch(es) are in" msgstr "formato de apresentação de patches" -#: builtin/am.c:2301 +#: builtin/am.c:2288 msgid "override error message when patch failure occurs" msgstr "substituir a mensagem de erro quando a aplicação do patch falha" -#: builtin/am.c:2303 +#: builtin/am.c:2290 msgid "continue applying patches after resolving a conflict" msgstr "continuar a aplicar os patches depois de resolver os conflitos" -#: builtin/am.c:2306 +#: builtin/am.c:2293 msgid "synonyms for --continue" msgstr "sinónimo de --continue" -#: builtin/am.c:2309 +#: builtin/am.c:2296 msgid "skip the current patch" msgstr "ignorar o patch atual" -#: builtin/am.c:2312 +#: builtin/am.c:2299 msgid "restore the original branch and abort the patching operation." msgstr "restaurar o ramo original e abortar a operação de patch." -#: builtin/am.c:2316 +#: builtin/am.c:2303 msgid "lie about committer date" msgstr "mentir sobre a data de commit" -#: builtin/am.c:2318 +#: builtin/am.c:2305 msgid "use current timestamp for author date" msgstr "usar a data e hora atual como data de autor" -#: builtin/am.c:2320 builtin/commit.c:1609 builtin/merge.c:228 +#: builtin/am.c:2307 builtin/commit.c:1610 builtin/merge.c:229 #: builtin/pull.c:164 builtin/revert.c:92 builtin/tag.c:355 msgid "key-id" msgstr "id-chave" -#: builtin/am.c:2321 +#: builtin/am.c:2308 msgid "GPG-sign commits" msgstr "assinar os commits com GPG" -#: builtin/am.c:2324 +#: builtin/am.c:2311 msgid "(internal use for git-rebase)" msgstr "(uso interno de git-rebase)" -#: builtin/am.c:2339 +#: builtin/am.c:2326 msgid "" "The -b/--binary option has been a no-op for long time, and\n" "it will be removed. Please do not use it anymore." @@ -3158,17 +3590,17 @@ msgstr "" "A opção -b/--binary há muito que é ignorada e será\n" "futuramente removida. Por favor não a use." -#: builtin/am.c:2346 +#: builtin/am.c:2333 msgid "failed to read the index" msgstr "falha ao ler o índice" -#: builtin/am.c:2361 +#: builtin/am.c:2348 #, c-format msgid "previous rebase directory %s still exists but mbox given." msgstr "" "o diretório de rebesa anterior %s ainda existe, mas foi fornecida uma mbox." -#: builtin/am.c:2385 +#: builtin/am.c:2372 #, c-format msgid "" "Stray %s directory found.\n" @@ -3177,76 +3609,76 @@ msgstr "" "Diretório abandonado %s encontrado.\n" "Use \"git am --abort\" para o remover." -#: builtin/am.c:2391 +#: builtin/am.c:2378 msgid "Resolve operation not in progress, we are not resuming." msgstr "A operação de resolução não está em curso, não retomando." -#: builtin/apply.c:59 +#: builtin/apply.c:122 msgid "git apply [<options>] [<patch>...]" msgstr "git apply [<opções>] [<patch>...]" -#: builtin/apply.c:111 +#: builtin/apply.c:153 #, c-format msgid "unrecognized whitespace option '%s'" msgstr "opção de espaço em branco não reconhecida '%s'" -#: builtin/apply.c:126 +#: builtin/apply.c:169 #, c-format msgid "unrecognized whitespace ignore option '%s'" msgstr "opção de ignorar espaço em branco não reconhecida '%s'" -#: builtin/apply.c:818 +#: builtin/apply.c:854 #, c-format msgid "Cannot prepare timestamp regexp %s" msgstr "Não é possível preparar a regexp de carimbo de data/hora %s" -#: builtin/apply.c:827 +#: builtin/apply.c:863 #, c-format msgid "regexec returned %d for input: %s" msgstr "regexec retornou %d para a entra: %s" -#: builtin/apply.c:908 +#: builtin/apply.c:947 #, c-format msgid "unable to find filename in patch at line %d" msgstr "não foi possível encontrar o nome do ficheiro no patch na linha %d" -#: builtin/apply.c:937 +#: builtin/apply.c:984 #, c-format msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d" msgstr "" "git apply: git-diff incorreto - esperava-se /dev/null, obteve-se %s na linha " "%d" -#: builtin/apply.c:942 +#: builtin/apply.c:989 #, c-format msgid "git apply: bad git-diff - inconsistent new filename on line %d" msgstr "" "git apply: git-diff incorreto - o nome do novo ficheiro na linha %d é " "inconsistente" -#: builtin/apply.c:943 +#: builtin/apply.c:990 #, c-format msgid "git apply: bad git-diff - inconsistent old filename on line %d" msgstr "" "git apply: git-diff incorreto - o nome do ficheiro antigo na linha %d é " "inconsistente" -#: builtin/apply.c:949 +#: builtin/apply.c:995 #, c-format msgid "git apply: bad git-diff - expected /dev/null on line %d" msgstr "git apply: git-diff incorreto - esperava-se /dev/null na linha %d" -#: builtin/apply.c:1406 +#: builtin/apply.c:1489 #, c-format msgid "recount: unexpected line: %.*s" msgstr "recontagem: linha inesperada: %.*s" -#: builtin/apply.c:1463 +#: builtin/apply.c:1550 #, c-format msgid "patch fragment without header at line %d: %.*s" msgstr "fragmento de patch sem cabeçalho na linha %d: %.*s" -#: builtin/apply.c:1480 +#: builtin/apply.c:1567 #, c-format msgid "" "git diff header lacks filename information when removing %d leading pathname " @@ -3261,77 +3693,77 @@ msgstr[1] "" "o cabeçalho do git diff não revelou o nome do ficheiro depois de se remover " "%d componentes de caminho (linha %d)" -#: builtin/apply.c:1646 +#: builtin/apply.c:1743 msgid "new file depends on old contents" msgstr "o novo ficheiro depende de conteúdos antigos" -#: builtin/apply.c:1648 +#: builtin/apply.c:1745 msgid "deleted file still has contents" msgstr "o ficheiro eliminado ainda tem conteúdos" -#: builtin/apply.c:1674 +#: builtin/apply.c:1774 #, c-format msgid "corrupt patch at line %d" msgstr "patch corrompido na linha %d" -#: builtin/apply.c:1710 +#: builtin/apply.c:1810 #, c-format msgid "new file %s depends on old contents" msgstr "o novo ficheiro %s depende de conteúdos antigos" -#: builtin/apply.c:1712 +#: builtin/apply.c:1812 #, c-format msgid "deleted file %s still has contents" msgstr "o ficheiro eliminado %s ainda tem conteúdos" -#: builtin/apply.c:1715 +#: builtin/apply.c:1815 #, c-format msgid "** warning: file %s becomes empty but is not deleted" msgstr "** aviso: o ficheiro %s ficará vazio, mas não será eliminado" -#: builtin/apply.c:1861 +#: builtin/apply.c:1962 #, c-format msgid "corrupt binary patch at line %d: %.*s" msgstr "patch binário corrompido na linha %d: %.*s" -#: builtin/apply.c:1895 +#: builtin/apply.c:1999 #, c-format msgid "unrecognized binary patch at line %d" msgstr "patch binário não reconhecido na linha %d" -#: builtin/apply.c:2048 +#: builtin/apply.c:2154 #, c-format msgid "patch with only garbage at line %d" msgstr "patch incompreensível na linha %d" -#: builtin/apply.c:2138 +#: builtin/apply.c:2244 #, c-format msgid "unable to read symlink %s" msgstr "não é possível ler a ligação simbólica %s" -#: builtin/apply.c:2142 +#: builtin/apply.c:2248 #, c-format msgid "unable to open or read %s" msgstr "não é possível abrir ou ler %s" -#: builtin/apply.c:2775 +#: builtin/apply.c:2901 #, c-format msgid "invalid start of line: '%c'" msgstr "início de linha inválido: '%c'" -#: builtin/apply.c:2894 +#: builtin/apply.c:3020 #, c-format msgid "Hunk #%d succeeded at %d (offset %d line)." msgid_plural "Hunk #%d succeeded at %d (offset %d lines)." msgstr[0] "Excerto nº%d bem sucedido na linha %d (%d linha deslocada)." msgstr[1] "Excerto nº%d bem sucedido na linha %d (%d linhas deslocadas)." -#: builtin/apply.c:2906 +#: builtin/apply.c:3032 #, c-format msgid "Context reduced to (%ld/%ld) to apply fragment at %d" msgstr "Contexto reduzido para (%ld/%ld) para aplicar o fragmento em %d" -#: builtin/apply.c:2912 +#: builtin/apply.c:3038 #, c-format msgid "" "while searching for:\n" @@ -3340,341 +3772,335 @@ msgstr "" "ao procura por:\n" "%.*s" -#: builtin/apply.c:2932 +#: builtin/apply.c:3060 #, c-format msgid "missing binary patch data for '%s'" msgstr "falta de dados do patch binário '%s'" -#: builtin/apply.c:3033 +#: builtin/apply.c:3163 #, c-format msgid "binary patch does not apply to '%s'" msgstr "o patch binário não foi aplicado corretamente a '%s'" -#: builtin/apply.c:3039 +#: builtin/apply.c:3169 #, c-format msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)" msgstr "" "o patch binário aplicado a '%s' gera resultados incorretos (esperava-se %s, " "obteve-se %s)" -#: builtin/apply.c:3060 +#: builtin/apply.c:3190 #, c-format msgid "patch failed: %s:%ld" msgstr "falha ao aplicar o patch: %s:%ld" -#: builtin/apply.c:3184 +#: builtin/apply.c:3314 #, c-format msgid "cannot checkout %s" msgstr "não é possível extrair %s" -#: builtin/apply.c:3229 builtin/apply.c:3240 builtin/apply.c:3285 -#, c-format -msgid "read of %s failed" -msgstr "falha ao ler %s" - -#: builtin/apply.c:3237 +#: builtin/apply.c:3370 #, c-format msgid "reading from '%s' beyond a symbolic link" msgstr "a ler '%s' indicado por uma ligação simbólica" -#: builtin/apply.c:3265 builtin/apply.c:3487 +#: builtin/apply.c:3399 builtin/apply.c:3630 #, c-format msgid "path %s has been renamed/deleted" msgstr "o caminho %s foi eliminado ou mudou de nome" -#: builtin/apply.c:3346 builtin/apply.c:3501 +#: builtin/apply.c:3482 builtin/apply.c:3644 #, c-format msgid "%s: does not exist in index" msgstr "%s: não existe no índice" -#: builtin/apply.c:3350 builtin/apply.c:3493 builtin/apply.c:3515 +#: builtin/apply.c:3486 builtin/apply.c:3636 builtin/apply.c:3658 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: builtin/apply.c:3355 builtin/apply.c:3509 +#: builtin/apply.c:3491 builtin/apply.c:3652 #, c-format msgid "%s: does not match index" msgstr "%s: não tem correspondência no índice" -#: builtin/apply.c:3457 +#: builtin/apply.c:3597 msgid "removal patch leaves file contents" msgstr "patch de remoção deixa conteúdos no ficheiro" -#: builtin/apply.c:3526 +#: builtin/apply.c:3669 #, c-format msgid "%s: wrong type" msgstr "%s: tipo errado" -#: builtin/apply.c:3528 +#: builtin/apply.c:3671 #, c-format msgid "%s has type %o, expected %o" msgstr "%s é do tipo %o, esperado %o" -#: builtin/apply.c:3687 builtin/apply.c:3689 +#: builtin/apply.c:3822 builtin/apply.c:3824 #, c-format msgid "invalid path '%s'" msgstr "caminho inválido '%s'" -#: builtin/apply.c:3744 +#: builtin/apply.c:3879 #, c-format msgid "%s: already exists in index" msgstr "%s: já existe no índice" -#: builtin/apply.c:3747 +#: builtin/apply.c:3882 #, c-format msgid "%s: already exists in working directory" msgstr "%s: já existe no diretório de trabalho" -#: builtin/apply.c:3767 +#: builtin/apply.c:3902 #, c-format msgid "new mode (%o) of %s does not match old mode (%o)" msgstr "o novo modo (%o) de %s não corresponde ao modo antigo (%o)" -#: builtin/apply.c:3772 +#: builtin/apply.c:3907 #, c-format msgid "new mode (%o) of %s does not match old mode (%o) of %s" msgstr "o novo modo (%o) de %s não corresponde ao modo antigo (%o) de %s" -#: builtin/apply.c:3792 +#: builtin/apply.c:3927 #, c-format msgid "affected file '%s' is beyond a symbolic link" msgstr "o ficheiro afetado '%s' é indicado por uma ligação simbólica" -#: builtin/apply.c:3796 +#: builtin/apply.c:3931 #, c-format msgid "%s: patch does not apply" msgstr "%s: patch não se aplica com sucesso" -#: builtin/apply.c:3810 +#: builtin/apply.c:3945 #, c-format msgid "Checking patch %s..." msgstr "A verificar o patch %s..." -#: builtin/apply.c:3903 builtin/checkout.c:233 builtin/reset.c:135 +#: builtin/apply.c:4038 builtin/checkout.c:233 builtin/reset.c:135 #, c-format msgid "make_cache_entry failed for path '%s'" msgstr "falha ao invocar make_cache_entry em '%s'" -#: builtin/apply.c:4046 +#: builtin/apply.c:4182 #, c-format msgid "unable to remove %s from index" msgstr "não é possível remover %s do índice" -#: builtin/apply.c:4075 +#: builtin/apply.c:4215 #, c-format msgid "corrupt patch for submodule %s" msgstr "patch corrompido no submódulo %s" -#: builtin/apply.c:4079 +#: builtin/apply.c:4219 #, c-format msgid "unable to stat newly created file '%s'" msgstr "não é possível obter estado do novo ficheiro criado '%s'" -#: builtin/apply.c:4084 +#: builtin/apply.c:4224 #, c-format msgid "unable to create backing store for newly created file %s" msgstr "" "não é possível criar armazenamento de segurança do ficheiro recém-criado %s" -#: builtin/apply.c:4087 builtin/apply.c:4195 +#: builtin/apply.c:4227 builtin/apply.c:4340 #, c-format msgid "unable to add cache entry for %s" msgstr "não é possível adicionar %s à cache" -#: builtin/apply.c:4120 +#: builtin/apply.c:4260 #, c-format msgid "closing file '%s'" msgstr "a fechar o ficheiro '%s'" -#: builtin/apply.c:4169 +#: builtin/apply.c:4313 #, c-format msgid "unable to write file '%s' mode %o" msgstr "não é possível escrever o ficheiro '%s' com o modo %o" -#: builtin/apply.c:4256 +#: builtin/apply.c:4403 #, c-format msgid "Applied patch %s cleanly." msgstr "Patch %s aplicado com sucesso." -#: builtin/apply.c:4264 +#: builtin/apply.c:4411 msgid "internal error" msgstr "erro interno" -#: builtin/apply.c:4267 +#: builtin/apply.c:4414 #, c-format msgid "Applying patch %%s with %d reject..." msgid_plural "Applying patch %%s with %d rejects..." msgstr[0] "A aplicar patch %%s com %d rejeição..." msgstr[1] "A aplicar patch %%s com %d rejeições..." -#: builtin/apply.c:4277 +#: builtin/apply.c:4424 #, c-format msgid "truncating .rej filename to %.*s.rej" msgstr "a truncar o nome do ficheiro .rej em %.*s.rej" -#: builtin/apply.c:4285 +#: builtin/apply.c:4432 #, c-format msgid "cannot open %s: %s" msgstr "não é possível abrir %s: %s" -#: builtin/apply.c:4298 +#: builtin/apply.c:4445 #, c-format msgid "Hunk #%d applied cleanly." msgstr "Excerto nº%d aplicado com sucesso." -#: builtin/apply.c:4301 +#: builtin/apply.c:4448 #, c-format msgid "Rejected hunk #%d." msgstr "Excerto nº%d rejeitado." -#: builtin/apply.c:4387 +#: builtin/apply.c:4537 #, c-format msgid "Skipped patch '%s'." msgstr "Patch '%s' ignorado." -#: builtin/apply.c:4395 +#: builtin/apply.c:4545 msgid "unrecognized input" msgstr "entrada não reconhecida" -#: builtin/apply.c:4406 +#: builtin/apply.c:4556 msgid "unable to read index file" msgstr "não foi possível ler o ficheiro de índice" -#: builtin/apply.c:4509 +#: builtin/apply.c:4701 +msgid "--3way outside a repository" +msgstr "--3way fora de um repositório" + +#: builtin/apply.c:4709 +msgid "--index outside a repository" +msgstr "--index fora de um repositório" + +#: builtin/apply.c:4712 +msgid "--cached outside a repository" +msgstr "--cached fora de um repositório" + +#: builtin/apply.c:4745 +#, c-format +msgid "can't open patch '%s'" +msgstr "não é possível abrir o patch '%s'" + +#: builtin/apply.c:4760 +#, c-format +msgid "squelched %d whitespace error" +msgid_plural "squelched %d whitespace errors" +msgstr[0] "%d erro de espaço em branco reprimido" +msgstr[1] "%d erros de espaço em branco reprimidos" + +#: builtin/apply.c:4766 builtin/apply.c:4776 +#, c-format +msgid "%d line adds whitespace errors." +msgid_plural "%d lines add whitespace errors." +msgstr[0] "%d linha adiciona erros de espaço em branco." +msgstr[1] "%d linhas adicionam erros de espaço em branco." + +#: builtin/apply.c:4800 msgid "don't apply changes matching the given path" msgstr "não aplicar alterações que correspondam ao caminho fornecido" -#: builtin/apply.c:4512 +#: builtin/apply.c:4803 msgid "apply changes matching the given path" msgstr "aplicar alterações que correspondam ao caminho fornecido" -#: builtin/apply.c:4515 +#: builtin/apply.c:4806 msgid "remove <num> leading slashes from traditional diff paths" msgstr "remover <num> barras à esquerda dos caminhos de diff tradicional" -#: builtin/apply.c:4518 +#: builtin/apply.c:4809 msgid "ignore additions made by the patch" msgstr "ignorar adições feitas pelo patch" -#: builtin/apply.c:4520 +#: builtin/apply.c:4811 msgid "instead of applying the patch, output diffstat for the input" msgstr "em vez de aplicar o patch, mostrar o diffstat da entrada" -#: builtin/apply.c:4524 +#: builtin/apply.c:4815 msgid "show number of added and deleted lines in decimal notation" msgstr "mostrar número de linhas adicionadas e removidas em notação decimal" -#: builtin/apply.c:4526 +#: builtin/apply.c:4817 msgid "instead of applying the patch, output a summary for the input" msgstr "em vez de aplicar o patch, mostrar um resumo da entrada" -#: builtin/apply.c:4528 +#: builtin/apply.c:4819 msgid "instead of applying the patch, see if the patch is applicable" msgstr "em vez de aplicar o patch, verificar se o patch pode ser aplicado" -#: builtin/apply.c:4530 +#: builtin/apply.c:4821 msgid "make sure the patch is applicable to the current index" msgstr "garantir que o patch pode ser aplicado ao índice atual" -#: builtin/apply.c:4532 +#: builtin/apply.c:4823 msgid "apply a patch without touching the working tree" msgstr "aplicar um patch sem tocar na árvore de trabalho" -#: builtin/apply.c:4534 +#: builtin/apply.c:4825 msgid "accept a patch that touches outside the working area" msgstr "aceitar patches que alteram ficheiros fora da área de trabalho" -#: builtin/apply.c:4536 +#: builtin/apply.c:4827 msgid "also apply the patch (use with --stat/--summary/--check)" msgstr "aplicar o patch também (use com --stat/--summary/--check)" -#: builtin/apply.c:4538 +#: builtin/apply.c:4829 msgid "attempt three-way merge if a patch does not apply" -msgstr "" -"tentar integração com três pontos se um patch não se se aplica com êxito" +msgstr "tentar integração com três pontos se um patch não se aplica com êxito" -#: builtin/apply.c:4540 +#: builtin/apply.c:4831 msgid "build a temporary index based on embedded index information" msgstr "" "construir um índice temporário baseado na informação incorporada do índice" -#: builtin/apply.c:4543 builtin/checkout-index.c:169 builtin/ls-files.c:425 +#: builtin/apply.c:4834 builtin/checkout-index.c:169 builtin/ls-files.c:426 msgid "paths are separated with NUL character" msgstr "os caminhos estão separados por caracteres NUL" -#: builtin/apply.c:4545 +#: builtin/apply.c:4836 msgid "ensure at least <n> lines of context match" msgstr "garantir que, pelo menos, <n> linhas de contexto coincidem" -#: builtin/apply.c:4547 +#: builtin/apply.c:4838 msgid "detect new or modified lines that have whitespace errors" msgstr "detetar linhas novas ou modificadas que tenham espaços em branco" -#: builtin/apply.c:4550 builtin/apply.c:4553 +#: builtin/apply.c:4841 builtin/apply.c:4844 msgid "ignore changes in whitespace when finding context" msgstr "ignorar alterações de espaço em branco ao procurar contexto" -#: builtin/apply.c:4556 +#: builtin/apply.c:4847 msgid "apply the patch in reverse" msgstr "aplicar o patch em reverso" -#: builtin/apply.c:4558 +#: builtin/apply.c:4849 msgid "don't expect at least one line of context" msgstr "não esperar nenhuma linha de contexto" -#: builtin/apply.c:4560 +#: builtin/apply.c:4851 msgid "leave the rejected hunks in corresponding *.rej files" msgstr "deixar os excertos rejeitados nos respetivos ficheiros *.rej" -#: builtin/apply.c:4562 +#: builtin/apply.c:4853 msgid "allow overlapping hunks" msgstr "permitir a sobreposição de excertos" -#: builtin/apply.c:4565 +#: builtin/apply.c:4856 msgid "tolerate incorrectly detected missing new-line at the end of file" msgstr "" "tolerar deteções incorretas de falta de nova linha no final do ficheiro" -#: builtin/apply.c:4568 +#: builtin/apply.c:4859 msgid "do not trust the line counts in the hunk headers" msgstr "não confiar na contagem de linhas no cabeçalho dos excertos" -#: builtin/apply.c:4571 +#: builtin/apply.c:4862 msgid "prepend <root> to all filenames" msgstr "preceder <root> a todos os nomes de ficheiro" -#: builtin/apply.c:4593 -msgid "--3way outside a repository" -msgstr "--3way fora de um repositório" - -#: builtin/apply.c:4601 -msgid "--index outside a repository" -msgstr "--index fora de um repositório" - -#: builtin/apply.c:4604 -msgid "--cached outside a repository" -msgstr "--cached fora de um repositório" - -#: builtin/apply.c:4623 -#, c-format -msgid "can't open patch '%s'" -msgstr "não é possível abrir o patch '%s'" - -#: builtin/apply.c:4637 -#, c-format -msgid "squelched %d whitespace error" -msgid_plural "squelched %d whitespace errors" -msgstr[0] "%d erro de espaço em branco reprimido" -msgstr[1] "%d erros de espaço em branco reprimidos" - -#: builtin/apply.c:4643 builtin/apply.c:4653 -#, c-format -msgid "%d line adds whitespace errors." -msgid_plural "%d lines add whitespace errors." -msgstr[0] "%d linha adiciona erros de espaço em branco." -msgstr[1] "%d linhas adicionam erros de espaço em branco." - #: builtin/archive.c:17 #, c-format msgid "could not create archive file '%s'" @@ -3730,105 +4156,105 @@ msgstr "git blame [<opções>] [<rev-opções>] [<rev>] [--] <ficheiro>" msgid "<rev-opts> are documented in git-rev-list(1)" msgstr "<rev-opções> estão documentadas em git-rev-list(1)" -#: builtin/blame.c:1782 +#: builtin/blame.c:1781 msgid "Blaming lines" msgstr "Linhas de culpa" -#: builtin/blame.c:2531 +#: builtin/blame.c:2536 msgid "Show blame entries as we find them, incrementally" msgstr "" "Mostrar entradas de culpa à medida que forem encontradas, incrementalmente" -#: builtin/blame.c:2532 +#: builtin/blame.c:2537 msgid "Show blank SHA-1 for boundary commits (Default: off)" msgstr "Mostar SHA-1 dos commits limite em branco (Predefinição: desativado)" -#: builtin/blame.c:2533 +#: builtin/blame.c:2538 msgid "Do not treat root commits as boundaries (Default: off)" msgstr "Não tratar os commits raiz como limites (Predefinição: desativado)" -#: builtin/blame.c:2534 +#: builtin/blame.c:2539 msgid "Show work cost statistics" msgstr "Mostrar estatísticas de custo de atividade" -#: builtin/blame.c:2535 +#: builtin/blame.c:2540 msgid "Force progress reporting" msgstr "Forçar informação de progresso" -#: builtin/blame.c:2536 +#: builtin/blame.c:2541 msgid "Show output score for blame entries" msgstr "Mostrar a pontuação das entradas de culpa" -#: builtin/blame.c:2537 +#: builtin/blame.c:2542 msgid "Show original filename (Default: auto)" msgstr "Mostrar o nome do ficheiro original (Predefinição: auto)" -#: builtin/blame.c:2538 +#: builtin/blame.c:2543 msgid "Show original linenumber (Default: off)" msgstr "Mostrar números de linha originais (Predefinição: desativado)" -#: builtin/blame.c:2539 +#: builtin/blame.c:2544 msgid "Show in a format designed for machine consumption" msgstr "Mostrar em formato próprio para ser consumo por uma máquina" -#: builtin/blame.c:2540 +#: builtin/blame.c:2545 msgid "Show porcelain format with per-line commit information" msgstr "Mostrar em formato de porcelana com informações de commit por linha" -#: builtin/blame.c:2541 +#: builtin/blame.c:2546 msgid "Use the same output mode as git-annotate (Default: off)" msgstr "Usar o mesmo modo de saída que git-annotate (Predefinição: desativado)" -#: builtin/blame.c:2542 +#: builtin/blame.c:2547 msgid "Show raw timestamp (Default: off)" msgstr "Mostrar carimbo de data/hora em bruto (Predefinição: desativado)" -#: builtin/blame.c:2543 +#: builtin/blame.c:2548 msgid "Show long commit SHA1 (Default: off)" msgstr "Mostrar SHA1 longo de commit (Predefinição: desativado)" -#: builtin/blame.c:2544 +#: builtin/blame.c:2549 msgid "Suppress author name and timestamp (Default: off)" msgstr "" "Suprimir nome de autor e carimbo de data/hora (Predefinição: desativado)" -#: builtin/blame.c:2545 +#: builtin/blame.c:2550 msgid "Show author email instead of name (Default: off)" msgstr "Mostrar o email do autor em vez do nome (Predefinição: desativado)" -#: builtin/blame.c:2546 +#: builtin/blame.c:2551 msgid "Ignore whitespace differences" msgstr "Ignorar as diferenças de espaço em branco" -#: builtin/blame.c:2547 +#: builtin/blame.c:2552 msgid "Spend extra cycles to find better match" msgstr "Despender ciclos extra para encontrar uma melhor correspondência" -#: builtin/blame.c:2548 +#: builtin/blame.c:2553 msgid "Use revisions from <file> instead of calling git-rev-list" msgstr "Usar revisões do <ficheiro> em vez de invocar git-rev-list" -#: builtin/blame.c:2549 +#: builtin/blame.c:2554 msgid "Use <file>'s contents as the final image" msgstr "Usar o conteúdo do <ficheiro> como imagem final" -#: builtin/blame.c:2550 builtin/blame.c:2551 +#: builtin/blame.c:2555 builtin/blame.c:2556 msgid "score" msgstr "pontuação" -#: builtin/blame.c:2550 +#: builtin/blame.c:2555 msgid "Find line copies within and across files" msgstr "Localizar linhas copiadas dentro e entre ficheiros" -#: builtin/blame.c:2551 +#: builtin/blame.c:2556 msgid "Find line movements within and across files" msgstr "Localizar linhas movidas dentro e entre ficheiros" -#: builtin/blame.c:2552 +#: builtin/blame.c:2557 msgid "n,m" msgstr "n,m" -#: builtin/blame.c:2552 +#: builtin/blame.c:2557 msgid "Process only line range n,m, counting from 1" msgstr "Processar apenas o intervalo de linhas n,m, a cantar de 1" @@ -3838,7 +4264,7 @@ msgstr "Processar apenas o intervalo de linhas n,m, a cantar de 1" #. takes 22 places, is the longest among various forms of #. relative timestamps, but your language may need more or #. fewer display columns. -#: builtin/blame.c:2641 +#: builtin/blame.c:2649 msgid "4 years, 11 months ago" msgstr "há 4 anos e 11 meses atrás" @@ -3941,120 +4367,127 @@ msgstr "Ramo de monitorização remoto %s eliminado (era %s).\n" msgid "Deleted branch %s (was %s).\n" msgstr "Ramo %s eliminado (era %s).\n" -#: builtin/branch.c:309 +#: builtin/branch.c:312 #, c-format msgid "[%s: gone]" msgstr "[%s: desaparecido]" -#: builtin/branch.c:314 +#: builtin/branch.c:317 #, c-format msgid "[%s]" msgstr "[%s]" -#: builtin/branch.c:319 +#: builtin/branch.c:322 #, c-format msgid "[%s: behind %d]" msgstr "[%s: atrás %d]" -#: builtin/branch.c:321 +#: builtin/branch.c:324 #, c-format msgid "[behind %d]" msgstr "[atrás %d]" -#: builtin/branch.c:325 +#: builtin/branch.c:328 #, c-format msgid "[%s: ahead %d]" msgstr "[%s: à frente %d]" -#: builtin/branch.c:327 +#: builtin/branch.c:330 #, c-format msgid "[ahead %d]" msgstr "[à frente %d]" -#: builtin/branch.c:330 +#: builtin/branch.c:333 #, c-format msgid "[%s: ahead %d, behind %d]" msgstr "[%s: à frente %d, atrás %d]" -#: builtin/branch.c:333 +#: builtin/branch.c:336 #, c-format msgid "[ahead %d, behind %d]" msgstr "[à frente %d, atrás %d]" -#: builtin/branch.c:346 +#: builtin/branch.c:349 msgid " **** invalid ref ****" msgstr " **** referências inválida ****" -#: builtin/branch.c:372 +#: builtin/branch.c:375 #, c-format msgid "(no branch, rebasing %s)" msgstr "(nenhum ramo, a efetuar rebase de %s)" -#: builtin/branch.c:375 +#: builtin/branch.c:378 #, c-format msgid "(no branch, bisect started on %s)" msgstr "(nenhum ramo, bissecção iniciada em %s)" #. TRANSLATORS: make sure this matches #. "HEAD detached at " in wt-status.c -#: builtin/branch.c:381 +#: builtin/branch.c:384 #, c-format msgid "(HEAD detached at %s)" msgstr "(HEAD destacada em %s)" #. TRANSLATORS: make sure this matches #. "HEAD detached from " in wt-status.c -#: builtin/branch.c:386 +#: builtin/branch.c:389 #, c-format msgid "(HEAD detached from %s)" msgstr "(HEAD destacada de %s)" -#: builtin/branch.c:390 +#: builtin/branch.c:393 msgid "(no branch)" msgstr "(nenhum ramo)" -#: builtin/branch.c:541 +#: builtin/branch.c:544 #, c-format msgid "Branch %s is being rebased at %s" msgstr "O ramo %s está a ser rebaseado em %s" -#: builtin/branch.c:545 +#: builtin/branch.c:548 #, c-format msgid "Branch %s is being bisected at %s" msgstr "O ramo %s está a ser bissetado em %s" -#: builtin/branch.c:560 +#: builtin/branch.c:563 msgid "cannot rename the current branch while not on any." msgstr "" "não é possível mudar o nome do ramo atual vista que não se encontra num ramo." -#: builtin/branch.c:570 +#: builtin/branch.c:573 #, c-format msgid "Invalid branch name: '%s'" msgstr "Nome de ramo inválido: '%s'" -#: builtin/branch.c:587 +#: builtin/branch.c:590 msgid "Branch rename failed" msgstr "Falha ao mudar o nome do ramo" -#: builtin/branch.c:591 +#: builtin/branch.c:594 #, c-format msgid "Renamed a misnamed branch '%s' away" msgstr "O ramo incorretamente denominado '%s' mudou de nome" -#: builtin/branch.c:594 +#: builtin/branch.c:597 #, c-format msgid "Branch renamed to %s, but HEAD is not updated!" msgstr "O nome do ramo mudou para %s, mas a HEAD não está atualizada!" -#: builtin/branch.c:601 +#: builtin/branch.c:604 msgid "Branch is renamed, but update of config-file failed" msgstr "" "O ramo mudou de nome, mas a atualização do ficheiro de configuração falhou" -#: builtin/branch.c:623 -msgid "could not write branch description template" -msgstr "não foi possível escrever o modelo da descrição do ramo" +#: builtin/branch.c:620 +#, c-format +msgid "" +"Please edit the description for the branch\n" +" %s\n" +"Lines starting with '%c' will be stripped.\n" +msgstr "" +"Edite a descrição do ramo:\n" +" %s\n" +"Linha começadas com '%c' serão ignoradas.\n" #: builtin/branch.c:651 msgid "Generic options" @@ -4156,8 +4589,8 @@ msgstr "chave" msgid "field name to sort on" msgstr "nome do campo pelo qual ordernar" -#: builtin/branch.c:686 builtin/for-each-ref.c:41 builtin/notes.c:401 -#: builtin/notes.c:404 builtin/notes.c:564 builtin/notes.c:567 +#: builtin/branch.c:686 builtin/for-each-ref.c:41 builtin/notes.c:402 +#: builtin/notes.c:405 builtin/notes.c:565 builtin/notes.c:568 #: builtin/tag.c:369 msgid "object" msgstr "objeto" @@ -4282,65 +4715,65 @@ msgstr "É necessário um repositório para criar um bundle." msgid "Need a repository to unbundle." msgstr "É preciso um repositório para desempacotar." -#: builtin/cat-file.c:428 +#: builtin/cat-file.c:443 msgid "" "git cat-file (-t [--allow-unknown-type]|-s [--allow-unknown-type]|-e|-p|" "<type>|--textconv) <object>" msgstr "" -"git cat-file (-t [--allow-unknown-type]|-s [--allow-unknown-" -"type]|-e|-p|<tipo>|--textconv) <objeto>" +"git cat-file (-t [--allow-unknown-type]|-s [--allow-unknown-type]|-e|-p|" +"<tipo>|--textconv) <objeto>" -#: builtin/cat-file.c:429 +#: builtin/cat-file.c:444 msgid "git cat-file (--batch | --batch-check) [--follow-symlinks]" msgstr "git cat-file (--batch | --batch-check) [--follow-symlinks]" -#: builtin/cat-file.c:466 +#: builtin/cat-file.c:481 msgid "<type> can be one of: blob, tree, commit, tag" msgstr "<tipo> pode ser um de: blob, tree, commit, tag" -#: builtin/cat-file.c:467 +#: builtin/cat-file.c:482 msgid "show object type" msgstr "mostrar tipo do objeto" -#: builtin/cat-file.c:468 +#: builtin/cat-file.c:483 msgid "show object size" msgstr "mostrar tamanho do objeto" -#: builtin/cat-file.c:470 +#: builtin/cat-file.c:485 msgid "exit with zero when there's no error" msgstr "sair com retorno zero quando não houver erros" -#: builtin/cat-file.c:471 +#: builtin/cat-file.c:486 msgid "pretty-print object's content" msgstr "mostrar conteúdo do objeto com impressão bonita" -#: builtin/cat-file.c:473 +#: builtin/cat-file.c:488 msgid "for blob objects, run textconv on object's content" msgstr "executar textconv no conteúdo de objetos blob" -#: builtin/cat-file.c:475 +#: builtin/cat-file.c:490 msgid "allow -s and -t to work with broken/corrupt objects" msgstr "permitir que -s e -t funcionem com objetos danificados/corrompidos" -#: builtin/cat-file.c:476 +#: builtin/cat-file.c:491 msgid "buffer --batch output" msgstr "carregar a saída de --batch" -#: builtin/cat-file.c:478 +#: builtin/cat-file.c:493 msgid "show info and content of objects fed from the standard input" msgstr "mostrar informação e conteúdo dos objetos fornecidos na entrada padrão" -#: builtin/cat-file.c:481 +#: builtin/cat-file.c:496 msgid "show info about objects fed from the standard input" msgstr "mostrar informação sobre os objetos fornecidos na entrada padrão" -#: builtin/cat-file.c:484 +#: builtin/cat-file.c:499 msgid "follow in-tree symlinks (used with --batch or --batch-check)" msgstr "" "seguir ligações simbólica no interior da árvore (usado com --batch ou --" "batch-check)" -#: builtin/cat-file.c:486 +#: builtin/cat-file.c:501 msgid "show all objects with --batch or --batch-check" msgstr "mostrar todos os objetos com --batch ou --batch-check" @@ -4368,7 +4801,7 @@ msgstr "ler os nomes dos ficheiros da entrada padrão" msgid "terminate input and output records by a NUL character" msgstr "terminar registos da entrada e da saída com um carácter NUL" -#: builtin/check-ignore.c:18 builtin/checkout.c:1135 builtin/gc.c:325 +#: builtin/check-ignore.c:18 builtin/checkout.c:1137 builtin/gc.c:325 msgid "suppress progress reporting" msgstr "suprimir informação de progresso" @@ -4460,9 +4893,9 @@ msgid "write the content to temporary files" msgstr "escrever o conteúdo em ficheiros temporários" #: builtin/checkout-index.c:174 builtin/column.c:30 -#: builtin/submodule--helper.c:491 builtin/submodule--helper.c:494 -#: builtin/submodule--helper.c:497 builtin/submodule--helper.c:500 -#: builtin/submodule--helper.c:774 +#: builtin/submodule--helper.c:488 builtin/submodule--helper.c:491 +#: builtin/submodule--helper.c:494 builtin/submodule--helper.c:497 +#: builtin/submodule--helper.c:830 builtin/worktree.c:469 msgid "string" msgstr "cadeia" @@ -4529,10 +4962,6 @@ msgid "Cannot update paths and switch to branch '%s' at the same time." msgstr "" "Não é possível atualizar os caminhos e mudar para o ramo '%s' ao mesmo tempo." -#: builtin/checkout.c:279 builtin/checkout.c:473 -msgid "corrupt index file" -msgstr "ficheiro de índice corrompido" - #: builtin/checkout.c:339 builtin/checkout.c:346 #, c-format msgid "path '%s' is unmerged" @@ -4542,50 +4971,50 @@ msgstr "o caminho '%s' não foi integrado" msgid "you need to resolve your current index first" msgstr "primeiro deve resolver o índice atual" -#: builtin/checkout.c:622 +#: builtin/checkout.c:625 #, c-format msgid "Can not do reflog for '%s': %s\n" msgstr "Não é possível efetuar reflog de '%s': %s\n" -#: builtin/checkout.c:660 +#: builtin/checkout.c:663 msgid "HEAD is now at" msgstr "HEAD está agora em" -#: builtin/checkout.c:664 builtin/clone.c:661 +#: builtin/checkout.c:667 builtin/clone.c:661 msgid "unable to update HEAD" msgstr "não foi possível atualizar HEAD" -#: builtin/checkout.c:668 +#: builtin/checkout.c:671 #, c-format msgid "Reset branch '%s'\n" msgstr "Repor ramo '%s'\n" -#: builtin/checkout.c:671 +#: builtin/checkout.c:674 #, c-format msgid "Already on '%s'\n" msgstr "Já em '%s'\n" -#: builtin/checkout.c:675 +#: builtin/checkout.c:678 #, c-format msgid "Switched to and reset branch '%s'\n" msgstr "Mudou para e repôs o ramo '%s'\n" -#: builtin/checkout.c:677 builtin/checkout.c:1067 +#: builtin/checkout.c:680 builtin/checkout.c:1069 #, c-format msgid "Switched to a new branch '%s'\n" msgstr "Mudou para o novo ramo '%s'\n" -#: builtin/checkout.c:679 +#: builtin/checkout.c:682 #, c-format msgid "Switched to branch '%s'\n" msgstr "Mudou para o ramo '%s'\n" -#: builtin/checkout.c:731 +#: builtin/checkout.c:733 #, c-format msgid " ... and %d more.\n" msgstr " ... e mais %d.\n" -#: builtin/checkout.c:737 +#: builtin/checkout.c:739 #, c-format msgid "" "Warning: you are leaving %d commit behind, not connected to\n" @@ -4606,7 +5035,7 @@ msgstr[1] "" "\n" "%s\n" -#: builtin/checkout.c:756 +#: builtin/checkout.c:758 #, c-format msgid "" "If you want to keep it by creating a new branch, this may be a good time\n" @@ -4633,166 +5062,166 @@ msgstr[1] "" " git branch <nome-do-novo-ramo> %s\n" "\n" -#: builtin/checkout.c:792 +#: builtin/checkout.c:794 msgid "internal error in revision walk" msgstr "erro interno durante o curso de revisões" -#: builtin/checkout.c:796 +#: builtin/checkout.c:798 msgid "Previous HEAD position was" msgstr "A posição anterior de HEAD era" -#: builtin/checkout.c:823 builtin/checkout.c:1062 +#: builtin/checkout.c:825 builtin/checkout.c:1064 msgid "You are on a branch yet to be born" msgstr "Está num ramo ainda não criado" -#: builtin/checkout.c:968 +#: builtin/checkout.c:970 #, c-format msgid "only one reference expected, %d given." msgstr "esperava-se apenas uma referência, %d fornecidas." -#: builtin/checkout.c:1008 builtin/worktree.c:212 +#: builtin/checkout.c:1010 builtin/worktree.c:214 #, c-format msgid "invalid reference: %s" msgstr "referência inválida: %s" -#: builtin/checkout.c:1037 +#: builtin/checkout.c:1039 #, c-format msgid "reference is not a tree: %s" msgstr "a referência não é uma árvore: %s" -#: builtin/checkout.c:1076 +#: builtin/checkout.c:1078 msgid "paths cannot be used with switching branches" msgstr "não podem ser usados caminhos ao mudar de ramo" -#: builtin/checkout.c:1079 builtin/checkout.c:1083 +#: builtin/checkout.c:1081 builtin/checkout.c:1085 #, c-format msgid "'%s' cannot be used with switching branches" msgstr "'%s' não pode ser usado ao mudar de ramo" -#: builtin/checkout.c:1087 builtin/checkout.c:1090 builtin/checkout.c:1095 -#: builtin/checkout.c:1098 +#: builtin/checkout.c:1089 builtin/checkout.c:1092 builtin/checkout.c:1097 +#: builtin/checkout.c:1100 #, c-format msgid "'%s' cannot be used with '%s'" msgstr "'%s' não pode ser usado com '%s'" -#: builtin/checkout.c:1103 +#: builtin/checkout.c:1105 #, c-format msgid "Cannot switch branch to a non-commit '%s'" msgstr "Não é possível mudar de ramo para '%s', visto que não é um commit" -#: builtin/checkout.c:1136 builtin/checkout.c:1138 builtin/clone.c:88 -#: builtin/remote.c:165 builtin/remote.c:167 builtin/worktree.c:323 -#: builtin/worktree.c:325 +#: builtin/checkout.c:1138 builtin/checkout.c:1140 builtin/clone.c:88 +#: builtin/remote.c:165 builtin/remote.c:167 builtin/worktree.c:324 +#: builtin/worktree.c:326 msgid "branch" msgstr "ramo" -#: builtin/checkout.c:1137 +#: builtin/checkout.c:1139 msgid "create and checkout a new branch" msgstr "criar e extrair um novo ramo" -#: builtin/checkout.c:1139 +#: builtin/checkout.c:1141 msgid "create/reset and checkout a branch" msgstr "criar/repor e extrair um ramo" -#: builtin/checkout.c:1140 +#: builtin/checkout.c:1142 msgid "create reflog for new branch" msgstr "criar reflog do novo ramo" -#: builtin/checkout.c:1141 -msgid "detach the HEAD at named commit" +#: builtin/checkout.c:1143 builtin/worktree.c:328 +msgid "detach HEAD at named commit" msgstr "destacar HEAD no commit indicado" -#: builtin/checkout.c:1142 +#: builtin/checkout.c:1144 msgid "set upstream info for new branch" msgstr "definir a informação do ramo a montante do novo ramo" -#: builtin/checkout.c:1144 +#: builtin/checkout.c:1146 msgid "new-branch" msgstr "novo-ramo" -#: builtin/checkout.c:1144 +#: builtin/checkout.c:1146 msgid "new unparented branch" msgstr "novo ramo sem pai" -#: builtin/checkout.c:1145 +#: builtin/checkout.c:1147 msgid "checkout our version for unmerged files" msgstr "extrair a nossa versão dos ficheiros não integrados" -#: builtin/checkout.c:1147 +#: builtin/checkout.c:1149 msgid "checkout their version for unmerged files" msgstr "extrair a versão deles dos ficheiros não integrados" -#: builtin/checkout.c:1149 +#: builtin/checkout.c:1151 msgid "force checkout (throw away local modifications)" msgstr "forçar extração (descartar modificações locais)" -#: builtin/checkout.c:1150 +#: builtin/checkout.c:1152 msgid "perform a 3-way merge with the new branch" msgstr "realizar uma integração com 3 pontos com o novo ramo" -#: builtin/checkout.c:1151 builtin/merge.c:230 +#: builtin/checkout.c:1153 builtin/merge.c:231 msgid "update ignored files (default)" msgstr "atualizar ficheiros ignorados (predefinição)" -#: builtin/checkout.c:1152 builtin/log.c:1432 parse-options.h:250 +#: builtin/checkout.c:1154 builtin/log.c:1459 parse-options.h:250 msgid "style" msgstr "estilo" -#: builtin/checkout.c:1153 +#: builtin/checkout.c:1155 msgid "conflict style (merge or diff3)" msgstr "estilo de conflito (merge ou diff3)" -#: builtin/checkout.c:1156 +#: builtin/checkout.c:1158 msgid "do not limit pathspecs to sparse entries only" msgstr "não restringir especificadores de caminho a entradas esparsas" -#: builtin/checkout.c:1158 +#: builtin/checkout.c:1160 msgid "second guess 'git checkout <no-such-branch>'" msgstr "tentar adivinhar 'git checkout <ramo-inexistente>'" -#: builtin/checkout.c:1160 +#: builtin/checkout.c:1162 msgid "do not check if another worktree is holding the given ref" msgstr "" "não verificar se outra árvore de trabalho contém a referência fornecida" -#: builtin/checkout.c:1161 builtin/clone.c:60 builtin/fetch.c:116 -#: builtin/merge.c:227 builtin/pull.c:116 builtin/push.c:526 +#: builtin/checkout.c:1163 builtin/clone.c:60 builtin/fetch.c:117 +#: builtin/merge.c:228 builtin/pull.c:116 builtin/push.c:536 #: builtin/send-pack.c:168 msgid "force progress reporting" msgstr "forçar informação de progresso" -#: builtin/checkout.c:1192 +#: builtin/checkout.c:1194 msgid "-b, -B and --orphan are mutually exclusive" msgstr "-b, -B e --orphan são mutuamente exclusivos" -#: builtin/checkout.c:1209 +#: builtin/checkout.c:1211 msgid "--track needs a branch name" msgstr "--track requer um nome dum ramo" -#: builtin/checkout.c:1214 +#: builtin/checkout.c:1216 msgid "Missing branch name; try -b" msgstr "Falta um nome dum ramo; tente -b" -#: builtin/checkout.c:1250 +#: builtin/checkout.c:1252 msgid "invalid path specification" msgstr "especificação de caminho inválida" -#: builtin/checkout.c:1257 +#: builtin/checkout.c:1259 #, c-format msgid "" "Cannot update paths and switch to branch '%s' at the same time.\n" "Did you intend to checkout '%s' which can not be resolved as commit?" msgstr "" -"Não é possível atualizar os caminho e mudar para o ramo '%s' ao mesmo tempo." -"\n" +"Não é possível atualizar os caminho e mudar para o ramo '%s' ao mesmo " +"tempo.\n" "Pretendia extrair '%s' o qual não pode ser resolvido como commit?" -#: builtin/checkout.c:1262 +#: builtin/checkout.c:1264 #, c-format msgid "git checkout: --detach does not take a path argument '%s'" msgstr "git checkout: --detach não aceita um caminho como argumento '%s'" -#: builtin/checkout.c:1266 +#: builtin/checkout.c:1268 msgid "" "git checkout: --ours/--theirs, --force and --merge are incompatible when\n" "checking out of the index." @@ -4945,7 +5374,7 @@ msgid "remove whole directories" msgstr "remover diretórios inteiros" #: builtin/clean.c:875 builtin/describe.c:407 builtin/grep.c:724 -#: builtin/ls-files.c:456 builtin/name-rev.c:314 builtin/show-ref.c:182 +#: builtin/ls-files.c:457 builtin/name-rev.c:314 builtin/show-ref.c:182 msgid "pattern" msgstr "padrão" @@ -4989,7 +5418,7 @@ msgstr "git clone [<opções>] [--] <repo> [<dir>]" msgid "don't create a checkout" msgstr "não criar uma extração" -#: builtin/clone.c:63 builtin/clone.c:65 builtin/init-db.c:473 +#: builtin/clone.c:63 builtin/clone.c:65 builtin/init-db.c:476 msgid "create a bare repository" msgstr "criar um repositório nu" @@ -5017,16 +5446,16 @@ msgstr "inicializar submódulos no clone" msgid "number of submodules cloned in parallel" msgstr "número de submódulos clonados em paralelo" -#: builtin/clone.c:80 builtin/init-db.c:470 +#: builtin/clone.c:80 builtin/init-db.c:473 msgid "template-directory" msgstr "diretório-modelo" -#: builtin/clone.c:81 builtin/init-db.c:471 +#: builtin/clone.c:81 builtin/init-db.c:474 msgid "directory from which templates will be used" msgstr "diretório que contém os modelos usados" -#: builtin/clone.c:83 builtin/submodule--helper.c:498 -#: builtin/submodule--helper.c:777 +#: builtin/clone.c:83 builtin/submodule--helper.c:495 +#: builtin/submodule--helper.c:833 msgid "reference repository" msgstr "repositório de referência" @@ -5050,8 +5479,7 @@ msgstr "extrair <ramo> em vez da HEAD do remoto" msgid "path to git-upload-pack on the remote" msgstr "caminho para git-upload-pack no remoto" -#: builtin/clone.c:92 builtin/fetch.c:117 builtin/grep.c:667 -#: builtin/pull.c:201 +#: builtin/clone.c:92 builtin/fetch.c:118 builtin/grep.c:667 builtin/pull.c:201 msgid "depth" msgstr "profundidade" @@ -5067,11 +5495,11 @@ msgstr "clonar apenas um ramo, HEAD ou --branch" msgid "any cloned submodules will be shallow" msgstr "qualquer submódulo clonado será raso" -#: builtin/clone.c:98 builtin/init-db.c:479 +#: builtin/clone.c:98 builtin/init-db.c:482 msgid "gitdir" msgstr "gitdir" -#: builtin/clone.c:99 builtin/init-db.c:480 +#: builtin/clone.c:99 builtin/init-db.c:483 msgid "separate git dir from working tree" msgstr "separar o repositório git da árvore de trabalho" @@ -5083,11 +5511,11 @@ msgstr "chave=valor" msgid "set config inside the new repository" msgstr "definir configuração dentro do novo repositório" -#: builtin/clone.c:102 builtin/fetch.c:131 builtin/push.c:536 +#: builtin/clone.c:102 builtin/fetch.c:132 builtin/push.c:547 msgid "use IPv4 addresses only" msgstr "usar apenas endereços IPv4" -#: builtin/clone.c:104 builtin/fetch.c:133 builtin/push.c:538 +#: builtin/clone.c:104 builtin/fetch.c:134 builtin/push.c:549 msgid "use IPv6 addresses only" msgstr "usar apenas endereços IPv6" @@ -5121,6 +5549,11 @@ msgstr "o repositório de referência '%s' é raso" msgid "reference repository '%s' is grafted" msgstr "o repositório de referência '%s' está enxertado" +#: builtin/clone.c:376 +#, c-format +msgid "failed to open '%s'" +msgstr "falha ao abrir '%s'" + #: builtin/clone.c:384 #, c-format msgid "%s exists and is not a directory" @@ -5141,7 +5574,7 @@ msgstr "falha ao criar a ligação '%s'" msgid "failed to copy file to '%s'" msgstr "falha ao copiar o ficheiro para '%s'" -#: builtin/clone.c:449 builtin/clone.c:633 +#: builtin/clone.c:449 #, c-format msgid "done.\n" msgstr "concluído.\n" @@ -5161,12 +5594,7 @@ msgstr "" msgid "Could not find remote branch %s to clone." msgstr "Ramo remoto %s não encontrado para clonar." -#: builtin/clone.c:628 -#, c-format -msgid "Checking connectivity... " -msgstr "A verificar a conectividade... " - -#: builtin/clone.c:631 +#: builtin/clone.c:633 msgid "remote did not send all necessary objects" msgstr "o remoto não enviou todos os objetos necessários" @@ -5178,106 +5606,107 @@ msgstr "não foi possível atualizar %s" #: builtin/clone.c:698 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n" msgstr "" -"a HEAD remota referencia uma referência inexistente, não é possível extrair." -"\n" +"a HEAD remota referencia uma referência inexistente, não é possível " +"extrair.\n" #: builtin/clone.c:729 msgid "unable to checkout working tree" msgstr "não foi possível extrair a árvore de trabalho" -#: builtin/clone.c:767 +#: builtin/clone.c:766 msgid "unable to write parameters to config file" msgstr "não foi possível escrever os parâmetros no ficheiro de configuração" -#: builtin/clone.c:830 +#: builtin/clone.c:829 msgid "cannot repack to clean up" msgstr "não é possível reempacotar para limpar" -#: builtin/clone.c:832 +#: builtin/clone.c:831 msgid "cannot unlink temporary alternates file" -msgstr "não é possível invocar unlink sobre o ficheiro sobressalente temporário" +msgstr "" +"não é possível invocar unlink sobre o ficheiro sobressalente temporário" -#: builtin/clone.c:864 builtin/receive-pack.c:1731 +#: builtin/clone.c:863 builtin/receive-pack.c:1857 msgid "Too many arguments." msgstr "Demasiados argumentos." -#: builtin/clone.c:868 +#: builtin/clone.c:867 msgid "You must specify a repository to clone." msgstr "Deve especificar um repositório para clonar." -#: builtin/clone.c:879 +#: builtin/clone.c:878 #, c-format msgid "--bare and --origin %s options are incompatible." msgstr "as opções --bare e --origin %s são incompatíveis." -#: builtin/clone.c:882 +#: builtin/clone.c:881 msgid "--bare and --separate-git-dir are incompatible." msgstr "--bare e --separate-git-dir são incompatíveis." -#: builtin/clone.c:895 +#: builtin/clone.c:894 #, c-format msgid "repository '%s' does not exist" msgstr "o repositório '%s' não existe" -#: builtin/clone.c:901 builtin/fetch.c:1174 +#: builtin/clone.c:900 builtin/fetch.c:1293 #, c-format msgid "depth %s is not a positive number" msgstr "profundidade %s não é um número positivo" -#: builtin/clone.c:911 +#: builtin/clone.c:910 #, c-format msgid "destination path '%s' already exists and is not an empty directory." msgstr "o caminho de destino '%s' já existe e não é um diretório vazio." -#: builtin/clone.c:921 +#: builtin/clone.c:920 #, c-format msgid "working tree '%s' already exists." msgstr "a árvore de trabalho '%s' já existe." -#: builtin/clone.c:936 builtin/clone.c:947 builtin/submodule--helper.c:547 -#: builtin/worktree.c:220 builtin/worktree.c:247 +#: builtin/clone.c:935 builtin/clone.c:946 builtin/submodule--helper.c:544 +#: builtin/worktree.c:222 builtin/worktree.c:249 #, c-format msgid "could not create leading directories of '%s'" msgstr "não foi possível criar os diretórios superiores de '%s'" -#: builtin/clone.c:939 +#: builtin/clone.c:938 #, c-format msgid "could not create work tree dir '%s'" msgstr "não foi possível criar o diretório de árvore de trabalho '%s'" -#: builtin/clone.c:957 +#: builtin/clone.c:956 #, c-format msgid "Cloning into bare repository '%s'...\n" msgstr "A clonar no repositório nu '%s'...\n" -#: builtin/clone.c:959 +#: builtin/clone.c:958 #, c-format msgid "Cloning into '%s'...\n" msgstr "A clonar em '%s'...\n" -#: builtin/clone.c:998 +#: builtin/clone.c:997 msgid "--depth is ignored in local clones; use file:// instead." msgstr "--depth é ignorado em clones locais; use file:// ." -#: builtin/clone.c:1001 +#: builtin/clone.c:1000 msgid "source repository is shallow, ignoring --local" msgstr "o repositório de origem é raso, --local ignorado" -#: builtin/clone.c:1006 +#: builtin/clone.c:1005 msgid "--local is ignored" msgstr "--local ignorado" -#: builtin/clone.c:1010 +#: builtin/clone.c:1009 #, c-format msgid "Don't know how to clone %s" msgstr "Não sei como clonar %s" -#: builtin/clone.c:1059 builtin/clone.c:1067 +#: builtin/clone.c:1058 builtin/clone.c:1066 #, c-format msgid "Remote branch %s not found in upstream %s" msgstr "O ramo remoto %s não foi encontrado no repositório a montante %s" -#: builtin/clone.c:1070 +#: builtin/clone.c:1069 msgid "You appear to have cloned an empty repository." msgstr "Parece foi clonado um repositório vazio." @@ -5416,66 +5845,66 @@ msgstr "" "Depois \"git cherry-pick --continue\" irá retomar o cherry-pick\n" "dos restantes commits.\n" -#: builtin/commit.c:307 +#: builtin/commit.c:308 msgid "failed to unpack HEAD tree object" msgstr "falha ao descompactar o objeto árvore HEAD" -#: builtin/commit.c:348 +#: builtin/commit.c:349 msgid "unable to create temporary index" msgstr "não foi possível criar índice temporário" -#: builtin/commit.c:354 +#: builtin/commit.c:355 msgid "interactive add failed" msgstr "falha ao adicionar interativamente" -#: builtin/commit.c:367 +#: builtin/commit.c:368 msgid "unable to update temporary index" msgstr "não é possível atualizar o índice temporário" -#: builtin/commit.c:369 +#: builtin/commit.c:370 msgid "Failed to update main cache tree" msgstr "Falha ao atualizar a árvore de cache principal" -#: builtin/commit.c:393 builtin/commit.c:416 builtin/commit.c:465 +#: builtin/commit.c:394 builtin/commit.c:417 builtin/commit.c:466 msgid "unable to write new_index file" msgstr "não é possível escrever o ficheiro new_index" -#: builtin/commit.c:447 +#: builtin/commit.c:448 msgid "cannot do a partial commit during a merge." msgstr "não é possível fazer um commit parcial durante uma integração." -#: builtin/commit.c:449 +#: builtin/commit.c:450 msgid "cannot do a partial commit during a cherry-pick." msgstr "não é possível fazer um commit parcial durante um cherry-pick." -#: builtin/commit.c:458 +#: builtin/commit.c:459 msgid "cannot read the index" msgstr "não é possível ler o índice" -#: builtin/commit.c:477 +#: builtin/commit.c:478 msgid "unable to write temporary index file" msgstr "não é possível escrever ficheiro de índice temporário" -#: builtin/commit.c:582 +#: builtin/commit.c:583 #, c-format msgid "commit '%s' lacks author header" msgstr "o commit '%s' não tem cabeçalho de autor" -#: builtin/commit.c:584 +#: builtin/commit.c:585 #, c-format msgid "commit '%s' has malformed author line" msgstr "o commit '%s' tem a linha de autor malformada" -#: builtin/commit.c:603 +#: builtin/commit.c:604 msgid "malformed --author parameter" msgstr "parâmetro --author malformado" -#: builtin/commit.c:611 +#: builtin/commit.c:612 #, c-format msgid "invalid date format: %s" msgstr "formato de data inválido: %s" -#: builtin/commit.c:655 +#: builtin/commit.c:656 msgid "" "unable to select a comment character that is not used\n" "in the current commit message" @@ -5483,38 +5912,38 @@ msgstr "" "não foi possível selecionar um carácter de comentário que\n" "não estivesse já a ser usado na mensagem de commit atual" -#: builtin/commit.c:692 builtin/commit.c:725 builtin/commit.c:1091 +#: builtin/commit.c:693 builtin/commit.c:726 builtin/commit.c:1092 #, c-format msgid "could not lookup commit %s" msgstr "não foi possível consultar o commit %s" -#: builtin/commit.c:704 builtin/shortlog.c:285 +#: builtin/commit.c:705 builtin/shortlog.c:286 #, c-format msgid "(reading log message from standard input)\n" msgstr "(a ler mensagem de log da entrada padrão)\n" -#: builtin/commit.c:706 +#: builtin/commit.c:707 msgid "could not read log from standard input" msgstr "não foi possível ler o log da entrada padrão" -#: builtin/commit.c:710 +#: builtin/commit.c:711 #, c-format msgid "could not read log file '%s'" msgstr "não é possível ler o ficheiro de log '%s'" -#: builtin/commit.c:737 builtin/commit.c:745 +#: builtin/commit.c:738 builtin/commit.c:746 msgid "could not read SQUASH_MSG" msgstr "não foi possível ler SQUASH_MSG" -#: builtin/commit.c:742 +#: builtin/commit.c:743 msgid "could not read MERGE_MSG" msgstr "não foi possível ler MERGE_MSG" -#: builtin/commit.c:796 +#: builtin/commit.c:797 msgid "could not write commit template" msgstr "não foi possível escrever o modelo de commit" -#: builtin/commit.c:814 +#: builtin/commit.c:815 #, c-format msgid "" "\n" @@ -5529,7 +5958,7 @@ msgstr "" "\t%s\n" "e tente de novo.\n" -#: builtin/commit.c:819 +#: builtin/commit.c:820 #, c-format msgid "" "\n" @@ -5544,7 +5973,7 @@ msgstr "" "\t%s\n" "e tente outra vez.\n" -#: builtin/commit.c:832 +#: builtin/commit.c:833 #, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" @@ -5554,7 +5983,7 @@ msgstr "" "Linhas começadas com '%c' serão ignoradas, e uma mensagem vazia\n" "aborta o commit.\n" -#: builtin/commit.c:839 +#: builtin/commit.c:840 #, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" @@ -5565,149 +5994,149 @@ msgstr "" "Linhas começadas com '%c' serão mantidas; pode removê-las se o desejar.\n" "Uma mensagem vazia aborta o commit.\n" -#: builtin/commit.c:859 +#: builtin/commit.c:860 #, c-format msgid "%sAuthor: %.*s <%.*s>" msgstr "%sAutor: %.*s <%.*s>" -#: builtin/commit.c:867 +#: builtin/commit.c:868 #, c-format msgid "%sDate: %s" msgstr "%sData: %s" -#: builtin/commit.c:874 +#: builtin/commit.c:875 #, c-format msgid "%sCommitter: %.*s <%.*s>" msgstr "%sCommitter: %.*s <%.*s>" -#: builtin/commit.c:892 +#: builtin/commit.c:893 msgid "Cannot read index" msgstr "Não é possível ler o índice" -#: builtin/commit.c:949 +#: builtin/commit.c:950 msgid "Error building trees" msgstr "Erro ao construir árvores" -#: builtin/commit.c:964 builtin/tag.c:266 +#: builtin/commit.c:965 builtin/tag.c:266 #, c-format msgid "Please supply the message using either -m or -F option.\n" msgstr "Indique a mensagem usando as opções -m ou -F.\n" -#: builtin/commit.c:1066 +#: builtin/commit.c:1067 #, c-format msgid "--author '%s' is not 'Name <email>' and matches no existing author" msgstr "" "--author '%s' não é do tipo 'Nome <email>' e não corresponde a um autor " "existente" -#: builtin/commit.c:1081 builtin/commit.c:1321 +#: builtin/commit.c:1082 builtin/commit.c:1322 #, c-format msgid "Invalid untracked files mode '%s'" msgstr "Modo inválido de ficheiros não controlados '%s'" -#: builtin/commit.c:1118 +#: builtin/commit.c:1119 msgid "--long and -z are incompatible" msgstr "--long e -z são incompatíveis" -#: builtin/commit.c:1148 +#: builtin/commit.c:1149 msgid "Using both --reset-author and --author does not make sense" msgstr "Não faz sentido usar --reset-author e --author ao mesmo tempo" -#: builtin/commit.c:1157 +#: builtin/commit.c:1158 msgid "You have nothing to amend." msgstr "Não há nada para emendar." -#: builtin/commit.c:1160 +#: builtin/commit.c:1161 msgid "You are in the middle of a merge -- cannot amend." msgstr "Integração em curso -- não é possível emendar." -#: builtin/commit.c:1162 +#: builtin/commit.c:1163 msgid "You are in the middle of a cherry-pick -- cannot amend." msgstr "Cherry-pick em curso -- não é possível emendar." -#: builtin/commit.c:1165 +#: builtin/commit.c:1166 msgid "Options --squash and --fixup cannot be used together" msgstr "As opções --squash e --fixup não podem ser usadas juntas" -#: builtin/commit.c:1175 +#: builtin/commit.c:1176 msgid "Only one of -c/-C/-F/--fixup can be used." msgstr "Apenas um entre -c/-C/-F/--fixup pode ser usado." -#: builtin/commit.c:1177 +#: builtin/commit.c:1178 msgid "Option -m cannot be combined with -c/-C/-F/--fixup." msgstr "A opção -m não pode ser combinada com -c/C/-F/--fixup." -#: builtin/commit.c:1185 +#: builtin/commit.c:1186 msgid "--reset-author can be used only with -C, -c or --amend." msgstr "--reset-author só pode ser usado com -C, -c ou --amend." -#: builtin/commit.c:1202 +#: builtin/commit.c:1203 msgid "Only one of --include/--only/--all/--interactive/--patch can be used." msgstr "" "Apenas um entre --include/--only/--all/--interactive/--patch pode ser usado." -#: builtin/commit.c:1204 +#: builtin/commit.c:1205 msgid "No paths with --include/--only does not make sense." msgstr "As opções --include/--only não fazem sentido sem indicar caminhos." -#: builtin/commit.c:1206 +#: builtin/commit.c:1207 msgid "Clever... amending the last one with dirty index." msgstr "Inteligente... a emendar o último commit com o índice sujo." -#: builtin/commit.c:1208 +#: builtin/commit.c:1209 msgid "Explicit paths specified without -i or -o; assuming --only paths..." msgstr "Caminhos explícitos especificados sem -i ou -o; assumindo --only..." -#: builtin/commit.c:1220 builtin/tag.c:474 +#: builtin/commit.c:1221 builtin/tag.c:474 #, c-format msgid "Invalid cleanup mode %s" msgstr "Modo de limpeza inválido %s" -#: builtin/commit.c:1225 +#: builtin/commit.c:1226 msgid "Paths with -a does not make sense." msgstr "Indicar caminhos com -a não faz sentido." -#: builtin/commit.c:1335 builtin/commit.c:1621 +#: builtin/commit.c:1336 builtin/commit.c:1622 msgid "show status concisely" msgstr "mostrar status de forma concisa" -#: builtin/commit.c:1337 builtin/commit.c:1623 +#: builtin/commit.c:1338 builtin/commit.c:1624 msgid "show branch information" msgstr "mostrar informação do ramo" -#: builtin/commit.c:1339 builtin/commit.c:1625 builtin/push.c:512 -#: builtin/worktree.c:437 +#: builtin/commit.c:1340 builtin/commit.c:1626 builtin/push.c:522 +#: builtin/worktree.c:440 msgid "machine-readable output" msgstr "saída inteligível por máquina" -#: builtin/commit.c:1342 builtin/commit.c:1627 +#: builtin/commit.c:1343 builtin/commit.c:1628 msgid "show status in long format (default)" msgstr "apresentar status em formato longo (predefinição)" -#: builtin/commit.c:1345 builtin/commit.c:1630 +#: builtin/commit.c:1346 builtin/commit.c:1631 msgid "terminate entries with NUL" msgstr "terminar entradas com NUL" -#: builtin/commit.c:1347 builtin/commit.c:1633 builtin/fast-export.c:981 +#: builtin/commit.c:1348 builtin/commit.c:1634 builtin/fast-export.c:981 #: builtin/fast-export.c:984 builtin/tag.c:353 msgid "mode" msgstr "modo" -#: builtin/commit.c:1348 builtin/commit.c:1633 +#: builtin/commit.c:1349 builtin/commit.c:1634 msgid "show untracked files, optional modes: all, normal, no. (Default: all)" msgstr "" "mostrar ficheiros não controlados, modo é opcional: all, normal, no. " "(Predefinição: all)" -#: builtin/commit.c:1351 +#: builtin/commit.c:1352 msgid "show ignored files" msgstr "mostrar ficheiros ignorados" -#: builtin/commit.c:1352 parse-options.h:155 +#: builtin/commit.c:1353 parse-options.h:155 msgid "when" msgstr "quando" -#: builtin/commit.c:1353 +#: builtin/commit.c:1354 msgid "" "ignore changes to submodules, optional when: all, dirty, untracked. " "(Default: all)" @@ -5715,199 +6144,200 @@ msgstr "" "ignorar alterações em submódulos, quando é opcional: all, dirty, untracked. " "(Predefinição: all)" -#: builtin/commit.c:1355 +#: builtin/commit.c:1356 msgid "list untracked files in columns" msgstr "listar ficheiros não controlados em colunas" -#: builtin/commit.c:1441 +#: builtin/commit.c:1442 msgid "couldn't look up newly created commit" msgstr "não foi possível consultar o commit recém-criado" -#: builtin/commit.c:1443 +#: builtin/commit.c:1444 msgid "could not parse newly created commit" msgstr "não foi possível analisar o commit recém-criado" -#: builtin/commit.c:1488 +#: builtin/commit.c:1489 msgid "detached HEAD" msgstr "HEAD destacada" -#: builtin/commit.c:1491 +#: builtin/commit.c:1492 msgid " (root-commit)" msgstr " (commit-raiz)" -#: builtin/commit.c:1591 +#: builtin/commit.c:1592 msgid "suppress summary after successful commit" msgstr "suprimir o resumo depois de submeter com sucesso" -#: builtin/commit.c:1592 +#: builtin/commit.c:1593 msgid "show diff in commit message template" msgstr "mostrar diff no modelo da mensagem de commit" -#: builtin/commit.c:1594 +#: builtin/commit.c:1595 msgid "Commit message options" msgstr "Opções de mensagem de commit" -#: builtin/commit.c:1595 builtin/tag.c:351 +#: builtin/commit.c:1596 builtin/tag.c:351 msgid "read message from file" msgstr "ler mensagem de um ficheiro" -#: builtin/commit.c:1596 +#: builtin/commit.c:1597 msgid "author" msgstr "autor" -#: builtin/commit.c:1596 +#: builtin/commit.c:1597 msgid "override author for commit" msgstr "substituir autor do commit" -#: builtin/commit.c:1597 builtin/gc.c:326 +#: builtin/commit.c:1598 builtin/gc.c:326 msgid "date" msgstr "data" -#: builtin/commit.c:1597 +#: builtin/commit.c:1598 msgid "override date for commit" msgstr "substituir data do commit" -#: builtin/commit.c:1598 builtin/merge.c:219 builtin/notes.c:395 -#: builtin/notes.c:558 builtin/tag.c:349 +#: builtin/commit.c:1599 builtin/merge.c:220 builtin/notes.c:396 +#: builtin/notes.c:559 builtin/tag.c:349 msgid "message" msgstr "mensagem" -#: builtin/commit.c:1598 +#: builtin/commit.c:1599 msgid "commit message" msgstr "mensagem de commit" -#: builtin/commit.c:1599 builtin/commit.c:1600 builtin/commit.c:1601 -#: builtin/commit.c:1602 parse-options.h:256 ref-filter.h:79 +#: builtin/commit.c:1600 builtin/commit.c:1601 builtin/commit.c:1602 +#: builtin/commit.c:1603 parse-options.h:256 ref-filter.h:79 msgid "commit" msgstr "commit" -#: builtin/commit.c:1599 +#: builtin/commit.c:1600 msgid "reuse and edit message from specified commit" msgstr "reutilizar e editar a mensagem de um commit especificado" -#: builtin/commit.c:1600 +#: builtin/commit.c:1601 msgid "reuse message from specified commit" msgstr "reutilizar a mensagem de um commit especificado" -#: builtin/commit.c:1601 +#: builtin/commit.c:1602 msgid "use autosquash formatted message to fixup specified commit" msgstr "" "usar mensagem com formato autosquash para corrigir o commit especificado" -#: builtin/commit.c:1602 +#: builtin/commit.c:1603 msgid "use autosquash formatted message to squash specified commit" -msgstr "usar mensagem com formato autosquash para esmagar o commit especificado" +msgstr "" +"usar mensagem com formato autosquash para esmagar o commit especificado" -#: builtin/commit.c:1603 +#: builtin/commit.c:1604 msgid "the commit is authored by me now (used with -C/-c/--amend)" msgstr "agora sou eu o autor do commit (usado com C/-c/--amend)" -#: builtin/commit.c:1604 builtin/log.c:1382 builtin/revert.c:86 +#: builtin/commit.c:1605 builtin/log.c:1409 builtin/revert.c:86 msgid "add Signed-off-by:" msgstr "adicionar Signed-off-by:" -#: builtin/commit.c:1605 +#: builtin/commit.c:1606 msgid "use specified template file" msgstr "usar ficheiro de modelo especificado" -#: builtin/commit.c:1606 +#: builtin/commit.c:1607 msgid "force edit of commit" msgstr "forçar edição do commit" -#: builtin/commit.c:1607 +#: builtin/commit.c:1608 msgid "default" msgstr "predefinição" -#: builtin/commit.c:1607 builtin/tag.c:354 +#: builtin/commit.c:1608 builtin/tag.c:354 msgid "how to strip spaces and #comments from message" msgstr "como retirar espaços e #comentários da mensagem" -#: builtin/commit.c:1608 +#: builtin/commit.c:1609 msgid "include status in commit message template" msgstr "incluir status no modelo da mensagem de commit" -#: builtin/commit.c:1610 builtin/merge.c:229 builtin/pull.c:165 +#: builtin/commit.c:1611 builtin/merge.c:230 builtin/pull.c:165 #: builtin/revert.c:93 msgid "GPG sign commit" msgstr "assinar o commit com GPG" -#: builtin/commit.c:1613 +#: builtin/commit.c:1614 msgid "Commit contents options" msgstr "Opções de conteúdo do commit" -#: builtin/commit.c:1614 +#: builtin/commit.c:1615 msgid "commit all changed files" msgstr "submeter todos os ficheiros alterados" -#: builtin/commit.c:1615 +#: builtin/commit.c:1616 msgid "add specified files to index for commit" msgstr "adicionar ficheiros especificados ao índice para submeter" -#: builtin/commit.c:1616 +#: builtin/commit.c:1617 msgid "interactively add files" msgstr "adicionar ficheiros interativamente" -#: builtin/commit.c:1617 +#: builtin/commit.c:1618 msgid "interactively add changes" msgstr "adicionar alterações interativamente" -#: builtin/commit.c:1618 +#: builtin/commit.c:1619 msgid "commit only specified files" msgstr "submeter somente os ficheiros especificados" -#: builtin/commit.c:1619 -msgid "bypass pre-commit hook" -msgstr "ignorar pre-commit hook" - #: builtin/commit.c:1620 +msgid "bypass pre-commit and commit-msg hooks" +msgstr "ignorar pre-commit e commit-msg hooks" + +#: builtin/commit.c:1621 msgid "show what would be committed" msgstr "mostrar o que seria submetido" -#: builtin/commit.c:1631 +#: builtin/commit.c:1632 msgid "amend previous commit" msgstr "emendar o commit anterior" -#: builtin/commit.c:1632 +#: builtin/commit.c:1633 msgid "bypass post-rewrite hook" msgstr "ignorar post-rewrite hook" -#: builtin/commit.c:1637 +#: builtin/commit.c:1638 msgid "ok to record an empty change" msgstr "aceitar o registo duma alteração vazia" -#: builtin/commit.c:1639 +#: builtin/commit.c:1640 msgid "ok to record a change with an empty message" msgstr "aceitar o registo duma alteração com uma mensagem vazia" -#: builtin/commit.c:1668 +#: builtin/commit.c:1669 msgid "could not parse HEAD commit" msgstr "não foi possível analisar o commit HEAD" -#: builtin/commit.c:1718 +#: builtin/commit.c:1719 #, c-format msgid "Corrupt MERGE_HEAD file (%s)" msgstr "Ficheiro MERGE_HEAD corrompido (%s)" -#: builtin/commit.c:1725 +#: builtin/commit.c:1726 msgid "could not read MERGE_MODE" msgstr "não foi possível ler MERGE_MODE" -#: builtin/commit.c:1744 +#: builtin/commit.c:1745 #, c-format msgid "could not read commit message: %s" msgstr "não foi possível ler a mensagem de commit: %s" -#: builtin/commit.c:1755 +#: builtin/commit.c:1756 #, c-format msgid "Aborting commit; you did not edit the message.\n" msgstr "A abortar o commit; não editou a mensagem.\n" -#: builtin/commit.c:1760 +#: builtin/commit.c:1761 #, c-format msgid "Aborting commit due to empty commit message.\n" msgstr "A abortar o commit uma vez que a mensagem de commit está vazia.\n" -#: builtin/commit.c:1808 +#: builtin/commit.c:1809 msgid "" "Repository has been updated, but unable to write\n" "new_index file. Check that disk is not full and quota is\n" @@ -5921,142 +6351,142 @@ msgstr "" msgid "git config [<options>]" msgstr "git config [<opções>]" -#: builtin/config.c:56 +#: builtin/config.c:55 msgid "Config file location" msgstr "Localização do ficheiro de configuração" -#: builtin/config.c:57 +#: builtin/config.c:56 msgid "use global config file" msgstr "usar ficheiro de configuração global" -#: builtin/config.c:58 +#: builtin/config.c:57 msgid "use system config file" msgstr "usar ficheiro de configuração do sistema" -#: builtin/config.c:59 +#: builtin/config.c:58 msgid "use repository config file" msgstr "usar ficheiro de configuração do repositório" -#: builtin/config.c:60 +#: builtin/config.c:59 msgid "use given config file" msgstr "usar ficheiro de configuração fornecido" -#: builtin/config.c:61 +#: builtin/config.c:60 msgid "blob-id" msgstr "id-blob" -#: builtin/config.c:61 +#: builtin/config.c:60 msgid "read config from given blob object" msgstr "ler configuração a partir do objeto blob fornecido" -#: builtin/config.c:62 +#: builtin/config.c:61 msgid "Action" msgstr "Ação" -#: builtin/config.c:63 +#: builtin/config.c:62 msgid "get value: name [value-regex]" msgstr "obter valor: nome [regex-do-valor]" -#: builtin/config.c:64 +#: builtin/config.c:63 msgid "get all values: key [value-regex]" msgstr "obter todos os valores: chave [regex-do-valor]" -#: builtin/config.c:65 +#: builtin/config.c:64 msgid "get values for regexp: name-regex [value-regex]" msgstr "obter valores para a regexp: regex-do-nome [regex-do-valor]" -#: builtin/config.c:66 +#: builtin/config.c:65 msgid "get value specific for the URL: section[.var] URL" msgstr "obter valor do URL especificado: section[.var] URL" -#: builtin/config.c:67 +#: builtin/config.c:66 msgid "replace all matching variables: name value [value_regex]" msgstr "" "substituir todos as variáveis correspondentes: nome valor [regex-do-valor]" -#: builtin/config.c:68 +#: builtin/config.c:67 msgid "add a new variable: name value" msgstr "adicionar uma nova variável: nome valor" -#: builtin/config.c:69 +#: builtin/config.c:68 msgid "remove a variable: name [value-regex]" msgstr "remover uma variável: nome [regex-do-valor]" -#: builtin/config.c:70 +#: builtin/config.c:69 msgid "remove all matches: name [value-regex]" msgstr "remover todas as correspondências: nome [regex-do-valor]" -#: builtin/config.c:71 +#: builtin/config.c:70 msgid "rename section: old-name new-name" msgstr "mudar o nome da secção: nome-antigo novo-nome" -#: builtin/config.c:72 +#: builtin/config.c:71 msgid "remove a section: name" msgstr "remover uma secção: nome" -#: builtin/config.c:73 +#: builtin/config.c:72 msgid "list all" msgstr "listar todos" -#: builtin/config.c:74 +#: builtin/config.c:73 msgid "open an editor" msgstr "abrir um editor" -#: builtin/config.c:75 +#: builtin/config.c:74 msgid "find the color configured: slot [default]" msgstr "encontrar a cor configurada: slot [predefinição]" -#: builtin/config.c:76 +#: builtin/config.c:75 msgid "find the color setting: slot [stdout-is-tty]" msgstr "encontrar a definição de cor: slot [stdout-é-tty]" -#: builtin/config.c:77 +#: builtin/config.c:76 msgid "Type" msgstr "Tipo" -#: builtin/config.c:78 +#: builtin/config.c:77 msgid "value is \"true\" or \"false\"" msgstr "o valor é \"true\" (verdadeiro) ou \"false\" (falso)" -#: builtin/config.c:79 +#: builtin/config.c:78 msgid "value is decimal number" msgstr "o valor é um número decimal" -#: builtin/config.c:80 +#: builtin/config.c:79 msgid "value is --bool or --int" msgstr "o valor é --bool ou --int" -#: builtin/config.c:81 +#: builtin/config.c:80 msgid "value is a path (file or directory name)" msgstr "o valor é um caminho (nome dum ficheiro ou diretório)" -#: builtin/config.c:82 +#: builtin/config.c:81 msgid "Other" msgstr "Outro" -#: builtin/config.c:83 +#: builtin/config.c:82 msgid "terminate values with NUL byte" msgstr "terminar valores com o byte NUL" -#: builtin/config.c:84 +#: builtin/config.c:83 msgid "show variable names only" msgstr "mostrar apenas os nomes das variáveis" -#: builtin/config.c:85 +#: builtin/config.c:84 msgid "respect include directives on lookup" msgstr "respeitar diretivas de inclusão ao pesquisar" -#: builtin/config.c:86 +#: builtin/config.c:85 msgid "show origin of config (file, standard input, blob, command line)" msgstr "" "mostrar a origem da configuração (ficheiro, entrada padrão, blob, linha de " "comandos)" -#: builtin/config.c:328 +#: builtin/config.c:327 msgid "unable to parse default color value" msgstr "não é possível analisar o valor de cor por omissão" -#: builtin/config.c:472 +#: builtin/config.c:471 #, c-format msgid "" "# This is Git's per-user configuration file.\n" @@ -6071,7 +6501,7 @@ msgstr "" "#\tname = %s\n" "#\temail = %s\n" -#: builtin/config.c:614 +#: builtin/config.c:613 #, c-format msgid "cannot create configuration file %s" msgstr "não é possível criar o ficheiro de configuração %s" @@ -6107,7 +6537,7 @@ msgstr "a tag anotada %s não tem nenhum nome incorporado" msgid "tag '%s' is really '%s' here" msgstr "a tag '%s' está de facto em '%s'" -#: builtin/describe.c:250 builtin/log.c:465 +#: builtin/describe.c:250 builtin/log.c:480 #, c-format msgid "Not a valid object name %s" msgstr "%s não é um nome de objeto válido" @@ -6307,176 +6737,178 @@ msgstr "Aplicar o especificador de referência a referências exportadas" msgid "anonymize output" msgstr "anonimizar saída" -#: builtin/fetch.c:20 +#: builtin/fetch.c:21 msgid "git fetch [<options>] [<repository> [<refspec>...]]" -msgstr "git fetch [<opções>] [<repositório> [<especificador-de-referência>...]]" +msgstr "" +"git fetch [<opções>] [<repositório> [<especificador-de-referência>...]]" -#: builtin/fetch.c:21 +#: builtin/fetch.c:22 msgid "git fetch [<options>] <group>" msgstr "git fetch [<opções>] <grupo>" -#: builtin/fetch.c:22 +#: builtin/fetch.c:23 msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]" msgstr "git fetch --multiple [<opções>] [(<repositório> | <grupo>)...]" -#: builtin/fetch.c:23 +#: builtin/fetch.c:24 msgid "git fetch --all [<options>]" msgstr "git fetch --all [<opções>]" -#: builtin/fetch.c:92 builtin/pull.c:174 +#: builtin/fetch.c:93 builtin/pull.c:174 msgid "fetch from all remotes" msgstr "obter de todos os remotos" -#: builtin/fetch.c:94 builtin/pull.c:177 +#: builtin/fetch.c:95 builtin/pull.c:177 msgid "append to .git/FETCH_HEAD instead of overwriting" msgstr "acrescentar a .git/FETCH_HEAD em vez de substituir" -#: builtin/fetch.c:96 builtin/pull.c:180 +#: builtin/fetch.c:97 builtin/pull.c:180 msgid "path to upload pack on remote end" msgstr "caminho para o comando upload pack no remoto" -#: builtin/fetch.c:97 builtin/pull.c:182 +#: builtin/fetch.c:98 builtin/pull.c:182 msgid "force overwrite of local branch" msgstr "forçar a substituição do ramo local" -#: builtin/fetch.c:99 +#: builtin/fetch.c:100 msgid "fetch from multiple remotes" msgstr "obter de múltiplos remotos" -#: builtin/fetch.c:101 builtin/pull.c:184 +#: builtin/fetch.c:102 builtin/pull.c:184 msgid "fetch all tags and associated objects" msgstr "obter todas as tags e objetos associados" -#: builtin/fetch.c:103 +#: builtin/fetch.c:104 msgid "do not fetch all tags (--no-tags)" msgstr "não obter todas as tags (--no-tags)" -#: builtin/fetch.c:105 +#: builtin/fetch.c:106 msgid "number of submodules fetched in parallel" msgstr "número de submódulos obtidos em paralelo" -#: builtin/fetch.c:107 builtin/pull.c:187 +#: builtin/fetch.c:108 builtin/pull.c:187 msgid "prune remote-tracking branches no longer on remote" msgstr "eliminar os ramos de monitorização remotos que já não existem no remoto" -#: builtin/fetch.c:108 builtin/pull.c:190 +#: builtin/fetch.c:109 builtin/pull.c:190 msgid "on-demand" msgstr "on-demand" -#: builtin/fetch.c:109 builtin/pull.c:191 +#: builtin/fetch.c:110 builtin/pull.c:191 msgid "control recursive fetching of submodules" msgstr "controlar a obtenção recursiva de submódulos" -#: builtin/fetch.c:113 builtin/pull.c:199 +#: builtin/fetch.c:114 builtin/pull.c:199 msgid "keep downloaded pack" msgstr "manter o pacote transferido" -#: builtin/fetch.c:115 +#: builtin/fetch.c:116 msgid "allow updating of HEAD ref" msgstr "permitir a atualização da referência HEAD" -#: builtin/fetch.c:118 builtin/pull.c:202 +#: builtin/fetch.c:119 builtin/pull.c:202 msgid "deepen history of shallow clone" msgstr "aprofundar o histórico de um clone raso" -#: builtin/fetch.c:120 builtin/pull.c:205 +#: builtin/fetch.c:121 builtin/pull.c:205 msgid "convert to a complete repository" msgstr "converter num repositório completo" -#: builtin/fetch.c:122 builtin/log.c:1399 +#: builtin/fetch.c:123 builtin/log.c:1426 msgid "dir" msgstr "dir" -#: builtin/fetch.c:123 +#: builtin/fetch.c:124 msgid "prepend this to submodule path output" msgstr "preceder isto ao caminho do submódulo" -#: builtin/fetch.c:126 +#: builtin/fetch.c:127 msgid "default mode for recursion" msgstr "modo recursivo por omissão" -#: builtin/fetch.c:128 builtin/pull.c:208 +#: builtin/fetch.c:129 builtin/pull.c:208 msgid "accept refs that update .git/shallow" msgstr "aceitar referência que atualizem .git/shallow" -#: builtin/fetch.c:129 builtin/pull.c:210 +#: builtin/fetch.c:130 builtin/pull.c:210 msgid "refmap" msgstr "mapa de referências" -#: builtin/fetch.c:130 builtin/pull.c:211 +#: builtin/fetch.c:131 builtin/pull.c:211 msgid "specify fetch refmap" msgstr "especificar mapa de referências" -#: builtin/fetch.c:386 +#: builtin/fetch.c:387 msgid "Couldn't find remote ref HEAD" msgstr "Referência remota HEAD não encontrada" -#: builtin/fetch.c:466 +#: builtin/fetch.c:503 +#, c-format +msgid "configuration fetch.output contains invalid value %s" +msgstr "a configuração fetch.ouput contém o valor inválido %s" + +#: builtin/fetch.c:592 #, c-format msgid "object %s not found" msgstr "objeto %s não encontrado" -#: builtin/fetch.c:471 +#: builtin/fetch.c:596 msgid "[up to date]" msgstr "[atualizado]" -#: builtin/fetch.c:485 -#, c-format -msgid "! %-*s %-*s -> %s (can't fetch in current branch)" -msgstr "! %-*s %-*s -> %s (não é possível obter no ramo atual)" - -#: builtin/fetch.c:486 builtin/fetch.c:574 +#: builtin/fetch.c:609 builtin/fetch.c:689 msgid "[rejected]" msgstr "[rejeitado]" -#: builtin/fetch.c:497 +#: builtin/fetch.c:610 +msgid "can't fetch in current branch" +msgstr "não é possível obter no ramo atual" + +#: builtin/fetch.c:619 msgid "[tag update]" msgstr "[tag atualizada]" -#: builtin/fetch.c:499 builtin/fetch.c:534 builtin/fetch.c:552 -msgid " (unable to update local ref)" -msgstr " (não é possível atualizar a referência local)" +#: builtin/fetch.c:620 builtin/fetch.c:653 builtin/fetch.c:669 +#: builtin/fetch.c:684 +msgid "unable to update local ref" +msgstr "não é possível atualizar a referência local" -#: builtin/fetch.c:517 +#: builtin/fetch.c:639 msgid "[new tag]" msgstr "[nova tag]" -#: builtin/fetch.c:520 +#: builtin/fetch.c:642 msgid "[new branch]" msgstr "[novo ramo]" -#: builtin/fetch.c:523 +#: builtin/fetch.c:645 msgid "[new ref]" msgstr "[nova referência]" -#: builtin/fetch.c:569 -msgid "unable to update local ref" -msgstr "não é possível atualizar a referência local" - -#: builtin/fetch.c:569 +#: builtin/fetch.c:684 msgid "forced update" msgstr "atualização forçada" -#: builtin/fetch.c:576 -msgid "(non-fast-forward)" -msgstr "(sem avanço rápido)" +#: builtin/fetch.c:689 +msgid "non-fast-forward" +msgstr "sem avanço-rápido" -#: builtin/fetch.c:619 +#: builtin/fetch.c:733 #, c-format msgid "%s did not send all necessary objects\n" msgstr "%s não enviou todos os objetos necessários\n" -#: builtin/fetch.c:637 +#: builtin/fetch.c:753 #, c-format msgid "reject %s because shallow roots are not allowed to be updated" msgstr "%s rejeitado, porque as raízes rasas não podem ser atualizadas" -#: builtin/fetch.c:724 builtin/fetch.c:816 +#: builtin/fetch.c:839 builtin/fetch.c:934 #, c-format msgid "From %.*s\n" msgstr "De %.*s\n" -#: builtin/fetch.c:735 +#: builtin/fetch.c:850 #, c-format msgid "" "some local refs could not be updated; try running\n" @@ -6485,55 +6917,55 @@ msgstr "" "algumas referências locais não puderam ser atualizadas; tente executar\n" " 'git remote prune %s' para remover algum ramo antigo em conflito" -#: builtin/fetch.c:787 +#: builtin/fetch.c:904 #, c-format msgid " (%s will become dangling)" msgstr " (%s ficará suspenso)" -#: builtin/fetch.c:788 +#: builtin/fetch.c:905 #, c-format msgid " (%s has become dangling)" msgstr " (%s ficou suspenso)" -#: builtin/fetch.c:820 +#: builtin/fetch.c:937 msgid "[deleted]" msgstr "[eliminado]" -#: builtin/fetch.c:821 builtin/remote.c:1025 +#: builtin/fetch.c:938 builtin/remote.c:1020 msgid "(none)" msgstr "(nenhum)" -#: builtin/fetch.c:841 +#: builtin/fetch.c:960 #, c-format msgid "Refusing to fetch into current branch %s of non-bare repository" msgstr "Obtenção de objetos no ramo atual %s de um repositório não nu recusada" -#: builtin/fetch.c:860 +#: builtin/fetch.c:979 #, c-format msgid "Option \"%s\" value \"%s\" is not valid for %s" msgstr "O valor \"%2$s\" da opção \"%1$s\" não é válido em %3$s" -#: builtin/fetch.c:863 +#: builtin/fetch.c:982 #, c-format msgid "Option \"%s\" is ignored for %s\n" msgstr "Opção \"%s\" ignorada em %s\n" -#: builtin/fetch.c:920 +#: builtin/fetch.c:1039 #, c-format msgid "Don't know how to fetch from %s" msgstr "Não sei como obter de %s" -#: builtin/fetch.c:1080 +#: builtin/fetch.c:1199 #, c-format msgid "Fetching %s\n" msgstr "A obter de %s\n" -#: builtin/fetch.c:1082 builtin/remote.c:96 +#: builtin/fetch.c:1201 builtin/remote.c:96 #, c-format msgid "Could not fetch %s" msgstr "Não foi possível obter de %s" -#: builtin/fetch.c:1100 +#: builtin/fetch.c:1219 msgid "" "No remote repository specified. Please, specify either a URL or a\n" "remote name from which new revisions should be fetched." @@ -6541,32 +6973,32 @@ msgstr "" "Nenhum repositório remoto especificado. Especifique um URL ou\n" "o nome remoto a partir do qual as novas revisões devem ser obtidas." -#: builtin/fetch.c:1123 +#: builtin/fetch.c:1242 msgid "You need to specify a tag name." msgstr "Deve especificar um nome para a tag." -#: builtin/fetch.c:1165 +#: builtin/fetch.c:1284 msgid "--depth and --unshallow cannot be used together" msgstr "--depth e --unshallow não podem ser usados juntos" -#: builtin/fetch.c:1167 +#: builtin/fetch.c:1286 msgid "--unshallow on a complete repository does not make sense" msgstr "usar --unshallow num repositório completo não faz sentido" -#: builtin/fetch.c:1187 +#: builtin/fetch.c:1306 msgid "fetch --all does not take a repository argument" msgstr "fetch --all não leva um repositório como argumento" -#: builtin/fetch.c:1189 +#: builtin/fetch.c:1308 msgid "fetch --all does not make sense with refspecs" msgstr "fetch --all não faz sentido com especificadores de referência" -#: builtin/fetch.c:1200 +#: builtin/fetch.c:1319 #, c-format msgid "No such remote or remote group: %s" msgstr "O remoto ou grupo remoto não existe: %s" -#: builtin/fetch.c:1208 +#: builtin/fetch.c:1327 msgid "Fetching a group and specifying refspecs does not make sense" msgstr "Não faz sentido obter um grupo e especificar uma referência" @@ -6656,63 +7088,63 @@ msgstr "imprimir apenas referências não integrada" msgid "print only refs which contain the commit" msgstr "imprimir apenas referências que contenham o commit" -#: builtin/fsck.c:156 builtin/prune.c:140 -msgid "Checking connectivity" -msgstr "A verificar conectividade" - -#: builtin/fsck.c:486 +#: builtin/fsck.c:519 msgid "Checking object directories" msgstr "A verificar diretórios de objetos" -#: builtin/fsck.c:552 +#: builtin/fsck.c:588 msgid "git fsck [<options>] [<object>...]" msgstr "git fsck [<opções>] [<objeto>...]" -#: builtin/fsck.c:558 +#: builtin/fsck.c:594 msgid "show unreachable objects" msgstr "mostrar objetos inalcançáveis" -#: builtin/fsck.c:559 +#: builtin/fsck.c:595 msgid "show dangling objects" msgstr "mostrar objetos suspensos" -#: builtin/fsck.c:560 +#: builtin/fsck.c:596 msgid "report tags" msgstr "mostrar tags" -#: builtin/fsck.c:561 +#: builtin/fsck.c:597 msgid "report root nodes" msgstr "mostrar nós raiz" -#: builtin/fsck.c:562 +#: builtin/fsck.c:598 msgid "make index objects head nodes" msgstr "considerar objetos do índice como nós cabeça" -#: builtin/fsck.c:563 +#: builtin/fsck.c:599 msgid "make reflogs head nodes (default)" msgstr "considerar os reflogs como nós cabeça (predefinição)" -#: builtin/fsck.c:564 +#: builtin/fsck.c:600 msgid "also consider packs and alternate objects" msgstr "considerar também pacotes e objetos sobressalente" -#: builtin/fsck.c:565 +#: builtin/fsck.c:601 msgid "check only connectivity" msgstr "verificar só a conetividade" -#: builtin/fsck.c:566 +#: builtin/fsck.c:602 msgid "enable more strict checking" msgstr "ativar verificação mais rigorosa" -#: builtin/fsck.c:568 +#: builtin/fsck.c:604 msgid "write dangling objects in .git/lost-found" msgstr "escrever objetos suspensos em .git/lost-found" -#: builtin/fsck.c:569 builtin/prune.c:107 +#: builtin/fsck.c:605 builtin/prune.c:107 msgid "show progress" msgstr "mostrar progresso" -#: builtin/fsck.c:630 +#: builtin/fsck.c:606 +msgid "show verbose names for reachable objects" +msgstr "mostrar nomes verbosos de objetos inalcançáveis" + +#: builtin/fsck.c:671 msgid "Checking objects" msgstr "A verificar objetos" @@ -7007,7 +7439,7 @@ msgstr "permitir invocar grep(1) (ignorado nesta compilação)" msgid "no pattern given." msgstr "nenhum padrão fornecido." -#: builtin/grep.c:845 builtin/index-pack.c:1477 +#: builtin/grep.c:845 builtin/index-pack.c:1479 #, c-format msgid "invalid number of threads specified (%d)" msgstr "número de threads especificado inválido (%d)" @@ -7038,8 +7470,8 @@ msgid "" "git hash-object [-t <type>] [-w] [--path=<file> | --no-filters] [--stdin] " "[--] <file>..." msgstr "" -"git hash-object [-t <tipo>] [-w] [--path=<ficheiro> | --no-filters] [--stdin]" -" [--] <ficheiro>..." +"git hash-object [-t <tipo>] [-w] [--path=<ficheiro> | --no-filters] [--" +"stdin] [--] <ficheiro>..." #: builtin/hash-object.c:82 msgid "git hash-object --stdin-paths" @@ -7201,288 +7633,284 @@ msgstr "utilização: %s%s" msgid "`git %s' is aliased to `%s'" msgstr "'git %s' é um alias de '%s'" -#: builtin/index-pack.c:152 +#: builtin/index-pack.c:153 #, c-format msgid "unable to open %s" msgstr "não foi possível abrir %s" -#: builtin/index-pack.c:202 +#: builtin/index-pack.c:203 #, c-format msgid "object type mismatch at %s" msgstr "incompatibilidade de tipo de objeto em %s" -#: builtin/index-pack.c:222 +#: builtin/index-pack.c:223 #, c-format msgid "did not receive expected object %s" msgstr "o objeto esperado %s não foi recebido" -#: builtin/index-pack.c:225 +#: builtin/index-pack.c:226 #, c-format msgid "object %s: expected type %s, found %s" msgstr "objeto %s: tipo esperado %s, obtido %s" -#: builtin/index-pack.c:267 +#: builtin/index-pack.c:268 #, c-format msgid "cannot fill %d byte" msgid_plural "cannot fill %d bytes" msgstr[0] "não é possível preencher %d byte" msgstr[1] "não é possível preencher %d bytes" -#: builtin/index-pack.c:277 +#: builtin/index-pack.c:278 msgid "early EOF" msgstr "fim de ficheiro (EOF) prematuro" -#: builtin/index-pack.c:278 +#: builtin/index-pack.c:279 msgid "read error on input" msgstr "erro de leitura da entrada" -#: builtin/index-pack.c:290 +#: builtin/index-pack.c:291 msgid "used more bytes than were available" msgstr "foram usados mais bytes dos que estavam disponíveis" -#: builtin/index-pack.c:297 +#: builtin/index-pack.c:298 msgid "pack too large for current definition of off_t" msgstr "pacote demasiado grande para a definição atual de off_t" -#: builtin/index-pack.c:313 +#: builtin/index-pack.c:314 #, c-format msgid "unable to create '%s'" msgstr "não foi possível criar '%s'" -#: builtin/index-pack.c:318 +#: builtin/index-pack.c:319 #, c-format msgid "cannot open packfile '%s'" msgstr "não é possível abrir o ficheiro de pacote '%s'" -#: builtin/index-pack.c:332 +#: builtin/index-pack.c:333 msgid "pack signature mismatch" msgstr "a assinatura do pacote não corresponde" -#: builtin/index-pack.c:334 +#: builtin/index-pack.c:335 #, c-format msgid "pack version %<PRIu32> unsupported" msgstr "versão de pacote %<PRIu32> não suportada" -#: builtin/index-pack.c:352 +#: builtin/index-pack.c:353 #, c-format -msgid "pack has bad object at offset %lu: %s" -msgstr "pacote com objeto incorreto no offset %lu: %s" +msgid "pack has bad object at offset %<PRIuMAX>: %s" +msgstr "pacote com objeto incorreto no offset %<PRIuMAX>: %s" -#: builtin/index-pack.c:473 +#: builtin/index-pack.c:475 #, c-format msgid "inflate returned %d" msgstr "a descompactação retornou %d" -#: builtin/index-pack.c:522 +#: builtin/index-pack.c:524 msgid "offset value overflow for delta base object" msgstr "delta de objeto base com capacidade excedida no valor de offset" -#: builtin/index-pack.c:530 +#: builtin/index-pack.c:532 msgid "delta base offset is out of bound" msgstr "offset da base delta está fora do limite" -#: builtin/index-pack.c:538 +#: builtin/index-pack.c:540 #, c-format msgid "unknown object type %d" msgstr "objeto de tipo desconhecido %d" -#: builtin/index-pack.c:569 +#: builtin/index-pack.c:571 msgid "cannot pread pack file" msgstr "não é possível invocar pread sobre o ficheiro de pacote" -#: builtin/index-pack.c:571 +#: builtin/index-pack.c:573 #, c-format -msgid "premature end of pack file, %lu byte missing" -msgid_plural "premature end of pack file, %lu bytes missing" -msgstr[0] "fim de ficheiro de pacote prematuro, falta %lu byte" -msgstr[1] "fim de ficheiro de pacote prematuro, faltam %lu bytes" +msgid "premature end of pack file, %<PRIuMAX> byte missing" +msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing" +msgstr[0] "fim prematuro de ficheiro de pacote, falta %<PRIuMAX> byte" +msgstr[1] "fim prematuro de ficheiro de pacote, faltam %<PRIuMAX> bytes" -#: builtin/index-pack.c:597 +#: builtin/index-pack.c:599 msgid "serious inflate inconsistency" msgstr "inconsistência de descompactação grave" -#: builtin/index-pack.c:743 builtin/index-pack.c:749 builtin/index-pack.c:772 -#: builtin/index-pack.c:806 builtin/index-pack.c:815 +#: builtin/index-pack.c:745 builtin/index-pack.c:751 builtin/index-pack.c:774 +#: builtin/index-pack.c:808 builtin/index-pack.c:817 #, c-format msgid "SHA1 COLLISION FOUND WITH %s !" msgstr "COLISÃO DE SHA1 COM %s ENCONTRADA!" -#: builtin/index-pack.c:746 builtin/pack-objects.c:162 -#: builtin/pack-objects.c:254 +#: builtin/index-pack.c:748 builtin/pack-objects.c:164 +#: builtin/pack-objects.c:256 #, c-format msgid "unable to read %s" msgstr "não foi possível ler %s" -#: builtin/index-pack.c:812 +#: builtin/index-pack.c:814 #, c-format msgid "cannot read existing object %s" msgstr "não é possível ler o objeto existente %s" -#: builtin/index-pack.c:826 +#: builtin/index-pack.c:828 #, c-format msgid "invalid blob object %s" msgstr "objeto blob inválido %s" -#: builtin/index-pack.c:840 +#: builtin/index-pack.c:842 #, c-format msgid "invalid %s" msgstr "inválido %s" -#: builtin/index-pack.c:843 +#: builtin/index-pack.c:845 msgid "Error in object" msgstr "Erro no objeto" -#: builtin/index-pack.c:845 +#: builtin/index-pack.c:847 #, c-format msgid "Not all child objects of %s are reachable" msgstr "Nem todos os objetos filhos de %s são alcançáveis" -#: builtin/index-pack.c:917 builtin/index-pack.c:948 +#: builtin/index-pack.c:919 builtin/index-pack.c:950 msgid "failed to apply delta" msgstr "falha ao aplicar delta" -#: builtin/index-pack.c:1118 +#: builtin/index-pack.c:1120 msgid "Receiving objects" msgstr "A receber objetos" -#: builtin/index-pack.c:1118 +#: builtin/index-pack.c:1120 msgid "Indexing objects" msgstr "A indexar objetos" -#: builtin/index-pack.c:1150 +#: builtin/index-pack.c:1152 msgid "pack is corrupted (SHA1 mismatch)" msgstr "pacote corrompido (SHA1 não corresponde)" -#: builtin/index-pack.c:1155 +#: builtin/index-pack.c:1157 msgid "cannot fstat packfile" msgstr "não é possível invocar fstat sobre o ficheiro de pacote" -#: builtin/index-pack.c:1158 +#: builtin/index-pack.c:1160 msgid "pack has junk at the end" msgstr "pacote com lixo no final" -#: builtin/index-pack.c:1169 +#: builtin/index-pack.c:1171 msgid "confusion beyond insanity in parse_pack_objects()" msgstr "extrema confusão em parse_pack_objects()" -#: builtin/index-pack.c:1194 +#: builtin/index-pack.c:1196 msgid "Resolving deltas" msgstr "A resolver deltas" -#: builtin/index-pack.c:1205 +#: builtin/index-pack.c:1207 #, c-format msgid "unable to create thread: %s" msgstr "não foi possível criar thread: %s" -#: builtin/index-pack.c:1247 +#: builtin/index-pack.c:1249 msgid "confusion beyond insanity" msgstr "extrema confusão" -#: builtin/index-pack.c:1253 +#: builtin/index-pack.c:1255 #, c-format msgid "completed with %d local object" msgid_plural "completed with %d local objects" msgstr[0] "concluído com %d objeto local" msgstr[1] "concluído com %d objetos locais" -#: builtin/index-pack.c:1265 +#: builtin/index-pack.c:1267 #, c-format msgid "Unexpected tail checksum for %s (disk corruption?)" msgstr "Soma de verificação inesperada no final de %s (corrupção no disco?)" -#: builtin/index-pack.c:1269 +#: builtin/index-pack.c:1271 #, c-format msgid "pack has %d unresolved delta" msgid_plural "pack has %d unresolved deltas" msgstr[0] "pacote com %d delta não resolvido" msgstr[1] "pacote com %d deltas não resolvidos" -#: builtin/index-pack.c:1293 +#: builtin/index-pack.c:1295 #, c-format msgid "unable to deflate appended object (%d)" msgstr "não é possível compactar objeto acrescentado (%d)" -#: builtin/index-pack.c:1369 +#: builtin/index-pack.c:1371 #, c-format msgid "local object %s is corrupt" msgstr "objeto local %s corrompido" -#: builtin/index-pack.c:1393 +#: builtin/index-pack.c:1395 msgid "error while closing pack file" msgstr "erro ao fechar ficheiro de pacote" -#: builtin/index-pack.c:1406 +#: builtin/index-pack.c:1408 #, c-format msgid "cannot write keep file '%s'" msgstr "não é possível escrever o ficheiro de conservação '%s'" -#: builtin/index-pack.c:1414 +#: builtin/index-pack.c:1416 #, c-format msgid "cannot close written keep file '%s'" msgstr "não é possível fechar o ficheiro de conservação '%s' escrito" -#: builtin/index-pack.c:1427 +#: builtin/index-pack.c:1429 msgid "cannot store pack file" msgstr "não é possível guardar ficheiro de pacote" -#: builtin/index-pack.c:1438 +#: builtin/index-pack.c:1440 msgid "cannot store index file" msgstr "não é possível guardar o ficheiro índice" -#: builtin/index-pack.c:1471 +#: builtin/index-pack.c:1473 #, c-format msgid "bad pack.indexversion=%<PRIu32>" msgstr "pack.indexversion=%<PRIu32> incorreto" -#: builtin/index-pack.c:1481 builtin/index-pack.c:1678 +#: builtin/index-pack.c:1483 builtin/index-pack.c:1681 #, c-format msgid "no threads support, ignoring %s" msgstr "sem suporte de threads, %s ignorado" -#: builtin/index-pack.c:1540 +#: builtin/index-pack.c:1542 #, c-format msgid "Cannot open existing pack file '%s'" msgstr "Não é possível abrir o ficheiro de pacote '%s' existente" -#: builtin/index-pack.c:1542 +#: builtin/index-pack.c:1544 #, c-format msgid "Cannot open existing pack idx file for '%s'" msgstr "Não é possível abrir o ficheiro de índice do pacote existente de '%s'" -#: builtin/index-pack.c:1589 +#: builtin/index-pack.c:1591 #, c-format msgid "non delta: %d object" msgid_plural "non delta: %d objects" msgstr[0] "%d objeto não delta" msgstr[1] "%d objetos não delta" -#: builtin/index-pack.c:1596 +#: builtin/index-pack.c:1598 #, c-format msgid "chain length = %d: %lu object" msgid_plural "chain length = %d: %lu objects" msgstr[0] "comprimento de cadeia = %d: %lu objeto" msgstr[1] "comprimento de cadeia = %d: %lu objetos" -#: builtin/index-pack.c:1609 +#: builtin/index-pack.c:1611 #, c-format msgid "packfile name '%s' does not end with '.pack'" msgstr "o nome do ficheiro de pacote '%s' não termina em '.pack'" -#: builtin/index-pack.c:1638 -msgid "Cannot come back to cwd" -msgstr "Não é possível voltar ao diretório de trabalho atual" - -#: builtin/index-pack.c:1690 builtin/index-pack.c:1693 -#: builtin/index-pack.c:1705 builtin/index-pack.c:1709 +#: builtin/index-pack.c:1693 builtin/index-pack.c:1696 +#: builtin/index-pack.c:1712 builtin/index-pack.c:1716 #, c-format msgid "bad %s" msgstr "%s incorreto" -#: builtin/index-pack.c:1723 +#: builtin/index-pack.c:1730 msgid "--fix-thin cannot be used without --stdin" msgstr "--fix-thin não pode ser usado sem --stdin" -#: builtin/index-pack.c:1731 +#: builtin/index-pack.c:1738 msgid "--verify with no packfile name given" msgstr "--verify sem nome do ficheiro de pacote indicado" @@ -7546,54 +7974,54 @@ msgstr "não foi possível processar o tipo de ficheiro %d" msgid "unable to move %s to %s" msgstr "não foi possível mover %s para %s" -#. TRANSLATORS: The first '%s' is either "Reinitialized -#. existing" or "Initialized empty", the second " shared" or -#. "", and the last '%s%s' is the verbatim directory name. -#: builtin/init-db.c:403 +#: builtin/init-db.c:402 #, c-format -msgid "%s%s Git repository in %s%s\n" -msgstr "Repositório Git %s%s em %s%s\n" +msgid "Reinitialized existing shared Git repository in %s%s\n" +msgstr "Repositório Git partilhado e existente reinicializado em %s%s\n" -#: builtin/init-db.c:404 -msgid "Reinitialized existing" -msgstr "existente reinicializado" +#: builtin/init-db.c:403 +#, c-format +msgid "Reinitialized existing Git repository in %s%s\n" +msgstr "Repositório Git existem reinicializado em %s%s\n" -#: builtin/init-db.c:404 -msgid "Initialized empty" -msgstr "vazio inicializado" +#: builtin/init-db.c:407 +#, c-format +msgid "Initialized empty shared Git repository in %s%s\n" +msgstr "Repositório Git vazio e partilhado inicializado em %s%s\n" -#: builtin/init-db.c:405 -msgid " shared" -msgstr " partilhado" +#: builtin/init-db.c:408 +#, c-format +msgid "Initialized empty Git repository in %s%s\n" +msgstr "Repositório Git vazio inicializado em %s%s\n" -#: builtin/init-db.c:452 +#: builtin/init-db.c:455 msgid "" "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--" "shared[=<permissions>]] [<directory>]" msgstr "" -"git init [-q | --quiet] [--bare] [--template=<diretório-modelo>] " -"[--shared[=<permissões>]] [<diretório>]" +"git init [-q | --quiet] [--bare] [--template=<diretório-modelo>] [--" +"shared[=<permissões>]] [<diretório>]" -#: builtin/init-db.c:475 +#: builtin/init-db.c:478 msgid "permissions" msgstr "permissões" -#: builtin/init-db.c:476 +#: builtin/init-db.c:479 msgid "specify that the git repository is to be shared amongst several users" msgstr "" "especificar que o repositório git será partilhado por vários utilizadores" -#: builtin/init-db.c:510 builtin/init-db.c:515 +#: builtin/init-db.c:513 builtin/init-db.c:518 #, c-format msgid "cannot mkdir %s" msgstr "não é possível criar o diretório %s" -#: builtin/init-db.c:519 +#: builtin/init-db.c:522 #, c-format msgid "cannot chdir to %s" msgstr "não é possível mudar para o diretório %s" -#: builtin/init-db.c:540 +#: builtin/init-db.c:543 #, c-format msgid "" "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-" @@ -7602,7 +8030,7 @@ msgstr "" "%s (ou --work-tree=<diretório>) não é permitido sem especificar %s (ou --git-" "dir=<diretório>)" -#: builtin/init-db.c:568 +#: builtin/init-db.c:571 #, c-format msgid "Cannot access work tree '%s'" msgstr "Não é possível aceder à árvore de trabalho '%s'" @@ -7635,332 +8063,332 @@ msgstr "terminadores a adicionar" msgid "no input file given for in-place editing" msgstr "nenhum ficheiro de entrada fornecido para edição no local" -#: builtin/log.c:43 +#: builtin/log.c:44 msgid "git log [<options>] [<revision-range>] [[--] <path>...]" msgstr "git log [<opções>] [<intervalo-de-revisões>] [[--] <caminho>...]" -#: builtin/log.c:44 +#: builtin/log.c:45 msgid "git show [<options>] <object>..." msgstr "git show [<opções>] <objeto>..." -#: builtin/log.c:83 +#: builtin/log.c:84 #, c-format msgid "invalid --decorate option: %s" msgstr "opção --decorate inválida: %s" -#: builtin/log.c:137 +#: builtin/log.c:139 msgid "suppress diff output" msgstr "suprimir saída do diff" -#: builtin/log.c:138 +#: builtin/log.c:140 msgid "show source" msgstr "mostrar origem" -#: builtin/log.c:139 +#: builtin/log.c:141 msgid "Use mail map file" msgstr "usar ficheiro de mapeamento de correio" -#: builtin/log.c:140 +#: builtin/log.c:142 msgid "decorate options" msgstr "opções de decoração" -#: builtin/log.c:143 +#: builtin/log.c:145 msgid "Process line range n,m in file, counting from 1" -msgstr "processar intervalo de linhas n,m, a cantar a partir de 1" +msgstr "processar intervalo de linhas n,m, a contar a partir de 1" -#: builtin/log.c:239 +#: builtin/log.c:241 #, c-format msgid "Final output: %d %s\n" msgstr "Resultado final: %d %s\n" -#: builtin/log.c:471 +#: builtin/log.c:486 #, c-format msgid "git show %s: bad file" msgstr "git show %s: ficheiro incorreto" -#: builtin/log.c:485 builtin/log.c:578 +#: builtin/log.c:500 builtin/log.c:594 #, c-format msgid "Could not read object %s" msgstr "Não foi possível ler o objeto %s" -#: builtin/log.c:602 +#: builtin/log.c:618 #, c-format msgid "Unknown type: %d" msgstr "Tipo desconhecido: %d" -#: builtin/log.c:722 +#: builtin/log.c:739 msgid "format.headers without value" msgstr "format.headers sem valor" -#: builtin/log.c:812 +#: builtin/log.c:839 msgid "name of output directory is too long" msgstr "o nome do diretório de saída é demasiado longo" -#: builtin/log.c:827 +#: builtin/log.c:854 #, c-format msgid "Cannot open patch file %s" msgstr "Não é possível abrir o ficheiro de patch %s" -#: builtin/log.c:841 +#: builtin/log.c:868 msgid "Need exactly one range." msgstr "É necessário exatamente um intervalo." -#: builtin/log.c:851 +#: builtin/log.c:878 msgid "Not a range." msgstr "Não é um intervalo." -#: builtin/log.c:957 +#: builtin/log.c:984 msgid "Cover letter needs email format" msgstr "A carta de apresentação precisa de um formato de e-mail" -#: builtin/log.c:1036 +#: builtin/log.c:1064 #, c-format msgid "insane in-reply-to: %s" msgstr "in-reply-to incorreto: %s" -#: builtin/log.c:1064 +#: builtin/log.c:1092 msgid "git format-patch [<options>] [<since> | <revision-range>]" msgstr "git format-patch [<opções>] [<desde> | <intervalo-de-revisões>]" -#: builtin/log.c:1109 +#: builtin/log.c:1137 msgid "Two output directories?" msgstr "Dois diretórios de saída?" -#: builtin/log.c:1216 builtin/log.c:1857 builtin/log.c:1859 builtin/log.c:1871 +#: builtin/log.c:1244 builtin/log.c:1883 builtin/log.c:1885 builtin/log.c:1897 #, c-format msgid "Unknown commit %s" msgstr "Commit desconhecido %s" -#: builtin/log.c:1226 builtin/notes.c:253 builtin/notes.c:304 -#: builtin/notes.c:306 builtin/notes.c:369 builtin/notes.c:424 -#: builtin/notes.c:510 builtin/notes.c:515 builtin/notes.c:593 -#: builtin/notes.c:656 builtin/notes.c:881 builtin/tag.c:455 +#: builtin/log.c:1254 builtin/notes.c:254 builtin/notes.c:305 +#: builtin/notes.c:307 builtin/notes.c:370 builtin/notes.c:425 +#: builtin/notes.c:511 builtin/notes.c:516 builtin/notes.c:594 +#: builtin/notes.c:657 builtin/notes.c:882 builtin/tag.c:455 #, c-format msgid "Failed to resolve '%s' as a valid ref." msgstr "Falha ao resolver '%s' numa referência válida." -#: builtin/log.c:1231 +#: builtin/log.c:1259 msgid "Could not find exact merge base." msgstr "Não foi possível encontrar a base exata de integração." -#: builtin/log.c:1235 +#: builtin/log.c:1263 msgid "" "Failed to get upstream, if you want to record base commit automatically,\n" "please use git branch --set-upstream-to to track a remote branch.\n" "Or you could specify base commit by --base=<base-commit-id> manually." msgstr "" -"Falha ao obter ramo a montante, se quer gravar o commit base automaticamente," -"\n" +"Falha ao obter ramo a montante, se quer gravar o commit base " +"automaticamente,\n" "use branch --set-upstream-to para seguir um ramo remoto.\n" "Ou pode especificar o commit base com --base=<base-commit-id> manualmente." -#: builtin/log.c:1255 +#: builtin/log.c:1283 msgid "Failed to find exact merge base" msgstr "Falha ao procurar base exata de integração" -#: builtin/log.c:1266 +#: builtin/log.c:1294 msgid "base commit should be the ancestor of revision list" msgstr "o commit base deve ser o antecessor da lista de revisões" -#: builtin/log.c:1270 +#: builtin/log.c:1298 msgid "base commit shouldn't be in revision list" msgstr "o commit base não deve fazer parte da lista de revisões" -#: builtin/log.c:1319 +#: builtin/log.c:1347 msgid "cannot get patch id" msgstr "não é possível obter o id do patch" -#: builtin/log.c:1377 +#: builtin/log.c:1404 msgid "use [PATCH n/m] even with a single patch" msgstr "usar [PATCH n/m] mesmo com um único patch" -#: builtin/log.c:1380 +#: builtin/log.c:1407 msgid "use [PATCH] even with multiple patches" msgstr "usar [PATCH] mesmo com múltiplos patches" -#: builtin/log.c:1384 +#: builtin/log.c:1411 msgid "print patches to standard out" msgstr "imprimir patches para a saída padrão" -#: builtin/log.c:1386 +#: builtin/log.c:1413 msgid "generate a cover letter" msgstr "gerar uma carta de apresentação" -#: builtin/log.c:1388 +#: builtin/log.c:1415 msgid "use simple number sequence for output file names" msgstr "" "usar uma sequência de números simples para denominar os ficheiros gerados" -#: builtin/log.c:1389 +#: builtin/log.c:1416 msgid "sfx" msgstr "sfx" -#: builtin/log.c:1390 +#: builtin/log.c:1417 msgid "use <sfx> instead of '.patch'" msgstr "usar <sfx> em vez de '.patch'" -#: builtin/log.c:1392 +#: builtin/log.c:1419 msgid "start numbering patches at <n> instead of 1" msgstr "começar a numerar os patches em <n> em vez de 1" -#: builtin/log.c:1394 +#: builtin/log.c:1421 msgid "mark the series as Nth re-roll" msgstr "marcar a série como a n-ésima reiteração" -#: builtin/log.c:1396 +#: builtin/log.c:1423 msgid "Use [<prefix>] instead of [PATCH]" msgstr "usar [<prefixo>] em vez de [PATCH]" -#: builtin/log.c:1399 +#: builtin/log.c:1426 msgid "store resulting files in <dir>" msgstr "guardar os ficheiros resultantes em <dir>" -#: builtin/log.c:1402 +#: builtin/log.c:1429 msgid "don't strip/add [PATCH]" msgstr "não tirar/inserir [PATCH]" -#: builtin/log.c:1405 +#: builtin/log.c:1432 msgid "don't output binary diffs" msgstr "não gerar diffs binários" -#: builtin/log.c:1407 +#: builtin/log.c:1434 msgid "output all-zero hash in From header" msgstr "preencher o cabeçalho From com hash de zeros" -#: builtin/log.c:1409 +#: builtin/log.c:1436 msgid "don't include a patch matching a commit upstream" msgstr "não incluir um patch que coincida com um commit a montante" -#: builtin/log.c:1411 +#: builtin/log.c:1438 msgid "show patch format instead of default (patch + stat)" msgstr "" "mostrar no formato de patch em vez de no formato por omissão (patch + stat)" -#: builtin/log.c:1413 +#: builtin/log.c:1440 msgid "Messaging" msgstr "Mensagem" -#: builtin/log.c:1414 +#: builtin/log.c:1441 msgid "header" msgstr "cabeçalho" -#: builtin/log.c:1415 +#: builtin/log.c:1442 msgid "add email header" msgstr "adicionar cabeçalho de e-mail" -#: builtin/log.c:1416 builtin/log.c:1418 +#: builtin/log.c:1443 builtin/log.c:1445 msgid "email" msgstr "e-mail" -#: builtin/log.c:1416 +#: builtin/log.c:1443 msgid "add To: header" msgstr "adicionar cabeçalho To:" -#: builtin/log.c:1418 +#: builtin/log.c:1445 msgid "add Cc: header" msgstr "adicionar cabeçalho Cc:" -#: builtin/log.c:1420 +#: builtin/log.c:1447 msgid "ident" msgstr "identidade" -#: builtin/log.c:1421 +#: builtin/log.c:1448 msgid "set From address to <ident> (or committer ident if absent)" msgstr "" "definir o endereço From como <identidade> (ou como identidade do committer " "se não indicado)" -#: builtin/log.c:1423 +#: builtin/log.c:1450 msgid "message-id" msgstr "id-mensagem" -#: builtin/log.c:1424 +#: builtin/log.c:1451 msgid "make first mail a reply to <message-id>" msgstr "usar o primeiro email para responder a <id-mensagem>" -#: builtin/log.c:1425 builtin/log.c:1428 +#: builtin/log.c:1452 builtin/log.c:1455 msgid "boundary" msgstr "limite" -#: builtin/log.c:1426 +#: builtin/log.c:1453 msgid "attach the patch" msgstr "anexar o patch" -#: builtin/log.c:1429 +#: builtin/log.c:1456 msgid "inline the patch" msgstr "incorporar o patch" -#: builtin/log.c:1433 +#: builtin/log.c:1460 msgid "enable message threading, styles: shallow, deep" msgstr "ativar mensagens por tópicos, estilos: shallow (raso), deep (profundo)" -#: builtin/log.c:1435 +#: builtin/log.c:1462 msgid "signature" msgstr "assinatura" -#: builtin/log.c:1436 +#: builtin/log.c:1463 msgid "add a signature" msgstr "adicionar uma assinatura" -#: builtin/log.c:1437 +#: builtin/log.c:1464 msgid "base-commit" msgstr "commit-base" -#: builtin/log.c:1438 +#: builtin/log.c:1465 msgid "add prerequisite tree info to the patch series" msgstr "adicionar informação pré-requisito da árvore à série de patches" -#: builtin/log.c:1440 +#: builtin/log.c:1467 msgid "add a signature from a file" msgstr "adicionar uma assinatura de um ficheiro" -#: builtin/log.c:1441 +#: builtin/log.c:1468 msgid "don't print the patch filenames" msgstr "não imprimir os nomes dos ficheiros de patch" -#: builtin/log.c:1531 +#: builtin/log.c:1558 msgid "-n and -k are mutually exclusive." msgstr "-n e -k são mutuamente exclusivos." -#: builtin/log.c:1533 +#: builtin/log.c:1560 msgid "--subject-prefix and -k are mutually exclusive." msgstr "--subject-prefix e -k são mutuamente exclusivos." -#: builtin/log.c:1541 +#: builtin/log.c:1568 msgid "--name-only does not make sense" msgstr "--name-only não faz sentido" -#: builtin/log.c:1543 +#: builtin/log.c:1570 msgid "--name-status does not make sense" msgstr "--name-status não faz sentido" -#: builtin/log.c:1545 +#: builtin/log.c:1572 msgid "--check does not make sense" msgstr "--check não faz sentido" -#: builtin/log.c:1573 +#: builtin/log.c:1602 msgid "standard output, or directory, which one?" msgstr "saída padrão, ou diretório, qual deles?" -#: builtin/log.c:1575 +#: builtin/log.c:1604 #, c-format msgid "Could not create directory '%s'" msgstr "Não foi possível criar o diretório '%s'" -#: builtin/log.c:1672 +#: builtin/log.c:1698 #, c-format msgid "unable to read signature file '%s'" msgstr "não é possível ler o ficheiro de assinatura '%s'" -#: builtin/log.c:1743 +#: builtin/log.c:1769 msgid "Failed to create output files" msgstr "Falha ao criar os ficheiros de saída" -#: builtin/log.c:1792 +#: builtin/log.c:1818 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]" msgstr "git cherry [-v] [<ramo-a-montante> [<head> [<limite>]]]" -#: builtin/log.c:1846 +#: builtin/log.c:1872 #, c-format msgid "" "Could not find a tracked remote branch, please specify <upstream> manually.\n" @@ -7968,103 +8396,103 @@ msgstr "" "O ramo remoto seguido não foi encontrado, especifique <ramo-a-montante> " "manualmente.\n" -#: builtin/ls-files.c:378 +#: builtin/ls-files.c:379 msgid "git ls-files [<options>] [<file>...]" msgstr "git ls-files [<opções>] [<ficheiro>...]" -#: builtin/ls-files.c:427 +#: builtin/ls-files.c:428 msgid "identify the file status with tags" msgstr "identificar o estado do ficheiro com tags" -#: builtin/ls-files.c:429 +#: builtin/ls-files.c:430 msgid "use lowercase letters for 'assume unchanged' files" msgstr "" "usar letras minúsculas para ficheiros 'assumido não alterado' ('assume " "unchanged')" -#: builtin/ls-files.c:431 +#: builtin/ls-files.c:432 msgid "show cached files in the output (default)" msgstr "mostrar ficheiros em cache na saída (predefinição)" -#: builtin/ls-files.c:433 +#: builtin/ls-files.c:434 msgid "show deleted files in the output" msgstr "mostrar ficheiros eliminados na saída" -#: builtin/ls-files.c:435 +#: builtin/ls-files.c:436 msgid "show modified files in the output" msgstr "mostrar ficheiros modificados na saída" -#: builtin/ls-files.c:437 +#: builtin/ls-files.c:438 msgid "show other files in the output" msgstr "mostrar outros ficheiros na saída" -#: builtin/ls-files.c:439 +#: builtin/ls-files.c:440 msgid "show ignored files in the output" msgstr "mostrar ficheiros ignorados na saída" -#: builtin/ls-files.c:442 +#: builtin/ls-files.c:443 msgid "show staged contents' object name in the output" msgstr "mostrar nome de objetos com conteúdo preparado, na saída" -#: builtin/ls-files.c:444 +#: builtin/ls-files.c:445 msgid "show files on the filesystem that need to be removed" msgstr "" "mostrar ficheiros no sistema de ficheiros que precisam de ser removidos" -#: builtin/ls-files.c:446 +#: builtin/ls-files.c:447 msgid "show 'other' directories' names only" msgstr "mostrar nomes de diretórios 'other' (outro)" -#: builtin/ls-files.c:448 +#: builtin/ls-files.c:449 msgid "show line endings of files" msgstr "mostrar finais de linha dos ficheiros" -#: builtin/ls-files.c:450 +#: builtin/ls-files.c:451 msgid "don't show empty directories" msgstr "não mostrar diretórios vazios" -#: builtin/ls-files.c:453 +#: builtin/ls-files.c:454 msgid "show unmerged files in the output" msgstr "mostrar ficheiros não integrados na saída" -#: builtin/ls-files.c:455 +#: builtin/ls-files.c:456 msgid "show resolve-undo information" msgstr "mostrar informação de resolver-desfazer" -#: builtin/ls-files.c:457 +#: builtin/ls-files.c:458 msgid "skip files matching pattern" msgstr "ignorar ficheiros que correspondam ao padrão" -#: builtin/ls-files.c:460 +#: builtin/ls-files.c:461 msgid "exclude patterns are read from <file>" msgstr "ler padrões de exclusão do <ficheiro>" -#: builtin/ls-files.c:463 +#: builtin/ls-files.c:464 msgid "read additional per-directory exclude patterns in <file>" msgstr "ler padrões de exclusão por diretório do <ficheiro>" -#: builtin/ls-files.c:465 +#: builtin/ls-files.c:466 msgid "add the standard git exclusions" msgstr "incluir as exclusões standard do git" -#: builtin/ls-files.c:468 +#: builtin/ls-files.c:469 msgid "make the output relative to the project top directory" msgstr "mostrar os caminhos relativamente ao diretório superior do projeto" -#: builtin/ls-files.c:471 +#: builtin/ls-files.c:472 msgid "if any <file> is not in the index, treat this as an error" msgstr "se um <ficheiro> não estiver no índice, tratar como erro" -#: builtin/ls-files.c:472 +#: builtin/ls-files.c:473 msgid "tree-ish" msgstr "árvore-etc" -#: builtin/ls-files.c:473 +#: builtin/ls-files.c:474 msgid "pretend that paths removed since <tree-ish> are still present" msgstr "" "fingir que os caminhos removidos desde <árvore-etc> ainda estão presentes" -#: builtin/ls-files.c:475 +#: builtin/ls-files.c:476 msgid "show debugging data" msgstr "mostrar dados de depuração" @@ -8151,190 +8579,176 @@ msgid "list entire tree; not just current directory (implies --full-name)" msgstr "" "mostrar a árvore completa; não apenas o diretório atual (implica --full-name)" -#: builtin/merge.c:45 +#: builtin/merge.c:46 msgid "git merge [<options>] [<commit>...]" msgstr "git merge [<opções>] [<commit>...]" -#: builtin/merge.c:46 +#: builtin/merge.c:47 msgid "git merge [<options>] <msg> HEAD <commit>" msgstr "git merge [<opções>] <msg> HEAD <commit>" -#: builtin/merge.c:47 +#: builtin/merge.c:48 msgid "git merge --abort" msgstr "git merge --abort" -#: builtin/merge.c:101 +#: builtin/merge.c:102 msgid "switch `m' requires a value" msgstr "a opção 'm' requer um valor" -#: builtin/merge.c:138 +#: builtin/merge.c:139 #, c-format msgid "Could not find merge strategy '%s'.\n" msgstr "Estratégia de integração '%s' não encontrada.\n" -#: builtin/merge.c:139 +#: builtin/merge.c:140 #, c-format msgid "Available strategies are:" msgstr "Estratégias disponíveis:" -#: builtin/merge.c:144 +#: builtin/merge.c:145 #, c-format msgid "Available custom strategies are:" msgstr "Estratégias personalizadas disponíveis:" -#: builtin/merge.c:194 builtin/pull.c:126 +#: builtin/merge.c:195 builtin/pull.c:126 msgid "do not show a diffstat at the end of the merge" msgstr "não apresentar um diffstat ao fim da integração" -#: builtin/merge.c:197 builtin/pull.c:129 +#: builtin/merge.c:198 builtin/pull.c:129 msgid "show a diffstat at the end of the merge" msgstr "mostrar um diffstat ao fim da integração" -#: builtin/merge.c:198 builtin/pull.c:132 +#: builtin/merge.c:199 builtin/pull.c:132 msgid "(synonym to --stat)" msgstr "(sinónimo de --stat)" -#: builtin/merge.c:200 builtin/pull.c:135 +#: builtin/merge.c:201 builtin/pull.c:135 msgid "add (at most <n>) entries from shortlog to merge commit message" msgstr "" "adicionar (no máximo <n>) entradas do shortlog à mensagem de commit da " "integração" -#: builtin/merge.c:203 builtin/pull.c:138 +#: builtin/merge.c:204 builtin/pull.c:138 msgid "create a single commit instead of doing a merge" msgstr "criar um único commit em vez de realizar uma integração" -#: builtin/merge.c:205 builtin/pull.c:141 +#: builtin/merge.c:206 builtin/pull.c:141 msgid "perform a commit if the merge succeeds (default)" msgstr "realizar um commit se a integração for bem sucedida (predefinição)" -#: builtin/merge.c:207 builtin/pull.c:144 +#: builtin/merge.c:208 builtin/pull.c:144 msgid "edit message before committing" msgstr "editar a mensagem antes de submeter" -#: builtin/merge.c:208 +#: builtin/merge.c:209 msgid "allow fast-forward (default)" msgstr "permitir avanço rápido (predefinição)" -#: builtin/merge.c:210 builtin/pull.c:150 +#: builtin/merge.c:211 builtin/pull.c:150 msgid "abort if fast-forward is not possible" msgstr "abortar se não é possível efetuar avanço rápido" -#: builtin/merge.c:214 -msgid "Verify that the named commit has a valid GPG signature" +#: builtin/merge.c:215 builtin/pull.c:153 +msgid "verify that the named commit has a valid GPG signature" msgstr "verificar se o commit tem uma assinatura GPG válida" -#: builtin/merge.c:215 builtin/notes.c:771 builtin/pull.c:157 +#: builtin/merge.c:216 builtin/notes.c:772 builtin/pull.c:157 #: builtin/revert.c:89 msgid "strategy" msgstr "estratégia" -#: builtin/merge.c:216 builtin/pull.c:158 +#: builtin/merge.c:217 builtin/pull.c:158 msgid "merge strategy to use" msgstr "estratégia de integração a usar" -#: builtin/merge.c:217 builtin/pull.c:161 +#: builtin/merge.c:218 builtin/pull.c:161 msgid "option=value" msgstr "opção=valor" -#: builtin/merge.c:218 builtin/pull.c:162 +#: builtin/merge.c:219 builtin/pull.c:162 msgid "option for selected merge strategy" msgstr "opções da estratégia de integração selecionada" -#: builtin/merge.c:220 +#: builtin/merge.c:221 msgid "merge commit message (for a non-fast-forward merge)" msgstr "mensagem de commit (de integração não suscetível a avanço rápido)" -#: builtin/merge.c:224 +#: builtin/merge.c:225 msgid "abort the current in-progress merge" msgstr "abortar integração em curso" -#: builtin/merge.c:226 builtin/pull.c:169 +#: builtin/merge.c:227 builtin/pull.c:169 msgid "allow merging unrelated histories" msgstr "permitir integração de históricos não relacionados" -#: builtin/merge.c:254 +#: builtin/merge.c:255 msgid "could not run stash." msgstr "não foi possível executar o comando stash." -#: builtin/merge.c:259 +#: builtin/merge.c:260 msgid "stash failed" msgstr "falha ao executar o comando stash" -#: builtin/merge.c:264 +#: builtin/merge.c:265 #, c-format msgid "not a valid object: %s" msgstr "nome de objeto inválido: %s" -#: builtin/merge.c:283 builtin/merge.c:300 +#: builtin/merge.c:284 builtin/merge.c:301 msgid "read-tree failed" msgstr "falha ao executar o comando read-tree" -#: builtin/merge.c:330 +#: builtin/merge.c:331 msgid " (nothing to squash)" msgstr " (não há nada para esmagar)" -#: builtin/merge.c:343 +#: builtin/merge.c:342 #, c-format msgid "Squash commit -- not updating HEAD\n" msgstr "Commit esmagado -- HEAD não atualizada\n" -#: builtin/merge.c:347 builtin/merge.c:767 builtin/merge.c:987 -#: builtin/merge.c:1000 -#, c-format -msgid "Could not write to '%s'" -msgstr "Não foi possível escrever em '%s'" - -#: builtin/merge.c:375 -msgid "Writing SQUASH_MSG" -msgstr "A escrever SQUASH_MSG" - -#: builtin/merge.c:377 -msgid "Finishing SQUASH_MSG" -msgstr "A concluir SQUASH_MSG" - -#: builtin/merge.c:400 +#: builtin/merge.c:392 #, c-format msgid "No merge message -- not updating HEAD\n" msgstr "Nenhuma mensagem de integração -- HEAD não atualizada\n" -#: builtin/merge.c:451 +#: builtin/merge.c:443 #, c-format msgid "'%s' does not point to a commit" msgstr "'%s' não aponta para um commit" -#: builtin/merge.c:541 +#: builtin/merge.c:533 #, c-format msgid "Bad branch.%s.mergeoptions string: %s" msgstr "Valor de branch.%s.mergeoptions incorreto: %s" -#: builtin/merge.c:660 +#: builtin/merge.c:652 msgid "Not handling anything other than two heads merge." msgstr "Não se processa outra coisa senão incorporação de duas cabeças." -#: builtin/merge.c:674 +#: builtin/merge.c:666 #, c-format msgid "Unknown option for merge-recursive: -X%s" msgstr "Opção desconhecida de merge-recursive: -X%s" -#: builtin/merge.c:687 +#: builtin/merge.c:681 #, c-format msgid "unable to write %s" msgstr "não foi possível escrever %s" -#: builtin/merge.c:776 +#: builtin/merge.c:733 #, c-format msgid "Could not read from '%s'" msgstr "Não foi possível ler '%s'" -#: builtin/merge.c:785 +#: builtin/merge.c:742 #, c-format msgid "Not committing merge; use 'git commit' to complete the merge.\n" msgstr "" "Commit de integração não realizado; use 'git commit' para concluir a " "integração.\n" -#: builtin/merge.c:791 +#: builtin/merge.c:748 #, c-format msgid "" "Please enter a commit message to explain why this merge is necessary,\n" @@ -8350,54 +8764,68 @@ msgstr "" "Linhas começadas com '%c' são ignoradas e uma mensagem vazia\n" "aborta o commit.\n" -#: builtin/merge.c:815 +#: builtin/merge.c:772 msgid "Empty commit message." msgstr "Mensagem de commit vazia." -#: builtin/merge.c:835 +#: builtin/merge.c:792 #, c-format msgid "Wonderful.\n" msgstr "Maravilhoso.\n" -#: builtin/merge.c:890 +#: builtin/merge.c:847 #, c-format msgid "Automatic merge failed; fix conflicts and then commit the result.\n" msgstr "" "Falha ao realizar integração automática; corrija os conflitos e submeta o " "resultado.\n" -#: builtin/merge.c:906 +#: builtin/merge.c:863 #, c-format msgid "'%s' is not a commit" msgstr "'%s' não é um commit" -#: builtin/merge.c:947 +#: builtin/merge.c:904 msgid "No current branch." msgstr "Nenhum ramo atual." -#: builtin/merge.c:949 +#: builtin/merge.c:906 msgid "No remote for the current branch." msgstr "Não há um remoto para o ramo atual." -#: builtin/merge.c:951 +#: builtin/merge.c:908 msgid "No default upstream defined for the current branch." msgstr "Não está definido nenhum ramo a montante para o ramo atual." -#: builtin/merge.c:956 +#: builtin/merge.c:913 #, c-format msgid "No remote-tracking branch for %s from %s" msgstr "Nenhum ramo de monitorização remoto seguido por %s de %s" -#: builtin/merge.c:1091 +#: builtin/merge.c:960 +#, c-format +msgid "Bad value '%s' in environment '%s'" +msgstr "Valor '%s' incorreto no ambiente '%s'" + +#: builtin/merge.c:1034 #, c-format msgid "could not close '%s'" msgstr "não foi possível fechar '%s'" -#: builtin/merge.c:1219 +#: builtin/merge.c:1061 +#, c-format +msgid "not something we can merge in %s: %s" +msgstr "não se pode integrar em %s: %s" + +#: builtin/merge.c:1095 +msgid "not something we can merge" +msgstr "não se pode integrar" + +#: builtin/merge.c:1162 msgid "There is no merge to abort (MERGE_HEAD missing)." msgstr "Não há nenhuma integração para se abortar (MERGE_HEAD não presente)." -#: builtin/merge.c:1235 +#: builtin/merge.c:1178 msgid "" "You have not concluded your merge (MERGE_HEAD exists).\n" "Please, commit your changes before you merge." @@ -8405,7 +8833,7 @@ msgstr "" "Não concluiu a integração (MERGE_HEAD presente).\n" "Submeta as suas alterações antes de integrar." -#: builtin/merge.c:1242 +#: builtin/merge.c:1185 msgid "" "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n" "Please, commit your changes before you merge." @@ -8413,109 +8841,117 @@ msgstr "" "Cherry-pick não concluído (CHERRY_PICK_HEAD presente).\n" "Submeta as suas alterações antes de integrar." -#: builtin/merge.c:1245 +#: builtin/merge.c:1188 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)." msgstr "Cherry-pick não concluído (CHERRY_PICK_HEAD presente)." -#: builtin/merge.c:1254 +#: builtin/merge.c:1197 msgid "You cannot combine --squash with --no-ff." msgstr "Não é possível combinar --squash e --no-ff." -#: builtin/merge.c:1262 +#: builtin/merge.c:1205 msgid "No commit specified and merge.defaultToUpstream not set." msgstr "Nenhum commit especificado e merge.defaultToUpstream não definido." -#: builtin/merge.c:1279 +#: builtin/merge.c:1222 msgid "Squash commit into empty head not supported yet" msgstr "Esmagar um commit numa cabeça vazia ainda não é suportado" -#: builtin/merge.c:1281 +#: builtin/merge.c:1224 msgid "Non-fast-forward commit does not make sense into an empty head" msgstr "" "Não faz sentido submeter de modo não suscetível a avanço rápido, numa cabeça " "vazia" -#: builtin/merge.c:1286 +#: builtin/merge.c:1229 #, c-format msgid "%s - not something we can merge" msgstr "%s - não é algo se possa integrar" -#: builtin/merge.c:1288 +#: builtin/merge.c:1231 msgid "Can merge only exactly one commit into empty head" msgstr "Só se pode integrar exatamente um commit numa cabeça vazia" -#: builtin/merge.c:1344 +#: builtin/merge.c:1287 #, c-format msgid "Commit %s has an untrusted GPG signature, allegedly by %s." msgstr "" "A assinatura GPG do commit %s, alegadamente assinada por %s, não é de " "confiança." -#: builtin/merge.c:1347 +#: builtin/merge.c:1290 #, c-format msgid "Commit %s has a bad GPG signature allegedly by %s." msgstr "" "A assinatura GPG do commit %s, alegadamente assinada por %s, está incorreta." -#: builtin/merge.c:1350 +#: builtin/merge.c:1293 #, c-format msgid "Commit %s does not have a GPG signature." msgstr "O commit %s não tem uma assinatura GPG." -#: builtin/merge.c:1353 +#: builtin/merge.c:1296 #, c-format msgid "Commit %s has a good GPG signature by %s\n" msgstr "A assinatura GPG do commit %s por %s está correta\n" -#: builtin/merge.c:1415 +#: builtin/merge.c:1358 msgid "refusing to merge unrelated histories" msgstr "integração de históricos não relacionados recusada" -#: builtin/merge.c:1439 +#: builtin/merge.c:1367 +msgid "Already up-to-date." +msgstr "Já está atualizado." + +#: builtin/merge.c:1382 #, c-format msgid "Updating %s..%s\n" msgstr "A atualizar %s..%s\n" -#: builtin/merge.c:1476 +#: builtin/merge.c:1419 #, c-format msgid "Trying really trivial in-index merge...\n" msgstr "A tentar integração mesmo trivial no interior do índice...\n" -#: builtin/merge.c:1483 +#: builtin/merge.c:1426 #, c-format msgid "Nope.\n" msgstr "Não.\n" -#: builtin/merge.c:1515 +#: builtin/merge.c:1451 +msgid "Already up-to-date. Yeeah!" +msgstr "Já está atualizado. Sim!" + +#: builtin/merge.c:1457 msgid "Not possible to fast-forward, aborting." msgstr "Não é possível avançar rapidamente, a abortar." -#: builtin/merge.c:1538 builtin/merge.c:1617 +#: builtin/merge.c:1480 builtin/merge.c:1559 #, c-format msgid "Rewinding the tree to pristine...\n" msgstr "A recuar a árvore ao seu estado original...\n" -#: builtin/merge.c:1542 +#: builtin/merge.c:1484 #, c-format msgid "Trying merge strategy %s...\n" msgstr "A tentar a estratégia de integração %s...\n" -#: builtin/merge.c:1608 +#: builtin/merge.c:1550 #, c-format msgid "No merge strategy handled the merge.\n" msgstr "Nenhuma estratégia de integração conseguiu processar a integração.\n" -#: builtin/merge.c:1610 +#: builtin/merge.c:1552 #, c-format msgid "Merge with strategy %s failed.\n" msgstr "Falha ao integrar com a estratégia %s.\n" -#: builtin/merge.c:1619 +#: builtin/merge.c:1561 #, c-format msgid "Using the %s to prepare resolving by hand.\n" msgstr "A usar %s para preparar resolução manual.\n" -#: builtin/merge.c:1631 +#: builtin/merge.c:1573 #, c-format msgid "Automatic merge went well; stopped before committing as requested\n" msgstr "" @@ -8624,15 +9060,13 @@ msgid "git mv [<options>] <source>... <destination>" msgstr "git mv [<opções>] <origem>... <destino>" #: builtin/mv.c:70 -#, fuzzy, c-format +#, c-format msgid "Directory %s is in index and no submodule?" -msgstr "O diretório %s está no índice mas não em nenhum submódulo?" +msgstr "O diretório %s está no índice porém nenhum submódulo?" #: builtin/mv.c:72 builtin/rm.c:317 msgid "Please stage your changes to .gitmodules or stash them to proceed" -msgstr "" -"Prepare as suas alterações em .gitmodules ou empilhe-as (stash) para " -"prosseguir" +msgstr "Prepare as suas alterações em .gitmodules ou esconda-as para prosseguir" #: builtin/mv.c:90 #, c-format @@ -8647,68 +9081,68 @@ msgstr "forçar mover/mudar o nome mesmo que o destino exista" msgid "skip move/rename errors" msgstr "ignorar erros ao mover/mudar o nome" -#: builtin/mv.c:152 +#: builtin/mv.c:155 #, c-format msgid "destination '%s' is not a directory" msgstr "o destino '%s' não é um diretório" -#: builtin/mv.c:163 +#: builtin/mv.c:166 #, c-format msgid "Checking rename of '%s' to '%s'\n" msgstr "A verificar a mudança de nome de '%s' para '%s'\n" -#: builtin/mv.c:167 +#: builtin/mv.c:170 msgid "bad source" msgstr "origem incorreta" -#: builtin/mv.c:170 +#: builtin/mv.c:173 msgid "can not move directory into itself" msgstr "não é possível mover um diretório para dentro de si próprio" -#: builtin/mv.c:173 +#: builtin/mv.c:176 msgid "cannot move directory over file" msgstr "não é possível mover um diretório para um ficheiro" -#: builtin/mv.c:182 +#: builtin/mv.c:185 msgid "source directory is empty" msgstr "o diretório de origem está vazio" -#: builtin/mv.c:207 +#: builtin/mv.c:210 msgid "not under version control" msgstr "não está no controlo de versões" -#: builtin/mv.c:210 +#: builtin/mv.c:213 msgid "destination exists" msgstr "o destino já existe" -#: builtin/mv.c:218 +#: builtin/mv.c:221 #, c-format msgid "overwriting '%s'" msgstr "a substituir '%s'" -#: builtin/mv.c:221 +#: builtin/mv.c:224 msgid "Cannot overwrite" msgstr "Não é possível substituir" -#: builtin/mv.c:224 +#: builtin/mv.c:227 msgid "multiple sources for the same target" msgstr "múltiplas origens para o mesmo destino" -#: builtin/mv.c:226 +#: builtin/mv.c:229 msgid "destination directory does not exist" msgstr "o diretório de destino não existe" -#: builtin/mv.c:233 +#: builtin/mv.c:236 #, c-format msgid "%s, source=%s, destination=%s" msgstr "%s, origem=%s, destino=%s" -#: builtin/mv.c:254 +#: builtin/mv.c:257 #, c-format msgid "Renaming %s to %s\n" msgstr "A mudar de nome de %s para %s\n" -#: builtin/mv.c:260 builtin/remote.c:714 builtin/repack.c:365 +#: builtin/mv.c:263 builtin/remote.c:710 builtin/repack.c:375 #, c-format msgid "renaming '%s' failed" msgstr "falha ao mudar o nome de '%s'" @@ -8863,6 +9297,10 @@ msgstr "git notes prune [<opções>]" msgid "git notes get-ref" msgstr "git notes get-ref" +#: builtin/notes.c:94 +msgid "Write/edit the notes for the following object:" +msgstr "Escreva/edite as notas do seguinte objeto:" + #: builtin/notes.c:147 #, c-format msgid "unable to start 'show' for object '%s'" @@ -8877,80 +9315,75 @@ msgstr "não foi possível ler a saída do comando 'show'" msgid "failed to finish 'show' for object '%s'" msgstr "falha ao concluir o comando 'show' sobre o objeto '%s'" -#: builtin/notes.c:174 builtin/tag.c:248 -#, c-format -msgid "could not create file '%s'" -msgstr "não foi possível criar o ficheiro '%s'" - -#: builtin/notes.c:193 +#: builtin/notes.c:194 msgid "Please supply the note contents using either -m or -F option" msgstr "Forneça o conteúdo da nota usando a opção -m ou -F" -#: builtin/notes.c:202 +#: builtin/notes.c:203 msgid "unable to write note object" msgstr "não é possível escrever o objeto de nota" -#: builtin/notes.c:204 +#: builtin/notes.c:205 #, c-format msgid "The note contents have been left in %s" msgstr "O conteúdo da nota foi guardado em %s" -#: builtin/notes.c:232 builtin/tag.c:439 +#: builtin/notes.c:233 builtin/tag.c:439 #, c-format msgid "cannot read '%s'" msgstr "não é possível ler '%s'" -#: builtin/notes.c:234 builtin/tag.c:442 +#: builtin/notes.c:235 builtin/tag.c:442 #, c-format msgid "could not open or read '%s'" msgstr "não foi possível abrir ou ler '%s'" -#: builtin/notes.c:256 +#: builtin/notes.c:257 #, c-format msgid "Failed to read object '%s'." msgstr "Falha ao ler o objeto '%s'." -#: builtin/notes.c:260 +#: builtin/notes.c:261 #, c-format msgid "Cannot read note data from non-blob object '%s'." msgstr "Não é possível ler os dados da nota de um objeto não-blob '%s'." -#: builtin/notes.c:362 builtin/notes.c:417 builtin/notes.c:493 -#: builtin/notes.c:505 builtin/notes.c:581 builtin/notes.c:649 -#: builtin/notes.c:946 +#: builtin/notes.c:363 builtin/notes.c:418 builtin/notes.c:494 +#: builtin/notes.c:506 builtin/notes.c:582 builtin/notes.c:650 +#: builtin/notes.c:800 builtin/notes.c:947 builtin/notes.c:968 msgid "too many parameters" msgstr "demasiados parâmetros" -#: builtin/notes.c:375 builtin/notes.c:662 +#: builtin/notes.c:376 builtin/notes.c:663 #, c-format msgid "No note found for object %s." msgstr "A nota do objeto %s não foi encontrada." -#: builtin/notes.c:396 builtin/notes.c:559 +#: builtin/notes.c:397 builtin/notes.c:560 msgid "note contents as a string" msgstr "conteúdo da nota sob a forma de cadeia de caracteres" -#: builtin/notes.c:399 builtin/notes.c:562 +#: builtin/notes.c:400 builtin/notes.c:563 msgid "note contents in a file" msgstr "conteúdo da nota de um ficheiro" -#: builtin/notes.c:402 builtin/notes.c:565 +#: builtin/notes.c:403 builtin/notes.c:566 msgid "reuse and edit specified note object" msgstr "reutilizar e editar o objeto de nota especificado" -#: builtin/notes.c:405 builtin/notes.c:568 +#: builtin/notes.c:406 builtin/notes.c:569 msgid "reuse specified note object" msgstr "reutilizar o objeto de nota especificado" -#: builtin/notes.c:408 builtin/notes.c:571 +#: builtin/notes.c:409 builtin/notes.c:572 msgid "allow storing empty note" msgstr "permitir guardar uma nota vazia" -#: builtin/notes.c:409 builtin/notes.c:480 +#: builtin/notes.c:410 builtin/notes.c:481 msgid "replace existing notes" msgstr "substituir notas existentes" -#: builtin/notes.c:434 +#: builtin/notes.c:435 #, c-format msgid "" "Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite " @@ -8959,29 +9392,29 @@ msgstr "" "Não é possível adicionar notas. Notas do objeto %s encontradas. Use '-f' " "para substituí-las." -#: builtin/notes.c:449 builtin/notes.c:528 +#: builtin/notes.c:450 builtin/notes.c:529 #, c-format msgid "Overwriting existing notes for object %s\n" msgstr "A substituir as notas existentes do objeto %s\n" -#: builtin/notes.c:460 builtin/notes.c:621 builtin/notes.c:886 +#: builtin/notes.c:461 builtin/notes.c:622 builtin/notes.c:887 #, c-format msgid "Removing note for object %s\n" msgstr "A remover a nota do objeto %s\n" -#: builtin/notes.c:481 +#: builtin/notes.c:482 msgid "read objects from stdin" msgstr "ler objetos da entrada padrão" -#: builtin/notes.c:483 +#: builtin/notes.c:484 msgid "load rewriting config for <command> (implies --stdin)" msgstr "carregar configuração de reescrita do <comando> (implica --stdin)" -#: builtin/notes.c:501 +#: builtin/notes.c:502 msgid "too few parameters" msgstr "parâmetros insuficientes" -#: builtin/notes.c:522 +#: builtin/notes.c:523 #, c-format msgid "" "Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite " @@ -8990,12 +9423,12 @@ msgstr "" "Não é possível copiar notas. Notas do objeto %s encontradas. Use '-f' para " "substituí-las." -#: builtin/notes.c:534 +#: builtin/notes.c:535 #, c-format msgid "Missing notes on source object %s. Cannot copy." msgstr "Não existem notas no objeto de origem %s. Não é possível copiar." -#: builtin/notes.c:586 +#: builtin/notes.c:587 #, c-format msgid "" "The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n" @@ -9004,65 +9437,106 @@ msgstr "" "As opções -m/-F/-c/-C são obsoletas no subcomando 'edit'.\n" "Use 'git notes add -f -m/-F/-c/-C' em seu lugar.\n" -#: builtin/notes.c:768 +#: builtin/notes.c:753 +#, c-format +msgid "unknown notes merge strategy %s" +msgstr "estratégia de integração de notas %s desconhecida" + +#: builtin/notes.c:769 msgid "General options" msgstr "Opções gerais" -#: builtin/notes.c:770 +#: builtin/notes.c:771 msgid "Merge options" msgstr "Opções de integração" -#: builtin/notes.c:772 +#: builtin/notes.c:773 msgid "" "resolve notes conflicts using the given strategy (manual/ours/theirs/union/" "cat_sort_uniq)" msgstr "" -"resolver conflitos nas notas usando a estratégia indicada " -"(manual/ours/theirs/union/cat_sort_uniq)" +"resolver conflitos nas notas usando a estratégia indicada (manual/ours/" +"theirs/union/cat_sort_uniq)" -#: builtin/notes.c:774 +#: builtin/notes.c:775 msgid "Committing unmerged notes" msgstr "A submeter notas não integradas" -#: builtin/notes.c:776 +#: builtin/notes.c:777 msgid "finalize notes merge by committing unmerged notes" msgstr "concluir integração de notas, submetendo notas não integradas" -#: builtin/notes.c:778 +#: builtin/notes.c:779 msgid "Aborting notes merge resolution" msgstr "A abortar resolução de integração das notas" -#: builtin/notes.c:780 +#: builtin/notes.c:781 msgid "abort notes merge" msgstr "abortar integração das notas" -#: builtin/notes.c:857 +#: builtin/notes.c:792 +msgid "cannot mix --commit, --abort or -s/--strategy" +msgstr "não é possível misturar --commit, --abort ou -s/--strategy" + +#: builtin/notes.c:797 +msgid "Must specify a notes ref to merge" +msgstr "Tem de especificar uma referência de notas para integrar" + +#: builtin/notes.c:821 +#, c-format +msgid "Unknown -s/--strategy: %s" +msgstr "-s/--strategy desconhecida: %s" + +#: builtin/notes.c:858 #, c-format msgid "A notes merge into %s is already in-progress at %s" msgstr "Uma integração das notas em %s já está em curso em %s" -#: builtin/notes.c:884 +#: builtin/notes.c:861 +#, c-format +msgid "Failed to store link to current notes ref (%s)" +msgstr "Falha ao guardar ligação à referência de notas atual (%s)" + +#: builtin/notes.c:863 +#, c-format +msgid "" +"Automatic notes merge failed. Fix conflicts in %s and commit the result with " +"'git notes merge --commit', or abort the merge with 'git notes merge --" +"abort'.\n" +msgstr "A integração automática de notas falhou. Corrija os conflitos em %s e " +"submeta o resultado com 'git notes merge --commit' ou aborte a integração " +"com 'git notes merge --abort'.\n" + +#: builtin/notes.c:885 #, c-format msgid "Object %s has no note\n" msgstr "O objeto %s não tem nenhuma nota\n" -#: builtin/notes.c:896 +#: builtin/notes.c:897 msgid "attempt to remove non-existent note is not an error" msgstr "não considerar como erro a remoção de uma nota não existente" -#: builtin/notes.c:899 +#: builtin/notes.c:900 msgid "read object names from the standard input" msgstr "ler nome dos objetos da entrada padrão" -#: builtin/notes.c:980 +#: builtin/notes.c:938 builtin/prune.c:105 builtin/worktree.c:127 +msgid "do not remove, show only" +msgstr "não remover, mostrar apenas" + +#: builtin/notes.c:939 +msgid "report pruned notes" +msgstr "reportar notas podadas" + +#: builtin/notes.c:981 msgid "notes-ref" msgstr "notes-ref" -#: builtin/notes.c:981 +#: builtin/notes.c:982 msgid "use notes from <notes-ref>" msgstr "usar notas de <notes-ref>" -#: builtin/notes.c:1016 builtin/remote.c:1628 +#: builtin/notes.c:1017 builtin/remote.c:1623 #, c-format msgid "Unknown subcommand: %s" msgstr "Subcomando desconhecido: %s" @@ -9081,182 +9555,186 @@ msgstr "" "git pack-objects [<opções>...] <nome-base> [< <lista-referências> | < <lista-" "objetos>]" -#: builtin/pack-objects.c:175 builtin/pack-objects.c:178 +#: builtin/pack-objects.c:177 builtin/pack-objects.c:180 #, c-format msgid "deflate error (%d)" msgstr "erro ao compactar (%d)" -#: builtin/pack-objects.c:763 +#: builtin/pack-objects.c:766 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit" msgstr "" -"a desativar escrita de mapa de bits, os pacotes são divididos devido a " -"pack.packSizeLimit" +"a desativar escrita de mapa de bits, os pacotes são divididos devido a pack." +"packSizeLimit" -#: builtin/pack-objects.c:776 +#: builtin/pack-objects.c:779 msgid "Writing objects" msgstr "A escrever objetos" -#: builtin/pack-objects.c:1017 +#: builtin/pack-objects.c:1037 msgid "disabling bitmap writing, as some objects are not being packed" msgstr "" "a desativar escrita de mapa de bits, visto que alguns objetos não estão a " "ser compactados" -#: builtin/pack-objects.c:2177 +#: builtin/pack-objects.c:2197 msgid "Compressing objects" msgstr "A comprimir objetos" -#: builtin/pack-objects.c:2563 +#: builtin/pack-objects.c:2611 #, c-format msgid "unsupported index version %s" msgstr "versão de índice %s não suportada" -#: builtin/pack-objects.c:2567 +#: builtin/pack-objects.c:2615 #, c-format msgid "bad index version '%s'" msgstr "versão de índice '%s' incorreta" -#: builtin/pack-objects.c:2597 +#: builtin/pack-objects.c:2645 msgid "do not show progress meter" msgstr "não mostrar medidor de progresso" -#: builtin/pack-objects.c:2599 +#: builtin/pack-objects.c:2647 msgid "show progress meter" msgstr "mostrar medidor de progresso" -#: builtin/pack-objects.c:2601 +#: builtin/pack-objects.c:2649 msgid "show progress meter during object writing phase" msgstr "mostrar medidor de progresso durante a fase de escrita de objetos" -#: builtin/pack-objects.c:2604 +#: builtin/pack-objects.c:2652 msgid "similar to --all-progress when progress meter is shown" msgstr "semelhante a --all-progress quando o medidor de progresso é mostrado" -#: builtin/pack-objects.c:2605 +#: builtin/pack-objects.c:2653 msgid "version[,offset]" msgstr "versão[,offset]" -#: builtin/pack-objects.c:2606 +#: builtin/pack-objects.c:2654 msgid "write the pack index file in the specified idx format version" msgstr "" "escrever o ficheiro de índice do pacote na versão de formato especificada" -#: builtin/pack-objects.c:2609 +#: builtin/pack-objects.c:2657 msgid "maximum size of each output pack file" msgstr "tamanho máximo de cada ficheiro de pacote gerado" -#: builtin/pack-objects.c:2611 +#: builtin/pack-objects.c:2659 msgid "ignore borrowed objects from alternate object store" msgstr "ignorar objetos emprestados do arquivo de objetos sobressalentes" -#: builtin/pack-objects.c:2613 +#: builtin/pack-objects.c:2661 msgid "ignore packed objects" msgstr "ignorar objetos compactados" -#: builtin/pack-objects.c:2615 +#: builtin/pack-objects.c:2663 msgid "limit pack window by objects" msgstr "limitar a janela de compactação por objetos" -#: builtin/pack-objects.c:2617 +#: builtin/pack-objects.c:2665 msgid "limit pack window by memory in addition to object limit" msgstr "" "limitar a janela de compactação por memória em adição ao limite por objetos" -#: builtin/pack-objects.c:2619 +#: builtin/pack-objects.c:2667 msgid "maximum length of delta chain allowed in the resulting pack" msgstr "tamanho máximo de cadeias delta permitidas no pacote resultante" -#: builtin/pack-objects.c:2621 +#: builtin/pack-objects.c:2669 msgid "reuse existing deltas" msgstr "reutilizar deltas existentes" -#: builtin/pack-objects.c:2623 +#: builtin/pack-objects.c:2671 msgid "reuse existing objects" msgstr "reutilizar objetos existentes" -#: builtin/pack-objects.c:2625 +#: builtin/pack-objects.c:2673 msgid "use OFS_DELTA objects" msgstr "usar objetos OFS_DELTA" -#: builtin/pack-objects.c:2627 +#: builtin/pack-objects.c:2675 msgid "use threads when searching for best delta matches" msgstr "usar threads ao procurar pela melhor correspondência delta" -#: builtin/pack-objects.c:2629 +#: builtin/pack-objects.c:2677 msgid "do not create an empty pack output" msgstr "não criar um pacote vazio" -#: builtin/pack-objects.c:2631 +#: builtin/pack-objects.c:2679 msgid "read revision arguments from standard input" msgstr "ler argumentos de revisão da entrada padrão" -#: builtin/pack-objects.c:2633 +#: builtin/pack-objects.c:2681 msgid "limit the objects to those that are not yet packed" msgstr "restringir-se aos objetos que ainda não foram compactados" -#: builtin/pack-objects.c:2636 +#: builtin/pack-objects.c:2684 msgid "include objects reachable from any reference" msgstr "incluir objetos alcançáveis a partir de qualquer referência" -#: builtin/pack-objects.c:2639 +#: builtin/pack-objects.c:2687 msgid "include objects referred by reflog entries" msgstr "incluir objetos referenciados por entradas do reflog" -#: builtin/pack-objects.c:2642 +#: builtin/pack-objects.c:2690 msgid "include objects referred to by the index" msgstr "incluir objetos referenciados pelo índice" -#: builtin/pack-objects.c:2645 +#: builtin/pack-objects.c:2693 msgid "output pack to stdout" msgstr "gerar pacote para a saída padrão" -#: builtin/pack-objects.c:2647 +#: builtin/pack-objects.c:2695 msgid "include tag objects that refer to objects to be packed" msgstr "incluir objetos tag que refiram objetos a compactar" -#: builtin/pack-objects.c:2649 +#: builtin/pack-objects.c:2697 msgid "keep unreachable objects" msgstr "manter objetos inalcançáveis" -#: builtin/pack-objects.c:2650 parse-options.h:142 +#: builtin/pack-objects.c:2699 +msgid "pack loose unreachable objects" +msgstr "empacotar objetos soltos inalcançáveis" + +#: builtin/pack-objects.c:2700 parse-options.h:142 msgid "time" msgstr "hora" -#: builtin/pack-objects.c:2651 +#: builtin/pack-objects.c:2701 msgid "unpack unreachable objects newer than <time>" msgstr "descompactar objetos inalcançáveis mais recentes que <hora>" -#: builtin/pack-objects.c:2654 +#: builtin/pack-objects.c:2704 msgid "create thin packs" msgstr "criar pacotes finos" -#: builtin/pack-objects.c:2656 +#: builtin/pack-objects.c:2706 msgid "create packs suitable for shallow fetches" msgstr "criar pacotes adequados para obter em repositórios pouco profundos" -#: builtin/pack-objects.c:2658 +#: builtin/pack-objects.c:2708 msgid "ignore packs that have companion .keep file" msgstr "ignorar pacotes que tenham um ficheiro .keep" -#: builtin/pack-objects.c:2660 +#: builtin/pack-objects.c:2710 msgid "pack compression level" msgstr "nível de compactação do pacote" -#: builtin/pack-objects.c:2662 +#: builtin/pack-objects.c:2712 msgid "do not hide commits by grafts" msgstr "não esconder commits introduzidos por enxertos" -#: builtin/pack-objects.c:2664 +#: builtin/pack-objects.c:2714 msgid "use a bitmap index if available to speed up counting objects" msgstr "" "usar um índice de mapa de bits se disponível, para acelerar a contagem de " "objetos" -#: builtin/pack-objects.c:2666 +#: builtin/pack-objects.c:2716 msgid "write a bitmap index together with the pack index" msgstr "escrever um índice de mapa de bits juntamente com o índice do pacote" -#: builtin/pack-objects.c:2757 +#: builtin/pack-objects.c:2829 msgid "Counting objects" msgstr "A contar objetos" @@ -9284,15 +9762,11 @@ msgstr "A remover objetos duplicados" msgid "git prune [-n] [-v] [--expire <time>] [--] [<head>...]" msgstr "git prune [-n] [-v] [--expire <hora>] [--] [<head>...]" -#: builtin/prune.c:105 builtin/worktree.c:125 -msgid "do not remove, show only" -msgstr "não remover, mostrar apenas" - -#: builtin/prune.c:106 builtin/worktree.c:126 +#: builtin/prune.c:106 builtin/worktree.c:128 msgid "report pruned objects" msgstr "apresentar objetos eliminados" -#: builtin/prune.c:109 builtin/worktree.c:128 +#: builtin/prune.c:109 builtin/worktree.c:130 msgid "expire objects older than <time>" msgstr "expirar objetos mais antigos que <hora>" @@ -9312,14 +9786,10 @@ msgstr "Opções relativas a integração" msgid "incorporate changes by rebasing rather than merging" msgstr "incorporar alterações por rebase em vez de integrar" -#: builtin/pull.c:147 builtin/revert.c:105 +#: builtin/pull.c:147 builtin/revert.c:101 msgid "allow fast-forward" msgstr "permitir avanço rápido" -#: builtin/pull.c:153 -msgid "verify that the named commit has a valid GPG signature" -msgstr "verificar se o commit tem uma assinatura GPG válida" - #: builtin/pull.c:156 msgid "automatically stash/stash pop before and after rebase" msgstr "empilhar/desempilhar automaticamente antes de depois de rebase" @@ -9337,15 +9807,15 @@ msgstr "número de submódulos puxados em paralelo" msgid "Invalid value for pull.ff: %s" msgstr "Valor inválido de pull.ff: %s" -#: builtin/pull.c:379 +#: builtin/pull.c:379 git-sh-setup.sh:226 msgid "Cannot pull with rebase: You have unstaged changes." msgstr "Não é possível puxar com rebase: tem alterações não preparadas." -#: builtin/pull.c:385 +#: builtin/pull.c:385 git-sh-setup.sh:252 msgid "Additionally, your index contains uncommitted changes." msgstr "Além disso, o índice contém alterações não submetidas." -#: builtin/pull.c:387 +#: builtin/pull.c:387 git-sh-setup.sh:245 msgid "Cannot pull with rebase: Your index contains uncommitted changes." msgstr "" "Não é possível puxar com rebase: o índice contém alterações não submetidas." @@ -9405,7 +9875,7 @@ msgstr "Consulte git-pull(1) para obter mais detalhes." msgid "<remote>" msgstr "<remoto>" -#: builtin/pull.c:481 builtin/pull.c:496 builtin/pull.c:501 +#: builtin/pull.c:481 builtin/pull.c:496 builtin/pull.c:501 git-rebase.sh:451 #: git-parse-remote.sh:65 msgid "<branch>" msgstr "<ramo>" @@ -9430,17 +9900,21 @@ msgstr "" "A configuração indica para integrar com a referência '%s'\n" "do remoto, mas aquela referência não foi obtida." -#: builtin/pull.c:864 +#: builtin/pull.c:820 +msgid "ignoring --verify-signatures for rebase" +msgstr "ignorado --verify-signatures para rebase" + +#: builtin/pull.c:867 msgid "--[no-]autostash option is only valid with --rebase." msgstr "a opção --[no-]autostash só é válida com --rebase." -#: builtin/pull.c:872 +#: builtin/pull.c:875 msgid "Updating an unborn branch with changes added to the index." msgstr "" "A atualizar um ramo que ainda não foi criado e com alterações adicionadas ao " "índice." -#: builtin/pull.c:900 +#: builtin/pull.c:903 #, c-format msgid "" "fetch updated the current branch head.\n" @@ -9451,7 +9925,7 @@ msgstr "" "a avançar a árvore de trabalho a partir do\n" "commit %s." -#: builtin/pull.c:905 +#: builtin/pull.c:908 #, c-format msgid "" "Cannot fast-forward your working tree.\n" @@ -9468,11 +9942,11 @@ msgstr "" "$ git reset --hard\n" "para recuperar." -#: builtin/pull.c:920 +#: builtin/pull.c:923 msgid "Cannot merge multiple branches into empty head." msgstr "Não é possível integrar múltiplos ramos numa cabeça vazia." -#: builtin/pull.c:924 +#: builtin/pull.c:927 msgid "Cannot rebase onto multiple branches." msgstr "Não é possível efetuar rebase sobre múltiplos ramos." @@ -9635,12 +10109,12 @@ msgstr "A publicar em %s\n" msgid "failed to push some refs to '%s'" msgstr "falha ao publicar algumas referências em '%s'" -#: builtin/push.c:365 +#: builtin/push.c:366 #, c-format msgid "bad repository '%s'" msgstr "repositório '%s' incorreto" -#: builtin/push.c:366 +#: builtin/push.c:367 msgid "" "No configured push destination.\n" "Either specify the URL from the command-line or configure a remote " @@ -9662,113 +10136,125 @@ msgstr "" "\n" " git push <nome>\n" -#: builtin/push.c:381 +#: builtin/push.c:385 msgid "--all and --tags are incompatible" msgstr "--all e --tags são incompatíveis" -#: builtin/push.c:382 +#: builtin/push.c:386 msgid "--all can't be combined with refspecs" msgstr "--all não pode ser combinado com especificadores de referências" -#: builtin/push.c:387 +#: builtin/push.c:391 msgid "--mirror and --tags are incompatible" msgstr "--mirror e --tags são incompatíveis" -#: builtin/push.c:388 +#: builtin/push.c:392 msgid "--mirror can't be combined with refspecs" msgstr "--mirror não pode ser combinado com especificadores de referências" -#: builtin/push.c:393 +#: builtin/push.c:397 msgid "--all and --mirror are incompatible" msgstr "--all e --mirror são incompatíveis" -#: builtin/push.c:505 +#: builtin/push.c:515 msgid "repository" msgstr "repositório" -#: builtin/push.c:506 builtin/send-pack.c:161 +#: builtin/push.c:516 builtin/send-pack.c:161 msgid "push all refs" msgstr "publicar todas as referências" -#: builtin/push.c:507 builtin/send-pack.c:163 +#: builtin/push.c:517 builtin/send-pack.c:163 msgid "mirror all refs" msgstr "replicar todas as referências" -#: builtin/push.c:509 +#: builtin/push.c:519 msgid "delete refs" msgstr "eliminar referências" -#: builtin/push.c:510 +#: builtin/push.c:520 msgid "push tags (can't be used with --all or --mirror)" msgstr "publicar tags (não pode ser usado com --all ou --mirror)" -#: builtin/push.c:513 builtin/send-pack.c:164 +#: builtin/push.c:523 builtin/send-pack.c:164 msgid "force updates" msgstr "forçar atualização" -#: builtin/push.c:515 builtin/send-pack.c:175 +#: builtin/push.c:525 builtin/send-pack.c:175 msgid "refname>:<expect" msgstr "nome da referência>:<esperado" -#: builtin/push.c:516 builtin/send-pack.c:176 +#: builtin/push.c:526 builtin/send-pack.c:176 msgid "require old value of ref to be at this value" msgstr "exigir que o antigo valor da referência tenha este valor" -#: builtin/push.c:519 +#: builtin/push.c:529 msgid "control recursive pushing of submodules" msgstr "controlar a publicação recursiva de submódulos" -#: builtin/push.c:521 builtin/send-pack.c:169 +#: builtin/push.c:531 builtin/send-pack.c:169 msgid "use thin pack" msgstr "usar pacote fino" -#: builtin/push.c:522 builtin/push.c:523 builtin/send-pack.c:158 +#: builtin/push.c:532 builtin/push.c:533 builtin/send-pack.c:158 #: builtin/send-pack.c:159 msgid "receive pack program" msgstr "programa receive pack" -#: builtin/push.c:524 +#: builtin/push.c:534 msgid "set upstream for git pull/status" msgstr "definir o ramo a montante usado com git pull/status" -#: builtin/push.c:527 +#: builtin/push.c:537 msgid "prune locally removed refs" msgstr "eliminar referências removidas localmente" -#: builtin/push.c:529 +#: builtin/push.c:539 msgid "bypass pre-push hook" msgstr "ignorar pre-push hook" -#: builtin/push.c:530 +#: builtin/push.c:540 msgid "push missing but relevant tags" msgstr "publicar tags perdidas mas relevantes" -#: builtin/push.c:533 builtin/send-pack.c:166 +#: builtin/push.c:543 builtin/send-pack.c:166 msgid "GPG sign the push" msgstr "assinar publicação com GPG" -#: builtin/push.c:535 builtin/send-pack.c:170 +#: builtin/push.c:545 builtin/send-pack.c:170 msgid "request atomic transaction on remote side" msgstr "solicitar transação atómica no servidor remoto" -#: builtin/push.c:549 +#: builtin/push.c:546 +msgid "server-specific" +msgstr "específico do servidor" + +#: builtin/push.c:546 +msgid "option to transmit" +msgstr "opção para transmitir" + +#: builtin/push.c:560 msgid "--delete is incompatible with --all, --mirror and --tags" msgstr "--delete é incompatível com --all, --mirror e --tags" -#: builtin/push.c:551 +#: builtin/push.c:562 msgid "--delete doesn't make sense without any refs" msgstr "--delete não faz sentido sem uma referência" +#: builtin/push.c:579 +msgid "push options must not have new line characters" +msgstr "as opções de publicação não podem ter carateres de nova linha" + #: builtin/read-tree.c:37 msgid "" "git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<prefix>) " "[-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] [--" "index-output=<file>] (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])" msgstr "" -"git read-tree [(-m [--trivial] [--aggressive] | --reset | --prefix=<prefixo>)" -" [-u [--exclude-per-directory=<gitignore>] | -i]] [--no-sparse-checkout] " -"[--index-output=<ficheiro>] (--empty | <árvore-etc1> [<árvore-etc2> [<árvore-" -"etc3>]])" +"git read-tree [(-m [--trivial] [--aggressive] | --reset | --" +"prefix=<prefixo>) [-u [--exclude-per-directory=<gitignore>] | -i]] [--no-" +"sparse-checkout] [--index-output=<ficheiro>] (--empty | <árvore-etc1> " +"[<árvore-etc2> [<árvore-etc3>]])" #: builtin/read-tree.c:110 msgid "write resulting index to <file>" @@ -9840,11 +10326,11 @@ msgstr "depurar unpack-trees" msgid "git receive-pack <git-dir>" msgstr "git receive-pack <git-dir>" -#: builtin/receive-pack.c:1719 +#: builtin/receive-pack.c:1845 msgid "quiet" msgstr "silencioso" -#: builtin/receive-pack.c:1733 +#: builtin/receive-pack.c:1859 msgid "You must specify a directory." msgstr "Deve especificar um diretório." @@ -9867,8 +10353,8 @@ msgid "" "git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--" "mirror=<fetch|push>] <name> <url>" msgstr "" -"git remote add [-t <ramo>] [-m <mestre>] [-f] [--tags | --no-tags] " -"[--mirror=<fetch|push>] <nome> <url>" +"git remote add [-t <ramo>] [-m <mestre>] [-f] [--tags | --no-tags] [--" +"mirror=<fetch|push>] <nome> <url>" #: builtin/remote.c:14 builtin/remote.c:34 msgid "git remote rename <old> <new>" @@ -9994,12 +10480,12 @@ msgstr "especificar um ramo mestre não faz sentido com --mirror" msgid "specifying branches to track makes sense only with fetch mirrors" msgstr "especificar ramos para seguir só faz sentido com fetch mirrors" -#: builtin/remote.c:190 builtin/remote.c:633 +#: builtin/remote.c:190 builtin/remote.c:629 #, c-format msgid "remote %s already exists." msgstr "o remoto %s já existe." -#: builtin/remote.c:194 builtin/remote.c:637 +#: builtin/remote.c:194 builtin/remote.c:633 #, c-format msgid "'%s' is not a valid remote name" msgstr "'%s' não é um nome de remoto válido" @@ -10023,18 +10509,18 @@ msgstr "(correspondente)" msgid "(delete)" msgstr "(eliminado)" -#: builtin/remote.c:626 builtin/remote.c:761 builtin/remote.c:858 +#: builtin/remote.c:622 builtin/remote.c:757 builtin/remote.c:854 #, c-format msgid "No such remote: %s" msgstr "Remoto inexistente: %s" -#: builtin/remote.c:643 +#: builtin/remote.c:639 #, c-format msgid "Could not rename config section '%s' to '%s'" msgstr "" "Não foi possível mudar o nome da secção de configuração de '%s' para '%s'" -#: builtin/remote.c:663 +#: builtin/remote.c:659 #, c-format msgid "" "Not updating non-default fetch refspec\n" @@ -10046,17 +10532,17 @@ msgstr "" "\t%s\n" "\tAtualize a configuração manualmente se necessário." -#: builtin/remote.c:699 +#: builtin/remote.c:695 #, c-format msgid "deleting '%s' failed" msgstr "falha ao eliminar '%s'" -#: builtin/remote.c:733 +#: builtin/remote.c:729 #, c-format msgid "creating '%s' failed" msgstr "falha ao criar '%s'" -#: builtin/remote.c:796 +#: builtin/remote.c:792 msgid "" "Note: A branch outside the refs/remotes/ hierarchy was not removed;\n" "to delete it, use:" @@ -10070,284 +10556,293 @@ msgstr[1] "" "Nota: alguns ramos fora da hierarquia refs/remotes/ não foram removidos;\n" "para os remover, use:" -#: builtin/remote.c:810 +#: builtin/remote.c:806 #, c-format msgid "Could not remove config section '%s'" msgstr "Não foi possível remover a secção de configuração '%s'" -#: builtin/remote.c:911 +#: builtin/remote.c:907 #, c-format msgid " new (next fetch will store in remotes/%s)" msgstr " novo (os próxima objetos obtidos serão guardados em remotes/%s)" -#: builtin/remote.c:914 +#: builtin/remote.c:910 msgid " tracked" msgstr " seguido" -#: builtin/remote.c:916 +#: builtin/remote.c:912 msgid " stale (use 'git remote prune' to remove)" msgstr " obsoleto (use 'git remote prune' para remover)" -#: builtin/remote.c:918 +#: builtin/remote.c:914 msgid " ???" msgstr " ???" -#: builtin/remote.c:959 +#: builtin/remote.c:955 #, c-format msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch" msgstr "" -"branch.%s.merge inválido; não é possível realizar rebase sobre mais do que " -"um ramo" +"branch.%s.merge inválido; não é possível rebasear sobre mais do que um ramo" -#: builtin/remote.c:967 +#: builtin/remote.c:963 #, c-format msgid "rebases interactively onto remote %s" -msgstr "realiza rebase interativo sobre %s do remoto" +msgstr "rebaseia interativamente sobre %s do remoto" -#: builtin/remote.c:971 +#: builtin/remote.c:964 +#, c-format +msgid "rebases onto remote %s" +msgstr "rebaseia sobre %s do remoto" + +#: builtin/remote.c:967 #, c-format msgid " merges with remote %s" msgstr " integra com %s do remoto" -#: builtin/remote.c:972 -msgid " and with remote" -msgstr " e com o remoto" - -#: builtin/remote.c:974 +#: builtin/remote.c:970 #, c-format msgid "merges with remote %s" msgstr "integra com %s do remoto" -#: builtin/remote.c:975 -msgid " and with remote" -msgstr " e com o remoto" +#: builtin/remote.c:973 +#, c-format +msgid "%-*s and with remote %s\n" +msgstr "%-*s e com o %s do remoto\n" -#: builtin/remote.c:1021 +#: builtin/remote.c:1016 msgid "create" msgstr "criado" -#: builtin/remote.c:1024 +#: builtin/remote.c:1019 msgid "delete" msgstr "eliminado" -#: builtin/remote.c:1028 +#: builtin/remote.c:1023 msgid "up to date" msgstr "atualizado" -#: builtin/remote.c:1031 +#: builtin/remote.c:1026 msgid "fast-forwardable" msgstr "pode ser avançado rapidamente" -#: builtin/remote.c:1034 +#: builtin/remote.c:1029 msgid "local out of date" msgstr "local desatualizado" -#: builtin/remote.c:1041 +#: builtin/remote.c:1036 #, c-format msgid " %-*s forces to %-*s (%s)" msgstr " %-*s força em %-*s (%s)" -#: builtin/remote.c:1044 +#: builtin/remote.c:1039 #, c-format msgid " %-*s pushes to %-*s (%s)" msgstr " %-*s publica em %-*s (%s)" -#: builtin/remote.c:1048 +#: builtin/remote.c:1043 #, c-format msgid " %-*s forces to %s" msgstr " %-*s força em %s" -#: builtin/remote.c:1051 +#: builtin/remote.c:1046 #, c-format msgid " %-*s pushes to %s" msgstr " %-*s publica em %s" -#: builtin/remote.c:1119 +#: builtin/remote.c:1114 msgid "do not query remotes" msgstr "não consultar remotos" -#: builtin/remote.c:1146 +#: builtin/remote.c:1141 #, c-format msgid "* remote %s" msgstr "* remoto %s" -#: builtin/remote.c:1147 +#: builtin/remote.c:1142 #, c-format msgid " Fetch URL: %s" msgstr " Obter do URL: %s" -#: builtin/remote.c:1148 builtin/remote.c:1301 +#: builtin/remote.c:1143 builtin/remote.c:1156 builtin/remote.c:1296 msgid "(no URL)" msgstr "(nenhum URL)" #. TRANSLATORS: the colon ':' should align with #. the one in " Fetch URL: %s" translation -#: builtin/remote.c:1159 builtin/remote.c:1161 +#: builtin/remote.c:1154 builtin/remote.c:1156 #, c-format msgid " Push URL: %s" msgstr " Publicar no URL: %s" -#: builtin/remote.c:1163 builtin/remote.c:1165 builtin/remote.c:1167 +#: builtin/remote.c:1158 builtin/remote.c:1160 builtin/remote.c:1162 #, c-format msgid " HEAD branch: %s" msgstr " Ramo HEAD: %s" -#: builtin/remote.c:1169 +#: builtin/remote.c:1158 +msgid "(not queried)" +msgstr "(não consultado)" + +#: builtin/remote.c:1160 +msgid "(unknown)" +msgstr "(desconhecido)" + +#: builtin/remote.c:1164 #, c-format msgid "" " HEAD branch (remote HEAD is ambiguous, may be one of the following):\n" msgstr " Ramo HEAD (o remoto HEAD é ambíguo, pode ser um dos seguintes):\n" -#: builtin/remote.c:1181 +#: builtin/remote.c:1176 #, c-format msgid " Remote branch:%s" msgid_plural " Remote branches:%s" msgstr[0] " Ramo remoto:%s" msgstr[1] " Ramos remotos:%s" -#: builtin/remote.c:1184 builtin/remote.c:1211 +#: builtin/remote.c:1179 builtin/remote.c:1206 msgid " (status not queried)" msgstr " (estado não consultado)" -#: builtin/remote.c:1193 +#: builtin/remote.c:1188 msgid " Local branch configured for 'git pull':" msgid_plural " Local branches configured for 'git pull':" msgstr[0] " Ramo local configurado para 'git pull':" msgstr[1] " Ramos locais configurados para 'git pull':" -#: builtin/remote.c:1201 +#: builtin/remote.c:1196 msgid " Local refs will be mirrored by 'git push'" msgstr " Referências locais serão refletidas (mirror) por 'git push'" -#: builtin/remote.c:1208 +#: builtin/remote.c:1203 #, c-format msgid " Local ref configured for 'git push'%s:" msgid_plural " Local refs configured for 'git push'%s:" msgstr[0] " Referência local configurada para 'git push'%s:" msgstr[1] " Referências locais configuradas para 'git push'%s:" -#: builtin/remote.c:1229 +#: builtin/remote.c:1224 msgid "set refs/remotes/<name>/HEAD according to remote" msgstr "definir refs/remotes/<nome>/HEAD de acordo com o remoto" -#: builtin/remote.c:1231 +#: builtin/remote.c:1226 msgid "delete refs/remotes/<name>/HEAD" msgstr "eliminar refs/remotes/<nome>/HEAD" -#: builtin/remote.c:1246 +#: builtin/remote.c:1241 msgid "Cannot determine remote HEAD" msgstr "Não é possível determinar o remoto HEAD" -#: builtin/remote.c:1248 +#: builtin/remote.c:1243 msgid "Multiple remote HEAD branches. Please choose one explicitly with:" msgstr "Múltiplos ramos HEAD remotos. Escolha um explicitamente com:" -#: builtin/remote.c:1258 +#: builtin/remote.c:1253 #, c-format msgid "Could not delete %s" msgstr "Não foi possível eliminar %s" -#: builtin/remote.c:1266 +#: builtin/remote.c:1261 #, c-format msgid "Not a valid ref: %s" msgstr "Referência inválida: %s" -#: builtin/remote.c:1268 +#: builtin/remote.c:1263 #, c-format msgid "Could not setup %s" msgstr "Não foi possível configurar %s" -#: builtin/remote.c:1286 +#: builtin/remote.c:1281 #, c-format msgid " %s will become dangling!" msgstr " %s ficará suspenso!" -#: builtin/remote.c:1287 +#: builtin/remote.c:1282 #, c-format msgid " %s has become dangling!" msgstr " %s ficou suspenso!" -#: builtin/remote.c:1297 +#: builtin/remote.c:1292 #, c-format msgid "Pruning %s" msgstr "A eliminar %s" -#: builtin/remote.c:1298 +#: builtin/remote.c:1293 #, c-format msgid "URL: %s" msgstr "URL: %s" -#: builtin/remote.c:1314 +#: builtin/remote.c:1309 #, c-format msgid " * [would prune] %s" msgstr " * [eliminaria] %s" -#: builtin/remote.c:1317 +#: builtin/remote.c:1312 #, c-format msgid " * [pruned] %s" msgstr " * [eliminado] %s" -#: builtin/remote.c:1362 +#: builtin/remote.c:1357 msgid "prune remotes after fetching" msgstr "eliminar remotos depois de obter" -#: builtin/remote.c:1425 builtin/remote.c:1479 builtin/remote.c:1547 +#: builtin/remote.c:1420 builtin/remote.c:1474 builtin/remote.c:1542 #, c-format msgid "No such remote '%s'" msgstr "Remoto inexistente '%s'" -#: builtin/remote.c:1441 +#: builtin/remote.c:1436 msgid "add branch" msgstr "adicionar ramo" -#: builtin/remote.c:1448 +#: builtin/remote.c:1443 msgid "no remote specified" msgstr "nenhum remoto especificado" -#: builtin/remote.c:1465 +#: builtin/remote.c:1460 msgid "query push URLs rather than fetch URLs" msgstr "consultar URLs de publicação em vez de URLs utilizados para obter" -#: builtin/remote.c:1467 +#: builtin/remote.c:1462 msgid "return all URLs" msgstr "retornar todos os URLs" -#: builtin/remote.c:1495 +#: builtin/remote.c:1490 #, c-format msgid "no URLs configured for remote '%s'" msgstr "o remoto '%s' não tem nenhum URL configurado" -#: builtin/remote.c:1521 +#: builtin/remote.c:1516 msgid "manipulate push URLs" msgstr "manipular URLs de publicação" -#: builtin/remote.c:1523 +#: builtin/remote.c:1518 msgid "add URL" msgstr "adicionar URL" -#: builtin/remote.c:1525 +#: builtin/remote.c:1520 msgid "delete URLs" msgstr "eliminar URLs" -#: builtin/remote.c:1532 +#: builtin/remote.c:1527 msgid "--add --delete doesn't make sense" msgstr "--add --delete não faz sentido" -#: builtin/remote.c:1573 +#: builtin/remote.c:1568 #, c-format msgid "Invalid old URL pattern: %s" msgstr "Padrão de URL antigo inválido: %s" -#: builtin/remote.c:1581 +#: builtin/remote.c:1576 #, c-format msgid "No such URL found: %s" msgstr "URL não encontrado: %s" -#: builtin/remote.c:1583 +#: builtin/remote.c:1578 msgid "Will not delete all non-push URLs" msgstr "Não é possível remover todos os URLs de não publicação" -#: builtin/remote.c:1597 +#: builtin/remote.c:1592 msgid "be verbose; must be placed before a subcommand" msgstr "ser verboso; deve ser colocado antes de um subcomando" @@ -10355,79 +10850,87 @@ msgstr "ser verboso; deve ser colocado antes de um subcomando" msgid "git repack [<options>]" msgstr "git repack [<opções>]" -#: builtin/repack.c:159 +#: builtin/repack.c:160 msgid "pack everything in a single pack" msgstr "compactar tudo num único pacote" -#: builtin/repack.c:161 +#: builtin/repack.c:162 msgid "same as -a, and turn unreachable objects loose" msgstr "o mesmo que -a, e soltar objetos inalcançáveis" -#: builtin/repack.c:164 +#: builtin/repack.c:165 msgid "remove redundant packs, and run git-prune-packed" msgstr "remover pacotes redundantes e executar git-prune-packed" -#: builtin/repack.c:166 +#: builtin/repack.c:167 msgid "pass --no-reuse-delta to git-pack-objects" msgstr "passar --no-reuse-delta ao git-pack-objects" -#: builtin/repack.c:168 +#: builtin/repack.c:169 msgid "pass --no-reuse-object to git-pack-objects" msgstr "passar --no-reuse-object ao git-pack-objects" -#: builtin/repack.c:170 +#: builtin/repack.c:171 msgid "do not run git-update-server-info" msgstr "não executar git-update-server-info" -#: builtin/repack.c:173 +#: builtin/repack.c:174 msgid "pass --local to git-pack-objects" msgstr "passar --local ao git-pack-objects" -#: builtin/repack.c:175 +#: builtin/repack.c:176 msgid "write bitmap index" msgstr "escrever índice de mapa de bits" -#: builtin/repack.c:176 +#: builtin/repack.c:177 msgid "approxidate" msgstr "aproximar" -#: builtin/repack.c:177 +#: builtin/repack.c:178 msgid "with -A, do not loosen objects older than this" msgstr "com -A, não soltar mais objetos além destes" -#: builtin/repack.c:179 +#: builtin/repack.c:180 +msgid "with -a, repack unreachable objects" +msgstr "com -a, reempacotar objetos inalcançáveis" + +#: builtin/repack.c:182 msgid "size of the window used for delta compression" msgstr "dimensão da janela usada em compressão de deltas" -#: builtin/repack.c:180 builtin/repack.c:184 +#: builtin/repack.c:183 builtin/repack.c:187 msgid "bytes" msgstr "bytes" -#: builtin/repack.c:181 +#: builtin/repack.c:184 msgid "same as the above, but limit memory size instead of entries count" msgstr "" "o mesmo que o anterior, mas limitar a memória usada em vez do número de " "entradas" -#: builtin/repack.c:183 +#: builtin/repack.c:186 msgid "limits the maximum delta depth" msgstr "limitar a profundidade máxima de delta" -#: builtin/repack.c:185 +#: builtin/repack.c:188 msgid "maximum size of each packfile" msgstr "tamanho máximo de cada ficheiro de pacote" -#: builtin/repack.c:187 +#: builtin/repack.c:190 msgid "repack objects in packs marked with .keep" msgstr "reempacotar objetos em pacotes marcados com .keep" -#: builtin/repack.c:197 +#: builtin/repack.c:200 msgid "cannot delete packs in a precious-objects repo" msgstr "não é possível eliminar pacotes num repositório de objetos-preciosos" -#: builtin/repack.c:381 +#: builtin/repack.c:204 +msgid "--keep-unreachable and -A are incompatible" +msgstr "--keep-unreachable e -A são incompatíveis" + +#: builtin/repack.c:391 builtin/worktree.c:115 #, c-format -msgid "removing '%s' failed" +msgid "failed to remove '%s'" msgstr "falha ao remover '%s'" #: builtin/replace.c:19 @@ -10652,7 +11155,7 @@ msgstr "Não foi possível repor o ficheiro índice para a revisão '%s'." msgid "Could not write new index file." msgstr "Não foi possível escrever novo ficheiro de índice." -#: builtin/rev-list.c:350 +#: builtin/rev-list.c:362 msgid "rev-list does not support display of notes" msgstr "rev-list não suporta apresentação de notas" @@ -10744,31 +11247,27 @@ msgstr "opção" msgid "option for merge strategy" msgstr "opção de estratégia de integração" -#: builtin/revert.c:104 +#: builtin/revert.c:100 msgid "append commit name" msgstr "acrescentar nome do commit" -#: builtin/revert.c:106 +#: builtin/revert.c:102 msgid "preserve initially empty commits" msgstr "preservar commits inicialmente vazios" -#: builtin/revert.c:107 +#: builtin/revert.c:103 msgid "allow commits with empty messages" msgstr "permitir commits com mensagens vazias" -#: builtin/revert.c:108 +#: builtin/revert.c:104 msgid "keep redundant, empty commits" msgstr "manter commits redundantes e vazios" -#: builtin/revert.c:112 -msgid "program error" -msgstr "erro do programa" - -#: builtin/revert.c:197 +#: builtin/revert.c:192 msgid "revert failed" msgstr "falha ao reverter" -#: builtin/revert.c:212 +#: builtin/revert.c:207 msgid "cherry-pick failed" msgstr "falha ao efetuar cherry-pick" @@ -11009,8 +11508,8 @@ msgid "" "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --" "hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<pattern>...]" msgstr "" -"git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | " -"--hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<padrão>...]" +"git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --" +"hash[=<n>]] [--abbrev[=<n>]] [--tags] [--heads] [--] [<padrão>...]" #: builtin/show-ref.c:11 msgid "git show-ref --exclude-existing[=<pattern>]" @@ -11067,12 +11566,12 @@ msgstr "" msgid "prepend comment character and space to each line" msgstr "preceder cada linha com um carácter de comentário e um espaço" -#: builtin/submodule--helper.c:24 +#: builtin/submodule--helper.c:24 builtin/submodule--helper.c:923 #, c-format msgid "No such ref: %s" msgstr "Referência inexistente: %s" -#: builtin/submodule--helper.c:31 +#: builtin/submodule--helper.c:31 builtin/submodule--helper.c:932 #, c-format msgid "Expecting a full ref name, got %s" msgstr "Esperava-se um nome completo de uma referência, obteve-se %s" @@ -11082,8 +11581,8 @@ msgstr "Esperava-se um nome completo de uma referência, obteve-se %s" msgid "cannot strip one component off url '%s'" msgstr "não é possível tirar um componente do URL '%s'" -#: builtin/submodule--helper.c:278 builtin/submodule--helper.c:405 -#: builtin/submodule--helper.c:486 +#: builtin/submodule--helper.c:278 builtin/submodule--helper.c:403 +#: builtin/submodule--helper.c:483 msgid "alternative anchor for relative paths" msgstr "âncora alternativa para caminhos relativos" @@ -11091,66 +11590,66 @@ msgstr "âncora alternativa para caminhos relativos" msgid "git submodule--helper list [--prefix=<path>] [<path>...]" msgstr "git submodule--helper list [--prefix=<caminho>] [<caminho>...]" -#: builtin/submodule--helper.c:326 builtin/submodule--helper.c:340 +#: builtin/submodule--helper.c:324 builtin/submodule--helper.c:338 #, c-format msgid "No url found for submodule path '%s' in .gitmodules" msgstr "Nenhum URL encontrado para o caminho de submódulo '%s' em .gitmodules" -#: builtin/submodule--helper.c:366 +#: builtin/submodule--helper.c:364 #, c-format msgid "Failed to register url for submodule path '%s'" msgstr "Falha ao registar o URL do caminho de submódulo '%s'" -#: builtin/submodule--helper.c:370 +#: builtin/submodule--helper.c:368 #, c-format msgid "Submodule '%s' (%s) registered for path '%s'\n" msgstr "Submódulo '%s' (%s) registado com caminho '%s'\n" -#: builtin/submodule--helper.c:380 +#: builtin/submodule--helper.c:378 #, c-format msgid "warning: command update mode suggested for submodule '%s'\n" msgstr "aviso: modo de atualização do comando sugerido para o submódulo '%s'\n" -#: builtin/submodule--helper.c:387 +#: builtin/submodule--helper.c:385 #, c-format msgid "Failed to register update mode for submodule path '%s'" msgstr "Falha ao registar o modo de atualização do caminho de submódulo '%s'" -#: builtin/submodule--helper.c:406 +#: builtin/submodule--helper.c:404 msgid "Suppress output for initializing a submodule" msgstr "Suprimir a saída ao inicializar um submódulo" -#: builtin/submodule--helper.c:411 +#: builtin/submodule--helper.c:409 msgid "git submodule--helper init [<path>]" msgstr "git submodule--helper init [<caminho>]" -#: builtin/submodule--helper.c:432 +#: builtin/submodule--helper.c:430 msgid "git submodule--helper name <path>" msgstr "git submodule--helper name <caminho>" -#: builtin/submodule--helper.c:438 +#: builtin/submodule--helper.c:436 #, c-format msgid "no submodule mapping found in .gitmodules for path '%s'" msgstr "" "nenhum mapeamento de submódulo do caminho '%s' encontrado em .gitmodules" -#: builtin/submodule--helper.c:489 +#: builtin/submodule--helper.c:486 msgid "where the new submodule will be cloned to" msgstr "sítio para aonde o novo submódulo será clonado" -#: builtin/submodule--helper.c:492 +#: builtin/submodule--helper.c:489 msgid "name of the new submodule" msgstr "nome do novo submódulo" -#: builtin/submodule--helper.c:495 +#: builtin/submodule--helper.c:492 msgid "url where to clone the submodule from" msgstr "url donde clonar o submódulos" -#: builtin/submodule--helper.c:501 +#: builtin/submodule--helper.c:498 msgid "depth for shallow clones" msgstr "profundidade de clones rasos" -#: builtin/submodule--helper.c:507 +#: builtin/submodule--helper.c:504 msgid "" "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference " "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>" @@ -11158,89 +11657,112 @@ msgstr "" "git submodule--helper clone [--prefix=<caminho>] [--quiet] [--reference " "<repositório>] [--name <nome>] [--depth <depth>] --url <url> --path <caminho>" -#: builtin/submodule--helper.c:532 builtin/submodule--helper.c:538 +#: builtin/submodule--helper.c:529 builtin/submodule--helper.c:535 #, c-format msgid "could not create directory '%s'" msgstr "não foi possível criar o diretório '%s'" -#: builtin/submodule--helper.c:534 +#: builtin/submodule--helper.c:531 #, c-format msgid "clone of '%s' into submodule path '%s' failed" msgstr "falha ao clonar '%s' no caminho de submódulo '%s'" -#: builtin/submodule--helper.c:550 +#: builtin/submodule--helper.c:547 #, c-format msgid "cannot open file '%s'" msgstr "não é possível abrir o ficheiro '%s'" -#: builtin/submodule--helper.c:555 +#: builtin/submodule--helper.c:552 #, c-format msgid "could not close file %s" msgstr "não é possível fechar o ficheiro %s" -#: builtin/submodule--helper.c:562 +#: builtin/submodule--helper.c:559 #, c-format msgid "could not get submodule directory for '%s'" msgstr "não foi possível obter o diretório do submódulo de '%s'" -#: builtin/submodule--helper.c:609 +#: builtin/submodule--helper.c:611 #, c-format msgid "Submodule path '%s' not initialized" msgstr "Caminho de submódulo '%s' não inicializado" -#: builtin/submodule--helper.c:613 +#: builtin/submodule--helper.c:615 msgid "Maybe you want to use 'update --init'?" msgstr "Pretendia usar 'update --init'?" -#: builtin/submodule--helper.c:639 +#: builtin/submodule--helper.c:641 #, c-format msgid "Skipping unmerged submodule %s" msgstr "A ignorar submódulo %s não integrado" -#: builtin/submodule--helper.c:660 +#: builtin/submodule--helper.c:662 #, c-format msgid "Skipping submodule '%s'" msgstr "A ignorar submódulo '%s'" -#: builtin/submodule--helper.c:768 +#: builtin/submodule--helper.c:792 +#, c-format +msgid "Failed to clone '%s'. Retry scheduled" +msgstr "Falha ao clonar '%s'. Nova tentativa agendada" + +#: builtin/submodule--helper.c:803 +#, c-format +msgid "Failed to clone '%s' a second time, aborting" +msgstr "Falha ao clonar '%s' pela segunda vez, abortado" + +#: builtin/submodule--helper.c:824 msgid "path into the working tree" msgstr "caminho para a árvore de trabalho" -#: builtin/submodule--helper.c:771 +#: builtin/submodule--helper.c:827 msgid "path into the working tree, across nested submodule boundaries" msgstr "" "caminho para a árvore de trabalho, atravessando limites de submódulos " "aninhados" -#: builtin/submodule--helper.c:775 +#: builtin/submodule--helper.c:831 msgid "rebase, merge, checkout or none" msgstr "rebase, merge, checkout ou none" -#: builtin/submodule--helper.c:779 +#: builtin/submodule--helper.c:835 msgid "Create a shallow clone truncated to the specified number of revisions" msgstr "criar um clone raso, truncado ao número especificado de revisões" -#: builtin/submodule--helper.c:782 +#: builtin/submodule--helper.c:838 msgid "parallel jobs" msgstr "trabalhos em paralelo" -#: builtin/submodule--helper.c:783 +#: builtin/submodule--helper.c:840 +msgid "whether the initial clone should follow the shallow recommendation" +msgstr "se o clone inicial deve seguir a recomendação rasa" + +#: builtin/submodule--helper.c:841 msgid "don't print cloning progress" msgstr "não imprimir progresso da clonagem" -#: builtin/submodule--helper.c:788 +#: builtin/submodule--helper.c:846 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]" msgstr "git submodule--helper update_clone [--prefix=<caminho>] [<caminho>...]" -#: builtin/submodule--helper.c:798 +#: builtin/submodule--helper.c:856 msgid "bad value for update parameter" msgstr "valor incorreto no parâmetro update" -#: builtin/submodule--helper.c:855 +#: builtin/submodule--helper.c:927 +#, c-format +msgid "" +"Submodule (%s) branch configured to inherit branch from superproject, but " +"the superproject is not on any branch" +msgstr "" +"O ramo do submódulo (%s) foi configurado para herdar o ramo do superprojeto, " +"mas o superprojeto não está em nenhum ramo" + +#: builtin/submodule--helper.c:977 msgid "submodule--helper subcommand must be called with a subcommand" msgstr "o subcomando submodule--helper deve ser invocado com um subcomando" -#: builtin/submodule--helper.c:862 +#: builtin/submodule--helper.c:984 #, c-format msgid "'%s' is not a valid submodule--helper subcommand" msgstr "'%s' não é um subcomando válido de submodule--helper" @@ -11590,14 +12112,6 @@ msgstr "<modo>,<objeto>,<caminho>" msgid "add the specified entry to the index" msgstr "adicionar o elemento especificado ao índice" -#: builtin/update-index.c:958 -msgid "(+/-)x" -msgstr "(+/-)x" - -#: builtin/update-index.c:959 -msgid "override the executable bit of the listed files" -msgstr "substituir o bit executável dos ficheiros listados" - #: builtin/update-index.c:963 msgid "mark files as \"not changing\"" msgstr "marcar ficheiros como \"não alterados\"" @@ -11708,8 +12222,8 @@ msgstr "eliminar a referência" #: builtin/update-ref.c:365 msgid "update <refname> not the one it points to" msgstr "" -"atualizar a referência <nome-da-referência>, e não a referência aponta por " -"esta" +"atualizar a referência <nome-da-referência>, não a referência que esta " +"aponta" #: builtin/update-ref.c:366 msgid "stdin has NUL-terminated arguments" @@ -11764,85 +12278,112 @@ msgid "git worktree add [<options>] <path> [<branch>]" msgstr "git worktree add [<opções>] <caminho> [<ramo>]" #: builtin/worktree.c:16 +msgid "git worktree list [<options>]" +msgstr "git worktree list [<opções>]" + +#: builtin/worktree.c:17 +msgid "git worktree lock [<options>] <path>" +msgstr "git worktree lock [<opções>] <caminho>" + +#: builtin/worktree.c:18 msgid "git worktree prune [<options>]" msgstr "git worktree prune [<opções>]" -#: builtin/worktree.c:17 -msgid "git worktree list [<options>]" -msgstr "git worktree list [<opções>]" +#: builtin/worktree.c:19 +msgid "git worktree unlock <path>" +msgstr "git worktree unlock <caminho>" -#: builtin/worktree.c:40 +#: builtin/worktree.c:42 #, c-format msgid "Removing worktrees/%s: not a valid directory" msgstr "A remover worktrees/%s: diretório inválido" -#: builtin/worktree.c:46 +#: builtin/worktree.c:48 #, c-format msgid "Removing worktrees/%s: gitdir file does not exist" msgstr "A remover worktrees/%s: o ficheiro gitdir não existe" -#: builtin/worktree.c:51 +#: builtin/worktree.c:53 #, c-format msgid "Removing worktrees/%s: unable to read gitdir file (%s)" msgstr "A remover worktrees/%s: não é possível ler o ficheiro gitdir (%s)" -#: builtin/worktree.c:62 +#: builtin/worktree.c:64 #, c-format msgid "Removing worktrees/%s: invalid gitdir file" msgstr "A remover worktrees/%s: ficheiro gitdir inválido" -#: builtin/worktree.c:78 +#: builtin/worktree.c:80 #, c-format msgid "Removing worktrees/%s: gitdir file points to non-existent location" msgstr "" "A remover worktrees/%s: o ficheiro gitdir aponta para uma localização " "inexistente" -#: builtin/worktree.c:113 -#, c-format -msgid "failed to remove '%s'" -msgstr "falha ao remover '%s'" - -#: builtin/worktree.c:202 +#: builtin/worktree.c:204 #, c-format msgid "'%s' already exists" msgstr "'%s' já existe" -#: builtin/worktree.c:234 +#: builtin/worktree.c:236 #, c-format msgid "could not create directory of '%s'" msgstr "não foi possível criar o diretório de '%s'" -#: builtin/worktree.c:270 +#: builtin/worktree.c:272 #, c-format msgid "Preparing %s (identifier %s)" msgstr "A preparar %s (identificador %s)" -#: builtin/worktree.c:322 +#: builtin/worktree.c:323 msgid "checkout <branch> even if already checked out in other worktree" msgstr "" "extrair o <ramo> mesmo se já tenha sido extraído noutra árvore de trabalho" -#: builtin/worktree.c:324 +#: builtin/worktree.c:325 msgid "create a new branch" msgstr "criar um novo ramo" -#: builtin/worktree.c:326 +#: builtin/worktree.c:327 msgid "create or reset a branch" msgstr "criar ou repor um ramo" -#: builtin/worktree.c:327 -msgid "detach HEAD at named commit" -msgstr "destacar HEAD no commit indicado" - -#: builtin/worktree.c:328 +#: builtin/worktree.c:329 msgid "populate the new working tree" msgstr "povoar a nova árvore de trabalho" -#: builtin/worktree.c:336 +#: builtin/worktree.c:337 msgid "-b, -B, and --detach are mutually exclusive" msgstr "-b, -B e --detach são mutuamente exclusivos" +#: builtin/worktree.c:470 +msgid "reason for locking" +msgstr "razão de trancar" + +#: builtin/worktree.c:482 builtin/worktree.c:515 +#, c-format +msgid "'%s' is not a working tree" +msgstr "'%s' não é uma árvore de trabalho" + +#: builtin/worktree.c:484 builtin/worktree.c:517 +msgid "The main working tree cannot be locked or unlocked" +msgstr "A árvore de trabalho principal não pode ser trancada nem destrancada" + +#: builtin/worktree.c:489 +#, c-format +msgid "'%s' is already locked, reason: %s" +msgstr "'%s' já está trancada, razão: %s" + +#: builtin/worktree.c:491 +#, c-format +msgid "'%s' is already locked" +msgstr "'%s' já está trancada" + +#: builtin/worktree.c:519 +#, c-format +msgid "'%s' is not locked" +msgstr "'%s' não está trancada" + #: builtin/write-tree.c:13 msgid "git write-tree [--missing-ok] [--prefix=<prefix>/]" msgstr "git write-tree [--missing-ok] [--prefix=<prefixo>/]" @@ -11859,6 +12400,26 @@ msgstr "escrever objeto árvore do subdiretório <prefixo>" msgid "only useful for debugging" msgstr "apenas útil para depuração" +#: upload-pack.c:20 +msgid "git upload-pack [<options>] <dir>" +msgstr "git upload-pack [<opções>] <dir>" + +#: upload-pack.c:837 +msgid "quit after a single request/response exchange" +msgstr "terminar depois de uma única troca de pedido/resposta" + +#: upload-pack.c:839 +msgid "exit immediately after initial ref advertisement" +msgstr "sair imediatamente depois do anúncio inicial da referência" + +#: upload-pack.c:841 +msgid "do not try <directory>/.git/ if <directory> is no Git directory" +msgstr "não tentar <diretório>/.git/ se o <diretório> não for um diretório Git" + +#: upload-pack.c:843 +msgid "interrupt transfer after <n> seconds of inactivity" +msgstr "interromper transferência depois de <n> segundos de inatividade" + #: credential-cache--daemon.c:271 msgid "print debugging messages to stderr" msgstr "imprimir mensagens de depuração no stderr" @@ -11873,7 +12434,7 @@ msgstr "" "guias de conceitos. Consulte 'git help <comando>' ou 'git help <conceito>'\n" "para ler sobre um subcomando ou conceito específico." -#: http.c:322 +#: http.c:323 msgid "Public key pinning not supported with cURL < 7.44.0" msgstr "Não é suportado afixar chaves públicas com cURL < 7.44.0" @@ -12007,58 +12568,59 @@ msgid "update the index with reused conflict resolution if possible" msgstr "" "atualizar o índice com resoluções de conflitos reutilizadas se possível" -#: git-bisect.sh:55 +#: git-bisect.sh:54 msgid "You need to start by \"git bisect start\"" msgstr "Deve começar por executar \"git bisect start\"" #. TRANSLATORS: Make sure to include [Y] and [n] in your #. translation. The program will only accept English input #. at this point. -#: git-bisect.sh:61 +#: git-bisect.sh:60 msgid "Do you want me to do it for you [Y/n]? " msgstr "Quer que o Git o faça por si [Y/n]? " -#: git-bisect.sh:122 +#: git-bisect.sh:121 #, sh-format msgid "unrecognised option: '$arg'" msgstr "opção não reconhecida: '$arg'" -#: git-bisect.sh:126 +#: git-bisect.sh:125 #, sh-format msgid "'$arg' does not appear to be a valid revision" msgstr "'$arg' não parecer ser uma revisão válida" -#: git-bisect.sh:155 +#: git-bisect.sh:154 msgid "Bad HEAD - I need a HEAD" msgstr "HEAD incorreta - é necessário uma HEAD" -#: git-bisect.sh:168 +#: git-bisect.sh:167 #, sh-format msgid "" "Checking out '$start_head' failed. Try 'git bisect reset <valid-branch>'." msgstr "Falha ao extrair '$start_head'. Tente 'git bisect reset <ramo-válido>'." -#: git-bisect.sh:178 +#: git-bisect.sh:177 msgid "won't bisect on cg-seek'ed tree" msgstr "não é possível bissetar numa árvore \"cg-seek'ed\"" -#: git-bisect.sh:182 +#: git-bisect.sh:181 msgid "Bad HEAD - strange symbolic ref" msgstr "HEAD incorreta - referência simbólica desconhecida" -#: git-bisect.sh:234 +#: git-bisect.sh:233 #, sh-format msgid "Bad bisect_write argument: $state" msgstr "Argumento de bisect_write incorreto: $state" -#: git-bisect.sh:263 +#: git-bisect.sh:262 #, sh-format msgid "Bad rev input: $arg" msgstr "Revisão incorreta na entrada: $arg" -#: git-bisect.sh:278 -msgid "Please call 'bisect_state' with at least one argument." -msgstr "Invoque 'bisect_state' com pelo menos um argumento." +#: git-bisect.sh:281 +#, sh-format +msgid "Bad rev input: $bisected_head" +msgstr "Revisão incorreta na entrada: $bisected_head" #: git-bisect.sh:290 #, sh-format @@ -12202,7 +12764,47 @@ msgstr "" "argumento inválido $arg de 'git bisect terms'.\n" "Opções suportadas: --term-good|--term-old e --term-bad|--term-new." -#: git-rebase.sh:57 +#: git-merge-octopus.sh:46 +msgid "" +"Error: Your local changes to the following files would be overwritten by " +"merge" +msgstr "" +"Erro: As suas alterações locais nos seguintes ficheiros seriam substituídas " +"ao integrar" + +#: git-merge-octopus.sh:61 +msgid "Automated merge did not work." +msgstr "A integração automática não funcionou." + +#: git-merge-octopus.sh:62 +msgid "Should not be doing an Octopus." +msgstr "Não devia estar a fazer um Polvo." + +#: git-merge-octopus.sh:73 +#, sh-format +msgid "Unable to find common commit with $pretty_name" +msgstr "Não é possível encontrar commit comum com $pretty_name" + +#: git-merge-octopus.sh:77 +#, sh-format +msgid "Already up-to-date with $pretty_name" +msgstr "Já está atualizado com $pretty_name" + +#: git-merge-octopus.sh:89 +#, sh-format +msgid "Fast-forwarding to: $pretty_name" +msgstr "A avançar rapidamente para: $pretty_name" + +#: git-merge-octopus.sh:97 +#, sh-format +msgid "Trying simple merge with $pretty_name" +msgstr "A tentar integração simples com $pretty_name" + +#: git-merge-octopus.sh:102 +msgid "Simple merge did not work, trying automatic merge." +msgstr "A integração simples não funcionou, a tentar integração automática." + +#: git-rebase.sh:56 msgid "" "When you have resolved this problem, run \"git rebase --continue\".\n" "If you prefer to skip this patch, run \"git rebase --skip\" instead.\n" @@ -12211,19 +12813,24 @@ msgid "" msgstr "" "Depois de resolver este problema, execute \"git rebase --continue\".\n" "Se prefere ignorar este patch, execute \"git rebase --skip\".\n" -"Para extrair o ramo original e interromper o rebase, execute \"git rebase --" -"abort\"." +"Para extrair o ramo original e interromper o rebase, execute \"git rebase " +"--abort\"." + +#: git-rebase.sh:156 git-rebase.sh:395 +#, sh-format +msgid "Could not move back to $head_name" +msgstr "Não foi possível voltar para $head_name" -#: git-rebase.sh:168 +#: git-rebase.sh:167 msgid "Applied autostash." msgstr "Pilha automática (autostash) aplicada." -#: git-rebase.sh:171 +#: git-rebase.sh:170 #, sh-format msgid "Cannot store $stash_sha1" msgstr "Não é possível guardar $stash_sha1" -#: git-rebase.sh:172 +#: git-rebase.sh:171 msgid "" "Applying autostash resulted in conflicts.\n" "Your changes are safe in the stash.\n" @@ -12233,27 +12840,27 @@ msgstr "" "As suas alterações estão guardadas na pilha.\n" "Pode executar \"git stash pop\" ou \"git stash drop\" oportunamente.\n" -#: git-rebase.sh:211 +#: git-rebase.sh:210 msgid "The pre-rebase hook refused to rebase." msgstr "Rebase recusado pelo hook pre-rebase." -#: git-rebase.sh:216 +#: git-rebase.sh:215 msgid "It looks like git-am is in progress. Cannot rebase." msgstr "Parece que o git-am está em curso. Não é possível efetuar rebase." -#: git-rebase.sh:357 +#: git-rebase.sh:356 msgid "No rebase in progress?" msgstr "Rebase não está em curso?" -#: git-rebase.sh:368 +#: git-rebase.sh:367 msgid "The --edit-todo action can only be used during interactive rebase." msgstr "A ação --edit-todo só pode ser usada durante um rebase interativo." -#: git-rebase.sh:375 +#: git-rebase.sh:374 msgid "Cannot read HEAD" msgstr "Não é possível ler HEAD" -#: git-rebase.sh:378 +#: git-rebase.sh:377 msgid "" "You must edit all merge conflicts and then\n" "mark them as resolved using git add" @@ -12261,12 +12868,7 @@ msgstr "" "Deve editar todos os conflitos da integração\n" "e marcá-los como resolvidos usando git add" -#: git-rebase.sh:396 -#, sh-format -msgid "Could not move back to $head_name" -msgstr "Não foi possível voltar para $head_name" - -#: git-rebase.sh:415 +#: git-rebase.sh:414 #, sh-format msgid "" "It seems that there is already a $state_dir_base directory, and\n" @@ -12287,98 +12889,98 @@ msgstr "" "e execute o comando de novo. A execução foi interrompida no caso de\n" "ainda ter algo importante nesse sítio." -#: git-rebase.sh:466 +#: git-rebase.sh:465 #, sh-format msgid "invalid upstream $upstream_name" msgstr "$upstream_name a montante inválido" -#: git-rebase.sh:490 +#: git-rebase.sh:489 #, sh-format msgid "$onto_name: there are more than one merge bases" msgstr "$onto_name: há mais do que uma base de integração" -#: git-rebase.sh:493 git-rebase.sh:497 +#: git-rebase.sh:492 git-rebase.sh:496 #, sh-format msgid "$onto_name: there is no merge base" msgstr "$onto_name: não há nenhuma base de integração" -#: git-rebase.sh:502 +#: git-rebase.sh:501 #, sh-format msgid "Does not point to a valid commit: $onto_name" msgstr "Não aponta para um commit válido: $onto_name" -#: git-rebase.sh:525 +#: git-rebase.sh:524 #, sh-format msgid "fatal: no such branch: $branch_name" msgstr "fatal: ramo inexistente: $branch_name" -#: git-rebase.sh:558 +#: git-rebase.sh:557 msgid "Cannot autostash" msgstr "Não é possível empilhar automaticamente (autostash)" -#: git-rebase.sh:563 +#: git-rebase.sh:562 #, sh-format msgid "Created autostash: $stash_abbrev" msgstr "Pilha automática (autostash) criada: $stash_abbrev" -#: git-rebase.sh:567 +#: git-rebase.sh:566 msgid "Please commit or stash them." -msgstr "Submeta ou empilhe-as (stash)." +msgstr "Submeta ou esconda-as." -#: git-rebase.sh:587 +#: git-rebase.sh:586 #, sh-format msgid "Current branch $branch_name is up to date." msgstr "O ramo atual $branch_name está atualizado." -#: git-rebase.sh:591 +#: git-rebase.sh:590 #, sh-format msgid "Current branch $branch_name is up to date, rebase forced." msgstr "O ramo atual $branch_name está atualizado, rebase forçado." -#: git-rebase.sh:602 +#: git-rebase.sh:601 #, sh-format msgid "Changes from $mb to $onto:" msgstr "Alterações de $mb para $onto:" -#: git-rebase.sh:611 +#: git-rebase.sh:610 msgid "First, rewinding head to replay your work on top of it..." msgstr "" "Primeiro, a recuar a cabeça para replicar as suas alterações no topo desta..." -#: git-rebase.sh:621 +#: git-rebase.sh:620 #, sh-format msgid "Fast-forwarded $branch_name to $onto_name." msgstr "$branch_name avançado rapidamente para $onto_name." -#: git-stash.sh:51 +#: git-stash.sh:50 msgid "git stash clear with parameters is unimplemented" msgstr "não está implementado git stash clear com parâmetros" -#: git-stash.sh:74 +#: git-stash.sh:73 msgid "You do not have the initial commit yet" msgstr "O commit inicial ainda não existe" -#: git-stash.sh:89 +#: git-stash.sh:88 msgid "Cannot save the current index state" msgstr "Não é possível guardar o estado atual do índice" -#: git-stash.sh:124 git-stash.sh:137 +#: git-stash.sh:123 git-stash.sh:136 msgid "Cannot save the current worktree state" msgstr "Não é possível guardar o estado atual da árvore de trabalho" -#: git-stash.sh:141 +#: git-stash.sh:140 msgid "No changes selected" msgstr "Nenhuma alteração selecionada" -#: git-stash.sh:144 +#: git-stash.sh:143 msgid "Cannot remove temporary index (can't happen)" msgstr "Não é possível remover o índice temporário (não pode acontecer)" -#: git-stash.sh:157 +#: git-stash.sh:156 msgid "Cannot record working tree state" msgstr "Não é possível gravar o estado da árvore de trabalho" -#: git-stash.sh:189 +#: git-stash.sh:188 #, sh-format msgid "Cannot update $ref_stash with $w_commit" msgstr "Não é possível atualizar $ref_stash com $w_commit" @@ -12393,7 +12995,7 @@ msgstr "Não é possível atualizar $ref_stash com $w_commit" #. $ git stash save --blah-blah 2>&1 | head -n 2 #. error: unknown option for 'stash save': --blah-blah #. To provide a message, use git stash save -- '--blah-blah' -#: git-stash.sh:239 +#: git-stash.sh:238 #, sh-format msgid "" "error: unknown option for 'stash save': $option\n" @@ -12402,110 +13004,119 @@ msgstr "" "erro: opção desconhecida de 'stash save': $option\n" " Para fornecer uma mensagem, use git stash save -- '$option'" -#: git-stash.sh:260 +#: git-stash.sh:259 msgid "No local changes to save" msgstr "Não há alterações locais para guardar" -#: git-stash.sh:264 +#: git-stash.sh:263 msgid "Cannot initialize stash" msgstr "Não é possível inicializar a pilha" -#: git-stash.sh:268 +#: git-stash.sh:267 msgid "Cannot save the current status" msgstr "Não é possível guardar o estado atual" -#: git-stash.sh:286 +#: git-stash.sh:268 +#, sh-format +msgid "Saved working directory and index state $stash_msg" +msgstr "Diretório de trabalho e estado do índice $stash_msg guardados" + +#: git-stash.sh:285 msgid "Cannot remove worktree changes" msgstr "Não é possível remover as alterações da árvore de trabalho" -#: git-stash.sh:405 +#: git-stash.sh:404 #, sh-format msgid "unknown option: $opt" msgstr "opção desconhecido: $opt" -#: git-stash.sh:415 +#: git-stash.sh:414 msgid "No stash found." msgstr "Nenhuma pilha encontrada." -#: git-stash.sh:422 +#: git-stash.sh:421 #, sh-format msgid "Too many revisions specified: $REV" msgstr "Demasiadas revisões especificadas: $REV" -#: git-stash.sh:428 +#: git-stash.sh:427 #, sh-format msgid "$reference is not a valid reference" msgstr "$reference não é uma referência válida" -#: git-stash.sh:456 +#: git-stash.sh:455 #, sh-format msgid "'$args' is not a stash-like commit" msgstr "'$args' não é um commit semelhante a pilha" -#: git-stash.sh:467 +#: git-stash.sh:466 #, sh-format msgid "'$args' is not a stash reference" msgstr "'$args' não é uma referência de pilha" -#: git-stash.sh:475 +#: git-stash.sh:474 msgid "unable to refresh index" msgstr "não foi possível refrescar o índice" -#: git-stash.sh:479 +#: git-stash.sh:478 msgid "Cannot apply a stash in the middle of a merge" msgstr "Não é possível aplicar uma pilha durante uma integração" -#: git-stash.sh:487 +#: git-stash.sh:486 msgid "Conflicts in index. Try without --index." msgstr "Conflitos no índice. Tente sem --index." -#: git-stash.sh:489 +#: git-stash.sh:488 msgid "Could not save index tree" msgstr "Não foi possível guardar árvore do índice" -#: git-stash.sh:523 +#: git-stash.sh:522 msgid "Cannot unstage modified files" msgstr "Não é possível despreparar os ficheiros modificado" -#: git-stash.sh:538 +#: git-stash.sh:537 msgid "Index was not unstashed." msgstr "O índice não foi reposto." -#: git-stash.sh:561 +#: git-stash.sh:551 +msgid "The stash is kept in case you need it again." +msgstr "A pilha é guarda no caso de precisar dela de novo." + +#: git-stash.sh:560 #, sh-format msgid "Dropped ${REV} ($s)" msgstr "A descartar ${REV} ($s)" -#: git-stash.sh:562 +#: git-stash.sh:561 #, sh-format msgid "${REV}: Could not drop stash entry" msgstr "${REV}: Não foi possível descartar elemento da pilha" -#: git-stash.sh:570 +#: git-stash.sh:569 msgid "No branch name specified" msgstr "Nenhum nome de ramo especificado" -#: git-stash.sh:642 +#: git-stash.sh:641 msgid "(To restore them type \"git stash apply\")" msgstr "(Para os restaurar execute \"git stash apply\")" -#: git-submodule.sh:219 +#: git-submodule.sh:183 msgid "Relative path can only be used from the toplevel of the working tree" msgstr "" "Os caminhos relativos só podem ser usados a partir do topo da árvore de " "trabalho" -#: git-submodule.sh:229 +#: git-submodule.sh:193 #, sh-format msgid "repo URL: '$repo' must be absolute or begin with ./|../" msgstr "URL do repositório: '$repo' deve ser absoluto ou começar com ./|../" -#: git-submodule.sh:246 +#: git-submodule.sh:210 #, sh-format msgid "'$sm_path' already exists in the index" msgstr "'$sm_path' já existe no índice" -#: git-submodule.sh:250 +#: git-submodule.sh:214 #, sh-format msgid "" "The following path is ignored by one of your .gitignore files:\n" @@ -12516,101 +13127,90 @@ msgstr "" "$sm_path\n" "Use -f se pretende mesmo adicioná-lo." -#: git-submodule.sh:268 +#: git-submodule.sh:232 #, sh-format msgid "Adding existing repo at '$sm_path' to the index" msgstr "A adicionar repositório existente em '$sm_path' ao índice" -#: git-submodule.sh:270 +#: git-submodule.sh:234 #, sh-format msgid "'$sm_path' already exists and is not a valid git repo" msgstr "'$sm_path' já existe e não é uma repositório git válido" -#: git-submodule.sh:278 +#: git-submodule.sh:242 #, sh-format msgid "A git directory for '$sm_name' is found locally with remote(s):" msgstr "" "Um diretório git de '$sm_name' foi encontrado localmente com os remotos:" -#: git-submodule.sh:280 -#, sh-format -msgid "" -"If you want to reuse this local git directory instead of cloning again from" -msgstr "" -"Se deseja reutilizar este diretório git local em vez de clonar de novo de" - -#: git-submodule.sh:282 -#, sh-format -msgid "" -"use the '--force' option. If the local git directory is not the correct repo" -msgstr "" -"use a opção '--force'. Se o diretório git local não é o repositório correto" - -#: git-submodule.sh:283 +#: git-submodule.sh:244 #, sh-format msgid "" +"If you want to reuse this local git directory instead of cloning again from\n" +" $realrepo\n" +"use the '--force' option. If the local git directory is not the correct " +"repo\n" "or you are unsure what this means choose another name with the '--name' " "option." msgstr "" -"ou se não tem a certeza do que isto significa, escolha outro nome com a " -"opção '--name'." +"Se quer reutilizar este diretório git local em vez de clonar de novo de\n" +" $realrepo\n" +"use a opção '--force'. Se o diretório git local não é o repo correto\n" +"ou não tem a certeza o que isto significa escolha outro nome com a opção '--" +"name'." -#: git-submodule.sh:285 +#: git-submodule.sh:250 #, sh-format msgid "Reactivating local git directory for submodule '$sm_name'." msgstr "A reativar o diretório git local do submódulo '$sm_name'." -#: git-submodule.sh:297 +#: git-submodule.sh:262 #, sh-format msgid "Unable to checkout submodule '$sm_path'" msgstr "Não foi possível extrair o submódulo '$sm_path'" -#: git-submodule.sh:302 +#: git-submodule.sh:267 #, sh-format msgid "Failed to add submodule '$sm_path'" msgstr "Falha ao adicionar o submódulo '$sm_path'" -#: git-submodule.sh:311 +#: git-submodule.sh:276 #, sh-format msgid "Failed to register submodule '$sm_path'" msgstr "Falha ao registar o submódulo '$sm_path'" -#: git-submodule.sh:355 +#: git-submodule.sh:323 #, sh-format msgid "Entering '$displaypath'" msgstr "A entrar em '$displaypath'" -#: git-submodule.sh:375 +#: git-submodule.sh:343 #, sh-format msgid "Stopping at '$displaypath'; script returned non-zero status." msgstr "" "Interrompido em '$displaypath'; o script retornou um valor diferente de zero." -#: git-submodule.sh:448 +#: git-submodule.sh:414 #, sh-format msgid "pathspec and --all are incompatible" msgstr "especificador de caminho e --all são incompatíveis" -#: git-submodule.sh:453 +#: git-submodule.sh:419 #, sh-format msgid "Use '--all' if you really want to deinitialize all submodules" msgstr "" "Use '--all' se pretende mesmo anular a inicialização todos os submódulos" -#: git-submodule.sh:470 -#, sh-format -msgid "Submodule work tree '$displaypath' contains a .git directory" -msgstr "" -"A árvore de trabalho do submódulo '$displaypath' contém um diretório .git" - -#: git-submodule.sh:471 +#: git-submodule.sh:439 #, sh-format msgid "" +"Submodule work tree '$displaypath' contains a .git directory\n" "(use 'rm -rf' if you really want to remove it including all of its history)" msgstr "" +"A árvore de trabalho do submódulo '$displaypath' contem um diretório .git\n" "(use 'rm -rf' se pretende mesmo removê-lo, incluindo todo o seu histórico)" -#: git-submodule.sh:477 +#: git-submodule.sh:447 #, sh-format msgid "" "Submodule work tree '$displaypath' contains local modifications; use '-f' to " @@ -12619,127 +13219,145 @@ msgstr "" "A árvore de trabalho do submódulo '$displaypath' contém alterações locais; " "use '-f' para as descartar" -#: git-submodule.sh:480 +#: git-submodule.sh:450 #, sh-format msgid "Cleared directory '$displaypath'" msgstr "Diretório '$displaypath' limpo" -#: git-submodule.sh:481 +#: git-submodule.sh:451 #, sh-format msgid "Could not remove submodule work tree '$displaypath'" msgstr "" "Não foi possível remover a árvore de trabalho do submódulo '$displaypath'" -#: git-submodule.sh:484 +#: git-submodule.sh:454 #, sh-format msgid "Could not create empty submodule directory '$displaypath'" msgstr "Não foi possível criar o diretório vazio do submódulo '$displaypath'" -#: git-submodule.sh:493 +#: git-submodule.sh:463 #, sh-format msgid "Submodule '$name' ($url) unregistered for path '$displaypath'" msgstr "" "O registo do submódulo '$name' ($url) foi removido do caminho '$displaypath'" -#: git-submodule.sh:635 +#: git-submodule.sh:612 #, sh-format msgid "Unable to find current revision in submodule path '$displaypath'" msgstr "" "Não foi possível encontrar a revisão atual no caminho de submódulo " "'$displaypath'" -#: git-submodule.sh:644 +#: git-submodule.sh:622 #, sh-format msgid "Unable to fetch in submodule path '$sm_path'" msgstr "Não foi possível obter no caminho de submódulo '$sm_path'" -#: git-submodule.sh:667 +#: git-submodule.sh:627 +#, sh-format +msgid "" +"Unable to find current ${remote_name}/${branch} revision in submodule path " +"'$sm_path'" +msgstr "" +"Não foi possível encontrar a revisão atual ${remote_name}/${branch} no " +"caminho de submódulo '$sm_path'" + +#: git-submodule.sh:645 #, sh-format msgid "Unable to fetch in submodule path '$displaypath'" msgstr "Não é possível obter no caminho de submódulo '$displaypath'" -#: git-submodule.sh:680 +#: git-submodule.sh:651 +#, sh-format +msgid "" +"Fetched in submodule path '$displaypath', but it did not contain $sha1. " +"Direct fetching of that commit failed." +msgstr "" +"Obteve-se no caminho de submódulo '$displaypath', mas não continha $sha1. " +"Falha ao obter aquele commit diretamente." + +#: git-submodule.sh:658 #, sh-format msgid "Unable to checkout '$sha1' in submodule path '$displaypath'" msgstr "Não é possível extrair '$sha1' no caminho de submódulo '$displaypath'" -#: git-submodule.sh:681 +#: git-submodule.sh:659 #, sh-format msgid "Submodule path '$displaypath': checked out '$sha1'" msgstr "Caminho de submódulo '$displaypath': '$sha1' extraído" -#: git-submodule.sh:685 +#: git-submodule.sh:663 #, sh-format msgid "Unable to rebase '$sha1' in submodule path '$displaypath'" msgstr "" "Não foi possível efetuar rebase de '$sha1' no caminho de submódulo " "'$displaypath'" -#: git-submodule.sh:686 +#: git-submodule.sh:664 #, sh-format msgid "Submodule path '$displaypath': rebased into '$sha1'" msgstr "Caminho de submódulo '$displaypath': rebase concluído em '$sha1'" -#: git-submodule.sh:691 +#: git-submodule.sh:669 #, sh-format msgid "Unable to merge '$sha1' in submodule path '$displaypath'" msgstr "Não é possível integrar '$sha1' no caminho de submódulo '$displaypath'" -#: git-submodule.sh:692 +#: git-submodule.sh:670 #, sh-format msgid "Submodule path '$displaypath': merged in '$sha1'" msgstr "Caminho de submódulo '$displaypath': integrado em '$sha1'" -#: git-submodule.sh:697 +#: git-submodule.sh:675 #, sh-format msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'" msgstr "" "Falha ao executar '$command $sha1' no caminho de submódulo '$displaypath'" -#: git-submodule.sh:698 +#: git-submodule.sh:676 #, sh-format msgid "Submodule path '$displaypath': '$command $sha1'" msgstr "Caminho de submódulo '$displaypath': '$command $sha1'" -#: git-submodule.sh:729 +#: git-submodule.sh:707 #, sh-format msgid "Failed to recurse into submodule path '$displaypath'" msgstr "Falha ao percorrer o caminho de submódulo '$displaypath'" -#: git-submodule.sh:837 +#: git-submodule.sh:815 msgid "The --cached option cannot be used with the --files option" msgstr "A opção --cached não pode ser usada com a opção --files" -#: git-submodule.sh:889 +#: git-submodule.sh:867 #, sh-format msgid "unexpected mode $mod_dst" msgstr "modo inesperado $mod_dst" -#: git-submodule.sh:909 +#: git-submodule.sh:887 #, sh-format msgid " Warn: $display_name doesn't contain commit $sha1_src" msgstr " Aviso: $display_name não contém o commit $sha1_src" -#: git-submodule.sh:912 +#: git-submodule.sh:890 #, sh-format msgid " Warn: $display_name doesn't contain commit $sha1_dst" msgstr " Warn: $display_name não contém o commit $sha1_dst" -#: git-submodule.sh:915 +#: git-submodule.sh:893 #, sh-format msgid " Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst" msgstr " Warn: $display_name contém os commits $sha1_src e $sha1_dst" -#: git-submodule.sh:940 +#: git-submodule.sh:918 msgid "blob" msgstr "blob" -#: git-submodule.sh:1059 +#: git-submodule.sh:1040 #, sh-format msgid "Failed to recurse into submodule path '$sm_path'" msgstr "Falha ao percorrer recursivamente o caminho de submódulo '$sm_path'" -#: git-submodule.sh:1123 +#: git-submodule.sh:1107 #, sh-format msgid "Synchronizing submodule url for '$displaypath'" msgstr "A sincronizar o URL do submódulo '$displaypath'" @@ -12749,6 +13367,692 @@ msgstr "A sincronizar o URL do submódulo '$displaypath'" msgid "See git-${cmd}(1) for details." msgstr "Consulte git-${cmd}(1) para obter mais detalhes." +#: git-rebase--interactive.sh:131 +#, sh-format +msgid "Rebasing ($new_count/$total)" +msgstr "A rebasear ($new_count/$total)" + +#: git-rebase--interactive.sh:147 +msgid "" +"\n" +"Commands:\n" +" p, pick = use commit\n" +" r, reword = use commit, but edit the commit message\n" +" e, edit = use commit, but stop for amending\n" +" s, squash = use commit, but meld into previous commit\n" +" f, fixup = like \"squash\", but discard this commit's log message\n" +" x, exec = run command (the rest of the line) using shell\n" +" d, drop = remove commit\n" +"\n" +"These lines can be re-ordered; they are executed from top to bottom.\n" +msgstr "" +"\n" +"Comandos:\n" +" p, pick = usar commit\n" +" r, reword = usar commit, mas editar a mensagem de commit\n" +" e, edit = usar commit, mas parar para emendar\n" +" s, squash = usar commit, mas fundir com o commit anterior\n" +" f, fixup = como \"squash\", mas descartar a mensagem deste commit\n" +" x, exec = executar o comando (o resto da linha) usando a shell\n" +" d, drop = remover commit\n" +"\n" +"Estas linhas pode ser reordenadas; são executadas de cima para baixo.\n" + +#: git-rebase--interactive.sh:162 +msgid "" +"\n" +"Do not remove any line. Use 'drop' explicitly to remove a commit.\n" +msgstr "" +"\n" +"Não remover nenhum linha. Use 'drop' explicitamente para remover um commit.\n" + +#: git-rebase--interactive.sh:166 +msgid "" +"\n" +"If you remove a line here THAT COMMIT WILL BE LOST.\n" +msgstr "" +"\n" +"Se remover uma linha daqui AQUELE COMMIT SERÁ PERDIDO.\n" + +#: git-rebase--interactive.sh:202 +#, sh-format +msgid "" +"You can amend the commit now, with\n" +"\n" +"\tgit commit --amend $gpg_sign_opt_quoted\n" +"\n" +"Once you are satisfied with your changes, run\n" +"\n" +"\tgit rebase --continue" +msgstr "" +"Pode emendar o commit agora, com\n" +"\n" +"\tgit commit --amend $gpg_sign_opt_quoted\n" +"\n" +"Assim que estiver satisfeito com as alterações, execute\n" +"\n" +"\tgit rebase --continue" + +#: git-rebase--interactive.sh:227 +#, sh-format +msgid "$sha1: not a commit that can be picked" +msgstr "$sha1: não é um commit que se possa apanhar" + +#: git-rebase--interactive.sh:266 +#, sh-format +msgid "Invalid commit name: $sha1" +msgstr "Nome de commit inválido: $sha1" + +#: git-rebase--interactive.sh:308 +msgid "Cannot write current commit's replacement sha1" +msgstr "Não é possível escrever o sha1 substituto do commit" + +#: git-rebase--interactive.sh:360 +#, sh-format +msgid "Fast-forward to $sha1" +msgstr "Avanço-rápido para $sha1" + +#: git-rebase--interactive.sh:362 +#, sh-format +msgid "Cannot fast-forward to $sha1" +msgstr "Não é possível avançar rapidamente para $sha1" + +#: git-rebase--interactive.sh:371 +#, sh-format +msgid "Cannot move HEAD to $first_parent" +msgstr "Não é possível mover HEAD para $first_parent" + +#: git-rebase--interactive.sh:376 +#, sh-format +msgid "Refusing to squash a merge: $sha1" +msgstr "Recusa-se a esmagar uma integração: $sha1" + +#: git-rebase--interactive.sh:390 +#, sh-format +msgid "Error redoing merge $sha1" +msgstr "Erro ao refazer integração $sha1" + +#: git-rebase--interactive.sh:398 +#, sh-format +msgid "Could not pick $sha1" +msgstr "Não foi possível apanhar $sha1" + +#: git-rebase--interactive.sh:408 git-rebase--interactive.sh:474 +msgid "This is the 1st commit message:" +msgstr "Esta é a 1ª mensagem de commit:" + +#: git-rebase--interactive.sh:409 +msgid "This is the 2nd commit message:" +msgstr "Esta é a 2ª mensagem de commit:" + +#: git-rebase--interactive.sh:410 +msgid "This is the 3rd commit message:" +msgstr "Esta é a 3ª mensagem de commit:" + +#: git-rebase--interactive.sh:411 +msgid "This is the 4th commit message:" +msgstr "Esta é a 4ª mensagem de commit:" + +#: git-rebase--interactive.sh:412 +msgid "This is the 5th commit message:" +msgstr "Esta é a 5ª mensagem de commit:" + +#: git-rebase--interactive.sh:413 +msgid "This is the 6th commit message:" +msgstr "Esta é a 6ª mensagem de commit:" + +#: git-rebase--interactive.sh:414 +msgid "This is the 7th commit message:" +msgstr "Esta é a 7ª mensagem de commit:" + +#: git-rebase--interactive.sh:415 +msgid "This is the 8th commit message:" +msgstr "Esta é a 8ª mensagem de commit:" + +#: git-rebase--interactive.sh:416 +msgid "This is the 9th commit message:" +msgstr "Esta é a 9ª mensagem de commit:" + +#: git-rebase--interactive.sh:417 +msgid "This is the 10th commit message:" +msgstr "Esta é a 10ª mensagem de commit:" + +#. TRANSLATORS: if the language you are translating into +#. doesn't allow you to compose a sentence in this fashion, +#. consider translating as if this and the following few strings +#. were "This is the commit message ${n}:" +#: git-rebase--interactive.sh:422 +#, sh-format +msgid "This is the ${n}th commit message:" +msgstr "Esta é a ${n}ª mensagem de commit:" + +#: git-rebase--interactive.sh:423 +#, sh-format +msgid "This is the ${n}st commit message:" +msgstr "Está é a ${n}ª mensagem de commit:" + +#: git-rebase--interactive.sh:424 +#, sh-format +msgid "This is the ${n}nd commit message:" +msgstr "Esta é a ${n}ª mensagem de commit:" + +#: git-rebase--interactive.sh:425 +#, sh-format +msgid "This is the ${n}rd commit message:" +msgstr "Esta é a ${n}ª mensagem de commit:" + +#: git-rebase--interactive.sh:426 +#, sh-format +msgid "This is the commit message ${n}:" +msgstr "Esta é a mensagem de commit ${n}:" + +#: git-rebase--interactive.sh:432 +msgid "The 1st commit message will be skipped:" +msgstr "A 1ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:433 +msgid "The 2nd commit message will be skipped:" +msgstr "A 2ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:434 +msgid "The 3rd commit message will be skipped:" +msgstr "A 3ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:435 +msgid "The 4th commit message will be skipped:" +msgstr "A 4ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:436 +msgid "The 5th commit message will be skipped:" +msgstr "A 5ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:437 +msgid "The 6th commit message will be skipped:" +msgstr "A 6ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:438 +msgid "The 7th commit message will be skipped:" +msgstr "A 7ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:439 +msgid "The 8th commit message will be skipped:" +msgstr "A 8ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:440 +msgid "The 9th commit message will be skipped:" +msgstr "A 9ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:441 +msgid "The 10th commit message will be skipped:" +msgstr "A 10ª mensagem de commit será ignorada:" + +#. TRANSLATORS: if the language you are translating into +#. doesn't allow you to compose a sentence in this fashion, +#. consider translating as if this and the following few strings +#. were "The commit message ${n} will be skipped:" +#: git-rebase--interactive.sh:446 +#, sh-format +msgid "The ${n}th commit message will be skipped:" +msgstr "A ${n}ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:447 +#, sh-format +msgid "The ${n}st commit message will be skipped:" +msgstr "A ${n}ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:448 +#, sh-format +msgid "The ${n}nd commit message will be skipped:" +msgstr "A ${n}ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:449 +#, sh-format +msgid "The ${n}rd commit message will be skipped:" +msgstr "A ${n}ª mensagem de commit será ignorada:" + +#: git-rebase--interactive.sh:450 +#, sh-format +msgid "The commit message ${n} will be skipped:" +msgstr "A mensagem de commit ${n} será ignorada:" + +#: git-rebase--interactive.sh:462 +#, sh-format +msgid "This is a combination of $count commit." +msgid_plural "This is a combination of $count commits." +msgstr[0] "Isto é a combinação de $count commit." +msgstr[1] "Isto é a combinação de $count commits." + +#: git-rebase--interactive.sh:470 +#, sh-format +msgid "Cannot write $fixup_msg" +msgstr "Não é possível escrever $fixup_msg" + +#: git-rebase--interactive.sh:473 +msgid "This is a combination of 2 commits." +msgstr "Isto é a combinação de 2 commits." + +#: git-rebase--interactive.sh:514 git-rebase--interactive.sh:557 +#: git-rebase--interactive.sh:560 +#, sh-format +msgid "Could not apply $sha1... $rest" +msgstr "Não foi possível aplicar $sha1... $rest" + +#: git-rebase--interactive.sh:588 +#, sh-format +msgid "" +"Could not amend commit after successfully picking $sha1... $rest\n" +"This is most likely due to an empty commit message, or the pre-commit hook\n" +"failed. If the pre-commit hook failed, you may need to resolve the issue " +"before\n" +"you are able to reword the commit." +msgstr "" +"Não foi possível emendar o commit depois de apanhar com sucesso $sha1... " +"$rest\n" +"Deve-se provavelmente a uma mensagem de commit vazia ou o pre-commit hook " +"falhou.\n" +"Se o pre-commit hook falhou, pode precisar de resolver o problema ante de " +"poder\n" +"reformular a mensagem do commit." + +#: git-rebase--interactive.sh:603 +#, sh-format +msgid "Stopped at $sha1_abbrev... $rest" +msgstr "Parou em $sha1_abbrev... $rest" + +#: git-rebase--interactive.sh:618 +#, sh-format +msgid "Cannot '$squash_style' without a previous commit" +msgstr "Não é possível efetuar '$squash_style' sem um commit anterior" + +#: git-rebase--interactive.sh:660 +#, sh-format +msgid "Executing: $rest" +msgstr "A executar: $rest" + +#: git-rebase--interactive.sh:668 +#, sh-format +msgid "Execution failed: $rest" +msgstr "Falha ao executar: $rest" + +#: git-rebase--interactive.sh:670 +msgid "and made changes to the index and/or the working tree" +msgstr "e fez alterações ao índice e/ou à árvore de trabalho" + +#: git-rebase--interactive.sh:672 +msgid "" +"You can fix the problem, and then run\n" +"\n" +"\tgit rebase --continue" +msgstr "" +"Pode corrigir o problema e executar\n" +"\n" +"\tgit rebase --continue" + +#. TRANSLATORS: after these lines is a command to be issued by the user +#: git-rebase--interactive.sh:685 +#, sh-format +msgid "" +"Execution succeeded: $rest\n" +"but left changes to the index and/or the working tree\n" +"Commit or stash your changes, and then run\n" +"\n" +"\tgit rebase --continue" +msgstr "" +"Executado com sucesso: $rest\n" +"mas deixou alterações no índice e/ou na árvore de trabalho\n" +"Submeta ou esconda as alterações e execute\n" +"\n" +"\tgit rebase --continue" + +#: git-rebase--interactive.sh:696 +#, sh-format +msgid "Unknown command: $command $sha1 $rest" +msgstr "Comando desconhecido: $command $sha1 $rest" + +#: git-rebase--interactive.sh:697 +msgid "Please fix this using 'git rebase --edit-todo'." +msgstr "Corrija-o usando 'git rebase --edit-todo'." + +#: git-rebase--interactive.sh:732 +#, sh-format +msgid "Successfully rebased and updated $head_name." +msgstr "$head_name rebaseado e atualizado com sucesso." + +#: git-rebase--interactive.sh:779 +msgid "Could not skip unnecessary pick commands" +msgstr "Não foi possível saltar comandos pick desnecessários" + +#: git-rebase--interactive.sh:937 +#, sh-format +msgid "" +"Warning: the SHA-1 is missing or isn't a commit in the following line:\n" +" - $line" +msgstr "" +"Aviso: falta o SHA-1 ou a seguinte linha não tem um commit:\n" +" - $line" + +#: git-rebase--interactive.sh:970 +#, sh-format +msgid "" +"Warning: the command isn't recognized in the following line:\n" +" - $line" +msgstr "" +"Aviso: o comando não é reconhecido na seguinte linha:\n" +" - $line" + +#: git-rebase--interactive.sh:1009 +msgid "could not detach HEAD" +msgstr "não foi possível destacar HEAD" + +#: git-rebase--interactive.sh:1047 +msgid "" +"Warning: some commits may have been dropped accidentally.\n" +"Dropped commits (newer to older):" +msgstr "" +"Aviso: alguns commits podem ter sido descartados acidentalmente.\n" +"Commits descartados (mais novo para o mais velho):" + +#: git-rebase--interactive.sh:1055 +msgid "" +"To avoid this message, use \"drop\" to explicitly remove a commit.\n" +"\n" +"Use 'git config rebase.missingCommitsCheck' to change the level of " +"warnings.\n" +"The possible behaviours are: ignore, warn, error." +msgstr "" +"Para evitar esta mensagem, use \"drop\" para remover um commit explicitamente.\n" +"\n" +"Use 'git config rebase.missingCommitsCheck' para mudar o nível de avisos.\n" +"O comportamentos possíveis são: ignore, warn, error." + +#: git-rebase--interactive.sh:1066 +#, sh-format +msgid "" +"Unrecognized setting $check_level for option rebase.missingCommitsCheck. " +"Ignoring." +msgstr "" +"Definição $check_level desconhecida da opção rebase.missingCommitsCheck. " +"Ignorado." + +#: git-rebase--interactive.sh:1083 +msgid "You can fix this with 'git rebase --edit-todo'." +msgstr "Pode corrí-lo com 'git rebase --edit-todo'." + +#: git-rebase--interactive.sh:1084 +msgid "Or you can abort the rebase with 'git rebase --abort'." +msgstr "Ou pode abortar o rebase com 'git rebase --abort'." + +#: git-rebase--interactive.sh:1108 +msgid "Could not remove CHERRY_PICK_HEAD" +msgstr "Não foi possível remover CHERRY_PICK_HEAD" + +#: git-rebase--interactive.sh:1113 +#, sh-format +msgid "" +"You have staged changes in your working tree.\n" +"If these changes are meant to be\n" +"squashed into the previous commit, run:\n" +"\n" +" git commit --amend $gpg_sign_opt_quoted\n" +"\n" +"If they are meant to go into a new commit, run:\n" +"\n" +" git commit $gpg_sign_opt_quoted\n" +"\n" +"In both case, once you're done, continue with:\n" +"\n" +" git rebase --continue\n" +msgstr "" +"Tem alterações preparadas na árvore de trabalho.\n" +"Se tenciona esmagar estas alterações\n" +"no commit anterior, execute:\n" +"\n" +" git commit --amend $gpg_sign_opt_quoted\n" +"\n" +"Se tenciona pô-las num novo commit, execute:\n" +"\n" +" git commit $gpg_sign_opt_quoted\n" +"\n" +"Em ambos os casos, quando estiver pronto, continue com:\n" +"\n" +" git rebase --continue\n" + +#: git-rebase--interactive.sh:1130 +msgid "Error trying to find the author identity to amend commit" +msgstr "Erro ao tentar encontrar a identidade do autor para emendar o commit" + +#: git-rebase--interactive.sh:1135 +msgid "" +"You have uncommitted changes in your working tree. Please commit them\n" +"first and then run 'git rebase --continue' again." +msgstr "" +"Tem alterações por submeter na árvore de trabalho. Submeta-as primeiro\n" +"e execute 'git rebase --continue' de novo." + +#: git-rebase--interactive.sh:1140 git-rebase--interactive.sh:1144 +msgid "Could not commit staged changes." +msgstr "Não foi possível submeter as alterações preparadas." + +#: git-rebase--interactive.sh:1168 +msgid "" +"\n" +"You are editing the todo file of an ongoing interactive rebase.\n" +"To continue rebase after editing, run:\n" +" git rebase --continue\n" +"\n" +msgstr "" +"\n" +"Está a editar o ficheiro de tarefa de um rebase interativo em curso.\n" +"Para continuar o rebase depois de editar, execute:\n" +" git rebase --continue\n" +"\n" + +#: git-rebase--interactive.sh:1176 git-rebase--interactive.sh:1337 +msgid "Could not execute editor" +msgstr "Não foi possível executar o editor" + +#: git-rebase--interactive.sh:1184 +msgid "You need to set your committer info first" +msgstr "Primeiro tem de definir a sua informação de committer" + +#: git-rebase--interactive.sh:1192 +#, sh-format +msgid "Could not checkout $switch_to" +msgstr "Não foi possível extrair $switch_to" + +#: git-rebase--interactive.sh:1197 +msgid "No HEAD?" +msgstr "Sem HEAD?" + +#: git-rebase--interactive.sh:1198 +#, sh-format +msgid "Could not create temporary $state_dir" +msgstr "Não foi possível criar $state_dir temporário" + +#: git-rebase--interactive.sh:1200 +msgid "Could not mark as interactive" +msgstr "Não foi possível marcar como interativo" + +#: git-rebase--interactive.sh:1210 git-rebase--interactive.sh:1215 +msgid "Could not init rewritten commits" +msgstr "Não foi possível inicializar commits reescritos" + +#: git-rebase--interactive.sh:1315 +#, sh-format +msgid "Rebase $shortrevisions onto $shortonto ($todocount command)" +msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)" +msgstr[0] "Rebase $shortrevisions sobre $shortonto ($todocount comando)" +msgstr[1] "Rebase $shortrevisions sobre $shortonto ($todocount comandos)" + +#: git-rebase--interactive.sh:1320 +msgid "" +"\n" +"However, if you remove everything, the rebase will be aborted.\n" +"\n" +msgstr "" +"\n" +"No entanto, se remover tudo, o rebase será abortado.\n" +"\n" + +#: git-rebase--interactive.sh:1327 +msgid "Note that empty commits are commented out" +msgstr "Note que commits vazios são comentados" + +#: git-sh-setup.sh:89 git-sh-setup.sh:94 +#, sh-format +msgid "usage: $dashless $USAGE" +msgstr "utilização: $dashless $USAGE" + +#: git-sh-setup.sh:190 +#, sh-format +msgid "Cannot chdir to $cdup, the toplevel of the working tree" +msgstr "" +"Não é possível mudar de diretório para $cdup, o topo da árvore de trabalho" + +#: git-sh-setup.sh:199 git-sh-setup.sh:206 +#, sh-format +msgid "fatal: $program_name cannot be used without a working tree." +msgstr "fatal: $program_name não pode ser usado sem uma árvore de trabalho." + +#: git-sh-setup.sh:220 +msgid "Cannot rebase: You have unstaged changes." +msgstr "Não é possível rebasear: tem alterações não preparadas." + +#: git-sh-setup.sh:223 +msgid "Cannot rewrite branches: You have unstaged changes." +msgstr "Não é possível reescrever ramos: tem alterações não preparadas." + +#: git-sh-setup.sh:229 +#, sh-format +msgid "Cannot $action: You have unstaged changes." +msgstr "Não é possível efetuar $action: tem alterações não preparadas." + +#: git-sh-setup.sh:242 +msgid "Cannot rebase: Your index contains uncommitted changes." +msgstr "Não é possível rebasear: o índice contém alterações não submetidas." + +#: git-sh-setup.sh:248 +#, sh-format +msgid "Cannot $action: Your index contains uncommitted changes." +msgstr "" +"Não é possível efetuar $action: o índice contém alterações não submetidas." + +#: git-sh-setup.sh:372 +msgid "You need to run this command from the toplevel of the working tree." +msgstr "" +"Precisa de executar este comando a partir do topo da árvore de trabalho." + +#: git-sh-setup.sh:377 +msgid "Unable to determine absolute path of git directory" +msgstr "Não é possível determinar o caminho absoluto do diretório git" + +#~ msgid "could not run gpg." +#~ msgstr "não foi possível executar gpg." + +#~ msgid "gpg did not accept the data" +#~ msgstr "gpg não aceitou os dados" + +#~ msgid "unsupported object type in the tree" +#~ msgstr "tipo de objeto sem suporte encontrado na árvore" + +#~ msgid "Fatal merge failure, shouldn't happen." +#~ msgstr "Falha de integração fatal, não devia acontecer." + +#~ msgid "Unprocessed path??? %s" +#~ msgstr "Caminho não processado??? %s" + +#~ msgid "Error wrapping up %s" +#~ msgstr "Erro ao rematar %s." + +#~ msgid "Cannot %s during a %s" +#~ msgstr "Não foi possível efetuar %s durante %s" + +#~ msgid "Can't cherry-pick into empty head" +#~ msgstr "Não é possível efetuar cherry-pick numa cabeça vazia" + +#~ msgid "could not open %s for writing" +#~ msgstr "não foi possível abrir %s para escrita" + +#~ msgid "read of %s failed" +#~ msgstr "falha ao ler %s" + +#~ msgid "could not write branch description template" +#~ msgstr "não foi possível escrever o modelo da descrição do ramo" + +#~ msgid "corrupt index file" +#~ msgstr "ficheiro de índice corrompido" + +#~ msgid "detach the HEAD at named commit" +#~ msgstr "destacar HEAD no commit indicado" + +#~ msgid "Checking connectivity... " +#~ msgstr "A verificar a conectividade... " + +#~ msgid " (unable to update local ref)" +#~ msgstr " (não é possível atualizar a referência local)" + +#~ msgid "Reinitialized existing" +#~ msgstr "existente reinicializado" + +#~ msgid "Initialized empty" +#~ msgstr "vazio inicializado" + +#~ msgid " shared" +#~ msgstr " partilhado" + +#~ msgid "Verify that the named commit has a valid GPG signature" +#~ msgstr "verificar se o commit tem uma assinatura GPG válida" + +#~ msgid "Could not write to '%s'" +#~ msgstr "Não foi possível escrever em '%s'" + +#~ msgid "Writing SQUASH_MSG" +#~ msgstr "A escrever SQUASH_MSG" + +#~ msgid "Finishing SQUASH_MSG" +#~ msgstr "A concluir SQUASH_MSG" + +#~ msgid " and with remote" +#~ msgstr " e com o remoto" + +#~ msgid "removing '%s' failed" +#~ msgstr "falha ao remover '%s'" + +#~ msgid "program error" +#~ msgstr "erro do programa" + +#~ msgid "Please call 'bisect_state' with at least one argument." +#~ msgstr "Invoque 'bisect_state' com pelo menos um argumento." + +#~ msgid "" +#~ "If you want to reuse this local git directory instead of cloning again " +#~ "from" +#~ msgstr "" +#~ "Se deseja reutilizar este diretório git local em vez de clonar de novo de" + +#~ msgid "" +#~ "use the '--force' option. If the local git directory is not the correct " +#~ "repo" +#~ msgstr "" +#~ "use a opção '--force'. Se o diretório git local não é o repositório correto" + +#~ msgid "" +#~ "or you are unsure what this means choose another name with the '--name' " +#~ "option." +#~ msgstr "" +#~ "ou se não tem a certeza do que isto significa, escolha outro nome com a " +#~ "opção '--name'." + +#~ msgid "Submodule work tree '$displaypath' contains a .git directory" +#~ msgstr "" +#~ "A árvore de trabalho do submódulo '$displaypath' contém um diretório .git" + +#~ msgid "" +#~ "(use 'rm -rf' if you really want to remove it including all of its " +#~ "history)" +#~ msgstr "" +#~ "(use 'rm -rf' se pretende mesmo removê-lo, incluindo todo o seu histórico)" + #~ msgid "'%s': %s" #~ msgstr "'%s': %s" @@ -12836,8 +14140,7 @@ msgstr "Consulte git-${cmd}(1) para obter mais detalhes." #~ "Quando push.default está definido como 'matching', o Git publica\n" #~ "os ramos locais nos ramos remotos que já existam com o mesmo nome.\n" #~ "\n" -#~ "Desde a versão 2.0, o Git assume o comportamento mais conservativo 'simple'," -#~ "\n" +#~ "Desde a versão 2.0, o Git assume o comportamento mais conservativo 'simple',\n" #~ "publicando só o ramo atual no ramo remoto correspondente, que é usado\n" #~ "para atualizar o ramo atual com 'git pull'.\n" #~ "Consulte 'git help config' e procure por 'push.default' para mais " diff --git a/run-command.c b/run-command.c index 33bc63a1de..5a4dbb66d7 100644 --- a/run-command.c +++ b/run-command.c @@ -824,10 +824,7 @@ const char *find_hook(const char *name) static struct strbuf path = STRBUF_INIT; strbuf_reset(&path); - if (git_hooks_path) - strbuf_addf(&path, "%s/%s", git_hooks_path, name); - else - strbuf_git_path(&path, "hooks/%s", name); + strbuf_git_path(&path, "hooks/%s", name); if (access(path.buf, X_OK) < 0) return NULL; return path.buf; diff --git a/sequencer.c b/sequencer.c index 2e9c7d0f03..3804fa931d 100644 --- a/sequencer.c +++ b/sequencer.c @@ -702,7 +702,7 @@ static struct commit *parse_insn_line(char *bol, char *eol, struct replay_opts * if (action != opts->action) { if (action == REPLAY_REVERT) error((opts->action == REPLAY_REVERT) - ? _("Cannot revert during a another revert.") + ? _("Cannot revert during another revert.") : _("Cannot revert during a cherry-pick.")); else error((opts->action == REPLAY_REVERT) diff --git a/t/Makefile b/t/Makefile index 18e2b28b26..d613935f14 100644 --- a/t/Makefile +++ b/t/Makefile @@ -52,7 +52,8 @@ clean-except-prove-cache: clean: clean-except-prove-cache $(RM) .prove -test-lint: test-lint-duplicates test-lint-executable test-lint-shell-syntax +test-lint: test-lint-duplicates test-lint-executable test-lint-shell-syntax \ + test-lint-filenames test-lint-duplicates: @dups=`echo $(T) | tr ' ' '\n' | sed 's/-.*//' | sort | uniq -d` && \ @@ -67,6 +68,14 @@ test-lint-executable: test-lint-shell-syntax: @'$(PERL_PATH_SQ)' check-non-portable-shell.pl $(T) $(THELPERS) +test-lint-filenames: + @# We do *not* pass a glob to ls-files but use grep instead, to catch + @# non-ASCII characters (which are quoted within double-quotes) + @bad="$$(git -c core.quotepath=true ls-files 2>/dev/null | \ + grep '["*:<>?\\|]')"; \ + test -z "$$bad" || { \ + echo >&2 "non-portable file name(s): $$bad"; exit 1; } + aggregate-results-and-cleanup: $(T) $(MAKE) aggregate-results $(MAKE) clean diff --git a/t/t0027-auto-crlf.sh b/t/t0027-auto-crlf.sh index 2860d2d08b..90db54c9f9 100755 --- a/t/t0027-auto-crlf.sh +++ b/t/t0027-auto-crlf.sh @@ -119,8 +119,7 @@ commit_chk_wrnNNO () { fname=${pfx}_$f.txt && cp $f $fname && printf Z >>"$fname" && - git -c core.autocrlf=$crlf add $fname 2>/dev/null && - git -c core.autocrlf=$crlf commit -m "commit_$fname" $fname >"${pfx}_$f.err" 2>&1 + git -c core.autocrlf=$crlf add $fname 2>"${pfx}_$f.err" done test_expect_success "commit NNO files crlf=$crlf attr=$attr LF" ' @@ -417,7 +416,8 @@ commit_chk_wrnNNO "text" "" false "$WILC" "$WICL" "$WAMIX" "$WILC commit_chk_wrnNNO "text" "" true LF_CRLF "" LF_CRLF LF_CRLF "" commit_chk_wrnNNO "text" "" input "" CRLF_LF CRLF_LF "" CRLF_LF -test_expect_success 'create files cleanup' ' +test_expect_success 'commit NNO and cleanup' ' + git commit -m "commit files on top of NNO" && rm -f *.txt && git -c core.autocrlf=false reset --hard ' diff --git a/t/t1350-config-hooks-path.sh b/t/t1350-config-hooks-path.sh index 5e3fb3a6af..f1f9aee9f5 100755 --- a/t/t1350-config-hooks-path.sh +++ b/t/t1350-config-hooks-path.sh @@ -34,4 +34,10 @@ test_expect_success 'Check that various forms of specifying core.hooksPath work' test_cmp expect actual ' +test_expect_success 'git rev-parse --git-path hooks' ' + git config core.hooksPath .git/custom-hooks && + git rev-parse --git-path hooks/abc >actual && + test .git/custom-hooks/abc = "$(cat actual)" +' + test_done diff --git a/t/t1410-reflog.sh b/t/t1410-reflog.sh index dd2be049ec..553e26d9ce 100755 --- a/t/t1410-reflog.sh +++ b/t/t1410-reflog.sh @@ -359,7 +359,6 @@ test_expect_success 'continue walking past root commits' ' HEAD@{3} commit (initial): initial EOF test_commit initial && - git reflog && git checkout --orphan orphan1 && test_commit orphan1-1 && test_commit orphan1-2 && diff --git a/t/t2020-checkout-detach.sh b/t/t2020-checkout-detach.sh index 5d68729d7a..fbb4ee9bb4 100755 --- a/t/t2020-checkout-detach.sh +++ b/t/t2020-checkout-detach.sh @@ -163,4 +163,27 @@ test_expect_success 'tracking count is accurate after orphan check' ' test_i18ncmp expect stdout ' +test_expect_success 'no advice given for explicit detached head state' ' + # baseline + test_config advice.detachedHead true && + git checkout child && git checkout HEAD^0 >expect.advice 2>&1 && + test_config advice.detachedHead false && + git checkout child && git checkout HEAD^0 >expect.no-advice 2>&1 && + test_unconfig advice.detachedHead && + # without configuration, the advice.* variables default to true + git checkout child && git checkout HEAD^0 >actual 2>&1 && + test_cmp expect.advice actual && + + # with explicit --detach + # no configuration + test_unconfig advice.detachedHead && + git checkout child && git checkout --detach HEAD^0 >actual 2>&1 && + test_cmp expect.no-advice actual && + + # explicitly decline advice + test_config advice.detachedHead false && + git checkout child && git checkout --detach HEAD^0 >actual 2>&1 && + test_cmp expect.no-advice actual +' + test_done diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh index f7b0e599f1..470f33466c 100755 --- a/t/t3030-merge-recursive.sh +++ b/t/t3030-merge-recursive.sh @@ -660,4 +660,22 @@ test_expect_success 'merging with triple rename across D/F conflict' ' git merge other ' +test_expect_success 'merge-recursive remembers the names of all base trees' ' + git reset --hard HEAD && + + # more trees than static slots used by oid_to_hex() + for commit in $c0 $c2 $c4 $c5 $c6 $c7 + do + git rev-parse "$commit^{tree}" + done >trees && + + # ignore the return code -- it only fails because the input is weird + test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out && + + # merge-recursive prints in reverse order, but we do not care + sort <trees >expect && + sed -n "s/^virtual //p" out | sort >actual && + test_cmp expect actual +' + test_done diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index 197914bbd8..597e94e294 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh @@ -1286,7 +1286,7 @@ test_expect_success 'rebase -i --gpg-sign=<key-id>' ' set_fake_editor && FAKE_LINES="edit 1" git rebase -i --gpg-sign="\"S I Gner\"" HEAD^ \ >out 2>err && - grep "$SQ-S\"S I Gner\"$SQ" err + test_i18ngrep "$SQ-S\"S I Gner\"$SQ" err ' test_done diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh index 6ad37b5f66..551844584f 100755 --- a/t/t5520-pull.sh +++ b/t/t5520-pull.sh @@ -270,7 +270,7 @@ test_expect_success '--rebase with conflicts shows advice' ' test_tick && git commit -m "Create conflict" seq.txt && test_must_fail git pull --rebase . seq 2>err >out && - grep "When you have resolved this problem" out + test_i18ngrep "When you have resolved this problem" out ' test_expect_success 'failed --rebase shows advice' ' @@ -284,7 +284,7 @@ test_expect_success 'failed --rebase shows advice' ' git checkout -f -b fails-to-rebase HEAD^ && test_commit v2-without-cr file "2" file2-lf && test_must_fail git pull --rebase . diverging 2>err >out && - grep "When you have resolved this problem" out + test_i18ngrep "When you have resolved this problem" out ' test_expect_success '--rebase fails with multiple branches' ' diff --git a/t/t6026-merge-attr.sh b/t/t6026-merge-attr.sh index ef0cbceafe..dd8f88d187 100755 --- a/t/t6026-merge-attr.sh +++ b/t/t6026-merge-attr.sh @@ -181,4 +181,17 @@ test_expect_success 'up-to-date merge without common ancestor' ' ) ' +test_expect_success 'custom merge does not lock index' ' + git reset --hard anchor && + write_script sleep-one-second.sh <<-\EOF && + sleep 1 & + EOF + + test_write_lines >.gitattributes \ + "* merge=ours" "text merge=sleep-one-second" && + test_config merge.ours.driver true && + test_config merge.sleep-one-second.driver ./sleep-one-second.sh && + git merge master +' + test_done diff --git a/t/t7411-submodule-config.sh b/t/t7411-submodule-config.sh index 400e2b1439..47562ce465 100755 --- a/t/t7411-submodule-config.sh +++ b/t/t7411-submodule-config.sh @@ -89,7 +89,7 @@ test_expect_success 'error message contains blob reference' ' HEAD b \ HEAD submodule \ 2>actual_err && - grep "submodule-blob $sha1:.gitmodules" actual_err >/dev/null + test_i18ngrep "submodule-blob $sha1:.gitmodules" actual_err >/dev/null ) ' diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh index 2974900578..70a2de461a 100755 --- a/t/t7800-difftool.sh +++ b/t/t7800-difftool.sh @@ -124,6 +124,12 @@ test_expect_success PERL 'difftool stops on error with --trust-exit-code' ' test_cmp expect actual ' +test_expect_success PERL 'difftool honors exit status if command not found' ' + test_config difftool.nonexistent.cmd i-dont-exist && + test_config difftool.trustExitCode false && + test_must_fail git difftool -y -t nonexistent branch +' + test_expect_success PERL 'difftool honors --gui' ' difftool_test_setup && test_config merge.tool bogus-tool && diff --git a/tempfile.c b/tempfile.c index 0af7ebf016..2990c92424 100644 --- a/tempfile.c +++ b/tempfile.c @@ -120,7 +120,12 @@ int create_tempfile(struct tempfile *tempfile, const char *path) prepare_tempfile_object(tempfile); strbuf_add_absolute_path(&tempfile->filename, path); - tempfile->fd = open(tempfile->filename.buf, O_RDWR | O_CREAT | O_EXCL, 0666); + tempfile->fd = open(tempfile->filename.buf, + O_RDWR | O_CREAT | O_EXCL | O_CLOEXEC, 0666); + if (O_CLOEXEC && tempfile->fd < 0 && errno == EINVAL) + /* Try again w/o O_CLOEXEC: the kernel might not support it */ + tempfile->fd = open(tempfile->filename.buf, + O_RDWR | O_CREAT | O_EXCL, 0666); if (tempfile->fd < 0) { strbuf_reset(&tempfile->filename); return -1; diff --git a/tempfile.h b/tempfile.h index 4219fe41bd..2f0038decd 100644 --- a/tempfile.h +++ b/tempfile.h @@ -33,6 +33,10 @@ * * calling `fdopen_tempfile()` to get a `FILE` pointer for the * open file and writing to the file using stdio. * + * Note that the file descriptor returned by create_tempfile() + * is marked O_CLOEXEC, so the new contents must be written by + * the current process, not any spawned one. + * * When finished writing, the caller can: * * * Close the file descriptor and remove the temporary file by |
