diff options
233 files changed, 13190 insertions, 8006 deletions
diff --git a/.gitignore b/.gitignore index 05cb58a3d4..6722f78f9a 100644 --- a/.gitignore +++ b/.gitignore @@ -203,7 +203,6 @@ /config.mak.autogen /config.mak.append /configure -/unicode /tags /TAGS /cscope* diff --git a/.travis.yml b/.travis.yml index 0b2ea5c3e2..3843967a69 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,8 +27,8 @@ env: # The Linux build installs the defined dependency versions below. # The OS X build installs the latest available versions. Keep that # in mind when you encounter a broken OS X build! - - LINUX_P4_VERSION="16.1" - - LINUX_GIT_LFS_VERSION="1.2.0" + - LINUX_P4_VERSION="16.2" + - LINUX_GIT_LFS_VERSION="1.5.2" - DEFAULT_TEST_TARGET=prove - GIT_PROVE_OPTS="--timer --jobs 3 --state=failed,slow,save" - GIT_TEST_OPTS="--verbose-log" diff --git a/Documentation/RelNotes/2.10.3.txt b/Documentation/RelNotes/2.10.3.txt new file mode 100644 index 0000000000..277a2a18a7 --- /dev/null +++ b/Documentation/RelNotes/2.10.3.txt @@ -0,0 +1,48 @@ +Git v2.10.3 Release Notes +========================= + +Fixes since v2.10.2 +------------------- + + * Extract a small helper out of the function that reads the authors + script file "git am" internally uses. + This by itself is not useful until a second caller appears in the + future for "rebase -i" helper. + + * The command-line completion script (in contrib/) learned to + complete "git cmd ^mas<HT>" to complete the negative end of + reference to "git cmd ^master". + + * "git send-email" attempts to pick up valid e-mails from the + trailers, but people in real world write non-addresses there, like + "Cc: Stable <add@re.ss> # 4.8+", which broke the output depending + on the availability and vintage of Mail::Address perl module. + + * The code that we have used for the past 10+ years to cycle + 4-element ring buffers turns out to be not quite portable in + theoretical world. + + * "git daemon" used fixed-length buffers to turn URL to the + repository the client asked for into the server side directory + path, using snprintf() to avoid overflowing these buffers, but + allowed possibly truncated paths to the directory. This has been + tightened to reject such a request that causes overlong path to be + required to serve. + + * Recent update to git-sh-setup (a library of shell functions that + are used by our in-tree scripted Porcelain commands) included + another shell library git-sh-i18n without specifying where it is, + relying on the $PATH. This has been fixed to be more explicit by + prefixing $(git --exec-path) output in front. + + * Fix for a racy false-positive test failure. + + * Portability update and workaround for builds on recent Mac OS X. + + * Update to the test framework made in 2.9 timeframe broke running + the tests under valgrind, which has been fixed. + + * Improve the rule to convert "unsigned char [20]" into "struct + object_id *" in contrib/coccinelle/ + +Also contains minor documentation updates and code clean-ups. diff --git a/Documentation/RelNotes/2.11.0.txt b/Documentation/RelNotes/2.11.0.txt index 4898d5ab11..b7b7dd361e 100644 --- a/Documentation/RelNotes/2.11.0.txt +++ b/Documentation/RelNotes/2.11.0.txt @@ -57,39 +57,40 @@ UI, Workflows & Features * Even though "git hash-objects", which is a tool to take an on-filesystem data stream and put it into the Git object store, - allowed to perform the "outside-world-to-Git" conversions (e.g. + can perform "outside-world-to-Git" conversions (e.g. end-of-line conversions and application of the clean-filter), and - it had the feature on by default from very early days, its reverse + it has had this feature on by default from very early days, its reverse operation "git cat-file", which takes an object from the Git object - store and externalize for the consumption by the outside world, + store and externalizes it for consumption by the outside world, lacked an equivalent mechanism to run the "Git-to-outside-world" conversion. The command learned the "--filters" option to do so. - * Output from "git diff" can be made easier to read by selecting + * Output from "git diff" can be made easier to read by intelligently selecting which lines are common and which lines are added/deleted - intelligently when the lines before and after the changed section - are the same. A command line option is added to help with the - experiment to find a good heuristics. + when the lines before and after the changed section + are the same. A command line option (--indent-heuristic) and a + configuration variable (diff.indentHeuristic) are added to help with the + experiment to find good heuristics. * In some projects, it is common to use "[RFC PATCH]" as the subject prefix for a patch meant for discussion rather than application. A - new option "--rfc" is a short-hand for "--subject-prefix=RFC PATCH" + new format-patch option "--rfc" is a short-hand for "--subject-prefix=RFC PATCH" to help the participants of such projects. - * "git add --chmod=+x <pathspec>" added recently only toggled the + * "git add --chmod={+,-}x <pathspec>" only changed the executable bit for paths that are either new or modified. This has - been corrected to flip the executable bit for all paths that match + been corrected to change the executable bit for all paths that match the given pathspec. * When "git format-patch --stdout" output is placed as an in-body - header and it uses the RFC2822 header folding, "git am" failed to + header and it uses RFC2822 header folding, "git am" fails to put the header line back into a single logical line. The underlying "git mailinfo" was taught to handle this properly. * "gitweb" can spawn "highlight" to show blob contents with (programming) language-specific syntax highlighting, but only when the language is known. "highlight" can however be told - to make the guess itself by giving it "--force" option, which + to guess the language itself by giving it "--force" option, which has been enabled. * "git gui" l10n to Portuguese. @@ -109,19 +110,19 @@ UI, Workflows & Features history leading to nth parent was looking the other way. * In recent versions of cURL, GSSAPI credential delegation is - disabled by default due to CVE-2011-2192; introduce a configuration - to selectively allow enabling this. + disabled by default due to CVE-2011-2192; introduce a http.delegation + configuration variable to selectively allow enabling this. (merge 26a7b23429 ps/http-gssapi-cred-delegation later to maint). * "git mergetool" learned to honor "-O<orderfile>" to control the order of paths to present to the end user. * "git diff/log --ws-error-highlight=<kind>" lacked the corresponding - configuration variable to set it by default. + configuration variable (diff.wsErrorHighlight) to set it by default. - * "git ls-files" learned "--recurse-submodules" option that can be - used to get a listing of tracked files across submodules (i.e. this - only works with "--cached" option, not for listing untracked or + * "git ls-files" learned the "--recurse-submodules" option + to get a listing of tracked files across submodules (i.e. this + only works with the "--cached" option, not for listing untracked or ignored files). This would be a useful tool to sit on the upstream side of a pipe that is read with xargs to work on all working tree files from the top-level superproject. @@ -130,7 +131,7 @@ UI, Workflows & Features implementations of XDG Secret Service API has been added to contrib/credential/. - * The GPG verification status shown in "%G?" pretty format specifier + * The GPG verification status shown by the "%G?" pretty format specifier was not rich enough to differentiate a signature made by an expired key, a signature made by a revoked key, etc. New output letters have been assigned to express them. @@ -139,17 +140,17 @@ UI, Workflows & Features learned to turn "git describe" output (e.g. v2.9.3-599-g2376d31787) into clickable links in its output. - * When new paths were added by "git add -N" to the index, it was - enough to circumvent the check by "git commit" to refrain from - making an empty commit without "--allow-empty". The same logic - prevented "git status" to show such a path as "new file" in the + * "git commit" created an empty commit when invoked with an index + consisting solely of intend-to-add paths (added with "git add -N"). + It now requires the "--allow-empty" option to create such a commit. + The same logic prevented "git status" from showing such paths as "new files" in the "Changes not staged for commit" section. - * The smudge/clean filter API expect an external process is spawned - to filter the contents for each path that has a filter defined. A + * The smudge/clean filter API spawns an external process + to filter the contents of each path that has a filter defined. A new type of "process" filter API has been added to allow the first request to run the filter for a path to spawn a single process, and - all filtering need is served by this single process for multiple + all filtering is served by this single process for multiple paths, reducing the process creation overhead. * The user always has to say "stash@{$N}" when naming a single @@ -173,7 +174,7 @@ Performance, Internal Implementation, Development Support etc. script file "git am" internally uses. (merge a77598e jc/am-read-author-file later to maint). - * Lifts calls to exit(2) and die() higher in the callchain in + * Lift calls to exit(2) and die() higher in the callchain in sequencer.c files so that more helper functions in it can be used by callers that want to handle error conditions themselves. @@ -192,13 +193,13 @@ Performance, Internal Implementation, Development Support etc. does not advertise any refs, but "git fetch" was not prepared to see such an advertisement. When the other side disconnects without giving any ref advertisement, we used to say "there may not be a - repository at that URL", but we may have seen other advertisement + repository at that URL", but we may have seen other advertisements like "shallow" and ".have" in which case we definitely know that a repository is there. The code to detect this case has also been updated. * Some codepaths in "git pack-objects" were not ready to use an - existing pack bitmap; now they are and as the result they have + existing pack bitmap; now they are and as a result they have become faster. * The codepath in "git fsck" to detect malformed tree objects has @@ -214,7 +215,7 @@ Performance, Internal Implementation, Development Support etc. packfile first. (merge c9af708b1a jk/pack-objects-optim-mru later to maint). - * Codepaths involved in interacting alternate object store have + * Codepaths involved in interacting alternate object stores have been cleaned up. * In order for the receiving end of "git push" to inspect the @@ -222,7 +223,7 @@ Performance, Internal Implementation, Development Support etc. from the sending end need to be made available to the hook and the mechanism for the connectivity check, and this was done traditionally by storing the objects in the receiving repository - and letting "git gc" to expire it. Instead, store the newly + and letting "git gc" expire them. Instead, store the newly received objects in a temporary area, and make them available by reusing the alternate object store mechanism to them only while we decide if we accept the check, and once we decide, either migrate @@ -237,7 +238,7 @@ Performance, Internal Implementation, Development Support etc. replaced with a priority queue. * "git diff --no-index" codepath has been updated not to try to peek - into .git/ directory that happens to be under the current + into a .git/ directory that happens to be under the current directory, when we know we are operating outside any repository. * Update of the sequencer codebase to make it reusable to reimplement @@ -251,8 +252,8 @@ Performance, Internal Implementation, Development Support etc. holding onto them. Use O_CLOEXEC flag to open files in various codepaths. - * Update "interpret-trailers" machinery and teaches it that people in - real world write all sorts of crufts in the "trailer" that was + * Update "interpret-trailers" machinery and teach it that people in + the real world write all sorts of cruft in the "trailer" that was originally designed to have the neat-o "Mail-Header: like thing" and nothing else. @@ -280,7 +281,7 @@ notes for details). has been removed. * Having a submodule whose ".git" repository is somehow corrupt - caused a few commands that recurse into submodules loop forever. + caused a few commands that recurse into submodules to loop forever. * "git symbolic-ref -d HEAD" happily removes the symbolic ref, but the resulting repository becomes an invalid one. Teach the command @@ -308,12 +309,12 @@ notes for details). forgot to update "git gui" to look at the configuration to match this change. - * "git add --chmod=+x" added recently lacked documentation, which has + * "git add --chmod={+,-}x" added recently lacked documentation, which has been corrected. * "git log --cherry-pick" used to include merge commits as candidates to be matched up with other commits, resulting a lot of wasted time. - The patch-id generation logic has been updated to ignore merges to + The patch-id generation logic has been updated to ignore merges and avoid the wastage. * The http transport (with curl-multi option, which is the default @@ -333,20 +334,20 @@ notes for details). line of the next one. This process may have to merge two adjacent hunks, but the code forgot to do so in some cases. - * Performance tests done via "t/perf" did not use the same set of + * Performance tests done via "t/perf" did not use the right build configuration if the user relied on autoconf generated configuration. * "git format-patch --base=..." feature that was recently added - showed the base commit information after "-- " e-mail signature + showed the base commit information after the "-- " e-mail signature line, which turned out to be inconvenient. The base information has been moved above the signature line. * More i18n. * Even when "git pull --rebase=preserve" (and the underlying "git - rebase --preserve") can complete without creating any new commit - (i.e. fast-forwards), it still insisted on having a usable ident + rebase --preserve") can complete without creating any new commits + (i.e. fast-forwards), it still insisted on having usable ident information (read: user.email is set correctly), which was less than nice. As the underlying commands used inside "git rebase" would fail with a more meaningful error message and advice text @@ -396,7 +397,7 @@ notes for details). * Documentation around tools to import from CVS was fairly outdated. * "git clone --recurse-submodules" lost the progress eye-candy in - recent update, which has been corrected. + a recent update, which has been corrected. * A low-level function verify_packfile() was meant to show errors that were detected without dying itself, but under some conditions @@ -409,23 +410,23 @@ notes for details). to a design bug, which has been fixed. * In the codepath that comes up with the hostname to be used in an - e-mail when the user didn't tell us, we looked at ai_canonname + e-mail when the user didn't tell us, we looked at the ai_canonname field in struct addrinfo without making sure it is not NULL first. * "git worktree", even though it used the default_abbrev setting that - ought to be affected by core.abbrev configuration variable, ignored + ought to be affected by the core.abbrev configuration variable, ignored the variable setting. The command has been taught to read the default set of configuration variables to correct this. * "git init" tried to record core.worktree in the repository's - 'config' file when GIT_WORK_TREE environment variable was set and + 'config' file when the GIT_WORK_TREE environment variable was set and it was different from where GIT_DIR appears as ".git" at its top, but the logic was faulty when .git is a "gitdir:" file that points at the real place, causing trouble in working trees that are managed by "git worktree". This has been corrected. * Codepaths that read from an on-disk loose object were too loose in - validating what they are reading is a proper object file and + validating that they are reading a proper object file and sometimes read past the data they read from the disk, which has been corrected. H/t to Gustavo Grieco for reporting. @@ -434,8 +435,8 @@ notes for details). time, and "git gui" was the last in-tree user of the syntax. This is finally fixed, so that we can move forward with the deprecation. - * An author name, that spelled a backslash-quoted double quote in the - human readable part "My \"double quoted\" name", was not unquoted + * An author name that has a backslash-quoted double quote in the + human readable part ("My \"double quoted\" name"), was not unquoted correctly while applying a patch from a piece of e-mail. * Doc update to clarify what "log -3 --reverse" does. @@ -449,11 +450,10 @@ notes for details). has been fixed; this did not affect any existing code as nobody tried to write anything after the padding on such a line, though. - * The code that parses the format parameter of for-each-ref command + * The code that parses the format parameter of the for-each-ref command has seen a micro-optimization. - * When we started cURL to talk to imap server when a new enough - version of cURL library is available, we forgot to explicitly add + * When we started to use cURL to talk to an imap server, we forgot to explicitly add imap(s):// before the destination. To some folks, that didn't work and the library tried to make HTTP(s) requests instead. @@ -474,13 +474,12 @@ notes for details). "Give me only the history since that version". (merge cccf74e2da nd/shallow-deepen later to maint). - * It is a common mistake to say "git blame --reverse OLD path", - expecting that the command line is dwimmed as if asking how lines + * "git blame --reverse OLD path" is now DWIMmed to show how lines in path in an old revision OLD have survived up to the current commit. (merge e1d09701a4 jc/blame-reverse later to maint). - * http.emptyauth configuration is a way to allow an empty username to + * The http.emptyauth configuration variable is a way to allow an empty username to pass when attempting to authenticate using mechanisms like Kerberos. We took an unspecified (NULL) username and sent ":" (i.e. no username, no password) to CURLOPT_USERPWD, but did not do @@ -494,20 +493,20 @@ notes for details). -p <paths>" adds to the current contents of the index to come up with what to commit. - * A stray symbolic link in $GIT_DIR/refs/ directory could make name + * A stray symbolic link in the $GIT_DIR/refs/ directory could make name resolution loop forever, which has been corrected. * The "submodule.<name>.path" stored in .gitmodules is never copied to .git/config and such a key in .git/config has no meaning, but - the documentation described it and submodule.<name>.url next to - each other as if both belong to .git/config. This has been fixed. + the documentation described it next to submodule.<name>.url + as if both belong to .git/config. This has been fixed. - * In a worktree connected to a repository elsewhere, created via "git + * In a worktree created via "git worktree", "git checkout" attempts to protect users from confusion by refusing to check out a branch that is already checked out in another worktree. However, this also prevented checking out a - branch, which is designated as the primary branch of a bare - reopsitory, in a worktree that is connected to the bare + branch which is designated as the primary branch of a bare + repository, in a worktree that is connected to the bare repository. The check has been corrected to allow it. * "git rebase" immediately after "git clone" failed to find the fork @@ -515,7 +514,7 @@ notes for details). * When fetching from a remote that has many tags that are irrelevant to branches we are following, we used to waste way too many cycles - when checking if the object pointed at by a tag (that we are not + checking if the object pointed at by a tag (that we are not going to fetch!) exists in our repository too carefully. * Protect our code from over-eager compilers. @@ -524,27 +523,24 @@ notes for details). "." instead of the branch name; the documentation has been updated to describe it. - * A hot-fix for a test added by a recent topic that went to both - 'master' and 'maint' already. - * "git send-email" attempts to pick up valid e-mails from the - trailers, but people in real world write non-addresses there, like + trailers, but people in the real world write non-addresses there, like "Cc: Stable <add@re.ss> # 4.8+", which broke the output depending - on the availability and vintage of Mail::Address perl module. + on the availability and vintage of the Mail::Address perl module. (merge dcfafc5214 mm/send-email-cc-cruft-after-address later to maint). - * The Travis CI configuration we ship ran the tests with --verbose + * The Travis CI configuration we ship ran the tests with the --verbose option but this risks non-TAP output that happens to be "ok" to be misinterpreted as TAP signalling a test that passed. This resulted - in unnecessary failure. This has been corrected by introducing a + in unnecessary failures. This has been corrected by introducing a new mode to run our tests in the test harness to send the verbose output separately to the log file. - * Some AsciiDoc formatter mishandles a displayed illustration with + * Some AsciiDoc formatters mishandle a displayed illustration with tabs in it. Adjust a few of them in merge-base documentation to work around them. - * A minor regression fix for "git submodule" that was introduced + * Fixed a minor regression in "git submodule" that was introduced when more helper functions were reimplemented in C. (merge 77b63ac31e sb/submodule-ignore-trailing-slash later to maint). @@ -553,19 +549,19 @@ notes for details). theoretical world. (merge bb84735c80 rs/ring-buffer-wraparound later to maint). - * "git daemon" used fixed-length buffers to turn URL to the + * "git daemon" used fixed-length buffers to turn URLs to the repository the client asked for into the server side directory - path, using snprintf() to avoid overflowing these buffers, but + paths, using snprintf() to avoid overflowing these buffers, but allowed possibly truncated paths to the directory. This has been - tightened to reject such a request that causes overlong path to be - required to serve. + tightened to reject such a request that causes an overlong path to be + served. (merge 6bdb0083be jk/daemon-path-ok-check-truncation later to maint). * Recent update to git-sh-setup (a library of shell functions that are used by our in-tree scripted Porcelain commands) included another shell library git-sh-i18n without specifying where it is, relying on the $PATH. This has been fixed to be more explicit by - prefixing $(git --exec-path) output in front. + prefixing with $(git --exec-path) output. (merge 1073094f30 ak/sh-setup-dot-source-i18n-fix later to maint). * Fix for a racy false-positive test failure. @@ -574,6 +570,15 @@ notes for details). * Portability update and workaround for builds on recent Mac OS X. (merge a296bc0132 ls/macos-update later to maint). + * Using a %(HEAD) placeholder in "for-each-ref --format=" option + caused the command to segfault when on an unborn branch. + (merge 84679d470d jc/for-each-ref-head-segfault-fix later to maint). + + * "git rebase -i" did not work well with the core.commentchar + configuration variable for two reasons, both of which have been + fixed. + (merge 882cd23777 js/rebase-i-commentchar-fix later to maint). + * Other minor doc, test and build updates and code cleanups. (merge 5c238e29a8 jk/common-main later to maint). (merge 5a5749e45b ak/pre-receive-hook-template-modefix later to maint). diff --git a/Documentation/RelNotes/2.12.0.txt b/Documentation/RelNotes/2.12.0.txt new file mode 100644 index 0000000000..778145a3ed --- /dev/null +++ b/Documentation/RelNotes/2.12.0.txt @@ -0,0 +1,255 @@ +Git 2.12 Release Notes +====================== + +Backward compatibility notes. + + * Use of an empty string that is used for 'everything matches' is + still warned and Git asks users to use a more explicit '.' for that + instead. The hope is that existing users will not mind this + change, and eventually the warning can be turned into a hard error, + upgrading the deprecation into removal of this (mis)feature. That + is not scheduled to happen in the upcoming release (yet). + + * The historical argument order "git merge <msg> HEAD <commit>..." + has been deprecated for quite some time, and will be removed in the + upcoming release. + + +Updates since v2.11 +------------------- + +UI, Workflows & Features + + * Various updates to "git p4". + + * "git p4" didn't interact with the internal of .git directory + correctly in the modern "git-worktree"-enabled world. + + * "git branch --list" and friends learned "--ignore-case" option to + optionally sort branches and tags case insensitively. + + * In addition to %(subject), %(body), "log --pretty=format:..." + learned a new placeholder %(trailers). + + * "git rebase" learned "--quit" option, which allows a user to + remove the metadata left by an earlier "git rebase" that was + manually aborted without using "git rebase --abort". + + * "git clone --reference $there --recurse-submodules $super" has been + taught to guess repositories usable as references for submodules of + $super that are embedded in $there while making a clone of the + superproject borrow objects from $there; extend the mechanism to + also allow submodules of these submodules to borrow repositories + embedded in these clones of the submodules embedded in the clone of + the superproject. + + * Porcelain scripts written in Perl are getting internationalized. + + * "git merge --continue" has been added as a synonym to "git commit" + to conclude a merge that has stopped due to conflicts. + + * Finer-grained control of what protocols are allowed for transports + during clone/fetch/push have been enabled via a new configuration + mechanism. + + * "git shortlog" learned "--committer" option to group commits by + committer, instead of author. + + * GitLFS integration with "git p4" has been updated. + + * The isatty() emulation for Windows has been updated to eradicate + the previous hack that depended on internals of (older) MSVC + runtime. + + +Performance, Internal Implementation, Development Support etc. + + * Commands that operate on a log message and add lines to the trailer + blocks, such as "format-patch -s", "cherry-pick (-x|-s)", and + "commit -s", have been taught to use the logic of and share the + code with "git interpret-trailer". + + * The default Travis-CI configuration specifies newer P4 and GitLFS. + (merge 5f703e8f02 ls/travis-update-p4-and-lfs later to maint). + + * The "fast hash" that had disastrous performance issues in some + corner cases has been retired from the internal diff. + + * The character width table has been updated to match Unicode 9.0 + (merge 9e6e9aefdf bb/unicode-9.0 later to maint). + + * Update the procedure to generate "tags" for developer support. + (merge 046e4c1c09 jk/make-tags-find-sources-tweak later to maint). + + + +Also contains various documentation updates and code clean-ups. + +Fixes since v2.10 +----------------- + +Unless otherwise noted, all the fixes since v2.9 in the maintenance +track are contained in this release (see the maintenance releases' +notes for details). + + * We often decide if a session is interactive by checking if the + standard I/O streams are connected to a TTY, but isatty() that + comes with Windows incorrectly returned true if it is used on NUL + (i.e. an equivalent to /dev/null). This has been fixed. + (merge cbb3f3c9b1 js/mingw-isatty later to maint). + + * "git svn" did not work well with path components that are "0", and + some configuration variable it uses were not documented. + (merge ea9a93dcc2 ew/svn-fixes later to maint). + + * "git rev-parse --symbolic" failed with a more recent notation like + "HEAD^-1" and "HEAD^!". + (merge a2e7b04c44 jk/rev-parse-symbolic-parents-fix later to maint). + + * An empty directory in a working tree that can simply be nuked used + to interfere while merging or cherry-picking a change to create a + submodule directory there, which has been fixed.. + (merge 5423d2e700 dt/empty-submodule-in-merge later to maint). + + * The code in "git push" to compute if any commit being pushed in the + superproject binds a commit in a submodule that hasn't been pushed + out was overly inefficient, making it unusable even for a small + project that does not have any submodule but have a reasonable + number of refs. + (merge 250ab24ab3 hv/submodule-not-yet-pushed-fix later to maint). + + * "git push --dry-run --recurse-submodule=on-demand" wasn't + "--dry-run" in the submodules. + (merge 0301c821c5 bw/push-dry-run later to maint). + + * The output from "git worktree list" was made in readdir() order, + and was unstable. + (merge 4df1d4d466 nd/worktree-list-fixup later to maint). + + * mergetool.<tool>.trustExitCode configuration variable did not apply + to built-in tools, but now it does. + (merge 2967284456 da/mergetool-trust-exit-code later to maint). + + * "git p4" LFS support was broken when LFS stores an empty blob. + (merge d5eb3cf5e7 ls/p4-empty-file-on-lfs later to maint). + + * A corner case in merge-recursive regression that crept in + during 2.10 development cycle has been fixed. + (merge 1c25d2d8ed jc/renormalize-merge-kill-safer-crlf later to maint). + + * Transport with dumb http can be fooled into following foreign URLs + that the end user does not intend to, especially with the server + side redirects and http-alternates mechanism, which can lead to + security issues. Tighten the redirection and make it more obvious + to the end user when it happens. + (merge cb4d2d35c4 jk/http-walker-limit-redirect-2.9 later to maint). + + * Update the error messages from the dumb-http client when it fails + to obtain loose objects; we used to give sensible error message + only upon 404 but we now forbid unexpected redirects that needs to + be reported with something sensible. + (merge 3680f16f9d jk/http-walker-limit-redirect later to maint). + + * When diff.renames configuration is on (and with Git 2.9 and later, + it is enabled by default, which made it worse), "git stash" + misbehaved if a file is removed and another file with a very + similar content is added. + (merge 9d4e28ead5 jk/stash-disable-renames-internally later to maint). + + * "git diff --no-index" did not take "--no-abbrev" option. + (merge 43d1948b7b jb/diff-no-index-no-abbrev later to maint). + + * "git difftool --dir-diff" had a minor regression when started from + a subdirectory, which has been fixed. + (merge 853e10c197 da/difftool-dir-diff-fix later to maint). + + * "git commit --allow-empty --only" (no pathspec) with dirty index + ought to be an acceptable way to create a new commit that does not + change any paths, but it was forbidden, perhaps because nobody + needed it so far. + (merge beb635ca9c ak/commit-only-allow-empty later to maint). + + * Git 2.11 had a minor regression in "merge --ff-only" that competed + with another process that simultanously attempted to update the + index. We used to explain what went wrong with an error message, + but the new code silently failed. The error message has been + resurrected. + + * A pathname that begins with "//" or "\\" on Windows is special but + path normalization logic was unaware of it. + (merge 7814fbe3f1 js/normalize-path-copy-ceil later to maint). + + * "git pull --rebase", when there is no new commits on our side since + we forked from the upstream, should be able to fast-forward without + invoking "git rebase", but it didn't. + (merge 33b842a1e9 jc/pull-rebase-ff later to maint). + + * The way to specify hotkeys to "xxdiff" that is used by "git + mergetool" has been modernized to match recent versions of xxdiff. + (merge 6cf5f6cef7 da/mergetool-xxdiff-hotkey later to maint). + + * Unlike "git am --abort", "git cherry-pick --abort" moved HEAD back + to where cherry-pick started while picking multiple changes, when + the cherry-pick stopped to ask for help from the user, and the user + did "git reset --hard" to a different commit in order to re-attempt + the operation. + (merge ce73bb22d8 sb/sequencer-abort-safety later to maint). + + * Code cleanup in shallow boundary computation. + (merge 649b0c316a nd/shallow-fixup later to maint). + + * A recent update to receive-pack to make it easier to drop garbage + objects made it clear that GIT_ALTERNATE_OBJECT_DIRECTORIES cannot + have a pathname with a colon in it (no surprise!), and this in turn + made it impossible to push into a repository at such a path. This + has been fixed by introducing a quoting mechanism used when + appending such a path to the colon-separated list. + (merge 5e74824fac jk/quote-env-path-list-component later to maint). + + * The function usage_msg_opt() has been updated to say "fatal:" + before the custom message programs give, when they want to die + with a message about wrong command line options followed by the + standard usage string. + (merge 87433261a4 jk/parseopt-usage-msg-opt later to maint). + + * "git index-pack --stdin" needs an access to an existing repository, + but "git index-pack file.pack" to generate an .idx file that + corresponds to a packfile does not. + (merge 29401e1575 jk/index-pack-wo-repo-from-stdin later to maint). + + * Fix for NDEBUG builds. + (merge 08414938a2 jt/mailinfo-fold-in-body-headers later to maint). + + * A lazy "git push" without refspec did not internally use a fully + specified refspec to perform 'current', 'simple', or 'upstream' + push, causing unnecessary "ambiguous ref" errors. + (merge b284495e93 jc/push-default-explicit later to maint). + + * "git p4" misbehaved when swapping a directory and a symbolic link. + (merge df8a9e86db ld/p4-compare-dir-vs-symlink later to maint). + + * Even though an fix was attempted in Git 2.9.3 days, but running + "git difftool --dir-diff" from a subdirectory never worked. This + has been fixed. + (merge ce6926974e jk/difftool-in-subdir later to maint). + + * "git p4" that tracks multile p4 paths imported a single changelist + that touches files in these multiple paths as one commit, followed + by many empty commits. This has been fixed. + (merge 9943e5b979 gv/p4-multi-path-commit-fix later to maint). + + * A potential but unlikely buffer overflow in Windows port has been + fixed. + (merge c46458e82f mk/mingw-winansi-ttyname-termination-fix later to maint). + + * Other minor doc, test and build updates and code cleanups. + (merge fa6ca11105 nd/qsort-in-merge-recursive later to maint). + (merge fa3142c919 ak/lazy-prereq-mktemp later to maint). + (merge 9c48b4fb23 ls/t0021-fixup later to maint). + (merge 584f99c87b sb/unpack-trees-grammofix later to maint). + (merge 54471fdcc3 jk/readme-gmane-is-no-more later to maint). + (merge 9e189f1a5c sb/t3600-cleanup later to maint). + (merge e2c20be57c lr/doc-fix-cet later to maint). + (merge 47437fd3bd kh/tutorial-grammofix later to maint). + (merge f2627d9b19 sb/submodule-config-cleanup later to maint). + (merge 7eeda8b821 ls/filter-process later to maint). diff --git a/Documentation/config.txt b/Documentation/config.txt index a0ab66aae7..506431267e 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -783,10 +783,11 @@ core.sparseCheckout:: linkgit:git-read-tree[1] for more information. core.abbrev:: - Set the length object names are abbreviated to. If unspecified, - many commands abbreviate to 7 hexdigits, which may not be enough - for abbreviated object names to stay unique for sufficiently long - time. + Set the length object names are abbreviated to. If + unspecified or set to "auto", an appropriate value is + computed based on the approximate number of packed objects + in your repository, which hopefully is enough for + abbreviated object names to stay unique for some time. add.ignoreErrors:: add.ignore-errors (deprecated):: @@ -1409,7 +1410,9 @@ gc.pruneExpire:: Override the grace period with this config variable. The value "now" may be used to disable this grace period and always prune unreachable objects immediately, or "never" may be used to - suppress pruning. + suppress pruning. This feature helps prevent corruption when + 'git gc' runs concurrently with another process writing to the + repository; see the "NOTES" section of linkgit:git-gc[1]. gc.worktreePruneExpire:: When 'git gc' is run, it calls @@ -1891,6 +1894,16 @@ http.userAgent:: of common USER_AGENT strings (but not including those like git/1.7.1). Can be overridden by the `GIT_HTTP_USER_AGENT` environment variable. +http.followRedirects:: + Whether git should follow HTTP redirects. If set to `true`, git + will transparently follow any redirect issued by a server it + encounters. If set to `false`, git will treat all redirects as + errors. If set to `initial`, git will follow redirects only for + the initial request to a remote, but not for subsequent + follow-up HTTP requests. Since git uses the redirected URL as + the base for the follow-up requests, this is generally + sufficient. The default is `initial`. + http.<url>.*:: Any of the http.* options above can be applied selectively to some URLs. For a config key to match a URL, each element of the config key is @@ -2308,6 +2321,52 @@ pretty.<name>:: Note that an alias with the same name as a built-in format will be silently ignored. +protocol.allow:: + If set, provide a user defined default policy for all protocols which + don't explicitly have a policy (`protocol.<name>.allow`). By default, + if unset, known-safe protocols (http, https, git, ssh, file) have a + default policy of `always`, known-dangerous protocols (ext) have a + default policy of `never`, and all other protocols have a default + policy of `user`. Supported policies: ++ +-- + +* `always` - protocol is always able to be used. + +* `never` - protocol is never able to be used. + +* `user` - protocol is only able to be used when `GIT_PROTOCOL_FROM_USER` is + either unset or has a value of 1. This policy should be used when you want a + protocol to be directly usable by the user but don't want it used by commands which + execute clone/fetch/push commands without user input, e.g. recursive + submodule initialization. + +-- + +protocol.<name>.allow:: + Set a policy to be used by protocol `<name>` with clone/fetch/push + commands. See `protocol.allow` above for the available policies. ++ +The protocol names currently used by git are: ++ +-- + - `file`: any local file-based path (including `file://` URLs, + or local paths) + + - `git`: the anonymous git protocol over a direct TCP + connection (or proxy, if configured) + + - `ssh`: git over ssh (including `host:path` syntax, + `ssh://`, etc). + + - `http`: git over http, both "smart http" and "dumb http". + Note that this does _not_ include `https`; if you want to configure + both, you must do so individually. + + - any external helpers are named by their protocol (e.g., use + `hg` to allow the `git-remote-hg` helper) +-- + pull.ff:: By default, Git does not create an extra merge commit when merging a commit that is a descendant of the current commit. Instead, the @@ -2930,6 +2989,11 @@ is omitted from the advertisements but `refs/heads/master` and `refs/namespaces/bar/refs/heads/master` are still advertised as so-called "have" lines. In order to match refs before stripping, add a `^` in front of the ref name. If you combine `!` and `^`, `!` must be specified first. ++ +Even if you hide refs, a client may still be able to steal the target +objects via the techniques described in the "SECURITY" section of the +linkgit:gitnamespaces[7] man page; it's best to keep private data in a +separate repository. transfer.unpackLimit:: When `fetch.unpackLimit` or `receive.unpackLimit` are @@ -2939,7 +3003,7 @@ transfer.unpackLimit:: uploadarchive.allowUnreachable:: If true, allow clients to use `git archive --remote` to request any tree, whether reachable from the ref tips or not. See the - discussion in the `SECURITY` section of + discussion in the "SECURITY" section of linkgit:git-upload-archive[1] for more details. Defaults to `false`. @@ -2953,12 +3017,23 @@ uploadpack.allowTipSHA1InWant:: When `uploadpack.hideRefs` is in effect, allow `upload-pack` to accept a fetch request that asks for an object at the tip of a hidden ref (by default, such a request is rejected). - see also `uploadpack.hideRefs`. + See also `uploadpack.hideRefs`. Even if this is false, a client + may be able to steal objects via the techniques described in the + "SECURITY" section of the linkgit:gitnamespaces[7] man page; it's + best to keep private data in a separate repository. uploadpack.allowReachableSHA1InWant:: Allow `upload-pack` to accept a fetch request that asks for an object that is reachable from any ref tip. However, note that calculating object reachability is computationally expensive. + Defaults to `false`. Even if this is false, a client may be able + to steal objects via the techniques described in the "SECURITY" + section of the linkgit:gitnamespaces[7] man page; it's best to + keep private data in a separate repository. + +uploadpack.allowAnySHA1InWant:: + Allow `upload-pack` to accept a fetch request that asks for any + object at all. Defaults to `false`. uploadpack.keepAlive:: diff --git a/Documentation/date-formats.txt b/Documentation/date-formats.txt index 35e8da2010..6926e0a4c8 100644 --- a/Documentation/date-formats.txt +++ b/Documentation/date-formats.txt @@ -11,7 +11,7 @@ Git internal format:: It is `<unix timestamp> <time zone offset>`, where `<unix timestamp>` is the number of seconds since the UNIX epoch. `<time zone offset>` is a positive or negative offset from UTC. - For example CET (which is 2 hours ahead UTC) is `+0200`. + For example CET (which is 1 hour ahead of UTC) is `+0100`. RFC 2822:: The standard email format as described by RFC 2822, for example diff --git a/Documentation/diff-config.txt b/Documentation/diff-config.txt index 58f4bd6afa..d8570f2a75 100644 --- a/Documentation/diff-config.txt +++ b/Documentation/diff-config.txt @@ -172,10 +172,8 @@ diff.tool:: include::mergetools-diff.txt[] diff.indentHeuristic:: -diff.compactionHeuristic:: - Set one of these options to `true` to enable one of two - experimental heuristics that shift diff hunk boundaries to - make patches easier to read. + Set this option to `true` to enable experimental heuristics + that shift diff hunk boundaries to make patches easier to read. diff.algorithm:: Choose a diff algorithm. The variants are as follows: diff --git a/Documentation/diff-heuristic-options.txt b/Documentation/diff-heuristic-options.txt index 36cb549df9..d4f3d95505 100644 --- a/Documentation/diff-heuristic-options.txt +++ b/Documentation/diff-heuristic-options.txt @@ -1,7 +1,5 @@ --indent-heuristic:: --no-indent-heuristic:: ---compaction-heuristic:: ---no-compaction-heuristic:: These are to help debugging and tuning experimental heuristics (which are off by default) that shift diff hunk boundaries to make patches easier to read. diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt index 1fe73448f3..5516a47b54 100644 --- a/Documentation/git-branch.txt +++ b/Documentation/git-branch.txt @@ -118,6 +118,10 @@ OPTIONS default to color output. Same as `--color=never`. +-i:: +--ignore-case:: + Sorting and filtering branches are case insensitive. + --column[=<options>]:: --no-column:: Display branch listing in columns. See configuration variable diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt index f2ab0ee2e7..4f8f20a360 100644 --- a/Documentation/git-commit.txt +++ b/Documentation/git-commit.txt @@ -265,7 +265,8 @@ FROM UPSTREAM REBASE" section in linkgit:git-rebase[1].) If this option is specified together with `--amend`, then no paths need to be specified, which can be used to amend the last commit without committing changes that have - already been staged. + already been staged. If used together with `--allow-empty` + paths are also not required, and an empty commit will be created. -u[<mode>]:: --untracked-files[=<mode>]:: diff --git a/Documentation/git-fetch-pack.txt b/Documentation/git-fetch-pack.txt index d45f6adc69..f7ebe36a7b 100644 --- a/Documentation/git-fetch-pack.txt +++ b/Documentation/git-fetch-pack.txt @@ -119,9 +119,9 @@ be in a separate packet, and the list must end with a flush packet. $GIT_DIR (e.g. "HEAD", "refs/heads/master"). When unspecified, update from all heads the remote side has. + -If the remote has enabled the options `uploadpack.allowTipSHA1InWant` or -`uploadpack.allowReachableSHA1InWant`, they may alternatively be 40-hex -sha1s present on the remote. +If the remote has enabled the options `uploadpack.allowTipSHA1InWant`, +`uploadpack.allowReachableSHA1InWant`, or `uploadpack.allowAnySHA1InWant`, +they may alternatively be 40-hex sha1s present on the remote. SEE ALSO -------- diff --git a/Documentation/git-fetch.txt b/Documentation/git-fetch.txt index 9e4216999d..b153aefa68 100644 --- a/Documentation/git-fetch.txt +++ b/Documentation/git-fetch.txt @@ -192,6 +192,8 @@ The first command fetches the `maint` branch from the repository at objects will eventually be removed by git's built-in housekeeping (see linkgit:git-gc[1]). +include::transfer-data-leaks.txt[] + BUGS ---- Using --recurse-submodules can only fetch new commits in already checked diff --git a/Documentation/git-for-each-ref.txt b/Documentation/git-for-each-ref.txt index f57e69bc83..abe13f3bed 100644 --- a/Documentation/git-for-each-ref.txt +++ b/Documentation/git-for-each-ref.txt @@ -79,6 +79,9 @@ OPTIONS Only list refs which contain the specified commit (HEAD if not specified). +--ignore-case:: + Sorting and filtering refs are case insensitive. + FIELD NAMES ----------- @@ -165,6 +168,8 @@ of all lines of the commit message up to the first blank line. The next line is 'contents:body', where body is all of the lines after the first blank line. The optional GPG signature is `contents:signature`. The first `N` lines of the message is obtained using `contents:lines=N`. +Additionally, the trailers as interpreted by linkgit:git-interpret-trailers[1] +are obtained as 'contents:trailers'. For sorting purposes, fields with numeric values sort in numeric order (`objectsize`, `authordate`, `committerdate`, `creatordate`, `taggerdate`). diff --git a/Documentation/git-gc.txt b/Documentation/git-gc.txt index bed60f471c..852b72c679 100644 --- a/Documentation/git-gc.txt +++ b/Documentation/git-gc.txt @@ -63,11 +63,10 @@ automatic consolidation of packs. --prune=<date>:: Prune loose objects older than date (default is 2 weeks ago, overridable by the config variable `gc.pruneExpire`). - --prune=all prunes loose objects regardless of their age (do - not use --prune=all unless you know exactly what you are doing. - Unless the repository is quiescent, you will lose newly created - objects that haven't been anchored with the refs and end up - corrupting your repository). --prune is on by default. + --prune=all prunes loose objects regardless of their age and + increases the risk of corruption if another process is writing to + the repository concurrently; see "NOTES" below. --prune is on by + default. --no-prune:: Do not prune any loose objects. @@ -138,17 +137,36 @@ default is "2 weeks ago". Notes ----- -'git gc' tries very hard to be safe about the garbage it collects. In +'git gc' tries very hard not to delete objects that are referenced +anywhere in your repository. In particular, it will keep not only objects referenced by your current set of branches and tags, but also objects referenced by the index, remote-tracking branches, refs saved by 'git filter-branch' in refs/original/, or reflogs (which may reference commits in branches that were later amended or rewound). - -If you are expecting some objects to be collected and they aren't, check +If you are expecting some objects to be deleted and they aren't, check all of those locations and decide whether it makes sense in your case to remove those references. +On the other hand, when 'git gc' runs concurrently with another process, +there is a risk of it deleting an object that the other process is using +but hasn't created a reference to. This may just cause the other process +to fail or may corrupt the repository if the other process later adds a +reference to the deleted object. Git has two features that significantly +mitigate this problem: + +. Any object with modification time newer than the `--prune` date is kept, + along with everything reachable from it. + +. Most operations that add an object to the database update the + modification time of the object if it is already present so that #1 + applies. + +However, these features fall short of a complete solution, so users who +run commands concurrently have to live with some risk of corruption (which +seems to be low in practice) unless they turn off automatic garbage +collection with 'git config gc.auto 0'. + HOOKS ----- diff --git a/Documentation/git-interpret-trailers.txt b/Documentation/git-interpret-trailers.txt index e99bda6add..09074c75a4 100644 --- a/Documentation/git-interpret-trailers.txt +++ b/Documentation/git-interpret-trailers.txt @@ -49,7 +49,8 @@ will be added before the new trailer. Existing trailers are extracted from the input message by looking for a group of one or more lines that (i) are all trailers, or (ii) contains at -least one Git-generated trailer and consists of at least 25% trailers. +least one Git-generated or user-configured trailer and consists of at +least 25% trailers. The group must be preceded by one or more empty (or whitespace-only) lines. The group must either be at the end of the message or be the last non-whitespace lines before a line that starts with '---'. Such three diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt index b758d5556c..ca3c27b88a 100644 --- a/Documentation/git-merge.txt +++ b/Documentation/git-merge.txt @@ -15,6 +15,7 @@ SYNOPSIS [--[no-]rerere-autoupdate] [-m <msg>] [<commit>...] 'git merge' <msg> HEAD <commit>... 'git merge' --abort +'git merge' --continue DESCRIPTION ----------- @@ -61,6 +62,8 @@ reconstruct the original (pre-merge) changes. Therefore: discouraged: while possible, it may leave you in a state that is hard to back out of in the case of a conflict. +The fourth syntax ("`git merge --continue`") can only be run after the +merge has resulted in conflicts. OPTIONS ------- @@ -99,6 +102,11 @@ commit or stash your changes before running 'git merge'. 'git merge --abort' is equivalent to 'git reset --merge' when `MERGE_HEAD` is present. +--continue:: + After a 'git merge' stops due to conflicts you can conclude the + merge by running 'git merge --continue' (see "HOW TO RESOLVE + CONFLICTS" section below). + <commit>...:: Commits, usually other branch heads, to merge into our branch. Specifying more than one commit will create a merge with diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt index c83aaf39c3..bae862ddcb 100644 --- a/Documentation/git-p4.txt +++ b/Documentation/git-p4.txt @@ -303,6 +303,15 @@ These options can be used to modify 'git p4 submit' behavior. submit manually or revert. This option always stops after the first (oldest) commit. Git tags are not exported to p4. +--shelve:: + Instead of submitting create a series of shelved changelists. + After creating each shelve, the relevant files are reverted/deleted. + If you have multiple commits pending multiple shelves will be created. + +--update-shelve CHANGELIST:: + Update an existing shelved changelist with this commit. Implies + --shelve. + --conflict=(ask|skip|quit):: Conflicts can occur when applying a commit to p4. When this happens, the default behavior ("ask") is to prompt whether to @@ -467,6 +476,10 @@ git-p4.client:: Client specified as an option to all p4 commands, with '-c <client>', including the client spec. +git-p4.retries:: + Specifies the number of times to retry a p4 command (notably, + 'p4 sync') if the network times out. The default value is 3. + Clone and sync variables ~~~~~~~~~~~~~~~~~~~~~~~~ git-p4.syncFromOrigin:: diff --git a/Documentation/git-pull.txt b/Documentation/git-pull.txt index d033b258e5..4470e4b574 100644 --- a/Documentation/git-pull.txt +++ b/Documentation/git-pull.txt @@ -237,6 +237,8 @@ If you tried a pull which resulted in complex conflicts and would want to start over, you can recover with 'git reset'. +include::transfer-data-leaks.txt[] + BUGS ---- Using --recurse-submodules can only fetch new commits in already checked diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt index 47b77e693b..8eefabd0d1 100644 --- a/Documentation/git-push.txt +++ b/Documentation/git-push.txt @@ -559,6 +559,8 @@ Commits A and B would no longer belong to a branch with a symbolic name, and so would be unreachable. As such, these commits would be removed by a `git gc` command on the origin repository. +include::transfer-data-leaks.txt[] + GIT --- Part of the linkgit:git[1] suite diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index de222c81af..67d48e6883 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -12,7 +12,7 @@ SYNOPSIS [<upstream> [<branch>]] 'git rebase' [-i | --interactive] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>] -'git rebase' --continue | --skip | --abort | --edit-todo +'git rebase' --continue | --skip | --abort | --quit | --edit-todo DESCRIPTION ----------- @@ -252,6 +252,11 @@ leave out at most one of A and B, in which case it defaults to HEAD. will be reset to where it was when the rebase operation was started. +--quit:: + Abort the rebase operation but HEAD is not reset back to the + original branch. The index and working tree are also left + unchanged as a result. + --keep-empty:: Keep the commits that do not change anything from its parents in the result. diff --git a/Documentation/git-shortlog.txt b/Documentation/git-shortlog.txt index 31af7f2736..ee6c5476c1 100644 --- a/Documentation/git-shortlog.txt +++ b/Documentation/git-shortlog.txt @@ -47,6 +47,10 @@ OPTIONS Each pretty-printed commit will be rewrapped before it is shown. +-c:: +--committer:: + Collect and show committer identities instead of authors. + -w[<width>[,<indent1>[,<indent2>]]]:: Linewrap the output by wrapping each line at `width`. The first line of each entry is indented by `indent1` spaces, and the second diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt index 5f9e65b0c4..9bee9b0c4c 100644 --- a/Documentation/git-svn.txt +++ b/Documentation/git-svn.txt @@ -664,13 +664,19 @@ creating the branch or tag. When retrieving svn commits into Git (as part of 'fetch', 'rebase', or 'dcommit' operations), look for the first `From:` or `Signed-off-by:` line in the log message and use that as the author string. ++ +[verse] +config key: svn.useLogAuthor + --add-author-from:: When committing to svn from Git (as part of 'commit-diff', 'set-tree' or 'dcommit' operations), if the existing log message doesn't already have a `From:` or `Signed-off-by:` line, append a `From:` line based on the Git commit's author string. If you use this, then `--use-log-author` will retrieve a valid author string for all commits. - ++ +[verse] +config key: svn.addAuthorFrom ADVANCED OPTIONS ---------------- diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt index 80019c584b..76cfe40d96 100644 --- a/Documentation/git-tag.txt +++ b/Documentation/git-tag.txt @@ -108,6 +108,10 @@ OPTIONS variable if it exists, or lexicographic order otherwise. See linkgit:git-config[1]. +-i:: +--ignore-case:: + Sorting and filtering tags are case insensitive. + --column[=<options>]:: --no-column:: Display tag listing in columns. See configuration variable diff --git a/Documentation/git.txt b/Documentation/git.txt index ab7215eee2..ba222f68cc 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -44,6 +44,11 @@ unreleased) version of Git, that is available from the 'master' branch of the `git.git` repository. Documentation for older releases are available here: +* link:v2.11.0/git.html[documentation for release 2.11] + +* release notes for + link:RelNotes/2.11.0.txt[2.11]. + * link:v2.10.2/git.html[documentation for release 2.10.2] * release notes for @@ -866,6 +871,12 @@ Git so take care if using a foreign front-end. specifies a ":" separated (on Windows ";" separated) list of Git object directories which can be used to search for Git objects. New objects will not be written to these directories. ++ + Entries that begin with `"` (double-quote) will be interpreted + as C-style quoted paths, removing leading and trailing + double-quotes and respecting backslash escapes. E.g., the value + `"path-with-\"-and-:-in-it":vanilla-path` has two paths: + `path-with-"-and-:-in-it` and `vanilla-path`. `GIT_DIR`:: If the `GIT_DIR` environment variable is set then it @@ -1150,30 +1161,20 @@ of clones and fetches. cloning a repository to make a backup). `GIT_ALLOW_PROTOCOL`:: - If set, provide a colon-separated list of protocols which are - allowed to be used with fetch/push/clone. This is useful to - restrict recursive submodule initialization from an untrusted - repository. Any protocol not mentioned will be disallowed (i.e., - this is a whitelist, not a blacklist). If the variable is not - set at all, all protocols are enabled. The protocol names - currently used by git are: - - - `file`: any local file-based path (including `file://` URLs, - or local paths) - - - `git`: the anonymous git protocol over a direct TCP - connection (or proxy, if configured) - - - `ssh`: git over ssh (including `host:path` syntax, - `ssh://`, etc). - - - `http`: git over http, both "smart http" and "dumb http". - Note that this does _not_ include `https`; if you want both, - you should specify both as `http:https`. - - - any external helpers are named by their protocol (e.g., use - `hg` to allow the `git-remote-hg` helper) - + If set to a colon-separated list of protocols, behave as if + `protocol.allow` is set to `never`, and each of the listed + protocols has `protocol.<name>.allow` set to `always` + (overriding any existing configuration). In other words, any + protocol not mentioned will be disallowed (i.e., this is a + whitelist, not a blacklist). See the description of + `protocol.allow` in linkgit:git-config[1] for more details. + +`GIT_PROTOCOL_FROM_USER`:: + Set to 0 to prevent protocols used by fetch/push/clone which are + configured to the `user` state. This is useful to restrict recursive + submodule initialization from an untrusted repository or for programs + which feed potentially-untrusted URLS to git commands. See + linkgit:git-config[1] for more details. Discussion[[Discussion]] ------------------------ diff --git a/Documentation/gitattributes.txt b/Documentation/gitattributes.txt index 976243a63e..e0b66c1220 100644 --- a/Documentation/gitattributes.txt +++ b/Documentation/gitattributes.txt @@ -435,7 +435,9 @@ to filter relative to the repository root. Right after the flush packet Git sends the content split in zero or more pkt-line packets and a flush packet to terminate content. Please note, that the filter must not send any response before it received the content and the -final flush packet. +final flush packet. Also note that the "value" of a "key=value" pair +can contain the "=" character whereas the key would never contain +that character. ------------------------ packet: git> command=smudge packet: git> pathname=path/testfile.dat diff --git a/Documentation/gitcore-tutorial.txt b/Documentation/gitcore-tutorial.txt index 4546fa0d75..22309cfb48 100644 --- a/Documentation/gitcore-tutorial.txt +++ b/Documentation/gitcore-tutorial.txt @@ -25,7 +25,7 @@ you want to understand Git's internals. The core Git is often called "plumbing", with the prettier user interfaces on top of it called "porcelain". You may not want to use the plumbing directly very often, but it can be good to know what the -plumbing does for when the porcelain isn't flushing. +plumbing does when the porcelain isn't flushing. Back when this document was originally written, many porcelain commands were shell scripts. For simplicity, it still uses them as @@ -1368,7 +1368,7 @@ $ git repack will do it for you. If you followed the tutorial examples, you would have accumulated about 17 objects in `.git/objects/??/` directories by now. 'git repack' tells you how many objects it -packed, and stores the packed file in `.git/objects/pack` +packed, and stores the packed file in the `.git/objects/pack` directory. [NOTE] @@ -1478,7 +1478,7 @@ You can repack this private repository whenever you feel like. A recommended work cycle for a "subsystem maintainer" who works on that project and has an own "public repository" goes like this: -1. Prepare your work repository, by 'git clone' the public +1. Prepare your work repository, by running 'git clone' on the public repository of the "project lead". The URL used for the initial cloning is stored in the remote.origin.url configuration variable. @@ -1543,9 +1543,9 @@ like this: Working with Others, Shared Repository Style -------------------------------------------- -If you are coming from CVS background, the style of cooperation +If you are coming from a CVS background, the style of cooperation suggested in the previous section may be new to you. You do not -have to worry. Git supports "shared public repository" style of +have to worry. Git supports the "shared public repository" style of cooperation you are probably more familiar with as well. See linkgit:gitcvs-migration[7] for the details. @@ -1635,7 +1635,7 @@ $ git show-branch ++* [master~2] Pretty-print messages. ------------ -Note that you should not do Octopus because you can. An octopus +Note that you should not do Octopus just because you can. An octopus is a valid thing to do and often makes it easier to view the commit history if you are merging more than two independent changes at the same time. However, if you have merge conflicts diff --git a/Documentation/gitnamespaces.txt b/Documentation/gitnamespaces.txt index 7685e3651a..b614969ad2 100644 --- a/Documentation/gitnamespaces.txt +++ b/Documentation/gitnamespaces.txt @@ -61,22 +61,4 @@ For a simple local test, you can use linkgit:git-remote-ext[1]: git clone ext::'git --namespace=foo %s /tmp/prefixed.git' ---------- -SECURITY --------- - -Anyone with access to any namespace within a repository can potentially -access objects from any other namespace stored in the same repository. -You can't directly say "give me object ABCD" if you don't have a ref to -it, but you can do some other sneaky things like: - -. Claiming to push ABCD, at which point the server will optimize out the - need for you to actually send it. Now you have a ref to ABCD and can - fetch it (claiming not to have it, of course). - -. Requesting other refs, claiming that you have ABCD, at which point the - server may generate deltas against ABCD. - -None of this causes a problem if you only host public repositories, or -if everyone who may read one namespace may also read everything in every -other namespace (for instance, if everyone in an organization has read -permission to every repository). +include::transfer-data-leaks.txt[] diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt index 3bcee2ddb1..47b286b33e 100644 --- a/Documentation/pretty-formats.txt +++ b/Documentation/pretty-formats.txt @@ -199,6 +199,8 @@ endif::git-rev-list[] than given and there are spaces on its left, use those spaces - '%><(<N>)', '%><|(<N>)': similar to '% <(<N>)', '%<|(<N>)' respectively, but padding both sides (i.e. the text is centered) +-%(trailers): display the trailers of the body as interpreted by + linkgit:git-interpret-trailers[1] NOTE: Some placeholders may depend on other options given to the revision traversal engine. For example, the `%g*` reflog options will diff --git a/Documentation/technical/api-submodule-config.txt b/Documentation/technical/api-submodule-config.txt index 941fa178dd..3dce003fda 100644 --- a/Documentation/technical/api-submodule-config.txt +++ b/Documentation/technical/api-submodule-config.txt @@ -47,16 +47,20 @@ Functions Can be passed to the config parsing infrastructure to parse local (worktree) submodule configurations. -`const struct submodule *submodule_from_path(const unsigned char *commit_sha1, const char *path)`:: +`const struct submodule *submodule_from_path(const unsigned char *treeish_name, const char *path)`:: - Lookup values for one submodule by its commit_sha1 and path. + Given a tree-ish in the superproject and a path, return the + submodule that is bound at the path in the named tree. -`const struct submodule *submodule_from_name(const unsigned char *commit_sha1, const char *name)`:: +`const struct submodule *submodule_from_name(const unsigned char *treeish_name, const char *name)`:: The same as above but lookup by name. -If given the null_sha1 as commit_sha1 the local configuration of a -submodule will be returned (e.g. consolidated values from local git +Whenever a submodule configuration is parsed in `parse_submodule_config_option` +via e.g. `gitmodules_config()`, it will overwrite the null_sha1 entry. +So in the normal case, when HEAD:.gitmodules is parsed first and then overlayed +with the repository configuration, the null_sha1 entry contains the local +configuration of a submodule (e.g. consolidated values from local git configuration and the .gitmodules file in the worktree). For an example usage see test-submodule-config.c. diff --git a/Documentation/transfer-data-leaks.txt b/Documentation/transfer-data-leaks.txt new file mode 100644 index 0000000000..914bacc39e --- /dev/null +++ b/Documentation/transfer-data-leaks.txt @@ -0,0 +1,30 @@ +SECURITY +-------- +The fetch and push protocols are not designed to prevent one side from +stealing data from the other repository that was not intended to be +shared. If you have private data that you need to protect from a malicious +peer, your best option is to store it in another repository. This applies +to both clients and servers. In particular, namespaces on a server are not +effective for read access control; you should only grant read access to a +namespace to clients that you would trust with read access to the entire +repository. + +The known attack vectors are as follows: + +. The victim sends "have" lines advertising the IDs of objects it has that + are not explicitly intended to be shared but can be used to optimize the + transfer if the peer also has them. The attacker chooses an object ID X + to steal and sends a ref to X, but isn't required to send the content of + X because the victim already has it. Now the victim believes that the + attacker has X, and it sends the content of X back to the attacker + later. (This attack is most straightforward for a client to perform on a + server, by creating a ref to X in the namespace the client has access + to and then fetching it. The most likely way for a server to perform it + on a client is to "merge" X into a public branch and hope that the user + does additional work on this branch and pushes it back to the server + without noticing the merge.) + +. As in #1, the attacker chooses an object ID X to steal. The victim sends + an object Y that the attacker already has, and the attacker falsely + claims to have X and not Y, so the victim sends Y as a delta against X. + The delta reveals regions of X that are similar to Y to the attacker. diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index fdd0a2d321..f95b04bb36 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v2.11.0-rc2 +DEF_VER=v2.11.GIT LF=' ' @@ -12,7 +12,7 @@ if test -f version then VN=$(cat version) || VN="$DEF_VER" elif test -d ${GIT_DIR:-.git} -o -f .git && - VN=$(git describe --match "v[0-9]*" --abbrev=7 HEAD 2>/dev/null) && + VN=$(git describe --match "v[0-9]*" HEAD 2>/dev/null) && case "$VN" in *$LF*) (exit 1) ;; v[0-9]*) @@ -338,11 +338,6 @@ all:: # # Define NATIVE_CRLF if your platform uses CRLF for line endings. # -# Define XDL_FAST_HASH to use an alternative line-hashing method in -# the diff algorithm. It gives a nice speedup if your processor has -# fast unaligned word loads. Does NOT work on big-endian systems! -# Enabled by default on x86_64. -# # Define GIT_USER_AGENT if you want to change how git identifies itself during # network interactions. The default is "git/$(GIT_VERSION)". # @@ -1485,10 +1480,6 @@ ifndef NO_MSGFMT_EXTENDED_OPTIONS MSGFMT += --check --statistics endif -ifneq (,$(XDL_FAST_HASH)) - BASIC_CFLAGS += -DXDL_FAST_HASH -endif - ifdef GMTIME_UNRELIABLE_ERRORS COMPAT_OBJS += compat/gmtime.o BASIC_CFLAGS += -DGMTIME_UNRELIABLE_ERRORS @@ -2114,7 +2105,8 @@ XGETTEXT_FLAGS_C = $(XGETTEXT_FLAGS) --language=C \ --keyword=_ --keyword=N_ --keyword="Q_:1,2" XGETTEXT_FLAGS_SH = $(XGETTEXT_FLAGS) --language=Shell \ --keyword=gettextln --keyword=eval_gettextln -XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --keyword=__ --language=Perl +XGETTEXT_FLAGS_PERL = $(XGETTEXT_FLAGS) --language=Perl \ + --keyword=__ --keyword=N__ --keyword="__n:1,2" LOCALIZED_C = $(C_OBJ:o=c) $(LIB_H) $(GENERATED_H) LOCALIZED_SH = $(SCRIPT_SH) LOCALIZED_SH += git-parse-remote.sh @@ -2149,9 +2141,22 @@ endif po/build/locale/%/LC_MESSAGES/git.mo: po/%.po $(QUIET_MSGFMT)mkdir -p $(dir $@) && $(MSGFMT) -o $@ $< -FIND_SOURCE_FILES = ( git ls-files '*.[hcS]' 2>/dev/null || \ - $(FIND) . \( -name .git -type d -prune \) \ - -o \( -name '*.[hcS]' -type f -print \) ) +FIND_SOURCE_FILES = ( \ + git ls-files \ + '*.[hcS]' \ + '*.sh' \ + ':!*[tp][0-9][0-9][0-9][0-9]*' \ + ':!contrib' \ + 2>/dev/null || \ + $(FIND) . \ + \( -name .git -type d -prune \) \ + -o \( -name '[tp][0-9][0-9][0-9][0-9]*' -prune \) \ + -o \( -name contrib -type d -prune \) \ + -o \( -name build -type d -prune \) \ + -o \( -name 'trash*' -type d -prune \) \ + -o \( -name '*.[hcS]' -type f -print \) \ + -o \( -name '*.sh' -type f -print \) \ + ) $(ETAGS_TARGET): FORCE $(RM) $(ETAGS_TARGET) @@ -33,7 +33,7 @@ requests, comments and patches to git@vger.kernel.org (read [Documentation/SubmittingPatches][] for instructions on patch submission). To subscribe to the list, send an email with just "subscribe git" in the body to majordomo@vger.kernel.org. The mailing list archives are -available at http://news.gmane.org/gmane.comp.version-control.git/, +available at https://public-inbox.org/git, http://marc.info/?l=git and other archival sites. The maintainer frequently sends the "What's cooking" reports that @@ -1 +1 @@ -Documentation/RelNotes/2.11.0.txt
\ No newline at end of file +Documentation/RelNotes/2.12.0.txt
\ No newline at end of file @@ -4688,7 +4688,7 @@ static int apply_patch(struct apply_state *state, state->index_file, LOCK_DIE_ON_ERROR); else - state->newfd = hold_locked_index(state->lock_file, 1); + state->newfd = hold_locked_index(state->lock_file, LOCK_DIE_ON_ERROR); } if (state->check_index && read_apply_cache(state) < 0) { @@ -504,15 +504,11 @@ static int parse_archive_args(int argc, const char **argv, } int write_archive(int argc, const char **argv, const char *prefix, - int setup_prefix, const char *name_hint, int remote) + const char *name_hint, int remote) { - int nongit = 0; const struct archiver *ar = NULL; struct archiver_args args; - if (setup_prefix && prefix == NULL) - prefix = setup_git_directory_gently(&nongit); - git_config_get_bool("uploadarchive.allowunreachable", &remote_allow_unreachable); git_config(git_default_config, NULL); @@ -520,7 +516,7 @@ int write_archive(int argc, const char **argv, const char *prefix, init_zip_archiver(); argc = parse_archive_args(argc, argv, &ar, &args, name_hint, remote); - if (nongit) { + if (!startup_info->have_repository) { /* * We know this will die() with an error, so we could just * die ourselves; but its error message will be more specific @@ -36,7 +36,7 @@ typedef int (*write_archive_entry_fn_t)(struct archiver_args *args, unsigned int mode); extern int write_archive_entries(struct archiver_args *args, write_archive_entry_fn_t write_entry); -extern int write_archive(int argc, const char **argv, const char *prefix, int setup_prefix, const char *name_hint, int remote); +extern int write_archive(int argc, const char **argv, const char *prefix, const char *name_hint, int remote); const char *archive_format_from_filename(const char *filename); extern void *sha1_file_to_archive(const struct archiver_args *args, @@ -747,7 +747,7 @@ static void handle_bad_merge_base(void) exit(3); } - fprintf(stderr, _("Some %s revs are not ancestor of the %s rev.\n" + fprintf(stderr, _("Some %s revs are not ancestors of the %s rev.\n" "git bisect cannot work properly in this case.\n" "Maybe you mistook %s and %s revs?\n"), term_good, term_bad, term_good, term_bad); diff --git a/builtin/add.c b/builtin/add.c index e8fb80b36e..9f53f020d0 100644 --- a/builtin/add.c +++ b/builtin/add.c @@ -361,7 +361,7 @@ int cmd_add(int argc, const char **argv, const char *prefix) add_new_files = !take_worktree_changes && !refresh_only; require_pathspec = !(take_worktree_changes || (0 < addremove_explicit)); - hold_locked_index(&lock_file, 1); + hold_locked_index(&lock_file, LOCK_DIE_ON_ERROR); flags = ((verbose ? ADD_CACHE_VERBOSE : 0) | (show_only ? ADD_CACHE_PRETEND : 0) | diff --git a/builtin/am.c b/builtin/am.c index 6981f42ce9..31fb60578f 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -1119,7 +1119,7 @@ static void refresh_and_write_cache(void) { struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file)); - hold_locked_index(lock_file, 1); + hold_locked_index(lock_file, LOCK_DIE_ON_ERROR); refresh_cache(REFRESH_QUIET); if (write_locked_index(&the_index, lock_file, COMMIT_LOCK)) die(_("unable to write index file")); @@ -1976,7 +1976,7 @@ static int fast_forward_to(struct tree *head, struct tree *remote, int reset) return -1; lock_file = xcalloc(1, sizeof(struct lock_file)); - hold_locked_index(lock_file, 1); + hold_locked_index(lock_file, LOCK_DIE_ON_ERROR); refresh_cache(REFRESH_QUIET); @@ -2016,7 +2016,7 @@ static int merge_tree(struct tree *tree) return -1; lock_file = xcalloc(1, sizeof(struct lock_file)); - hold_locked_index(lock_file, 1); + hold_locked_index(lock_file, LOCK_DIE_ON_ERROR); memset(&opts, 0, sizeof(opts)); opts.head_idx = 1; @@ -2124,7 +2124,7 @@ static int safe_to_abort(const struct am_state *state) if (read_state_file(&sb, state, "abort-safety", 1) > 0) { if (get_oid_hex(sb.buf, &abort_safety)) - die(_("could not parse %s"), am_path(state, "abort_safety")); + die(_("could not parse %s"), am_path(state, "abort-safety")); } else oidclr(&abort_safety); @@ -2134,7 +2134,7 @@ static int safe_to_abort(const struct am_state *state) if (!oidcmp(&head, &abort_safety)) return 1; - error(_("You seem to have moved HEAD since the last 'am' failure.\n" + warning(_("You seem to have moved HEAD since the last 'am' failure.\n" "Not rewinding to ORIG_HEAD")); return 0; diff --git a/builtin/archive.c b/builtin/archive.c index 49f491413a..f863465a0f 100644 --- a/builtin/archive.c +++ b/builtin/archive.c @@ -85,8 +85,8 @@ int cmd_archive(int argc, const char **argv, const char *prefix) const char *output = NULL; const char *remote = NULL; struct option local_opts[] = { - OPT_STRING('o', "output", &output, N_("file"), - N_("write the archive to this file")), + OPT_FILENAME('o', "output", &output, + N_("write the archive to this file")), OPT_STRING(0, "remote", &remote, N_("repo"), N_("retrieve the archive from remote repository <repo>")), OPT_STRING(0, "exec", &exec, N_("command"), @@ -105,5 +105,5 @@ int cmd_archive(int argc, const char **argv, const char *prefix) setvbuf(stderr, NULL, _IOLBF, BUFSIZ); - return write_archive(argc, argv, prefix, 1, output, 0); + return write_archive(argc, argv, prefix, output, 0); } diff --git a/builtin/blame.c b/builtin/blame.c index 4ddfadb71f..ab54a5c1f4 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -2596,8 +2596,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix) * and are only included here to get included in the "-h" * output: */ - { OPTION_LOWLEVEL_CALLBACK, 0, "indent-heuristic", NULL, NULL, N_("Use an experimental indent-based heuristic to improve diffs"), PARSE_OPT_NOARG, parse_opt_unknown_cb }, - { OPTION_LOWLEVEL_CALLBACK, 0, "compaction-heuristic", NULL, NULL, N_("Use an experimental blank-line-based heuristic to improve diffs"), PARSE_OPT_NOARG, parse_opt_unknown_cb }, + { OPTION_LOWLEVEL_CALLBACK, 0, "indent-heuristic", NULL, NULL, N_("Use an experimental heuristic to improve diffs"), PARSE_OPT_NOARG, parse_opt_unknown_cb }, OPT_BIT(0, "minimal", &xdl_opts, N_("Spend extra cycles to find better match"), XDF_NEED_MINIMAL), OPT_STRING('S', NULL, &revs_file, N_("file"), N_("Use revisions from <file> instead of calling git-rev-list")), @@ -2645,7 +2644,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix) } parse_done: no_whole_file_rename = !DIFF_OPT_TST(&revs.diffopt, FOLLOW_RENAMES); - xdl_opts |= revs.diffopt.xdl_opts & (XDF_COMPACTION_HEURISTIC | XDF_INDENT_HEURISTIC); + xdl_opts |= revs.diffopt.xdl_opts & XDF_INDENT_HEURISTIC; DIFF_OPT_CLR(&revs.diffopt, FOLLOW_RENAMES); argc = parse_options_end(&ctx); diff --git a/builtin/branch.c b/builtin/branch.c index 475707528a..9d30f55b0b 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -512,15 +512,6 @@ static void print_ref_list(struct ref_filter *filter, struct ref_sorting *sortin if (filter->verbose) maxwidth = calc_maxwidth(&array, strlen(remote_prefix)); - /* - * If no sorting parameter is given then we default to sorting - * by 'refname'. This would give us an alphabetically sorted - * array with the 'HEAD' ref at the beginning followed by - * local branches 'refs/heads/...' and finally remote-tacking - * branches 'refs/remotes/...'. - */ - if (!sorting) - sorting = ref_default_sorting(); ref_array_sort(sorting, &array); for (i = 0; i < array.nr; i++) @@ -645,6 +636,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix) const char *new_upstream = NULL; enum branch_track track; struct ref_filter filter; + int icase = 0; static struct ref_sorting *sorting = NULL, **sorting_tail = &sorting; struct option options[] = { @@ -686,6 +678,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix) OPTION_CALLBACK, 0, "points-at", &filter.points_at, N_("object"), N_("print only branches of the object"), 0, parse_opt_object_name }, + OPT_BOOL('i', "ignore-case", &icase, N_("sorting and filtering are case insensitive")), OPT_END(), }; @@ -723,6 +716,8 @@ int cmd_branch(int argc, const char **argv, const char *prefix) if (filter.abbrev == -1) filter.abbrev = DEFAULT_ABBREV; + filter.ignore_case = icase; + finalize_colopts(&colopts, -1); if (filter.verbose) { if (explicitly_enable_column(colopts)) @@ -744,6 +739,16 @@ int cmd_branch(int argc, const char **argv, const char *prefix) if ((filter.kind & FILTER_REFS_BRANCHES) && filter.detached) filter.kind |= FILTER_REFS_DETACHED_HEAD; filter.name_patterns = argv; + /* + * If no sorting parameter is given then we default to sorting + * by 'refname'. This would give us an alphabetically sorted + * array with the 'HEAD' ref at the beginning followed by + * local branches 'refs/heads/...' and finally remote-tacking + * branches 'refs/remotes/...'. + */ + if (!sorting) + sorting = ref_default_sorting(); + sorting->ignore_case = icase; print_ref_list(&filter, sorting); print_columns(&output, colopts, NULL); string_list_clear(&output, 0); diff --git a/builtin/checkout-index.c b/builtin/checkout-index.c index 30a49d9f42..07631d0c9c 100644 --- a/builtin/checkout-index.c +++ b/builtin/checkout-index.c @@ -205,7 +205,7 @@ int cmd_checkout_index(int argc, const char **argv, const char *prefix) if (index_opt && !state.base_dir_len && !to_tempfile) { state.refresh_cache = 1; state.istate = &the_index; - newfd = hold_locked_index(&lock_file, 1); + newfd = hold_locked_index(&lock_file, LOCK_DIE_ON_ERROR); } /* Check out named files first */ diff --git a/builtin/checkout.c b/builtin/checkout.c index 512492aad9..bfe685c198 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -274,7 +274,7 @@ static int checkout_paths(const struct checkout_opts *opts, lock_file = xcalloc(1, sizeof(struct lock_file)); - hold_locked_index(lock_file, 1); + hold_locked_index(lock_file, LOCK_DIE_ON_ERROR); if (read_cache_preload(&opts->pathspec) < 0) return error(_("index file corrupt")); @@ -467,7 +467,7 @@ static int merge_working_tree(const struct checkout_opts *opts, int ret; struct lock_file *lock_file = xcalloc(1, sizeof(struct lock_file)); - hold_locked_index(lock_file, 1); + hold_locked_index(lock_file, LOCK_DIE_ON_ERROR); if (read_cache_preload(NULL) < 0) return error(_("index file corrupt")); diff --git a/builtin/clean.c b/builtin/clean.c index 0371010afb..d6bc3aaaea 100644 --- a/builtin/clean.c +++ b/builtin/clean.c @@ -287,11 +287,11 @@ static void pretty_print_menus(struct string_list *menu_list) static void prompt_help_cmd(int singleton) { clean_print_color(CLEAN_COLOR_HELP); - printf_ln(singleton ? + printf(singleton ? _("Prompt help:\n" "1 - select a numbered item\n" "foo - select item based on unique prefix\n" - " - (empty) select nothing") : + " - (empty) select nothing\n") : _("Prompt help:\n" "1 - select a single item\n" "3-5 - select a range of items\n" @@ -299,7 +299,7 @@ static void prompt_help_cmd(int singleton) "foo - select item based on unique prefix\n" "-... - unselect specified items\n" "* - choose all items\n" - " - (empty) finish selecting")); + " - (empty) finish selecting\n")); clean_print_color(CLEAN_COLOR_RESET); } @@ -508,7 +508,7 @@ static int parse_choice(struct menu_stuff *menu_stuff, if (top <= 0 || bottom <= 0 || top > menu_stuff->nr || bottom > top || (is_single && bottom != top)) { clean_print_color(CLEAN_COLOR_ERROR); - printf_ln(_("Huh (%s)?"), (*ptr)->buf); + printf(_("Huh (%s)?\n"), (*ptr)->buf); clean_print_color(CLEAN_COLOR_RESET); continue; } @@ -774,7 +774,7 @@ static int ask_each_cmd(void) static int quit_cmd(void) { string_list_clear(&del_list, 0); - printf_ln(_("Bye.")); + printf(_("Bye.\n")); return MENU_RETURN_NO_LOOP; } diff --git a/builtin/clone.c b/builtin/clone.c index 6c76a6ed66..5ef81927a6 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -99,7 +99,7 @@ static struct option builtin_clone_options[] = { OPT_STRING(0, "shallow-since", &option_since, N_("time"), N_("create a shallow clone since a specific time")), OPT_STRING_LIST(0, "shallow-exclude", &option_not, N_("revision"), - N_("deepen history of shallow clone by excluding rev")), + N_("deepen history of shallow clone, excluding rev")), OPT_BOOL(0, "single-branch", &option_single_branch, N_("clone only one branch, HEAD or --branch")), OPT_BOOL(0, "shallow-submodules", &option_shallow_submodules, @@ -711,7 +711,7 @@ static int checkout(int submodule_progress) setup_work_tree(); lock_file = xcalloc(1, sizeof(struct lock_file)); - hold_locked_index(lock_file, 1); + hold_locked_index(lock_file, LOCK_DIE_ON_ERROR); memset(&opts, 0, sizeof opts); opts.update = 1; diff --git a/builtin/commit.c b/builtin/commit.c index 8976c3d29b..711f96cc43 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -351,7 +351,7 @@ static const char *prepare_index(int argc, const char **argv, const char *prefix if (interactive) { char *old_index_env = NULL; - hold_locked_index(&index_lock, 1); + hold_locked_index(&index_lock, LOCK_DIE_ON_ERROR); refresh_cache_or_die(refresh_flags); @@ -396,7 +396,7 @@ static const char *prepare_index(int argc, const char **argv, const char *prefix * (B) on failure, rollback the real index. */ if (all || (also && pathspec.nr)) { - hold_locked_index(&index_lock, 1); + hold_locked_index(&index_lock, LOCK_DIE_ON_ERROR); add_files_to_cache(also ? prefix : NULL, &pathspec, 0); refresh_cache_or_die(refresh_flags); update_main_cache_tree(WRITE_TREE_SILENT); @@ -416,7 +416,7 @@ static const char *prepare_index(int argc, const char **argv, const char *prefix * We still need to refresh the index here. */ if (!only && !pathspec.nr) { - hold_locked_index(&index_lock, 1); + hold_locked_index(&index_lock, LOCK_DIE_ON_ERROR); refresh_cache_or_die(refresh_flags); if (active_cache_changed || !cache_tree_fully_valid(active_cache_tree)) @@ -468,7 +468,7 @@ static const char *prepare_index(int argc, const char **argv, const char *prefix if (read_cache() < 0) die(_("cannot read the index")); - hold_locked_index(&index_lock, 1); + hold_locked_index(&index_lock, LOCK_DIE_ON_ERROR); add_remove_files(&partial); refresh_cache(REFRESH_QUIET); update_main_cache_tree(WRITE_TREE_SILENT); @@ -790,7 +790,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix, strbuf_stripspace(&sb, 0); if (signoff) - append_signoff(&sb, ignore_non_trailer(&sb), 0); + append_signoff(&sb, ignore_non_trailer(sb.buf, sb.len), 0); if (fwrite(sb.buf, 1, sb.len, s->fp) < sb.len) die_errno(_("could not write commit template")); @@ -1206,10 +1206,8 @@ static int parse_and_validate_options(int argc, const char *argv[], if (also + only + all + interactive > 1) die(_("Only one of --include/--only/--all/--interactive/--patch can be used.")); - if (argc == 0 && (also || (only && !amend))) + if (argc == 0 && (also || (only && !amend && !allow_empty))) die(_("No paths with --include/--only does not make sense.")); - if (argc == 0 && only && amend) - only_include_assumed = _("Clever... amending the last one with dirty index."); if (argc > 0 && !also && !only) only_include_assumed = _("Explicit paths specified without -i or -o; assuming --only paths..."); if (!cleanup_arg || !strcmp(cleanup_arg, "default")) diff --git a/builtin/fetch.c b/builtin/fetch.c index b6a5597cbf..f1570e3464 100644 --- a/builtin/fetch.c +++ b/builtin/fetch.c @@ -122,7 +122,7 @@ static struct option builtin_fetch_options[] = { OPT_STRING(0, "shallow-since", &deepen_since, N_("time"), N_("deepen history of shallow repository based on time")), OPT_STRING_LIST(0, "shallow-exclude", &deepen_not, N_("revision"), - N_("deepen history of shallow clone by excluding rev")), + N_("deepen history of shallow clone, excluding rev")), OPT_INTEGER(0, "deepen", &deepen_relative, N_("deepen history of shallow clone")), { OPTION_SET_INT, 0, "unshallow", &unshallow, NULL, @@ -359,9 +359,6 @@ static struct ref *get_ref_map(struct transport *transport, for (i = 0; i < fetch_refspec_nr; i++) get_fetch_map(ref_map, &fetch_refspec[i], &oref_tail, 1); - - if (tags == TAGS_SET) - get_fetch_map(remote_refs, tag_refspec, &tail, 0); } else if (refmap_array) { die("--refmap option is only meaningful with command-line refspec(s)."); } else { diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c index 4e9f6c29bf..df41fa0350 100644 --- a/builtin/for-each-ref.c +++ b/builtin/for-each-ref.c @@ -18,7 +18,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix) int i; const char *format = "%(objectname) %(objecttype)\t%(refname)"; struct ref_sorting *sorting = NULL, **sorting_tail = &sorting; - int maxcount = 0, quote_style = 0; + int maxcount = 0, quote_style = 0, icase = 0; struct ref_array array; struct ref_filter filter; @@ -43,6 +43,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix) OPT_MERGED(&filter, N_("print only refs that are merged")), OPT_NO_MERGED(&filter, N_("print only refs that are not merged")), OPT_CONTAINS(&filter.with_commit, N_("print only refs which contain the commit")), + OPT_BOOL(0, "ignore-case", &icase, N_("sorting and filtering are case insensitive")), OPT_END(), }; @@ -63,6 +64,8 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix) if (!sorting) sorting = ref_default_sorting(); + sorting->ignore_case = icase; + filter.ignore_case = icase; /* for warn_ambiguous_refs */ git_config(git_default_config, NULL); diff --git a/builtin/index-pack.c b/builtin/index-pack.c index 0a27bab11b..f4b87c6c9f 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -787,13 +787,15 @@ static void sha1_object(const void *data, struct object_entry *obj_entry, const unsigned char *sha1) { void *new_data = NULL; - int collision_test_needed; + int collision_test_needed = 0; assert(data || obj_entry); - read_lock(); - collision_test_needed = has_sha1_file_with_flags(sha1, HAS_SHA1_QUICK); - read_unlock(); + if (startup_info->have_repository) { + read_lock(); + collision_test_needed = has_sha1_file_with_flags(sha1, HAS_SHA1_QUICK); + read_unlock(); + } if (collision_test_needed && !data) { read_lock(); @@ -1730,6 +1732,8 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix) usage(index_pack_usage); if (fix_thin_pack && !from_stdin) die(_("--fix-thin cannot be used without --stdin")); + if (from_stdin && !startup_info->have_repository) + die(_("--stdin requires a git repository")); if (!index_name && pack_name) index_name = derive_filename(pack_name, ".idx", &index_name_buf); if (keep_msg && !keep_name && pack_name) diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c index f6df274111..e3b62f2fc7 100644 --- a/builtin/mailinfo.c +++ b/builtin/mailinfo.c @@ -11,15 +11,20 @@ static const char mailinfo_usage[] = "git mailinfo [-k | -b] [-m | --message-id] [-u | --encoding=<encoding> | -n] [--scissors | --no-scissors] <msg> <patch> < mail >info"; +static char *prefix_copy(const char *prefix, const char *filename) +{ + if (!prefix || is_absolute_path(filename)) + return xstrdup(filename); + return xstrdup(prefix_filename(prefix, strlen(prefix), filename)); +} + int cmd_mailinfo(int argc, const char **argv, const char *prefix) { const char *def_charset; struct mailinfo mi; int status; + char *msgfile, *patchfile; - /* NEEDSWORK: might want to do the optional .git/ directory - * discovery - */ setup_mailinfo(&mi); def_charset = get_commit_output_encoding(); @@ -54,8 +59,14 @@ int cmd_mailinfo(int argc, const char **argv, const char *prefix) mi.input = stdin; mi.output = stdout; - status = !!mailinfo(&mi, argv[1], argv[2]); + + msgfile = prefix_copy(prefix, argv[1]); + patchfile = prefix_copy(prefix, argv[2]); + + status = !!mailinfo(&mi, msgfile, patchfile); clear_mailinfo(&mi); + free(msgfile); + free(patchfile); return status; } diff --git a/builtin/merge.c b/builtin/merge.c index b65eeaa87d..a96d4fb501 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -46,6 +46,7 @@ static const char * const builtin_merge_usage[] = { N_("git merge [<options>] [<commit>...]"), N_("git merge [<options>] <msg> HEAD <commit>"), N_("git merge --abort"), + N_("git merge --continue"), NULL }; @@ -65,6 +66,7 @@ static int option_renormalize; static int verbosity; static int allow_rerere_auto; static int abort_current_merge; +static int continue_current_merge; static int allow_unrelated_histories; static int show_progress = -1; static int default_to_upstream = 1; @@ -223,6 +225,8 @@ static struct option builtin_merge_options[] = { OPT__VERBOSITY(&verbosity), OPT_BOOL(0, "abort", &abort_current_merge, N_("abort the current in-progress merge")), + OPT_BOOL(0, "continue", &continue_current_merge, + N_("continue the current in-progress merge")), OPT_BOOL(0, "allow-unrelated-histories", &allow_unrelated_histories, N_("allow merging unrelated histories")), OPT_SET_INT(0, "progress", &show_progress, N_("force progress reporting"), 1), @@ -634,7 +638,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common, { static struct lock_file lock; - hold_locked_index(&lock, 1); + hold_locked_index(&lock, LOCK_DIE_ON_ERROR); refresh_cache(REFRESH_QUIET); if (active_cache_changed && write_locked_index(&the_index, &lock, COMMIT_LOCK)) @@ -671,7 +675,7 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common, for (j = common; j; j = j->next) commit_list_insert(j->item, &reversed); - hold_locked_index(&lock, 1); + hold_locked_index(&lock, LOCK_DIE_ON_ERROR); clean = merge_recursive(&o, head, remoteheads->item, reversed, &result); if (clean < 0) @@ -781,7 +785,7 @@ static int merge_trivial(struct commit *head, struct commit_list *remoteheads) struct commit_list *parents, **pptr = &parents; static struct lock_file lock; - hold_locked_index(&lock, 1); + hold_locked_index(&lock, LOCK_DIE_ON_ERROR); refresh_cache(REFRESH_QUIET); if (active_cache_changed && write_locked_index(&the_index, &lock, COMMIT_LOCK)) @@ -1125,6 +1129,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix) const char *best_strategy = NULL, *wt_strategy = NULL; struct commit_list *remoteheads, *p; void *branch_to_free; + int orig_argc = argc; if (argc == 2 && !strcmp(argv[1], "-h")) usage_with_options(builtin_merge_usage, builtin_merge_options); @@ -1158,6 +1163,10 @@ int cmd_merge(int argc, const char **argv, const char *prefix) int nargc = 2; const char *nargv[] = {"reset", "--merge", NULL}; + if (orig_argc != 2) + usage_msg_opt(_("--abort expects no arguments"), + builtin_merge_usage, builtin_merge_options); + if (!file_exists(git_path_merge_head())) die(_("There is no merge to abort (MERGE_HEAD missing).")); @@ -1166,6 +1175,22 @@ int cmd_merge(int argc, const char **argv, const char *prefix) goto done; } + if (continue_current_merge) { + int nargc = 1; + const char *nargv[] = {"commit", NULL}; + + if (orig_argc != 2) + usage_msg_opt(_("--continue expects no arguments"), + builtin_merge_usage, builtin_merge_options); + + if (!file_exists(git_path_merge_head())) + die(_("There is no merge in progress (MERGE_HEAD missing).")); + + /* Invoke 'git commit' */ + ret = cmd_commit(nargc, nargv, prefix); + goto done; + } + if (read_cache_unmerged()) die_resolve_conflict("merge"); diff --git a/builtin/mv.c b/builtin/mv.c index 2f43877bc9..43adf92ba6 100644 --- a/builtin/mv.c +++ b/builtin/mv.c @@ -126,7 +126,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix) if (--argc < 1) usage_with_options(builtin_mv_usage, builtin_mv_options); - hold_locked_index(&lock_file, 1); + hold_locked_index(&lock_file, LOCK_DIE_ON_ERROR); if (read_cache() < 0) die(_("index file corrupt")); diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index 0fd52bd6b4..8841f8b366 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -61,8 +61,6 @@ static int delta_search_threads; static int pack_to_stdout; static int num_preferred_base; static struct progress *progress_state; -static int pack_compression_level = Z_DEFAULT_COMPRESSION; -static int pack_compression_seen; static struct packed_git *reuse_packfile; static uint32_t reuse_packfile_objects; @@ -2368,16 +2366,6 @@ static int git_pack_config(const char *k, const char *v, void *cb) depth = git_config_int(k, v); return 0; } - if (!strcmp(k, "pack.compression")) { - int level = git_config_int(k, v); - if (level == -1) - level = Z_DEFAULT_COMPRESSION; - else if (level < 0 || level > Z_BEST_COMPRESSION) - die("bad pack compression level %d", level); - pack_compression_level = level; - pack_compression_seen = 1; - return 0; - } if (!strcmp(k, "pack.deltacachesize")) { max_delta_cache_size = git_config_int(k, v); return 0; @@ -2869,8 +2857,6 @@ int cmd_pack_objects(int argc, const char **argv, const char *prefix) reset_pack_idx_option(&pack_idx_opts); git_config(git_pack_config, NULL); - if (!pack_compression_seen && core_compression_seen) - pack_compression_level = core_compression_level; progress = isatty(2); argc = parse_options(argc, argv, prefix, pack_objects_options, diff --git a/builtin/pull.c b/builtin/pull.c index d6e46ee6d0..3ecb881b0b 100644 --- a/builtin/pull.c +++ b/builtin/pull.c @@ -857,10 +857,24 @@ int cmd_pull(int argc, const char **argv, const char *prefix) if (merge_heads.nr > 1) die(_("Cannot merge multiple branches into empty head.")); return pull_into_void(*merge_heads.sha1, curr_head); - } else if (opt_rebase) { - if (merge_heads.nr > 1) - die(_("Cannot rebase onto multiple branches.")); + } + if (opt_rebase && merge_heads.nr > 1) + die(_("Cannot rebase onto multiple branches.")); + + if (opt_rebase) { + struct commit_list *list = NULL; + struct commit *merge_head, *head; + + head = lookup_commit_reference(orig_head); + commit_list_insert(head, &list); + merge_head = lookup_commit_reference(merge_heads.sha1[0]); + if (is_descendant_of(merge_head, list)) { + /* we can fast-forward this without invoking rebase */ + opt_ff = "--ff-only"; + return run_merge(); + } return run_rebase(curr_head, *merge_heads.sha1, rebase_fork_point); - } else + } else { return run_merge(); + } } diff --git a/builtin/push.c b/builtin/push.c index 3bb9d6b7e6..9307ad56a9 100644 --- a/builtin/push.c +++ b/builtin/push.c @@ -194,15 +194,18 @@ static void setup_push_upstream(struct remote *remote, struct branch *branch, die_push_simple(branch, remote); } - strbuf_addf(&refspec, "%s:%s", branch->name, branch->merge[0]->src); + strbuf_addf(&refspec, "%s:%s", branch->refname, branch->merge[0]->src); add_refspec(refspec.buf); } static void setup_push_current(struct remote *remote, struct branch *branch) { + struct strbuf refspec = STRBUF_INIT; + if (!branch) die(_(message_detached_head_die), remote->name); - add_refspec(branch->name); + strbuf_addf(&refspec, "%s:%s", branch->refname, branch->refname); + add_refspec(refspec.buf); } static int is_workflow_triangular(struct remote *remote) diff --git a/builtin/read-tree.c b/builtin/read-tree.c index 9bd1fd755e..fa6edb35b2 100644 --- a/builtin/read-tree.c +++ b/builtin/read-tree.c @@ -150,7 +150,7 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix) argc = parse_options(argc, argv, unused_prefix, read_tree_options, read_tree_usage, 0); - hold_locked_index(&lock_file, 1); + hold_locked_index(&lock_file, LOCK_DIE_ON_ERROR); prefix_set = opts.prefix ? 1 : 0; if (1 < opts.merge + opts.reset + prefix_set) diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index e6b3879a5b..6b97cbdbe9 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -795,8 +795,8 @@ static char *refuse_unconfigured_deny_msg = "with what you pushed, and will require 'git reset --hard' to match\n" "the work tree to HEAD.\n" "\n" - "You can set 'receive.denyCurrentBranch' configuration variable to\n" - "'ignore' or 'warn' in the remote repository to allow pushing into\n" + "You can set the 'receive.denyCurrentBranch' configuration variable\n" + "to 'ignore' or 'warn' in the remote repository to allow pushing into\n" "its current branch; however, this is not recommended unless you\n" "arranged to update its work tree to match what you pushed in some\n" "other way.\n" diff --git a/builtin/reset.c b/builtin/reset.c index c04ac076dc..8ab915bfcb 100644 --- a/builtin/reset.c +++ b/builtin/reset.c @@ -354,7 +354,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix) if (reset_type != SOFT) { struct lock_file *lock = xcalloc(1, sizeof(*lock)); - hold_locked_index(lock, 1); + hold_locked_index(lock, LOCK_DIE_ON_ERROR); if (reset_type == MIXED) { int flags = quiet ? REFRESH_QUIET : REFRESH_IN_PORCELAIN; if (read_from_tree(&pathspec, &oid, intent_to_add)) diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index cfb0f1510c..ff13e59e1d 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -342,11 +342,16 @@ static int try_parent_shorthands(const char *arg) for (parents = commit->parents, parent_number = 1; parents; parents = parents->next, parent_number++) { + char *name = NULL; + if (exclude_parent && parent_number != exclude_parent) continue; + if (symbolic) + name = xstrfmt("%s^%d", arg, parent_number); show_rev(include_parents ? NORMAL : REVERSED, - parents->item->object.oid.hash, arg); + parents->item->object.oid.hash, name); + free(name); } *dotdot = '^'; diff --git a/builtin/rm.c b/builtin/rm.c index 3f3e24eb36..7f15a3d7f8 100644 --- a/builtin/rm.c +++ b/builtin/rm.c @@ -292,7 +292,7 @@ int cmd_rm(int argc, const char **argv, const char *prefix) if (!index_only) setup_work_tree(); - hold_locked_index(&lock_file, 1); + hold_locked_index(&lock_file, LOCK_DIE_ON_ERROR); if (read_cache() < 0) die(_("index file corrupt")); diff --git a/builtin/shortlog.c b/builtin/shortlog.c index ba0e1154a9..c9585d475d 100644 --- a/builtin/shortlog.c +++ b/builtin/shortlog.c @@ -117,11 +117,15 @@ static void read_from_stdin(struct shortlog *log) { struct strbuf author = STRBUF_INIT; struct strbuf oneline = STRBUF_INIT; + static const char *author_match[2] = { "Author: ", "author " }; + static const char *committer_match[2] = { "Commit: ", "committer " }; + const char **match; + match = log->committer ? committer_match : author_match; while (strbuf_getline_lf(&author, stdin) != EOF) { const char *v; - if (!skip_prefix(author.buf, "Author: ", &v) && - !skip_prefix(author.buf, "author ", &v)) + if (!skip_prefix(author.buf, match[0], &v) && + !skip_prefix(author.buf, match[1], &v)) continue; while (strbuf_getline_lf(&oneline, stdin) != EOF && oneline.len) @@ -140,6 +144,7 @@ void shortlog_add_commit(struct shortlog *log, struct commit *commit) struct strbuf author = STRBUF_INIT; struct strbuf oneline = STRBUF_INIT; struct pretty_print_context ctx = {0}; + const char *fmt; ctx.fmt = CMIT_FMT_USERFORMAT; ctx.abbrev = log->abbrev; @@ -148,7 +153,9 @@ void shortlog_add_commit(struct shortlog *log, struct commit *commit) ctx.date_mode.type = DATE_NORMAL; ctx.output_encoding = get_log_output_encoding(); - format_commit_message(commit, "%an <%ae>", &author, &ctx); + fmt = log->committer ? "%cn <%ce>" : "%an <%ae>"; + + format_commit_message(commit, fmt, &author, &ctx); if (!log->summary) { if (log->user_format) pretty_print_commit(&ctx, commit, &oneline); @@ -238,6 +245,8 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix) int nongit = !startup_info->have_repository; const struct option options[] = { + OPT_BOOL('c', "committer", &log.committer, + N_("Group by committer rather than author")), OPT_BOOL('n', "numbered", &log.sort_by_number, N_("sort output according to the number of commits per author")), OPT_BOOL('s', "summary", &log.summary, diff --git a/builtin/stripspace.c b/builtin/stripspace.c index 15e716ef43..1e62a008cb 100644 --- a/builtin/stripspace.c +++ b/builtin/stripspace.c @@ -44,8 +44,10 @@ int cmd_stripspace(int argc, const char **argv, const char *prefix) if (argc) usage_with_options(stripspace_usage, options); - if (mode == STRIP_COMMENTS || mode == COMMENT_LINES) + if (mode == STRIP_COMMENTS || mode == COMMENT_LINES) { + setup_git_directory_gently(NULL); git_config(git_default_config, NULL); + } if (strbuf_read(&buf, 0, 1024) < 0) die_errno("could not read the input"); diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index 242d9911a6..df0d9c166f 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -498,9 +498,9 @@ static int add_possible_reference_from_superproject( /* * If the alternate object store is another repository, try the - * standard layout with .git/modules/<name>/objects + * standard layout with .git/(modules/<name>)+/objects */ - if (ends_with(alt->path, ".git/objects")) { + if (ends_with(alt->path, "/objects")) { char *sm_alternate; struct strbuf sb = STRBUF_INIT; struct strbuf err = STRBUF_INIT; @@ -583,6 +583,7 @@ static int module_clone(int argc, const char **argv, const char *prefix) struct strbuf rel_path = STRBUF_INIT; struct strbuf sb = STRBUF_INIT; struct string_list reference = STRING_LIST_INIT_NODUP; + char *sm_alternate = NULL, *error_strategy = NULL; struct option module_clone_options[] = { OPT_STRING(0, "prefix", &prefix, @@ -672,6 +673,20 @@ static int module_clone(int argc, const char **argv, const char *prefix) die(_("could not get submodule directory for '%s'"), path); git_config_set_in_file(p, "core.worktree", relative_path(path, sm_gitdir, &rel_path)); + + /* setup alternateLocation and alternateErrorStrategy in the cloned submodule if needed */ + git_config_get_string("submodule.alternateLocation", &sm_alternate); + if (sm_alternate) + git_config_set_in_file(p, "submodule.alternateLocation", + sm_alternate); + git_config_get_string("submodule.alternateErrorStrategy", &error_strategy); + if (error_strategy) + git_config_set_in_file(p, "submodule.alternateErrorStrategy", + error_strategy); + + free(sm_alternate); + free(error_strategy); + strbuf_release(&sb); strbuf_release(&rel_path); free(sm_gitdir); diff --git a/builtin/tag.c b/builtin/tag.c index 50e4ae5678..73df728114 100644 --- a/builtin/tag.c +++ b/builtin/tag.c @@ -335,6 +335,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix) struct ref_filter filter; static struct ref_sorting *sorting = NULL, **sorting_tail = &sorting; const char *format = NULL; + int icase = 0; struct option options[] = { OPT_CMDMODE('l', "list", &cmdmode, N_("list tag names"), 'l'), { OPTION_INTEGER, 'n', NULL, &filter.lines, N_("n"), @@ -370,6 +371,7 @@ int cmd_tag(int argc, const char **argv, const char *prefix) N_("print only tags of the object"), 0, parse_opt_object_name }, OPT_STRING( 0 , "format", &format, N_("format"), N_("format to use for the output")), + OPT_BOOL('i', "ignore-case", &icase, N_("sorting and filtering are case insensitive")), OPT_END() }; @@ -401,6 +403,8 @@ int cmd_tag(int argc, const char **argv, const char *prefix) } if (!sorting) sorting = ref_default_sorting(); + sorting->ignore_case = icase; + filter.ignore_case = icase; if (cmdmode == 'l') { int ret; if (column_active(colopts)) { diff --git a/builtin/update-index.c b/builtin/update-index.c index f3f07e7f1c..d530e89368 100644 --- a/builtin/update-index.c +++ b/builtin/update-index.c @@ -1012,6 +1012,7 @@ int cmd_update_index(int argc, const char **argv, const char *prefix) /* We can't free this memory, it becomes part of a linked list parsed atexit() */ lock_file = xcalloc(1, sizeof(struct lock_file)); + /* we will diagnose later if it turns out that we need to update it */ newfd = hold_locked_index(lock_file, 0); if (newfd < 0) lock_error = errno; diff --git a/builtin/upload-archive.c b/builtin/upload-archive.c index dc872f6a94..cde06977b7 100644 --- a/builtin/upload-archive.c +++ b/builtin/upload-archive.c @@ -43,7 +43,7 @@ int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix) } /* parse all options sent by the client */ - return write_archive(sent_argv.argc, sent_argv.argv, prefix, 0, NULL, 1); + return write_archive(sent_argv.argc, sent_argv.argv, prefix, NULL, 1); } __attribute__((format (printf, 1, 2))) diff --git a/bulk-checkin.c b/bulk-checkin.c index 4347f5c76a..991b4a13e2 100644 --- a/bulk-checkin.c +++ b/bulk-checkin.c @@ -7,8 +7,6 @@ #include "pack.h" #include "strbuf.h" -static int pack_compression_level = Z_DEFAULT_COMPRESSION; - static struct bulk_checkin_state { unsigned plugged:1; @@ -670,7 +670,7 @@ extern const char *git_attributes_file; extern const char *git_hooks_path; extern int zlib_compression_level; extern int core_compression_level; -extern int core_compression_seen; +extern int pack_compression_level; extern size_t packed_git_window_size; extern size_t packed_git_limit; extern size_t delta_base_cache_limit; @@ -1125,7 +1125,8 @@ extern int write_sha1_file(const void *buf, unsigned long len, const char *type, extern int hash_sha1_file_literally(const void *buf, unsigned long len, const char *type, unsigned char *sha1, unsigned flags); extern int pretend_sha1_file(void *, unsigned long, enum object_type, unsigned char *); extern int force_object_loose(const unsigned char *sha1, time_t mtime); -extern int git_open(const char *name); +extern int git_open_cloexec(const char *name, int flags); +#define git_open(name) git_open_cloexec(name, O_RDONLY) extern void *map_sha1_file(const unsigned char *sha1, unsigned long *size); extern int unpack_sha1_header(git_zstream *stream, unsigned char *map, unsigned long mapsize, void *buffer, unsigned long bufsiz); extern int parse_sha1_header(const char *hdr, unsigned long *sizep); @@ -1649,7 +1649,7 @@ const char *find_commit_header(const char *msg, const char *key, size_t *out_len } /* - * Inspect sb and determine the true "end" of the log message, in + * Inspect the given string and determine the true "end" of the log message, in * order to find where to put a new Signed-off-by: line. Ignored are * trailing comment lines and blank lines, and also the traditional * "Conflicts:" block that is not commented out, so that we can use @@ -1659,37 +1659,37 @@ const char *find_commit_header(const char *msg, const char *key, size_t *out_len * Returns the number of bytes from the tail to ignore, to be fed as * the second parameter to append_signoff(). */ -int ignore_non_trailer(struct strbuf *sb) +int ignore_non_trailer(const char *buf, size_t len) { int boc = 0; int bol = 0; int in_old_conflicts_block = 0; - while (bol < sb->len) { - char *next_line; + while (bol < len) { + const char *next_line = memchr(buf + bol, '\n', len - bol); - if (!(next_line = memchr(sb->buf + bol, '\n', sb->len - bol))) - next_line = sb->buf + sb->len; + if (!next_line) + next_line = buf + len; else next_line++; - if (sb->buf[bol] == comment_line_char || sb->buf[bol] == '\n') { + if (buf[bol] == comment_line_char || buf[bol] == '\n') { /* is this the first of the run of comments? */ if (!boc) boc = bol; /* otherwise, it is just continuing */ - } else if (starts_with(sb->buf + bol, "Conflicts:\n")) { + } else if (starts_with(buf + bol, "Conflicts:\n")) { in_old_conflicts_block = 1; if (!boc) boc = bol; - } else if (in_old_conflicts_block && sb->buf[bol] == '\t') { + } else if (in_old_conflicts_block && buf[bol] == '\t') { ; /* a pathname in the conflicts block */ } else if (boc) { /* the previous was not trailing comment */ boc = 0; in_old_conflicts_block = 0; } - bol = next_line - sb->buf; + bol = next_line - buf; } - return boc ? sb->len - boc : 0; + return boc ? len - boc : 0; } @@ -355,7 +355,7 @@ extern const char *find_commit_header(const char *msg, const char *key, size_t *out_len); /* Find the end of the log message, the right place for a new trailer. */ -extern int ignore_non_trailer(struct strbuf *sb); +extern int ignore_non_trailer(const char *buf, size_t len); typedef void (*each_mergetag_fn)(struct commit *commit, struct commit_extra_header *extra, void *cb_data); diff --git a/common-main.c b/common-main.c index 44a29e8b13..c654f95551 100644 --- a/common-main.c +++ b/common-main.c @@ -33,7 +33,7 @@ int main(int argc, const char **argv) git_setup_gettext(); - argv[0] = git_extract_argv0_path(argv[0]); + git_extract_argv0_path(argv[0]); restore_sigpipe_to_default(); diff --git a/compat/mingw.h b/compat/mingw.h index 034fff9479..3350169555 100644 --- a/compat/mingw.h +++ b/compat/mingw.h @@ -384,6 +384,9 @@ int mingw_raise(int sig); * ANSI emulation wrappers */ +int winansi_isatty(int fd); +#define isatty winansi_isatty + void winansi_init(void); HANDLE winansi_get_osfhandle(int fd); diff --git a/compat/winansi.c b/compat/winansi.c index db4a5b0a37..3c9ed3cfe0 100644 --- a/compat/winansi.c +++ b/compat/winansi.c @@ -6,6 +6,12 @@ #include "../git-compat-util.h" #include <wingdi.h> #include <winreg.h> +#include "win32.h" + +static int fd_is_interactive[3] = { 0, 0, 0 }; +#define FD_CONSOLE 0x1 +#define FD_SWAPPED 0x2 +#define FD_MSYS 0x4 /* ANSI codes used by git: m, K @@ -81,6 +87,7 @@ static void warn_if_raster_font(void) static int is_console(int fd) { CONSOLE_SCREEN_BUFFER_INFO sbi; + DWORD mode; HANDLE hcon; static int initialized = 0; @@ -95,9 +102,15 @@ static int is_console(int fd) return 0; /* check if its a handle to a console output screen buffer */ - if (!GetConsoleScreenBufferInfo(hcon, &sbi)) + if (!fd) { + if (!GetConsoleMode(hcon, &mode)) + return 0; + } else if (!GetConsoleScreenBufferInfo(hcon, &sbi)) return 0; + if (fd >= 0 && fd <= 2) + fd_is_interactive[fd] |= FD_CONSOLE; + /* initialize attributes */ if (!initialized) { console = hcon; @@ -459,76 +472,50 @@ static HANDLE duplicate_handle(HANDLE hnd) return hresult; } - -/* - * Make MSVCRT's internal file descriptor control structure accessible - * so that we can tweak OS handles and flags directly (we need MSVCRT - * to treat our pipe handle as if it were a console). - * - * We assume that the ioinfo structure (exposed by MSVCRT.dll via - * __pioinfo) starts with the OS handle and the flags. The exact size - * varies between MSVCRT versions, so we try different sizes until - * toggling the FDEV bit of _pioinfo(1)->osflags is reflected in - * isatty(1). - */ -typedef struct { - HANDLE osfhnd; - char osflags; -} ioinfo; - -extern __declspec(dllimport) ioinfo *__pioinfo[]; - -static size_t sizeof_ioinfo = 0; - -#define IOINFO_L2E 5 -#define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E) - -#define FPIPE 0x08 -#define FDEV 0x40 - -static inline ioinfo* _pioinfo(int fd) -{ - return (ioinfo*)((char*)__pioinfo[fd >> IOINFO_L2E] + - (fd & (IOINFO_ARRAY_ELTS - 1)) * sizeof_ioinfo); -} - -static int init_sizeof_ioinfo(void) -{ - int istty, wastty; - /* don't init twice */ - if (sizeof_ioinfo) - return sizeof_ioinfo >= 256; - - sizeof_ioinfo = sizeof(ioinfo); - wastty = isatty(1); - while (sizeof_ioinfo < 256) { - /* toggle FDEV flag, check isatty, then toggle back */ - _pioinfo(1)->osflags ^= FDEV; - istty = isatty(1); - _pioinfo(1)->osflags ^= FDEV; - /* return if we found the correct size */ - if (istty != wastty) - return 0; - sizeof_ioinfo += sizeof(void*); - } - error("Tweaking file descriptors doesn't work with this MSVCRT.dll"); - return 1; -} - static HANDLE swap_osfhnd(int fd, HANDLE new_handle) { - ioinfo *pioinfo; - HANDLE old_handle; - - /* init ioinfo size if we haven't done so */ - if (init_sizeof_ioinfo()) - return INVALID_HANDLE_VALUE; - - /* get ioinfo pointer and change the handles */ - pioinfo = _pioinfo(fd); - old_handle = pioinfo->osfhnd; - pioinfo->osfhnd = new_handle; - return old_handle; + /* + * Create a copy of the original handle associated with fd + * because the original will get closed when we dup2(). + */ + HANDLE handle = (HANDLE)_get_osfhandle(fd); + HANDLE duplicate = duplicate_handle(handle); + + /* Create a temp fd associated with the already open "new_handle". */ + int new_fd = _open_osfhandle((intptr_t)new_handle, O_BINARY); + + assert((fd == 1) || (fd == 2)); + + /* + * Use stock dup2() to re-bind fd to the new handle. Note that + * this will implicitly close(1) and close both fd=1 and the + * originally associated handle. It will open a new fd=1 and + * call DuplicateHandle() on the handle associated with new_fd. + * It is because of this implicit close() that we created the + * copy of the original. + * + * Note that the OS can recycle HANDLE (numbers) just like it + * recycles fd (numbers), so we must update the cached value + * of "console". You can use GetFileType() to see that + * handle and _get_osfhandle(fd) may have the same number + * value, but they refer to different actual files now. + * + * Note that dup2() when given target := {0,1,2} will also + * call SetStdHandle(), so we don't need to worry about that. + */ + dup2(new_fd, fd); + if (console == handle) + console = duplicate; + handle = INVALID_HANDLE_VALUE; + + /* Close the temp fd. This explicitly closes "new_handle" + * (because it has been associated with it). + */ + close(new_fd); + + fd_is_interactive[fd] |= FD_SWAPPED; + + return duplicate; } #ifdef DETECT_MSYS_TTY @@ -553,23 +540,37 @@ static void detect_msys_tty(int fd) buffer, sizeof(buffer) - 2, &result))) return; name = nameinfo->Name.Buffer; - name[nameinfo->Name.Length] = 0; - - /* check if this could be a MSYS2 pty pipe ('msys-XXXX-ptyN-XX') */ - if (!wcsstr(name, L"msys-") || !wcsstr(name, L"-pty")) - return; - - /* init ioinfo size if we haven't done so */ - if (init_sizeof_ioinfo()) + name[nameinfo->Name.Length / sizeof(*name)] = 0; + + /* + * Check if this could be a MSYS2 pty pipe ('msys-XXXX-ptyN-XX') + * or a cygwin pty pipe ('cygwin-XXXX-ptyN-XX') + */ + if ((!wcsstr(name, L"msys-") && !wcsstr(name, L"cygwin-")) || + !wcsstr(name, L"-pty")) return; - /* set FDEV flag, reset FPIPE flag */ - _pioinfo(fd)->osflags &= ~FPIPE; - _pioinfo(fd)->osflags |= FDEV; + fd_is_interactive[fd] |= FD_MSYS; } #endif +/* + * Wrapper for isatty(). Most calls in the main git code + * call isatty(1 or 2) to see if the instance is interactive + * and should: be colored, show progress, paginate output. + * We lie and give results for what the descriptor WAS at + * startup (and ignore any pipe redirection we internally + * do). + */ +#undef isatty +int winansi_isatty(int fd) +{ + if (fd >= 0 && fd <= 2) + return fd_is_interactive[fd] != 0; + return isatty(fd); +} + void winansi_init(void) { int con1, con2; @@ -578,6 +579,10 @@ void winansi_init(void) /* check if either stdout or stderr is a console output screen buffer */ con1 = is_console(1); con2 = is_console(2); + + /* Also compute console bit for fd 0 even though we don't need the result here. */ + is_console(0); + if (!con1 && !con2) { #ifdef DETECT_MSYS_TTY /* check if stdin / stdout / stderr are MSYS2 pty pipes */ @@ -621,12 +626,10 @@ void winansi_init(void) */ HANDLE winansi_get_osfhandle(int fd) { - HANDLE hnd = (HANDLE) _get_osfhandle(fd); - if (isatty(fd) && GetFileType(hnd) == FILE_TYPE_PIPE) { - if (fd == 1 && hconsole1) - return hconsole1; - else if (fd == 2 && hconsole2) - return hconsole2; - } - return hnd; + if (fd == 1 && (fd_is_interactive[1] & FD_SWAPPED)) + return hconsole1; + if (fd == 2 && (fd_is_interactive[2] & FD_SWAPPED)) + return hconsole2; + + return (HANDLE)_get_osfhandle(fd); } @@ -66,6 +66,8 @@ static struct key_value_info *current_config_kvi; */ static enum config_scope current_parsing_scope; +static int core_compression_seen; +static int pack_compression_seen; static int zlib_compression_seen; /* @@ -834,10 +836,16 @@ static int git_default_core_config(const char *var, const char *value) } if (!strcmp(var, "core.abbrev")) { - int abbrev = git_config_int(var, value); - if (abbrev < minimum_abbrev || abbrev > 40) - return -1; - default_abbrev = abbrev; + if (!value) + return config_error_nonbool(var); + if (!strcasecmp(value, "auto")) + default_abbrev = -1; + else { + int abbrev = git_config_int(var, value); + if (abbrev < minimum_abbrev || abbrev > 40) + return error("abbrev length out of range: %d", abbrev); + default_abbrev = abbrev; + } return 0; } @@ -865,6 +873,8 @@ static int git_default_core_config(const char *var, const char *value) core_compression_seen = 1; if (!zlib_compression_seen) zlib_compression_level = level; + if (!pack_compression_seen) + pack_compression_level = level; return 0; } @@ -1125,6 +1135,18 @@ int git_default_config(const char *var, const char *value, void *dummy) pack_size_limit_cfg = git_config_ulong(var, value); return 0; } + + if (!strcmp(var, "pack.compression")) { + int level = git_config_int(var, value); + if (level == -1) + level = Z_DEFAULT_COMPRESSION; + else if (level < 0 || level > Z_BEST_COMPRESSION) + die(_("bad pack compression level %d"), level); + pack_compression_level = level; + pack_compression_seen = 1; + return 0; + } + /* Add other config variables here and to Documentation/config.txt. */ return 0; } @@ -2194,7 +2216,12 @@ int git_config_set_multivar_in_file_gently(const char *config_filename, goto out_free; } - fstat(in_fd, &st); + if (fstat(in_fd, &st) == -1) { + error_errno(_("fstat on %s failed"), config_filename); + ret = CONFIG_INVALID_FILE; + goto out_free; + } + contents_sz = xsize_t(st.st_size); contents = xmmap_gently(NULL, contents_sz, PROT_READ, MAP_PRIVATE, in_fd, 0); @@ -2396,7 +2423,7 @@ int git_config_rename_section_in_file(const char *config_filename, if (new_name && !section_name_is_ok(new_name)) { ret = error("invalid section name: %s", new_name); - goto out; + goto out_no_rollback; } if (!config_filename) @@ -2411,10 +2438,13 @@ int git_config_rename_section_in_file(const char *config_filename, if (!(config_file = fopen(config_filename, "rb"))) { /* no config file means nothing to rename, no error */ - goto unlock_and_out; + goto commit_and_out; } - fstat(fileno(config_file), &st); + if (fstat(fileno(config_file), &st) == -1) { + ret = error_errno(_("fstat on %s failed"), config_filename); + goto out; + } if (chmod(get_lock_file_path(lock), st.st_mode & 07777) < 0) { ret = error_errno("chmod on %s failed", @@ -2470,11 +2500,13 @@ int git_config_rename_section_in_file(const char *config_filename, } } fclose(config_file); -unlock_and_out: +commit_and_out: if (commit_lock_file(lock) < 0) ret = error_errno("could not write config file %s", config_filename); out: + rollback_lock_file(lock); +out_no_rollback: free(filename_buf); return ret; } diff --git a/config.mak.uname b/config.mak.uname index b232908f8c..447f36ac2e 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -17,9 +17,6 @@ endif # because maintaining the nesting to match is a pain. If # we had "elif" things would have been much nicer... -ifeq ($(uname_M),x86_64) - XDL_FAST_HASH = YesPlease -endif ifeq ($(uname_S),OSF1) # Need this for u_short definitions et al BASIC_CFLAGS += -D_OSF_SOURCE diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 21016bf8df..6721ff80fb 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1552,7 +1552,7 @@ _git_merge () case "$cur" in --*) __gitcomp "$__git_merge_options - --rerere-autoupdate --no-rerere-autoupdate --abort" + --rerere-autoupdate --no-rerere-autoupdate --abort --continue" return esac __gitcomp_nl "$(__git_refs)" @@ -1734,10 +1734,10 @@ _git_rebase () { local dir="$(__gitdir)" if [ -f "$dir"/rebase-merge/interactive ]; then - __gitcomp "--continue --skip --abort --edit-todo" + __gitcomp "--continue --skip --abort --quit --edit-todo" return elif [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then - __gitcomp "--continue --skip --abort" + __gitcomp "--continue --skip --abort --quit" return fi __git_complete_strategy && return diff --git a/contrib/long-running-filter/example.pl b/contrib/long-running-filter/example.pl index 39457055a5..a677569ddd 100755 --- a/contrib/long-running-filter/example.pl +++ b/contrib/long-running-filter/example.pl @@ -81,8 +81,12 @@ packet_txt_write("capability=smudge"); packet_flush(); while (1) { - my ($command) = packet_txt_read() =~ /^command=([^=]+)$/; - my ($pathname) = packet_txt_read() =~ /^pathname=([^=]+)$/; + my ($command) = packet_txt_read() =~ /^command=(.+)$/; + my ($pathname) = packet_txt_read() =~ /^pathname=(.+)$/; + + if ( $pathname eq "" ) { + die "bad pathname '$pathname'"; + } packet_bin_read(); diff --git a/contrib/update-unicode/.gitignore b/contrib/update-unicode/.gitignore new file mode 100644 index 0000000000..b0ebc6aad2 --- /dev/null +++ b/contrib/update-unicode/.gitignore @@ -0,0 +1,3 @@ +uniset/ +UnicodeData.txt +EastAsianWidth.txt diff --git a/contrib/update-unicode/README b/contrib/update-unicode/README new file mode 100644 index 0000000000..b9e2fc8540 --- /dev/null +++ b/contrib/update-unicode/README @@ -0,0 +1,20 @@ +TL;DR: Run update_unicode.sh after the publication of a new Unicode +standard and commit the resulting unicode_widths.h file. + +The long version +================ + +The Git source code ships the file unicode_widths.h which contains +tables of zero and double width Unicode code points, respectively. +These tables are generated using update_unicode.sh in this directory. +update_unicode.sh itself uses a third-party tool, uniset, to query two +Unicode data files for the interesting code points. + +On first run, update_unicode.sh clones uniset from Github and builds it. +This requires a current-ish version of autoconf (2.69 works per December +2016). + +On each run, update_unicode.sh checks whether more recent Unicode data +files are available from the Unicode consortium, and rebuilds the header +unicode_widths.h with the new data. The new header can then be +committed. diff --git a/contrib/update-unicode/update_unicode.sh b/contrib/update-unicode/update_unicode.sh new file mode 100755 index 0000000000..e05db92d3f --- /dev/null +++ b/contrib/update-unicode/update_unicode.sh @@ -0,0 +1,33 @@ +#!/bin/sh +#See http://www.unicode.org/reports/tr44/ +# +#Me Enclosing_Mark an enclosing combining mark +#Mn Nonspacing_Mark a nonspacing combining mark (zero advance width) +#Cf Format a format control character +# +cd "$(dirname "$0")" +UNICODEWIDTH_H=$(git rev-parse --show-toplevel)/unicode_width.h + +wget -N http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt \ + http://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt && +if ! test -d uniset; then + git clone https://github.com/depp/uniset.git && + ( cd uniset && git checkout 4b186196dd ) +fi && +( + cd uniset && + if ! test -x uniset; then + autoreconf -i && + ./configure --enable-warnings=-Werror CFLAGS='-O0 -ggdb' + fi && + make +) && +UNICODE_DIR=. && export UNICODE_DIR && +cat >$UNICODEWIDTH_H <<-EOF +static const struct interval zero_width[] = { + $(uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD) +}; +static const struct interval double_width[] = { + $(uniset/uniset --32 eaw:F,W) +}; +EOF @@ -279,15 +279,16 @@ static int crlf_to_git(const char *path, const char *src, size_t len, if (convert_is_binary(len, &stats)) return 0; /* - * If the file in the index has any CR in it, do not convert. - * This is the new safer autocrlf handling. + * If the file in the index has any CR in it, do not + * convert. This is the new safer autocrlf handling, + * unless we want to renormalize in a merge or + * cherry-pick. */ - if (checksafe == SAFE_CRLF_RENORMALIZE) - checksafe = SAFE_CRLF_FALSE; - else if (has_cr_in_index(path)) + if ((checksafe != SAFE_CRLF_RENORMALIZE) && has_cr_in_index(path)) convert_crlf_into_lf = 0; } - if (checksafe && len) { + if ((checksafe == SAFE_CRLF_WARN || + (checksafe == SAFE_CRLF_FAIL)) && len) { struct text_stat new_stats; memcpy(&new_stats, &stats, sizeof(new_stats)); /* simulate "git add" */ @@ -28,7 +28,6 @@ static int diff_detect_rename_default; static int diff_indent_heuristic; /* experimental */ -static int diff_compaction_heuristic; /* experimental */ static int diff_rename_limit_default = 400; static int diff_suppress_blank_empty; static int diff_use_color_default = -1; @@ -223,16 +222,8 @@ void init_diff_ui_defaults(void) int git_diff_heuristic_config(const char *var, const char *value, void *cb) { - if (!strcmp(var, "diff.indentheuristic")) { + if (!strcmp(var, "diff.indentheuristic")) diff_indent_heuristic = git_config_bool(var, value); - if (diff_indent_heuristic) - diff_compaction_heuristic = 0; - } - if (!strcmp(var, "diff.compactionheuristic")) { - diff_compaction_heuristic = git_config_bool(var, value); - if (diff_compaction_heuristic) - diff_indent_heuristic = 0; - } return 0; } @@ -3106,7 +3097,8 @@ static const char *diff_abbrev_oid(const struct object_id *oid, int abbrev) abbrev = FALLBACK_DEFAULT_ABBREV; if (abbrev > GIT_SHA1_HEXSZ) die("BUG: oid abbreviation out of range: %d", abbrev); - hex[abbrev] = '\0'; + if (abbrev) + hex[abbrev] = '\0'; return hex; } } @@ -3364,6 +3356,7 @@ void diff_setup(struct diff_options *options) options->file = stdout; + options->abbrev = DEFAULT_ABBREV; options->line_termination = '\n'; options->break_opt = -1; options->rename_limit = -1; @@ -3380,8 +3373,6 @@ void diff_setup(struct diff_options *options) options->xdl_opts |= diff_algorithm; if (diff_indent_heuristic) DIFF_XDL_SET(options, INDENT_HEURISTIC); - else if (diff_compaction_heuristic) - DIFF_XDL_SET(options, COMPACTION_HEURISTIC); options->orderfile = diff_order_file_cfg; @@ -3876,16 +3867,10 @@ int diff_opt_parse(struct diff_options *options, DIFF_XDL_SET(options, IGNORE_WHITESPACE_AT_EOL); else if (!strcmp(arg, "--ignore-blank-lines")) DIFF_XDL_SET(options, IGNORE_BLANK_LINES); - else if (!strcmp(arg, "--indent-heuristic")) { + else if (!strcmp(arg, "--indent-heuristic")) DIFF_XDL_SET(options, INDENT_HEURISTIC); - DIFF_XDL_CLR(options, COMPACTION_HEURISTIC); - } else if (!strcmp(arg, "--no-indent-heuristic")) - DIFF_XDL_CLR(options, INDENT_HEURISTIC); - else if (!strcmp(arg, "--compaction-heuristic")) { - DIFF_XDL_SET(options, COMPACTION_HEURISTIC); + else if (!strcmp(arg, "--no-indent-heuristic")) DIFF_XDL_CLR(options, INDENT_HEURISTIC); - } else if (!strcmp(arg, "--no-compaction-heuristic")) - DIFF_XDL_CLR(options, COMPACTION_HEURISTIC); else if (!strcmp(arg, "--patience")) options->xdl_opts = DIFF_WITH_ALG(options, PATIENCE_DIFF); else if (!strcmp(arg, "--histogram")) @@ -4024,6 +4009,8 @@ int diff_opt_parse(struct diff_options *options, offending, optarg); return argcount; } + else if (!strcmp(arg, "--no-abbrev")) + options->abbrev = 0; else if (!strcmp(arg, "--abbrev")) options->abbrev = DEFAULT_ABBREV; else if (skip_prefix(arg, "--abbrev=", &arg)) { diff --git a/environment.c b/environment.c index 0935ec696e..4bce3eebfa 100644 --- a/environment.c +++ b/environment.c @@ -34,7 +34,7 @@ const char *git_attributes_file; const char *git_hooks_path; int zlib_compression_level = Z_BEST_SPEED; int core_compression_level; -int core_compression_seen; +int pack_compression_level = Z_DEFAULT_COMPRESSION; int fsync_object_files; size_t packed_git_window_size = DEFAULT_PACKED_GIT_WINDOW_SIZE; size_t packed_git_limit = DEFAULT_PACKED_GIT_LIMIT; diff --git a/exec_cmd.c b/exec_cmd.c index 9d5703a157..19ac2146d0 100644 --- a/exec_cmd.c +++ b/exec_cmd.c @@ -38,21 +38,17 @@ char *system_path(const char *path) return strbuf_detach(&d, NULL); } -const char *git_extract_argv0_path(const char *argv0) +void git_extract_argv0_path(const char *argv0) { const char *slash; if (!argv0 || !*argv0) - return NULL; + return; slash = find_last_dir_sep(argv0); - if (slash) { + if (slash) argv0_path = xstrndup(argv0, slash - argv0); - return slash + 1; - } - - return argv0; } void git_set_argv_exec_path(const char *exec_path) diff --git a/exec_cmd.h b/exec_cmd.h index 1f6b43378b..ff0b48048a 100644 --- a/exec_cmd.h +++ b/exec_cmd.h @@ -4,7 +4,7 @@ struct argv_array; extern void git_set_argv_exec_path(const char *exec_path); -extern const char *git_extract_argv0_path(const char *path); +extern void git_extract_argv0_path(const char *path); extern const char *git_exec_path(void); extern void setup_path(void); extern const char **prepare_git_cmd(struct argv_array *out, const char **argv); diff --git a/fast-import.c b/fast-import.c index cb545d7df5..64fe602f0b 100644 --- a/fast-import.c +++ b/fast-import.c @@ -284,8 +284,6 @@ static unsigned long max_depth = 10; static off_t max_packsize; static int unpack_limit = 100; static int force_update; -static int pack_compression_level = Z_DEFAULT_COMPRESSION; -static int pack_compression_seen; /* Stats and misc. counters */ static uintmax_t alloc_count; @@ -2220,13 +2218,17 @@ static uintmax_t do_change_note_fanout( char *fullpath, unsigned int fullpath_len, unsigned char fanout) { - struct tree_content *t = root->tree; + struct tree_content *t; struct tree_entry *e, leaf; unsigned int i, tmp_hex_sha1_len, tmp_fullpath_len; uintmax_t num_notes = 0; unsigned char sha1[20]; char realpath[60]; + if (!root->tree) + load_tree(root); + t = root->tree; + for (i = 0; t && i < t->entry_count; i++) { e = t->entries[i]; tmp_hex_sha1_len = hex_sha1_len + e->name->str_len; @@ -2278,8 +2280,6 @@ static uintmax_t do_change_note_fanout( leaf.tree); } else if (S_ISDIR(e->versions[1].mode)) { /* This is a subdir that may contain note entries */ - if (!e->tree) - load_tree(e); num_notes += do_change_note_fanout(orig_root, e, hex_sha1, tmp_hex_sha1_len, fullpath, tmp_fullpath_len, fanout); @@ -3381,15 +3381,6 @@ static void git_pack_config(void) if (max_depth > MAX_DEPTH) max_depth = MAX_DEPTH; } - if (!git_config_get_int("pack.compression", &pack_compression_level)) { - if (pack_compression_level == -1) - pack_compression_level = Z_DEFAULT_COMPRESSION; - else if (pack_compression_level < 0 || - pack_compression_level > Z_BEST_COMPRESSION) - git_die_config("pack.compression", - "bad pack compression level %d", pack_compression_level); - pack_compression_seen = 1; - } if (!git_config_get_int("pack.indexversion", &indexversion_value)) { pack_idx_opts.version = indexversion_value; if (pack_idx_opts.version > 2) @@ -3454,8 +3445,6 @@ int cmd_main(int argc, const char **argv) setup_git_directory(); reset_pack_idx_option(&pack_idx_opts); git_pack_config(); - if (!pack_compression_seen && core_compression_seen) - pack_compression_level = core_compression_level; alloc_objects(object_entry_alloc); strbuf_init(&command_buf, 0); diff --git a/git-add--interactive.perl b/git-add--interactive.perl index ee3d812695..cf6fc926ab 100755 --- a/git-add--interactive.perl +++ b/git-add--interactive.perl @@ -4,6 +4,7 @@ use 5.008; use strict; use warnings; use Git; +use Git::I18N; binmode(STDOUT, ":raw"); @@ -46,7 +47,6 @@ my $normal_color = $repo->get_color("", "reset"); my $diff_algorithm = $repo->config('diff.algorithm'); my $diff_indent_heuristic = $repo->config_bool('diff.indentheuristic'); -my $diff_compaction_heuristic = $repo->config_bool('diff.compactionheuristic'); my $diff_filter = $repo->config('interactive.difffilter'); my $use_readkey = 0; @@ -92,6 +92,7 @@ sub colored { } # command line options +my $cmd; my $patch_mode; my $patch_mode_revision; @@ -104,9 +105,6 @@ my %patch_modes = ( DIFF => 'diff-files -p', APPLY => sub { apply_patch 'apply --cached', @_; }, APPLY_CHECK => 'apply --cached', - VERB => 'Stage', - TARGET => '', - PARTICIPLE => 'staging', FILTER => 'file-only', IS_REVERSE => 0, }, @@ -114,9 +112,6 @@ my %patch_modes = ( DIFF => 'diff-index -p HEAD', APPLY => sub { apply_patch 'apply --cached', @_; }, APPLY_CHECK => 'apply --cached', - VERB => 'Stash', - TARGET => '', - PARTICIPLE => 'stashing', FILTER => undef, IS_REVERSE => 0, }, @@ -124,9 +119,6 @@ my %patch_modes = ( DIFF => 'diff-index -p --cached', APPLY => sub { apply_patch 'apply -R --cached', @_; }, APPLY_CHECK => 'apply -R --cached', - VERB => 'Unstage', - TARGET => '', - PARTICIPLE => 'unstaging', FILTER => 'index-only', IS_REVERSE => 1, }, @@ -134,9 +126,6 @@ my %patch_modes = ( DIFF => 'diff-index -R -p --cached', APPLY => sub { apply_patch 'apply --cached', @_; }, APPLY_CHECK => 'apply --cached', - VERB => 'Apply', - TARGET => ' to index', - PARTICIPLE => 'applying', FILTER => 'index-only', IS_REVERSE => 0, }, @@ -144,9 +133,6 @@ my %patch_modes = ( DIFF => 'diff-files -p', APPLY => sub { apply_patch 'apply -R', @_; }, APPLY_CHECK => 'apply -R', - VERB => 'Discard', - TARGET => ' from worktree', - PARTICIPLE => 'discarding', FILTER => 'file-only', IS_REVERSE => 1, }, @@ -154,9 +140,6 @@ my %patch_modes = ( DIFF => 'diff-index -p', APPLY => sub { apply_patch_for_checkout_commit '-R', @_ }, APPLY_CHECK => 'apply -R', - VERB => 'Discard', - TARGET => ' from index and worktree', - PARTICIPLE => 'discarding', FILTER => undef, IS_REVERSE => 1, }, @@ -164,15 +147,13 @@ my %patch_modes = ( DIFF => 'diff-index -R -p', APPLY => sub { apply_patch_for_checkout_commit '', @_ }, APPLY_CHECK => 'apply', - VERB => 'Apply', - TARGET => ' to index and worktree', - PARTICIPLE => 'applying', FILTER => undef, IS_REVERSE => 0, }, ); -my %patch_mode_flavour = %{$patch_modes{stage}}; +$patch_mode = 'stage'; +my %patch_mode_flavour = %{$patch_modes{$patch_mode}}; sub run_cmd_pipe { if ($^O eq 'MSWin32') { @@ -253,8 +234,9 @@ sub list_untracked { run_cmd_pipe(qw(git ls-files --others --exclude-standard --), @ARGV); } -my $status_fmt = '%12s %12s %s'; -my $status_head = sprintf($status_fmt, 'staged', 'unstaged', 'path'); +# TRANSLATORS: you can adjust this to align "git add -i" status menu +my $status_fmt = __('%12s %12s %s'); +my $status_head = sprintf($status_fmt, __('staged'), __('unstaged'), __('path')); { my $initial; @@ -312,7 +294,7 @@ sub list_modified { my ($change, $bin); $file = unquote_path($file); if ($add eq '-' && $del eq '-') { - $change = 'binary'; + $change = __('binary'); $bin = 1; } else { @@ -321,7 +303,7 @@ sub list_modified { $data{$file} = { INDEX => $change, BINARY => $bin, - FILE => 'nothing', + FILE => __('nothing'), } } elsif (($adddel, $file) = @@ -337,7 +319,7 @@ sub list_modified { $file = unquote_path($file); my ($change, $bin); if ($add eq '-' && $del eq '-') { - $change = 'binary'; + $change = __('binary'); $bin = 1; } else { @@ -357,7 +339,7 @@ sub list_modified { $file = unquote_path($2); if (!exists $data{$file}) { $data{$file} = +{ - INDEX => 'unchanged', + INDEX => __('unchanged'), BINARY => 0, }; } @@ -372,10 +354,10 @@ sub list_modified { if ($only) { if ($only eq 'index-only') { - next if ($it->{INDEX} eq 'unchanged'); + next if ($it->{INDEX} eq __('unchanged')); } if ($only eq 'file-only') { - next if ($it->{FILE} eq 'nothing'); + next if ($it->{FILE} eq __('nothing')); } } push @return, +{ @@ -613,12 +595,12 @@ sub list_and_choose { else { $bottom = $top = find_unique($choice, @stuff); if (!defined $bottom) { - error_msg "Huh ($choice)?\n"; + error_msg sprintf(__("Huh (%s)?\n"), $choice); next TOPLOOP; } } if ($opts->{SINGLETON} && $bottom != $top) { - error_msg "Huh ($choice)?\n"; + error_msg sprintf(__("Huh (%s)?\n"), $choice); next TOPLOOP; } for ($i = $bottom-1; $i <= $top-1; $i++) { @@ -637,7 +619,7 @@ sub list_and_choose { } sub singleton_prompt_help_cmd { - print colored $help_color, <<\EOF ; + print colored $help_color, __ <<'EOF' ; Prompt help: 1 - select a numbered item foo - select item based on unique prefix @@ -646,7 +628,7 @@ EOF } sub prompt_help_cmd { - print colored $help_color, <<\EOF ; + print colored $help_color, __ <<'EOF' ; Prompt help: 1 - select a single item 3-5 - select a range of items @@ -667,12 +649,18 @@ sub status_cmd { sub say_n_paths { my $did = shift @_; my $cnt = scalar @_; - print "$did "; - if (1 < $cnt) { - print "$cnt paths\n"; - } - else { - print "one path\n"; + if ($did eq 'added') { + printf(__n("added %d path\n", "added %d paths\n", + $cnt), $cnt); + } elsif ($did eq 'updated') { + printf(__n("updated %d path\n", "updated %d paths\n", + $cnt), $cnt); + } elsif ($did eq 'reverted') { + printf(__n("reverted %d path\n", "reverted %d paths\n", + $cnt), $cnt); + } else { + printf(__n("touched %d path\n", "touched %d paths\n", + $cnt), $cnt); } } @@ -680,7 +668,7 @@ sub update_cmd { my @mods = list_modified('file-only'); return if (!@mods); - my @update = list_and_choose({ PROMPT => 'Update', + my @update = list_and_choose({ PROMPT => __('Update'), HEADER => $status_head, }, @mods); if (@update) { @@ -692,7 +680,7 @@ sub update_cmd { } sub revert_cmd { - my @update = list_and_choose({ PROMPT => 'Revert', + my @update = list_and_choose({ PROMPT => __('Revert'), HEADER => $status_head, }, list_modified()); if (@update) { @@ -715,7 +703,7 @@ sub revert_cmd { $_->{INDEX_ADDDEL} eq 'create') { system(qw(git update-index --force-remove --), $_->{VALUE}); - print "note: $_->{VALUE} is untracked now.\n"; + printf(__("note: %s is untracked now.\n"), $_->{VALUE}); } } } @@ -726,13 +714,13 @@ sub revert_cmd { } sub add_untracked_cmd { - my @add = list_and_choose({ PROMPT => 'Add untracked' }, + my @add = list_and_choose({ PROMPT => __('Add untracked') }, list_untracked()); if (@add) { system(qw(git update-index --add --), @add); say_n_paths('added', @add); } else { - print "No untracked files.\n"; + print __("No untracked files.\n"); } print "\n"; } @@ -753,8 +741,6 @@ sub parse_diff { } if ($diff_indent_heuristic) { splice @diff_cmd, 1, 0, "--indent-heuristic"; - } elsif ($diff_compaction_heuristic) { - splice @diff_cmd, 1, 0, "--compaction-heuristic"; } if (defined $patch_mode_revision) { push @diff_cmd, get_diff_reference($patch_mode_revision); @@ -1048,29 +1034,55 @@ sub color_diff { } @_; } +my %edit_hunk_manually_modes = ( + stage => N__( +"If the patch applies cleanly, the edited hunk will immediately be +marked for staging."), + stash => N__( +"If the patch applies cleanly, the edited hunk will immediately be +marked for stashing."), + reset_head => N__( +"If the patch applies cleanly, the edited hunk will immediately be +marked for unstaging."), + reset_nothead => N__( +"If the patch applies cleanly, the edited hunk will immediately be +marked for applying."), + checkout_index => N__( +"If the patch applies cleanly, the edited hunk will immediately be +marked for discarding"), + checkout_head => N__( +"If the patch applies cleanly, the edited hunk will immediately be +marked for discarding."), + checkout_nothead => N__( +"If the patch applies cleanly, the edited hunk will immediately be +marked for applying."), +); + sub edit_hunk_manually { my ($oldtext) = @_; my $hunkfile = $repo->repo_path . "/addp-hunk-edit.diff"; my $fh; open $fh, '>', $hunkfile - or die "failed to open hunk edit file for writing: " . $!; - print $fh "# Manual hunk edit mode -- see bottom for a quick guide\n"; + or die sprintf(__("failed to open hunk edit file for writing: %s"), $!); + print $fh Git::comment_lines __("Manual hunk edit mode -- see bottom for a quick guide.\n"); print $fh @$oldtext; - my $participle = $patch_mode_flavour{PARTICIPLE}; my $is_reverse = $patch_mode_flavour{IS_REVERSE}; my ($remove_plus, $remove_minus) = $is_reverse ? ('-', '+') : ('+', '-'); - print $fh <<EOF; -# --- -# To remove '$remove_minus' lines, make them ' ' lines (context). -# To remove '$remove_plus' lines, delete them. -# Lines starting with # will be removed. -# -# If the patch applies cleanly, the edited hunk will immediately be -# marked for $participle. If it does not apply cleanly, you will be given -# an opportunity to edit again. If all lines of the hunk are removed, -# then the edit is aborted and the hunk is left unchanged. + my $comment_line_char = Git::get_comment_line_char; + print $fh Git::comment_lines sprintf(__ <<EOF, $remove_minus, $remove_plus, $comment_line_char), +--- +To remove '%s' lines, make them ' ' lines (context). +To remove '%s' lines, delete them. +Lines starting with %s will be removed. EOF +__($edit_hunk_manually_modes{$patch_mode}), +# TRANSLATORS: 'it' refers to the patch mentioned in the previous messages. +__ <<EOF2 ; +If it does not apply cleanly, you will be given an opportunity to +edit again. If all lines of the hunk are removed, then the edit is +aborted and the hunk is left unchanged. +EOF2 close $fh; chomp(my $editor = run_cmd_pipe(qw(git var GIT_EDITOR))); @@ -1081,8 +1093,8 @@ EOF } open $fh, '<', $hunkfile - or die "failed to open hunk edit file for reading: " . $!; - my @newtext = grep { !/^#/ } <$fh>; + or die sprintf(__("failed to open hunk edit file for reading: %s"), $!); + my @newtext = grep { !/^$comment_line_char/ } <$fh>; close $fh; unlink $hunkfile; @@ -1166,22 +1178,66 @@ sub edit_hunk_loop { } else { prompt_yesno( - 'Your edited hunk does not apply. Edit again ' - . '(saying "no" discards!) [y/n]? ' + # TRANSLATORS: do not translate [y/n] + # The program will only accept that input + # at this point. + # Consider translating (saying "no" discards!) as + # (saying "n" for "no" discards!) if the translation + # of the word "no" does not start with n. + __('Your edited hunk does not apply. Edit again ' + . '(saying "no" discards!) [y/n]? ') ) or return undef; } } } +my %help_patch_modes = ( + stage => N__( +"y - stage this hunk +n - do not stage this hunk +q - quit; do not stage this hunk or any of the remaining ones +a - stage this hunk and all later hunks in the file +d - do not stage this hunk or any of the later hunks in the file"), + stash => N__( +"y - stash this hunk +n - do not stash this hunk +q - quit; do not stash this hunk or any of the remaining ones +a - stash this hunk and all later hunks in the file +d - do not stash this hunk or any of the later hunks in the file"), + reset_head => N__( +"y - unstage this hunk +n - do not unstage this hunk +q - quit; do not unstage this hunk or any of the remaining ones +a - unstage this hunk and all later hunks in the file +d - do not unstage this hunk or any of the later hunks in the file"), + reset_nothead => N__( +"y - apply this hunk to index +n - do not apply this hunk to index +q - quit; do not apply this hunk or any of the remaining ones +a - apply this hunk and all later hunks in the file +d - do not apply this hunk or any of the later hunks in the file"), + checkout_index => N__( +"y - discard this hunk from worktree +n - do not discard this hunk from worktree +q - quit; do not discard this hunk or any of the remaining ones +a - discard this hunk and all later hunks in the file +d - do not discard this hunk or any of the later hunks in the file"), + checkout_head => N__( +"y - discard this hunk from index and worktree +n - do not discard this hunk from index and worktree +q - quit; do not discard this hunk or any of the remaining ones +a - discard this hunk and all later hunks in the file +d - do not discard this hunk or any of the later hunks in the file"), + checkout_nothead => N__( +"y - apply this hunk to index and worktree +n - do not apply this hunk to index and worktree +q - quit; do not apply this hunk or any of the remaining ones +a - apply this hunk and all later hunks in the file +d - do not apply this hunk or any of the later hunks in the file"), +); + sub help_patch_cmd { - my $verb = lc $patch_mode_flavour{VERB}; - my $target = $patch_mode_flavour{TARGET}; - print colored $help_color, <<EOF ; -y - $verb this hunk$target -n - do not $verb this hunk$target -q - quit; do not $verb this hunk or any of the remaining ones -a - $verb this hunk and all later hunks in the file -d - do not $verb this hunk or any of the later hunks in the file + print colored $help_color, __($help_patch_modes{$patch_mode}), "\n", __ <<EOF ; g - select a hunk to go to / - search for a hunk matching the given regex j - leave this hunk undecided, see next undecided hunk @@ -1213,11 +1269,11 @@ sub apply_patch_for_checkout_commit { run_git_apply 'apply '.$reverse, @_; return 1; } elsif (!$applies_index) { - print colored $error_color, "The selected hunks do not apply to the index!\n"; - if (prompt_yesno "Apply them to the worktree anyway? ") { + print colored $error_color, __("The selected hunks do not apply to the index!\n"); + if (prompt_yesno __("Apply them to the worktree anyway? ")) { return run_git_apply 'apply '.$reverse, @_; } else { - print colored $error_color, "Nothing was applied.\n"; + print colored $error_color, __("Nothing was applied.\n"); return 0; } } else { @@ -1228,7 +1284,7 @@ sub apply_patch_for_checkout_commit { sub patch_update_cmd { my @all_mods = list_modified($patch_mode_flavour{FILTER}); - error_msg "ignoring unmerged: $_->{VALUE}\n" + error_msg sprintf(__("ignoring unmerged: %s\n"), $_->{VALUE}) for grep { $_->{UNMERGED} } @all_mods; @all_mods = grep { !$_->{UNMERGED} } @all_mods; @@ -1237,9 +1293,9 @@ sub patch_update_cmd { if (!@mods) { if (@all_mods) { - print STDERR "Only binary files changed.\n"; + print STDERR __("Only binary files changed.\n"); } else { - print STDERR "No changes.\n"; + print STDERR __("No changes.\n"); } return 0; } @@ -1247,7 +1303,7 @@ sub patch_update_cmd { @them = @mods; } else { - @them = list_and_choose({ PROMPT => 'Patch update', + @them = list_and_choose({ PROMPT => __('Patch update'), HEADER => $status_head, }, @mods); } @@ -1297,6 +1353,44 @@ sub display_hunks { return $i; } +my %patch_update_prompt_modes = ( + stage => { + mode => N__("Stage mode change [y,n,q,a,d,/%s,?]? "), + deletion => N__("Stage deletion [y,n,q,a,d,/%s,?]? "), + hunk => N__("Stage this hunk [y,n,q,a,d,/%s,?]? "), + }, + stash => { + mode => N__("Stash mode change [y,n,q,a,d,/%s,?]? "), + deletion => N__("Stash deletion [y,n,q,a,d,/%s,?]? "), + hunk => N__("Stash this hunk [y,n,q,a,d,/%s,?]? "), + }, + reset_head => { + mode => N__("Unstage mode change [y,n,q,a,d,/%s,?]? "), + deletion => N__("Unstage deletion [y,n,q,a,d,/%s,?]? "), + hunk => N__("Unstage this hunk [y,n,q,a,d,/%s,?]? "), + }, + reset_nothead => { + mode => N__("Apply mode change to index [y,n,q,a,d,/%s,?]? "), + deletion => N__("Apply deletion to index [y,n,q,a,d,/%s,?]? "), + hunk => N__("Apply this hunk to index [y,n,q,a,d,/%s,?]? "), + }, + checkout_index => { + mode => N__("Discard mode change from worktree [y,n,q,a,d,/%s,?]? "), + deletion => N__("Discard deletion from worktree [y,n,q,a,d,/%s,?]? "), + hunk => N__("Discard this hunk from worktree [y,n,q,a,d,/%s,?]? "), + }, + checkout_head => { + mode => N__("Discard mode change from index and worktree [y,n,q,a,d,/%s,?]? "), + deletion => N__("Discard deletion from index and worktree [y,n,q,a,d,/%s,?]? "), + hunk => N__("Discard this hunk from index and worktree [y,n,q,a,d,/%s,?]? "), + }, + checkout_nothead => { + mode => N__("Apply mode change to index and worktree [y,n,q,a,d,/%s,?]? "), + deletion => N__("Apply deletion to index and worktree [y,n,q,a,d,/%s,?]? "), + hunk => N__("Apply this hunk to index and worktree [y,n,q,a,d,/%s,?]? "), + }, +); + sub patch_update_file { my $quit = 0; my ($ix, $num); @@ -1369,12 +1463,9 @@ sub patch_update_file { for (@{$hunk[$ix]{DISPLAY}}) { print; } - print colored $prompt_color, $patch_mode_flavour{VERB}, - ($hunk[$ix]{TYPE} eq 'mode' ? ' mode change' : - $hunk[$ix]{TYPE} eq 'deletion' ? ' deletion' : - ' this hunk'), - $patch_mode_flavour{TARGET}, - " [y,n,q,a,d,/$other,?]? "; + print colored $prompt_color, + sprintf(__($patch_update_prompt_modes{$patch_mode}{$hunk[$ix]{TYPE}}), $other); + my $line = prompt_single_character; last unless defined $line; if ($line) { @@ -1397,12 +1488,12 @@ sub patch_update_file { my $response = $1; my $no = $ix > 10 ? $ix - 10 : 0; while ($response eq '') { - my $extra = ""; $no = display_hunks(\@hunk, $no); if ($no < $num) { - $extra = " (<ret> to see more)"; + print __("go to which hunk (<ret> to see more)? "); + } else { + print __("go to which hunk? "); } - print "go to which hunk$extra? "; $response = <STDIN>; if (!defined $response) { $response = ''; @@ -1410,11 +1501,13 @@ sub patch_update_file { chomp $response; } if ($response !~ /^\s*\d+\s*$/) { - error_msg "Invalid number: '$response'\n"; + error_msg sprintf(__("Invalid number: '%s'\n"), + $response); } elsif (0 < $response && $response <= $num) { $ix = $response - 1; } else { - error_msg "Sorry, only $num hunks available.\n"; + error_msg sprintf(__n("Sorry, only %d hunk available.\n", + "Sorry, only %d hunks available.\n", $num), $num); } next; } @@ -1439,7 +1532,7 @@ sub patch_update_file { elsif ($line =~ m|^/(.*)|) { my $regex = $1; if ($1 eq "") { - print colored $prompt_color, "search for regex? "; + print colored $prompt_color, __("search for regex? "); $regex = <STDIN>; if (defined $regex) { chomp $regex; @@ -1452,7 +1545,7 @@ sub patch_update_file { if ($@) { my ($err,$exp) = ($@, $1); $err =~ s/ at .*git-add--interactive line \d+, <STDIN> line \d+.*$//; - error_msg "Malformed search regexp $exp: $err\n"; + error_msg sprintf(__("Malformed search regexp %s: %s\n"), $exp, $err); next; } my $iy = $ix; @@ -1462,7 +1555,7 @@ sub patch_update_file { $iy++; $iy = 0 if ($iy >= $num); if ($ix == $iy) { - error_msg "No hunk matches the given pattern\n"; + error_msg __("No hunk matches the given pattern\n"); last; } } @@ -1474,7 +1567,7 @@ sub patch_update_file { $ix--; } else { - error_msg "No previous hunk\n"; + error_msg __("No previous hunk\n"); } next; } @@ -1483,7 +1576,7 @@ sub patch_update_file { $ix++; } else { - error_msg "No next hunk\n"; + error_msg __("No next hunk\n"); } next; } @@ -1496,21 +1589,23 @@ sub patch_update_file { } } else { - error_msg "No previous hunk\n"; + error_msg __("No previous hunk\n"); } next; } elsif ($line =~ /^j/) { if ($other !~ /j/) { - error_msg "No next hunk\n"; + error_msg __("No next hunk\n"); next; } } elsif ($other =~ /s/ && $line =~ /^s/) { my @split = split_hunk($hunk[$ix]{TEXT}, $hunk[$ix]{DISPLAY}); if (1 < @split) { - print colored $header_color, "Split into ", - scalar(@split), " hunks.\n"; + print colored $header_color, sprintf( + __n("Split into %d hunk.\n", + "Split into %d hunks.\n", + scalar(@split)), scalar(@split)); } splice (@hunk, $ix, 1, @split); $num = scalar @hunk; @@ -1560,23 +1655,25 @@ sub diff_cmd { my @mods = list_modified('index-only'); @mods = grep { !($_->{BINARY}) } @mods; return if (!@mods); - my (@them) = list_and_choose({ PROMPT => 'Review diff', + my (@them) = list_and_choose({ PROMPT => __('Review diff'), IMMEDIATE => 1, HEADER => $status_head, }, @mods); return if (!@them); - my $reference = is_initial_commit() ? get_empty_tree() : 'HEAD'; + my $reference = (is_initial_commit()) ? get_empty_tree() : 'HEAD'; system(qw(git diff -p --cached), $reference, '--', map { $_->{VALUE} } @them); } sub quit_cmd { - print "Bye.\n"; + print __("Bye.\n"); exit(0); } sub help_cmd { - print colored $help_color, <<\EOF ; +# TRANSLATORS: please do not translate the command names +# 'status', 'update', 'revert', etc. + print colored $help_color, __ <<'EOF' ; status - show paths with changes update - add working tree state to the staged set of changes revert - revert staged set of changes back to the HEAD version @@ -1594,39 +1691,40 @@ sub process_args { if ($1 eq 'reset') { $patch_mode = 'reset_head'; $patch_mode_revision = 'HEAD'; - $arg = shift @ARGV or die "missing --"; + $arg = shift @ARGV or die __("missing --"); if ($arg ne '--') { $patch_mode_revision = $arg; $patch_mode = ($arg eq 'HEAD' ? 'reset_head' : 'reset_nothead'); - $arg = shift @ARGV or die "missing --"; + $arg = shift @ARGV or die __("missing --"); } } elsif ($1 eq 'checkout') { - $arg = shift @ARGV or die "missing --"; + $arg = shift @ARGV or die __("missing --"); if ($arg eq '--') { $patch_mode = 'checkout_index'; } else { $patch_mode_revision = $arg; $patch_mode = ($arg eq 'HEAD' ? 'checkout_head' : 'checkout_nothead'); - $arg = shift @ARGV or die "missing --"; + $arg = shift @ARGV or die __("missing --"); } } elsif ($1 eq 'stage' or $1 eq 'stash') { $patch_mode = $1; - $arg = shift @ARGV or die "missing --"; + $arg = shift @ARGV or die __("missing --"); } else { - die "unknown --patch mode: $1"; + die sprintf(__("unknown --patch mode: %s"), $1); } } else { $patch_mode = 'stage'; - $arg = shift @ARGV or die "missing --"; + $arg = shift @ARGV or die __("missing --"); } - die "invalid argument $arg, expecting --" - unless $arg eq "--"; + die sprintf(__("invalid argument %s, expecting --"), + $arg) unless $arg eq "--"; %patch_mode_flavour = %{$patch_modes{$patch_mode}}; + $cmd = 1; } elsif ($arg ne "--") { - die "invalid argument $arg, expecting --"; + die sprintf(__("invalid argument %s, expecting --"), $arg); } } @@ -1641,10 +1739,10 @@ sub main_loop { [ 'help', \&help_cmd, ], ); while (1) { - my ($it) = list_and_choose({ PROMPT => 'What now', + my ($it) = list_and_choose({ PROMPT => __('What now'), SINGLETON => 1, LIST_FLAT => 4, - HEADER => '*** Commands ***', + HEADER => __('*** Commands ***'), ON_EOF => \&quit_cmd, IMMEDIATE => 1 }, @cmd); if ($it) { @@ -1660,7 +1758,7 @@ sub main_loop { process_args(); refresh(); -if ($patch_mode) { +if ($cmd) { patch_update_cmd(); } else { diff --git a/git-difftool.perl b/git-difftool.perl index a5790d03a0..df59bdfe97 100755 --- a/git-difftool.perl +++ b/git-difftool.perl @@ -22,6 +22,7 @@ use File::Path qw(mkpath rmtree); use File::Temp qw(tempdir); use Getopt::Long qw(:config pass_through); use Git; +use Git::I18N; sub usage { @@ -59,14 +60,14 @@ sub exit_cleanup sub use_wt_file { - my ($workdir, $file, $sha1) = @_; + my ($file, $sha1) = @_; my $null_sha1 = '0' x 40; - if (-l "$workdir/$file" || ! -e _) { + if (-l $file || ! -e _) { return (0, $null_sha1); } - my $wt_sha1 = Git::command_oneline('hash-object', "$workdir/$file"); + my $wt_sha1 = Git::command_oneline('hash-object', $file); my $use = ($sha1 eq $null_sha1) || ($sha1 eq $wt_sha1); return ($use, $wt_sha1); } @@ -100,11 +101,17 @@ sub changed_files sub setup_dir_diff { - my ($workdir, $symlinks) = @_; + my ($worktree, $symlinks) = @_; my @gitargs = ('diff', '--raw', '--no-abbrev', '-z', @ARGV); my $diffrtn = Git::command_oneline(@gitargs); exit(0) unless defined($diffrtn); + # Go to the root of the worktree now that we've captured the list of + # changed files. The paths returned by diff --raw are relative to the + # top-level of the repository, but we defer changing directories so + # that @ARGV can perform pathspec limiting in the current directory. + chdir($worktree); + # Build index info for left and right sides of the diff my $submodule_mode = '160000'; my $symlink_mode = '120000'; @@ -115,14 +122,14 @@ sub setup_dir_diff my $wtindex = ''; my %submodule; my %symlink; - my @working_tree = (); + my @files = (); my %working_tree_dups = (); my @rawdiff = split('\0', $diffrtn); my $i = 0; while ($i < $#rawdiff) { if ($rawdiff[$i] =~ /^::/) { - warn << 'EOF'; + warn __ <<'EOF'; Combined diff formats ('-c' and '--cc') are not supported in directory diff mode ('-d' and '--dir-diff'). EOF @@ -167,14 +174,14 @@ EOF } if ($rmode ne $null_mode) { - # Avoid duplicate working_tree entries + # Avoid duplicate entries if ($working_tree_dups{$dst_path}++) { next; } my ($use, $wt_sha1) = - use_wt_file($workdir, $dst_path, $rsha1); + use_wt_file($dst_path, $rsha1); if ($use) { - push @working_tree, $dst_path; + push @files, $dst_path; $wtindex .= "$rmode $wt_sha1\t$dst_path\0"; } else { $rindex .= "$rmode $rsha1\t$dst_path\0"; @@ -182,6 +189,10 @@ EOF } } + # Go to the root of the worktree so that the left index files + # are properly setup -- the index is toplevel-relative. + chdir($worktree); + # Setup temp directories my $tmpdir = tempdir('git-difftool.XXXXX', CLEANUP => 0, TMPDIR => 1); my $ldir = "$tmpdir/left"; @@ -220,23 +231,21 @@ EOF delete($ENV{GIT_INDEX_FILE}); # Changes in the working tree need special treatment since they are - # not part of the index. Remove any trailing slash from $workdir - # before starting to avoid double slashes in symlink targets. - $workdir =~ s|/$||; - for my $file (@working_tree) { + # not part of the index. + for my $file (@files) { my $dir = dirname($file); unless (-d "$rdir/$dir") { mkpath("$rdir/$dir") or exit_cleanup($tmpdir, 1); } if ($symlinks) { - symlink("$workdir/$file", "$rdir/$file") or + symlink("$worktree/$file", "$rdir/$file") or exit_cleanup($tmpdir, 1); } else { - copy("$workdir/$file", "$rdir/$file") or + copy($file, "$rdir/$file") or exit_cleanup($tmpdir, 1); - my $mode = stat("$workdir/$file")->mode; + my $mode = stat($file)->mode; chmod($mode, "$rdir/$file") or exit_cleanup($tmpdir, 1); } @@ -274,7 +283,7 @@ EOF exit_cleanup($tmpdir, 1) if not $ok; } - return ($ldir, $rdir, $tmpdir, @working_tree); + return ($ldir, $rdir, $tmpdir, @files); } sub write_to_file @@ -338,7 +347,7 @@ sub main if (length($opts{difftool_cmd}) > 0) { $ENV{GIT_DIFF_TOOL} = $opts{difftool_cmd}; } else { - print "No <tool> given for --tool=<tool>\n"; + print __("No <tool> given for --tool=<tool>\n"); usage(1); } } @@ -346,7 +355,7 @@ sub main if (length($opts{extcmd}) > 0) { $ENV{GIT_DIFFTOOL_EXTCMD} = $opts{extcmd}; } else { - print "No <cmd> given for --extcmd=<cmd>\n"; + print __("No <cmd> given for --extcmd=<cmd>\n"); usage(1); } } @@ -384,8 +393,9 @@ sub dir_diff my $error = 0; my $repo = Git->repository(); my $repo_path = $repo->repo_path(); - my $workdir = $repo->wc_path(); - my ($a, $b, $tmpdir, @worktree) = setup_dir_diff($workdir, $symlinks); + my $worktree = $repo->wc_path(); + $worktree =~ s|/$||; # Avoid double slashes in symlink targets + my ($a, $b, $tmpdir, @files) = setup_dir_diff($worktree, $symlinks); if (defined($extcmd)) { $rc = system($extcmd, $a, $b); @@ -406,37 +416,38 @@ sub dir_diff my %tmp_modified; my $indices_loaded = 0; - for my $file (@worktree) { + for my $file (@files) { next if $symlinks && -l "$b/$file"; next if ! -f "$b/$file"; if (!$indices_loaded) { %wt_modified = changed_files( - $repo_path, "$tmpdir/wtindex", $workdir); + $repo_path, "$tmpdir/wtindex", $worktree); %tmp_modified = changed_files( $repo_path, "$tmpdir/wtindex", $b); $indices_loaded = 1; } if (exists $wt_modified{$file} and exists $tmp_modified{$file}) { - my $errmsg = "warning: Both files modified: "; - $errmsg .= "'$workdir/$file' and '$b/$file'.\n"; - $errmsg .= "warning: Working tree file has been left.\n"; - $errmsg .= "warning:\n"; - warn $errmsg; + warn sprintf(__( + "warning: Both files modified:\n" . + "'%s/%s' and '%s/%s'.\n" . + "warning: Working tree file has been left.\n" . + "warning:\n"), $worktree, $file, $b, $file); $error = 1; } elsif (exists $tmp_modified{$file}) { my $mode = stat("$b/$file")->mode; - copy("$b/$file", "$workdir/$file") or + copy("$b/$file", $file) or exit_cleanup($tmpdir, 1); - chmod($mode, "$workdir/$file") or + chmod($mode, $file) or exit_cleanup($tmpdir, 1); } } if ($error) { - warn "warning: Temporary files exist in '$tmpdir'.\n"; - warn "warning: You may want to cleanup or recover these.\n"; + warn sprintf(__( + "warning: Temporary files exist in '%s'.\n" . + "warning: You may want to cleanup or recover these.\n"), $tmpdir); exit(1); } else { exit_cleanup($tmpdir, $rc); diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh index 9abd00be21..9a8b97a2ab 100644 --- a/git-mergetool--lib.sh +++ b/git-mergetool--lib.sh @@ -125,16 +125,7 @@ setup_user_tool () { } merge_cmd () { - trust_exit_code=$(git config --bool \ - "mergetool.$1.trustExitCode" || echo false) - if test "$trust_exit_code" = "false" - then - touch "$BACKUP" - ( eval $merge_tool_cmd ) - check_unchanged - else - ( eval $merge_tool_cmd ) - fi + ( eval $merge_tool_cmd ) } } @@ -162,6 +153,28 @@ setup_tool () { echo "$1" } + # Most tools' exit codes cannot be trusted, so By default we ignore + # their exit code and check the merged file's modification time in + # check_unchanged() to determine whether or not the merge was + # successful. The return value from run_merge_cmd, by default, is + # determined by check_unchanged(). + # + # When a tool's exit code can be trusted then the return value from + # run_merge_cmd is simply the tool's exit code, and check_unchanged() + # is not called. + # + # The return value of exit_code_trustable() tells us whether or not we + # can trust the tool's exit code. + # + # User-defined and built-in tools default to false. + # Built-in tools advertise that their exit code is trustable by + # redefining exit_code_trustable() to true. + + exit_code_trustable () { + false + } + + if ! test -f "$MERGE_TOOLS_DIR/$tool" then setup_user_tool @@ -197,6 +210,19 @@ get_merge_tool_cmd () { fi } +trust_exit_code () { + if git config --bool "mergetool.$1.trustExitCode" + then + :; # OK + elif exit_code_trustable + then + echo true + else + echo false + fi +} + + # Entry point for running tools run_merge_tool () { # If GIT_PREFIX is empty then we cannot use it in tools @@ -225,7 +251,15 @@ run_diff_cmd () { # Run a either a configured or built-in merge tool run_merge_cmd () { - merge_cmd "$1" + mergetool_trust_exit_code=$(trust_exit_code "$1") + if test "$mergetool_trust_exit_code" = "true" + then + merge_cmd "$1" + else + touch "$BACKUP" + merge_cmd "$1" + check_unchanged + fi } list_merge_tool_candidates () { @@ -25,6 +25,7 @@ import stat import zipfile import zlib import ctypes +import errno try: from subprocess import CalledProcessError @@ -78,6 +79,11 @@ def p4_build_cmd(cmd): if len(client) > 0: real_cmd += ["-c", client] + retries = gitConfigInt("git-p4.retries") + if retries is None: + # Perform 3 retries by default + retries = 3 + real_cmd += ["-r", str(retries)] if isinstance(cmd,basestring): real_cmd = ' '.join(real_cmd) + ' ' + cmd @@ -85,6 +91,16 @@ def p4_build_cmd(cmd): real_cmd += cmd return real_cmd +def git_dir(path): + """ Return TRUE if the given path is a git directory (/path/to/dir/.git). + This won't automatically add ".git" to a directory. + """ + d = read_pipe(["git", "--git-dir", path, "rev-parse", "--git-dir"], True).strip() + if not d or len(d) == 0: + return None + else: + return d + def chdir(path, is_client_path=False): """Do chdir to the given path, and set the PWD environment variable for use by P4. It does not look at getcwd() output. @@ -262,6 +278,10 @@ def p4_revert(f): def p4_reopen(type, f): p4_system(["reopen", "-t", type, wildcard_encode(f)]) +def p4_reopen_in_change(changelist, files): + cmd = ["reopen", "-c", str(changelist)] + files + p4_system(cmd) + def p4_move(src, dest): p4_system(["move", "-k", wildcard_encode(src), wildcard_encode(dest)]) @@ -563,10 +583,7 @@ def currentGitBranch(): return read_pipe(["git", "name-rev", "HEAD"]).split(" ")[1].strip() def isValidGitDir(path): - if (os.path.exists(path + "/HEAD") - and os.path.exists(path + "/refs") and os.path.exists(path + "/objects")): - return True; - return False + return git_dir(path) != None def parseRevision(ref): return read_pipe("git rev-parse %s" % ref).strip() @@ -822,7 +839,7 @@ def p4ChangesForPaths(depotPaths, changeRange, requestedBlockSize): die("cannot use --changes-block-size with non-numeric revisions") block_size = None - changes = [] + changes = set() # Retrieve changes a block at a time, to prevent running # into a MaxResults/MaxScanRows error from the server. @@ -841,7 +858,7 @@ def p4ChangesForPaths(depotPaths, changeRange, requestedBlockSize): # Insert changes in chronological order for line in reversed(p4_read_pipe_lines(cmd)): - changes.append(int(line.split(" ")[1])) + changes.add(int(line.split(" ")[1])) if not block_size: break @@ -1005,18 +1022,20 @@ class LargeFileSystem(object): steps.""" if self.exceedsLargeFileThreshold(relPath, contents) or self.hasLargeFileExtension(relPath): contentTempFile = self.generateTempFile(contents) - (git_mode, contents, localLargeFile) = self.generatePointer(contentTempFile) - - # Move temp file to final location in large file system - largeFileDir = os.path.dirname(localLargeFile) - if not os.path.isdir(largeFileDir): - os.makedirs(largeFileDir) - shutil.move(contentTempFile, localLargeFile) - self.addLargeFile(relPath) - if gitConfigBool('git-p4.largeFilePush'): - self.pushFile(localLargeFile) - if verbose: - sys.stderr.write("%s moved to large file system (%s)\n" % (relPath, localLargeFile)) + (pointer_git_mode, contents, localLargeFile) = self.generatePointer(contentTempFile) + if pointer_git_mode: + git_mode = pointer_git_mode + if localLargeFile: + # Move temp file to final location in large file system + largeFileDir = os.path.dirname(localLargeFile) + if not os.path.isdir(largeFileDir): + os.makedirs(largeFileDir) + shutil.move(contentTempFile, localLargeFile) + self.addLargeFile(relPath) + if gitConfigBool('git-p4.largeFilePush'): + self.pushFile(localLargeFile) + if verbose: + sys.stderr.write("%s moved to large file system (%s)\n" % (relPath, localLargeFile)) return (git_mode, contents) class MockLFS(LargeFileSystem): @@ -1056,6 +1075,9 @@ class GitLFS(LargeFileSystem): the actual content. Return also the new location of the actual content. """ + if os.path.getsize(contentFile) == 0: + return (None, '', None) + pointerProcess = subprocess.Popen( ['git', 'lfs', 'pointer', '--file=' + contentFile], stdout=subprocess.PIPE @@ -1098,10 +1120,10 @@ class GitLFS(LargeFileSystem): '# Git LFS (see https://git-lfs.github.com/)\n', '#\n', ] + - ['*.' + f.replace(' ', '[[:space:]]') + ' filter=lfs -text\n' + ['*.' + f.replace(' ', '[[:space:]]') + ' filter=lfs diff=lfs merge=lfs -text\n' for f in sorted(gitConfigList('git-p4.largeFileExtensions')) ] + - ['/' + f.replace(' ', '[[:space:]]') + ' filter=lfs -text\n' + ['/' + f.replace(' ', '[[:space:]]') + ' filter=lfs diff=lfs merge=lfs -text\n' for f in sorted(self.largeFiles) if not self.hasLargeFileExtension(f) ] ) @@ -1289,6 +1311,12 @@ class P4Submit(Command, P4UserMap): optparse.make_option("--conflict", dest="conflict_behavior", choices=self.conflict_behavior_choices), optparse.make_option("--branch", dest="branch"), + optparse.make_option("--shelve", dest="shelve", action="store_true", + help="Shelve instead of submit. Shelved files are reverted, " + "restoring the workspace to the state before the shelve"), + optparse.make_option("--update-shelve", dest="update_shelve", action="store", type="int", + metavar="CHANGELIST", + help="update an existing shelved changelist, implies --shelve") ] self.description = "Submit changes from git to the perforce depot." self.usage += " [name of git branch to submit into perforce depot]" @@ -1296,6 +1324,8 @@ class P4Submit(Command, P4UserMap): self.detectRenames = False self.preserveUser = gitConfigBool("git-p4.preserveUser") self.dry_run = False + self.shelve = False + self.update_shelve = None self.prepare_p4_only = False self.conflict_behavior = None self.isWindows = (platform.system() == "Windows") @@ -1464,7 +1494,7 @@ class P4Submit(Command, P4UserMap): return 1 return 0 - def prepareSubmitTemplate(self): + def prepareSubmitTemplate(self, changelist=None): """Run "p4 change -o" to grab a change specification template. This does not use "p4 -G", as it is nice to keep the submission template in original order, since a human might edit it. @@ -1476,7 +1506,11 @@ class P4Submit(Command, P4UserMap): template = "" inFilesSection = False - for line in p4_read_pipe_lines(['change', '-o']): + args = ['change', '-o'] + if changelist: + args.append(str(changelist)) + + for line in p4_read_pipe_lines(args): if line.endswith("\r\n"): line = line[:-2] + "\n" if inFilesSection: @@ -1538,7 +1572,7 @@ class P4Submit(Command, P4UserMap): if response == 'n': return False - def get_diff_description(self, editedFiles, filesToAdd): + def get_diff_description(self, editedFiles, filesToAdd, symlinks): # diff if os.environ.has_key("P4DIFF"): del(os.environ["P4DIFF"]) @@ -1553,10 +1587,17 @@ class P4Submit(Command, P4UserMap): newdiff += "==== new file ====\n" newdiff += "--- /dev/null\n" newdiff += "+++ %s\n" % newFile - f = open(newFile, "r") - for line in f.readlines(): - newdiff += "+" + line - f.close() + + is_link = os.path.islink(newFile) + expect_link = newFile in symlinks + + if is_link and expect_link: + newdiff += "+%s\n" % os.readlink(newFile) + else: + f = open(newFile, "r") + for line in f.readlines(): + newdiff += "+" + line + f.close() return (diff + newdiff).replace('\r\n', '\n') @@ -1574,12 +1615,16 @@ class P4Submit(Command, P4UserMap): filesToDelete = set() editedFiles = set() pureRenameCopy = set() + symlinks = set() filesToChangeExecBit = {} + all_files = list() for line in diff: diff = parseDiffTreeEntry(line) modifier = diff['status'] path = diff['src'] + all_files.append(path) + if modifier == "M": p4_edit(path) if isModeExecChanged(diff['src_mode'], diff['dst_mode']): @@ -1590,6 +1635,11 @@ class P4Submit(Command, P4UserMap): filesToChangeExecBit[path] = diff['dst_mode'] if path in filesToDelete: filesToDelete.remove(path) + + dst_mode = int(diff['dst_mode'], 8) + if dst_mode == 0120000: + symlinks.add(path) + elif modifier == "D": filesToDelete.add(path) if path in filesToAdd: @@ -1705,6 +1755,10 @@ class P4Submit(Command, P4UserMap): mode = filesToChangeExecBit[f] setP4ExecBit(f, mode) + if self.update_shelve: + print("all_files = %s" % str(all_files)) + p4_reopen_in_change(self.update_shelve, all_files) + # # Build p4 change description, starting with the contents # of the git commit message. @@ -1713,7 +1767,7 @@ class P4Submit(Command, P4UserMap): logMessage = logMessage.strip() (logMessage, jobs) = self.separate_jobs_from_description(logMessage) - template = self.prepareSubmitTemplate() + template = self.prepareSubmitTemplate(self.update_shelve) submitTemplate = self.prepareLogMessage(template, logMessage, jobs) if self.preserveUser: @@ -1727,7 +1781,7 @@ class P4Submit(Command, P4UserMap): separatorLine = "######## everything below this line is just the diff #######\n" if not self.prepare_p4_only: submitTemplate += separatorLine - submitTemplate += self.get_diff_description(editedFiles, filesToAdd) + submitTemplate += self.get_diff_description(editedFiles, filesToAdd, symlinks) (handle, fileName) = tempfile.mkstemp() tmpFile = os.fdopen(handle, "w+b") @@ -1785,7 +1839,17 @@ class P4Submit(Command, P4UserMap): if self.isWindows: message = message.replace("\r\n", "\n") submitTemplate = message[:message.index(separatorLine)] - p4_write_pipe(['submit', '-i'], submitTemplate) + + if self.update_shelve: + p4_write_pipe(['shelve', '-r', '-i'], submitTemplate) + elif self.shelve: + p4_write_pipe(['shelve', '-i'], submitTemplate) + else: + p4_write_pipe(['submit', '-i'], submitTemplate) + # The rename/copy happened by applying a patch that created a + # new file. This leaves it writable, which confuses p4. + for f in pureRenameCopy: + p4_sync(f, "-f") if self.preserveUser: if p4User: @@ -1795,23 +1859,20 @@ class P4Submit(Command, P4UserMap): changelist = self.lastP4Changelist() self.modifyChangelistUser(changelist, p4User) - # The rename/copy happened by applying a patch that created a - # new file. This leaves it writable, which confuses p4. - for f in pureRenameCopy: - p4_sync(f, "-f") submitted = True finally: # skip this patch - if not submitted: - print "Submission cancelled, undoing p4 changes." - for f in editedFiles: + if not submitted or self.shelve: + if self.shelve: + print ("Reverting shelved files.") + else: + print ("Submission cancelled, undoing p4 changes.") + for f in editedFiles | filesToDelete: p4_revert(f) for f in filesToAdd: p4_revert(f) os.remove(f) - for f in filesToDelete: - p4_revert(f) os.remove(fileName) return submitted @@ -1907,6 +1968,9 @@ class P4Submit(Command, P4UserMap): if len(self.origin) == 0: self.origin = upstream + if self.update_shelve: + self.shelve = True + if self.preserveUser: if not self.canChangeChangelists(): die("Cannot preserve user names without p4 super-user or admin permissions") @@ -2067,13 +2131,13 @@ class P4Submit(Command, P4UserMap): break chdir(self.oldWorkingDirectory) - + shelved_applied = "shelved" if self.shelve else "applied" if self.dry_run: pass elif self.prepare_p4_only: pass elif len(commits) == len(applied): - print "All commits applied!" + print ("All commits {0}!".format(shelved_applied)) sync = P4Sync() if self.branch: @@ -2085,9 +2149,9 @@ class P4Submit(Command, P4UserMap): else: if len(applied) == 0: - print "No commits applied." + print ("No commits {0}.".format(shelved_applied)) else: - print "Applied only the commits marked with '*':" + print ("{0} only the commits marked with '*':".format(shelved_applied.capitalize())) for c in commits: if c in applied: star = "*" @@ -3682,6 +3746,7 @@ def main(): if cmd.gitdir == None: cmd.gitdir = os.path.abspath(".git") if not isValidGitDir(cmd.gitdir): + # "rev-parse --git-dir" without arguments will try $PWD/.git cmd.gitdir = read_pipe("git rev-parse --git-dir").strip() if os.path.exists(cmd.gitdir): cdup = read_pipe("git rev-parse --show-cdup").strip() @@ -3694,6 +3759,7 @@ def main(): else: die("fatal: cannot locate git repository at %s" % cmd.gitdir) + # so git commands invoked from the P4 workspace will succeed os.environ["GIT_DIR"] = cmd.gitdir if not cmd.run(args): diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index ca994c5c54..b0a6f2b7ba 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -93,8 +93,17 @@ eval ' GIT_CHERRY_PICK_HELP="$resolvemsg" export GIT_CHERRY_PICK_HELP -comment_char=$(git config --get core.commentchar 2>/dev/null | cut -c1) -: ${comment_char:=#} +comment_char=$(git config --get core.commentchar 2>/dev/null) +case "$comment_char" in +'' | auto) + comment_char="#" + ;; +?) + ;; +*) + comment_char=$(echo "$comment_char" | cut -c1) + ;; +esac warn () { printf '%s\n' "$*" >&2 @@ -428,7 +437,8 @@ update_squash_messages () { }' <"$squash_msg".bak } >"$squash_msg" else - commit_message HEAD > "$fixup_msg" || die "$(gettext "Cannot write \$fixup_msg")" + commit_message HEAD >"$fixup_msg" || + die "$(eval_gettext "Cannot write \$fixup_msg")" count=2 { printf '%s\n' "$comment_char $(gettext "This is a combination of 2 commits.")" diff --git a/git-rebase.sh b/git-rebase.sh index 04f6e44bc8..48d7c5ded4 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -43,6 +43,7 @@ continue! continue abort! abort and check out the original branch skip! skip current patch and continue edit-todo! edit the todo list during an interactive rebase +quit! abort but keep HEAD where it is " . git-sh-setup set_reflog_action rebase @@ -241,7 +242,7 @@ do --verify) ok_to_skip_pre_rebase= ;; - --continue|--skip|--abort|--edit-todo) + --continue|--skip|--abort|--quit|--edit-todo) test $total_argc -eq 2 || usage action=${1##--} ;; @@ -399,6 +400,9 @@ abort) finish_rebase exit ;; +quit) + exec rm -rf "$state_dir" + ;; edit-todo) run_specific_rebase ;; diff --git a/git-send-email.perl b/git-send-email.perl index da81be40cb..068d60b3e6 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -28,6 +28,7 @@ use File::Temp qw/ tempdir tempfile /; use File::Spec::Functions qw(catfile); use Error qw(:try); use Git; +use Git::I18N; Getopt::Long::Configure qw/ pass_through /; @@ -117,20 +118,20 @@ sub format_2822_time { my $localmin = $localtm[1] + $localtm[2] * 60; my $gmtmin = $gmttm[1] + $gmttm[2] * 60; if ($localtm[0] != $gmttm[0]) { - die "local zone differs from GMT by a non-minute interval\n"; + die __("local zone differs from GMT by a non-minute interval\n"); } if ((($gmttm[6] + 1) % 7) == $localtm[6]) { $localmin += 1440; } elsif ((($gmttm[6] - 1) % 7) == $localtm[6]) { $localmin -= 1440; } elsif ($gmttm[6] != $localtm[6]) { - die "local time offset greater than or equal to 24 hours\n"; + die __("local time offset greater than or equal to 24 hours\n"); } my $offset = $localmin - $gmtmin; my $offhour = $offset / 60; my $offmin = abs($offset % 60); if (abs($offhour) >= 24) { - die ("local time offset greater than or equal to 24 hours\n"); + die __("local time offset greater than or equal to 24 hours\n"); } return sprintf("%s, %2d %s %d %02d:%02d:%02d %s%02d%02d", @@ -198,13 +199,13 @@ sub do_edit { map { system('sh', '-c', $editor.' "$@"', $editor, $_); if (($? & 127) || ($? >> 8)) { - die("the editor exited uncleanly, aborting everything"); + die(__("the editor exited uncleanly, aborting everything")); } } @_; } else { system('sh', '-c', $editor.' "$@"', $editor, @_); if (($? & 127) || ($? >> 8)) { - die("the editor exited uncleanly, aborting everything"); + die(__("the editor exited uncleanly, aborting everything")); } } } @@ -278,10 +279,13 @@ sub signal_handler { # tmp files from --compose if (defined $compose_filename) { if (-e $compose_filename) { - print "'$compose_filename' contains an intermediate version of the email you were composing.\n"; + printf __("'%s' contains an intermediate version ". + "of the email you were composing.\n"), + $compose_filename; } if (-e ($compose_filename . ".final")) { - print "'$compose_filename.final' contains the composed email.\n" + printf __("'%s.final' contains the composed email.\n"), + $compose_filename; } } @@ -298,7 +302,7 @@ my $help; my $rc = GetOptions("h" => \$help, "dump-aliases" => \$dump_aliases); usage() unless $rc; -die "--dump-aliases incompatible with other options\n" +die __("--dump-aliases incompatible with other options\n") if !$help and $dump_aliases and @ARGV; $rc = GetOptions( "sender|from=s" => \$sender, @@ -361,7 +365,7 @@ unless ($rc) { usage(); } -die "Cannot run git format-patch from outside a repository\n" +die __("Cannot run git format-patch from outside a repository\n") if $format_patch and not $repo; # Now, let's fill any that aren't set in with defaults: @@ -430,7 +434,7 @@ $smtp_encryption = '' unless (defined $smtp_encryption); my(%suppress_cc); if (@suppress_cc) { foreach my $entry (@suppress_cc) { - die "Unknown --suppress-cc field: '$entry'\n" + die sprintf(__("Unknown --suppress-cc field: '%s'\n"), $entry) unless $entry =~ /^(?:all|cccmd|cc|author|self|sob|body|bodycc)$/; $suppress_cc{$entry} = 1; } @@ -459,7 +463,7 @@ my $confirm_unconfigured = !defined $confirm; if ($confirm_unconfigured) { $confirm = scalar %suppress_cc ? 'compose' : 'auto'; }; -die "Unknown --confirm setting: '$confirm'\n" +die sprintf(__("Unknown --confirm setting: '%s'\n"), $confirm) unless $confirm =~ /^(?:auto|cc|compose|always|never)/; # Debugging, print out the suppressions. @@ -491,16 +495,16 @@ my %aliases; sub parse_sendmail_alias { local $_ = shift; if (/"/) { - print STDERR "warning: sendmail alias with quotes is not supported: $_\n"; + printf STDERR __("warning: sendmail alias with quotes is not supported: %s\n"), $_; } elsif (/:include:/) { - print STDERR "warning: `:include:` not supported: $_\n"; + printf STDERR __("warning: `:include:` not supported: %s\n"), $_; } elsif (/[\/|]/) { - print STDERR "warning: `/file` or `|pipe` redirection not supported: $_\n"; + printf STDERR __("warning: `/file` or `|pipe` redirection not supported: %s\n"), $_; } elsif (/^(\S+?)\s*:\s*(.+)$/) { my ($alias, $addr) = ($1, $2); $aliases{$alias} = [ split_addrs($addr) ]; } else { - print STDERR "warning: sendmail line is not recognized: $_\n"; + printf STDERR __("warning: sendmail line is not recognized: %s\n"), $_; } } @@ -581,11 +585,11 @@ sub is_format_patch_arg { if (defined($format_patch)) { return $format_patch; } - die(<<EOF); -File '$f' exists but it could also be the range of commits + die sprintf(__ <<EOF, $f, $f); +File '%s' exists but it could also be the range of commits to produce patches for. Please disambiguate by... - * Saying "./$f" if you mean a file; or + * Saying "./%s" if you mean a file; or * Giving --format-patch option if you mean a range. EOF } catch Git::Error::Command with { @@ -603,7 +607,7 @@ while (defined(my $f = shift @ARGV)) { @ARGV = (); } elsif (-d $f and !is_format_patch_arg($f)) { opendir my $dh, $f - or die "Failed to opendir $f: $!"; + or die sprintf(__("Failed to opendir %s: %s"), $f, $!); push @files, grep { -f $_ } map { catfile($f, $_) } sort readdir $dh; @@ -616,7 +620,7 @@ while (defined(my $f = shift @ARGV)) { } if (@rev_list_opts) { - die "Cannot run git format-patch from outside a repository\n" + die __("Cannot run git format-patch from outside a repository\n") unless $repo; push @files, $repo->command('format-patch', '-o', tempdir(CLEANUP => 1), @rev_list_opts); } @@ -627,7 +631,8 @@ if ($validate) { foreach my $f (@files) { unless (-p $f) { my $error = validate_patch($f); - $error and die "fatal: $f: $error\nwarning: no patches were sent\n"; + $error and die sprintf(__("fatal: %s: %s\nwarning: no patches were sent\n"), + $f, $error); } } } @@ -637,7 +642,7 @@ if (@files) { print $_,"\n" for (@files); } } else { - print STDERR "\nNo patch files specified!\n\n"; + print STDERR __("\nNo patch files specified!\n\n"); usage(); } @@ -650,7 +655,7 @@ sub get_patch_subject { return "GIT: $1\n"; } close $fh; - die "No subject line in $fn ?"; + die sprintf(__("No subject line in %s?"), $fn); } if ($compose) { @@ -660,25 +665,27 @@ if ($compose) { tempfile(".gitsendemail.msg.XXXXXX", DIR => $repo->repo_path()) : tempfile(".gitsendemail.msg.XXXXXX", DIR => "."))[1]; open my $c, ">", $compose_filename - or die "Failed to open for writing $compose_filename: $!"; + or die sprintf(__("Failed to open for writing %s: %s"), $compose_filename, $!); my $tpl_sender = $sender || $repoauthor || $repocommitter || ''; my $tpl_subject = $initial_subject || ''; my $tpl_reply_to = $initial_reply_to || ''; - print $c <<EOT; + print $c <<EOT1, Git::prefix_lines("GIT: ", __ <<EOT2), <<EOT3; From $tpl_sender # This line is ignored. -GIT: Lines beginning in "GIT:" will be removed. -GIT: Consider including an overall diffstat or table of contents -GIT: for the patch you are writing. -GIT: -GIT: Clear the body content if you don't wish to send a summary. +EOT1 +Lines beginning in "GIT:" will be removed. +Consider including an overall diffstat or table of contents +for the patch you are writing. + +Clear the body content if you don't wish to send a summary. +EOT2 From: $tpl_sender Subject: $tpl_subject In-Reply-To: $tpl_reply_to -EOT +EOT3 for my $f (@files) { print $c get_patch_subject($f); } @@ -691,10 +698,10 @@ EOT } open my $c2, ">", $compose_filename . ".final" - or die "Failed to open $compose_filename.final : " . $!; + or die sprintf(__("Failed to open %s.final: %s"), $compose_filename, $!); open $c, "<", $compose_filename - or die "Failed to open $compose_filename : " . $!; + or die sprintf(__("Failed to open %s: %s"), $compose_filename, $!); my $need_8bit_cte = file_has_nonascii($compose_filename); my $in_body = 0; @@ -729,7 +736,7 @@ EOT $sender = $1; next; } elsif (/^(?:To|Cc|Bcc):/i) { - print "To/Cc/Bcc fields are not interpreted yet, they have been ignored\n"; + print __("To/Cc/Bcc fields are not interpreted yet, they have been ignored\n"); next; } print $c2 $_; @@ -738,7 +745,7 @@ EOT close $c2; if ($summary_empty) { - print "Summary email is empty, skipping it\n"; + print __("Summary email is empty, skipping it\n"); $compose = -1; } } elsif ($annotate) { @@ -768,7 +775,9 @@ sub ask { return $resp; } if ($confirm_only) { - my $yesno = $term->readline("Are you sure you want to use <$resp> [y/N]? "); + my $yesno = $term->readline( + # TRANSLATORS: please keep [y/N] as is. + sprintf(__("Are you sure you want to use <%s> [y/N]? "), $resp)); if (defined $yesno && $yesno =~ /y/i) { return $resp; } @@ -797,12 +806,12 @@ foreach my $f (@files) { } if (!defined $auto_8bit_encoding && scalar %broken_encoding) { - print "The following files are 8bit, but do not declare " . - "a Content-Transfer-Encoding.\n"; + print __("The following files are 8bit, but do not declare " . + "a Content-Transfer-Encoding.\n"); foreach my $f (sort keys %broken_encoding) { print " $f\n"; } - $auto_8bit_encoding = ask("Which 8bit encoding should I declare [UTF-8]? ", + $auto_8bit_encoding = ask(__("Which 8bit encoding should I declare [UTF-8]? "), valid_re => qr/.{4}/, confirm_only => 1, default => "UTF-8"); } @@ -810,9 +819,9 @@ if (!defined $auto_8bit_encoding && scalar %broken_encoding) { if (!$force) { for my $f (@files) { if (get_patch_subject($f) =~ /\Q*** SUBJECT HERE ***\E/) { - die "Refusing to send because the patch\n\t$f\n" + die sprintf(__("Refusing to send because the patch\n\t%s\n" . "has the template subject '*** SUBJECT HERE ***'. " - . "Pass --force if you really want to send.\n"; + . "Pass --force if you really want to send.\n"), $f); } } } @@ -829,7 +838,7 @@ if (defined $sender) { # But it's a no-op to run sanitize_address on an already sanitized address. $sender = sanitize_address($sender); -my $to_whom = "To whom should the emails be sent (if anyone)?"; +my $to_whom = __("To whom should the emails be sent (if anyone)?"); my $prompting = 0; if (!@initial_to && !defined $to_cmd) { my $to = ask("$to_whom ", @@ -847,7 +856,7 @@ my %EXPANDED_ALIASES; sub expand_one_alias { my $alias = shift; if ($EXPANDED_ALIASES{$alias}) { - die "fatal: alias '$alias' expands to itself\n"; + die sprintf(__("fatal: alias '%s' expands to itself\n"), $alias); } local $EXPANDED_ALIASES{$alias} = 1; return $aliases{$alias} ? expand_aliases(@{$aliases{$alias}}) : $alias; @@ -859,7 +868,7 @@ sub expand_one_alias { if ($thread && !defined $initial_reply_to && $prompting) { $initial_reply_to = ask( - "Message-ID to be used as In-Reply-To for the first email (if any)? ", + __("Message-ID to be used as In-Reply-To for the first email (if any)? "), default => "", valid_re => qr/\@.*\./, confirm_only => 1); } @@ -909,7 +918,7 @@ sub extract_valid_address { sub extract_valid_address_or_die { my $address = shift; $address = extract_valid_address($address); - die "error: unable to extract a valid address from: $address\n" + die sprintf(__("error: unable to extract a valid address from: %s\n"), $address) if !$address; return $address; } @@ -917,8 +926,11 @@ sub extract_valid_address_or_die { sub validate_address { my $address = shift; while (!extract_valid_address($address)) { - print STDERR "error: unable to extract a valid address from: $address\n"; - $_ = ask("What to do with this address? ([q]uit|[d]rop|[e]dit): ", + printf STDERR __("error: unable to extract a valid address from: %s\n"), $address; + # TRANSLATORS: Make sure to include [q] [d] [e] in your + # translation. The program will only accept English input + # at this point. + $_ = ask(__("What to do with this address? ([q]uit|[d]rop|[e]dit): "), valid_re => qr/^(?:quit|q|drop|d|edit|e)/i, default => 'q'); if (/^d/i) { @@ -1219,7 +1231,7 @@ sub ssl_verify_params { return (SSL_verify_mode => SSL_VERIFY_PEER(), SSL_ca_file => $smtp_ssl_cert_path); } else { - die "CA path \"$smtp_ssl_cert_path\" does not exist"; + die sprintf(__("CA path \"%s\" does not exist"), $smtp_ssl_cert_path); } } @@ -1293,20 +1305,26 @@ Message-Id: $message_id if ($needs_confirm eq "inform") { $confirm_unconfigured = 0; # squelch this message for the rest of this run $ask_default = "y"; # assume yes on EOF since user hasn't explicitly asked for confirmation - print " The Cc list above has been expanded by additional\n"; - print " addresses found in the patch commit message. By default\n"; - print " send-email prompts before sending whenever this occurs.\n"; - print " This behavior is controlled by the sendemail.confirm\n"; - print " configuration setting.\n"; - print "\n"; - print " For additional information, run 'git send-email --help'.\n"; - print " To retain the current behavior, but squelch this message,\n"; - print " run 'git config --global sendemail.confirm auto'.\n\n"; + print __ <<EOF ; + The Cc list above has been expanded by additional + addresses found in the patch commit message. By default + send-email prompts before sending whenever this occurs. + This behavior is controlled by the sendemail.confirm + configuration setting. + + For additional information, run 'git send-email --help'. + To retain the current behavior, but squelch this message, + run 'git config --global sendemail.confirm auto'. + +EOF } - $_ = ask("Send this email? ([y]es|[n]o|[q]uit|[a]ll): ", + # TRANSLATORS: Make sure to include [y] [n] [q] [a] in your + # translation. The program will only accept English input + # at this point. + $_ = ask(__("Send this email? ([y]es|[n]o|[q]uit|[a]ll): "), valid_re => qr/^(?:yes|y|no|n|quit|q|all|a)/i, default => $ask_default); - die "Send this email reply required" unless defined $_; + die __("Send this email reply required") unless defined $_; if (/^n/i) { return 0; } elsif (/^q/i) { @@ -1332,7 +1350,7 @@ Message-Id: $message_id } else { if (!defined $smtp_server) { - die "The required SMTP server is not properly defined." + die __("The required SMTP server is not properly defined.") } if ($smtp_encryption eq 'ssl') { @@ -1376,14 +1394,14 @@ Message-Id: $message_id # supported commands $smtp->hello($smtp_domain); } else { - die "Server does not support STARTTLS! ".$smtp->message; + die sprintf(__("Server does not support STARTTLS! %s"), $smtp->message); } } } if (!$smtp) { - die "Unable to initialize SMTP properly. Check config and use --smtp-debug. ", - "VALUES: server=$smtp_server ", + die __("Unable to initialize SMTP properly. Check config and use --smtp-debug."), + " VALUES: server=$smtp_server ", "encryption=$smtp_encryption ", "hello=$smtp_domain", defined $smtp_server_port ? " port=$smtp_server_port" : ""; @@ -1400,12 +1418,12 @@ Message-Id: $message_id $smtp->datasend("$line") or die $smtp->message; } $smtp->dataend() or die $smtp->message; - $smtp->code =~ /250|200/ or die "Failed to send $subject\n".$smtp->message; + $smtp->code =~ /250|200/ or die sprintf(__("Failed to send %s\n"), $subject).$smtp->message; } if ($quiet) { - printf (($dry_run ? "Dry-" : "")."Sent %s\n", $subject); + printf($dry_run ? __("Dry-Sent %s\n") : __("Sent %s\n"), $subject); } else { - print (($dry_run ? "Dry-" : "")."OK. Log says:\n"); + print($dry_run ? __("Dry-OK. Log says:\n") : __("OK. Log says:\n")); if (!file_name_is_absolute($smtp_server)) { print "Server: $smtp_server\n"; print "MAIL FROM:<$raw_from>\n"; @@ -1417,10 +1435,10 @@ Message-Id: $message_id } print $header, "\n"; if ($smtp) { - print "Result: ", $smtp->code, ' ', + print __("Result: "), $smtp->code, ' ', ($smtp->message =~ /\n([^\n]+\n)$/s), "\n"; } else { - print "Result: OK\n"; + print __("Result: OK\n"); } } @@ -1433,7 +1451,7 @@ $subject = $initial_subject; $message_num = 0; foreach my $t (@files) { - open my $fh, "<", $t or die "can't open file $t"; + open my $fh, "<", $t or die sprintf(__("can't open file %s"), $t); my $author = undef; my $sauthor = undef; @@ -1480,13 +1498,13 @@ foreach my $t (@files) { $sauthor = sanitize_address($author); next if $suppress_cc{'author'}; next if $suppress_cc{'self'} and $sauthor eq $sender; - printf("(mbox) Adding cc: %s from line '%s'\n", + printf(__("(mbox) Adding cc: %s from line '%s'\n"), $1, $_) unless $quiet; push @cc, $1; } elsif (/^To:\s+(.*)$/i) { foreach my $addr (parse_address_line($1)) { - printf("(mbox) Adding to: %s from line '%s'\n", + printf(__("(mbox) Adding to: %s from line '%s'\n"), $addr, $_) unless $quiet; push @to, $addr; } @@ -1500,7 +1518,7 @@ foreach my $t (@files) { } else { next if ($suppress_cc{'cc'}); } - printf("(mbox) Adding cc: %s from line '%s'\n", + printf(__("(mbox) Adding cc: %s from line '%s'\n"), $addr, $_) unless $quiet; push @cc, $addr; } @@ -1534,7 +1552,7 @@ foreach my $t (@files) { # So let's support that, too. $input_format = 'lots'; if (@cc == 0 && !$suppress_cc{'cc'}) { - printf("(non-mbox) Adding cc: %s from line '%s'\n", + printf(__("(non-mbox) Adding cc: %s from line '%s'\n"), $_, $_) unless $quiet; push @cc, $_; } elsif (!defined $subject) { @@ -1557,7 +1575,7 @@ foreach my $t (@files) { next if $suppress_cc{'bodycc'} and $what =~ /Cc/i; } push @cc, $c; - printf("(body) Adding cc: %s from line '%s'\n", + printf(__("(body) Adding cc: %s from line '%s'\n"), $c, $_) unless $quiet; } } @@ -1655,18 +1673,18 @@ sub recipients_cmd { my @addresses = (); open my $fh, "-|", "$cmd \Q$file\E" - or die "($prefix) Could not execute '$cmd'"; + or die sprintf(__("(%s) Could not execute '%s'"), $prefix, $cmd); while (my $address = <$fh>) { $address =~ s/^\s*//g; $address =~ s/\s*$//g; $address = sanitize_address($address); next if ($address eq $sender and $suppress_cc{'self'}); push @addresses, $address; - printf("($prefix) Adding %s: %s from: '%s'\n", - $what, $address, $cmd) unless $quiet; + printf(__("(%s) Adding %s: %s from: '%s'\n"), + $prefix, $what, $address, $cmd) unless $quiet; } close $fh - or die "($prefix) failed to close pipe to '$cmd'"; + or die sprintf(__("(%s) failed to close pipe to '%s'"), $prefix, $cmd); return @addresses; } @@ -1693,7 +1711,7 @@ sub apply_transfer_encoding { $message = MIME::Base64::decode($message) if ($from eq 'base64'); - die "cannot send message as 7bit" + die __("cannot send message as 7bit") if ($to eq '7bit' and $message =~ /[^[:ascii:]]/); return $message if ($to eq '7bit' or $to eq '8bit'); @@ -1701,7 +1719,7 @@ sub apply_transfer_encoding { if ($to eq 'quoted-printable'); return MIME::Base64::encode($message, "\n") if ($to eq 'base64'); - die "invalid transfer encoding"; + die __("invalid transfer encoding"); } sub unique_email_list { @@ -1720,10 +1738,10 @@ sub unique_email_list { sub validate_patch { my $fn = shift; open(my $fh, '<', $fn) - or die "unable to open $fn: $!\n"; + or die sprintf(__("unable to open %s: %s\n"), $fn, $!); while (my $line = <$fh>) { if (length($line) > 998) { - return "$.: patch contains a line longer than 998 characters"; + return sprintf(__("%s: patch contains a line longer than 998 characters"), $.); } } return; @@ -1739,10 +1757,11 @@ sub handle_backup { (substr($file, 0, $lastlen) eq $last) && ($suffix = substr($file, $lastlen)) !~ /^[a-z0-9]/i) { if (defined $known_suffix && $suffix eq $known_suffix) { - print "Skipping $file with backup suffix '$known_suffix'.\n"; + printf(__("Skipping %s with backup suffix '%s'.\n"), $file, $known_suffix); $skip = 1; } else { - my $answer = ask("Do you really want to send $file? (y|N): ", + # TRANSLATORS: please keep "[y|N]" as is. + my $answer = ask(sprintf(__("Do you really want to send %s? [y|N]: "), $file), valid_re => qr/^(?:y|n)/i, default => 'n'); $skip = ($answer ne 'y'); @@ -1770,7 +1789,7 @@ sub handle_backup_files { sub file_has_nonascii { my $fn = shift; open(my $fh, '<', $fn) - or die "unable to open $fn: $!\n"; + or die sprintf(__("unable to open %s: %s\n"), $fn, $!); while (my $line = <$fh>) { return 1 if $line =~ /[^[:ascii:]]/; } @@ -1780,7 +1799,7 @@ sub file_has_nonascii { sub body_or_subject_has_nonascii { my $fn = shift; open(my $fh, '<', $fn) - or die "unable to open $fn: $!\n"; + or die sprintf(__("unable to open %s: %s\n"), $fn, $!); while (my $line = <$fh>) { last if $line =~ /^$/; return 1 if $line =~ /^Subject.*[^[:ascii:]]/; diff --git a/git-sh-setup.sh b/git-sh-setup.sh index 240c7ebcd1..378928518b 100644 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -196,14 +196,14 @@ require_work_tree_exists () { if test "z$(git rev-parse --is-bare-repository)" != zfalse then program_name=$0 - die "$(gettext "fatal: \$program_name cannot be used without a working tree.")" + die "$(eval_gettext "fatal: \$program_name cannot be used without a working tree.")" fi } require_work_tree () { test "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = true || { program_name=$0 - die "$(gettext "fatal: \$program_name cannot be used without a working tree.")" + die "$(eval_gettext "fatal: \$program_name cannot be used without a working tree.")" } } diff --git a/git-stash.sh b/git-stash.sh index 4546abaaef..10c284d1aa 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -115,7 +115,7 @@ create_stash () { git read-tree --index-output="$TMPindex" -m $i_tree && GIT_INDEX_FILE="$TMPindex" && export GIT_INDEX_FILE && - git diff --name-only -z HEAD -- >"$TMP-stagenames" && + git diff-index --name-only -z HEAD -- >"$TMP-stagenames" && git update-index -z --add --remove --stdin <"$TMP-stagenames" && git write-tree && rm -f "$TMPindex" diff --git a/git-submodule.sh b/git-submodule.sh index 9285b5c43d..554bd1c494 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -21,14 +21,10 @@ require_work_tree wt_prefix=$(git rev-parse --show-prefix) cd_to_toplevel -# Restrict ourselves to a vanilla subset of protocols; the URLs -# we get are under control of a remote repository, and we do not -# want them kicking off arbitrary git-remote-* programs. -# -# If the user has already specified a set of allowed protocols, -# we assume they know what they're doing and use that instead. -: ${GIT_ALLOW_PROTOCOL=file:git:http:https:ssh} -export GIT_ALLOW_PROTOCOL +# Tell the rest of git that any URLs we get don't come +# directly from the user, so it can apply policy as appropriate. +GIT_PROTOCOL_FROM_USER=0 +export GIT_PROTOCOL_FROM_USER command= branch= @@ -396,7 +396,7 @@ static struct cmd_struct commands[] = { { "am", cmd_am, RUN_SETUP | NEED_WORK_TREE }, { "annotate", cmd_annotate, RUN_SETUP }, { "apply", cmd_apply, RUN_SETUP_GENTLY }, - { "archive", cmd_archive }, + { "archive", cmd_archive, RUN_SETUP_GENTLY }, { "bisect--helper", cmd_bisect__helper, RUN_SETUP }, { "blame", cmd_blame, RUN_SETUP }, { "branch", cmd_branch, RUN_SETUP }, @@ -445,7 +445,7 @@ static struct cmd_struct commands[] = { { "ls-files", cmd_ls_files, RUN_SETUP | SUPPORT_SUPER_PREFIX }, { "ls-remote", cmd_ls_remote, RUN_SETUP_GENTLY }, { "ls-tree", cmd_ls_tree, RUN_SETUP }, - { "mailinfo", cmd_mailinfo }, + { "mailinfo", cmd_mailinfo, RUN_SETUP_GENTLY }, { "mailsplit", cmd_mailsplit }, { "merge", cmd_merge, RUN_SETUP | NEED_WORK_TREE }, { "merge-base", cmd_merge_base, RUN_SETUP }, @@ -654,6 +654,11 @@ int cmd_main(int argc, const char **argv) cmd = argv[0]; if (!cmd) cmd = "git-help"; + else { + const char *slash = find_last_dir_sep(cmd); + if (slash) + cmd = slash + 1; + } trace_command_performance(argv); diff --git a/http-walker.c b/http-walker.c index 0b2425531a..b34b6ace7c 100644 --- a/http-walker.c +++ b/http-walker.c @@ -3,6 +3,7 @@ #include "walker.h" #include "http.h" #include "list.h" +#include "transport.h" struct alt_base { char *base; @@ -160,6 +161,32 @@ static void prefetch(struct walker *walker, unsigned char *sha1) #endif } +static int is_alternate_allowed(const char *url) +{ + const char *protocols[] = { + "http", "https", "ftp", "ftps" + }; + int i; + + for (i = 0; i < ARRAY_SIZE(protocols); i++) { + const char *end; + if (skip_prefix(url, protocols[i], &end) && + starts_with(end, "://")) + break; + } + + if (i >= ARRAY_SIZE(protocols)) { + warning("ignoring alternate with unknown protocol: %s", url); + return 0; + } + if (!is_transport_allowed(protocols[i], 0)) { + warning("ignoring alternate with restricted protocol: %s", url); + return 0; + } + + return 1; +} + static void process_alternates_response(void *callback_data) { struct alternates_request *alt_req = @@ -274,18 +301,20 @@ static void process_alternates_response(void *callback_data) struct strbuf target = STRBUF_INIT; strbuf_add(&target, base, serverlen); strbuf_add(&target, data + i, posn - i - 7); - if (walker->get_verbosely) - fprintf(stderr, "Also look at %s\n", + + if (is_alternate_allowed(target.buf)) { + warning("adding alternate object store: %s", target.buf); - newalt = xmalloc(sizeof(*newalt)); - newalt->next = NULL; - newalt->base = strbuf_detach(&target, NULL); - newalt->got_indices = 0; - newalt->packs = NULL; - - while (tail->next != NULL) - tail = tail->next; - tail->next = newalt; + newalt = xmalloc(sizeof(*newalt)); + newalt->next = NULL; + newalt->base = strbuf_detach(&target, NULL); + newalt->got_indices = 0; + newalt->packs = NULL; + + while (tail->next != NULL) + tail = tail->next; + tail->next = newalt; + } } } i = posn + 1; @@ -302,6 +331,9 @@ static void fetch_alternates(struct walker *walker, const char *base) struct alternates_request alt_req; struct walker_data *cdata = walker->data; + if (http_follow_config != HTTP_FOLLOW_ALWAYS) + return; + /* * If another request has already started fetching alternates, * wait for them to arrive and return to processing this request's @@ -480,10 +512,13 @@ static int fetch_object(struct walker *walker, unsigned char *sha1) * we turned off CURLOPT_FAILONERROR to avoid losing a * persistent connection and got CURLE_OK. */ - if (req->http_code == 404 && req->curl_result == CURLE_OK && + if (req->http_code >= 300 && req->curl_result == CURLE_OK && (starts_with(req->url, "http://") || - starts_with(req->url, "https://"))) + starts_with(req->url, "https://"))) { req->curl_result = CURLE_HTTP_RETURNED_ERROR; + xsnprintf(req->errorstr, sizeof(req->errorstr), + "HTTP request failed"); + } if (obj_req->state == ABORTED) { ret = error("Request for %s aborted", hex); @@ -111,6 +111,8 @@ static int http_proactive_auth; static const char *user_agent; static int curl_empty_auth; +enum http_follow_config http_follow_config = HTTP_FOLLOW_INITIAL; + #if LIBCURL_VERSION_NUM >= 0x071700 /* Use CURLOPT_KEYPASSWD as is */ #elif LIBCURL_VERSION_NUM >= 0x070903 @@ -366,6 +368,16 @@ static int http_options(const char *var, const char *value, void *cb) return 0; } + if (!strcmp("http.followredirects", var)) { + if (value && !strcmp(value, "initial")) + http_follow_config = HTTP_FOLLOW_INITIAL; + else if (git_config_bool(var, value)) + http_follow_config = HTTP_FOLLOW_ALWAYS; + else + http_follow_config = HTTP_FOLLOW_NONE; + return 0; + } + /* Fall back on the default ones */ return git_default_config(var, value, cb); } @@ -624,11 +636,25 @@ void setup_curl_trace(CURL *handle) curl_easy_setopt(handle, CURLOPT_DEBUGDATA, NULL); } +static long get_curl_allowed_protocols(int from_user) +{ + long allowed_protocols = 0; + + if (is_transport_allowed("http", from_user)) + allowed_protocols |= CURLPROTO_HTTP; + if (is_transport_allowed("https", from_user)) + allowed_protocols |= CURLPROTO_HTTPS; + if (is_transport_allowed("ftp", from_user)) + allowed_protocols |= CURLPROTO_FTP; + if (is_transport_allowed("ftps", from_user)) + allowed_protocols |= CURLPROTO_FTPS; + + return allowed_protocols; +} static CURL *get_curl_handle(void) { CURL *result = curl_easy_init(); - long allowed_protocols = 0; if (!result) die("curl_easy_init failed"); @@ -717,7 +743,6 @@ static CURL *get_curl_handle(void) curl_low_speed_time); } - curl_easy_setopt(result, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(result, CURLOPT_MAXREDIRS, 20); #if LIBCURL_VERSION_NUM >= 0x071301 curl_easy_setopt(result, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL); @@ -725,19 +750,13 @@ static CURL *get_curl_handle(void) curl_easy_setopt(result, CURLOPT_POST301, 1); #endif #if LIBCURL_VERSION_NUM >= 0x071304 - if (is_transport_allowed("http")) - allowed_protocols |= CURLPROTO_HTTP; - if (is_transport_allowed("https")) - allowed_protocols |= CURLPROTO_HTTPS; - if (is_transport_allowed("ftp")) - allowed_protocols |= CURLPROTO_FTP; - if (is_transport_allowed("ftps")) - allowed_protocols |= CURLPROTO_FTPS; - curl_easy_setopt(result, CURLOPT_REDIR_PROTOCOLS, allowed_protocols); + curl_easy_setopt(result, CURLOPT_REDIR_PROTOCOLS, + get_curl_allowed_protocols(0)); + curl_easy_setopt(result, CURLOPT_PROTOCOLS, + get_curl_allowed_protocols(-1)); #else - if (transport_restrict_protocols()) - warning("protocol restrictions not applied to curl redirects because\n" - "your curl version is too old (>= 7.19.4)"); + warning("protocol restrictions not applied to curl redirects because\n" + "your curl version is too old (>= 7.19.4)"); #endif if (getenv("GIT_CURL_VERBOSE")) curl_easy_setopt(result, CURLOPT_VERBOSE, 1L); @@ -1044,6 +1063,16 @@ struct active_request_slot *get_active_slot(void) curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 1); curl_easy_setopt(slot->curl, CURLOPT_RANGE, NULL); + /* + * Default following to off unless "ALWAYS" is configured; this gives + * callers a sane starting point, and they can tweak for individual + * HTTP_FOLLOW_* cases themselves. + */ + if (http_follow_config == HTTP_FOLLOW_ALWAYS) + curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1); + else + curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 0); + #if LIBCURL_VERSION_NUM >= 0x070a08 curl_easy_setopt(slot->curl, CURLOPT_IPRESOLVE, git_curl_ipresolve); #endif @@ -1286,9 +1315,12 @@ static int handle_curl_result(struct slot_results *results) * If we see a failing http code with CURLE_OK, we have turned off * FAILONERROR (to keep the server's custom error response), and should * translate the code into failure here. + * + * Likewise, if we see a redirect (30x code), that means we turned off + * redirect-following, and we should treat the result as an error. */ if (results->curl_result == CURLE_OK && - results->http_code >= 400) { + results->http_code >= 300) { results->curl_result = CURLE_HTTP_RETURNED_ERROR; /* * Normally curl will already have put the "reason phrase" @@ -1607,6 +1639,9 @@ static int http_request(const char *url, strbuf_addstr(&buf, " no-cache"); if (options && options->keep_error) curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0); + if (options && options->initial_request && + http_follow_config == HTTP_FOLLOW_INITIAL) + curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1); headers = curl_slist_append(headers, buf.buf); @@ -1655,16 +1690,16 @@ static int http_request(const char *url, * * Note that this assumes a sane redirect scheme. It's entirely possible * in the example above to end up at a URL that does not even end in - * "info/refs". In such a case we simply punt, as there is not much we can - * do (and such a scheme is unlikely to represent a real git repository, - * which means we are likely about to abort anyway). + * "info/refs". In such a case we die. There's not much we can do, such a + * scheme is unlikely to represent a real git repository, and failing to + * rewrite the base opens options for malicious redirects to do funny things. */ static int update_url_from_redirect(struct strbuf *base, const char *asked, const struct strbuf *got) { const char *tail; - size_t tail_len; + size_t new_len; if (!strcmp(asked, got->buf)) return 0; @@ -1673,14 +1708,16 @@ static int update_url_from_redirect(struct strbuf *base, die("BUG: update_url_from_redirect: %s is not a superset of %s", asked, base->buf); - tail_len = strlen(tail); - - if (got->len < tail_len || - strcmp(tail, got->buf + got->len - tail_len)) - return 0; /* insane redirect scheme */ + new_len = got->len; + if (!strip_suffix_mem(got->buf, &new_len, tail)) + die(_("unable to update url base from redirection:\n" + " asked for: %s\n" + " redirect: %s"), + asked, got->buf); strbuf_reset(base); - strbuf_add(base, got->buf, got->len - tail_len); + strbuf_add(base, got->buf, new_len); + return 1; } @@ -2028,7 +2065,7 @@ static size_t fwrite_sha1_file(char *ptr, size_t eltsize, size_t nmemb, if (c != CURLE_OK) die("BUG: curl_easy_getinfo for HTTP code failed: %s", curl_easy_strerror(c)); - if (slot->http_code >= 400) + if (slot->http_code >= 300) return size; } @@ -116,6 +116,13 @@ extern struct credential http_auth; extern char curl_errorstr[CURL_ERROR_SIZE]; +enum http_follow_config { + HTTP_FOLLOW_NONE, + HTTP_FOLLOW_ALWAYS, + HTTP_FOLLOW_INITIAL +}; +extern enum http_follow_config http_follow_config; + static inline int missing__target(int code, int result) { return /* file:// URL -- do we ever use one??? */ @@ -139,7 +146,8 @@ extern char *get_remote_object_url(const char *url, const char *hex, /* Options for http_get_*() */ struct http_get_options { unsigned no_cache:1, - keep_error:1; + keep_error:1, + initial_request:1; /* If non-NULL, returns the content-type of the response. */ struct strbuf *content_type; diff --git a/lockfile.c b/lockfile.c index 9268cdf325..aa69210d8b 100644 --- a/lockfile.c +++ b/lockfile.c @@ -174,8 +174,16 @@ int hold_lock_file_for_update_timeout(struct lock_file *lk, const char *path, int flags, long timeout_ms) { int fd = lock_file_timeout(lk, path, flags, timeout_ms); - if (fd < 0 && (flags & LOCK_DIE_ON_ERROR)) - unable_to_lock_die(path, errno); + if (fd < 0) { + if (flags & LOCK_DIE_ON_ERROR) + unable_to_lock_die(path, errno); + if (flags & LOCK_REPORT_ON_ERROR) { + struct strbuf buf = STRBUF_INIT; + unable_to_lock_message(path, errno, &buf); + error("%s", buf.buf); + strbuf_release(&buf); + } + } return fd; } diff --git a/lockfile.h b/lockfile.h index d26ad27b2b..7b715f9e77 100644 --- a/lockfile.h +++ b/lockfile.h @@ -129,11 +129,17 @@ struct lock_file { /* * If a lock is already taken for the file, `die()` with an error * message. If this flag is not specified, trying to lock a file that - * is already locked returns -1 to the caller. + * is already locked silently returns -1 to the caller, or ... */ #define LOCK_DIE_ON_ERROR 1 /* + * ... this flag can be passed instead to return -1 and give the usual + * error message upon an error. + */ +#define LOCK_REPORT_ON_ERROR 4 + +/* * Usually symbolic links in the destination path are resolved. This * means that (1) the lockfile is created by adding ".lock" to the * resolved path, and (2) upon commit, the resolved path is diff --git a/mailinfo.c b/mailinfo.c index 2fb3877ee4..a489d9d0fb 100644 --- a/mailinfo.c +++ b/mailinfo.c @@ -710,7 +710,8 @@ static void flush_inbody_header_accum(struct mailinfo *mi) { if (!mi->inbody_header_accum.len) return; - assert(check_header(mi, &mi->inbody_header_accum, mi->s_hdr_data, 0)); + if (!check_header(mi, &mi->inbody_header_accum, mi->s_hdr_data, 0)) + die("BUG: inbody_header_accum, if not empty, must always contain a valid in-body header"); strbuf_reset(&mi->inbody_header_accum); } diff --git a/merge-recursive.c b/merge-recursive.c index 9041c2f149..d327209443 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -235,6 +235,8 @@ static int add_cacheinfo(struct merge_options *o, struct cache_entry *nce; nce = refresh_cache_entry(ce, CE_MATCH_REFRESH | CE_MATCH_IGNORE_MISSING); + if (!nce) + return err(o, _("addinfo_cache failed for path '%s'"), path); if (nce != ce) ret = add_cache_entry(nce, options); } @@ -388,12 +390,10 @@ static struct string_list *get_unmerged(void) return unmerged; } -static int string_list_df_name_compare(const void *a, const void *b) +static int string_list_df_name_compare(const char *one, const char *two) { - const struct string_list_item *one = a; - const struct string_list_item *two = b; - int onelen = strlen(one->string); - int twolen = strlen(two->string); + int onelen = strlen(one); + int twolen = strlen(two); /* * Here we only care that entries for D/F conflicts are * adjacent, in particular with the file of the D/F conflict @@ -406,8 +406,8 @@ static int string_list_df_name_compare(const void *a, const void *b) * since in other cases any changes in their order due to * sorting cause no problems for us. */ - int cmp = df_name_compare(one->string, onelen, S_IFDIR, - two->string, twolen, S_IFDIR); + int cmp = df_name_compare(one, onelen, S_IFDIR, + two, twolen, S_IFDIR); /* * Now that 'foo' and 'foo/bar' compare equal, we have to make sure * that 'foo' comes before 'foo/bar'. @@ -451,8 +451,8 @@ static void record_df_conflict_files(struct merge_options *o, string_list_append(&df_sorted_entries, next->string)->util = next->util; } - qsort(df_sorted_entries.items, entries->nr, sizeof(*entries->items), - string_list_df_name_compare); + df_sorted_entries.cmp = string_list_df_name_compare; + string_list_sort(&df_sorted_entries); string_list_clear(&o->df_conflict_file_set, 1); for (i = 0; i < df_sorted_entries.nr; i++) { @@ -664,7 +664,13 @@ static char *unique_path(struct merge_options *o, const char *path, const char * return strbuf_detach(&newpath, NULL); } -static int dir_in_way(const char *path, int check_working_copy) +/** + * Check whether a directory in the index is in the way of an incoming + * file. Return 1 if so. If check_working_copy is non-zero, also + * check the working directory. If empty_ok is non-zero, also return + * 0 in the case where the working-tree dir exists but is empty. + */ +static int dir_in_way(const char *path, int check_working_copy, int empty_ok) { int pos; struct strbuf dirpath = STRBUF_INIT; @@ -684,7 +690,8 @@ static int dir_in_way(const char *path, int check_working_copy) } strbuf_release(&dirpath); - return check_working_copy && !lstat(path, &st) && S_ISDIR(st.st_mode); + return check_working_copy && !lstat(path, &st) && S_ISDIR(st.st_mode) && + !(empty_ok && is_empty_dir(path)); } static int was_tracked(const char *path) @@ -1062,7 +1069,7 @@ static int handle_change_delete(struct merge_options *o, { char *renamed = NULL; int ret = 0; - if (dir_in_way(path, !o->call_depth)) { + if (dir_in_way(path, !o->call_depth, 0)) { renamed = unique_path(o, path, a_oid ? o->branch1 : o->branch2); } @@ -1195,7 +1202,7 @@ static int handle_file(struct merge_options *o, remove_file(o, 0, rename->path, 0); dst_name = unique_path(o, rename->path, cur_branch); } else { - if (dir_in_way(rename->path, !o->call_depth)) { + if (dir_in_way(rename->path, !o->call_depth, 0)) { dst_name = unique_path(o, rename->path, cur_branch); output(o, 1, _("%s is a directory in %s adding as %s instead"), rename->path, other_branch, dst_name); @@ -1704,7 +1711,8 @@ static int merge_content(struct merge_options *o, o->branch2 == rename_conflict_info->branch1) ? pair1->two->path : pair1->one->path; - if (dir_in_way(path, !o->call_depth)) + if (dir_in_way(path, !o->call_depth, + S_ISGITLINK(pair1->two->mode))) df_conflict_remains = 1; } if (merge_file_special_markers(o, &one, &a, &b, @@ -1862,7 +1870,8 @@ static int process_entry(struct merge_options *o, oid = b_oid; conf = _("directory/file"); } - if (dir_in_way(path, !o->call_depth)) { + if (dir_in_way(path, !o->call_depth, + S_ISGITLINK(a_mode))) { char *new_path = unique_path(o, path, add_branch); clean_merge = 0; output(o, 1, _("CONFLICT (%s): There is a directory with name %s in %s. " @@ -2124,7 +2133,7 @@ int merge_recursive_generic(struct merge_options *o, } } - hold_locked_index(lock, 1); + hold_locked_index(lock, LOCK_DIE_ON_ERROR); clean = merge_recursive(o, head_commit, next_commit, ca, result); if (clean < 0) @@ -57,7 +57,7 @@ int checkout_fast_forward(const unsigned char *head, refresh_cache(REFRESH_QUIET); - if (hold_locked_index(lock_file, 0) < 0) + if (hold_locked_index(lock_file, LOCK_REPORT_ON_ERROR) < 0) return -1; memset(&trees, 0, sizeof(trees)); diff --git a/mergetools/araxis b/mergetools/araxis index 64f97c5e97..e2407b65b7 100644 --- a/mergetools/araxis +++ b/mergetools/araxis @@ -3,7 +3,6 @@ diff_cmd () { } merge_cmd () { - touch "$BACKUP" if $base_present then "$merge_tool_path" -wait -merge -3 -a1 \ @@ -12,7 +11,6 @@ merge_cmd () { "$merge_tool_path" -wait -2 \ "$LOCAL" "$REMOTE" "$MERGED" >/dev/null 2>&1 fi - check_unchanged } translate_merge_tool_path() { diff --git a/mergetools/bc b/mergetools/bc index b6319d206e..3a69e60faa 100644 --- a/mergetools/bc +++ b/mergetools/bc @@ -3,7 +3,6 @@ diff_cmd () { } merge_cmd () { - touch "$BACKUP" if $base_present then "$merge_tool_path" "$LOCAL" "$REMOTE" "$BASE" \ @@ -12,7 +11,6 @@ merge_cmd () { "$merge_tool_path" "$LOCAL" "$REMOTE" \ -mergeoutput="$MERGED" fi - check_unchanged } translate_merge_tool_path() { diff --git a/mergetools/codecompare b/mergetools/codecompare index 3f0486bc80..9f60e8da65 100644 --- a/mergetools/codecompare +++ b/mergetools/codecompare @@ -3,7 +3,6 @@ diff_cmd () { } merge_cmd () { - touch "$BACKUP" if $base_present then "$merge_tool_path" -MF="$LOCAL" -TF="$REMOTE" -BF="$BASE" \ @@ -12,7 +11,6 @@ merge_cmd () { "$merge_tool_path" -MF="$LOCAL" -TF="$REMOTE" \ -RF="$MERGED" fi - check_unchanged } translate_merge_tool_path() { diff --git a/mergetools/deltawalker b/mergetools/deltawalker index b3c71b6236..ee6f374bce 100644 --- a/mergetools/deltawalker +++ b/mergetools/deltawalker @@ -16,6 +16,10 @@ merge_cmd () { fi >/dev/null 2>&1 } -translate_merge_tool_path() { +translate_merge_tool_path () { echo DeltaWalker } + +exit_code_trustable () { + true +} diff --git a/mergetools/diffmerge b/mergetools/diffmerge index f138cb4e73..9b6355b98a 100644 --- a/mergetools/diffmerge +++ b/mergetools/diffmerge @@ -12,3 +12,7 @@ merge_cmd () { --result="$MERGED" "$LOCAL" "$REMOTE" fi } + +exit_code_trustable () { + true +} diff --git a/mergetools/diffuse b/mergetools/diffuse index 02e0843f47..5a3ae8b569 100644 --- a/mergetools/diffuse +++ b/mergetools/diffuse @@ -3,7 +3,6 @@ diff_cmd () { } merge_cmd () { - touch "$BACKUP" if $base_present then "$merge_tool_path" \ @@ -13,5 +12,4 @@ merge_cmd () { "$merge_tool_path" \ "$LOCAL" "$MERGED" "$REMOTE" | cat fi - check_unchanged } diff --git a/mergetools/ecmerge b/mergetools/ecmerge index 13c2e439de..6c5101c4f7 100644 --- a/mergetools/ecmerge +++ b/mergetools/ecmerge @@ -3,7 +3,6 @@ diff_cmd () { } merge_cmd () { - touch "$BACKUP" if $base_present then "$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" \ @@ -12,5 +11,4 @@ merge_cmd () { "$merge_tool_path" "$LOCAL" "$REMOTE" \ --default --mode=merge2 --to="$MERGED" fi - check_unchanged } diff --git a/mergetools/emerge b/mergetools/emerge index 7b895fdb1f..d1ce513ff5 100644 --- a/mergetools/emerge +++ b/mergetools/emerge @@ -20,3 +20,7 @@ merge_cmd () { translate_merge_tool_path() { echo emacs } + +exit_code_trustable () { + true +} diff --git a/mergetools/examdiff b/mergetools/examdiff index 7b524d4088..e72b06fc4d 100644 --- a/mergetools/examdiff +++ b/mergetools/examdiff @@ -3,14 +3,12 @@ diff_cmd () { } merge_cmd () { - touch "$BACKUP" if $base_present then "$merge_tool_path" -merge "$LOCAL" "$BASE" "$REMOTE" -o:"$MERGED" -nh else "$merge_tool_path" -merge "$LOCAL" "$REMOTE" -o:"$MERGED" -nh fi - check_unchanged } translate_merge_tool_path() { diff --git a/mergetools/kdiff3 b/mergetools/kdiff3 index 793d1293b1..0264ed5b20 100644 --- a/mergetools/kdiff3 +++ b/mergetools/kdiff3 @@ -21,3 +21,7 @@ merge_cmd () { >/dev/null 2>&1 fi } + +exit_code_trustable () { + true +} diff --git a/mergetools/kompare b/mergetools/kompare index 433686c12a..e8c0bfa678 100644 --- a/mergetools/kompare +++ b/mergetools/kompare @@ -5,3 +5,7 @@ can_merge () { diff_cmd () { "$merge_tool_path" "$LOCAL" "$REMOTE" } + +exit_code_trustable () { + true +} diff --git a/mergetools/meld b/mergetools/meld index 83ebdfb4c3..bc178e8882 100644 --- a/mergetools/meld +++ b/mergetools/meld @@ -7,7 +7,7 @@ merge_cmd () { then check_meld_for_output_version fi - touch "$BACKUP" + if test "$meld_has_output_option" = true then "$merge_tool_path" --output "$MERGED" \ @@ -15,7 +15,6 @@ merge_cmd () { else "$merge_tool_path" "$LOCAL" "$MERGED" "$REMOTE" fi - check_unchanged } # Check whether we should use 'meld --output <file>' diff --git a/mergetools/opendiff b/mergetools/opendiff index 0942b2a733..b608dd6de3 100644 --- a/mergetools/opendiff +++ b/mergetools/opendiff @@ -3,7 +3,6 @@ diff_cmd () { } merge_cmd () { - touch "$BACKUP" if $base_present then "$merge_tool_path" "$LOCAL" "$REMOTE" \ @@ -12,5 +11,4 @@ merge_cmd () { "$merge_tool_path" "$LOCAL" "$REMOTE" \ -merge "$MERGED" | cat fi - check_unchanged } diff --git a/mergetools/p4merge b/mergetools/p4merge index 5a608abf9c..7a5b291dd2 100644 --- a/mergetools/p4merge +++ b/mergetools/p4merge @@ -20,14 +20,12 @@ diff_cmd () { } merge_cmd () { - touch "$BACKUP" if ! $base_present then cp -- "$LOCAL" "$BASE" create_virtual_base "$BASE" "$REMOTE" fi "$merge_tool_path" "$BASE" "$REMOTE" "$LOCAL" "$MERGED" - check_unchanged } create_empty_file () { diff --git a/mergetools/tkdiff b/mergetools/tkdiff index 618c438e87..eee5cb57e3 100644 --- a/mergetools/tkdiff +++ b/mergetools/tkdiff @@ -10,3 +10,7 @@ merge_cmd () { "$merge_tool_path" -o "$MERGED" "$LOCAL" "$REMOTE" fi } + +exit_code_trustable () { + true +} diff --git a/mergetools/tortoisemerge b/mergetools/tortoisemerge index 3b89f1c82d..d7ab666a59 100644 --- a/mergetools/tortoisemerge +++ b/mergetools/tortoisemerge @@ -5,7 +5,6 @@ can_diff () { merge_cmd () { if $base_present then - touch "$BACKUP" basename="$(basename "$merge_tool_path" .exe)" if test "$basename" = "tortoisegitmerge" then @@ -17,7 +16,6 @@ merge_cmd () { -base:"$BASE" -mine:"$LOCAL" \ -theirs:"$REMOTE" -merged:"$MERGED" fi - check_unchanged else echo "$merge_tool_path cannot be used without a base" 1>&2 return 1 diff --git a/mergetools/vimdiff b/mergetools/vimdiff index 74ea6d5479..10d86f3e19 100644 --- a/mergetools/vimdiff +++ b/mergetools/vimdiff @@ -4,7 +4,6 @@ diff_cmd () { } merge_cmd () { - touch "$BACKUP" case "$1" in gvimdiff|vimdiff) if $base_present @@ -31,7 +30,6 @@ merge_cmd () { fi ;; esac - check_unchanged } translate_merge_tool_path() { @@ -44,3 +42,7 @@ translate_merge_tool_path() { ;; esac } + +exit_code_trustable () { + true +} diff --git a/mergetools/winmerge b/mergetools/winmerge index f3819d316a..74d03259fd 100644 --- a/mergetools/winmerge +++ b/mergetools/winmerge @@ -6,10 +6,8 @@ diff_cmd () { merge_cmd () { # mergetool.winmerge.trustExitCode is implicitly false. # touch $BACKUP so that we can check_unchanged. - touch "$BACKUP" "$merge_tool_path" -u -e -dl Local -dr Remote \ "$LOCAL" "$REMOTE" "$MERGED" - check_unchanged } translate_merge_tool_path() { diff --git a/mergetools/xxdiff b/mergetools/xxdiff index 05b443394b..ce5b8e9f29 100644 --- a/mergetools/xxdiff +++ b/mergetools/xxdiff @@ -1,25 +1,23 @@ diff_cmd () { "$merge_tool_path" \ -R 'Accel.Search: "Ctrl+F"' \ - -R 'Accel.SearchForward: "Ctrl-G"' \ + -R 'Accel.SearchForward: "Ctrl+G"' \ "$LOCAL" "$REMOTE" } merge_cmd () { - touch "$BACKUP" if $base_present then "$merge_tool_path" -X --show-merged-pane \ - -R 'Accel.SaveAsMerged: "Ctrl-S"' \ + -R 'Accel.SaveAsMerged: "Ctrl+S"' \ -R 'Accel.Search: "Ctrl+F"' \ - -R 'Accel.SearchForward: "Ctrl-G"' \ + -R 'Accel.SearchForward: "Ctrl+G"' \ --merged-file "$MERGED" "$LOCAL" "$BASE" "$REMOTE" else "$merge_tool_path" -X $extra \ - -R 'Accel.SaveAsMerged: "Ctrl-S"' \ + -R 'Accel.SaveAsMerged: "Ctrl+S"' \ -R 'Accel.Search: "Ctrl+F"' \ - -R 'Accel.SearchForward: "Ctrl-G"' \ + -R 'Accel.SearchForward: "Ctrl+G"' \ --merged-file "$MERGED" "$LOCAL" "$REMOTE" fi - check_unchanged } diff --git a/parse-options.c b/parse-options.c index 312a85dbde..4fbe924a5d 100644 --- a/parse-options.c +++ b/parse-options.c @@ -661,7 +661,7 @@ void NORETURN usage_msg_opt(const char *msg, const char * const *usagestr, const struct option *options) { - fprintf(stderr, "%s\n\n", msg); + fprintf(stderr, "fatal: %s\n\n", msg); usage_with_options(usagestr, options); } @@ -991,7 +991,7 @@ const char *remove_leading_path(const char *in, const char *prefix) * * Performs the following normalizations on src, storing the result in dst: * - Ensures that components are separated by '/' (Windows only) - * - Squashes sequences of '/'. + * - Squashes sequences of '/' except "//server/share" on Windows * - Removes "." components. * - Removes ".." components, and the components the precede them. * Returns failure (non-zero) if a ".." component appears as first path @@ -1014,17 +1014,22 @@ const char *remove_leading_path(const char *in, const char *prefix) int normalize_path_copy_len(char *dst, const char *src, int *prefix_len) { char *dst0; - int i; + const char *end; - for (i = has_dos_drive_prefix(src); i > 0; i--) - *dst++ = *src++; + /* + * Copy initial part of absolute path: "/", "C:/", "//server/share/". + */ + end = src + offset_1st_component(src); + while (src < end) { + char c = *src++; + if (is_dir_sep(c)) + c = '/'; + *dst++ = c; + } dst0 = dst; - if (is_dir_sep(*src)) { - *dst++ = '/'; - while (is_dir_sep(*src)) - src++; - } + while (is_dir_sep(*src)) + src++; for (;;) { char c = *src; diff --git a/perl/Git.pm b/perl/Git.pm index b2732822af..bfce1f795d 100644 --- a/perl/Git.pm +++ b/perl/Git.pm @@ -1438,6 +1438,44 @@ sub END { } # %TEMP_* Lexical Context +=item prefix_lines ( PREFIX, STRING [, STRING... ]) + +Prefixes lines in C<STRING> with C<PREFIX>. + +=cut + +sub prefix_lines { + my $prefix = shift; + my $string = join("\n", @_); + $string =~ s/^/$prefix/mg; + return $string; +} + +=item get_comment_line_char ( ) + +Gets the core.commentchar configuration value. +The value falls-back to '#' if core.commentchar is set to 'auto'. + +=cut + +sub get_comment_line_char { + my $comment_line_char = config("core.commentchar") || '#'; + $comment_line_char = '#' if ($comment_line_char eq 'auto'); + $comment_line_char = '#' if (length($comment_line_char) != 1); + return $comment_line_char; +} + +=item comment_lines ( STRING [, STRING... ]) + +Comments lines following core.commentchar configuration. + +=cut + +sub comment_lines { + my $comment_line_char = get_comment_line_char; + return prefix_lines("$comment_line_char ", @_); +} + =back =head1 ERROR HANDLING diff --git a/perl/Git/I18N.pm b/perl/Git/I18N.pm index f889fd6da9..c41425c8d0 100644 --- a/perl/Git/I18N.pm +++ b/perl/Git/I18N.pm @@ -13,7 +13,7 @@ BEGIN { } } -our @EXPORT = qw(__); +our @EXPORT = qw(__ __n N__); our @EXPORT_OK = @EXPORT; sub __bootstrap_locale_messages { @@ -44,6 +44,7 @@ BEGIN eval { __bootstrap_locale_messages(); *__ = \&Locale::Messages::gettext; + *__n = \&Locale::Messages::ngettext; 1; } or do { # Tell test.pl that we couldn't load the gettext library. @@ -51,7 +52,10 @@ BEGIN # Just a fall-through no-op *__ = sub ($) { $_[0] }; + *__n = sub ($$$) { $_[2] == 1 ? $_[0] : $_[1] }; }; + + sub N__($) { return shift; } } 1; @@ -70,6 +74,9 @@ Git::I18N - Perl interface to Git's Gettext localizations printf __("The following error occurred: %s\n"), $error; + printf __n("commited %d file\n", "commited %d files\n", $files), $files; + + =head1 DESCRIPTION Git's internal Perl interface to gettext via L<Locale::Messages>. If @@ -87,6 +94,16 @@ it. L<Locale::Messages>'s gettext function if all goes well, otherwise our passthrough fallback function. +=head2 __n($$$) + +L<Locale::Messages>'s ngettext function or passthrough fallback function. + +=head2 N__($) + +No-operation that only returns its argument. Use this if you want xgettext to +extract the text to the pot template but do not want to trigger retrival of the +translation at run time. + =head1 AUTHOR E<AElig>var ArnfjE<ouml>rE<eth> Bjarmason <avarab@gmail.com> diff --git a/perl/Git/SVN/Ra.pm b/perl/Git/SVN/Ra.pm index e764696801..56ad9870bc 100644 --- a/perl/Git/SVN/Ra.pm +++ b/perl/Git/SVN/Ra.pm @@ -606,7 +606,7 @@ sub minimize_url { my $latest = $ra->get_latest_revnum; $ra->get_log("", $latest, 0, 1, 0, 1, sub {}); }; - } while ($@ && ($c = shift @components)); + } while ($@ && defined($c = shift @components)); return canonicalize_url($url); } @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Git\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2016-08-27 23:21+0800\n" -"PO-Revision-Date: 2016-08-28 10:32-0600\n" +"POT-Creation-Date: 2016-11-25 22:50+0800\n" +"PO-Revision-Date: 2016-11-28 20:03-0700\n" "Last-Translator: Alex Henrie <alexhenrie24@gmail.com>\n" "Language-Team: Catalan\n" "Language: ca\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.8.8\n" +"X-Generator: Poedit 1.8.11\n" #: advice.c:55 #, c-format @@ -100,6 +100,631 @@ msgstr "" "\n" " git checkout -b <nom-de-branca-nova>\n" +#: apply.c:57 +#, c-format +msgid "unrecognized whitespace option '%s'" +msgstr "opció d'espai en blanc '%s' no reconeguda" + +#: apply.c:73 +#, c-format +msgid "unrecognized whitespace ignore option '%s'" +msgstr "opció d'ignoral d'espai en blanc '%s' no reconeguda" + +#: apply.c:125 +msgid "--reject and --3way cannot be used together." +msgstr "--reject i --3way no es poden usar junts." + +#: apply.c:127 +msgid "--cached and --3way cannot be used together." +msgstr "--cached i --3way no es poden usar junts." + +#: apply.c:130 +msgid "--3way outside a repository" +msgstr "--3way fora d'un dipòsit" + +#: apply.c:141 +msgid "--index outside a repository" +msgstr "--index fora d'un dipòsit" + +#: apply.c:144 +msgid "--cached outside a repository" +msgstr "--cached fora d'un dipòsit" + +#: apply.c:845 +#, c-format +msgid "Cannot prepare timestamp regexp %s" +msgstr "No es pot preparar l'expressió regular de marca de temps %s" + +#: apply.c:854 +#, c-format +msgid "regexec returned %d for input: %s" +msgstr "regexec ha retornat %d per l'entrada: %s" + +#: apply.c:938 +#, c-format +msgid "unable to find filename in patch at line %d" +msgstr "no s'ha pogut trobar el nom de fitxer en el pedaç a la lÃnia %d" + +#: apply.c:977 +#, c-format +msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d" +msgstr "" +"git apply: git-diff dolent - /dev/null esperat, %s rebut en la lÃnia %d" + +#: apply.c:983 +#, c-format +msgid "git apply: bad git-diff - inconsistent new filename on line %d" +msgstr "" +"git apply: git-diff dolent - nom de fitxer nou inconsistent en la lÃnia %d" + +#: apply.c:984 +#, c-format +msgid "git apply: bad git-diff - inconsistent old filename on line %d" +msgstr "" +"git apply: git-diff dolent - nom de fitxer antic inconsistent en la lÃnia %d" + +#: apply.c:990 +#, c-format +msgid "git apply: bad git-diff - expected /dev/null on line %d" +msgstr "git apply: git-diff dolent - /dev/null esperat en la lÃnia %d" + +#: apply.c:1488 +#, c-format +msgid "recount: unexpected line: %.*s" +msgstr "recompte: lÃnia inesperada: %.*s" + +#: apply.c:1557 +#, c-format +msgid "patch fragment without header at line %d: %.*s" +msgstr "fragment de pedaç sense capçalera a la lÃnia %d: %.*s" + +#: apply.c:1577 +#, c-format +msgid "" +"git diff header lacks filename information when removing %d leading pathname " +"component (line %d)" +msgid_plural "" +"git diff header lacks filename information when removing %d leading pathname " +"components (line %d)" +msgstr[0] "" +"a la capçalera de git diff li manca informació de nom de fitxer en eliminar " +"%d component de nom de camà inicial (lÃnia %d)" +msgstr[1] "" +"a la capçalera de git diff li manca informació de nom de fitxer en eliminar " +"%d components de nom de camà inicial (lÃnia %d)" + +#: apply.c:1589 +#, c-format +msgid "git diff header lacks filename information (line %d)" +msgstr "" +"a la capçalera de git diff li manca informació de nom de fitxer (lÃnia %d)" + +#: apply.c:1759 +msgid "new file depends on old contents" +msgstr "el fitxer nou depèn dels continguts antics" + +#: apply.c:1761 +msgid "deleted file still has contents" +msgstr "el fitxer suprimit encara té continguts" + +#: apply.c:1795 +#, c-format +msgid "corrupt patch at line %d" +msgstr "pedaç malmès a la lÃnia %d" + +#: apply.c:1832 +#, c-format +msgid "new file %s depends on old contents" +msgstr "el fitxer nou %s depèn dels continguts antics" + +#: apply.c:1834 +#, c-format +msgid "deleted file %s still has contents" +msgstr "el fitxer suprimit %s encara té continguts" + +#: apply.c:1837 +#, c-format +msgid "** warning: file %s becomes empty but is not deleted" +msgstr "** advertència: el fitxer %s queda buit però no se suprimeix" + +#: apply.c:1984 +#, c-format +msgid "corrupt binary patch at line %d: %.*s" +msgstr "pedaç binari malmès a la lÃnia %d: %.*s" + +#: apply.c:2021 +#, c-format +msgid "unrecognized binary patch at line %d" +msgstr "pedaç binari no reconegut a la lÃnia %d" + +#: apply.c:2182 +#, c-format +msgid "patch with only garbage at line %d" +msgstr "pedaç amb només escombraries a la lÃnia %d" + +#: apply.c:2274 +#, c-format +msgid "unable to read symlink %s" +msgstr "no s'ha pogut llegir l'enllaç simbòlic %s" + +#: apply.c:2278 +#, c-format +msgid "unable to open or read %s" +msgstr "no s'ha pogut obrir o llegir %s" + +#: apply.c:2931 +#, c-format +msgid "invalid start of line: '%c'" +msgstr "inici de lÃnia no và lid: '%c'" + +#: apply.c:3050 +#, c-format +msgid "Hunk #%d succeeded at %d (offset %d line)." +msgid_plural "Hunk #%d succeeded at %d (offset %d lines)." +msgstr[0] "El tros #%d ha tingut èxit a %d (desplaçament d'%d lÃnia)." +msgstr[1] "El tros #%d ha tingut èxit a %d (desplaçament de %d lÃnies)." + +#: apply.c:3062 +#, c-format +msgid "Context reduced to (%ld/%ld) to apply fragment at %d" +msgstr "El context s'ha reduït a (%ld/%ld) per a aplicar el fragment a %d" + +#: apply.c:3068 +#, c-format +msgid "" +"while searching for:\n" +"%.*s" +msgstr "" +"tot cercant:\n" +"%.*s" + +#: apply.c:3090 +#, c-format +msgid "missing binary patch data for '%s'" +msgstr "manquen les dades de pedaç binari de '%s'" + +#: apply.c:3098 +#, c-format +msgid "cannot reverse-apply a binary patch without the reverse hunk to '%s'" +msgstr "no es pot aplicar al revés un pedaç binari sense el tros revés a '%s'" + +#: apply.c:3144 +#, c-format +msgid "cannot apply binary patch to '%s' without full index line" +msgstr "" +"no es pot aplicar un pedaç binari a '%s' sense la lÃnia d'Ãndex completa" + +#: apply.c:3154 +#, c-format +msgid "" +"the patch applies to '%s' (%s), which does not match the current contents." +msgstr "" +"el pedaç s'aplica a '%s' (%s), el qual no coincideix amb els continguts " +"actuals." + +#: apply.c:3162 +#, c-format +msgid "the patch applies to an empty '%s' but it is not empty" +msgstr "el pedaç s'aplica a un '%s' buit però no és buit" + +#: apply.c:3180 +#, c-format +msgid "the necessary postimage %s for '%s' cannot be read" +msgstr "no es pot llegir la postimatge necessari %s per a '%s'" + +#: apply.c:3193 +#, c-format +msgid "binary patch does not apply to '%s'" +msgstr "el pedaç binari no s'aplica a '%s'" + +#: apply.c:3199 +#, c-format +msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)" +msgstr "" +"el pedaç binari a '%s' crea un resultat incorrecte (esperant %s, %s rebut)" + +#: apply.c:3220 +#, c-format +msgid "patch failed: %s:%ld" +msgstr "el pedaç ha fallat: %s:%ld" + +#: apply.c:3342 +#, c-format +msgid "cannot checkout %s" +msgstr "no es pot agafar %s" + +#: apply.c:3390 apply.c:3401 apply.c:3447 setup.c:248 +#, c-format +msgid "failed to read %s" +msgstr "s'ha fallat en llegir %s" + +#: apply.c:3398 +#, c-format +msgid "reading from '%s' beyond a symbolic link" +msgstr "s'està llegint de '%s' més enllà d'un enllaç simbòlic" + +#: apply.c:3427 apply.c:3667 +#, c-format +msgid "path %s has been renamed/deleted" +msgstr "el camà %s s'ha canviat de nom / s'ha suprimit" + +#: apply.c:3510 apply.c:3681 +#, c-format +msgid "%s: does not exist in index" +msgstr "%s: no existeix en l'Ãndex" + +#: apply.c:3519 apply.c:3689 +#, c-format +msgid "%s: does not match index" +msgstr "%s: no coincideix amb l'Ãndex" + +#: apply.c:3554 +msgid "repository lacks the necessary blob to fall back on 3-way merge." +msgstr "" +"al dipòsit li manca el blob necessari per a retrocedir a una fusió de 3 vies." + +#: apply.c:3557 +#, c-format +msgid "Falling back to three-way merge...\n" +msgstr "S'està retrocedint a una fusió de 3 vies...\n" + +#: apply.c:3573 apply.c:3577 +#, c-format +msgid "cannot read the current contents of '%s'" +msgstr "no es poden llegir els continguts actuals de '%s'" + +#: apply.c:3589 +#, c-format +msgid "Failed to fall back on three-way merge...\n" +msgstr "S'ha fallat en retrocedir a una fusió de 3 vies...\n" + +#: apply.c:3603 +#, c-format +msgid "Applied patch to '%s' with conflicts.\n" +msgstr "S'ha aplicat el pedaç a '%s' amb conflictes.\n" + +#: apply.c:3608 +#, c-format +msgid "Applied patch to '%s' cleanly.\n" +msgstr "S'ha aplicat el pedaç a '%s' netament.\n" + +#: apply.c:3634 +msgid "removal patch leaves file contents" +msgstr "el pedaç d'eliminació deixa els continguts dels fitxers" + +#: apply.c:3706 +#, c-format +msgid "%s: wrong type" +msgstr "%s: tipus erroni" + +#: apply.c:3708 +#, c-format +msgid "%s has type %o, expected %o" +msgstr "%s és del tipus %o, s'esperava %o" + +#: apply.c:3859 apply.c:3861 +#, c-format +msgid "invalid path '%s'" +msgstr "camà no và lid: %s" + +#: apply.c:3917 +#, c-format +msgid "%s: already exists in index" +msgstr "%s: ja existeix en l'Ãndex" + +#: apply.c:3920 +#, c-format +msgid "%s: already exists in working directory" +msgstr "%s: ja existeix en el directori de treball" + +#: apply.c:3940 +#, c-format +msgid "new mode (%o) of %s does not match old mode (%o)" +msgstr "el mode nou (%o) de %s no coincideix amb el mode antic (%o)" + +#: apply.c:3945 +#, c-format +msgid "new mode (%o) of %s does not match old mode (%o) of %s" +msgstr "el mode nou (%o) de %s no coincideix amb el mode antic (%o) de %s" + +#: apply.c:3965 +#, c-format +msgid "affected file '%s' is beyond a symbolic link" +msgstr "el fitxer afectat '%s' és més enllà d'un enllaç simbòlic" + +#: apply.c:3969 +#, c-format +msgid "%s: patch does not apply" +msgstr "%s: el pedaç no s'aplica" + +#: apply.c:3984 +#, c-format +msgid "Checking patch %s..." +msgstr "S'està comprovant el pedaç %s..." + +#: apply.c:4075 +#, c-format +msgid "sha1 information is lacking or useless for submodule %s" +msgstr "falta la informació sha1 o és inútil per al submòdul %s" + +#: apply.c:4082 +#, c-format +msgid "mode change for %s, which is not in current HEAD" +msgstr "canvi de mode per a %s, el qual no està en el HEAD actual" + +#: apply.c:4085 +#, c-format +msgid "sha1 information is lacking or useless (%s)." +msgstr "falta informació sha1 o és inútil (%s)." + +#: apply.c:4090 builtin/checkout.c:233 builtin/reset.c:135 +#, c-format +msgid "make_cache_entry failed for path '%s'" +msgstr "make_cache_entry ha fallat per al camà '%s'" + +#: apply.c:4094 +#, c-format +msgid "could not add %s to temporary index" +msgstr "no s'ha pogut afegir %s a l'index temporal" + +#: apply.c:4104 +#, c-format +msgid "could not write temporary index to %s" +msgstr "no s'ha pogut escriure l'Ãndex temporal a %s" + +#: apply.c:4242 +#, c-format +msgid "unable to remove %s from index" +msgstr "no s'ha pogut eliminar %s de l'Ãndex" + +#: apply.c:4277 +#, c-format +msgid "corrupt patch for submodule %s" +msgstr "pedaç malmès per al submòdul %s" + +#: apply.c:4283 +#, c-format +msgid "unable to stat newly created file '%s'" +msgstr "no s'ha pogut fer stat al fitxer novament creat '%s'" + +#: apply.c:4291 +#, c-format +msgid "unable to create backing store for newly created file %s" +msgstr "" +"no s'ha pogut crear un magatzem de recolzament per al fitxer novament creat " +"%s" + +#: apply.c:4297 apply.c:4441 +#, c-format +msgid "unable to add cache entry for %s" +msgstr "no s'ha pogut afegir una entrada de cau per a %s" + +#: apply.c:4338 +#, c-format +msgid "failed to write to '%s'" +msgstr "s'ha fallat en escriure a '%s'" + +#: apply.c:4342 +#, c-format +msgid "closing file '%s'" +msgstr "s'està tancant el fitxer '%s'" + +#: apply.c:4412 +#, c-format +msgid "unable to write file '%s' mode %o" +msgstr "no s'ha pogut escriure el fitxer '%s' mode %o" + +#: apply.c:4510 +#, c-format +msgid "Applied patch %s cleanly." +msgstr "El pedaç %s s'ha aplicat netament." + +#: apply.c:4518 +msgid "internal error" +msgstr "error intern" + +#: apply.c:4521 +#, c-format +msgid "Applying patch %%s with %d reject..." +msgid_plural "Applying patch %%s with %d rejects..." +msgstr[0] "S'està aplicant el pedaç %%s amb %d rebuig..." +msgstr[1] "S'està aplicant el pedaç %%s amb %d rebuitjos..." + +#: apply.c:4532 +#, c-format +msgid "truncating .rej filename to %.*s.rej" +msgstr "s'està truncant el nom del fitxer .rej a %.*s.rej" + +#: apply.c:4540 builtin/fetch.c:740 builtin/fetch.c:989 +#, c-format +msgid "cannot open %s" +msgstr "no es pot obrir %s" + +#: apply.c:4554 +#, c-format +msgid "Hunk #%d applied cleanly." +msgstr "El tros #%d s'ha aplicat netament." + +#: apply.c:4558 +#, c-format +msgid "Rejected hunk #%d." +msgstr "S'ha rebutjat el tros #%d." + +#: apply.c:4668 +#, c-format +msgid "Skipped patch '%s'." +msgstr "S'ha saltat el pedaç '%s'." + +#: apply.c:4676 +msgid "unrecognized input" +msgstr "entrada no reconeguda" + +#: apply.c:4695 +msgid "unable to read index file" +msgstr "no es pot llegir el fitxer d'Ãndex" + +#: apply.c:4833 +#, c-format +msgid "can't open patch '%s': %s" +msgstr "no es pot obrir el pedaç '%s': %s" + +#: apply.c:4858 +#, c-format +msgid "squelched %d whitespace error" +msgid_plural "squelched %d whitespace errors" +msgstr[0] "s'ha omès %d error d'espai en blanc" +msgstr[1] "s'han omès %d errors d'espai en blanc" + +#: apply.c:4864 apply.c:4879 +#, c-format +msgid "%d line adds whitespace errors." +msgid_plural "%d lines add whitespace errors." +msgstr[0] "%d lÃnia afegeix errors d'espai en blanc." +msgstr[1] "%d lÃnies afegeixen errors d'espai en blanc." + +#: apply.c:4872 +#, c-format +msgid "%d line applied after fixing whitespace errors." +msgid_plural "%d lines applied after fixing whitespace errors." +msgstr[0] "" +"S'ha aplicat %d lÃnia desprès d'arreglar els errors d'espai en blanc." +msgstr[1] "" +"S'han aplicat %d lÃnies desprès d'arreglar els errors d'espai en blanc." + +#: apply.c:4888 builtin/add.c:463 builtin/mv.c:286 builtin/rm.c:431 +msgid "Unable to write new index file" +msgstr "no s'ha pogut escriure un fitxer d'Ãndex nou" + +#: apply.c:4919 apply.c:4922 builtin/am.c:2277 builtin/am.c:2280 +#: builtin/clone.c:95 builtin/fetch.c:98 builtin/pull.c:180 +#: builtin/submodule--helper.c:281 builtin/submodule--helper.c:407 +#: builtin/submodule--helper.c:589 builtin/submodule--helper.c:592 +#: builtin/submodule--helper.c:944 builtin/submodule--helper.c:947 +msgid "path" +msgstr "camÃ" + +#: apply.c:4920 +msgid "don't apply changes matching the given path" +msgstr "no apliquis els canvis que coincideixin amb el camà donat" + +#: apply.c:4923 +msgid "apply changes matching the given path" +msgstr "aplica els canvis que coincideixin amb el camà donat" + +#: apply.c:4925 builtin/am.c:2286 +msgid "num" +msgstr "número" + +#: apply.c:4926 +msgid "remove <num> leading slashes from traditional diff paths" +msgstr "" +"elimina <nombre> barres obliqües inicials dels camins de diferència " +"tradicionals" + +#: apply.c:4929 +msgid "ignore additions made by the patch" +msgstr "ignora afegiments fets pel pedaç" + +#: apply.c:4931 +msgid "instead of applying the patch, output diffstat for the input" +msgstr "" +"en lloc d'aplicar el pedaç, emet les estadÃstiques de diferència de l'entrada" + +#: apply.c:4935 +msgid "show number of added and deleted lines in decimal notation" +msgstr "mostra el nombre de lÃnies afegides i suprimides en notació decimal" + +#: apply.c:4937 +msgid "instead of applying the patch, output a summary for the input" +msgstr "en lloc d'aplicar el pedaç, emet un resum de l'entrada" + +#: apply.c:4939 +msgid "instead of applying the patch, see if the patch is applicable" +msgstr "en lloc d'aplicar el pedaç, veges si el pedaç és aplicable" + +#: apply.c:4941 +msgid "make sure the patch is applicable to the current index" +msgstr "assegura que el pedaç sigui aplicable a l'Ãndex actual" + +#: apply.c:4943 +msgid "apply a patch without touching the working tree" +msgstr "aplica un pedaç sense tocar l'arbre de treball" + +#: apply.c:4945 +msgid "accept a patch that touches outside the working area" +msgstr "accepta un pedaç que toqui fora de l'à rea de treball" + +#: apply.c:4947 +msgid "also apply the patch (use with --stat/--summary/--check)" +msgstr "aplica el pedaç també (useu amb --stat/--summary/--check)" + +#: apply.c:4949 +msgid "attempt three-way merge if a patch does not apply" +msgstr "intenta una fusió de tres vies si el pedaç no s'aplica" + +#: apply.c:4951 +msgid "build a temporary index based on embedded index information" +msgstr "construeix un Ãndex temporal basat en la informació d'Ãndex incrustada" + +#: apply.c:4954 builtin/checkout-index.c:169 builtin/ls-files.c:505 +msgid "paths are separated with NUL character" +msgstr "els camins se separen amb el carà cter NUL" + +#: apply.c:4956 +msgid "ensure at least <n> lines of context match" +msgstr "assegura't que almenys <n> lÃnies de context coincideixin" + +#: apply.c:4957 builtin/am.c:2265 +msgid "action" +msgstr "acció" + +#: apply.c:4958 +msgid "detect new or modified lines that have whitespace errors" +msgstr "" +"detecta les lÃnies noves o modificades que tinguin errors d'espai en blanc" + +#: apply.c:4961 apply.c:4964 +msgid "ignore changes in whitespace when finding context" +msgstr "ignora els canvis d'espai en blanc en cercar context" + +#: apply.c:4967 +msgid "apply the patch in reverse" +msgstr "aplica el pedaç al revés" + +#: apply.c:4969 +msgid "don't expect at least one line of context" +msgstr "no esperis almenys una lÃnia de context" + +#: apply.c:4971 +msgid "leave the rejected hunks in corresponding *.rej files" +msgstr "deixa els trossos rebutjats en fitxers *.reg corresponents" + +#: apply.c:4973 +msgid "allow overlapping hunks" +msgstr "permet trossos encavalcants" + +#: apply.c:4974 builtin/add.c:267 builtin/check-ignore.c:19 +#: builtin/commit.c:1339 builtin/count-objects.c:94 builtin/fsck.c:593 +#: builtin/log.c:1860 builtin/mv.c:110 builtin/read-tree.c:114 +msgid "be verbose" +msgstr "sigues detallat" + +#: apply.c:4976 +msgid "tolerate incorrectly detected missing new-line at the end of file" +msgstr "tolera una lÃnia nova incorrectament detectada al final del fitxer" + +#: apply.c:4979 +msgid "do not trust the line counts in the hunk headers" +msgstr "no confiïs en els recomptes de lÃnia en les capçaleres dels trossos" + +#: apply.c:4981 builtin/am.c:2274 +msgid "root" +msgstr "arrel" + +#: apply.c:4982 +msgid "prepend <root> to all filenames" +msgstr "anteposa <arrel> a tots els noms de fitxer" + #: archive.c:12 msgid "git archive [<options>] <tree-ish> [<path>...]" msgstr "git archive [<opcions>] <arbre> [<camÃ>...]" @@ -119,10 +744,10 @@ msgstr "" msgid "git archive --remote <repo> [--exec <cmd>] --list" msgstr "git archive --remote <dipòsit> [--exec <ordre>] --list" -#: archive.c:344 builtin/add.c:139 builtin/add.c:435 builtin/rm.c:327 +#: archive.c:344 builtin/add.c:152 builtin/add.c:442 builtin/rm.c:327 #, c-format msgid "pathspec '%s' did not match any files" -msgstr "L'especificació de camà '%s' no ha coincidit amb cap fitxer" +msgstr "l'especificació de camà '%s' no ha coincidit amb cap fitxer" #: archive.c:429 msgid "fmt" @@ -132,7 +757,7 @@ msgstr "format" msgid "archive format" msgstr "format d'arxiu" -#: archive.c:430 builtin/log.c:1422 +#: archive.c:430 builtin/log.c:1429 msgid "prefix" msgstr "prefix" @@ -140,11 +765,11 @@ msgstr "prefix" msgid "prepend prefix to each pathname in the archive" msgstr "anteposa el prefix a cada nom de camà en l'arxiu" -#: 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 +#: archive.c:432 builtin/blame.c:2603 builtin/blame.c:2604 builtin/config.c:59 +#: builtin/fast-export.c:987 builtin/fast-export.c:989 builtin/grep.c:723 +#: builtin/hash-object.c:101 builtin/ls-files.c:539 builtin/ls-files.c:542 +#: builtin/notes.c:401 builtin/notes.c:564 builtin/read-tree.c:109 +#: parse-options.h:153 msgid "file" msgstr "fitxer" @@ -176,8 +801,8 @@ msgstr "comprimeix millor" msgid "list supported archive formats" msgstr "allista els formats d'arxiu admesos" -#: archive.c:451 builtin/archive.c:90 builtin/clone.c:82 -#: builtin/submodule--helper.c:832 +#: archive.c:451 builtin/archive.c:90 builtin/clone.c:85 builtin/clone.c:88 +#: builtin/submodule--helper.c:601 builtin/submodule--helper.c:953 msgid "repo" msgstr "dipòsit" @@ -185,7 +810,7 @@ msgstr "dipòsit" msgid "retrieve the archive from remote repository <repo>" msgstr "recupera l'arxiu del dipòsit remot <dipòsit>" -#: archive.c:453 builtin/archive.c:92 builtin/notes.c:483 +#: archive.c:453 builtin/archive.c:92 builtin/notes.c:485 msgid "command" msgstr "ordre" @@ -213,7 +838,7 @@ msgstr "Format d'arxiu desconegut '%s'" #: archive.c:494 #, c-format msgid "Argument not supported for format '%s': -%d" -msgstr "Parà metre no admet per al format '%s': -%d" +msgstr "Parà metre no admès per al format '%s': -%d" #: attr.c:263 msgid "" @@ -277,7 +902,7 @@ msgid "" "git bisect cannot work properly in this case.\n" "Maybe you mistook %s and %s revs?\n" msgstr "" -"Unes %s revisions no són els avantpassats de la revisió %s.\n" +"Unes revisions %s no són els avantpassats de la revisió %s.\n" "git bisect no pot funcionar correctament en aquest cas.\n" "Potser heu confós les revisions %s i %s?\n" @@ -289,8 +914,8 @@ msgid "" "We continue anyway." msgstr "" "s'ha de saltar la base de fusió entre %s i [%s].\n" -"Llavors, no podem estar segurs que la primera comissió %s sigui entre %s i " -"%s.\n" +"Llavors, no podem estar segurs de que la primera comissió %s sigui entre %s " +"i %s.\n" "Continuem de totes maneres." #: bisect.c:798 @@ -468,27 +1093,27 @@ msgstr "" "\"git push -u\" per a establir la configuració font\n" "mentre pugeu." -#: branch.c:266 +#: branch.c:265 #, c-format msgid "Not a valid object name: '%s'." msgstr "No és un nom d'objecte và lid: '%s'." -#: branch.c:286 +#: branch.c:285 #, c-format msgid "Ambiguous object name: '%s'." msgstr "Nom d'objecte ambigu: '%s'." -#: branch.c:291 +#: branch.c:290 #, c-format msgid "Not a valid branch point: '%s'." msgstr "No és un punt de ramificació và lid: '%s'." -#: branch.c:345 +#: branch.c:344 #, c-format msgid "'%s' is already checked out at '%s'" msgstr "'%s' ja s'ha agafat a '%s'" -#: branch.c:364 +#: branch.c:363 #, c-format msgid "HEAD of working tree %s is not updated" msgstr "La HEAD de l'arbre de treball %s no està actualitzat" @@ -503,7 +1128,7 @@ msgstr "'%s' no sembla un fitxer de farcell v2" msgid "unrecognized header: %s%s (%d)" msgstr "capçalera no reconeguda: %s%s (%d)" -#: bundle.c:87 builtin/commit.c:778 +#: bundle.c:87 sequencer.c:963 builtin/commit.c:777 #, c-format msgid "could not open '%s'" msgstr "no s'ha pogut obrir '%s'" @@ -512,9 +1137,9 @@ msgstr "no s'ha pogut obrir '%s'" msgid "Repository lacks these prerequisite commits:" msgstr "Al dipòsit li manquen aquestes comissions prerequisits:" -#: 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 +#: bundle.c:163 ref-filter.c:1462 sequencer.c:830 sequencer.c:1374 +#: builtin/blame.c:2814 builtin/commit.c:1061 builtin/log.c:348 +#: builtin/log.c:890 builtin/log.c:1340 builtin/log.c:1666 builtin/log.c:1909 #: builtin/merge.c:356 builtin/shortlog.c:170 msgid "revision walk setup failed" msgstr "la configuració del passeig per revisions ha fallat" @@ -554,7 +1179,7 @@ msgstr "El rev-list s'ha mort" msgid "ref '%s' is excluded by the rev-list options" msgstr "les opcions de la llista de revisions exclouen la referència '%s'" -#: bundle.c:443 builtin/log.c:165 builtin/log.c:1565 builtin/shortlog.c:273 +#: bundle.c:443 builtin/log.c:165 builtin/log.c:1572 builtin/shortlog.c:273 #, c-format msgid "unrecognized argument: %s" msgstr "parà metre no reconegut: %s" @@ -577,8 +1202,8 @@ msgstr "L'index-pack s'ha mort" msgid "invalid color value: %.*s" msgstr "valor de color no và lid: %.*s" -#: commit.c:40 builtin/am.c:433 builtin/am.c:469 builtin/am.c:1505 -#: builtin/am.c:2119 +#: commit.c:40 builtin/am.c:421 builtin/am.c:457 builtin/am.c:1493 +#: builtin/am.c:2127 #, c-format msgid "could not parse %s" msgstr "no s'ha pogut analitzar %s" @@ -588,6 +1213,17 @@ msgstr "no s'ha pogut analitzar %s" msgid "%s %s is not a commit!" msgstr "%s %s no és una comissió!" +#: commit.c:1514 +msgid "" +"Warning: commit message did not conform to UTF-8.\n" +"You may want to amend it after fixing the message, or set the config\n" +"variable i18n.commitencoding to the encoding your project uses.\n" +msgstr "" +"Advertència: el missatge de comissió no conformava a UTF-8.\n" +"Potser voleu esemenar-lo després de corregir el missatge, o establir\n" +"la variable de configuració i18n.commitencoding a la codificació que\n" +"usi el vostre projecte.\n" + #: compat/obstack.c:406 compat/obstack.c:408 msgid "memory exhausted" msgstr "memòria esgotada" @@ -673,9 +1309,9 @@ msgstr "valor de configuració numèric dolent '%s' per '%s' en %s: %s" #: config.c:768 #, c-format msgid "failed to expand user dir in: '%s'" -msgstr "s'ha fallat en expandir el directori d'usuari en '%s'" +msgstr "s'ha fallat en expandir el directori d'usuari en: '%s'" -#: config.c:849 config.c:860 +#: config.c:852 config.c:863 #, c-format msgid "bad zlib compression level %d" msgstr "nivell de compressió de zlib dolent %d" @@ -718,22 +1354,68 @@ msgstr "no s'ha pogut establir '%s' a '%s'" msgid "could not unset '%s'" msgstr "no s'ha pogut desestablir '%s'" +#: connect.c:49 +msgid "The remote end hung up upon initial contact" +msgstr "El costat remot ha penjat en el moment de contacte inicial" + +#: connect.c:51 +msgid "" +"Could not read from remote repository.\n" +"\n" +"Please make sure you have the correct access rights\n" +"and the repository exists." +msgstr "" +"No s'ha pogut llegir del dipòsit remot.\n" +"\n" +"Si us plau, assegureu-vos que tingueu els drets\n" +"d'accés correctes i que el dipòsit existeixi." + #: connected.c:63 builtin/fsck.c:173 builtin/prune.c:140 msgid "Checking connectivity" msgstr "S'està comprovant la connectivitat" -#: connected.c:74 +#: connected.c:75 msgid "Could not run 'git rev-list'" msgstr "No s'ha pogut executar 'git rev-list'" -#: connected.c:94 +#: connected.c:95 msgid "failed write to rev-list" -msgstr "escriptura fallada a rev-list" +msgstr "escriptura fallada al rev-list" -#: connected.c:101 +#: connected.c:102 msgid "failed to close rev-list's stdin" msgstr "s'ha fallat en tancar l'stdin del rev-list" +#: convert.c:201 +#, c-format +msgid "" +"CRLF will be replaced by LF in %s.\n" +"The file will have its original line endings in your working directory." +msgstr "" +"LF reemplaçarà CRLF en %s.\n" +"El fitxer tindrà els seus terminadors de lÃnia originals en el vostre " +"directori de treball." + +#: convert.c:205 +#, c-format +msgid "CRLF would be replaced by LF in %s." +msgstr "LF reemplaçaria CRLF en %s." + +#: convert.c:211 +#, c-format +msgid "" +"LF will be replaced by CRLF in %s.\n" +"The file will have its original line endings in your working directory." +msgstr "" +"CRLF reemplaçarà LF en %s.\n" +"El fitxer tindrà els seus terminadors de lÃnia originals en el vostre " +"directori de treball." + +#: convert.c:215 +#, c-format +msgid "LF would be replaced by CRLF in %s" +msgstr "CRLF reemplaçaria LF en %s" + #: date.c:97 msgid "in the future" msgstr "en el futur" @@ -807,27 +1489,32 @@ msgstr[1] "fa %lu anys" msgid "failed to read orderfile '%s'" msgstr "s'ha fallat en llegir el fitxer d'ordres '%s'" -#: diffcore-rename.c:540 +#: diffcore-rename.c:536 msgid "Performing inexact rename detection" msgstr "S'està realitzant una detecció inexacta de canvis de nom" -#: diff.c:116 +#: diff.c:62 +#, c-format +msgid "option '%s' requires a value" +msgstr "l'opció '%s' requereix un valor" + +#: diff.c:124 #, c-format msgid " Failed to parse dirstat cut-off percentage '%s'\n" msgstr " S'ha fallat en analitzar el percentatge limitant de dirstat '%s'\n" -#: diff.c:121 +#: diff.c:129 #, c-format msgid " Unknown dirstat parameter '%s'\n" msgstr " Parà metre de dirstat desconegut '%s'\n" -#: diff.c:225 +#: diff.c:283 #, c-format msgid "Unknown value for 'diff.submodule' config variable: '%s'" msgstr "" "Valor desconegut de la variable de configuració de 'diff.submodule': '%s'" -#: diff.c:277 +#: diff.c:346 #, c-format msgid "" "Found errors in 'diff.dirstat' config variable:\n" @@ -836,16 +1523,20 @@ msgstr "" "S'han trobat errors en la variable de configuració 'diff.dirstat':\n" "%s" -#: diff.c:3017 +#: diff.c:3087 #, c-format msgid "external diff died, stopping at %s" -msgstr "El diff external s'ha mort, s'està aturant a %s" +msgstr "el diff external s'ha mort, s'està aturant a %s" -#: diff.c:3415 +#: diff.c:3412 +msgid "--name-only, --name-status, --check and -s are mutually exclusive" +msgstr "--name-only, --name-status, --check i -s són mutualment exclusius" + +#: diff.c:3502 msgid "--follow requires exactly one pathspec" msgstr "--follow requereix exactament una especificació de camÃ" -#: diff.c:3578 +#: diff.c:3665 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" @@ -854,62 +1545,246 @@ msgstr "" "S'ha fallat en analitzar el parà metre d'opció de --dirstat/-X:\n" "%s" -#: diff.c:3592 +#: diff.c:3679 #, c-format msgid "Failed to parse --submodule option parameter: '%s'" -msgstr "S'ha fallat en analitzar el parà metre d'opció de --submodule: %s" +msgstr "S'ha fallat en analitzar el parà metre d'opció de --submodule: '%s'" + +#: diff.c:4700 +msgid "inexact rename detection was skipped due to too many files." +msgstr "s'ha saltat la detecció de canvi de nom a causa de massa fitxers." -#: dir.c:1823 +#: diff.c:4703 +msgid "only found copies from modified paths due to too many files." +msgstr "" +"només s'han trobat còpies des de camins modificats a causa de massa fitxers." + +#: diff.c:4706 +#, c-format +msgid "" +"you may want to set your %s variable to at least %d and retry the command." +msgstr "" +"potser voleu establir la vostra variable %s a almenys %d i tornar a intentar " +"l'ordre." + +#: dir.c:1866 msgid "failed to get kernel name and information" msgstr "s'ha fallat en obtenir el nombre i la informació del nucli" -#: dir.c:1942 +#: dir.c:1985 msgid "Untracked cache is disabled on this system or location." msgstr "" "La memòria cau no seguida està inhabilitada en aquest sistema o ubicació." -#: gpg-interface.c:178 +#: fetch-pack.c:213 +msgid "git fetch-pack: expected shallow list" +msgstr "git fetch-pack: llista superficial esperada" + +#: fetch-pack.c:225 +msgid "git fetch-pack: expected ACK/NAK, got EOF" +msgstr "git fetch-pack: ACK/NAK esperat, EOF rebut" + +#: fetch-pack.c:243 +#, c-format +msgid "git fetch-pack: expected ACK/NAK, got '%s'" +msgstr "git fetch-pack: ACK/NAK esperat, '%s' rebut" + +#: fetch-pack.c:295 +msgid "--stateless-rpc requires multi_ack_detailed" +msgstr "--stateless-rpc requereix multi_ack_detailed" + +#: fetch-pack.c:381 +#, c-format +msgid "invalid shallow line: %s" +msgstr "lÃnia de shallow no và lida: %s" + +#: fetch-pack.c:387 +#, c-format +msgid "invalid unshallow line: %s" +msgstr "lÃnia d'unshallow no và lida: %s" + +#: fetch-pack.c:389 +#, c-format +msgid "object not found: %s" +msgstr "objecte no trobat: %s" + +#: fetch-pack.c:392 +#, c-format +msgid "error in object: %s" +msgstr "error en objecte: %s" + +#: fetch-pack.c:394 +#, c-format +msgid "no shallow found: %s" +msgstr "no s'ha trobat cap superficial: %s" + +#: fetch-pack.c:397 +#, c-format +msgid "expected shallow/unshallow, got %s" +msgstr "s'esperava shallow/unshallow, s'ha rebut %s" + +#: fetch-pack.c:436 +#, c-format +msgid "got %s %d %s" +msgstr "%s %d %s rebut" + +#: fetch-pack.c:450 +#, c-format +msgid "invalid commit %s" +msgstr "comissió no và lida %s" + +#: fetch-pack.c:483 +msgid "giving up" +msgstr "s'està rendint" + +#: fetch-pack.c:493 progress.c:235 +msgid "done" +msgstr "fet" + +#: fetch-pack.c:505 +#, c-format +msgid "got %s (%d) %s" +msgstr "s'ha rebut %s (%d) %s" + +#: fetch-pack.c:551 +#, c-format +msgid "Marking %s as complete" +msgstr "S'està marcant %s com a complet" + +#: fetch-pack.c:697 +#, c-format +msgid "already have %s (%s)" +msgstr "ja es té %s (%s)" + +#: fetch-pack.c:735 +msgid "fetch-pack: unable to fork off sideband demultiplexer" +msgstr "fetch-pack: no s'ha pogut bifurcar del demultiplexor de banda lateral" + +#: fetch-pack.c:743 +msgid "protocol error: bad pack header" +msgstr "error de protocol: capçalera de paquet dolent" + +#: fetch-pack.c:799 +#, c-format +msgid "fetch-pack: unable to fork off %s" +msgstr "fetch-pack: no es pot bifurcar de %s" + +#: fetch-pack.c:815 +#, c-format +msgid "%s failed" +msgstr "%s ha fallat" + +#: fetch-pack.c:817 +msgid "error in sideband demultiplexer" +msgstr "error en demultiplexor de banda lateral" + +#: fetch-pack.c:844 +msgid "Server does not support shallow clients" +msgstr "El servidor no permet clients superficials" + +#: fetch-pack.c:848 +msgid "Server supports multi_ack_detailed" +msgstr "El servidor accepta multi_ack_detailed" + +#: fetch-pack.c:851 +msgid "Server supports no-done" +msgstr "El servidor accepta no-done" + +#: fetch-pack.c:857 +msgid "Server supports multi_ack" +msgstr "El servidor accepta multi_ack" + +#: fetch-pack.c:861 +msgid "Server supports side-band-64k" +msgstr "El servidor accepta side-band-64k" + +#: fetch-pack.c:865 +msgid "Server supports side-band" +msgstr "El servidor accepta banda lateral" + +#: fetch-pack.c:869 +msgid "Server supports allow-tip-sha1-in-want" +msgstr "El servidor accepta allow-tip-sha1-in-want" + +#: fetch-pack.c:873 +msgid "Server supports allow-reachable-sha1-in-want" +msgstr "El servidor accepta allow-reachable-sha1-in-want" + +#: fetch-pack.c:883 +msgid "Server supports ofs-delta" +msgstr "El servidor accepta ofs-delta" + +#: fetch-pack.c:890 +#, c-format +msgid "Server version is %.*s" +msgstr "La versió del servidor és %.*s" + +#: fetch-pack.c:896 +msgid "Server does not support --shallow-since" +msgstr "El servidor no admet --shallow-since" + +#: fetch-pack.c:900 +msgid "Server does not support --shallow-exclude" +msgstr "El servidor no admet --shallow-exclude" + +#: fetch-pack.c:902 +msgid "Server does not support --deepen" +msgstr "El servidor no admet --deepen" + +#: fetch-pack.c:913 +msgid "no common commits" +msgstr "cap comissió en comú" + +#: fetch-pack.c:925 +msgid "git fetch-pack: fetch failed." +msgstr "git fetch-pack: l'obtenció ha fallat." + +#: fetch-pack.c:1087 +msgid "no matching remote head" +msgstr "no hi ha cap cap remot coincident" + +#: gpg-interface.c:185 msgid "gpg failed to sign the data" msgstr "gpg ha fallat en signar les dades" -#: gpg-interface.c:208 +#: gpg-interface.c:215 msgid "could not create temporary file" msgstr "no s'ha pogut crear el fitxer temporal" -#: gpg-interface.c:210 +#: gpg-interface.c:217 #, c-format msgid "failed writing detached signature to '%s'" msgstr "s'ha fallat en escriure la signatura separada a '%s'" -#: grep.c:1792 +#: grep.c:1782 #, c-format msgid "'%s': unable to read %s" msgstr "'%s': no s'ha pogut llegir %s" -#: grep.c:1809 builtin/clone.c:382 builtin/diff.c:84 builtin/rm.c:155 +#: grep.c:1799 builtin/clone.c:381 builtin/diff.c:84 builtin/rm.c:155 #, c-format msgid "failed to stat '%s'" msgstr "s'ha fallat en fer stat a '%s'" -#: grep.c:1820 +#: grep.c:1810 #, c-format msgid "'%s': short read" msgstr "'%s': lectura curta" -#: help.c:205 +#: help.c:203 #, c-format msgid "available git commands in '%s'" msgstr "ordres de git disponibles en '%s'" -#: help.c:212 +#: help.c:210 msgid "git commands available from elsewhere on your $PATH" msgstr "ordres de git disponibles d'altres llocs en el vostre $PATH" -#: help.c:244 +#: help.c:241 msgid "These are common Git commands used in various situations:" msgstr "Aquestes són ordres del Git comunament usades en diverses situacions:" -#: help.c:309 +#: help.c:306 #, c-format msgid "" "'%s' appears to be a git command, but we were not\n" @@ -918,11 +1793,11 @@ msgstr "" "'%s' sembla una ordre de git, però no hem pogut\n" "executar-la. Pot ser que git-%s estigui estropejat?" -#: help.c:366 +#: help.c:361 msgid "Uh oh. Your system reports no Git commands at all." msgstr "Ai. El vostre sistema no informa de cap ordre de Git." -#: help.c:388 +#: help.c:383 #, c-format msgid "" "WARNING: You called a Git command named '%s', which does not exist.\n" @@ -932,17 +1807,17 @@ msgstr "" "existeix.\n" "S'està continuant sota l'assumpció que volÃeu dir '%s'" -#: help.c:393 +#: help.c:388 #, c-format msgid "in %0.1f seconds automatically..." msgstr "en %0.1f segons automà ticament..." -#: help.c:400 +#: help.c:395 #, c-format msgid "git: '%s' is not a git command. See 'git --help'." msgstr "git: '%s' no és una ordre de git. Vegeu 'git --help'." -#: help.c:404 help.c:470 +#: help.c:399 help.c:465 msgid "" "\n" "Did you mean this?" @@ -956,11 +1831,36 @@ msgstr[1] "" "\n" "VolÃeu dir un d'aquests?" -#: help.c:466 +#: help.c:461 #, c-format msgid "%s: %s - %s" msgstr "%s: %s - %s" +#: ident.c:334 +msgid "" +"\n" +"*** Please tell me who you are.\n" +"\n" +"Run\n" +"\n" +" git config --global user.email \"you@example.com\"\n" +" git config --global user.name \"Your Name\"\n" +"\n" +"to set your account's default identity.\n" +"Omit --global to set the identity only in this repository.\n" +"\n" +msgstr "" +"\n" +"*** Si us plau, digueu-me qui sou.\n" +"\n" +"Executeu\n" +"\n" +" git config --global user.email \"vós@example.com\"\n" +" git config --global user.name \"El Vostre Nom\"\n" +"\n" +"per a establir la identitat predeterminat del vostre compte.\n" +"Ometeu --global per a establir la identitat només en aquest dipòsit.\n" + #: lockfile.c:152 #, c-format msgid "" @@ -984,14 +1884,14 @@ msgstr "" #: lockfile.c:160 #, c-format msgid "Unable to create '%s.lock': %s" -msgstr "No es pot crear '%s.lock': %s" +msgstr "No s'ha pogut crear '%s.lock': %s" #: merge.c:41 msgid "failed to read the cache" msgstr "s'ha fallat en llegir la memòria cau" -#: merge.c:94 builtin/am.c:1992 builtin/am.c:2027 builtin/checkout.c:375 -#: builtin/checkout.c:589 builtin/clone.c:732 +#: merge.c:96 builtin/am.c:2000 builtin/am.c:2035 builtin/checkout.c:374 +#: builtin/checkout.c:588 builtin/clone.c:731 msgid "unable to write new index file" msgstr "no s'ha pogut escriure un fitxer d'Ãndex nou" @@ -1011,7 +1911,7 @@ msgstr "error en construir arbres" #: merge-recursive.c:720 #, c-format msgid "failed to create path '%s'%s" -msgstr "s'ha fallat en crear el camà '%s' %s" +msgstr "s'ha fallat en crear el camà '%s'%s" #: merge-recursive.c:731 #, c-format @@ -1027,7 +1927,7 @@ msgstr ": potser un conflicte D/F?" msgid "refusing to lose untracked file at '%s'" msgstr "s'està refusant perdre el fitxer no seguit a '%s'" -#: merge-recursive.c:796 +#: merge-recursive.c:796 builtin/cat-file.c:34 #, c-format msgid "cannot read object %s '%s'" msgstr "no es pot llegir l'objecte %s '%s'" @@ -1081,7 +1981,7 @@ msgstr "" #: merge-recursive.c:1143 msgid "rename" -msgstr "canvia de nom" +msgstr "canvi de nom" #: merge-recursive.c:1143 msgid "renamed" @@ -1142,11 +2042,11 @@ msgstr "no es pot llegir l'objecte %s" #: merge-recursive.c:1613 #, c-format msgid "object %s is not a blob" -msgstr "L'objecte %s no és un blob" +msgstr "l'objecte %s no és un blob" #: merge-recursive.c:1666 msgid "modify" -msgstr "modifica" +msgstr "modificació" #: merge-recursive.c:1666 msgid "modified" @@ -1170,7 +2070,7 @@ msgstr "S'ha saltat %s (el fusionat és igual a l'existent)" msgid "Auto-merging %s" msgstr "S'està autofusionant %s" -#: merge-recursive.c:1736 git-submodule.sh:919 +#: merge-recursive.c:1736 git-submodule.sh:924 msgid "submodule" msgstr "submòdul" @@ -1221,8 +2121,8 @@ msgstr "Fusionant:" #, c-format msgid "found %u common ancestor:" msgid_plural "found %u common ancestors:" -msgstr[0] "s'ha trobat %u avantpassat:" -msgstr[1] "s'han trobat %u avantpassats:" +msgstr[0] "s'ha trobat %u avantpassat en comú:" +msgstr[1] "s'han trobat %u avantpassats en comú:" #: merge-recursive.c:2058 msgid "merge returned no commit" @@ -1237,6 +2137,22 @@ msgstr "No s'ha pogut analitzar l'objecte '%s'" msgid "Unable to write index." msgstr "No s'ha pogut escriure l'Ãndex." +#: notes-merge.c:273 +#, c-format +msgid "" +"You have not concluded your previous notes merge (%s exists).\n" +"Please, use 'git notes merge --commit' or 'git notes merge --abort' to " +"commit/abort the previous merge before you start a new notes merge." +msgstr "" +"No heu conclòs la vostra fusió de notes prèvia (%s existeix).\n" +"Si us plau, useu 'git notes merge --commit' o 'git notes merge --abort' per " +"a cometre/avortar la fusió prèvia abans de començar una fusió de notes nova." + +#: notes-merge.c:280 +#, c-format +msgid "You have not concluded your notes merge (%s exists)." +msgstr "No heu conclòs la vostra fusió de notes (%s existeix)." + #: notes-utils.c:41 msgid "Cannot commit uninitialized/unreferenced notes tree" msgstr "No es pot cometre un arbre de notes no inicialitzat / no referenciat" @@ -1291,9 +2207,9 @@ msgstr "-NUM" #: parse-options-cb.c:108 #, c-format msgid "malformed object name '%s'" -msgstr "nom de camp mal format '%s'" +msgstr "nom d'objecte mal format '%s'" -#: path.c:798 +#: path.c:826 #, c-format msgid "Could not make %s writable by group" msgstr "No s'ha pogut fer %s escrivible pel grup" @@ -1352,12 +2268,21 @@ msgid "%s: pathspec magic not supported by this command: %s" msgstr "" "%s: aquesta ordre no és compatible amb la mà gia d'especificació de camÃ: %s" -#: pathspec.c:433 +#: pathspec.c:408 +msgid "" +"empty strings as pathspecs will be made invalid in upcoming releases. please " +"use . instead if you meant to match all paths" +msgstr "" +"es faran no và lides les cadenes buides com especificacions de camà en " +"versions futures. si us plau, useu . en lloc d'això si volÃeu coincidir amb " +"tots els camins" + +#: pathspec.c:440 #, c-format msgid "pathspec '%s' is beyond a symbolic link" msgstr "l'especificació de camà '%s' és més enllà d'un enllaç simbòlic" -#: pathspec.c:442 +#: pathspec.c:449 msgid "" "There is nothing to exclude from by :(exclude) patterns.\n" "Perhaps you forgot to add either ':/' or '.' ?" @@ -1365,48 +2290,44 @@ msgstr "" "No hi ha res a excloure per patrons :(exclusió).\n" "Potser heu oblidat afegir o ':/' o '.' ?" -#: pretty.c:973 +#: pretty.c:971 msgid "unable to parse --pretty format" msgstr "no s'ha pogut analitzar el format --pretty" -#: progress.c:235 -msgid "done" -msgstr "fet" - -#: read-cache.c:1281 +#: read-cache.c:1315 #, c-format msgid "" "index.version set, but the value is invalid.\n" "Using version %i" msgstr "" -"index.version establert, però el valor no és và lid.\n" +"index.version està establerta, però el valor no és và lid.\n" "S'està usant la versió %i" -#: read-cache.c:1291 +#: read-cache.c:1325 #, c-format msgid "" "GIT_INDEX_VERSION set, but the value is invalid.\n" "Using version %i" msgstr "" -"GIT_INDEX_VERSION establert, però el valor no és và lid.\n" +"GIT_INDEX_VERSION està establerta, però el valor no és và lid.\n" "S'està usant la versió %i" -#: refs.c:551 builtin/merge.c:840 +#: refs.c:576 builtin/merge.c:840 #, c-format msgid "Could not open '%s' for writing" msgstr "No s'ha pogut obrir '%s' per a escriptura" -#: refs/files-backend.c:2534 +#: refs/files-backend.c:2481 #, c-format msgid "could not delete reference %s: %s" msgstr "no s'ha pogut suprimir la referència %s: %s" -#: refs/files-backend.c:2537 +#: refs/files-backend.c:2484 #, c-format msgid "could not delete references: %s" msgstr "no s'ha pogut suprimir les referències: %s" -#: refs/files-backend.c:2546 +#: refs/files-backend.c:2493 #, c-format msgid "could not remove reference %s" msgstr "no s'ha pogut eliminar la referència %s" @@ -1479,7 +2400,7 @@ msgstr "amplada positiva esperada amb l'à tom %%(align)" #: ref-filter.c:244 #, c-format msgid "malformed field name: %.*s" -msgstr "nom d'objecte mal format: %.*s" +msgstr "nom de camp mal format: %.*s" #: ref-filter.c:270 #, c-format @@ -1535,12 +2456,12 @@ msgstr "s'està ignorant la referència amb nom trencat %s" msgid "ignoring broken ref %s" msgstr "s'està ignorant la referència trencada %s" -#: ref-filter.c:1651 +#: ref-filter.c:1633 #, c-format msgid "format: %%(end) atom missing" msgstr "format: manca l'à tom %%(end)" -#: ref-filter.c:1705 +#: ref-filter.c:1687 #, c-format msgid "malformed object name %s" msgstr "nom d'objecte %s mal format" @@ -1581,7 +2502,7 @@ msgstr "cap font configurada per a la branca '%s'" #: remote.c:1695 #, c-format msgid "upstream branch '%s' not stored as a remote-tracking branch" -msgstr "La branca font '%s' no s'emmagatzema com a branca amb seguiment remot" +msgstr "la branca font '%s' no s'emmagatzema com a branca amb seguiment remot" #: remote.c:1710 #, c-format @@ -1667,37 +2588,37 @@ msgstr[1] "" msgid " (use \"git pull\" to merge the remote branch into yours)\n" msgstr " (useu \"git pull\" per a fusionar la branca remota a la vostra)\n" -#: revision.c:2132 +#: revision.c:2158 msgid "your current branch appears to be broken" msgstr "la vostra branca actual sembla trencada" -#: revision.c:2135 +#: revision.c:2161 #, c-format msgid "your current branch '%s' does not have any commits yet" msgstr "la vostra branca actual '%s' encara no té cap comissió" -#: revision.c:2329 +#: revision.c:2355 msgid "--first-parent is incompatible with --bisect" msgstr "--first-parent és incompatible amb --bisect" -#: run-command.c:92 +#: run-command.c:106 msgid "open /dev/null failed" msgstr "s'ha fallat en obrir /dev/null" -#: run-command.c:94 +#: run-command.c:108 #, c-format msgid "dup2(%d,%d) failed" msgstr "dup2(%d,%d) ha fallat" -#: send-pack.c:298 +#: send-pack.c:297 msgid "failed to sign the push certificate" msgstr "s'ha fallat en signar el certificat de pujada" -#: send-pack.c:411 +#: send-pack.c:410 msgid "the receiving end does not support --signed push" msgstr "el destà receptor no admet pujar --signed" -#: send-pack.c:413 +#: send-pack.c:412 msgid "" "not sending a push certificate since the receiving end does not support --" "signed push" @@ -1705,15 +2626,23 @@ msgstr "" "no s'està enviant una certificació de pujada perquè el destà receptor no " "admet pujar --signed" -#: send-pack.c:425 +#: send-pack.c:424 msgid "the receiving end does not support --atomic push" msgstr "el destà receptor no admet pujar --atomic" -#: send-pack.c:430 +#: send-pack.c:429 msgid "the receiving end does not support push options" msgstr "el destà receptor no admet opcions de pujada" -#: sequencer.c:174 +#: sequencer.c:171 +msgid "revert" +msgstr "revertir" + +#: sequencer.c:171 +msgid "cherry-pick" +msgstr "recollir cireres" + +#: sequencer.c:228 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add <paths>' or 'git rm <paths>'" @@ -1721,7 +2650,7 @@ msgstr "" "després de resoldre els conflictes, marqueu els camins\n" "corregits amb 'git add <camins>' o 'git rm <camins>'" -#: sequencer.c:177 +#: sequencer.c:231 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add <paths>' or 'git rm <paths>'\n" @@ -1731,230 +2660,257 @@ msgstr "" "corregits amb 'git add <camins>' o 'git rm <camins>'\n" "i cometeu el resultat amb 'git commit'" -#: sequencer.c:190 sequencer.c:841 sequencer.c:924 +#: sequencer.c:244 sequencer.c:1209 #, c-format -msgid "Could not write to %s" -msgstr "No s'ha pogut escriure a %s" +msgid "could not lock '%s'" +msgstr "no s'ha pogut bloquejar '%s'" -#: sequencer.c:193 sequencer.c:843 sequencer.c:928 +#: sequencer.c:247 sequencer.c:1125 sequencer.c:1214 #, c-format -msgid "Error wrapping up %s." -msgstr "Ha hagut un error en finalitzar %s." +msgid "could not write to '%s'" +msgstr "no s'ha pogut escriure a '%s'" -#: sequencer.c:208 -msgid "Your local changes would be overwritten by cherry-pick." -msgstr "Els vostres canvis locals se sobreescriurien pel recull de cireres." +#: sequencer.c:251 +#, c-format +msgid "could not write eol to '%s'" +msgstr "no s'ha pogut escriure el terminador de lÃnia a '%s'" -#: sequencer.c:210 -msgid "Your local changes would be overwritten by revert." -msgstr "Els vostres canvis locals se sobreescriurien per la reversió." +#: sequencer.c:255 sequencer.c:1130 sequencer.c:1216 +#, c-format +msgid "failed to finalize '%s'." +msgstr "s'ha fallat en finalitzar '%s'." -#: sequencer.c:213 -msgid "Commit your changes or stash them to proceed." -msgstr "Cometeu els vostres canvis o emmagatzemeu-los per a procedir." +#: sequencer.c:279 builtin/am.c:259 builtin/commit.c:749 builtin/merge.c:1032 +#, c-format +msgid "could not read '%s'" +msgstr "no s'ha pogut llegir '%s'" -#: sequencer.c:228 +#: sequencer.c:305 +#, c-format +msgid "your local changes would be overwritten by %s." +msgstr "els vostres canvis locals se sobreescriurien per %s." + +#: sequencer.c:309 +msgid "commit your changes or stash them to proceed." +msgstr "cometeu els vostres canvis o emmagatzemeu-los per a procedir." + +#: sequencer.c:324 #, c-format msgid "%s: fast-forward" msgstr "%s: avanç rà pid" #. TRANSLATORS: %s will be "revert" or "cherry-pick" -#: sequencer.c:303 +#: sequencer.c:399 #, c-format msgid "%s: Unable to write new index file" msgstr "%s: No s'ha pogut escriure un fitxer d'Ãndex nou" -#: sequencer.c:321 -msgid "Could not resolve HEAD commit\n" -msgstr "No s'ha pogut resoldre la comissió HEAD\n" +#: sequencer.c:418 +msgid "could not resolve HEAD commit\n" +msgstr "no s'ha pogut resoldre la comissió HEAD\n" + +#: sequencer.c:438 +msgid "unable to update cache tree\n" +msgstr "no s'ha pogut actualitzar l'arbre cau\n" -#: sequencer.c:341 -msgid "Unable to update cache tree\n" -msgstr "No s'ha pogut actualitzar l'arbre cau\n" +#: sequencer.c:483 +#, c-format +msgid "" +"you have staged changes in your working tree\n" +"If these changes are meant to be squashed into the previous commit, run:\n" +"\n" +" git commit --amend %s\n" +"\n" +"If they are meant to go into a new commit, run:\n" +"\n" +" git commit %s\n" +"\n" +"In both cases, once you're done, continue with:\n" +"\n" +" git rebase --continue\n" +msgstr "" +"teniu canvis allistats en el vostre arbre de treball\n" +"Si aquests canvis són per a aixafar-se a la comissió prèvia, executeu:\n" +"\n" +" git commit --amend %s\n" +"\n" +"Si són per a formar una comissió nova, executeu:\n" +"\n" +" git commit %s\n" +"\n" +"En ambdós cassos, quan hà giu terminat, continueu amb:\n" +"\n" +" git rebase --continue\n" -#: sequencer.c:393 +#: sequencer.c:567 #, c-format -msgid "Could not parse commit %s\n" -msgstr "No s'ha pogut analitzar la comissió %s\n" +msgid "could not parse commit %s\n" +msgstr "no s'ha pogut analitzar la comissió %s\n" -#: sequencer.c:398 +#: sequencer.c:572 #, c-format -msgid "Could not parse parent commit %s\n" -msgstr "No s'ha pogut analitzar la comissió mare %s\n" +msgid "could not parse parent commit %s\n" +msgstr "no s'ha pogut analitzar la comissió mare %s\n" -#: sequencer.c:463 -msgid "Your index file is unmerged." -msgstr "El vostre fitxer d'Ãndex està sense fusionar." +#: sequencer.c:656 +msgid "your index file is unmerged." +msgstr "el vostre fitxer d'Ãndex està sense fusionar." -#: sequencer.c:482 +#: sequencer.c:675 #, c-format -msgid "Commit %s is a merge but no -m option was given." -msgstr "La comissió %s és una fusió però no s'ha donat cap opció -m." +msgid "commit %s is a merge but no -m option was given." +msgstr "la comissió %s és una fusió però no s'ha donat cap opció -m." -#: sequencer.c:490 +#: sequencer.c:683 #, c-format -msgid "Commit %s does not have parent %d" -msgstr "La comissió %s no té mare %d" +msgid "commit %s does not have parent %d" +msgstr "la comissió %s no té mare %d" -#: sequencer.c:494 +#: sequencer.c:687 #, c-format -msgid "Mainline was specified but commit %s is not a merge." +msgid "mainline was specified but commit %s is not a merge." msgstr "" -"S'ha especificat la lÃnia principal però la comissió %s no és una fusió." +"s'ha especificat la lÃnia principal però la comissió %s no és una fusió." -#. TRANSLATORS: The first %s will be "revert" or -#. "cherry-pick", the second %s a SHA1 -#: sequencer.c:507 +#. TRANSLATORS: The first %s will be a "todo" command like +#. "revert" or "pick", the second %s a SHA1. +#: sequencer.c:700 #, c-format msgid "%s: cannot parse parent commit %s" msgstr "%s: no es pot analitzar la comissió mare %s" -#: sequencer.c:511 +#: sequencer.c:705 #, c-format -msgid "Cannot get commit message for %s" -msgstr "No es pot obtenir el missatge de comissió de %s" +msgid "cannot get commit message for %s" +msgstr "no es pot obtenir el missatge de comissió de %s" -#: sequencer.c:597 +#: sequencer.c:797 #, c-format msgid "could not revert %s... %s" -msgstr "no s'ha pogut revertir %s...%s" +msgstr "no s'ha pogut revertir %s... %s" -#: sequencer.c:598 +#: sequencer.c:798 #, c-format msgid "could not apply %s... %s" -msgstr "no s'ha pogut aplicar %s...%s" +msgstr "no s'ha pogut aplicar %s... %s" -#: sequencer.c:633 +#: sequencer.c:833 msgid "empty commit set passed" msgstr "conjunt de comissions buit passat" -#: sequencer.c:641 +#: sequencer.c:843 #, c-format msgid "git %s: failed to read the index" msgstr "git %s: s'ha fallat en llegir l'Ãndex" -#: sequencer.c:645 +#: sequencer.c:850 #, c-format msgid "git %s: failed to refresh the index" msgstr "git %s: s'ha fallat en actualitzar l'Ãndex" -#: sequencer.c:705 -msgid "Cannot revert during another revert." -msgstr "No es pot revertir durant una altra reversió." - -#: sequencer.c:706 -msgid "Cannot revert during a cherry-pick." -msgstr "No es pot revertir durant un recull de cireres." - -#: sequencer.c:709 -msgid "Cannot cherry-pick during a revert." -msgstr "No es pot recollir cireres durant una reversió." - -#: sequencer.c:710 -msgid "Cannot cherry-pick during another cherry-pick." -msgstr "No es pot recollir cireres durant altre recull de cireres." - -#: sequencer.c:732 +#: sequencer.c:944 #, c-format -msgid "Could not parse line %d." -msgstr "No s'ha pogut analitzar la lÃnia %d." +msgid "invalid line %d: %.*s" +msgstr "lÃnia no và lida %d: %.*s" -#: sequencer.c:737 -msgid "No commits parsed." -msgstr "No s'ha analitzat cap comissió." +#: sequencer.c:950 +msgid "no commits parsed." +msgstr "no s'ha analitzat cap comissió." -#: sequencer.c:749 +#: sequencer.c:966 #, c-format -msgid "Could not open %s" -msgstr "No s'ha pogut obrir %s" +msgid "could not read '%s'." +msgstr "no s'ha pogut llegir '%s'." -#: sequencer.c:753 +#: sequencer.c:972 #, c-format -msgid "Could not read %s." -msgstr "No s'ha pogut llegir %s." +msgid "unusable instruction sheet: '%s'" +msgstr "full d'instruccions inusable: '%s'" -#: sequencer.c:760 -#, c-format -msgid "Unusable instruction sheet: %s" -msgstr "Full d'instruccions inusable: %s" +#: sequencer.c:983 +msgid "cannot cherry-pick during a revert." +msgstr "no es pot recollir cireres durant una reversió." + +#: sequencer.c:985 +msgid "cannot revert during a cherry-pick." +msgstr "no es pot revertir durant un recull de cireres." -#: sequencer.c:790 +#: sequencer.c:1028 #, c-format -msgid "Invalid key: %s" -msgstr "Clau no và lida: %s" +msgid "invalid key: %s" +msgstr "clau no và lida: %s" -#: sequencer.c:793 builtin/pull.c:50 builtin/pull.c:52 +#: sequencer.c:1031 #, c-format -msgid "Invalid value for %s: %s" -msgstr "Valor no và lid per a %s: %s" +msgid "invalid value for %s: %s" +msgstr "valor no và lid per a %s: %s" -#: sequencer.c:803 +#: sequencer.c:1063 #, c-format -msgid "Malformed options sheet: %s" -msgstr "Full d'opcions mal format: %s" +msgid "malformed options sheet: '%s'" +msgstr "full d'opcions mal format: '%s'" -#: sequencer.c:822 +#: sequencer.c:1101 msgid "a cherry-pick or revert is already in progress" msgstr "un recull de cireres o una reversió ja està en curs" -#: sequencer.c:823 +#: sequencer.c:1102 msgid "try \"git cherry-pick (--continue | --quit | --abort)\"" msgstr "intenteu \"git cherry-pick (--continue | --quit | --abort)\"" -#: sequencer.c:827 +#: sequencer.c:1106 #, c-format -msgid "Could not create sequencer directory %s" -msgstr "No s'ha pogut crear el directori de seqüenciador %s" +msgid "could not create sequencer directory '%s'" +msgstr "no s'ha pogut crear el directori de seqüenciador '%s'" + +#: sequencer.c:1120 +msgid "could not lock HEAD" +msgstr "no s'ha pogut bloquejar HEAD" -#: sequencer.c:862 sequencer.c:998 +#: sequencer.c:1151 sequencer.c:1289 msgid "no cherry-pick or revert in progress" msgstr "ni hi ha cap recull de cireres ni cap reversió en curs" -#: sequencer.c:864 +#: sequencer.c:1153 msgid "cannot resolve HEAD" msgstr "no es pot resoldre HEAD" -#: sequencer.c:866 sequencer.c:900 +#: sequencer.c:1155 sequencer.c:1189 msgid "cannot abort from a branch yet to be born" msgstr "no es pot avortar des d'una branca que encara ha de nà ixer" -#: sequencer.c:886 builtin/fetch.c:724 builtin/fetch.c:970 +#: sequencer.c:1175 builtin/grep.c:578 #, c-format -msgid "cannot open %s" -msgstr "no es pot obrir %s" +msgid "cannot open '%s'" +msgstr "no es pot obrir '%s'" -#: sequencer.c:888 +#: sequencer.c:1177 #, c-format -msgid "cannot read %s: %s" -msgstr "no es pot llegir %s: %s" +msgid "cannot read '%s': %s" +msgstr "no es pot llegir '%s': %s" -#: sequencer.c:889 +#: sequencer.c:1178 msgid "unexpected end of file" msgstr "final de fitxer inesperat" -#: sequencer.c:895 +#: sequencer.c:1184 #, c-format msgid "stored pre-cherry-pick HEAD file '%s' is corrupt" msgstr "el fitxer HEAD emmagatzemat abans del recull de cireres '%s' és malmès" -#: sequencer.c:921 -#, c-format -msgid "Could not format %s." -msgstr "No s'ha pogut formatar %s." - -#: sequencer.c:1066 +#: sequencer.c:1354 #, c-format msgid "%s: can't cherry-pick a %s" msgstr "%s: no es pot recollir com a cirera un %s" -#: sequencer.c:1069 +#: sequencer.c:1358 #, c-format msgid "%s: bad revision" msgstr "%s: revisió dolenta" -#: sequencer.c:1102 -msgid "Can't revert as initial commit" -msgstr "No es pot revertir com a comissió inicial" +#: sequencer.c:1391 +msgid "can't revert as initial commit" +msgstr "no es pot revertir com a comissió inicial" #: setup.c:160 #, c-format @@ -1988,11 +2944,6 @@ msgstr "" "Useu '--' per a separar els camins de les revisions, com això:\n" "'git <ordre> [<revisió>...] -- [<fitxer>...]'" -#: setup.c:248 builtin/apply.c:3362 builtin/apply.c:3373 builtin/apply.c:3419 -#, c-format -msgid "failed to read %s" -msgstr "s'ha fallat en llegir %s" - #: setup.c:468 #, c-format msgid "Expected git repo version <= %d, found %d" @@ -2005,7 +2956,7 @@ msgstr "s'han trobat extensions de dipòsit desconegudes:" #: setup.c:762 #, c-format msgid "Not a git repository (or any of the parent directories): %s" -msgstr "No un dipòsit de git (ni cap dels directoris pares): %s" +msgstr "No és un dipòsit de git (ni cap dels directoris pares): %s" #: setup.c:764 setup.c:915 builtin/index-pack.c:1641 msgid "Cannot come back to cwd" @@ -2036,27 +2987,63 @@ msgid "" "Problem with core.sharedRepository filemode value (0%.3o).\n" "The owner of files must always have read and write permissions." msgstr "" -"Problema amb el valor de mode de fitxer core.sharedRepository (0%.3o).\n" +"Hi ha un problema amb el valor de mode de fitxer core.sharedRepository " +"(0%.3o).\n" "El propietari dels fitxers sempre ha de tenir permissions de lectura i " "escriptura." -#: sha1_file.c:1046 +#: sha1_file.c:473 +#, c-format +msgid "path '%s' does not exist" +msgstr "el camà '%s' no existeix" + +#: sha1_file.c:499 +#, c-format +msgid "reference repository '%s' as a linked checkout is not supported yet." +msgstr "" +"Encara no se suporta el dipòsit de referència '%s' com a agafament enllaçat." + +#: sha1_file.c:505 +#, c-format +msgid "reference repository '%s' is not a local repository." +msgstr "el dipòsit de referència '%s' no és un dipòsit local." + +#: sha1_file.c:511 +#, c-format +msgid "reference repository '%s' is shallow" +msgstr "el dipòsit de referència '%s' és superficial" + +#: sha1_file.c:519 +#, c-format +msgid "reference repository '%s' is grafted" +msgstr "el dipòsit de referència '%s' és empeltat" + +#: sha1_file.c:1159 msgid "offset before end of packfile (broken .idx?)" msgstr "desplaçament abans de la fi del fitxer de paquet (.idx trencat?)" -#: sha1_file.c:2434 +#: sha1_file.c:2592 #, c-format msgid "offset before start of pack index for %s (corrupt index?)" msgstr "" "desplaçament abans d'inici d'Ãndex de paquet per a %s (Ãndex corromput?)" -#: sha1_file.c:2438 +#: sha1_file.c:2596 #, c-format msgid "offset beyond end of pack index for %s (truncated index?)" msgstr "" "desplaçament més enllà de la fi d'Ãndex de paquet per a %s (Ãndex truncat?)" -#: sha1_name.c:462 +#: sha1_name.c:407 +#, c-format +msgid "short SHA1 %s is ambiguous" +msgstr "l'SHA1 %s curt és ambigu" + +#: sha1_name.c:418 +msgid "The candidates are:" +msgstr "Els candidats són:" + +#: sha1_name.c:578 msgid "" "Git normally never creates a ref that ends with 40 hex characters\n" "because it will be ignored when you just specify 40-hex. These refs\n" @@ -2075,7 +3062,7 @@ msgstr "" "\n" " git checkout -b $br $(git rev-parse ...)\n" "\n" -"on \"$br\" és d'alguna manera buit i una referència de 40 carà cters\n" +"on \"$br\" és d'alguna manera buida i una referència de 40 carà cters\n" "hexadecimals. Si us plau, examineu aquestes referències i potser\n" "suprimiu-les. Desactiveu aquest missatge executant\n" "\"git config advice.objectNameWarning false\"" @@ -2103,9 +3090,9 @@ msgstr "No s'ha pogut eliminar l'entrada de .gitmodules per a %s" #: submodule.c:120 msgid "staging updated .gitmodules failed" -msgstr "L'allistament del .gitmodules actualitzat ha fallat" +msgstr "l'allistament del .gitmodules actualitzat ha fallat" -#: submodule.c:177 +#: submodule.c:158 msgid "negative values not allowed for submodule.fetchJobs" msgstr "no es permeten els valors negatius a submodule.fetchJobs" @@ -2114,56 +3101,56 @@ msgstr "no es permeten els valors negatius a submodule.fetchJobs" msgid "invalid value for %s" msgstr "valor no và lid per a %s" -#: trailer.c:237 +#: trailer.c:238 #, c-format msgid "running trailer command '%s' failed" msgstr "l'execució de l'ordre de remolc '%s' ha fallat" -#: trailer.c:492 trailer.c:496 trailer.c:500 trailer.c:554 trailer.c:558 -#: trailer.c:562 +#: trailer.c:471 trailer.c:475 trailer.c:479 trailer.c:533 trailer.c:537 +#: trailer.c:541 #, c-format msgid "unknown value '%s' for key '%s'" msgstr "valor desconegut '%s' per a la clau '%s'" -#: trailer.c:544 trailer.c:549 builtin/remote.c:289 +#: trailer.c:523 trailer.c:528 builtin/remote.c:289 #, c-format msgid "more than one %s" msgstr "més d'un %s" -#: trailer.c:582 +#: trailer.c:672 #, c-format msgid "empty trailer token in trailer '%.*s'" msgstr "fitxa de remolc buida en el remolc '%.*s'" -#: trailer.c:702 +#: trailer.c:695 #, c-format msgid "could not read input file '%s'" msgstr "no s'ha pogut llegir el fitxer d'entrada '%s'" -#: trailer.c:705 +#: trailer.c:698 msgid "could not read from stdin" -msgstr "No s'ha pogut llegir des d'stdin" +msgstr "no s'ha pogut llegir des d'stdin" -#: trailer.c:857 builtin/am.c:42 +#: trailer.c:929 builtin/am.c:44 #, c-format msgid "could not stat %s" msgstr "no s'ha pogut fer stat a %s" -#: trailer.c:859 +#: trailer.c:931 #, c-format msgid "file %s is not a regular file" msgstr "el fitxer %s no és un fitxer regular" -#: trailer.c:861 +#: trailer.c:933 #, c-format msgid "file %s is not writable by user" msgstr "el fitxer %s no és gravable per l'usuari" -#: trailer.c:873 +#: trailer.c:945 msgid "could not open temporary file" msgstr "no s'ha pogut obrir el fitxer temporal" -#: trailer.c:912 +#: trailer.c:983 #, c-format msgid "could not rename temporary file to %s" msgstr "no s'ha pogut canviar el nom del fitxer temporal a %s" @@ -2178,7 +3165,7 @@ msgstr "Canviaria la font de '%s' a '%s' de '%s'\n" msgid "transport: invalid depth option '%s'" msgstr "transport: opció de profunditat no và lida '%s'" -#: transport.c:771 +#: transport.c:817 #, c-format msgid "" "The following submodule paths contain changes that can\n" @@ -2187,7 +3174,7 @@ msgstr "" "Els camins de submòdul següents contenen canvis que no\n" "es poden trobar en cap remot:\n" -#: transport.c:775 +#: transport.c:821 #, c-format msgid "" "\n" @@ -2213,15 +3200,31 @@ msgstr "" "\n" "per a pujar-los a un remot.\n" -#: transport.c:783 +#: transport.c:829 msgid "Aborting." msgstr "S'està avortant." -#: transport-helper.c:1041 +#: transport-helper.c:1075 #, c-format msgid "Could not read ref %s" msgstr "No s'ha pogut llegir la referència %s" +#: tree-walk.c:31 +msgid "too-short tree object" +msgstr "objecte d'arbre massa curt" + +#: tree-walk.c:37 +msgid "malformed mode in tree entry" +msgstr "mode mal format en entrada d'arbre" + +#: tree-walk.c:41 +msgid "empty filename in tree entry" +msgstr "nom de fitxer buit en entrada de arbre" + +#: tree-walk.c:113 +msgid "too-short tree file" +msgstr "fitxer d'arbre massa curt" + #: unpack-trees.c:64 #, c-format msgid "" @@ -2429,7 +3432,7 @@ msgstr "" #: unpack-trees.c:126 #, c-format msgid "" -"The following Working tree files would be overwritten by sparse checkout " +"The following working tree files would be overwritten by sparse checkout " "update:\n" "%s" msgstr "" @@ -2440,7 +3443,7 @@ msgstr "" #: unpack-trees.c:128 #, c-format msgid "" -"The following Working tree files would be removed by sparse checkout " +"The following working tree files would be removed by sparse checkout " "update:\n" "%s" msgstr "" @@ -2496,14 +3499,14 @@ msgstr "s'ha fallat en llegir '%s'" msgid "could not open '%s' for reading and writing" msgstr "no s'ha pogut obrir '%s' per a lectura i escriptura" -#: wrapper.c:224 wrapper.c:394 builtin/am.c:778 +#: wrapper.c:224 wrapper.c:394 builtin/am.c:766 #, c-format msgid "could not open '%s' for writing" msgstr "no s'ha pogut obrir '%s' per a escriptura" -#: 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 +#: wrapper.c:226 wrapper.c:396 builtin/am.c:320 builtin/am.c:759 +#: builtin/am.c:847 builtin/commit.c:1705 builtin/merge.c:1029 +#: builtin/pull.c:341 #, c-format msgid "could not open '%s' for reading" msgstr "no s'ha pogut obrir '%s' per a lectura" @@ -2527,414 +3530,416 @@ msgstr "no s'ha pogut escriure a %s" msgid "could not close %s" msgstr "no s'ha pogut tancar %s" -#: wt-status.c:150 +#: wt-status.c:151 msgid "Unmerged paths:" msgstr "Camins sense fusionar:" -#: wt-status.c:177 wt-status.c:204 +#: wt-status.c:178 wt-status.c:205 #, c-format msgid " (use \"git reset %s <file>...\" to unstage)" msgstr " (useu \"git reset %s <fitxer>...\" per a desallistar)" -#: wt-status.c:179 wt-status.c:206 +#: wt-status.c:180 wt-status.c:207 msgid " (use \"git rm --cached <file>...\" to unstage)" msgstr " (useu \"git rm --cached <fitxer>...\" per a desallistar)" -#: wt-status.c:183 +#: wt-status.c:184 msgid " (use \"git add <file>...\" to mark resolution)" msgstr " (useu \"git add <fitxer>...\" per a senyalar resolució)" -#: wt-status.c:185 wt-status.c:189 +#: wt-status.c:186 wt-status.c:190 msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)" msgstr "" " (useu \"git add/rm <fitxer>...\" segons sigui apropiat per a senyalar " "resolució)" -#: wt-status.c:187 +#: wt-status.c:188 msgid " (use \"git rm <file>...\" to mark resolution)" msgstr " (useu \"git rm <fitxer>...\" per a senyalar resolució)" -#: wt-status.c:198 wt-status.c:882 +#: wt-status.c:199 wt-status.c:945 msgid "Changes to be committed:" msgstr "Canvis a cometre:" -#: wt-status.c:216 wt-status.c:891 +#: wt-status.c:217 wt-status.c:954 msgid "Changes not staged for commit:" msgstr "Canvis no allistats per a cometre:" -#: wt-status.c:220 +#: wt-status.c:221 msgid " (use \"git add <file>...\" to update what will be committed)" msgstr " (useu \"git add <fitxer>...\" per a actualitzar què es cometrà )" -#: wt-status.c:222 +#: wt-status.c:223 msgid " (use \"git add/rm <file>...\" to update what will be committed)" msgstr " (useu \"git add/rm <fitxer>...\" per a actualitzar què es cometrà )" -#: wt-status.c:223 +#: wt-status.c:224 msgid "" " (use \"git checkout -- <file>...\" to discard changes in working directory)" msgstr "" " (useu \"git checkout -- <fitxer>...\" per a descartar els canvis en el " "directori de treball)" -#: wt-status.c:225 +#: wt-status.c:226 msgid " (commit or discard the untracked or modified content in submodules)" msgstr "" " (cometeu o descarteu el contingut modificat o no seguit en els submòduls)" -#: wt-status.c:237 +#: wt-status.c:238 #, c-format msgid " (use \"git %s <file>...\" to include in what will be committed)" msgstr " (useu \"git %s <fitxer>...\" per a incloure-ho en què es cometrà )" -#: wt-status.c:252 +#: wt-status.c:253 msgid "both deleted:" msgstr "suprimit per ambdós:" -#: wt-status.c:254 +#: wt-status.c:255 msgid "added by us:" msgstr "afegit per nosaltres:" -#: wt-status.c:256 +#: wt-status.c:257 msgid "deleted by them:" msgstr "suprimit per ells:" -#: wt-status.c:258 +#: wt-status.c:259 msgid "added by them:" msgstr "afegit per ells:" -#: wt-status.c:260 +#: wt-status.c:261 msgid "deleted by us:" msgstr "suprimit per nosaltres:" -#: wt-status.c:262 +#: wt-status.c:263 msgid "both added:" msgstr "afegit per ambdós:" -#: wt-status.c:264 +#: wt-status.c:265 msgid "both modified:" msgstr "modificat per ambdós:" -#: wt-status.c:274 +#: wt-status.c:275 msgid "new file:" msgstr "fitxer nou:" -#: wt-status.c:276 +#: wt-status.c:277 msgid "copied:" msgstr "copiat:" -#: wt-status.c:278 +#: wt-status.c:279 msgid "deleted:" msgstr "suprimit:" -#: wt-status.c:280 +#: wt-status.c:281 msgid "modified:" msgstr "modificat:" -#: wt-status.c:282 +#: wt-status.c:283 msgid "renamed:" msgstr "canviat de nom:" -#: wt-status.c:284 +#: wt-status.c:285 msgid "typechange:" msgstr "canviat de tipus:" -#: wt-status.c:286 +#: wt-status.c:287 msgid "unknown:" msgstr "desconegut:" -#: wt-status.c:288 +#: wt-status.c:289 msgid "unmerged:" msgstr "sense fusionar:" -#: wt-status.c:370 +#: wt-status.c:371 msgid "new commits, " msgstr "comissions noves, " -#: wt-status.c:372 +#: wt-status.c:373 msgid "modified content, " msgstr "contingut modificat, " -#: wt-status.c:374 +#: wt-status.c:375 msgid "untracked content, " msgstr "contingut no seguit, " -#: wt-status.c:756 +#: wt-status.c:818 msgid "Submodules changed but not updated:" msgstr "Submòduls canviats però no actualitzats:" -#: wt-status.c:758 +#: wt-status.c:820 msgid "Submodule changes to be committed:" msgstr "Canvis de submòdul a cometre:" -#: wt-status.c:839 +#: wt-status.c:901 msgid "" "Do not touch the line above.\n" "Everything below will be removed." msgstr "" -"No toqueu la lÃnia de sobre.\n" +"No toqueu la lÃnia a dalt.\n" "Tot el que hi ha a sota s'eliminarà ." -#: wt-status.c:950 +#: wt-status.c:1013 msgid "You have unmerged paths." msgstr "Teniu camins sense fusionar." -#: wt-status.c:953 +#: wt-status.c:1016 msgid " (fix conflicts and run \"git commit\")" msgstr " (arregleu els conflictes i executeu \"git commit\")" -#: wt-status.c:955 +#: wt-status.c:1018 msgid " (use \"git merge --abort\" to abort the merge)" msgstr " (useu \"git merge --abort\" per a avortar la fusió)" -#: wt-status.c:960 +#: wt-status.c:1023 msgid "All conflicts fixed but you are still merging." msgstr "Tots els conflictes estan arreglats però encara esteu fusionant." -#: wt-status.c:963 +#: wt-status.c:1026 msgid " (use \"git commit\" to conclude merge)" msgstr " (useu \"git commit\" per a concloure la fusió)" -#: wt-status.c:973 +#: wt-status.c:1036 msgid "You are in the middle of an am session." msgstr "Esteu enmig d'una sessió am." -#: wt-status.c:976 +#: wt-status.c:1039 msgid "The current patch is empty." msgstr "El pedaç actual està buit." -#: wt-status.c:980 +#: wt-status.c:1043 msgid " (fix conflicts and then run \"git am --continue\")" msgstr " (arregleu els conflictes i després executeu \"git am --continue\")" -#: wt-status.c:982 +#: wt-status.c:1045 msgid " (use \"git am --skip\" to skip this patch)" msgstr " (useu \"git am --skip\" per a ometre aquest pedaç)" -#: wt-status.c:984 +#: wt-status.c:1047 msgid " (use \"git am --abort\" to restore the original branch)" msgstr " (useu \"git am --abort\" per a restaurar la branca original)" -#: wt-status.c:1109 +#: wt-status.c:1172 msgid "No commands done." msgstr "No s'ha fet cap ordre." -#: wt-status.c:1112 +#: wt-status.c:1175 #, c-format msgid "Last command done (%d command done):" msgid_plural "Last commands done (%d commands done):" msgstr[0] "Última ordre feta (%d ordre feta):" msgstr[1] "Últimes ordres fetes (%d ordres fetes):" -#: wt-status.c:1123 +#: wt-status.c:1186 #, c-format msgid " (see more in file %s)" msgstr " (vegeu més en el fitxer %s)" -#: wt-status.c:1128 +#: wt-status.c:1191 msgid "No commands remaining." msgstr "No manca cap ordre." -#: wt-status.c:1131 +#: wt-status.c:1194 #, c-format msgid "Next command to do (%d remaining command):" msgid_plural "Next commands to do (%d remaining commands):" msgstr[0] "Ordre següent a fer (manca %d ordre):" msgstr[1] "Ordres següents a fer (manquen %d ordres):" -#: wt-status.c:1139 +#: wt-status.c:1202 msgid " (use \"git rebase --edit-todo\" to view and edit)" msgstr " (useu \"git rebase --edit-todo\" per a veure i editar)" -#: wt-status.c:1152 +#: wt-status.c:1215 #, c-format msgid "You are currently rebasing branch '%s' on '%s'." msgstr "Actualment esteu rebasant la branca '%s' en '%s'." -#: wt-status.c:1157 +#: wt-status.c:1220 msgid "You are currently rebasing." msgstr "Actualment esteu rebasant." -#: wt-status.c:1171 +#: wt-status.c:1234 msgid " (fix conflicts and then run \"git rebase --continue\")" msgstr "" " (arregleu els conflictes i després executeu \"git rebase --continue\")" -#: wt-status.c:1173 +#: wt-status.c:1236 msgid " (use \"git rebase --skip\" to skip this patch)" msgstr " (useu \"git rebase --skip\" per a saltar aquest pedaç)" -#: wt-status.c:1175 +#: wt-status.c:1238 msgid " (use \"git rebase --abort\" to check out the original branch)" msgstr " (useu \"git rebase --abort\" per a agafar la branca original)" -#: wt-status.c:1181 +#: wt-status.c:1244 msgid " (all conflicts fixed: run \"git rebase --continue\")" -msgstr " (tots els conflictes arreglats: executeu \"git rebase --continue\")" +msgstr "" +" (tots els conflictes estan arreglats: executeu \"git rebase --continue\")" -#: wt-status.c:1185 +#: wt-status.c:1248 #, c-format msgid "" "You are currently splitting a commit while rebasing branch '%s' on '%s'." msgstr "" "Actualment esteu dividint una comissió mentre rebaseu la branca '%s' en '%s'." -#: wt-status.c:1190 +#: wt-status.c:1253 msgid "You are currently splitting a commit during a rebase." msgstr "Actualment esteu dividint una comissió durant un rebasament." -#: wt-status.c:1193 +#: wt-status.c:1256 msgid " (Once your working directory is clean, run \"git rebase --continue\")" msgstr "" " (Una vegada que el vostre directori de treball sigui net, executeu \"git " "rebase --continue\")" -#: wt-status.c:1197 +#: wt-status.c:1260 #, c-format msgid "You are currently editing a commit while rebasing branch '%s' on '%s'." msgstr "" "Actualment esteu editant una comissió mentre rebaseu la branca '%s' en '%s'." -#: wt-status.c:1202 +#: wt-status.c:1265 msgid "You are currently editing a commit during a rebase." msgstr "Actualment esteu editant una comissió durant un rebasament." -#: wt-status.c:1205 +#: wt-status.c:1268 msgid " (use \"git commit --amend\" to amend the current commit)" msgstr " (useu \"git commit --amend\" per a esmenar la comissió actual)" -#: wt-status.c:1207 +#: wt-status.c:1270 msgid "" " (use \"git rebase --continue\" once you are satisfied with your changes)" msgstr "" -" (useu \"git rebase --continue\" una vegada que esteu satisfet amb els " +" (useu \"git rebase --continue\" una vegada que estigueu satisfet amb els " "vostres canvis)" -#: wt-status.c:1217 +#: wt-status.c:1280 #, c-format msgid "You are currently cherry-picking commit %s." msgstr "Actualment esteu recollint com a cirera la comissió %s." -#: wt-status.c:1222 +#: wt-status.c:1285 msgid " (fix conflicts and run \"git cherry-pick --continue\")" msgstr " (arregleu els conflictes i executeu \"git cherry-pick --continue\")" -#: wt-status.c:1225 +#: wt-status.c:1288 msgid " (all conflicts fixed: run \"git cherry-pick --continue\")" msgstr "" -" (tots els conflictes arreglats: executeu \"git cherry-pick --continue\")" +" (tots els conflictes estan arreglats: executeu \"git cherry-pick --continue" +"\")" -#: wt-status.c:1227 +#: wt-status.c:1290 msgid " (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)" msgstr "" " (useu \"git cherry-pick --abort\" per a cancel·lar l'operació de recull de " "cireres)" -#: wt-status.c:1236 +#: wt-status.c:1299 #, c-format msgid "You are currently reverting commit %s." msgstr "Actualment esteu revertint la comissió %s." -#: wt-status.c:1241 +#: wt-status.c:1304 msgid " (fix conflicts and run \"git revert --continue\")" msgstr " (arregleu els conflictes i executeu \"git revert --continue\")" -#: wt-status.c:1244 +#: wt-status.c:1307 msgid " (all conflicts fixed: run \"git revert --continue\")" msgstr "" " (tots els conflictes estan arreglats: executeu \"git revert --continue\")" -#: wt-status.c:1246 +#: wt-status.c:1309 msgid " (use \"git revert --abort\" to cancel the revert operation)" msgstr "" " (useu \"git revert --abort\" per a cancel·lar l'operació de reversió)" -#: wt-status.c:1257 +#: wt-status.c:1320 #, c-format msgid "You are currently bisecting, started from branch '%s'." msgstr "Actualment esteu bisecant, heu començat des de la branca '%s'." -#: wt-status.c:1261 +#: wt-status.c:1324 msgid "You are currently bisecting." msgstr "Actualment esteu bisecant." -#: wt-status.c:1264 +#: wt-status.c:1327 msgid " (use \"git bisect reset\" to get back to the original branch)" msgstr " (useu \"git bisect reset\" per a tornar a la branca original)" -#: wt-status.c:1464 +#: wt-status.c:1524 msgid "On branch " msgstr "En la branca " -#: wt-status.c:1470 +#: wt-status.c:1530 msgid "interactive rebase in progress; onto " msgstr "rebasament interactiu en progrés; sobre " -#: wt-status.c:1472 +#: wt-status.c:1532 msgid "rebase in progress; onto " msgstr "rebasament en progrés; sobre " -#: wt-status.c:1477 +#: wt-status.c:1537 msgid "HEAD detached at " msgstr "HEAD separat a " -#: wt-status.c:1479 +#: wt-status.c:1539 msgid "HEAD detached from " msgstr "HEAD separat de " -#: wt-status.c:1482 +#: wt-status.c:1542 msgid "Not currently on any branch." msgstr "Actualment no s'és en cap branca." -#: wt-status.c:1500 +#: wt-status.c:1560 msgid "Initial commit" msgstr "Comissió inicial" -#: wt-status.c:1514 +#: wt-status.c:1574 msgid "Untracked files" msgstr "Fitxers no seguits" -#: wt-status.c:1516 +#: wt-status.c:1576 msgid "Ignored files" msgstr "Fitxers ignorats" -#: wt-status.c:1520 +#: wt-status.c:1580 #, c-format msgid "" "It took %.2f seconds to enumerate untracked files. 'status -uno'\n" "may speed it up, but you have to be careful not to forget to add\n" "new files yourself (see 'git help status')." msgstr "" -"S'ha trigat %.2f segons a enumerar fitxers no seguits.\n" +"Ha trigat %.2f segons enumerar els fitxers no seguits.\n" "'status -uno' pot accelerar-ho, però heu d'anar amb compte de no\n" "oblidar-vos d'afegir fitxers nous per vós mateix (vegeu\n" "'git help status')." -#: wt-status.c:1526 +#: wt-status.c:1586 #, c-format msgid "Untracked files not listed%s" msgstr "Els fitxers no seguits no estan llistats%s" -#: wt-status.c:1528 +#: wt-status.c:1588 msgid " (use -u option to show untracked files)" msgstr " (useu l'opció -u per a mostrar els fitxers no seguits)" -#: wt-status.c:1534 +#: wt-status.c:1594 msgid "No changes" msgstr "Sense canvis" -#: wt-status.c:1539 +#: wt-status.c:1599 #, c-format msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" msgstr "" "no hi ha canvis afegits a cometre (useu \"git add\" o \"git commit -a\")\n" -#: wt-status.c:1542 +#: wt-status.c:1602 #, c-format msgid "no changes added to commit\n" msgstr "no hi ha canvis afegits a cometre\n" -#: wt-status.c:1545 +#: wt-status.c:1605 #, c-format msgid "" "nothing added to commit but untracked files present (use \"git add\" to " @@ -2943,55 +3948,70 @@ msgstr "" "no hi ha res afegit a cometre però fitxers no seguits estan presents (useu " "\"git add\" per a seguir-los)\n" -#: wt-status.c:1548 +#: wt-status.c:1608 #, c-format msgid "nothing added to commit but untracked files present\n" msgstr "no hi ha res afegit a cometre però fitxers no seguits estan presents\n" -#: wt-status.c:1551 +#: wt-status.c:1611 #, c-format msgid "nothing to commit (create/copy files and use \"git add\" to track)\n" msgstr "" "no hi ha res a cometre (creeu/copieu fitxers i useu \"git add\" per a seguir-" "los)\n" -#: wt-status.c:1554 wt-status.c:1559 +#: wt-status.c:1614 wt-status.c:1619 #, c-format msgid "nothing to commit\n" msgstr "no hi ha res a cometre\n" -#: wt-status.c:1557 +#: wt-status.c:1617 #, c-format msgid "nothing to commit (use -u to show untracked files)\n" msgstr "" "no hi ha res a cometre (useu -u per a mostrar els fitxers no seguits)\n" -#: wt-status.c:1561 +#: wt-status.c:1621 #, c-format msgid "nothing to commit, working tree clean\n" msgstr "no hi ha res a cometre, l'arbre de treball està net\n" -#: wt-status.c:1668 +#: wt-status.c:1728 msgid "Initial commit on " msgstr "Comissió inicial en " -#: wt-status.c:1672 +#: wt-status.c:1732 msgid "HEAD (no branch)" msgstr "HEAD (sense branca)" -#: wt-status.c:1701 +#: wt-status.c:1761 msgid "gone" msgstr "no hi és" -#: wt-status.c:1703 wt-status.c:1711 +#: wt-status.c:1763 wt-status.c:1771 msgid "behind " msgstr "darrere " -#: wt-status.c:1706 wt-status.c:1709 +#: wt-status.c:1766 wt-status.c:1769 msgid "ahead " msgstr "davant per " -#: compat/precompose_utf8.c:57 builtin/clone.c:415 +#. TRANSLATORS: the action is e.g. "pull with rebase" +#: wt-status.c:2270 +#, c-format +msgid "cannot %s: You have unstaged changes." +msgstr "no es pot %s: Teniu canvis no allistats." + +#: wt-status.c:2276 +msgid "additionally, your index contains uncommitted changes." +msgstr "addicionalment, el vostre Ãndex conté canvis sense cometre." + +#: wt-status.c:2278 +#, c-format +msgid "cannot %s: Your index contains uncommitted changes." +msgstr "no es pot %s: El vostre Ãndex conté canvis sense cometre." + +#: compat/precompose_utf8.c:57 builtin/clone.c:414 #, c-format msgid "failed to unlink '%s'" msgstr "s'ha fallat en desenllaçar '%s'" @@ -3000,278 +4020,263 @@ msgstr "s'ha fallat en desenllaçar '%s'" msgid "git add [<options>] [--] <pathspec>..." msgstr "git add [<opcions>] [--] <especificació-de-camÃ>..." -#: builtin/add.c:65 +#: builtin/add.c:80 #, c-format msgid "unexpected diff status %c" msgstr "estat de diff inesperat %c" -#: builtin/add.c:71 builtin/commit.c:281 +#: builtin/add.c:85 builtin/commit.c:291 msgid "updating files failed" msgstr "s'ha fallat en actualitzar els fitxers" -#: builtin/add.c:81 +#: builtin/add.c:95 #, c-format msgid "remove '%s'\n" msgstr "elimina '%s'\n" -#: builtin/add.c:136 +#: builtin/add.c:149 msgid "Unstaged changes after refreshing the index:" msgstr "Canvis no allistats després d'actualitzar l'Ãndex:" -#: builtin/add.c:196 builtin/rev-parse.c:811 +#: builtin/add.c:209 builtin/rev-parse.c:840 msgid "Could not read the index" msgstr "No s'ha pogut llegir l'Ãndex" -#: builtin/add.c:207 +#: builtin/add.c:220 #, c-format msgid "Could not open '%s' for writing." msgstr "No s'ha pogut obrir '%s' per a escriptura." -#: builtin/add.c:211 +#: builtin/add.c:224 msgid "Could not write patch" msgstr "No s'ha pogut escriure el pedaç" -#: builtin/add.c:214 +#: builtin/add.c:227 msgid "editing patch failed" msgstr "l'edició del pedaç ha fallat" -#: builtin/add.c:217 +#: builtin/add.c:230 #, c-format msgid "Could not stat '%s'" msgstr "No s'ha pogut fer stat a '%s'" -#: builtin/add.c:219 +#: builtin/add.c:232 msgid "Empty patch. Aborted." msgstr "El pedaç és buit. S'ha avortat." -#: builtin/add.c:224 +#: builtin/add.c:237 #, c-format msgid "Could not apply '%s'" msgstr "No s'ha pogut aplicar '%s'" -#: builtin/add.c:234 +#: builtin/add.c:247 msgid "The following paths are ignored by one of your .gitignore files:\n" msgstr "" "Els camins següents s'ignoren per un dels vostres fitxers .gitignore:\n" -#: 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 +#: builtin/add.c:266 builtin/clean.c:870 builtin/fetch.c:115 builtin/mv.c:111 +#: builtin/prune-packed.c:55 builtin/pull.c:198 builtin/push.c:521 +#: builtin/remote.c:1326 builtin/rm.c:268 builtin/send-pack.c:162 msgid "dry run" msgstr "marxa en sec" -#: 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 "sigues detallat" - -#: builtin/add.c:256 +#: builtin/add.c:269 msgid "interactive picking" msgstr "recull interactiu" -#: builtin/add.c:257 builtin/checkout.c:1157 builtin/reset.c:286 +#: builtin/add.c:270 builtin/checkout.c:1156 builtin/reset.c:286 msgid "select hunks interactively" msgstr "selecciona els trossos interactivament" -#: builtin/add.c:258 +#: builtin/add.c:271 msgid "edit current diff and apply" msgstr "edita la diferència actual i aplica-la" -#: builtin/add.c:259 +#: builtin/add.c:272 msgid "allow adding otherwise ignored files" msgstr "permet afegir fitxers que d'altra manera s'ignoren" -#: builtin/add.c:260 +#: builtin/add.c:273 msgid "update tracked files" msgstr "actualitza els fitxers seguits" -#: builtin/add.c:261 +#: builtin/add.c:274 msgid "record only the fact that the path will be added later" -msgstr "registra només el fet que el camà s'afegirà més tard" +msgstr "registra només el fet de que el camà s'afegirà més tard" -#: builtin/add.c:262 +#: builtin/add.c:275 msgid "add changes from all tracked and untracked files" msgstr "afegeix els canvis de tots els fitxers seguits i no seguits" -#: builtin/add.c:265 +#: builtin/add.c:278 msgid "ignore paths removed in the working tree (same as --no-all)" msgstr "" "ignora els camins eliminats en l'arbre de treball (el mateix que --no-all)" -#: builtin/add.c:267 +#: builtin/add.c:280 msgid "don't add, only refresh the index" msgstr "no afegeixis, només actualitza l'Ãndex" -#: builtin/add.c:268 +#: builtin/add.c:281 msgid "just skip files which cannot be added because of errors" msgstr "només omet els fitxers que no es poden afegir a causa d'errors" -#: builtin/add.c:269 +#: builtin/add.c:282 msgid "check if - even missing - files are ignored in dry run" msgstr "" "comproveu si els fitxers - fins i tot els absents - s'ignoren en marxa en sec" -#: builtin/add.c:270 builtin/update-index.c:958 +#: builtin/add.c:283 builtin/update-index.c:947 msgid "(+/-)x" msgstr "(+/-)x" -#: builtin/add.c:270 builtin/update-index.c:959 +#: builtin/add.c:283 builtin/update-index.c:948 msgid "override the executable bit of the listed files" msgstr "passa per alt el bit executable dels fitxers llistats" -#: builtin/add.c:292 +#: builtin/add.c:305 #, c-format msgid "Use -f if you really want to add them.\n" msgstr "Useu -f si realment els voleu afegir.\n" -#: builtin/add.c:300 +#: builtin/add.c:312 msgid "adding files failed" msgstr "l'afegiment de fitxers ha fallat" -#: builtin/add.c:336 +#: builtin/add.c:348 msgid "-A and -u are mutually incompatible" msgstr "-A i -u són mutualment incompatibles" -#: builtin/add.c:343 +#: builtin/add.c:355 msgid "Option --ignore-missing can only be used together with --dry-run" msgstr "L'opció --ignore-missing només es pot usar junt amb --dry-run" -#: builtin/add.c:352 +#: builtin/add.c:359 #, c-format msgid "--chmod param '%s' must be either -x or +x" msgstr "el parà metre --chmod '%s' ha de ser o -x o +x" -#: builtin/add.c:367 +#: builtin/add.c:374 #, c-format msgid "Nothing specified, nothing added.\n" msgstr "No s'ha especificat res, no s'ha afegit res.\n" -#: builtin/add.c:368 +#: builtin/add.c:375 #, c-format msgid "Maybe you wanted to say 'git add .'?\n" msgstr "Potser volÃeu dir 'git add .'?\n" -#: 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/add.c:380 builtin/check-ignore.c:172 builtin/checkout.c:279 +#: builtin/checkout.c:472 builtin/clean.c:914 builtin/commit.c:350 #: builtin/mv.c:131 builtin/reset.c:235 builtin/rm.c:298 -#: builtin/submodule--helper.c:240 +#: builtin/submodule--helper.c:244 msgid "index file corrupt" msgstr "fitxer d'Ãndex malmès" -#: builtin/add.c:454 builtin/apply.c:4784 builtin/mv.c:286 builtin/rm.c:431 -msgid "Unable to write new index file" -msgstr "no s'ha pogut escriure un fitxer d'Ãndex nou" - -#: builtin/am.c:257 builtin/commit.c:750 builtin/merge.c:1032 -#, c-format -msgid "could not read '%s'" -msgstr "no s'ha pogut llegir '%s'" - -#: builtin/am.c:426 +#: builtin/am.c:414 msgid "could not parse author script" msgstr "no s'ha pogut analitzar l'script d'autor" -#: builtin/am.c:503 +#: builtin/am.c:491 #, c-format msgid "'%s' was deleted by the applypatch-msg hook" msgstr "s'ha suprimit '%s' pel ganxo applypatch-msg" -#: builtin/am.c:544 builtin/notes.c:301 +#: builtin/am.c:532 #, c-format msgid "Malformed input line: '%s'." msgstr "LÃnia d'entrada mal formada: '%s'." -#: builtin/am.c:581 builtin/notes.c:316 +#: builtin/am.c:569 #, c-format msgid "Failed to copy notes from '%s' to '%s'" msgstr "S'ha fallat en copiar les notes de '%s' a '%s'" -#: builtin/am.c:607 +#: builtin/am.c:595 msgid "fseek failed" msgstr "fseek ha fallat" -#: builtin/am.c:787 +#: builtin/am.c:775 #, c-format msgid "could not parse patch '%s'" msgstr "no s'ha pogut analitzar el pedaç '%s'" -#: builtin/am.c:852 +#: builtin/am.c:840 msgid "Only one StGIT patch series can be applied at once" msgstr "només una sèrie de pedaços StGIT es pot aplicar a la vegada" -#: builtin/am.c:899 +#: builtin/am.c:887 msgid "invalid timestamp" msgstr "marca de temps no và lida" -#: builtin/am.c:902 builtin/am.c:910 +#: builtin/am.c:890 builtin/am.c:898 msgid "invalid Date line" msgstr "lÃnia Date no và lida" -#: builtin/am.c:907 +#: builtin/am.c:895 msgid "invalid timezone offset" msgstr "desplaçament de zona de temps no và lid" -#: builtin/am.c:996 +#: builtin/am.c:984 msgid "Patch format detection failed." msgstr "La detecció de format de pedaç ha fallat." -#: builtin/am.c:1001 builtin/clone.c:380 +#: builtin/am.c:989 builtin/clone.c:379 #, c-format msgid "failed to create directory '%s'" msgstr "s'ha fallat en crear el directori '%s'" -#: builtin/am.c:1005 +#: builtin/am.c:993 msgid "Failed to split patches." msgstr "S'ha fallat en dividir els pedaços." -#: builtin/am.c:1137 builtin/commit.c:366 +#: builtin/am.c:1125 builtin/commit.c:376 msgid "unable to write index file" msgstr "no s'ha pogut escriure el fitxer d'Ãndex" -#: builtin/am.c:1188 +#: builtin/am.c:1176 #, c-format msgid "When you have resolved this problem, run \"%s --continue\"." msgstr "Quan hà giu resolt aquest problema, executeu \"%s --continue\"." -#: builtin/am.c:1189 +#: builtin/am.c:1177 #, c-format msgid "If you prefer to skip this patch, run \"%s --skip\" instead." msgstr "" "Si preferiu saltar aquest pedaç, executeu \"%s --skip\" en lloc d'això." -#: builtin/am.c:1190 +#: builtin/am.c:1178 #, c-format msgid "To restore the original branch and stop patching, run \"%s --abort\"." msgstr "" "Per a restaurar la branca original i deixar d'apedaçar, executeu \"%s --abort" "\"." -#: builtin/am.c:1328 +#: builtin/am.c:1316 msgid "Patch is empty. Was it split wrong?" msgstr "El pedaç és buit. S'ha dividit malament?" -#: builtin/am.c:1402 builtin/log.c:1543 +#: builtin/am.c:1390 builtin/log.c:1550 #, c-format msgid "invalid ident line: %s" msgstr "lÃnia d'identitat no và lida: %s" -#: builtin/am.c:1429 +#: builtin/am.c:1417 #, c-format msgid "unable to parse commit %s" msgstr "no s'ha pogut analitzar la comissió %s" -#: builtin/am.c:1602 +#: builtin/am.c:1610 msgid "Repository lacks necessary blobs to fall back on 3-way merge." msgstr "" "Al dipòsit li manquen els blobs necessaris per a retrocedir a una fusió de 3 " "vies." -#: builtin/am.c:1604 +#: builtin/am.c:1612 msgid "Using index info to reconstruct a base tree..." msgstr "S'està usant la informació d'Ãndex per a reconstruir un arbre base..." -#: builtin/am.c:1623 +#: builtin/am.c:1631 msgid "" "Did you hand edit your patch?\n" "It does not apply to blobs recorded in its index." @@ -3279,38 +4284,38 @@ msgstr "" "Heu editat el vostre pedaç a mà ?\n" "No s'aplica als blobs recordats en el seu Ãndex." -#: builtin/am.c:1629 +#: builtin/am.c:1637 msgid "Falling back to patching base and 3-way merge..." msgstr "S'està retrocedint a apedaçar la base i fusionar de 3 vies..." -#: builtin/am.c:1654 +#: builtin/am.c:1662 msgid "Failed to merge in the changes." msgstr "S'ha fallat en fusionar els canvis." -#: builtin/am.c:1679 builtin/merge.c:628 +#: builtin/am.c:1686 builtin/merge.c:628 msgid "git write-tree failed to write a tree" msgstr "git write-tree ha fallat en escriure un arbre" -#: builtin/am.c:1686 +#: builtin/am.c:1693 msgid "applying to an empty history" msgstr "s'està aplicant a una història buida" -#: builtin/am.c:1699 builtin/commit.c:1776 builtin/merge.c:798 +#: builtin/am.c:1706 builtin/commit.c:1769 builtin/merge.c:798 #: builtin/merge.c:823 msgid "failed to write commit object" msgstr "s'ha fallat en escriure l'objecte de comissió" -#: builtin/am.c:1731 builtin/am.c:1735 +#: builtin/am.c:1739 builtin/am.c:1743 #, c-format msgid "cannot resume: %s does not exist." msgstr "no es pot reprendre: %s no existeix." -#: builtin/am.c:1751 +#: builtin/am.c:1759 msgid "cannot be interactive without stdin connected to a terminal." msgstr "" -"no es pot ser interactiu sense que stdin sigui connectat a un terminal." +"no es pot ser interactiu sense que stdin estigui connectada a un terminal." -#: builtin/am.c:1756 +#: builtin/am.c:1764 msgid "Commit Body is:" msgstr "El cos de la comissió és:" @@ -3318,47 +4323,47 @@ msgstr "El cos de la comissió és:" #. in your translation. The program will only accept English #. input at this point. #. -#: builtin/am.c:1766 +#: builtin/am.c:1774 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: " msgstr "" "Voleu aplicar-lo? [y]es/[n]o/[e]dita/[v]isualitza el pedaç/[a]ccepta'ls " "tots: " -#: builtin/am.c:1816 +#: builtin/am.c:1824 #, c-format msgid "Dirty index: cannot apply patches (dirty: %s)" msgstr "Ãndex brut: no es pot aplicar pedaços (bruts: %s)" -#: builtin/am.c:1853 builtin/am.c:1925 +#: builtin/am.c:1861 builtin/am.c:1933 #, c-format msgid "Applying: %.*s" msgstr "S'està aplicant: %.*s" -#: builtin/am.c:1869 +#: builtin/am.c:1877 msgid "No changes -- Patch already applied." msgstr "Sense canvis -- El pedaç ja s'ha aplicat." -#: builtin/am.c:1877 +#: builtin/am.c:1885 #, c-format msgid "Patch failed at %s %.*s" msgstr "El pedaç ha fallat a %s %.*s" -#: builtin/am.c:1883 +#: builtin/am.c:1891 #, c-format msgid "The copy of the patch that failed is found in: %s" msgstr "La còpia del pedaç que ha fallat es troba en: %s" -#: builtin/am.c:1928 +#: builtin/am.c:1936 msgid "" "No changes - did you forget to use 'git add'?\n" "If there is nothing left to stage, chances are that something else\n" "already introduced the same changes; you might want to skip this patch." msgstr "" "Cap canvi - heu oblidat d'usar 'git add'?\n" -"Si no hi ha res a allistar, probablement alguna altra cosa\n" -"ja ha introduït els mateixos canvis; potser voleu ometre aquest pedaç." +"Si no hi ha res a allistar, probablement alguna altra cosa ja ha\n" +"introduït els mateixos canvis; potser voleu ometre aquest pedaç." -#: builtin/am.c:1935 +#: builtin/am.c:1943 msgid "" "You still have unmerged paths in your index.\n" "Did you forget to use 'git add'?" @@ -3366,174 +4371,153 @@ msgstr "" "Encara teniu camins sense fusionar en el vostre Ãndex.\n" "Heu oblidat d'usar 'git add'?" -#: builtin/am.c:2043 builtin/am.c:2047 builtin/am.c:2059 builtin/reset.c:308 +#: builtin/am.c:2051 builtin/am.c:2055 builtin/am.c:2067 builtin/reset.c:308 #: builtin/reset.c:316 #, c-format msgid "Could not parse object '%s'." msgstr "No s'ha pogut analitzar l'objecte '%s'." -#: builtin/am.c:2095 +#: builtin/am.c:2103 msgid "failed to clean index" msgstr "s'ha fallat en netejar l'Ãndex" -#: builtin/am.c:2129 +#: builtin/am.c:2137 msgid "" "You seem to have moved HEAD since the last 'am' failure.\n" "Not rewinding to ORIG_HEAD" msgstr "" "Sembla que heu mogut HEAD després de l'última fallada de 'am'.\n" -"No rebobinant a ORIG_HEAD" +"No s'està rebobinant a ORIG_HEAD" -#: builtin/am.c:2192 +#: builtin/am.c:2200 #, c-format msgid "Invalid value for --patch-format: %s" msgstr "Valor no và lid per a --patch-format: %s" -#: builtin/am.c:2225 -msgid "git am [<options>] [(<mbox>|<Maildir>)...]" -msgstr "git am [<opcions>] [(<bústia>|<directori-de-correu>)...]" +#: builtin/am.c:2233 +msgid "git am [<options>] [(<mbox> | <Maildir>)...]" +msgstr "git am [<opcions>] [(<bústia> | <directori-de-correu>)...]" -#: builtin/am.c:2226 +#: builtin/am.c:2234 msgid "git am [<options>] (--continue | --skip | --abort)" msgstr "git am [<opcions>] (--continue | --skip | --abort)" -#: builtin/am.c:2232 +#: builtin/am.c:2240 msgid "run interactively" msgstr "executa interactivament" -#: builtin/am.c:2234 +#: builtin/am.c:2242 msgid "historical option -- no-op" msgstr "opció històrica -- no-op" -#: builtin/am.c:2236 +#: builtin/am.c:2244 msgid "allow fall back on 3way merging if needed" msgstr "permet retrocedir a una fusió de 3 vies si és necessari" -#: builtin/am.c:2237 builtin/init-db.c:481 builtin/prune-packed.c:57 +#: builtin/am.c:2245 builtin/init-db.c:483 builtin/prune-packed.c:57 #: builtin/repack.c:172 msgid "be quiet" msgstr "calla" -#: builtin/am.c:2239 +#: builtin/am.c:2247 msgid "add a Signed-off-by line to the commit message" msgstr "afegeix una lÃnia Signed-off-by al missatge de comissió" -#: builtin/am.c:2242 +#: builtin/am.c:2250 msgid "recode into utf8 (default)" msgstr "recodifica en utf8 (per defecte)" -#: builtin/am.c:2244 +#: builtin/am.c:2252 msgid "pass -k flag to git-mailinfo" msgstr "passa la bandera -k al git-mailinfo" -#: builtin/am.c:2246 +#: builtin/am.c:2254 msgid "pass -b flag to git-mailinfo" msgstr "passa la bandera -b al git-mailinfo" -#: builtin/am.c:2248 +#: builtin/am.c:2256 msgid "pass -m flag to git-mailinfo" msgstr "passa la bandera -m al git-mailinfo" -#: builtin/am.c:2250 +#: builtin/am.c:2258 msgid "pass --keep-cr flag to git-mailsplit for mbox format" -msgstr "passa la bandera --keep-cr al git-mailsplit pel format mbox" +msgstr "passa la bandera --keep-cr al git-mailsplit per al format mbox" -#: builtin/am.c:2253 +#: builtin/am.c:2261 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr" msgstr "" "no passis la bandera --keep-cr al git-mailsplit independent de am.keepcr" -#: builtin/am.c:2256 +#: builtin/am.c:2264 msgid "strip everything before a scissors line" msgstr "despulla tot abans d'una lÃnia de tissores" -#: builtin/am.c:2257 builtin/apply.c:4837 -msgid "action" -msgstr "acció" - -#: 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 +#: builtin/am.c:2266 builtin/am.c:2269 builtin/am.c:2272 builtin/am.c:2275 +#: builtin/am.c:2278 builtin/am.c:2281 builtin/am.c:2284 builtin/am.c:2287 +#: builtin/am.c:2293 msgid "pass it through git-apply" msgstr "passa-ho a través del git-apply" -#: builtin/am.c:2266 builtin/apply.c:4861 -msgid "root" -msgstr "arrel" - -#: 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:402 builtin/submodule--helper.c:482 -#: builtin/submodule--helper.c:485 builtin/submodule--helper.c:823 -#: builtin/submodule--helper.c:826 -msgid "path" -msgstr "camÃ" - -#: 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/am.c:2283 builtin/fmt-merge-msg.c:662 builtin/fmt-merge-msg.c:665 +#: builtin/grep.c:707 builtin/merge.c:200 builtin/pull.c:135 builtin/pull.c:194 +#: builtin/repack.c:181 builtin/repack.c:185 builtin/show-branch.c:644 #: builtin/show-ref.c:175 builtin/tag.c:340 parse-options.h:132 -#: parse-options.h:134 parse-options.h:244 +#: parse-options.h:134 parse-options.h:245 msgid "n" msgstr "n" -#: builtin/am.c:2278 builtin/apply.c:4805 -msgid "num" -msgstr "número" - -#: builtin/am.c:2281 builtin/for-each-ref.c:37 builtin/replace.c:438 +#: builtin/am.c:2289 builtin/for-each-ref.c:37 builtin/replace.c:438 #: builtin/tag.c:372 msgid "format" msgstr "format" -#: builtin/am.c:2282 +#: builtin/am.c:2290 msgid "format the patch(es) are in" msgstr "el format en el qual estan els pedaços" -#: builtin/am.c:2288 +#: builtin/am.c:2296 msgid "override error message when patch failure occurs" msgstr "" "passa per alt el missatge d'error quan s'ocorre una fallada en apedaçar" -#: builtin/am.c:2290 +#: builtin/am.c:2298 msgid "continue applying patches after resolving a conflict" msgstr "segueix aplicant pedaços després de resoldre un conflicte" -#: builtin/am.c:2293 +#: builtin/am.c:2301 msgid "synonyms for --continue" msgstr "sinònims de --continue" -#: builtin/am.c:2296 +#: builtin/am.c:2304 msgid "skip the current patch" msgstr "salta el pedaç actual" -#: builtin/am.c:2299 +#: builtin/am.c:2307 msgid "restore the original branch and abort the patching operation." msgstr "restaura la branca original i avorta l'operació d'apedaçament." -#: builtin/am.c:2303 +#: builtin/am.c:2311 msgid "lie about committer date" msgstr "menteix sobre la data del comitent" -#: builtin/am.c:2305 +#: builtin/am.c:2313 msgid "use current timestamp for author date" msgstr "usa el marc de temps actual per la data d'autor" -#: builtin/am.c:2307 builtin/commit.c:1610 builtin/merge.c:229 -#: builtin/pull.c:164 builtin/revert.c:92 builtin/tag.c:355 +#: builtin/am.c:2315 builtin/commit.c:1605 builtin/merge.c:229 +#: builtin/pull.c:165 builtin/revert.c:92 builtin/tag.c:355 msgid "key-id" msgstr "ID de clau" -#: builtin/am.c:2308 +#: builtin/am.c:2316 msgid "GPG-sign commits" msgstr "signa les comissions amb GPG" -#: builtin/am.c:2311 +#: builtin/am.c:2319 msgid "(internal use for git-rebase)" msgstr "(ús intern per al git-rebase)" -#: builtin/am.c:2326 +#: builtin/am.c:2334 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." @@ -3541,517 +4525,34 @@ msgstr "" "Fa molt que l'opció -b/--binary no ha fet res, i\n" "s'eliminarà . Si us plau, no l'useu més." -#: builtin/am.c:2333 +#: builtin/am.c:2341 msgid "failed to read the index" msgstr "s'ha fallat en llegir l'Ãndex" -#: builtin/am.c:2348 +#: builtin/am.c:2356 #, c-format msgid "previous rebase directory %s still exists but mbox given." msgstr "" "un directori de rebasament anterior %s encara existeix però s'ha donat una " "bústia." -#: builtin/am.c:2372 +#: builtin/am.c:2380 #, c-format msgid "" "Stray %s directory found.\n" "Use \"git am --abort\" to remove it." msgstr "" -"Directori %s extraviat trobat.\n" +"S'ha trobat un directori %s extraviat.\n" "Useu \"git am --abort\" per a eliminar-lo." -#: builtin/am.c:2378 +#: builtin/am.c:2386 msgid "Resolve operation not in progress, we are not resuming." -msgstr "Operació de resolució no en curs; no reprenem." +msgstr "Una operació de resolució no està en curs; no reprenem." -#: builtin/apply.c:122 +#: builtin/apply.c:8 msgid "git apply [<options>] [<patch>...]" msgstr "git apply [<opcions>] [<pedaç>...]" -#: builtin/apply.c:153 -#, c-format -msgid "unrecognized whitespace option '%s'" -msgstr "opció d'espai en blanc '%s' no reconeguda" - -#: builtin/apply.c:169 -#, c-format -msgid "unrecognized whitespace ignore option '%s'" -msgstr "opció d'ignoral d'espai en blanc '%s' no reconeguda" - -#: builtin/apply.c:854 -#, c-format -msgid "Cannot prepare timestamp regexp %s" -msgstr "No es pot preparar l'expressió regular de marca de temps %s" - -#: builtin/apply.c:863 -#, c-format -msgid "regexec returned %d for input: %s" -msgstr "regexec ha retornat %d per l'entrada: %s" - -#: builtin/apply.c:947 -#, c-format -msgid "unable to find filename in patch at line %d" -msgstr "no s'ha pogut trobar el nom de fitxer en el pedaç a la lÃnia %d" - -#: 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 dolent - /dev/null esperat, %s rebut en la lÃnia %d" - -#: builtin/apply.c:989 -#, c-format -msgid "git apply: bad git-diff - inconsistent new filename on line %d" -msgstr "" -"git apply: git-diff dolent - nom de fitxer nou inconsistent en la lÃnia %d" - -#: builtin/apply.c:990 -#, c-format -msgid "git apply: bad git-diff - inconsistent old filename on line %d" -msgstr "" -"git apply: git-diff dolent - nom de fitxer antic inconsistent en la lÃnia %d" - -#: builtin/apply.c:995 -#, c-format -msgid "git apply: bad git-diff - expected /dev/null on line %d" -msgstr "git apply: git-diff dolent - /dev/null esperat en la lÃnia %d" - -#: builtin/apply.c:1489 -#, c-format -msgid "recount: unexpected line: %.*s" -msgstr "recompte: lÃnia inesperada: %.*s" - -#: builtin/apply.c:1550 -#, c-format -msgid "patch fragment without header at line %d: %.*s" -msgstr "fragment de pedaç sense capçalera a la lÃnia %d: %.*s" - -#: builtin/apply.c:1567 -#, c-format -msgid "" -"git diff header lacks filename information when removing %d leading pathname " -"component (line %d)" -msgid_plural "" -"git diff header lacks filename information when removing %d leading pathname " -"components (line %d)" -msgstr[0] "" -"a la capçalera de git diff li manca informació de nom de fitxer en eliminar " -"%d component de nom de camà inicial (lÃnia %d)" -msgstr[1] "" -"a la capçalera de git diff li manca informació de nom de fitxer en eliminar " -"%d components de nom de camà inicial (lÃnia %d)" - -#: builtin/apply.c:1743 -msgid "new file depends on old contents" -msgstr "el fitxer nou depèn dels continguts antics" - -#: builtin/apply.c:1745 -msgid "deleted file still has contents" -msgstr "el fitxer suprimit encara té continguts" - -#: builtin/apply.c:1774 -#, c-format -msgid "corrupt patch at line %d" -msgstr "el pedaç és malmès a la lÃnia %d" - -#: builtin/apply.c:1810 -#, c-format -msgid "new file %s depends on old contents" -msgstr "el fitxer nou %s depèn dels continguts antics" - -#: builtin/apply.c:1812 -#, c-format -msgid "deleted file %s still has contents" -msgstr "el fitxer suprimit %s encara té continguts" - -#: builtin/apply.c:1815 -#, c-format -msgid "** warning: file %s becomes empty but is not deleted" -msgstr "** advertència: el fitxer %s queda buit però no se suprimeix" - -#: builtin/apply.c:1962 -#, c-format -msgid "corrupt binary patch at line %d: %.*s" -msgstr "pedaç binari malmès a la lÃnia %d: %.*s" - -#: builtin/apply.c:1999 -#, c-format -msgid "unrecognized binary patch at line %d" -msgstr "pedaç binari no reconegut a la lÃnia %d" - -#: builtin/apply.c:2154 -#, c-format -msgid "patch with only garbage at line %d" -msgstr "pedaç amb només escombraries a la lÃnia %d" - -#: builtin/apply.c:2244 -#, c-format -msgid "unable to read symlink %s" -msgstr "no s'ha pogut llegir l'enllaç simbòlic %s" - -#: builtin/apply.c:2248 -#, c-format -msgid "unable to open or read %s" -msgstr "no s'ha pogut obrir o llegir %s" - -#: builtin/apply.c:2901 -#, c-format -msgid "invalid start of line: '%c'" -msgstr "inici de lÃnia no và lid: '%c'" - -#: 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] "El tros #%d ha tingut èxit a %d (desplaçament %d lÃnia)." -msgstr[1] "El tros #%d ha tingut èxit a %d (desplaçament %d lÃnies)." - -#: builtin/apply.c:3032 -#, c-format -msgid "Context reduced to (%ld/%ld) to apply fragment at %d" -msgstr "El context s'ha reduït a (%ld/%ld) per a aplicar el fragment a %d" - -#: builtin/apply.c:3038 -#, c-format -msgid "" -"while searching for:\n" -"%.*s" -msgstr "" -"tot cercant:\n" -"%.*s" - -#: builtin/apply.c:3060 -#, c-format -msgid "missing binary patch data for '%s'" -msgstr "manquen les dades de pedaç binari de '%s'" - -#: builtin/apply.c:3163 -#, c-format -msgid "binary patch does not apply to '%s'" -msgstr "el pedaç binari no s'aplica a '%s'" - -#: builtin/apply.c:3169 -#, c-format -msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)" -msgstr "" -"el pedaç binari a '%s' crea un resultat incorrecte (esperant %s, %s rebut)" - -#: builtin/apply.c:3190 -#, c-format -msgid "patch failed: %s:%ld" -msgstr "el pedaç ha fallat: %s:%ld" - -#: builtin/apply.c:3314 -#, c-format -msgid "cannot checkout %s" -msgstr "no es pot agafar %s" - -#: builtin/apply.c:3370 -#, c-format -msgid "reading from '%s' beyond a symbolic link" -msgstr "s'està llegint de '%s' més enllà d'un enllaç simbòlic" - -#: builtin/apply.c:3399 builtin/apply.c:3630 -#, c-format -msgid "path %s has been renamed/deleted" -msgstr "el camà %s s'ha canviat de nom / s'ha suprimit" - -#: builtin/apply.c:3482 builtin/apply.c:3644 -#, c-format -msgid "%s: does not exist in index" -msgstr "%s: no existeix en l'Ãndex" - -#: builtin/apply.c:3486 builtin/apply.c:3636 builtin/apply.c:3658 -#, c-format -msgid "%s: %s" -msgstr "%s: %s" - -#: builtin/apply.c:3491 builtin/apply.c:3652 -#, c-format -msgid "%s: does not match index" -msgstr "%s: no coincideix amb l'Ãndex" - -#: builtin/apply.c:3597 -msgid "removal patch leaves file contents" -msgstr "el pedaç d'eliminació deixa els continguts dels fitxers" - -#: builtin/apply.c:3669 -#, c-format -msgid "%s: wrong type" -msgstr "%s: tipus erroni" - -#: builtin/apply.c:3671 -#, c-format -msgid "%s has type %o, expected %o" -msgstr "%s és del tipus %o, s'esperava %o" - -#: builtin/apply.c:3822 builtin/apply.c:3824 -#, c-format -msgid "invalid path '%s'" -msgstr "camà no và lid: %s" - -#: builtin/apply.c:3879 -#, c-format -msgid "%s: already exists in index" -msgstr "%s: ja existeix en l'Ãndex" - -#: builtin/apply.c:3882 -#, c-format -msgid "%s: already exists in working directory" -msgstr "%s: ja existeix en el directori de treball" - -#: builtin/apply.c:3902 -#, c-format -msgid "new mode (%o) of %s does not match old mode (%o)" -msgstr "el mode nou (%o) de %s no coincideix amb el mode antic (%o)" - -#: builtin/apply.c:3907 -#, c-format -msgid "new mode (%o) of %s does not match old mode (%o) of %s" -msgstr "el mode nou (%o) de %s no coincideix amb el mode antic (%o) de %s" - -#: builtin/apply.c:3927 -#, c-format -msgid "affected file '%s' is beyond a symbolic link" -msgstr "el fitxer afectat '%s' és més enllà d'un enllaç simbòlic" - -#: builtin/apply.c:3931 -#, c-format -msgid "%s: patch does not apply" -msgstr "%s: el pedaç no s'aplica" - -#: builtin/apply.c:3945 -#, c-format -msgid "Checking patch %s..." -msgstr "S'està comprovant el pedaç %s..." - -#: builtin/apply.c:4038 builtin/checkout.c:233 builtin/reset.c:135 -#, c-format -msgid "make_cache_entry failed for path '%s'" -msgstr "make_cache_entry ha fallat per al camà '%s'" - -#: builtin/apply.c:4182 -#, c-format -msgid "unable to remove %s from index" -msgstr "no s'ha pogut eliminar %s de l'Ãndex" - -#: builtin/apply.c:4215 -#, c-format -msgid "corrupt patch for submodule %s" -msgstr "pedaç malmès per al submòdul %s" - -#: builtin/apply.c:4219 -#, c-format -msgid "unable to stat newly created file '%s'" -msgstr "no s'ha pogut fer stat al fitxer novament creat '%s'" - -#: builtin/apply.c:4224 -#, c-format -msgid "unable to create backing store for newly created file %s" -msgstr "" -"no s'ha pogut crear un magatzem de recolzament per al fitxer novament creat " -"%s" - -#: builtin/apply.c:4227 builtin/apply.c:4340 -#, c-format -msgid "unable to add cache entry for %s" -msgstr "no s'ha pogut afegir una entrada de cau per a %s" - -#: builtin/apply.c:4260 -#, c-format -msgid "closing file '%s'" -msgstr "s'està tancant el fitxer '%s'" - -#: builtin/apply.c:4313 -#, c-format -msgid "unable to write file '%s' mode %o" -msgstr "no s'ha pogut escriure el fitxer '%s' mode %o" - -#: builtin/apply.c:4403 -#, c-format -msgid "Applied patch %s cleanly." -msgstr "El pedaç %s s'ha aplicat netament." - -#: builtin/apply.c:4411 -msgid "internal error" -msgstr "error intern" - -#: builtin/apply.c:4414 -#, c-format -msgid "Applying patch %%s with %d reject..." -msgid_plural "Applying patch %%s with %d rejects..." -msgstr[0] "S'està aplicant el pedaç %%s amb %d rebuig..." -msgstr[1] "S'està aplicant el pedaç %%s amb %d rebuitjos..." - -#: builtin/apply.c:4424 -#, c-format -msgid "truncating .rej filename to %.*s.rej" -msgstr "s'està truncant el nom del fitxer .rej a %.*s.rej" - -#: builtin/apply.c:4432 -#, c-format -msgid "cannot open %s: %s" -msgstr "no es pot obrir %s: %s" - -#: builtin/apply.c:4445 -#, c-format -msgid "Hunk #%d applied cleanly." -msgstr "El tros #%d s'ha aplicat netament." - -#: builtin/apply.c:4448 -#, c-format -msgid "Rejected hunk #%d." -msgstr "S'ha rebutjat el tros #%d." - -#: builtin/apply.c:4537 -#, c-format -msgid "Skipped patch '%s'." -msgstr "S'ha saltat el pedaç '%s'." - -#: builtin/apply.c:4545 -msgid "unrecognized input" -msgstr "entrada no reconeguda" - -#: builtin/apply.c:4556 -msgid "unable to read index file" -msgstr "no es pot llegir el fitxer d'Ãndex" - -#: builtin/apply.c:4701 -msgid "--3way outside a repository" -msgstr "--3way fora d'un dipòsit" - -#: builtin/apply.c:4709 -msgid "--index outside a repository" -msgstr "--index fora d'un dipòsit" - -#: builtin/apply.c:4712 -msgid "--cached outside a repository" -msgstr "--cached fora d'un dipòsit" - -#: builtin/apply.c:4745 -#, c-format -msgid "can't open patch '%s'" -msgstr "no es pot obrir el pedaç '%s'" - -#: builtin/apply.c:4760 -#, c-format -msgid "squelched %d whitespace error" -msgid_plural "squelched %d whitespace errors" -msgstr[0] "s'ha omès %d error d'espai en blanc" -msgstr[1] "s'han omès %d errors d'espai en blanc" - -#: 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 lÃnia afegeix errors d'espai en blanc." -msgstr[1] "%d lÃnies afegeixen errors d'espai en blanc." - -#: builtin/apply.c:4800 -msgid "don't apply changes matching the given path" -msgstr "no apliquis els canvis que coincideixin amb el camà donat" - -#: builtin/apply.c:4803 -msgid "apply changes matching the given path" -msgstr "aplica els canvis que coincideixin amb el camà donat" - -#: builtin/apply.c:4806 -msgid "remove <num> leading slashes from traditional diff paths" -msgstr "" -"elimina <nombre> barres obliqües inicials dels camins de diferència " -"tradicionals" - -#: builtin/apply.c:4809 -msgid "ignore additions made by the patch" -msgstr "ignora afegiments fets pel pedaç" - -#: builtin/apply.c:4811 -msgid "instead of applying the patch, output diffstat for the input" -msgstr "" -"en lloc d'aplicar el pedaç, emet les estadÃstiques de diferència de l'entrada" - -#: builtin/apply.c:4815 -msgid "show number of added and deleted lines in decimal notation" -msgstr "mostra el nombre de lÃnies afegides i suprimides en notació decimal" - -#: builtin/apply.c:4817 -msgid "instead of applying the patch, output a summary for the input" -msgstr "en lloc d'aplicar el pedaç, emet un resum de l'entrada" - -#: builtin/apply.c:4819 -msgid "instead of applying the patch, see if the patch is applicable" -msgstr "en lloc d'aplicar el pedaç, veges si el pedaç és aplicable" - -#: builtin/apply.c:4821 -msgid "make sure the patch is applicable to the current index" -msgstr "assegura que el pedaç sigui aplicable a l'Ãndex actual" - -#: builtin/apply.c:4823 -msgid "apply a patch without touching the working tree" -msgstr "aplica un pedaç sense tocar l'arbre de treball" - -#: builtin/apply.c:4825 -msgid "accept a patch that touches outside the working area" -msgstr "accepta un pedaç que toqui fora de l'à rea de treball" - -#: builtin/apply.c:4827 -msgid "also apply the patch (use with --stat/--summary/--check)" -msgstr "aplica el pedaç també (useu amb --stat/--summary/--check)" - -#: builtin/apply.c:4829 -msgid "attempt three-way merge if a patch does not apply" -msgstr "intenta una fusió de tres vies si el pedaç no s'aplica" - -#: builtin/apply.c:4831 -msgid "build a temporary index based on embedded index information" -msgstr "construeix un Ãndex temporal basat en la informació d'Ãndex incrustada" - -#: builtin/apply.c:4834 builtin/checkout-index.c:169 builtin/ls-files.c:426 -msgid "paths are separated with NUL character" -msgstr "els camins se separen amb el carà cter NUL" - -#: builtin/apply.c:4836 -msgid "ensure at least <n> lines of context match" -msgstr "assegura't que almenys <n> lÃnies de context coincideixin" - -#: builtin/apply.c:4838 -msgid "detect new or modified lines that have whitespace errors" -msgstr "" -"detecta les lÃnies noves o modificades que tinguin errors d'espai en blanc" - -#: builtin/apply.c:4841 builtin/apply.c:4844 -msgid "ignore changes in whitespace when finding context" -msgstr "ignora els canvis d'espai en blanc en cercar context" - -#: builtin/apply.c:4847 -msgid "apply the patch in reverse" -msgstr "aplica el pedaç al revés" - -#: builtin/apply.c:4849 -msgid "don't expect at least one line of context" -msgstr "no esperis almenys una lÃnia de context" - -#: builtin/apply.c:4851 -msgid "leave the rejected hunks in corresponding *.rej files" -msgstr "deixa els trossos rebutjats en fitxers *.reg coresspondents" - -#: builtin/apply.c:4853 -msgid "allow overlapping hunks" -msgstr "permet trossos encavalcants" - -#: builtin/apply.c:4856 -msgid "tolerate incorrectly detected missing new-line at the end of file" -msgstr "tolera una lÃnia nova incorrectament detectada al final del fitxer" - -#: builtin/apply.c:4859 -msgid "do not trust the line counts in the hunk headers" -msgstr "no confiïs en els recomptes de lÃnia en les capçaleres dels trossos" - -#: builtin/apply.c:4862 -msgid "prepend <root> to all filenames" -msgstr "anteposa <arrel> a tots els noms de fitxer" - #: builtin/archive.c:17 #, c-format msgid "could not create archive file '%s'" @@ -4111,118 +4612,172 @@ msgstr "es documenten les <opcions-de-revisió> en git-rev-list(1)" msgid "Blaming lines" msgstr "S'estan culpant les lÃnies" -#: builtin/blame.c:2536 +#: builtin/blame.c:2577 msgid "Show blame entries as we find them, incrementally" msgstr "Mostra les entrades de culpa mentre les trobem, incrementalment" -#: builtin/blame.c:2537 +#: builtin/blame.c:2578 msgid "Show blank SHA-1 for boundary commits (Default: off)" msgstr "" "Mostra un SHA-1 en blanc per les comissions de frontera (Per defecte: " "desactivat)" -#: builtin/blame.c:2538 +#: builtin/blame.c:2579 msgid "Do not treat root commits as boundaries (Default: off)" msgstr "" "No tractis les comissions d'arrel com a lÃmits (Per defecte: desactivat)" -#: builtin/blame.c:2539 +#: builtin/blame.c:2580 msgid "Show work cost statistics" msgstr "Mostra les estadÃstiques de preu de treball" -#: builtin/blame.c:2540 +#: builtin/blame.c:2581 msgid "Force progress reporting" msgstr "Força l'informe de progrés" -#: builtin/blame.c:2541 +#: builtin/blame.c:2582 msgid "Show output score for blame entries" msgstr "Mostra la puntuació de sortida de les entrades de culpa" -#: builtin/blame.c:2542 +#: builtin/blame.c:2583 msgid "Show original filename (Default: auto)" msgstr "Mostra el nom de fitxer original (Per defecte: automà tic)" -#: builtin/blame.c:2543 +#: builtin/blame.c:2584 msgid "Show original linenumber (Default: off)" msgstr "Mostra el número de lÃnia original (Per defecte: desactivat)" -#: builtin/blame.c:2544 +#: builtin/blame.c:2585 msgid "Show in a format designed for machine consumption" msgstr "Presenta en un format dissenyat per consumpció per mà quina" -#: builtin/blame.c:2545 +#: builtin/blame.c:2586 msgid "Show porcelain format with per-line commit information" msgstr "Mostra el format de porcellana amb informació de comissió per lÃnia" -#: builtin/blame.c:2546 +#: builtin/blame.c:2587 msgid "Use the same output mode as git-annotate (Default: off)" msgstr "" "Usa el mateix mode de sortida que git-annotate (Per defecte: desactivat)" -#: builtin/blame.c:2547 +#: builtin/blame.c:2588 msgid "Show raw timestamp (Default: off)" msgstr "Mostra la marca de temps crua (Per defecte: desactivat)" -#: builtin/blame.c:2548 +#: builtin/blame.c:2589 msgid "Show long commit SHA1 (Default: off)" msgstr "Mostra l'SHA1 de comissió llarg (Per defecte: desactivat)" -#: builtin/blame.c:2549 +#: builtin/blame.c:2590 msgid "Suppress author name and timestamp (Default: off)" msgstr "Omet el nom d'autor i la marca de temps (Per defecte: desactivat)" -#: builtin/blame.c:2550 +#: builtin/blame.c:2591 msgid "Show author email instead of name (Default: off)" msgstr "" "Mostra l'adreça de correu electrònic de l'autor en lloc del nom (Per " "defecte: desactivat)" -#: builtin/blame.c:2551 +#: builtin/blame.c:2592 msgid "Ignore whitespace differences" msgstr "Ignora les diferències d'espai en blanc" -#: builtin/blame.c:2552 +#: builtin/blame.c:2599 +msgid "Use an experimental indent-based heuristic to improve diffs" +msgstr "" +"Usa un heurÃstic experimental basat en sagnat per a millorar les diferències" + +#: builtin/blame.c:2600 +msgid "Use an experimental blank-line-based heuristic to improve diffs" +msgstr "" +"Usa un heurÃstic experimental basat en lÃnies en blanc per a millorar les " +"diferències" + +#: builtin/blame.c:2602 msgid "Spend extra cycles to find better match" msgstr "Gasta cicles extres per a trobar una coincidència millor" -#: builtin/blame.c:2553 +#: builtin/blame.c:2603 msgid "Use revisions from <file> instead of calling git-rev-list" msgstr "Usa les revisions de <fitxer> en lloc d'invocar git-rev-list" -#: builtin/blame.c:2554 +#: builtin/blame.c:2604 msgid "Use <file>'s contents as the final image" msgstr "Usa els continguts de <fitxer> com a la imatge final" -#: builtin/blame.c:2555 builtin/blame.c:2556 +#: builtin/blame.c:2605 builtin/blame.c:2606 msgid "score" msgstr "puntuació" -#: builtin/blame.c:2555 +#: builtin/blame.c:2605 msgid "Find line copies within and across files" msgstr "Troba còpies de lÃnia dins i a través dels fitxers" -#: builtin/blame.c:2556 +#: builtin/blame.c:2606 msgid "Find line movements within and across files" msgstr "Troba moviments de lÃnia dins i a través dels fitxers" -#: builtin/blame.c:2557 +#: builtin/blame.c:2607 msgid "n,m" msgstr "n,m" -#: builtin/blame.c:2557 +#: builtin/blame.c:2607 msgid "Process only line range n,m, counting from 1" msgstr "Processa només el rang de lÃnies n,m, comptant des d'1" +#: builtin/blame.c:2654 +msgid "--progress can't be used with --incremental or porcelain formats" +msgstr "" +"no es pot usar --progress amb els formats --incremental o de porcellana" + #. TRANSLATORS: This string is used to tell us the maximum #. display width for a relative timestamp in "git blame" #. output. For C locale, "4 years, 11 months ago", which #. 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:2649 +#: builtin/blame.c:2700 msgid "4 years, 11 months ago" msgstr "fa 4 anys i 11 mesos" +#: builtin/blame.c:2780 +msgid "--contents and --reverse do not blend well." +msgstr "--contents i --reverse no es jutgen bé." + +#: builtin/blame.c:2800 +msgid "cannot use --contents with final commit object name" +msgstr "no es pot usar --contents amb el nom d'objecte de la comissió final" + +#: builtin/blame.c:2805 +msgid "--reverse and --first-parent together require specified latest commit" +msgstr "" +"--reverse i --first-parent-together requereixen una última comissió " +"especificada" + +#: builtin/blame.c:2832 +msgid "" +"--reverse --first-parent together require range along first-parent chain" +msgstr "" +"--reverse --first-parent junts requereixen un rang de la cadena de mares " +"primeres" + +#: builtin/blame.c:2843 +#, c-format +msgid "no such path %s in %s" +msgstr "no hi ha tal camà %s en %s" + +#: builtin/blame.c:2854 +#, c-format +msgid "cannot read blob %s for path %s" +msgstr "no es pot llegir el blob %s per al camà %s" + +#: builtin/blame.c:2873 +#, c-format +msgid "file %s has only %lu line" +msgid_plural "file %s has only %lu lines" +msgstr[0] "el fitxer %s té només %lu lÃnia" +msgstr[1] "el fitxer %s té només %lu lÃnies" + #: builtin/branch.c:26 msgid "git branch [<options>] [-r | -a] [--merged | --no-merged]" msgstr "git branch [<opcions>] [-r | -a] [--merged | --no-merged]" @@ -4474,6 +5029,10 @@ msgstr "font" msgid "change the upstream info" msgstr "canvia la informació de font" +#: builtin/branch.c:660 +msgid "Unset the upstream info" +msgstr "Desestableix la informació de font" + #: builtin/branch.c:661 msgid "use colored output" msgstr "usa sortida colorada" @@ -4546,8 +5105,8 @@ msgstr "clau" msgid "field name to sort on" msgstr "nom del camp en el qual ordenar" -#: 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/branch.c:686 builtin/for-each-ref.c:41 builtin/notes.c:404 +#: builtin/notes.c:407 builtin/notes.c:567 builtin/notes.c:570 #: builtin/tag.c:369 msgid "object" msgstr "objecte" @@ -4560,7 +5119,7 @@ msgstr "imprimeix només les branques de l'objecte" msgid "Failed to resolve HEAD as a valid ref." msgstr "S'ha fallat en resoldre HEAD com a referència và lida." -#: builtin/branch.c:709 builtin/clone.c:707 +#: builtin/branch.c:709 builtin/clone.c:706 msgid "HEAD not found below refs/heads!" msgstr "HEAD no trobat sota refs/heads!" @@ -4671,65 +5230,82 @@ msgstr "Cal un dipòsit per a fer un farcell." msgid "Need a repository to unbundle." msgstr "Cal un dipòsit per a desfer un farcell." -#: builtin/cat-file.c:443 +#: builtin/cat-file.c:513 msgid "" -"git cat-file (-t [--allow-unknown-type]|-s [--allow-unknown-type]|-e|-p|" -"<type>|--textconv) <object>" +"git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -" +"p | <type> | --textconv | --filters) [--path=<path>] <object>" msgstr "" -"git cat-file (-t [--allow-unknown-type]|-s [--allow-unknown-type]|-e|-p|" -"<tipus>|--textconv) <objecte>" +"git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -" +"p | <tipus> | --textconv | --filters [--path=<camÃ>]) <objecte>" -#: 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:514 +msgid "" +"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --" +"filters]" +msgstr "" +"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --" +"filters]" -#: builtin/cat-file.c:481 +#: builtin/cat-file.c:551 msgid "<type> can be one of: blob, tree, commit, tag" msgstr "<tipus> pot ser un de: blob, tree, commit, tag" -#: builtin/cat-file.c:482 +#: builtin/cat-file.c:552 msgid "show object type" msgstr "mostra el tipus de l'objecte" -#: builtin/cat-file.c:483 +#: builtin/cat-file.c:553 msgid "show object size" msgstr "mostra la mida de l'objecte" -#: builtin/cat-file.c:485 +#: builtin/cat-file.c:555 msgid "exit with zero when there's no error" msgstr "surt amb zero quan no hi ha error" -#: builtin/cat-file.c:486 +#: builtin/cat-file.c:556 msgid "pretty-print object's content" msgstr "imprimeix bellament el contingut de l'objecte" -#: builtin/cat-file.c:488 +#: builtin/cat-file.c:558 msgid "for blob objects, run textconv on object's content" msgstr "en els objectes de blob, executa textconv en el contingut de l'objecte" -#: builtin/cat-file.c:490 +#: builtin/cat-file.c:560 +msgid "for blob objects, run filters on object's content" +msgstr "" +"en els objectes de blob, executa els filtres en el contingut de l'objecte" + +#: builtin/cat-file.c:561 git-submodule.sh:923 +msgid "blob" +msgstr "blob" + +#: builtin/cat-file.c:562 +msgid "use a specific path for --textconv/--filters" +msgstr "usa un camà especìfic per a --textconv/--filters" + +#: builtin/cat-file.c:564 msgid "allow -s and -t to work with broken/corrupt objects" msgstr "permet que -s i -t funcionin amb objectes trencats/malmesos" -#: builtin/cat-file.c:491 +#: builtin/cat-file.c:565 msgid "buffer --batch output" msgstr "posa la sortida de --batch en memòria intermèdia" -#: builtin/cat-file.c:493 +#: builtin/cat-file.c:567 msgid "show info and content of objects fed from the standard input" msgstr "" "mostra la informació i contingut dels objectes rebuts de l'entrada està ndard" -#: builtin/cat-file.c:496 +#: builtin/cat-file.c:570 msgid "show info about objects fed from the standard input" msgstr "mostra informació sobre els objectes rebuts de l'entrada està ndard" -#: builtin/cat-file.c:499 +#: builtin/cat-file.c:573 msgid "follow in-tree symlinks (used with --batch or --batch-check)" msgstr "" "segueix els enllaços simbòlics en l'arbre (s'usa amb --batch o --batch-check)" -#: builtin/cat-file.c:501 +#: builtin/cat-file.c:575 msgid "show all objects with --batch or --batch-check" msgstr "mostra tots els objectes amb --batch o --batch-check" @@ -4749,7 +5325,7 @@ msgstr "informa de tots els atributs establerts en el fitxer" msgid "use .gitattributes only from the index" msgstr "usa .gitattributes només des de l'Ãndex" -#: builtin/check-attr.c:21 builtin/check-ignore.c:22 builtin/hash-object.c:97 +#: builtin/check-attr.c:21 builtin/check-ignore.c:22 builtin/hash-object.c:98 msgid "read file names from stdin" msgstr "llegeix els noms de fitxer d'stdin" @@ -4757,7 +5333,7 @@ msgstr "llegeix els noms de fitxer d'stdin" msgid "terminate input and output records by a NUL character" msgstr "acaba els registres d'entrada i de sortida amb un carà cter NUL" -#: builtin/check-ignore.c:18 builtin/checkout.c:1138 builtin/gc.c:325 +#: builtin/check-ignore.c:18 builtin/checkout.c:1137 builtin/gc.c:325 msgid "suppress progress reporting" msgstr "omet el reportatge de progrés" @@ -4847,9 +5423,9 @@ msgid "write the content to temporary files" msgstr "escriu el contingut a fitxers temporals" #: builtin/checkout-index.c:174 builtin/column.c:30 -#: 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 +#: builtin/submodule--helper.c:595 builtin/submodule--helper.c:598 +#: builtin/submodule--helper.c:604 builtin/submodule--helper.c:951 +#: builtin/worktree.c:469 msgid "string" msgstr "cadena" @@ -4897,7 +5473,7 @@ msgstr "camà '%s': no es pot fusionar" #: builtin/checkout.c:230 #, c-format msgid "Unable to add merge result for '%s'" -msgstr "no s'ha pogut afegir el resultat de fusió per a '%s'" +msgstr "No s'ha pogut afegir el resultat de fusió per a '%s'" #: builtin/checkout.c:250 builtin/checkout.c:253 builtin/checkout.c:256 #: builtin/checkout.c:259 @@ -4921,54 +5497,54 @@ msgstr "" msgid "path '%s' is unmerged" msgstr "el camà '%s' està sense fusionar" -#: builtin/checkout.c:495 +#: builtin/checkout.c:494 msgid "you need to resolve your current index first" msgstr "heu de primer resoldre el vostre Ãndex actual" -#: builtin/checkout.c:625 +#: builtin/checkout.c:624 #, c-format msgid "Can not do reflog for '%s': %s\n" msgstr "No es pot fer reflog per a '%s': %s\n" -#: builtin/checkout.c:664 +#: builtin/checkout.c:663 msgid "HEAD is now at" msgstr "HEAD ara és a" -#: builtin/checkout.c:668 builtin/clone.c:661 +#: builtin/checkout.c:667 builtin/clone.c:660 msgid "unable to update HEAD" msgstr "no s'ha pogut actualitzar HEAD" -#: builtin/checkout.c:672 +#: builtin/checkout.c:671 #, c-format msgid "Reset branch '%s'\n" msgstr "Restableix la branca '%s'\n" -#: builtin/checkout.c:675 +#: builtin/checkout.c:674 #, c-format msgid "Already on '%s'\n" msgstr "Ja en '%s'\n" -#: builtin/checkout.c:679 +#: builtin/checkout.c:678 #, c-format msgid "Switched to and reset branch '%s'\n" msgstr "S'ha agafat i restablert la branca '%s'\n" -#: builtin/checkout.c:681 builtin/checkout.c:1070 +#: builtin/checkout.c:680 builtin/checkout.c:1069 #, c-format msgid "Switched to a new branch '%s'\n" msgstr "S'ha agafat la branca nova '%s'\n" -#: builtin/checkout.c:683 +#: builtin/checkout.c:682 #, c-format msgid "Switched to branch '%s'\n" msgstr "S'ha agafat la branca '%s'\n" -#: builtin/checkout.c:734 +#: builtin/checkout.c:733 #, c-format msgid " ... and %d more.\n" msgstr " ... i %d més.\n" -#: builtin/checkout.c:740 +#: builtin/checkout.c:739 #, c-format msgid "" "Warning: you are leaving %d commit behind, not connected to\n" @@ -4991,7 +5567,7 @@ msgstr[1] "" "\n" "%s\n" -#: builtin/checkout.c:759 +#: 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" @@ -5018,150 +5594,150 @@ msgstr[1] "" " git branch <nom-de-branca-nova> %s\n" "\n" -#: builtin/checkout.c:795 +#: builtin/checkout.c:794 msgid "internal error in revision walk" msgstr "error intern en el passeig per revisions" -#: builtin/checkout.c:799 +#: builtin/checkout.c:798 msgid "Previous HEAD position was" msgstr "La posició de HEAD anterior era" -#: builtin/checkout.c:826 builtin/checkout.c:1065 +#: builtin/checkout.c:825 builtin/checkout.c:1064 msgid "You are on a branch yet to be born" msgstr "Sou en una branca que encara ha de nà ixer" -#: builtin/checkout.c:971 +#: builtin/checkout.c:970 #, c-format msgid "only one reference expected, %d given." msgstr "s'esperava només una referència, s'han donat %d." -#: builtin/checkout.c:1011 builtin/worktree.c:214 +#: builtin/checkout.c:1010 builtin/worktree.c:214 #, c-format msgid "invalid reference: %s" msgstr "referència no và lida: %s" -#: builtin/checkout.c:1040 +#: builtin/checkout.c:1039 #, c-format msgid "reference is not a tree: %s" msgstr "la referència no és un arbre: %s" -#: builtin/checkout.c:1079 +#: builtin/checkout.c:1078 msgid "paths cannot be used with switching branches" msgstr "els camins no es poden usar amb canvi de branca" -#: builtin/checkout.c:1082 builtin/checkout.c:1086 +#: builtin/checkout.c:1081 builtin/checkout.c:1085 #, c-format msgid "'%s' cannot be used with switching branches" msgstr "'%s' no es pot usar amb canvi de branca" -#: builtin/checkout.c:1090 builtin/checkout.c:1093 builtin/checkout.c:1098 -#: builtin/checkout.c:1101 +#: 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' no es pot usar amb '%s'" -#: builtin/checkout.c:1106 +#: builtin/checkout.c:1105 #, c-format msgid "Cannot switch branch to a non-commit '%s'" msgstr "No es pot canviar la branca a la no comissió '%s'" -#: builtin/checkout.c:1139 builtin/checkout.c:1141 builtin/clone.c:88 +#: builtin/checkout.c:1138 builtin/checkout.c:1140 builtin/clone.c:93 #: builtin/remote.c:165 builtin/remote.c:167 builtin/worktree.c:324 #: builtin/worktree.c:326 msgid "branch" msgstr "branca" -#: builtin/checkout.c:1140 +#: builtin/checkout.c:1139 msgid "create and checkout a new branch" msgstr "crea i agafa una branca nova" -#: builtin/checkout.c:1142 +#: builtin/checkout.c:1141 msgid "create/reset and checkout a branch" msgstr "crea/restableix i agafa una branca" -#: builtin/checkout.c:1143 +#: builtin/checkout.c:1142 msgid "create reflog for new branch" msgstr "crea un registre de referència per a la branca nova" -#: builtin/checkout.c:1144 builtin/worktree.c:328 +#: builtin/checkout.c:1143 builtin/worktree.c:328 msgid "detach HEAD at named commit" msgstr "separa HEAD a la comissió anomenada" -#: builtin/checkout.c:1145 +#: builtin/checkout.c:1144 msgid "set upstream info for new branch" msgstr "estableix la informació de font de la branca nova" -#: builtin/checkout.c:1147 +#: builtin/checkout.c:1146 msgid "new-branch" msgstr "branca-nova" -#: builtin/checkout.c:1147 +#: builtin/checkout.c:1146 msgid "new unparented branch" msgstr "branca òrfena nova" -#: builtin/checkout.c:1148 +#: builtin/checkout.c:1147 msgid "checkout our version for unmerged files" msgstr "agafa la versió nostra dels fitxers sense fusionar" -#: builtin/checkout.c:1150 +#: builtin/checkout.c:1149 msgid "checkout their version for unmerged files" msgstr "agafa la versió seva dels fitxers sense fusionar" -#: builtin/checkout.c:1152 +#: builtin/checkout.c:1151 msgid "force checkout (throw away local modifications)" msgstr "agafa a la força (descarta qualsevulla modificació local)" -#: builtin/checkout.c:1153 +#: builtin/checkout.c:1152 msgid "perform a 3-way merge with the new branch" msgstr "realitza una fusió de 3 vies amb la branca nova" -#: builtin/checkout.c:1154 builtin/merge.c:231 +#: builtin/checkout.c:1153 builtin/merge.c:231 msgid "update ignored files (default)" msgstr "actualitza els fitxers ignorats (per defecte)" -#: builtin/checkout.c:1155 builtin/log.c:1459 parse-options.h:250 +#: builtin/checkout.c:1154 builtin/log.c:1466 parse-options.h:251 msgid "style" msgstr "estil" -#: builtin/checkout.c:1156 +#: builtin/checkout.c:1155 msgid "conflict style (merge or diff3)" msgstr "estil de conflicte (fusió o diff3)" -#: builtin/checkout.c:1159 +#: builtin/checkout.c:1158 msgid "do not limit pathspecs to sparse entries only" msgstr "no limitis les especificacions de camà només a entrades disperses" -#: builtin/checkout.c:1161 +#: builtin/checkout.c:1160 msgid "second guess 'git checkout <no-such-branch>'" msgstr "dubta 'git checkout <cap-branca-aixÃ>'" -#: builtin/checkout.c:1163 +#: builtin/checkout.c:1162 msgid "do not check if another worktree is holding the given ref" msgstr "no comprovis si altre arbre de treball té la referència donada" -#: 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/checkout.c:1163 builtin/clone.c:63 builtin/fetch.c:119 +#: builtin/merge.c:228 builtin/pull.c:117 builtin/push.c:536 #: builtin/send-pack.c:168 msgid "force progress reporting" msgstr "força l'informe de progrés" -#: builtin/checkout.c:1195 +#: builtin/checkout.c:1194 msgid "-b, -B and --orphan are mutually exclusive" msgstr "-b, -B i --orphan són mutualment exclusius" -#: builtin/checkout.c:1212 +#: builtin/checkout.c:1211 msgid "--track needs a branch name" msgstr "--track necessita un nom de branca" -#: builtin/checkout.c:1217 +#: builtin/checkout.c:1216 msgid "Missing branch name; try -b" msgstr "Manca el nom de branca; proveu -b" -#: builtin/checkout.c:1253 +#: builtin/checkout.c:1252 msgid "invalid path specification" msgstr "especificació de camà no và lida" -#: builtin/checkout.c:1260 +#: builtin/checkout.c:1259 #, c-format msgid "" "Cannot update paths and switch to branch '%s' at the same time.\n" @@ -5170,12 +5746,12 @@ msgstr "" "No es poden actualitzar els camins i canviar a la branca '%s' a la vegada.\n" "VolÃeu agafar '%s', la qual no es pot resoldre com a comissió?" -#: builtin/checkout.c:1265 +#: builtin/checkout.c:1264 #, c-format msgid "git checkout: --detach does not take a path argument '%s'" msgstr "git checkout: --detach no accepta un parà metre de camà '%s'" -#: builtin/checkout.c:1269 +#: builtin/checkout.c:1268 msgid "" "git checkout: --ours/--theirs, --force and --merge are incompatible when\n" "checking out of the index." @@ -5327,8 +5903,8 @@ msgstr "neteja interactiva" msgid "remove whole directories" msgstr "elimina directoris sencers" -#: builtin/clean.c:875 builtin/describe.c:407 builtin/grep.c:724 -#: builtin/ls-files.c:457 builtin/name-rev.c:314 builtin/show-ref.c:182 +#: builtin/clean.c:875 builtin/describe.c:407 builtin/grep.c:725 +#: builtin/ls-files.c:536 builtin/name-rev.c:313 builtin/show-ref.c:182 msgid "pattern" msgstr "patró" @@ -5368,112 +5944,129 @@ msgstr "" msgid "git clone [<options>] [--] <repo> [<dir>]" msgstr "git clone [<opcions>] [--] <dipòsit> [<directori>]" -#: builtin/clone.c:62 +#: builtin/clone.c:65 msgid "don't create a checkout" msgstr "no facis cap agafament" -#: builtin/clone.c:63 builtin/clone.c:65 builtin/init-db.c:476 +#: builtin/clone.c:66 builtin/clone.c:68 builtin/init-db.c:478 msgid "create a bare repository" msgstr "crea un dipòsit nu" -#: builtin/clone.c:67 +#: builtin/clone.c:70 msgid "create a mirror repository (implies bare)" msgstr "crea un dipòsit reflectit (implica bare)" -#: builtin/clone.c:69 +#: builtin/clone.c:72 msgid "to clone from a local repository" msgstr "per a clonar des d'un dipòsit local" -#: builtin/clone.c:71 +#: builtin/clone.c:74 msgid "don't use local hardlinks, always copy" msgstr "no usis enllaços durs locals, sempre copia" -#: builtin/clone.c:73 +#: builtin/clone.c:76 msgid "setup as shared repository" msgstr "configura com a dipòsit compartit" -#: builtin/clone.c:75 builtin/clone.c:77 +#: builtin/clone.c:78 builtin/clone.c:80 msgid "initialize submodules in the clone" msgstr "inicialitza els submòduls en el clon" -#: builtin/clone.c:79 +#: builtin/clone.c:82 msgid "number of submodules cloned in parallel" msgstr "nombre de submòduls clonats en paral·lel" -#: builtin/clone.c:80 builtin/init-db.c:473 +#: builtin/clone.c:83 builtin/init-db.c:475 msgid "template-directory" msgstr "directori-de-plantilla" -#: builtin/clone.c:81 builtin/init-db.c:474 +#: builtin/clone.c:84 builtin/init-db.c:476 msgid "directory from which templates will be used" msgstr "directori del qual les plantilles s'usaran" -#: builtin/clone.c:83 builtin/submodule--helper.c:495 -#: builtin/submodule--helper.c:833 +#: builtin/clone.c:86 builtin/clone.c:88 builtin/submodule--helper.c:602 +#: builtin/submodule--helper.c:954 msgid "reference repository" msgstr "dipòsit de referència" -#: builtin/clone.c:85 +#: builtin/clone.c:90 msgid "use --reference only while cloning" msgstr "usa --reference només en clonar" -#: builtin/clone.c:86 builtin/column.c:26 builtin/merge-file.c:44 +#: builtin/clone.c:91 builtin/column.c:26 builtin/merge-file.c:44 msgid "name" msgstr "nom" -#: builtin/clone.c:87 +#: builtin/clone.c:92 msgid "use <name> instead of 'origin' to track upstream" msgstr "usa <nom> en lloc de 'origin' per a seguir la font" -#: builtin/clone.c:89 +#: builtin/clone.c:94 msgid "checkout <branch> instead of the remote's HEAD" msgstr "agafa <branca> en lloc del HEAD del remot" -#: builtin/clone.c:91 +#: builtin/clone.c:96 msgid "path to git-upload-pack on the remote" msgstr "camà a git-upload-pack en el remot" -#: builtin/clone.c:92 builtin/fetch.c:118 builtin/grep.c:667 builtin/pull.c:201 +#: builtin/clone.c:97 builtin/fetch.c:120 builtin/grep.c:668 builtin/pull.c:202 msgid "depth" msgstr "profunditat" -#: builtin/clone.c:93 +#: builtin/clone.c:98 msgid "create a shallow clone of that depth" msgstr "crea un clon superficial de tal profunditat" -#: builtin/clone.c:95 +#: builtin/clone.c:99 builtin/fetch.c:122 builtin/pack-objects.c:2848 +#: parse-options.h:142 +msgid "time" +msgstr "hora" + +#: builtin/clone.c:100 +msgid "create a shallow clone since a specific time" +msgstr "crea un clon superficial des d'una hora especÃfica" + +#: builtin/clone.c:101 builtin/fetch.c:124 +msgid "revision" +msgstr "revisió" + +#: builtin/clone.c:102 builtin/fetch.c:125 +msgid "deepen history of shallow clone by excluding rev" +msgstr "aprofundeix la història d'un clon superficial excloent una revisió" + +#: builtin/clone.c:104 msgid "clone only one branch, HEAD or --branch" msgstr "clona només una branca, HEAD o --branch" -#: builtin/clone.c:97 +#: builtin/clone.c:106 msgid "any cloned submodules will be shallow" msgstr "qualsevol submòdul clonat serà superficial" -#: builtin/clone.c:98 builtin/init-db.c:482 +#: builtin/clone.c:107 builtin/init-db.c:484 msgid "gitdir" msgstr "directori de git" -#: builtin/clone.c:99 builtin/init-db.c:483 +#: builtin/clone.c:108 builtin/init-db.c:485 msgid "separate git dir from working tree" msgstr "separa el directori de git de l'arbre de treball" -#: builtin/clone.c:100 +#: builtin/clone.c:109 msgid "key=value" msgstr "clau=valor" -#: builtin/clone.c:101 +#: builtin/clone.c:110 msgid "set config inside the new repository" msgstr "estableix la configuració dins del dipòsit nou" -#: builtin/clone.c:102 builtin/fetch.c:132 builtin/push.c:547 +#: builtin/clone.c:111 builtin/fetch.c:140 builtin/push.c:547 msgid "use IPv4 addresses only" msgstr "usa només les adreces IPv4" -#: builtin/clone.c:104 builtin/fetch.c:134 builtin/push.c:549 +#: builtin/clone.c:113 builtin/fetch.c:142 builtin/push.c:549 msgid "use IPv6 addresses only" msgstr "usa només les adreces IPv6" -#: builtin/clone.c:241 +#: builtin/clone.c:250 msgid "" "No directory name could be guessed.\n" "Please specify a directory on the command line" @@ -5481,58 +6074,42 @@ msgstr "" "No s'ha pogut endevinar cap nom de directori.\n" "Si us plau, especifiqueu un directori en la lÃnia d'ordres" -#: builtin/clone.c:307 -#, c-format -msgid "reference repository '%s' as a linked checkout is not supported yet." -msgstr "" -"Encara no se suporta el dipòsit de referència '%s' com a agafament enllaçat." - -#: builtin/clone.c:309 -#, c-format -msgid "reference repository '%s' is not a local repository." -msgstr "el dipòsit de referència '%s' no és un dipòsit local." - -#: builtin/clone.c:314 +#: builtin/clone.c:303 #, c-format -msgid "reference repository '%s' is shallow" -msgstr "el dipòsit de referència '%s' és superficial" - -#: builtin/clone.c:317 -#, c-format -msgid "reference repository '%s' is grafted" -msgstr "el dipòsit de referència '%s' és empeltat" +msgid "info: Could not add alternate for '%s': %s\n" +msgstr "info: No s'ha pogut afegir un alternatiu per a '%s': %s\n" -#: builtin/clone.c:376 +#: builtin/clone.c:375 #, c-format msgid "failed to open '%s'" msgstr "s'ha fallat en obrir '%s'" -#: builtin/clone.c:384 +#: builtin/clone.c:383 #, c-format msgid "%s exists and is not a directory" msgstr "%s existeix i no és directori" -#: builtin/clone.c:398 +#: builtin/clone.c:397 #, c-format msgid "failed to stat %s\n" msgstr "s'ha fallat en fer stat a '%s'\n" -#: builtin/clone.c:420 +#: builtin/clone.c:419 #, c-format msgid "failed to create link '%s'" msgstr "s'ha fallat en crear l'enllaç '%s'" -#: builtin/clone.c:424 +#: builtin/clone.c:423 #, c-format msgid "failed to copy file to '%s'" msgstr "s'ha fallat en copiar el fitxer a '%s'" -#: builtin/clone.c:449 +#: builtin/clone.c:448 #, c-format msgid "done.\n" msgstr "fet.\n" -#: builtin/clone.c:461 +#: builtin/clone.c:460 msgid "" "Clone succeeded, but checkout failed.\n" "You can inspect what was checked out with 'git status'\n" @@ -5543,123 +6120,141 @@ msgstr "" "'git status' i tornar a intentar l'agafament amb\n" "'git checkout -f HEAD'\n" -#: builtin/clone.c:538 +#: builtin/clone.c:537 #, c-format msgid "Could not find remote branch %s to clone." msgstr "No s'ha pogut trobar la branca remota %s per a clonar." -#: builtin/clone.c:633 +#: builtin/clone.c:632 msgid "remote did not send all necessary objects" msgstr "el remot no ha enviat tots els objectes necessaris" -#: builtin/clone.c:649 +#: builtin/clone.c:648 #, c-format msgid "unable to update %s" msgstr "no s'ha pogut actualitzar %s" -#: builtin/clone.c:698 +#: builtin/clone.c:697 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n" msgstr "" "el HEAD remot es refereix a una referència que no existeix; no s'ha pogut " "agafar.\n" -#: builtin/clone.c:729 +#: builtin/clone.c:728 msgid "unable to checkout working tree" msgstr "no s'ha pogut agafar l'arbre de treball" -#: builtin/clone.c:766 +#: builtin/clone.c:768 msgid "unable to write parameters to config file" msgstr "no s'ha pogut escriure els parà metres al fitxer de configuració" -#: builtin/clone.c:829 +#: builtin/clone.c:831 msgid "cannot repack to clean up" msgstr "no es pot reempaquetar per a netejar" -#: builtin/clone.c:831 +#: builtin/clone.c:833 msgid "cannot unlink temporary alternates file" msgstr "no es pot desenllaçar el fitxer d'alternatives temporal" -#: builtin/clone.c:863 builtin/receive-pack.c:1855 +#: builtin/clone.c:866 builtin/receive-pack.c:1895 msgid "Too many arguments." msgstr "Hi ha massa parà metres." -#: builtin/clone.c:867 +#: builtin/clone.c:870 msgid "You must specify a repository to clone." msgstr "Heu d'especificar un dipòsit per a clonar." -#: builtin/clone.c:878 +#: builtin/clone.c:883 #, c-format msgid "--bare and --origin %s options are incompatible." msgstr "les opcions --bare i --origin %s són incompatibles." -#: builtin/clone.c:881 +#: builtin/clone.c:886 msgid "--bare and --separate-git-dir are incompatible." msgstr "--bare i --separate-git-dir són incompatibles." -#: builtin/clone.c:894 +#: builtin/clone.c:899 #, c-format msgid "repository '%s' does not exist" msgstr "el dipòsit '%s' no existeix" -#: builtin/clone.c:900 builtin/fetch.c:1293 +#: builtin/clone.c:905 builtin/fetch.c:1338 #, c-format msgid "depth %s is not a positive number" msgstr "la profunditat %s no és nombre positiu" -#: builtin/clone.c:910 +#: builtin/clone.c:915 #, c-format msgid "destination path '%s' already exists and is not an empty directory." msgstr "el camà destà '%s' ja existeix i no és un directori buit." -#: builtin/clone.c:920 +#: builtin/clone.c:925 #, c-format msgid "working tree '%s' already exists." msgstr "l'arbre de treball '%s' ja existeix." -#: builtin/clone.c:935 builtin/clone.c:946 builtin/submodule--helper.c:544 +#: builtin/clone.c:940 builtin/clone.c:951 builtin/submodule--helper.c:657 #: builtin/worktree.c:222 builtin/worktree.c:249 #, c-format msgid "could not create leading directories of '%s'" msgstr "no s'ha pogut crear els directoris inicials de '%s'" -#: builtin/clone.c:938 +#: builtin/clone.c:943 #, c-format msgid "could not create work tree dir '%s'" msgstr "no s'ha pogut crear el directori d'arbre de treball '%s'" -#: builtin/clone.c:956 +#: builtin/clone.c:955 #, c-format msgid "Cloning into bare repository '%s'...\n" msgstr "S'està clonant al dipòsit nu '%s'...\n" -#: builtin/clone.c:958 +#: builtin/clone.c:957 #, c-format msgid "Cloning into '%s'...\n" msgstr "S'està clonant a '%s'...\n" -#: builtin/clone.c:997 +#: builtin/clone.c:963 +msgid "" +"clone --recursive is not compatible with both --reference and --reference-if-" +"able" +msgstr "" +"clone --recursive no és compatible amb ambdòs --reference i --reference-if-" +"able" + +#: builtin/clone.c:1019 msgid "--depth is ignored in local clones; use file:// instead." msgstr "--depth s'ignora en els clons locals; useu file:// en lloc d'això." -#: builtin/clone.c:1000 +#: builtin/clone.c:1021 +msgid "--shallow-since is ignored in local clones; use file:// instead." +msgstr "" +"--shallow-since s'ignora en els clons locals; useu file:// en lloc d'això." + +#: builtin/clone.c:1023 +msgid "--shallow-exclude is ignored in local clones; use file:// instead." +msgstr "" +"--shallow-exclude s'ignora en els clons locals; useu file:// en lloc d'això." + +#: builtin/clone.c:1026 msgid "source repository is shallow, ignoring --local" msgstr "el dipòsit font és superficial, s'està ignorant --local" -#: builtin/clone.c:1005 +#: builtin/clone.c:1031 msgid "--local is ignored" msgstr "--local s'ignora" -#: builtin/clone.c:1009 +#: builtin/clone.c:1035 #, c-format msgid "Don't know how to clone %s" msgstr "No se sap com clonar %s" -#: builtin/clone.c:1058 builtin/clone.c:1066 +#: builtin/clone.c:1090 builtin/clone.c:1098 #, c-format msgid "Remote branch %s not found in upstream %s" msgstr "La branca remota %s no es troba en la font %s" -#: builtin/clone.c:1069 +#: builtin/clone.c:1101 msgid "You appear to have cloned an empty repository." msgstr "Sembla que heu clonat un dipòsit buit." @@ -5801,66 +6396,66 @@ msgstr "" "Llavors \"git cherry-pick --continue\" reprendrà recollint\n" "com a cireres les comissions restants.\n" -#: builtin/commit.c:308 +#: builtin/commit.c:318 msgid "failed to unpack HEAD tree object" msgstr "s'ha fallat en desempaquetar l'objecte d'arbre HEAD" -#: builtin/commit.c:349 +#: builtin/commit.c:359 msgid "unable to create temporary index" msgstr "no s'ha pogut crear un Ãndex temporal" -#: builtin/commit.c:355 +#: builtin/commit.c:365 msgid "interactive add failed" msgstr "l'afegiment interactiu ha fallat" -#: builtin/commit.c:368 +#: builtin/commit.c:378 msgid "unable to update temporary index" msgstr "no s'ha pogut actualitzar l'Ãndex temporal" -#: builtin/commit.c:370 +#: builtin/commit.c:380 msgid "Failed to update main cache tree" msgstr "S'ha fallat en actualitzar l'arbre principal de memòria cau" -#: builtin/commit.c:394 builtin/commit.c:417 builtin/commit.c:466 +#: builtin/commit.c:404 builtin/commit.c:427 builtin/commit.c:476 msgid "unable to write new_index file" msgstr "no s'ha pogut escriure el fitxer new_index" -#: builtin/commit.c:448 +#: builtin/commit.c:458 msgid "cannot do a partial commit during a merge." msgstr "no es pot fer una comissió parcial durant una fusió." -#: builtin/commit.c:450 +#: builtin/commit.c:460 msgid "cannot do a partial commit during a cherry-pick." msgstr "no es pot fer una comissió parcial durant un recull de cireres." -#: builtin/commit.c:459 +#: builtin/commit.c:469 msgid "cannot read the index" msgstr "no es pot llegir l'Ãndex" -#: builtin/commit.c:478 +#: builtin/commit.c:488 msgid "unable to write temporary index file" msgstr "no s'ha pogut escriure un fitxer d'Ãndex temporal" -#: builtin/commit.c:583 +#: builtin/commit.c:582 #, c-format msgid "commit '%s' lacks author header" msgstr "a la comissió '%s' li manca la capçalera d'autor" -#: builtin/commit.c:585 +#: builtin/commit.c:584 #, c-format msgid "commit '%s' has malformed author line" msgstr "la comissió '%s' té una lÃnia d'autor mal formada" -#: builtin/commit.c:604 +#: builtin/commit.c:603 msgid "malformed --author parameter" msgstr "parà metre --author mal format" -#: builtin/commit.c:612 +#: builtin/commit.c:611 #, c-format msgid "invalid date format: %s" msgstr "format de data no và lid: %s" -#: builtin/commit.c:656 +#: builtin/commit.c:655 msgid "" "unable to select a comment character that is not used\n" "in the current commit message" @@ -5868,38 +6463,38 @@ msgstr "" "no es pot seleccionar un carà cter de comentari que\n" "no sigui usat en el missatge de comissió actual" -#: builtin/commit.c:693 builtin/commit.c:726 builtin/commit.c:1092 +#: builtin/commit.c:692 builtin/commit.c:725 builtin/commit.c:1096 #, c-format msgid "could not lookup commit %s" msgstr "no s'ha pogut trobar la comissió %s" -#: builtin/commit.c:705 builtin/shortlog.c:286 +#: builtin/commit.c:704 builtin/shortlog.c:286 #, c-format msgid "(reading log message from standard input)\n" msgstr "(s'està llegint el missatge de registre des de l'entrada està ndard)\n" -#: builtin/commit.c:707 +#: builtin/commit.c:706 msgid "could not read log from standard input" msgstr "no s'ha pogut llegir el registre des de l'entrada està ndard" -#: builtin/commit.c:711 +#: builtin/commit.c:710 #, c-format msgid "could not read log file '%s'" msgstr "no s'ha pogut llegir el fitxer de registre '%s'" -#: builtin/commit.c:738 builtin/commit.c:746 +#: builtin/commit.c:737 builtin/commit.c:745 msgid "could not read SQUASH_MSG" msgstr "no s'ha pogut llegir SQUASH_MSG" -#: builtin/commit.c:743 +#: builtin/commit.c:742 msgid "could not read MERGE_MSG" msgstr "no s'ha pogut llegir MERGE_MSG" -#: builtin/commit.c:797 +#: builtin/commit.c:796 msgid "could not write commit template" msgstr "no s'ha pogut escriure la plantilla de comissió" -#: builtin/commit.c:815 +#: builtin/commit.c:814 #, c-format msgid "" "\n" @@ -5914,7 +6509,7 @@ msgstr "" "\t%s\n" "i intenteu-ho de nou.\n" -#: builtin/commit.c:820 +#: builtin/commit.c:819 #, c-format msgid "" "\n" @@ -5929,7 +6524,7 @@ msgstr "" "\t%s\n" "i intenteu-ho de nou.\n" -#: builtin/commit.c:833 +#: builtin/commit.c:832 #, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" @@ -5939,7 +6534,7 @@ msgstr "" "S'ignoraran les lÃnies començant amb '%c', i un missatge de\n" "comissió buit avorta la comissió.\n" -#: builtin/commit.c:840 +#: builtin/commit.c:839 #, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" @@ -5950,150 +6545,154 @@ msgstr "" "Es retindran les lÃnies començants amb '%c'; podeu eliminar-les per vós\n" "mateix si voleu. Un missatge buit avorta la comissió.\n" -#: builtin/commit.c:860 +#: builtin/commit.c:859 #, c-format msgid "%sAuthor: %.*s <%.*s>" msgstr "%sAutor: %.*s <%.*s>" -#: builtin/commit.c:868 +#: builtin/commit.c:867 #, c-format msgid "%sDate: %s" msgstr "%sData: %s" -#: builtin/commit.c:875 +#: builtin/commit.c:874 #, c-format msgid "%sCommitter: %.*s <%.*s>" msgstr "%sComitent: %.*s <%.*s>" -#: builtin/commit.c:893 +#: builtin/commit.c:892 msgid "Cannot read index" msgstr "No es pot llegir l'Ãndex" -#: builtin/commit.c:950 +#: builtin/commit.c:954 msgid "Error building trees" msgstr "Error en construir arbres" -#: builtin/commit.c:965 builtin/tag.c:266 +#: builtin/commit.c:969 builtin/tag.c:266 #, c-format msgid "Please supply the message using either -m or -F option.\n" msgstr "Si us plau, proveïu el missatge per usar o l'opció -m o l'opció -F.\n" -#: builtin/commit.c:1067 +#: builtin/commit.c:1071 #, c-format msgid "--author '%s' is not 'Name <email>' and matches no existing author" msgstr "" "--author '%s' no és 'Nom <adreça-de-correu-electrònic>' i no coincideix amb\n" "cap autor existent" -#: builtin/commit.c:1082 builtin/commit.c:1322 +#: builtin/commit.c:1086 builtin/commit.c:1327 #, c-format msgid "Invalid untracked files mode '%s'" msgstr "Mode de fitxers no seguits no và lid '%s'" -#: builtin/commit.c:1119 +#: builtin/commit.c:1124 msgid "--long and -z are incompatible" msgstr "--long i -z són incompatibles" -#: builtin/commit.c:1149 +#: builtin/commit.c:1154 msgid "Using both --reset-author and --author does not make sense" msgstr "Usar ambdós --reset-author i --author no té sentit" -#: builtin/commit.c:1158 +#: builtin/commit.c:1163 msgid "You have nothing to amend." msgstr "No teniu res a esmenar." -#: builtin/commit.c:1161 +#: builtin/commit.c:1166 msgid "You are in the middle of a merge -- cannot amend." msgstr "Esteu enmig d'una fusió -- no es pot esmenar." -#: builtin/commit.c:1163 +#: builtin/commit.c:1168 msgid "You are in the middle of a cherry-pick -- cannot amend." msgstr "Esteu enmig d'un recull de cireres -- no es pot esmenar." -#: builtin/commit.c:1166 +#: builtin/commit.c:1171 msgid "Options --squash and --fixup cannot be used together" msgstr "Les opcions --squash i --fixup no es poden usar juntes" -#: builtin/commit.c:1176 +#: builtin/commit.c:1181 msgid "Only one of -c/-C/-F/--fixup can be used." msgstr "Només un de -c/-C/-F/--fixup es pot usar." -#: builtin/commit.c:1178 +#: builtin/commit.c:1183 msgid "Option -m cannot be combined with -c/-C/-F/--fixup." msgstr "L'opció -m no es pot combinar amb -c/-C/-F/--fixup." -#: builtin/commit.c:1186 +#: builtin/commit.c:1191 msgid "--reset-author can be used only with -C, -c or --amend." msgstr "--reset-author només es pot usar amb -C, -c o --amend." -#: builtin/commit.c:1203 +#: builtin/commit.c:1208 msgid "Only one of --include/--only/--all/--interactive/--patch can be used." msgstr "Només un de --include/--only/--all/--interactive/--patch es pot usar." -#: builtin/commit.c:1205 +#: builtin/commit.c:1210 msgid "No paths with --include/--only does not make sense." msgstr "--include/--only no té sentit sense camÃ." -#: builtin/commit.c:1207 +#: builtin/commit.c:1212 msgid "Clever... amending the last one with dirty index." msgstr "Intel·ligent... s'està esmenant l'últim amb Ãndex brut." -#: builtin/commit.c:1209 +#: builtin/commit.c:1214 msgid "Explicit paths specified without -i or -o; assuming --only paths..." msgstr "" "S'han especificat camins explÃcits sense -i o -o; s'està presumint camins --" "only..." -#: builtin/commit.c:1221 builtin/tag.c:474 +#: builtin/commit.c:1226 builtin/tag.c:474 #, c-format msgid "Invalid cleanup mode %s" msgstr "Mode de neteja no và lid %s" -#: builtin/commit.c:1226 +#: builtin/commit.c:1231 msgid "Paths with -a does not make sense." msgstr "-a no té sentit amb camins." -#: builtin/commit.c:1336 builtin/commit.c:1622 +#: builtin/commit.c:1341 builtin/commit.c:1617 msgid "show status concisely" msgstr "mostra l'estat concisament" -#: builtin/commit.c:1338 builtin/commit.c:1624 +#: builtin/commit.c:1343 builtin/commit.c:1619 msgid "show branch information" msgstr "mostra la informació de branca" -#: builtin/commit.c:1340 builtin/commit.c:1626 builtin/push.c:522 +#: builtin/commit.c:1345 +msgid "version" +msgstr "versió" + +#: builtin/commit.c:1345 builtin/commit.c:1621 builtin/push.c:522 #: builtin/worktree.c:440 msgid "machine-readable output" msgstr "sortida llegible per mà quina" -#: builtin/commit.c:1343 builtin/commit.c:1628 +#: builtin/commit.c:1348 builtin/commit.c:1623 msgid "show status in long format (default)" msgstr "mostra l'estat en format llarg (per defecte)" -#: builtin/commit.c:1346 builtin/commit.c:1631 +#: builtin/commit.c:1351 builtin/commit.c:1626 msgid "terminate entries with NUL" msgstr "acaba les entrades amb NUL" -#: builtin/commit.c:1348 builtin/commit.c:1634 builtin/fast-export.c:981 +#: builtin/commit.c:1353 builtin/commit.c:1629 builtin/fast-export.c:981 #: builtin/fast-export.c:984 builtin/tag.c:353 msgid "mode" msgstr "mode" -#: builtin/commit.c:1349 builtin/commit.c:1634 +#: builtin/commit.c:1354 builtin/commit.c:1629 msgid "show untracked files, optional modes: all, normal, no. (Default: all)" msgstr "" "mostra els fitxers no seguits, modes opcionals: all, normal, no. (Per " "defecte: all)" -#: builtin/commit.c:1352 +#: builtin/commit.c:1357 msgid "show ignored files" msgstr "mostra els fitxers ignorats" -#: builtin/commit.c:1353 parse-options.h:155 +#: builtin/commit.c:1358 parse-options.h:155 msgid "when" msgstr "quan" -#: builtin/commit.c:1354 +#: builtin/commit.c:1359 msgid "" "ignore changes to submodules, optional when: all, dirty, untracked. " "(Default: all)" @@ -6101,202 +6700,202 @@ msgstr "" "ignora els canvis als submòduls, opcional quan: all, dirty, untracked. (Per " "defecte: all)" -#: builtin/commit.c:1356 +#: builtin/commit.c:1361 msgid "list untracked files in columns" msgstr "mostra els fitxers no seguits en columnes" -#: builtin/commit.c:1442 +#: builtin/commit.c:1437 msgid "couldn't look up newly created commit" msgstr "no s'ha pogut trobar la comissió novament creada" -#: builtin/commit.c:1444 +#: builtin/commit.c:1439 msgid "could not parse newly created commit" msgstr "no s'ha pogut analitzar la comissió novament creada" -#: builtin/commit.c:1489 +#: builtin/commit.c:1484 msgid "detached HEAD" msgstr "HEAD separat" -#: builtin/commit.c:1492 +#: builtin/commit.c:1487 msgid " (root-commit)" msgstr " (comissió d'arrel)" -#: builtin/commit.c:1592 +#: builtin/commit.c:1587 msgid "suppress summary after successful commit" msgstr "omet el resum després d'una comissió reeixida" -#: builtin/commit.c:1593 +#: builtin/commit.c:1588 msgid "show diff in commit message template" msgstr "mostra la diferència en la plantilla de missatge de comissió" -#: builtin/commit.c:1595 +#: builtin/commit.c:1590 msgid "Commit message options" msgstr "Opcions de missatge de comissió" -#: builtin/commit.c:1596 builtin/tag.c:351 +#: builtin/commit.c:1591 builtin/tag.c:351 msgid "read message from file" msgstr "llegiu el missatge des d'un fitxer" -#: builtin/commit.c:1597 +#: builtin/commit.c:1592 msgid "author" msgstr "autor" -#: builtin/commit.c:1597 +#: builtin/commit.c:1592 msgid "override author for commit" msgstr "autor corregit de la comissió" -#: builtin/commit.c:1598 builtin/gc.c:326 +#: builtin/commit.c:1593 builtin/gc.c:326 msgid "date" msgstr "data" -#: builtin/commit.c:1598 +#: builtin/commit.c:1593 msgid "override date for commit" msgstr "data corregida de la comissió" -#: builtin/commit.c:1599 builtin/merge.c:220 builtin/notes.c:396 -#: builtin/notes.c:559 builtin/tag.c:349 +#: builtin/commit.c:1594 builtin/merge.c:220 builtin/notes.c:398 +#: builtin/notes.c:561 builtin/tag.c:349 msgid "message" msgstr "missatge" -#: builtin/commit.c:1599 +#: builtin/commit.c:1594 msgid "commit message" msgstr "missatge de comissió" -#: builtin/commit.c:1600 builtin/commit.c:1601 builtin/commit.c:1602 -#: builtin/commit.c:1603 parse-options.h:256 ref-filter.h:79 +#: builtin/commit.c:1595 builtin/commit.c:1596 builtin/commit.c:1597 +#: builtin/commit.c:1598 parse-options.h:257 ref-filter.h:79 msgid "commit" msgstr "comissió" -#: builtin/commit.c:1600 +#: builtin/commit.c:1595 msgid "reuse and edit message from specified commit" msgstr "reusa i edita el missatge de la comissió especificada" -#: builtin/commit.c:1601 +#: builtin/commit.c:1596 msgid "reuse message from specified commit" msgstr "reusa el missatge de la comissió especificada" -#: builtin/commit.c:1602 +#: builtin/commit.c:1597 msgid "use autosquash formatted message to fixup specified commit" msgstr "" "usa el missatge formatat d'aixafada automà tica per a arreglar la comissió " "especificada" -#: builtin/commit.c:1603 +#: builtin/commit.c:1598 msgid "use autosquash formatted message to squash specified commit" msgstr "" "usa el missatge formatat d'aixafada automà tica per a aixafar la comissió " "especificada" -#: builtin/commit.c:1604 +#: builtin/commit.c:1599 msgid "the commit is authored by me now (used with -C/-c/--amend)" msgstr "l'autor de la comissió ja sóc jo (s'usa amb -C/-c/--amend)" -#: builtin/commit.c:1605 builtin/log.c:1409 builtin/revert.c:86 +#: builtin/commit.c:1600 builtin/log.c:1413 builtin/revert.c:86 msgid "add Signed-off-by:" msgstr "afegeix Signed-off-by:" -#: builtin/commit.c:1606 +#: builtin/commit.c:1601 msgid "use specified template file" msgstr "usa el fitxer de plantilla especificat" -#: builtin/commit.c:1607 +#: builtin/commit.c:1602 msgid "force edit of commit" msgstr "força l'edició de la comissió" -#: builtin/commit.c:1608 +#: builtin/commit.c:1603 msgid "default" msgstr "per defecte" -#: builtin/commit.c:1608 builtin/tag.c:354 +#: builtin/commit.c:1603 builtin/tag.c:354 msgid "how to strip spaces and #comments from message" msgstr "com despullar els espais i #comentaris del missatge" -#: builtin/commit.c:1609 +#: builtin/commit.c:1604 msgid "include status in commit message template" msgstr "inclou l'estat en la plantilla de missatge de comissió" -#: builtin/commit.c:1611 builtin/merge.c:230 builtin/pull.c:165 +#: builtin/commit.c:1606 builtin/merge.c:230 builtin/pull.c:166 #: builtin/revert.c:93 msgid "GPG sign commit" msgstr "signa la comissió amb GPG" -#: builtin/commit.c:1614 +#: builtin/commit.c:1609 msgid "Commit contents options" msgstr "Opcions dels continguts de les comissions" -#: builtin/commit.c:1615 +#: builtin/commit.c:1610 msgid "commit all changed files" msgstr "comet tots els fitxers canviats" -#: builtin/commit.c:1616 +#: builtin/commit.c:1611 msgid "add specified files to index for commit" msgstr "afegeix els fitxers especificats a l'Ãndex per a cometre" -#: builtin/commit.c:1617 +#: builtin/commit.c:1612 msgid "interactively add files" msgstr "afegeix els fitxers interactivament" -#: builtin/commit.c:1618 +#: builtin/commit.c:1613 msgid "interactively add changes" msgstr "afegeix els canvis interactivament" -#: builtin/commit.c:1619 +#: builtin/commit.c:1614 msgid "commit only specified files" msgstr "comet només els fitxers especificats" -#: builtin/commit.c:1620 +#: builtin/commit.c:1615 msgid "bypass pre-commit and commit-msg hooks" msgstr "evita els ganxos de precomissió i missatge de comissió" -#: builtin/commit.c:1621 +#: builtin/commit.c:1616 msgid "show what would be committed" msgstr "mostra què es cometria" -#: builtin/commit.c:1632 +#: builtin/commit.c:1627 msgid "amend previous commit" msgstr "esmena la comissió anterior" -#: builtin/commit.c:1633 +#: builtin/commit.c:1628 msgid "bypass post-rewrite hook" msgstr "evita el ganxo de postreescriure" -#: builtin/commit.c:1638 +#: builtin/commit.c:1633 msgid "ok to record an empty change" msgstr "està bé registrar un canvi buit" -#: builtin/commit.c:1640 +#: builtin/commit.c:1635 msgid "ok to record a change with an empty message" msgstr "està bé registrar un canvi amb missatge buit" -#: builtin/commit.c:1669 +#: builtin/commit.c:1664 msgid "could not parse HEAD commit" msgstr "no s'ha pogut analitzar la comissió HEAD" -#: builtin/commit.c:1719 +#: builtin/commit.c:1712 #, c-format msgid "Corrupt MERGE_HEAD file (%s)" msgstr "Fitxer MERGE_HEAD malmès (%s)" -#: builtin/commit.c:1726 +#: builtin/commit.c:1719 msgid "could not read MERGE_MODE" msgstr "no s'ha pogut llegir MERGE_MODE" -#: builtin/commit.c:1745 +#: builtin/commit.c:1738 #, c-format msgid "could not read commit message: %s" msgstr "no s'ha pogut llegir el missatge de comissió: %s" -#: builtin/commit.c:1756 +#: builtin/commit.c:1749 #, c-format msgid "Aborting commit; you did not edit the message.\n" msgstr "S'està avortant la comissió; no heu editat el missatge.\n" -#: builtin/commit.c:1761 +#: builtin/commit.c:1754 #, c-format msgid "Aborting commit due to empty commit message.\n" msgstr "S'està avortant la comissió a causa d'un missatge de comissió buit.\n" -#: builtin/commit.c:1809 +#: builtin/commit.c:1802 msgid "" "Repository has been updated, but unable to write\n" "new_index file. Check that disk is not full and quota is\n" @@ -6466,17 +7065,26 @@ msgstr "" msgid "cannot create configuration file %s" msgstr "no es pot crear el fitxer de configuració '%s'" -#: builtin/count-objects.c:77 +#: builtin/config.c:625 +#, c-format +msgid "" +"cannot overwrite multiple values with a single value\n" +" Use a regexp, --add or --replace-all to change %s." +msgstr "" +"no es pot sobreescriure múltiples valors amb un sol valor\n" +" Useu una expresió regular, --add o --replace-all per a canviar %s." + +#: builtin/count-objects.c:86 msgid "git count-objects [-v] [-H | --human-readable]" msgstr "git count-objects [-v] [-H | --human-readable]" -#: builtin/count-objects.c:87 +#: builtin/count-objects.c:96 msgid "print sizes in human readable format" msgstr "imprimeix les mides en un format llegible pels humans" #: builtin/describe.c:17 msgid "git describe [<options>] [<commit-ish>...]" -msgstr "git describe [opcions] [<comissió>...]" +msgstr "git describe [<opcions>] [<comissió>...]" #: builtin/describe.c:18 msgid "git describe [<options>] --dirty" @@ -6590,7 +7198,7 @@ msgstr "considera les <n> etiquetes més recents (per defecte: 10)" msgid "only consider tags matching <pattern>" msgstr "només considera les etiquetes que coincideixen amb <patró>" -#: builtin/describe.c:410 builtin/name-rev.c:321 +#: builtin/describe.c:410 builtin/name-rev.c:320 msgid "show abbreviated commit object as fallback" msgstr "mostra l'objecte de comissió abreviat com a retrocediment" @@ -6624,21 +7232,21 @@ msgstr "'%s': no és ni fitxer regular ni enllaç simbòlic" msgid "invalid option: %s" msgstr "opció no và lida: %s" -#: builtin/diff.c:360 +#: builtin/diff.c:361 msgid "Not a git repository" msgstr "No és un dipòsit de git" -#: builtin/diff.c:403 +#: builtin/diff.c:404 #, c-format msgid "invalid object '%s' given." msgstr "s'ha donat un objecte no và lid '%s'." -#: builtin/diff.c:412 +#: builtin/diff.c:413 #, c-format msgid "more than two blobs given: '%s'" msgstr "s'ha donat més de dos blobs: '%s" -#: builtin/diff.c:419 +#: builtin/diff.c:420 #, c-format msgid "unhandled object '%s' given." msgstr "s'ha donat l'objecte no gestionat '%s'." @@ -6711,162 +7319,166 @@ msgstr "git fetch --multiple [<opcions>] [(<dipòsit> | <grup>)...]" msgid "git fetch --all [<options>]" msgstr "git fetch --all [<opcions>]" -#: builtin/fetch.c:93 builtin/pull.c:174 +#: builtin/fetch.c:95 builtin/pull.c:175 msgid "fetch from all remotes" msgstr "obtén de tots els remots" -#: builtin/fetch.c:95 builtin/pull.c:177 +#: builtin/fetch.c:97 builtin/pull.c:178 msgid "append to .git/FETCH_HEAD instead of overwriting" msgstr "annexa a .git/FETCH_HEAD en lloc de sobreescriure" -#: builtin/fetch.c:97 builtin/pull.c:180 +#: builtin/fetch.c:99 builtin/pull.c:181 msgid "path to upload pack on remote end" msgstr "camà al qual pujar el paquet al costat remot" -#: builtin/fetch.c:98 builtin/pull.c:182 +#: builtin/fetch.c:100 builtin/pull.c:183 msgid "force overwrite of local branch" msgstr "força la sobreescriptura de la branca local" -#: builtin/fetch.c:100 +#: builtin/fetch.c:102 msgid "fetch from multiple remotes" msgstr "obtén de múltiples remots" -#: builtin/fetch.c:102 builtin/pull.c:184 +#: builtin/fetch.c:104 builtin/pull.c:185 msgid "fetch all tags and associated objects" msgstr "obtén totes les etiquetes i tots els objectes associats" -#: builtin/fetch.c:104 +#: builtin/fetch.c:106 msgid "do not fetch all tags (--no-tags)" msgstr "no obtinguis les etiquetes (--no-tags)" -#: builtin/fetch.c:106 +#: builtin/fetch.c:108 msgid "number of submodules fetched in parallel" msgstr "nombre de submòduls obtinguts en paral·lel" -#: builtin/fetch.c:108 builtin/pull.c:187 +#: builtin/fetch.c:110 builtin/pull.c:188 msgid "prune remote-tracking branches no longer on remote" msgstr "poda les branques amb seguiment remot que ja no estiguin en el remot" -#: builtin/fetch.c:109 builtin/pull.c:190 +#: builtin/fetch.c:111 builtin/pull.c:191 msgid "on-demand" msgstr "sota demanda" -#: builtin/fetch.c:110 builtin/pull.c:191 +#: builtin/fetch.c:112 builtin/pull.c:192 msgid "control recursive fetching of submodules" msgstr "controla l'obtenció recursiva de submòduls" -#: builtin/fetch.c:114 builtin/pull.c:199 +#: builtin/fetch.c:116 builtin/pull.c:200 msgid "keep downloaded pack" msgstr "retén el paquet baixat" -#: builtin/fetch.c:116 +#: builtin/fetch.c:118 msgid "allow updating of HEAD ref" msgstr "permet l'actualització de la referència HEAD" -#: builtin/fetch.c:119 builtin/pull.c:202 +#: builtin/fetch.c:121 builtin/fetch.c:127 builtin/pull.c:203 msgid "deepen history of shallow clone" msgstr "aprofundeix la història d'un clon superficial" -#: builtin/fetch.c:121 builtin/pull.c:205 +#: builtin/fetch.c:123 +msgid "deepen history of shallow repository based on time" +msgstr "aprofundeix la història d'un clon superficial basat en temps" + +#: builtin/fetch.c:129 builtin/pull.c:206 msgid "convert to a complete repository" msgstr "converteix en un dipòsit complet" -#: builtin/fetch.c:123 builtin/log.c:1426 +#: builtin/fetch.c:131 builtin/log.c:1433 msgid "dir" msgstr "directori" -#: builtin/fetch.c:124 +#: builtin/fetch.c:132 msgid "prepend this to submodule path output" msgstr "anteposa això a la sortida de camà del submòdul" -#: builtin/fetch.c:127 +#: builtin/fetch.c:135 msgid "default mode for recursion" msgstr "mode de recursivitat per defecte" -#: builtin/fetch.c:129 builtin/pull.c:208 +#: builtin/fetch.c:137 builtin/pull.c:209 msgid "accept refs that update .git/shallow" msgstr "accepta les referències que actualitzin .git/shallow" -#: builtin/fetch.c:130 builtin/pull.c:210 +#: builtin/fetch.c:138 builtin/pull.c:211 msgid "refmap" msgstr "mapa de referències" -#: builtin/fetch.c:131 builtin/pull.c:211 +#: builtin/fetch.c:139 builtin/pull.c:212 msgid "specify fetch refmap" msgstr "mostra el mapa de referències d'obtenció" -#: builtin/fetch.c:387 +#: builtin/fetch.c:398 msgid "Couldn't find remote ref HEAD" msgstr "No s'ha pogut trobar la referència HEAD remota" -#: builtin/fetch.c:503 +#: builtin/fetch.c:514 #, c-format msgid "configuration fetch.output contains invalid value %s" msgstr "la configuració fetch.output conté un valor no và lid %s" -#: builtin/fetch.c:592 +#: builtin/fetch.c:607 #, c-format msgid "object %s not found" msgstr "objecte %s no trobat" -#: builtin/fetch.c:596 +#: builtin/fetch.c:611 msgid "[up to date]" msgstr "[al dia]" -#: builtin/fetch.c:609 builtin/fetch.c:689 +#: builtin/fetch.c:624 builtin/fetch.c:704 msgid "[rejected]" msgstr "[rebutjat]" -#: builtin/fetch.c:610 +#: builtin/fetch.c:625 msgid "can't fetch in current branch" msgstr "no es pot obtenir en la branca actual" -#: builtin/fetch.c:619 +#: builtin/fetch.c:634 msgid "[tag update]" msgstr "[actualització d'etiqueta]" -#: builtin/fetch.c:620 builtin/fetch.c:653 builtin/fetch.c:669 -#: builtin/fetch.c:684 +#: builtin/fetch.c:635 builtin/fetch.c:668 builtin/fetch.c:684 +#: builtin/fetch.c:699 msgid "unable to update local ref" msgstr "no s'ha pogut actualitzar la referència local" -#: builtin/fetch.c:639 +#: builtin/fetch.c:654 msgid "[new tag]" msgstr "[etiqueta nova]" -#: builtin/fetch.c:642 +#: builtin/fetch.c:657 msgid "[new branch]" msgstr "[branca nova]" -#: builtin/fetch.c:645 +#: builtin/fetch.c:660 msgid "[new ref]" msgstr "[referència nova]" -#: builtin/fetch.c:684 +#: builtin/fetch.c:699 msgid "forced update" msgstr "actualització forçada" -#: builtin/fetch.c:689 +#: builtin/fetch.c:704 msgid "non-fast-forward" msgstr "sense avanç rà pid" -#: builtin/fetch.c:733 +#: builtin/fetch.c:749 #, c-format msgid "%s did not send all necessary objects\n" msgstr "%s no ha enviat tots els objectes necessaris\n" -#: builtin/fetch.c:753 +#: builtin/fetch.c:769 #, c-format msgid "reject %s because shallow roots are not allowed to be updated" msgstr "" "rebutja %s perquè no es permet que les arrels superficials s'actualitzin" -#: builtin/fetch.c:839 builtin/fetch.c:934 +#: builtin/fetch.c:856 builtin/fetch.c:952 #, c-format msgid "From %.*s\n" msgstr "De %.*s\n" -#: builtin/fetch.c:850 +#: builtin/fetch.c:867 #, c-format msgid "" "some local refs could not be updated; try running\n" @@ -6876,55 +7488,55 @@ msgstr "" " intenteu executar 'git remote prune %s' per a eliminar\n" " qualsevulla branca antiga o conflictiva" -#: builtin/fetch.c:904 +#: builtin/fetch.c:922 #, c-format msgid " (%s will become dangling)" msgstr " (%s es tornarà penjant)" -#: builtin/fetch.c:905 +#: builtin/fetch.c:923 #, c-format msgid " (%s has become dangling)" msgstr " (%s s'ha tornat penjant)" -#: builtin/fetch.c:937 +#: builtin/fetch.c:955 msgid "[deleted]" msgstr "[suprimit]" -#: builtin/fetch.c:938 builtin/remote.c:1020 +#: builtin/fetch.c:956 builtin/remote.c:1020 msgid "(none)" msgstr "(cap)" -#: builtin/fetch.c:960 +#: builtin/fetch.c:979 #, c-format msgid "Refusing to fetch into current branch %s of non-bare repository" msgstr "S'està refusant obtenir en la branca actual %s d'un dipòsit no nu" -#: builtin/fetch.c:979 +#: builtin/fetch.c:998 #, c-format msgid "Option \"%s\" value \"%s\" is not valid for %s" msgstr "L'opció \"%s\" amb valor \"%s\" no és và lida per a %s" -#: builtin/fetch.c:982 +#: builtin/fetch.c:1001 #, c-format msgid "Option \"%s\" is ignored for %s\n" msgstr "S'ignora l'opció \"%s\" per a %s\n" -#: builtin/fetch.c:1039 +#: builtin/fetch.c:1077 #, c-format msgid "Don't know how to fetch from %s" msgstr "No se sap com obtenir de %s" -#: builtin/fetch.c:1199 +#: builtin/fetch.c:1237 #, c-format msgid "Fetching %s\n" msgstr "S'està obtenint %s\n" -#: builtin/fetch.c:1201 builtin/remote.c:96 +#: builtin/fetch.c:1239 builtin/remote.c:96 #, c-format msgid "Could not fetch %s" msgstr "No s'ha pogut obtenir %s" -#: builtin/fetch.c:1219 +#: builtin/fetch.c:1257 msgid "" "No remote repository specified. Please, specify either a URL or a\n" "remote name from which new revisions should be fetched." @@ -6932,32 +7544,40 @@ msgstr "" "Cap dipòsit remot especificat. Si us plau, especifiqueu o un URL o\n" "un nom remot del qual es deuen obtenir les revisions noves." -#: builtin/fetch.c:1242 +#: builtin/fetch.c:1280 msgid "You need to specify a tag name." msgstr "Necessiteu especificar un nom d'etiqueta." -#: builtin/fetch.c:1284 +#: builtin/fetch.c:1322 +msgid "Negative depth in --deepen is not supported" +msgstr "No s'admet una profunditat negativa en --deepen" + +#: builtin/fetch.c:1324 +msgid "--deepen and --depth are mutually exclusive" +msgstr "--deepen i --depth són mutualment exclusius" + +#: builtin/fetch.c:1329 msgid "--depth and --unshallow cannot be used together" msgstr "--depth i --unshallow no es poden usar junts" -#: builtin/fetch.c:1286 +#: builtin/fetch.c:1331 msgid "--unshallow on a complete repository does not make sense" msgstr "--unshallow en un dipòsit complet no té sentit" -#: builtin/fetch.c:1306 +#: builtin/fetch.c:1353 msgid "fetch --all does not take a repository argument" msgstr "fetch --all no accepta un parà metre de dipòsit" -#: builtin/fetch.c:1308 +#: builtin/fetch.c:1355 msgid "fetch --all does not make sense with refspecs" msgstr "fetch --all no té sentit amb especificacions de referència" -#: builtin/fetch.c:1319 +#: builtin/fetch.c:1366 #, c-format msgid "No such remote or remote group: %s" msgstr "No hi ha tal remot ni tal grup remot: %s" -#: builtin/fetch.c:1327 +#: builtin/fetch.c:1374 msgid "Fetching a group and specifying refspecs does not make sense" msgstr "Obtenir un grup i especificar referències no té sentit" @@ -6967,23 +7587,23 @@ msgid "" msgstr "" "git fmt-merge-msg [-m <missatge>] [--log[=<n>] | --no-log] [--file <fitxer>]" -#: builtin/fmt-merge-msg.c:667 +#: builtin/fmt-merge-msg.c:663 msgid "populate log with at most <n> entries from shortlog" msgstr "emplena el registre amb <n> entrades del registre curt com a mà xim" -#: builtin/fmt-merge-msg.c:670 +#: builtin/fmt-merge-msg.c:666 msgid "alias for --log (deprecated)" msgstr "à lies per --log (desaprovat)" -#: builtin/fmt-merge-msg.c:673 +#: builtin/fmt-merge-msg.c:669 msgid "text" msgstr "text" -#: builtin/fmt-merge-msg.c:674 +#: builtin/fmt-merge-msg.c:670 msgid "use <text> as start of message" msgstr "usa <text> com a inici de missatge" -#: builtin/fmt-merge-msg.c:675 +#: builtin/fmt-merge-msg.c:671 msgid "file to read from" msgstr "fitxer del qual llegir" @@ -7101,7 +7721,7 @@ msgstr "mostra el progrés" msgid "show verbose names for reachable objects" msgstr "mostra els noms detallats dels objectes abastables" -#: builtin/fsck.c:671 +#: builtin/fsck.c:665 msgid "Checking objects" msgstr "S'estan comprovant els objectes" @@ -7195,228 +7815,223 @@ msgstr "grep: s'ha fallat en crear fil: %s" msgid "invalid number of threads specified (%d) for %s" msgstr "s'ha especificat un nombre de fils no và lid (%d) per a %s" -#: builtin/grep.c:452 builtin/grep.c:487 +#: builtin/grep.c:453 builtin/grep.c:488 #, c-format msgid "unable to read tree (%s)" msgstr "no s'ha pogut llegir l'arbre (%s)" -#: builtin/grep.c:502 +#: builtin/grep.c:503 #, c-format msgid "unable to grep from object of type %s" msgstr "no es pot fer grep des d'un objecte de tipus %s" -#: builtin/grep.c:560 +#: builtin/grep.c:561 #, c-format msgid "switch `%c' expects a numerical value" msgstr "l'opció `%c' espera un valor numèric" -#: builtin/grep.c:577 -#, c-format -msgid "cannot open '%s'" -msgstr "no es pot obrir '%s'" - -#: builtin/grep.c:646 +#: builtin/grep.c:647 msgid "search in index instead of in the work tree" msgstr "cerca en l'Ãndex en lloc de l'arbre de treball" -#: builtin/grep.c:648 +#: builtin/grep.c:649 msgid "find in contents not managed by git" msgstr "cerca en continguts no gestionats per git" -#: builtin/grep.c:650 +#: builtin/grep.c:651 msgid "search in both tracked and untracked files" msgstr "cerca tant en fitxers seguits com en no seguits" -#: builtin/grep.c:652 +#: builtin/grep.c:653 msgid "ignore files specified via '.gitignore'" msgstr "ignora els fitxers especificats mitjançant '.gitignore'" -#: builtin/grep.c:655 +#: builtin/grep.c:656 msgid "show non-matching lines" msgstr "mostra les lÃnies no coincidents" -#: builtin/grep.c:657 +#: builtin/grep.c:658 msgid "case insensitive matching" msgstr "coincidència insensible a majúscula i minúscula" -#: builtin/grep.c:659 +#: builtin/grep.c:660 msgid "match patterns only at word boundaries" msgstr "coincideix amb els patrons només als lÃmits de paraula" -#: builtin/grep.c:661 +#: builtin/grep.c:662 msgid "process binary files as text" msgstr "processa els fitxers binaris com a text" -#: builtin/grep.c:663 +#: builtin/grep.c:664 msgid "don't match patterns in binary files" msgstr "no coincideixis amb els patrons en els fitxers binaris" -#: builtin/grep.c:666 +#: builtin/grep.c:667 msgid "process binary files with textconv filters" msgstr "processa els fitxers binaris amb filtres de textconv" -#: builtin/grep.c:668 +#: builtin/grep.c:669 msgid "descend at most <depth> levels" msgstr "descendeix com a mà xim <profunditat> nivells" -#: builtin/grep.c:672 +#: builtin/grep.c:673 msgid "use extended POSIX regular expressions" msgstr "usa les expressions regulars POSIX esteses" -#: builtin/grep.c:675 +#: builtin/grep.c:676 msgid "use basic POSIX regular expressions (default)" msgstr "usa les expressions regulars POSIX bà siques (per defecte)" -#: builtin/grep.c:678 +#: builtin/grep.c:679 msgid "interpret patterns as fixed strings" msgstr "interpreta els patrons com a cadenes fixes" -#: builtin/grep.c:681 +#: builtin/grep.c:682 msgid "use Perl-compatible regular expressions" msgstr "usa les expressions regulars compatibles amb Perl" -#: builtin/grep.c:684 +#: builtin/grep.c:685 msgid "show line numbers" msgstr "mostra els números de lÃnia" -#: builtin/grep.c:685 +#: builtin/grep.c:686 msgid "don't show filenames" msgstr "no mostris els noms de fitxer" -#: builtin/grep.c:686 +#: builtin/grep.c:687 msgid "show filenames" msgstr "mostra els noms de fitxer" -#: builtin/grep.c:688 +#: builtin/grep.c:689 msgid "show filenames relative to top directory" msgstr "mostra els noms de fitxer relatius al directori superior" -#: builtin/grep.c:690 +#: builtin/grep.c:691 msgid "show only filenames instead of matching lines" msgstr "mostra només els noms de fitxer en lloc de les lÃnies coincidents" -#: builtin/grep.c:692 +#: builtin/grep.c:693 msgid "synonym for --files-with-matches" msgstr "sinònim de --files-with-matches" -#: builtin/grep.c:695 +#: builtin/grep.c:696 msgid "show only the names of files without match" msgstr "mostra només els noms dels fitxers sense coincidència" -#: builtin/grep.c:697 +#: builtin/grep.c:698 msgid "print NUL after filenames" msgstr "imprimeix NUL després dels noms de fitxer" -#: builtin/grep.c:699 +#: builtin/grep.c:700 msgid "show the number of matches instead of matching lines" msgstr "mostra el nombre de coincidències en lloc de les lÃnies coincidents" -#: builtin/grep.c:700 +#: builtin/grep.c:701 msgid "highlight matches" msgstr "ressalta les coincidències" -#: builtin/grep.c:702 +#: builtin/grep.c:703 msgid "print empty line between matches from different files" msgstr "imprimeix una lÃnia buida entre coincidències de fitxers distints" -#: builtin/grep.c:704 +#: builtin/grep.c:705 msgid "show filename only once above matches from same file" msgstr "" "mostra el nom de fitxer només una vegada a dalt de les coincidències del " "mateix fitxer" -#: builtin/grep.c:707 +#: builtin/grep.c:708 msgid "show <n> context lines before and after matches" msgstr "mostra <n> lÃnies de context abans i després d'una coincidència" -#: builtin/grep.c:710 +#: builtin/grep.c:711 msgid "show <n> context lines before matches" msgstr "mostra <n> lÃnies de context abans d'una coincidència" -#: builtin/grep.c:712 +#: builtin/grep.c:713 msgid "show <n> context lines after matches" msgstr "mostra <n> lÃnies de context després d'una coincidència" -#: builtin/grep.c:714 +#: builtin/grep.c:715 msgid "use <n> worker threads" msgstr "usa <n> fils obrers" -#: builtin/grep.c:715 +#: builtin/grep.c:716 msgid "shortcut for -C NUM" msgstr "drecera per -C NUM" -#: builtin/grep.c:718 +#: builtin/grep.c:719 msgid "show a line with the function name before matches" msgstr "mostra una lÃnia amb el nom de funció abans de les coincidències" -#: builtin/grep.c:720 +#: builtin/grep.c:721 msgid "show the surrounding function" msgstr "mostra la funció circumdant" -#: builtin/grep.c:723 +#: builtin/grep.c:724 msgid "read patterns from file" msgstr "llegeix els patrons des d'un fitxer" -#: builtin/grep.c:725 +#: builtin/grep.c:726 msgid "match <pattern>" msgstr "coincideix amb <patró>" -#: builtin/grep.c:727 +#: builtin/grep.c:728 msgid "combine patterns specified with -e" msgstr "combina els patrons especificats amb -e" -#: builtin/grep.c:739 +#: builtin/grep.c:740 msgid "indicate hit with exit status without output" msgstr "indica coincidència amb estat de sortida sense sortida textual" -#: builtin/grep.c:741 +#: builtin/grep.c:742 msgid "show only matches from files that match all patterns" msgstr "" "mostra només les coincidències dels fitxers que coincideixin amb tots els " "patrons" -#: builtin/grep.c:743 +#: builtin/grep.c:744 msgid "show parse tree for grep expression" msgstr "mostra l'arbre d'anà lisis de l'expressió de grep" -#: builtin/grep.c:747 +#: builtin/grep.c:748 msgid "pager" msgstr "paginador" -#: builtin/grep.c:747 +#: builtin/grep.c:748 msgid "show matching files in the pager" msgstr "mostra els fitxers coincidents en el paginador" -#: builtin/grep.c:750 +#: builtin/grep.c:751 msgid "allow calling of grep(1) (ignored by this build)" msgstr "permet la invocació de grep(1) (ignorat per aquesta compilació)" -#: builtin/grep.c:813 +#: builtin/grep.c:814 msgid "no pattern given." msgstr "cap patró donat." -#: builtin/grep.c:845 builtin/index-pack.c:1479 +#: builtin/grep.c:846 builtin/index-pack.c:1480 #, c-format msgid "invalid number of threads specified (%d)" msgstr "s'ha especificat un nombre de fils no và lid (%d)" -#: builtin/grep.c:875 +#: builtin/grep.c:876 msgid "--open-files-in-pager only works on the worktree" msgstr "--open-files-in-pager només funciona en l'arbre de treball" -#: builtin/grep.c:901 +#: builtin/grep.c:902 msgid "--cached or --untracked cannot be used with --no-index." msgstr "--cached o --untracked no es pot usar amb --no-index." -#: builtin/grep.c:906 +#: builtin/grep.c:907 msgid "--no-index or --untracked cannot be used with revs." msgstr "--no-index o --untracked no es pot usar amb revisions." -#: builtin/grep.c:909 +#: builtin/grep.c:910 msgid "--[no-]exclude-standard cannot be used for tracked contents." msgstr "--[no-]exclude-standard no es pot usar per als continguts seguits." -#: builtin/grep.c:917 +#: builtin/grep.c:918 msgid "both --cached and trees are given." msgstr "s'han donat ambdós --caches i arbres." @@ -7432,85 +8047,89 @@ msgstr "" msgid "git hash-object --stdin-paths" msgstr "git hash-object --stdin-paths" -#: builtin/hash-object.c:93 +#: builtin/hash-object.c:94 msgid "type" msgstr "tipus" -#: builtin/hash-object.c:93 +#: builtin/hash-object.c:94 msgid "object type" msgstr "tipus d'objecte" -#: builtin/hash-object.c:94 +#: builtin/hash-object.c:95 msgid "write the object into the object database" msgstr "escriu l'objecte a la base de dades d'objectes" -#: builtin/hash-object.c:96 +#: builtin/hash-object.c:97 msgid "read the object from stdin" msgstr "llegeix l'objecte des d'stdin" -#: builtin/hash-object.c:98 +#: builtin/hash-object.c:99 msgid "store file as is without filters" msgstr "emmagatzema el fitxer tal com és sense filtres" -#: builtin/hash-object.c:99 +#: builtin/hash-object.c:100 msgid "" "just hash any random garbage to create corrupt objects for debugging Git" msgstr "" "només suma qualsevulla brossa aleatòria per a crear objectes malmesos per a " "depurar al Git" -#: builtin/hash-object.c:100 +#: builtin/hash-object.c:101 msgid "process file as it were from this path" msgstr "processa el fitxer com si fos d'aquest camÃ" -#: builtin/help.c:41 +#: builtin/help.c:42 msgid "print all available commands" msgstr "imprimeix totes les ordres disponibles" -#: builtin/help.c:42 +#: builtin/help.c:43 +msgid "exclude guides" +msgstr "exclou guÃes" + +#: builtin/help.c:44 msgid "print list of useful guides" msgstr "imprimeix la llista de guies útils" -#: builtin/help.c:43 +#: builtin/help.c:45 msgid "show man page" msgstr "mostra la pà gina de manual" -#: builtin/help.c:44 +#: builtin/help.c:46 msgid "show manual in web browser" msgstr "mostra la pà gina de manual en el navegador web" -#: builtin/help.c:46 +#: builtin/help.c:48 msgid "show info page" msgstr "mostra la pà gina d'informació" -#: builtin/help.c:52 +#: builtin/help.c:54 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]" msgstr "git help [--all] [--guides] [--man | --web | --info] [<ordre>]" -#: builtin/help.c:64 +#: builtin/help.c:66 #, c-format msgid "unrecognized help format '%s'" msgstr "format d'ajuda no reconegut '%s'" -#: builtin/help.c:91 +#: builtin/help.c:93 msgid "Failed to start emacsclient." msgstr "S'ha fallat en iniciar emacsclient." -#: builtin/help.c:104 +#: builtin/help.c:106 msgid "Failed to parse emacsclient version." msgstr "S'ha fallat en analitzar la versió d'emacsclient." -#: builtin/help.c:112 +#: builtin/help.c:114 #, c-format msgid "emacsclient version '%d' too old (< 22)." msgstr "la versió d'emacsclient '%d' és massa vella (< 22)." -#: builtin/help.c:130 builtin/help.c:151 builtin/help.c:160 builtin/help.c:168 +#: builtin/help.c:132 builtin/help.c:153 builtin/help.c:162 builtin/help.c:170 #, c-format msgid "failed to exec '%s'" msgstr "s'ha fallat en executar '%s'" -#: builtin/help.c:205 +#: builtin/help.c:207 #, c-format msgid "" "'%s': path for unsupported man viewer.\n" @@ -7519,7 +8138,7 @@ msgstr "" "'%s': camà a un visualitzador de manuals no compatible.\n" "Si us plau, considereu usar 'man.<eina>.cmd' en lloc d'això." -#: builtin/help.c:217 +#: builtin/help.c:219 #, c-format msgid "" "'%s': cmd for supported man viewer.\n" @@ -7528,155 +8147,159 @@ msgstr "" "'%s': ordre per a un visualitzador de manuals compatible.\n" "Si us plau, considereu usar 'man.<eina>.path' en lloc d'això." -#: builtin/help.c:334 +#: builtin/help.c:336 #, c-format msgid "'%s': unknown man viewer." msgstr "'%s': visualitzador de manuals desconegut." -#: builtin/help.c:351 +#: builtin/help.c:353 msgid "no man viewer handled the request" msgstr "cap visualitzador de manuals ha gestionat la sol·licitud" -#: builtin/help.c:359 +#: builtin/help.c:361 msgid "no info viewer handled the request" msgstr "cap visualitzador d'informació ha gestionat la sol·licitud" -#: builtin/help.c:401 +#: builtin/help.c:403 msgid "Defining attributes per path" msgstr "La definició d'atributs per camÃ" -#: builtin/help.c:402 +#: builtin/help.c:404 msgid "Everyday Git With 20 Commands Or So" msgstr "Git quotidià amb més o menys 20 ordres" -#: builtin/help.c:403 +#: builtin/help.c:405 msgid "A Git glossary" msgstr "Un glossari de Git" -#: builtin/help.c:404 +#: builtin/help.c:406 msgid "Specifies intentionally untracked files to ignore" msgstr "Especifica els fitxers intencionalment no seguits a ignorar" -#: builtin/help.c:405 +#: builtin/help.c:407 msgid "Defining submodule properties" msgstr "La definició de les propietats de submòduls" -#: builtin/help.c:406 +#: builtin/help.c:408 msgid "Specifying revisions and ranges for Git" msgstr "L'especificació de revisions i rangs per al Git" -#: builtin/help.c:407 +#: builtin/help.c:409 msgid "A tutorial introduction to Git (for version 1.5.1 or newer)" msgstr "Una introducció tutorial al Git (per a la versió 1.5.1 o més nou)" -#: builtin/help.c:408 +#: builtin/help.c:410 msgid "An overview of recommended workflows with Git" msgstr "Una visió de conjunt de fluxos de treball recomanats amb Git" -#: builtin/help.c:420 +#: builtin/help.c:422 msgid "The common Git guides are:\n" msgstr "Les guies de Git comunes són:\n" -#: builtin/help.c:441 builtin/help.c:458 -#, c-format -msgid "usage: %s%s" -msgstr "ús: %s%s" - -#: builtin/help.c:474 +#: builtin/help.c:440 #, c-format msgid "`git %s' is aliased to `%s'" msgstr "`git %s' és un à lies de `%s'" -#: builtin/index-pack.c:153 +#: builtin/help.c:462 builtin/help.c:479 +#, c-format +msgid "usage: %s%s" +msgstr "ús: %s%s" + +#: builtin/index-pack.c:154 #, c-format msgid "unable to open %s" msgstr "no s'ha pogut obrir %s" -#: builtin/index-pack.c:203 +#: builtin/index-pack.c:204 #, c-format msgid "object type mismatch at %s" msgstr "hi ha una discordança de tipus d'objecte a %s" -#: builtin/index-pack.c:223 +#: builtin/index-pack.c:224 #, c-format msgid "did not receive expected object %s" msgstr "no s'ha rebut l'objecte esperat %s" -#: builtin/index-pack.c:226 +#: builtin/index-pack.c:227 #, c-format msgid "object %s: expected type %s, found %s" msgstr "objecte %s: tipus %s esperat, %s trobat" -#: builtin/index-pack.c:268 +#: builtin/index-pack.c:269 #, c-format msgid "cannot fill %d byte" msgid_plural "cannot fill %d bytes" msgstr[0] "no es pot omplir %d octet" msgstr[1] "no es pot omplir %d octets" -#: builtin/index-pack.c:278 +#: builtin/index-pack.c:279 msgid "early EOF" msgstr "EOF prematur" -#: builtin/index-pack.c:279 +#: builtin/index-pack.c:280 msgid "read error on input" msgstr "error de lectura d'entrada" -#: builtin/index-pack.c:291 +#: builtin/index-pack.c:292 msgid "used more bytes than were available" msgstr "s'han usat més octets que hi havia disponibles" -#: builtin/index-pack.c:298 +#: builtin/index-pack.c:299 msgid "pack too large for current definition of off_t" msgstr "paquet massa gran per a la definició actual d'off_t" -#: builtin/index-pack.c:314 +#: builtin/index-pack.c:302 builtin/unpack-objects.c:92 +msgid "pack exceeds maximum allowed size" +msgstr "el paquet supera la mida mà xima permesa" + +#: builtin/index-pack.c:317 #, c-format msgid "unable to create '%s'" -msgstr "no es pot crear '%s'" +msgstr "no s'ha pogut crear '%s'" -#: builtin/index-pack.c:319 +#: builtin/index-pack.c:322 #, c-format msgid "cannot open packfile '%s'" msgstr "no es pot obrir el fitxer de paquet '%s'" -#: builtin/index-pack.c:333 +#: builtin/index-pack.c:336 msgid "pack signature mismatch" msgstr "hi ha una discordança de signatura de paquet" -#: builtin/index-pack.c:335 +#: builtin/index-pack.c:338 #, c-format msgid "pack version %<PRIu32> unsupported" msgstr "la versió de paquet %<PRIu32> no és compatible" -#: builtin/index-pack.c:353 +#: builtin/index-pack.c:356 #, c-format msgid "pack has bad object at offset %<PRIuMAX>: %s" msgstr "el paquet té un objecte dolent a la posició %<PRIuMAX>: %s" -#: builtin/index-pack.c:475 +#: builtin/index-pack.c:478 #, c-format msgid "inflate returned %d" msgstr "la inflació ha retornat %d" -#: builtin/index-pack.c:524 +#: builtin/index-pack.c:527 msgid "offset value overflow for delta base object" msgstr "desbordament de valor de desplaçament per a l'objecte base de delta" -#: builtin/index-pack.c:532 +#: builtin/index-pack.c:535 msgid "delta base offset is out of bound" msgstr "el desplaçament de base de delta està fora de lÃmits" -#: builtin/index-pack.c:540 +#: builtin/index-pack.c:543 #, c-format msgid "unknown object type %d" msgstr "tipus d'objecte desconegut %d" -#: builtin/index-pack.c:571 +#: builtin/index-pack.c:574 msgid "cannot pread pack file" msgstr "no es pot fer pread en el fitxer de paquet" -#: builtin/index-pack.c:573 +#: builtin/index-pack.c:576 #, c-format msgid "premature end of pack file, %<PRIuMAX> byte missing" msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing" @@ -7684,144 +8307,144 @@ msgstr[0] "el final del fitxer de paquet és prematur, manca %<PRIuMAX> octet" msgstr[1] "" "el final del fitxer de paquet és prematur, manquen %<PRIuMAX> octets" -#: builtin/index-pack.c:599 +#: builtin/index-pack.c:602 msgid "serious inflate inconsistency" msgstr "hi ha una inconsistència seriosa d'inflació" -#: 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 +#: builtin/index-pack.c:748 builtin/index-pack.c:754 builtin/index-pack.c:777 +#: builtin/index-pack.c:811 builtin/index-pack.c:820 #, c-format msgid "SHA1 COLLISION FOUND WITH %s !" msgstr "S'HA TROBAT UNA COL·LISIÓ SHA1 AMB %s !" -#: builtin/index-pack.c:748 builtin/pack-objects.c:164 -#: builtin/pack-objects.c:256 +#: builtin/index-pack.c:751 builtin/pack-objects.c:166 +#: builtin/pack-objects.c:258 #, c-format msgid "unable to read %s" msgstr "no s'ha pogut llegir %s" -#: builtin/index-pack.c:814 +#: builtin/index-pack.c:817 #, c-format msgid "cannot read existing object %s" msgstr "no es pot llegir l'objecte existent %s" -#: builtin/index-pack.c:828 +#: builtin/index-pack.c:831 #, c-format msgid "invalid blob object %s" msgstr "objecte de blob no và lid %s" -#: builtin/index-pack.c:842 +#: builtin/index-pack.c:845 #, c-format msgid "invalid %s" msgstr "%s no và lid" -#: builtin/index-pack.c:845 +#: builtin/index-pack.c:848 msgid "Error in object" msgstr "Error en objecte" -#: builtin/index-pack.c:847 +#: builtin/index-pack.c:850 #, c-format msgid "Not all child objects of %s are reachable" msgstr "No tots els objectes fills de %s són abastables" -#: builtin/index-pack.c:919 builtin/index-pack.c:950 +#: builtin/index-pack.c:922 builtin/index-pack.c:953 msgid "failed to apply delta" msgstr "s'ha fallat en aplicar la delta" -#: builtin/index-pack.c:1120 +#: builtin/index-pack.c:1123 msgid "Receiving objects" msgstr "S'estan rebent objectes" -#: builtin/index-pack.c:1120 +#: builtin/index-pack.c:1123 msgid "Indexing objects" msgstr "S'estan indexant objectes" -#: builtin/index-pack.c:1152 +#: builtin/index-pack.c:1155 msgid "pack is corrupted (SHA1 mismatch)" msgstr "el paquet és malmès (discordança SHA1)" -#: builtin/index-pack.c:1157 +#: builtin/index-pack.c:1160 msgid "cannot fstat packfile" msgstr "no es pot fer fstat en el fitxer de paquet" -#: builtin/index-pack.c:1160 +#: builtin/index-pack.c:1163 msgid "pack has junk at the end" msgstr "el paquet té brossa al seu final" -#: builtin/index-pack.c:1171 +#: builtin/index-pack.c:1174 msgid "confusion beyond insanity in parse_pack_objects()" msgstr "confusió més enllà de la bogeria en parse_pack_objects()" -#: builtin/index-pack.c:1196 +#: builtin/index-pack.c:1197 msgid "Resolving deltas" msgstr "S'estan resolent les deltes" -#: builtin/index-pack.c:1207 +#: builtin/index-pack.c:1208 #, c-format msgid "unable to create thread: %s" msgstr "no s'ha pogut crear fil: %s" -#: builtin/index-pack.c:1249 +#: builtin/index-pack.c:1250 msgid "confusion beyond insanity" msgstr "confusió més enllà de la bogeria" -#: builtin/index-pack.c:1255 +#: builtin/index-pack.c:1256 #, c-format msgid "completed with %d local object" msgid_plural "completed with %d local objects" msgstr[0] "s'ha completat amb %d objecte local" msgstr[1] "s'ha completat amb %d objectes locals" -#: builtin/index-pack.c:1267 +#: builtin/index-pack.c:1268 #, c-format msgid "Unexpected tail checksum for %s (disk corruption?)" msgstr "Suma de verificació final no esperada per a %s (corrupció de disc?)" -#: builtin/index-pack.c:1271 +#: builtin/index-pack.c:1272 #, c-format msgid "pack has %d unresolved delta" msgid_plural "pack has %d unresolved deltas" msgstr[0] "El paquet té %d delta no resolta" msgstr[1] "El paquet té %d deltes no resoltes" -#: builtin/index-pack.c:1295 +#: builtin/index-pack.c:1296 #, c-format msgid "unable to deflate appended object (%d)" msgstr "no s'ha pogut desinflar l'objecte annexat (%d)" -#: builtin/index-pack.c:1371 +#: builtin/index-pack.c:1372 #, c-format msgid "local object %s is corrupt" msgstr "l'objecte local %s és malmès" -#: builtin/index-pack.c:1395 +#: builtin/index-pack.c:1396 msgid "error while closing pack file" msgstr "error en tancar el fitxer de paquet" -#: builtin/index-pack.c:1408 +#: builtin/index-pack.c:1409 #, c-format msgid "cannot write keep file '%s'" msgstr "no es pot escriure el fitxer a retenir '%s'" -#: builtin/index-pack.c:1416 +#: builtin/index-pack.c:1417 #, c-format msgid "cannot close written keep file '%s'" msgstr "no es pot tancar el fitxer escrit a retenir '%s'" -#: builtin/index-pack.c:1429 +#: builtin/index-pack.c:1430 msgid "cannot store pack file" msgstr "no es pot emmagatzemar el fitxer de paquet" -#: builtin/index-pack.c:1440 +#: builtin/index-pack.c:1441 msgid "cannot store index file" msgstr "no es pot emmagatzemar el fitxer d'Ãndex" -#: builtin/index-pack.c:1473 +#: builtin/index-pack.c:1474 #, c-format msgid "bad pack.indexversion=%<PRIu32>" msgstr "pack.indexversion=%<PRIu32> dolent" -#: builtin/index-pack.c:1483 builtin/index-pack.c:1681 +#: builtin/index-pack.c:1484 builtin/index-pack.c:1681 #, c-format msgid "no threads support, ignoring %s" msgstr "no hi ha suport de fils, s'està ignorant %s" @@ -7861,95 +8484,95 @@ msgstr "el nom del fitxer de paquet '%s' no acaba amb '.pack'" msgid "bad %s" msgstr "%s dolent" -#: builtin/index-pack.c:1730 +#: builtin/index-pack.c:1732 msgid "--fix-thin cannot be used without --stdin" msgstr "--fix-thin no es pot usar sense --stdin" -#: builtin/index-pack.c:1738 +#: builtin/index-pack.c:1740 msgid "--verify with no packfile name given" msgstr "s'ha donat --verify sense nom de fitxer de paquet" -#: builtin/init-db.c:55 +#: builtin/init-db.c:54 #, c-format msgid "cannot stat '%s'" msgstr "no es pot fer stat en '%s'" -#: builtin/init-db.c:61 +#: builtin/init-db.c:60 #, c-format msgid "cannot stat template '%s'" msgstr "no es pot fer stat en la plantilla '%s'" -#: builtin/init-db.c:66 +#: builtin/init-db.c:65 #, c-format msgid "cannot opendir '%s'" msgstr "no es pot fer opendir en el directori '%s'" -#: builtin/init-db.c:77 +#: builtin/init-db.c:76 #, c-format msgid "cannot readlink '%s'" msgstr "no es pot fer readlink en '%s'" -#: builtin/init-db.c:79 +#: builtin/init-db.c:78 #, c-format msgid "cannot symlink '%s' '%s'" msgstr "no es pot fer symlink en '%s' '%s'" -#: builtin/init-db.c:85 +#: builtin/init-db.c:84 #, c-format msgid "cannot copy '%s' to '%s'" msgstr "no es pot copiar '%s' a '%s'" -#: builtin/init-db.c:89 +#: builtin/init-db.c:88 #, c-format msgid "ignoring template %s" msgstr "s'està ignorant la plantilla %s" -#: builtin/init-db.c:120 +#: builtin/init-db.c:119 #, c-format msgid "templates not found %s" msgstr "no s'han trobat les plantilles %s" -#: builtin/init-db.c:135 +#: builtin/init-db.c:134 #, c-format msgid "not copying templates from '%s': %s" msgstr "no s'està copiant plantilles de '%s': %s" -#: builtin/init-db.c:312 builtin/init-db.c:315 -#, c-format -msgid "%s already exists" -msgstr "%s ja existeix" - -#: builtin/init-db.c:344 +#: builtin/init-db.c:327 #, c-format msgid "unable to handle file type %d" msgstr "no s'ha pogut gestionar el tipus de fitxer %d" -#: builtin/init-db.c:347 +#: builtin/init-db.c:330 #, c-format msgid "unable to move %s to %s" msgstr "no s'ha pogut moure %s a %s" -#: builtin/init-db.c:402 +#: builtin/init-db.c:347 builtin/init-db.c:350 +#, c-format +msgid "%s already exists" +msgstr "%s ja existeix" + +#: builtin/init-db.c:403 #, c-format msgid "Reinitialized existing shared Git repository in %s%s\n" msgstr "S'ha reinicialitzat el dipòsit compartit existent del Git en %s%s\n" -#: builtin/init-db.c:403 +#: builtin/init-db.c:404 #, c-format msgid "Reinitialized existing Git repository in %s%s\n" msgstr "S'ha reinicialitzat el dipòsit existent del Git en %s%s\n" -#: builtin/init-db.c:407 +#: builtin/init-db.c:408 #, c-format msgid "Initialized empty shared Git repository in %s%s\n" msgstr "S'ha inicialitzat un dipòsit compartit buit del Git en %s%s\n" -#: builtin/init-db.c:408 +#: builtin/init-db.c:409 #, c-format msgid "Initialized empty Git repository in %s%s\n" msgstr "S'ha inicialitzat un dipòsit buit del Git en %s%s\n" -#: builtin/init-db.c:455 +#: builtin/init-db.c:457 msgid "" "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--" "shared[=<permissions>]] [<directory>]" @@ -7957,25 +8580,25 @@ msgstr "" "git init [-q | --quiet] [--bare] [--template=<directori-de-plantilla>] [--" "shared[=<permisos>]] [<directori>]" -#: builtin/init-db.c:478 +#: builtin/init-db.c:480 msgid "permissions" msgstr "permisos" -#: builtin/init-db.c:479 +#: builtin/init-db.c:481 msgid "specify that the git repository is to be shared amongst several users" msgstr "especifica que el dipòsit de git es compartirà entre diversos usuaris" -#: builtin/init-db.c:513 builtin/init-db.c:518 +#: builtin/init-db.c:515 builtin/init-db.c:520 #, c-format msgid "cannot mkdir %s" msgstr "no es pot mkdir %s" -#: builtin/init-db.c:522 +#: builtin/init-db.c:524 #, c-format msgid "cannot chdir to %s" msgstr "no es pot canviar de directori a %s" -#: builtin/init-db.c:543 +#: builtin/init-db.c:545 #, c-format msgid "" "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-" @@ -7984,7 +8607,7 @@ msgstr "" "no es permet %s (o --work-tree=<directori>) sense especificar %s (o --git-" "dir=<directori>)" -#: builtin/init-db.c:571 +#: builtin/init-db.c:573 #, c-format msgid "Cannot access work tree '%s'" msgstr "No es pot accedir a l'arbre de treball '%s'" @@ -8095,37 +8718,34 @@ msgstr "No és un rang." msgid "Cover letter needs email format" msgstr "La carta de presentació necessita el format de correu electrònic" -#: builtin/log.c:1064 +#: builtin/log.c:1063 #, c-format msgid "insane in-reply-to: %s" msgstr "in-reply-to boig: %s" -#: builtin/log.c:1092 +#: builtin/log.c:1091 msgid "git format-patch [<options>] [<since> | <revision-range>]" msgstr "git format-patch [<opcions>] [<des-de> | <rang-de-revisions>]" -#: builtin/log.c:1137 +#: builtin/log.c:1141 msgid "Two output directories?" msgstr "Hi ha dos directoris de sortida?" -#: builtin/log.c:1244 builtin/log.c:1883 builtin/log.c:1885 builtin/log.c:1897 +#: builtin/log.c:1248 builtin/log.c:1891 builtin/log.c:1893 builtin/log.c:1905 #, c-format msgid "Unknown commit %s" msgstr "Comissió desconeguda %s" -#: 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 +#: builtin/log.c:1258 builtin/notes.c:884 builtin/tag.c:455 #, c-format msgid "Failed to resolve '%s' as a valid ref." msgstr "S'ha fallat en resoldre '%s' com a referència và lida." -#: builtin/log.c:1259 +#: builtin/log.c:1263 msgid "Could not find exact merge base." msgstr "No s'ha pogut trobar la base exacta de fusió." -#: builtin/log.c:1263 +#: builtin/log.c:1267 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" @@ -8136,211 +8756,215 @@ msgstr "" "seguir una branca remot. O podeu especificar la comissió base manualment\n" "amb --base=<id-de-comissió-base>." -#: builtin/log.c:1283 +#: builtin/log.c:1287 msgid "Failed to find exact merge base" msgstr "S'ha fallat en trobar la base exacta de fusió." -#: builtin/log.c:1294 +#: builtin/log.c:1298 msgid "base commit should be the ancestor of revision list" msgstr "la comissió base ha de ser l'avantpassat de la llista de revisions" -#: builtin/log.c:1298 +#: builtin/log.c:1302 msgid "base commit shouldn't be in revision list" msgstr "la comissió base no ha de ser en la llista de revisions" -#: builtin/log.c:1347 +#: builtin/log.c:1351 msgid "cannot get patch id" msgstr "no es pot obtenir l'id del pedaç" -#: builtin/log.c:1404 +#: builtin/log.c:1408 msgid "use [PATCH n/m] even with a single patch" msgstr "usa [PATCH n/m] fins i tot amb un sol pedaç" -#: builtin/log.c:1407 +#: builtin/log.c:1411 msgid "use [PATCH] even with multiple patches" msgstr "usa [PATCH] fins i tot amb múltiples pedaços" -#: builtin/log.c:1411 +#: builtin/log.c:1415 msgid "print patches to standard out" msgstr "imprimeix els pedaços a la sortida està ndard" -#: builtin/log.c:1413 +#: builtin/log.c:1417 msgid "generate a cover letter" msgstr "genera una carta de presentació" -#: builtin/log.c:1415 +#: builtin/log.c:1419 msgid "use simple number sequence for output file names" msgstr "usa una seqüència de números per als noms dels fitxers de sortida" -#: builtin/log.c:1416 +#: builtin/log.c:1420 msgid "sfx" msgstr "sufix" -#: builtin/log.c:1417 +#: builtin/log.c:1421 msgid "use <sfx> instead of '.patch'" msgstr "usa <sufix> en lloc de '.patch'" -#: builtin/log.c:1419 +#: builtin/log.c:1423 msgid "start numbering patches at <n> instead of 1" msgstr "comença numerant els pedaços a <n> en lloc d'1" -#: builtin/log.c:1421 +#: builtin/log.c:1425 msgid "mark the series as Nth re-roll" msgstr "marca la sèrie com a l'enèsima llançada" -#: builtin/log.c:1423 +#: builtin/log.c:1427 +msgid "Use [RFC PATCH] instead of [PATCH]" +msgstr "Usa [RFC PATCH] en lloc de [PATCH]" + +#: builtin/log.c:1430 msgid "Use [<prefix>] instead of [PATCH]" msgstr "Usa [<prefix>] en lloc de [PATCH]" -#: builtin/log.c:1426 +#: builtin/log.c:1433 msgid "store resulting files in <dir>" msgstr "emmagatzema els fitxers resultants a <directori>" -#: builtin/log.c:1429 +#: builtin/log.c:1436 msgid "don't strip/add [PATCH]" msgstr "no despullis/afegeixis [PATCH]" -#: builtin/log.c:1432 +#: builtin/log.c:1439 msgid "don't output binary diffs" msgstr "no emetis diferències binà ries" -#: builtin/log.c:1434 +#: builtin/log.c:1441 msgid "output all-zero hash in From header" msgstr "emet un hash de tots zeros en la capçalera From" -#: builtin/log.c:1436 +#: builtin/log.c:1443 msgid "don't include a patch matching a commit upstream" msgstr "no incloguis pedaços que coincideixin amb comissions a la font" -#: builtin/log.c:1438 +#: builtin/log.c:1445 msgid "show patch format instead of default (patch + stat)" msgstr "" "mostra el format de pedaç en lloc del per defecte (pedaç + estadÃstiques)" -#: builtin/log.c:1440 +#: builtin/log.c:1447 msgid "Messaging" msgstr "Missatgeria" -#: builtin/log.c:1441 +#: builtin/log.c:1448 msgid "header" msgstr "capçalera" -#: builtin/log.c:1442 +#: builtin/log.c:1449 msgid "add email header" msgstr "afegeix una capçalera de correu electrònic" -#: builtin/log.c:1443 builtin/log.c:1445 +#: builtin/log.c:1450 builtin/log.c:1452 msgid "email" msgstr "correu electrònic" -#: builtin/log.c:1443 +#: builtin/log.c:1450 msgid "add To: header" msgstr "afegeix la capçalera To:" -#: builtin/log.c:1445 +#: builtin/log.c:1452 msgid "add Cc: header" msgstr "afegeix la capçalera Cc:" -#: builtin/log.c:1447 +#: builtin/log.c:1454 msgid "ident" msgstr "identitat" -#: builtin/log.c:1448 +#: builtin/log.c:1455 msgid "set From address to <ident> (or committer ident if absent)" msgstr "" "estableix l'adreça From a <identitat> (o la identitat del comitent si manca)" -#: builtin/log.c:1450 +#: builtin/log.c:1457 msgid "message-id" msgstr "ID de missatge" -#: builtin/log.c:1451 +#: builtin/log.c:1458 msgid "make first mail a reply to <message-id>" msgstr "fes que el primer missatge sigui una resposta a <ID de missatge>" -#: builtin/log.c:1452 builtin/log.c:1455 +#: builtin/log.c:1459 builtin/log.c:1462 msgid "boundary" msgstr "lÃmit" -#: builtin/log.c:1453 +#: builtin/log.c:1460 msgid "attach the patch" msgstr "ajunta el pedaç" -#: builtin/log.c:1456 +#: builtin/log.c:1463 msgid "inline the patch" msgstr "posa el pedaç en el cos" -#: builtin/log.c:1460 +#: builtin/log.c:1467 msgid "enable message threading, styles: shallow, deep" msgstr "habilita l'enfilada de missatges, estils: shallow, deep" -#: builtin/log.c:1462 +#: builtin/log.c:1469 msgid "signature" msgstr "signatura" -#: builtin/log.c:1463 +#: builtin/log.c:1470 msgid "add a signature" msgstr "afegeix una signatura" -#: builtin/log.c:1464 +#: builtin/log.c:1471 msgid "base-commit" msgstr "comissió base" -#: builtin/log.c:1465 +#: builtin/log.c:1472 msgid "add prerequisite tree info to the patch series" msgstr "afegeix la informació d'arbre prerequerida a la sèrie de pedaços" -#: builtin/log.c:1467 +#: builtin/log.c:1474 msgid "add a signature from a file" msgstr "afegeix una signatura des d'un fitxer" -#: builtin/log.c:1468 +#: builtin/log.c:1475 msgid "don't print the patch filenames" msgstr "no imprimeixis els noms de fitxer del pedaç" -#: builtin/log.c:1558 +#: builtin/log.c:1565 msgid "-n and -k are mutually exclusive." msgstr "-n i -k són mutualment exclusius." -#: builtin/log.c:1560 -msgid "--subject-prefix and -k are mutually exclusive." -msgstr "--subject-prefix i -k són mutualment exclusius." +#: builtin/log.c:1567 +msgid "--subject-prefix/--rfc and -k are mutually exclusive." +msgstr "--subject-prefix/--rfc i -k són mutualment exclusius." -#: builtin/log.c:1568 +#: builtin/log.c:1575 msgid "--name-only does not make sense" msgstr "--name-only no té sentit" -#: builtin/log.c:1570 +#: builtin/log.c:1577 msgid "--name-status does not make sense" msgstr "--name-status no té sentit" -#: builtin/log.c:1572 +#: builtin/log.c:1579 msgid "--check does not make sense" msgstr "--check no té sentit" -#: builtin/log.c:1602 +#: builtin/log.c:1609 msgid "standard output, or directory, which one?" msgstr "sortida està ndard o directori, quin dels dos?" -#: builtin/log.c:1604 +#: builtin/log.c:1611 #, c-format msgid "Could not create directory '%s'" msgstr "No s'ha pogut crear el directori '%s'" -#: builtin/log.c:1698 +#: builtin/log.c:1705 #, c-format msgid "unable to read signature file '%s'" msgstr "no s'ha pogut llegir el fitxer de signatura '%s'" -#: builtin/log.c:1769 +#: builtin/log.c:1777 msgid "Failed to create output files" msgstr "S'ha fallat en crear els fitxers de sortida" -#: builtin/log.c:1818 +#: builtin/log.c:1826 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]" msgstr "git cherry [-v] [<font> [<cap> [<lÃmit>]]]" -#: builtin/log.c:1872 +#: builtin/log.c:1880 #, c-format msgid "" "Could not find a tracked remote branch, please specify <upstream> manually.\n" @@ -8348,101 +8972,105 @@ msgstr "" "No s'ha pogut trobar una branca remota seguida. Si us plau, especifiqueu " "<font> manualment.\n" -#: builtin/ls-files.c:379 +#: builtin/ls-files.c:458 msgid "git ls-files [<options>] [<file>...]" msgstr "git ls-files [<opcions>] [<fitxer>...]" -#: builtin/ls-files.c:428 +#: builtin/ls-files.c:507 msgid "identify the file status with tags" msgstr "identifica l'estat de fitxer amb etiquetes" -#: builtin/ls-files.c:430 +#: builtin/ls-files.c:509 msgid "use lowercase letters for 'assume unchanged' files" msgstr "usa lletres minúscules per als fitxers 'assume unchanged'" -#: builtin/ls-files.c:432 +#: builtin/ls-files.c:511 msgid "show cached files in the output (default)" msgstr "" "mostra en la sortida els fitxers desats en la memòria cau (per defecte)" -#: builtin/ls-files.c:434 +#: builtin/ls-files.c:513 msgid "show deleted files in the output" msgstr "mostra en la sortida els fitxers suprimits" -#: builtin/ls-files.c:436 +#: builtin/ls-files.c:515 msgid "show modified files in the output" msgstr "mostra en la sortida els fitxers modificats" -#: builtin/ls-files.c:438 +#: builtin/ls-files.c:517 msgid "show other files in the output" msgstr "mostra en la sortida els altres fitxers" -#: builtin/ls-files.c:440 +#: builtin/ls-files.c:519 msgid "show ignored files in the output" msgstr "mostra en la sortida els fitxers ignorats" -#: builtin/ls-files.c:443 +#: builtin/ls-files.c:522 msgid "show staged contents' object name in the output" msgstr "mostra en la sortida el nom d'objecte dels continguts allistats" -#: builtin/ls-files.c:445 +#: builtin/ls-files.c:524 msgid "show files on the filesystem that need to be removed" msgstr "mostra els fitxers en el sistema de fitxers que s'han d'eliminar" -#: builtin/ls-files.c:447 +#: builtin/ls-files.c:526 msgid "show 'other' directories' names only" msgstr "mostra només els noms dels directoris 'other'" -#: builtin/ls-files.c:449 +#: builtin/ls-files.c:528 msgid "show line endings of files" -msgstr "mostra els terminis de lÃnia dels fitxers" +msgstr "mostra els terminadors de lÃnia dels fitxers" -#: builtin/ls-files.c:451 +#: builtin/ls-files.c:530 msgid "don't show empty directories" msgstr "no mostris els directoris buits" -#: builtin/ls-files.c:454 +#: builtin/ls-files.c:533 msgid "show unmerged files in the output" msgstr "mostra en la sortida els fitxers sense fusionar" -#: builtin/ls-files.c:456 +#: builtin/ls-files.c:535 msgid "show resolve-undo information" msgstr "mostra la informació de resolució de desfet" -#: builtin/ls-files.c:458 +#: builtin/ls-files.c:537 msgid "skip files matching pattern" msgstr "salta els fitxers coincidents amb el patró" -#: builtin/ls-files.c:461 +#: builtin/ls-files.c:540 msgid "exclude patterns are read from <file>" msgstr "els patrons d'exclusió es llegeixen de <fitxer>" -#: builtin/ls-files.c:464 +#: builtin/ls-files.c:543 msgid "read additional per-directory exclude patterns in <file>" msgstr "llegeix els patrons addicionals d'exclusió per directori en <fitxer>" -#: builtin/ls-files.c:466 +#: builtin/ls-files.c:545 msgid "add the standard git exclusions" msgstr "afegeix les exclusions està ndards de git" -#: builtin/ls-files.c:469 +#: builtin/ls-files.c:548 msgid "make the output relative to the project top directory" msgstr "fes que la sortida sigui relativa al directori superior del projecte" -#: builtin/ls-files.c:472 +#: builtin/ls-files.c:551 +msgid "recurse through submodules" +msgstr "recursa als submòduls" + +#: builtin/ls-files.c:553 msgid "if any <file> is not in the index, treat this as an error" msgstr "si qualsevol <fitxer> no és en l'Ãndex, tracta això com a error" -#: builtin/ls-files.c:473 +#: builtin/ls-files.c:554 msgid "tree-ish" msgstr "arbre" -#: builtin/ls-files.c:474 +#: builtin/ls-files.c:555 msgid "pretend that paths removed since <tree-ish> are still present" msgstr "" "pretén que els camins eliminats després de <arbre> encara siguin presents" -#: builtin/ls-files.c:476 +#: builtin/ls-files.c:557 msgid "show debugging data" msgstr "mostra les dades de depuració" @@ -8561,33 +9189,33 @@ msgstr "Les estratègies disponibles són:" msgid "Available custom strategies are:" msgstr "Les estratègies personalitzades disponibles són:" -#: builtin/merge.c:195 builtin/pull.c:126 +#: builtin/merge.c:195 builtin/pull.c:127 msgid "do not show a diffstat at the end of the merge" msgstr "no mostris les estadÃstiques de diferència al final de la fusió" -#: builtin/merge.c:198 builtin/pull.c:129 +#: builtin/merge.c:198 builtin/pull.c:130 msgid "show a diffstat at the end of the merge" msgstr "mostra les estadÃstiques de diferència al final de la fusió" -#: builtin/merge.c:199 builtin/pull.c:132 +#: builtin/merge.c:199 builtin/pull.c:133 msgid "(synonym to --stat)" msgstr "(sinònim de --stat)" -#: builtin/merge.c:201 builtin/pull.c:135 +#: builtin/merge.c:201 builtin/pull.c:136 msgid "add (at most <n>) entries from shortlog to merge commit message" msgstr "" "afegeix (com a mà xim <n>) entrades del registre curt al missatge de comissió " "de fusió" -#: builtin/merge.c:204 builtin/pull.c:138 +#: builtin/merge.c:204 builtin/pull.c:139 msgid "create a single commit instead of doing a merge" msgstr "crea una única comissió en lloc de fusionar" -#: builtin/merge.c:206 builtin/pull.c:141 +#: builtin/merge.c:206 builtin/pull.c:142 msgid "perform a commit if the merge succeeds (default)" msgstr "realitza una comissió si la fusió té èxit (per defecte)" -#: builtin/merge.c:208 builtin/pull.c:144 +#: builtin/merge.c:208 builtin/pull.c:145 msgid "edit message before committing" msgstr "edita el missatge abans de cometre" @@ -8595,28 +9223,28 @@ msgstr "edita el missatge abans de cometre" msgid "allow fast-forward (default)" msgstr "permet l'avanç rà pid (per defecte)" -#: builtin/merge.c:211 builtin/pull.c:150 +#: builtin/merge.c:211 builtin/pull.c:151 msgid "abort if fast-forward is not possible" msgstr "avorta si l'avanç rà pid no és possible" -#: builtin/merge.c:215 builtin/pull.c:153 +#: builtin/merge.c:215 builtin/pull.c:154 msgid "verify that the named commit has a valid GPG signature" msgstr "verifica que la comissió anomenada tingui una signatura GPG và lida" -#: builtin/merge.c:216 builtin/notes.c:772 builtin/pull.c:157 +#: builtin/merge.c:216 builtin/notes.c:774 builtin/pull.c:158 #: builtin/revert.c:89 msgid "strategy" msgstr "estratègia" -#: builtin/merge.c:217 builtin/pull.c:158 +#: builtin/merge.c:217 builtin/pull.c:159 msgid "merge strategy to use" msgstr "estratègia de fusió a usar" -#: builtin/merge.c:218 builtin/pull.c:161 +#: builtin/merge.c:218 builtin/pull.c:162 msgid "option=value" msgstr "opció=valor" -#: builtin/merge.c:219 builtin/pull.c:162 +#: builtin/merge.c:219 builtin/pull.c:163 msgid "option for selected merge strategy" msgstr "opció per a l'estratègia de fusió seleccionada" @@ -8628,7 +9256,7 @@ msgstr "missatge de comissió de fusió (per a una fusió no d'avanç rà pid)" msgid "abort the current in-progress merge" msgstr "avorta la fusió en curs actual" -#: builtin/merge.c:227 builtin/pull.c:169 +#: builtin/merge.c:227 builtin/pull.c:170 msgid "allow merging unrelated histories" msgstr "permet fusionar històries no relacionades" @@ -8851,55 +9479,55 @@ msgstr "s'està refusant fusionar històries no relacionades" msgid "Already up-to-date." msgstr "Ja està al dia." -#: builtin/merge.c:1382 +#: builtin/merge.c:1377 #, c-format msgid "Updating %s..%s\n" msgstr "S'estan actualitzant %s..%s\n" -#: builtin/merge.c:1419 +#: builtin/merge.c:1418 #, c-format msgid "Trying really trivial in-index merge...\n" msgstr "S'està intentant una fusió molt trivial en l'Ãndex...\n" -#: builtin/merge.c:1426 +#: builtin/merge.c:1425 #, c-format msgid "Nope.\n" msgstr "No.\n" -#: builtin/merge.c:1451 +#: builtin/merge.c:1450 msgid "Already up-to-date. Yeeah!" msgstr "Ja està al dia. Estupend!" -#: builtin/merge.c:1457 +#: builtin/merge.c:1456 msgid "Not possible to fast-forward, aborting." msgstr "No és possible avançar rà pidament, s'està avortant." -#: builtin/merge.c:1480 builtin/merge.c:1559 +#: builtin/merge.c:1479 builtin/merge.c:1558 #, c-format msgid "Rewinding the tree to pristine...\n" msgstr "S'està rebobinant l'arbre a la pristina...\n" -#: builtin/merge.c:1484 +#: builtin/merge.c:1483 #, c-format msgid "Trying merge strategy %s...\n" msgstr "S'està intentant l'estratègia de fusió %s...\n" -#: builtin/merge.c:1550 +#: builtin/merge.c:1549 #, c-format msgid "No merge strategy handled the merge.\n" msgstr "Cap estratègia de fusió ha gestionat la fusió.\n" -#: builtin/merge.c:1552 +#: builtin/merge.c:1551 #, c-format msgid "Merge with strategy %s failed.\n" msgstr "L'estratègia de fusió %s ha fallat.\n" -#: builtin/merge.c:1561 +#: builtin/merge.c:1560 #, c-format msgid "Using the %s to prepare resolving by hand.\n" msgstr "S'està usant el %s per a preparar la resolució a mà .\n" -#: builtin/merge.c:1573 +#: builtin/merge.c:1572 #, c-format msgid "Automatic merge went well; stopped before committing as requested\n" msgstr "" @@ -8926,23 +9554,23 @@ msgstr "git merge-base --is-ancestor <comissió> <comissió>" msgid "git merge-base --fork-point <ref> [<commit>]" msgstr "git merge-base --fork-point <referència> [<comissió>]" -#: builtin/merge-base.c:214 +#: builtin/merge-base.c:217 msgid "output all common ancestors" msgstr "emet tots els avantpassats comuns" -#: builtin/merge-base.c:216 +#: builtin/merge-base.c:219 msgid "find ancestors for a single n-way merge" msgstr "troba els avantpassats per a una sola fusió d'n vies" -#: builtin/merge-base.c:218 +#: builtin/merge-base.c:221 msgid "list revs not reachable from others" msgstr "llista les revisions no abastables d'altres" -#: builtin/merge-base.c:220 +#: builtin/merge-base.c:223 msgid "is the first one ancestor of the other?" msgstr "és la primera un avantpassat de l'altre?" -#: builtin/merge-base.c:222 +#: builtin/merge-base.c:225 msgid "find where <commit> forked from reflog of <ref>" msgstr "" "troba on <comissió> s'ha bifurcat del registre de referències de <referència>" @@ -8987,6 +9615,37 @@ msgstr "no avisis de conflictes" msgid "set labels for file1/orig-file/file2" msgstr "estableix les etiquetes per a fitxer1/fitxer-original/fitxer2" +#: builtin/merge-recursive.c:45 +#, c-format +msgid "unknown option %s" +msgstr "opció desconeguda %s" + +#: builtin/merge-recursive.c:51 +#, c-format +msgid "could not parse object '%s'" +msgstr "no s'ha pogut analitzar l'objecte '%s'" + +#: builtin/merge-recursive.c:55 +#, c-format +msgid "cannot handle more than %d base. Ignoring %s." +msgid_plural "cannot handle more than %d bases. Ignoring %s." +msgstr[0] "no es pot gestionar més d'%d base. S'està ignorant %s." +msgstr[1] "no es poden gestionar més de %d bases. S'està ignorant %s." + +#: builtin/merge-recursive.c:63 +msgid "not handling anything other than two heads merge." +msgstr "no s'està gestionant res a part de la fusió de dos caps." + +#: builtin/merge-recursive.c:69 builtin/merge-recursive.c:71 +#, c-format +msgid "could not resolve ref '%s'" +msgstr "no s'ha pogut resoldre la referència '%s'" + +#: builtin/merge-recursive.c:77 +#, c-format +msgid "Merging %s with %s\n" +msgstr "S'està fusionant %s amb %s\n" + #: builtin/mktree.c:65 msgid "git mktree [-z] [--missing] [--batch]" msgstr "git mktree [-z] [--missing] [--batch]" @@ -9097,43 +9756,43 @@ msgstr "S'està canviant el nom de %s a %s\n" msgid "renaming '%s' failed" msgstr "el canvi del nom de '%s' ha fallat" -#: builtin/name-rev.c:258 +#: builtin/name-rev.c:257 msgid "git name-rev [<options>] <commit>..." msgstr "git name-rev [<opcions>] <comissió>..." -#: builtin/name-rev.c:259 +#: builtin/name-rev.c:258 msgid "git name-rev [<options>] --all" msgstr "git name-rev [<opcions>] --all" -#: builtin/name-rev.c:260 +#: builtin/name-rev.c:259 msgid "git name-rev [<options>] --stdin" msgstr "git name-rev [<opcions>] --stdin" -#: builtin/name-rev.c:312 +#: builtin/name-rev.c:311 msgid "print only names (no SHA-1)" msgstr "imprimeix només els noms (sense SHA-1)" -#: builtin/name-rev.c:313 +#: builtin/name-rev.c:312 msgid "only use tags to name the commits" msgstr "només usa les etiquetes per a anomenar les comissions" -#: builtin/name-rev.c:315 +#: builtin/name-rev.c:314 msgid "only use refs matching <pattern>" msgstr "només usa les referències que coincideixin amb <patró>" -#: builtin/name-rev.c:317 +#: builtin/name-rev.c:316 msgid "list all commits reachable from all refs" msgstr "llista totes les comissions abastables de totes les referències" -#: builtin/name-rev.c:318 +#: builtin/name-rev.c:317 msgid "read from stdin" msgstr "llegeix d'stdin" -#: builtin/name-rev.c:319 +#: builtin/name-rev.c:318 msgid "allow to print `undefined` names (default)" msgstr "permet imprimir els noms `undefined` (per defecte)" -#: builtin/name-rev.c:325 +#: builtin/name-rev.c:324 msgid "dereference tags in the input (internal use)" msgstr "dereferencia les etiquetes en l'entrada (ús intern)" @@ -9269,9 +9928,9 @@ msgid "failed to finish 'show' for object '%s'" msgstr "s'ha fallat en finalitzar 'show' per a l'objecte '%s'" #: builtin/notes.c:194 -msgid "Please supply the note contents using either -m or -F option" +msgid "please supply the note contents using either -m or -F option" msgstr "" -"Si us plau, proveïu els continguts de la nota fent servir l'opció -m o " +"si us plau, proveïu els continguts de la nota fent servir l'opció -m o " "l'opció -F" #: builtin/notes.c:203 @@ -9280,8 +9939,8 @@ msgstr "no s'ha pogut escriure l'objecte de nota" #: builtin/notes.c:205 #, c-format -msgid "The note contents have been left in %s" -msgstr "Els continguts de la nota s'han deixat en %s" +msgid "the note contents have been left in %s" +msgstr "s'han deixat els continguts de la nota en %s" #: builtin/notes.c:233 builtin/tag.c:439 #, c-format @@ -9293,52 +9952,76 @@ msgstr "no es pot llegir '%s'" msgid "could not open or read '%s'" msgstr "no s'ha pogut obrir o llegir '%s'" +#: builtin/notes.c:254 builtin/notes.c:305 builtin/notes.c:307 +#: builtin/notes.c:372 builtin/notes.c:427 builtin/notes.c:513 +#: builtin/notes.c:518 builtin/notes.c:596 builtin/notes.c:659 +#, c-format +msgid "failed to resolve '%s' as a valid ref." +msgstr "s'ha fallat en resoldre '%s' com a referència và lida." + #: builtin/notes.c:257 #, c-format -msgid "Failed to read object '%s'." -msgstr "S'ha fallat en llegir l'objecte '%s'." +msgid "failed to read object '%s'." +msgstr "s'ha fallat en llegir l'objecte '%s'." #: builtin/notes.c:261 #, c-format -msgid "Cannot read note data from non-blob object '%s'." -msgstr "No es pot llegir les dades de node de l'objecte no de blob '%s'." +msgid "cannot read note data from non-blob object '%s'." +msgstr "no es pot llegir les dades de node de l'objecte no de blob '%s'." + +#: builtin/notes.c:301 +#, c-format +msgid "malformed input line: '%s'." +msgstr "lÃnia d'entrada mal formada: '%s'." -#: 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 +#: builtin/notes.c:316 +#, c-format +msgid "failed to copy notes from '%s' to '%s'" +msgstr "s'ha fallat en copiar les notes de '%s' a '%s'" + +#. TRANSLATORS: the first %s will be replaced by a +#. git notes command: 'add', 'merge', 'remove', etc. +#: builtin/notes.c:345 +#, c-format +msgid "refusing to %s notes in %s (outside of refs/notes/)" +msgstr "s'està refusant %s les notes en %s (fora de refs/notes/)" + +#: builtin/notes.c:365 builtin/notes.c:420 builtin/notes.c:496 +#: builtin/notes.c:508 builtin/notes.c:584 builtin/notes.c:652 +#: builtin/notes.c:802 builtin/notes.c:949 builtin/notes.c:970 msgid "too many parameters" msgstr "massa parà metres" -#: builtin/notes.c:376 builtin/notes.c:663 +#: builtin/notes.c:378 builtin/notes.c:665 #, c-format -msgid "No note found for object %s." -msgstr "No s'ha trobat cap nota per a l'objecte %s." +msgid "no note found for object %s." +msgstr "no s'ha trobat cap nota per a l'objecte %s." -#: builtin/notes.c:397 builtin/notes.c:560 +#: builtin/notes.c:399 builtin/notes.c:562 msgid "note contents as a string" msgstr "anota els continguts com a cadena" -#: builtin/notes.c:400 builtin/notes.c:563 +#: builtin/notes.c:402 builtin/notes.c:565 msgid "note contents in a file" msgstr "anota els continguts en un fitxer" -#: builtin/notes.c:403 builtin/notes.c:566 +#: builtin/notes.c:405 builtin/notes.c:568 msgid "reuse and edit specified note object" msgstr "reusa i edita l'objecte de nota especificat" -#: builtin/notes.c:406 builtin/notes.c:569 +#: builtin/notes.c:408 builtin/notes.c:571 msgid "reuse specified note object" msgstr "reusa l'objecte de nota especificat" -#: builtin/notes.c:409 builtin/notes.c:572 +#: builtin/notes.c:411 builtin/notes.c:574 msgid "allow storing empty note" msgstr "permet l'emmagatzematge d'una nota buida" -#: builtin/notes.c:410 builtin/notes.c:481 +#: builtin/notes.c:412 builtin/notes.c:483 msgid "replace existing notes" msgstr "reemplaça les notes existents" -#: builtin/notes.c:435 +#: builtin/notes.c:437 #, c-format msgid "" "Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite " @@ -9347,30 +10030,30 @@ msgstr "" "No es pot afegir les notes. S'han trobat notes existents de l'objecte %s. " "Useu '-f' per a sobreescriure les notes existents." -#: builtin/notes.c:450 builtin/notes.c:529 +#: builtin/notes.c:452 builtin/notes.c:531 #, c-format msgid "Overwriting existing notes for object %s\n" msgstr "S'estan sobreescrivint les notes existents de l'objecte %s\n" -#: builtin/notes.c:461 builtin/notes.c:622 builtin/notes.c:887 +#: builtin/notes.c:463 builtin/notes.c:624 builtin/notes.c:889 #, c-format msgid "Removing note for object %s\n" msgstr "S'està eliminant la nota de l'objecte %s\n" -#: builtin/notes.c:482 +#: builtin/notes.c:484 msgid "read objects from stdin" msgstr "llegeix els objectes des d'stdin" -#: builtin/notes.c:484 +#: builtin/notes.c:486 msgid "load rewriting config for <command> (implies --stdin)" msgstr "" "carrega la configuració de reescriptura per a <ordre> (implica --stdin)" -#: builtin/notes.c:502 +#: builtin/notes.c:504 msgid "too few parameters" msgstr "hi ha massa pocs parà metres" -#: builtin/notes.c:523 +#: builtin/notes.c:525 #, c-format msgid "" "Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite " @@ -9379,12 +10062,12 @@ msgstr "" "No es pot copiar les notes. S'han trobat notes existents de l'objecte %s. " "Useu '-f' per a sobreescriure les notes existents." -#: builtin/notes.c:535 +#: builtin/notes.c:537 #, c-format -msgid "Missing notes on source object %s. Cannot copy." -msgstr "Manquen notes a l'objecte font %s. No es pot copiar." +msgid "missing notes on source object %s. Cannot copy." +msgstr "manquen notes a l'objecte font %s. No es pot copiar." -#: builtin/notes.c:587 +#: builtin/notes.c:589 #, c-format msgid "" "The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n" @@ -9393,20 +10076,52 @@ msgstr "" "S'han desaprovat les opcions -m/-F/-c/-C en favor de la subordre 'edit'.\n" "Si us plau, useu 'git notes add -f -m/-F/-c/-C' en lloc d'això.\n" -#: builtin/notes.c:753 +#: builtin/notes.c:685 +msgid "failed to delete ref NOTES_MERGE_PARTIAL" +msgstr "s'ha fallat en suprimir la referència NOTES_MERGE_PARTIAL" + +#: builtin/notes.c:687 +msgid "failed to delete ref NOTES_MERGE_REF" +msgstr "s'ha fallat en suprimir la referència NOTES_MERGE_REF" + +#: builtin/notes.c:689 +msgid "failed to remove 'git notes merge' worktree" +msgstr "s'ha fallat en eliminar l'arbre de treball de 'git notes merge'" + +#: builtin/notes.c:709 +msgid "failed to read ref NOTES_MERGE_PARTIAL" +msgstr "s'ha fallat en llegir la referència NOTES_MERGE_PARTIAL" + +#: builtin/notes.c:711 +msgid "could not find commit from NOTES_MERGE_PARTIAL." +msgstr "no s'ha pogut trobar cap comissió de NOTES_MERGE_PARTIAL." + +#: builtin/notes.c:713 +msgid "could not parse commit from NOTES_MERGE_PARTIAL." +msgstr "no s'ha pogut analitzar la comissió de NOTES_MERGE_PARTIAL." + +#: builtin/notes.c:726 +msgid "failed to resolve NOTES_MERGE_REF" +msgstr "s'ha fallat en resoldre NOTES_MERGE_REF" + +#: builtin/notes.c:729 +msgid "failed to finalize notes merge" +msgstr "s'ha fallat en finalitzar la fusió de notes" + +#: builtin/notes.c:755 #, c-format msgid "unknown notes merge strategy %s" msgstr "estratègia de fusió de notes desconeguda %s" -#: builtin/notes.c:769 +#: builtin/notes.c:771 msgid "General options" msgstr "Opcions generals" -#: builtin/notes.c:771 +#: builtin/notes.c:773 msgid "Merge options" msgstr "Opcions de fusió" -#: builtin/notes.c:773 +#: builtin/notes.c:775 msgid "" "resolve notes conflicts using the given strategy (manual/ours/theirs/union/" "cat_sort_uniq)" @@ -9414,47 +10129,47 @@ msgstr "" "resol els conflictes de nota usant l'estratègia donada (manual/ours/theirs/" "union/cat_sort_uniq)" -#: builtin/notes.c:775 +#: builtin/notes.c:777 msgid "Committing unmerged notes" msgstr "S'estan cometent les notes sense fusionar" -#: builtin/notes.c:777 +#: builtin/notes.c:779 msgid "finalize notes merge by committing unmerged notes" msgstr "finalitza la fusió de notes cometent les notes sense fusionar" -#: builtin/notes.c:779 +#: builtin/notes.c:781 msgid "Aborting notes merge resolution" msgstr "S'està avortant la resolució de fusió de notes" -#: builtin/notes.c:781 +#: builtin/notes.c:783 msgid "abort notes merge" msgstr "avorta la fusió de notes" -#: builtin/notes.c:792 +#: builtin/notes.c:794 msgid "cannot mix --commit, --abort or -s/--strategy" msgstr "no es pot combinar --commit, --abort i -s/--strategy" -#: builtin/notes.c:797 -msgid "Must specify a notes ref to merge" -msgstr "Cal especificar una referència de notes a fusionar" +#: builtin/notes.c:799 +msgid "must specify a notes ref to merge" +msgstr "cal especificar una referència de notes a fusionar" -#: builtin/notes.c:821 +#: builtin/notes.c:823 #, c-format -msgid "Unknown -s/--strategy: %s" +msgid "unknown -s/--strategy: %s" msgstr "-s/--strategy desconeguda: %s" -#: builtin/notes.c:858 +#: builtin/notes.c:860 #, c-format -msgid "A notes merge into %s is already in-progress at %s" -msgstr "Una fusió de notes a %s ja està en curs a %s" +msgid "a notes merge into %s is already in-progress at %s" +msgstr "una fusió de notes a %s ja està en curs a %s" -#: builtin/notes.c:861 +#: builtin/notes.c:863 #, c-format -msgid "Failed to store link to current notes ref (%s)" +msgid "failed to store link to current notes ref (%s)" msgstr "" -"S'ha fallat en emmagatzemar l'enllaç a la referència de notes actual (%s)" +"s'ha fallat en emmagatzemar l'enllaç a la referència de notes actual (%s)" -#: builtin/notes.c:863 +#: builtin/notes.c:865 #, c-format msgid "" "Automatic notes merge failed. Fix conflicts in %s and commit the result with " @@ -9465,239 +10180,235 @@ msgstr "" "cometeu el resultat amb 'git notes merge --commit', o avorteu la fusió amb " "'git notes merge --abort'.\n" -#: builtin/notes.c:885 +#: builtin/notes.c:887 #, c-format msgid "Object %s has no note\n" msgstr "L'objecte %s no té cap nota\n" -#: builtin/notes.c:897 +#: builtin/notes.c:899 msgid "attempt to remove non-existent note is not an error" msgstr "l'intent d'eliminar una nota no existent no és un error" -#: builtin/notes.c:900 +#: builtin/notes.c:902 msgid "read object names from the standard input" msgstr "llegeix els noms d'objecte des de l'entrada està ndard" -#: builtin/notes.c:938 builtin/prune.c:105 builtin/worktree.c:127 +#: builtin/notes.c:940 builtin/prune.c:105 builtin/worktree.c:127 msgid "do not remove, show only" msgstr "no eliminis, només mostra" -#: builtin/notes.c:939 +#: builtin/notes.c:941 msgid "report pruned notes" msgstr "informa de notes podades" -#: builtin/notes.c:981 +#: builtin/notes.c:983 msgid "notes-ref" msgstr "referència de notes" -#: builtin/notes.c:982 +#: builtin/notes.c:984 msgid "use notes from <notes-ref>" msgstr "usa les notes de <referència-de-notes>" -#: builtin/notes.c:1017 builtin/remote.c:1623 +#: builtin/notes.c:1019 #, c-format -msgid "Unknown subcommand: %s" -msgstr "Subordre desconeguda: %s" +msgid "unknown subcommand: %s" +msgstr "subordre desconeguda: %s" -#: builtin/pack-objects.c:28 +#: builtin/pack-objects.c:29 msgid "" "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]" msgstr "" "git pack-objects --stdout [<opcions>...] [< <llista-de-referències> | < " "<llista-de-objectes>]" -#: builtin/pack-objects.c:29 +#: builtin/pack-objects.c:30 msgid "" "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]" msgstr "" "git pack-objects [<opcions>...] <nom-base> [< <llista-de-referències> | < " "<llista-de-objectes>]" -#: builtin/pack-objects.c:177 builtin/pack-objects.c:180 +#: builtin/pack-objects.c:179 builtin/pack-objects.c:182 #, c-format msgid "deflate error (%d)" msgstr "error de deflació (%d)" -#: builtin/pack-objects.c:766 +#: builtin/pack-objects.c:768 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit" msgstr "" "s'està inhabilitant l'escriptura de mapes de bits, es divideixen els paquets " "a causa de pack.packSizeLimit" -#: builtin/pack-objects.c:779 +#: builtin/pack-objects.c:781 msgid "Writing objects" msgstr "S'estan escrivint els objectes" -#: builtin/pack-objects.c:1037 +#: builtin/pack-objects.c:1070 msgid "disabling bitmap writing, as some objects are not being packed" msgstr "" "s'està inhabilitant l'escriptura de mapes de bits, perquè alguns objectes no " "s'empaqueten" -#: builtin/pack-objects.c:2197 +#: builtin/pack-objects.c:2346 msgid "Compressing objects" msgstr "S'estan comprimint objectes" -#: builtin/pack-objects.c:2611 +#: builtin/pack-objects.c:2759 #, c-format msgid "unsupported index version %s" msgstr "versió d'Ãndex no compatible %s" -#: builtin/pack-objects.c:2615 +#: builtin/pack-objects.c:2763 #, c-format msgid "bad index version '%s'" msgstr "versió d'Ãndex dolenta '%s'" -#: builtin/pack-objects.c:2645 +#: builtin/pack-objects.c:2793 msgid "do not show progress meter" msgstr "no mostris l'indicador de progrés" -#: builtin/pack-objects.c:2647 +#: builtin/pack-objects.c:2795 msgid "show progress meter" msgstr "mostra l'indicador de progrés" -#: builtin/pack-objects.c:2649 +#: builtin/pack-objects.c:2797 msgid "show progress meter during object writing phase" msgstr "mostra l'indicador de progrés durant la fase d'escriptura d'objectes" -#: builtin/pack-objects.c:2652 +#: builtin/pack-objects.c:2800 msgid "similar to --all-progress when progress meter is shown" msgstr "similar a --all-progress quan l'indicador de progrés es mostra" -#: builtin/pack-objects.c:2653 +#: builtin/pack-objects.c:2801 msgid "version[,offset]" msgstr "versió[,desplaçament]" -#: builtin/pack-objects.c:2654 +#: builtin/pack-objects.c:2802 msgid "write the pack index file in the specified idx format version" msgstr "" "escriu el fitxer d'Ãndex de paquet en la versió de format d'Ãndex " "especificada" -#: builtin/pack-objects.c:2657 +#: builtin/pack-objects.c:2805 msgid "maximum size of each output pack file" msgstr "mida mà xima de cada fitxer de paquet de sortida" -#: builtin/pack-objects.c:2659 +#: builtin/pack-objects.c:2807 msgid "ignore borrowed objects from alternate object store" msgstr "" "ignora els objectes prestats d'un emmagatzemament d'objectes alternatiu" -#: builtin/pack-objects.c:2661 +#: builtin/pack-objects.c:2809 msgid "ignore packed objects" msgstr "ignora els objectes empaquetats" -#: builtin/pack-objects.c:2663 +#: builtin/pack-objects.c:2811 msgid "limit pack window by objects" msgstr "limita la finestra d'empaquetament per objectes" -#: builtin/pack-objects.c:2665 +#: builtin/pack-objects.c:2813 msgid "limit pack window by memory in addition to object limit" msgstr "" "limita la finestra d'empaquetament per memòria a més del lÃmit d'objectes" -#: builtin/pack-objects.c:2667 +#: builtin/pack-objects.c:2815 msgid "maximum length of delta chain allowed in the resulting pack" msgstr "longitud mà xima de la cadena de deltes permesa en el paquet resultant" -#: builtin/pack-objects.c:2669 +#: builtin/pack-objects.c:2817 msgid "reuse existing deltas" msgstr "reusa les deltes existents" -#: builtin/pack-objects.c:2671 +#: builtin/pack-objects.c:2819 msgid "reuse existing objects" msgstr "reusa els objectes existents" -#: builtin/pack-objects.c:2673 +#: builtin/pack-objects.c:2821 msgid "use OFS_DELTA objects" msgstr "usa objectes OFS_DELTA" -#: builtin/pack-objects.c:2675 +#: builtin/pack-objects.c:2823 msgid "use threads when searching for best delta matches" msgstr "usa fils en cercar les millores coincidències de delta" -#: builtin/pack-objects.c:2677 +#: builtin/pack-objects.c:2825 msgid "do not create an empty pack output" msgstr "no creïs una emissió de paquet buida" -#: builtin/pack-objects.c:2679 +#: builtin/pack-objects.c:2827 msgid "read revision arguments from standard input" msgstr "llegeix els parà metres de revisió des de l'entrada està ndard" -#: builtin/pack-objects.c:2681 +#: builtin/pack-objects.c:2829 msgid "limit the objects to those that are not yet packed" msgstr "limita els objectes als quals encara no s'hagin empaquetat" -#: builtin/pack-objects.c:2684 +#: builtin/pack-objects.c:2832 msgid "include objects reachable from any reference" msgstr "inclou els objectes abastables de qualsevulla referència" -#: builtin/pack-objects.c:2687 +#: builtin/pack-objects.c:2835 msgid "include objects referred by reflog entries" msgstr "" "inclou els objectes als quals facin referència les entrades del registre de " "referències" -#: builtin/pack-objects.c:2690 +#: builtin/pack-objects.c:2838 msgid "include objects referred to by the index" msgstr "inclou els objectes als quals faci referència l'Ãndex" -#: builtin/pack-objects.c:2693 +#: builtin/pack-objects.c:2841 msgid "output pack to stdout" msgstr "emet el paquet a stdout" -#: builtin/pack-objects.c:2695 +#: builtin/pack-objects.c:2843 msgid "include tag objects that refer to objects to be packed" msgstr "" "inclou els objectes d'etiqueta que facin referència als objectes a empaquetar" -#: builtin/pack-objects.c:2697 +#: builtin/pack-objects.c:2845 msgid "keep unreachable objects" msgstr "retén els objectes inabastables" -#: builtin/pack-objects.c:2699 +#: builtin/pack-objects.c:2847 msgid "pack loose unreachable objects" msgstr "empaqueta els objectes inabastables solts" -#: builtin/pack-objects.c:2700 parse-options.h:142 -msgid "time" -msgstr "hora" - -#: builtin/pack-objects.c:2701 +#: builtin/pack-objects.c:2849 msgid "unpack unreachable objects newer than <time>" msgstr "desempaqueta els objectes inabastables més nous que <hora>" -#: builtin/pack-objects.c:2704 +#: builtin/pack-objects.c:2852 msgid "create thin packs" msgstr "crea paquets prims" -#: builtin/pack-objects.c:2706 +#: builtin/pack-objects.c:2854 msgid "create packs suitable for shallow fetches" msgstr "crea paquets adequats per a les obtencions superficials" -#: builtin/pack-objects.c:2708 +#: builtin/pack-objects.c:2856 msgid "ignore packs that have companion .keep file" msgstr "ignora els paquets que tinguin un fitxer .keep corresponent" -#: builtin/pack-objects.c:2710 +#: builtin/pack-objects.c:2858 msgid "pack compression level" msgstr "nivell de compressió de paquet" -#: builtin/pack-objects.c:2712 +#: builtin/pack-objects.c:2860 msgid "do not hide commits by grafts" msgstr "no amaguis les comissions per empelt" -#: builtin/pack-objects.c:2714 +#: builtin/pack-objects.c:2862 msgid "use a bitmap index if available to speed up counting objects" msgstr "" "usa un Ãndex de mapa de bits, si està disponible, per a accelerar el " "recompte d'objectes" -#: builtin/pack-objects.c:2716 +#: builtin/pack-objects.c:2864 msgid "write a bitmap index together with the pack index" msgstr "escriu un Ãndex de mapa de bits junt amb l'Ãndex de paquet" -#: builtin/pack-objects.c:2829 +#: builtin/pack-objects.c:2993 msgid "Counting objects" msgstr "S'estan comptant els objectes" @@ -9737,53 +10448,45 @@ msgstr "fes caducar els objectes més vells que <hora>" msgid "cannot prune in a precious-objects repo" msgstr "no es pot podar en un dipòsit d'objectes preciosos" -#: builtin/pull.c:72 +#: builtin/pull.c:51 builtin/pull.c:53 +#, c-format +msgid "Invalid value for %s: %s" +msgstr "Valor no và lid per a %s: %s" + +#: builtin/pull.c:73 msgid "git pull [<options>] [<repository> [<refspec>...]]" -msgstr "git pull [opcions] [<dipòsit> [<especificació-de-referència>...]]" +msgstr "git pull [<opcions>] [<dipòsit> [<especificació-de-referència>...]]" -#: builtin/pull.c:120 +#: builtin/pull.c:121 msgid "Options related to merging" msgstr "Opcions relacionades amb fusionar" -#: builtin/pull.c:123 +#: builtin/pull.c:124 msgid "incorporate changes by rebasing rather than merging" msgstr "incorpora els canvis per rebasar en lloc de fusionar" -#: builtin/pull.c:147 builtin/revert.c:101 +#: builtin/pull.c:148 builtin/revert.c:101 msgid "allow fast-forward" msgstr "permet l'avanç rà pid" -#: builtin/pull.c:156 +#: builtin/pull.c:157 msgid "automatically stash/stash pop before and after rebase" msgstr "automà ticament emmagatzema/desempila abans i després de rebasament" -#: builtin/pull.c:172 +#: builtin/pull.c:173 msgid "Options related to fetching" msgstr "Opcions relacionades amb obtenir" -#: builtin/pull.c:194 +#: builtin/pull.c:195 msgid "number of submodules pulled in parallel" msgstr "nombre de submòduls baixats en paral·lel" -#: builtin/pull.c:283 +#: builtin/pull.c:284 #, c-format msgid "Invalid value for pull.ff: %s" msgstr "Valor no và lid per a pull.ff: %s" -#: builtin/pull.c:379 git-sh-setup.sh:226 -msgid "Cannot pull with rebase: You have unstaged changes." -msgstr "No es pot baixar amb rebasament: Teniu canvis no allistats." - -#: builtin/pull.c:385 git-sh-setup.sh:252 -msgid "Additionally, your index contains uncommitted changes." -msgstr "Addicionalment, el vostre Ãndex conté canvis sense cometre." - -#: builtin/pull.c:387 git-sh-setup.sh:245 -msgid "Cannot pull with rebase: Your index contains uncommitted changes." -msgstr "" -"No es pot baixar amb rebasament: El vostre Ãndex conté canvis sense cometre." - -#: builtin/pull.c:463 +#: builtin/pull.c:397 msgid "" "There is no candidate for rebasing against among the refs that you just " "fetched." @@ -9791,13 +10494,13 @@ msgstr "" "No hi ha cap candidat sobre el qual rebasar entre les referències que acabeu " "d'obtenir." -#: builtin/pull.c:465 +#: builtin/pull.c:399 msgid "" "There are no candidates for merging among the refs that you just fetched." msgstr "" "No hi ha candidats per a fusionar entre les referències que acabeu d'obtenir." -#: builtin/pull.c:466 +#: builtin/pull.c:400 msgid "" "Generally this means that you provided a wildcard refspec which had no\n" "matches on the remote end." @@ -9805,7 +10508,7 @@ msgstr "" "Generalment això vol dir que heu proveït una especificació de\n" "referència de comodà que no tenia cap coincidència en el costat remot." -#: builtin/pull.c:469 +#: builtin/pull.c:403 #, c-format msgid "" "You asked to pull from the remote '%s', but did not specify\n" @@ -9816,44 +10519,44 @@ msgstr "" "Perquè aquest no és el remot configurat per defecte per a la vostra\n" "branca actual, heu d'especificar una branca en la lÃnia d'ordres." -#: builtin/pull.c:474 git-parse-remote.sh:73 +#: builtin/pull.c:408 git-parse-remote.sh:73 msgid "You are not currently on a branch." msgstr "Actualment no sou en cap branca." -#: builtin/pull.c:476 builtin/pull.c:491 git-parse-remote.sh:79 +#: builtin/pull.c:410 builtin/pull.c:425 git-parse-remote.sh:79 msgid "Please specify which branch you want to rebase against." msgstr "Si us plau, especifiqueu sobre què branca voleu rebasar." -#: builtin/pull.c:478 builtin/pull.c:493 git-parse-remote.sh:82 +#: builtin/pull.c:412 builtin/pull.c:427 git-parse-remote.sh:82 msgid "Please specify which branch you want to merge with." msgstr "Si us plau, especifiqueu amb què branca voleu fusionar." -#: builtin/pull.c:479 builtin/pull.c:494 +#: builtin/pull.c:413 builtin/pull.c:428 msgid "See git-pull(1) for details." msgstr "Vegeu git-pull(1) per detalls." -#: builtin/pull.c:481 builtin/pull.c:487 builtin/pull.c:496 +#: builtin/pull.c:415 builtin/pull.c:421 builtin/pull.c:430 #: git-parse-remote.sh:64 msgid "<remote>" msgstr "<remot>" -#: builtin/pull.c:481 builtin/pull.c:496 builtin/pull.c:501 git-rebase.sh:451 +#: builtin/pull.c:415 builtin/pull.c:430 builtin/pull.c:435 git-rebase.sh:451 #: git-parse-remote.sh:65 msgid "<branch>" msgstr "<branca>" -#: builtin/pull.c:489 git-parse-remote.sh:75 +#: builtin/pull.c:423 git-parse-remote.sh:75 msgid "There is no tracking information for the current branch." msgstr "No hi ha cap informació de seguiment per a la branca actual." -#: builtin/pull.c:498 git-parse-remote.sh:95 +#: builtin/pull.c:432 git-parse-remote.sh:95 msgid "" "If you wish to set tracking information for this branch you can do so with:" msgstr "" "Si voleu establir informació de seguiment per a aquesta branca, podeu fer-ho " "amb:" -#: builtin/pull.c:503 +#: builtin/pull.c:437 #, c-format msgid "" "Your configuration specifies to merge with the ref '%s'\n" @@ -9862,20 +10565,28 @@ msgstr "" "La vostra configuració especifica fusionar amb la referència '%s'\n" "del remot, però no s'ha obtingut tal referència." -#: builtin/pull.c:820 +#: builtin/pull.c:754 msgid "ignoring --verify-signatures for rebase" msgstr "s'està ignorant --verify-signatures per a rebasar" -#: builtin/pull.c:867 +#: builtin/pull.c:801 msgid "--[no-]autostash option is only valid with --rebase." msgstr "l'opció --[no-]-autostash és và lid només amb --rebase." -#: builtin/pull.c:875 +#: builtin/pull.c:809 msgid "Updating an unborn branch with changes added to the index." msgstr "" "S'està actualitzant una branca no nascuda amb canvis afegits a l'Ãndex." -#: builtin/pull.c:903 +#: builtin/pull.c:812 +msgid "pull with rebase" +msgstr "baixar amb rebasament" + +#: builtin/pull.c:813 +msgid "please commit or stash them." +msgstr "si us plau, cometeu-los o emmagatzemeu-los." + +#: builtin/pull.c:838 #, c-format msgid "" "fetch updated the current branch head.\n" @@ -9886,7 +10597,7 @@ msgstr "" "s'està avançant rà pidament el vostre arbre de treball des de\n" "la comissió %s." -#: builtin/pull.c:908 +#: builtin/pull.c:843 #, c-format msgid "" "Cannot fast-forward your working tree.\n" @@ -9904,11 +10615,11 @@ msgstr "" "$ git reset --hard\n" "per a recuperar." -#: builtin/pull.c:923 +#: builtin/pull.c:858 msgid "Cannot merge multiple branches into empty head." msgstr "No es pot fusionar múltiples branques a un cap buit." -#: builtin/pull.c:927 +#: builtin/pull.c:862 msgid "Cannot rebase onto multiple branches." msgstr "No es pot rebasar sobre múltiples branques." @@ -10286,15 +10997,68 @@ msgstr "salta l'aplicació del filtre d'agafament parcial" msgid "debug unpack-trees" msgstr "depura unpack-trees" -#: builtin/receive-pack.c:25 +#: builtin/receive-pack.c:26 msgid "git receive-pack <git-dir>" msgstr "git receive-pack <git-dir>" -#: builtin/receive-pack.c:1843 +#: builtin/receive-pack.c:793 +msgid "" +"By default, updating the current branch in a non-bare repository\n" +"is denied, because it will make the index and work tree inconsistent\n" +"with what you pushed, and will require 'git reset --hard' to match\n" +"the work tree to HEAD.\n" +"\n" +"You can set 'receive.denyCurrentBranch' configuration variable to\n" +"'ignore' or 'warn' in the remote repository to allow pushing into\n" +"its current branch; however, this is not recommended unless you\n" +"arranged to update its work tree to match what you pushed in some\n" +"other way.\n" +"\n" +"To squelch this message and still keep the default behaviour, set\n" +"'receive.denyCurrentBranch' configuration variable to 'refuse'." +msgstr "" +"Per defecte, es denega actualizar la branca actual en un dipòsit no\n" +"nu, perquè feria l'Ãndex i l'arbre de treball inconsistents amb el\n" +"que hà giu pujat, i requerria 'git reset --hard' per a fer que\n" +"l'arbre de treball coincideixi amb HEAD.\n" +"\n" +"Podeu establir la variable de configuració\n" +"'receive.denyCurrentBranch' a 'ignore' o 'warn' en el dipòsit remot\n" +"per a permetre pujar a la seva branca actual; no obstant, no es\n" +"recomana això a menys que hà giu decidit actualitzar el seu arbre en\n" +"alguna altra manera per a coincidar amb el que hà giu pujat.\n" +"\n" +"Per a silenciar aquest missatge i encara retenir el comportament\n" +"predeterminat, establiu la variable de configuració\n" +"'receive.denyCurrentBranch' a 'refuse'." + +#: builtin/receive-pack.c:813 +msgid "" +"By default, deleting the current branch is denied, because the next\n" +"'git clone' won't result in any file checked out, causing confusion.\n" +"\n" +"You can set 'receive.denyDeleteCurrent' configuration variable to\n" +"'warn' or 'ignore' in the remote repository to allow deleting the\n" +"current branch, with or without a warning message.\n" +"\n" +"To squelch this message, you can set it to 'refuse'." +msgstr "" +"Per defecte, es denega suprimir la branca actual, perquè el\n" +"'git clone' següent no resultarà en cap fitxer agafat, causant\n" +"confusió.\n" +"\n" +"Podeu establir la variable de configuració\n" +"'receive.denyDeleteCurrent' a 'warn' o 'ignore' en el dipòsit remot\n" +"per a permetre suprimir la branca actual, amb o sense un missatge\n" +"d'advertència.\n" +"\n" +"Per a silenciar aquest missatge, podeu establir-la a 'refuse'." + +#: builtin/receive-pack.c:1883 msgid "quiet" msgstr "callat" -#: builtin/receive-pack.c:1857 +#: builtin/receive-pack.c:1897 msgid "You must specify a directory." msgstr "Heu d'especificar un directori." @@ -10628,7 +11392,7 @@ msgstr "* remot %s" msgid " Fetch URL: %s" msgstr " URL d'obtenció: %s" -#: builtin/remote.c:1143 builtin/remote.c:1156 builtin/remote.c:1296 +#: builtin/remote.c:1143 builtin/remote.c:1156 builtin/remote.c:1295 msgid "(no URL)" msgstr "(sense URL)" @@ -10666,7 +11430,7 @@ msgid_plural " Remote branches:%s" msgstr[0] " Branca remota:%s" msgstr[1] " Branques remotes:%s" -#: builtin/remote.c:1179 builtin/remote.c:1206 +#: builtin/remote.c:1179 builtin/remote.c:1205 msgid " (status not queried)" msgstr " (estat no consultat)" @@ -10680,140 +11444,145 @@ msgstr[1] " Branques locals configurades per a 'git pull':" msgid " Local refs will be mirrored by 'git push'" msgstr " 'git push' reflectirà les referències locals" -#: builtin/remote.c:1203 +#: builtin/remote.c:1202 #, 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 per a 'git push'%s:" msgstr[1] " Referències locals configurades per a 'git push'%s:" -#: builtin/remote.c:1224 +#: builtin/remote.c:1223 msgid "set refs/remotes/<name>/HEAD according to remote" msgstr "estableix refs/remotes/<name>/HEAD segons el remot" -#: builtin/remote.c:1226 +#: builtin/remote.c:1225 msgid "delete refs/remotes/<name>/HEAD" msgstr "suprimeix refs/remotes/<name>/HEAD" -#: builtin/remote.c:1241 +#: builtin/remote.c:1240 msgid "Cannot determine remote HEAD" msgstr "No es pot determinar el HEAD remot" -#: builtin/remote.c:1243 +#: builtin/remote.c:1242 msgid "Multiple remote HEAD branches. Please choose one explicitly with:" msgstr "" "Múltiples branques de HEAD remotes. Si us plau, trieu-ne una explÃcitament " "amb:" -#: builtin/remote.c:1253 +#: builtin/remote.c:1252 #, c-format msgid "Could not delete %s" msgstr "No s'ha pogut suprimir %s" -#: builtin/remote.c:1261 +#: builtin/remote.c:1260 #, c-format msgid "Not a valid ref: %s" msgstr "No és una referència và lida: %s" -#: builtin/remote.c:1263 +#: builtin/remote.c:1262 #, c-format msgid "Could not setup %s" msgstr "No s'ha pogut configurar %s" -#: builtin/remote.c:1281 +#: builtin/remote.c:1280 #, c-format msgid " %s will become dangling!" msgstr " %s es tornarà penjant!" -#: builtin/remote.c:1282 +#: builtin/remote.c:1281 #, c-format msgid " %s has become dangling!" msgstr " %s s'ha tornat penjant!" -#: builtin/remote.c:1292 +#: builtin/remote.c:1291 #, c-format msgid "Pruning %s" msgstr "S'està podant %s" -#: builtin/remote.c:1293 +#: builtin/remote.c:1292 #, c-format msgid "URL: %s" msgstr "URL: %s" -#: builtin/remote.c:1309 +#: builtin/remote.c:1308 #, c-format msgid " * [would prune] %s" msgstr " * [podaria] %s" -#: builtin/remote.c:1312 +#: builtin/remote.c:1311 #, c-format msgid " * [pruned] %s" msgstr " * [podat] %s" -#: builtin/remote.c:1357 +#: builtin/remote.c:1356 msgid "prune remotes after fetching" msgstr "poda els remots després d'obtenir-los" -#: builtin/remote.c:1420 builtin/remote.c:1474 builtin/remote.c:1542 +#: builtin/remote.c:1419 builtin/remote.c:1473 builtin/remote.c:1541 #, c-format msgid "No such remote '%s'" msgstr "No hi ha tal remot '%s'" -#: builtin/remote.c:1436 +#: builtin/remote.c:1435 msgid "add branch" msgstr "afegeix branca" -#: builtin/remote.c:1443 +#: builtin/remote.c:1442 msgid "no remote specified" msgstr "cap remot especificat" -#: builtin/remote.c:1460 +#: builtin/remote.c:1459 msgid "query push URLs rather than fetch URLs" -msgstr "consulta els URL de pujada en lloc dels URL d'obteniment" +msgstr "consulta els URL de pujada en lloc dels URL d'obtenció" -#: builtin/remote.c:1462 +#: builtin/remote.c:1461 msgid "return all URLs" msgstr "retorna tots els URL" -#: builtin/remote.c:1490 +#: builtin/remote.c:1489 #, c-format msgid "no URLs configured for remote '%s'" msgstr "cap URL configurat per al remot '%s'" -#: builtin/remote.c:1516 +#: builtin/remote.c:1515 msgid "manipulate push URLs" msgstr "manipula els URL de pujada" -#: builtin/remote.c:1518 +#: builtin/remote.c:1517 msgid "add URL" msgstr "afegeix URL" -#: builtin/remote.c:1520 +#: builtin/remote.c:1519 msgid "delete URLs" msgstr "suprimeix URLs" -#: builtin/remote.c:1527 +#: builtin/remote.c:1526 msgid "--add --delete doesn't make sense" msgstr "--add --delete no té sentit" -#: builtin/remote.c:1568 +#: builtin/remote.c:1567 #, c-format msgid "Invalid old URL pattern: %s" msgstr "Patró d'URL antic no và lid: %s" -#: builtin/remote.c:1576 +#: builtin/remote.c:1575 #, c-format msgid "No such URL found: %s" msgstr "No s'ha trobat tal URL: %s" -#: builtin/remote.c:1578 +#: builtin/remote.c:1577 msgid "Will not delete all non-push URLs" msgstr "No se suprimiran tots els URL no de pujada" -#: builtin/remote.c:1592 +#: builtin/remote.c:1591 msgid "be verbose; must be placed before a subcommand" msgstr "sigues detallat; s'ha de col·locar abans d'una subordre" +#: builtin/remote.c:1622 +#, c-format +msgid "Unknown subcommand: %s" +msgstr "Subordre desconeguda: %s" + #: builtin/repack.c:17 msgid "git repack [<options>]" msgstr "git repack [<opcions>]" @@ -11002,8 +11771,8 @@ msgstr "" "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<comissió>]" #: builtin/reset.c:27 -msgid "git reset [-q] <tree-ish> [--] <paths>..." -msgstr "git reset [-q] <arbre> [--] <camins>..." +msgid "git reset [-q] [<tree-ish>] [--] <paths>..." +msgstr "git reset [-q] [<arbre>] [--] <camins>..." #: builtin/reset.c:28 msgid "git reset --patch [<tree-ish>] [--] [<paths>...]" @@ -11123,27 +11892,27 @@ msgstr "No s'ha pogut restablir el fitxer d'Ãndex a la revisió '%s'." msgid "Could not write new index file." msgstr "No s'ha pogut escriure el fitxer d'Ãndex nou." -#: builtin/rev-list.c:362 +#: builtin/rev-list.c:354 msgid "rev-list does not support display of notes" msgstr "el rev-list no permet mostrar notes" -#: builtin/rev-parse.c:358 +#: builtin/rev-parse.c:386 msgid "git rev-parse --parseopt [<options>] -- [<args>...]" msgstr "git rev-parse --parseopt [<opcions>] -- [<parà metres>...]" -#: builtin/rev-parse.c:363 +#: builtin/rev-parse.c:391 msgid "keep the `--` passed as an arg" msgstr "retén el `--` passat com a parà metre" -#: builtin/rev-parse.c:365 +#: builtin/rev-parse.c:393 msgid "stop parsing after the first non-option argument" msgstr "deixa d'analitzar després del primer parà metre no d'opció" -#: builtin/rev-parse.c:368 +#: builtin/rev-parse.c:396 msgid "output in stuck long form" msgstr "emet en forma llarga enganxada" -#: builtin/rev-parse.c:499 +#: builtin/rev-parse.c:527 msgid "" "git rev-parse --parseopt [<options>] -- [<args>...]\n" " or: git rev-parse --sq-quote [<arg>...]\n" @@ -11235,7 +12004,7 @@ msgstr "retén les comissions redundants i buides" msgid "revert failed" msgstr "la reversió ha fallat" -#: builtin/revert.c:207 +#: builtin/revert.c:205 msgid "cherry-pick failed" msgstr "el recull de cireres ha fallat" @@ -11406,70 +12175,125 @@ msgstr "" msgid "git show-branch (-g | --reflog)[=<n>[,<base>]] [--list] [<ref>]" msgstr "git show-branch (-g | --reflog)[=<n>[,<base>]] [--list] [<referència>]" -#: builtin/show-branch.c:640 +#: builtin/show-branch.c:375 +#, c-format +msgid "ignoring %s; cannot handle more than %d ref" +msgid_plural "ignoring %s; cannot handle more than %d refs" +msgstr[0] "s'està ignorant %s; no es pot gestionar més de %d referència" +msgstr[1] "s'està ignorant %s; no es poden gestionar més de %d referències" + +#: builtin/show-branch.c:541 +#, c-format +msgid "no matching refs with %s" +msgstr "no hi ha referències coincidents amb %s" + +#: builtin/show-branch.c:639 msgid "show remote-tracking and local branches" msgstr "mostra les branques amb seguiment remot i les locals" -#: builtin/show-branch.c:642 +#: builtin/show-branch.c:641 msgid "show remote-tracking branches" msgstr "mostra les branques amb seguiment remot" -#: builtin/show-branch.c:644 +#: builtin/show-branch.c:643 msgid "color '*!+-' corresponding to the branch" msgstr "colora '*!+-' corresponent a la branca" -#: builtin/show-branch.c:646 +#: builtin/show-branch.c:645 msgid "show <n> more commits after the common ancestor" msgstr "mostra <n> comissions després de l'avantpassat comú" -#: builtin/show-branch.c:648 +#: builtin/show-branch.c:647 msgid "synonym to more=-1" msgstr "sinònim de more=-1" -#: builtin/show-branch.c:649 +#: builtin/show-branch.c:648 msgid "suppress naming strings" msgstr "omet l'anomenament de cadenes" -#: builtin/show-branch.c:651 +#: builtin/show-branch.c:650 msgid "include the current branch" msgstr "inclou la branca actual" -#: builtin/show-branch.c:653 +#: builtin/show-branch.c:652 msgid "name commits with their object names" msgstr "anomena les comissions amb els seus noms d'objecte" -#: builtin/show-branch.c:655 +#: builtin/show-branch.c:654 msgid "show possible merge bases" msgstr "mostra les bases de fusió possibles" -#: builtin/show-branch.c:657 +#: builtin/show-branch.c:656 msgid "show refs unreachable from any other ref" msgstr "mostra les referències inabastables de qualsevulla altra referència" -#: builtin/show-branch.c:659 +#: builtin/show-branch.c:658 msgid "show commits in topological order" msgstr "mostra les comissions en ordre topològic" -#: builtin/show-branch.c:662 +#: builtin/show-branch.c:661 msgid "show only commits not on the first branch" msgstr "mostra només les comissions que no siguin en la primera branca" -#: builtin/show-branch.c:664 +#: builtin/show-branch.c:663 msgid "show merges reachable from only one tip" msgstr "mostra les fusions abastables de només una punta" -#: builtin/show-branch.c:666 +#: builtin/show-branch.c:665 msgid "topologically sort, maintaining date order where possible" msgstr "ordena topològicament, mantenint l'ordre de dates on sigui possible" -#: builtin/show-branch.c:669 +#: builtin/show-branch.c:668 msgid "<n>[,<base>]" msgstr "<n>[,<base>]" -#: builtin/show-branch.c:670 +#: builtin/show-branch.c:669 msgid "show <n> most recent ref-log entries starting at base" msgstr "mostra les <n> entrades més recents començant a la base" +#: builtin/show-branch.c:703 +msgid "" +"--reflog is incompatible with --all, --remotes, --independent or --merge-base" +msgstr "" +"--reflog és incompatible amb --all, --remotes, --independent o --merge-base" + +#: builtin/show-branch.c:727 +msgid "no branches given, and HEAD is not valid" +msgstr "no s'ha donat cap branca, i HEAD no és và lid" + +#: builtin/show-branch.c:730 +msgid "--reflog option needs one branch name" +msgstr "l'opció --reflog necessita un nom de branca" + +#: builtin/show-branch.c:733 +#, c-format +msgid "only %d entry can be shown at one time." +msgid_plural "only %d entries can be shown at one time." +msgstr[0] "es pot mostrar només %d entrada a la vegada." +msgstr[1] "es poden mostrar només %d entrades a la vegada." + +#: builtin/show-branch.c:737 +#, c-format +msgid "no such ref %s" +msgstr "no hi ha tal referència %s" + +#: builtin/show-branch.c:829 +#, c-format +msgid "cannot handle more than %d rev." +msgid_plural "cannot handle more than %d revs." +msgstr[0] "no es pot gestionar més d'%d revisió." +msgstr[1] "no es poden gestionar més de %d revisions." + +#: builtin/show-branch.c:833 +#, c-format +msgid "'%s' is not a valid ref." +msgstr "'%s' no és una referència và lida." + +#: builtin/show-branch.c:836 +#, c-format +msgid "cannot find commit %s (%s)" +msgstr "no es pot trobar la comissió %s (%s)" + #: builtin/show-ref.c:10 msgid "" "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --" @@ -11533,12 +12357,12 @@ msgstr "" msgid "prepend comment character and space to each line" msgstr "anteposa el carà cter de comentari i un espai a cada lÃnia" -#: builtin/submodule--helper.c:24 builtin/submodule--helper.c:923 +#: builtin/submodule--helper.c:24 builtin/submodule--helper.c:1046 #, c-format msgid "No such ref: %s" msgstr "No hi ha tal referència: %s" -#: builtin/submodule--helper.c:31 builtin/submodule--helper.c:932 +#: builtin/submodule--helper.c:31 builtin/submodule--helper.c:1055 #, c-format msgid "Expecting a full ref name, got %s" msgstr "S'espera un nom de referència ple, s'ha rebut %s" @@ -11548,77 +12372,96 @@ msgstr "S'espera un nom de referència ple, s'ha rebut %s" msgid "cannot strip one component off url '%s'" msgstr "no es pot despullar un component de l'url '%s'" -#: builtin/submodule--helper.c:278 builtin/submodule--helper.c:403 -#: builtin/submodule--helper.c:483 +#: builtin/submodule--helper.c:282 builtin/submodule--helper.c:408 +#: builtin/submodule--helper.c:590 msgid "alternative anchor for relative paths" msgstr "à ncora alternativa per als camins relatius" -#: builtin/submodule--helper.c:283 +#: builtin/submodule--helper.c:287 msgid "git submodule--helper list [--prefix=<path>] [<path>...]" msgstr "git submodule--helper list [--prefix=<camÃ>] [<camÃ>...]" -#: builtin/submodule--helper.c:324 builtin/submodule--helper.c:338 +#: builtin/submodule--helper.c:329 builtin/submodule--helper.c:343 #, c-format msgid "No url found for submodule path '%s' in .gitmodules" msgstr "No s'ha trobat cap url per al camà de submòdul '%s' a .gitmodules" -#: builtin/submodule--helper.c:364 +#: builtin/submodule--helper.c:369 #, c-format msgid "Failed to register url for submodule path '%s'" msgstr "S'ha fallat en registrar l'url per al camà de submòdul '%s'" -#: builtin/submodule--helper.c:368 +#: builtin/submodule--helper.c:373 #, c-format msgid "Submodule '%s' (%s) registered for path '%s'\n" msgstr "S'ha registrat el submòdul '%s' (%s) per al camà '%s'\n" -#: builtin/submodule--helper.c:378 +#: builtin/submodule--helper.c:383 #, c-format msgid "warning: command update mode suggested for submodule '%s'\n" msgstr "" "advertència: se suggereix el mode d'actualització per ordre per al submòdul " "'%s'\n" -#: builtin/submodule--helper.c:385 +#: builtin/submodule--helper.c:390 #, c-format msgid "Failed to register update mode for submodule path '%s'" msgstr "" "S'ha fallat en registrar el mode d'actualització per al camà de submòdul '%s'" -#: builtin/submodule--helper.c:404 +#: builtin/submodule--helper.c:409 msgid "Suppress output for initializing a submodule" msgstr "Omet la sortida d'inicialitzar un submòdul" -#: builtin/submodule--helper.c:409 +#: builtin/submodule--helper.c:414 msgid "git submodule--helper init [<path>]" msgstr "git submodule--helper init [<camÃ>]" -#: builtin/submodule--helper.c:430 +#: builtin/submodule--helper.c:435 msgid "git submodule--helper name <path>" msgstr "git submodule--helper name <camÃ>" -#: builtin/submodule--helper.c:436 +#: builtin/submodule--helper.c:441 #, c-format msgid "no submodule mapping found in .gitmodules for path '%s'" msgstr "No s'ha trobat cap mapatge de submòdul a .gitmodules per al camà '%s'" -#: builtin/submodule--helper.c:486 +#: builtin/submodule--helper.c:524 builtin/submodule--helper.c:527 +#, c-format +msgid "submodule '%s' cannot add alternate: %s" +msgstr "el submòdul '%s' no pot afegir un alternatiu: %s" + +#: builtin/submodule--helper.c:563 +#, c-format +msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized" +msgstr "No es reconeix el valor '%s' per a submodule.alternateErrorStrategy" + +#: builtin/submodule--helper.c:570 +#, c-format +msgid "Value '%s' for submodule.alternateLocation is not recognized" +msgstr "No es reconeix el valor '%s' per a submodule.alternateLocation" + +#: builtin/submodule--helper.c:593 msgid "where the new submodule will be cloned to" msgstr "a on es clonarà el submòdul nou" -#: builtin/submodule--helper.c:489 +#: builtin/submodule--helper.c:596 msgid "name of the new submodule" msgstr "nom del submòdul nou" -#: builtin/submodule--helper.c:492 +#: builtin/submodule--helper.c:599 msgid "url where to clone the submodule from" msgstr "url del qual clonar el submòdul" -#: builtin/submodule--helper.c:498 +#: builtin/submodule--helper.c:605 msgid "depth for shallow clones" msgstr "profunditat dels clons superficials" -#: builtin/submodule--helper.c:504 +#: builtin/submodule--helper.c:608 builtin/submodule--helper.c:964 +msgid "force cloning progress" +msgstr "força el progrés del clonatge" + +#: builtin/submodule--helper.c:613 msgid "" "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference " "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>" @@ -11626,97 +12469,97 @@ msgstr "" "git submodule--helper clone [--prefix=<camÃ>] [--quiet] [--reference " "<dipòsit>] [--name <nom>] [--depth <profunditat>] --url <url> --path <camÃ>" -#: builtin/submodule--helper.c:529 builtin/submodule--helper.c:535 +#: builtin/submodule--helper.c:638 builtin/submodule--helper.c:648 #, c-format msgid "could not create directory '%s'" msgstr "no s'ha pogut crear el directori '%s'" -#: builtin/submodule--helper.c:531 +#: builtin/submodule--helper.c:644 #, c-format msgid "clone of '%s' into submodule path '%s' failed" msgstr "el clonatge de '%s' al camà de submòdul '%s' ha fallat" -#: builtin/submodule--helper.c:547 +#: builtin/submodule--helper.c:660 #, c-format msgid "cannot open file '%s'" msgstr "no es pot obrir el fitxer '%s'" -#: builtin/submodule--helper.c:552 +#: builtin/submodule--helper.c:665 #, c-format msgid "could not close file %s" msgstr "no s'ha pogut tancar el fitxer %s" -#: builtin/submodule--helper.c:559 +#: builtin/submodule--helper.c:672 #, c-format msgid "could not get submodule directory for '%s'" msgstr "no s'ha pogut obtenir el directori de submòdul per a '%s'" -#: builtin/submodule--helper.c:611 +#: builtin/submodule--helper.c:726 #, c-format msgid "Submodule path '%s' not initialized" msgstr "El camà de submòdul '%s' no està inicialitzat" -#: builtin/submodule--helper.c:615 +#: builtin/submodule--helper.c:730 msgid "Maybe you want to use 'update --init'?" msgstr "Potser voleu usar 'update --init'?" -#: builtin/submodule--helper.c:641 +#: builtin/submodule--helper.c:756 #, c-format msgid "Skipping unmerged submodule %s" msgstr "S'està saltant el submòdul no fusionat %s" -#: builtin/submodule--helper.c:662 +#: builtin/submodule--helper.c:777 #, c-format msgid "Skipping submodule '%s'" msgstr "S'està saltant el submòdul '%s'" -#: builtin/submodule--helper.c:792 +#: builtin/submodule--helper.c:913 #, c-format msgid "Failed to clone '%s'. Retry scheduled" msgstr "S'ha fallat en clonar '%s'. S'ha programat un reintent" -#: builtin/submodule--helper.c:803 +#: builtin/submodule--helper.c:924 #, c-format msgid "Failed to clone '%s' a second time, aborting" msgstr "S'ha fallat una segona vegada en clonar '%s', s'està avortant" -#: builtin/submodule--helper.c:824 +#: builtin/submodule--helper.c:945 msgid "path into the working tree" msgstr "camà a l'arbre de treball" -#: builtin/submodule--helper.c:827 +#: builtin/submodule--helper.c:948 msgid "path into the working tree, across nested submodule boundaries" msgstr "camà a l'arbre de treball, a través de fronteres de submòduls niats" -#: builtin/submodule--helper.c:831 +#: builtin/submodule--helper.c:952 msgid "rebase, merge, checkout or none" msgstr "rebase, merge, checkout o none" -#: builtin/submodule--helper.c:835 +#: builtin/submodule--helper.c:956 msgid "Create a shallow clone truncated to the specified number of revisions" msgstr "Crea un clon superficial truncat al nombre de revisions especificat" -#: builtin/submodule--helper.c:838 +#: builtin/submodule--helper.c:959 msgid "parallel jobs" msgstr "tasques paral·leles" -#: builtin/submodule--helper.c:840 +#: builtin/submodule--helper.c:961 msgid "whether the initial clone should follow the shallow recommendation" msgstr "si el clonatge inicial ha de seguir la recomanació de superficialitat" -#: builtin/submodule--helper.c:841 +#: builtin/submodule--helper.c:962 msgid "don't print cloning progress" msgstr "no imprimeixis el progrés del clonatge" -#: builtin/submodule--helper.c:846 +#: builtin/submodule--helper.c:969 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]" msgstr "git submodule--helper update_clone [--prefix=<camÃ>] [<camÃ>...]" -#: builtin/submodule--helper.c:856 +#: builtin/submodule--helper.c:979 msgid "bad value for update parameter" msgstr "valor dolent per al parà metre update" -#: builtin/submodule--helper.c:927 +#: builtin/submodule--helper.c:1050 #, c-format msgid "" "Submodule (%s) branch configured to inherit branch from superproject, but " @@ -11725,11 +12568,11 @@ msgstr "" "La branca de submòdul (%s) està configurada per a heretar la branca del " "superprojecte, però el superprojecte no és en cap branca" -#: builtin/submodule--helper.c:977 +#: builtin/submodule--helper.c:1100 msgid "submodule--helper subcommand must be called with a subcommand" msgstr "s'ha d'executar la subordre submodule--helper amb una subordre" -#: builtin/submodule--helper.c:984 +#: builtin/submodule--helper.c:1107 #, c-format msgid "'%s' is not a valid submodule--helper subcommand" msgstr "'%s' no és una subordre và lida de submodule--helper" @@ -11966,7 +12809,7 @@ msgstr "l'etiqueta '%s' ja existeix" msgid "Updated tag '%s' (was %s)\n" msgstr "Etiqueta '%s' actualitzada (era %s)\n" -#: builtin/unpack-objects.c:490 +#: builtin/unpack-objects.c:493 msgid "Unpacking objects" msgstr "S'estan desempaquetant els objectes" @@ -12035,136 +12878,152 @@ msgstr "" msgid " OK" msgstr " D'acord" -#: builtin/update-index.c:575 +#: builtin/update-index.c:564 msgid "git update-index [<options>] [--] [<file>...]" msgstr "git update-index [<opcions>] [--] [<fitxer>...]" -#: builtin/update-index.c:930 +#: builtin/update-index.c:919 msgid "continue refresh even when index needs update" msgstr "" "continua l'actualització encara que l'Ãndex necessiti una actualització" -#: builtin/update-index.c:933 +#: builtin/update-index.c:922 msgid "refresh: ignore submodules" msgstr "actualitza: ignora els submòduls" -#: builtin/update-index.c:936 +#: builtin/update-index.c:925 msgid "do not ignore new files" msgstr "no ignoris els fitxers nous" -#: builtin/update-index.c:938 +#: builtin/update-index.c:927 msgid "let files replace directories and vice-versa" msgstr "deixa que els fitxers reemplacin els directoris i viceversa" -#: builtin/update-index.c:940 +#: builtin/update-index.c:929 msgid "notice files missing from worktree" msgstr "tingues en compte els fitxers absents de l'arbre de treball" -#: builtin/update-index.c:942 +#: builtin/update-index.c:931 msgid "refresh even if index contains unmerged entries" msgstr "actualitza encara que l'Ãndex contingui entrades no fusionades" -#: builtin/update-index.c:945 +#: builtin/update-index.c:934 msgid "refresh stat information" msgstr "actualitza la informació d'estadÃstiques" -#: builtin/update-index.c:949 +#: builtin/update-index.c:938 msgid "like --refresh, but ignore assume-unchanged setting" msgstr "com --refresh, però ignora l'ajust assume-unchanged" -#: builtin/update-index.c:953 +#: builtin/update-index.c:942 msgid "<mode>,<object>,<path>" msgstr "<mode>,<objecte>,<camÃ>" -#: builtin/update-index.c:954 +#: builtin/update-index.c:943 msgid "add the specified entry to the index" msgstr "afegeix l'entrada especificada a l'Ãndex" -#: builtin/update-index.c:963 +#: builtin/update-index.c:952 msgid "mark files as \"not changing\"" msgstr "marca els fitxers com a \"no canviant\"" -#: builtin/update-index.c:966 +#: builtin/update-index.c:955 msgid "clear assumed-unchanged bit" msgstr "neteja el bit assumed-unchanged" -#: builtin/update-index.c:969 +#: builtin/update-index.c:958 msgid "mark files as \"index-only\"" msgstr "marca els fitxers com a \"només Ãndex\"" -#: builtin/update-index.c:972 +#: builtin/update-index.c:961 msgid "clear skip-worktree bit" msgstr "neteja el bit skip-worktree" -#: builtin/update-index.c:975 +#: builtin/update-index.c:964 msgid "add to index only; do not add content to object database" msgstr "" "només afegeix a l'Ãndex; no afegeixis el contingut a la base de dades " "d'objectes" -#: builtin/update-index.c:977 +#: builtin/update-index.c:966 msgid "remove named paths even if present in worktree" msgstr "" "elimina els camins anomenats encara que estiguin presents en l'arbre de " "treball" -#: builtin/update-index.c:979 +#: builtin/update-index.c:968 msgid "with --stdin: input lines are terminated by null bytes" msgstr "amb --stdin: les lÃnies d'entrada acaben amb octets nuls" -#: builtin/update-index.c:981 +#: builtin/update-index.c:970 msgid "read list of paths to be updated from standard input" msgstr "llegeix la llista de camins a actualitzar des de l'entrada està ndard" -#: builtin/update-index.c:985 +#: builtin/update-index.c:974 msgid "add entries from standard input to the index" msgstr "afegeix les entrades de l'entrada està ndard a l'Ãndex" -#: builtin/update-index.c:989 +#: builtin/update-index.c:978 msgid "repopulate stages #2 and #3 for the listed paths" msgstr "reemplena les etapes #2 i #3 per als camins llistats" -#: builtin/update-index.c:993 +#: builtin/update-index.c:982 msgid "only update entries that differ from HEAD" msgstr "només actualitza les entrades que difereixin de HEAD" -#: builtin/update-index.c:997 +#: builtin/update-index.c:986 msgid "ignore files missing from worktree" msgstr "ignora els fitxers absents de l'arbre de treball" -#: builtin/update-index.c:1000 +#: builtin/update-index.c:989 msgid "report actions to standard output" msgstr "informa de les accions en la sortida està ndard" -#: builtin/update-index.c:1002 +#: builtin/update-index.c:991 msgid "(for porcelains) forget saved unresolved conflicts" msgstr "(per a porcellanes) oblida't dels conflictes no resolts ni desats" -#: builtin/update-index.c:1006 +#: builtin/update-index.c:995 msgid "write index in this format" msgstr "escriu l'Ãndex en aquest format" -#: builtin/update-index.c:1008 +#: builtin/update-index.c:997 msgid "enable or disable split index" msgstr "habilita o inhabilita l'Ãndex dividit" -#: builtin/update-index.c:1010 +#: builtin/update-index.c:999 msgid "enable/disable untracked cache" msgstr "habilita/inhabilita la memòria cau no seguida" -#: builtin/update-index.c:1012 +#: builtin/update-index.c:1001 msgid "test if the filesystem supports untracked cache" msgstr "prova si el sistema de fitxers admet la memòria cau no seguida" -#: builtin/update-index.c:1014 +#: builtin/update-index.c:1003 msgid "enable untracked cache without testing the filesystem" msgstr "habilita la memòria cau no seguida sense provar el sistema de fitxers" -#: builtin/update-index.c:1134 +#: builtin/update-index.c:1119 +msgid "" +"core.untrackedCache is set to true; remove or change it, if you really want " +"to disable the untracked cache" +msgstr "" +"core.untrackedCache està establert a veritable; elimineu-lo o canvieu-lo, si " +"realment voleu inhabilitar el cau no seguit" + +#: builtin/update-index.c:1123 msgid "Untracked cache disabled" msgstr "La memòria cau no seguida està inhabilitada" -#: builtin/update-index.c:1146 +#: builtin/update-index.c:1131 +msgid "" +"core.untrackedCache is set to false; remove or change it, if you really want " +"to enable the untracked cache" +msgstr "" +"core.untrackedCache està establert a fals; elimineu-lo o canviar-lo, si " +"realment voleu habilitar el cau no seguit" + +#: builtin/update-index.c:1135 #, c-format msgid "Untracked cache enabled for '%s'" msgstr "La memòria cau no seguida està habilitada per a '%s'" @@ -12364,27 +13223,41 @@ msgstr "escriu l'objecte d'arbre per a un subdirectori <prefix>" msgid "only useful for debugging" msgstr "només útil per a la depuració" -#: upload-pack.c:20 +#: upload-pack.c:22 msgid "git upload-pack [<options>] <dir>" msgstr "git upload-pack [<opcions>] <directori>" -#: upload-pack.c:837 +#: upload-pack.c:1028 msgid "quit after a single request/response exchange" msgstr "surt després d'un sol intercanvi de sol·licitud/resposta" -#: upload-pack.c:839 +#: upload-pack.c:1030 msgid "exit immediately after initial ref advertisement" msgstr "surt immediatament després del anunci inicial de referència" -#: upload-pack.c:841 +#: upload-pack.c:1032 msgid "do not try <directory>/.git/ if <directory> is no Git directory" msgstr "" "no intentis <directori>/.git/ si <directori> no és cap directori del Git" -#: upload-pack.c:843 +#: upload-pack.c:1034 msgid "interrupt transfer after <n> seconds of inactivity" msgstr "interromp la transferència després de <n> segons d'inactivitat" +#: credential-cache--daemon.c:223 +#, c-format +msgid "" +"The permissions on your socket directory are too loose; other\n" +"users may be able to read your cached credentials. Consider running:\n" +"\n" +"\tchmod 0700 %s" +msgstr "" +"Els permisos en el vostre directori de sòcol són massa liberals;\n" +"potser que altres usuaris poden llegir els vostres credencials.\n" +"Considereu executar:\n" +"\n" +"\tchmod 0700 %s" + #: credential-cache--daemon.c:271 msgid "print debugging messages to stderr" msgstr "imprimeix els missatges de depuració a stderr" @@ -12400,7 +13273,11 @@ msgstr "" "'git help <concepte>' per a llegir sobre una subordre o concepte\n" "especÃfic." -#: http.c:323 +#: http.c:342 +msgid "Delegation control is not supported with cURL < 7.22.0" +msgstr "No s'admet el control de delegació amb el cURL < 7.22.0" + +#: http.c:351 msgid "Public key pinning not supported with cURL < 7.44.0" msgstr "No s'admet l'enganx de clau pública amb cURL < 7.44.0" @@ -12519,15 +13396,15 @@ msgstr "data-de-caducitat" msgid "no-op (backward compatibility)" msgstr "operació nul·la (per a compatibilitat amb versions anteriors)" -#: parse-options.h:237 +#: parse-options.h:238 msgid "be more verbose" msgstr "sigues més detallat" -#: parse-options.h:239 +#: parse-options.h:240 msgid "be more quiet" msgstr "sigues més callat" -#: parse-options.h:245 +#: parse-options.h:246 msgid "use <n> digits to display SHA-1s" msgstr "usa <n> xifres per presentar els SHA-1" @@ -12747,7 +13624,7 @@ msgid "Automated merge did not work." msgstr "La fusió automà tica no ha funcionat." #: git-merge-octopus.sh:62 -msgid "Should not be doing an Octopus." +msgid "Should not be doing an octopus." msgstr "No s'ha de fer un pop." #: git-merge-octopus.sh:73 @@ -12938,6 +13815,10 @@ msgstr "Encara no teniu la comissió inicial" msgid "Cannot save the current index state" msgstr "No es pot desar l'estat d'Ãndex actual" +#: git-stash.sh:103 +msgid "Cannot save the untracked files" +msgstr "No es pot desar els fitxers no seguits" + #: git-stash.sh:123 git-stash.sh:136 msgid "Cannot save the current worktree state" msgstr "No es pot desar l'estat d'arbre de treball actual" @@ -12978,6 +13859,10 @@ msgstr "" "error: opció desconeguda de 'stash save': $option\n" " Per a proveir un missatge, useu git stash save -- '$option'" +#: git-stash.sh:251 +msgid "Can't use --patch and --include-untracked or --all at the same time" +msgstr "No es poden usar --patch i --include-untracked o --all a la vegada." + #: git-stash.sh:259 msgid "No local changes to save" msgstr "No hi ha canvis locals a desar" @@ -12999,98 +13884,102 @@ msgstr "S'han desat el directori de treball i l'estat d'ìndex $stash_msg" msgid "Cannot remove worktree changes" msgstr "No es pot eliminar els canvis de l'arbre de treball" -#: git-stash.sh:404 +#: git-stash.sh:403 #, sh-format msgid "unknown option: $opt" msgstr "opció desconeguda: $opt" -#: git-stash.sh:414 +#: git-stash.sh:416 msgid "No stash found." msgstr "No s'ha trobat cap magatzem." -#: git-stash.sh:421 +#: git-stash.sh:423 #, sh-format msgid "Too many revisions specified: $REV" msgstr "S'han especificat massa revisions: $REV" -#: git-stash.sh:427 +#: git-stash.sh:438 #, sh-format msgid "$reference is not a valid reference" msgstr "$reference no és una referència và lida" -#: git-stash.sh:455 +#: git-stash.sh:466 #, sh-format msgid "'$args' is not a stash-like commit" msgstr "'$args' no és una comissió de tipus magatzem" -#: git-stash.sh:466 +#: git-stash.sh:477 #, sh-format msgid "'$args' is not a stash reference" msgstr "'$args' no és una referència de magatzem" -#: git-stash.sh:474 +#: git-stash.sh:485 msgid "unable to refresh index" msgstr "no s'ha pogut actualitzar l'Ãndex" -#: git-stash.sh:478 +#: git-stash.sh:489 msgid "Cannot apply a stash in the middle of a merge" msgstr "No es pot aplicar un magatzem enmig d'una fusió" -#: git-stash.sh:486 +#: git-stash.sh:497 msgid "Conflicts in index. Try without --index." msgstr "Hi ha conflictes en l'Ãndex. Proveu-ho sense --index." -#: git-stash.sh:488 +#: git-stash.sh:499 msgid "Could not save index tree" msgstr "No s'ha pogut desar l'arbre d'Ãndex" -#: git-stash.sh:522 +#: git-stash.sh:508 +msgid "Could not restore untracked files from stash" +msgstr "No s'ha pogut restaurar els fitxers no seguits des d'emmagatzematge" + +#: git-stash.sh:533 msgid "Cannot unstage modified files" msgstr "No es pot desallistar fitxers modificats" -#: git-stash.sh:537 +#: git-stash.sh:548 msgid "Index was not unstashed." msgstr "L'Ãndex no estava sense emmagatzemar." -#: git-stash.sh:551 +#: git-stash.sh:562 msgid "The stash is kept in case you need it again." msgstr "Es conserva el magatzem en cas de que el necessiteu altra vegada." -#: git-stash.sh:560 +#: git-stash.sh:571 #, sh-format msgid "Dropped ${REV} ($s)" msgstr "${REV} ($s) descartada" -#: git-stash.sh:561 +#: git-stash.sh:572 #, sh-format msgid "${REV}: Could not drop stash entry" msgstr "${REV}: No s'ha pogut descartar l'entrada de magatzem" -#: git-stash.sh:569 +#: git-stash.sh:580 msgid "No branch name specified" msgstr "Cap nom de branca especificat" -#: git-stash.sh:641 +#: git-stash.sh:652 msgid "(To restore them type \"git stash apply\")" msgstr "(Per restaurar-les teclegeu \"git stash apply\")" -#: git-submodule.sh:183 +#: git-submodule.sh:184 msgid "Relative path can only be used from the toplevel of the working tree" msgstr "" "El camà relatiu només es pot usar des del nivell superior de l'arbre de " "treball" -#: git-submodule.sh:193 +#: git-submodule.sh:194 #, sh-format msgid "repo URL: '$repo' must be absolute or begin with ./|../" msgstr "URL de dipòsit: '$repo' ha de ser absolut o començar amb ./|../" -#: git-submodule.sh:210 +#: git-submodule.sh:211 #, sh-format msgid "'$sm_path' already exists in the index" msgstr "'$sm_path' ja existeix en l'Ãndex" -#: git-submodule.sh:214 +#: git-submodule.sh:215 #, sh-format msgid "" "The following path is ignored by one of your .gitignore files:\n" @@ -13101,23 +13990,23 @@ msgstr "" "$sm_path\n" "Useu -f si realment voleu afegir-lo." -#: git-submodule.sh:232 +#: git-submodule.sh:233 #, sh-format msgid "Adding existing repo at '$sm_path' to the index" msgstr "S'està afegint el dipòsit existent a '$sm_path' a l'Ãndex" -#: git-submodule.sh:234 +#: git-submodule.sh:235 #, sh-format msgid "'$sm_path' already exists and is not a valid git repo" msgstr "'$sm_path' ja existeix i no és un dipòsit de git và lid" -#: git-submodule.sh:242 +#: git-submodule.sh:243 #, sh-format msgid "A git directory for '$sm_name' is found locally with remote(s):" msgstr "" "Es troba un directori de git per a '$sm_name' localment amb els remots:" -#: git-submodule.sh:244 +#: git-submodule.sh:245 #, sh-format msgid "" "If you want to reuse this local git directory instead of cloning again from\n" @@ -13134,49 +14023,49 @@ msgstr "" "o no esteu segur de què vol dir això, trieu un altre nom amb l'opció '--" "name'." -#: git-submodule.sh:250 +#: git-submodule.sh:251 #, sh-format msgid "Reactivating local git directory for submodule '$sm_name'." msgstr "" "S'està reactivant el directori de git local per al submòdul '$sm_name'." -#: git-submodule.sh:262 +#: git-submodule.sh:263 #, sh-format msgid "Unable to checkout submodule '$sm_path'" msgstr "no s'ha pogut agafar el submòdul '$sm_path'" -#: git-submodule.sh:267 +#: git-submodule.sh:268 #, sh-format msgid "Failed to add submodule '$sm_path'" msgstr "S'ha fallat en afegir el submòdul '$sm_path'" -#: git-submodule.sh:276 +#: git-submodule.sh:277 #, sh-format msgid "Failed to register submodule '$sm_path'" msgstr "S'ha fallat en registrar el submòdul '$sm_path'" -#: git-submodule.sh:323 +#: git-submodule.sh:324 #, sh-format msgid "Entering '$displaypath'" msgstr "S'està entrant '$displaypath'" -#: git-submodule.sh:343 +#: git-submodule.sh:344 #, sh-format msgid "Stopping at '$displaypath'; script returned non-zero status." msgstr "" "S'està aturant a '$displaypath'; l'script ha retornat un estat no zero." -#: git-submodule.sh:414 +#: git-submodule.sh:415 #, sh-format msgid "pathspec and --all are incompatible" msgstr "--pathspec i --all són incompatibles" -#: git-submodule.sh:419 +#: git-submodule.sh:420 #, sh-format msgid "Use '--all' if you really want to deinitialize all submodules" msgstr "Useu '--all' si realment voleu desinicialitzar tots els submòduls" -#: git-submodule.sh:439 +#: git-submodule.sh:440 #, sh-format msgid "" "Submodule work tree '$displaypath' contains a .git directory\n" @@ -13185,7 +14074,7 @@ msgstr "" "L'arbre de treball de submòdul '$displaypath' conté un directori .git\n" "(useu 'rm -rf' si realment voleu eliminar-lo, incloent tota la seva història)" -#: git-submodule.sh:447 +#: git-submodule.sh:448 #, sh-format msgid "" "Submodule work tree '$displaypath' contains local modifications; use '-f' to " @@ -13194,38 +14083,38 @@ msgstr "" "L'arbre de treball de submòdul '$displaypath' conté modificacions locals; " "useu '-f' per a descartar-les" -#: git-submodule.sh:450 +#: git-submodule.sh:451 #, sh-format msgid "Cleared directory '$displaypath'" msgstr "S'ha netejat el directori '$displaypath'" -#: git-submodule.sh:451 +#: git-submodule.sh:452 #, sh-format msgid "Could not remove submodule work tree '$displaypath'" msgstr "No s'ha pogut eliminar l'arbre de treball de submòdul '$displaypath'" -#: git-submodule.sh:454 +#: git-submodule.sh:455 #, sh-format msgid "Could not create empty submodule directory '$displaypath'" msgstr "No s'ha pogut crear el directori de submòdul buit '$displaypath'" -#: git-submodule.sh:463 +#: git-submodule.sh:464 #, sh-format msgid "Submodule '$name' ($url) unregistered for path '$displaypath'" msgstr "Submòdul '$name' ($url) no registrat per al camà '$displaypath'" -#: git-submodule.sh:612 +#: git-submodule.sh:617 #, sh-format msgid "Unable to find current revision in submodule path '$displaypath'" msgstr "" "No s'ha pogut trobar la revisió actual en el camà de submòdul '$displaypath'" -#: git-submodule.sh:622 +#: git-submodule.sh:627 #, sh-format msgid "Unable to fetch in submodule path '$sm_path'" msgstr "No s'ha pogut obtenir en el camà de submòdul '$sm_path'" -#: git-submodule.sh:627 +#: git-submodule.sh:632 #, sh-format msgid "" "Unable to find current ${remote_name}/${branch} revision in submodule path " @@ -13234,101 +14123,97 @@ msgstr "" "No s'ha pogut trobar la revisió actual de ${remote_name}/${branch} en el " "camà de submòdul '$sm_path'" -#: git-submodule.sh:645 +#: git-submodule.sh:650 #, sh-format msgid "Unable to fetch in submodule path '$displaypath'" msgstr "No s'ha pogut obtenir en el camà de submòdul '$displaypath'" -#: git-submodule.sh:651 +#: git-submodule.sh:656 #, sh-format msgid "" "Fetched in submodule path '$displaypath', but it did not contain $sha1. " "Direct fetching of that commit failed." msgstr "" "S'ha obtingut en el camà de submòdul '$displaypath', però no contenia $sha1. " -"L'obteniment directe d'aquella comissió ha fallat." +"L'obtenció directa d'aquella comissió ha fallat." -#: git-submodule.sh:658 +#: git-submodule.sh:663 #, sh-format msgid "Unable to checkout '$sha1' in submodule path '$displaypath'" msgstr "No s'ha pogut agafar '$sha1' en el camà de submòdul '$displaypath'" -#: git-submodule.sh:659 +#: git-submodule.sh:664 #, sh-format msgid "Submodule path '$displaypath': checked out '$sha1'" msgstr "Camà de submòdul '$displaypath': s'ha agafat '$sha1'" -#: git-submodule.sh:663 +#: git-submodule.sh:668 #, sh-format msgid "Unable to rebase '$sha1' in submodule path '$displaypath'" msgstr "no s'ha pogut rebasar '$sha1' en el camà de submòdul '$displaypath'" -#: git-submodule.sh:664 +#: git-submodule.sh:669 #, sh-format msgid "Submodule path '$displaypath': rebased into '$sha1'" msgstr "Camà de submòdul '$displaypath': s'ha rebasat en '$sha1'" -#: git-submodule.sh:669 +#: git-submodule.sh:674 #, sh-format msgid "Unable to merge '$sha1' in submodule path '$displaypath'" msgstr "No s'ha pogut fusionar '$sha1' en el camà de submòdul '$displaypath'" -#: git-submodule.sh:670 +#: git-submodule.sh:675 #, sh-format msgid "Submodule path '$displaypath': merged in '$sha1'" msgstr "Camà de submòdul '$displaypath': s'ha fusionat en '$sha1'" -#: git-submodule.sh:675 +#: git-submodule.sh:680 #, sh-format msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'" msgstr "" "L'execució de '$command $sha1' ha fallat en el camà de submòdul " "'$displaypath'" -#: git-submodule.sh:676 +#: git-submodule.sh:681 #, sh-format msgid "Submodule path '$displaypath': '$command $sha1'" msgstr "Camà de submòdul '$displaypath': '$command $sha1'" -#: git-submodule.sh:707 +#: git-submodule.sh:712 #, sh-format msgid "Failed to recurse into submodule path '$displaypath'" msgstr "S'ha fallat en recursar al camà de submòdul '$displaypath'" -#: git-submodule.sh:815 +#: git-submodule.sh:820 msgid "The --cached option cannot be used with the --files option" msgstr "L'opció --cached no es pot usar amb l'opció --files" -#: git-submodule.sh:867 +#: git-submodule.sh:872 #, sh-format msgid "unexpected mode $mod_dst" msgstr "mode inesperat $mod_dst" -#: git-submodule.sh:887 +#: git-submodule.sh:892 #, sh-format msgid " Warn: $display_name doesn't contain commit $sha1_src" msgstr " AvÃs: $display_name no conté la comissió $sha1_src" -#: git-submodule.sh:890 +#: git-submodule.sh:895 #, sh-format msgid " Warn: $display_name doesn't contain commit $sha1_dst" msgstr " AvÃs: $display_name no conté la comissió $sha1_dst" -#: git-submodule.sh:893 +#: git-submodule.sh:898 #, sh-format msgid " Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst" msgstr " AvÃs: $display_name no conté les comissions $sha1_src i $sha1_dst" -#: git-submodule.sh:918 -msgid "blob" -msgstr "blob" - -#: git-submodule.sh:1040 +#: git-submodule.sh:1045 #, sh-format msgid "Failed to recurse into submodule path '$sm_path'" msgstr "S'ha fallat en recursar al camà de submòdul '$sm_path'" -#: git-submodule.sh:1107 +#: git-submodule.sh:1112 #, sh-format msgid "Synchronizing submodule url for '$displaypath'" msgstr "S'està sincronitzant l'url de submòdul per a '$displaypath'" @@ -13338,12 +14223,12 @@ msgstr "S'està sincronitzant l'url de submòdul per a '$displaypath'" msgid "See git-${cmd}(1) for details." msgstr "Vegeu git-${cmd}(1) per detalls." -#: git-rebase--interactive.sh:131 +#: git-rebase--interactive.sh:140 #, sh-format msgid "Rebasing ($new_count/$total)" msgstr "S'està rebasant ($new_count/$total)" -#: git-rebase--interactive.sh:147 +#: git-rebase--interactive.sh:156 msgid "" "\n" "Commands:\n" @@ -13371,7 +14256,7 @@ msgstr "" "\n" "Es pot canviar l'ordre d'aquestes lÃnies; s'executen de dalt a baix.\n" -#: git-rebase--interactive.sh:162 +#: git-rebase--interactive.sh:171 msgid "" "\n" "Do not remove any line. Use 'drop' explicitly to remove a commit.\n" @@ -13380,7 +14265,7 @@ msgstr "" "No elimineu cap lÃnia. Useu 'drop' explÃcitament per a eliminar una " "comissió.\n" -#: git-rebase--interactive.sh:166 +#: git-rebase--interactive.sh:175 msgid "" "\n" "If you remove a line here THAT COMMIT WILL BE LOST.\n" @@ -13388,7 +14273,7 @@ msgstr "" "\n" "Si elimineu una lÃnia aquÃ, ES PERDRÀ AQUELLA COMISSIÓ.\n" -#: git-rebase--interactive.sh:202 +#: git-rebase--interactive.sh:211 #, sh-format msgid "" "You can amend the commit now, with\n" @@ -13407,87 +14292,87 @@ msgstr "" "\n" "\tgit rebase --continue" -#: git-rebase--interactive.sh:227 +#: git-rebase--interactive.sh:236 #, sh-format msgid "$sha1: not a commit that can be picked" msgstr "$sha1: no és una comissió que es pugi escollir" -#: git-rebase--interactive.sh:266 +#: git-rebase--interactive.sh:275 #, sh-format msgid "Invalid commit name: $sha1" msgstr "Nom de comissió no và lid: $sha1" -#: git-rebase--interactive.sh:308 +#: git-rebase--interactive.sh:317 msgid "Cannot write current commit's replacement sha1" msgstr "No es pot escriure el sha1 reemplaçant de la comissió actual" -#: git-rebase--interactive.sh:360 +#: git-rebase--interactive.sh:369 #, sh-format msgid "Fast-forward to $sha1" msgstr "Avanç rà pid a $sha1" -#: git-rebase--interactive.sh:362 +#: git-rebase--interactive.sh:371 #, sh-format msgid "Cannot fast-forward to $sha1" msgstr "No es pot avançar rà pidament a $sha1" -#: git-rebase--interactive.sh:371 +#: git-rebase--interactive.sh:380 #, sh-format msgid "Cannot move HEAD to $first_parent" msgstr "No es pot moure HEAD a $first_parent" -#: git-rebase--interactive.sh:376 +#: git-rebase--interactive.sh:385 #, sh-format msgid "Refusing to squash a merge: $sha1" msgstr "S'està refusant aixafar una fusió: $sha1" -#: git-rebase--interactive.sh:390 +#: git-rebase--interactive.sh:399 #, sh-format msgid "Error redoing merge $sha1" msgstr "Error en refer la fusió $sha1" -#: git-rebase--interactive.sh:398 +#: git-rebase--interactive.sh:407 #, sh-format msgid "Could not pick $sha1" msgstr "No s'ha pogut escollir $sha1" -#: git-rebase--interactive.sh:407 +#: git-rebase--interactive.sh:416 #, sh-format msgid "This is the commit message #${n}:" msgstr "Aquest és el missatge de comissió núm. ${n}:" -#: git-rebase--interactive.sh:412 +#: git-rebase--interactive.sh:421 #, sh-format msgid "The commit message #${n} will be skipped:" msgstr "El missatge de comissió núm. ${n} se saltarà :" -#: git-rebase--interactive.sh:423 +#: git-rebase--interactive.sh:432 #, sh-format msgid "This is a combination of $count commit." msgid_plural "This is a combination of $count commits." msgstr[0] "Això és una combinació de $count comissió." msgstr[1] "Això és una combinació de $count comissions." -#: git-rebase--interactive.sh:431 +#: git-rebase--interactive.sh:440 #, sh-format msgid "Cannot write $fixup_msg" msgstr "No es pot escriure $fixup_msg" -#: git-rebase--interactive.sh:434 +#: git-rebase--interactive.sh:443 msgid "This is a combination of 2 commits." msgstr "Això és una combinació de 2 comissions." -#: git-rebase--interactive.sh:435 +#: git-rebase--interactive.sh:444 msgid "This is the 1st commit message:" msgstr "Aquest és el 1er missatge de comissió:" -#: git-rebase--interactive.sh:475 git-rebase--interactive.sh:518 -#: git-rebase--interactive.sh:521 +#: git-rebase--interactive.sh:484 git-rebase--interactive.sh:527 +#: git-rebase--interactive.sh:530 #, sh-format msgid "Could not apply $sha1... $rest" msgstr "No s'ha pogut aplicar $sha1... $rest" -#: git-rebase--interactive.sh:549 +#: git-rebase--interactive.sh:558 #, sh-format msgid "" "Could not amend commit after successfully picking $sha1... $rest\n" @@ -13503,31 +14388,31 @@ msgstr "" "necessiteu resoldre el problema abans que pugueu canviar el missatge de\n" "comissió." -#: git-rebase--interactive.sh:564 +#: git-rebase--interactive.sh:573 #, sh-format msgid "Stopped at $sha1_abbrev... $rest" msgstr "S'ha aturat a $sha1_abbrev... $rest" -#: git-rebase--interactive.sh:579 +#: git-rebase--interactive.sh:588 #, sh-format msgid "Cannot '$squash_style' without a previous commit" msgstr "No es pot '$squash_style' sense una comissió prèvia" -#: git-rebase--interactive.sh:621 +#: git-rebase--interactive.sh:630 #, sh-format msgid "Executing: $rest" msgstr "S'està executant: $rest" -#: git-rebase--interactive.sh:629 +#: git-rebase--interactive.sh:638 #, sh-format msgid "Execution failed: $rest" msgstr "L'execució ha fallat: $rest" -#: git-rebase--interactive.sh:631 +#: git-rebase--interactive.sh:640 msgid "and made changes to the index and/or the working tree" msgstr "i ha fet canvis a l'Ãndex o l'arbre de treball" -#: git-rebase--interactive.sh:633 +#: git-rebase--interactive.sh:642 msgid "" "You can fix the problem, and then run\n" "\n" @@ -13538,7 +14423,7 @@ msgstr "" "\tgit rebase --continue" #. TRANSLATORS: after these lines is a command to be issued by the user -#: git-rebase--interactive.sh:646 +#: git-rebase--interactive.sh:655 #, sh-format msgid "" "Execution succeeded: $rest\n" @@ -13553,25 +14438,25 @@ msgstr "" "\n" "\tgit rebase --continue" -#: git-rebase--interactive.sh:657 +#: git-rebase--interactive.sh:666 #, sh-format msgid "Unknown command: $command $sha1 $rest" msgstr "Ordre desconeguda: $command $sha1 $rest" -#: git-rebase--interactive.sh:658 +#: git-rebase--interactive.sh:667 msgid "Please fix this using 'git rebase --edit-todo'." msgstr "Si us plau, arregleu això usant 'git rebase --edit-todo'." -#: git-rebase--interactive.sh:693 +#: git-rebase--interactive.sh:702 #, sh-format msgid "Successfully rebased and updated $head_name." msgstr "S'ha rebasat i actualitzat $head_name amb èxit." -#: git-rebase--interactive.sh:740 +#: git-rebase--interactive.sh:749 msgid "Could not skip unnecessary pick commands" msgstr "No s'ha pogut saltar ordres innecessaris d'elecció" -#: git-rebase--interactive.sh:898 +#: git-rebase--interactive.sh:907 #, sh-format msgid "" "Warning: the SHA-1 is missing or isn't a commit in the following line:\n" @@ -13580,7 +14465,7 @@ msgstr "" "Advertència: manca el SHA-1 o no és una comissió en la lÃnia següent:\n" " - $line" -#: git-rebase--interactive.sh:931 +#: git-rebase--interactive.sh:940 #, sh-format msgid "" "Warning: the command isn't recognized in the following line:\n" @@ -13589,11 +14474,11 @@ msgstr "" "Advertència: no es reconeix l'ordre en la lÃnia següent:\n" " - $line" -#: git-rebase--interactive.sh:970 +#: git-rebase--interactive.sh:979 msgid "could not detach HEAD" msgstr "no s'ha pogut separar HEAD" -#: git-rebase--interactive.sh:1008 +#: git-rebase--interactive.sh:1017 msgid "" "Warning: some commits may have been dropped accidentally.\n" "Dropped commits (newer to older):" @@ -13602,7 +14487,7 @@ msgstr "" "accidentalment.\n" "Les comissions descartades (més nova a més vella):" -#: git-rebase--interactive.sh:1016 +#: git-rebase--interactive.sh:1025 msgid "" "To avoid this message, use \"drop\" to explicitly remove a commit.\n" "\n" @@ -13617,7 +14502,7 @@ msgstr "" "d'advertències.\n" "Els comportaments possibles són: ignore, warn, error." -#: git-rebase--interactive.sh:1027 +#: git-rebase--interactive.sh:1036 #, sh-format msgid "" "Unrecognized setting $check_level for option rebase.missingCommitsCheck. " @@ -13626,19 +14511,23 @@ msgstr "" "No s'ha reconegut l'ajust $check_level per a l'opció rebase." "missingCommitsCheck. S'està ignorant." -#: git-rebase--interactive.sh:1044 -msgid "You can fix this with 'git rebase --edit-todo'." -msgstr "Podeu arreglar això amb 'git rebase --edit-todo'." +#: git-rebase--interactive.sh:1053 +msgid "" +"You can fix this with 'git rebase --edit-todo' and then run 'git rebase --" +"continue'." +msgstr "" +"Podeu arreglar això amb 'git rebase --edit-todo' i desprès 'git rebase --" +"continue'." -#: git-rebase--interactive.sh:1045 +#: git-rebase--interactive.sh:1054 msgid "Or you can abort the rebase with 'git rebase --abort'." msgstr "O podeu avortar el rebasament amb 'git rebase --abort'." -#: git-rebase--interactive.sh:1069 +#: git-rebase--interactive.sh:1078 msgid "Could not remove CHERRY_PICK_HEAD" msgstr "No s'ha pogut eliminar CHERRY_PICK_HEAD" -#: git-rebase--interactive.sh:1074 +#: git-rebase--interactive.sh:1083 #, sh-format msgid "" "You have staged changes in your working tree.\n" @@ -13651,7 +14540,7 @@ msgid "" "\n" " git commit $gpg_sign_opt_quoted\n" "\n" -"In both case, once you're done, continue with:\n" +"In both cases, once you're done, continue with:\n" "\n" " git rebase --continue\n" msgstr "" @@ -13669,13 +14558,13 @@ msgstr "" "\n" " git rebase --continue\n" -#: git-rebase--interactive.sh:1091 +#: git-rebase--interactive.sh:1100 msgid "Error trying to find the author identity to amend commit" msgstr "" "Ha hagut un error en intentar trobar la identitat d'autor per a esmenar la " "comissió" -#: git-rebase--interactive.sh:1096 +#: git-rebase--interactive.sh:1105 msgid "" "You have uncommitted changes in your working tree. Please commit them\n" "first and then run 'git rebase --continue' again." @@ -13683,11 +14572,11 @@ msgstr "" "Teniu canvis no comessos en el vostre arbre de treball. Si us plau,\n" "primer cometeu-los i després executeu 'git rebase --continue' de nou." -#: git-rebase--interactive.sh:1101 git-rebase--interactive.sh:1105 +#: git-rebase--interactive.sh:1110 git-rebase--interactive.sh:1114 msgid "Could not commit staged changes." msgstr "No s'ha pogut cometre els canvis emmagatzemats." -#: git-rebase--interactive.sh:1129 +#: git-rebase--interactive.sh:1138 msgid "" "\n" "You are editing the todo file of an ongoing interactive rebase.\n" @@ -13696,50 +14585,45 @@ msgid "" "\n" msgstr "" "\n" -"Esteu editant el fitxer de cosses a fer d'un rebasament interactiu en " -"marxa.\n" +"Esteu editant el fitxer de coses a fer d'un rebasament interactiu en marxa.\n" "Per a continuar el rebasament després d'editar, executeu:\n" " git rebase --continue\n" "\n" -#: git-rebase--interactive.sh:1137 git-rebase--interactive.sh:1298 +#: git-rebase--interactive.sh:1146 git-rebase--interactive.sh:1304 msgid "Could not execute editor" msgstr "No s'ha pogut executar l'editor" -#: git-rebase--interactive.sh:1145 -msgid "You need to set your committer info first" -msgstr "Heu de primer establir la vostra informació de cometent" - -#: git-rebase--interactive.sh:1153 +#: git-rebase--interactive.sh:1159 #, sh-format msgid "Could not checkout $switch_to" msgstr "No s'ha pogut agafar $switch_to" -#: git-rebase--interactive.sh:1158 +#: git-rebase--interactive.sh:1164 msgid "No HEAD?" msgstr "No hi ha cap HEAD?" -#: git-rebase--interactive.sh:1159 +#: git-rebase--interactive.sh:1165 #, sh-format msgid "Could not create temporary $state_dir" msgstr "No s'ha pogut crear el $state_dir temporal" -#: git-rebase--interactive.sh:1161 +#: git-rebase--interactive.sh:1167 msgid "Could not mark as interactive" msgstr "No s'ha pogut marcar com a interactiu" -#: git-rebase--interactive.sh:1171 git-rebase--interactive.sh:1176 +#: git-rebase--interactive.sh:1177 git-rebase--interactive.sh:1182 msgid "Could not init rewritten commits" msgstr "No s'ha pogut iniciar les comissions reescrites" -#: git-rebase--interactive.sh:1276 +#: git-rebase--interactive.sh:1282 #, sh-format msgid "Rebase $shortrevisions onto $shortonto ($todocount command)" msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)" msgstr[0] "Rebasa $shortrevisions sobre $shortonto ($todocount ordre)" msgstr[1] "Rebasa $shortrevisions sobre $shortonto ($todocount ordres)" -#: git-rebase--interactive.sh:1281 +#: git-rebase--interactive.sh:1287 msgid "" "\n" "However, if you remove everything, the rebase will be aborted.\n" @@ -13749,7 +14633,7 @@ msgstr "" "No obstant, si elimineu tot, s'avortarà el rebasament.\n" "\n" -#: git-rebase--interactive.sh:1288 +#: git-rebase--interactive.sh:1294 msgid "Note that empty commits are commented out" msgstr "Nota que les comissions buides estan comentades" @@ -13778,6 +14662,10 @@ msgstr "No es pot rebasar: Teniu canvis no allistats." msgid "Cannot rewrite branches: You have unstaged changes." msgstr "No es pot reescriure branques: Teniu canvis no allistats." +#: git-sh-setup.sh:226 +msgid "Cannot pull with rebase: You have unstaged changes." +msgstr "No es pot baixar amb rebasament: Teniu canvis no allistats." + #: git-sh-setup.sh:229 #, sh-format msgid "Cannot $action: You have unstaged changes." @@ -13787,15 +14675,24 @@ msgstr "No es pot $action: Teniu canvis no allistats." msgid "Cannot rebase: Your index contains uncommitted changes." msgstr "No es pot rebasar: El vostre Ãndex conté canvis sense cometre." +#: git-sh-setup.sh:245 +msgid "Cannot pull with rebase: Your index contains uncommitted changes." +msgstr "" +"No es pot baixar amb rebasament: El vostre Ãndex conté canvis sense cometre." + #: git-sh-setup.sh:248 #, sh-format msgid "Cannot $action: Your index contains uncommitted changes." msgstr "No es pot $action: El vostre Ãndex conté canvis sense cometre." +#: git-sh-setup.sh:252 +msgid "Additionally, your index contains uncommitted changes." +msgstr "Addicionalment, el vostre Ãndex conté canvis sense cometre." + #: git-sh-setup.sh:372 msgid "You need to run this command from the toplevel of the working tree." msgstr "" -"Heu d'executar aquesta ordre des del nivell superior de l'arbre de treball" +"Heu d'executar aquesta ordre des del nivell superior de l'arbre de treball." #: git-sh-setup.sh:377 msgid "Unable to determine absolute path of git directory" @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Git\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2016-08-27 23:21+0800\n" -"PO-Revision-Date: 2015-01-21 15:01+0800\n" +"POT-Creation-Date: 2016-11-25 22:50+0800\n" +"PO-Revision-Date: 2016-11-28 18:10+0100\n" "Last-Translator: Ralf Thielow <ralf.thielow@gmail.com>\n" "Language-Team: German <>\n" "Language: de\n" @@ -24,23 +24,29 @@ msgstr "Hinweis: %.*s\n" #: advice.c:83 msgid "Cherry-picking is not possible because you have unmerged files." -msgstr "Cherry-Picken ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben." +msgstr "" +"Cherry-Picken ist nicht möglich, weil Sie nicht zusammengeführte Dateien " +"haben." #: advice.c:85 msgid "Committing is not possible because you have unmerged files." -msgstr "Committen ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben." +msgstr "" +"Committen ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben." #: advice.c:87 msgid "Merging is not possible because you have unmerged files." -msgstr "Mergen ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben." +msgstr "" +"Mergen ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben." #: advice.c:89 msgid "Pulling is not possible because you have unmerged files." -msgstr "Pullen ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben." +msgstr "" +"Pullen ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben." #: advice.c:91 msgid "Reverting is not possible because you have unmerged files." -msgstr "Reverten ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben." +msgstr "" +"Reverten ist nicht möglich, weil Sie nicht zusammengeführte Dateien haben." #: advice.c:93 #, c-format @@ -96,12 +102,650 @@ msgstr "" "weiteren Checkout durchführen.\n" "\n" "Wenn Sie einen neuen Branch erstellen möchten, um Ihre erstellten Commits\n" -"zu behalten, können Sie das (jetzt oder später) durch einen weiteren Checkout\n" +"zu behalten, können Sie das (jetzt oder später) durch einen weiteren " +"Checkout\n" "mit der Option -b tun. Beispiel:\n" "\n" " git checkout -b <neuer-Branchname>\n" "\n" +#: apply.c:57 +#, c-format +msgid "unrecognized whitespace option '%s'" +msgstr "nicht erkannte Whitespace-Option: '%s'" + +#: apply.c:73 +#, c-format +msgid "unrecognized whitespace ignore option '%s'" +msgstr "nicht erkannte Option zum Ignorieren von Whitespace: '%s'" + +#: apply.c:125 +msgid "--reject and --3way cannot be used together." +msgstr "--reject und --3way können nicht gemeinsam verwendet werden." + +#: apply.c:127 +msgid "--cached and --3way cannot be used together." +msgstr "--cached und --3way können nicht gemeinsam verwendet werden." + +#: apply.c:130 +msgid "--3way outside a repository" +msgstr "" +"Die Option --3way kann nicht außerhalb eines Repositories verwendet werden." + +#: apply.c:141 +msgid "--index outside a repository" +msgstr "" +"Die Option --index kann nicht außerhalb eines Repositories verwendet werden." + +#: apply.c:144 +msgid "--cached outside a repository" +msgstr "" +"Die Option --cached kann nicht außerhalb eines Repositories verwendet werden." + +#: apply.c:845 +#, c-format +msgid "Cannot prepare timestamp regexp %s" +msgstr "Kann regulären Ausdruck für Zeitstempel %s nicht verarbeiten" + +#: apply.c:854 +#, c-format +msgid "regexec returned %d for input: %s" +msgstr "Ausführung des regulären Ausdrucks gab %d zurück. Eingabe: %s" + +#: apply.c:938 +#, c-format +msgid "unable to find filename in patch at line %d" +msgstr "Konnte keinen Dateinamen in Zeile %d des Patches finden." + +#: apply.c:977 +#, c-format +msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d" +msgstr "" +"git apply: ungültiges 'git-diff' - erwartete /dev/null, erhielt %s in Zeile " +"%d" + +#: apply.c:983 +#, c-format +msgid "git apply: bad git-diff - inconsistent new filename on line %d" +msgstr "" +"git apply: ungültiges 'git-diff' - Inkonsistenter neuer Dateiname in Zeile %d" + +#: apply.c:984 +#, c-format +msgid "git apply: bad git-diff - inconsistent old filename on line %d" +msgstr "" +"git apply: ungültiges 'git-diff' - Inkonsistenter alter Dateiname in Zeile %d" + +#: apply.c:990 +#, c-format +msgid "git apply: bad git-diff - expected /dev/null on line %d" +msgstr "git apply: ungültiges 'git-diff' - erwartete /dev/null in Zeile %d" + +#: apply.c:1488 +#, c-format +msgid "recount: unexpected line: %.*s" +msgstr "recount: unerwartete Zeile: %.*s" + +#: apply.c:1557 +#, c-format +msgid "patch fragment without header at line %d: %.*s" +msgstr "Patch-Fragment ohne Kopfbereich bei Zeile %d: %.*s" + +#: apply.c:1577 +#, c-format +msgid "" +"git diff header lacks filename information when removing %d leading pathname " +"component (line %d)" +msgid_plural "" +"git diff header lacks filename information when removing %d leading pathname " +"components (line %d)" +msgstr[0] "" +"Dem Kopfbereich von \"git diff\" fehlen Informationen zum Dateinamen, wenn " +"%d vorangestellter Teil des Pfades entfernt wird (Zeile %d)" +msgstr[1] "" +"Dem Kopfbereich von \"git diff\" fehlen Informationen zum Dateinamen, wenn " +"%d vorangestellte Teile des Pfades entfernt werden (Zeile %d)" + +#: apply.c:1589 +#, c-format +msgid "git diff header lacks filename information (line %d)" +msgstr "Dem Kopfbereich von \"git diff\" fehlen Informationen zum Dateinamen (Zeile %d)" + +#: apply.c:1759 +msgid "new file depends on old contents" +msgstr "neue Datei hängt von alten Inhalten ab" + +#: apply.c:1761 +msgid "deleted file still has contents" +msgstr "entfernte Datei hat noch Inhalte" + +#: apply.c:1795 +#, c-format +msgid "corrupt patch at line %d" +msgstr "fehlerhafter Patch bei Zeile %d" + +#: apply.c:1832 +#, c-format +msgid "new file %s depends on old contents" +msgstr "neue Datei %s hängt von alten Inhalten ab" + +#: apply.c:1834 +#, c-format +msgid "deleted file %s still has contents" +msgstr "entfernte Datei %s hat noch Inhalte" + +#: apply.c:1837 +#, c-format +msgid "** warning: file %s becomes empty but is not deleted" +msgstr "** Warnung: Datei %s wird leer, aber nicht entfernt." + +#: apply.c:1984 +#, c-format +msgid "corrupt binary patch at line %d: %.*s" +msgstr "fehlerhafter Binär-Patch bei Zeile %d: %.*s" + +#: apply.c:2021 +#, c-format +msgid "unrecognized binary patch at line %d" +msgstr "nicht erkannter Binär-Patch bei Zeile %d" + +#: apply.c:2182 +#, c-format +msgid "patch with only garbage at line %d" +msgstr "Patch mit nutzlosen Informationen bei Zeile %d" + +#: apply.c:2274 +#, c-format +msgid "unable to read symlink %s" +msgstr "konnte symbolische Verknüpfung %s nicht lesen" + +#: apply.c:2278 +#, c-format +msgid "unable to open or read %s" +msgstr "konnte %s nicht öffnen oder lesen" + +#: apply.c:2931 +#, c-format +msgid "invalid start of line: '%c'" +msgstr "Ungültiger Zeilenanfang: '%c'" + +#: apply.c:3050 +#, c-format +msgid "Hunk #%d succeeded at %d (offset %d line)." +msgid_plural "Hunk #%d succeeded at %d (offset %d lines)." +msgstr[0] "Patch-Bereich #%d erfolgreich angewendet bei %d (%d Zeile versetzt)" +msgstr[1] "" +"Patch-Bereich #%d erfolgreich angewendet bei %d (%d Zeilen versetzt)" + +#: apply.c:3062 +#, c-format +msgid "Context reduced to (%ld/%ld) to apply fragment at %d" +msgstr "Kontext reduziert zu (%ld/%ld), um Patch-Bereich bei %d anzuwenden" + +#: apply.c:3068 +#, c-format +msgid "" +"while searching for:\n" +"%.*s" +msgstr "" +"bei der Suche nach:\n" +"%.*s" + +#: apply.c:3090 +#, c-format +msgid "missing binary patch data for '%s'" +msgstr "keine Daten in Binär-Patch für '%s'" + +#: apply.c:3098 +#, c-format +msgid "cannot reverse-apply a binary patch without the reverse hunk to '%s'" +msgstr "" +"kann binären Patch nicht in umgekehrter Reihenfolge anwenden ohne einen\n" +"umgekehrten Patch-Block auf '%s'" + +#: apply.c:3144 +#, c-format +msgid "cannot apply binary patch to '%s' without full index line" +msgstr "kann binären Patch auf '%s' nicht ohne eine vollständige Index-Zeile anwenden" + +#: apply.c:3154 +#, c-format +msgid "" +"the patch applies to '%s' (%s), which does not match the current contents." +msgstr "" +"der Patch wird angewendet auf '%s' (%s), was nicht den aktuellen Inhalten\n" +"entspricht" + +#: apply.c:3162 +#, c-format +msgid "the patch applies to an empty '%s' but it is not empty" +msgstr "der Patch wird auf ein leeres '%s' angewendet, was aber nicht leer ist" + +#: apply.c:3180 +#, c-format +msgid "the necessary postimage %s for '%s' cannot be read" +msgstr "das erforderliche Postimage %s für '%s' kann nicht gelesen werden" + +#: apply.c:3193 +#, c-format +msgid "binary patch does not apply to '%s'" +msgstr "Konnte Binär-Patch nicht auf '%s' anwenden" + +#: apply.c:3199 +#, c-format +msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)" +msgstr "" +"Binär-Patch für '%s' erzeugt falsches Ergebnis (erwartete %s, bekam %s)" + +#: apply.c:3220 +#, c-format +msgid "patch failed: %s:%ld" +msgstr "Anwendung des Patches fehlgeschlagen: %s:%ld" + +#: apply.c:3342 +#, c-format +msgid "cannot checkout %s" +msgstr "kann %s nicht auschecken" + +#: apply.c:3390 apply.c:3401 apply.c:3447 setup.c:248 +#, c-format +msgid "failed to read %s" +msgstr "Fehler beim Lesen von %s" + +#: apply.c:3398 +#, c-format +msgid "reading from '%s' beyond a symbolic link" +msgstr "'%s' ist hinter einer symbolischen Verknüpfung" + +#: apply.c:3427 apply.c:3667 +#, c-format +msgid "path %s has been renamed/deleted" +msgstr "Pfad %s wurde umbenannt/gelöscht" + +#: apply.c:3510 apply.c:3681 +#, c-format +msgid "%s: does not exist in index" +msgstr "%s ist nicht im Index" + +#: apply.c:3519 apply.c:3689 +#, c-format +msgid "%s: does not match index" +msgstr "%s entspricht nicht der Version im Index" + +#: apply.c:3554 +msgid "repository lacks the necessary blob to fall back on 3-way merge." +msgstr "" +"Dem Repository fehlt der notwendige Blob, um auf einen 3-Wege-Merge\n" +"zurückzufallen." + +#: apply.c:3557 +#, c-format +msgid "Falling back to three-way merge...\n" +msgstr "Falle zurück auf 3-Wege-Merge ...\n" + +#: apply.c:3573 apply.c:3577 +#, c-format +msgid "cannot read the current contents of '%s'" +msgstr "kann aktuelle Inhalte von '%s' nicht lesen" + +#: apply.c:3589 +#, c-format +msgid "Failed to fall back on three-way merge...\n" +msgstr "Fehler beim Zurückfallen auf 3-Wege-Merge...\n" + +#: apply.c:3603 +#, c-format +msgid "Applied patch to '%s' with conflicts.\n" +msgstr "Patch auf '%s' mit Konflikten angewendet.\n" + +#: apply.c:3608 +#, c-format +msgid "Applied patch to '%s' cleanly.\n" +msgstr "Patch auf '%s' sauber angewendet.\n" + +#: apply.c:3634 +msgid "removal patch leaves file contents" +msgstr "Lösch-Patch hinterlässt Dateiinhalte" + +#: apply.c:3706 +#, c-format +msgid "%s: wrong type" +msgstr "%s: falscher Typ" + +#: apply.c:3708 +#, c-format +msgid "%s has type %o, expected %o" +msgstr "%s ist vom Typ %o, erwartete %o" + +#: apply.c:3859 apply.c:3861 +#, c-format +msgid "invalid path '%s'" +msgstr "Ungültiger Pfad '%s'" + +#: apply.c:3917 +#, c-format +msgid "%s: already exists in index" +msgstr "%s ist bereits bereitgestellt" + +#: apply.c:3920 +#, c-format +msgid "%s: already exists in working directory" +msgstr "%s existiert bereits im Arbeitsverzeichnis" + +#: apply.c:3940 +#, c-format +msgid "new mode (%o) of %s does not match old mode (%o)" +msgstr "neuer Modus (%o) von %s entspricht nicht dem alten Modus (%o)" + +#: apply.c:3945 +#, c-format +msgid "new mode (%o) of %s does not match old mode (%o) of %s" +msgstr "neuer Modus (%o) von %s entspricht nicht dem alten Modus (%o) von %s" + +#: apply.c:3965 +#, c-format +msgid "affected file '%s' is beyond a symbolic link" +msgstr "betroffene Datei '%s' ist hinter einer symbolischen Verknüpfung" + +#: apply.c:3969 +#, c-format +msgid "%s: patch does not apply" +msgstr "%s: Patch konnte nicht angewendet werden" + +#: apply.c:3984 +#, c-format +msgid "Checking patch %s..." +msgstr "Prüfe Patch %s ..." + +#: apply.c:4075 +#, c-format +msgid "sha1 information is lacking or useless for submodule %s" +msgstr "SHA-1 Information fehlt oder ist unbrauchbar für Submodul %s" + +#: apply.c:4082 +#, c-format +msgid "mode change for %s, which is not in current HEAD" +msgstr "Modusänderung für %s, was sich nicht im aktuellen HEAD befindet" + +#: apply.c:4085 +#, c-format +msgid "sha1 information is lacking or useless (%s)." +msgstr "SHA-1 Information fehlt oder ist unbrauchbar (%s)." + +#: apply.c:4090 builtin/checkout.c:233 builtin/reset.c:135 +#, c-format +msgid "make_cache_entry failed for path '%s'" +msgstr "make_cache_entry für Pfad '%s' fehlgeschlagen" + +#: apply.c:4094 +#, c-format +msgid "could not add %s to temporary index" +msgstr "konnte %s nicht zum temporären Index hinzufügen" + +#: apply.c:4104 +#, c-format +msgid "could not write temporary index to %s" +msgstr "konnte temporären Index nicht nach %s schreiben" + +#: apply.c:4242 +#, c-format +msgid "unable to remove %s from index" +msgstr "konnte %s nicht aus dem Index entfernen" + +#: apply.c:4277 +#, c-format +msgid "corrupt patch for submodule %s" +msgstr "fehlerhafter Patch für Submodul %s" + +#: apply.c:4283 +#, c-format +msgid "unable to stat newly created file '%s'" +msgstr "konnte neu erstellte Datei '%s' nicht lesen" + +#: apply.c:4291 +#, c-format +msgid "unable to create backing store for newly created file %s" +msgstr "kann internen Speicher für eben erstellte Datei %s nicht erzeugen" + +#: apply.c:4297 apply.c:4441 +#, c-format +msgid "unable to add cache entry for %s" +msgstr "kann für %s keinen Eintrag in den Zwischenspeicher hinzufügen" + +#: apply.c:4338 +#, c-format +msgid "failed to write to '%s'" +msgstr "Fehler beim Schreiben nach '%s'" + +#: apply.c:4342 +#, c-format +msgid "closing file '%s'" +msgstr "schließe Datei '%s'" + +#: apply.c:4412 +#, c-format +msgid "unable to write file '%s' mode %o" +msgstr "konnte Datei '%s' mit Modus %o nicht schreiben" + +#: apply.c:4510 +#, c-format +msgid "Applied patch %s cleanly." +msgstr "Patch %s sauber angewendet" + +#: apply.c:4518 +msgid "internal error" +msgstr "interner Fehler" + +#: apply.c:4521 +#, c-format +msgid "Applying patch %%s with %d reject..." +msgid_plural "Applying patch %%s with %d rejects..." +msgstr[0] "Wende Patch %%s mit %d Zurückweisung an..." +msgstr[1] "Wende Patch %%s mit %d Zurückweisungen an..." + +#: apply.c:4532 +#, c-format +msgid "truncating .rej filename to %.*s.rej" +msgstr "Verkürze Name von .rej Datei zu %.*s.rej" + +#: apply.c:4540 builtin/fetch.c:740 builtin/fetch.c:989 +#, c-format +msgid "cannot open %s" +msgstr "kann '%s' nicht öffnen" + +#: apply.c:4554 +#, c-format +msgid "Hunk #%d applied cleanly." +msgstr "Patch-Bereich #%d sauber angewendet." + +#: apply.c:4558 +#, c-format +msgid "Rejected hunk #%d." +msgstr "Patch-Block #%d zurückgewiesen." + +#: apply.c:4668 +#, c-format +msgid "Skipped patch '%s'." +msgstr "Patch '%s' ausgelassen." + +#: apply.c:4676 +msgid "unrecognized input" +msgstr "nicht erkannte Eingabe" + +#: apply.c:4695 +msgid "unable to read index file" +msgstr "Konnte Index-Datei nicht lesen" + +#: apply.c:4833 +#, c-format +msgid "can't open patch '%s': %s" +msgstr "kann Patch '%s' nicht öffnen: %s" + +#: apply.c:4858 +#, c-format +msgid "squelched %d whitespace error" +msgid_plural "squelched %d whitespace errors" +msgstr[0] "unterdrückte %d Whitespace-Fehler" +msgstr[1] "unterdrückte %d Whitespace-Fehler" + +#: apply.c:4864 apply.c:4879 +#, c-format +msgid "%d line adds whitespace errors." +msgid_plural "%d lines add whitespace errors." +msgstr[0] "%d Zeile fügt Whitespace-Fehler hinzu." +msgstr[1] "%d Zeilen fügen Whitespace-Fehler hinzu." + +#: apply.c:4872 +#, c-format +msgid "%d line applied after fixing whitespace errors." +msgid_plural "%d lines applied after fixing whitespace errors." +msgstr[0] "%d Zeile nach Behebung von Whitespace-Fehlern angewendet." +msgstr[1] "%d Zeilen nach Behebung von Whitespace-Fehlern angewendet." + +#: apply.c:4888 builtin/add.c:463 builtin/mv.c:286 builtin/rm.c:431 +msgid "Unable to write new index file" +msgstr "Konnte neue Index-Datei nicht schreiben." + +#: apply.c:4919 apply.c:4922 builtin/am.c:2277 builtin/am.c:2280 +#: builtin/clone.c:95 builtin/fetch.c:98 builtin/pull.c:180 +#: builtin/submodule--helper.c:281 builtin/submodule--helper.c:407 +#: builtin/submodule--helper.c:589 builtin/submodule--helper.c:592 +#: builtin/submodule--helper.c:944 builtin/submodule--helper.c:947 +msgid "path" +msgstr "Pfad" + +#: apply.c:4920 +msgid "don't apply changes matching the given path" +msgstr "keine Änderungen im angegebenen Pfad anwenden" + +#: apply.c:4923 +msgid "apply changes matching the given path" +msgstr "Änderungen nur im angegebenen Pfad anwenden" + +#: apply.c:4925 builtin/am.c:2286 +msgid "num" +msgstr "Anzahl" + +#: apply.c:4926 +msgid "remove <num> leading slashes from traditional diff paths" +msgstr "" +"<Anzahl> vorangestellte Schrägstriche von herkömmlichen Differenzpfaden " +"entfernen" + +#: apply.c:4929 +msgid "ignore additions made by the patch" +msgstr "hinzugefügte Zeilen des Patches ignorieren" + +#: apply.c:4931 +msgid "instead of applying the patch, output diffstat for the input" +msgstr "" +"anstatt der Anwendung des Patches, den \"diffstat\" für die Eingabe " +"ausgegeben" + +#: apply.c:4935 +msgid "show number of added and deleted lines in decimal notation" +msgstr "" +"die Anzahl von hinzugefügten/entfernten Zeilen in Dezimalnotation anzeigen" + +#: apply.c:4937 +msgid "instead of applying the patch, output a summary for the input" +msgstr "" +"anstatt der Anwendung des Patches, eine Zusammenfassung für die Eingabe " +"ausgeben" + +#: apply.c:4939 +msgid "instead of applying the patch, see if the patch is applicable" +msgstr "" +"anstatt der Anwendung des Patches, zeige ob Patch angewendet werden kann" + +#: apply.c:4941 +msgid "make sure the patch is applicable to the current index" +msgstr "" +"sicherstellen, dass der Patch mit dem aktuellen Index angewendet werden kann" + +#: apply.c:4943 +msgid "apply a patch without touching the working tree" +msgstr "Patch anwenden, ohne Änderungen im Arbeitsverzeichnis vorzunehmen" + +#: apply.c:4945 +msgid "accept a patch that touches outside the working area" +msgstr "" +"Patch anwenden, der Änderungen außerhalb des Arbeitsverzeichnisses vornimmt" + +#: apply.c:4947 +msgid "also apply the patch (use with --stat/--summary/--check)" +msgstr "Patch anwenden (Benutzung mit --stat/--summary/--check)" + +#: apply.c:4949 +msgid "attempt three-way merge if a patch does not apply" +msgstr "versuche 3-Wege-Merge, wenn der Patch nicht angewendet werden konnte" + +#: apply.c:4951 +msgid "build a temporary index based on embedded index information" +msgstr "" +"einen temporären Index, basierend auf den integrierten Index-Informationen, " +"erstellen" + +#: apply.c:4954 builtin/checkout-index.c:169 builtin/ls-files.c:505 +msgid "paths are separated with NUL character" +msgstr "Pfade sind getrennt durch NUL Zeichen" + +#: apply.c:4956 +msgid "ensure at least <n> lines of context match" +msgstr "" +"sicher stellen, dass mindestens <n> Zeilen des Kontextes übereinstimmen" + +#: apply.c:4957 builtin/am.c:2265 +msgid "action" +msgstr "Aktion" + +#: apply.c:4958 +msgid "detect new or modified lines that have whitespace errors" +msgstr "neue oder geänderte Zeilen, die Whitespace-Fehler haben, ermitteln" + +#: apply.c:4961 apply.c:4964 +msgid "ignore changes in whitespace when finding context" +msgstr "Änderungen im Whitespace bei der Suche des Kontextes ignorieren" + +#: apply.c:4967 +msgid "apply the patch in reverse" +msgstr "den Patch in umgekehrter Reihenfolge anwenden" + +#: apply.c:4969 +msgid "don't expect at least one line of context" +msgstr "keinen Kontext erwarten" + +#: apply.c:4971 +msgid "leave the rejected hunks in corresponding *.rej files" +msgstr "" +"zurückgewiesene Patch-Blöcke in entsprechenden *.rej Dateien hinterlassen" + +#: apply.c:4973 +msgid "allow overlapping hunks" +msgstr "sich überlappende Patch-Blöcke erlauben" + +#: apply.c:4974 builtin/add.c:267 builtin/check-ignore.c:19 +#: builtin/commit.c:1339 builtin/count-objects.c:94 builtin/fsck.c:593 +#: builtin/log.c:1860 builtin/mv.c:110 builtin/read-tree.c:114 +msgid "be verbose" +msgstr "erweiterte Ausgaben" + +#: apply.c:4976 +msgid "tolerate incorrectly detected missing new-line at the end of file" +msgstr "fehlerhaft erkannten fehlenden Zeilenumbruch am Dateiende tolerieren" + +#: apply.c:4979 +msgid "do not trust the line counts in the hunk headers" +msgstr "den Zeilennummern im Kopf des Patch-Blocks nicht vertrauen" + +#: apply.c:4981 builtin/am.c:2274 +msgid "root" +msgstr "Wurzelverzeichnis" + +#: apply.c:4982 +msgid "prepend <root> to all filenames" +msgstr "<Wurzelverzeichnis> vor alle Dateinamen stellen" + #: archive.c:12 msgid "git archive [<options>] <tree-ish> [<path>...]" msgstr "git archive [<Optionen>] <Commit-Referenz> [<Pfad>...]" @@ -121,7 +765,7 @@ msgstr "" msgid "git archive --remote <repo> [--exec <cmd>] --list" msgstr "git archive --remote <Repository> [--exec <Programm>] --list" -#: archive.c:344 builtin/add.c:139 builtin/add.c:435 builtin/rm.c:327 +#: archive.c:344 builtin/add.c:152 builtin/add.c:442 builtin/rm.c:327 #, c-format msgid "pathspec '%s' did not match any files" msgstr "Pfadspezifikation '%s' stimmt mit keinen Dateien überein" @@ -134,7 +778,7 @@ msgstr "Format" msgid "archive format" msgstr "Archivformat" -#: archive.c:430 builtin/log.c:1422 +#: archive.c:430 builtin/log.c:1429 msgid "prefix" msgstr "Präfix" @@ -142,11 +786,11 @@ msgstr "Präfix" msgid "prepend prefix to each pathname in the archive" msgstr "einen Präfix vor jeden Pfadnamen in dem Archiv stellen" -#: 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 +#: archive.c:432 builtin/blame.c:2603 builtin/blame.c:2604 builtin/config.c:59 +#: builtin/fast-export.c:987 builtin/fast-export.c:989 builtin/grep.c:723 +#: builtin/hash-object.c:101 builtin/ls-files.c:539 builtin/ls-files.c:542 +#: builtin/notes.c:401 builtin/notes.c:564 builtin/read-tree.c:109 +#: parse-options.h:153 msgid "file" msgstr "Datei" @@ -178,8 +822,8 @@ msgstr "besser komprimieren" msgid "list supported archive formats" msgstr "unterstützte Archivformate auflisten" -#: archive.c:451 builtin/archive.c:90 builtin/clone.c:82 -#: builtin/submodule--helper.c:832 +#: archive.c:451 builtin/archive.c:90 builtin/clone.c:85 builtin/clone.c:88 +#: builtin/submodule--helper.c:601 builtin/submodule--helper.c:953 msgid "repo" msgstr "Repository" @@ -187,7 +831,7 @@ msgstr "Repository" msgid "retrieve the archive from remote repository <repo>" msgstr "Archiv vom Remote-Repository <Repository> abrufen" -#: archive.c:453 builtin/archive.c:92 builtin/notes.c:483 +#: archive.c:453 builtin/archive.c:92 builtin/notes.c:485 msgid "command" msgstr "Programm" @@ -468,27 +1112,27 @@ msgstr "" "\"git push -u\" verwenden, um den Upstream-Branch beim \"push\"\n" "zu konfigurieren." -#: branch.c:266 +#: branch.c:265 #, c-format msgid "Not a valid object name: '%s'." msgstr "Ungültiger Objekt-Name: '%s'" -#: branch.c:286 +#: branch.c:285 #, c-format msgid "Ambiguous object name: '%s'." msgstr "mehrdeutiger Objekt-Name: '%s'" -#: branch.c:291 +#: branch.c:290 #, c-format msgid "Not a valid branch point: '%s'." msgstr "Ungültiger Branchpunkt: '%s'" -#: branch.c:345 +#: branch.c:344 #, c-format msgid "'%s' is already checked out at '%s'" msgstr "'%s' ist bereits in '%s' ausgecheckt" -#: branch.c:364 +#: branch.c:363 #, c-format msgid "HEAD of working tree %s is not updated" msgstr "HEAD des Arbeitsverzeichnisses %s ist nicht aktualisiert." @@ -503,7 +1147,7 @@ msgstr "'%s' sieht nicht wie eine v2 Paketdatei aus" msgid "unrecognized header: %s%s (%d)" msgstr "nicht erkannter Kopfbereich: %s%s (%d)" -#: bundle.c:87 builtin/commit.c:778 +#: bundle.c:87 sequencer.c:963 builtin/commit.c:777 #, c-format msgid "could not open '%s'" msgstr "Konnte '%s' nicht öffnen" @@ -512,9 +1156,9 @@ msgstr "Konnte '%s' nicht öffnen" msgid "Repository lacks these prerequisite commits:" msgstr "Dem Repository fehlen folgende vorausgesetzte Commits:" -#: 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 +#: bundle.c:163 ref-filter.c:1462 sequencer.c:830 sequencer.c:1374 +#: builtin/blame.c:2814 builtin/commit.c:1061 builtin/log.c:348 +#: builtin/log.c:890 builtin/log.c:1340 builtin/log.c:1666 builtin/log.c:1909 #: builtin/merge.c:356 builtin/shortlog.c:170 msgid "revision walk setup failed" msgstr "Einrichtung des Revisionsgangs fehlgeschlagen" @@ -554,7 +1198,7 @@ msgstr "\"rev-list\" abgebrochen" msgid "ref '%s' is excluded by the rev-list options" msgstr "Referenz '%s' wird durch \"rev-list\" Optionen ausgeschlossen" -#: bundle.c:443 builtin/log.c:165 builtin/log.c:1565 builtin/shortlog.c:273 +#: bundle.c:443 builtin/log.c:165 builtin/log.c:1572 builtin/shortlog.c:273 #, c-format msgid "unrecognized argument: %s" msgstr "nicht erkanntes Argument: %s" @@ -577,8 +1221,8 @@ msgstr "Erstellung der Paketindexdatei abgebrochen" msgid "invalid color value: %.*s" msgstr "Ungültiger Farbwert: %.*s" -#: commit.c:40 builtin/am.c:433 builtin/am.c:469 builtin/am.c:1505 -#: builtin/am.c:2119 +#: commit.c:40 builtin/am.c:421 builtin/am.c:457 builtin/am.c:1493 +#: builtin/am.c:2127 #, c-format msgid "could not parse %s" msgstr "konnte %s nicht parsen" @@ -588,6 +1232,17 @@ msgstr "konnte %s nicht parsen" msgid "%s %s is not a commit!" msgstr "%s %s ist kein Commit!" +#: commit.c:1514 +msgid "" +"Warning: commit message did not conform to UTF-8.\n" +"You may want to amend it after fixing the message, or set the config\n" +"variable i18n.commitencoding to the encoding your project uses.\n" +msgstr "" +"Warnung: Die Commit-Beschreibung ist nicht UTF-8 konform.\n" +"Sie können das Nachbessern, nachdem Sie die Beschreibung korrigiert haben,\n" +"oder Sie setzen die Konfigurationsvariable i18n.commitencoding auf das Encoding,\n" +"welches von ihrem Projekt verwendet wird.\n" + #: compat/obstack.c:406 compat/obstack.c:408 msgid "memory exhausted" msgstr "Speicher verbraucht" @@ -643,22 +1298,29 @@ msgstr "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Blob %s: %s #: config.c:669 #, c-format msgid "bad numeric config value '%s' for '%s' in file %s: %s" -msgstr "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Datei %s: %s" +msgstr "" +"Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Datei %s: %s" #: config.c:672 #, c-format msgid "bad numeric config value '%s' for '%s' in standard input: %s" -msgstr "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Standard-Eingabe: %s" +msgstr "" +"Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Standard-Eingabe: " +"%s" #: config.c:675 #, c-format msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s" -msgstr "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Submodul-Blob %s: %s" +msgstr "" +"Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Submodul-Blob %s: " +"%s" #: config.c:678 #, c-format msgid "bad numeric config value '%s' for '%s' in command line %s: %s" -msgstr "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Befehlszeile %s: %s" +msgstr "" +"Ungültiger numerischer Wert '%s' für Konfiguration '%s' in Befehlszeile %s: " +"%s" #: config.c:681 #, c-format @@ -670,7 +1332,7 @@ msgstr "Ungültiger numerischer Wert '%s' für Konfiguration '%s' in %s: %s" msgid "failed to expand user dir in: '%s'" msgstr "Fehler beim Erweitern des Nutzerverzeichnisses in: '%s'" -#: config.c:849 config.c:860 +#: config.c:852 config.c:863 #, c-format msgid "bad zlib compression level %d" msgstr "ungültiger zlib Komprimierungsgrad %d" @@ -717,22 +1379,66 @@ msgstr "Konnte '%s' nicht zu '%s' setzen." msgid "could not unset '%s'" msgstr "Konnte '%s' nicht aufheben." +#: connect.c:49 +msgid "The remote end hung up upon initial contact" +msgstr "Die Gegenseite hat sich nach dem erstmaligen Kontakt aufgehangen." + +#: connect.c:51 +msgid "" +"Could not read from remote repository.\n" +"\n" +"Please make sure you have the correct access rights\n" +"and the repository exists." +msgstr "" +"Konnte nicht vom Remote-Repository lesen.\n" +"\n" +"Bitte stellen Sie sicher, dass die korrekten Zugriffsberechtigungen bestehen\n" +"und das Repository existiert." + #: connected.c:63 builtin/fsck.c:173 builtin/prune.c:140 msgid "Checking connectivity" msgstr "Prüfe Konnektivität" -#: connected.c:74 +#: connected.c:75 msgid "Could not run 'git rev-list'" msgstr "Konnte 'git rev-list' nicht ausführen" -#: connected.c:94 +#: connected.c:95 msgid "failed write to rev-list" msgstr "Fehler beim Schreiben nach rev-list" -#: connected.c:101 +#: connected.c:102 msgid "failed to close rev-list's stdin" msgstr "Fehler beim Schließen von rev-list's Standard-Eingabe" +#: convert.c:201 +#, c-format +msgid "" +"CRLF will be replaced by LF in %s.\n" +"The file will have its original line endings in your working directory." +msgstr "" +"CRLF wird in %s durch LF ersetzt.\n" +"Die Datei wird ihre ursprünglichen Zeilenenden im Arbeitsverzeichnis behalten." + +#: convert.c:205 +#, c-format +msgid "CRLF would be replaced by LF in %s." +msgstr "CRLF würde in %s durch LF ersetzt werden." + +#: convert.c:211 +#, c-format +msgid "" +"LF will be replaced by CRLF in %s.\n" +"The file will have its original line endings in your working directory." +msgstr "" +"LF wird in %s durch CRLF ersetzt.\n" +"Die Datei wird ihre ursprünglichen Zeilenenden im Arbeitsverzeichnis behalten." + +#: convert.c:215 +#, c-format +msgid "LF would be replaced by CRLF in %s" +msgstr "LF würde in %s durch CRLF ersetzt werden." + #: date.c:97 msgid "in the future" msgstr "in der Zukunft" @@ -806,27 +1512,32 @@ msgstr[1] "vor %lu Jahren" msgid "failed to read orderfile '%s'" msgstr "Fehler beim Lesen der Reihenfolgedatei '%s'." -#: diffcore-rename.c:540 +#: diffcore-rename.c:536 msgid "Performing inexact rename detection" msgstr "Führe Erkennung für ungenaue Umbenennung aus" -#: diff.c:116 +#: diff.c:62 +#, c-format +msgid "option '%s' requires a value" +msgstr "Option '%s' erfordert einen Wert." + +#: diff.c:124 #, c-format msgid " Failed to parse dirstat cut-off percentage '%s'\n" msgstr "" " Fehler beim Parsen des abgeschnittenen \"dirstat\" Prozentsatzes '%s'\n" -#: diff.c:121 +#: diff.c:129 #, c-format msgid " Unknown dirstat parameter '%s'\n" msgstr " Unbekannter \"dirstat\" Parameter '%s'\n" -#: diff.c:225 +#: diff.c:283 #, c-format msgid "Unknown value for 'diff.submodule' config variable: '%s'" msgstr "Unbekannter Wert in Konfigurationsvariable 'diff.dirstat': '%s'" -#: diff.c:277 +#: diff.c:346 #, c-format msgid "" "Found errors in 'diff.dirstat' config variable:\n" @@ -835,16 +1546,20 @@ msgstr "" "Fehler in 'diff.dirstat' Konfigurationsvariable gefunden:\n" "%s" -#: diff.c:3017 +#: diff.c:3087 #, c-format msgid "external diff died, stopping at %s" msgstr "externes Diff-Programm unerwartet beendet, angehalten bei %s" -#: diff.c:3415 +#: diff.c:3412 +msgid "--name-only, --name-status, --check and -s are mutually exclusive" +msgstr "--name-only, --name-status, --check und -s schließen sich gegenseitig aus" + +#: diff.c:3502 msgid "--follow requires exactly one pathspec" msgstr "--follow erfordert genau eine Pfadspezifikation" -#: diff.c:3578 +#: diff.c:3665 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" @@ -853,63 +1568,248 @@ msgstr "" "Fehler beim Parsen des --dirstat/-X Optionsparameters:\n" "%s" -#: diff.c:3592 +#: diff.c:3679 #, c-format msgid "Failed to parse --submodule option parameter: '%s'" msgstr "Fehler beim Parsen des --submodule Optionsparameters: '%s'" -#: dir.c:1823 +#: diff.c:4700 +msgid "inexact rename detection was skipped due to too many files." +msgstr "" +"Ungenaue Erkennung für Umbenennungen wurde aufgrund zu vieler Dateien\n" +"übersprungen." + +#: diff.c:4703 +msgid "only found copies from modified paths due to too many files." +msgstr "nur Kopien von geänderten Pfaden, aufgrund zu vieler Dateien, gefunden" + +#: diff.c:4706 +#, c-format +msgid "" +"you may want to set your %s variable to at least %d and retry the command." +msgstr "" +"Sie könnten die Variable %s auf mindestens %d setzen und den Befehl\n" +"erneut versuchen." + +#: dir.c:1866 msgid "failed to get kernel name and information" msgstr "Fehler beim Sammeln von Namen und Informationen zum Kernel" -#: dir.c:1942 +#: dir.c:1985 msgid "Untracked cache is disabled on this system or location." msgstr "" "Cache für unversionierte Dateien ist auf diesem System oder\n" "für dieses Verzeichnis deaktiviert." -#: gpg-interface.c:178 +#: fetch-pack.c:213 +msgid "git fetch-pack: expected shallow list" +msgstr "git fetch-pack: erwartete shallow-Liste" + +#: fetch-pack.c:225 +msgid "git fetch-pack: expected ACK/NAK, got EOF" +msgstr "git fetch-pack: ACK/NAK erwartet, EOF bekommen" + +#: fetch-pack.c:243 +#, c-format +msgid "git fetch-pack: expected ACK/NAK, got '%s'" +msgstr "git fetch-pack: ACK/NAK erwartet, '%s' bekommen" + +#: fetch-pack.c:295 +msgid "--stateless-rpc requires multi_ack_detailed" +msgstr "--stateless-rpc benötigt multi_ack_detailed" + +#: fetch-pack.c:381 +#, c-format +msgid "invalid shallow line: %s" +msgstr "Ungültige shallow-Zeile: %s" + +#: fetch-pack.c:387 +#, c-format +msgid "invalid unshallow line: %s" +msgstr "Ungültige unshallow-Zeile: %s" + +#: fetch-pack.c:389 +#, c-format +msgid "object not found: %s" +msgstr "Objekt nicht gefunden: %s" + +#: fetch-pack.c:392 +#, c-format +msgid "error in object: %s" +msgstr "Fehler in Objekt: %s" + +#: fetch-pack.c:394 +#, c-format +msgid "no shallow found: %s" +msgstr "Kein shallow-Objekt gefunden: %s" + +#: fetch-pack.c:397 +#, c-format +msgid "expected shallow/unshallow, got %s" +msgstr "shallow/unshallow erwartet, %s bekommen" + +#: fetch-pack.c:436 +#, c-format +msgid "got %s %d %s" +msgstr "%s %d %s bekommen" + +#: fetch-pack.c:450 +#, c-format +msgid "invalid commit %s" +msgstr "Ungültiger Commit %s" + +#: fetch-pack.c:483 +msgid "giving up" +msgstr "Gebe auf" + +#: fetch-pack.c:493 progress.c:235 +msgid "done" +msgstr "Fertig" + +#: fetch-pack.c:505 +#, c-format +msgid "got %s (%d) %s" +msgstr "%s (%d) %s bekommen" + +#: fetch-pack.c:551 +#, c-format +msgid "Marking %s as complete" +msgstr "Markiere %s als vollständig" + +#: fetch-pack.c:697 +#, c-format +msgid "already have %s (%s)" +msgstr "habe %s (%s) bereits" + +#: fetch-pack.c:735 +msgid "fetch-pack: unable to fork off sideband demultiplexer" +msgstr "fetch-pack: Fehler beim Starten des sideband demultiplexer" + +#: fetch-pack.c:743 +msgid "protocol error: bad pack header" +msgstr "Protokollfehler: ungültiger Pack-Header" + +#: fetch-pack.c:799 +#, c-format +msgid "fetch-pack: unable to fork off %s" +msgstr "fetch-pack: konnte %s nicht starten" + +#: fetch-pack.c:815 +#, c-format +msgid "%s failed" +msgstr "%s fehlgeschlagen" + +#: fetch-pack.c:817 +msgid "error in sideband demultiplexer" +msgstr "Fehler in sideband demultiplexer" + +#: fetch-pack.c:844 +msgid "Server does not support shallow clients" +msgstr "Server unterstützt keine shallow-Clients" + +#: fetch-pack.c:848 +msgid "Server supports multi_ack_detailed" +msgstr "Server unterstützt multi_ack_detailed" + +#: fetch-pack.c:851 +msgid "Server supports no-done" +msgstr "Server unterstützt no-done" + +#: fetch-pack.c:857 +msgid "Server supports multi_ack" +msgstr "Server unterstützt multi_ack" + +#: fetch-pack.c:861 +msgid "Server supports side-band-64k" +msgstr "Server unterstützt side-band-64k" + +#: fetch-pack.c:865 +msgid "Server supports side-band" +msgstr "Server unterstützt side-band" + +#: fetch-pack.c:869 +msgid "Server supports allow-tip-sha1-in-want" +msgstr "Server unterstützt allow-tip-sha1-in-want" + +#: fetch-pack.c:873 +msgid "Server supports allow-reachable-sha1-in-want" +msgstr "Server unterstützt allow-reachable-sha1-in-want" + +#: fetch-pack.c:883 +msgid "Server supports ofs-delta" +msgstr "Server unterstützt ofs-delta" + +#: fetch-pack.c:890 +#, c-format +msgid "Server version is %.*s" +msgstr "Server-Version ist %.*s" + +#: fetch-pack.c:896 +msgid "Server does not support --shallow-since" +msgstr "Server unterstützt kein --shallow-since" + +#: fetch-pack.c:900 +msgid "Server does not support --shallow-exclude" +msgstr "Server unterstützt kein --shallow-exclude" + +#: fetch-pack.c:902 +msgid "Server does not support --deepen" +msgstr "Server unterstützt kein --deepen" + +#: fetch-pack.c:913 +msgid "no common commits" +msgstr "keine gemeinsamen Commits" + +#: fetch-pack.c:925 +msgid "git fetch-pack: fetch failed." +msgstr "git fetch-pack: Abholen fehlgeschlagen." + +#: fetch-pack.c:1087 +msgid "no matching remote head" +msgstr "kein übereinstimmender Remote-Branch" + +#: gpg-interface.c:185 msgid "gpg failed to sign the data" msgstr "gpg beim Signieren der Daten fehlgeschlagen" -#: gpg-interface.c:208 +#: gpg-interface.c:215 msgid "could not create temporary file" msgstr "konnte temporäre Datei nicht erstellen" -#: gpg-interface.c:210 +#: gpg-interface.c:217 #, c-format msgid "failed writing detached signature to '%s'" msgstr "Fehler beim Schreiben der losgelösten Signatur nach '%s'" -#: grep.c:1792 +#: grep.c:1782 #, c-format msgid "'%s': unable to read %s" msgstr "'%s': konnte %s nicht lesen" -#: grep.c:1809 builtin/clone.c:382 builtin/diff.c:84 builtin/rm.c:155 +#: grep.c:1799 builtin/clone.c:381 builtin/diff.c:84 builtin/rm.c:155 #, c-format msgid "failed to stat '%s'" msgstr "Konnte '%s' nicht lesen" -#: grep.c:1820 +#: grep.c:1810 #, c-format msgid "'%s': short read" msgstr "'%s': read() zu kurz" -#: help.c:205 +#: help.c:203 #, c-format msgid "available git commands in '%s'" msgstr "Vorhandene Git-Befehle in '%s'" -#: help.c:212 +#: help.c:210 msgid "git commands available from elsewhere on your $PATH" msgstr "Vorhandene Git-Befehle anderswo in Ihrem $PATH" -#: help.c:244 +#: help.c:241 msgid "These are common Git commands used in various situations:" msgstr "Allgemeine Git-Befehle, verwendet in verschiedenen Situationen:" -#: help.c:309 +#: help.c:306 #, c-format msgid "" "'%s' appears to be a git command, but we were not\n" @@ -918,11 +1818,11 @@ msgstr "" "'%s' scheint ein git-Befehl zu sein, konnte aber\n" "nicht ausgeführt werden. Vielleicht ist git-%s fehlerhaft?" -#: help.c:366 +#: help.c:361 msgid "Uh oh. Your system reports no Git commands at all." msgstr "Uh oh. Keine Git-Befehle auf Ihrem System vorhanden." -#: help.c:388 +#: help.c:383 #, c-format msgid "" "WARNING: You called a Git command named '%s', which does not exist.\n" @@ -931,17 +1831,17 @@ msgstr "" "Warnung: Sie haben den nicht existierenden Git-Befehl '%s' ausgeführt.\n" "Setze fort unter der Annahme, dass Sie '%s' gemeint haben." -#: help.c:393 +#: help.c:388 #, c-format msgid "in %0.1f seconds automatically..." msgstr "Automatische Ausführung in %0.1f Sekunden ..." -#: help.c:400 +#: help.c:395 #, c-format msgid "git: '%s' is not a git command. See 'git --help'." msgstr "git: '%s' ist kein Git-Befehl. Siehe 'git --help'." -#: help.c:404 help.c:470 +#: help.c:399 help.c:465 msgid "" "\n" "Did you mean this?" @@ -955,11 +1855,37 @@ msgstr[1] "" "\n" "Haben Sie eines von diesen gemeint?" -#: help.c:466 +#: help.c:461 #, c-format msgid "%s: %s - %s" msgstr "%s: %s - %s" +#: ident.c:334 +msgid "" +"\n" +"*** Please tell me who you are.\n" +"\n" +"Run\n" +"\n" +" git config --global user.email \"you@example.com\"\n" +" git config --global user.name \"Your Name\"\n" +"\n" +"to set your account's default identity.\n" +"Omit --global to set the identity only in this repository.\n" +"\n" +msgstr "" +"\n" +"*** Bitte geben Sie an, wer Sie sind.\n" +"\n" +"Führen Sie\n" +"\n" +" git config --global user.email \"you@example.com\"\n" +" git config --global user.name \"Your Name\"\n" +"\n" +"aus, um das als Ihre standardmäßige Identität zu setzen.\n" +"Lassen Sie die Option \"--global\" weg, um die Identität nur\n" +"für dieses Repository zu setzen.\n" + #: lockfile.c:152 #, c-format msgid "" @@ -989,8 +1915,8 @@ msgstr "Konnte '%s.lock' nicht erstellen: %s" msgid "failed to read the cache" msgstr "Lesen des Zwischenspeichers fehlgeschlagen" -#: merge.c:94 builtin/am.c:1992 builtin/am.c:2027 builtin/checkout.c:375 -#: builtin/checkout.c:589 builtin/clone.c:732 +#: merge.c:96 builtin/am.c:2000 builtin/am.c:2035 builtin/checkout.c:374 +#: builtin/checkout.c:588 builtin/clone.c:731 msgid "unable to write new index file" msgstr "Konnte neue Index-Datei nicht schreiben." @@ -1026,7 +1952,7 @@ msgstr ": vielleicht ein Verzeichnis/Datei-Konflikt?" msgid "refusing to lose untracked file at '%s'" msgstr "verweigere, da unversionierte Dateien in '%s' verloren gehen würden" -#: merge-recursive.c:796 +#: merge-recursive.c:796 builtin/cat-file.c:34 #, c-format msgid "cannot read object %s '%s'" msgstr "kann Objekt %s '%s' nicht lesen" @@ -1169,7 +2095,7 @@ msgstr "%s ausgelassen (Ergebnis des Merges existiert bereits)" msgid "Auto-merging %s" msgstr "automatischer Merge von %s" -#: merge-recursive.c:1736 git-submodule.sh:919 +#: merge-recursive.c:1736 git-submodule.sh:924 msgid "submodule" msgstr "Submodul" @@ -1236,6 +2162,23 @@ msgstr "Konnte Objekt '%s' nicht parsen." msgid "Unable to write index." msgstr "Konnte Index nicht schreiben." +#: notes-merge.c:273 +#, c-format +msgid "" +"You have not concluded your previous notes merge (%s exists).\n" +"Please, use 'git notes merge --commit' or 'git notes merge --abort' to " +"commit/abort the previous merge before you start a new notes merge." +msgstr "" +"Sie haben Ihren vorherigen Merge von Notizen nicht abgeschlossen (%s existiert).\n" +"Bitte benutzen Sie 'git notes merge --commit' oder 'git notes merge --abort', um\n" +"den vorherigen Merge zu committen bzw. abzubrechen, bevor Sie einen neuen Merge\n" +"von Notizen beginnen." + +#: notes-merge.c:280 +#, c-format +msgid "You have not concluded your notes merge (%s exists)." +msgstr "Sie haben Ihren Merge von Notizen nicht abgeschlossen (%s existiert)." + #: notes-utils.c:41 msgid "Cannot commit uninitialized/unreferenced notes tree" msgstr "" @@ -1294,7 +2237,7 @@ msgstr "-NUM" msgid "malformed object name '%s'" msgstr "fehlerhafter Objekt-Name '%s'" -#: path.c:798 +#: path.c:826 #, c-format msgid "Could not make %s writable by group" msgstr "Konnte Gruppenschreibrecht für %s nicht setzen." @@ -1353,12 +2296,20 @@ msgid "%s: pathspec magic not supported by this command: %s" msgstr "" "%s: Pfadspezifikationsangabe wird von diesem Befehl nicht unterstützt: %s" -#: pathspec.c:433 +#: pathspec.c:408 +msgid "" +"empty strings as pathspecs will be made invalid in upcoming releases. please " +"use . instead if you meant to match all paths" +msgstr "" +"Leere Strings als Pfadspezifikationen werden in kommenden Releases ungültig.\n" +"Bitte benutzen Sie stattdessen . wenn Sie alle Pfade meinen." + +#: pathspec.c:440 #, c-format msgid "pathspec '%s' is beyond a symbolic link" msgstr "Pfadspezifikation '%s' ist hinter einer symbolischen Verknüpfung" -#: pathspec.c:442 +#: pathspec.c:449 msgid "" "There is nothing to exclude from by :(exclude) patterns.\n" "Perhaps you forgot to add either ':/' or '.' ?" @@ -1366,15 +2317,11 @@ msgstr "" ":(exclude) Muster, aber keine anderen Pfadspezifikationen angegeben.\n" "Vielleicht haben Sie vergessen entweder ':/' oder '.' hinzuzufügen?" -#: pretty.c:973 +#: pretty.c:971 msgid "unable to parse --pretty format" msgstr "Konnte --pretty Format nicht parsen." -#: progress.c:235 -msgid "done" -msgstr "Fertig" - -#: read-cache.c:1281 +#: read-cache.c:1315 #, c-format msgid "" "index.version set, but the value is invalid.\n" @@ -1383,7 +2330,7 @@ msgstr "" "index.version gesetzt, aber Wert ungültig.\n" "Verwende Version %i" -#: read-cache.c:1291 +#: read-cache.c:1325 #, c-format msgid "" "GIT_INDEX_VERSION set, but the value is invalid.\n" @@ -1392,22 +2339,22 @@ msgstr "" "GIT_INDEX_VERSION gesetzt, aber Wert ungültig.\n" "Verwende Version %i" -#: refs.c:551 builtin/merge.c:840 +#: refs.c:576 builtin/merge.c:840 #, c-format msgid "Could not open '%s' for writing" msgstr "Konnte '%s' nicht zum Schreiben öffnen." -#: refs/files-backend.c:2534 +#: refs/files-backend.c:2481 #, c-format msgid "could not delete reference %s: %s" msgstr "Konnte Referenz %s nicht entfernen: %s" -#: refs/files-backend.c:2537 +#: refs/files-backend.c:2484 #, c-format msgid "could not delete references: %s" msgstr "Konnte Referenzen nicht entfernen: %s" -#: refs/files-backend.c:2546 +#: refs/files-backend.c:2493 #, c-format msgid "could not remove reference %s" msgstr "Konnte Referenz %s nicht löschen" @@ -1536,12 +2483,12 @@ msgstr "Ignoriere Referenz mit fehlerhaftem Namen %s" msgid "ignoring broken ref %s" msgstr "Ignoriere fehlerhafte Referenz %s" -#: ref-filter.c:1651 +#: ref-filter.c:1633 #, c-format msgid "format: %%(end) atom missing" msgstr "Format: %%(end) Atom fehlt" -#: ref-filter.c:1705 +#: ref-filter.c:1687 #, c-format msgid "malformed object name %s" msgstr "Missgebildeter Objektname %s" @@ -1671,38 +2618,38 @@ msgstr "" " (benutzen Sie \"git pull\", um Ihren Branch mit dem Remote-Branch " "zusammenzuführen)\n" -#: revision.c:2132 +#: revision.c:2158 msgid "your current branch appears to be broken" msgstr "Ihr aktueller Branch scheint fehlerhaft zu sein." -#: revision.c:2135 +#: revision.c:2161 #, c-format msgid "your current branch '%s' does not have any commits yet" msgstr "Ihr aktueller Branch '%s' hat noch keine Commits." -#: revision.c:2329 +#: revision.c:2355 msgid "--first-parent is incompatible with --bisect" msgstr "Die Optionen --first-parent und --bisect sind inkompatibel." -#: run-command.c:92 +#: run-command.c:106 msgid "open /dev/null failed" msgstr "Öffnen von /dev/null fehlgeschlagen" -#: run-command.c:94 +#: run-command.c:108 #, c-format msgid "dup2(%d,%d) failed" msgstr "dup2(%d,%d) fehlgeschlagen" -#: send-pack.c:298 +#: send-pack.c:297 msgid "failed to sign the push certificate" msgstr "Fehler beim Signieren des \"push\"-Zertifikates" -#: send-pack.c:411 +#: send-pack.c:410 msgid "the receiving end does not support --signed push" msgstr "" "die Gegenseite unterstützt keinen signierten Versand (\"--signed push\")" -#: send-pack.c:413 +#: send-pack.c:412 msgid "" "not sending a push certificate since the receiving end does not support --" "signed push" @@ -1710,15 +2657,23 @@ msgstr "" "kein Versand des \"push\"-Zertifikates, da die Gegenseite keinen signierten\n" "Versand (\"--signed push\") unterstützt" -#: send-pack.c:425 +#: send-pack.c:424 msgid "the receiving end does not support --atomic push" msgstr "die Gegenseite unterstützt keinen atomaren Versand (\"--atomic push\")" -#: send-pack.c:430 +#: send-pack.c:429 msgid "the receiving end does not support push options" msgstr "die Gegenseite unterstützt keine Push-Optionen" -#: sequencer.c:174 +#: sequencer.c:171 +msgid "revert" +msgstr "Revert" + +#: sequencer.c:171 +msgid "cherry-pick" +msgstr "Cherry-Pick" + +#: sequencer.c:228 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add <paths>' or 'git rm <paths>'" @@ -1726,7 +2681,7 @@ msgstr "" "nach Auflösung der Konflikte, markieren Sie die korrigierten Pfade\n" "mit 'git add <Pfade>' oder 'git rm <Pfade>'" -#: sequencer.c:177 +#: sequencer.c:231 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add <paths>' or 'git rm <paths>'\n" @@ -1736,230 +2691,257 @@ msgstr "" "mit 'git add <Pfade>' oder 'git rm <Pfade>'und tragen Sie das Ergebnis mit\n" "'git commit' ein" -#: sequencer.c:190 sequencer.c:841 sequencer.c:924 +#: sequencer.c:244 sequencer.c:1209 #, c-format -msgid "Could not write to %s" -msgstr "Konnte nicht nach %s schreiben" +msgid "could not lock '%s'" +msgstr "Konnte '%s' nicht sperren" -#: sequencer.c:193 sequencer.c:843 sequencer.c:928 +#: sequencer.c:247 sequencer.c:1125 sequencer.c:1214 #, c-format -msgid "Error wrapping up %s." -msgstr "Fehler beim Einpacken von %s." +msgid "could not write to '%s'" +msgstr "Konnte nicht nach '%s' schreiben." -#: sequencer.c:208 -msgid "Your local changes would be overwritten by cherry-pick." -msgstr "" -"Ihre lokalen Änderungen würden durch den Cherry-Pick überschrieben werden." +#: sequencer.c:251 +#, c-format +msgid "could not write eol to '%s'" +msgstr "Konnte EOL nicht nach '%s' schreiben." + +#: sequencer.c:255 sequencer.c:1130 sequencer.c:1216 +#, c-format +msgid "failed to finalize '%s'." +msgstr "Fehler beim Fertigstellen von '%s'." + +#: sequencer.c:279 builtin/am.c:259 builtin/commit.c:749 builtin/merge.c:1032 +#, c-format +msgid "could not read '%s'" +msgstr "Konnte '%s' nicht lesen" -#: sequencer.c:210 -msgid "Your local changes would be overwritten by revert." -msgstr "Ihre lokalen Änderungen würden durch den Revert überschrieben werden." +#: sequencer.c:305 +#, c-format +msgid "your local changes would be overwritten by %s." +msgstr "Ihre lokalen Änderungen würden durch den %s überschrieben werden." -#: sequencer.c:213 -msgid "Commit your changes or stash them to proceed." +#: sequencer.c:309 +msgid "commit your changes or stash them to proceed." msgstr "" "Committen Sie Ihre Änderungen oder benutzen Sie \"stash\", um fortzufahren." -#: sequencer.c:228 +#: sequencer.c:324 #, c-format msgid "%s: fast-forward" msgstr "%s: Vorspulen" #. TRANSLATORS: %s will be "revert" or "cherry-pick" -#: sequencer.c:303 +#: sequencer.c:399 #, c-format msgid "%s: Unable to write new index file" msgstr "%s: Konnte neue Index-Datei nicht schreiben" -#: sequencer.c:321 -msgid "Could not resolve HEAD commit\n" -msgstr "Konnte Commit von HEAD nicht auflösen\n" +#: sequencer.c:418 +msgid "could not resolve HEAD commit\n" +msgstr "Konnte HEAD-Commit nicht auflösen\n" -#: sequencer.c:341 -msgid "Unable to update cache tree\n" +#: sequencer.c:438 +msgid "unable to update cache tree\n" msgstr "Konnte Cache-Verzeichnis nicht aktualisieren\n" -#: sequencer.c:393 +#: sequencer.c:483 +#, c-format +msgid "" +"you have staged changes in your working tree\n" +"If these changes are meant to be squashed into the previous commit, run:\n" +"\n" +" git commit --amend %s\n" +"\n" +"If they are meant to go into a new commit, run:\n" +"\n" +" git commit %s\n" +"\n" +"In both cases, once you're done, continue with:\n" +"\n" +" git rebase --continue\n" +msgstr "" +"Es befinden sich zum Commit vorgemerkte Änderungen in Ihrem Arbeitsverzeichnis.\n" +"Wenn diese Änderungen in den vorherigen Commit aufgenommen werden sollen,\n" +"führen Sie aus:\n" +"\n" +" git commit --amend %s\n" +"\n" +"Wenn daraus ein neuer Commit erzeugt werden soll, führen Sie aus:\n" +"\n" +" git commit %s\n" +"\n" +"Im Anschluss führen Sie zum Fortfahren aus:\n" +"\n" +" git rebase --continue\n" + +#: sequencer.c:567 #, c-format -msgid "Could not parse commit %s\n" +msgid "could not parse commit %s\n" msgstr "Konnte Commit %s nicht parsen\n" -#: sequencer.c:398 +#: sequencer.c:572 #, c-format -msgid "Could not parse parent commit %s\n" +msgid "could not parse parent commit %s\n" msgstr "Konnte Eltern-Commit %s nicht parsen\n" -#: sequencer.c:463 -msgid "Your index file is unmerged." +#: sequencer.c:656 +msgid "your index file is unmerged." msgstr "Ihre Index-Datei ist nicht zusammengeführt." -#: sequencer.c:482 +#: sequencer.c:675 #, c-format -msgid "Commit %s is a merge but no -m option was given." +msgid "commit %s is a merge but no -m option was given." msgstr "Commit %s ist ein Merge, aber die Option -m wurde nicht angegeben." -#: sequencer.c:490 +#: sequencer.c:683 #, c-format -msgid "Commit %s does not have parent %d" -msgstr "Commit %s hat keinen Elternteil %d" +msgid "commit %s does not have parent %d" +msgstr "Commit %s hat keinen Eltern-Commit %d" -#: sequencer.c:494 +#: sequencer.c:687 #, c-format -msgid "Mainline was specified but commit %s is not a merge." +msgid "mainline was specified but commit %s is not a merge." msgstr "Hauptlinie wurde spezifiziert, aber Commit %s ist kein Merge." -#. TRANSLATORS: The first %s will be "revert" or -#. "cherry-pick", the second %s a SHA1 -#: sequencer.c:507 +#. TRANSLATORS: The first %s will be a "todo" command like +#. "revert" or "pick", the second %s a SHA1. +#: sequencer.c:700 #, c-format msgid "%s: cannot parse parent commit %s" msgstr "%s: kann Eltern-Commit %s nicht parsen" -#: sequencer.c:511 +#: sequencer.c:705 #, c-format -msgid "Cannot get commit message for %s" -msgstr "Kann keine Commit-Beschreibung für %s bekommen" +msgid "cannot get commit message for %s" +msgstr "Kann keine Commit-Beschreibung für %s bekommen." -#: sequencer.c:597 +#: sequencer.c:797 #, c-format msgid "could not revert %s... %s" msgstr "Konnte \"revert\" nicht auf %s... (%s) ausführen" -#: sequencer.c:598 +#: sequencer.c:798 #, c-format msgid "could not apply %s... %s" msgstr "Konnte %s... (%s) nicht anwenden" -#: sequencer.c:633 +#: sequencer.c:833 msgid "empty commit set passed" msgstr "leere Menge von Commits übergeben" -#: sequencer.c:641 +#: sequencer.c:843 #, c-format msgid "git %s: failed to read the index" msgstr "git %s: Fehler beim Lesen des Index" -#: sequencer.c:645 +#: sequencer.c:850 #, c-format msgid "git %s: failed to refresh the index" msgstr "git %s: Fehler beim Aktualisieren des Index" -#: sequencer.c:705 -msgid "Cannot revert during another revert." -msgstr "Kann Revert nicht während eines anderen Reverts ausführen." - -#: sequencer.c:706 -msgid "Cannot revert during a cherry-pick." -msgstr "Kann Revert nicht während eines Cherry-Picks ausführen." - -#: sequencer.c:709 -msgid "Cannot cherry-pick during a revert." -msgstr "Kann Cherry-Pick nicht während eines Reverts ausführen." - -#: sequencer.c:710 -msgid "Cannot cherry-pick during another cherry-pick." -msgstr "Kann Cherry-Pick nicht während eines anderen Cherry-Picks ausführen." - -#: sequencer.c:732 +#: sequencer.c:944 #, c-format -msgid "Could not parse line %d." -msgstr "Konnte Zeile %d nicht parsen." +msgid "invalid line %d: %.*s" +msgstr "Ungültige Zeile %d: %.*s" -#: sequencer.c:737 -msgid "No commits parsed." +#: sequencer.c:950 +msgid "no commits parsed." msgstr "Keine Commits geparst." -#: sequencer.c:749 +#: sequencer.c:966 #, c-format -msgid "Could not open %s" -msgstr "Konnte %s nicht öffnen" +msgid "could not read '%s'." +msgstr "Konnte '%s' nicht lesen." -#: sequencer.c:753 +#: sequencer.c:972 #, c-format -msgid "Could not read %s." -msgstr "Konnte %s nicht lesen." +msgid "unusable instruction sheet: '%s'" +msgstr "Unbenutzbares Instruktionsblatt: '%s'" -#: sequencer.c:760 -#, c-format -msgid "Unusable instruction sheet: %s" -msgstr "Unbenutzbares Instruktionsblatt: %s" +#: sequencer.c:983 +msgid "cannot cherry-pick during a revert." +msgstr "Kann Cherry-Pick nicht während eines Reverts ausführen." -#: sequencer.c:790 +#: sequencer.c:985 +msgid "cannot revert during a cherry-pick." +msgstr "Kann Revert nicht während eines Cherry-Picks ausführen." + +#: sequencer.c:1028 #, c-format -msgid "Invalid key: %s" +msgid "invalid key: %s" msgstr "Ungültiger Schlüssel: %s" -#: sequencer.c:793 builtin/pull.c:50 builtin/pull.c:52 +#: sequencer.c:1031 #, c-format -msgid "Invalid value for %s: %s" +msgid "invalid value for %s: %s" msgstr "Ungültiger Wert für %s: %s" -#: sequencer.c:803 +#: sequencer.c:1063 #, c-format -msgid "Malformed options sheet: %s" -msgstr "Fehlerhaftes Optionsblatt: %s" +msgid "malformed options sheet: '%s'" +msgstr "Fehlerhaftes Optionsblatt: '%s'" -#: sequencer.c:822 +#: sequencer.c:1101 msgid "a cherry-pick or revert is already in progress" msgstr "\"cherry-pick\" oder \"revert\" ist bereits im Gang" -#: sequencer.c:823 +#: sequencer.c:1102 msgid "try \"git cherry-pick (--continue | --quit | --abort)\"" msgstr "versuchen Sie \"git cherry-pick (--continue | --quit | --abort)\"" -#: sequencer.c:827 +#: sequencer.c:1106 #, c-format -msgid "Could not create sequencer directory %s" -msgstr "Konnte \"sequencer\"-Verzeichnis %s nicht erstellen" +msgid "could not create sequencer directory '%s'" +msgstr "Konnte \"sequencer\"-Verzeichnis '%s' nicht erstellen." -#: sequencer.c:862 sequencer.c:998 +#: sequencer.c:1120 +msgid "could not lock HEAD" +msgstr "Konnte HEAD nicht sperren" + +#: sequencer.c:1151 sequencer.c:1289 msgid "no cherry-pick or revert in progress" msgstr "kein \"cherry-pick\" oder \"revert\" im Gang" -#: sequencer.c:864 +#: sequencer.c:1153 msgid "cannot resolve HEAD" msgstr "kann HEAD nicht auflösen" -#: sequencer.c:866 sequencer.c:900 +#: sequencer.c:1155 sequencer.c:1189 msgid "cannot abort from a branch yet to be born" msgstr "kann nicht abbrechen: bin auf einem Branch, der noch geboren wird" -#: sequencer.c:886 builtin/fetch.c:724 builtin/fetch.c:970 +#: sequencer.c:1175 builtin/grep.c:578 #, c-format -msgid "cannot open %s" +msgid "cannot open '%s'" msgstr "kann '%s' nicht öffnen" -#: sequencer.c:888 +#: sequencer.c:1177 #, c-format -msgid "cannot read %s: %s" -msgstr "Kann %s nicht lesen: %s" +msgid "cannot read '%s': %s" +msgstr "Kann '%s' nicht lesen: %s" -#: sequencer.c:889 +#: sequencer.c:1178 msgid "unexpected end of file" msgstr "Unerwartetes Dateiende" -#: sequencer.c:895 +#: sequencer.c:1184 #, c-format msgid "stored pre-cherry-pick HEAD file '%s' is corrupt" msgstr "gespeicherte \"pre-cherry-pick\" HEAD Datei '%s' ist beschädigt" -#: sequencer.c:921 -#, c-format -msgid "Could not format %s." -msgstr "Konnte %s nicht formatieren." - -#: sequencer.c:1066 +#: sequencer.c:1354 #, c-format msgid "%s: can't cherry-pick a %s" msgstr "%s: %s kann nicht in \"cherry-pick\" benutzt werden" -#: sequencer.c:1069 +#: sequencer.c:1358 #, c-format msgid "%s: bad revision" msgstr "%s: ungültiger Commit" -#: sequencer.c:1102 -msgid "Can't revert as initial commit" +#: sequencer.c:1391 +msgid "can't revert as initial commit" msgstr "Kann nicht als allerersten Commit einen Revert ausführen." #: setup.c:160 @@ -1995,11 +2977,6 @@ msgstr "" "Benutzen Sie '--', um Pfade und Commits zu trennen, ähnlich wie:\n" "'git <Befehl> [<Commit>...] -- [<Datei>...]'" -#: setup.c:248 builtin/apply.c:3362 builtin/apply.c:3373 builtin/apply.c:3419 -#, c-format -msgid "failed to read %s" -msgstr "Fehler beim Lesen von %s" - #: setup.c:468 #, c-format msgid "Expected git repo version <= %d, found %d" @@ -2028,7 +3005,8 @@ 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 "" -"Kein Git-Repository (oder irgendein Elternverzeichnis bis zum Einhängepunkt %s)\n" +"Kein Git-Repository (oder irgendein Elternverzeichnis bis zum Einhängepunkt " +"%s)\n" "Stoppe bei Dateisystemgrenze (GIT_DISCOVERY_ACROSS_FILESYSTEM nicht gesetzt)." #: setup.c:927 @@ -2045,21 +3023,60 @@ msgstr "" "Problem mit Wert für Dateimodus (0%.3o) von core.sharedRepository.\n" "Der Besitzer der Dateien muss immer Lese- und Schreibrechte haben." -#: sha1_file.c:1046 +#: sha1_file.c:473 +#, c-format +msgid "path '%s' does not exist" +msgstr "Pfad '%s' existiert nicht" + +#: sha1_file.c:499 +#, c-format +msgid "reference repository '%s' as a linked checkout is not supported yet." +msgstr "" +"Referenziertes Repository '%s' wird noch nicht als verknüpftes\n" +"Arbeitsverzeichnis unterstützt." + +#: sha1_file.c:505 +#, c-format +msgid "reference repository '%s' is not a local repository." +msgstr "Referenziertes Repository '%s' ist kein lokales Repository." + +#: sha1_file.c:511 +#, c-format +msgid "reference repository '%s' is shallow" +msgstr "" +"Referenziertes Repository '%s' hat eine unvollständige Historie (shallow)." + +#: sha1_file.c:519 +#, c-format +msgid "reference repository '%s' is grafted" +msgstr "" +"Referenziertes Repository '%s' ist mit künstlichen Vorgängern (\"grafts\") " +"eingehängt." + +#: sha1_file.c:1159 msgid "offset before end of packfile (broken .idx?)" msgstr "Offset vor Ende der Packdatei (fehlerhafte Indexdatei?)" -#: sha1_file.c:2434 +#: sha1_file.c:2592 #, c-format msgid "offset before start of pack index for %s (corrupt index?)" msgstr "Offset vor Beginn des Pack-Index für %s (beschädigter Index?)" -#: sha1_file.c:2438 +#: sha1_file.c:2596 #, c-format msgid "offset beyond end of pack index for %s (truncated index?)" msgstr "Offset hinter Ende des Pack-Index für %s (abgeschnittener Index?)" -#: sha1_name.c:462 +#: sha1_name.c:407 +#, c-format +msgid "short SHA1 %s is ambiguous" +msgstr "Kurzer SHA-1 %s ist mehrdeutig." + +#: sha1_name.c:418 +msgid "The candidates are:" +msgstr "Die Kandidaten sind:" + +#: sha1_name.c:578 msgid "" "Git normally never creates a ref that ends with 40 hex characters\n" "because it will be ignored when you just specify 40-hex. These refs\n" @@ -2109,7 +3126,7 @@ msgstr "Konnte Eintrag '%s' nicht aus .gitmodules entfernen" msgid "staging updated .gitmodules failed" msgstr "Konnte aktualisierte .gitmodules-Datei nicht zum Commit vormerken" -#: submodule.c:177 +#: submodule.c:158 msgid "negative values not allowed for submodule.fetchJobs" msgstr "Negative Werte für submodule.fetchJobs nicht erlaubt" @@ -2118,56 +3135,56 @@ msgstr "Negative Werte für submodule.fetchJobs nicht erlaubt" msgid "invalid value for %s" msgstr "Ungültiger Wert für %s" -#: trailer.c:237 +#: trailer.c:238 #, c-format msgid "running trailer command '%s' failed" msgstr "Ausführen des Anhang-Befehls '%s' fehlgeschlagen" -#: trailer.c:492 trailer.c:496 trailer.c:500 trailer.c:554 trailer.c:558 -#: trailer.c:562 +#: trailer.c:471 trailer.c:475 trailer.c:479 trailer.c:533 trailer.c:537 +#: trailer.c:541 #, c-format msgid "unknown value '%s' for key '%s'" msgstr "unbekannter Wert '%s' für Schlüssel %s" -#: trailer.c:544 trailer.c:549 builtin/remote.c:289 +#: trailer.c:523 trailer.c:528 builtin/remote.c:289 #, c-format msgid "more than one %s" msgstr "mehr als ein %s" -#: trailer.c:582 +#: trailer.c:672 #, c-format msgid "empty trailer token in trailer '%.*s'" msgstr "leerer Anhang-Token in Anhang '%.*s'" -#: trailer.c:702 +#: trailer.c:695 #, c-format msgid "could not read input file '%s'" msgstr "Konnte Eingabe-Datei '%s' nicht lesen" -#: trailer.c:705 +#: trailer.c:698 msgid "could not read from stdin" msgstr "konnte nicht von der Standard-Eingabe lesen" -#: trailer.c:857 builtin/am.c:42 +#: trailer.c:929 builtin/am.c:44 #, c-format msgid "could not stat %s" msgstr "Konnte '%s' nicht lesen" -#: trailer.c:859 +#: trailer.c:931 #, c-format msgid "file %s is not a regular file" msgstr "Datei '%s' ist keine reguläre Datei" -#: trailer.c:861 +#: trailer.c:933 #, c-format msgid "file %s is not writable by user" msgstr "Datei %s ist vom Benutzer nicht beschreibbar." -#: trailer.c:873 +#: trailer.c:945 msgid "could not open temporary file" msgstr "konnte temporäre Datei '%s' nicht öffnen" -#: trailer.c:912 +#: trailer.c:983 #, c-format msgid "could not rename temporary file to %s" msgstr "konnte temporäre Datei nicht zu %s umbenennen" @@ -2182,7 +3199,7 @@ msgstr "Würde Upstream-Branch von '%s' zu '%s' von '%s' setzen\n" msgid "transport: invalid depth option '%s'" msgstr "transport: ungültige --depth Option '%s'" -#: transport.c:771 +#: transport.c:817 #, c-format msgid "" "The following submodule paths contain changes that can\n" @@ -2191,7 +3208,7 @@ msgstr "" "Die folgenden Submodul-Pfade enthalten Änderungen, die in keinem\n" "Remote-Repository gefunden wurden:\n" -#: transport.c:775 +#: transport.c:821 #, c-format msgid "" "\n" @@ -2218,15 +3235,31 @@ msgstr "" "zum Versenden zu einem Remote-Repository.\n" "\n" -#: transport.c:783 +#: transport.c:829 msgid "Aborting." msgstr "Abbruch." -#: transport-helper.c:1041 +#: transport-helper.c:1075 #, c-format msgid "Could not read ref %s" msgstr "Konnte Referenz %s nicht lesen." +#: tree-walk.c:31 +msgid "too-short tree object" +msgstr "zu kurzes Tree-Objekt" + +#: tree-walk.c:37 +msgid "malformed mode in tree entry" +msgstr "fehlerhafter Modus in Tree-Eintrag" + +#: tree-walk.c:41 +msgid "empty filename in tree entry" +msgstr "leerer Dateiname in Tree-Eintrag" + +#: tree-walk.c:113 +msgid "too-short tree file" +msgstr "zu kurze Tree-Datei" + #: unpack-trees.c:64 #, c-format msgid "" @@ -2442,23 +3475,23 @@ msgstr "" #: unpack-trees.c:126 #, c-format msgid "" -"The following Working tree files would be overwritten by sparse checkout " +"The following working tree files would be overwritten by sparse checkout " "update:\n" "%s" msgstr "" -"Die folgenden Dateien im Arbeitsbereich würden durch die Aktualisierung\n" -"des partiellen Checkouts überschrieben werden:\n" +"Die folgenden Dateien im Arbeitsverzeichnis würden durch die Aktualisierung\n" +"über einen partiellen Checkout überschrieben werden:\n" "%s" #: unpack-trees.c:128 #, c-format msgid "" -"The following Working tree files would be removed by sparse checkout " +"The following working tree files would be removed by sparse checkout " "update:\n" "%s" msgstr "" -"Die folgenden Dateien im Arbeitsbereich würden durch die Aktualisierung\n" -"des partiellen Checkouts entfernt werden:\n" +"Die folgenden Dateien im Arbeitsverzeichnis würden durch die Aktualisierung\n" +"über einen partiellen Checkout entfernt werden:\n" "%s" #: unpack-trees.c:205 @@ -2509,14 +3542,14 @@ msgstr "Fehler beim Lesen von '%s'" msgid "could not open '%s' for reading and writing" msgstr "Konnte '%s' nicht zum Lesen und Schreiben öffnen." -#: wrapper.c:224 wrapper.c:394 builtin/am.c:778 +#: wrapper.c:224 wrapper.c:394 builtin/am.c:766 #, c-format msgid "could not open '%s' for writing" msgstr "Konnte '%s' nicht zum Schreiben öffnen." -#: 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 +#: wrapper.c:226 wrapper.c:396 builtin/am.c:320 builtin/am.c:759 +#: builtin/am.c:847 builtin/commit.c:1705 builtin/merge.c:1029 +#: builtin/pull.c:341 #, c-format msgid "could not open '%s' for reading" msgstr "Konnte '%s' nicht zum Lesen öffnen." @@ -2540,160 +3573,160 @@ msgstr "Konnte nicht nach '%s' schreiben." msgid "could not close %s" msgstr "Konnte '%s' nicht schließen." -#: wt-status.c:150 +#: wt-status.c:151 msgid "Unmerged paths:" msgstr "Nicht zusammengeführte Pfade:" -#: wt-status.c:177 wt-status.c:204 +#: wt-status.c:178 wt-status.c:205 #, c-format msgid " (use \"git reset %s <file>...\" to unstage)" msgstr "" " (benutzen Sie \"git reset %s <Datei>...\" zum Entfernen aus der Staging-" "Area)" -#: wt-status.c:179 wt-status.c:206 +#: wt-status.c:180 wt-status.c:207 msgid " (use \"git rm --cached <file>...\" to unstage)" msgstr "" " (benutzen Sie \"git rm --cached <Datei>...\" zum Entfernen aus der Staging-" "Area)" -#: wt-status.c:183 +#: wt-status.c:184 msgid " (use \"git add <file>...\" to mark resolution)" msgstr "" " (benutzen Sie \"git add/rm <Datei>...\", um die Auflösung zu markieren)" -#: wt-status.c:185 wt-status.c:189 +#: wt-status.c:186 wt-status.c:190 msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)" msgstr "" " (benutzen Sie \"git add/rm <Datei>...\", um die Auflösung entsprechend zu " "markieren)" -#: wt-status.c:187 +#: wt-status.c:188 msgid " (use \"git rm <file>...\" to mark resolution)" msgstr "" " (benutzen Sie \"git add/rm <Datei>...\", um die Auflösung zu markieren)" -#: wt-status.c:198 wt-status.c:882 +#: wt-status.c:199 wt-status.c:945 msgid "Changes to be committed:" msgstr "zum Commit vorgemerkte Änderungen:" -#: wt-status.c:216 wt-status.c:891 +#: wt-status.c:217 wt-status.c:954 msgid "Changes not staged for commit:" msgstr "Änderungen, die nicht zum Commit vorgemerkt sind:" -#: wt-status.c:220 +#: wt-status.c:221 msgid " (use \"git add <file>...\" to update what will be committed)" msgstr "" " (benutzen Sie \"git add <Datei>...\", um die Änderungen zum Commit " "vorzumerken)" -#: wt-status.c:222 +#: wt-status.c:223 msgid " (use \"git add/rm <file>...\" to update what will be committed)" msgstr "" " (benutzen Sie \"git add/rm <Datei>...\", um die Änderungen zum Commit " "vorzumerken)" -#: wt-status.c:223 +#: wt-status.c:224 msgid "" " (use \"git checkout -- <file>...\" to discard changes in working directory)" msgstr "" " (benutzen Sie \"git checkout -- <Datei>...\", um die Änderungen im " "Arbeitsverzeichnis zu verwerfen)" -#: wt-status.c:225 +#: wt-status.c:226 msgid " (commit or discard the untracked or modified content in submodules)" msgstr "" " (committen oder verwerfen Sie den unversionierten oder geänderten Inhalt " "in den Submodulen)" -#: wt-status.c:237 +#: wt-status.c:238 #, c-format msgid " (use \"git %s <file>...\" to include in what will be committed)" msgstr "" " (benutzen Sie \"git %s <Datei>...\", um die Änderungen zum Commit " "vorzumerken)" -#: wt-status.c:252 +#: wt-status.c:253 msgid "both deleted:" msgstr "beide gelöscht:" -#: wt-status.c:254 +#: wt-status.c:255 msgid "added by us:" msgstr "von uns hinzugefügt:" -#: wt-status.c:256 +#: wt-status.c:257 msgid "deleted by them:" msgstr "von denen gelöscht:" -#: wt-status.c:258 +#: wt-status.c:259 msgid "added by them:" msgstr "von denen hinzugefügt:" -#: wt-status.c:260 +#: wt-status.c:261 msgid "deleted by us:" msgstr "von uns gelöscht:" -#: wt-status.c:262 +#: wt-status.c:263 msgid "both added:" msgstr "von beiden hinzugefügt:" -#: wt-status.c:264 +#: wt-status.c:265 msgid "both modified:" msgstr "von beiden geändert:" -#: wt-status.c:274 +#: wt-status.c:275 msgid "new file:" msgstr "neue Datei:" -#: wt-status.c:276 +#: wt-status.c:277 msgid "copied:" msgstr "kopiert:" -#: wt-status.c:278 +#: wt-status.c:279 msgid "deleted:" msgstr "gelöscht:" -#: wt-status.c:280 +#: wt-status.c:281 msgid "modified:" msgstr "geändert:" -#: wt-status.c:282 +#: wt-status.c:283 msgid "renamed:" msgstr "umbenannt:" -#: wt-status.c:284 +#: wt-status.c:285 msgid "typechange:" msgstr "Typänderung:" -#: wt-status.c:286 +#: wt-status.c:287 msgid "unknown:" msgstr "unbekannt:" -#: wt-status.c:288 +#: wt-status.c:289 msgid "unmerged:" msgstr "nicht gemerged:" -#: wt-status.c:370 +#: wt-status.c:371 msgid "new commits, " msgstr "neue Commits, " -#: wt-status.c:372 +#: wt-status.c:373 msgid "modified content, " msgstr "geänderter Inhalt, " -#: wt-status.c:374 +#: wt-status.c:375 msgid "untracked content, " msgstr "unversionierter Inhalt, " -#: wt-status.c:756 +#: wt-status.c:818 msgid "Submodules changed but not updated:" msgstr "Submodule geändert, aber nicht aktualisiert:" -#: wt-status.c:758 +#: wt-status.c:820 msgid "Submodule changes to be committed:" msgstr "Änderungen in Submodul zum Committen:" -#: wt-status.c:839 +#: wt-status.c:901 msgid "" "Do not touch the line above.\n" "Everything below will be removed." @@ -2701,110 +3734,110 @@ msgstr "" "Ändern Sie nicht die obige Zeile.\n" "Alles unterhalb von ihr wird entfernt." -#: wt-status.c:950 +#: wt-status.c:1013 msgid "You have unmerged paths." msgstr "Sie haben nicht zusammengeführte Pfade." -#: wt-status.c:953 +#: wt-status.c:1016 msgid " (fix conflicts and run \"git commit\")" msgstr " (beheben Sie die Konflikte und führen Sie \"git commit\" aus)" -#: wt-status.c:955 +#: wt-status.c:1018 msgid " (use \"git merge --abort\" to abort the merge)" msgstr " (benutzen Sie \"git merge --abort\", um den Merge abzubrechen)" -#: wt-status.c:960 +#: wt-status.c:1023 msgid "All conflicts fixed but you are still merging." msgstr "Alle Konflikte sind behoben, aber Sie sind immer noch beim Merge." -#: wt-status.c:963 +#: wt-status.c:1026 msgid " (use \"git commit\" to conclude merge)" msgstr " (benutzen Sie \"git commit\", um den Merge abzuschließen)" -#: wt-status.c:973 +#: wt-status.c:1036 msgid "You are in the middle of an am session." msgstr "Eine \"am\"-Sitzung ist im Gange." -#: wt-status.c:976 +#: wt-status.c:1039 msgid "The current patch is empty." msgstr "Der aktuelle Patch ist leer." -#: wt-status.c:980 +#: wt-status.c:1043 msgid " (fix conflicts and then run \"git am --continue\")" msgstr "" " (beheben Sie die Konflikte und führen Sie dann \"git am --continue\" aus)" -#: wt-status.c:982 +#: wt-status.c:1045 msgid " (use \"git am --skip\" to skip this patch)" msgstr " (benutzen Sie \"git am --skip\", um diesen Patch auszulassen)" -#: wt-status.c:984 +#: wt-status.c:1047 msgid " (use \"git am --abort\" to restore the original branch)" msgstr "" " (benutzen Sie \"git am --abort\", um den ursprünglichen Branch " "wiederherzustellen)" -#: wt-status.c:1109 +#: wt-status.c:1172 msgid "No commands done." msgstr "Keine Befehle ausgeführt." -#: wt-status.c:1112 +#: wt-status.c:1175 #, c-format msgid "Last command done (%d command done):" msgid_plural "Last commands done (%d commands done):" msgstr[0] "Zuletzt ausgeführter Befehl (%d Befehl ausgeführt):" msgstr[1] "Zuletzt ausgeführte Befehle (%d Befehle ausgeführt):" -#: wt-status.c:1123 +#: wt-status.c:1186 #, c-format msgid " (see more in file %s)" msgstr " (mehr Informationen in Datei %s)" -#: wt-status.c:1128 +#: wt-status.c:1191 msgid "No commands remaining." msgstr "Keine Befehle verbleibend." -#: wt-status.c:1131 +#: wt-status.c:1194 #, c-format msgid "Next command to do (%d remaining command):" msgid_plural "Next commands to do (%d remaining commands):" msgstr[0] "Nächster auszuführender Befehl (%d Befehle verbleibend):" msgstr[1] "Nächste auszuführende Befehle (%d Befehle verbleibend):" -#: wt-status.c:1139 +#: wt-status.c:1202 msgid " (use \"git rebase --edit-todo\" to view and edit)" msgstr " (benutzen Sie \"git rebase --edit-todo\" zum Ansehen und Bearbeiten)" -#: wt-status.c:1152 +#: wt-status.c:1215 #, c-format msgid "You are currently rebasing branch '%s' on '%s'." msgstr "Sie sind gerade beim Rebase von Branch '%s' auf '%s'." -#: wt-status.c:1157 +#: wt-status.c:1220 msgid "You are currently rebasing." msgstr "Sie sind gerade beim Rebase." -#: wt-status.c:1171 +#: wt-status.c:1234 msgid " (fix conflicts and then run \"git rebase --continue\")" msgstr "" " (beheben Sie die Konflikte und führen Sie dann \"git rebase --continue\" " "aus)" -#: wt-status.c:1173 +#: wt-status.c:1236 msgid " (use \"git rebase --skip\" to skip this patch)" msgstr " (benutzen Sie \"git rebase --skip\", um diesen Patch auszulassen)" -#: wt-status.c:1175 +#: wt-status.c:1238 msgid " (use \"git rebase --abort\" to check out the original branch)" msgstr "" " (benutzen Sie \"git rebase --abort\", um den ursprünglichen Branch " "auszuchecken)" -#: wt-status.c:1181 +#: wt-status.c:1244 msgid " (all conflicts fixed: run \"git rebase --continue\")" msgstr " (alle Konflikte behoben: führen Sie \"git rebase --continue\" aus)" -#: wt-status.c:1185 +#: wt-status.c:1248 #, c-format msgid "" "You are currently splitting a commit while rebasing branch '%s' on '%s'." @@ -2812,134 +3845,134 @@ msgstr "" "Sie teilen gerade einen Commit auf, während ein Rebase von Branch '%s' auf " "'%s' im Gange ist." -#: wt-status.c:1190 +#: wt-status.c:1253 msgid "You are currently splitting a commit during a rebase." msgstr "Sie teilen gerade einen Commit während eines Rebase auf." -#: wt-status.c:1193 +#: wt-status.c:1256 msgid " (Once your working directory is clean, run \"git rebase --continue\")" msgstr "" " (Sobald Ihr Arbeitsverzeichnis unverändert ist, führen Sie \"git rebase --" "continue\" aus)" -#: wt-status.c:1197 +#: wt-status.c:1260 #, c-format msgid "You are currently editing a commit while rebasing branch '%s' on '%s'." msgstr "" "Sie editieren gerade einen Commit während eines Rebase von Branch '%s' auf " "'%s'." -#: wt-status.c:1202 +#: wt-status.c:1265 msgid "You are currently editing a commit during a rebase." msgstr "Sie editieren gerade einen Commit während eines Rebase." -#: wt-status.c:1205 +#: wt-status.c:1268 msgid " (use \"git commit --amend\" to amend the current commit)" msgstr "" " (benutzen Sie \"git commit --amend\", um den aktuellen Commit " "nachzubessern)" -#: wt-status.c:1207 +#: wt-status.c:1270 msgid "" " (use \"git rebase --continue\" once you are satisfied with your changes)" msgstr "" " (benutzen Sie \"git rebase --continue\" sobald Ihre Änderungen " "abgeschlossen sind)" -#: wt-status.c:1217 +#: wt-status.c:1280 #, c-format msgid "You are currently cherry-picking commit %s." msgstr "Sie führen gerade \"cherry-pick\" von Commit %s aus." -#: wt-status.c:1222 +#: wt-status.c:1285 msgid " (fix conflicts and run \"git cherry-pick --continue\")" msgstr "" " (beheben Sie die Konflikte und führen Sie dann \"git cherry-pick --continue" "\" aus)" -#: wt-status.c:1225 +#: wt-status.c:1288 msgid " (all conflicts fixed: run \"git cherry-pick --continue\")" msgstr "" " (alle Konflikte behoben: führen Sie \"git cherry-pick --continue\" aus)" -#: wt-status.c:1227 +#: wt-status.c:1290 msgid " (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)" msgstr "" " (benutzen Sie \"git cherry-pick --abort\", um die Cherry-Pick-Operation " "abzubrechen)" -#: wt-status.c:1236 +#: wt-status.c:1299 #, c-format msgid "You are currently reverting commit %s." msgstr "Sie sind gerade an einem Revert von Commit '%s'." -#: wt-status.c:1241 +#: wt-status.c:1304 msgid " (fix conflicts and run \"git revert --continue\")" msgstr "" " (beheben Sie die Konflikte und führen Sie dann \"git revert --continue\" " "aus)" -#: wt-status.c:1244 +#: wt-status.c:1307 msgid " (all conflicts fixed: run \"git revert --continue\")" msgstr " (alle Konflikte behoben: führen Sie \"git revert --continue\" aus)" -#: wt-status.c:1246 +#: wt-status.c:1309 msgid " (use \"git revert --abort\" to cancel the revert operation)" msgstr "" " (benutzen Sie \"git revert --abort\", um die Revert-Operation abzubrechen)" -#: wt-status.c:1257 +#: wt-status.c:1320 #, c-format msgid "You are currently bisecting, started from branch '%s'." msgstr "Sie sind gerade bei einer binären Suche, gestartet von Branch '%s'." -#: wt-status.c:1261 +#: wt-status.c:1324 msgid "You are currently bisecting." msgstr "Sie sind gerade bei einer binären Suche." -#: wt-status.c:1264 +#: wt-status.c:1327 msgid " (use \"git bisect reset\" to get back to the original branch)" msgstr "" " (benutzen Sie \"git bisect reset\", um zum ursprünglichen Branch " "zurückzukehren)" -#: wt-status.c:1464 +#: wt-status.c:1524 msgid "On branch " msgstr "Auf Branch " -#: wt-status.c:1470 +#: wt-status.c:1530 msgid "interactive rebase in progress; onto " msgstr "interaktives Rebase im Gange; auf " -#: wt-status.c:1472 +#: wt-status.c:1532 msgid "rebase in progress; onto " msgstr "Rebase im Gange; auf " -#: wt-status.c:1477 +#: wt-status.c:1537 msgid "HEAD detached at " msgstr "HEAD losgelöst bei " -#: wt-status.c:1479 +#: wt-status.c:1539 msgid "HEAD detached from " msgstr "HEAD losgelöst von " -#: wt-status.c:1482 +#: wt-status.c:1542 msgid "Not currently on any branch." msgstr "Im Moment auf keinem Branch." -#: wt-status.c:1500 +#: wt-status.c:1560 msgid "Initial commit" msgstr "Initialer Commit" -#: wt-status.c:1514 +#: wt-status.c:1574 msgid "Untracked files" msgstr "Unversionierte Dateien" -#: wt-status.c:1516 +#: wt-status.c:1576 msgid "Ignored files" msgstr "Ignorierte Dateien" -#: wt-status.c:1520 +#: wt-status.c:1580 #, c-format msgid "" "It took %.2f seconds to enumerate untracked files. 'status -uno'\n" @@ -2950,32 +3983,32 @@ msgstr "" "'status -uno' könnte das beschleunigen, aber Sie müssen darauf achten,\n" "neue Dateien selbstständig hinzuzufügen (siehe 'git help status')." -#: wt-status.c:1526 +#: wt-status.c:1586 #, c-format msgid "Untracked files not listed%s" msgstr "Unversionierte Dateien nicht aufgelistet%s" -#: wt-status.c:1528 +#: wt-status.c:1588 msgid " (use -u option to show untracked files)" msgstr " (benutzen Sie die Option -u, um unversionierte Dateien anzuzeigen)" -#: wt-status.c:1534 +#: wt-status.c:1594 msgid "No changes" msgstr "Keine Änderungen" -#: wt-status.c:1539 +#: wt-status.c:1599 #, c-format msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" msgstr "" "keine Änderungen zum Commit vorgemerkt (benutzen Sie \"git add\" und/oder " "\"git commit -a\")\n" -#: wt-status.c:1542 +#: wt-status.c:1602 #, c-format msgid "no changes added to commit\n" msgstr "keine Änderungen zum Commit vorgemerkt\n" -#: wt-status.c:1545 +#: wt-status.c:1605 #, c-format msgid "" "nothing added to commit but untracked files present (use \"git add\" to " @@ -2984,56 +4017,71 @@ msgstr "" "nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien (benutzen " "Sie \"git add\" zum Versionieren)\n" -#: wt-status.c:1548 +#: wt-status.c:1608 #, c-format msgid "nothing added to commit but untracked files present\n" msgstr "nichts zum Commit vorgemerkt, aber es gibt unversionierte Dateien\n" -#: wt-status.c:1551 +#: wt-status.c:1611 #, c-format msgid "nothing to commit (create/copy files and use \"git add\" to track)\n" msgstr "" "nichts zu committen (Erstellen/Kopieren Sie Dateien und benutzen Sie \"git " "add\" zum Versionieren)\n" -#: wt-status.c:1554 wt-status.c:1559 +#: wt-status.c:1614 wt-status.c:1619 #, c-format msgid "nothing to commit\n" msgstr "nichts zu committen\n" -#: wt-status.c:1557 +#: wt-status.c:1617 #, c-format msgid "nothing to commit (use -u to show untracked files)\n" msgstr "" "nichts zu committen (benutzen Sie die Option -u, um unversionierte Dateien " "anzuzeigen)\n" -#: wt-status.c:1561 +#: wt-status.c:1621 #, c-format msgid "nothing to commit, working tree clean\n" msgstr "nichts zu committen, Arbeitsverzeichnis unverändert\n" -#: wt-status.c:1668 +#: wt-status.c:1728 msgid "Initial commit on " msgstr "Initialer Commit auf " -#: wt-status.c:1672 +#: wt-status.c:1732 msgid "HEAD (no branch)" msgstr "HEAD (kein Branch)" -#: wt-status.c:1701 +#: wt-status.c:1761 msgid "gone" msgstr "entfernt" -#: wt-status.c:1703 wt-status.c:1711 +#: wt-status.c:1763 wt-status.c:1771 msgid "behind " msgstr "hinterher " -#: wt-status.c:1706 wt-status.c:1709 +#: wt-status.c:1766 wt-status.c:1769 msgid "ahead " msgstr "voraus " -#: compat/precompose_utf8.c:57 builtin/clone.c:415 +#. TRANSLATORS: the action is e.g. "pull with rebase" +#: wt-status.c:2270 +#, c-format +msgid "cannot %s: You have unstaged changes." +msgstr "%s nicht möglich: Sie haben Änderungen, die nicht zum Commit vorgemerkt sind." + +#: wt-status.c:2276 +msgid "additionally, your index contains uncommitted changes." +msgstr "Zusätzlich enthält die Staging-Area nicht committete Änderungen." + +#: wt-status.c:2278 +#, c-format +msgid "cannot %s: Your index contains uncommitted changes." +msgstr "%s nicht möglich: Die Staging-Area enthält nicht committete Änderungen." + +#: compat/precompose_utf8.c:57 builtin/clone.c:414 #, c-format msgid "failed to unlink '%s'" msgstr "Konnte '%s' nicht entfernen." @@ -3042,286 +4090,271 @@ msgstr "Konnte '%s' nicht entfernen." msgid "git add [<options>] [--] <pathspec>..." msgstr "git add [<Optionen>] [--] <Pfadspezifikation>..." -#: builtin/add.c:65 +#: builtin/add.c:80 #, c-format msgid "unexpected diff status %c" msgstr "unerwarteter Differenz-Status %c" -#: builtin/add.c:71 builtin/commit.c:281 +#: builtin/add.c:85 builtin/commit.c:291 msgid "updating files failed" msgstr "Aktualisierung der Dateien fehlgeschlagen" -#: builtin/add.c:81 +#: builtin/add.c:95 #, c-format msgid "remove '%s'\n" msgstr "lösche '%s'\n" -#: builtin/add.c:136 +#: builtin/add.c:149 msgid "Unstaged changes after refreshing the index:" msgstr "" "Nicht zum Commit vorgemerkte Änderungen nach Aktualisierung der Staging-Area:" -#: builtin/add.c:196 builtin/rev-parse.c:811 +#: builtin/add.c:209 builtin/rev-parse.c:840 msgid "Could not read the index" msgstr "Konnte den Index nicht lesen" -#: builtin/add.c:207 +#: builtin/add.c:220 #, c-format msgid "Could not open '%s' for writing." msgstr "Konnte '%s' nicht zum Schreiben öffnen." -#: builtin/add.c:211 +#: builtin/add.c:224 msgid "Could not write patch" msgstr "Konnte Patch nicht schreiben" -#: builtin/add.c:214 +#: builtin/add.c:227 msgid "editing patch failed" msgstr "Bearbeitung des Patches fehlgeschlagen" -#: builtin/add.c:217 +#: builtin/add.c:230 #, c-format msgid "Could not stat '%s'" msgstr "Konnte Verzeichnis '%s' nicht lesen" -#: builtin/add.c:219 +#: builtin/add.c:232 msgid "Empty patch. Aborted." msgstr "Leerer Patch. Abgebrochen." -#: builtin/add.c:224 +#: builtin/add.c:237 #, c-format msgid "Could not apply '%s'" msgstr "Konnte '%s' nicht anwenden." -#: builtin/add.c:234 +#: builtin/add.c:247 msgid "The following paths are ignored by one of your .gitignore files:\n" msgstr "" "Die folgenden Pfade werden durch eine Ihrer \".gitignore\" Dateien " "ignoriert:\n" -#: builtin/add.c: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 +#: builtin/add.c:266 builtin/clean.c:870 builtin/fetch.c:115 builtin/mv.c:111 +#: builtin/prune-packed.c:55 builtin/pull.c:198 builtin/push.c:521 +#: builtin/remote.c:1326 builtin/rm.c:268 builtin/send-pack.c:162 msgid "dry run" msgstr "Probelauf" -#: 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 "erweiterte Ausgaben" - -#: builtin/add.c:256 +#: builtin/add.c:269 msgid "interactive picking" msgstr "interaktives Auswählen" -#: builtin/add.c:257 builtin/checkout.c:1157 builtin/reset.c:286 +#: builtin/add.c:270 builtin/checkout.c:1156 builtin/reset.c:286 msgid "select hunks interactively" msgstr "Blöcke interaktiv auswählen" -#: builtin/add.c:258 +#: builtin/add.c:271 msgid "edit current diff and apply" msgstr "aktuelle Unterschiede editieren und anwenden" -#: builtin/add.c:259 +#: builtin/add.c:272 msgid "allow adding otherwise ignored files" msgstr "das Hinzufügen andernfalls ignorierter Dateien erlauben" -#: builtin/add.c:260 +#: builtin/add.c:273 msgid "update tracked files" msgstr "versionierte Dateien aktualisieren" -#: builtin/add.c:261 +#: builtin/add.c:274 msgid "record only the fact that the path will be added later" msgstr "nur speichern, dass der Pfad später hinzugefügt werden soll" -#: builtin/add.c:262 +#: builtin/add.c:275 msgid "add changes from all tracked and untracked files" msgstr "" "Änderungen von allen versionierten und unversionierten Dateien hinzufügen" -#: builtin/add.c:265 +#: builtin/add.c:278 msgid "ignore paths removed in the working tree (same as --no-all)" msgstr "gelöschte Pfade im Arbeitsverzeichnis ignorieren (genau wie --no-all)" -#: builtin/add.c:267 +#: builtin/add.c:280 msgid "don't add, only refresh the index" msgstr "nichts hinzufügen, nur den Index aktualisieren" -#: builtin/add.c:268 +#: builtin/add.c:281 msgid "just skip files which cannot be added because of errors" msgstr "" "Dateien überspringen, die aufgrund von Fehlern nicht hinzugefügt werden " "konnten" -#: builtin/add.c:269 +#: builtin/add.c:282 msgid "check if - even missing - files are ignored in dry run" msgstr "prüfen ob - auch fehlende - Dateien im Probelauf ignoriert werden" -#: builtin/add.c:270 builtin/update-index.c:958 +#: builtin/add.c:283 builtin/update-index.c:947 msgid "(+/-)x" msgstr "(+/-)x" -#: builtin/add.c:270 builtin/update-index.c:959 +#: builtin/add.c:283 builtin/update-index.c:948 msgid "override the executable bit of the listed files" msgstr "das \"ausführbar\"-Bit der aufgelisteten Dateien überschreiben" -#: builtin/add.c:292 +#: builtin/add.c:305 #, c-format msgid "Use -f if you really want to add them.\n" msgstr "Verwenden Sie -f wenn Sie diese wirklich hinzufügen möchten.\n" -#: builtin/add.c:300 +#: builtin/add.c:312 msgid "adding files failed" msgstr "Hinzufügen von Dateien fehlgeschlagen" -#: builtin/add.c:336 +#: builtin/add.c:348 msgid "-A and -u are mutually incompatible" msgstr "Die Optionen -A und -u sind zueinander inkompatibel." -#: builtin/add.c:343 +#: builtin/add.c:355 msgid "Option --ignore-missing can only be used together with --dry-run" msgstr "" "Die Option --ignore-missing kann nur zusammen mit --dry-run verwendet werden." -#: builtin/add.c:352 +#: builtin/add.c:359 #, c-format msgid "--chmod param '%s' must be either -x or +x" msgstr "--chmod Parameter '%s' muss entweder -x oder +x sein" -#: builtin/add.c:367 +#: builtin/add.c:374 #, c-format msgid "Nothing specified, nothing added.\n" msgstr "Nichts spezifiziert, nichts hinzugefügt.\n" -#: builtin/add.c:368 +#: builtin/add.c:375 #, c-format msgid "Maybe you wanted to say 'git add .'?\n" msgstr "Meinten Sie vielleicht 'git add .'?\n" -#: 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/add.c:380 builtin/check-ignore.c:172 builtin/checkout.c:279 +#: builtin/checkout.c:472 builtin/clean.c:914 builtin/commit.c:350 #: builtin/mv.c:131 builtin/reset.c:235 builtin/rm.c:298 -#: builtin/submodule--helper.c:240 +#: builtin/submodule--helper.c:244 msgid "index file corrupt" msgstr "Index-Datei beschädigt" -#: builtin/add.c:454 builtin/apply.c:4784 builtin/mv.c:286 builtin/rm.c:431 -msgid "Unable to write new index file" -msgstr "Konnte neue Index-Datei nicht schreiben." - -#: builtin/am.c:257 builtin/commit.c:750 builtin/merge.c:1032 -#, c-format -msgid "could not read '%s'" -msgstr "Konnte '%s' nicht lesen" - -#: builtin/am.c:426 +#: builtin/am.c:414 msgid "could not parse author script" msgstr "konnte Autor-Skript nicht parsen" -#: builtin/am.c:503 +#: builtin/am.c:491 #, c-format msgid "'%s' was deleted by the applypatch-msg hook" msgstr "'%s' wurde durch den applypatch-msg Hook entfernt" -#: builtin/am.c:544 builtin/notes.c:301 +#: builtin/am.c:532 #, c-format msgid "Malformed input line: '%s'." msgstr "Fehlerhafte Eingabezeile: '%s'." -#: builtin/am.c:581 builtin/notes.c:316 +#: builtin/am.c:569 #, c-format msgid "Failed to copy notes from '%s' to '%s'" msgstr "Fehler beim Kopieren der Notizen von '%s' nach '%s'" -#: builtin/am.c:607 +#: builtin/am.c:595 msgid "fseek failed" msgstr "\"fseek\" fehlgeschlagen" -#: builtin/am.c:787 +#: builtin/am.c:775 #, c-format msgid "could not parse patch '%s'" msgstr "konnte Patch '%s' nicht parsen" -#: builtin/am.c:852 +#: builtin/am.c:840 msgid "Only one StGIT patch series can be applied at once" msgstr "Es kann nur eine StGIT Patch-Serie auf einmal angewendet werden." -#: builtin/am.c:899 +#: builtin/am.c:887 msgid "invalid timestamp" msgstr "ungültiger Zeitstempel" -#: builtin/am.c:902 builtin/am.c:910 +#: builtin/am.c:890 builtin/am.c:898 msgid "invalid Date line" msgstr "Ungültige \"Date\"-Zeile" -#: builtin/am.c:907 +#: builtin/am.c:895 msgid "invalid timezone offset" msgstr "Ungültiger Offset in der Zeitzone" -#: builtin/am.c:996 +#: builtin/am.c:984 msgid "Patch format detection failed." msgstr "Patch-Formaterkennung fehlgeschlagen." -#: builtin/am.c:1001 builtin/clone.c:380 +#: builtin/am.c:989 builtin/clone.c:379 #, c-format msgid "failed to create directory '%s'" msgstr "Fehler beim Erstellen von Verzeichnis '%s'" -#: builtin/am.c:1005 +#: builtin/am.c:993 msgid "Failed to split patches." msgstr "Fehler beim Aufteilen der Patches." -#: builtin/am.c:1137 builtin/commit.c:366 +#: builtin/am.c:1125 builtin/commit.c:376 msgid "unable to write index file" msgstr "Konnte Index-Datei nicht schreiben." -#: builtin/am.c:1188 +#: builtin/am.c:1176 #, c-format msgid "When you have resolved this problem, run \"%s --continue\"." msgstr "" "Wenn Sie das Problem aufgelöst haben, führen Sie \"%s --continue\" aus." -#: builtin/am.c:1189 +#: builtin/am.c:1177 #, c-format msgid "If you prefer to skip this patch, run \"%s --skip\" instead." msgstr "" "Falls Sie diesen Patch auslassen möchten, führen Sie stattdessen \"%s --skip" "\" aus." -#: builtin/am.c:1190 +#: builtin/am.c:1178 #, c-format msgid "To restore the original branch and stop patching, run \"%s --abort\"." msgstr "" "Um den ursprünglichen Branch wiederherzustellen und die Anwendung der " "Patches abzubrechen, führen Sie \"%s --abort\" aus." -#: builtin/am.c:1328 +#: builtin/am.c:1316 msgid "Patch is empty. Was it split wrong?" msgstr "Patch ist leer. War dessen Aufteilung falsch?" -#: builtin/am.c:1402 builtin/log.c:1543 +#: builtin/am.c:1390 builtin/log.c:1550 #, c-format msgid "invalid ident line: %s" msgstr "Ungültige Identifikationszeile: %s" -#: builtin/am.c:1429 +#: builtin/am.c:1417 #, c-format msgid "unable to parse commit %s" msgstr "Konnte Commit '%s' nicht parsen." -#: builtin/am.c:1602 +#: builtin/am.c:1610 msgid "Repository lacks necessary blobs to fall back on 3-way merge." msgstr "" "Dem Repository fehlen notwendige Blobs um auf einen 3-Wege-Merge " "zurückzufallen." -#: builtin/am.c:1604 +#: builtin/am.c:1612 msgid "Using index info to reconstruct a base tree..." msgstr "" "Verwende Informationen aus der Staging-Area, um ein Basisverzeichnis " "nachzustellen ..." -#: builtin/am.c:1623 +#: builtin/am.c:1631 msgid "" "Did you hand edit your patch?\n" "It does not apply to blobs recorded in its index." @@ -3329,39 +4362,39 @@ msgstr "" "Haben Sie den Patch per Hand editiert?\n" "Er kann nicht auf die Blobs in seiner 'index' Zeile angewendet werden." -#: builtin/am.c:1629 +#: builtin/am.c:1637 msgid "Falling back to patching base and 3-way merge..." msgstr "Falle zurück zum Patchen der Basis und zum 3-Wege-Merge ..." -#: builtin/am.c:1654 +#: builtin/am.c:1662 msgid "Failed to merge in the changes." msgstr "Merge der Änderungen fehlgeschlagen." -#: builtin/am.c:1679 builtin/merge.c:628 +#: builtin/am.c:1686 builtin/merge.c:628 msgid "git write-tree failed to write a tree" msgstr "\"git write-tree\" schlug beim Schreiben eines \"Tree\"-Objektes fehl" -#: builtin/am.c:1686 +#: builtin/am.c:1693 msgid "applying to an empty history" msgstr "auf leere Historie anwenden" -#: builtin/am.c:1699 builtin/commit.c:1776 builtin/merge.c:798 +#: builtin/am.c:1706 builtin/commit.c:1769 builtin/merge.c:798 #: builtin/merge.c:823 msgid "failed to write commit object" msgstr "Fehler beim Schreiben des Commit-Objektes." -#: builtin/am.c:1731 builtin/am.c:1735 +#: builtin/am.c:1739 builtin/am.c:1743 #, c-format msgid "cannot resume: %s does not exist." msgstr "Kann nicht fortsetzen: %s existiert nicht" -#: builtin/am.c:1751 +#: builtin/am.c:1759 msgid "cannot be interactive without stdin connected to a terminal." msgstr "" "Kann nicht interaktiv sein, ohne dass die Standard-Eingabe mit einem " "Terminal verbunden ist." -#: builtin/am.c:1756 +#: builtin/am.c:1764 msgid "Commit Body is:" msgstr "Commit-Beschreibung ist:" @@ -3369,35 +4402,35 @@ msgstr "Commit-Beschreibung ist:" #. in your translation. The program will only accept English #. input at this point. #. -#: builtin/am.c:1766 +#: builtin/am.c:1774 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: " msgstr "Anwenden? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: " -#: builtin/am.c:1816 +#: builtin/am.c:1824 #, c-format msgid "Dirty index: cannot apply patches (dirty: %s)" msgstr "Geänderter Index: kann Patches nicht anwenden (geändert: %s)" -#: builtin/am.c:1853 builtin/am.c:1925 +#: builtin/am.c:1861 builtin/am.c:1933 #, c-format msgid "Applying: %.*s" msgstr "Wende an: %.*s" -#: builtin/am.c:1869 +#: builtin/am.c:1877 msgid "No changes -- Patch already applied." msgstr "Keine Änderungen -- Patches bereits angewendet." -#: builtin/am.c:1877 +#: builtin/am.c:1885 #, c-format msgid "Patch failed at %s %.*s" msgstr "Anwendung des Patches fehlgeschlagen bei %s %.*s" -#: builtin/am.c:1883 +#: builtin/am.c:1891 #, c-format msgid "The copy of the patch that failed is found in: %s" msgstr "Die Kopie des fehlgeschlagenen Patches befindet sich in: %s" -#: builtin/am.c:1928 +#: builtin/am.c:1936 msgid "" "No changes - did you forget to use 'git add'?\n" "If there is nothing left to stage, chances are that something else\n" @@ -3408,7 +4441,7 @@ msgstr "" "diese bereits anderweitig eingefügt worden sein; Sie könnten diesen Patch\n" "auslassen." -#: builtin/am.c:1935 +#: builtin/am.c:1943 msgid "" "You still have unmerged paths in your index.\n" "Did you forget to use 'git add'?" @@ -3416,17 +4449,17 @@ msgstr "" "Sie haben immer noch nicht zusammengeführte Pfade im Index.\n" "Haben Sie vergessen 'git add' zu benutzen?" -#: builtin/am.c:2043 builtin/am.c:2047 builtin/am.c:2059 builtin/reset.c:308 +#: builtin/am.c:2051 builtin/am.c:2055 builtin/am.c:2067 builtin/reset.c:308 #: builtin/reset.c:316 #, c-format msgid "Could not parse object '%s'." msgstr "Konnte Objekt '%s' nicht parsen." -#: builtin/am.c:2095 +#: builtin/am.c:2103 msgid "failed to clean index" msgstr "Fehler beim Bereinigen des Index" -#: builtin/am.c:2129 +#: builtin/am.c:2137 msgid "" "You seem to have moved HEAD since the last 'am' failure.\n" "Not rewinding to ORIG_HEAD" @@ -3434,155 +4467,134 @@ msgstr "" "Sie scheinen seit dem letzten gescheiterten 'am' HEAD geändert zu haben.\n" "Keine Zurücksetzung zu ORIG_HEAD." -#: builtin/am.c:2192 +#: builtin/am.c:2200 #, c-format msgid "Invalid value for --patch-format: %s" msgstr "Ungültiger Wert für --patch-format: %s" -#: builtin/am.c:2225 -msgid "git am [<options>] [(<mbox>|<Maildir>)...]" -msgstr "git am [<Optionen>] [(<mbox>|<E-Mail-Verzeichnis>)...]" +#: builtin/am.c:2233 +msgid "git am [<options>] [(<mbox> | <Maildir>)...]" +msgstr "git am [<Optionen>] [(<mbox> | <E-Mail-Verzeichnis>)...]" -#: builtin/am.c:2226 +#: builtin/am.c:2234 msgid "git am [<options>] (--continue | --skip | --abort)" msgstr "git am [<Optionen>] (--continue | --skip | --abort)" -#: builtin/am.c:2232 +#: builtin/am.c:2240 msgid "run interactively" msgstr "interaktiv ausführen" -#: builtin/am.c:2234 +#: builtin/am.c:2242 msgid "historical option -- no-op" msgstr "historische Option -- kein Effekt" -#: builtin/am.c:2236 +#: builtin/am.c:2244 msgid "allow fall back on 3way merging if needed" msgstr "erlaube, falls notwendig, das Zurückfallen auf einen 3-Wege-Merge" -#: builtin/am.c:2237 builtin/init-db.c:481 builtin/prune-packed.c:57 +#: builtin/am.c:2245 builtin/init-db.c:483 builtin/prune-packed.c:57 #: builtin/repack.c:172 msgid "be quiet" msgstr "weniger Ausgaben" -#: builtin/am.c:2239 +#: builtin/am.c:2247 msgid "add a Signed-off-by line to the commit message" msgstr "der Commit-Beschreibung eine Signed-off-by Zeile hinzufügen" -#: builtin/am.c:2242 +#: builtin/am.c:2250 msgid "recode into utf8 (default)" msgstr "nach UTF-8 umkodieren (Standard)" -#: builtin/am.c:2244 +#: builtin/am.c:2252 msgid "pass -k flag to git-mailinfo" msgstr "-k an git-mailinfo übergeben" -#: builtin/am.c:2246 +#: builtin/am.c:2254 msgid "pass -b flag to git-mailinfo" msgstr "-b an git-mailinfo übergeben" -#: builtin/am.c:2248 +#: builtin/am.c:2256 msgid "pass -m flag to git-mailinfo" msgstr "-m an git-mailinfo übergeben" -#: builtin/am.c:2250 +#: builtin/am.c:2258 msgid "pass --keep-cr flag to git-mailsplit for mbox format" msgstr "--keep-cr an git-mailsplit für mbox-Format übergeben" -#: builtin/am.c:2253 +#: builtin/am.c:2261 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr" msgstr "kein --keep-cr an git-mailsplit übergeben, unabhängig von am.keepcr" -#: builtin/am.c:2256 +#: builtin/am.c:2264 msgid "strip everything before a scissors line" msgstr "alles vor einer Scheren-Zeile entfernen" -#: builtin/am.c:2257 builtin/apply.c:4837 -msgid "action" -msgstr "Aktion" - -#: 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 +#: builtin/am.c:2266 builtin/am.c:2269 builtin/am.c:2272 builtin/am.c:2275 +#: builtin/am.c:2278 builtin/am.c:2281 builtin/am.c:2284 builtin/am.c:2287 +#: builtin/am.c:2293 msgid "pass it through git-apply" msgstr "an git-apply übergeben" -#: builtin/am.c:2266 builtin/apply.c:4861 -msgid "root" -msgstr "Wurzelverzeichnis" - -#: 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:402 builtin/submodule--helper.c:482 -#: builtin/submodule--helper.c:485 builtin/submodule--helper.c:823 -#: builtin/submodule--helper.c:826 -msgid "path" -msgstr "Pfad" - -#: 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/am.c:2283 builtin/fmt-merge-msg.c:662 builtin/fmt-merge-msg.c:665 +#: builtin/grep.c:707 builtin/merge.c:200 builtin/pull.c:135 builtin/pull.c:194 +#: builtin/repack.c:181 builtin/repack.c:185 builtin/show-branch.c:644 #: builtin/show-ref.c:175 builtin/tag.c:340 parse-options.h:132 -#: parse-options.h:134 parse-options.h:244 +#: parse-options.h:134 parse-options.h:245 msgid "n" msgstr "Anzahl" -#: builtin/am.c:2278 builtin/apply.c:4805 -msgid "num" -msgstr "Anzahl" - -#: builtin/am.c:2281 builtin/for-each-ref.c:37 builtin/replace.c:438 +#: builtin/am.c:2289 builtin/for-each-ref.c:37 builtin/replace.c:438 #: builtin/tag.c:372 msgid "format" msgstr "Format" -#: builtin/am.c:2282 +#: builtin/am.c:2290 msgid "format the patch(es) are in" msgstr "Patch-Format" -#: builtin/am.c:2288 +#: builtin/am.c:2296 msgid "override error message when patch failure occurs" msgstr "Meldung bei fehlerhafter Patch-Anwendung überschreiben" -#: builtin/am.c:2290 +#: builtin/am.c:2298 msgid "continue applying patches after resolving a conflict" msgstr "Anwendung der Patches nach Auflösung eines Konfliktes fortsetzen" -#: builtin/am.c:2293 +#: builtin/am.c:2301 msgid "synonyms for --continue" msgstr "Synonyme für --continue" -#: builtin/am.c:2296 +#: builtin/am.c:2304 msgid "skip the current patch" msgstr "den aktuellen Patch auslassen" -#: builtin/am.c:2299 +#: builtin/am.c:2307 msgid "restore the original branch and abort the patching operation." msgstr "" "ursprünglichen Branch wiederherstellen und Anwendung der Patches abbrechen" -#: builtin/am.c:2303 +#: builtin/am.c:2311 msgid "lie about committer date" msgstr "Autor-Datum als Commit-Datum verwenden" -#: builtin/am.c:2305 +#: builtin/am.c:2313 msgid "use current timestamp for author date" msgstr "aktuellen Zeitstempel als Autor-Datum verwenden" -#: builtin/am.c:2307 builtin/commit.c:1610 builtin/merge.c:229 -#: builtin/pull.c:164 builtin/revert.c:92 builtin/tag.c:355 +#: builtin/am.c:2315 builtin/commit.c:1605 builtin/merge.c:229 +#: builtin/pull.c:165 builtin/revert.c:92 builtin/tag.c:355 msgid "key-id" msgstr "GPG-Schlüsselkennung" -#: builtin/am.c:2308 +#: builtin/am.c:2316 msgid "GPG-sign commits" msgstr "Commits mit GPG signieren" -#: builtin/am.c:2311 +#: builtin/am.c:2319 msgid "(internal use for git-rebase)" msgstr "(intern für git-rebase verwendet)" -#: builtin/am.c:2326 +#: builtin/am.c:2334 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." @@ -3590,16 +4602,16 @@ msgstr "" "Die -b/--binary Option hat seit Langem keinen Effekt und wird\n" "entfernt. Bitte verwenden Sie diese nicht mehr." -#: builtin/am.c:2333 +#: builtin/am.c:2341 msgid "failed to read the index" msgstr "Fehler beim Lesen des Index" -#: builtin/am.c:2348 +#: builtin/am.c:2356 #, c-format msgid "previous rebase directory %s still exists but mbox given." msgstr "Vorheriges Rebase-Verzeichnis %s existiert noch, aber mbox gegeben." -#: builtin/am.c:2372 +#: builtin/am.c:2380 #, c-format msgid "" "Stray %s directory found.\n" @@ -3608,510 +4620,14 @@ msgstr "" "Stray %s Verzeichnis gefunden.\n" "Benutzen Sie \"git am --abort\", um es zu entfernen." -#: builtin/am.c:2378 +#: builtin/am.c:2386 msgid "Resolve operation not in progress, we are not resuming." msgstr "Es ist keine Auflösung im Gange, es wird nicht fortgesetzt." -#: builtin/apply.c:122 +#: builtin/apply.c:8 msgid "git apply [<options>] [<patch>...]" msgstr "git apply [<Optionen>] [<Patch>...]" -#: builtin/apply.c:153 -#, c-format -msgid "unrecognized whitespace option '%s'" -msgstr "nicht erkannte Whitespace-Option: '%s'" - -#: builtin/apply.c:169 -#, c-format -msgid "unrecognized whitespace ignore option '%s'" -msgstr "nicht erkannte Option zum Ignorieren von Whitespace: '%s'" - -#: builtin/apply.c:854 -#, c-format -msgid "Cannot prepare timestamp regexp %s" -msgstr "Kann regulären Ausdruck für Zeitstempel %s nicht verarbeiten" - -#: builtin/apply.c:863 -#, c-format -msgid "regexec returned %d for input: %s" -msgstr "Ausführung des regulären Ausdrucks gab %d zurück. Eingabe: %s" - -#: builtin/apply.c:947 -#, c-format -msgid "unable to find filename in patch at line %d" -msgstr "Konnte keinen Dateinamen in Zeile %d des Patches finden." - -#: builtin/apply.c:984 -#, c-format -msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d" -msgstr "" -"git apply: ungültiges 'git-diff' - erwartete /dev/null, erhielt %s in Zeile " -"%d" - -#: builtin/apply.c:989 -#, c-format -msgid "git apply: bad git-diff - inconsistent new filename on line %d" -msgstr "" -"git apply: ungültiges 'git-diff' - Inkonsistenter neuer Dateiname in Zeile %d" - -#: builtin/apply.c:990 -#, c-format -msgid "git apply: bad git-diff - inconsistent old filename on line %d" -msgstr "" -"git apply: ungültiges 'git-diff' - Inkonsistenter alter Dateiname in Zeile %d" - -#: builtin/apply.c:995 -#, c-format -msgid "git apply: bad git-diff - expected /dev/null on line %d" -msgstr "git apply: ungültiges 'git-diff' - erwartete /dev/null in Zeile %d" - -#: builtin/apply.c:1489 -#, c-format -msgid "recount: unexpected line: %.*s" -msgstr "recount: unerwartete Zeile: %.*s" - -#: builtin/apply.c:1550 -#, c-format -msgid "patch fragment without header at line %d: %.*s" -msgstr "Patch-Fragment ohne Kopfbereich bei Zeile %d: %.*s" - -#: builtin/apply.c:1567 -#, c-format -msgid "" -"git diff header lacks filename information when removing %d leading pathname " -"component (line %d)" -msgid_plural "" -"git diff header lacks filename information when removing %d leading pathname " -"components (line %d)" -msgstr[0] "" -"Dem Kopfbereich von \"git diff\" fehlen Informationen zum Dateinamen, wenn " -"%d vorangestellter Teil des Pfades entfernt wird (Zeile %d)" -msgstr[1] "" -"Dem Kopfbereich von \"git diff\" fehlen Informationen zum Dateinamen, wenn " -"%d vorangestellte Teile des Pfades entfernt werden (Zeile %d)" - -#: builtin/apply.c:1743 -msgid "new file depends on old contents" -msgstr "neue Datei hängt von alten Inhalten ab" - -#: builtin/apply.c:1745 -msgid "deleted file still has contents" -msgstr "entfernte Datei hat noch Inhalte" - -#: builtin/apply.c:1774 -#, c-format -msgid "corrupt patch at line %d" -msgstr "fehlerhafter Patch bei Zeile %d" - -#: builtin/apply.c:1810 -#, c-format -msgid "new file %s depends on old contents" -msgstr "neue Datei %s hängt von alten Inhalten ab" - -#: builtin/apply.c:1812 -#, c-format -msgid "deleted file %s still has contents" -msgstr "entfernte Datei %s hat noch Inhalte" - -#: builtin/apply.c:1815 -#, c-format -msgid "** warning: file %s becomes empty but is not deleted" -msgstr "** Warnung: Datei %s wird leer, aber nicht entfernt." - -#: builtin/apply.c:1962 -#, c-format -msgid "corrupt binary patch at line %d: %.*s" -msgstr "fehlerhafter Binär-Patch bei Zeile %d: %.*s" - -#: builtin/apply.c:1999 -#, c-format -msgid "unrecognized binary patch at line %d" -msgstr "nicht erkannter Binär-Patch bei Zeile %d" - -#: builtin/apply.c:2154 -#, c-format -msgid "patch with only garbage at line %d" -msgstr "Patch mit nutzlosen Informationen bei Zeile %d" - -#: builtin/apply.c:2244 -#, c-format -msgid "unable to read symlink %s" -msgstr "konnte symbolische Verknüpfung %s nicht lesen" - -#: builtin/apply.c:2248 -#, c-format -msgid "unable to open or read %s" -msgstr "konnte %s nicht öffnen oder lesen" - -#: builtin/apply.c:2901 -#, c-format -msgid "invalid start of line: '%c'" -msgstr "Ungültiger Zeilenanfang: '%c'" - -#: 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] "Patch-Bereich #%d erfolgreich angewendet bei %d (%d Zeile versetzt)" -msgstr[1] "" -"Patch-Bereich #%d erfolgreich angewendet bei %d (%d Zeilen versetzt)" - -#: builtin/apply.c:3032 -#, c-format -msgid "Context reduced to (%ld/%ld) to apply fragment at %d" -msgstr "Kontext reduziert zu (%ld/%ld), um Patch-Bereich bei %d anzuwenden" - -#: builtin/apply.c:3038 -#, c-format -msgid "" -"while searching for:\n" -"%.*s" -msgstr "" -"bei der Suche nach:\n" -"%.*s" - -#: builtin/apply.c:3060 -#, c-format -msgid "missing binary patch data for '%s'" -msgstr "keine Daten in Binär-Patch für '%s'" - -#: builtin/apply.c:3163 -#, c-format -msgid "binary patch does not apply to '%s'" -msgstr "Konnte Binär-Patch nicht auf '%s' anwenden" - -#: builtin/apply.c:3169 -#, c-format -msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)" -msgstr "" -"Binär-Patch für '%s' erzeugt falsches Ergebnis (erwartete %s, bekam %s)" - -#: builtin/apply.c:3190 -#, c-format -msgid "patch failed: %s:%ld" -msgstr "Anwendung des Patches fehlgeschlagen: %s:%ld" - -#: builtin/apply.c:3314 -#, c-format -msgid "cannot checkout %s" -msgstr "kann %s nicht auschecken" - -#: builtin/apply.c:3370 -#, c-format -msgid "reading from '%s' beyond a symbolic link" -msgstr "'%s' ist hinter einer symbolischen Verknüpfung" - -#: builtin/apply.c:3399 builtin/apply.c:3630 -#, c-format -msgid "path %s has been renamed/deleted" -msgstr "Pfad %s wurde umbenannt/gelöscht" - -#: builtin/apply.c:3482 builtin/apply.c:3644 -#, c-format -msgid "%s: does not exist in index" -msgstr "%s ist nicht im Index" - -#: builtin/apply.c:3486 builtin/apply.c:3636 builtin/apply.c:3658 -#, c-format -msgid "%s: %s" -msgstr "%s: %s" - -#: builtin/apply.c:3491 builtin/apply.c:3652 -#, c-format -msgid "%s: does not match index" -msgstr "%s entspricht nicht der Version im Index" - -#: builtin/apply.c:3597 -msgid "removal patch leaves file contents" -msgstr "Lösch-Patch hinterlässt Dateiinhalte" - -#: builtin/apply.c:3669 -#, c-format -msgid "%s: wrong type" -msgstr "%s: falscher Typ" - -#: builtin/apply.c:3671 -#, c-format -msgid "%s has type %o, expected %o" -msgstr "%s ist vom Typ %o, erwartete %o" - -#: builtin/apply.c:3822 builtin/apply.c:3824 -#, c-format -msgid "invalid path '%s'" -msgstr "Ungültiger Pfad '%s'" - -#: builtin/apply.c:3879 -#, c-format -msgid "%s: already exists in index" -msgstr "%s ist bereits bereitgestellt" - -#: builtin/apply.c:3882 -#, c-format -msgid "%s: already exists in working directory" -msgstr "%s existiert bereits im Arbeitsverzeichnis" - -#: builtin/apply.c:3902 -#, c-format -msgid "new mode (%o) of %s does not match old mode (%o)" -msgstr "neuer Modus (%o) von %s entspricht nicht dem alten Modus (%o)" - -#: builtin/apply.c:3907 -#, c-format -msgid "new mode (%o) of %s does not match old mode (%o) of %s" -msgstr "neuer Modus (%o) von %s entspricht nicht dem alten Modus (%o) von %s" - -#: builtin/apply.c:3927 -#, c-format -msgid "affected file '%s' is beyond a symbolic link" -msgstr "betroffene Datei '%s' ist hinter einer symbolischen Verknüpfung" - -#: builtin/apply.c:3931 -#, c-format -msgid "%s: patch does not apply" -msgstr "%s: Patch konnte nicht angewendet werden" - -#: builtin/apply.c:3945 -#, c-format -msgid "Checking patch %s..." -msgstr "Prüfe Patch %s ..." - -#: builtin/apply.c:4038 builtin/checkout.c:233 builtin/reset.c:135 -#, c-format -msgid "make_cache_entry failed for path '%s'" -msgstr "make_cache_entry für Pfad '%s' fehlgeschlagen" - -#: builtin/apply.c:4182 -#, c-format -msgid "unable to remove %s from index" -msgstr "konnte %s nicht aus dem Index entfernen" - -#: builtin/apply.c:4215 -#, c-format -msgid "corrupt patch for submodule %s" -msgstr "fehlerhafter Patch für Submodul %s" - -#: builtin/apply.c:4219 -#, c-format -msgid "unable to stat newly created file '%s'" -msgstr "konnte neu erstellte Datei '%s' nicht lesen" - -#: builtin/apply.c:4224 -#, c-format -msgid "unable to create backing store for newly created file %s" -msgstr "kann internen Speicher für eben erstellte Datei %s nicht erzeugen" - -#: builtin/apply.c:4227 builtin/apply.c:4340 -#, c-format -msgid "unable to add cache entry for %s" -msgstr "kann für %s keinen Eintrag in den Zwischenspeicher hinzufügen" - -#: builtin/apply.c:4260 -#, c-format -msgid "closing file '%s'" -msgstr "schließe Datei '%s'" - -#: builtin/apply.c:4313 -#, c-format -msgid "unable to write file '%s' mode %o" -msgstr "konnte Datei '%s' mit Modus %o nicht schreiben" - -#: builtin/apply.c:4403 -#, c-format -msgid "Applied patch %s cleanly." -msgstr "Patch %s sauber angewendet" - -#: builtin/apply.c:4411 -msgid "internal error" -msgstr "interner Fehler" - -#: builtin/apply.c:4414 -#, c-format -msgid "Applying patch %%s with %d reject..." -msgid_plural "Applying patch %%s with %d rejects..." -msgstr[0] "Wende Patch %%s mit %d Zurückweisung an..." -msgstr[1] "Wende Patch %%s mit %d Zurückweisungen an..." - -#: builtin/apply.c:4424 -#, c-format -msgid "truncating .rej filename to %.*s.rej" -msgstr "Verkürze Name von .rej Datei zu %.*s.rej" - -#: builtin/apply.c:4432 -#, c-format -msgid "cannot open %s: %s" -msgstr "Kann %s nicht öffnen: %s" - -#: builtin/apply.c:4445 -#, c-format -msgid "Hunk #%d applied cleanly." -msgstr "Patch-Bereich #%d sauber angewendet." - -#: builtin/apply.c:4448 -#, c-format -msgid "Rejected hunk #%d." -msgstr "Patch-Block #%d zurückgewiesen." - -#: builtin/apply.c:4537 -#, c-format -msgid "Skipped patch '%s'." -msgstr "Patch '%s' ausgelassen." - -#: builtin/apply.c:4545 -msgid "unrecognized input" -msgstr "nicht erkannte Eingabe" - -#: builtin/apply.c:4556 -msgid "unable to read index file" -msgstr "Konnte Index-Datei nicht lesen" - -#: builtin/apply.c:4701 -msgid "--3way outside a repository" -msgstr "" -"Die Option --3way kann nicht außerhalb eines Repositories verwendet werden." - -#: builtin/apply.c:4709 -msgid "--index outside a repository" -msgstr "" -"Die Option --index kann nicht außerhalb eines Repositories verwendet werden." - -#: builtin/apply.c:4712 -msgid "--cached outside a repository" -msgstr "" -"Die Option --cached kann nicht außerhalb eines Repositories verwendet werden." - -#: builtin/apply.c:4745 -#, c-format -msgid "can't open patch '%s'" -msgstr "kann Patch '%s' nicht öffnen" - -#: builtin/apply.c:4760 -#, c-format -msgid "squelched %d whitespace error" -msgid_plural "squelched %d whitespace errors" -msgstr[0] "unterdrückte %d Whitespace-Fehler" -msgstr[1] "unterdrückte %d Whitespace-Fehler" - -#: 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 Zeile fügt Whitespace-Fehler hinzu." -msgstr[1] "%d Zeilen fügen Whitespace-Fehler hinzu." - -#: builtin/apply.c:4800 -msgid "don't apply changes matching the given path" -msgstr "keine Änderungen im angegebenen Pfad anwenden" - -#: builtin/apply.c:4803 -msgid "apply changes matching the given path" -msgstr "Änderungen nur im angegebenen Pfad anwenden" - -#: builtin/apply.c:4806 -msgid "remove <num> leading slashes from traditional diff paths" -msgstr "" -"<Anzahl> vorangestellte Schrägstriche von herkömmlichen Differenzpfaden " -"entfernen" - -#: builtin/apply.c:4809 -msgid "ignore additions made by the patch" -msgstr "hinzugefügte Zeilen des Patches ignorieren" - -#: builtin/apply.c:4811 -msgid "instead of applying the patch, output diffstat for the input" -msgstr "" -"anstatt der Anwendung des Patches, den \"diffstat\" für die Eingabe " -"ausgegeben" - -#: builtin/apply.c:4815 -msgid "show number of added and deleted lines in decimal notation" -msgstr "" -"die Anzahl von hinzugefügten/entfernten Zeilen in Dezimalnotation anzeigen" - -#: builtin/apply.c:4817 -msgid "instead of applying the patch, output a summary for the input" -msgstr "" -"anstatt der Anwendung des Patches, eine Zusammenfassung für die Eingabe " -"ausgeben" - -#: builtin/apply.c:4819 -msgid "instead of applying the patch, see if the patch is applicable" -msgstr "" -"anstatt der Anwendung des Patches, zeige ob Patch angewendet werden kann" - -#: builtin/apply.c:4821 -msgid "make sure the patch is applicable to the current index" -msgstr "" -"sicherstellen, dass der Patch mit dem aktuellen Index angewendet werden kann" - -#: builtin/apply.c:4823 -msgid "apply a patch without touching the working tree" -msgstr "Patch anwenden, ohne Änderungen im Arbeitsverzeichnis vorzunehmen" - -#: builtin/apply.c:4825 -msgid "accept a patch that touches outside the working area" -msgstr "" -"Patch anwenden, der Änderungen außerhalb des Arbeitsverzeichnisses vornimmt" - -#: builtin/apply.c:4827 -msgid "also apply the patch (use with --stat/--summary/--check)" -msgstr "Patch anwenden (Benutzung mit --stat/--summary/--check)" - -#: builtin/apply.c:4829 -msgid "attempt three-way merge if a patch does not apply" -msgstr "versuche 3-Wege-Merge, wenn der Patch nicht angewendet werden konnte" - -#: builtin/apply.c:4831 -msgid "build a temporary index based on embedded index information" -msgstr "" -"einen temporären Index, basierend auf den integrierten Index-Informationen, " -"erstellen" - -#: builtin/apply.c:4834 builtin/checkout-index.c:169 builtin/ls-files.c:426 -msgid "paths are separated with NUL character" -msgstr "Pfade sind getrennt durch NUL Zeichen" - -#: builtin/apply.c:4836 -msgid "ensure at least <n> lines of context match" -msgstr "" -"sicher stellen, dass mindestens <n> Zeilen des Kontextes übereinstimmen" - -#: builtin/apply.c:4838 -msgid "detect new or modified lines that have whitespace errors" -msgstr "neue oder geänderte Zeilen, die Whitespace-Fehler haben, ermitteln" - -#: builtin/apply.c:4841 builtin/apply.c:4844 -msgid "ignore changes in whitespace when finding context" -msgstr "Änderungen im Whitespace bei der Suche des Kontextes ignorieren" - -#: builtin/apply.c:4847 -msgid "apply the patch in reverse" -msgstr "den Patch in umgekehrter Reihenfolge anwenden" - -#: builtin/apply.c:4849 -msgid "don't expect at least one line of context" -msgstr "keinen Kontext erwarten" - -#: builtin/apply.c:4851 -msgid "leave the rejected hunks in corresponding *.rej files" -msgstr "" -"zurückgewiesene Patch-Blöcke in entsprechenden *.rej Dateien hinterlassen" - -#: builtin/apply.c:4853 -msgid "allow overlapping hunks" -msgstr "sich überlappende Patch-Blöcke erlauben" - -#: builtin/apply.c:4856 -msgid "tolerate incorrectly detected missing new-line at the end of file" -msgstr "fehlerhaft erkannten fehlenden Zeilenumbruch am Dateiende tolerieren" - -#: builtin/apply.c:4859 -msgid "do not trust the line counts in the hunk headers" -msgstr "den Zeilennummern im Kopf des Patch-Blocks nicht vertrauen" - -#: builtin/apply.c:4862 -msgid "prepend <root> to all filenames" -msgstr "<Wurzelverzeichnis> vor alle Dateinamen stellen" - #: builtin/archive.c:17 #, c-format msgid "could not create archive file '%s'" @@ -4171,115 +4687,171 @@ msgstr "<rev-opts> sind dokumentiert in git-rev-list(1)" msgid "Blaming lines" msgstr "Verarbeite Zeilen" -#: builtin/blame.c:2536 +#: builtin/blame.c:2577 msgid "Show blame entries as we find them, incrementally" msgstr "\"blame\"-Einträge schrittweise anzeigen, während wir sie generieren" -#: builtin/blame.c:2537 +#: builtin/blame.c:2578 msgid "Show blank SHA-1 for boundary commits (Default: off)" msgstr "leere SHA-1 für Grenz-Commits anzeigen (Standard: aus)" -#: builtin/blame.c:2538 +#: builtin/blame.c:2579 msgid "Do not treat root commits as boundaries (Default: off)" msgstr "Ursprungs-Commit nicht als Grenzen behandeln (Standard: aus)" -#: builtin/blame.c:2539 +#: builtin/blame.c:2580 msgid "Show work cost statistics" msgstr "Statistiken zum Arbeitsaufwand anzeigen" -#: builtin/blame.c:2540 +#: builtin/blame.c:2581 msgid "Force progress reporting" msgstr "Fortschrittsanzeige erzwingen" -#: builtin/blame.c:2541 +#: builtin/blame.c:2582 msgid "Show output score for blame entries" msgstr "Ausgabebewertung für \"blame\"-Einträge anzeigen" -#: builtin/blame.c:2542 +#: builtin/blame.c:2583 msgid "Show original filename (Default: auto)" msgstr "ursprünglichen Dateinamen anzeigen (Standard: auto)" -#: builtin/blame.c:2543 +#: builtin/blame.c:2584 msgid "Show original linenumber (Default: off)" msgstr "ursprüngliche Zeilennummer anzeigen (Standard: aus)" -#: builtin/blame.c:2544 +#: builtin/blame.c:2585 msgid "Show in a format designed for machine consumption" msgstr "Anzeige in einem Format für maschinelle Auswertung" -#: builtin/blame.c:2545 +#: builtin/blame.c:2586 msgid "Show porcelain format with per-line commit information" msgstr "" "Anzeige in Format für Fremdprogramme mit Commit-Informationen pro Zeile" -#: builtin/blame.c:2546 +#: builtin/blame.c:2587 msgid "Use the same output mode as git-annotate (Default: off)" msgstr "" "Den gleichen Ausgabemodus benutzen wie \"git-annotate\" (Standard: aus)" -#: builtin/blame.c:2547 +#: builtin/blame.c:2588 msgid "Show raw timestamp (Default: off)" msgstr "Unbearbeiteten Zeitstempel anzeigen (Standard: aus)" -#: builtin/blame.c:2548 +#: builtin/blame.c:2589 msgid "Show long commit SHA1 (Default: off)" msgstr "Langen Commit-SHA1 anzeigen (Standard: aus)" -#: builtin/blame.c:2549 +#: builtin/blame.c:2590 msgid "Suppress author name and timestamp (Default: off)" msgstr "Den Namen des Autors und den Zeitstempel unterdrücken (Standard: aus)" -#: builtin/blame.c:2550 +#: builtin/blame.c:2591 msgid "Show author email instead of name (Default: off)" msgstr "" "Anstatt des Namens die E-Mail-Adresse des Autors anzeigen (Standard: aus)" -#: builtin/blame.c:2551 +#: builtin/blame.c:2592 msgid "Ignore whitespace differences" msgstr "Unterschiede im Whitespace ignorieren" -#: builtin/blame.c:2552 +#: builtin/blame.c:2599 +msgid "Use an experimental indent-based heuristic to improve diffs" +msgstr "" +"eine experimentelle, auf Einrückungen basierende Heuristik zur Verbesserung\n" +"der Darstellung von Unterschieden verwenden" + +#: builtin/blame.c:2600 +msgid "Use an experimental blank-line-based heuristic to improve diffs" +msgstr "" +"eine experimentelle, auf Leerzeilen basierende Heuristik zur Verbesserung\n" +"der Darstellung von Unterschieden verwenden" + +#: builtin/blame.c:2602 msgid "Spend extra cycles to find better match" msgstr "Länger arbeiten, um bessere Ãœbereinstimmungen zu finden" -#: builtin/blame.c:2553 +#: builtin/blame.c:2603 msgid "Use revisions from <file> instead of calling git-rev-list" msgstr "Commits von <Datei> benutzen, anstatt \"git-rev-list\" aufzurufen" -#: builtin/blame.c:2554 +#: builtin/blame.c:2604 msgid "Use <file>'s contents as the final image" msgstr "Inhalte der <Datei>en als endgültiges Abbild benutzen" -#: builtin/blame.c:2555 builtin/blame.c:2556 +#: builtin/blame.c:2605 builtin/blame.c:2606 msgid "score" msgstr "Bewertung" -#: builtin/blame.c:2555 +#: builtin/blame.c:2605 msgid "Find line copies within and across files" msgstr "kopierte Zeilen innerhalb oder zwischen Dateien finden" -#: builtin/blame.c:2556 +#: builtin/blame.c:2606 msgid "Find line movements within and across files" msgstr "verschobene Zeilen innerhalb oder zwischen Dateien finden" -#: builtin/blame.c:2557 +#: builtin/blame.c:2607 msgid "n,m" msgstr "n,m" -#: builtin/blame.c:2557 +#: builtin/blame.c:2607 msgid "Process only line range n,m, counting from 1" msgstr "nur Zeilen im Bereich n,m verarbeiten, gezählt von 1" +#: builtin/blame.c:2654 +msgid "--progress can't be used with --incremental or porcelain formats" +msgstr "" +"--progress kann nicht mit --incremental oder Formaten für Fremdprogramme\n" +"verwendet werden" + #. TRANSLATORS: This string is used to tell us the maximum #. display width for a relative timestamp in "git blame" #. output. For C locale, "4 years, 11 months ago", which #. 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:2649 +#: builtin/blame.c:2700 msgid "4 years, 11 months ago" msgstr "vor 4 Jahren, und 11 Monaten" +#: builtin/blame.c:2780 +msgid "--contents and --reverse do not blend well." +msgstr "--contents und --reverse funktionieren gemeinsam nicht." + +#: builtin/blame.c:2800 +msgid "cannot use --contents with final commit object name" +msgstr "kann --contents nicht mit endgültigem Namen des Commit-Objektes benutzen" + +#: builtin/blame.c:2805 +msgid "--reverse and --first-parent together require specified latest commit" +msgstr "" +"--reverse und --first-parent zusammen erfordern die Angabe eines endgültigen\n" +"Commits" + +#: builtin/blame.c:2832 +msgid "" +"--reverse --first-parent together require range along first-parent chain" +msgstr "" +"--reverse und --first-parent zusammen erfordern einen Bereich entlang der\n" +"\"first-parent\"-Kette" + +#: builtin/blame.c:2843 +#, c-format +msgid "no such path %s in %s" +msgstr "Pfad %s nicht in %s" + +#: builtin/blame.c:2854 +#, c-format +msgid "cannot read blob %s for path %s" +msgstr "kann Blob %s für Pfad '%s' nicht lesen" + +#: builtin/blame.c:2873 +#, c-format +msgid "file %s has only %lu line" +msgid_plural "file %s has only %lu lines" +msgstr[0] "Datei %s hat nur %lu Zeile" +msgstr[1] "Datei %s hat nur %lu Zeilen" + #: builtin/branch.c:26 msgid "git branch [<options>] [-r | -a] [--merged | --no-merged]" msgstr "git branch [<Optionen>] [-r | -a] [--merged | --no-merged]" @@ -4531,6 +5103,10 @@ msgstr "Upstream" msgid "change the upstream info" msgstr "Informationen zum Upstream-Branch ändern" +#: builtin/branch.c:660 +msgid "Unset the upstream info" +msgstr "Informationen zum Upstream-Branch entfernen" + #: builtin/branch.c:661 msgid "use colored output" msgstr "farbige Ausgaben verwenden" @@ -4604,8 +5180,8 @@ msgstr "Schüssel" msgid "field name to sort on" msgstr "sortiere nach diesem Feld" -#: 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/branch.c:686 builtin/for-each-ref.c:41 builtin/notes.c:404 +#: builtin/notes.c:407 builtin/notes.c:567 builtin/notes.c:570 #: builtin/tag.c:369 msgid "object" msgstr "Objekt" @@ -4618,7 +5194,7 @@ msgstr "nur Branches von diesem Objekt ausgeben" msgid "Failed to resolve HEAD as a valid ref." msgstr "Konnte HEAD nicht als gültige Referenz auflösen." -#: builtin/branch.c:709 builtin/clone.c:707 +#: builtin/branch.c:709 builtin/clone.c:706 msgid "HEAD not found below refs/heads!" msgstr "HEAD wurde nicht unter \"refs/heads\" gefunden!" @@ -4733,68 +5309,80 @@ msgstr "Um ein Paket zu erstellen wird ein Repository benötigt." msgid "Need a repository to unbundle." msgstr "Zum Entpacken wird ein Repository benötigt." -#: builtin/cat-file.c:443 +#: builtin/cat-file.c:513 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|" -"<Art>|--textconv) <Objekt>" +"git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -" +"p | <type> | --textconv | --filters) [--path=<path>] <object>" +msgstr "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -p | <Art> | --textconv | --filters) [--path=<Pfad>] <Objekt>" -#: 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:514 +msgid "" +"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --" +"filters]" +msgstr "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --filters]" -#: builtin/cat-file.c:481 +#: builtin/cat-file.c:551 msgid "<type> can be one of: blob, tree, commit, tag" msgstr "<Art> kann sein: blob, tree, commit, tag" -#: builtin/cat-file.c:482 +#: builtin/cat-file.c:552 msgid "show object type" msgstr "Objektart anzeigen" -#: builtin/cat-file.c:483 +#: builtin/cat-file.c:553 msgid "show object size" msgstr "Objektgröße anzeigen" -#: builtin/cat-file.c:485 +#: builtin/cat-file.c:555 msgid "exit with zero when there's no error" msgstr "mit Rückgabewert 0 beenden, wenn kein Fehler aufgetreten ist" -#: builtin/cat-file.c:486 +#: builtin/cat-file.c:556 msgid "pretty-print object's content" msgstr "ansprechende Anzeige des Objektinhaltes" -#: builtin/cat-file.c:488 +#: builtin/cat-file.c:558 msgid "for blob objects, run textconv on object's content" msgstr "eine Textkonvertierung auf den Inhalt von Blob-Objekten ausführen" -#: builtin/cat-file.c:490 +#: builtin/cat-file.c:560 +msgid "for blob objects, run filters on object's content" +msgstr "für Blob-Objekte, Filter auf Objekt-Inhalte ausführen" + +#: builtin/cat-file.c:561 git-submodule.sh:923 +msgid "blob" +msgstr "Blob" + +#: builtin/cat-file.c:562 +msgid "use a specific path for --textconv/--filters" +msgstr "einen bestimmten Pfad für --textconv/--filters verwenden" + +#: builtin/cat-file.c:564 msgid "allow -s and -t to work with broken/corrupt objects" msgstr "-s und -t mit beschädigten Objekten erlauben" -#: builtin/cat-file.c:491 +#: builtin/cat-file.c:565 msgid "buffer --batch output" msgstr "Ausgabe von --batch puffern" -#: builtin/cat-file.c:493 +#: builtin/cat-file.c:567 msgid "show info and content of objects fed from the standard input" msgstr "" "Anzeige von Informationen und Inhalt von Objekten, gelesen von der Standard-" "Eingabe" -#: builtin/cat-file.c:496 +#: builtin/cat-file.c:570 msgid "show info about objects fed from the standard input" msgstr "" "Anzeige von Informationen über Objekte, gelesen von der Standard-Eingabe" -#: builtin/cat-file.c:499 +#: builtin/cat-file.c:573 msgid "follow in-tree symlinks (used with --batch or --batch-check)" msgstr "" "symbolischen Verknüpfungen innerhalb des Repositories folgen (verwendet mit " "--batch oder --batch-check)" -#: builtin/cat-file.c:501 +#: builtin/cat-file.c:575 msgid "show all objects with --batch or --batch-check" msgstr "alle Objekte mit --batch oder --batch-check anzeigen" @@ -4814,7 +5402,7 @@ msgstr "alle Attribute einer Datei ausgeben" msgid "use .gitattributes only from the index" msgstr "nur .gitattributes vom Index verwenden" -#: builtin/check-attr.c:21 builtin/check-ignore.c:22 builtin/hash-object.c:97 +#: builtin/check-attr.c:21 builtin/check-ignore.c:22 builtin/hash-object.c:98 msgid "read file names from stdin" msgstr "Dateinamen von der Standard-Eingabe lesen" @@ -4822,7 +5410,7 @@ msgstr "Dateinamen von der Standard-Eingabe lesen" msgid "terminate input and output records by a NUL character" msgstr "Einträge von Ein- und Ausgabe mit NUL-Zeichen abschließen" -#: builtin/check-ignore.c:18 builtin/checkout.c:1138 builtin/gc.c:325 +#: builtin/check-ignore.c:18 builtin/checkout.c:1137 builtin/gc.c:325 msgid "suppress progress reporting" msgstr "Fortschrittsanzeige unterdrücken" @@ -4915,9 +5503,9 @@ msgid "write the content to temporary files" msgstr "den Inhalt in temporäre Dateien schreiben" #: builtin/checkout-index.c:174 builtin/column.c:30 -#: 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 +#: builtin/submodule--helper.c:595 builtin/submodule--helper.c:598 +#: builtin/submodule--helper.c:604 builtin/submodule--helper.c:951 +#: builtin/worktree.c:469 msgid "string" msgstr "Zeichenkette" @@ -4990,54 +5578,54 @@ msgstr "" msgid "path '%s' is unmerged" msgstr "Pfad '%s' ist nicht zusammengeführt." -#: builtin/checkout.c:495 +#: builtin/checkout.c:494 msgid "you need to resolve your current index first" msgstr "Sie müssen zuerst die Konflikte in Ihrem aktuellen Index auflösen." -#: builtin/checkout.c:625 +#: builtin/checkout.c:624 #, c-format msgid "Can not do reflog for '%s': %s\n" msgstr "Kann \"reflog\" für '%s' nicht durchführen: %s\n" -#: builtin/checkout.c:664 +#: builtin/checkout.c:663 msgid "HEAD is now at" msgstr "HEAD ist jetzt bei" -#: builtin/checkout.c:668 builtin/clone.c:661 +#: builtin/checkout.c:667 builtin/clone.c:660 msgid "unable to update HEAD" msgstr "Konnte HEAD nicht aktualisieren." -#: builtin/checkout.c:672 +#: builtin/checkout.c:671 #, c-format msgid "Reset branch '%s'\n" msgstr "Setze Branch '%s' neu\n" -#: builtin/checkout.c:675 +#: builtin/checkout.c:674 #, c-format msgid "Already on '%s'\n" msgstr "Bereits auf '%s'\n" -#: builtin/checkout.c:679 +#: builtin/checkout.c:678 #, c-format msgid "Switched to and reset branch '%s'\n" msgstr "Zu umgesetztem Branch '%s' gewechselt\n" -#: builtin/checkout.c:681 builtin/checkout.c:1070 +#: builtin/checkout.c:680 builtin/checkout.c:1069 #, c-format msgid "Switched to a new branch '%s'\n" msgstr "Zu neuem Branch '%s' gewechselt\n" -#: builtin/checkout.c:683 +#: builtin/checkout.c:682 #, c-format msgid "Switched to branch '%s'\n" msgstr "Zu Branch '%s' gewechselt\n" -#: builtin/checkout.c:734 +#: builtin/checkout.c:733 #, c-format msgid " ... and %d more.\n" msgstr " ... und %d weitere.\n" -#: builtin/checkout.c:740 +#: builtin/checkout.c:739 #, c-format msgid "" "Warning: you are leaving %d commit behind, not connected to\n" @@ -5060,7 +5648,7 @@ msgstr[1] "" "\n" "%s\n" -#: builtin/checkout.c:759 +#: 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" @@ -5087,152 +5675,152 @@ msgstr[1] "" " git branch <neuer-Branchname> %s\n" "\n" -#: builtin/checkout.c:795 +#: builtin/checkout.c:794 msgid "internal error in revision walk" msgstr "interner Fehler im Revisionsgang" -#: builtin/checkout.c:799 +#: builtin/checkout.c:798 msgid "Previous HEAD position was" msgstr "Vorherige Position von HEAD war" -#: builtin/checkout.c:826 builtin/checkout.c:1065 +#: builtin/checkout.c:825 builtin/checkout.c:1064 msgid "You are on a branch yet to be born" msgstr "Sie sind auf einem Branch, der noch geboren wird" -#: builtin/checkout.c:971 +#: builtin/checkout.c:970 #, c-format msgid "only one reference expected, %d given." msgstr "nur eine Referenz erwartet, %d gegeben." -#: builtin/checkout.c:1011 builtin/worktree.c:214 +#: builtin/checkout.c:1010 builtin/worktree.c:214 #, c-format msgid "invalid reference: %s" msgstr "Ungültige Referenz: %s" -#: builtin/checkout.c:1040 +#: builtin/checkout.c:1039 #, c-format msgid "reference is not a tree: %s" msgstr "Referenz ist kein \"Tree\"-Objekt: %s" -#: builtin/checkout.c:1079 +#: builtin/checkout.c:1078 msgid "paths cannot be used with switching branches" msgstr "Pfade können nicht beim Wechseln von Branches verwendet werden" -#: builtin/checkout.c:1082 builtin/checkout.c:1086 +#: builtin/checkout.c:1081 builtin/checkout.c:1085 #, c-format msgid "'%s' cannot be used with switching branches" msgstr "'%s' kann nicht beim Wechseln von Branches verwendet werden" -#: builtin/checkout.c:1090 builtin/checkout.c:1093 builtin/checkout.c:1098 -#: builtin/checkout.c:1101 +#: 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' kann nicht mit '%s' verwendet werden" -#: builtin/checkout.c:1106 +#: builtin/checkout.c:1105 #, c-format msgid "Cannot switch branch to a non-commit '%s'" msgstr "Kann Branch nicht zu Nicht-Commit '%s' wechseln" -#: builtin/checkout.c:1139 builtin/checkout.c:1141 builtin/clone.c:88 +#: builtin/checkout.c:1138 builtin/checkout.c:1140 builtin/clone.c:93 #: builtin/remote.c:165 builtin/remote.c:167 builtin/worktree.c:324 #: builtin/worktree.c:326 msgid "branch" msgstr "Branch" -#: builtin/checkout.c:1140 +#: builtin/checkout.c:1139 msgid "create and checkout a new branch" msgstr "einen neuen Branch erzeugen und auschecken" -#: builtin/checkout.c:1142 +#: builtin/checkout.c:1141 msgid "create/reset and checkout a branch" msgstr "einen Branch erstellen/umsetzen und auschecken" -#: builtin/checkout.c:1143 +#: builtin/checkout.c:1142 msgid "create reflog for new branch" msgstr "das Reflog für den neuen Branch erzeugen" -#: builtin/checkout.c:1144 builtin/worktree.c:328 +#: builtin/checkout.c:1143 builtin/worktree.c:328 msgid "detach HEAD at named commit" msgstr "HEAD bei benanntem Commit loslösen" -#: builtin/checkout.c:1145 +#: builtin/checkout.c:1144 msgid "set upstream info for new branch" msgstr "Informationen zum Upstream-Branch für den neuen Branch setzen" -#: builtin/checkout.c:1147 +#: builtin/checkout.c:1146 msgid "new-branch" msgstr "neuer Branch" -#: builtin/checkout.c:1147 +#: builtin/checkout.c:1146 msgid "new unparented branch" msgstr "neuer Branch ohne Eltern-Commit" -#: builtin/checkout.c:1148 +#: builtin/checkout.c:1147 msgid "checkout our version for unmerged files" msgstr "unsere Variante für nicht zusammengeführte Dateien auschecken" -#: builtin/checkout.c:1150 +#: builtin/checkout.c:1149 msgid "checkout their version for unmerged files" msgstr "ihre Variante für nicht zusammengeführte Dateien auschecken" -#: builtin/checkout.c:1152 +#: builtin/checkout.c:1151 msgid "force checkout (throw away local modifications)" msgstr "Auschecken erzwingen (verwirft lokale Änderungen)" -#: builtin/checkout.c:1153 +#: builtin/checkout.c:1152 msgid "perform a 3-way merge with the new branch" msgstr "einen 3-Wege-Merge mit dem neuen Branch ausführen" -#: builtin/checkout.c:1154 builtin/merge.c:231 +#: builtin/checkout.c:1153 builtin/merge.c:231 msgid "update ignored files (default)" msgstr "ignorierte Dateien aktualisieren (Standard)" -#: builtin/checkout.c:1155 builtin/log.c:1459 parse-options.h:250 +#: builtin/checkout.c:1154 builtin/log.c:1466 parse-options.h:251 msgid "style" msgstr "Stil" -#: builtin/checkout.c:1156 +#: builtin/checkout.c:1155 msgid "conflict style (merge or diff3)" msgstr "Konfliktstil (merge oder diff3)" -#: builtin/checkout.c:1159 +#: builtin/checkout.c:1158 msgid "do not limit pathspecs to sparse entries only" msgstr "keine Einschränkung bei Pfadspezifikationen zum partiellen Auschecken" -#: builtin/checkout.c:1161 +#: builtin/checkout.c:1160 msgid "second guess 'git checkout <no-such-branch>'" msgstr "second guess 'git checkout <no-such-branch>'" -#: builtin/checkout.c:1163 +#: builtin/checkout.c:1162 msgid "do not check if another worktree is holding the given ref" msgstr "" "Prüfung, ob die Referenz bereits in einem anderen Arbeitsverzeichnis " "ausgecheckt wurde, deaktivieren" -#: 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/checkout.c:1163 builtin/clone.c:63 builtin/fetch.c:119 +#: builtin/merge.c:228 builtin/pull.c:117 builtin/push.c:536 #: builtin/send-pack.c:168 msgid "force progress reporting" msgstr "Fortschrittsanzeige erzwingen" -#: builtin/checkout.c:1195 +#: builtin/checkout.c:1194 msgid "-b, -B and --orphan are mutually exclusive" msgstr "Die Optionen -b, -B und --orphan schließen sich gegenseitig aus." -#: builtin/checkout.c:1212 +#: builtin/checkout.c:1211 msgid "--track needs a branch name" msgstr "Bei der Option --track muss ein Branchname angegeben werden." -#: builtin/checkout.c:1217 +#: builtin/checkout.c:1216 msgid "Missing branch name; try -b" msgstr "Vermisse Branchnamen; versuchen Sie -b" -#: builtin/checkout.c:1253 +#: builtin/checkout.c:1252 msgid "invalid path specification" msgstr "ungültige Pfadspezifikation" -#: builtin/checkout.c:1260 +#: builtin/checkout.c:1259 #, c-format msgid "" "Cannot update paths and switch to branch '%s' at the same time.\n" @@ -5242,12 +5830,12 @@ msgstr "" "Haben Sie beabsichtigt '%s' auszuchecken, welcher nicht als Commit aufgelöst " "werden kann?" -#: builtin/checkout.c:1265 +#: builtin/checkout.c:1264 #, c-format msgid "git checkout: --detach does not take a path argument '%s'" msgstr "git checkout: --detach nimmt kein Pfad-Argument '%s'" -#: builtin/checkout.c:1269 +#: builtin/checkout.c:1268 msgid "" "git checkout: --ours/--theirs, --force and --merge are incompatible when\n" "checking out of the index." @@ -5399,8 +5987,8 @@ msgstr "interaktives Clean" msgid "remove whole directories" msgstr "ganze Verzeichnisse löschen" -#: builtin/clean.c:875 builtin/describe.c:407 builtin/grep.c:724 -#: builtin/ls-files.c:457 builtin/name-rev.c:314 builtin/show-ref.c:182 +#: builtin/clean.c:875 builtin/describe.c:407 builtin/grep.c:725 +#: builtin/ls-files.c:536 builtin/name-rev.c:313 builtin/show-ref.c:182 msgid "pattern" msgstr "Muster" @@ -5440,113 +6028,134 @@ msgstr "" msgid "git clone [<options>] [--] <repo> [<dir>]" msgstr "git clone [<Optionen>] [--] <Repository> [<Verzeichnis>]" -#: builtin/clone.c:62 +#: builtin/clone.c:65 msgid "don't create a checkout" msgstr "kein Auschecken" -#: builtin/clone.c:63 builtin/clone.c:65 builtin/init-db.c:476 +#: builtin/clone.c:66 builtin/clone.c:68 builtin/init-db.c:478 msgid "create a bare repository" msgstr "ein Bare-Repository erstellen" -#: builtin/clone.c:67 +#: builtin/clone.c:70 msgid "create a mirror repository (implies bare)" msgstr "ein Spiegelarchiv erstellen (impliziert --bare)" -#: builtin/clone.c:69 +#: builtin/clone.c:72 msgid "to clone from a local repository" msgstr "von einem lokalen Repository klonen" -#: builtin/clone.c:71 +#: builtin/clone.c:74 msgid "don't use local hardlinks, always copy" msgstr "lokal keine harten Verweise verwenden, immer Kopien" -#: builtin/clone.c:73 +#: builtin/clone.c:76 msgid "setup as shared repository" msgstr "als verteiltes Repository einrichten" -#: builtin/clone.c:75 builtin/clone.c:77 +#: builtin/clone.c:78 builtin/clone.c:80 msgid "initialize submodules in the clone" msgstr "Submodule im Klon initialisieren" -#: builtin/clone.c:79 +#: builtin/clone.c:82 msgid "number of submodules cloned in parallel" msgstr "Anzahl der parallel zu klonenden Submodule" -#: builtin/clone.c:80 builtin/init-db.c:473 +#: builtin/clone.c:83 builtin/init-db.c:475 msgid "template-directory" msgstr "Vorlagenverzeichnis" -#: builtin/clone.c:81 builtin/init-db.c:474 +#: builtin/clone.c:84 builtin/init-db.c:476 msgid "directory from which templates will be used" msgstr "Verzeichnis, von welchem die Vorlagen verwendet werden" -#: builtin/clone.c:83 builtin/submodule--helper.c:495 -#: builtin/submodule--helper.c:833 +#: builtin/clone.c:86 builtin/clone.c:88 builtin/submodule--helper.c:602 +#: builtin/submodule--helper.c:954 msgid "reference repository" msgstr "Repository referenzieren" -#: builtin/clone.c:85 +#: builtin/clone.c:90 msgid "use --reference only while cloning" msgstr "--reference nur während des Klonens benutzen" -#: builtin/clone.c:86 builtin/column.c:26 builtin/merge-file.c:44 +#: builtin/clone.c:91 builtin/column.c:26 builtin/merge-file.c:44 msgid "name" msgstr "Name" -#: builtin/clone.c:87 +#: builtin/clone.c:92 msgid "use <name> instead of 'origin' to track upstream" msgstr "<Name> statt 'origin' für Upstream-Repository verwenden" -#: builtin/clone.c:89 +#: builtin/clone.c:94 msgid "checkout <branch> instead of the remote's HEAD" msgstr "<Branch> auschecken, anstatt HEAD des Remote-Repositories" -#: builtin/clone.c:91 +#: builtin/clone.c:96 msgid "path to git-upload-pack on the remote" msgstr "Pfad zu \"git-upload-pack\" auf der Gegenseite" -#: builtin/clone.c:92 builtin/fetch.c:118 builtin/grep.c:667 builtin/pull.c:201 +#: builtin/clone.c:97 builtin/fetch.c:120 builtin/grep.c:668 builtin/pull.c:202 msgid "depth" msgstr "Tiefe" -#: builtin/clone.c:93 +#: builtin/clone.c:98 msgid "create a shallow clone of that depth" msgstr "" "einen Klon mit unvollständiger Historie (shallow) in dieser Tiefe erstellen" -#: builtin/clone.c:95 +#: builtin/clone.c:99 builtin/fetch.c:122 builtin/pack-objects.c:2848 +#: parse-options.h:142 +msgid "time" +msgstr "Zeit" + +#: builtin/clone.c:100 +msgid "create a shallow clone since a specific time" +msgstr "" +"einen Klon mit unvollständiger Historie (shallow) seit einer bestimmten Zeit\n" +"erstellen" + +#: builtin/clone.c:101 builtin/fetch.c:124 +msgid "revision" +msgstr "Commit" + +#: builtin/clone.c:102 builtin/fetch.c:125 +msgid "deepen history of shallow clone by excluding rev" +msgstr "" +"die Historie eines Klons mit unvollständiger Historie (shallow) mittels\n" +"Ausschluss eines Commits vertiefen" + +#: builtin/clone.c:104 msgid "clone only one branch, HEAD or --branch" msgstr "nur einen Branch klonen, HEAD oder --branch" -#: builtin/clone.c:97 +#: builtin/clone.c:106 msgid "any cloned submodules will be shallow" msgstr "jedes geklonte Submodul mit unvollständiger Historie (shallow)" -#: builtin/clone.c:98 builtin/init-db.c:482 +#: builtin/clone.c:107 builtin/init-db.c:484 msgid "gitdir" msgstr ".git-Verzeichnis" -#: builtin/clone.c:99 builtin/init-db.c:483 +#: builtin/clone.c:108 builtin/init-db.c:485 msgid "separate git dir from working tree" msgstr "Git-Verzeichnis vom Arbeitsverzeichnis separieren" -#: builtin/clone.c:100 +#: builtin/clone.c:109 msgid "key=value" msgstr "Schlüssel=Wert" -#: builtin/clone.c:101 +#: builtin/clone.c:110 msgid "set config inside the new repository" msgstr "Konfiguration innerhalb des neuen Repositories setzen" -#: builtin/clone.c:102 builtin/fetch.c:132 builtin/push.c:547 +#: builtin/clone.c:111 builtin/fetch.c:140 builtin/push.c:547 msgid "use IPv4 addresses only" msgstr "nur IPv4-Adressen benutzen" -#: builtin/clone.c:104 builtin/fetch.c:134 builtin/push.c:549 +#: builtin/clone.c:113 builtin/fetch.c:142 builtin/push.c:549 msgid "use IPv6 addresses only" msgstr "nur IPv6-Adressen benutzen" -#: builtin/clone.c:241 +#: builtin/clone.c:250 msgid "" "No directory name could be guessed.\n" "Please specify a directory on the command line" @@ -5554,62 +6163,42 @@ msgstr "" "Konnte keinen Verzeichnisnamen erraten.\n" "Bitte geben Sie ein Verzeichnis auf der Befehlszeile an." -#: builtin/clone.c:307 -#, c-format -msgid "reference repository '%s' as a linked checkout is not supported yet." -msgstr "" -"Referenziertes Repository '%s' wird noch nicht als verknüpftes\n" -"Arbeitsverzeichnis unterstützt." - -#: builtin/clone.c:309 -#, c-format -msgid "reference repository '%s' is not a local repository." -msgstr "Referenziertes Repository '%s' ist kein lokales Repository." - -#: builtin/clone.c:314 -#, c-format -msgid "reference repository '%s' is shallow" -msgstr "" -"Referenziertes Repository '%s' hat eine unvollständige Historie (shallow)." - -#: builtin/clone.c:317 +#: builtin/clone.c:303 #, c-format -msgid "reference repository '%s' is grafted" -msgstr "" -"Referenziertes Repository '%s' ist mit künstlichen Vorgängern (\"grafts\") " -"eingehängt." +msgid "info: Could not add alternate for '%s': %s\n" +msgstr "info: Konnte Alternative für '%s' nicht hinzufügen: %s\n" -#: builtin/clone.c:376 +#: builtin/clone.c:375 #, c-format msgid "failed to open '%s'" msgstr "Fehler beim Öffnen von '%s'" -#: builtin/clone.c:384 +#: builtin/clone.c:383 #, c-format msgid "%s exists and is not a directory" msgstr "%s existiert und ist kein Verzeichnis" -#: builtin/clone.c:398 +#: builtin/clone.c:397 #, c-format msgid "failed to stat %s\n" msgstr "Konnte %s nicht lesen\n" -#: builtin/clone.c:420 +#: builtin/clone.c:419 #, c-format msgid "failed to create link '%s'" msgstr "Konnte Verweis '%s' nicht erstellen" -#: builtin/clone.c:424 +#: builtin/clone.c:423 #, c-format msgid "failed to copy file to '%s'" msgstr "Konnte Datei nicht nach '%s' kopieren" -#: builtin/clone.c:449 +#: builtin/clone.c:448 #, c-format msgid "done.\n" msgstr "Fertig.\n" -#: builtin/clone.c:461 +#: builtin/clone.c:460 msgid "" "Clone succeeded, but checkout failed.\n" "You can inspect what was checked out with 'git status'\n" @@ -5619,127 +6208,141 @@ msgstr "" "Sie können mit 'git status' prüfen, was ausgecheckt worden ist\n" "und das Auschecken mit 'git checkout -f HEAD' erneut versuchen.\n" -#: builtin/clone.c:538 +#: builtin/clone.c:537 #, c-format msgid "Could not find remote branch %s to clone." msgstr "Konnte zu klonenden Remote-Branch %s nicht finden." -#: builtin/clone.c:633 +#: builtin/clone.c:632 msgid "remote did not send all necessary objects" msgstr "Remote-Repository hat nicht alle erforderlichen Objekte gesendet." -#: builtin/clone.c:649 +#: builtin/clone.c:648 #, c-format msgid "unable to update %s" msgstr "kann %s nicht aktualisieren" -#: builtin/clone.c:698 +#: builtin/clone.c:697 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n" msgstr "" "Externer HEAD bezieht sich auf eine nicht existierende Referenz und kann " "nicht ausgecheckt werden.\n" -#: builtin/clone.c:729 +#: builtin/clone.c:728 msgid "unable to checkout working tree" msgstr "Arbeitsverzeichnis konnte nicht ausgecheckt werden" -#: builtin/clone.c:766 +#: builtin/clone.c:768 msgid "unable to write parameters to config file" msgstr "konnte Parameter nicht in Konfigurationsdatei schreiben" -#: builtin/clone.c:829 +#: builtin/clone.c:831 msgid "cannot repack to clean up" msgstr "Kann \"repack\" zum Aufräumen nicht aufrufen" -#: builtin/clone.c:831 +#: builtin/clone.c:833 msgid "cannot unlink temporary alternates file" msgstr "Kann temporäre \"alternates\"-Datei nicht entfernen" -#: builtin/clone.c:863 builtin/receive-pack.c:1855 +#: builtin/clone.c:866 builtin/receive-pack.c:1895 msgid "Too many arguments." msgstr "Zu viele Argumente." -#: builtin/clone.c:867 +#: builtin/clone.c:870 msgid "You must specify a repository to clone." msgstr "Sie müssen ein Repository zum Klonen angeben." -#: builtin/clone.c:878 +#: builtin/clone.c:883 #, c-format msgid "--bare and --origin %s options are incompatible." msgstr "Die Optionen --bare und --origin %s sind inkompatibel." -#: builtin/clone.c:881 +#: builtin/clone.c:886 msgid "--bare and --separate-git-dir are incompatible." msgstr "Die Optionen --bare und --separate-git-dir sind inkompatibel." -#: builtin/clone.c:894 +#: builtin/clone.c:899 #, c-format msgid "repository '%s' does not exist" msgstr "Repository '%s' existiert nicht." -#: builtin/clone.c:900 builtin/fetch.c:1293 +#: builtin/clone.c:905 builtin/fetch.c:1338 #, c-format msgid "depth %s is not a positive number" msgstr "Tiefe %s ist keine positive Zahl" -#: builtin/clone.c:910 +#: builtin/clone.c:915 #, c-format msgid "destination path '%s' already exists and is not an empty directory." msgstr "Zielpfad '%s' existiert bereits und ist kein leeres Verzeichnis." -#: builtin/clone.c:920 +#: builtin/clone.c:925 #, c-format msgid "working tree '%s' already exists." msgstr "Arbeitsverzeichnis '%s' existiert bereits." -#: builtin/clone.c:935 builtin/clone.c:946 builtin/submodule--helper.c:544 +#: builtin/clone.c:940 builtin/clone.c:951 builtin/submodule--helper.c:657 #: builtin/worktree.c:222 builtin/worktree.c:249 #, c-format msgid "could not create leading directories of '%s'" msgstr "Konnte führende Verzeichnisse von '%s' nicht erstellen." -#: builtin/clone.c:938 +#: builtin/clone.c:943 #, c-format msgid "could not create work tree dir '%s'" msgstr "Konnte Arbeitsverzeichnis '%s' nicht erstellen" -#: builtin/clone.c:956 +#: builtin/clone.c:955 #, c-format msgid "Cloning into bare repository '%s'...\n" msgstr "Klone in Bare-Repository '%s' ...\n" -#: builtin/clone.c:958 +#: builtin/clone.c:957 #, c-format msgid "Cloning into '%s'...\n" msgstr "Klone nach '%s' ...\n" -#: builtin/clone.c:997 +#: builtin/clone.c:963 +msgid "" +"clone --recursive is not compatible with both --reference and --reference-if-" +"able" +msgstr "'clone --recursive' ist nicht kompatibel mit --reference und --reference-if-able" + +#: builtin/clone.c:1019 msgid "--depth is ignored in local clones; use file:// instead." msgstr "" "Die Option --depth wird in lokalen Klonen ignoriert; benutzen Sie " "stattdessen file://" -#: builtin/clone.c:1000 +#: builtin/clone.c:1021 +msgid "--shallow-since is ignored in local clones; use file:// instead." +msgstr "--shallow-since wird in lokalen Klonen ignoriert; benutzen Sie stattdessen file://" + +#: builtin/clone.c:1023 +msgid "--shallow-exclude is ignored in local clones; use file:// instead." +msgstr "--shallow-exclude wird in lokalen Klonen ignoriert; benutzen Sie stattdessen file://" + +#: builtin/clone.c:1026 msgid "source repository is shallow, ignoring --local" msgstr "" "Quelle ist ein Repository mit unvollständiger Historie (shallow),ignoriere --" "local" -#: builtin/clone.c:1005 +#: builtin/clone.c:1031 msgid "--local is ignored" msgstr "--local wird ignoriert" -#: builtin/clone.c:1009 +#: builtin/clone.c:1035 #, c-format msgid "Don't know how to clone %s" msgstr "Weiß nicht wie %s zu klonen ist." -#: builtin/clone.c:1058 builtin/clone.c:1066 +#: builtin/clone.c:1090 builtin/clone.c:1098 #, c-format msgid "Remote branch %s not found in upstream %s" msgstr "Remote-Branch %s nicht im Upstream-Repository %s gefunden" -#: builtin/clone.c:1069 +#: builtin/clone.c:1101 msgid "You appear to have cloned an empty repository." msgstr "Sie scheinen ein leeres Repository geklont zu haben." @@ -5882,67 +6485,67 @@ msgstr "" "Benutzen Sie anschließend \"git cherry-pick --continue\", um die\n" "Cherry-Pick-Operation mit den verbleibenden Commits fortzusetzen.\n" -#: builtin/commit.c:308 +#: builtin/commit.c:318 msgid "failed to unpack HEAD tree object" msgstr "Fehler beim Entpacken des \"Tree\"-Objektes von HEAD." -#: builtin/commit.c:349 +#: builtin/commit.c:359 msgid "unable to create temporary index" msgstr "Konnte temporären Index nicht erstellen." -#: builtin/commit.c:355 +#: builtin/commit.c:365 msgid "interactive add failed" msgstr "interaktives Hinzufügen fehlgeschlagen" -#: builtin/commit.c:368 +#: builtin/commit.c:378 msgid "unable to update temporary index" msgstr "Konnte temporären Index nicht aktualisieren." -#: builtin/commit.c:370 +#: builtin/commit.c:380 msgid "Failed to update main cache tree" msgstr "Konnte Haupt-Cache-Verzeichnis nicht aktualisieren" -#: builtin/commit.c:394 builtin/commit.c:417 builtin/commit.c:466 +#: builtin/commit.c:404 builtin/commit.c:427 builtin/commit.c:476 msgid "unable to write new_index file" msgstr "Konnte new_index Datei nicht schreiben" -#: builtin/commit.c:448 +#: builtin/commit.c:458 msgid "cannot do a partial commit during a merge." msgstr "Kann keinen Teil-Commit durchführen, während ein Merge im Gange ist." -#: builtin/commit.c:450 +#: builtin/commit.c:460 msgid "cannot do a partial commit during a cherry-pick." msgstr "" "Kann keinen Teil-Commit durchführen, während \"cherry-pick\" im Gange ist." -#: builtin/commit.c:459 +#: builtin/commit.c:469 msgid "cannot read the index" msgstr "Kann Index nicht lesen" -#: builtin/commit.c:478 +#: builtin/commit.c:488 msgid "unable to write temporary index file" msgstr "Konnte temporäre Index-Datei nicht schreiben." -#: builtin/commit.c:583 +#: builtin/commit.c:582 #, c-format msgid "commit '%s' lacks author header" msgstr "Commit '%s' fehlt Autor-Kopfbereich" -#: builtin/commit.c:585 +#: builtin/commit.c:584 #, c-format msgid "commit '%s' has malformed author line" msgstr "Commit '%s' hat fehlerhafte Autor-Zeile" -#: builtin/commit.c:604 +#: builtin/commit.c:603 msgid "malformed --author parameter" msgstr "Fehlerhafter --author Parameter" -#: builtin/commit.c:612 +#: builtin/commit.c:611 #, c-format msgid "invalid date format: %s" msgstr "Ungültiges Datumsformat: %s" -#: builtin/commit.c:656 +#: builtin/commit.c:655 msgid "" "unable to select a comment character that is not used\n" "in the current commit message" @@ -5950,38 +6553,38 @@ msgstr "" "Konnte kein Kommentar-Zeichen auswählen, das nicht in\n" "der aktuellen Commit-Beschreibung verwendet wird." -#: builtin/commit.c:693 builtin/commit.c:726 builtin/commit.c:1092 +#: builtin/commit.c:692 builtin/commit.c:725 builtin/commit.c:1096 #, c-format msgid "could not lookup commit %s" msgstr "Konnte Commit %s nicht nachschlagen" -#: builtin/commit.c:705 builtin/shortlog.c:286 +#: builtin/commit.c:704 builtin/shortlog.c:286 #, c-format msgid "(reading log message from standard input)\n" msgstr "(lese Log-Nachricht von Standard-Eingabe)\n" -#: builtin/commit.c:707 +#: builtin/commit.c:706 msgid "could not read log from standard input" msgstr "Konnte Log nicht von Standard-Eingabe lesen." -#: builtin/commit.c:711 +#: builtin/commit.c:710 #, c-format msgid "could not read log file '%s'" msgstr "Konnte Log-Datei '%s' nicht lesen" -#: builtin/commit.c:738 builtin/commit.c:746 +#: builtin/commit.c:737 builtin/commit.c:745 msgid "could not read SQUASH_MSG" msgstr "Konnte SQUASH_MSG nicht lesen" -#: builtin/commit.c:743 +#: builtin/commit.c:742 msgid "could not read MERGE_MSG" msgstr "Konnte MERGE_MSG nicht lesen" -#: builtin/commit.c:797 +#: builtin/commit.c:796 msgid "could not write commit template" msgstr "Konnte Commit-Vorlage nicht schreiben" -#: builtin/commit.c:815 +#: builtin/commit.c:814 #, c-format msgid "" "\n" @@ -5996,7 +6599,7 @@ msgstr "" "\t%s\n" "und versuchen Sie es erneut.\n" -#: builtin/commit.c:820 +#: builtin/commit.c:819 #, c-format msgid "" "\n" @@ -6011,7 +6614,7 @@ msgstr "" "\t%s\n" "und versuchen Sie es erneut.\n" -#: builtin/commit.c:833 +#: builtin/commit.c:832 #, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" @@ -6021,7 +6624,7 @@ msgstr "" "die mit '%c' beginnen, werden ignoriert, und eine leere Beschreibung\n" "bricht den Commit ab.\n" -#: builtin/commit.c:840 +#: builtin/commit.c:839 #, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" @@ -6034,157 +6637,161 @@ msgstr "" "entfernen.\n" "Eine leere Beschreibung bricht den Commit ab.\n" -#: builtin/commit.c:860 +#: builtin/commit.c:859 #, c-format msgid "%sAuthor: %.*s <%.*s>" msgstr "%sAutor: %.*s <%.*s>" -#: builtin/commit.c:868 +#: builtin/commit.c:867 #, c-format msgid "%sDate: %s" msgstr "%sDatum: %s" -#: builtin/commit.c:875 +#: builtin/commit.c:874 #, c-format msgid "%sCommitter: %.*s <%.*s>" msgstr "%sCommit-Ersteller: %.*s <%.*s>" -#: builtin/commit.c:893 +#: builtin/commit.c:892 msgid "Cannot read index" msgstr "Kann Index nicht lesen" -#: builtin/commit.c:950 +#: builtin/commit.c:954 msgid "Error building trees" msgstr "Fehler beim Erzeugen der \"Tree\"-Objekte" -#: builtin/commit.c:965 builtin/tag.c:266 +#: builtin/commit.c:969 builtin/tag.c:266 #, c-format msgid "Please supply the message using either -m or -F option.\n" msgstr "" "Bitte liefern Sie eine Beschreibung entweder mit der Option -m oder -F.\n" -#: builtin/commit.c:1067 +#: builtin/commit.c:1071 #, c-format msgid "--author '%s' is not 'Name <email>' and matches no existing author" msgstr "" "--author '%s' ist nicht im Format 'Name <E-Mail>' und stimmt mit keinem " "vorhandenen Autor überein" -#: builtin/commit.c:1082 builtin/commit.c:1322 +#: builtin/commit.c:1086 builtin/commit.c:1327 #, c-format msgid "Invalid untracked files mode '%s'" msgstr "Ungültiger Modus '%s' für unversionierte Dateien" -#: builtin/commit.c:1119 +#: builtin/commit.c:1124 msgid "--long and -z are incompatible" msgstr "Die Optionen --long und -z sind inkompatibel." -#: builtin/commit.c:1149 +#: builtin/commit.c:1154 msgid "Using both --reset-author and --author does not make sense" msgstr "" "Die Optionen --reset-author und --author können nicht gemeinsam verwendet " "werden." -#: builtin/commit.c:1158 +#: builtin/commit.c:1163 msgid "You have nothing to amend." msgstr "Sie haben nichts für \"--amend\"." -#: builtin/commit.c:1161 +#: builtin/commit.c:1166 msgid "You are in the middle of a merge -- cannot amend." msgstr "Ein Merge ist im Gange -- kann \"--amend\" nicht ausführen." -#: builtin/commit.c:1163 +#: builtin/commit.c:1168 msgid "You are in the middle of a cherry-pick -- cannot amend." msgstr "\"cherry-pick\" ist im Gange -- kann \"--amend\" nicht ausführen." -#: builtin/commit.c:1166 +#: builtin/commit.c:1171 msgid "Options --squash and --fixup cannot be used together" msgstr "" "Die Optionen --squash und --fixup können nicht gemeinsam verwendet werden." -#: builtin/commit.c:1176 +#: builtin/commit.c:1181 msgid "Only one of -c/-C/-F/--fixup can be used." msgstr "Es kann nur eine Option von -c/-C/-F/--fixup verwendet werden." -#: builtin/commit.c:1178 +#: builtin/commit.c:1183 msgid "Option -m cannot be combined with -c/-C/-F/--fixup." msgstr "Die Option -m kann nicht mit -c/-C/-F/--fixup kombiniert werden." -#: builtin/commit.c:1186 +#: builtin/commit.c:1191 msgid "--reset-author can be used only with -C, -c or --amend." msgstr "" "Die Option --reset--author kann nur mit -C, -c oder --amend verwendet werden." -#: builtin/commit.c:1203 +#: builtin/commit.c:1208 msgid "Only one of --include/--only/--all/--interactive/--patch can be used." msgstr "" "Es kann nur eine Option von --include/--only/--all/--interactive/--patch " "verwendet werden." -#: builtin/commit.c:1205 +#: builtin/commit.c:1210 msgid "No paths with --include/--only does not make sense." msgstr "" "Die Optionen --include und --only können nur mit der Angabe von Pfaden " "verwendet werden." -#: builtin/commit.c:1207 +#: builtin/commit.c:1212 msgid "Clever... amending the last one with dirty index." msgstr "Klug ... den letzten Commit mit einem geänderten Index nachbessern." -#: builtin/commit.c:1209 +#: builtin/commit.c:1214 msgid "Explicit paths specified without -i or -o; assuming --only paths..." msgstr "Explizite Pfade ohne -i oder -o angegeben; nehme --only an" -#: builtin/commit.c:1221 builtin/tag.c:474 +#: builtin/commit.c:1226 builtin/tag.c:474 #, c-format msgid "Invalid cleanup mode %s" msgstr "Ungültiger \"cleanup\" Modus %s" -#: builtin/commit.c:1226 +#: builtin/commit.c:1231 msgid "Paths with -a does not make sense." msgstr "Die Option -a kann nicht mit der Angabe von Pfaden verwendet werden." -#: builtin/commit.c:1336 builtin/commit.c:1622 +#: builtin/commit.c:1341 builtin/commit.c:1617 msgid "show status concisely" msgstr "Status im Kurzformat anzeigen" -#: builtin/commit.c:1338 builtin/commit.c:1624 +#: builtin/commit.c:1343 builtin/commit.c:1619 msgid "show branch information" msgstr "Branchinformationen anzeigen" -#: builtin/commit.c:1340 builtin/commit.c:1626 builtin/push.c:522 +#: builtin/commit.c:1345 +msgid "version" +msgstr "Version" + +#: builtin/commit.c:1345 builtin/commit.c:1621 builtin/push.c:522 #: builtin/worktree.c:440 msgid "machine-readable output" msgstr "maschinenlesbare Ausgabe" -#: builtin/commit.c:1343 builtin/commit.c:1628 +#: builtin/commit.c:1348 builtin/commit.c:1623 msgid "show status in long format (default)" msgstr "Status im Langformat anzeigen (Standard)" -#: builtin/commit.c:1346 builtin/commit.c:1631 +#: builtin/commit.c:1351 builtin/commit.c:1626 msgid "terminate entries with NUL" msgstr "Einträge mit NUL-Zeichen abschließen" -#: builtin/commit.c:1348 builtin/commit.c:1634 builtin/fast-export.c:981 +#: builtin/commit.c:1353 builtin/commit.c:1629 builtin/fast-export.c:981 #: builtin/fast-export.c:984 builtin/tag.c:353 msgid "mode" msgstr "Modus" -#: builtin/commit.c:1349 builtin/commit.c:1634 +#: builtin/commit.c:1354 builtin/commit.c:1629 msgid "show untracked files, optional modes: all, normal, no. (Default: all)" msgstr "" "unversionierte Dateien anzeigen, optionale Modi: all, normal, no. (Standard: " "all)" -#: builtin/commit.c:1352 +#: builtin/commit.c:1357 msgid "show ignored files" msgstr "ignorierte Dateien anzeigen" -#: builtin/commit.c:1353 parse-options.h:155 +#: builtin/commit.c:1358 parse-options.h:155 msgid "when" msgstr "wann" -#: builtin/commit.c:1354 +#: builtin/commit.c:1359 msgid "" "ignore changes to submodules, optional when: all, dirty, untracked. " "(Default: all)" @@ -6192,203 +6799,203 @@ msgstr "" "Änderungen in Submodulen ignorieren, optional wenn: all, dirty, untracked. " "(Standard: all)" -#: builtin/commit.c:1356 +#: builtin/commit.c:1361 msgid "list untracked files in columns" msgstr "unversionierte Dateien in Spalten auflisten" -#: builtin/commit.c:1442 +#: builtin/commit.c:1437 msgid "couldn't look up newly created commit" msgstr "Konnte neu erstellten Commit nicht nachschlagen." -#: builtin/commit.c:1444 +#: builtin/commit.c:1439 msgid "could not parse newly created commit" msgstr "Konnte neulich erstellten Commit nicht analysieren." -#: builtin/commit.c:1489 +#: builtin/commit.c:1484 msgid "detached HEAD" msgstr "losgelöster HEAD" -#: builtin/commit.c:1492 +#: builtin/commit.c:1487 msgid " (root-commit)" msgstr " (Basis-Commit)" -#: builtin/commit.c:1592 +#: builtin/commit.c:1587 msgid "suppress summary after successful commit" msgstr "Zusammenfassung nach erfolgreichem Commit unterdrücken" -#: builtin/commit.c:1593 +#: builtin/commit.c:1588 msgid "show diff in commit message template" msgstr "Unterschiede in Commit-Beschreibungsvorlage anzeigen" -#: builtin/commit.c:1595 +#: builtin/commit.c:1590 msgid "Commit message options" msgstr "Optionen für Commit-Beschreibung" -#: builtin/commit.c:1596 builtin/tag.c:351 +#: builtin/commit.c:1591 builtin/tag.c:351 msgid "read message from file" msgstr "Beschreibung von Datei lesen" -#: builtin/commit.c:1597 +#: builtin/commit.c:1592 msgid "author" msgstr "Autor" -#: builtin/commit.c:1597 +#: builtin/commit.c:1592 msgid "override author for commit" msgstr "Autor eines Commits überschreiben" -#: builtin/commit.c:1598 builtin/gc.c:326 +#: builtin/commit.c:1593 builtin/gc.c:326 msgid "date" msgstr "Datum" -#: builtin/commit.c:1598 +#: builtin/commit.c:1593 msgid "override date for commit" msgstr "Datum eines Commits überschreiben" -#: builtin/commit.c:1599 builtin/merge.c:220 builtin/notes.c:396 -#: builtin/notes.c:559 builtin/tag.c:349 +#: builtin/commit.c:1594 builtin/merge.c:220 builtin/notes.c:398 +#: builtin/notes.c:561 builtin/tag.c:349 msgid "message" msgstr "Beschreibung" -#: builtin/commit.c:1599 +#: builtin/commit.c:1594 msgid "commit message" msgstr "Commit-Beschreibung" -#: builtin/commit.c:1600 builtin/commit.c:1601 builtin/commit.c:1602 -#: builtin/commit.c:1603 parse-options.h:256 ref-filter.h:79 +#: builtin/commit.c:1595 builtin/commit.c:1596 builtin/commit.c:1597 +#: builtin/commit.c:1598 parse-options.h:257 ref-filter.h:79 msgid "commit" msgstr "Commit" -#: builtin/commit.c:1600 +#: builtin/commit.c:1595 msgid "reuse and edit message from specified commit" msgstr "Beschreibung des angegebenen Commits wiederverwenden und editieren" -#: builtin/commit.c:1601 +#: builtin/commit.c:1596 msgid "reuse message from specified commit" msgstr "Beschreibung des angegebenen Commits wiederverwenden" -#: builtin/commit.c:1602 +#: builtin/commit.c:1597 msgid "use autosquash formatted message to fixup specified commit" msgstr "" "eine automatisch zusammengesetzte Beschreibung zum Nachbessern des " "angegebenen Commits verwenden" -#: builtin/commit.c:1603 +#: builtin/commit.c:1598 msgid "use autosquash formatted message to squash specified commit" msgstr "" "eine automatisch zusammengesetzte Beschreibung beim \"squash\" des " "angegebenen Commits verwenden" -#: builtin/commit.c:1604 +#: builtin/commit.c:1599 msgid "the commit is authored by me now (used with -C/-c/--amend)" msgstr "Sie als Autor des Commits setzen (verwendet mit -C/-c/--amend)" -#: builtin/commit.c:1605 builtin/log.c:1409 builtin/revert.c:86 +#: builtin/commit.c:1600 builtin/log.c:1413 builtin/revert.c:86 msgid "add Signed-off-by:" msgstr "'Signed-off-by:'-Zeile hinzufügen" -#: builtin/commit.c:1606 +#: builtin/commit.c:1601 msgid "use specified template file" msgstr "angegebene Vorlagendatei verwenden" -#: builtin/commit.c:1607 +#: builtin/commit.c:1602 msgid "force edit of commit" msgstr "Bearbeitung des Commits erzwingen" -#: builtin/commit.c:1608 +#: builtin/commit.c:1603 msgid "default" msgstr "Standard" -#: builtin/commit.c:1608 builtin/tag.c:354 +#: builtin/commit.c:1603 builtin/tag.c:354 msgid "how to strip spaces and #comments from message" msgstr "" "wie Leerzeichen und #Kommentare von der Beschreibung getrennt werden sollen" -#: builtin/commit.c:1609 +#: builtin/commit.c:1604 msgid "include status in commit message template" msgstr "Status in die Commit-Beschreibungsvorlage einfügen" -#: builtin/commit.c:1611 builtin/merge.c:230 builtin/pull.c:165 +#: builtin/commit.c:1606 builtin/merge.c:230 builtin/pull.c:166 #: builtin/revert.c:93 msgid "GPG sign commit" msgstr "Commit mit GPG signieren" -#: builtin/commit.c:1614 +#: builtin/commit.c:1609 msgid "Commit contents options" msgstr "Optionen für Commit-Inhalt" -#: builtin/commit.c:1615 +#: builtin/commit.c:1610 msgid "commit all changed files" msgstr "alle geänderten Dateien committen" -#: builtin/commit.c:1616 +#: builtin/commit.c:1611 msgid "add specified files to index for commit" msgstr "die angegebenen Dateien zusätzlich zum Commit vormerken" -#: builtin/commit.c:1617 +#: builtin/commit.c:1612 msgid "interactively add files" msgstr "interaktives Hinzufügen von Dateien" -#: builtin/commit.c:1618 +#: builtin/commit.c:1613 msgid "interactively add changes" msgstr "interaktives Hinzufügen von Änderungen" -#: builtin/commit.c:1619 +#: builtin/commit.c:1614 msgid "commit only specified files" msgstr "nur die angegebenen Dateien committen" -#: builtin/commit.c:1620 +#: builtin/commit.c:1615 msgid "bypass pre-commit and commit-msg hooks" msgstr "Hooks pre-commit und commit-msg umgehen" -#: builtin/commit.c:1621 +#: builtin/commit.c:1616 msgid "show what would be committed" msgstr "anzeigen, was committet werden würde" -#: builtin/commit.c:1632 +#: builtin/commit.c:1627 msgid "amend previous commit" msgstr "vorherigen Commit ändern" -#: builtin/commit.c:1633 +#: builtin/commit.c:1628 msgid "bypass post-rewrite hook" msgstr "\"post-rewrite hook\" umgehen" -#: builtin/commit.c:1638 +#: builtin/commit.c:1633 msgid "ok to record an empty change" msgstr "Aufzeichnung einer leeren Änderung erlauben" -#: builtin/commit.c:1640 +#: builtin/commit.c:1635 msgid "ok to record a change with an empty message" msgstr "Aufzeichnung einer Änderung mit einer leeren Beschreibung erlauben" -#: builtin/commit.c:1669 +#: builtin/commit.c:1664 msgid "could not parse HEAD commit" msgstr "Konnte Commit von HEAD nicht analysieren." -#: builtin/commit.c:1719 +#: builtin/commit.c:1712 #, c-format msgid "Corrupt MERGE_HEAD file (%s)" msgstr "Beschädigte MERGE_HEAD-Datei (%s)" -#: builtin/commit.c:1726 +#: builtin/commit.c:1719 msgid "could not read MERGE_MODE" msgstr "Konnte MERGE_MODE nicht lesen" -#: builtin/commit.c:1745 +#: builtin/commit.c:1738 #, c-format msgid "could not read commit message: %s" msgstr "Konnte Commit-Beschreibung nicht lesen: %s" -#: builtin/commit.c:1756 +#: builtin/commit.c:1749 #, c-format msgid "Aborting commit; you did not edit the message.\n" msgstr "Commit abgebrochen; Sie haben die Beschreibung nicht editiert.\n" -#: builtin/commit.c:1761 +#: builtin/commit.c:1754 #, c-format msgid "Aborting commit due to empty commit message.\n" msgstr "Commit aufgrund leerer Beschreibung abgebrochen.\n" -#: builtin/commit.c:1809 +#: builtin/commit.c:1802 msgid "" "Repository has been updated, but unable to write\n" "new_index file. Check that disk is not full and quota is\n" @@ -6557,11 +7164,21 @@ msgstr "" msgid "cannot create configuration file %s" msgstr "Konnte Konfigurationsdatei '%s' nicht erstellen." -#: builtin/count-objects.c:77 +#: builtin/config.c:625 +#, c-format +msgid "" +"cannot overwrite multiple values with a single value\n" +" Use a regexp, --add or --replace-all to change %s." +msgstr "" +"kann nicht mehrere Werte mit einem einzigen Wert überschreiben\n" +" Benutzen Sie einen regulären Ausdruck, --add oder --replace, um %s\n" +" zu ändern." + +#: builtin/count-objects.c:86 msgid "git count-objects [-v] [-H | --human-readable]" msgstr "git count-objects [-v] [-H | --human-readable]" -#: builtin/count-objects.c:87 +#: builtin/count-objects.c:96 msgid "print sizes in human readable format" msgstr "gibt Größenangaben in menschenlesbaren Format aus" @@ -6681,7 +7298,7 @@ msgstr "die jüngsten <n> Tags betrachten (Standard: 10)" msgid "only consider tags matching <pattern>" msgstr "nur Tags, die <Muster> entsprechen, betrachten" -#: builtin/describe.c:410 builtin/name-rev.c:321 +#: builtin/describe.c:410 builtin/name-rev.c:320 msgid "show abbreviated commit object as fallback" msgstr "gekürztes Commit-Objekt anzeigen, wenn sonst nichts zutrifft" @@ -6717,21 +7334,21 @@ msgstr "'%s': keine reguläre Datei oder symbolische Verknüpfung" msgid "invalid option: %s" msgstr "Ungültige Option: %s" -#: builtin/diff.c:360 +#: builtin/diff.c:361 msgid "Not a git repository" msgstr "Kein Git-Repository" -#: builtin/diff.c:403 +#: builtin/diff.c:404 #, c-format msgid "invalid object '%s' given." msgstr "Objekt '%s' ist ungültig." -#: builtin/diff.c:412 +#: builtin/diff.c:413 #, c-format msgid "more than two blobs given: '%s'" msgstr "Mehr als zwei Blobs angegeben: '%s'" -#: builtin/diff.c:419 +#: builtin/diff.c:420 #, c-format msgid "unhandled object '%s' given." msgstr "unbehandeltes Objekt '%s' angegeben" @@ -6804,166 +7421,172 @@ msgstr "git fetch --multiple [<Optionen>] [(<Repository> | <Gruppe>)...]" msgid "git fetch --all [<options>]" msgstr "git fetch --all [<Optionen>]" -#: builtin/fetch.c:93 builtin/pull.c:174 +#: builtin/fetch.c:95 builtin/pull.c:175 msgid "fetch from all remotes" msgstr "fordert von allen Remote-Repositories an" -#: builtin/fetch.c:95 builtin/pull.c:177 +#: builtin/fetch.c:97 builtin/pull.c:178 msgid "append to .git/FETCH_HEAD instead of overwriting" msgstr "an .git/FETCH_HEAD anhängen, anstatt zu überschreiben" -#: builtin/fetch.c:97 builtin/pull.c:180 +#: builtin/fetch.c:99 builtin/pull.c:181 msgid "path to upload pack on remote end" msgstr "Pfad des Programms zum Hochladen von Paketen auf der Gegenseite" -#: builtin/fetch.c:98 builtin/pull.c:182 +#: builtin/fetch.c:100 builtin/pull.c:183 msgid "force overwrite of local branch" msgstr "das Ãœberschreiben von lokalen Branches erzwingen" -#: builtin/fetch.c:100 +#: builtin/fetch.c:102 msgid "fetch from multiple remotes" msgstr "von mehreren Remote-Repositories anfordern" -#: builtin/fetch.c:102 builtin/pull.c:184 +#: builtin/fetch.c:104 builtin/pull.c:185 msgid "fetch all tags and associated objects" msgstr "alle Tags und verbundene Objekte anfordern" -#: builtin/fetch.c:104 +#: builtin/fetch.c:106 msgid "do not fetch all tags (--no-tags)" msgstr "nicht alle Tags anfordern (--no-tags)" -#: builtin/fetch.c:106 +#: builtin/fetch.c:108 msgid "number of submodules fetched in parallel" msgstr "Anzahl der parallel anzufordernden Submodule" -#: builtin/fetch.c:108 builtin/pull.c:187 +#: builtin/fetch.c:110 builtin/pull.c:188 msgid "prune remote-tracking branches no longer on remote" msgstr "" "Remote-Tracking-Branches entfernen, die sich nicht mehr im Remote-Repository " "befinden" -#: builtin/fetch.c:109 builtin/pull.c:190 +#: builtin/fetch.c:111 builtin/pull.c:191 msgid "on-demand" msgstr "bei-Bedarf" -#: builtin/fetch.c:110 builtin/pull.c:191 +#: builtin/fetch.c:112 builtin/pull.c:192 msgid "control recursive fetching of submodules" msgstr "rekursive Anforderungen von Submodulen kontrollieren" -#: builtin/fetch.c:114 builtin/pull.c:199 +#: builtin/fetch.c:116 builtin/pull.c:200 msgid "keep downloaded pack" msgstr "heruntergeladenes Paket behalten" -#: builtin/fetch.c:116 +#: builtin/fetch.c:118 msgid "allow updating of HEAD ref" msgstr "Aktualisierung der \"HEAD\"-Referenz erlauben" -#: builtin/fetch.c:119 builtin/pull.c:202 +#: builtin/fetch.c:121 builtin/fetch.c:127 builtin/pull.c:203 msgid "deepen history of shallow clone" msgstr "" "die Historie eines Klons mit unvollständiger Historie (shallow) vertiefen" -#: builtin/fetch.c:121 builtin/pull.c:205 +#: builtin/fetch.c:123 +msgid "deepen history of shallow repository based on time" +msgstr "" +"die Historie eines Klons mit unvollständiger Historie (shallow) auf Zeitbasis\n" +"vertiefen" + +#: builtin/fetch.c:129 builtin/pull.c:206 msgid "convert to a complete repository" msgstr "zu einem vollständigen Repository konvertieren" -#: builtin/fetch.c:123 builtin/log.c:1426 +#: builtin/fetch.c:131 builtin/log.c:1433 msgid "dir" msgstr "Verzeichnis" -#: builtin/fetch.c:124 +#: builtin/fetch.c:132 msgid "prepend this to submodule path output" msgstr "dies an die Ausgabe der Submodul-Pfade voranstellen" -#: builtin/fetch.c:127 +#: builtin/fetch.c:135 msgid "default mode for recursion" msgstr "Standard-Modus für Rekursion" -#: builtin/fetch.c:129 builtin/pull.c:208 +#: builtin/fetch.c:137 builtin/pull.c:209 msgid "accept refs that update .git/shallow" msgstr "Referenzen, die .git/shallow aktualisieren, akzeptieren" -#: builtin/fetch.c:130 builtin/pull.c:210 +#: builtin/fetch.c:138 builtin/pull.c:211 msgid "refmap" msgstr "Refmap" -#: builtin/fetch.c:131 builtin/pull.c:211 +#: builtin/fetch.c:139 builtin/pull.c:212 msgid "specify fetch refmap" msgstr "Refmap für 'fetch' angeben" -#: builtin/fetch.c:387 +#: builtin/fetch.c:398 msgid "Couldn't find remote ref HEAD" msgstr "Konnte Remote-Referenz von HEAD nicht finden." -#: builtin/fetch.c:503 +#: builtin/fetch.c:514 #, c-format msgid "configuration fetch.output contains invalid value %s" msgstr "Konfiguration fetch.output enthält ungültigen Wert %s" -#: builtin/fetch.c:592 +#: builtin/fetch.c:607 #, c-format msgid "object %s not found" msgstr "Objekt %s nicht gefunden" -#: builtin/fetch.c:596 +#: builtin/fetch.c:611 msgid "[up to date]" msgstr "[aktuell]" -#: builtin/fetch.c:609 builtin/fetch.c:689 +#: builtin/fetch.c:624 builtin/fetch.c:704 msgid "[rejected]" msgstr "[zurückgewiesen]" -#: builtin/fetch.c:610 +#: builtin/fetch.c:625 msgid "can't fetch in current branch" msgstr "kann \"fetch\" im aktuellen Branch nicht ausführen" -#: builtin/fetch.c:619 +#: builtin/fetch.c:634 msgid "[tag update]" msgstr "[Tag Aktualisierung]" -#: builtin/fetch.c:620 builtin/fetch.c:653 builtin/fetch.c:669 -#: builtin/fetch.c:684 +#: builtin/fetch.c:635 builtin/fetch.c:668 builtin/fetch.c:684 +#: builtin/fetch.c:699 msgid "unable to update local ref" msgstr "kann lokale Referenz nicht aktualisieren" -#: builtin/fetch.c:639 +#: builtin/fetch.c:654 msgid "[new tag]" msgstr "[neues Tag]" -#: builtin/fetch.c:642 +#: builtin/fetch.c:657 msgid "[new branch]" msgstr "[neuer Branch]" -#: builtin/fetch.c:645 +#: builtin/fetch.c:660 msgid "[new ref]" msgstr "[neue Referenz]" -#: builtin/fetch.c:684 +#: builtin/fetch.c:699 msgid "forced update" msgstr "Aktualisierung erzwungen" -#: builtin/fetch.c:689 +#: builtin/fetch.c:704 msgid "non-fast-forward" msgstr "kein Vorspulen" -#: builtin/fetch.c:733 +#: builtin/fetch.c:749 #, c-format msgid "%s did not send all necessary objects\n" msgstr "%s hat nicht alle erforderlichen Objekte gesendet\n" -#: builtin/fetch.c:753 +#: builtin/fetch.c:769 #, c-format msgid "reject %s because shallow roots are not allowed to be updated" msgstr "" "%s wurde zurückgewiesen, da Ursprungs-Commits von Repositoriesmit " "unvollständiger Historie (shallow) nicht aktualisiert werden dürfen." -#: builtin/fetch.c:839 builtin/fetch.c:934 +#: builtin/fetch.c:856 builtin/fetch.c:952 #, c-format msgid "From %.*s\n" msgstr "Von %.*s\n" -#: builtin/fetch.c:850 +#: builtin/fetch.c:867 #, c-format msgid "" "some local refs could not be updated; try running\n" @@ -6972,57 +7595,57 @@ msgstr "" "Einige lokale Referenzen konnten nicht aktualisiert werden; versuchen Sie\n" "'git remote prune %s', um jeden älteren, widersprüchlichen Branch zu löschen." -#: builtin/fetch.c:904 +#: builtin/fetch.c:922 #, c-format msgid " (%s will become dangling)" msgstr " (%s wird unreferenziert)" -#: builtin/fetch.c:905 +#: builtin/fetch.c:923 #, c-format msgid " (%s has become dangling)" msgstr " (%s wurde unreferenziert)" -#: builtin/fetch.c:937 +#: builtin/fetch.c:955 msgid "[deleted]" msgstr "[gelöscht]" -#: builtin/fetch.c:938 builtin/remote.c:1020 +#: builtin/fetch.c:956 builtin/remote.c:1020 msgid "(none)" msgstr "(nichts)" -#: builtin/fetch.c:960 +#: builtin/fetch.c:979 #, c-format msgid "Refusing to fetch into current branch %s of non-bare repository" msgstr "" "Der \"fetch\" in den aktuellen Branch %s von einem nicht-Bare-Repository " "wurde verweigert." -#: builtin/fetch.c:979 +#: builtin/fetch.c:998 #, c-format msgid "Option \"%s\" value \"%s\" is not valid for %s" msgstr "Option \"%s\" Wert \"%s\" ist nicht gültig für %s" -#: builtin/fetch.c:982 +#: builtin/fetch.c:1001 #, c-format msgid "Option \"%s\" is ignored for %s\n" msgstr "Option \"%s\" wird ignoriert für %s\n" -#: builtin/fetch.c:1039 +#: builtin/fetch.c:1077 #, c-format msgid "Don't know how to fetch from %s" msgstr "Weiß nicht wie von %s angefordert wird." -#: builtin/fetch.c:1199 +#: builtin/fetch.c:1237 #, c-format msgid "Fetching %s\n" msgstr "Fordere an von %s\n" -#: builtin/fetch.c:1201 builtin/remote.c:96 +#: builtin/fetch.c:1239 builtin/remote.c:96 #, c-format msgid "Could not fetch %s" msgstr "Konnte nicht von %s anfordern" -#: builtin/fetch.c:1219 +#: builtin/fetch.c:1257 msgid "" "No remote repository specified. Please, specify either a URL or a\n" "remote name from which new revisions should be fetched." @@ -7031,35 +7654,43 @@ msgstr "" "oder den Namen des Remote-Repositories an, von welchem neue\n" "Commits angefordert werden sollen." -#: builtin/fetch.c:1242 +#: builtin/fetch.c:1280 msgid "You need to specify a tag name." msgstr "Sie müssen den Namen des Tags angeben." -#: builtin/fetch.c:1284 +#: builtin/fetch.c:1322 +msgid "Negative depth in --deepen is not supported" +msgstr "Negative Tiefe wird von --deepen nicht unterstützt." + +#: builtin/fetch.c:1324 +msgid "--deepen and --depth are mutually exclusive" +msgstr "--deepen und --depth schließen sich gegenseitig aus" + +#: builtin/fetch.c:1329 msgid "--depth and --unshallow cannot be used together" msgstr "" "Die Optionen --depth und --unshallow können nicht gemeinsam verwendet werden." -#: builtin/fetch.c:1286 +#: builtin/fetch.c:1331 msgid "--unshallow on a complete repository does not make sense" msgstr "" "Die Option --unshallow kann nicht in einem Repository mit unvollständiger " "Historie verwendet werden." -#: builtin/fetch.c:1306 +#: builtin/fetch.c:1353 msgid "fetch --all does not take a repository argument" msgstr "fetch --all akzeptiert kein Repository als Argument" -#: builtin/fetch.c:1308 +#: builtin/fetch.c:1355 msgid "fetch --all does not make sense with refspecs" msgstr "fetch --all kann nicht mit Refspecs verwendet werden." -#: builtin/fetch.c:1319 +#: builtin/fetch.c:1366 #, c-format msgid "No such remote or remote group: %s" msgstr "Kein Remote-Repository (einzeln oder Gruppe): %s" -#: builtin/fetch.c:1327 +#: builtin/fetch.c:1374 msgid "Fetching a group and specifying refspecs does not make sense" msgstr "" "Das Abholen einer Gruppe von Remote-Repositories kann nicht mit der Angabe\n" @@ -7072,23 +7703,23 @@ msgstr "" "git fmt-merge-msg [-m <Beschreibung>] [--log[=<n>] | --no-log] [--file " "<Datei>]" -#: builtin/fmt-merge-msg.c:667 +#: builtin/fmt-merge-msg.c:663 msgid "populate log with at most <n> entries from shortlog" msgstr "Historie mit höchstens <n> Einträgen von \"shortlog\" hinzufügen" -#: builtin/fmt-merge-msg.c:670 +#: builtin/fmt-merge-msg.c:666 msgid "alias for --log (deprecated)" msgstr "Alias für --log (veraltet)" -#: builtin/fmt-merge-msg.c:673 +#: builtin/fmt-merge-msg.c:669 msgid "text" msgstr "Text" -#: builtin/fmt-merge-msg.c:674 +#: builtin/fmt-merge-msg.c:670 msgid "use <text> as start of message" msgstr "<Text> als Beschreibungsanfang verwenden" -#: builtin/fmt-merge-msg.c:675 +#: builtin/fmt-merge-msg.c:671 msgid "file to read from" msgstr "Datei zum Einlesen" @@ -7204,7 +7835,7 @@ msgstr "Fortschrittsanzeige anzeigen" msgid "show verbose names for reachable objects" msgstr "ausführliche Namen für erreichbare Objekte anzeigen" -#: builtin/fsck.c:671 +#: builtin/fsck.c:665 msgid "Checking objects" msgstr "Prüfe Objekte" @@ -7304,236 +7935,231 @@ msgstr "grep: Fehler beim Erzeugen eines Thread: %s" msgid "invalid number of threads specified (%d) for %s" msgstr "ungültige Anzahl von Threads (%d) für %s angegeben" -#: builtin/grep.c:452 builtin/grep.c:487 +#: builtin/grep.c:453 builtin/grep.c:488 #, c-format msgid "unable to read tree (%s)" msgstr "konnte \"Tree\"-Objekt (%s) nicht lesen" -#: builtin/grep.c:502 +#: builtin/grep.c:503 #, c-format msgid "unable to grep from object of type %s" msgstr "kann \"grep\" nicht mit Objekten des Typs %s durchführen" -#: builtin/grep.c:560 +#: builtin/grep.c:561 #, c-format msgid "switch `%c' expects a numerical value" msgstr "Schalter '%c' erwartet einen numerischen Wert" -#: builtin/grep.c:577 -#, c-format -msgid "cannot open '%s'" -msgstr "kann '%s' nicht öffnen" - -#: builtin/grep.c:646 +#: builtin/grep.c:647 msgid "search in index instead of in the work tree" msgstr "im Index anstatt im Arbeitsverzeichnis suchen" -#: builtin/grep.c:648 +#: builtin/grep.c:649 msgid "find in contents not managed by git" msgstr "auch in Inhalten finden, die nicht von Git verwaltet werden" -#: builtin/grep.c:650 +#: builtin/grep.c:651 msgid "search in both tracked and untracked files" msgstr "in versionierten und unversionierten Dateien suchen" -#: builtin/grep.c:652 +#: builtin/grep.c:653 msgid "ignore files specified via '.gitignore'" msgstr "Dateien, die über '.gitignore' angegeben sind, ignorieren" -#: builtin/grep.c:655 +#: builtin/grep.c:656 msgid "show non-matching lines" msgstr "Zeilen ohne Ãœbereinstimmungen anzeigen" -#: builtin/grep.c:657 +#: builtin/grep.c:658 msgid "case insensitive matching" msgstr "Ãœbereinstimmungen unabhängig von Groß- und Kleinschreibung finden" -#: builtin/grep.c:659 +#: builtin/grep.c:660 msgid "match patterns only at word boundaries" msgstr "nur ganze Wörter suchen" -#: builtin/grep.c:661 +#: builtin/grep.c:662 msgid "process binary files as text" msgstr "binäre Dateien als Text verarbeiten" -#: builtin/grep.c:663 +#: builtin/grep.c:664 msgid "don't match patterns in binary files" msgstr "keine Muster in Binärdateien finden" -#: builtin/grep.c:666 +#: builtin/grep.c:667 msgid "process binary files with textconv filters" msgstr "binäre Dateien mit \"textconv\"-Filtern verarbeiten" -#: builtin/grep.c:668 +#: builtin/grep.c:669 msgid "descend at most <depth> levels" msgstr "höchstens <Tiefe> Ebenen durchlaufen" -#: builtin/grep.c:672 +#: builtin/grep.c:673 msgid "use extended POSIX regular expressions" msgstr "erweiterte reguläre Ausdrücke aus POSIX verwenden" -#: builtin/grep.c:675 +#: builtin/grep.c:676 msgid "use basic POSIX regular expressions (default)" msgstr "grundlegende reguläre Ausdrücke aus POSIX verwenden (Standard)" -#: builtin/grep.c:678 +#: builtin/grep.c:679 msgid "interpret patterns as fixed strings" msgstr "Muster als feste Zeichenketten interpretieren" -#: builtin/grep.c:681 +#: builtin/grep.c:682 msgid "use Perl-compatible regular expressions" msgstr "Perl-kompatible reguläre Ausdrücke verwenden" -#: builtin/grep.c:684 +#: builtin/grep.c:685 msgid "show line numbers" msgstr "Zeilennummern anzeigen" -#: builtin/grep.c:685 +#: builtin/grep.c:686 msgid "don't show filenames" msgstr "keine Dateinamen anzeigen" -#: builtin/grep.c:686 +#: builtin/grep.c:687 msgid "show filenames" msgstr "Dateinamen anzeigen" -#: builtin/grep.c:688 +#: builtin/grep.c:689 msgid "show filenames relative to top directory" msgstr "Dateinamen relativ zum Projektverzeichnis anzeigen" -#: builtin/grep.c:690 +#: builtin/grep.c:691 msgid "show only filenames instead of matching lines" msgstr "nur Dateinamen anzeigen anstatt übereinstimmende Zeilen" -#: builtin/grep.c:692 +#: builtin/grep.c:693 msgid "synonym for --files-with-matches" msgstr "Synonym für --files-with-matches" -#: builtin/grep.c:695 +#: builtin/grep.c:696 msgid "show only the names of files without match" msgstr "nur die Dateinamen ohne Ãœbereinstimmungen anzeigen" -#: builtin/grep.c:697 +#: builtin/grep.c:698 msgid "print NUL after filenames" msgstr "NUL-Zeichen nach Dateinamen ausgeben" -#: builtin/grep.c:699 +#: builtin/grep.c:700 msgid "show the number of matches instead of matching lines" msgstr "anstatt der Zeilen, die Anzahl der übereinstimmenden Zeilen anzeigen" -#: builtin/grep.c:700 +#: builtin/grep.c:701 msgid "highlight matches" msgstr "Ãœbereinstimmungen hervorheben" -#: builtin/grep.c:702 +#: builtin/grep.c:703 msgid "print empty line between matches from different files" msgstr "" "eine Leerzeile zwischen Ãœbereinstimmungen in verschiedenen Dateien ausgeben" -#: builtin/grep.c:704 +#: builtin/grep.c:705 msgid "show filename only once above matches from same file" msgstr "" "den Dateinamen nur einmal oberhalb der Ãœbereinstimmungen aus dieser Datei " "anzeigen" -#: builtin/grep.c:707 +#: builtin/grep.c:708 msgid "show <n> context lines before and after matches" msgstr "<n> Zeilen vor und nach den Ãœbereinstimmungen anzeigen" -#: builtin/grep.c:710 +#: builtin/grep.c:711 msgid "show <n> context lines before matches" msgstr "<n> Zeilen vor den Ãœbereinstimmungen anzeigen" -#: builtin/grep.c:712 +#: builtin/grep.c:713 msgid "show <n> context lines after matches" msgstr "<n> Zeilen nach den Ãœbereinstimmungen anzeigen" -#: builtin/grep.c:714 +#: builtin/grep.c:715 msgid "use <n> worker threads" msgstr "<n> Threads benutzen" -#: builtin/grep.c:715 +#: builtin/grep.c:716 msgid "shortcut for -C NUM" msgstr "Kurzform für -C NUM" -#: builtin/grep.c:718 +#: builtin/grep.c:719 msgid "show a line with the function name before matches" msgstr "eine Zeile mit dem Funktionsnamen vor Ãœbereinstimmungen anzeigen" -#: builtin/grep.c:720 +#: builtin/grep.c:721 msgid "show the surrounding function" msgstr "die umgebende Funktion anzeigen" -#: builtin/grep.c:723 +#: builtin/grep.c:724 msgid "read patterns from file" msgstr "Muster von einer Datei lesen" -#: builtin/grep.c:725 +#: builtin/grep.c:726 msgid "match <pattern>" msgstr "<Muster> finden" -#: builtin/grep.c:727 +#: builtin/grep.c:728 msgid "combine patterns specified with -e" msgstr "Muster kombinieren, die mit -e angegeben wurden" -#: builtin/grep.c:739 +#: builtin/grep.c:740 msgid "indicate hit with exit status without output" msgstr "Ãœbereinstimmungen nur durch Beendigungsstatus anzeigen" -#: builtin/grep.c:741 +#: builtin/grep.c:742 msgid "show only matches from files that match all patterns" msgstr "" "nur Ãœbereinstimmungen von Dateien anzeigen, die allen Mustern entsprechen" -#: builtin/grep.c:743 +#: builtin/grep.c:744 msgid "show parse tree for grep expression" msgstr "geparstes Verzeichnis für \"grep\"-Ausdruck anzeigen" -#: builtin/grep.c:747 +#: builtin/grep.c:748 msgid "pager" msgstr "Anzeigeprogramm" -#: builtin/grep.c:747 +#: builtin/grep.c:748 msgid "show matching files in the pager" msgstr "Dateien mit Ãœbereinstimmungen im Anzeigeprogramm anzeigen" -#: builtin/grep.c:750 +#: builtin/grep.c:751 msgid "allow calling of grep(1) (ignored by this build)" msgstr "den Aufruf von grep(1) erlauben (von dieser Programmversion ignoriert)" -#: builtin/grep.c:813 +#: builtin/grep.c:814 msgid "no pattern given." msgstr "keine Muster angegeben" -#: builtin/grep.c:845 builtin/index-pack.c:1479 +#: builtin/grep.c:846 builtin/index-pack.c:1480 #, c-format msgid "invalid number of threads specified (%d)" msgstr "ungültige Anzahl von Threads angegeben (%d)" -#: builtin/grep.c:875 +#: builtin/grep.c:876 msgid "--open-files-in-pager only works on the worktree" msgstr "" "Die Option --open-files-in-pager kann nur innerhalb des " "Arbeitsverzeichnisses verwendet werden." -#: builtin/grep.c:901 +#: builtin/grep.c:902 msgid "--cached or --untracked cannot be used with --no-index." msgstr "" "Die Optionen --cached und --untracked können nicht mit --no-index verwendet " "werden." -#: builtin/grep.c:906 +#: builtin/grep.c:907 msgid "--no-index or --untracked cannot be used with revs." msgstr "" "Die Optionen --no-index und --untracked können nicht mit Commits verwendet " "werden." -#: builtin/grep.c:909 +#: builtin/grep.c:910 msgid "--[no-]exclude-standard cannot be used for tracked contents." msgstr "" "Die Option --[no-]exclude-standard kann nicht mit versionierten Inhalten " "verwendet werden." -#: builtin/grep.c:917 +#: builtin/grep.c:918 msgid "both --cached and trees are given." msgstr "Die Option --cached kann nicht mit \"Tree\"-Objekten verwendet werden." @@ -7549,85 +8175,89 @@ msgstr "" msgid "git hash-object --stdin-paths" msgstr "git hash-object --stdin-paths" -#: builtin/hash-object.c:93 +#: builtin/hash-object.c:94 msgid "type" msgstr "Art" -#: builtin/hash-object.c:93 +#: builtin/hash-object.c:94 msgid "object type" msgstr "Art des Objektes" -#: builtin/hash-object.c:94 +#: builtin/hash-object.c:95 msgid "write the object into the object database" msgstr "das Objekt in die Objektdatenbank schreiben" -#: builtin/hash-object.c:96 +#: builtin/hash-object.c:97 msgid "read the object from stdin" msgstr "das Objekt von der Standard-Eingabe lesen" -#: builtin/hash-object.c:98 +#: builtin/hash-object.c:99 msgid "store file as is without filters" msgstr "Datei wie sie ist speichern, ohne Filter" -#: builtin/hash-object.c:99 +#: builtin/hash-object.c:100 msgid "" "just hash any random garbage to create corrupt objects for debugging Git" msgstr "" "Hash über zufällige Daten, zur Erzeugung von beschädigten Objekten zur\n" "Fehlersuche in Git, erzeugen" -#: builtin/hash-object.c:100 +#: builtin/hash-object.c:101 msgid "process file as it were from this path" msgstr "Datei verarbeiten, als ob sie von diesem Pfad wäre" -#: builtin/help.c:41 +#: builtin/help.c:42 msgid "print all available commands" msgstr "alle vorhandenen Befehle anzeigen" -#: builtin/help.c:42 +#: builtin/help.c:43 +msgid "exclude guides" +msgstr "Anleitungen ausschließen" + +#: builtin/help.c:44 msgid "print list of useful guides" msgstr "Liste von allgemein verwendeten Anleitungen anzeigen" -#: builtin/help.c:43 +#: builtin/help.c:45 msgid "show man page" msgstr "Handbuch anzeigen" -#: builtin/help.c:44 +#: builtin/help.c:46 msgid "show manual in web browser" msgstr "Handbuch in einem Webbrowser anzeigen" -#: builtin/help.c:46 +#: builtin/help.c:48 msgid "show info page" msgstr "Info-Seite anzeigen" -#: builtin/help.c:52 +#: builtin/help.c:54 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]" msgstr "git help [--all] [--guides] [--man | --web | --info] [<Befehl>]" -#: builtin/help.c:64 +#: builtin/help.c:66 #, c-format msgid "unrecognized help format '%s'" msgstr "nicht erkanntes Hilfeformat: %s" -#: builtin/help.c:91 +#: builtin/help.c:93 msgid "Failed to start emacsclient." msgstr "Konnte emacsclient nicht starten." -#: builtin/help.c:104 +#: builtin/help.c:106 msgid "Failed to parse emacsclient version." msgstr "Konnte Version des emacsclient nicht parsen." -#: builtin/help.c:112 +#: builtin/help.c:114 #, c-format msgid "emacsclient version '%d' too old (< 22)." msgstr "Version des emacsclient '%d' ist zu alt (< 22)." -#: builtin/help.c:130 builtin/help.c:151 builtin/help.c:160 builtin/help.c:168 +#: builtin/help.c:132 builtin/help.c:153 builtin/help.c:162 builtin/help.c:170 #, c-format msgid "failed to exec '%s'" msgstr "Fehler beim Ausführen von '%s'" -#: builtin/help.c:205 +#: builtin/help.c:207 #, c-format msgid "" "'%s': path for unsupported man viewer.\n" @@ -7636,7 +8266,7 @@ msgstr "" "'%s': Pfad für nicht unterstützten Handbuchbetrachter.\n" "Sie könnten stattdessen 'man.<Werkzeug>.cmd' benutzen." -#: builtin/help.c:217 +#: builtin/help.c:219 #, c-format msgid "" "'%s': cmd for supported man viewer.\n" @@ -7645,300 +8275,304 @@ msgstr "" "'%s': Programm für unterstützten Handbuchbetrachter.\n" "Sie könnten stattdessen 'man.<Werkzeug>.path' benutzen." -#: builtin/help.c:334 +#: builtin/help.c:336 #, c-format msgid "'%s': unknown man viewer." msgstr "'%s': unbekannter Handbuch-Betrachter." -#: builtin/help.c:351 +#: builtin/help.c:353 msgid "no man viewer handled the request" msgstr "kein Handbuch-Betrachter konnte mit dieser Anfrage umgehen" -#: builtin/help.c:359 +#: builtin/help.c:361 msgid "no info viewer handled the request" msgstr "kein Informations-Betrachter konnte mit dieser Anfrage umgehen" -#: builtin/help.c:401 +#: builtin/help.c:403 msgid "Defining attributes per path" msgstr "Definition von Attributen pro Pfad" -#: builtin/help.c:402 +#: builtin/help.c:404 msgid "Everyday Git With 20 Commands Or So" msgstr "Tägliche Benutzung von Git mit ungefähr 20 Befehlen" -#: builtin/help.c:403 +#: builtin/help.c:405 msgid "A Git glossary" msgstr "Ein Git-Glossar" -#: builtin/help.c:404 +#: builtin/help.c:406 msgid "Specifies intentionally untracked files to ignore" msgstr "Spezifikation von bewusst ignorierten, unversionierten Dateien" -#: builtin/help.c:405 +#: builtin/help.c:407 msgid "Defining submodule properties" msgstr "Definition von Submodul-Eigenschaften" -#: builtin/help.c:406 +#: builtin/help.c:408 msgid "Specifying revisions and ranges for Git" msgstr "Spezifikation von Commits und Bereichen für Git" -#: builtin/help.c:407 +#: builtin/help.c:409 msgid "A tutorial introduction to Git (for version 1.5.1 or newer)" msgstr "Eine einführende Anleitung zu Git (für Version 1.5.1 oder neuer)" -#: builtin/help.c:408 +#: builtin/help.c:410 msgid "An overview of recommended workflows with Git" msgstr "Eine Ãœbersicht über empfohlene Arbeitsabläufe mit Git" -#: builtin/help.c:420 +#: builtin/help.c:422 msgid "The common Git guides are:\n" msgstr "Die allgemein verwendeten Git-Anleitungen sind:\n" -#: builtin/help.c:441 builtin/help.c:458 -#, c-format -msgid "usage: %s%s" -msgstr "Verwendung: %s%s" - -#: builtin/help.c:474 +#: builtin/help.c:440 #, c-format msgid "`git %s' is aliased to `%s'" msgstr "für `git %s' wurde der Alias `%s' angelegt" -#: builtin/index-pack.c:153 +#: builtin/help.c:462 builtin/help.c:479 +#, c-format +msgid "usage: %s%s" +msgstr "Verwendung: %s%s" + +#: builtin/index-pack.c:154 #, c-format msgid "unable to open %s" msgstr "kann %s nicht öffnen" -#: builtin/index-pack.c:203 +#: builtin/index-pack.c:204 #, c-format msgid "object type mismatch at %s" msgstr "Objekt-Typen passen bei %s nicht zusammen" -#: builtin/index-pack.c:223 +#: builtin/index-pack.c:224 #, c-format msgid "did not receive expected object %s" msgstr "konnte erwartetes Objekt %s nicht empfangen" -#: builtin/index-pack.c:226 +#: builtin/index-pack.c:227 #, c-format msgid "object %s: expected type %s, found %s" msgstr "Objekt %s: erwarteter Typ %s, %s gefunden" -#: builtin/index-pack.c:268 +#: builtin/index-pack.c:269 #, c-format msgid "cannot fill %d byte" msgid_plural "cannot fill %d bytes" msgstr[0] "kann %d Byte nicht lesen" msgstr[1] "kann %d Bytes nicht lesen" -#: builtin/index-pack.c:278 +#: builtin/index-pack.c:279 msgid "early EOF" msgstr "zu frühes Dateiende" -#: builtin/index-pack.c:279 +#: builtin/index-pack.c:280 msgid "read error on input" msgstr "Fehler beim Lesen der Eingabe" -#: builtin/index-pack.c:291 +#: builtin/index-pack.c:292 msgid "used more bytes than were available" msgstr "verwendete mehr Bytes als verfügbar waren" -#: builtin/index-pack.c:298 +#: builtin/index-pack.c:299 msgid "pack too large for current definition of off_t" msgstr "Paket ist zu groß für die aktuelle Definition von off_t" -#: builtin/index-pack.c:314 +#: builtin/index-pack.c:302 builtin/unpack-objects.c:92 +msgid "pack exceeds maximum allowed size" +msgstr "Paket überschreitet die maximal erlaubte Größe" + +#: builtin/index-pack.c:317 #, c-format msgid "unable to create '%s'" msgstr "konnte '%s' nicht erstellen" -#: builtin/index-pack.c:319 +#: builtin/index-pack.c:322 #, c-format msgid "cannot open packfile '%s'" msgstr "Kann Paketdatei '%s' nicht öffnen" -#: builtin/index-pack.c:333 +#: builtin/index-pack.c:336 msgid "pack signature mismatch" msgstr "Paketsignatur stimmt nicht überein" -#: builtin/index-pack.c:335 +#: builtin/index-pack.c:338 #, c-format msgid "pack version %<PRIu32> unsupported" msgstr "Paketversion %<PRIu32> nicht unterstützt" -#: builtin/index-pack.c:353 +#: builtin/index-pack.c:356 #, c-format msgid "pack has bad object at offset %<PRIuMAX>: %s" msgstr "Paket hat ein ungültiges Objekt bei Versatz %<PRIuMAX>: %s" -#: builtin/index-pack.c:475 +#: builtin/index-pack.c:478 #, c-format msgid "inflate returned %d" msgstr "Dekomprimierung gab %d zurück" -#: builtin/index-pack.c:524 +#: builtin/index-pack.c:527 msgid "offset value overflow for delta base object" msgstr "Wert für Versatz bei Differenzobjekt übergelaufen" -#: builtin/index-pack.c:532 +#: builtin/index-pack.c:535 msgid "delta base offset is out of bound" msgstr "" "Wert für Versatz bei Differenzobjekt liegt außerhalb des gültigen Bereichs" -#: builtin/index-pack.c:540 +#: builtin/index-pack.c:543 #, c-format msgid "unknown object type %d" msgstr "Unbekannter Objekt-Typ %d" -#: builtin/index-pack.c:571 +#: builtin/index-pack.c:574 msgid "cannot pread pack file" msgstr "Kann Paketdatei %s nicht lesen" -#: builtin/index-pack.c:573 +#: builtin/index-pack.c:576 #, c-format msgid "premature end of pack file, %<PRIuMAX> byte missing" msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing" msgstr[0] "frühzeitiges Ende der Paketdatei, vermisse %<PRIuMAX> Byte" msgstr[1] "frühzeitiges Ende der Paketdatei, vermisse %<PRIuMAX> Bytes" -#: builtin/index-pack.c:599 +#: builtin/index-pack.c:602 msgid "serious inflate inconsistency" msgstr "ernsthafte Inkonsistenz nach Dekomprimierung" -#: 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 +#: builtin/index-pack.c:748 builtin/index-pack.c:754 builtin/index-pack.c:777 +#: builtin/index-pack.c:811 builtin/index-pack.c:820 #, c-format msgid "SHA1 COLLISION FOUND WITH %s !" msgstr "SHA1 KOLLISION MIT %s GEFUNDEN !" -#: builtin/index-pack.c:748 builtin/pack-objects.c:164 -#: builtin/pack-objects.c:256 +#: builtin/index-pack.c:751 builtin/pack-objects.c:166 +#: builtin/pack-objects.c:258 #, c-format msgid "unable to read %s" msgstr "kann %s nicht lesen" -#: builtin/index-pack.c:814 +#: builtin/index-pack.c:817 #, c-format msgid "cannot read existing object %s" msgstr "Kann existierendes Objekt %s nicht lesen." -#: builtin/index-pack.c:828 +#: builtin/index-pack.c:831 #, c-format msgid "invalid blob object %s" msgstr "ungültiges Blob-Objekt %s" -#: builtin/index-pack.c:842 +#: builtin/index-pack.c:845 #, c-format msgid "invalid %s" msgstr "Ungültiger Objekt-Typ %s" -#: builtin/index-pack.c:845 +#: builtin/index-pack.c:848 msgid "Error in object" msgstr "Fehler in Objekt" -#: builtin/index-pack.c:847 +#: builtin/index-pack.c:850 #, c-format msgid "Not all child objects of %s are reachable" msgstr "Nicht alle Kind-Objekte von %s sind erreichbar" -#: builtin/index-pack.c:919 builtin/index-pack.c:950 +#: builtin/index-pack.c:922 builtin/index-pack.c:953 msgid "failed to apply delta" msgstr "Konnte Dateiunterschied nicht anwenden" -#: builtin/index-pack.c:1120 +#: builtin/index-pack.c:1123 msgid "Receiving objects" msgstr "Empfange Objekte" -#: builtin/index-pack.c:1120 +#: builtin/index-pack.c:1123 msgid "Indexing objects" msgstr "Indiziere Objekte" -#: builtin/index-pack.c:1152 +#: builtin/index-pack.c:1155 msgid "pack is corrupted (SHA1 mismatch)" msgstr "Paket ist beschädigt (SHA1 unterschiedlich)" -#: builtin/index-pack.c:1157 +#: builtin/index-pack.c:1160 msgid "cannot fstat packfile" msgstr "kann Paketdatei nicht lesen" -#: builtin/index-pack.c:1160 +#: builtin/index-pack.c:1163 msgid "pack has junk at the end" msgstr "Paketende enthält nicht verwendbaren Inhalt" -#: builtin/index-pack.c:1171 +#: builtin/index-pack.c:1174 msgid "confusion beyond insanity in parse_pack_objects()" msgstr "Fehler beim Ausführen von \"parse_pack_objects()\"" -#: builtin/index-pack.c:1196 +#: builtin/index-pack.c:1197 msgid "Resolving deltas" msgstr "Löse Unterschiede auf" -#: builtin/index-pack.c:1207 +#: builtin/index-pack.c:1208 #, c-format msgid "unable to create thread: %s" msgstr "kann Thread nicht erzeugen: %s" -#: builtin/index-pack.c:1249 +#: builtin/index-pack.c:1250 msgid "confusion beyond insanity" msgstr "Fehler beim Auflösen der Unterschiede" -#: builtin/index-pack.c:1255 +#: builtin/index-pack.c:1256 #, c-format msgid "completed with %d local object" msgid_plural "completed with %d local objects" msgstr[0] "abgeschlossen mit %d lokalem Objekt" msgstr[1] "abgeschlossen mit %d lokalen Objekten" -#: builtin/index-pack.c:1267 +#: builtin/index-pack.c:1268 #, c-format msgid "Unexpected tail checksum for %s (disk corruption?)" msgstr "Unerwartete Prüfsumme für %s (Festplattenfehler?)" -#: builtin/index-pack.c:1271 +#: builtin/index-pack.c:1272 #, c-format msgid "pack has %d unresolved delta" msgid_plural "pack has %d unresolved deltas" msgstr[0] "Paket hat %d unaufgelöste Unterschied" msgstr[1] "Paket hat %d unaufgelöste Unterschiede" -#: builtin/index-pack.c:1295 +#: builtin/index-pack.c:1296 #, c-format msgid "unable to deflate appended object (%d)" msgstr "Konnte angehängtes Objekt (%d) nicht komprimieren" -#: builtin/index-pack.c:1371 +#: builtin/index-pack.c:1372 #, c-format msgid "local object %s is corrupt" msgstr "lokales Objekt %s ist beschädigt" -#: builtin/index-pack.c:1395 +#: builtin/index-pack.c:1396 msgid "error while closing pack file" msgstr "Fehler beim Schließen der Paketdatei" -#: builtin/index-pack.c:1408 +#: builtin/index-pack.c:1409 #, c-format msgid "cannot write keep file '%s'" msgstr "Kann Paketbeschreibungsdatei '%s' nicht schreiben" -#: builtin/index-pack.c:1416 +#: builtin/index-pack.c:1417 #, c-format msgid "cannot close written keep file '%s'" msgstr "Kann eben erstellte Paketbeschreibungsdatei '%s' nicht schließen" -#: builtin/index-pack.c:1429 +#: builtin/index-pack.c:1430 msgid "cannot store pack file" msgstr "Kann Paketdatei nicht speichern" -#: builtin/index-pack.c:1440 +#: builtin/index-pack.c:1441 msgid "cannot store index file" msgstr "Kann Indexdatei nicht speichern" -#: builtin/index-pack.c:1473 +#: builtin/index-pack.c:1474 #, c-format msgid "bad pack.indexversion=%<PRIu32>" msgstr "\"pack.indexversion=%<PRIu32>\" ist ungültig" -#: builtin/index-pack.c:1483 builtin/index-pack.c:1681 +#: builtin/index-pack.c:1484 builtin/index-pack.c:1681 #, c-format msgid "no threads support, ignoring %s" msgstr "keine Unterstützung von Threads, '%s' wird ignoriert" @@ -7978,95 +8612,95 @@ msgstr "Name der Paketdatei '%s' endet nicht mit '.pack'" msgid "bad %s" msgstr "%s ist ungültig" -#: builtin/index-pack.c:1730 +#: builtin/index-pack.c:1732 msgid "--fix-thin cannot be used without --stdin" msgstr "Die Option --fix-thin kann nicht ohne --stdin verwendet werden." -#: builtin/index-pack.c:1738 +#: builtin/index-pack.c:1740 msgid "--verify with no packfile name given" msgstr "Die Option --verify wurde ohne Namen der Paketdatei angegeben." -#: builtin/init-db.c:55 +#: builtin/init-db.c:54 #, c-format msgid "cannot stat '%s'" msgstr "Kann '%s' nicht lesen" -#: builtin/init-db.c:61 +#: builtin/init-db.c:60 #, c-format msgid "cannot stat template '%s'" msgstr "kann Vorlage '%s' nicht lesen" -#: builtin/init-db.c:66 +#: builtin/init-db.c:65 #, c-format msgid "cannot opendir '%s'" msgstr "kann Verzeichnis '%s' nicht öffnen" -#: builtin/init-db.c:77 +#: builtin/init-db.c:76 #, c-format msgid "cannot readlink '%s'" msgstr "kann Verweis '%s' nicht lesen" -#: builtin/init-db.c:79 +#: builtin/init-db.c:78 #, c-format msgid "cannot symlink '%s' '%s'" msgstr "kann symbolische Verknüpfung '%s' auf '%s' nicht erstellen" -#: builtin/init-db.c:85 +#: builtin/init-db.c:84 #, c-format msgid "cannot copy '%s' to '%s'" msgstr "kann '%s' nicht nach '%s' kopieren" -#: builtin/init-db.c:89 +#: builtin/init-db.c:88 #, c-format msgid "ignoring template %s" msgstr "ignoriere Vorlage %s" -#: builtin/init-db.c:120 +#: builtin/init-db.c:119 #, c-format msgid "templates not found %s" msgstr "keine Vorlagen in '%s' gefunden" -#: builtin/init-db.c:135 +#: builtin/init-db.c:134 #, c-format msgid "not copying templates from '%s': %s" msgstr "kopiere keine Vorlagen von '%s': %s" -#: builtin/init-db.c:312 builtin/init-db.c:315 -#, c-format -msgid "%s already exists" -msgstr "%s existiert bereits" - -#: builtin/init-db.c:344 +#: builtin/init-db.c:327 #, c-format msgid "unable to handle file type %d" msgstr "kann nicht mit Dateityp %d umgehen" -#: builtin/init-db.c:347 +#: builtin/init-db.c:330 #, c-format msgid "unable to move %s to %s" msgstr "Konnte %s nicht nach %s verschieben" -#: builtin/init-db.c:402 +#: builtin/init-db.c:347 builtin/init-db.c:350 +#, c-format +msgid "%s already exists" +msgstr "%s existiert bereits" + +#: builtin/init-db.c:403 #, c-format msgid "Reinitialized existing shared Git repository in %s%s\n" msgstr "Bestehendes verteiltes Git-Repository in %s%s neuinitialisiert\n" -#: builtin/init-db.c:403 +#: builtin/init-db.c:404 #, c-format msgid "Reinitialized existing Git repository in %s%s\n" msgstr "Bestehendes Git-Repository in %s%s neuinitialisiert\n" -#: builtin/init-db.c:407 +#: builtin/init-db.c:408 #, c-format msgid "Initialized empty shared Git repository in %s%s\n" msgstr "Leeres verteiltes Git-Repository in %s%s initialisiert\n" -#: builtin/init-db.c:408 +#: builtin/init-db.c:409 #, c-format msgid "Initialized empty Git repository in %s%s\n" msgstr "Leeres Git-Repository in %s%s initialisiert\n" -#: builtin/init-db.c:455 +#: builtin/init-db.c:457 msgid "" "git init [-q | --quiet] [--bare] [--template=<template-directory>] [--" "shared[=<permissions>]] [<directory>]" @@ -8074,25 +8708,25 @@ msgstr "" "git init [-q | --quiet] [--bare] [--template=<Vorlagenverzeichnis>] [--" "shared[=<Berechtigungen>]] [<Verzeichnis>]" -#: builtin/init-db.c:478 +#: builtin/init-db.c:480 msgid "permissions" msgstr "Berechtigungen" -#: builtin/init-db.c:479 +#: builtin/init-db.c:481 msgid "specify that the git repository is to be shared amongst several users" msgstr "angeben, dass das Git-Repository mit mehreren Benutzern geteilt wird" -#: builtin/init-db.c:513 builtin/init-db.c:518 +#: builtin/init-db.c:515 builtin/init-db.c:520 #, c-format msgid "cannot mkdir %s" msgstr "kann Verzeichnis %s nicht erstellen" -#: builtin/init-db.c:522 +#: builtin/init-db.c:524 #, c-format msgid "cannot chdir to %s" msgstr "kann nicht in Verzeichnis %s wechseln" -#: builtin/init-db.c:543 +#: builtin/init-db.c:545 #, c-format msgid "" "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-" @@ -8101,7 +8735,7 @@ msgstr "" "%s (oder --work-tree=<Verzeichnis>) nicht erlaubt ohne Spezifizierung von %s " "(oder --git-dir=<Verzeichnis>)" -#: builtin/init-db.c:571 +#: builtin/init-db.c:573 #, c-format msgid "Cannot access work tree '%s'" msgstr "Kann nicht auf Arbeitsverzeichnis '%s' zugreifen." @@ -8212,37 +8846,34 @@ msgstr "Kein Commit-Bereich." msgid "Cover letter needs email format" msgstr "Anschreiben benötigt E-Mail-Format" -#: builtin/log.c:1064 +#: builtin/log.c:1063 #, c-format msgid "insane in-reply-to: %s" msgstr "ungültiges in-reply-to: %s" -#: builtin/log.c:1092 +#: builtin/log.c:1091 msgid "git format-patch [<options>] [<since> | <revision-range>]" msgstr "git format-patch [<Optionen>] [<seit> | <Commitbereich>]" -#: builtin/log.c:1137 +#: builtin/log.c:1141 msgid "Two output directories?" msgstr "Zwei Ausgabeverzeichnisse?" -#: builtin/log.c:1244 builtin/log.c:1883 builtin/log.c:1885 builtin/log.c:1897 +#: builtin/log.c:1248 builtin/log.c:1891 builtin/log.c:1893 builtin/log.c:1905 #, c-format msgid "Unknown commit %s" msgstr "Unbekannter Commit %s" -#: 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 +#: builtin/log.c:1258 builtin/notes.c:884 builtin/tag.c:455 #, c-format msgid "Failed to resolve '%s' as a valid ref." msgstr "Konnte '%s' nicht als gültige Referenz auflösen." -#: builtin/log.c:1259 +#: builtin/log.c:1263 msgid "Could not find exact merge base." msgstr "Konnte keine exakte Merge-Basis finden." -#: builtin/log.c:1263 +#: builtin/log.c:1267 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" @@ -8253,212 +8884,216 @@ msgstr "" "'git branch --set-upstream-to', um einem Remote-Branch zu folgen.\n" "Oder geben Sie den Basis-Commit mit '--base=<Basis-Commit-Id>' manuell an." -#: builtin/log.c:1283 +#: builtin/log.c:1287 msgid "Failed to find exact merge base" msgstr "Fehler beim Finden einer exakten Merge-Basis." -#: builtin/log.c:1294 +#: builtin/log.c:1298 msgid "base commit should be the ancestor of revision list" msgstr "Basis-Commit sollte der Vorgänger der Revisionsliste sein." -#: builtin/log.c:1298 +#: builtin/log.c:1302 msgid "base commit shouldn't be in revision list" msgstr "Basis-Commit sollte nicht in der Revisionsliste enthalten sein." -#: builtin/log.c:1347 +#: builtin/log.c:1351 msgid "cannot get patch id" msgstr "kann Patch-Id nicht lesen" -#: builtin/log.c:1404 +#: builtin/log.c:1408 msgid "use [PATCH n/m] even with a single patch" msgstr "[PATCH n/m] auch mit einzelnem Patch verwenden" -#: builtin/log.c:1407 +#: builtin/log.c:1411 msgid "use [PATCH] even with multiple patches" msgstr "[PATCH] auch mit mehreren Patches verwenden" -#: builtin/log.c:1411 +#: builtin/log.c:1415 msgid "print patches to standard out" msgstr "Ausgabe der Patches in Standard-Ausgabe" -#: builtin/log.c:1413 +#: builtin/log.c:1417 msgid "generate a cover letter" msgstr "ein Deckblatt erzeugen" -#: builtin/log.c:1415 +#: builtin/log.c:1419 msgid "use simple number sequence for output file names" msgstr "einfache Nummernfolge für die Namen der Ausgabedateien verwenden" -#: builtin/log.c:1416 +#: builtin/log.c:1420 msgid "sfx" msgstr "Dateiendung" -#: builtin/log.c:1417 +#: builtin/log.c:1421 msgid "use <sfx> instead of '.patch'" msgstr "<Dateiendung> anstatt '.patch' verwenden" -#: builtin/log.c:1419 +#: builtin/log.c:1423 msgid "start numbering patches at <n> instead of 1" msgstr "die Nummerierung der Patches bei <n> anstatt bei 1 beginnen" -#: builtin/log.c:1421 +#: builtin/log.c:1425 msgid "mark the series as Nth re-roll" msgstr "die Serie als n-te Fassung kennzeichnen" -#: builtin/log.c:1423 +#: builtin/log.c:1427 +msgid "Use [RFC PATCH] instead of [PATCH]" +msgstr "[RFC PATCH] anstatt [PATCH] verwenden" + +#: builtin/log.c:1430 msgid "Use [<prefix>] instead of [PATCH]" msgstr "[<Präfix>] anstatt [PATCH] verwenden" -#: builtin/log.c:1426 +#: builtin/log.c:1433 msgid "store resulting files in <dir>" msgstr "erzeugte Dateien in <Verzeichnis> speichern" -#: builtin/log.c:1429 +#: builtin/log.c:1436 msgid "don't strip/add [PATCH]" msgstr "[PATCH] nicht entfernen/hinzufügen" -#: builtin/log.c:1432 +#: builtin/log.c:1439 msgid "don't output binary diffs" msgstr "keine binären Unterschiede ausgeben" -#: builtin/log.c:1434 +#: builtin/log.c:1441 msgid "output all-zero hash in From header" msgstr "Hash mit Nullen in \"From\"-Header ausgeben" -#: builtin/log.c:1436 +#: builtin/log.c:1443 msgid "don't include a patch matching a commit upstream" msgstr "" "keine Patches einschließen, die einem Commit im Upstream-Branch entsprechen" -#: builtin/log.c:1438 +#: builtin/log.c:1445 msgid "show patch format instead of default (patch + stat)" msgstr "Patchformat anstatt des Standards anzeigen (Patch + Zusammenfassung)" -#: builtin/log.c:1440 +#: builtin/log.c:1447 msgid "Messaging" msgstr "E-Mail-Einstellungen" -#: builtin/log.c:1441 +#: builtin/log.c:1448 msgid "header" msgstr "Header" -#: builtin/log.c:1442 +#: builtin/log.c:1449 msgid "add email header" msgstr "E-Mail-Header hinzufügen" -#: builtin/log.c:1443 builtin/log.c:1445 +#: builtin/log.c:1450 builtin/log.c:1452 msgid "email" msgstr "E-Mail" -#: builtin/log.c:1443 +#: builtin/log.c:1450 msgid "add To: header" msgstr "\"To:\"-Header hinzufügen" -#: builtin/log.c:1445 +#: builtin/log.c:1452 msgid "add Cc: header" msgstr "\"Cc:\"-Header hinzufügen" -#: builtin/log.c:1447 +#: builtin/log.c:1454 msgid "ident" msgstr "Ident" -#: builtin/log.c:1448 +#: builtin/log.c:1455 msgid "set From address to <ident> (or committer ident if absent)" msgstr "" "\"From\"-Adresse auf <Ident> setzen (oder Ident des Commit-Erstellers, wenn " "fehlend)" -#: builtin/log.c:1450 +#: builtin/log.c:1457 msgid "message-id" msgstr "message-id" -#: builtin/log.c:1451 +#: builtin/log.c:1458 msgid "make first mail a reply to <message-id>" msgstr "aus erster E-Mail eine Antwort zu <message-id> machen" -#: builtin/log.c:1452 builtin/log.c:1455 +#: builtin/log.c:1459 builtin/log.c:1462 msgid "boundary" msgstr "Grenze" -#: builtin/log.c:1453 +#: builtin/log.c:1460 msgid "attach the patch" msgstr "den Patch anhängen" -#: builtin/log.c:1456 +#: builtin/log.c:1463 msgid "inline the patch" msgstr "den Patch direkt in die Nachricht einfügen" -#: builtin/log.c:1460 +#: builtin/log.c:1467 msgid "enable message threading, styles: shallow, deep" msgstr "Nachrichtenverkettung aktivieren, Stile: shallow, deep" -#: builtin/log.c:1462 +#: builtin/log.c:1469 msgid "signature" msgstr "Signatur" -#: builtin/log.c:1463 +#: builtin/log.c:1470 msgid "add a signature" msgstr "eine Signatur hinzufügen" -#: builtin/log.c:1464 +#: builtin/log.c:1471 msgid "base-commit" msgstr "Basis-Commit" -#: builtin/log.c:1465 +#: builtin/log.c:1472 msgid "add prerequisite tree info to the patch series" msgstr "erforderliche Revisions-Informationen der Patch-Serie hinzufügen" -#: builtin/log.c:1467 +#: builtin/log.c:1474 msgid "add a signature from a file" msgstr "eine Signatur aus einer Datei hinzufügen" -#: builtin/log.c:1468 +#: builtin/log.c:1475 msgid "don't print the patch filenames" msgstr "keine Dateinamen der Patches anzeigen" -#: builtin/log.c:1558 +#: builtin/log.c:1565 msgid "-n and -k are mutually exclusive." msgstr "Die Optionen -n und -k schließen sich gegenseitig aus." -#: builtin/log.c:1560 -msgid "--subject-prefix and -k are mutually exclusive." -msgstr "Die Optionen --subject-prefix und -k schließen sich gegenseitig aus." +#: builtin/log.c:1567 +msgid "--subject-prefix/--rfc and -k are mutually exclusive." +msgstr "--subject-prefix/--rfc und -k schließen sich gegenseitig aus." -#: builtin/log.c:1568 +#: builtin/log.c:1575 msgid "--name-only does not make sense" msgstr "Die Option --name-only kann nicht verwendet werden." -#: builtin/log.c:1570 +#: builtin/log.c:1577 msgid "--name-status does not make sense" msgstr "Die Option --name-status kann nicht verwendet werden." -#: builtin/log.c:1572 +#: builtin/log.c:1579 msgid "--check does not make sense" msgstr "Die Option --check kann nicht verwendet werden." -#: builtin/log.c:1602 +#: builtin/log.c:1609 msgid "standard output, or directory, which one?" msgstr "Standard-Ausgabe oder Verzeichnis, welches von beidem?" -#: builtin/log.c:1604 +#: builtin/log.c:1611 #, c-format msgid "Could not create directory '%s'" msgstr "Konnte Verzeichnis '%s' nicht erstellen." -#: builtin/log.c:1698 +#: builtin/log.c:1705 #, c-format msgid "unable to read signature file '%s'" msgstr "Konnte Signatur-Datei '%s' nicht lesen" -#: builtin/log.c:1769 +#: builtin/log.c:1777 msgid "Failed to create output files" msgstr "Fehler beim Erstellen der Ausgabedateien." -#: builtin/log.c:1818 +#: builtin/log.c:1826 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]" msgstr "git cherry [-v] [<Upstream> [<Branch> [<Limit>]]]" -#: builtin/log.c:1872 +#: builtin/log.c:1880 #, c-format msgid "" "Could not find a tracked remote branch, please specify <upstream> manually.\n" @@ -8466,104 +9101,108 @@ msgstr "" "Konnte gefolgten Remote-Branch nicht finden, bitte geben Sie <Upstream> " "manuell an.\n" -#: builtin/ls-files.c:379 +#: builtin/ls-files.c:458 msgid "git ls-files [<options>] [<file>...]" msgstr "git ls-files [<Optionen>] [<Datei>...]" -#: builtin/ls-files.c:428 +#: builtin/ls-files.c:507 msgid "identify the file status with tags" msgstr "den Dateistatus mit Tags anzeigen" -#: builtin/ls-files.c:430 +#: builtin/ls-files.c:509 msgid "use lowercase letters for 'assume unchanged' files" msgstr "" "Kleinbuchstaben für Dateien mit 'assume unchanged' Markierung verwenden" -#: builtin/ls-files.c:432 +#: builtin/ls-files.c:511 msgid "show cached files in the output (default)" msgstr "zwischengespeicherte Dateien in der Ausgabe anzeigen (Standard)" -#: builtin/ls-files.c:434 +#: builtin/ls-files.c:513 msgid "show deleted files in the output" msgstr "entfernte Dateien in der Ausgabe anzeigen" -#: builtin/ls-files.c:436 +#: builtin/ls-files.c:515 msgid "show modified files in the output" msgstr "geänderte Dateien in der Ausgabe anzeigen" -#: builtin/ls-files.c:438 +#: builtin/ls-files.c:517 msgid "show other files in the output" msgstr "sonstige Dateien in der Ausgabe anzeigen" -#: builtin/ls-files.c:440 +#: builtin/ls-files.c:519 msgid "show ignored files in the output" msgstr "ignorierte Dateien in der Ausgabe anzeigen" -#: builtin/ls-files.c:443 +#: builtin/ls-files.c:522 msgid "show staged contents' object name in the output" msgstr "" "Objektnamen von Inhalten, die zum Commit vorgemerkt sind, in der Ausgabe " "anzeigen" -#: builtin/ls-files.c:445 +#: builtin/ls-files.c:524 msgid "show files on the filesystem that need to be removed" msgstr "Dateien im Dateisystem, die gelöscht werden müssen, anzeigen" -#: builtin/ls-files.c:447 +#: builtin/ls-files.c:526 msgid "show 'other' directories' names only" msgstr "nur Namen von 'sonstigen' Verzeichnissen anzeigen" -#: builtin/ls-files.c:449 +#: builtin/ls-files.c:528 msgid "show line endings of files" msgstr "Zeilenenden von Dateien anzeigen" -#: builtin/ls-files.c:451 +#: builtin/ls-files.c:530 msgid "don't show empty directories" msgstr "keine leeren Verzeichnisse anzeigen" -#: builtin/ls-files.c:454 +#: builtin/ls-files.c:533 msgid "show unmerged files in the output" msgstr "nicht zusammengeführte Dateien in der Ausgabe anzeigen" -#: builtin/ls-files.c:456 +#: builtin/ls-files.c:535 msgid "show resolve-undo information" msgstr "'resolve-undo' Informationen anzeigen" -#: builtin/ls-files.c:458 +#: builtin/ls-files.c:537 msgid "skip files matching pattern" msgstr "Dateien auslassen, die einem Muster entsprechen" -#: builtin/ls-files.c:461 +#: builtin/ls-files.c:540 msgid "exclude patterns are read from <file>" msgstr "Muster, gelesen von <Datei>, ausschließen" -#: builtin/ls-files.c:464 +#: builtin/ls-files.c:543 msgid "read additional per-directory exclude patterns in <file>" msgstr "zusätzliche pro-Verzeichnis Auschlussmuster aus <Datei> auslesen" -#: builtin/ls-files.c:466 +#: builtin/ls-files.c:545 msgid "add the standard git exclusions" msgstr "die standardmäßigen Git-Ausschlüsse hinzufügen" -#: builtin/ls-files.c:469 +#: builtin/ls-files.c:548 msgid "make the output relative to the project top directory" msgstr "Ausgabe relativ zum Projektverzeichnis" -#: builtin/ls-files.c:472 +#: builtin/ls-files.c:551 +msgid "recurse through submodules" +msgstr "Rekursion in Submodulen durchführen" + +#: builtin/ls-files.c:553 msgid "if any <file> is not in the index, treat this as an error" msgstr "als Fehler behandeln, wenn sich eine <Datei> nicht im Index befindet" -#: builtin/ls-files.c:473 +#: builtin/ls-files.c:554 msgid "tree-ish" msgstr "Commit-Referenz" -#: builtin/ls-files.c:474 +#: builtin/ls-files.c:555 msgid "pretend that paths removed since <tree-ish> are still present" msgstr "" "vorgeben, dass Pfade, die seit <Commit-Referenz> gelöscht wurden, immer noch " "vorhanden sind" -#: builtin/ls-files.c:476 +#: builtin/ls-files.c:557 msgid "show debugging data" msgstr "Ausgaben zur Fehlersuche anzeigen" @@ -8684,33 +9323,33 @@ msgstr "Verfügbare Strategien sind:" msgid "Available custom strategies are:" msgstr "Verfügbare benutzerdefinierte Strategien sind:" -#: builtin/merge.c:195 builtin/pull.c:126 +#: builtin/merge.c:195 builtin/pull.c:127 msgid "do not show a diffstat at the end of the merge" msgstr "keine Zusammenfassung der Unterschiede am Schluss des Merges anzeigen" -#: builtin/merge.c:198 builtin/pull.c:129 +#: builtin/merge.c:198 builtin/pull.c:130 msgid "show a diffstat at the end of the merge" msgstr "eine Zusammenfassung der Unterschiede am Schluss des Merges anzeigen" -#: builtin/merge.c:199 builtin/pull.c:132 +#: builtin/merge.c:199 builtin/pull.c:133 msgid "(synonym to --stat)" msgstr "(Synonym für --stat)" -#: builtin/merge.c:201 builtin/pull.c:135 +#: builtin/merge.c:201 builtin/pull.c:136 msgid "add (at most <n>) entries from shortlog to merge commit message" msgstr "" "(höchstens <n>) Einträge von \"shortlog\" zur Beschreibung des Merge-Commits " "hinzufügen" -#: builtin/merge.c:204 builtin/pull.c:138 +#: builtin/merge.c:204 builtin/pull.c:139 msgid "create a single commit instead of doing a merge" msgstr "einen einzelnen Commit anstatt eines Merges erzeugen" -#: builtin/merge.c:206 builtin/pull.c:141 +#: builtin/merge.c:206 builtin/pull.c:142 msgid "perform a commit if the merge succeeds (default)" msgstr "einen Commit durchführen, wenn der Merge erfolgreich war (Standard)" -#: builtin/merge.c:208 builtin/pull.c:144 +#: builtin/merge.c:208 builtin/pull.c:145 msgid "edit message before committing" msgstr "Bearbeitung der Beschreibung vor dem Commit" @@ -8718,28 +9357,28 @@ msgstr "Bearbeitung der Beschreibung vor dem Commit" msgid "allow fast-forward (default)" msgstr "Vorspulen erlauben (Standard)" -#: builtin/merge.c:211 builtin/pull.c:150 +#: builtin/merge.c:211 builtin/pull.c:151 msgid "abort if fast-forward is not possible" msgstr "abbrechen, wenn kein Vorspulen möglich ist" -#: builtin/merge.c:215 builtin/pull.c:153 +#: builtin/merge.c:215 builtin/pull.c:154 msgid "verify that the named commit has a valid GPG signature" msgstr "den genannten Commit auf eine gültige GPG-Signatur überprüfen" -#: builtin/merge.c:216 builtin/notes.c:772 builtin/pull.c:157 +#: builtin/merge.c:216 builtin/notes.c:774 builtin/pull.c:158 #: builtin/revert.c:89 msgid "strategy" msgstr "Strategie" -#: builtin/merge.c:217 builtin/pull.c:158 +#: builtin/merge.c:217 builtin/pull.c:159 msgid "merge strategy to use" msgstr "zu verwendende Merge-Strategie" -#: builtin/merge.c:218 builtin/pull.c:161 +#: builtin/merge.c:218 builtin/pull.c:162 msgid "option=value" msgstr "Option=Wert" -#: builtin/merge.c:219 builtin/pull.c:162 +#: builtin/merge.c:219 builtin/pull.c:163 msgid "option for selected merge strategy" msgstr "Option für ausgewählte Merge-Strategie" @@ -8752,7 +9391,7 @@ msgstr "" msgid "abort the current in-progress merge" msgstr "den sich im Gange befindlichen Merge abbrechen" -#: builtin/merge.c:227 builtin/pull.c:169 +#: builtin/merge.c:227 builtin/pull.c:170 msgid "allow merging unrelated histories" msgstr "erlaube das Zusammenführen von nicht zusammenhängenden Historien" @@ -8979,55 +9618,55 @@ msgstr "Verweigere den Merge von nicht zusammenhängenden Historien." msgid "Already up-to-date." msgstr "Bereits aktuell." -#: builtin/merge.c:1382 +#: builtin/merge.c:1377 #, c-format msgid "Updating %s..%s\n" msgstr "Aktualisiere %s..%s\n" -#: builtin/merge.c:1419 +#: builtin/merge.c:1418 #, c-format msgid "Trying really trivial in-index merge...\n" msgstr "Probiere wirklich trivialen \"in-index\"-Merge ...\n" -#: builtin/merge.c:1426 +#: builtin/merge.c:1425 #, c-format msgid "Nope.\n" msgstr "Nein.\n" -#: builtin/merge.c:1451 +#: builtin/merge.c:1450 msgid "Already up-to-date. Yeeah!" msgstr "Bereits aktuell." -#: builtin/merge.c:1457 +#: builtin/merge.c:1456 msgid "Not possible to fast-forward, aborting." msgstr "Vorspulen nicht möglich, breche ab." -#: builtin/merge.c:1480 builtin/merge.c:1559 +#: builtin/merge.c:1479 builtin/merge.c:1558 #, c-format msgid "Rewinding the tree to pristine...\n" msgstr "Rücklauf des Verzeichnisses bis zum Ursprung ...\n" -#: builtin/merge.c:1484 +#: builtin/merge.c:1483 #, c-format msgid "Trying merge strategy %s...\n" msgstr "Probiere Merge-Strategie %s ...\n" -#: builtin/merge.c:1550 +#: builtin/merge.c:1549 #, c-format msgid "No merge strategy handled the merge.\n" msgstr "Keine Merge-Strategie behandelt diesen Merge.\n" -#: builtin/merge.c:1552 +#: builtin/merge.c:1551 #, c-format msgid "Merge with strategy %s failed.\n" msgstr "Merge mit Strategie %s fehlgeschlagen.\n" -#: builtin/merge.c:1561 +#: builtin/merge.c:1560 #, c-format msgid "Using the %s to prepare resolving by hand.\n" msgstr "Benutzen Sie \"%s\", um die Auflösung per Hand vorzubereiten.\n" -#: builtin/merge.c:1573 +#: builtin/merge.c:1572 #, c-format msgid "Automatic merge went well; stopped before committing as requested\n" msgstr "" @@ -9053,23 +9692,23 @@ msgstr "git merge-base --is-ancestor <Commit> <Commit>" msgid "git merge-base --fork-point <ref> [<commit>]" msgstr "git merge-base --fork-point <Referenz> [<Commit>]" -#: builtin/merge-base.c:214 +#: builtin/merge-base.c:217 msgid "output all common ancestors" msgstr "Ausgabe aller gemeinsamen Vorgänger-Commits" -#: builtin/merge-base.c:216 +#: builtin/merge-base.c:219 msgid "find ancestors for a single n-way merge" msgstr "Vorgänger-Commits für einen einzelnen n-Wege-Merge finden" -#: builtin/merge-base.c:218 +#: builtin/merge-base.c:221 msgid "list revs not reachable from others" msgstr "Commits auflisten, die nicht durch Andere erreichbar sind" -#: builtin/merge-base.c:220 +#: builtin/merge-base.c:223 msgid "is the first one ancestor of the other?" msgstr "ist der Erste ein Vorgänger-Commit von dem Anderen?" -#: builtin/merge-base.c:222 +#: builtin/merge-base.c:225 msgid "find where <commit> forked from reflog of <ref>" msgstr "<Commit> finden, von wo Reflog von <Referenz> abgespalten wurde" @@ -9113,6 +9752,37 @@ msgstr "keine Warnung bei Konflikten" msgid "set labels for file1/orig-file/file2" msgstr "Beschriftung für Datei1/orig-Datei/Datei2 setzen" +#: builtin/merge-recursive.c:45 +#, c-format +msgid "unknown option %s" +msgstr "unbekannte Option: %s" + +#: builtin/merge-recursive.c:51 +#, c-format +msgid "could not parse object '%s'" +msgstr "Konnte Objekt '%s' nicht parsen." + +#: builtin/merge-recursive.c:55 +#, c-format +msgid "cannot handle more than %d base. Ignoring %s." +msgid_plural "cannot handle more than %d bases. Ignoring %s." +msgstr[0] "kann nicht mit mehr als %d Merge-Basis umgehen. Ignoriere %s." +msgstr[1] "kann nicht mit mehr als %d Merge-Basen umgehen. Ignoriere %s." + +#: builtin/merge-recursive.c:63 +msgid "not handling anything other than two heads merge." +msgstr "Es wird nur der Merge von zwei Branches behandelt." + +#: builtin/merge-recursive.c:69 builtin/merge-recursive.c:71 +#, c-format +msgid "could not resolve ref '%s'" +msgstr "Konnte Referenz '%s' nicht auflösen" + +#: builtin/merge-recursive.c:77 +#, c-format +msgid "Merging %s with %s\n" +msgstr "Führe %s mit %s zusammen\n" + #: builtin/mktree.c:65 msgid "git mktree [-z] [--missing] [--batch]" msgstr "git mktree [-z] [--missing] [--batch]" @@ -9224,43 +9894,43 @@ msgstr "Benenne %s nach %s um\n" msgid "renaming '%s' failed" msgstr "Umbenennung von '%s' fehlgeschlagen" -#: builtin/name-rev.c:258 +#: builtin/name-rev.c:257 msgid "git name-rev [<options>] <commit>..." msgstr "git name-rev [<Optionen>] <Commit>..." -#: builtin/name-rev.c:259 +#: builtin/name-rev.c:258 msgid "git name-rev [<options>] --all" msgstr "git name-rev [<Optionen>] --all" -#: builtin/name-rev.c:260 +#: builtin/name-rev.c:259 msgid "git name-rev [<options>] --stdin" msgstr "git name-rev [<Optionen>] --stdin" -#: builtin/name-rev.c:312 +#: builtin/name-rev.c:311 msgid "print only names (no SHA-1)" msgstr "nur Namen anzeigen (keine SHA-1)" -#: builtin/name-rev.c:313 +#: builtin/name-rev.c:312 msgid "only use tags to name the commits" msgstr "nur Tags verwenden, um die Commits zu benennen" -#: builtin/name-rev.c:315 +#: builtin/name-rev.c:314 msgid "only use refs matching <pattern>" msgstr "nur Referenzen verwenden die <Muster> entsprechen" -#: builtin/name-rev.c:317 +#: builtin/name-rev.c:316 msgid "list all commits reachable from all refs" msgstr "alle Commits auflisten, die von allen Referenzen erreichbar sind" -#: builtin/name-rev.c:318 +#: builtin/name-rev.c:317 msgid "read from stdin" msgstr "von der Standard-Eingabe lesen" -#: builtin/name-rev.c:319 +#: builtin/name-rev.c:318 msgid "allow to print `undefined` names (default)" msgstr "Ausgabe von `undefinierten` Namen erlauben (Standard)" -#: builtin/name-rev.c:325 +#: builtin/name-rev.c:324 msgid "dereference tags in the input (internal use)" msgstr "Tags in der Eingabe dereferenzieren (interne Verwendung)" @@ -9395,9 +10065,8 @@ msgid "failed to finish 'show' for object '%s'" msgstr "konnte 'show' für Objekt '%s' nicht abschließen" #: builtin/notes.c:194 -msgid "Please supply the note contents using either -m or -F option" -msgstr "" -"Bitte liefern Sie den Notiz-Inhalt unter Verwendung der Option -m oder -F." +msgid "please supply the note contents using either -m or -F option" +msgstr "Bitte liefern Sie die Notiz-Inhalte unter Verwendung der Option -m oder -F." #: builtin/notes.c:203 msgid "unable to write note object" @@ -9405,8 +10074,8 @@ msgstr "Konnte Notiz-Objekt nicht schreiben" #: builtin/notes.c:205 #, c-format -msgid "The note contents have been left in %s" -msgstr "Die Notiz-Inhalte wurden in %s belassen" +msgid "the note contents have been left in %s" +msgstr "Die Notiz-Inhalte wurden in %s belassen." #: builtin/notes.c:233 builtin/tag.c:439 #, c-format @@ -9418,52 +10087,76 @@ msgstr "kann '%s' nicht lesen" msgid "could not open or read '%s'" msgstr "konnte '%s' nicht öffnen oder lesen" +#: builtin/notes.c:254 builtin/notes.c:305 builtin/notes.c:307 +#: builtin/notes.c:372 builtin/notes.c:427 builtin/notes.c:513 +#: builtin/notes.c:518 builtin/notes.c:596 builtin/notes.c:659 +#, c-format +msgid "failed to resolve '%s' as a valid ref." +msgstr "Konnte '%s' nicht als gültige Referenz auflösen." + #: builtin/notes.c:257 #, c-format -msgid "Failed to read object '%s'." +msgid "failed to read object '%s'." msgstr "Fehler beim Lesen des Objektes '%s'." #: builtin/notes.c:261 #, c-format -msgid "Cannot read note data from non-blob object '%s'." +msgid "cannot read note data from non-blob object '%s'." msgstr "Kann Notiz-Daten nicht von Nicht-Blob Objekt '%s' lesen." -#: 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 +#: builtin/notes.c:301 +#, c-format +msgid "malformed input line: '%s'." +msgstr "Fehlerhafte Eingabezeile: '%s'." + +#: builtin/notes.c:316 +#, c-format +msgid "failed to copy notes from '%s' to '%s'" +msgstr "Fehler beim Kopieren der Notizen von '%s' nach '%s'" + +#. TRANSLATORS: the first %s will be replaced by a +#. git notes command: 'add', 'merge', 'remove', etc. +#: builtin/notes.c:345 +#, c-format +msgid "refusing to %s notes in %s (outside of refs/notes/)" +msgstr "Ausführung von %s auf Notizen in %s (außerhalb von refs/notes/) zurückgewiesen" + +#: builtin/notes.c:365 builtin/notes.c:420 builtin/notes.c:496 +#: builtin/notes.c:508 builtin/notes.c:584 builtin/notes.c:652 +#: builtin/notes.c:802 builtin/notes.c:949 builtin/notes.c:970 msgid "too many parameters" msgstr "zu viele Parameter" -#: builtin/notes.c:376 builtin/notes.c:663 +#: builtin/notes.c:378 builtin/notes.c:665 #, c-format -msgid "No note found for object %s." +msgid "no note found for object %s." msgstr "Keine Notiz für Objekt %s gefunden." -#: builtin/notes.c:397 builtin/notes.c:560 +#: builtin/notes.c:399 builtin/notes.c:562 msgid "note contents as a string" msgstr "Notizinhalte als Zeichenkette" -#: builtin/notes.c:400 builtin/notes.c:563 +#: builtin/notes.c:402 builtin/notes.c:565 msgid "note contents in a file" msgstr "Notizinhalte in einer Datei" -#: builtin/notes.c:403 builtin/notes.c:566 +#: builtin/notes.c:405 builtin/notes.c:568 msgid "reuse and edit specified note object" msgstr "Wiederverwendung und Bearbeitung des angegebenen Notiz-Objektes" -#: builtin/notes.c:406 builtin/notes.c:569 +#: builtin/notes.c:408 builtin/notes.c:571 msgid "reuse specified note object" msgstr "Wiederverwendung des angegebenen Notiz-Objektes" -#: builtin/notes.c:409 builtin/notes.c:572 +#: builtin/notes.c:411 builtin/notes.c:574 msgid "allow storing empty note" msgstr "Speichern leerer Notiz erlauben" -#: builtin/notes.c:410 builtin/notes.c:481 +#: builtin/notes.c:412 builtin/notes.c:483 msgid "replace existing notes" msgstr "existierende Notizen ersetzen" -#: builtin/notes.c:435 +#: builtin/notes.c:437 #, c-format msgid "" "Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite " @@ -9472,31 +10165,31 @@ msgstr "" "Konnte Notizen nicht hinzufügen. Existierende Notizen für Objekt %s " "gefunden. Verwenden Sie '-f', um die existierenden Notizen zu überschreiben." -#: builtin/notes.c:450 builtin/notes.c:529 +#: builtin/notes.c:452 builtin/notes.c:531 #, c-format msgid "Overwriting existing notes for object %s\n" msgstr "Ãœberschreibe existierende Notizen für Objekt %s\n" -#: builtin/notes.c:461 builtin/notes.c:622 builtin/notes.c:887 +#: builtin/notes.c:463 builtin/notes.c:624 builtin/notes.c:889 #, c-format msgid "Removing note for object %s\n" msgstr "Entferne Notiz für Objekt %s\n" -#: builtin/notes.c:482 +#: builtin/notes.c:484 msgid "read objects from stdin" msgstr "Objekte von der Standard-Eingabe lesen" -#: builtin/notes.c:484 +#: builtin/notes.c:486 msgid "load rewriting config for <command> (implies --stdin)" msgstr "" "Konfiguration für <Befehl> zum Umschreiben von Commits laden (impliziert --" "stdin)" -#: builtin/notes.c:502 +#: builtin/notes.c:504 msgid "too few parameters" msgstr "zu wenig Parameter" -#: builtin/notes.c:523 +#: builtin/notes.c:525 #, c-format msgid "" "Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite " @@ -9505,12 +10198,12 @@ msgstr "" "Kann Notizen nicht kopieren. Existierende Notizen für Objekt %s gefunden. " "Verwenden Sie '-f', um die existierenden Notizen zu überschreiben." -#: builtin/notes.c:535 +#: builtin/notes.c:537 #, c-format -msgid "Missing notes on source object %s. Cannot copy." +msgid "missing notes on source object %s. Cannot copy." msgstr "Keine Notizen für Quell-Objekt %s. Kopie nicht möglich." -#: builtin/notes.c:587 +#: builtin/notes.c:589 #, c-format msgid "" "The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n" @@ -9519,20 +10212,52 @@ msgstr "" "Die Optionen -m/-F/-c/-C sind für den Unterbefehl 'edit' veraltet.\n" "Bitte benutzen Sie stattdessen 'git notes add -f -m/-F/-c/-C'.\n" -#: builtin/notes.c:753 +#: builtin/notes.c:685 +msgid "failed to delete ref NOTES_MERGE_PARTIAL" +msgstr "Fehler beim Löschen der Referenz NOTES_MERGE_PARTIAL" + +#: builtin/notes.c:687 +msgid "failed to delete ref NOTES_MERGE_REF" +msgstr "Fehler beim Löschen der Referenz NOTES_MERGE_REF" + +#: builtin/notes.c:689 +msgid "failed to remove 'git notes merge' worktree" +msgstr "Fehler beim Löschen des Arbeitsverzeichnisses von 'git notes merge'." + +#: builtin/notes.c:709 +msgid "failed to read ref NOTES_MERGE_PARTIAL" +msgstr "Fehler beim Lesen der Referenz NOTES_MERGE_PARTIAL" + +#: builtin/notes.c:711 +msgid "could not find commit from NOTES_MERGE_PARTIAL." +msgstr "Konnte Commit von NOTES_MERGE_PARTIAL nicht finden." + +#: builtin/notes.c:713 +msgid "could not parse commit from NOTES_MERGE_PARTIAL." +msgstr "Konnte Commit von NOTES_MERGE_PARTIAL nicht parsen." + +#: builtin/notes.c:726 +msgid "failed to resolve NOTES_MERGE_REF" +msgstr "Fehler beim Auflösen von NOTES_MERGE_REF" + +#: builtin/notes.c:729 +msgid "failed to finalize notes merge" +msgstr "Fehler beim Abschließen der Zusammenführung der Notizen." + +#: builtin/notes.c:755 #, c-format msgid "unknown notes merge strategy %s" msgstr "unbekannte Merge-Strategie '%s' für Notizen" -#: builtin/notes.c:769 +#: builtin/notes.c:771 msgid "General options" msgstr "Allgemeine Optionen" -#: builtin/notes.c:771 +#: builtin/notes.c:773 msgid "Merge options" msgstr "Merge-Optionen" -#: builtin/notes.c:773 +#: builtin/notes.c:775 msgid "" "resolve notes conflicts using the given strategy (manual/ours/theirs/union/" "cat_sort_uniq)" @@ -9540,48 +10265,49 @@ msgstr "" "löst Konflikte bei Notizen mit der angegebenen Strategie auf (manual/ours/" "theirs/union/cat_sort_uniq)" -#: builtin/notes.c:775 +#: builtin/notes.c:777 msgid "Committing unmerged notes" msgstr "nicht zusammengeführte Notizen eintragen" -#: builtin/notes.c:777 +#: builtin/notes.c:779 msgid "finalize notes merge by committing unmerged notes" msgstr "" "Merge von Notizen abschließen, in dem nicht zusammengeführte Notizen " "committet werden" -#: builtin/notes.c:779 +#: builtin/notes.c:781 msgid "Aborting notes merge resolution" msgstr "Konfliktauflösung beim Merge von Notizen abbrechen" -#: builtin/notes.c:781 +#: builtin/notes.c:783 msgid "abort notes merge" msgstr "Merge von Notizen abbrechen" -#: builtin/notes.c:792 +#: builtin/notes.c:794 msgid "cannot mix --commit, --abort or -s/--strategy" msgstr "Kann --commit, --abort oder -s/--strategy nicht kombinieren." -#: builtin/notes.c:797 -msgid "Must specify a notes ref to merge" +#: builtin/notes.c:799 +msgid "must specify a notes ref to merge" msgstr "Sie müssen eine Notiz-Referenz zum Mergen angeben." -#: builtin/notes.c:821 +#: builtin/notes.c:823 #, c-format -msgid "Unknown -s/--strategy: %s" +msgid "unknown -s/--strategy: %s" msgstr "Unbekannter Wert für -s/--strategy: %s" -#: builtin/notes.c:858 +#: builtin/notes.c:860 #, c-format -msgid "A notes merge into %s is already in-progress at %s" +msgid "a notes merge into %s is already in-progress at %s" msgstr "Ein Merge von Notizen nach %s ist bereits im Gange bei %s" -#: builtin/notes.c:861 +#: builtin/notes.c:863 #, c-format -msgid "Failed to store link to current notes ref (%s)" -msgstr "Fehler beim Speichern der Verknüpfung zur aktuellen Notes-Referenz (%s)" +msgid "failed to store link to current notes ref (%s)" +msgstr "" +"Fehler beim Speichern der Verknüpfung zur aktuellen Notes-Referenz (%s)" -#: builtin/notes.c:863 +#: builtin/notes.c:865 #, c-format msgid "" "Automatic notes merge failed. Fix conflicts in %s and commit the result with " @@ -9589,243 +10315,240 @@ msgid "" "abort'.\n" msgstr "" "Automatisches Zusammenführen der Notizen fehlgeschlagen. Beheben Sie die\n" -"Konflikte in %s und committen Sie das Ergebnis mit 'git notes merge --commit',\n" +"Konflikte in %s und committen Sie das Ergebnis mit 'git notes merge --" +"commit',\n" "oder brechen Sie den Merge mit 'git notes merge --abort' ab.\n" -#: builtin/notes.c:885 +#: builtin/notes.c:887 #, c-format msgid "Object %s has no note\n" msgstr "Objekt %s hat keine Notiz\n" -#: builtin/notes.c:897 +#: builtin/notes.c:899 msgid "attempt to remove non-existent note is not an error" msgstr "der Versuch, eine nicht existierende Notiz zu löschen, ist kein Fehler" -#: builtin/notes.c:900 +#: builtin/notes.c:902 msgid "read object names from the standard input" msgstr "Objektnamen von der Standard-Eingabe lesen" -#: builtin/notes.c:938 builtin/prune.c:105 builtin/worktree.c:127 +#: builtin/notes.c:940 builtin/prune.c:105 builtin/worktree.c:127 msgid "do not remove, show only" msgstr "nicht löschen, nur anzeigen" -#: builtin/notes.c:939 +#: builtin/notes.c:941 msgid "report pruned notes" msgstr "gelöschte Notizen melden" -#: builtin/notes.c:981 +#: builtin/notes.c:983 msgid "notes-ref" msgstr "Notiz-Referenz" -#: builtin/notes.c:982 +#: builtin/notes.c:984 msgid "use notes from <notes-ref>" msgstr "Notizen von <Notiz-Referenz> verwenden" -#: builtin/notes.c:1017 builtin/remote.c:1623 +#: builtin/notes.c:1019 #, c-format -msgid "Unknown subcommand: %s" +msgid "unknown subcommand: %s" msgstr "Unbekannter Unterbefehl: %s" -#: builtin/pack-objects.c:28 +#: builtin/pack-objects.c:29 msgid "" "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]" msgstr "" "git pack-objects --stdout [<Optionen>...] [< <Referenzliste> | < " "<Objektliste>]" -#: builtin/pack-objects.c:29 +#: builtin/pack-objects.c:30 msgid "" "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]" msgstr "" "git pack-objects [<Optionen>...] <Basis-Name> [< <Referenzliste> | < " "<Objektliste>]" -#: builtin/pack-objects.c:177 builtin/pack-objects.c:180 +#: builtin/pack-objects.c:179 builtin/pack-objects.c:182 #, c-format msgid "deflate error (%d)" msgstr "Fehler beim Komprimieren (%d)" -#: builtin/pack-objects.c:766 +#: builtin/pack-objects.c:768 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit" msgstr "" "Deaktiviere Schreiben der Bitmap, Pakete wurden durch pack.packSizeLimit\n" "aufgetrennt." -#: builtin/pack-objects.c:779 +#: builtin/pack-objects.c:781 msgid "Writing objects" msgstr "Schreibe Objekte" -#: builtin/pack-objects.c:1037 +#: builtin/pack-objects.c:1070 msgid "disabling bitmap writing, as some objects are not being packed" msgstr "" "Deaktiviere Schreiben der Bitmap, da einige Objekte nicht in eine Pack-" "Datei\n" "geschrieben wurden." -#: builtin/pack-objects.c:2197 +#: builtin/pack-objects.c:2346 msgid "Compressing objects" msgstr "Komprimiere Objekte" -#: builtin/pack-objects.c:2611 +#: builtin/pack-objects.c:2759 #, c-format msgid "unsupported index version %s" msgstr "Nicht unterstützte Index-Version %s" -#: builtin/pack-objects.c:2615 +#: builtin/pack-objects.c:2763 #, c-format msgid "bad index version '%s'" msgstr "Ungültige Index-Version '%s'" -#: builtin/pack-objects.c:2645 +#: builtin/pack-objects.c:2793 msgid "do not show progress meter" msgstr "keine Fortschrittsanzeige anzeigen" -#: builtin/pack-objects.c:2647 +#: builtin/pack-objects.c:2795 msgid "show progress meter" msgstr "Fortschrittsanzeige anzeigen" -#: builtin/pack-objects.c:2649 +#: builtin/pack-objects.c:2797 msgid "show progress meter during object writing phase" msgstr "" "Forschrittsanzeige während der Phase des Schreibens der Objekte anzeigen" -#: builtin/pack-objects.c:2652 +#: builtin/pack-objects.c:2800 msgid "similar to --all-progress when progress meter is shown" msgstr "ähnlich zu --all-progress wenn Fortschrittsanzeige darstellt wird" -#: builtin/pack-objects.c:2653 +#: builtin/pack-objects.c:2801 msgid "version[,offset]" msgstr "version[,offset]" -#: builtin/pack-objects.c:2654 +#: builtin/pack-objects.c:2802 msgid "write the pack index file in the specified idx format version" msgstr "" "die Index-Datei des Paketes in der angegebenen Indexformat-Version schreiben" -#: builtin/pack-objects.c:2657 +#: builtin/pack-objects.c:2805 msgid "maximum size of each output pack file" msgstr "maximale Größe für jede ausgegebene Paketdatei" -#: builtin/pack-objects.c:2659 +#: builtin/pack-objects.c:2807 msgid "ignore borrowed objects from alternate object store" msgstr "geliehene Objekte von alternativem Objektspeicher ignorieren" -#: builtin/pack-objects.c:2661 +#: builtin/pack-objects.c:2809 msgid "ignore packed objects" msgstr "gepackte Objekte ignorieren" -#: builtin/pack-objects.c:2663 +#: builtin/pack-objects.c:2811 msgid "limit pack window by objects" msgstr "Paketfenster durch Objekte begrenzen" -#: builtin/pack-objects.c:2665 +#: builtin/pack-objects.c:2813 msgid "limit pack window by memory in addition to object limit" msgstr "" "Paketfenster, zusätzlich zur Objektbegrenzung, durch Speicher begrenzen" -#: builtin/pack-objects.c:2667 +#: builtin/pack-objects.c:2815 msgid "maximum length of delta chain allowed in the resulting pack" msgstr "" "maximale Länge der erlaubten Differenzverkettung im resultierenden Paket" -#: builtin/pack-objects.c:2669 +#: builtin/pack-objects.c:2817 msgid "reuse existing deltas" msgstr "existierende Unterschiede wiederverwenden" -#: builtin/pack-objects.c:2671 +#: builtin/pack-objects.c:2819 msgid "reuse existing objects" msgstr "existierende Objekte wiederverwenden" -#: builtin/pack-objects.c:2673 +#: builtin/pack-objects.c:2821 msgid "use OFS_DELTA objects" msgstr "OFS_DELTA Objekte verwenden" -#: builtin/pack-objects.c:2675 +#: builtin/pack-objects.c:2823 msgid "use threads when searching for best delta matches" msgstr "" "Threads bei der Suche nach den besten Ãœbereinstimmungen bei Unterschieden " "verwenden" -#: builtin/pack-objects.c:2677 +#: builtin/pack-objects.c:2825 msgid "do not create an empty pack output" msgstr "keine leeren Pakete erzeugen" -#: builtin/pack-objects.c:2679 +#: builtin/pack-objects.c:2827 msgid "read revision arguments from standard input" msgstr "Argumente bezüglich Commits von der Standard-Eingabe lesen" -#: builtin/pack-objects.c:2681 +#: builtin/pack-objects.c:2829 msgid "limit the objects to those that are not yet packed" msgstr "die Objekte zu solchen, die noch nicht gepackt wurden, begrenzen" -#: builtin/pack-objects.c:2684 +#: builtin/pack-objects.c:2832 msgid "include objects reachable from any reference" msgstr "Objekte einschließen, die von jeder Referenz erreichbar sind" -#: builtin/pack-objects.c:2687 +#: builtin/pack-objects.c:2835 msgid "include objects referred by reflog entries" msgstr "" "Objekte einschließen, die von Einträgen des Reflogs referenziert werden" -#: builtin/pack-objects.c:2690 +#: builtin/pack-objects.c:2838 msgid "include objects referred to by the index" msgstr "Objekte einschließen, die vom Index referenziert werden" -#: builtin/pack-objects.c:2693 +#: builtin/pack-objects.c:2841 msgid "output pack to stdout" msgstr "Paket in die Standard-Ausgabe schreiben" -#: builtin/pack-objects.c:2695 +#: builtin/pack-objects.c:2843 msgid "include tag objects that refer to objects to be packed" msgstr "Tag-Objekte einschließen, die auf gepackte Objekte referenzieren" -#: builtin/pack-objects.c:2697 +#: builtin/pack-objects.c:2845 msgid "keep unreachable objects" msgstr "nicht erreichbare Objekte behalten" -#: builtin/pack-objects.c:2699 +#: builtin/pack-objects.c:2847 msgid "pack loose unreachable objects" msgstr "nicht erreichbare lose Objekte packen" -#: builtin/pack-objects.c:2700 parse-options.h:142 -msgid "time" -msgstr "Zeit" - -#: builtin/pack-objects.c:2701 +#: builtin/pack-objects.c:2849 msgid "unpack unreachable objects newer than <time>" msgstr "nicht erreichbare Objekte entpacken, die neuer als <Zeit> sind" -#: builtin/pack-objects.c:2704 +#: builtin/pack-objects.c:2852 msgid "create thin packs" msgstr "dünnere Pakete erzeugen" -#: builtin/pack-objects.c:2706 +#: builtin/pack-objects.c:2854 msgid "create packs suitable for shallow fetches" msgstr "" "Pakete geeignet für Abholung mit unvollständiger Historie (shallow) erzeugen" -#: builtin/pack-objects.c:2708 +#: builtin/pack-objects.c:2856 msgid "ignore packs that have companion .keep file" msgstr "Pakete ignorieren, die .keep Dateien haben" -#: builtin/pack-objects.c:2710 +#: builtin/pack-objects.c:2858 msgid "pack compression level" msgstr "Komprimierungsgrad für Paketierung" -#: builtin/pack-objects.c:2712 +#: builtin/pack-objects.c:2860 msgid "do not hide commits by grafts" msgstr "keine künstlichen Vorgänger-Commits (\"grafts\") verbergen" -#: builtin/pack-objects.c:2714 +#: builtin/pack-objects.c:2862 msgid "use a bitmap index if available to speed up counting objects" msgstr "" "Bitmap-Index (falls verfügbar) zur Optimierung der Objektzählung benutzen" -#: builtin/pack-objects.c:2716 +#: builtin/pack-objects.c:2864 msgid "write a bitmap index together with the pack index" msgstr "Bitmap-Index zusammen mit Pack-Index schreiben" -#: builtin/pack-objects.c:2829 +#: builtin/pack-objects.c:2993 msgid "Counting objects" msgstr "Zähle Objekte" @@ -9865,56 +10588,45 @@ msgstr "Objekte älter als <Zeit> verfallen lassen" msgid "cannot prune in a precious-objects repo" msgstr "kann \"prune\" in precious-objects Repository nicht ausführen" -#: builtin/pull.c:72 +#: builtin/pull.c:51 builtin/pull.c:53 +#, c-format +msgid "Invalid value for %s: %s" +msgstr "Ungültiger Wert für %s: %s" + +#: builtin/pull.c:73 msgid "git pull [<options>] [<repository> [<refspec>...]]" msgstr "git pull [<Optionen>] [<Repository> [<Refspec>...]]" -#: builtin/pull.c:120 +#: builtin/pull.c:121 msgid "Options related to merging" msgstr "Optionen bezogen auf Merge" -#: builtin/pull.c:123 +#: builtin/pull.c:124 msgid "incorporate changes by rebasing rather than merging" msgstr "Integration von Änderungen durch Rebase statt Merge" -#: builtin/pull.c:147 builtin/revert.c:101 +#: builtin/pull.c:148 builtin/revert.c:101 msgid "allow fast-forward" msgstr "Vorspulen erlauben" -#: builtin/pull.c:156 +#: builtin/pull.c:157 msgid "automatically stash/stash pop before and after rebase" msgstr "automatischer Stash/Stash-Pop vor und nach eines Rebase" -#: builtin/pull.c:172 +#: builtin/pull.c:173 msgid "Options related to fetching" msgstr "Optionen bezogen auf Fetch" -#: builtin/pull.c:194 +#: builtin/pull.c:195 msgid "number of submodules pulled in parallel" msgstr "Anzahl der parallel mit 'pull' zu verarbeitenden Submodule" -#: builtin/pull.c:283 +#: builtin/pull.c:284 #, c-format msgid "Invalid value for pull.ff: %s" msgstr "Ungültiger Wert für pull.ff: %s" -#: builtin/pull.c:379 git-sh-setup.sh:226 -msgid "Cannot pull with rebase: You have unstaged changes." -msgstr "" -"Kann \"pull\" mit \"rebase\" nicht ausführen: Sie haben Änderungen, die " -"nicht zum Commit vorgemerkt sind." - -#: builtin/pull.c:385 git-sh-setup.sh:252 -msgid "Additionally, your index contains uncommitted changes." -msgstr "Zusätzlich beinhaltet die Staging-Area nicht committete Änderungen." - -#: builtin/pull.c:387 git-sh-setup.sh:245 -msgid "Cannot pull with rebase: Your index contains uncommitted changes." -msgstr "" -"Kann \"pull\" mit \"rebase\" nicht ausführen: Die Staging-Area beinhaltet " -"nicht committete Änderungen." - -#: builtin/pull.c:463 +#: builtin/pull.c:397 msgid "" "There is no candidate for rebasing against among the refs that you just " "fetched." @@ -9922,14 +10634,14 @@ msgstr "" "Es gibt keinen Kandidaten für Rebase innerhalb der Referenzen, die eben " "angefordert wurden." -#: builtin/pull.c:465 +#: builtin/pull.c:399 msgid "" "There are no candidates for merging among the refs that you just fetched." msgstr "" "Es gibt keine Kandidaten für Merge innerhalb der Referenzen, die eben " "angefordert wurden." -#: builtin/pull.c:466 +#: builtin/pull.c:400 msgid "" "Generally this means that you provided a wildcard refspec which had no\n" "matches on the remote end." @@ -9937,7 +10649,7 @@ msgstr "" "Im Allgemeinen bedeutet das, dass Sie einen Refspec mit Wildcards angegeben\n" "haben, der auf der Gegenseite mit keinen Referenzen übereinstimmt." -#: builtin/pull.c:469 +#: builtin/pull.c:403 #, c-format msgid "" "You asked to pull from the remote '%s', but did not specify\n" @@ -9949,39 +10661,39 @@ msgstr "" "Repository für den aktuellen Branch ist, müssen Sie einen Branch auf\n" "der Befehlszeile angeben." -#: builtin/pull.c:474 git-parse-remote.sh:73 +#: builtin/pull.c:408 git-parse-remote.sh:73 msgid "You are not currently on a branch." msgstr "Im Moment auf keinem Branch." -#: builtin/pull.c:476 builtin/pull.c:491 git-parse-remote.sh:79 +#: builtin/pull.c:410 builtin/pull.c:425 git-parse-remote.sh:79 msgid "Please specify which branch you want to rebase against." msgstr "" "Bitte geben Sie den Branch an, gegen welchen Sie \"rebase\" ausführen " "möchten." -#: builtin/pull.c:478 builtin/pull.c:493 git-parse-remote.sh:82 +#: builtin/pull.c:412 builtin/pull.c:427 git-parse-remote.sh:82 msgid "Please specify which branch you want to merge with." msgstr "Bitte geben Sie den Branch an, welchen Sie zusammenführen möchten." -#: builtin/pull.c:479 builtin/pull.c:494 +#: builtin/pull.c:413 builtin/pull.c:428 msgid "See git-pull(1) for details." msgstr "Siehe git-pull(1) für weitere Details." -#: builtin/pull.c:481 builtin/pull.c:487 builtin/pull.c:496 +#: builtin/pull.c:415 builtin/pull.c:421 builtin/pull.c:430 #: git-parse-remote.sh:64 msgid "<remote>" msgstr "<Remote-Repository>" -#: builtin/pull.c:481 builtin/pull.c:496 builtin/pull.c:501 git-rebase.sh:451 +#: builtin/pull.c:415 builtin/pull.c:430 builtin/pull.c:435 git-rebase.sh:451 #: git-parse-remote.sh:65 msgid "<branch>" msgstr "<Branch>" -#: builtin/pull.c:489 git-parse-remote.sh:75 +#: builtin/pull.c:423 git-parse-remote.sh:75 msgid "There is no tracking information for the current branch." msgstr "Es gibt keine Tracking-Informationen für den aktuellen Branch." -#: builtin/pull.c:498 git-parse-remote.sh:95 +#: builtin/pull.c:432 git-parse-remote.sh:95 msgid "" "If you wish to set tracking information for this branch you can do so with:" msgstr "" @@ -9989,7 +10701,7 @@ msgstr "" "Sie\n" "dies tun mit:" -#: builtin/pull.c:503 +#: builtin/pull.c:437 #, c-format msgid "" "Your configuration specifies to merge with the ref '%s'\n" @@ -9999,21 +10711,29 @@ msgstr "" "des Remote-Repositories durchzuführen, aber diese Referenz\n" "wurde nicht angefordert." -#: builtin/pull.c:820 +#: builtin/pull.c:754 msgid "ignoring --verify-signatures for rebase" msgstr "Ignoriere --verify-signatures für Rebase" -#: builtin/pull.c:867 +#: builtin/pull.c:801 msgid "--[no-]autostash option is only valid with --rebase." msgstr "--[no-]autostash ist nur mit --rebase zulässig." -#: builtin/pull.c:875 +#: builtin/pull.c:809 msgid "Updating an unborn branch with changes added to the index." msgstr "" "Aktualisiere einen ungeborenen Branch mit Änderungen, die zum Commit " "vorgemerkt sind." -#: builtin/pull.c:903 +#: builtin/pull.c:812 +msgid "pull with rebase" +msgstr "Pull mit Rebase" + +#: builtin/pull.c:813 +msgid "please commit or stash them." +msgstr "Bitte committen Sie die Änderungen oder benutzen Sie \"stash\"." + +#: builtin/pull.c:838 #, c-format msgid "" "fetch updated the current branch head.\n" @@ -10023,7 +10743,7 @@ msgstr "" "\"fetch\" aktualisierte die Spitze des aktuellen Branches.\n" "Spule Ihr Arbeitsverzeichnis von Commit %s vor." -#: builtin/pull.c:908 +#: builtin/pull.c:843 #, c-format msgid "" "Cannot fast-forward your working tree.\n" @@ -10040,11 +10760,11 @@ msgstr "" "$ git reset --hard\n" "zur Wiederherstellung aus." -#: builtin/pull.c:923 +#: builtin/pull.c:858 msgid "Cannot merge multiple branches into empty head." msgstr "Kann nicht mehrere Branches in einen leeren Branch zusammenführen." -#: builtin/pull.c:927 +#: builtin/pull.c:862 msgid "Cannot rebase onto multiple branches." msgstr "Kann Rebase nicht auf mehrere Branches ausführen." @@ -10430,17 +11150,70 @@ msgstr "Anwendung des Filters für partielles Auschecken überspringen" #: builtin/read-tree.c:139 msgid "debug unpack-trees" -msgstr "Entpacken der Bäume protokollieren" +msgstr "unpack-trees protokollieren" -#: builtin/receive-pack.c:25 +#: builtin/receive-pack.c:26 msgid "git receive-pack <git-dir>" msgstr "git receive-pack <Git-Verzeichnis>" -#: builtin/receive-pack.c:1843 +#: builtin/receive-pack.c:793 +msgid "" +"By default, updating the current branch in a non-bare repository\n" +"is denied, because it will make the index and work tree inconsistent\n" +"with what you pushed, and will require 'git reset --hard' to match\n" +"the work tree to HEAD.\n" +"\n" +"You can set 'receive.denyCurrentBranch' configuration variable to\n" +"'ignore' or 'warn' in the remote repository to allow pushing into\n" +"its current branch; however, this is not recommended unless you\n" +"arranged to update its work tree to match what you pushed in some\n" +"other way.\n" +"\n" +"To squelch this message and still keep the default behaviour, set\n" +"'receive.denyCurrentBranch' configuration variable to 'refuse'." +msgstr "" +"Standardmäßig wird die Aktualisierung des aktuellen Branches in einem\n" +"nicht-Bare-Repository zurückgewiesen, da dies den Index und das Arbeits-\n" +"verzeichnis inkonsistent zu dem machen würde, was Sie gepushed haben, und\n" +"'git reset --hard' erforderlich wäre, damit das Arbeitsverzeichnis HEAD\n" +"entspricht.\n" +"\n" +"Sie könnten die Konfigurationsvariable 'receive.denyCurrentBranch' im\n" +"Remote-Repository zu 'ignore' oder 'warn' setzen, um den Push in den\n" +"aktuellen Branch zu erlauben; dies wird jedoch nicht empfohlen außer\n" +"Sie stellen durch andere Wege die Aktualität des Arbeitsverzeichnisses\n" +"gegenüber dem gepushten Stand sicher.\n" +"\n" +"Um diese Meldung zu unterdrücken und das Standardverhalten zu behalten,\n" +"setzen Sie die Konfigurationsvariable 'receive.denyCurrentBranch' auf\n" +"'refuse'." + +#: builtin/receive-pack.c:813 +msgid "" +"By default, deleting the current branch is denied, because the next\n" +"'git clone' won't result in any file checked out, causing confusion.\n" +"\n" +"You can set 'receive.denyDeleteCurrent' configuration variable to\n" +"'warn' or 'ignore' in the remote repository to allow deleting the\n" +"current branch, with or without a warning message.\n" +"\n" +"To squelch this message, you can set it to 'refuse'." +msgstr "" +"Standardmäßig wird das Löschen des aktuellen Branches zurückgewiesen,\n" +"da beim nächsten 'git clone' keine Dateien ausgecheckt werden würden,\n" +"was zu Verwunderung führt.\n" +"\n" +"Sie können die Konfigurationsvariable 'receive.denyDeleteCurrent' im\n" +"Remote-Repository auf 'warn' oder 'ignore' setzen, um das Löschen des\n" +"aktuellen Branch mit oder ohne Warnung zu erlauben.\n" +"\n" +"Um diese Meldung zu unterdrücken, setzen Sie die Variable auf 'refuse'." + +#: builtin/receive-pack.c:1883 msgid "quiet" msgstr "weniger Ausgaben" -#: builtin/receive-pack.c:1857 +#: builtin/receive-pack.c:1897 msgid "You must specify a directory." msgstr "Sie müssen ein Repository angeben." @@ -10777,7 +11550,7 @@ msgstr "* Remote-Repository %s" msgid " Fetch URL: %s" msgstr " URL zum Abholen: %s" -#: builtin/remote.c:1143 builtin/remote.c:1156 builtin/remote.c:1296 +#: builtin/remote.c:1143 builtin/remote.c:1156 builtin/remote.c:1295 msgid "(no URL)" msgstr "(keine URL)" @@ -10816,7 +11589,7 @@ msgid_plural " Remote branches:%s" msgstr[0] " Remote-Branch:%s" msgstr[1] " Remote-Branches:%s" -#: builtin/remote.c:1179 builtin/remote.c:1206 +#: builtin/remote.c:1179 builtin/remote.c:1205 msgid " (status not queried)" msgstr " (Zustand nicht abgefragt)" @@ -10830,141 +11603,146 @@ msgstr[1] " Lokale Branches konfiguriert für 'git pull':" msgid " Local refs will be mirrored by 'git push'" msgstr " Lokale Referenzen werden von 'git push' gespiegelt" -#: builtin/remote.c:1203 +#: builtin/remote.c:1202 #, c-format msgid " Local ref configured for 'git push'%s:" msgid_plural " Local refs configured for 'git push'%s:" msgstr[0] " Lokale Referenz konfiguriert für 'git push'%s:" msgstr[1] " Lokale Referenzen konfiguriert für 'git push'%s:" -#: builtin/remote.c:1224 +#: builtin/remote.c:1223 msgid "set refs/remotes/<name>/HEAD according to remote" msgstr "setzt refs/remotes/<Name>/HEAD gemäß dem Remote-Repository" -#: builtin/remote.c:1226 +#: builtin/remote.c:1225 msgid "delete refs/remotes/<name>/HEAD" msgstr "entfernt refs/remotes/<Name>/HEAD" -#: builtin/remote.c:1241 +#: builtin/remote.c:1240 msgid "Cannot determine remote HEAD" msgstr "Kann HEAD des Remote-Repositories nicht bestimmen" -#: builtin/remote.c:1243 +#: builtin/remote.c:1242 msgid "Multiple remote HEAD branches. Please choose one explicitly with:" msgstr "" "Mehrere Hauptbranches im Remote-Repository. Bitte wählen Sie explizit einen " "aus mit:" -#: builtin/remote.c:1253 +#: builtin/remote.c:1252 #, c-format msgid "Could not delete %s" msgstr "Konnte %s nicht entfernen" -#: builtin/remote.c:1261 +#: builtin/remote.c:1260 #, c-format msgid "Not a valid ref: %s" msgstr "keine gültige Referenz: %s" -#: builtin/remote.c:1263 +#: builtin/remote.c:1262 #, c-format msgid "Could not setup %s" msgstr "Konnte %s nicht einrichten" -#: builtin/remote.c:1281 +#: builtin/remote.c:1280 #, c-format msgid " %s will become dangling!" msgstr " %s wird unreferenziert!" -#: builtin/remote.c:1282 +#: builtin/remote.c:1281 #, c-format msgid " %s has become dangling!" msgstr " %s wurde unreferenziert!" -#: builtin/remote.c:1292 +#: builtin/remote.c:1291 #, c-format msgid "Pruning %s" msgstr "entferne veraltete Branches von %s" -#: builtin/remote.c:1293 +#: builtin/remote.c:1292 #, c-format msgid "URL: %s" msgstr "URL: %s" -#: builtin/remote.c:1309 +#: builtin/remote.c:1308 #, c-format msgid " * [would prune] %s" msgstr " * [würde veralteten Branch entfernen] %s" -#: builtin/remote.c:1312 +#: builtin/remote.c:1311 #, c-format msgid " * [pruned] %s" msgstr "* [veralteten Branch entfernt] %s" -#: builtin/remote.c:1357 +#: builtin/remote.c:1356 msgid "prune remotes after fetching" msgstr "entferne veraltete Branches im Remote-Repository nach \"fetch\"" -#: builtin/remote.c:1420 builtin/remote.c:1474 builtin/remote.c:1542 +#: builtin/remote.c:1419 builtin/remote.c:1473 builtin/remote.c:1541 #, c-format msgid "No such remote '%s'" msgstr "Kein solches Remote-Repository '%s'" -#: builtin/remote.c:1436 +#: builtin/remote.c:1435 msgid "add branch" msgstr "Branch hinzufügen" -#: builtin/remote.c:1443 +#: builtin/remote.c:1442 msgid "no remote specified" msgstr "kein Remote-Repository angegeben" -#: builtin/remote.c:1460 +#: builtin/remote.c:1459 msgid "query push URLs rather than fetch URLs" msgstr "nur URLs für Push ausgeben" -#: builtin/remote.c:1462 +#: builtin/remote.c:1461 msgid "return all URLs" msgstr "alle URLs ausgeben" -#: builtin/remote.c:1490 +#: builtin/remote.c:1489 #, c-format msgid "no URLs configured for remote '%s'" msgstr "Keine URLs für Remote-Repository '%s' konfiguriert." -#: builtin/remote.c:1516 +#: builtin/remote.c:1515 msgid "manipulate push URLs" msgstr "URLs für \"push\" manipulieren" -#: builtin/remote.c:1518 +#: builtin/remote.c:1517 msgid "add URL" msgstr "URL hinzufügen" -#: builtin/remote.c:1520 +#: builtin/remote.c:1519 msgid "delete URLs" msgstr "URLs löschen" -#: builtin/remote.c:1527 +#: builtin/remote.c:1526 msgid "--add --delete doesn't make sense" msgstr "" "Die Optionen --add und --delete können nicht gemeinsam verwendet werden." -#: builtin/remote.c:1568 +#: builtin/remote.c:1567 #, c-format msgid "Invalid old URL pattern: %s" msgstr "ungültiges altes URL Format: %s" -#: builtin/remote.c:1576 +#: builtin/remote.c:1575 #, c-format msgid "No such URL found: %s" msgstr "Keine solche URL gefunden: %s" -#: builtin/remote.c:1578 +#: builtin/remote.c:1577 msgid "Will not delete all non-push URLs" msgstr "Werde keine URLs entfernen, die nicht für \"push\" bestimmt sind" -#: builtin/remote.c:1592 +#: builtin/remote.c:1591 msgid "be verbose; must be placed before a subcommand" msgstr "erweiterte Ausgaben; muss vor einem Unterbefehl angegeben werden" +#: builtin/remote.c:1622 +#, c-format +msgid "Unknown subcommand: %s" +msgstr "Unbekannter Unterbefehl: %s" + #: builtin/repack.c:17 msgid "git repack [<options>]" msgstr "git repack [<Optionen>]" @@ -11154,8 +11932,8 @@ msgstr "" "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<Commit>]" #: builtin/reset.c:27 -msgid "git reset [-q] <tree-ish> [--] <paths>..." -msgstr "git reset [-q] <Commit-Referenz> [--] <Pfade>..." +msgid "git reset [-q] [<tree-ish>] [--] <paths>..." +msgstr "git reset [-q] [<Commit-Referenz>] [--] <Pfade>..." #: builtin/reset.c:28 msgid "git reset --patch [<tree-ish>] [--] [<paths>...]" @@ -11275,28 +12053,28 @@ msgstr "Konnte Index-Datei nicht zu Commit '%s' setzen." msgid "Could not write new index file." msgstr "Konnte neue Index-Datei nicht schreiben." -#: builtin/rev-list.c:362 +#: builtin/rev-list.c:354 msgid "rev-list does not support display of notes" msgstr "rev-list unterstützt keine Anzeige von Notizen" -#: builtin/rev-parse.c:358 +#: builtin/rev-parse.c:386 msgid "git rev-parse --parseopt [<options>] -- [<args>...]" msgstr "git rev-parse --parseopt [<Optionen>] -- [<Argumente>...]" -#: builtin/rev-parse.c:363 +#: builtin/rev-parse.c:391 msgid "keep the `--` passed as an arg" msgstr "`--` als Argument lassen" -#: builtin/rev-parse.c:365 +#: builtin/rev-parse.c:393 msgid "stop parsing after the first non-option argument" msgstr "das Parsen nach dem ersten Argument, was keine Option ist, stoppen" -#: builtin/rev-parse.c:368 +#: builtin/rev-parse.c:396 msgid "output in stuck long form" msgstr "" "Ausgabe in Langform mit Argumenten an den Optionen (getrennt durch '=')" -#: builtin/rev-parse.c:499 +#: builtin/rev-parse.c:527 msgid "" "git rev-parse --parseopt [<options>] -- [<args>...]\n" " or: git rev-parse --sq-quote [<arg>...]\n" @@ -11388,7 +12166,7 @@ msgstr "redundante, leere Commits behalten" msgid "revert failed" msgstr "\"revert\" fehlgeschlagen" -#: builtin/revert.c:207 +#: builtin/revert.c:205 msgid "cherry-pick failed" msgstr "\"cherry-pick\" fehlgeschlagen" @@ -11562,71 +12340,125 @@ msgstr "" msgid "git show-branch (-g | --reflog)[=<n>[,<base>]] [--list] [<ref>]" msgstr "git show-branch (-g | --reflog)[=<n>[,<Basis>]] [--list] [<Referenz>]" -#: builtin/show-branch.c:640 +#: builtin/show-branch.c:375 +#, c-format +msgid "ignoring %s; cannot handle more than %d ref" +msgid_plural "ignoring %s; cannot handle more than %d refs" +msgstr[0] "ignoriere %s; kann nicht mehr als %d Referenz behandeln" +msgstr[1] "ignoriere %s; kann nicht mehr als %d Referenzen behandeln" + +#: builtin/show-branch.c:541 +#, c-format +msgid "no matching refs with %s" +msgstr "keine übereinstimmenden Referenzen mit %s" + +#: builtin/show-branch.c:639 msgid "show remote-tracking and local branches" msgstr "Remote-Tracking und lokale Branches anzeigen" -#: builtin/show-branch.c:642 +#: builtin/show-branch.c:641 msgid "show remote-tracking branches" msgstr "Remote-Tracking-Branches anzeigen" -#: builtin/show-branch.c:644 +#: builtin/show-branch.c:643 msgid "color '*!+-' corresponding to the branch" msgstr "'*!+-' entsprechend des Branches einfärben" -#: builtin/show-branch.c:646 +#: builtin/show-branch.c:645 msgid "show <n> more commits after the common ancestor" msgstr "<n> weitere Commits nach dem gemeinsamen Vorgänger-Commit anzeigen" -#: builtin/show-branch.c:648 +#: builtin/show-branch.c:647 msgid "synonym to more=-1" msgstr "Synonym für more=-1" -#: builtin/show-branch.c:649 +#: builtin/show-branch.c:648 msgid "suppress naming strings" msgstr "Namen unterdrücken" -#: builtin/show-branch.c:651 +#: builtin/show-branch.c:650 msgid "include the current branch" msgstr "den aktuellen Branch einbeziehen" -#: builtin/show-branch.c:653 +#: builtin/show-branch.c:652 msgid "name commits with their object names" msgstr "Commits nach ihren Objektnamen benennen" -#: builtin/show-branch.c:655 +#: builtin/show-branch.c:654 msgid "show possible merge bases" msgstr "mögliche Merge-Basen anzeigen" -#: builtin/show-branch.c:657 +#: builtin/show-branch.c:656 msgid "show refs unreachable from any other ref" msgstr "" "Referenzen, die unerreichbar von allen anderen Referenzen sind, anzeigen" -#: builtin/show-branch.c:659 +#: builtin/show-branch.c:658 msgid "show commits in topological order" msgstr "Commits in topologischer Ordnung anzeigen" -#: builtin/show-branch.c:662 +#: builtin/show-branch.c:661 msgid "show only commits not on the first branch" msgstr "nur Commits anzeigen, die sich nicht im ersten Branch befinden" -#: builtin/show-branch.c:664 +#: builtin/show-branch.c:663 msgid "show merges reachable from only one tip" msgstr "Merges anzeigen, die nur von einem Branch aus erreichbar sind" -#: builtin/show-branch.c:666 +#: builtin/show-branch.c:665 msgid "topologically sort, maintaining date order where possible" msgstr "topologische Sortierung, Beibehaltung Datumsordnung wo möglich" -#: builtin/show-branch.c:669 +#: builtin/show-branch.c:668 msgid "<n>[,<base>]" msgstr "<n>[,<Basis>]" -#: builtin/show-branch.c:670 +#: builtin/show-branch.c:669 msgid "show <n> most recent ref-log entries starting at base" msgstr "die <n> jüngsten Einträge im Reflog, beginnend an der Basis, anzeigen" +#: builtin/show-branch.c:703 +msgid "" +"--reflog is incompatible with --all, --remotes, --independent or --merge-base" +msgstr "--reflog ist inkompatibel mit --all, --remotes, --independent oder --merge-base" + +#: builtin/show-branch.c:727 +msgid "no branches given, and HEAD is not valid" +msgstr "keine Branches angegeben, und HEAD ist ungültig" + +#: builtin/show-branch.c:730 +msgid "--reflog option needs one branch name" +msgstr "Die Option --reflog benötigt einen Branchnamen." + +#: builtin/show-branch.c:733 +#, c-format +msgid "only %d entry can be shown at one time." +msgid_plural "only %d entries can be shown at one time." +msgstr[0] "nur %d Eintrag kann zur selben Zeit angezeigt werden" +msgstr[1] "nur %d Einträge können zur selben Zeit angezeigt werden" + +#: builtin/show-branch.c:737 +#, c-format +msgid "no such ref %s" +msgstr "Referenz nicht gefunden: %s" + +#: builtin/show-branch.c:829 +#, c-format +msgid "cannot handle more than %d rev." +msgid_plural "cannot handle more than %d revs." +msgstr[0] "Kann nicht mehr als %d Commit behandeln." +msgstr[1] "Kann nicht mehr als %d Commits behandeln." + +#: builtin/show-branch.c:833 +#, c-format +msgid "'%s' is not a valid ref." +msgstr "'%s' ist keine gültige Referenz." + +#: builtin/show-branch.c:836 +#, c-format +msgid "cannot find commit %s (%s)" +msgstr "kann Commit %s (%s) nicht finden" + #: builtin/show-ref.c:10 msgid "" "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --" @@ -11693,12 +12525,12 @@ msgstr "" msgid "prepend comment character and space to each line" msgstr "Kommentarzeichen mit Leerzeichen an jede Zeile voranstellen" -#: builtin/submodule--helper.c:24 builtin/submodule--helper.c:923 +#: builtin/submodule--helper.c:24 builtin/submodule--helper.c:1046 #, c-format msgid "No such ref: %s" msgstr "Referenz nicht gefunden: %s" -#: builtin/submodule--helper.c:31 builtin/submodule--helper.c:932 +#: builtin/submodule--helper.c:31 builtin/submodule--helper.c:1055 #, c-format msgid "Expecting a full ref name, got %s" msgstr "Vollständiger Referenzname erwartet, %s erhalten" @@ -11708,77 +12540,96 @@ msgstr "Vollständiger Referenzname erwartet, %s erhalten" msgid "cannot strip one component off url '%s'" msgstr "Kann eine Komponente von URL '%s' nicht extrahieren" -#: builtin/submodule--helper.c:278 builtin/submodule--helper.c:403 -#: builtin/submodule--helper.c:483 +#: builtin/submodule--helper.c:282 builtin/submodule--helper.c:408 +#: builtin/submodule--helper.c:590 msgid "alternative anchor for relative paths" msgstr "Alternativer Anker für relative Pfade" -#: builtin/submodule--helper.c:283 +#: builtin/submodule--helper.c:287 msgid "git submodule--helper list [--prefix=<path>] [<path>...]" msgstr "git submodule--helper list [--prefix=<Pfad>] [<Pfad>...]" -#: builtin/submodule--helper.c:324 builtin/submodule--helper.c:338 +#: builtin/submodule--helper.c:329 builtin/submodule--helper.c:343 #, c-format msgid "No url found for submodule path '%s' in .gitmodules" msgstr "Keine URL für Submodul-Pfad '%s' in .gitmodules gefunden" -#: builtin/submodule--helper.c:364 +#: builtin/submodule--helper.c:369 #, c-format msgid "Failed to register url for submodule path '%s'" msgstr "" "Fehler beim Eintragen der URL für Submodul-Pfad '%s' in die Konfiguration." -#: builtin/submodule--helper.c:368 +#: builtin/submodule--helper.c:373 #, c-format msgid "Submodule '%s' (%s) registered for path '%s'\n" msgstr "Submodul '%s' (%s) für Pfad '%s' in die Konfiguration eingetragen.\n" -#: builtin/submodule--helper.c:378 +#: builtin/submodule--helper.c:383 #, c-format msgid "warning: command update mode suggested for submodule '%s'\n" msgstr "Warnung: 'update'-Modus für Submodul '%s' vorgeschlagen\n" -#: builtin/submodule--helper.c:385 +#: builtin/submodule--helper.c:390 #, c-format msgid "Failed to register update mode for submodule path '%s'" msgstr "" "Fehler bei Änderung des Aktualisierungsmodus für Submodul-Pfad '%s' in der\n" "Konfiguration." -#: builtin/submodule--helper.c:404 +#: builtin/submodule--helper.c:409 msgid "Suppress output for initializing a submodule" msgstr "Ausgaben bei Initialisierung eines Submoduls unterdrücken" -#: builtin/submodule--helper.c:409 +#: builtin/submodule--helper.c:414 msgid "git submodule--helper init [<path>]" msgstr "git submodule--helper init [<Pfad>]" -#: builtin/submodule--helper.c:430 +#: builtin/submodule--helper.c:435 msgid "git submodule--helper name <path>" msgstr "git submodule--helper name <Pfad>" -#: builtin/submodule--helper.c:436 +#: builtin/submodule--helper.c:441 #, c-format msgid "no submodule mapping found in .gitmodules for path '%s'" msgstr "Keine Submodul-Zuordnung in .gitmodules für Pfad '%s' gefunden" -#: builtin/submodule--helper.c:486 +#: builtin/submodule--helper.c:524 builtin/submodule--helper.c:527 +#, c-format +msgid "submodule '%s' cannot add alternate: %s" +msgstr "Submodul '%s' kann Alternative nicht hinzufügen: %s" + +#: builtin/submodule--helper.c:563 +#, c-format +msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized" +msgstr "Wert '%s' für submodule.alternateErrorStrategy wird nicht erkannt" + +#: builtin/submodule--helper.c:570 +#, c-format +msgid "Value '%s' for submodule.alternateLocation is not recognized" +msgstr "Wert '%s' für submodule.alternateLocation wird nicht erkannt." + +#: builtin/submodule--helper.c:593 msgid "where the new submodule will be cloned to" msgstr "Pfad für neues Submodul" -#: builtin/submodule--helper.c:489 +#: builtin/submodule--helper.c:596 msgid "name of the new submodule" msgstr "Name des neuen Submoduls" -#: builtin/submodule--helper.c:492 +#: builtin/submodule--helper.c:599 msgid "url where to clone the submodule from" msgstr "URL von der das Submodul geklont wird" -#: builtin/submodule--helper.c:498 +#: builtin/submodule--helper.c:605 msgid "depth for shallow clones" msgstr "Tiefe des Klons mit unvollständiger Historie (shallow)" -#: builtin/submodule--helper.c:504 +#: builtin/submodule--helper.c:608 builtin/submodule--helper.c:964 +msgid "force cloning progress" +msgstr "Fortschrittsanzeige beim Klonen erzwingen" + +#: builtin/submodule--helper.c:613 msgid "" "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference " "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>" @@ -11787,103 +12638,103 @@ msgstr "" "<Repository>] [--name <Name>] [--url <URL>] [--name <Name>] [--depth " "<Tiefe>] --url <URL> --path <Pfad>" -#: builtin/submodule--helper.c:529 builtin/submodule--helper.c:535 +#: builtin/submodule--helper.c:638 builtin/submodule--helper.c:648 #, c-format msgid "could not create directory '%s'" msgstr "Konnte Verzeichnis '%s' nicht erstellen." -#: builtin/submodule--helper.c:531 +#: builtin/submodule--helper.c:644 #, c-format msgid "clone of '%s' into submodule path '%s' failed" msgstr "Klonen von '%s' in Submodul-Pfad '%s' fehlgeschlagen" -#: builtin/submodule--helper.c:547 +#: builtin/submodule--helper.c:660 #, c-format msgid "cannot open file '%s'" msgstr "Kann Datei '%s' nicht öffnen" -#: builtin/submodule--helper.c:552 +#: builtin/submodule--helper.c:665 #, c-format msgid "could not close file %s" msgstr "Konnte Datei '%s' nicht schließen." -#: builtin/submodule--helper.c:559 +#: builtin/submodule--helper.c:672 #, c-format msgid "could not get submodule directory for '%s'" msgstr "Konnte Submodul-Verzeichnis '%s' nicht finden." -#: builtin/submodule--helper.c:611 +#: builtin/submodule--helper.c:726 #, c-format msgid "Submodule path '%s' not initialized" msgstr "Submodul-Pfad '%s' nicht initialisiert" -#: builtin/submodule--helper.c:615 +#: builtin/submodule--helper.c:730 msgid "Maybe you want to use 'update --init'?" msgstr "Meinten Sie vielleicht 'update --init'?" -#: builtin/submodule--helper.c:641 +#: builtin/submodule--helper.c:756 #, c-format msgid "Skipping unmerged submodule %s" msgstr "Ãœberspringe nicht zusammengeführtes Submodul %s" -#: builtin/submodule--helper.c:662 +#: builtin/submodule--helper.c:777 #, c-format msgid "Skipping submodule '%s'" msgstr "Ãœberspringe Submodul '%s'" -#: builtin/submodule--helper.c:792 +#: builtin/submodule--helper.c:913 #, c-format msgid "Failed to clone '%s'. Retry scheduled" msgstr "Fehler beim Klonen von '%s'. Weiterer Versuch geplant" -#: builtin/submodule--helper.c:803 +#: builtin/submodule--helper.c:924 #, c-format msgid "Failed to clone '%s' a second time, aborting" msgstr "Zweiter Versuch '%s' zu klonen fehlgeschlagen, breche ab." -#: builtin/submodule--helper.c:824 +#: builtin/submodule--helper.c:945 msgid "path into the working tree" msgstr "Pfad zum Arbeitsverzeichnis" -#: builtin/submodule--helper.c:827 +#: builtin/submodule--helper.c:948 msgid "path into the working tree, across nested submodule boundaries" msgstr "" "Pfad zum Arbeitsverzeichnis, über verschachtelte Submodul-Grenzen hinweg" -#: builtin/submodule--helper.c:831 +#: builtin/submodule--helper.c:952 msgid "rebase, merge, checkout or none" msgstr "rebase, merge, checkout oder none" -#: builtin/submodule--helper.c:835 +#: builtin/submodule--helper.c:956 msgid "Create a shallow clone truncated to the specified number of revisions" msgstr "" "Erstellung eines Klons mit unvollständiger Historie (shallow), abgeschnitten " "bei\n" "der angegebenen Anzahl von Commits." -#: builtin/submodule--helper.c:838 +#: builtin/submodule--helper.c:959 msgid "parallel jobs" msgstr "Parallele Ausführungen" -#: builtin/submodule--helper.c:840 +#: builtin/submodule--helper.c:961 msgid "whether the initial clone should follow the shallow recommendation" msgstr "" "ob das initiale Klonen den Empfehlungen für eine unvollständige\n" "Historie (shallow) folgen soll" -#: builtin/submodule--helper.c:841 +#: builtin/submodule--helper.c:962 msgid "don't print cloning progress" msgstr "keine Fortschrittsanzeige beim Klonen" -#: builtin/submodule--helper.c:846 +#: builtin/submodule--helper.c:969 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]" msgstr "git submodule--helper update_clone [--prefix=<Pfad>] [<Pfad>...]" -#: builtin/submodule--helper.c:856 +#: builtin/submodule--helper.c:979 msgid "bad value for update parameter" msgstr "Fehlerhafter Wert für --update Parameter" -#: builtin/submodule--helper.c:927 +#: builtin/submodule--helper.c:1050 #, c-format msgid "" "Submodule (%s) branch configured to inherit branch from superproject, but " @@ -11892,11 +12743,11 @@ msgstr "" "Branch von Submodul (%s) ist konfiguriert, den Branch des Hauptprojektes\n" "zu erben, aber das Hauptprojekt befindet sich auf keinem Branch." -#: builtin/submodule--helper.c:977 +#: builtin/submodule--helper.c:1100 msgid "submodule--helper subcommand must be called with a subcommand" msgstr "submodule--helper muss mit einem Unterbefehl aufgerufen werden" -#: builtin/submodule--helper.c:984 +#: builtin/submodule--helper.c:1107 #, c-format msgid "'%s' is not a valid submodule--helper subcommand" msgstr "'%s' ist kein gültiger Unterbefehl von submodule--helper" @@ -12133,7 +12984,7 @@ msgstr "Tag '%s' existiert bereits" msgid "Updated tag '%s' (was %s)\n" msgstr "Tag '%s' aktualisiert (war %s)\n" -#: builtin/unpack-objects.c:490 +#: builtin/unpack-objects.c:493 msgid "Unpacking objects" msgstr "Entpacke Objekte" @@ -12206,139 +13057,155 @@ msgstr "" msgid " OK" msgstr " OK" -#: builtin/update-index.c:575 +#: builtin/update-index.c:564 msgid "git update-index [<options>] [--] [<file>...]" msgstr "git update-index [<Optionen>] [--] [<Datei>...]" -#: builtin/update-index.c:930 +#: builtin/update-index.c:919 msgid "continue refresh even when index needs update" msgstr "" "Aktualisierung fortsetzen, auch wenn der Index aktualisiert werden muss" -#: builtin/update-index.c:933 +#: builtin/update-index.c:922 msgid "refresh: ignore submodules" msgstr "Aktualisierung: ignoriert Submodule" -#: builtin/update-index.c:936 +#: builtin/update-index.c:925 msgid "do not ignore new files" msgstr "keine neuen Dateien ignorieren" -#: builtin/update-index.c:938 +#: builtin/update-index.c:927 msgid "let files replace directories and vice-versa" msgstr "Dateien Verzeichnisse ersetzen lassen, und umgedreht" -#: builtin/update-index.c:940 +#: builtin/update-index.c:929 msgid "notice files missing from worktree" msgstr "fehlende Dateien im Arbeitsverzeichnis beachten" -#: builtin/update-index.c:942 +#: builtin/update-index.c:931 msgid "refresh even if index contains unmerged entries" msgstr "" "aktualisieren, auch wenn der Index nicht zusammengeführte Einträge beinhaltet" -#: builtin/update-index.c:945 +#: builtin/update-index.c:934 msgid "refresh stat information" msgstr "Dateiinformationen aktualisieren" -#: builtin/update-index.c:949 +#: builtin/update-index.c:938 msgid "like --refresh, but ignore assume-unchanged setting" msgstr "wie --refresh, ignoriert aber \"assume-unchanged\" Einstellung" -#: builtin/update-index.c:953 +#: builtin/update-index.c:942 msgid "<mode>,<object>,<path>" msgstr "<Modus>,<Objekt>,<Pfad>" -#: builtin/update-index.c:954 +#: builtin/update-index.c:943 msgid "add the specified entry to the index" msgstr "den angegebenen Eintrag zum Commit vormerken" -#: builtin/update-index.c:963 +#: builtin/update-index.c:952 msgid "mark files as \"not changing\"" msgstr "diese Datei immer als unverändert betrachten" -#: builtin/update-index.c:966 +#: builtin/update-index.c:955 msgid "clear assumed-unchanged bit" msgstr "\"assumed-unchanged\"-Bit löschen" -#: builtin/update-index.c:969 +#: builtin/update-index.c:958 msgid "mark files as \"index-only\"" msgstr "Dateien als \"index-only\" markieren" -#: builtin/update-index.c:972 +#: builtin/update-index.c:961 msgid "clear skip-worktree bit" msgstr "\"skip-worktree\"-Bit löschen" -#: builtin/update-index.c:975 +#: builtin/update-index.c:964 msgid "add to index only; do not add content to object database" msgstr "" "die Änderungen nur zum Commit vormerken; Inhalt wird nicht der Objekt-" "Datenbank hinzugefügt" -#: builtin/update-index.c:977 +#: builtin/update-index.c:966 msgid "remove named paths even if present in worktree" msgstr "" "benannte Pfade löschen, auch wenn sie sich im Arbeitsverzeichnis befinden" -#: builtin/update-index.c:979 +#: builtin/update-index.c:968 msgid "with --stdin: input lines are terminated by null bytes" msgstr "mit --stdin: eingegebene Zeilen sind durch NUL-Bytes abgeschlossen" -#: builtin/update-index.c:981 +#: builtin/update-index.c:970 msgid "read list of paths to be updated from standard input" msgstr "Liste der zu aktualisierenden Pfade von der Standard-Eingabe lesen" -#: builtin/update-index.c:985 +#: builtin/update-index.c:974 msgid "add entries from standard input to the index" msgstr "Einträge von der Standard-Eingabe zum Commit vormerken" -#: builtin/update-index.c:989 +#: builtin/update-index.c:978 msgid "repopulate stages #2 and #3 for the listed paths" msgstr "" "wiederholtes Einpflegen der Zustände #2 und #3 für die aufgelisteten Pfade" -#: builtin/update-index.c:993 +#: builtin/update-index.c:982 msgid "only update entries that differ from HEAD" msgstr "nur Einträge aktualisieren, die unterschiedlich zu HEAD sind" -#: builtin/update-index.c:997 +#: builtin/update-index.c:986 msgid "ignore files missing from worktree" msgstr "fehlende Dateien im Arbeitsverzeichnis ignorieren" -#: builtin/update-index.c:1000 +#: builtin/update-index.c:989 msgid "report actions to standard output" msgstr "die Aktionen in der Standard-Ausgabe ausgeben" -#: builtin/update-index.c:1002 +#: builtin/update-index.c:991 msgid "(for porcelains) forget saved unresolved conflicts" msgstr "(für Fremdprogramme) keine gespeicherten, nicht aufgelöste Konflikte" -#: builtin/update-index.c:1006 +#: builtin/update-index.c:995 msgid "write index in this format" msgstr "Index-Datei in diesem Format schreiben" -#: builtin/update-index.c:1008 +#: builtin/update-index.c:997 msgid "enable or disable split index" msgstr "Splitting des Index aktivieren oder deaktivieren" -#: builtin/update-index.c:1010 +#: builtin/update-index.c:999 msgid "enable/disable untracked cache" msgstr "Cache für unversionierte Dateien aktivieren oder deaktivieren" -#: builtin/update-index.c:1012 +#: builtin/update-index.c:1001 msgid "test if the filesystem supports untracked cache" msgstr "" "prüfen ob das Dateisystem einen Cache für unversionierte Dateien unterstützt" -#: builtin/update-index.c:1014 +#: builtin/update-index.c:1003 msgid "enable untracked cache without testing the filesystem" msgstr "" "Cache für unversionierte Dateien ohne Prüfung des Dateisystems aktivieren" -#: builtin/update-index.c:1134 +#: builtin/update-index.c:1119 +msgid "" +"core.untrackedCache is set to true; remove or change it, if you really want " +"to disable the untracked cache" +msgstr "" +"core.untrackedCache ist auf 'true' gesetzt. Entfernen oder ändern Sie dies,\n" +"wenn Sie wirklich den Cache für unversionierte Dateien deaktivieren möchten." + +#: builtin/update-index.c:1123 msgid "Untracked cache disabled" msgstr "Cache für unversionierte Dateien deaktiviert" -#: builtin/update-index.c:1146 +#: builtin/update-index.c:1131 +msgid "" +"core.untrackedCache is set to false; remove or change it, if you really want " +"to enable the untracked cache" +msgstr "" +"core.untrackedCache ist auf 'false' gesetzt. Entfernen oder ändern Sie dies,\n" +"wenn sie wirklich den Cache für unversionierte Dateien aktivieren möchten." + +#: builtin/update-index.c:1135 #, c-format msgid "Untracked cache enabled for '%s'" msgstr "Cache für unversionierte Dateien für '%s' aktiviert" @@ -12538,26 +13405,44 @@ msgstr "das \"Tree\"-Objekt für ein Unterverzeichnis <Präfix> schreiben" msgid "only useful for debugging" msgstr "nur nützlich für Fehlersuche" -#: upload-pack.c:20 +#: upload-pack.c:22 msgid "git upload-pack [<options>] <dir>" msgstr "git upload-pack [<Optionen>] <Verzeichnis>" -#: upload-pack.c:837 +#: upload-pack.c:1028 msgid "quit after a single request/response exchange" msgstr "nach einem einzigen Request/Response-Austausch beenden" -#: upload-pack.c:839 +#: upload-pack.c:1030 msgid "exit immediately after initial ref advertisement" msgstr "direkt nach der initialen Angabe der Commits beenden" -#: upload-pack.c:841 +#: upload-pack.c:1032 msgid "do not try <directory>/.git/ if <directory> is no Git directory" -msgstr "kein Versuch in <Verzeichnis>/.git/ wenn <Verzeichnis> kein Git-Verzeichnis ist" +msgstr "" +"kein Versuch in <Verzeichnis>/.git/ wenn <Verzeichnis> kein Git-Verzeichnis " +"ist" -#: upload-pack.c:843 +#: upload-pack.c:1034 msgid "interrupt transfer after <n> seconds of inactivity" msgstr "Ãœbertragung nach <n> Sekunden Inaktivität unterbrechen" +#: credential-cache--daemon.c:223 +#, c-format +msgid "" +"The permissions on your socket directory are too loose; other\n" +"users may be able to read your cached credentials. Consider running:\n" +"\n" +"\tchmod 0700 %s" +msgstr "" +"Die Berechtigungen auf Ihr Socket-Verzeichnis sind zu schwach; andere\n" +"Nutzer könnten Ihre zwischengespeicherten Anmeldeinformationen lesen.\n" +"Ziehen Sie in Betracht\n" +"\n" +"\tchmod 0700 %s\n" +"\n" +"auszuführen." + #: credential-cache--daemon.c:271 msgid "print debugging messages to stderr" msgstr "Meldungen zur Fehlersuche in Standard-Fehlerausgabe ausgeben" @@ -12573,7 +13458,11 @@ msgstr "" "oder 'git help <Konzept>', um mehr über einen spezifischen Befehl oder\n" "Konzept zu erfahren." -#: http.c:323 +#: http.c:342 +msgid "Delegation control is not supported with cURL < 7.22.0" +msgstr "Kontrolle über Delegation wird mit cURL < 7.22.0 nicht unterstützt" + +#: http.c:351 msgid "Public key pinning not supported with cURL < 7.44.0" msgstr "" "Das Anheften des öffentlichen Schlüssels wird mit cURL < 7.44.0\n" @@ -12701,15 +13590,15 @@ msgstr "Verfallsdatum" msgid "no-op (backward compatibility)" msgstr "Kein Effekt (Rückwärtskompatibilität)" -#: parse-options.h:237 +#: parse-options.h:238 msgid "be more verbose" msgstr "erweiterte Ausgaben" -#: parse-options.h:239 +#: parse-options.h:240 msgid "be more quiet" msgstr "weniger Ausgaben" -#: parse-options.h:245 +#: parse-options.h:246 msgid "use <n> digits to display SHA-1s" msgstr "benutze <n> Ziffern zur Anzeige von SHA-1s" @@ -12927,7 +13816,8 @@ msgid "" "Error: Your local changes to the following files would be overwritten by " "merge" msgstr "" -"Fehler Ihre lokalen Änderungen in den folgenden Dateien würden durch den Merge\n" +"Fehler Ihre lokalen Änderungen in den folgenden Dateien würden durch den " +"Merge\n" "überschrieben werden" #: git-merge-octopus.sh:61 @@ -12935,7 +13825,7 @@ msgid "Automated merge did not work." msgstr "Automatischer Merge hat nicht funktioniert." #: git-merge-octopus.sh:62 -msgid "Should not be doing an Octopus." +msgid "Should not be doing an octopus." msgstr "Sollte keinen Octopus-Merge ausführen." #: git-merge-octopus.sh:73 @@ -13128,6 +14018,10 @@ msgstr "Sie haben bisher noch keinen initialen Commit" msgid "Cannot save the current index state" msgstr "Kann den aktuellen Zustand des Index nicht speichern" +#: git-stash.sh:103 +msgid "Cannot save the untracked files" +msgstr "Kann die unversionierten Dateien nicht speichern" + #: git-stash.sh:123 git-stash.sh:136 msgid "Cannot save the current worktree state" msgstr "Kann den aktuellen Zustand des Arbeitsverzeichnisses nicht speichern" @@ -13169,6 +14063,10 @@ msgstr "" " Um eine Beschreibung anzugeben, benutzen Sie \"git stash save -- " "'$option'\"" +#: git-stash.sh:251 +msgid "Can't use --patch and --include-untracked or --all at the same time" +msgstr "Kann nicht gleichzeitig --patch und --include-untracked oder --all verwenden" + #: git-stash.sh:259 msgid "No local changes to save" msgstr "Keine lokalen Änderungen zum Speichern" @@ -13190,98 +14088,102 @@ msgstr "Speicherte Arbeitsverzeichnis und Index-Status $stash_msg" msgid "Cannot remove worktree changes" msgstr "Kann Änderungen im Arbeitsverzeichnis nicht löschen" -#: git-stash.sh:404 +#: git-stash.sh:403 #, sh-format msgid "unknown option: $opt" msgstr "unbekannte Option: $opt" -#: git-stash.sh:414 +#: git-stash.sh:416 msgid "No stash found." msgstr "Kein Stash-Eintrag gefunden." -#: git-stash.sh:421 +#: git-stash.sh:423 #, sh-format msgid "Too many revisions specified: $REV" msgstr "Zu viele Commits angegeben: $REV" -#: git-stash.sh:427 +#: git-stash.sh:438 #, sh-format msgid "$reference is not a valid reference" msgstr "$reference ist keine gültige Referenz" -#: git-stash.sh:455 +#: git-stash.sh:466 #, sh-format msgid "'$args' is not a stash-like commit" msgstr "'$args' ist kein \"stash\"-artiger Commit" -#: git-stash.sh:466 +#: git-stash.sh:477 #, sh-format msgid "'$args' is not a stash reference" msgstr "'$args' ist keine \"stash\"-Referenz" -#: git-stash.sh:474 +#: git-stash.sh:485 msgid "unable to refresh index" msgstr "Konnte den Index nicht aktualisieren." -#: git-stash.sh:478 +#: git-stash.sh:489 msgid "Cannot apply a stash in the middle of a merge" msgstr "Kann \"stash\" nicht anwenden, solang ein Merge im Gange ist" -#: git-stash.sh:486 +#: git-stash.sh:497 msgid "Conflicts in index. Try without --index." msgstr "Konflikte im Index. Versuchen Sie es ohne --index." -#: git-stash.sh:488 +#: git-stash.sh:499 msgid "Could not save index tree" msgstr "Konnte Index-Verzeichnis nicht speichern" -#: git-stash.sh:522 +#: git-stash.sh:508 +msgid "Could not restore untracked files from stash" +msgstr "Konnte unversionierte Dateien vom Stash nicht wiederherstellen" + +#: git-stash.sh:533 msgid "Cannot unstage modified files" msgstr "Kann geänderte Dateien nicht aus dem Index entfernen" -#: git-stash.sh:537 +#: git-stash.sh:548 msgid "Index was not unstashed." msgstr "Index wurde nicht aus dem Stash zurückgeladen." -#: git-stash.sh:551 +#: git-stash.sh:562 msgid "The stash is kept in case you need it again." msgstr "Der Stash wird behalten, im Falle Sie benötigen diesen nochmal." -#: git-stash.sh:560 +#: git-stash.sh:571 #, sh-format msgid "Dropped ${REV} ($s)" msgstr "Gelöscht ${REV} ($s)" -#: git-stash.sh:561 +#: git-stash.sh:572 #, sh-format msgid "${REV}: Could not drop stash entry" msgstr "${REV}: Konnte \"stash\"-Eintrag nicht löschen" -#: git-stash.sh:569 +#: git-stash.sh:580 msgid "No branch name specified" msgstr "Kein Branchname spezifiziert" -#: git-stash.sh:641 +#: git-stash.sh:652 msgid "(To restore them type \"git stash apply\")" msgstr "(Zur Wiederherstellung geben Sie \"git stash apply\" ein)" -#: git-submodule.sh:183 +#: git-submodule.sh:184 msgid "Relative path can only be used from the toplevel of the working tree" msgstr "" "Relative Pfade können nur von der obersten Ebene des Arbeitsverzeichnisses " "benutzt werden." -#: git-submodule.sh:193 +#: git-submodule.sh:194 #, sh-format msgid "repo URL: '$repo' must be absolute or begin with ./|../" msgstr "repo URL: '$repo' muss absolut sein oder mit ./|../ beginnen" -#: git-submodule.sh:210 +#: git-submodule.sh:211 #, sh-format msgid "'$sm_path' already exists in the index" msgstr "'$sm_path' ist bereits zum Commit vorgemerkt" -#: git-submodule.sh:214 +#: git-submodule.sh:215 #, sh-format msgid "" "The following path is ignored by one of your .gitignore files:\n" @@ -13292,24 +14194,24 @@ msgstr "" "$sm_path\n" "Benutzen Sie -f wenn Sie diesen wirklich hinzufügen möchten." -#: git-submodule.sh:232 +#: git-submodule.sh:233 #, sh-format msgid "Adding existing repo at '$sm_path' to the index" msgstr "Füge existierendes Repository in '$sm_path' dem Index hinzu." -#: git-submodule.sh:234 +#: git-submodule.sh:235 #, sh-format msgid "'$sm_path' already exists and is not a valid git repo" msgstr "'$sm_path' existiert bereits und ist kein gültiges Git-Repository" -#: git-submodule.sh:242 +#: git-submodule.sh:243 #, sh-format msgid "A git directory for '$sm_name' is found locally with remote(s):" msgstr "" "Ein Git-Verzeichnis für '$sm_name' wurde lokal gefunden mit den Remote-" "Repositories:" -#: git-submodule.sh:244 +#: git-submodule.sh:245 #, sh-format msgid "" "If you want to reuse this local git directory instead of cloning again from\n" @@ -13319,65 +14221,69 @@ msgid "" "or you are unsure what this means choose another name with the '--name' " "option." msgstr "" -"Wenn Sie das lokale Git-Verzeichnis wiederverwenden wollen, anstatt erneut von\n" +"Wenn Sie das lokale Git-Verzeichnis wiederverwenden wollen, anstatt erneut " +"von\n" " $realrepo\n" -"zu klonen, benutzen Sie die Option '--force'. Wenn das lokale Git-Verzeichnis\n" +"zu klonen, benutzen Sie die Option '--force'. Wenn das lokale Git-" +"Verzeichnis\n" "nicht das korrekte Repository ist oder Sie unsicher sind, was das bedeutet,\n" "wählen Sie einen anderen Namen mit der Option '--name'." -#: git-submodule.sh:250 +#: git-submodule.sh:251 #, sh-format msgid "Reactivating local git directory for submodule '$sm_name'." msgstr "Reaktiviere lokales Git-Verzeichnis für Submodul '$sm_name'." -#: git-submodule.sh:262 +#: git-submodule.sh:263 #, sh-format msgid "Unable to checkout submodule '$sm_path'" msgstr "Kann Submodul '$sm_path' nicht auschecken" -#: git-submodule.sh:267 +#: git-submodule.sh:268 #, sh-format msgid "Failed to add submodule '$sm_path'" msgstr "Hinzufügen von Submodul '$sm_path' fehlgeschlagen" -#: git-submodule.sh:276 +#: git-submodule.sh:277 #, sh-format msgid "Failed to register submodule '$sm_path'" msgstr "Fehler beim Eintragen von Submodul '$sm_path' in die Konfiguration." -#: git-submodule.sh:323 +#: git-submodule.sh:324 #, sh-format msgid "Entering '$displaypath'" msgstr "Betrete '$displaypath'" -#: git-submodule.sh:343 +#: git-submodule.sh:344 #, sh-format msgid "Stopping at '$displaypath'; script returned non-zero status." msgstr "Stoppe bei '$displaypath'; Skript gab nicht-Null Status zurück." -#: git-submodule.sh:414 +#: git-submodule.sh:415 #, sh-format msgid "pathspec and --all are incompatible" msgstr "Pfadspezifikationen und --all sind inkompatibel." -#: git-submodule.sh:419 +#: git-submodule.sh:420 #, sh-format msgid "Use '--all' if you really want to deinitialize all submodules" msgstr "" "Verwenden Sie '--all', wenn Sie wirklich alle Submodule deinitialisieren\n" "möchten." -#: git-submodule.sh:439 +#: git-submodule.sh:440 #, 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 "" -"Arbeitsverzeichnis von Submodul in '$displaypath' enthält ein .git-Verzeichnis\n" -"(benutzen Sie 'rm -rf' wenn Sie dieses wirklich mitsamt seiner Historie löschen\n" +"Arbeitsverzeichnis von Submodul in '$displaypath' enthält ein .git-" +"Verzeichnis\n" +"(benutzen Sie 'rm -rf' wenn Sie dieses wirklich mitsamt seiner Historie " +"löschen\n" "möchten)" -#: git-submodule.sh:447 +#: git-submodule.sh:448 #, sh-format msgid "" "Submodule work tree '$displaypath' contains local modifications; use '-f' to " @@ -13386,41 +14292,41 @@ msgstr "" "Arbeitsverzeichnis von Submodul in '$displaypath' enthält lokale Änderungen; " "verwenden Sie '-f', um diese zu verwerfen" -#: git-submodule.sh:450 +#: git-submodule.sh:451 #, sh-format msgid "Cleared directory '$displaypath'" msgstr "Verzeichnis '$displaypath' bereinigt." -#: git-submodule.sh:451 +#: git-submodule.sh:452 #, sh-format msgid "Could not remove submodule work tree '$displaypath'" msgstr "" "Konnte Arbeitsverzeichnis des Submoduls in '$displaypath' nicht löschen." -#: git-submodule.sh:454 +#: git-submodule.sh:455 #, sh-format msgid "Could not create empty submodule directory '$displaypath'" msgstr "" "Konnte kein leeres Verzeichnis für Submodul in '$displaypath' erstellen." -#: git-submodule.sh:463 +#: git-submodule.sh:464 #, sh-format msgid "Submodule '$name' ($url) unregistered for path '$displaypath'" msgstr "" "Submodul '$name' ($url) für Pfad '$displaypath' wurde aus der Konfiguration " "entfernt." -#: git-submodule.sh:612 +#: git-submodule.sh:617 #, sh-format msgid "Unable to find current revision in submodule path '$displaypath'" msgstr "Konnte aktuellen Commit in Submodul-Pfad '$displaypath' nicht finden." -#: git-submodule.sh:622 +#: git-submodule.sh:627 #, sh-format msgid "Unable to fetch in submodule path '$sm_path'" msgstr "Konnte \"fetch\" in Submodul-Pfad '$sm_path' nicht ausführen" -#: git-submodule.sh:627 +#: git-submodule.sh:632 #, sh-format msgid "" "Unable to find current ${remote_name}/${branch} revision in submodule path " @@ -13429,12 +14335,12 @@ msgstr "" "Konnte aktuellen Commit von ${remote_name}/${branch} in Submodul-Pfad\n" "'$sm_path' nicht finden." -#: git-submodule.sh:645 +#: git-submodule.sh:650 #, sh-format msgid "Unable to fetch in submodule path '$displaypath'" msgstr "Konnte \"fetch\" in Submodul-Pfad '$displaypath' nicht ausführen" -#: git-submodule.sh:651 +#: git-submodule.sh:656 #, sh-format msgid "" "Fetched in submodule path '$displaypath', but it did not contain $sha1. " @@ -13443,89 +14349,85 @@ msgstr "" "\"fetch\" in Submodul-Pfad '$displaypath' ausgeführt, aber $sha1 nicht\n" "enthalten. Direktes Anfordern dieses Commits ist fehlgeschlagen." -#: git-submodule.sh:658 +#: git-submodule.sh:663 #, sh-format msgid "Unable to checkout '$sha1' in submodule path '$displaypath'" msgstr "Konnte '$sha1' in Submodul-Pfad '$displaypath' nicht auschecken." -#: git-submodule.sh:659 +#: git-submodule.sh:664 #, sh-format msgid "Submodule path '$displaypath': checked out '$sha1'" msgstr "Submodul-Pfad: '$displaypath': '$sha1' ausgecheckt" -#: git-submodule.sh:663 +#: git-submodule.sh:668 #, sh-format msgid "Unable to rebase '$sha1' in submodule path '$displaypath'" msgstr "Rebase auf '$sha1' in Submodul-Pfad '$displaypath' nicht möglich" -#: git-submodule.sh:664 +#: git-submodule.sh:669 #, sh-format msgid "Submodule path '$displaypath': rebased into '$sha1'" msgstr "Submodul-Pfad '$displaypath': Rebase auf '$sha1'" -#: git-submodule.sh:669 +#: git-submodule.sh:674 #, sh-format msgid "Unable to merge '$sha1' in submodule path '$displaypath'" msgstr "Merge von '$sha1' in Submodul-Pfad '$displaypath' fehlgeschlagen" -#: git-submodule.sh:670 +#: git-submodule.sh:675 #, sh-format msgid "Submodule path '$displaypath': merged in '$sha1'" msgstr "Submodul-Pfad '$displaypath': zusammengeführt in '$sha1'" -#: git-submodule.sh:675 +#: git-submodule.sh:680 #, sh-format msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'" msgstr "" "Ausführung von '$command $sha1' in Submodul-Pfad '$displaypath' " "fehlgeschlagen" -#: git-submodule.sh:676 +#: git-submodule.sh:681 #, sh-format msgid "Submodule path '$displaypath': '$command $sha1'" msgstr "Submodul-Pfad '$displaypath': '$command $sha1'" -#: git-submodule.sh:707 +#: git-submodule.sh:712 #, sh-format msgid "Failed to recurse into submodule path '$displaypath'" msgstr "Fehler bei Rekursion in Submodul-Pfad '$displaypath'" -#: git-submodule.sh:815 +#: git-submodule.sh:820 msgid "The --cached option cannot be used with the --files option" msgstr "" "Die Optionen --cached und --files können nicht gemeinsam verwendet werden." -#: git-submodule.sh:867 +#: git-submodule.sh:872 #, sh-format msgid "unexpected mode $mod_dst" msgstr "unerwarteter Modus $mod_dst" -#: git-submodule.sh:887 +#: git-submodule.sh:892 #, sh-format msgid " Warn: $display_name doesn't contain commit $sha1_src" msgstr " Warnung: $display_name beinhaltet nicht Commit $sha1_src" -#: git-submodule.sh:890 +#: git-submodule.sh:895 #, sh-format msgid " Warn: $display_name doesn't contain commit $sha1_dst" msgstr " Warnung: $display_name beinhaltet nicht Commit $sha1_dst" -#: git-submodule.sh:893 +#: git-submodule.sh:898 #, sh-format msgid " Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst" msgstr "" " Warnung: $display_name beinhaltet nicht die Commits $sha1_src und $sha1_dst" -#: git-submodule.sh:918 -msgid "blob" -msgstr "Blob" - -#: git-submodule.sh:1040 +#: git-submodule.sh:1045 #, sh-format msgid "Failed to recurse into submodule path '$sm_path'" msgstr "Fehler bei Rekursion in Submodul-Pfad '$sm_path'" -#: git-submodule.sh:1107 +#: git-submodule.sh:1112 #, sh-format msgid "Synchronizing submodule url for '$displaypath'" msgstr "Synchronisiere Submodul-URL für '$displaypath'" @@ -13535,12 +14437,12 @@ msgstr "Synchronisiere Submodul-URL für '$displaypath'" msgid "See git-${cmd}(1) for details." msgstr "Siehe git-${cmd}(1) für weitere Details." -#: git-rebase--interactive.sh:131 +#: git-rebase--interactive.sh:140 #, sh-format msgid "Rebasing ($new_count/$total)" msgstr "Führe Rebase aus ($new_count/$total)" -#: git-rebase--interactive.sh:147 +#: git-rebase--interactive.sh:156 msgid "" "\n" "Commands:\n" @@ -13567,7 +14469,7 @@ msgstr "" "Diese Zeilen können umsortiert werden; Sie werden von oben nach unten\n" "ausgeführt.\n" -#: git-rebase--interactive.sh:162 +#: git-rebase--interactive.sh:171 msgid "" "\n" "Do not remove any line. Use 'drop' explicitly to remove a commit.\n" @@ -13576,13 +14478,15 @@ msgstr "" "Keine Zeile entfernen. Benutzen Sie 'drop', um explizit einen Commit zu\n" "entfernen.\n" -#: git-rebase--interactive.sh:166 +#: git-rebase--interactive.sh:175 msgid "" "\n" "If you remove a line here THAT COMMIT WILL BE LOST.\n" -msgstr "\nWenn Sie hier eine Zeile entfernen, wird DIESER COMMIT VERLOREN GEHEN.\n" +msgstr "" +"\n" +"Wenn Sie hier eine Zeile entfernen, wird DIESER COMMIT VERLOREN GEHEN.\n" -#: git-rebase--interactive.sh:202 +#: git-rebase--interactive.sh:211 #, sh-format msgid "" "You can amend the commit now, with\n" @@ -13601,87 +14505,87 @@ msgstr "" "\n" "\tgit rebase --continue" -#: git-rebase--interactive.sh:227 +#: git-rebase--interactive.sh:236 #, sh-format msgid "$sha1: not a commit that can be picked" msgstr "$sha1: kein Commit der gepickt werden kann" -#: git-rebase--interactive.sh:266 +#: git-rebase--interactive.sh:275 #, sh-format msgid "Invalid commit name: $sha1" msgstr "Ungültiger Commit-Name: $sha1" -#: git-rebase--interactive.sh:308 +#: git-rebase--interactive.sh:317 msgid "Cannot write current commit's replacement sha1" msgstr "Kann ersetzenden SHA-1 des aktuellen Commits nicht schreiben" -#: git-rebase--interactive.sh:360 +#: git-rebase--interactive.sh:369 #, sh-format msgid "Fast-forward to $sha1" msgstr "Spule vor zu $sha1" -#: git-rebase--interactive.sh:362 +#: git-rebase--interactive.sh:371 #, sh-format msgid "Cannot fast-forward to $sha1" msgstr "Kann nicht zu $sha1 vorspulen" -#: git-rebase--interactive.sh:371 +#: git-rebase--interactive.sh:380 #, sh-format msgid "Cannot move HEAD to $first_parent" msgstr "Kann HEAD nicht auf $first_parent setzen" -#: git-rebase--interactive.sh:376 +#: git-rebase--interactive.sh:385 #, sh-format msgid "Refusing to squash a merge: $sha1" msgstr "\"squash\" eines Merges ($sha1) zurückgewiesen." -#: git-rebase--interactive.sh:390 +#: git-rebase--interactive.sh:399 #, sh-format msgid "Error redoing merge $sha1" msgstr "Fehler beim Wiederholen des Merges von $sha1" -#: git-rebase--interactive.sh:398 +#: git-rebase--interactive.sh:407 #, sh-format msgid "Could not pick $sha1" msgstr "Konnte $sha1 nicht picken" -#: git-rebase--interactive.sh:407 +#: git-rebase--interactive.sh:416 #, sh-format msgid "This is the commit message #${n}:" msgstr "Das ist Commit-Beschreibung #${n}:" -#: git-rebase--interactive.sh:412 +#: git-rebase--interactive.sh:421 #, sh-format msgid "The commit message #${n} will be skipped:" msgstr "Commit-Beschreibung #${n} wird ausgelassen:" -#: git-rebase--interactive.sh:423 +#: git-rebase--interactive.sh:432 #, sh-format msgid "This is a combination of $count commit." msgid_plural "This is a combination of $count commits." msgstr[0] "Das ist eine Kombination aus $count Commit." msgstr[1] "Das ist eine Kombination aus $count Commits." -#: git-rebase--interactive.sh:431 +#: git-rebase--interactive.sh:440 #, sh-format msgid "Cannot write $fixup_msg" msgstr "Kann $fixup_msg nicht schreiben" -#: git-rebase--interactive.sh:434 +#: git-rebase--interactive.sh:443 msgid "This is a combination of 2 commits." msgstr "Das ist eine Kombination aus 2 Commits." -#: git-rebase--interactive.sh:435 +#: git-rebase--interactive.sh:444 msgid "This is the 1st commit message:" msgstr "Das ist die erste Commit-Beschreibung:" -#: git-rebase--interactive.sh:475 git-rebase--interactive.sh:518 -#: git-rebase--interactive.sh:521 +#: git-rebase--interactive.sh:484 git-rebase--interactive.sh:527 +#: git-rebase--interactive.sh:530 #, sh-format msgid "Could not apply $sha1... $rest" msgstr "Konnte $sha1... ($rest) nicht anwenden" -#: git-rebase--interactive.sh:549 +#: git-rebase--interactive.sh:558 #, sh-format msgid "" "Could not amend commit after successfully picking $sha1... $rest\n" @@ -13690,36 +14594,39 @@ msgid "" "before\n" "you are able to reword the commit." msgstr "" -"Konnte Commit nicht nachbessern, nachdem dieser verwendet wurde: $sha1... $rest\n" -"Das passierte sehr wahrscheinlich wegen einer leeren Commit-Beschreibung, oder\n" +"Konnte Commit nicht nachbessern, nachdem dieser verwendet wurde: $sha1... " +"$rest\n" +"Das passierte sehr wahrscheinlich wegen einer leeren Commit-Beschreibung, " +"oder\n" "weil der pre-commit Hook fehlschlug. Falls der pre-commit Hook fehlschlug,\n" -"sollten Sie das Problem beheben, bevor Sie die Commit-Beschreibung ändern können." +"sollten Sie das Problem beheben, bevor Sie die Commit-Beschreibung ändern " +"können." -#: git-rebase--interactive.sh:564 +#: git-rebase--interactive.sh:573 #, sh-format msgid "Stopped at $sha1_abbrev... $rest" msgstr "Angehalten bei $sha1_abbrev... $rest" -#: git-rebase--interactive.sh:579 +#: git-rebase--interactive.sh:588 #, sh-format msgid "Cannot '$squash_style' without a previous commit" msgstr "Kann nicht '$squash_style' ohne vorherigen Commit" -#: git-rebase--interactive.sh:621 +#: git-rebase--interactive.sh:630 #, sh-format msgid "Executing: $rest" msgstr "Führe aus: $rest" -#: git-rebase--interactive.sh:629 +#: git-rebase--interactive.sh:638 #, sh-format msgid "Execution failed: $rest" msgstr "Ausführung fehlgeschlagen: $rest" -#: git-rebase--interactive.sh:631 +#: git-rebase--interactive.sh:640 msgid "and made changes to the index and/or the working tree" msgstr "Der Index und/oder das Arbeitsverzeichnis wurde geändert." -#: git-rebase--interactive.sh:633 +#: git-rebase--interactive.sh:642 msgid "" "You can fix the problem, and then run\n" "\n" @@ -13732,7 +14639,7 @@ msgstr "" "ausführen." #. TRANSLATORS: after these lines is a command to be issued by the user -#: git-rebase--interactive.sh:646 +#: git-rebase--interactive.sh:655 #, sh-format msgid "" "Execution succeeded: $rest\n" @@ -13748,25 +14655,25 @@ msgstr "" "\n" "\tgit rebase --continue" -#: git-rebase--interactive.sh:657 +#: git-rebase--interactive.sh:666 #, sh-format msgid "Unknown command: $command $sha1 $rest" msgstr "Unbekannter Befehl: $command $sha1 $rest" -#: git-rebase--interactive.sh:658 +#: git-rebase--interactive.sh:667 msgid "Please fix this using 'git rebase --edit-todo'." msgstr "Bitte beheben Sie das, indem Sie 'git rebase --edit-todo' ausführen." -#: git-rebase--interactive.sh:693 +#: git-rebase--interactive.sh:702 #, sh-format msgid "Successfully rebased and updated $head_name." msgstr "Erfolgreich Rebase ausgeführt und $head_name aktualisiert." -#: git-rebase--interactive.sh:740 +#: git-rebase--interactive.sh:749 msgid "Could not skip unnecessary pick commands" msgstr "Fehler beim Auslassen von nicht erforderlichen \"pick\"-Befehlen." -#: git-rebase--interactive.sh:898 +#: git-rebase--interactive.sh:907 #, sh-format msgid "" "Warning: the SHA-1 is missing or isn't a commit in the following line:\n" @@ -13775,7 +14682,7 @@ msgstr "" "Warnung: Der SHA-1 in der folgenden Zeile fehlt oder ist kein Commit:\n" " - $line" -#: git-rebase--interactive.sh:931 +#: git-rebase--interactive.sh:940 #, sh-format msgid "" "Warning: the command isn't recognized in the following line:\n" @@ -13784,11 +14691,11 @@ msgstr "" "Warnung: Das Kommando in der folgenden Zeile wurde nicht erkannt:\n" " - $line" -#: git-rebase--interactive.sh:970 +#: git-rebase--interactive.sh:979 msgid "could not detach HEAD" msgstr "Konnte HEAD nicht loslösen" -#: git-rebase--interactive.sh:1008 +#: git-rebase--interactive.sh:1017 msgid "" "Warning: some commits may have been dropped accidentally.\n" "Dropped commits (newer to older):" @@ -13796,7 +14703,7 @@ msgstr "" "Warnung: Einige Commits könnten aus Versehen entfernt worden sein.\n" "Entfernte Commits (neu zu alt):" -#: git-rebase--interactive.sh:1016 +#: git-rebase--interactive.sh:1025 msgid "" "To avoid this message, use \"drop\" to explicitly remove a commit.\n" "\n" @@ -13807,32 +14714,38 @@ msgstr "" "Um diese Meldung zu vermeiden, benutzen Sie \"drop\", um exlizit Commits zu\n" "entfernen.\n" "\n" -"Benutzen Sie 'git config rebase.missingCommitsCheck', um die Stufe der Warnungen\n" +"Benutzen Sie 'git config rebase.missingCommitsCheck', um die Stufe der " +"Warnungen\n" "zu ändern.\n" "Die möglichen Verhaltensweisen sind: ignore, warn, error." -#: git-rebase--interactive.sh:1027 +#: git-rebase--interactive.sh:1036 #, sh-format msgid "" "Unrecognized setting $check_level for option rebase.missingCommitsCheck. " "Ignoring." msgstr "" -"Nicht erkannte Einstellung $check_level für Option rebase.missingCommitsCheck.\n" +"Nicht erkannte Einstellung $check_level für Option rebase." +"missingCommitsCheck.\n" "Ignoriere." -#: git-rebase--interactive.sh:1044 -msgid "You can fix this with 'git rebase --edit-todo'." -msgstr "Sie können das mit 'git rebase --edit-todo' beheben." +#: git-rebase--interactive.sh:1053 +msgid "" +"You can fix this with 'git rebase --edit-todo' and then run 'git rebase --" +"continue'." +msgstr "" +"Sie können das mit 'git rebase --edit-todo' beheben. Führen Sie danach\n" +"'git rebase --continue' aus." -#: git-rebase--interactive.sh:1045 +#: git-rebase--interactive.sh:1054 msgid "Or you can abort the rebase with 'git rebase --abort'." msgstr "Oder Sie können den Rebase mit 'git rebase --abort' abbrechen." -#: git-rebase--interactive.sh:1069 +#: git-rebase--interactive.sh:1078 msgid "Could not remove CHERRY_PICK_HEAD" msgstr "Konnte CHERRY_PICK_HEAD nicht löschen" -#: git-rebase--interactive.sh:1074 +#: git-rebase--interactive.sh:1083 #, sh-format msgid "" "You have staged changes in your working tree.\n" @@ -13845,7 +14758,7 @@ msgid "" "\n" " git commit $gpg_sign_opt_quoted\n" "\n" -"In both case, once you're done, continue with:\n" +"In both cases, once you're done, continue with:\n" "\n" " git rebase --continue\n" msgstr "" @@ -13863,26 +14776,27 @@ msgstr "" "\n" " git rebase --continue\n" -#: git-rebase--interactive.sh:1091 +#: git-rebase--interactive.sh:1100 msgid "Error trying to find the author identity to amend commit" msgstr "" "Fehler beim Versuch die Identität des Authors zum Verbessern des Commits zu\n" "finden" -#: git-rebase--interactive.sh:1096 +#: git-rebase--interactive.sh:1105 msgid "" "You have uncommitted changes in your working tree. Please commit them\n" "first and then run 'git rebase --continue' again." msgstr "" "Sie haben nicht committete Änderungen in Ihrem Arbeitsverzeichnis. Bitte\n" -"committen Sie diese zuerst und führen Sie dann 'git rebase --continue' erneut\n" +"committen Sie diese zuerst und führen Sie dann 'git rebase --continue' " +"erneut\n" "aus." -#: git-rebase--interactive.sh:1101 git-rebase--interactive.sh:1105 +#: git-rebase--interactive.sh:1110 git-rebase--interactive.sh:1114 msgid "Could not commit staged changes." msgstr "Konnte Änderungen aus der Staging-Area nicht committen." -#: git-rebase--interactive.sh:1129 +#: git-rebase--interactive.sh:1138 msgid "" "\n" "You are editing the todo file of an ongoing interactive rebase.\n" @@ -13896,51 +14810,50 @@ msgstr "" " git rebase --continue\n" "\n" -#: git-rebase--interactive.sh:1137 git-rebase--interactive.sh:1298 +#: git-rebase--interactive.sh:1146 git-rebase--interactive.sh:1304 msgid "Could not execute editor" msgstr "Konnte Editor nicht ausführen." -#: git-rebase--interactive.sh:1145 -msgid "You need to set your committer info first" -msgstr "Sie müssen zuerst die Informationen zum Commit-Ersteller setzen." - -#: git-rebase--interactive.sh:1153 +#: git-rebase--interactive.sh:1159 #, sh-format msgid "Could not checkout $switch_to" msgstr "Konnte $switch_to nicht auschecken." -#: git-rebase--interactive.sh:1158 +#: git-rebase--interactive.sh:1164 msgid "No HEAD?" msgstr "Kein HEAD?" -#: git-rebase--interactive.sh:1159 +#: git-rebase--interactive.sh:1165 #, sh-format msgid "Could not create temporary $state_dir" msgstr "Konnte temporäres Verzeichnis $state_dir nicht erstellen." -#: git-rebase--interactive.sh:1161 +#: git-rebase--interactive.sh:1167 msgid "Could not mark as interactive" msgstr "Konnte nicht als interaktiven Rebase markieren." -#: git-rebase--interactive.sh:1171 git-rebase--interactive.sh:1176 +#: git-rebase--interactive.sh:1177 git-rebase--interactive.sh:1182 msgid "Could not init rewritten commits" msgstr "Konnte neu geschriebene Commits nicht initialisieren." -#: git-rebase--interactive.sh:1276 +#: git-rebase--interactive.sh:1282 #, sh-format msgid "Rebase $shortrevisions onto $shortonto ($todocount command)" msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)" msgstr[0] "Rebase von $shortrevisions auf $shortonto ($todocount Kommando)" msgstr[1] "Rebase von $shortrevisions auf $shortonto ($todocount Kommandos)" -#: git-rebase--interactive.sh:1281 +#: git-rebase--interactive.sh:1287 msgid "" "\n" "However, if you remove everything, the rebase will be aborted.\n" "\n" -msgstr "\nWenn Sie jedoch alles löschen, wird der Rebase abgebrochen.\n\n" +msgstr "" +"\n" +"Wenn Sie jedoch alles löschen, wird der Rebase abgebrochen.\n" +"\n" -#: git-rebase--interactive.sh:1288 +#: git-rebase--interactive.sh:1294 msgid "Note that empty commits are commented out" msgstr "Leere Commits sind auskommentiert." @@ -13959,18 +14872,28 @@ msgstr "" #: 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 kann ohne ein Arbeitsverzeichnis nicht verwendet werden." +msgstr "" +"fatal: $program_name kann ohne ein Arbeitsverzeichnis nicht verwendet werden." #: git-sh-setup.sh:220 msgid "Cannot rebase: You have unstaged changes." -msgstr "Rebase nicht möglich: Sie haben Änderungen, die nicht zum Commit vorgemerkt sind." +msgstr "" +"Rebase nicht möglich: Sie haben Änderungen, die nicht zum Commit vorgemerkt " +"sind." #: git-sh-setup.sh:223 msgid "Cannot rewrite branches: You have unstaged changes." msgstr "" -"Kann Branches nicht neu schreiben: Sie haben Änderungen, die nicht zum Commit\n" +"Kann Branches nicht neu schreiben: Sie haben Änderungen, die nicht zum " +"Commit\n" "vorgemerkt sind." +#: git-sh-setup.sh:226 +msgid "Cannot pull with rebase: You have unstaged changes." +msgstr "" +"Kann \"pull\" mit \"rebase\" nicht ausführen: Sie haben Änderungen, die " +"nicht zum Commit vorgemerkt sind." + #: git-sh-setup.sh:229 #, sh-format msgid "Cannot $action: You have unstaged changes." @@ -13980,7 +14903,15 @@ msgstr "" #: git-sh-setup.sh:242 msgid "Cannot rebase: Your index contains uncommitted changes." -msgstr "Rebase nicht möglich: Die Staging-Area beinhaltet nicht committete Änderungen." +msgstr "" +"Rebase nicht möglich: Die Staging-Area beinhaltet nicht committete " +"Änderungen." + +#: git-sh-setup.sh:245 +msgid "Cannot pull with rebase: Your index contains uncommitted changes." +msgstr "" +"Kann \"pull\" mit \"rebase\" nicht ausführen: Die Staging-Area beinhaltet " +"nicht committete Änderungen." #: git-sh-setup.sh:248 #, sh-format @@ -13989,11 +14920,54 @@ msgstr "" "Kann $action nicht ausführen: Die Staging-Area beinhaltet nicht committete\n" "Änderungen." +#: git-sh-setup.sh:252 +msgid "Additionally, your index contains uncommitted changes." +msgstr "Zusätzlich beinhaltet die Staging-Area nicht committete Änderungen." + #: git-sh-setup.sh:372 msgid "You need to run this command from the toplevel of the working tree." -msgstr "Sie müssen den Befehl von der obersten Ebene des Arbeitsverzeichnisses ausführen." +msgstr "" +"Sie müssen den Befehl von der obersten Ebene des Arbeitsverzeichnisses " +"ausführen." #: git-sh-setup.sh:377 msgid "Unable to determine absolute path of git directory" msgstr "Konnte absoluten Pfad des Git-Verzeichnisses nicht bestimmen." +#~ msgid "Could not write to %s" +#~ msgstr "Konnte nicht nach %s schreiben" + +#~ msgid "Error wrapping up %s." +#~ msgstr "Fehler beim Einpacken von %s." + +#~ msgid "Your local changes would be overwritten by cherry-pick." +#~ msgstr "" +#~ "Ihre lokalen Änderungen würden durch den Cherry-Pick überschrieben werden." + +#~ msgid "Cannot revert during another revert." +#~ msgstr "Kann Revert nicht während eines anderen Reverts ausführen." + +#~ msgid "Cannot cherry-pick during another cherry-pick." +#~ msgstr "" +#~ "Kann Cherry-Pick nicht während eines anderen Cherry-Picks ausführen." + +#~ msgid "Could not parse line %d." +#~ msgstr "Konnte Zeile %d nicht parsen." + +#~ msgid "Could not open %s" +#~ msgstr "Konnte %s nicht öffnen" + +#~ msgid "Could not read %s." +#~ msgstr "Konnte %s nicht lesen." + +#~ msgid "Could not format %s." +#~ msgstr "Konnte %s nicht formatieren." + +#~ msgid "%s: %s" +#~ msgstr "%s: %s" + +#~ msgid "cannot open %s: %s" +#~ msgstr "Kann %s nicht öffnen: %s" + +#~ msgid "You need to set your committer info first" +#~ msgstr "Sie müssen zuerst die Informationen zum Commit-Ersteller setzen." @@ -73,8 +73,8 @@ msgid "" msgstr "" "Project-Id-Version: git\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2016-11-22 22:10+0800\n" -"PO-Revision-Date: 2016-11-22 22:16+0800\n" +"POT-Creation-Date: 2016-11-25 22:50+0800\n" +"PO-Revision-Date: 2016-11-25 22:55+0800\n" "Last-Translator: Jean-Noël Avila <jn.avila@free.fr>\n" "Language-Team: Jean-Noël Avila <jn.avila@free.fr>\n" "Language: fr\n" @@ -2763,7 +2763,7 @@ msgstr "impossible d'écrire dans '%s'" #: sequencer.c:251 #, c-format -msgid "could not write eol to '%s" +msgid "could not write eol to '%s'" msgstr "impossible d'écrire la fin de ligne dans '%s'" #: sequencer.c:255 sequencer.c:1130 sequencer.c:1216 diff --git a/po/git.pot b/po/git.pot index 19bccb4624..e4e29ebfd8 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-11-22 22:10+0800\n" +"POT-Creation-Date: 2016-11-25 22:50+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" @@ -726,11 +726,11 @@ msgstr "" msgid "prepend prefix to each pathname in the archive" msgstr "" -#: archive.c:432 builtin/archive.c:88 builtin/blame.c:2603 -#: builtin/blame.c:2604 builtin/config.c:59 builtin/fast-export.c:987 -#: builtin/fast-export.c:989 builtin/grep.c:723 builtin/hash-object.c:101 -#: builtin/ls-files.c:539 builtin/ls-files.c:542 builtin/notes.c:401 -#: builtin/notes.c:564 builtin/read-tree.c:109 parse-options.h:153 +#: archive.c:432 builtin/blame.c:2603 builtin/blame.c:2604 builtin/config.c:59 +#: builtin/fast-export.c:987 builtin/fast-export.c:989 builtin/grep.c:723 +#: builtin/hash-object.c:101 builtin/ls-files.c:539 builtin/ls-files.c:542 +#: builtin/notes.c:401 builtin/notes.c:564 builtin/read-tree.c:109 +#: parse-options.h:153 msgid "file" msgstr "" @@ -2494,7 +2494,7 @@ msgstr "" #: sequencer.c:251 #, c-format -msgid "could not write eol to '%s" +msgid "could not write eol to '%s'" msgstr "" #: sequencer.c:255 sequencer.c:1130 sequencer.c:1216 @@ -13269,12 +13269,12 @@ msgstr "" msgid "See git-${cmd}(1) for details." msgstr "" -#: git-rebase--interactive.sh:131 +#: git-rebase--interactive.sh:140 #, sh-format msgid "Rebasing ($new_count/$total)" msgstr "" -#: git-rebase--interactive.sh:147 +#: git-rebase--interactive.sh:156 msgid "" "\n" "Commands:\n" @@ -13289,19 +13289,19 @@ msgid "" "These lines can be re-ordered; they are executed from top to bottom.\n" msgstr "" -#: git-rebase--interactive.sh:162 +#: git-rebase--interactive.sh:171 msgid "" "\n" "Do not remove any line. Use 'drop' explicitly to remove a commit.\n" msgstr "" -#: git-rebase--interactive.sh:166 +#: git-rebase--interactive.sh:175 msgid "" "\n" "If you remove a line here THAT COMMIT WILL BE LOST.\n" msgstr "" -#: git-rebase--interactive.sh:202 +#: git-rebase--interactive.sh:211 #, sh-format msgid "" "You can amend the commit now, with\n" @@ -13313,87 +13313,87 @@ msgid "" "\tgit rebase --continue" msgstr "" -#: git-rebase--interactive.sh:227 +#: git-rebase--interactive.sh:236 #, sh-format msgid "$sha1: not a commit that can be picked" msgstr "" -#: git-rebase--interactive.sh:266 +#: git-rebase--interactive.sh:275 #, sh-format msgid "Invalid commit name: $sha1" msgstr "" -#: git-rebase--interactive.sh:308 +#: git-rebase--interactive.sh:317 msgid "Cannot write current commit's replacement sha1" msgstr "" -#: git-rebase--interactive.sh:360 +#: git-rebase--interactive.sh:369 #, sh-format msgid "Fast-forward to $sha1" msgstr "" -#: git-rebase--interactive.sh:362 +#: git-rebase--interactive.sh:371 #, sh-format msgid "Cannot fast-forward to $sha1" msgstr "" -#: git-rebase--interactive.sh:371 +#: git-rebase--interactive.sh:380 #, sh-format msgid "Cannot move HEAD to $first_parent" msgstr "" -#: git-rebase--interactive.sh:376 +#: git-rebase--interactive.sh:385 #, sh-format msgid "Refusing to squash a merge: $sha1" msgstr "" -#: git-rebase--interactive.sh:390 +#: git-rebase--interactive.sh:399 #, sh-format msgid "Error redoing merge $sha1" msgstr "" -#: git-rebase--interactive.sh:398 +#: git-rebase--interactive.sh:407 #, sh-format msgid "Could not pick $sha1" msgstr "" -#: git-rebase--interactive.sh:407 +#: git-rebase--interactive.sh:416 #, sh-format msgid "This is the commit message #${n}:" msgstr "" -#: git-rebase--interactive.sh:412 +#: git-rebase--interactive.sh:421 #, sh-format msgid "The commit message #${n} will be skipped:" msgstr "" -#: git-rebase--interactive.sh:423 +#: git-rebase--interactive.sh:432 #, 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:431 +#: git-rebase--interactive.sh:440 #, sh-format msgid "Cannot write $fixup_msg" msgstr "" -#: git-rebase--interactive.sh:434 +#: git-rebase--interactive.sh:443 msgid "This is a combination of 2 commits." msgstr "" -#: git-rebase--interactive.sh:435 +#: git-rebase--interactive.sh:444 msgid "This is the 1st commit message:" msgstr "" -#: git-rebase--interactive.sh:475 git-rebase--interactive.sh:518 -#: git-rebase--interactive.sh:521 +#: git-rebase--interactive.sh:484 git-rebase--interactive.sh:527 +#: git-rebase--interactive.sh:530 #, sh-format msgid "Could not apply $sha1... $rest" msgstr "" -#: git-rebase--interactive.sh:549 +#: git-rebase--interactive.sh:558 #, sh-format msgid "" "Could not amend commit after successfully picking $sha1... $rest\n" @@ -13403,31 +13403,31 @@ msgid "" "you are able to reword the commit." msgstr "" -#: git-rebase--interactive.sh:564 +#: git-rebase--interactive.sh:573 #, sh-format msgid "Stopped at $sha1_abbrev... $rest" msgstr "" -#: git-rebase--interactive.sh:579 +#: git-rebase--interactive.sh:588 #, sh-format msgid "Cannot '$squash_style' without a previous commit" msgstr "" -#: git-rebase--interactive.sh:621 +#: git-rebase--interactive.sh:630 #, sh-format msgid "Executing: $rest" msgstr "" -#: git-rebase--interactive.sh:629 +#: git-rebase--interactive.sh:638 #, sh-format msgid "Execution failed: $rest" msgstr "" -#: git-rebase--interactive.sh:631 +#: git-rebase--interactive.sh:640 msgid "and made changes to the index and/or the working tree" msgstr "" -#: git-rebase--interactive.sh:633 +#: git-rebase--interactive.sh:642 msgid "" "You can fix the problem, and then run\n" "\n" @@ -13435,7 +13435,7 @@ msgid "" msgstr "" #. TRANSLATORS: after these lines is a command to be issued by the user -#: git-rebase--interactive.sh:646 +#: git-rebase--interactive.sh:655 #, sh-format msgid "" "Execution succeeded: $rest\n" @@ -13445,49 +13445,49 @@ msgid "" "\tgit rebase --continue" msgstr "" -#: git-rebase--interactive.sh:657 +#: git-rebase--interactive.sh:666 #, sh-format msgid "Unknown command: $command $sha1 $rest" msgstr "" -#: git-rebase--interactive.sh:658 +#: git-rebase--interactive.sh:667 msgid "Please fix this using 'git rebase --edit-todo'." msgstr "" -#: git-rebase--interactive.sh:693 +#: git-rebase--interactive.sh:702 #, sh-format msgid "Successfully rebased and updated $head_name." msgstr "" -#: git-rebase--interactive.sh:740 +#: git-rebase--interactive.sh:749 msgid "Could not skip unnecessary pick commands" msgstr "" -#: git-rebase--interactive.sh:898 +#: git-rebase--interactive.sh:907 #, 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:931 +#: git-rebase--interactive.sh:940 #, sh-format msgid "" "Warning: the command isn't recognized in the following line:\n" " - $line" msgstr "" -#: git-rebase--interactive.sh:970 +#: git-rebase--interactive.sh:979 msgid "could not detach HEAD" msgstr "" -#: git-rebase--interactive.sh:1008 +#: git-rebase--interactive.sh:1017 msgid "" "Warning: some commits may have been dropped accidentally.\n" "Dropped commits (newer to older):" msgstr "" -#: git-rebase--interactive.sh:1016 +#: git-rebase--interactive.sh:1025 msgid "" "To avoid this message, use \"drop\" to explicitly remove a commit.\n" "\n" @@ -13496,28 +13496,28 @@ msgid "" "The possible behaviours are: ignore, warn, error." msgstr "" -#: git-rebase--interactive.sh:1027 +#: git-rebase--interactive.sh:1036 #, sh-format msgid "" "Unrecognized setting $check_level for option rebase.missingCommitsCheck. " "Ignoring." msgstr "" -#: git-rebase--interactive.sh:1044 +#: git-rebase--interactive.sh:1053 msgid "" "You can fix this with 'git rebase --edit-todo' and then run 'git rebase --" "continue'." msgstr "" -#: git-rebase--interactive.sh:1045 +#: git-rebase--interactive.sh:1054 msgid "Or you can abort the rebase with 'git rebase --abort'." msgstr "" -#: git-rebase--interactive.sh:1069 +#: git-rebase--interactive.sh:1078 msgid "Could not remove CHERRY_PICK_HEAD" msgstr "" -#: git-rebase--interactive.sh:1074 +#: git-rebase--interactive.sh:1083 #, sh-format msgid "" "You have staged changes in your working tree.\n" @@ -13535,21 +13535,21 @@ msgid "" " git rebase --continue\n" msgstr "" -#: git-rebase--interactive.sh:1091 +#: git-rebase--interactive.sh:1100 msgid "Error trying to find the author identity to amend commit" msgstr "" -#: git-rebase--interactive.sh:1096 +#: git-rebase--interactive.sh:1105 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:1101 git-rebase--interactive.sh:1105 +#: git-rebase--interactive.sh:1110 git-rebase--interactive.sh:1114 msgid "Could not commit staged changes." msgstr "" -#: git-rebase--interactive.sh:1129 +#: git-rebase--interactive.sh:1138 msgid "" "\n" "You are editing the todo file of an ongoing interactive rebase.\n" @@ -13558,47 +13558,47 @@ msgid "" "\n" msgstr "" -#: git-rebase--interactive.sh:1137 git-rebase--interactive.sh:1295 +#: git-rebase--interactive.sh:1146 git-rebase--interactive.sh:1304 msgid "Could not execute editor" msgstr "" -#: git-rebase--interactive.sh:1150 +#: git-rebase--interactive.sh:1159 #, sh-format msgid "Could not checkout $switch_to" msgstr "" -#: git-rebase--interactive.sh:1155 +#: git-rebase--interactive.sh:1164 msgid "No HEAD?" msgstr "" -#: git-rebase--interactive.sh:1156 +#: git-rebase--interactive.sh:1165 #, sh-format msgid "Could not create temporary $state_dir" msgstr "" -#: git-rebase--interactive.sh:1158 +#: git-rebase--interactive.sh:1167 msgid "Could not mark as interactive" msgstr "" -#: git-rebase--interactive.sh:1168 git-rebase--interactive.sh:1173 +#: git-rebase--interactive.sh:1177 git-rebase--interactive.sh:1182 msgid "Could not init rewritten commits" msgstr "" -#: git-rebase--interactive.sh:1273 +#: git-rebase--interactive.sh:1282 #, 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:1278 +#: git-rebase--interactive.sh:1287 msgid "" "\n" "However, if you remove everything, the rebase will be aborted.\n" "\n" msgstr "" -#: git-rebase--interactive.sh:1285 +#: git-rebase--interactive.sh:1294 msgid "Note that empty commits are commented out" msgstr "" @@ -58,8 +58,8 @@ msgid "" msgstr "" "Project-Id-Version: git\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2016-11-22 22:10+0800\n" -"PO-Revision-Date: 2016-11-22 22:16+0800\n" +"POT-Creation-Date: 2016-11-25 22:50+0800\n" +"PO-Revision-Date: 2016-11-25 22:56+0800\n" "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n" "Language-Team: Git Korean translation <http://github.com/changwoo/git-l10n-" "ko>\n" @@ -2650,7 +2650,7 @@ msgstr "'%s'ì— ì“¸ 수 없습니다" #: sequencer.c:251 #, c-format -msgid "could not write eol to '%s" +msgid "could not write eol to '%s'" msgstr "'%s'ì— ì¤„ë°”ê¿ˆì„ ì“¸ 수 없습니다" #: sequencer.c:255 sequencer.c:1130 sequencer.c:1216 diff --git a/po/pt_PT.po b/po/pt_PT.po index 59d8ef1eec..c8e096e858 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-11-22 22:10+0800\n" -"PO-Revision-Date: 2016-11-13 16:37+0000\n" +"POT-Creation-Date: 2016-11-25 22:50+0800\n" +"PO-Revision-Date: 2016-11-25 22:58+0800\n" "Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n" "Language-Team: Portuguese\n" "Language: pt\n" @@ -2665,7 +2665,7 @@ msgstr "não foi possÃvel escrever em '%s'" #: sequencer.c:251 #, c-format -msgid "could not write eol to '%s" +msgid "could not write eol to '%s'" msgstr "não foi possÃvel escrever fim de linha em '%s'" #: sequencer.c:255 sequencer.c:1130 sequencer.c:1216 @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: Git Russian Localization Project\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2016-08-27 23:21+0800\n" -"PO-Revision-Date: 2016-10-16 17:25+0000\n" +"POT-Creation-Date: 2016-11-25 22:50+0800\n" +"PO-Revision-Date: 2016-11-28 23:58+0000\n" "Last-Translator: Dimitriy Ryazantcev <DJm00n@mail.ru>\n" "Language-Team: Russian (http://www.transifex.com/djm00n/git-po-ru/language/ru/)\n" "MIME-Version: 1.0\n" @@ -88,6 +88,620 @@ msgid "" "\n" msgstr "Примечание: переход на «%s».\n\nÐ’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ð² ÑоÑтоÑнии «отделённого HEAD». Ð’Ñ‹ можете оÑмотретьÑÑ, Ñделать\nÑкÑпериментальные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸ закоммитить их, также вы можете отменить\nÐ¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð»ÑŽÐ±Ñ‹Ñ… коммитов в Ñтом ÑоÑтоÑнии не Ð·Ð°Ñ‚Ñ€Ð°Ð³Ð¸Ð²Ð°Ñ Ð»ÑŽÐ±Ñ‹Ðµ ветки и\nне Ð¿ÐµÑ€ÐµÑ…Ð¾Ð´Ñ Ð½Ð° них.\n\nЕÑли вы хотите Ñоздать новую ветку и Ñохранить Ñвои коммиты, то вы\nможете Ñделать Ñто (ÑÐµÐ¹Ñ‡Ð°Ñ Ð¸Ð»Ð¸ позже) вызвав команду checkout Ñнова,\nно Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ -b. Ðапример:\n\n git checkout -b <имÑ-новой-ветки>\n\n" +#: apply.c:57 +#, c-format +msgid "unrecognized whitespace option '%s'" +msgstr "Ð½ÐµÐ¾Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð¾Ð² «%s»" + +#: apply.c:73 +#, c-format +msgid "unrecognized whitespace ignore option '%s'" +msgstr "Ð½ÐµÐ¾Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ Ð´Ð»Ñ Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð¾Ð² «%s»" + +#: apply.c:125 +msgid "--reject and --3way cannot be used together." +msgstr "--reject и --3way Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно." + +#: apply.c:127 +msgid "--cached and --3way cannot be used together." +msgstr "--cached и --3way Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно." + +#: apply.c:130 +msgid "--3way outside a repository" +msgstr "--3way вне репозиториÑ" + +#: apply.c:141 +msgid "--index outside a repository" +msgstr "--index вне репозиториÑ" + +#: apply.c:144 +msgid "--cached outside a repository" +msgstr "--cached вне репозиториÑ" + +#: apply.c:845 +#, c-format +msgid "Cannot prepare timestamp regexp %s" +msgstr "Ðе удалоÑÑŒ подготовить регулÑрное выражение Ð´Ð»Ñ Ð¼ÐµÑ‚ÐºÐ¸ времени %s" + +#: apply.c:854 +#, c-format +msgid "regexec returned %d for input: %s" +msgstr "regexec возвратил %d Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð°: %s" + +#: apply.c:938 +#, c-format +msgid "unable to find filename in patch at line %d" +msgstr "не удалоÑÑŒ найти Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° в Ñтроке патча %d" + +#: apply.c:977 +#, c-format +msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d" +msgstr "git apply: плохой git-diff — ожидалоÑÑŒ /dev/null, получено %s на Ñтроке %d" + +#: apply.c:983 +#, c-format +msgid "git apply: bad git-diff - inconsistent new filename on line %d" +msgstr "git apply: плохой git-diff — не ÑоглаÑующееÑÑ Ð½Ð¾Ð²Ð¾Ðµ Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° на Ñтроке %d" + +#: apply.c:984 +#, c-format +msgid "git apply: bad git-diff - inconsistent old filename on line %d" +msgstr "git apply: плохой git-diff — не ÑоглаÑующееÑÑ Ñтарое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° на Ñтроке %d" + +#: apply.c:990 +#, c-format +msgid "git apply: bad git-diff - expected /dev/null on line %d" +msgstr "git apply: плохой git-diff — ожидалоÑÑŒ /dev/null на Ñтроке %d" + +#: apply.c:1488 +#, c-format +msgid "recount: unexpected line: %.*s" +msgstr "recount: не Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð°Ñ Ñтрока: %.*s" + +#: apply.c:1557 +#, c-format +msgid "patch fragment without header at line %d: %.*s" +msgstr "фрагмент изменений без заголовка на Ñтроке %d: %.*s" + +#: apply.c:1577 +#, c-format +msgid "" +"git diff header lacks filename information when removing %d leading pathname" +" component (line %d)" +msgid_plural "" +"git diff header lacks filename information when removing %d leading pathname" +" components (line %d)" +msgstr[0] "заголовок git diff не нашел информацию об имени файла при удалении %d ведущего компонента пути к файлу (Ñтрока %d)" +msgstr[1] "заголовок git diff не нашел информацию об имени файла при удалении %d ведущих компонент пути к файлу (Ñтрока %d)" +msgstr[2] "заголовок git diff не нашел информацию об имени файла при удалении %d ведущих компонент пути к файлу (Ñтрока %d)" +msgstr[3] "заголовок git diff не нашел информацию об имени файла при удалении %d ведущих компонент пути к файлу (Ñтрока %d)" + +#: apply.c:1589 +#, c-format +msgid "git diff header lacks filename information (line %d)" +msgstr "заголовок git diff не Ñодержит информации об имени файла (Ñтрока %d)" + +#: apply.c:1759 +msgid "new file depends on old contents" +msgstr "новый файл завиÑит от Ñтарого Ñодержимого" + +#: apply.c:1761 +msgid "deleted file still has contents" +msgstr "удаленный файл вÑе еще имеет Ñодержимое" + +#: apply.c:1795 +#, c-format +msgid "corrupt patch at line %d" +msgstr "патч поврежден на Ñтроке %d" + +#: apply.c:1832 +#, c-format +msgid "new file %s depends on old contents" +msgstr "новый файл %s завиÑит от Ñтарого Ñодержимого" + +#: apply.c:1834 +#, c-format +msgid "deleted file %s still has contents" +msgstr "удаленный файл %s вÑе еще имеет Ñодержимое" + +#: apply.c:1837 +#, c-format +msgid "** warning: file %s becomes empty but is not deleted" +msgstr "** предупреждение: файл %s ÑтановитÑÑ Ð¿ÑƒÑтым, но не удалÑетÑÑ" + +#: apply.c:1984 +#, c-format +msgid "corrupt binary patch at line %d: %.*s" +msgstr "поврежденный двоичный патч на Ñтроке %d: %.*s" + +#: apply.c:2021 +#, c-format +msgid "unrecognized binary patch at line %d" +msgstr "неопознанный двоичный патч на Ñтроке %d" + +#: apply.c:2182 +#, c-format +msgid "patch with only garbage at line %d" +msgstr "патч Ñ Ð¼ÑƒÑором на Ñтроке %d" + +#: apply.c:2274 +#, c-format +msgid "unable to read symlink %s" +msgstr "не удалоÑÑŒ прочитать Ñимвольную ÑÑылку %s" + +#: apply.c:2278 +#, c-format +msgid "unable to open or read %s" +msgstr "не удалоÑÑŒ открыть или прочеÑÑ‚ÑŒ %s" + +#: apply.c:2931 +#, c-format +msgid "invalid start of line: '%c'" +msgstr "неправильное начало Ñтроки: «%c»" + +#: apply.c:3050 +#, c-format +msgid "Hunk #%d succeeded at %d (offset %d line)." +msgid_plural "Hunk #%d succeeded at %d (offset %d lines)." +msgstr[0] "ЧаÑÑ‚ÑŒ #%d уÑпешно применена на %d (Ñо Ñдвигом в %d Ñтроку)." +msgstr[1] "ЧаÑÑ‚ÑŒ #%d уÑпешно применена на %d (Ñо Ñдвигом в %d Ñтроки)." +msgstr[2] "ЧаÑÑ‚ÑŒ #%d уÑпешно применена на %d (Ñо Ñдвигом в %d Ñтрок)." +msgstr[3] "ЧаÑÑ‚ÑŒ #%d уÑпешно применена на %d (Ñо Ñдвигом в %d Ñтрок)." + +#: apply.c:3062 +#, c-format +msgid "Context reduced to (%ld/%ld) to apply fragment at %d" +msgstr "КонтекÑÑ‚ Ñужен до (%ld/%ld), чтобы применить фрагмент на %d Ñтроке" + +#: apply.c:3068 +#, c-format +msgid "" +"while searching for:\n" +"%.*s" +msgstr "при поиÑке:\n%.*s" + +#: apply.c:3090 +#, c-format +msgid "missing binary patch data for '%s'" +msgstr "пропущены данные двоичного патча Ð´Ð»Ñ Â«%s»" + +#: apply.c:3098 +#, c-format +msgid "cannot reverse-apply a binary patch without the reverse hunk to '%s'" +msgstr "невозможно выполнить reverse-apply Ð´Ð»Ñ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ патча, без Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ блока «%s»" + +#: apply.c:3144 +#, c-format +msgid "cannot apply binary patch to '%s' without full index line" +msgstr "невозможно применить двоичный патч «%s» без Ñтроки Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¹ полной верÑией индекÑа" + +#: apply.c:3154 +#, c-format +msgid "" +"the patch applies to '%s' (%s), which does not match the current contents." +msgstr "патч применÑÑ‚ÑÑ Ðº файлу «%s» (%s), но его текущее Ñодержимое не ÑоотвеÑтвует ожидаемому." + +#: apply.c:3162 +#, c-format +msgid "the patch applies to an empty '%s' but it is not empty" +msgstr "патч применÑетÑÑ Ðº пуÑтому файлу «%s», но файл не пуÑтой" + +#: apply.c:3180 +#, c-format +msgid "the necessary postimage %s for '%s' cannot be read" +msgstr "не удалоÑÑŒ прочитать необходимую поÑылку %s Ð´Ð»Ñ Â«%s»" + +#: apply.c:3193 +#, c-format +msgid "binary patch does not apply to '%s'" +msgstr "не удалоÑÑŒ применить двоичный патч к «%s»" + +#: apply.c:3199 +#, c-format +msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)" +msgstr "поÑле Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ патча Ð´Ð»Ñ Â«%s» был получен неправильный результат (ожидалоÑÑŒ %s, получено %s)" + +#: apply.c:3220 +#, c-format +msgid "patch failed: %s:%ld" +msgstr "ошибка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹: %s:%ld" + +#: apply.c:3342 +#, c-format +msgid "cannot checkout %s" +msgstr "не удалоÑÑŒ переключить ÑоÑтоÑние на %s" + +#: apply.c:3390 apply.c:3401 apply.c:3447 setup.c:248 +#, c-format +msgid "failed to read %s" +msgstr "не удалоÑÑŒ прочитать %s" + +#: apply.c:3398 +#, c-format +msgid "reading from '%s' beyond a symbolic link" +msgstr "чтение из «%s» за ÑимволичеÑкой ÑÑылкой" + +#: apply.c:3427 apply.c:3667 +#, c-format +msgid "path %s has been renamed/deleted" +msgstr "путь %s был переименован/удален" + +#: apply.c:3510 apply.c:3681 +#, c-format +msgid "%s: does not exist in index" +msgstr "%s: нет в индекÑе" + +#: apply.c:3519 apply.c:3689 +#, c-format +msgid "%s: does not match index" +msgstr "%s: не Ñовпадает Ñ Ð¸Ð½Ð´ÐµÐºÑом" + +#: apply.c:3554 +msgid "repository lacks the necessary blob to fall back on 3-way merge." +msgstr "в репозитории отÑутÑтвует необходимый двоичный объект Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ñ‚Ð° к трёхходовому ÑлиÑнию." + +#: apply.c:3557 +#, c-format +msgid "Falling back to three-way merge...\n" +msgstr "Откат к трёхходовому ÑлиÑнию…\n" + +#: apply.c:3573 apply.c:3577 +#, c-format +msgid "cannot read the current contents of '%s'" +msgstr "не удалоÑÑŒ прочитать текущее Ñодержимое «%s»" + +#: apply.c:3589 +#, c-format +msgid "Failed to fall back on three-way merge...\n" +msgstr "Ðе удалоÑÑŒ откатитьÑÑ Ðº трёхходовому ÑлиÑнию…\n" + +#: apply.c:3603 +#, c-format +msgid "Applied patch to '%s' with conflicts.\n" +msgstr "Патч применен к «%s» Ñ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚Ð°Ð¼Ð¸.\n" + +#: apply.c:3608 +#, c-format +msgid "Applied patch to '%s' cleanly.\n" +msgstr "Патч применен к «%s» без ошибок.\n" + +#: apply.c:3634 +msgid "removal patch leaves file contents" +msgstr "патч ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ удалил Ñодержимое файла" + +#: apply.c:3706 +#, c-format +msgid "%s: wrong type" +msgstr "%s: неправильный тип" + +#: apply.c:3708 +#, c-format +msgid "%s has type %o, expected %o" +msgstr "%s имеет тип %o, а ожидалÑÑ %o" + +#: apply.c:3859 apply.c:3861 +#, c-format +msgid "invalid path '%s'" +msgstr "неправильный путь «%s»" + +#: apply.c:3917 +#, c-format +msgid "%s: already exists in index" +msgstr "%s: уже ÑодержитÑÑ Ð² индекÑе" + +#: apply.c:3920 +#, c-format +msgid "%s: already exists in working directory" +msgstr "%s: уже ÑодержитÑÑ Ð² рабочем каталоге" + +#: apply.c:3940 +#, c-format +msgid "new mode (%o) of %s does not match old mode (%o)" +msgstr "новый режим доÑтупа (%o) Ð´Ð»Ñ %s не ÑоответÑтвует Ñтарому режиму доÑтупа (%o)" + +#: apply.c:3945 +#, c-format +msgid "new mode (%o) of %s does not match old mode (%o) of %s" +msgstr "новый режим доÑтупа (%o) Ð´Ð»Ñ %s не ÑоответÑтвует Ñтарому режиму доÑтупа (%o) Ð´Ð»Ñ %s" + +#: apply.c:3965 +#, c-format +msgid "affected file '%s' is beyond a symbolic link" +msgstr "затронутый файл «%s» находитÑÑ Ð·Ð° ÑимволичеÑкой ÑÑылкой" + +#: apply.c:3969 +#, c-format +msgid "%s: patch does not apply" +msgstr "%s: не удалоÑÑŒ применить патч" + +#: apply.c:3984 +#, c-format +msgid "Checking patch %s..." +msgstr "Проверка патча %s…" + +#: apply.c:4075 +#, c-format +msgid "sha1 information is lacking or useless for submodule %s" +msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± sha1 отÑутÑтвует или беÑполезна Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ %s" + +#: apply.c:4082 +#, c-format +msgid "mode change for %s, which is not in current HEAD" +msgstr "изменен режим Ð´Ð»Ñ %s, который не находитÑÑ Ð² текущем HEAD" + +#: apply.c:4085 +#, c-format +msgid "sha1 information is lacking or useless (%s)." +msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ð± sha1 отÑутÑтвует или беÑполезна (%s)." + +#: apply.c:4090 builtin/checkout.c:233 builtin/reset.c:135 +#, c-format +msgid "make_cache_entry failed for path '%s'" +msgstr "Ñбой make_cache_entry Ð´Ð»Ñ Ð¿ÑƒÑ‚Ð¸ «%s»" + +#: apply.c:4094 +#, c-format +msgid "could not add %s to temporary index" +msgstr "не удалоÑÑŒ добавить %s во временный индекÑ" + +#: apply.c:4104 +#, c-format +msgid "could not write temporary index to %s" +msgstr "не удалоÑÑŒ запиÑать временный Ð¸Ð½Ð´ÐºÐµÐºÑ Ð² %s" + +#: apply.c:4242 +#, c-format +msgid "unable to remove %s from index" +msgstr "не удалоÑÑŒ удалить %s из индекÑа" + +#: apply.c:4277 +#, c-format +msgid "corrupt patch for submodule %s" +msgstr "поврежденный патч Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ %s" + +#: apply.c:4283 +#, c-format +msgid "unable to stat newly created file '%s'" +msgstr "не удалоÑÑŒ выполнить stat Ð´Ð»Ñ Ñозданного файла «%s»" + +#: apply.c:4291 +#, c-format +msgid "unable to create backing store for newly created file %s" +msgstr "не удалоÑÑŒ Ñоздать вÑпомогательный файл Ð´Ð»Ñ Ñозданного файла %s" + +#: apply.c:4297 apply.c:4441 +#, c-format +msgid "unable to add cache entry for %s" +msgstr "не удалоÑÑŒ Ñоздать запиÑÑŒ в кÑше Ð´Ð»Ñ %s" + +#: apply.c:4338 +#, c-format +msgid "failed to write to '%s'" +msgstr "не удалоÑÑŒ запиÑать в «%s»" + +#: apply.c:4342 +#, c-format +msgid "closing file '%s'" +msgstr "закрытие файла «%s»" + +#: apply.c:4412 +#, c-format +msgid "unable to write file '%s' mode %o" +msgstr "не удалоÑÑŒ запиÑать файл «%s» Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð¼ доÑтупа %o" + +#: apply.c:4510 +#, c-format +msgid "Applied patch %s cleanly." +msgstr "Патч %s применен без ошибок." + +#: apply.c:4518 +msgid "internal error" +msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°" + +#: apply.c:4521 +#, c-format +msgid "Applying patch %%s with %d reject..." +msgid_plural "Applying patch %%s with %d rejects..." +msgstr[0] "Применение патча %%s Ñ %d отказом…" +msgstr[1] "Применение патча %%s Ñ %d отказами…" +msgstr[2] "Применение патча %%s Ñ %d отказами…" +msgstr[3] "Применение патча %%s Ñ %d отказами…" + +#: apply.c:4532 +#, c-format +msgid "truncating .rej filename to %.*s.rej" +msgstr "уÑечение имени .rej файла до %.*s.rej" + +#: apply.c:4540 builtin/fetch.c:740 builtin/fetch.c:989 +#, c-format +msgid "cannot open %s" +msgstr "не удалоÑÑŒ открыть %s" + +#: apply.c:4554 +#, c-format +msgid "Hunk #%d applied cleanly." +msgstr "Блок â„–%d применен без ошибок." + +#: apply.c:4558 +#, c-format +msgid "Rejected hunk #%d." +msgstr "Блок â„–%d отклонен." + +#: apply.c:4668 +#, c-format +msgid "Skipped patch '%s'." +msgstr "Патч «%s» пропущен." + +#: apply.c:4676 +msgid "unrecognized input" +msgstr "не раÑпознанный ввод" + +#: apply.c:4695 +msgid "unable to read index file" +msgstr "не удалоÑÑŒ прочитать файл индекÑа" + +#: apply.c:4833 +#, c-format +msgid "can't open patch '%s': %s" +msgstr "не удалоÑÑŒ открыть патч «%s»: %s" + +#: apply.c:4858 +#, c-format +msgid "squelched %d whitespace error" +msgid_plural "squelched %d whitespace errors" +msgstr[0] "пропущена %d ошибка в пробельных Ñимволах" +msgstr[1] "пропущено %d ошибки в пробельных Ñимволах" +msgstr[2] "пропущено %d ошибок в пробельных Ñимволах" +msgstr[3] "пропущено %d ошибок в пробельных Ñимволах" + +#: apply.c:4864 apply.c:4879 +#, c-format +msgid "%d line adds whitespace errors." +msgid_plural "%d lines add whitespace errors." +msgstr[0] "%d Ñтрока добавила ошибки в пробельных Ñимволах." +msgstr[1] "%d Ñтроки добавили ошибки в пробельных Ñимволах." +msgstr[2] "%d Ñтрок добавили ошибки в пробельных Ñимволах." +msgstr[3] "%d Ñтрок добавили ошибки в пробельных Ñимволах." + +#: apply.c:4872 +#, c-format +msgid "%d line applied after fixing whitespace errors." +msgid_plural "%d lines applied after fixing whitespace errors." +msgstr[0] "%d Ñтрока добавлена поÑле иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ÑˆÐ¸Ð±Ð¾Ðº в пробелах." +msgstr[1] "%d Ñтроки добавлено поÑле иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ÑˆÐ¸Ð±Ð¾Ðº в пробелах." +msgstr[2] "%d Ñтрок добавлено поÑле иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ÑˆÐ¸Ð±Ð¾Ðº в пробелах." +msgstr[3] "%d Ñтроки добавлено поÑле иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾ÑˆÐ¸Ð±Ð¾Ðº в пробелах." + +#: apply.c:4888 builtin/add.c:463 builtin/mv.c:286 builtin/rm.c:431 +msgid "Unable to write new index file" +msgstr "Ðе удалоÑÑŒ запиÑать новый файл индекÑа" + +#: apply.c:4919 apply.c:4922 builtin/am.c:2277 builtin/am.c:2280 +#: builtin/clone.c:95 builtin/fetch.c:98 builtin/pull.c:180 +#: builtin/submodule--helper.c:281 builtin/submodule--helper.c:407 +#: builtin/submodule--helper.c:589 builtin/submodule--helper.c:592 +#: builtin/submodule--helper.c:944 builtin/submodule--helper.c:947 +msgid "path" +msgstr "путь" + +#: apply.c:4920 +msgid "don't apply changes matching the given path" +msgstr "не применÑÑ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾ указанному пути" + +#: apply.c:4923 +msgid "apply changes matching the given path" +msgstr "применÑÑ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾ указанному пути" + +#: apply.c:4925 builtin/am.c:2286 +msgid "num" +msgstr "количеÑтво" + +#: apply.c:4926 +msgid "remove <num> leading slashes from traditional diff paths" +msgstr "удалить <количеÑтво> ведущих коÑÑ‹Ñ… черт из традиционных путей ÑпиÑка изменений" + +#: apply.c:4929 +msgid "ignore additions made by the patch" +msgstr "игнорировать добавлениÑ, Ñделанные Ñтим патчем" + +#: apply.c:4931 +msgid "instead of applying the patch, output diffstat for the input" +msgstr "вмеÑто Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ‚Ñ‡Ð° вывеÑти ÑтатиÑтику добавлений и удалений Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð°" + +#: apply.c:4935 +msgid "show number of added and deleted lines in decimal notation" +msgstr "показать количеÑтво добавленных и удаленных Ñтрок в деÑÑтичном предÑтавлении" + +#: apply.c:4937 +msgid "instead of applying the patch, output a summary for the input" +msgstr "вмеÑто Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ‚Ñ‡Ð° вывеÑти ÑтатиÑтику изменений Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð°" + +#: apply.c:4939 +msgid "instead of applying the patch, see if the patch is applicable" +msgstr "вмеÑто Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ‚Ñ‡Ð° проверить подходит ли он" + +#: apply.c:4941 +msgid "make sure the patch is applicable to the current index" +msgstr "проверить, что патч применÑетÑÑ Ðº текущему индекÑу" + +#: apply.c:4943 +msgid "apply a patch without touching the working tree" +msgstr "применить патч, не изменÑÑ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ð¹ каталог" + +#: apply.c:4945 +msgid "accept a patch that touches outside the working area" +msgstr "принÑÑ‚ÑŒ патч, который затрагивает файлы за рабочим каталогом" + +#: apply.c:4947 +msgid "also apply the patch (use with --stat/--summary/--check)" +msgstr "а также применить патч (иÑпользуйте Ñ --stat/--summary/--check)" + +#: apply.c:4949 +msgid "attempt three-way merge if a patch does not apply" +msgstr "попытатьÑÑ Ñделать трехходовое ÑлиÑние, еÑли патч не применÑетÑÑ" + +#: apply.c:4951 +msgid "build a temporary index based on embedded index information" +msgstr "поÑтроить временный индекÑ, оÑнованный на вÑтроенной информации об индекÑе" + +#: apply.c:4954 builtin/checkout-index.c:169 builtin/ls-files.c:505 +msgid "paths are separated with NUL character" +msgstr "пути, отделённые ÐУЛЕВЫМ Ñимволом" + +#: apply.c:4956 +msgid "ensure at least <n> lines of context match" +msgstr "удоÑтоверитьÑÑ, что по крайней мере <n> Ñтрок контекÑта Ñовпадают" + +#: apply.c:4957 builtin/am.c:2265 +msgid "action" +msgstr "дейÑтвие" + +#: apply.c:4958 +msgid "detect new or modified lines that have whitespace errors" +msgstr "определÑÑ‚ÑŒ новые или модифицированные Ñтроки, у которых еÑÑ‚ÑŒ ошибки в пробельных Ñимволах" + +#: apply.c:4961 apply.c:4964 +msgid "ignore changes in whitespace when finding context" +msgstr "игнорировать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² пробельных Ñимволах при поиÑке контекÑта" + +#: apply.c:4967 +msgid "apply the patch in reverse" +msgstr "применить патч Ñ Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸ÐµÐ¼ изменений" + +#: apply.c:4969 +msgid "don't expect at least one line of context" +msgstr "не ожидать как минимум одной Ñтроки контекÑта" + +#: apply.c:4971 +msgid "leave the rejected hunks in corresponding *.rej files" +msgstr "оÑтавить отклоненные блоки изменений в ÑоответÑтвующих *.rej файлах" + +#: apply.c:4973 +msgid "allow overlapping hunks" +msgstr "разрешить перекрывающиеÑÑ Ð±Ð»Ð¾ÐºÐ¸ изменений" + +#: apply.c:4974 builtin/add.c:267 builtin/check-ignore.c:19 +#: builtin/commit.c:1339 builtin/count-objects.c:94 builtin/fsck.c:593 +#: builtin/log.c:1860 builtin/mv.c:110 builtin/read-tree.c:114 +msgid "be verbose" +msgstr "быть многоÑловнее" + +#: apply.c:4976 +msgid "tolerate incorrectly detected missing new-line at the end of file" +msgstr "разрешить некорректно определенные пропущенные пуÑтые Ñтроки в конце файла" + +#: apply.c:4979 +msgid "do not trust the line counts in the hunk headers" +msgstr "не доверÑÑ‚ÑŒ количеÑтву Ñтрок из заголовка блока изменений" + +#: apply.c:4981 builtin/am.c:2274 +msgid "root" +msgstr "корень" + +#: apply.c:4982 +msgid "prepend <root> to all filenames" +msgstr "добавить <корень> Ñпереди ко вÑем именам файлов" + #: archive.c:12 msgid "git archive [<options>] <tree-ish> [<path>...]" msgstr "git archive [<опции>] <указатель-дерева> [<путь>…]" @@ -106,7 +720,7 @@ msgstr "git archive --remote <репозиторий> [--exec <команда>] msgid "git archive --remote <repo> [--exec <cmd>] --list" msgstr "git archive --remote <репозиторий> [--exec <команда>] --list" -#: archive.c:344 builtin/add.c:139 builtin/add.c:435 builtin/rm.c:327 +#: archive.c:344 builtin/add.c:152 builtin/add.c:442 builtin/rm.c:327 #, c-format msgid "pathspec '%s' did not match any files" msgstr "ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿ÑƒÑ‚Ð¸ «%s» не ÑоответÑтвует ни одному файлу" @@ -119,7 +733,7 @@ msgstr "формат" msgid "archive format" msgstr "формат архива" -#: archive.c:430 builtin/log.c:1422 +#: archive.c:430 builtin/log.c:1429 msgid "prefix" msgstr "префикÑ" @@ -127,11 +741,11 @@ msgstr "префикÑ" msgid "prepend prefix to each pathname in the archive" msgstr "добавлÑÑ‚ÑŒ Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð¿ÐµÑ€ÐµÐ´ каждым путем файла в архиве" -#: 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 +#: archive.c:432 builtin/blame.c:2603 builtin/blame.c:2604 builtin/config.c:59 +#: builtin/fast-export.c:987 builtin/fast-export.c:989 builtin/grep.c:723 +#: builtin/hash-object.c:101 builtin/ls-files.c:539 builtin/ls-files.c:542 +#: builtin/notes.c:401 builtin/notes.c:564 builtin/read-tree.c:109 +#: parse-options.h:153 msgid "file" msgstr "файл" @@ -163,8 +777,8 @@ msgstr "Ñжимать лучше" msgid "list supported archive formats" msgstr "перечиÑлить поддерживаемые форматы архивов" -#: archive.c:451 builtin/archive.c:90 builtin/clone.c:82 -#: builtin/submodule--helper.c:832 +#: archive.c:451 builtin/archive.c:90 builtin/clone.c:85 builtin/clone.c:88 +#: builtin/submodule--helper.c:601 builtin/submodule--helper.c:953 msgid "repo" msgstr "репозиторий" @@ -172,7 +786,7 @@ msgstr "репозиторий" msgid "retrieve the archive from remote repository <repo>" msgstr "получить архив из внешнего <репозиториÑ>" -#: archive.c:453 builtin/archive.c:92 builtin/notes.c:483 +#: archive.c:453 builtin/archive.c:92 builtin/notes.c:485 msgid "command" msgstr "команда" @@ -421,27 +1035,27 @@ msgid "" "\"git push -u\" to set the upstream config as you push." msgstr "\nЕÑли вы планируете оÑновывать Ñвою работу на вышеÑтоÑщей ветке, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑƒÐ¶Ðµ ÑущеÑтвует во внешнем репозитории, вам может потребоватьÑÑ Ð·Ð°Ð¿ÑƒÑтить «git fetch» Ð´Ð»Ñ ÐµÐµ получениÑ.\n\nЕÑли вы планируете отправить новую локальную ветку, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ отÑлеживатьÑÑ, во внешний репозиторий, вам может потребоватьÑÑ Ð·Ð°Ð¿ÑƒÑтить «git push -u» — чтобы Ñохранить наÑтройку вышеÑтоÑщего Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸." -#: branch.c:266 +#: branch.c:265 #, c-format msgid "Not a valid object name: '%s'." msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°: «%s»." -#: branch.c:286 +#: branch.c:285 #, c-format msgid "Ambiguous object name: '%s'." msgstr "Ðеоднозначное Ð¸Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°: «%s»." -#: branch.c:291 +#: branch.c:290 #, c-format msgid "Not a valid branch point: '%s'." msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ñ‚Ð¾Ñ‡ÐºÐ° ветки: «%s»." -#: branch.c:345 +#: branch.c:344 #, c-format msgid "'%s' is already checked out at '%s'" msgstr "«%s» уже находитÑÑ Ð½Ð° «%s»" -#: branch.c:364 +#: branch.c:363 #, c-format msgid "HEAD of working tree %s is not updated" msgstr "HEAD рабочего каталога %s не обновлён" @@ -456,7 +1070,7 @@ msgstr "«%s» не похож на файл пакета верÑии 2" msgid "unrecognized header: %s%s (%d)" msgstr "неопознанный заголовок: %s%s (%d)" -#: bundle.c:87 builtin/commit.c:778 +#: bundle.c:87 sequencer.c:963 builtin/commit.c:777 #, c-format msgid "could not open '%s'" msgstr "не удалоÑÑŒ открыть «%s»" @@ -465,9 +1079,9 @@ msgstr "не удалоÑÑŒ открыть «%s»" msgid "Repository lacks these prerequisite commits:" msgstr "Ð’ репозитории отÑутÑтвуют необходимые коммиты:" -#: 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 +#: bundle.c:163 ref-filter.c:1462 sequencer.c:830 sequencer.c:1374 +#: builtin/blame.c:2814 builtin/commit.c:1061 builtin/log.c:348 +#: builtin/log.c:890 builtin/log.c:1340 builtin/log.c:1666 builtin/log.c:1909 #: builtin/merge.c:356 builtin/shortlog.c:170 msgid "revision walk setup failed" msgstr "Ñбой инициализации прохода по редакциÑм" @@ -511,7 +1125,7 @@ msgstr "критичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° rev-list" msgid "ref '%s' is excluded by the rev-list options" msgstr "ÑÑылка «%s» иÑключена в ÑоответÑтвии Ñ Ð¾Ð¿Ñ†Ð¸Ñми rev-list" -#: bundle.c:443 builtin/log.c:165 builtin/log.c:1565 builtin/shortlog.c:273 +#: bundle.c:443 builtin/log.c:165 builtin/log.c:1572 builtin/shortlog.c:273 #, c-format msgid "unrecognized argument: %s" msgstr "неопознанный аргумент: %s" @@ -534,8 +1148,8 @@ msgstr "критичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° index-pack" msgid "invalid color value: %.*s" msgstr "недопуÑтимое значение цвета: %.*s" -#: commit.c:40 builtin/am.c:433 builtin/am.c:469 builtin/am.c:1505 -#: builtin/am.c:2119 +#: commit.c:40 builtin/am.c:421 builtin/am.c:457 builtin/am.c:1493 +#: builtin/am.c:2127 #, c-format msgid "could not parse %s" msgstr "не удалоÑÑŒ разобрать %s" @@ -545,6 +1159,13 @@ msgstr "не удалоÑÑŒ разобрать %s" msgid "%s %s is not a commit!" msgstr "%s %s не ÑвлÑетÑÑ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð¾Ð¼!" +#: commit.c:1514 +msgid "" +"Warning: commit message did not conform to UTF-8.\n" +"You may want to amend it after fixing the message, or set the config\n" +"variable i18n.commitencoding to the encoding your project uses.\n" +msgstr "Предупреждение: Ñообщение коммита не ÑоответÑтвует UTF-8.\nВозможно, вы захотите иÑправить его поÑле иÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑообщениÑ\nили наÑтроить опцию i18n.commitencoding и указать кодировку\nÑообщений, которую иÑпользует ваш проект.\n" + #: compat/obstack.c:406 compat/obstack.c:408 msgid "memory exhausted" msgstr "памÑÑ‚ÑŒ иÑчерпана" @@ -627,7 +1248,7 @@ msgstr "неправильное чиÑловое значение «%s» Ð´Ð»Ñ msgid "failed to expand user dir in: '%s'" msgstr "Ñбой Ñ€Ð°Ð·Ð²Ð¾Ñ€Ð°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿ÑƒÑ‚Ð¸ каталога пользователÑ: «%s»" -#: config.c:849 config.c:860 +#: config.c:852 config.c:863 #, c-format msgid "bad zlib compression level %d" msgstr "неправильный уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ zlib %d" @@ -670,22 +1291,58 @@ msgstr "не удалоÑÑŒ уÑтановить «%s» в «%s»" msgid "could not unset '%s'" msgstr "не удалоÑÑŒ ÑброÑить значение Ð´Ð»Ñ Â«%s»" +#: connect.c:49 +msgid "The remote end hung up upon initial contact" +msgstr "Внешний Ñервер отÑоединилÑÑ Ð´Ð¾ начала ÑеанÑа ÑвÑзи" + +#: connect.c:51 +msgid "" +"Could not read from remote repository.\n" +"\n" +"Please make sure you have the correct access rights\n" +"and the repository exists." +msgstr "Ðе удалоÑÑŒ прочитать из внешнего репозиториÑ.\n\nУдоÑтоверьтеÑÑŒ, что у Ð²Ð°Ñ ÐµÑÑ‚ÑŒ необходимые права доÑтупа\nи репозиторий ÑущеÑтвует." + #: connected.c:63 builtin/fsck.c:173 builtin/prune.c:140 msgid "Checking connectivity" msgstr "Проверка ÑоединениÑ" -#: connected.c:74 +#: connected.c:75 msgid "Could not run 'git rev-list'" msgstr "Ðе удалоÑÑŒ запуÑтить «git rev-list»" -#: connected.c:94 +#: connected.c:95 msgid "failed write to rev-list" msgstr "Ñбой запиÑи в rev-list" -#: connected.c:101 +#: connected.c:102 msgid "failed to close rev-list's stdin" msgstr "Ñбой Ð·Ð°ÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ñтандартного ввода у rev-list" +#: convert.c:201 +#, c-format +msgid "" +"CRLF will be replaced by LF in %s.\n" +"The file will have its original line endings in your working directory." +msgstr "CRLF будет заменен на LF в %s.\nФайл будет иметь Ñвои оригинальные концы Ñтрок в рашей рабочей копии." + +#: convert.c:205 +#, c-format +msgid "CRLF would be replaced by LF in %s." +msgstr "CRLF будет заменен на LF в %s." + +#: convert.c:211 +#, c-format +msgid "" +"LF will be replaced by CRLF in %s.\n" +"The file will have its original line endings in your working directory." +msgstr "LF будет заменен на CRLF в %s.\nФайл будет иметь Ñвои оригинальные концы Ñтрок в рашей рабочей копии." + +#: convert.c:215 +#, c-format +msgid "LF would be replaced by CRLF in %s" +msgstr "LF будет заменен на CRLF в %s" + #: date.c:97 msgid "in the future" msgstr "в будущем" @@ -777,131 +1434,321 @@ msgstr[3] "%lu лет назад" msgid "failed to read orderfile '%s'" msgstr "Ñбой Ñ‡Ñ‚ÐµÐ½Ð¸Ñ orderfile «%s»" -#: diffcore-rename.c:540 +#: diffcore-rename.c:536 msgid "Performing inexact rename detection" msgstr "ВыполнÑетÑÑ Ð½ÐµÑ‚Ð¾Ñ‡Ð½Ð¾Ðµ определение переименованиÑ" -#: diff.c:116 +#: diff.c:62 +#, c-format +msgid "option '%s' requires a value" +msgstr "параметр «%s» требует ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ" + +#: diff.c:124 #, c-format msgid " Failed to parse dirstat cut-off percentage '%s'\n" msgstr " Сбой разбора величины Ñреза (cut-off) у dirstat «%s»\n" -#: diff.c:121 +#: diff.c:129 #, c-format msgid " Unknown dirstat parameter '%s'\n" msgstr "ÐеизвеÑтный параметр dirstat: «%s»\n" -#: diff.c:225 +#: diff.c:283 #, c-format msgid "Unknown value for 'diff.submodule' config variable: '%s'" msgstr "ÐеизвеÑтное Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ «diff.submodule»: «%s»" -#: diff.c:277 +#: diff.c:346 #, c-format msgid "" "Found errors in 'diff.dirstat' config variable:\n" "%s" msgstr "Ðайдены ошибки в переменной «diff.dirstat»:\n%s" -#: diff.c:3017 +#: diff.c:3087 #, c-format msgid "external diff died, stopping at %s" msgstr "критичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° при внешнем Ñравнении, оÑтанов на %s" -#: diff.c:3415 +#: diff.c:3412 +msgid "--name-only, --name-status, --check and -s are mutually exclusive" +msgstr "--name-only, --name-status, --check и -s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно" + +#: diff.c:3502 msgid "--follow requires exactly one pathspec" msgstr "--follow требует ровно одной Ñпецификации пути" -#: diff.c:3578 +#: diff.c:3665 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" "%s" msgstr "Сбой разбора параметра опции --dirstat/-X :\n%s" -#: diff.c:3592 +#: diff.c:3679 #, c-format msgid "Failed to parse --submodule option parameter: '%s'" msgstr "Сбой разбора параметра опции --submodule: «%s»" -#: dir.c:1823 +#: diff.c:4700 +msgid "inexact rename detection was skipped due to too many files." +msgstr "неточное определение Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ñ‹Ð»Ð¾ пропущено из-за Ñлишком большого количеÑтва файлов." + +#: diff.c:4703 +msgid "only found copies from modified paths due to too many files." +msgstr "найдены только копии из измененных путей из-за Ñлишком большого количеÑтва файлов." + +#: diff.c:4706 +#, c-format +msgid "" +"you may want to set your %s variable to at least %d and retry the command." +msgstr "возможно вы захотите уÑтановить переменную %s в как минимум значение %d и повторить вызов команды." + +#: dir.c:1866 msgid "failed to get kernel name and information" msgstr "не удалоÑÑŒ получить Ð¸Ð¼Ñ Ñдра и информацию" -#: dir.c:1942 +#: dir.c:1985 msgid "Untracked cache is disabled on this system or location." msgstr "КÑш неотÑлеживаемых файлов отключен на Ñтой ÑиÑтеме или в Ñтом меÑте." -#: gpg-interface.c:178 +#: fetch-pack.c:213 +msgid "git fetch-pack: expected shallow list" +msgstr "git fetch-pack: ожидаетÑÑ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð° ÑпиÑка Ð´Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ чаÑти" + +#: fetch-pack.c:225 +msgid "git fetch-pack: expected ACK/NAK, got EOF" +msgstr "git fetch-pack: ожидаетÑÑ ACK/NAK, а получено EOF" + +#: fetch-pack.c:243 +#, c-format +msgid "git fetch-pack: expected ACK/NAK, got '%s'" +msgstr "git fetch-pack: ожидаетÑÑ ACK/NAK, а получено «%s»" + +#: fetch-pack.c:295 +msgid "--stateless-rpc requires multi_ack_detailed" +msgstr "--stateless-rpc требует multi_ack_detailed" + +#: fetch-pack.c:381 +#, c-format +msgid "invalid shallow line: %s" +msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока чаÑтичного получениÑ: %s" + +#: fetch-pack.c:387 +#, c-format +msgid "invalid unshallow line: %s" +msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока полного получениÑ: %s" + +#: fetch-pack.c:389 +#, c-format +msgid "object not found: %s" +msgstr "объект не найден: %s" + +#: fetch-pack.c:392 +#, c-format +msgid "error in object: %s" +msgstr "ошибка в объекте: %s" + +#: fetch-pack.c:394 +#, c-format +msgid "no shallow found: %s" +msgstr "чаÑтичный клон не найден: %s" + +#: fetch-pack.c:397 +#, c-format +msgid "expected shallow/unshallow, got %s" +msgstr "ожидалоÑÑŒ shallow/unshallow, а получено %s" + +#: fetch-pack.c:436 +#, c-format +msgid "got %s %d %s" +msgstr "получено %s %d %s" + +#: fetch-pack.c:450 +#, c-format +msgid "invalid commit %s" +msgstr "недопуÑтимый коммит %s" + +#: fetch-pack.c:483 +msgid "giving up" +msgstr "оÑтанавливаю дальнейшие попытки" + +#: fetch-pack.c:493 progress.c:235 +msgid "done" +msgstr "готово" + +#: fetch-pack.c:505 +#, c-format +msgid "got %s (%d) %s" +msgstr "получено %s (%d) %s" + +#: fetch-pack.c:551 +#, c-format +msgid "Marking %s as complete" +msgstr "Помечаю %s как завершенный" + +#: fetch-pack.c:697 +#, c-format +msgid "already have %s (%s)" +msgstr "уже еÑÑ‚ÑŒ %s (%s)" + +#: fetch-pack.c:735 +msgid "fetch-pack: unable to fork off sideband demultiplexer" +msgstr "fetch-pack: не удалоÑÑŒ запуÑтить программу разбора данных" + +#: fetch-pack.c:743 +msgid "protocol error: bad pack header" +msgstr "ошибка протокола: неправильный заголовок потока" + +#: fetch-pack.c:799 +#, c-format +msgid "fetch-pack: unable to fork off %s" +msgstr "fetch-pack: не удалоÑÑŒ запуÑтить программу %s" + +#: fetch-pack.c:815 +#, c-format +msgid "%s failed" +msgstr "%s завершен Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹" + +#: fetch-pack.c:817 +msgid "error in sideband demultiplexer" +msgstr "произошла ошибка в программе разбора данных" + +#: fetch-pack.c:844 +msgid "Server does not support shallow clients" +msgstr "Сервер не поддерживает клиентов Ñ Ñ‡Ð°Ñтичным клонированием" + +#: fetch-pack.c:848 +msgid "Server supports multi_ack_detailed" +msgstr "Сервер поддерживает multi_ack_detailed" + +#: fetch-pack.c:851 +msgid "Server supports no-done" +msgstr "Сервер поддерживает no-done" + +#: fetch-pack.c:857 +msgid "Server supports multi_ack" +msgstr "Сервер поддерживает multi_ack" + +#: fetch-pack.c:861 +msgid "Server supports side-band-64k" +msgstr "Сервер поддерживает side-band-64k" + +#: fetch-pack.c:865 +msgid "Server supports side-band" +msgstr "Сервер поддерживает side-band" + +#: fetch-pack.c:869 +msgid "Server supports allow-tip-sha1-in-want" +msgstr "Сервер поддерживает allow-tip-sha1-in-want" + +#: fetch-pack.c:873 +msgid "Server supports allow-reachable-sha1-in-want" +msgstr "Сервер поддерживает allow-reachable-sha1-in-want" + +#: fetch-pack.c:883 +msgid "Server supports ofs-delta" +msgstr "Сервер поддерживает ofs-delta" + +#: fetch-pack.c:890 +#, c-format +msgid "Server version is %.*s" +msgstr "ВерÑÐ¸Ñ Ñервера %.*s" + +#: fetch-pack.c:896 +msgid "Server does not support --shallow-since" +msgstr "Сервер не поддерживает --shallow-since" + +#: fetch-pack.c:900 +msgid "Server does not support --shallow-exclude" +msgstr "Сервер не поддерживает --shallow-exclude" + +#: fetch-pack.c:902 +msgid "Server does not support --deepen" +msgstr "Сервер не поддерживает --deepen" + +#: fetch-pack.c:913 +msgid "no common commits" +msgstr "не общих коммитов" + +#: fetch-pack.c:925 +msgid "git fetch-pack: fetch failed." +msgstr "git fetch-pack: ошибка при получении данных." + +#: fetch-pack.c:1087 +msgid "no matching remote head" +msgstr "нет ÑоотвеÑтвующего внешнего ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° ветку" + +#: gpg-interface.c:185 msgid "gpg failed to sign the data" msgstr "gpg не удалоÑÑŒ подпиÑать данные" -#: gpg-interface.c:208 +#: gpg-interface.c:215 msgid "could not create temporary file" msgstr "не удалоÑÑŒ Ñоздать временный файл" -#: gpg-interface.c:210 +#: gpg-interface.c:217 #, c-format msgid "failed writing detached signature to '%s'" msgstr "Ñбой запиÑи отÑоединенной подпиÑи в «%s»" -#: grep.c:1792 +#: grep.c:1782 #, c-format msgid "'%s': unable to read %s" msgstr "«%s»: не удалоÑÑŒ прочеÑÑ‚ÑŒ %s" -#: grep.c:1809 builtin/clone.c:382 builtin/diff.c:84 builtin/rm.c:155 +#: grep.c:1799 builtin/clone.c:381 builtin/diff.c:84 builtin/rm.c:155 #, c-format msgid "failed to stat '%s'" msgstr "не удалоÑÑŒ выполнить stat «%s»" -#: grep.c:1820 +#: grep.c:1810 #, c-format msgid "'%s': short read" msgstr "«%s»: Ñлишком мало данных прочитано" -#: help.c:205 +#: help.c:203 #, c-format msgid "available git commands in '%s'" msgstr "доÑтупные команды git в «%s»" -#: help.c:212 +#: help.c:210 msgid "git commands available from elsewhere on your $PATH" msgstr "команды git, доÑтупные в других меÑтах вашего $PATH" -#: help.c:244 +#: help.c:241 msgid "These are common Git commands used in various situations:" msgstr "Стандартные команды Git иÑпользуемые в различных ÑитуациÑÑ…:" -#: help.c:309 +#: help.c:306 #, c-format msgid "" "'%s' appears to be a git command, but we were not\n" "able to execute it. Maybe git-%s is broken?" msgstr "«%s» похоже на команду git, но нам не удалоÑÑŒ ее запуÑтить. Возможно, git-%s не работает?" -#: help.c:366 +#: help.c:361 msgid "Uh oh. Your system reports no Git commands at all." msgstr "Ой-ёй! Ваша ÑиÑтема не Ñообщает ни о каких командах Git вообще." -#: help.c:388 +#: help.c:383 #, c-format msgid "" "WARNING: You called a Git command named '%s', which does not exist.\n" "Continuing under the assumption that you meant '%s'" msgstr "Ð’ÐИМÐÐИЕ: Ð’Ñ‹ вызвали команду Git «%s», но такой не ÑущеÑтвует.\nПродолжаем Ñ Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸ÐµÐ¼, что вы имели в виду «%s»" -#: help.c:393 +#: help.c:388 #, c-format msgid "in %0.1f seconds automatically..." msgstr "через %0.1f Ñекунд автоматичеÑки…" -#: help.c:400 +#: help.c:395 #, c-format msgid "git: '%s' is not a git command. See 'git --help'." msgstr "git: «%s» не ÑвлÑетÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ git. Смотрите «git --help»." -#: help.c:404 help.c:470 +#: help.c:399 help.c:465 msgid "" "\n" "Did you mean this?" @@ -913,11 +1760,26 @@ msgstr[1] "\nВозможно, вы имели в виду что-то из ÑÑ‚ msgstr[2] "\nВозможно, вы имели в виду что-то из Ñтого?" msgstr[3] "\nВозможно, вы имели в виду что-то из Ñтого?" -#: help.c:466 +#: help.c:461 #, c-format msgid "%s: %s - %s" msgstr "%s: %s — %s" +#: ident.c:334 +msgid "" +"\n" +"*** Please tell me who you are.\n" +"\n" +"Run\n" +"\n" +" git config --global user.email \"you@example.com\"\n" +" git config --global user.name \"Your Name\"\n" +"\n" +"to set your account's default identity.\n" +"Omit --global to set the identity only in this repository.\n" +"\n" +msgstr "\n*** ПожалуйÑта, Ñкажите мне кто вы еÑÑ‚ÑŒ.\n\nЗапуÑтите\n\n git config --global user.email \"you@example.com\"\n git config --global user.name \"Ваше ИмÑ\"\n\nÐ´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¾Ð½Ð½Ñ‹Ñ… данных аккаунта по умолчанию.\nПропуÑтите параметр --global Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… только Ð´Ð»Ñ Ñтого репозиториÑ.\n\n" + #: lockfile.c:152 #, c-format msgid "" @@ -939,8 +1801,8 @@ msgstr "Ðе удалоÑÑŒ Ñоздать «%s.lock»: %s" msgid "failed to read the cache" msgstr "Ñбой Ñ‡Ñ‚ÐµÐ½Ð¸Ñ ÐºÑша" -#: merge.c:94 builtin/am.c:1992 builtin/am.c:2027 builtin/checkout.c:375 -#: builtin/checkout.c:589 builtin/clone.c:732 +#: merge.c:96 builtin/am.c:2000 builtin/am.c:2035 builtin/checkout.c:374 +#: builtin/checkout.c:588 builtin/clone.c:731 msgid "unable to write new index file" msgstr "не удалоÑÑŒ запиÑать новый файл индекÑа" @@ -976,7 +1838,7 @@ msgstr ": возможно, конфликт каталогов/файлов?" msgid "refusing to lose untracked file at '%s'" msgstr "отказ потери неотÑлеживаемого файла в «%s»" -#: merge-recursive.c:796 +#: merge-recursive.c:796 builtin/cat-file.c:34 #, c-format msgid "cannot read object %s '%s'" msgstr "невозможно прочитать объект %s «%s»" @@ -1109,7 +1971,7 @@ msgstr "ПропуÑк %s (Ñлиты одинаковые Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ðº msgid "Auto-merging %s" msgstr "ÐвтоÑлиÑние %s" -#: merge-recursive.c:1736 git-submodule.sh:919 +#: merge-recursive.c:1736 git-submodule.sh:924 msgid "submodule" msgstr "подмодуль" @@ -1177,6 +2039,18 @@ msgstr "Ðе удалоÑÑŒ разобрать объект «%s»" msgid "Unable to write index." msgstr "Ðе удаетÑÑ Ð·Ð°Ð¿Ð¸Ñать индекÑ." +#: notes-merge.c:273 +#, c-format +msgid "" +"You have not concluded your previous notes merge (%s exists).\n" +"Please, use 'git notes merge --commit' or 'git notes merge --abort' to commit/abort the previous merge before you start a new notes merge." +msgstr "Ð’Ñ‹ не закончили предыдущее ÑлиÑние заметок (%s ÑущеÑтвует).\nЗапуÑтите «git notes merge --commit» или «git notes merge --abort» Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð° или отмены предыдущего ÑлиÑÐ½Ð¸Ñ Ð¸ запуÑка нового ÑлиÑÐ½Ð¸Ñ Ð·Ð°Ð¼ÐµÑ‚Ð¾Ðº." + +#: notes-merge.c:280 +#, c-format +msgid "You have not concluded your notes merge (%s exists)." +msgstr "Ð’Ñ‹ не закончили предыдущее ÑлиÑние заметок (%s ÑущеÑтвует)." + #: notes-utils.c:41 msgid "Cannot commit uninitialized/unreferenced notes tree" msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð·Ð°ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð¸Ñ‚ÑŒ неинициализированное или не имеющее ÑÑылок дерево заметок" @@ -1233,7 +2107,7 @@ msgstr "-КОЛИЧЕСТВО" msgid "malformed object name '%s'" msgstr "Ðеправильное Ð¸Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° «%s»" -#: path.c:798 +#: path.c:826 #, c-format msgid "Could not make %s writable by group" msgstr "Ðе удалоÑÑŒ предоÑтавить доÑтуп к %s на запиÑÑŒ" @@ -1287,55 +2161,57 @@ msgstr "Ð¡Ð¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿ÑƒÑ‚Ð¸ «%s» в подмодуле «%.*s»" msgid "%s: pathspec magic not supported by this command: %s" msgstr "%s: магичеÑкие Ñлова в Ñпецификации пути не поддерживаютÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹: %s" -#: pathspec.c:433 +#: pathspec.c:408 +msgid "" +"empty strings as pathspecs will be made invalid in upcoming releases. please" +" use . instead if you meant to match all paths" +msgstr "пуÑтые Ñтроки как Ñпецификаторы пути будут Ñделаны недопуÑтимыми в Ñледующих верÑиÑÑ…. иÑпользуйте вмеÑто них «.», что значит ÑоотвеÑтвие вÑем путÑм" + +#: pathspec.c:440 #, c-format msgid "pathspec '%s' is beyond a symbolic link" msgstr "ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿ÑƒÑ‚Ð¸ «%s» находитÑÑ Ð·Ð° ÑимволичеÑкой ÑÑылкой" -#: pathspec.c:442 +#: pathspec.c:449 msgid "" "There is nothing to exclude from by :(exclude) patterns.\n" "Perhaps you forgot to add either ':/' or '.' ?" msgstr "Ðе указан шаблон Ð´Ð»Ñ Ð¸ÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ :(exclude).\nВозможно, вы забыли «:/» или «.» ?" -#: pretty.c:973 +#: pretty.c:971 msgid "unable to parse --pretty format" msgstr "не удалоÑÑŒ разобрать формат Ð´Ð»Ñ --pretty" -#: progress.c:235 -msgid "done" -msgstr "готово" - -#: read-cache.c:1281 +#: read-cache.c:1315 #, c-format msgid "" "index.version set, but the value is invalid.\n" "Using version %i" msgstr "index.version указан, но значение недейÑтвительное.\nИÑпользую верÑию %i" -#: read-cache.c:1291 +#: read-cache.c:1325 #, c-format msgid "" "GIT_INDEX_VERSION set, but the value is invalid.\n" "Using version %i" msgstr "GIT_INDEX_VERSION указан, но значение недейÑтвительное.\nИÑпользую верÑию %i" -#: refs.c:551 builtin/merge.c:840 +#: refs.c:576 builtin/merge.c:840 #, c-format msgid "Could not open '%s' for writing" msgstr "Ðе удалоÑÑŒ открыть «%s» Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи" -#: refs/files-backend.c:2534 +#: refs/files-backend.c:2481 #, c-format msgid "could not delete reference %s: %s" msgstr "не удалоÑÑŒ удалить ÑÑылку %s: %s" -#: refs/files-backend.c:2537 +#: refs/files-backend.c:2484 #, c-format msgid "could not delete references: %s" msgstr "не удалоÑÑŒ удалить ÑÑылки: %s" -#: refs/files-backend.c:2546 +#: refs/files-backend.c:2493 #, c-format msgid "could not remove reference %s" msgstr "не удалоÑÑŒ удалить ÑÑылки %s" @@ -1464,12 +2340,12 @@ msgstr "игнорирую ÑÑылку Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¼ именем msgid "ignoring broken ref %s" msgstr "игнорирую неправильную ÑÑылку %s" -#: ref-filter.c:1651 +#: ref-filter.c:1633 #, c-format msgid "format: %%(end) atom missing" msgstr "format: пропущена чаÑтица %%(end)" -#: ref-filter.c:1705 +#: ref-filter.c:1687 #, c-format msgid "malformed object name %s" msgstr "неправильное Ð¸Ð¼Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %s" @@ -1593,286 +2469,309 @@ msgstr[3] "Ваша ветка и «%s» разделилиÑÑŒ\nи теперь msgid " (use \"git pull\" to merge the remote branch into yours)\n" msgstr " (иÑпользуйте «git pull», чтобы Ñлить внешнюю ветку в вашу)\n" -#: revision.c:2132 +#: revision.c:2158 msgid "your current branch appears to be broken" msgstr "похоже, ваша Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ‚ÐºÐ° повреждена" -#: revision.c:2135 +#: revision.c:2161 #, c-format msgid "your current branch '%s' does not have any commits yet" msgstr "ваша Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ‚ÐºÐ° «%s» еще не Ñодержит ни одного коммита" -#: revision.c:2329 +#: revision.c:2355 msgid "--first-parent is incompatible with --bisect" msgstr "опцию --first-parent Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно Ñ --bisect" -#: run-command.c:92 +#: run-command.c:106 msgid "open /dev/null failed" msgstr "Ñбой Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ /dev/null" -#: run-command.c:94 +#: run-command.c:108 #, c-format msgid "dup2(%d,%d) failed" msgstr "dup2(%d,%d) Ñбой" -#: send-pack.c:298 +#: send-pack.c:297 msgid "failed to sign the push certificate" msgstr "Ñбой подпиÑÐ°Ð½Ð¸Ñ Ñертификата отправки" -#: send-pack.c:411 +#: send-pack.c:410 msgid "the receiving end does not support --signed push" msgstr "Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÑŽÑ‰Ð°Ñ Ñторона не поддерживает отправку Ñ Ð¾Ð¿Ñ†Ð¸ÐµÐ¹ --signed" -#: send-pack.c:413 +#: send-pack.c:412 msgid "" "not sending a push certificate since the receiving end does not support " "--signed push" msgstr "не отправлÑем Ñертификат Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸, так как Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÑŽÑ‰Ð°Ñ Ñторона не поддерживает отправку Ñ Ð¾Ð¿Ñ†Ð¸ÐµÐ¹ --signed" -#: send-pack.c:425 +#: send-pack.c:424 msgid "the receiving end does not support --atomic push" msgstr "Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÑŽÑ‰Ð°Ñ Ñторона не поддерживает отправку Ñ Ð¾Ð¿Ñ†Ð¸ÐµÐ¹ --atomic" -#: send-pack.c:430 +#: send-pack.c:429 msgid "the receiving end does not support push options" msgstr "Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÑŽÑ‰Ð°Ñ Ñторона не поддерживает отправку Ñ Ð¾Ð¿Ñ†Ð¸Ñми" -#: sequencer.c:174 +#: sequencer.c:171 +msgid "revert" +msgstr "обратить изменениÑ" + +#: sequencer.c:171 +msgid "cherry-pick" +msgstr "копировать коммит" + +#: sequencer.c:228 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add <paths>' or 'git rm <paths>'" msgstr "поÑле Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚Ð¾Ð², пометьте иÑправленные пути\nÑ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «git add <пути>» или «git rm <пути>»" -#: sequencer.c:177 +#: sequencer.c:231 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add <paths>' or 'git rm <paths>'\n" "and commit the result with 'git commit'" msgstr "поÑле Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚Ð¾Ð², пометьте иÑправленные пути\nÑ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «git add <пути>» или «git rm <пути>»\nи Ñделайте коммит Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «git commit»" -#: sequencer.c:190 sequencer.c:841 sequencer.c:924 +#: sequencer.c:244 sequencer.c:1209 #, c-format -msgid "Could not write to %s" -msgstr "Ðе удалоÑÑŒ запиÑать в %s" +msgid "could not lock '%s'" +msgstr "не удалоÑÑŒ заблокировать «%s»" -#: sequencer.c:193 sequencer.c:843 sequencer.c:928 +#: sequencer.c:247 sequencer.c:1125 sequencer.c:1214 #, c-format -msgid "Error wrapping up %s." -msgstr "Ошибка Ð¾Ð±Ð¾Ñ€Ð°Ñ‡Ð¸Ð²Ð°Ð½Ð¸Ñ %s." +msgid "could not write to '%s'" +msgstr "не удалоÑÑŒ запиÑать в «%s»" -#: sequencer.c:208 -msgid "Your local changes would be overwritten by cherry-pick." -msgstr "Ваши локальные изменение будут перезапиÑаны копией коммита." +#: sequencer.c:251 +#, c-format +msgid "could not write eol to '%s'" +msgstr "не удалоÑÑŒ запиÑать eol в «%s»" -#: sequencer.c:210 -msgid "Your local changes would be overwritten by revert." -msgstr "Ваши локальные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ перезапиÑаны обратными изменениÑми коммита." +#: sequencer.c:255 sequencer.c:1130 sequencer.c:1216 +#, c-format +msgid "failed to finalize '%s'." +msgstr "не удалоÑÑŒ завершить «%s»." -#: sequencer.c:213 -msgid "Commit your changes or stash them to proceed." -msgstr "Сделайте коммит или ÑпрÑчьте ваши Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ." +#: sequencer.c:279 builtin/am.c:259 builtin/commit.c:749 builtin/merge.c:1032 +#, c-format +msgid "could not read '%s'" +msgstr "не удалоÑÑŒ прочитать «%s»" -#: sequencer.c:228 +#: sequencer.c:305 +#, c-format +msgid "your local changes would be overwritten by %s." +msgstr "ваши локальные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ перезапиÑаны %s." + +#: sequencer.c:309 +msgid "commit your changes or stash them to proceed." +msgstr "Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚ÑŒÑ‚Ðµ ваши Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑпрÑчьте их." + +#: sequencer.c:324 #, c-format msgid "%s: fast-forward" msgstr "%s: перемотка вперед" #. TRANSLATORS: %s will be "revert" or "cherry-pick" -#: sequencer.c:303 +#: sequencer.c:399 #, c-format msgid "%s: Unable to write new index file" msgstr "%s: Ðе удалоÑÑŒ запиÑать файл индекÑа" -#: sequencer.c:321 -msgid "Could not resolve HEAD commit\n" -msgstr "Ðе удалоÑÑŒ определить HEAD коммит\n" +#: sequencer.c:418 +msgid "could not resolve HEAD commit\n" +msgstr "не удалоÑÑŒ раÑпознать HEAD коммит\n" -#: sequencer.c:341 -msgid "Unable to update cache tree\n" -msgstr "Ðе удалоÑÑŒ обновить дерево кÑша\n" +#: sequencer.c:438 +msgid "unable to update cache tree\n" +msgstr "не удалоÑÑŒ обновить дерево кÑша\n" -#: sequencer.c:393 +#: sequencer.c:483 #, c-format -msgid "Could not parse commit %s\n" -msgstr "Ðе удалоÑÑŒ разобрать коммит %s\n" +msgid "" +"you have staged changes in your working tree\n" +"If these changes are meant to be squashed into the previous commit, run:\n" +"\n" +" git commit --amend %s\n" +"\n" +"If they are meant to go into a new commit, run:\n" +"\n" +" git commit %s\n" +"\n" +"In both cases, once you're done, continue with:\n" +"\n" +" git rebase --continue\n" +msgstr "у Ð²Ð°Ñ Ð¸Ð¼ÐµÑŽÑ‚ÑÑ Ð¿Ñ€Ð¾Ð¸Ð½Ð´ÐµÐºÑированные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² рабочем каталоге. ЕÑли Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть объеденены Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼ коммитом, то запуÑтите:\n\n git commit --amend %s\n\nЕÑли же они должны быть помещены в новый коммит, то запуÑтите:\n\n git commit %s\n\nÐ’ любом Ñлучае, поÑле того как вы закончите, продолжить перемещение можно выполнив:\n\n git rebase --continue\n" + +#: sequencer.c:567 +#, c-format +msgid "could not parse commit %s\n" +msgstr "не удалоÑÑŒ разобрать коммит %s\n" -#: sequencer.c:398 +#: sequencer.c:572 #, c-format -msgid "Could not parse parent commit %s\n" -msgstr "Ðе удалоÑÑŒ разобрать родительÑкую коммит %s\n" +msgid "could not parse parent commit %s\n" +msgstr "не удалоÑÑŒ разобрать родительÑкий коммит %s\n" -#: sequencer.c:463 -msgid "Your index file is unmerged." -msgstr "Ваш файл индекÑа не Ñлит." +#: sequencer.c:656 +msgid "your index file is unmerged." +msgstr "ваш Ð¸Ð½Ð´ÐµÐºÑ Ð½Ðµ Ñлит." -#: sequencer.c:482 +#: sequencer.c:675 #, c-format -msgid "Commit %s is a merge but no -m option was given." -msgstr "Коммит %s — Ñто коммит-ÑлиÑние, но Ð¾Ð¿Ñ†Ð¸Ñ -m не указана." +msgid "commit %s is a merge but no -m option was given." +msgstr "коммит %s — Ñто коммит-ÑлиÑние, но Ð¾Ð¿Ñ†Ð¸Ñ -m не указана." -#: sequencer.c:490 +#: sequencer.c:683 #, c-format -msgid "Commit %s does not have parent %d" -msgstr "У коммита %s нет предка %d" +msgid "commit %s does not have parent %d" +msgstr "у коммита %s нет предка %d" -#: sequencer.c:494 +#: sequencer.c:687 #, c-format -msgid "Mainline was specified but commit %s is not a merge." -msgstr "ОÑÐ½Ð¾Ð²Ð½Ð°Ñ Ð²ÐµÑ‚ÐºÐ° указана, но коммит %s не ÑвлÑетÑÑ ÑлиÑнием." +msgid "mainline was specified but commit %s is not a merge." +msgstr "оÑÐ½Ð¾Ð²Ð½Ð°Ñ Ð²ÐµÑ‚ÐºÐ° указана, но коммит %s не ÑвлÑетÑÑ ÑлиÑнием." -#. TRANSLATORS: The first %s will be "revert" or -#. "cherry-pick", the second %s a SHA1 -#: sequencer.c:507 +#. TRANSLATORS: The first %s will be a "todo" command like +#. "revert" or "pick", the second %s a SHA1. +#: sequencer.c:700 #, c-format msgid "%s: cannot parse parent commit %s" msgstr "%s: не удалоÑÑŒ разобрать родительÑкий коммит Ð´Ð»Ñ %s" -#: sequencer.c:511 +#: sequencer.c:705 #, c-format -msgid "Cannot get commit message for %s" -msgstr "Ðе удалоÑÑŒ получить Ñообщение коммита Ð´Ð»Ñ %s" +msgid "cannot get commit message for %s" +msgstr "не удалоÑÑŒ получить Ñообщение коммита Ð´Ð»Ñ %s" -#: sequencer.c:597 +#: sequencer.c:797 #, c-format msgid "could not revert %s... %s" msgstr "не удалоÑÑŒ обратить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð° %s… %s" -#: sequencer.c:598 +#: sequencer.c:798 #, c-format msgid "could not apply %s... %s" msgstr "не удалоÑÑŒ применить коммит %s… %s" -#: sequencer.c:633 +#: sequencer.c:833 msgid "empty commit set passed" msgstr "передан пуÑтой набор коммитов" -#: sequencer.c:641 +#: sequencer.c:843 #, c-format msgid "git %s: failed to read the index" msgstr "git %s: Ñбой Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа" -#: sequencer.c:645 +#: sequencer.c:850 #, c-format msgid "git %s: failed to refresh the index" msgstr "git %s: Ñбой Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа" -#: sequencer.c:705 -msgid "Cannot revert during another revert." -msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð¸Ñ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð° во Ð²Ñ€ÐµÐ¼Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ процеÑÑа Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°." - -#: sequencer.c:706 -msgid "Cannot revert during a cherry-pick." -msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð¸Ñ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð° во Ð²Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°." - -#: sequencer.c:709 -msgid "Cannot cherry-pick during a revert." -msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ñкопировать коммит во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°." - -#: sequencer.c:710 -msgid "Cannot cherry-pick during another cherry-pick." -msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ñкопировать коммит во Ð²Ñ€ÐµÐ¼Ñ Ð´Ñ€ÑƒÐ³Ð¾Ð³Ð¾ процеÑÑа ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°." - -#: sequencer.c:732 +#: sequencer.c:944 #, c-format -msgid "Could not parse line %d." -msgstr "Ðе удалоÑÑŒ разобрать Ñтроку %d." +msgid "invalid line %d: %.*s" +msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока %d: %.*s" -#: sequencer.c:737 -msgid "No commits parsed." -msgstr "Коммиты не разобраны." +#: sequencer.c:950 +msgid "no commits parsed." +msgstr "коммиты не разобраны." -#: sequencer.c:749 +#: sequencer.c:966 #, c-format -msgid "Could not open %s" -msgstr "Ðе удалоÑÑŒ открыть %s" +msgid "could not read '%s'." +msgstr "не удалоÑÑŒ прочитать «%s»." -#: sequencer.c:753 +#: sequencer.c:972 #, c-format -msgid "Could not read %s." -msgstr "Ðе удалоÑÑŒ прочитать %s." +msgid "unusable instruction sheet: '%s'" +msgstr "Ð½ÐµÐ¿Ñ€Ð¸Ð³Ð¾Ð´Ð½Ð°Ñ Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ°Ñ€Ñ‚Ð° Ñ Ð¸Ð½ÑтрукциÑми: «%s»" -#: sequencer.c:760 -#, c-format -msgid "Unusable instruction sheet: %s" -msgstr "ÐÐµÐ¿Ñ€Ð¸Ð³Ð¾Ð´Ð½Ð°Ñ Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ°Ñ€Ñ‚Ð° Ñ Ð¸Ð½ÑтрукциÑми: %s" +#: sequencer.c:983 +msgid "cannot cherry-pick during a revert." +msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ñкопировать коммит во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°." -#: sequencer.c:790 +#: sequencer.c:985 +msgid "cannot revert during a cherry-pick." +msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð¸Ñ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð° во Ð²Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°." + +#: sequencer.c:1028 #, c-format -msgid "Invalid key: %s" -msgstr "ÐедейÑтвительный ключ: %s" +msgid "invalid key: %s" +msgstr "недейÑтвительный ключ: %s" -#: sequencer.c:793 builtin/pull.c:50 builtin/pull.c:52 +#: sequencer.c:1031 #, c-format -msgid "Invalid value for %s: %s" -msgstr "Ðеправильное значение %s: %s" +msgid "invalid value for %s: %s" +msgstr "неправильное значение %s: %s" -#: sequencer.c:803 +#: sequencer.c:1063 #, c-format -msgid "Malformed options sheet: %s" -msgstr "ÐŸÐ¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð° Ñ Ð¾Ð¿Ñ†Ð¸Ñми: %s" +msgid "malformed options sheet: '%s'" +msgstr "иÑÐ¿Ð¾Ñ€Ñ‡ÐµÐ½Ð½Ð°Ñ ÐºÐ°Ñ€Ñ‚Ð° Ñ Ð¾Ð¿Ñ†Ð¸Ñми: «%s»" -#: sequencer.c:822 +#: sequencer.c:1101 msgid "a cherry-pick or revert is already in progress" msgstr "копирование или обращение изменений коммита уже выполнÑÑŽÑ‚ÑÑ" -#: sequencer.c:823 +#: sequencer.c:1102 msgid "try \"git cherry-pick (--continue | --quit | --abort)\"" msgstr "попробуйте «git cherry-pick (--continue | --quit | --abort)»" -#: sequencer.c:827 +#: sequencer.c:1106 #, c-format -msgid "Could not create sequencer directory %s" -msgstr "Ðе удалоÑÑŒ Ñоздать каталог Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð¾Ð² %s" +msgid "could not create sequencer directory '%s'" +msgstr "не удалоÑÑŒ Ñоздать каталог Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð¾Ð² «%s»" + +#: sequencer.c:1120 +msgid "could not lock HEAD" +msgstr "не удалоÑÑŒ заблокировать HEAD" -#: sequencer.c:862 sequencer.c:998 +#: sequencer.c:1151 sequencer.c:1289 msgid "no cherry-pick or revert in progress" msgstr "копирование или обращение изменений коммита уже выполнÑÑŽÑ‚ÑÑ" -#: sequencer.c:864 +#: sequencer.c:1153 msgid "cannot resolve HEAD" msgstr "не удалоÑÑŒ определить HEAD" -#: sequencer.c:866 sequencer.c:900 +#: sequencer.c:1155 sequencer.c:1189 msgid "cannot abort from a branch yet to be born" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ Ð²ÐµÑ‚ÐºÐ¸, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÐµÑ‰Ðµ не Ñоздана" -#: sequencer.c:886 builtin/fetch.c:724 builtin/fetch.c:970 +#: sequencer.c:1175 builtin/grep.c:578 #, c-format -msgid "cannot open %s" -msgstr "не удалоÑÑŒ открыть %s" +msgid "cannot open '%s'" +msgstr "не удалоÑÑŒ открыть «%s»" -#: sequencer.c:888 +#: sequencer.c:1177 #, c-format -msgid "cannot read %s: %s" -msgstr "не удалоÑÑŒ прочитать %s: %s" +msgid "cannot read '%s': %s" +msgstr "не удалоÑÑŒ прочитать «%s»: %s" -#: sequencer.c:889 +#: sequencer.c:1178 msgid "unexpected end of file" msgstr "неожиданный конец файла" -#: sequencer.c:895 +#: sequencer.c:1184 #, c-format msgid "stored pre-cherry-pick HEAD file '%s' is corrupt" msgstr "Ñохраненный файл Ñ HEAD перед копированием коммита «%s» поврежден" -#: sequencer.c:921 -#, c-format -msgid "Could not format %s." -msgstr "Ðе удалоÑÑŒ отформатировать %s." - -#: sequencer.c:1066 +#: sequencer.c:1354 #, c-format msgid "%s: can't cherry-pick a %s" msgstr "%s: не удалоÑÑŒ Ñкопировать коммит %s" -#: sequencer.c:1069 +#: sequencer.c:1358 #, c-format msgid "%s: bad revision" msgstr "%s: Ð¿Ð»Ð¾Ñ…Ð°Ñ Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ" -#: sequencer.c:1102 -msgid "Can't revert as initial commit" -msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð¸Ñ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ коммита" +#: sequencer.c:1391 +msgid "can't revert as initial commit" +msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð¸Ñ‚ÑŒ изначальный коммит" #: setup.c:160 #, c-format @@ -1897,11 +2796,6 @@ msgid "" "'git <command> [<revision>...] -- [<file>...]'" msgstr "неоднозначный аргумент «%s»: ÑвлÑетÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ и редакцией и именем файла.\nИÑпользуйте «--» Ð´Ð»Ñ Ð¾Ñ‚Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿ÑƒÑ‚ÐµÐ¹ от редакций, вот так:\n«git <команда> [<редакциÑ>…] -- [<файл>…]»" -#: setup.c:248 builtin/apply.c:3362 builtin/apply.c:3373 builtin/apply.c:3419 -#, c-format -msgid "failed to read %s" -msgstr "не удалоÑÑŒ прочитать %s" - #: setup.c:468 #, c-format msgid "Expected git repo version <= %d, found %d" @@ -1943,21 +2837,55 @@ msgid "" "The owner of files must always have read and write permissions." msgstr "Проблема Ñо значением режима доÑтупа к файлу core.sharedRepository (0%.3o).\nВладелец файлов должен вÑегда иметь права на чтение и на запиÑÑŒ." -#: sha1_file.c:1046 +#: sha1_file.c:473 +#, c-format +msgid "path '%s' does not exist" +msgstr "путь «%s» не ÑущеÑтвует" + +#: sha1_file.c:499 +#, c-format +msgid "reference repository '%s' as a linked checkout is not supported yet." +msgstr "ÑÑылаемый репозиторий «%s» как ÑвÑзанное ÑоÑтоÑние, пока не поддерживаетÑÑ." + +#: sha1_file.c:505 +#, c-format +msgid "reference repository '%s' is not a local repository." +msgstr "ÑÑылаемый репозиторий «%s» не ÑвлÑетÑÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼." + +#: sha1_file.c:511 +#, c-format +msgid "reference repository '%s' is shallow" +msgstr "ÑÑылаемый репозиторий «%s» ÑвлÑетÑÑ Ñ‡Ð°Ñтичным" + +#: sha1_file.c:519 +#, c-format +msgid "reference repository '%s' is grafted" +msgstr "ÑÑылаемый репозиторий «%s» ÑвлÑетÑÑ Ñращенным" + +#: sha1_file.c:1159 msgid "offset before end of packfile (broken .idx?)" msgstr "Ñдвиг до конца файла пакета (возможно, повреждён файл .idx?)" -#: sha1_file.c:2434 +#: sha1_file.c:2592 #, c-format msgid "offset before start of pack index for %s (corrupt index?)" msgstr "Ñдвиг до начала индекÑа пакета Ð´Ð»Ñ %s (повреждён индекÑ?)" -#: sha1_file.c:2438 +#: sha1_file.c:2596 #, c-format msgid "offset beyond end of pack index for %s (truncated index?)" msgstr "Ñдвиг за пределами индекÑа пакета Ð´Ð»Ñ %s (обрезан индекÑ?)" -#: sha1_name.c:462 +#: sha1_name.c:407 +#, c-format +msgid "short SHA1 %s is ambiguous" +msgstr "Ñокращённый SHA1 идентификатор %s неоднозначен" + +#: sha1_name.c:418 +msgid "The candidates are:" +msgstr "Возможно, вы имели в виду:" + +#: sha1_name.c:578 msgid "" "Git normally never creates a ref that ends with 40 hex characters\n" "because it will be ignored when you just specify 40-hex. These refs\n" @@ -1993,7 +2921,7 @@ msgstr "Ðе удалоÑÑŒ удалить запиÑÑŒ в .gitmodules Ð´Ð»Ñ %s msgid "staging updated .gitmodules failed" msgstr "Ñбой индекÑÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð¾Ð³Ð¾ .gitmodules" -#: submodule.c:177 +#: submodule.c:158 msgid "negative values not allowed for submodule.fetchJobs" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать отприцательные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð´Ð»Ñ submodule.fetchJobs" @@ -2002,56 +2930,56 @@ msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать отприцательные знРmsgid "invalid value for %s" msgstr "неправильное значение %s" -#: trailer.c:237 +#: trailer.c:238 #, c-format msgid "running trailer command '%s' failed" msgstr "Ñбой при запуÑке команды Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ñ‚ÐµÐ»Ñ Â«%s»" -#: trailer.c:492 trailer.c:496 trailer.c:500 trailer.c:554 trailer.c:558 -#: trailer.c:562 +#: trailer.c:471 trailer.c:475 trailer.c:479 trailer.c:533 trailer.c:537 +#: trailer.c:541 #, c-format msgid "unknown value '%s' for key '%s'" msgstr "неизвеÑтное значение «%s» Ð´Ð»Ñ ÐºÐ»ÑŽÑ‡Ð° «%s»" -#: trailer.c:544 trailer.c:549 builtin/remote.c:289 +#: trailer.c:523 trailer.c:528 builtin/remote.c:289 #, c-format msgid "more than one %s" msgstr "больше одного %s" -#: trailer.c:582 +#: trailer.c:672 #, c-format msgid "empty trailer token in trailer '%.*s'" msgstr "пуÑÑ‚Ð°Ñ Ð¿Ð¾ÑледнÑÑ Ð»ÐµÐºÑема в завершителе «%.*s»" -#: trailer.c:702 +#: trailer.c:695 #, c-format msgid "could not read input file '%s'" msgstr "не удалоÑÑŒ прочитать входной файл «%s»" -#: trailer.c:705 +#: trailer.c:698 msgid "could not read from stdin" msgstr "не удалоÑÑŒ прочитать из Ñтандартного ввода" -#: trailer.c:857 builtin/am.c:42 +#: trailer.c:929 builtin/am.c:44 #, c-format msgid "could not stat %s" msgstr "не удалоÑÑŒ выполнить stat Ð´Ð»Ñ %s" -#: trailer.c:859 +#: trailer.c:931 #, c-format msgid "file %s is not a regular file" msgstr "файл %s не ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ файлом" -#: trailer.c:861 +#: trailer.c:933 #, c-format msgid "file %s is not writable by user" msgstr "файл %s не доÑтупен на запиÑÑŒ пользователю" -#: trailer.c:873 +#: trailer.c:945 msgid "could not open temporary file" msgstr "не удалоÑÑŒ Ñоздать временный файл" -#: trailer.c:912 +#: trailer.c:983 #, c-format msgid "could not rename temporary file to %s" msgstr "не удалоÑÑŒ переименовать временный файл в %s" @@ -2066,14 +2994,14 @@ msgstr "Будет уÑтановлен вышеÑтоÑщий Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ msgid "transport: invalid depth option '%s'" msgstr "транÑпорт: неправильный параметр глубины «%s»" -#: transport.c:771 +#: transport.c:817 #, c-format msgid "" "The following submodule paths contain changes that can\n" "not be found on any remote:\n" msgstr "Подмодули по указанным путÑм Ñодержат изменениÑ, которые не найдены ни на одном из внешних репозиториев:\n" -#: transport.c:775 +#: transport.c:821 #, c-format msgid "" "\n" @@ -2089,15 +3017,31 @@ msgid "" "\n" msgstr "\nПопробуйте выполнить\n\n\tgit push --recurse-submodules=on-demand\n\nили перейти в каталог Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ команды cd и выполнить\n\n\tgit push\n\nÐ´Ð»Ñ Ð¸Ñ… отправки на внешний репозиторий.\n" -#: transport.c:783 +#: transport.c:829 msgid "Aborting." msgstr "Прерываю." -#: transport-helper.c:1041 +#: transport-helper.c:1075 #, c-format msgid "Could not read ref %s" msgstr "Ðе удалоÑÑŒ прочитать ÑÑылку %s" +#: tree-walk.c:31 +msgid "too-short tree object" +msgstr "Ñлишком короткий объект дерева" + +#: tree-walk.c:37 +msgid "malformed mode in tree entry" +msgstr "неправильный режим в запиÑи дерева" + +#: tree-walk.c:41 +msgid "empty filename in tree entry" +msgstr "пуÑтое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° в запиÑи дерева" + +#: tree-walk.c:113 +msgid "too-short tree file" +msgstr "Ñлишком короткий файл дерева" + #: unpack-trees.c:64 #, c-format msgid "" @@ -2246,14 +3190,14 @@ msgstr "Ðе удалоÑÑŒ обновить чаÑтичное ÑоÑтоÑни #: unpack-trees.c:126 #, c-format msgid "" -"The following Working tree files would be overwritten by sparse checkout update:\n" +"The following working tree files would be overwritten by sparse checkout update:\n" "%s" msgstr "Указанные файлы из рабочего каталога будут перезапиÑаны при обновлении чаÑтичного ÑоÑтоÑниÑ:\n%s" #: unpack-trees.c:128 #, c-format msgid "" -"The following Working tree files would be removed by sparse checkout update:\n" +"The following working tree files would be removed by sparse checkout update:\n" "%s" msgstr "Указанные файлы из рабочего каталога будут удалены при обновлении чаÑтичного ÑоÑтоÑниÑ:\n%s" @@ -2305,14 +3249,14 @@ msgstr "не удалоÑÑŒ прочитать «%s»" msgid "could not open '%s' for reading and writing" msgstr "не удалоÑÑŒ открыть «%s» Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸ запиÑи" -#: wrapper.c:224 wrapper.c:394 builtin/am.c:778 +#: wrapper.c:224 wrapper.c:394 builtin/am.c:766 #, c-format msgid "could not open '%s' for writing" msgstr "не удалоÑÑŒ открыть «%s» Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи" -#: 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 +#: wrapper.c:226 wrapper.c:396 builtin/am.c:320 builtin/am.c:759 +#: builtin/am.c:847 builtin/commit.c:1705 builtin/merge.c:1029 +#: builtin/pull.c:341 #, c-format msgid "could not open '%s' for reading" msgstr "не удалоÑÑŒ открыть «%s» Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" @@ -2336,193 +3280,193 @@ msgstr "не удалоÑÑŒ запиÑать в %s" msgid "could not close %s" msgstr "не удалоÑÑŒ закрыть %s" -#: wt-status.c:150 +#: wt-status.c:151 msgid "Unmerged paths:" msgstr "Ðе Ñлитые пути:" -#: wt-status.c:177 wt-status.c:204 +#: wt-status.c:178 wt-status.c:205 #, c-format msgid " (use \"git reset %s <file>...\" to unstage)" msgstr " (иÑпользуйте «git reset %s <файл>…», чтобы убрать из индекÑа)" -#: wt-status.c:179 wt-status.c:206 +#: wt-status.c:180 wt-status.c:207 msgid " (use \"git rm --cached <file>...\" to unstage)" msgstr " (иÑпользуйте «git rm --cached <файл>…», чтобы убрать из индекÑа)" -#: wt-status.c:183 +#: wt-status.c:184 msgid " (use \"git add <file>...\" to mark resolution)" msgstr " (иÑпользуйте «git add <файл>…», чтобы пометить разрешение конфликта)" -#: wt-status.c:185 wt-status.c:189 +#: wt-status.c:186 wt-status.c:190 msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)" msgstr " (иÑпользуйте «git add/rm <файл>…», чтобы пометить выбранное разрешение конфликта)" -#: wt-status.c:187 +#: wt-status.c:188 msgid " (use \"git rm <file>...\" to mark resolution)" msgstr " (иÑпользуйте «git rm <файл>…», чтобы пометить разрешение конфликта)" -#: wt-status.c:198 wt-status.c:882 +#: wt-status.c:199 wt-status.c:945 msgid "Changes to be committed:" msgstr "ИзменениÑ, которые будут включены в коммит:" -#: wt-status.c:216 wt-status.c:891 +#: wt-status.c:217 wt-status.c:954 msgid "Changes not staged for commit:" msgstr "ИзменениÑ, которые не в индекÑе Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°:" -#: wt-status.c:220 +#: wt-status.c:221 msgid " (use \"git add <file>...\" to update what will be committed)" msgstr " (иÑпользуйте «git add <файл>…», чтобы добавить файл в индекÑ)" -#: wt-status.c:222 +#: wt-status.c:223 msgid " (use \"git add/rm <file>...\" to update what will be committed)" msgstr " (иÑпользуйте «git add/rm <файл>…», чтобы добавить или удалить файл из индекÑа)" -#: wt-status.c:223 +#: wt-status.c:224 msgid "" " (use \"git checkout -- <file>...\" to discard changes in working " "directory)" msgstr " (иÑпользуйте «git checkout -- <файл>…», чтобы отменить изменениÑ\n в рабочем каталоге)" -#: wt-status.c:225 +#: wt-status.c:226 msgid " (commit or discard the untracked or modified content in submodules)" msgstr " (Ñделайте коммит или отмените Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² неотÑлеживаемом или измененном Ñодержимом в подмодулÑÑ…)" -#: wt-status.c:237 +#: wt-status.c:238 #, c-format msgid " (use \"git %s <file>...\" to include in what will be committed)" msgstr " (иÑпользуйте «git %s <файл>…», чтобы добавить в то, что будет включено в коммит)" -#: wt-status.c:252 +#: wt-status.c:253 msgid "both deleted:" msgstr "оба удалены:" -#: wt-status.c:254 +#: wt-status.c:255 msgid "added by us:" msgstr "добавлено нами:" -#: wt-status.c:256 +#: wt-status.c:257 msgid "deleted by them:" msgstr "удалено ими:" -#: wt-status.c:258 +#: wt-status.c:259 msgid "added by them:" msgstr "добавлено ими:" -#: wt-status.c:260 +#: wt-status.c:261 msgid "deleted by us:" msgstr "удалено нами:" -#: wt-status.c:262 +#: wt-status.c:263 msgid "both added:" msgstr "оба добавлены:" -#: wt-status.c:264 +#: wt-status.c:265 msgid "both modified:" msgstr "оба измены:" -#: wt-status.c:274 +#: wt-status.c:275 msgid "new file:" msgstr "новый файл:" -#: wt-status.c:276 +#: wt-status.c:277 msgid "copied:" msgstr "Ñкопировано:" -#: wt-status.c:278 +#: wt-status.c:279 msgid "deleted:" msgstr "удалено:" -#: wt-status.c:280 +#: wt-status.c:281 msgid "modified:" msgstr "изменено:" -#: wt-status.c:282 +#: wt-status.c:283 msgid "renamed:" msgstr "переименовано:" -#: wt-status.c:284 +#: wt-status.c:285 msgid "typechange:" msgstr "изменен тип:" -#: wt-status.c:286 +#: wt-status.c:287 msgid "unknown:" msgstr "неизвеÑтно:" -#: wt-status.c:288 +#: wt-status.c:289 msgid "unmerged:" msgstr "не Ñлитые:" -#: wt-status.c:370 +#: wt-status.c:371 msgid "new commits, " msgstr "новые коммиты, " -#: wt-status.c:372 +#: wt-status.c:373 msgid "modified content, " msgstr "изменено Ñодержимое, " -#: wt-status.c:374 +#: wt-status.c:375 msgid "untracked content, " msgstr "неотÑлеживаемое Ñодержимое, " -#: wt-status.c:756 +#: wt-status.c:818 msgid "Submodules changed but not updated:" msgstr "Измененные, но не обновленные подмодули:" -#: wt-status.c:758 +#: wt-status.c:820 msgid "Submodule changes to be committed:" msgstr "Ð˜Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² подмодулÑÑ…, которые будут закоммичены:" -#: wt-status.c:839 +#: wt-status.c:901 msgid "" "Do not touch the line above.\n" "Everything below will be removed." msgstr "Ðе трогайте Ñтроку выше Ñтой.\nÐ’ÑÑ‘, что ниже — будет удалено." -#: wt-status.c:950 +#: wt-status.c:1013 msgid "You have unmerged paths." msgstr "У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ не Ñлитые пути." -#: wt-status.c:953 +#: wt-status.c:1016 msgid " (fix conflicts and run \"git commit\")" msgstr " (разрешите конфликты, затем запуÑтите «git commit»)" -#: wt-status.c:955 +#: wt-status.c:1018 msgid " (use \"git merge --abort\" to abort the merge)" msgstr " (иÑпользуйте «git merge --abort», чтобы оÑтановить операцию ÑлиÑниÑ)" -#: wt-status.c:960 +#: wt-status.c:1023 msgid "All conflicts fixed but you are still merging." msgstr "Ð’Ñе конфликты иÑправлены, но вы вÑе еще в процеÑÑе ÑлиÑниÑ." -#: wt-status.c:963 +#: wt-status.c:1026 msgid " (use \"git commit\" to conclude merge)" msgstr " (иÑпользуйте «git commit», чтобы завершить ÑлиÑние)" -#: wt-status.c:973 +#: wt-status.c:1036 msgid "You are in the middle of an am session." msgstr "Ð’Ñ‹ в процеÑÑе ÑеÑÑии am." -#: wt-status.c:976 +#: wt-status.c:1039 msgid "The current patch is empty." msgstr "Текущий патч пуÑтой." -#: wt-status.c:980 +#: wt-status.c:1043 msgid " (fix conflicts and then run \"git am --continue\")" msgstr " (разрешите конфликты, затем запуÑтите «git am --continue»)" -#: wt-status.c:982 +#: wt-status.c:1045 msgid " (use \"git am --skip\" to skip this patch)" msgstr " (иÑпользуйте «git am --skip», чтобы пропуÑтить Ñтот патч)" -#: wt-status.c:984 +#: wt-status.c:1047 msgid " (use \"git am --abort\" to restore the original branch)" msgstr " (иÑпользуйте «git am --abort», чтобы воÑÑтановить оригинальную ветку)" -#: wt-status.c:1109 +#: wt-status.c:1172 msgid "No commands done." msgstr "Команды не выполнены." -#: wt-status.c:1112 +#: wt-status.c:1175 #, c-format msgid "Last command done (%d command done):" msgid_plural "Last commands done (%d commands done):" @@ -2531,16 +3475,16 @@ msgstr[1] "ПоÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° выполнена (%d команд msgstr[2] "ПоÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° выполнена (%d команд выполнено):" msgstr[3] "ПоÑледнÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° выполнена (%d команд выполнено):" -#: wt-status.c:1123 +#: wt-status.c:1186 #, c-format msgid " (see more in file %s)" msgstr " (Ñмотрите дополнительно в файле %s)" -#: wt-status.c:1128 +#: wt-status.c:1191 msgid "No commands remaining." msgstr "Команд больше не оÑталоÑÑŒ." -#: wt-status.c:1131 +#: wt-status.c:1194 #, c-format msgid "Next command to do (%d remaining command):" msgid_plural "Next commands to do (%d remaining commands):" @@ -2549,150 +3493,150 @@ msgstr[1] "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ (%d кРmsgstr[2] "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ (%d команд оÑталоÑÑŒ):" msgstr[3] "Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ (%d команд оÑталоÑÑŒ):" -#: wt-status.c:1139 +#: wt-status.c:1202 msgid " (use \"git rebase --edit-todo\" to view and edit)" msgstr " (иÑпользуйте «git rebase --edit-todo», чтобы проÑмотреть и изменить)" -#: wt-status.c:1152 +#: wt-status.c:1215 #, c-format msgid "You are currently rebasing branch '%s' on '%s'." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÑ‚Ðµ ветку «%s» над «%s»." -#: wt-status.c:1157 +#: wt-status.c:1220 msgid "You are currently rebasing." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰Ð°ÐµÑ‚Ðµ ветку." -#: wt-status.c:1171 +#: wt-status.c:1234 msgid " (fix conflicts and then run \"git rebase --continue\")" msgstr " (разрешите конфликты, затем запуÑтите «git rebase --continue»)" -#: wt-status.c:1173 +#: wt-status.c:1236 msgid " (use \"git rebase --skip\" to skip this patch)" msgstr " (иÑпользуйте «git rebase --skip», чтобы пропуÑтить Ñтот патч)" -#: wt-status.c:1175 +#: wt-status.c:1238 msgid " (use \"git rebase --abort\" to check out the original branch)" msgstr " (иÑпользуйте «git rebase --abort», чтобы перейти на оригинальную ветку)" -#: wt-status.c:1181 +#: wt-status.c:1244 msgid " (all conflicts fixed: run \"git rebase --continue\")" msgstr " (вÑе конфликты разрешены: запуÑтите «git rebase --continue»)" -#: wt-status.c:1185 +#: wt-status.c:1248 #, c-format msgid "" "You are currently splitting a commit while rebasing branch '%s' on '%s'." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ñете коммит при перемещении ветки «%s» над «%s»." -#: wt-status.c:1190 +#: wt-status.c:1253 msgid "You are currently splitting a commit during a rebase." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ñете коммит при перемещении ветки." -#: wt-status.c:1193 +#: wt-status.c:1256 msgid " (Once your working directory is clean, run \"git rebase --continue\")" msgstr "(Как только ваш рабочий каталог будет чиÑтый, запуÑтите «git rebase --continue»)" -#: wt-status.c:1197 +#: wt-status.c:1260 #, c-format msgid "You are currently editing a commit while rebasing branch '%s' on '%s'." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÐµÑ‚Ðµ коммит при перемещении ветки «%s» над «%s»." -#: wt-status.c:1202 +#: wt-status.c:1265 msgid "You are currently editing a commit during a rebase." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÐµÑ‚Ðµ коммит при перемещении ветки." -#: wt-status.c:1205 +#: wt-status.c:1268 msgid " (use \"git commit --amend\" to amend the current commit)" msgstr " (иÑпользуйте «git commit --amend», чтобы иÑправить текущий коммит)" -#: wt-status.c:1207 +#: wt-status.c:1270 msgid " (use \"git rebase --continue\" once you are satisfied with your changes)" msgstr " (иÑпользуйте «git rebase --continue», когда будете довольны изменениÑми)" -#: wt-status.c:1217 +#: wt-status.c:1280 #, c-format msgid "You are currently cherry-picking commit %s." msgstr "Ð’Ñ‹ копируете коммит %s." -#: wt-status.c:1222 +#: wt-status.c:1285 msgid " (fix conflicts and run \"git cherry-pick --continue\")" msgstr " (разрешите конфликты, затем запуÑтите «git cherry-pick --continue»)" -#: wt-status.c:1225 +#: wt-status.c:1288 msgid " (all conflicts fixed: run \"git cherry-pick --continue\")" msgstr " (вÑе конфликты разрешены: запуÑтите «git cherry-pick --continue»)" -#: wt-status.c:1227 +#: wt-status.c:1290 msgid " (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)" msgstr " (иÑпользуйте «git cherry-pick --abort», чтобы отменить ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°)" -#: wt-status.c:1236 +#: wt-status.c:1299 #, c-format msgid "You are currently reverting commit %s." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð°Ñ‰Ð°ÐµÑ‚Ðµ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð° %s." -#: wt-status.c:1241 +#: wt-status.c:1304 msgid " (fix conflicts and run \"git revert --continue\")" msgstr " (разрешите конфликты, затем запуÑтите «git revert --continue»)" -#: wt-status.c:1244 +#: wt-status.c:1307 msgid " (all conflicts fixed: run \"git revert --continue\")" msgstr " (вÑе конфликты разрешены: запуÑтите «git revert --continue»)" -#: wt-status.c:1246 +#: wt-status.c:1309 msgid " (use \"git revert --abort\" to cancel the revert operation)" msgstr " (иÑпользуйте «git revert --abort», чтобы отменить операцию Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ коммита)" -#: wt-status.c:1257 +#: wt-status.c:1320 #, c-format msgid "You are currently bisecting, started from branch '%s'." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ð² процеÑÑе двоичного поиÑка, начатого Ñ Ð²ÐµÑ‚ÐºÐ¸ «%s»." -#: wt-status.c:1261 +#: wt-status.c:1324 msgid "You are currently bisecting." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ð² процеÑÑе двоичного поиÑка." -#: wt-status.c:1264 +#: wt-status.c:1327 msgid " (use \"git bisect reset\" to get back to the original branch)" msgstr " (иÑпользуйте «git bisect reset», чтобы вернутьÑÑ Ð½Ð° иÑходную ветку)" -#: wt-status.c:1464 +#: wt-status.c:1524 msgid "On branch " msgstr "Ðа ветке " -#: wt-status.c:1470 +#: wt-status.c:1530 msgid "interactive rebase in progress; onto " msgstr "интерактивное перемещение в процеÑÑе; над " -#: wt-status.c:1472 +#: wt-status.c:1532 msgid "rebase in progress; onto " msgstr "перемещение в процеÑÑе; над " -#: wt-status.c:1477 +#: wt-status.c:1537 msgid "HEAD detached at " msgstr "HEAD отделён на " -#: wt-status.c:1479 +#: wt-status.c:1539 msgid "HEAD detached from " msgstr "HEAD отделён Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ " -#: wt-status.c:1482 +#: wt-status.c:1542 msgid "Not currently on any branch." msgstr "Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð½Ð¸ на одной из веток" -#: wt-status.c:1500 +#: wt-status.c:1560 msgid "Initial commit" msgstr "Ðачальный коммит" -#: wt-status.c:1514 +#: wt-status.c:1574 msgid "Untracked files" msgstr "ÐеотÑлеживаемые файлы" -#: wt-status.c:1516 +#: wt-status.c:1576 msgid "Ignored files" msgstr "Игнорируемые файлы" -#: wt-status.c:1520 +#: wt-status.c:1580 #, c-format msgid "" "It took %.2f seconds to enumerate untracked files. 'status -uno'\n" @@ -2700,82 +3644,97 @@ msgid "" "new files yourself (see 'git help status')." msgstr "%.2f Ñекунды занÑл вывод ÑпиÑка неотÑлеживаемых файлов. «status -uno» возможно может уÑкорить Ñто, но будьте внимательны, и не забудьте добавить новые файлы вручную (Ñмотрите «git help status» Ð´Ð»Ñ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð¾Ñтей)." -#: wt-status.c:1526 +#: wt-status.c:1586 #, c-format msgid "Untracked files not listed%s" msgstr "ÐеотÑлеживаемые файлы не показаны%s" -#: wt-status.c:1528 +#: wt-status.c:1588 msgid " (use -u option to show untracked files)" msgstr "(иÑпользуйте опцию «-u», чтобы показать неотÑлеживаемые файлы)" -#: wt-status.c:1534 +#: wt-status.c:1594 msgid "No changes" msgstr "Ðет изменений" -#: wt-status.c:1539 +#: wt-status.c:1599 #, c-format msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" msgstr "нет изменений добавленных Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°\n(иÑпользуйте «git add» и/или «git commit -a»)\n" -#: wt-status.c:1542 +#: wt-status.c:1602 #, c-format msgid "no changes added to commit\n" msgstr "нет изменений добавленных Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°\n" -#: wt-status.c:1545 +#: wt-status.c:1605 #, c-format msgid "" "nothing added to commit but untracked files present (use \"git add\" to " "track)\n" msgstr "ничего не добавлено в коммит, но еÑÑ‚ÑŒ неотÑлеживаемые файлы (иÑпользуйте «git add», чтобы отÑлеживать их)\n" -#: wt-status.c:1548 +#: wt-status.c:1608 #, c-format msgid "nothing added to commit but untracked files present\n" msgstr "ничего не добавлено в коммит, но еÑÑ‚ÑŒ неотÑлеживаемые файлы\n" -#: wt-status.c:1551 +#: wt-status.c:1611 #, c-format msgid "nothing to commit (create/copy files and use \"git add\" to track)\n" msgstr "нечего коммитить (Ñоздайте/Ñкопируйте файлы, затем запуÑтите «git add», чтобы отÑлеживать их)\n" -#: wt-status.c:1554 wt-status.c:1559 +#: wt-status.c:1614 wt-status.c:1619 #, c-format msgid "nothing to commit\n" msgstr "нечего коммитить\n" -#: wt-status.c:1557 +#: wt-status.c:1617 #, c-format msgid "nothing to commit (use -u to show untracked files)\n" msgstr "нечего коммитить (иÑпользуйте опцию «-u», чтобы показать неотÑлеживаемые файлы)\n" -#: wt-status.c:1561 +#: wt-status.c:1621 #, c-format msgid "nothing to commit, working tree clean\n" msgstr "нечего коммитить, нет изменений в рабочем каталоге\n" -#: wt-status.c:1668 +#: wt-status.c:1728 msgid "Initial commit on " msgstr "Ðачальный коммит на " -#: wt-status.c:1672 +#: wt-status.c:1732 msgid "HEAD (no branch)" msgstr "HEAD (нет ветки)" -#: wt-status.c:1701 +#: wt-status.c:1761 msgid "gone" msgstr "иÑчез" -#: wt-status.c:1703 wt-status.c:1711 +#: wt-status.c:1763 wt-status.c:1771 msgid "behind " msgstr "позади" -#: wt-status.c:1706 wt-status.c:1709 +#: wt-status.c:1766 wt-status.c:1769 msgid "ahead " msgstr "впереди " -#: compat/precompose_utf8.c:57 builtin/clone.c:415 +#. TRANSLATORS: the action is e.g. "pull with rebase" +#: wt-status.c:2270 +#, c-format +msgid "cannot %s: You have unstaged changes." +msgstr "не удалоÑÑŒ выполнить %s: У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ непроиндекÑированные изменениÑ." + +#: wt-status.c:2276 +msgid "additionally, your index contains uncommitted changes." +msgstr "к тому же, в вашем индекÑе еÑÑ‚ÑŒ незакоммиченные изменениÑ." + +#: wt-status.c:2278 +#, c-format +msgid "cannot %s: Your index contains uncommitted changes." +msgstr "не удалоÑÑŒ выполнить %s: Ð’ вашем индекÑе еÑÑ‚ÑŒ незакоммиченные изменениÑ." + +#: compat/precompose_utf8.c:57 builtin/clone.c:414 #, c-format msgid "failed to unlink '%s'" msgstr "Ñбой отÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Â«%s»" @@ -2784,1023 +3743,510 @@ msgstr "Ñбой отÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Â«%s»" msgid "git add [<options>] [--] <pathspec>..." msgstr "git add [<опции>] [--] <ÑпецификациÑ-пути>…" -#: builtin/add.c:65 +#: builtin/add.c:80 #, c-format msgid "unexpected diff status %c" msgstr "неожиданный ÑÑ‚Ð°Ñ‚ÑƒÑ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ð¹ %c" -#: builtin/add.c:71 builtin/commit.c:281 +#: builtin/add.c:85 builtin/commit.c:291 msgid "updating files failed" msgstr "Ñбой при обновлении файлов" -#: builtin/add.c:81 +#: builtin/add.c:95 #, c-format msgid "remove '%s'\n" msgstr "удалить «%s»\n" -#: builtin/add.c:136 +#: builtin/add.c:149 msgid "Unstaged changes after refreshing the index:" msgstr "ÐепроиндекÑированные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа:" -#: builtin/add.c:196 builtin/rev-parse.c:811 +#: builtin/add.c:209 builtin/rev-parse.c:840 msgid "Could not read the index" msgstr "Ðе удалоÑÑŒ прочитать индекÑ" -#: builtin/add.c:207 +#: builtin/add.c:220 #, c-format msgid "Could not open '%s' for writing." msgstr "Ðе удалоÑÑŒ открыть «%s» Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи." -#: builtin/add.c:211 +#: builtin/add.c:224 msgid "Could not write patch" msgstr "Ðе удалоÑÑŒ запиÑать патч" -#: builtin/add.c:214 +#: builtin/add.c:227 msgid "editing patch failed" msgstr "Ñбой при редактировании патча" -#: builtin/add.c:217 +#: builtin/add.c:230 #, c-format msgid "Could not stat '%s'" msgstr "Ðе удалоÑÑŒ выполнить stat Ð´Ð»Ñ Â«%s»" -#: builtin/add.c:219 +#: builtin/add.c:232 msgid "Empty patch. Aborted." msgstr "ПуÑтой патч. ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½Ð°." -#: builtin/add.c:224 +#: builtin/add.c:237 #, c-format msgid "Could not apply '%s'" msgstr "Ðе удалоÑÑŒ применить «%s»" -#: builtin/add.c:234 +#: builtin/add.c:247 msgid "The following paths are ignored by one of your .gitignore files:\n" msgstr "Следующие пути игнорируютÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из ваших файлов .gitignore:\n" -#: 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 +#: builtin/add.c:266 builtin/clean.c:870 builtin/fetch.c:115 builtin/mv.c:111 +#: builtin/prune-packed.c:55 builtin/pull.c:198 builtin/push.c:521 +#: builtin/remote.c:1326 builtin/rm.c:268 builtin/send-pack.c:162 msgid "dry run" msgstr "пробный запуÑк" -#: 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 "быть многоÑловнее" - -#: builtin/add.c:256 +#: builtin/add.c:269 msgid "interactive picking" msgstr "интерактивный выбор" -#: builtin/add.c:257 builtin/checkout.c:1157 builtin/reset.c:286 +#: builtin/add.c:270 builtin/checkout.c:1156 builtin/reset.c:286 msgid "select hunks interactively" msgstr "интерактивный выбор блоков" -#: builtin/add.c:258 +#: builtin/add.c:271 msgid "edit current diff and apply" msgstr "отредактировать текущий файл различий и применить его" -#: builtin/add.c:259 +#: builtin/add.c:272 msgid "allow adding otherwise ignored files" msgstr "разрешить добавление игнорируемых иначе файлов" -#: builtin/add.c:260 +#: builtin/add.c:273 msgid "update tracked files" msgstr "обновить отÑлеживаемые файлы" -#: builtin/add.c:261 +#: builtin/add.c:274 msgid "record only the fact that the path will be added later" msgstr "запиÑать только факт, что путь будет добавлен позже" -#: builtin/add.c:262 +#: builtin/add.c:275 msgid "add changes from all tracked and untracked files" msgstr "добавить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð· вÑех отÑлеживаемых и неотÑлеживаемых файлов" -#: builtin/add.c:265 +#: builtin/add.c:278 msgid "ignore paths removed in the working tree (same as --no-all)" msgstr "игнорировать пути удаленные из рабочего каталога (тоже, что и --no-all)" -#: builtin/add.c:267 +#: builtin/add.c:280 msgid "don't add, only refresh the index" msgstr "не добавлÑÑ‚ÑŒ, только обновить индекÑ" -#: builtin/add.c:268 +#: builtin/add.c:281 msgid "just skip files which cannot be added because of errors" msgstr "пропуÑкать файлы, которые не могут быть добавлены из-за ошибок" -#: builtin/add.c:269 +#: builtin/add.c:282 msgid "check if - even missing - files are ignored in dry run" msgstr "удоÑтоверитьÑÑ, что даже недоÑтающие файлы будут проигнорированы при пробном запуÑке" -#: builtin/add.c:270 builtin/update-index.c:958 +#: builtin/add.c:283 builtin/update-index.c:947 msgid "(+/-)x" msgstr "(+/-)x" -#: builtin/add.c:270 builtin/update-index.c:959 +#: builtin/add.c:283 builtin/update-index.c:948 msgid "override the executable bit of the listed files" msgstr "переопределить бит Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½Ð° указанных файлах" -#: builtin/add.c:292 +#: builtin/add.c:305 #, c-format msgid "Use -f if you really want to add them.\n" msgstr "ИÑпользуйте -f, еÑли вы дейÑтвительно хотите добавить их.\n" -#: builtin/add.c:300 +#: builtin/add.c:312 msgid "adding files failed" msgstr "ошибка при добавлении файлов" -#: builtin/add.c:336 +#: builtin/add.c:348 msgid "-A and -u are mutually incompatible" msgstr "-A и -u Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно" -#: builtin/add.c:343 +#: builtin/add.c:355 msgid "Option --ignore-missing can only be used together with --dry-run" msgstr "ÐžÐ¿Ñ†Ð¸Ñ --ignore-missing может иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ вмеÑте Ñ --dry-run" -#: builtin/add.c:352 +#: builtin/add.c:359 #, c-format msgid "--chmod param '%s' must be either -x or +x" msgstr "параметр --chmod «%s» должен быть -x или +x" -#: builtin/add.c:367 +#: builtin/add.c:374 #, c-format msgid "Nothing specified, nothing added.\n" msgstr "Ðичего не указано, ничего не добавлено.\n" -#: builtin/add.c:368 +#: builtin/add.c:375 #, c-format msgid "Maybe you wanted to say 'git add .'?\n" msgstr "Возможно, вы имели в виду «git add .»?\n" -#: 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/add.c:380 builtin/check-ignore.c:172 builtin/checkout.c:279 +#: builtin/checkout.c:472 builtin/clean.c:914 builtin/commit.c:350 #: builtin/mv.c:131 builtin/reset.c:235 builtin/rm.c:298 -#: builtin/submodule--helper.c:240 +#: builtin/submodule--helper.c:244 msgid "index file corrupt" msgstr "файл индекÑа поврежден" -#: builtin/add.c:454 builtin/apply.c:4784 builtin/mv.c:286 builtin/rm.c:431 -msgid "Unable to write new index file" -msgstr "Ðе удалоÑÑŒ запиÑать новый файл индекÑа" - -#: builtin/am.c:257 builtin/commit.c:750 builtin/merge.c:1032 -#, c-format -msgid "could not read '%s'" -msgstr "не удалоÑÑŒ прочитать «%s»" - -#: builtin/am.c:426 +#: builtin/am.c:414 msgid "could not parse author script" msgstr "не удалоÑÑŒ разобрать Ñценарий авторÑтва" -#: builtin/am.c:503 +#: builtin/am.c:491 #, c-format msgid "'%s' was deleted by the applypatch-msg hook" msgstr "«%s» был удален перехватчиком applypatch-msg" -#: builtin/am.c:544 builtin/notes.c:301 +#: builtin/am.c:532 #, c-format msgid "Malformed input line: '%s'." msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока ввода: «%s»." -#: builtin/am.c:581 builtin/notes.c:316 +#: builtin/am.c:569 #, c-format msgid "Failed to copy notes from '%s' to '%s'" msgstr "Ðе удалоÑÑŒ Ñкопировать заметку из «%s» в «%s»" -#: builtin/am.c:607 +#: builtin/am.c:595 msgid "fseek failed" msgstr "Ñбой при выполнении fseek" -#: builtin/am.c:787 +#: builtin/am.c:775 #, c-format msgid "could not parse patch '%s'" msgstr "не удалоÑÑŒ разобрать патч «%s»" -#: builtin/am.c:852 +#: builtin/am.c:840 msgid "Only one StGIT patch series can be applied at once" msgstr "Только ÑÐµÑ€Ð¸Ñ Ð¿Ð°Ñ‚Ñ‡ÐµÐ¹ StGIT может быть применена за раз" -#: builtin/am.c:899 +#: builtin/am.c:887 msgid "invalid timestamp" msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¼ÐµÑ‚ÐºÐ° даты/времени" -#: builtin/am.c:902 builtin/am.c:910 +#: builtin/am.c:890 builtin/am.c:898 msgid "invalid Date line" msgstr "недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ñтрока даты" -#: builtin/am.c:907 +#: builtin/am.c:895 msgid "invalid timezone offset" msgstr "недопуÑтимое Ñмещение чаÑового поÑÑа" -#: builtin/am.c:996 +#: builtin/am.c:984 msgid "Patch format detection failed." msgstr "Сбой Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° патча." -#: builtin/am.c:1001 builtin/clone.c:380 +#: builtin/am.c:989 builtin/clone.c:379 #, c-format msgid "failed to create directory '%s'" msgstr "не удалоÑÑŒ Ñоздать каталог «%s»" -#: builtin/am.c:1005 +#: builtin/am.c:993 msgid "Failed to split patches." msgstr "Ðе удалоÑÑŒ разделить патчи на чаÑти." -#: builtin/am.c:1137 builtin/commit.c:366 +#: builtin/am.c:1125 builtin/commit.c:376 msgid "unable to write index file" msgstr "не удалоÑÑŒ запиÑать индекÑ" -#: builtin/am.c:1188 +#: builtin/am.c:1176 #, c-format msgid "When you have resolved this problem, run \"%s --continue\"." msgstr "Когда вы уÑтраните Ñту проблему, запуÑтите «%s --continue»." -#: builtin/am.c:1189 +#: builtin/am.c:1177 #, c-format msgid "If you prefer to skip this patch, run \"%s --skip\" instead." msgstr "ЕÑли вы хотите пропуÑтить Ñтот патч, то запуÑтите «%s --skip»." -#: builtin/am.c:1190 +#: builtin/am.c:1178 #, c-format msgid "To restore the original branch and stop patching, run \"%s --abort\"." msgstr "Чтобы вернутьÑÑ Ð½Ð° предыдущую ветку и оÑтановить применение изменений, запуÑтите «%s --abort»." -#: builtin/am.c:1328 +#: builtin/am.c:1316 msgid "Patch is empty. Was it split wrong?" msgstr "Патч пуÑÑ‚. Возможно, он был неправильно разделён?" -#: builtin/am.c:1402 builtin/log.c:1543 +#: builtin/am.c:1390 builtin/log.c:1550 #, c-format msgid "invalid ident line: %s" msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñтрока идентификации: %s" -#: builtin/am.c:1429 +#: builtin/am.c:1417 #, c-format msgid "unable to parse commit %s" msgstr "не удалоÑÑŒ разобрать коммит %s" -#: builtin/am.c:1602 +#: builtin/am.c:1610 msgid "Repository lacks necessary blobs to fall back on 3-way merge." msgstr "Ð’ репозитории отÑутÑтвуют двоичные объекты, необходимые Ð´Ð»Ñ Ð¾Ñ‚ÐºÐ°Ñ‚Ð° к трехходовому ÑлиÑнию." -#: builtin/am.c:1604 +#: builtin/am.c:1612 msgid "Using index info to reconstruct a base tree..." msgstr "ИÑпользую Ð¸Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ Ñ€ÐµÐºÐ¾Ð½Ñтрукции базового дерева…" -#: builtin/am.c:1623 +#: builtin/am.c:1631 msgid "" "Did you hand edit your patch?\n" "It does not apply to blobs recorded in its index." msgstr "Ð’Ñ‹ вручную изменÑли патч?\nОн не накладываетÑÑ Ð±ÐµÐ· ошибок на двоичные объекты, запиÑанные в его заголовке." -#: builtin/am.c:1629 +#: builtin/am.c:1637 msgid "Falling back to patching base and 3-way merge..." msgstr "Откат к применению изменений к базовому коммиту Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ трехходового ÑлиÑниÑ…" -#: builtin/am.c:1654 +#: builtin/am.c:1662 msgid "Failed to merge in the changes." msgstr "Ðе удалоÑÑŒ Ñлить изменениÑ." -#: builtin/am.c:1679 builtin/merge.c:628 +#: builtin/am.c:1686 builtin/merge.c:628 msgid "git write-tree failed to write a tree" msgstr "git write-tree не удалоÑÑŒ запиÑать дерево" -#: builtin/am.c:1686 +#: builtin/am.c:1693 msgid "applying to an empty history" msgstr "применение к пуÑтой иÑтории" -#: builtin/am.c:1699 builtin/commit.c:1776 builtin/merge.c:798 +#: builtin/am.c:1706 builtin/commit.c:1769 builtin/merge.c:798 #: builtin/merge.c:823 msgid "failed to write commit object" msgstr "Ñбой запиÑи объекта коммита" -#: builtin/am.c:1731 builtin/am.c:1735 +#: builtin/am.c:1739 builtin/am.c:1743 #, c-format msgid "cannot resume: %s does not exist." msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶Ð½Ð¸Ñ‚ÑŒ: %s не ÑущеÑтвует " -#: builtin/am.c:1751 +#: builtin/am.c:1759 msgid "cannot be interactive without stdin connected to a terminal." msgstr "не удалоÑÑŒ иÑпользовать интерактивное поведение, без stdin подключенного к терминалу." -#: builtin/am.c:1756 +#: builtin/am.c:1764 msgid "Commit Body is:" msgstr "Тело коммита:" #. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a] #. in your translation. The program will only accept English #. input at this point. -#: builtin/am.c:1766 +#: builtin/am.c:1774 msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: " msgstr "Применить? [y] - да/[n] - нет/[e] - редактировать/[v] - проÑмотреть патч/[a] - применить вÑÑ‘: " -#: builtin/am.c:1816 +#: builtin/am.c:1824 #, c-format msgid "Dirty index: cannot apply patches (dirty: %s)" msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð½Ðµ пуÑтой: Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÑÑ‚ÑŒ патчи (в индекÑе: %s)" -#: builtin/am.c:1853 builtin/am.c:1925 +#: builtin/am.c:1861 builtin/am.c:1933 #, c-format msgid "Applying: %.*s" msgstr "Применение: %.*s" -#: builtin/am.c:1869 +#: builtin/am.c:1877 msgid "No changes -- Patch already applied." msgstr "Ðет изменений — Патч уже применен." -#: builtin/am.c:1877 +#: builtin/am.c:1885 #, c-format msgid "Patch failed at %s %.*s" msgstr "Ошибка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ на %s %.*s" -#: builtin/am.c:1883 +#: builtin/am.c:1891 #, c-format msgid "The copy of the patch that failed is found in: %s" msgstr "Копию изменений, которые не удалоÑÑŒ применить, вы можете найти в: %s" -#: builtin/am.c:1928 +#: builtin/am.c:1936 msgid "" "No changes - did you forget to use 'git add'?\n" "If there is nothing left to stage, chances are that something else\n" "already introduced the same changes; you might want to skip this patch." msgstr "Ðет изменений — возможно, вы забыли вызвать «git add»?\nЕÑли ничего не оÑталоÑÑŒ Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑации, то, Ñкорее вÑего, что-то другое уже Ñделало те же изменениÑ; возможно, вам Ñледует пропуÑтить Ñтот патч." -#: builtin/am.c:1935 +#: builtin/am.c:1943 msgid "" "You still have unmerged paths in your index.\n" "Did you forget to use 'git add'?" msgstr "У Ð²Ð°Ñ Ð²Ñе еще имеютÑÑ Ð½Ðµ Ñлитые пути в индекÑе.\nВозможно, вы забыли вызвать «git add»?" -#: builtin/am.c:2043 builtin/am.c:2047 builtin/am.c:2059 builtin/reset.c:308 +#: builtin/am.c:2051 builtin/am.c:2055 builtin/am.c:2067 builtin/reset.c:308 #: builtin/reset.c:316 #, c-format msgid "Could not parse object '%s'." msgstr "Ðе удалоÑÑŒ разобрать объект «%s»." -#: builtin/am.c:2095 +#: builtin/am.c:2103 msgid "failed to clean index" msgstr "не удалоÑÑŒ очиÑтить индекÑ" -#: builtin/am.c:2129 +#: builtin/am.c:2137 msgid "" "You seem to have moved HEAD since the last 'am' failure.\n" "Not rewinding to ORIG_HEAD" msgstr "Похоже, что вы перемеÑтили HEAD Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ‚Ð° поÑледней ошибки Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Â«am».\nПеремотка на ORIG_HEAD не выполнÑетÑÑ" -#: builtin/am.c:2192 +#: builtin/am.c:2200 #, c-format msgid "Invalid value for --patch-format: %s" msgstr "Ðеправильное значение Ð´Ð»Ñ --patch-format: %s" -#: builtin/am.c:2225 -msgid "git am [<options>] [(<mbox>|<Maildir>)...]" -msgstr "git am [<опции>] [(<mbox>|<Maildir>)…]" +#: builtin/am.c:2233 +msgid "git am [<options>] [(<mbox> | <Maildir>)...]" +msgstr "git am [<опции>] [(<mbox> | <Maildir>)…]" -#: builtin/am.c:2226 +#: builtin/am.c:2234 msgid "git am [<options>] (--continue | --skip | --abort)" msgstr "git am [<опции>] (--continue | --skip | --abort)" -#: builtin/am.c:2232 +#: builtin/am.c:2240 msgid "run interactively" msgstr "запуÑтить в интерактивном режиме" -#: builtin/am.c:2234 +#: builtin/am.c:2242 msgid "historical option -- no-op" msgstr "иÑторичеÑÐºÐ°Ñ Ð¾Ð¿Ñ†Ð¸Ñ â€” ничего не делает" -#: builtin/am.c:2236 +#: builtin/am.c:2244 msgid "allow fall back on 3way merging if needed" msgstr "разрешить откатитьÑÑ Ðº трехходовому ÑлиÑнию, еÑли нужно" -#: builtin/am.c:2237 builtin/init-db.c:481 builtin/prune-packed.c:57 +#: builtin/am.c:2245 builtin/init-db.c:483 builtin/prune-packed.c:57 #: builtin/repack.c:172 msgid "be quiet" msgstr "тихий режим" -#: builtin/am.c:2239 +#: builtin/am.c:2247 msgid "add a Signed-off-by line to the commit message" msgstr "добавить Ñтроку Signed-off-by к Ñообщению коммита" -#: builtin/am.c:2242 +#: builtin/am.c:2250 msgid "recode into utf8 (default)" msgstr "перекодировать в utf8 (по умолчанию)" -#: builtin/am.c:2244 +#: builtin/am.c:2252 msgid "pass -k flag to git-mailinfo" msgstr "передать флаг -k в git-mailinfo" -#: builtin/am.c:2246 +#: builtin/am.c:2254 msgid "pass -b flag to git-mailinfo" msgstr "передать флаг -b в git-mailinfo" -#: builtin/am.c:2248 +#: builtin/am.c:2256 msgid "pass -m flag to git-mailinfo" msgstr "передать флаг -m в git-mailinfo" -#: builtin/am.c:2250 +#: builtin/am.c:2258 msgid "pass --keep-cr flag to git-mailsplit for mbox format" msgstr "передать флаг --keep-cr в git-mailsplit Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð° mbox" -#: builtin/am.c:2253 +#: builtin/am.c:2261 msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr" msgstr "не передавать --keep-cr флаг в git-mailsplit вне завиÑимоÑти от am.keepcr" -#: builtin/am.c:2256 +#: builtin/am.c:2264 msgid "strip everything before a scissors line" msgstr "обрезать вÑе до Ñтроки обрезки" -#: builtin/am.c:2257 builtin/apply.c:4837 -msgid "action" -msgstr "дейÑтвие" - -#: 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 +#: builtin/am.c:2266 builtin/am.c:2269 builtin/am.c:2272 builtin/am.c:2275 +#: builtin/am.c:2278 builtin/am.c:2281 builtin/am.c:2284 builtin/am.c:2287 +#: builtin/am.c:2293 msgid "pass it through git-apply" msgstr "передать его в git-apply" -#: builtin/am.c:2266 builtin/apply.c:4861 -msgid "root" -msgstr "корень" - -#: 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:402 builtin/submodule--helper.c:482 -#: builtin/submodule--helper.c:485 builtin/submodule--helper.c:823 -#: builtin/submodule--helper.c:826 -msgid "path" -msgstr "путь" - -#: 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 +#: builtin/am.c:2283 builtin/fmt-merge-msg.c:662 builtin/fmt-merge-msg.c:665 +#: builtin/grep.c:707 builtin/merge.c:200 builtin/pull.c:135 +#: builtin/pull.c:194 builtin/repack.c:181 builtin/repack.c:185 +#: builtin/show-branch.c:644 builtin/show-ref.c:175 builtin/tag.c:340 +#: parse-options.h:132 parse-options.h:134 parse-options.h:245 msgid "n" msgstr "n" -#: builtin/am.c:2278 builtin/apply.c:4805 -msgid "num" -msgstr "количеÑтво" - -#: builtin/am.c:2281 builtin/for-each-ref.c:37 builtin/replace.c:438 +#: builtin/am.c:2289 builtin/for-each-ref.c:37 builtin/replace.c:438 #: builtin/tag.c:372 msgid "format" msgstr "формат" -#: builtin/am.c:2282 +#: builtin/am.c:2290 msgid "format the patch(es) are in" msgstr "формат, в котором находÑÑ‚ÑÑ Ð¿Ð°Ñ‚Ñ‡Ð¸" -#: builtin/am.c:2288 +#: builtin/am.c:2296 msgid "override error message when patch failure occurs" msgstr "переопределить Ñообщение об ошибке, еÑли не удалоÑÑŒ наложить изменениÑ" -#: builtin/am.c:2290 +#: builtin/am.c:2298 msgid "continue applying patches after resolving a conflict" msgstr "продолжить применение изменений поÑле Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð»Ð¸ÐºÑ‚Ð°" -#: builtin/am.c:2293 +#: builtin/am.c:2301 msgid "synonyms for --continue" msgstr "Ñиноним Ð´Ð»Ñ --continue" -#: builtin/am.c:2296 +#: builtin/am.c:2304 msgid "skip the current patch" msgstr "пропуÑтить текущий патч" -#: builtin/am.c:2299 +#: builtin/am.c:2307 msgid "restore the original branch and abort the patching operation." msgstr "воÑÑтановить оригинальную ветку и отменить операцию Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹." -#: builtin/am.c:2303 +#: builtin/am.c:2311 msgid "lie about committer date" msgstr "Ñоврать о дате коммитера" -#: builtin/am.c:2305 +#: builtin/am.c:2313 msgid "use current timestamp for author date" msgstr "иÑпользовать текущее Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº Ð²Ñ€ÐµÐ¼Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ñтва" -#: builtin/am.c:2307 builtin/commit.c:1610 builtin/merge.c:229 -#: builtin/pull.c:164 builtin/revert.c:92 builtin/tag.c:355 +#: builtin/am.c:2315 builtin/commit.c:1605 builtin/merge.c:229 +#: builtin/pull.c:165 builtin/revert.c:92 builtin/tag.c:355 msgid "key-id" msgstr "key-id" -#: builtin/am.c:2308 +#: builtin/am.c:2316 msgid "GPG-sign commits" msgstr "подпиÑать коммиты Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ GPG" -#: builtin/am.c:2311 +#: builtin/am.c:2319 msgid "(internal use for git-rebase)" msgstr "(внутреннее иÑпользование Ð´Ð»Ñ git-rebase)" -#: builtin/am.c:2326 +#: builtin/am.c:2334 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." msgstr "ÐžÐ¿Ñ†Ð¸Ñ -b/--binary уже долгое Ð²Ñ€ÐµÐ¼Ñ Ð½Ð¸Ñ‡ÐµÐ³Ð¾ не делает и будет удалена Ñ Ñледующих верÑиÑÑ… Git. ПожалуйÑта, не иÑпользуйте ее." -#: builtin/am.c:2333 +#: builtin/am.c:2341 msgid "failed to read the index" msgstr "Ñбой Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа" -#: builtin/am.c:2348 +#: builtin/am.c:2356 #, c-format msgid "previous rebase directory %s still exists but mbox given." msgstr "предыдущий каталог Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s еще ÑущеÑтвует, но передан mbox." -#: builtin/am.c:2372 +#: builtin/am.c:2380 #, c-format msgid "" "Stray %s directory found.\n" "Use \"git am --abort\" to remove it." msgstr "Ðайден забытый каталог %s.\nИÑпользуйте «git am --abort», чтобы удалить его." -#: builtin/am.c:2378 +#: builtin/am.c:2386 msgid "Resolve operation not in progress, we are not resuming." msgstr "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚Ð¾Ð² не в процеÑÑе выполнениÑ, не продолжаем." -#: builtin/apply.c:122 +#: builtin/apply.c:8 msgid "git apply [<options>] [<patch>...]" msgstr "git apply [<опции>] [<патч>…]" -#: builtin/apply.c:153 -#, c-format -msgid "unrecognized whitespace option '%s'" -msgstr "Ð½ÐµÐ¾Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð¾Ð² «%s»" - -#: builtin/apply.c:169 -#, c-format -msgid "unrecognized whitespace ignore option '%s'" -msgstr "Ð½ÐµÐ¾Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ Ð´Ð»Ñ Ð¸Ð³Ð½Ð¾Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ð±ÐµÐ»Ð¾Ð² «%s»" - -#: builtin/apply.c:854 -#, c-format -msgid "Cannot prepare timestamp regexp %s" -msgstr "Ðе удалоÑÑŒ подготовить регулÑрное выражение Ð´Ð»Ñ Ð¼ÐµÑ‚ÐºÐ¸ времени %s" - -#: builtin/apply.c:863 -#, c-format -msgid "regexec returned %d for input: %s" -msgstr "regexec возвратил %d Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð°: %s" - -#: builtin/apply.c:947 -#, c-format -msgid "unable to find filename in patch at line %d" -msgstr "не удалоÑÑŒ найти Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° в Ñтроке патча %d" - -#: 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 — ожидалоÑÑŒ /dev/null, получено %s на Ñтроке %d" - -#: builtin/apply.c:989 -#, c-format -msgid "git apply: bad git-diff - inconsistent new filename on line %d" -msgstr "git apply: плохой git-diff — не ÑоглаÑующееÑÑ Ð½Ð¾Ð²Ð¾Ðµ Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° на Ñтроке %d" - -#: builtin/apply.c:990 -#, c-format -msgid "git apply: bad git-diff - inconsistent old filename on line %d" -msgstr "git apply: плохой git-diff — не ÑоглаÑующееÑÑ Ñтарое Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° на Ñтроке %d" - -#: builtin/apply.c:995 -#, c-format -msgid "git apply: bad git-diff - expected /dev/null on line %d" -msgstr "git apply: плохой git-diff — ожидалоÑÑŒ /dev/null на Ñтроке %d" - -#: builtin/apply.c:1489 -#, c-format -msgid "recount: unexpected line: %.*s" -msgstr "recount: не Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð°Ñ Ñтрока: %.*s" - -#: builtin/apply.c:1550 -#, c-format -msgid "patch fragment without header at line %d: %.*s" -msgstr "фрагмент изменений без заголовка на Ñтроке %d: %.*s" - -#: builtin/apply.c:1567 -#, c-format -msgid "" -"git diff header lacks filename information when removing %d leading pathname" -" component (line %d)" -msgid_plural "" -"git diff header lacks filename information when removing %d leading pathname" -" components (line %d)" -msgstr[0] "заголовок git diff не нашел информацию об имени файла при удалении %d ведущего компонента пути к файлу (Ñтрока %d)" -msgstr[1] "заголовок git diff не нашел информацию об имени файла при удалении %d ведущих компонент пути к файлу (Ñтрока %d)" -msgstr[2] "заголовок git diff не нашел информацию об имени файла при удалении %d ведущих компонент пути к файлу (Ñтрока %d)" -msgstr[3] "заголовок git diff не нашел информацию об имени файла при удалении %d ведущих компонент пути к файлу (Ñтрока %d)" - -#: builtin/apply.c:1743 -msgid "new file depends on old contents" -msgstr "новый файл завиÑит от Ñтарого Ñодержимого" - -#: builtin/apply.c:1745 -msgid "deleted file still has contents" -msgstr "удаленный файл вÑе еще имеет Ñодержимое" - -#: builtin/apply.c:1774 -#, c-format -msgid "corrupt patch at line %d" -msgstr "патч поврежден на Ñтроке %d" - -#: builtin/apply.c:1810 -#, c-format -msgid "new file %s depends on old contents" -msgstr "новый файл %s завиÑит от Ñтарого Ñодержимого" - -#: builtin/apply.c:1812 -#, c-format -msgid "deleted file %s still has contents" -msgstr "удаленный файл %s вÑе еще имеет Ñодержимое" - -#: builtin/apply.c:1815 -#, c-format -msgid "** warning: file %s becomes empty but is not deleted" -msgstr "** предупреждение: файл %s ÑтановитÑÑ Ð¿ÑƒÑтым, но не удалÑетÑÑ" - -#: builtin/apply.c:1962 -#, c-format -msgid "corrupt binary patch at line %d: %.*s" -msgstr "поврежденный двоичный патч на Ñтроке %d: %.*s" - -#: builtin/apply.c:1999 -#, c-format -msgid "unrecognized binary patch at line %d" -msgstr "неопознанный двоичный патч на Ñтроке %d" - -#: builtin/apply.c:2154 -#, c-format -msgid "patch with only garbage at line %d" -msgstr "патч Ñ Ð¼ÑƒÑором на Ñтроке %d" - -#: builtin/apply.c:2244 -#, c-format -msgid "unable to read symlink %s" -msgstr "не удалоÑÑŒ прочитать Ñимвольную ÑÑылку %s" - -#: builtin/apply.c:2248 -#, c-format -msgid "unable to open or read %s" -msgstr "не удалоÑÑŒ открыть или прочеÑÑ‚ÑŒ %s" - -#: builtin/apply.c:2901 -#, c-format -msgid "invalid start of line: '%c'" -msgstr "неправильное начало Ñтроки: «%c»" - -#: 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] "ЧаÑÑ‚ÑŒ #%d уÑпешно применена на %d (Ñо Ñдвигом в %d Ñтроку)." -msgstr[1] "ЧаÑÑ‚ÑŒ #%d уÑпешно применена на %d (Ñо Ñдвигом в %d Ñтроки)." -msgstr[2] "ЧаÑÑ‚ÑŒ #%d уÑпешно применена на %d (Ñо Ñдвигом в %d Ñтрок)." -msgstr[3] "ЧаÑÑ‚ÑŒ #%d уÑпешно применена на %d (Ñо Ñдвигом в %d Ñтрок)." - -#: builtin/apply.c:3032 -#, c-format -msgid "Context reduced to (%ld/%ld) to apply fragment at %d" -msgstr "КонтекÑÑ‚ Ñужен до (%ld/%ld), чтобы применить фрагмент на %d Ñтроке" - -#: builtin/apply.c:3038 -#, c-format -msgid "" -"while searching for:\n" -"%.*s" -msgstr "при поиÑке:\n%.*s" - -#: builtin/apply.c:3060 -#, c-format -msgid "missing binary patch data for '%s'" -msgstr "пропущены данные двоичного патча Ð´Ð»Ñ Â«%s»" - -#: builtin/apply.c:3163 -#, c-format -msgid "binary patch does not apply to '%s'" -msgstr "не удалоÑÑŒ применить двоичный патч к «%s»" - -#: builtin/apply.c:3169 -#, c-format -msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)" -msgstr "поÑле Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ патча Ð´Ð»Ñ Â«%s» был получен неправильный результат (ожидалоÑÑŒ %s, получено %s)" - -#: builtin/apply.c:3190 -#, c-format -msgid "patch failed: %s:%ld" -msgstr "ошибка Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹: %s:%ld" - -#: builtin/apply.c:3314 -#, c-format -msgid "cannot checkout %s" -msgstr "не удалоÑÑŒ переключить ÑоÑтоÑние на %s" - -#: builtin/apply.c:3370 -#, c-format -msgid "reading from '%s' beyond a symbolic link" -msgstr "чтение из «%s» за ÑимволичеÑкой ÑÑылкой" - -#: builtin/apply.c:3399 builtin/apply.c:3630 -#, c-format -msgid "path %s has been renamed/deleted" -msgstr "путь %s был переименован/удален" - -#: builtin/apply.c:3482 builtin/apply.c:3644 -#, c-format -msgid "%s: does not exist in index" -msgstr "%s: нет в индекÑе" - -#: builtin/apply.c:3486 builtin/apply.c:3636 builtin/apply.c:3658 -#, c-format -msgid "%s: %s" -msgstr "%s: %s" - -#: builtin/apply.c:3491 builtin/apply.c:3652 -#, c-format -msgid "%s: does not match index" -msgstr "%s: не Ñовпадает Ñ Ð¸Ð½Ð´ÐµÐºÑом" - -#: builtin/apply.c:3597 -msgid "removal patch leaves file contents" -msgstr "патч ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð½Ðµ удалил Ñодержимое файла" - -#: builtin/apply.c:3669 -#, c-format -msgid "%s: wrong type" -msgstr "%s: неправильный тип" - -#: builtin/apply.c:3671 -#, c-format -msgid "%s has type %o, expected %o" -msgstr "%s имеет тип %o, а ожидалÑÑ %o" - -#: builtin/apply.c:3822 builtin/apply.c:3824 -#, c-format -msgid "invalid path '%s'" -msgstr "неправильный путь «%s»" - -#: builtin/apply.c:3879 -#, c-format -msgid "%s: already exists in index" -msgstr "%s: уже ÑодержитÑÑ Ð² индекÑе" - -#: builtin/apply.c:3882 -#, c-format -msgid "%s: already exists in working directory" -msgstr "%s: уже ÑодержитÑÑ Ð² рабочем каталоге" - -#: builtin/apply.c:3902 -#, c-format -msgid "new mode (%o) of %s does not match old mode (%o)" -msgstr "новый режим доÑтупа (%o) Ð´Ð»Ñ %s не ÑоответÑтвует Ñтарому режиму доÑтупа (%o)" - -#: builtin/apply.c:3907 -#, c-format -msgid "new mode (%o) of %s does not match old mode (%o) of %s" -msgstr "новый режим доÑтупа (%o) Ð´Ð»Ñ %s не ÑоответÑтвует Ñтарому режиму доÑтупа (%o) Ð´Ð»Ñ %s" - -#: builtin/apply.c:3927 -#, c-format -msgid "affected file '%s' is beyond a symbolic link" -msgstr "затронутый файл «%s» находитÑÑ Ð·Ð° ÑимволичеÑкой ÑÑылкой" - -#: builtin/apply.c:3931 -#, c-format -msgid "%s: patch does not apply" -msgstr "%s: не удалоÑÑŒ применить патч" - -#: builtin/apply.c:3945 -#, c-format -msgid "Checking patch %s..." -msgstr "Проверка патча %s…" - -#: builtin/apply.c:4038 builtin/checkout.c:233 builtin/reset.c:135 -#, c-format -msgid "make_cache_entry failed for path '%s'" -msgstr "Ñбой make_cache_entry Ð´Ð»Ñ Ð¿ÑƒÑ‚Ð¸ «%s»" - -#: builtin/apply.c:4182 -#, c-format -msgid "unable to remove %s from index" -msgstr "не удалоÑÑŒ удалить %s из индекÑа" - -#: builtin/apply.c:4215 -#, c-format -msgid "corrupt patch for submodule %s" -msgstr "поврежденный патч Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ %s" - -#: builtin/apply.c:4219 -#, c-format -msgid "unable to stat newly created file '%s'" -msgstr "не удалоÑÑŒ выполнить stat Ð´Ð»Ñ Ñозданного файла «%s»" - -#: builtin/apply.c:4224 -#, c-format -msgid "unable to create backing store for newly created file %s" -msgstr "не удалоÑÑŒ Ñоздать вÑпомогательный файл Ð´Ð»Ñ Ñозданного файла %s" - -#: builtin/apply.c:4227 builtin/apply.c:4340 -#, c-format -msgid "unable to add cache entry for %s" -msgstr "не удалоÑÑŒ Ñоздать запиÑÑŒ в кÑше Ð´Ð»Ñ %s" - -#: builtin/apply.c:4260 -#, c-format -msgid "closing file '%s'" -msgstr "закрытие файла «%s»" - -#: builtin/apply.c:4313 -#, c-format -msgid "unable to write file '%s' mode %o" -msgstr "не удалоÑÑŒ запиÑать файл «%s» Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð¾Ð¼ доÑтупа %o" - -#: builtin/apply.c:4403 -#, c-format -msgid "Applied patch %s cleanly." -msgstr "Патч %s применен без ошибок." - -#: builtin/apply.c:4411 -msgid "internal error" -msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°" - -#: builtin/apply.c:4414 -#, c-format -msgid "Applying patch %%s with %d reject..." -msgid_plural "Applying patch %%s with %d rejects..." -msgstr[0] "Применение патча %%s Ñ %d отказом…" -msgstr[1] "Применение патча %%s Ñ %d отказами…" -msgstr[2] "Применение патча %%s Ñ %d отказами…" -msgstr[3] "Применение патча %%s Ñ %d отказами…" - -#: builtin/apply.c:4424 -#, c-format -msgid "truncating .rej filename to %.*s.rej" -msgstr "уÑечение имени .rej файла до %.*s.rej" - -#: builtin/apply.c:4432 -#, c-format -msgid "cannot open %s: %s" -msgstr "не удалоÑÑŒ открыть %s: %s" - -#: builtin/apply.c:4445 -#, c-format -msgid "Hunk #%d applied cleanly." -msgstr "Блок â„–%d применен без ошибок." - -#: builtin/apply.c:4448 -#, c-format -msgid "Rejected hunk #%d." -msgstr "Блок â„–%d отклонен." - -#: builtin/apply.c:4537 -#, c-format -msgid "Skipped patch '%s'." -msgstr "Патч «%s» пропущен." - -#: builtin/apply.c:4545 -msgid "unrecognized input" -msgstr "не раÑпознанный ввод" - -#: builtin/apply.c:4556 -msgid "unable to read index file" -msgstr "не удалоÑÑŒ прочитать файл индекÑа" - -#: builtin/apply.c:4701 -msgid "--3way outside a repository" -msgstr "--3way вне репозиториÑ" - -#: builtin/apply.c:4709 -msgid "--index outside a repository" -msgstr "--index вне репозиториÑ" - -#: builtin/apply.c:4712 -msgid "--cached outside a repository" -msgstr "--cached вне репозиториÑ" - -#: builtin/apply.c:4745 -#, c-format -msgid "can't open patch '%s'" -msgstr "не удалоÑÑŒ открыть патч «%s»" - -#: builtin/apply.c:4760 -#, c-format -msgid "squelched %d whitespace error" -msgid_plural "squelched %d whitespace errors" -msgstr[0] "пропущена %d ошибка в пробельных Ñимволах" -msgstr[1] "пропущено %d ошибки в пробельных Ñимволах" -msgstr[2] "пропущено %d ошибок в пробельных Ñимволах" -msgstr[3] "пропущено %d ошибок в пробельных Ñимволах" - -#: 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 Ñтрока добавила ошибки в пробельных Ñимволах." -msgstr[1] "%d Ñтроки добавили ошибки в пробельных Ñимволах." -msgstr[2] "%d Ñтрок добавили ошибки в пробельных Ñимволах." -msgstr[3] "%d Ñтрок добавили ошибки в пробельных Ñимволах." - -#: builtin/apply.c:4800 -msgid "don't apply changes matching the given path" -msgstr "не применÑÑ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾ указанному пути" - -#: builtin/apply.c:4803 -msgid "apply changes matching the given path" -msgstr "применÑÑ‚ÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð¾ указанному пути" - -#: builtin/apply.c:4806 -msgid "remove <num> leading slashes from traditional diff paths" -msgstr "удалить <количеÑтво> ведущих коÑÑ‹Ñ… черт из традиционных путей ÑпиÑка изменений" - -#: builtin/apply.c:4809 -msgid "ignore additions made by the patch" -msgstr "игнорировать добавлениÑ, Ñделанные Ñтим патчем" - -#: builtin/apply.c:4811 -msgid "instead of applying the patch, output diffstat for the input" -msgstr "вмеÑто Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ‚Ñ‡Ð° вывеÑти ÑтатиÑтику добавлений и удалений Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð°" - -#: builtin/apply.c:4815 -msgid "show number of added and deleted lines in decimal notation" -msgstr "показать количеÑтво добавленных и удаленных Ñтрок в деÑÑтичном предÑтавлении" - -#: builtin/apply.c:4817 -msgid "instead of applying the patch, output a summary for the input" -msgstr "вмеÑто Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ‚Ñ‡Ð° вывеÑти ÑтатиÑтику изменений Ð´Ð»Ñ Ð²Ð²Ð¾Ð´Ð°" - -#: builtin/apply.c:4819 -msgid "instead of applying the patch, see if the patch is applicable" -msgstr "вмеÑто Ð¿Ñ€Ð¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ð°Ñ‚Ñ‡Ð° проверить подходит ли он" - -#: builtin/apply.c:4821 -msgid "make sure the patch is applicable to the current index" -msgstr "проверить, что патч применÑетÑÑ Ðº текущему индекÑу" - -#: builtin/apply.c:4823 -msgid "apply a patch without touching the working tree" -msgstr "применить патч, не изменÑÑ Ñ€Ð°Ð±Ð¾Ñ‡Ð¸Ð¹ каталог" - -#: builtin/apply.c:4825 -msgid "accept a patch that touches outside the working area" -msgstr "принÑÑ‚ÑŒ патч, который затрагивает файлы за рабочим каталогом" - -#: builtin/apply.c:4827 -msgid "also apply the patch (use with --stat/--summary/--check)" -msgstr "а также применить патч (иÑпользуйте Ñ --stat/--summary/--check)" - -#: builtin/apply.c:4829 -msgid "attempt three-way merge if a patch does not apply" -msgstr "попытатьÑÑ Ñделать трехходовое ÑлиÑние, еÑли патч не применÑетÑÑ" - -#: builtin/apply.c:4831 -msgid "build a temporary index based on embedded index information" -msgstr "поÑтроить временный индекÑ, оÑнованный на вÑтроенной информации об индекÑе" - -#: builtin/apply.c:4834 builtin/checkout-index.c:169 builtin/ls-files.c:426 -msgid "paths are separated with NUL character" -msgstr "пути, отделённые ÐУЛЕВЫМ Ñимволом" - -#: builtin/apply.c:4836 -msgid "ensure at least <n> lines of context match" -msgstr "удоÑтоверитьÑÑ, что по крайней мере <n> Ñтрок контекÑта Ñовпадают" - -#: builtin/apply.c:4838 -msgid "detect new or modified lines that have whitespace errors" -msgstr "определÑÑ‚ÑŒ новые или модифицированные Ñтроки, у которых еÑÑ‚ÑŒ ошибки в пробельных Ñимволах" - -#: builtin/apply.c:4841 builtin/apply.c:4844 -msgid "ignore changes in whitespace when finding context" -msgstr "игнорировать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² пробельных Ñимволах при поиÑке контекÑта" - -#: builtin/apply.c:4847 -msgid "apply the patch in reverse" -msgstr "применить патч Ñ Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸ÐµÐ¼ изменений" - -#: builtin/apply.c:4849 -msgid "don't expect at least one line of context" -msgstr "не ожидать как минимум одной Ñтроки контекÑта" - -#: builtin/apply.c:4851 -msgid "leave the rejected hunks in corresponding *.rej files" -msgstr "оÑтавить отклоненные блоки изменений в ÑоответÑтвующих *.rej файлах" - -#: builtin/apply.c:4853 -msgid "allow overlapping hunks" -msgstr "разрешить перекрывающиеÑÑ Ð±Ð»Ð¾ÐºÐ¸ изменений" - -#: builtin/apply.c:4856 -msgid "tolerate incorrectly detected missing new-line at the end of file" -msgstr "разрешить некорректно определенные пропущенные пуÑтые Ñтроки в конце файла" - -#: builtin/apply.c:4859 -msgid "do not trust the line counts in the hunk headers" -msgstr "не доверÑÑ‚ÑŒ количеÑтву Ñтрок из заголовка блока изменений" - -#: builtin/apply.c:4862 -msgid "prepend <root> to all filenames" -msgstr "добавить <корень> Ñпереди ко вÑем именам файлов" - #: builtin/archive.c:17 #, c-format msgid "could not create archive file '%s'" @@ -3860,112 +4306,160 @@ msgstr "<опции-rev-list> документированы в git-rev-list(1)" msgid "Blaming lines" msgstr "ПроÑмотр авторов Ñтрок" -#: builtin/blame.c:2536 +#: builtin/blame.c:2577 msgid "Show blame entries as we find them, incrementally" msgstr "Показать запиÑи авторÑтва поÑтепенно, в процеÑÑе нахождениÑ" -#: builtin/blame.c:2537 +#: builtin/blame.c:2578 msgid "Show blank SHA-1 for boundary commits (Default: off)" msgstr "Ðе показывать SHA-1 Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð¾Ð², не входÑщих в границы запроÑа (По умолчанию: отключено)" -#: builtin/blame.c:2538 +#: builtin/blame.c:2579 msgid "Do not treat root commits as boundaries (Default: off)" msgstr "Ðе воÑпринимать корневые коммиты как граничные (По умолчанию: отключено)" -#: builtin/blame.c:2539 +#: builtin/blame.c:2580 msgid "Show work cost statistics" msgstr "Показать ÑтатиÑтику раÑходов на выполнение запроÑа" -#: builtin/blame.c:2540 +#: builtin/blame.c:2581 msgid "Force progress reporting" msgstr "Принудительно выводить прогреÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ" -#: builtin/blame.c:2541 +#: builtin/blame.c:2582 msgid "Show output score for blame entries" msgstr "Показать оценку Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñей авторÑтва" -#: builtin/blame.c:2542 +#: builtin/blame.c:2583 msgid "Show original filename (Default: auto)" msgstr "Показать оригинальное Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° (По умолчанию: автоматичеÑки)" -#: builtin/blame.c:2543 +#: builtin/blame.c:2584 msgid "Show original linenumber (Default: off)" msgstr "Показать оригинальные номера Ñтрок (По умолчанию: отключено)" -#: builtin/blame.c:2544 +#: builtin/blame.c:2585 msgid "Show in a format designed for machine consumption" msgstr "Показать в формате Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð¾Ð³Ð¾ разбора" -#: builtin/blame.c:2545 +#: builtin/blame.c:2586 msgid "Show porcelain format with per-line commit information" msgstr "Показать в машиночитаемом формате, Ñ Ð¿Ð¾Ñтрочной информацией о коммите" -#: builtin/blame.c:2546 +#: builtin/blame.c:2587 msgid "Use the same output mode as git-annotate (Default: off)" msgstr "ИÑпользовать такой же формат вывода, как и git-annotate (По умолчанию: отключено)" -#: builtin/blame.c:2547 +#: builtin/blame.c:2588 msgid "Show raw timestamp (Default: off)" msgstr "Показать необработанные временные метки (По умолчанию: отключено)" -#: builtin/blame.c:2548 +#: builtin/blame.c:2589 msgid "Show long commit SHA1 (Default: off)" msgstr "Показать длинный SHA1 идентификатор коммита (По умолчанию: отключено)" -#: builtin/blame.c:2549 +#: builtin/blame.c:2590 msgid "Suppress author name and timestamp (Default: off)" msgstr "Ðе показывать Ð¸Ð¼Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ð° и временные метки (По умолчанию: отключено)" -#: builtin/blame.c:2550 +#: builtin/blame.c:2591 msgid "Show author email instead of name (Default: off)" msgstr "Показать почту автора вмеÑто имени (По умолчанию: отключено)" -#: builtin/blame.c:2551 +#: builtin/blame.c:2592 msgid "Ignore whitespace differences" msgstr "Игнорировать Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ Ð² пробелах" -#: builtin/blame.c:2552 +#: builtin/blame.c:2599 +msgid "Use an experimental indent-based heuristic to improve diffs" +msgstr "ИÑпользовать ÑкÑперементальную ÑвриÑтику, оÑнованную на отÑтупах, чтобы улучшить файлы различий" + +#: builtin/blame.c:2600 +msgid "Use an experimental blank-line-based heuristic to improve diffs" +msgstr "ИÑпользовать ÑкÑперементальную ÑвриÑтику, оÑнованную на пуÑÑ‚Ñ‹Ñ… Ñтроках, чтобы улучшить файлы различий" + +#: builtin/blame.c:2602 msgid "Spend extra cycles to find better match" msgstr "Потратить больше времени, Ð´Ð»Ñ Ð½Ð°Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð»ÑƒÑ‡ÑˆÐ¸Ñ… Ñовпадений" -#: builtin/blame.c:2553 +#: builtin/blame.c:2603 msgid "Use revisions from <file> instead of calling git-rev-list" msgstr "ИÑпользовать редакции из <файла> вмеÑто вызова git-rev-list" -#: builtin/blame.c:2554 +#: builtin/blame.c:2604 msgid "Use <file>'s contents as the final image" msgstr "ИÑпользовать Ñодержимое <файла> как финальный Ñнимок" -#: builtin/blame.c:2555 builtin/blame.c:2556 +#: builtin/blame.c:2605 builtin/blame.c:2606 msgid "score" msgstr "мин-длина" -#: builtin/blame.c:2555 +#: builtin/blame.c:2605 msgid "Find line copies within and across files" msgstr "Ðайти копирование Ñтрок в пределах и между файлами" -#: builtin/blame.c:2556 +#: builtin/blame.c:2606 msgid "Find line movements within and across files" msgstr "Ðайти Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñтрок в пределах и между файлами" -#: builtin/blame.c:2557 +#: builtin/blame.c:2607 msgid "n,m" msgstr "начало,конец" -#: builtin/blame.c:2557 +#: builtin/blame.c:2607 msgid "Process only line range n,m, counting from 1" msgstr "Обработать только Ñтроки в диапазоне начало,конец, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ 1" +#: builtin/blame.c:2654 +msgid "--progress can't be used with --incremental or porcelain formats" +msgstr "--progress Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно Ñ --incremental или машиночитаемым (porcelain) форматом" + #. TRANSLATORS: This string is used to tell us the maximum #. display width for a relative timestamp in "git blame" #. output. For C locale, "4 years, 11 months ago", which #. 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:2649 +#: builtin/blame.c:2700 msgid "4 years, 11 months ago" msgstr "4 года и 11 меÑÑцев назад" +#: builtin/blame.c:2780 +msgid "--contents and --reverse do not blend well." +msgstr "--contents и --reverse не очень ÑочетаютÑÑ." + +#: builtin/blame.c:2800 +msgid "cannot use --contents with final commit object name" +msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать --contents Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸ÐµÐ¼ финального имени объекта" + +#: builtin/blame.c:2805 +msgid "--reverse and --first-parent together require specified latest commit" +msgstr "при --reverse и --first-parent вмеÑте нужно указывать конкретный поÑледний коммит" + +#: builtin/blame.c:2832 +msgid "" +"--reverse --first-parent together require range along first-parent chain" +msgstr "при указании --reverse и --first-parent вмеÑте, требуетÑÑ Ñ‚Ð°ÐºÐ¶Ðµ указать диапазон по цепочке первого родителÑ" + +#: builtin/blame.c:2843 +#, c-format +msgid "no such path %s in %s" +msgstr "нет такого пути %s в %s" + +#: builtin/blame.c:2854 +#, c-format +msgid "cannot read blob %s for path %s" +msgstr "невозможно прочитать объект %s Ð´Ð»Ñ Ð¿ÑƒÑ‚Ð¸ %s" + +#: builtin/blame.c:2873 +#, c-format +msgid "file %s has only %lu line" +msgid_plural "file %s has only %lu lines" +msgstr[0] "файл %s Ñодержит только %lu Ñтроку" +msgstr[1] "файл %s Ñодержит только %lu Ñтроки" +msgstr[2] "файл %s Ñодержит только %lu Ñтрок" +msgstr[3] "файл %s Ñодержит только %lu Ñтроки" + #: builtin/branch.c:26 msgid "git branch [<options>] [-r | -a] [--merged | --no-merged]" msgstr "git branch [<опции>] [-r | -a] [--merged | --no-merged]" @@ -4204,6 +4698,10 @@ msgstr "вышеÑтоÑщаÑ" msgid "change the upstream info" msgstr "изменить информацию о вышеÑтоÑщей ветке" +#: builtin/branch.c:660 +msgid "Unset the upstream info" +msgstr "Убрать информацию о вышеÑтоÑщей ветке" + #: builtin/branch.c:661 msgid "use colored output" msgstr "иÑпользовать цветной вывод" @@ -4276,8 +4774,8 @@ msgstr "ключ" msgid "field name to sort on" msgstr "Ð¸Ð¼Ñ Ð¿Ð¾Ð»Ñ, по которому выполнить Ñортировку" -#: 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/branch.c:686 builtin/for-each-ref.c:41 builtin/notes.c:404 +#: builtin/notes.c:407 builtin/notes.c:567 builtin/notes.c:570 #: builtin/tag.c:369 msgid "object" msgstr "объект" @@ -4290,7 +4788,7 @@ msgstr "вывод только веток, определенного объеРmsgid "Failed to resolve HEAD as a valid ref." msgstr "Ðе удалоÑÑŒ определить HEAD как дейÑтвительную ÑÑылку." -#: builtin/branch.c:709 builtin/clone.c:707 +#: builtin/branch.c:709 builtin/clone.c:706 msgid "HEAD not found below refs/heads!" msgstr "HEAD не найден в refs/heads!" @@ -4393,61 +4891,75 @@ msgstr "ТребуетÑÑ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ð¹ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð°Ðº msgid "Need a repository to unbundle." msgstr "ТребуетÑÑ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ð¹ Ð´Ð»Ñ Ñ€Ð°Ñпаковки." -#: builtin/cat-file.c:443 +#: builtin/cat-file.c:513 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|<тип>|--textconv) <объект>" +"git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | " +"-p | <type> | --textconv | --filters) [--path=<path>] <object>" +msgstr "git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -p | <тип> | --textconv | --filters) [--path=<путь>] <объект>" -#: 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:514 +msgid "" +"git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | " +"--filters]" +msgstr "git cat-file (--batch | --batch-check) [--follow-symlinks] [--textconv | --filters]" -#: builtin/cat-file.c:481 +#: builtin/cat-file.c:551 msgid "<type> can be one of: blob, tree, commit, tag" msgstr "<тип> может быть одним из: blob, tree, commit, tag" -#: builtin/cat-file.c:482 +#: builtin/cat-file.c:552 msgid "show object type" msgstr "показать тип объекта" -#: builtin/cat-file.c:483 +#: builtin/cat-file.c:553 msgid "show object size" msgstr "показать размер объекта" -#: builtin/cat-file.c:485 +#: builtin/cat-file.c:555 msgid "exit with zero when there's no error" msgstr "выйти Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ кодом возврата, еÑли нет ошибки" -#: builtin/cat-file.c:486 +#: builtin/cat-file.c:556 msgid "pretty-print object's content" msgstr "Ñтруктурированный вывод Ñодержимого объекта" -#: builtin/cat-file.c:488 +#: builtin/cat-file.c:558 msgid "for blob objects, run textconv on object's content" msgstr "запуÑтить texconv на Ñодержимом двоичных объектов " -#: builtin/cat-file.c:490 +#: builtin/cat-file.c:560 +msgid "for blob objects, run filters on object's content" +msgstr "запуÑк фильтров на Ñодержимом двоичных объектов " + +#: builtin/cat-file.c:561 git-submodule.sh:923 +msgid "blob" +msgstr "двоичный объект" + +#: builtin/cat-file.c:562 +msgid "use a specific path for --textconv/--filters" +msgstr "иÑпользовать определенный путь Ð´Ð»Ñ --textconv/--filters" + +#: builtin/cat-file.c:564 msgid "allow -s and -t to work with broken/corrupt objects" msgstr "разрешить -s и -t работать Ñ Ð¿Ð¾Ð²Ñ€ÐµÐ¶Ð´Ñ‘Ð½Ð½Ñ‹Ð¼Ð¸ объектами" -#: builtin/cat-file.c:491 +#: builtin/cat-file.c:565 msgid "buffer --batch output" msgstr "буфферировать вывод --batch" -#: builtin/cat-file.c:493 +#: builtin/cat-file.c:567 msgid "show info and content of objects fed from the standard input" msgstr "показать информацию и Ñодержимое объектов, переданных из Ñтандартного ввода" -#: builtin/cat-file.c:496 +#: builtin/cat-file.c:570 msgid "show info about objects fed from the standard input" msgstr "показать информацию об объектах, переданных из Ñтандартного ввода" -#: builtin/cat-file.c:499 +#: builtin/cat-file.c:573 msgid "follow in-tree symlinks (used with --batch or --batch-check)" msgstr "переходить по Ñимвольным ÑÑылкам внутри дерева (иÑпользуетÑÑ Ñ Ð¾Ð¿Ñ†Ð¸Ñми --batch и --batch-check)" -#: builtin/cat-file.c:501 +#: builtin/cat-file.c:575 msgid "show all objects with --batch or --batch-check" msgstr "показать вÑе объекты Ñ Ð¾Ð¿Ñ†Ð¸Ñми --batch или --batch-check" @@ -4467,7 +4979,7 @@ msgstr "вывеÑти вÑе атрибуты уÑтановленные Ð´Ð»Ñ msgid "use .gitattributes only from the index" msgstr "иÑпользовать только .gitattributes из индекÑа" -#: builtin/check-attr.c:21 builtin/check-ignore.c:22 builtin/hash-object.c:97 +#: builtin/check-attr.c:21 builtin/check-ignore.c:22 builtin/hash-object.c:98 msgid "read file names from stdin" msgstr "прочитать имена файлов из Ñтандартного ввода" @@ -4475,7 +4987,7 @@ msgstr "прочитать имена файлов из Ñтандартного msgid "terminate input and output records by a NUL character" msgstr "окончание ввода и вывода запиÑей по ÐУЛЕВОМУ Ñимволу" -#: builtin/check-ignore.c:18 builtin/checkout.c:1138 builtin/gc.c:325 +#: builtin/check-ignore.c:18 builtin/checkout.c:1137 builtin/gc.c:325 msgid "suppress progress reporting" msgstr "не выводить прогреÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ" @@ -4565,9 +5077,9 @@ msgid "write the content to temporary files" msgstr "запиÑать Ñодержимое во временные файлы" #: builtin/checkout-index.c:174 builtin/column.c:30 -#: 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 +#: builtin/submodule--helper.c:595 builtin/submodule--helper.c:598 +#: builtin/submodule--helper.c:604 builtin/submodule--helper.c:951 +#: builtin/worktree.c:469 msgid "string" msgstr "Ñтрока" @@ -4638,54 +5150,54 @@ msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑÑ‚ÑŒ пути и переключатьÑÑ Ð msgid "path '%s' is unmerged" msgstr "путь «%s» не Ñлит" -#: builtin/checkout.c:495 +#: builtin/checkout.c:494 msgid "you need to resolve your current index first" msgstr "Ñначала нужно разрешить конфликты в вашем текущем индекÑе" -#: builtin/checkout.c:625 +#: builtin/checkout.c:624 #, c-format msgid "Can not do reflog for '%s': %s\n" msgstr "Ðе удалоÑÑŒ Ñоздать журнал ÑÑылок Ð´Ð»Ñ Â«%s»: %s\n" -#: builtin/checkout.c:664 +#: builtin/checkout.c:663 msgid "HEAD is now at" msgstr "HEAD ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð°" -#: builtin/checkout.c:668 builtin/clone.c:661 +#: builtin/checkout.c:667 builtin/clone.c:660 msgid "unable to update HEAD" msgstr "не удалоÑÑŒ обновить HEAD" -#: builtin/checkout.c:672 +#: builtin/checkout.c:671 #, c-format msgid "Reset branch '%s'\n" msgstr "Ð¡Ð±Ñ€Ð¾Ñ Ð²ÐµÑ‚ÐºÐ¸ «%s»\n" -#: builtin/checkout.c:675 +#: builtin/checkout.c:674 #, c-format msgid "Already on '%s'\n" msgstr "Уже на «%s»\n" -#: builtin/checkout.c:679 +#: builtin/checkout.c:678 #, c-format msgid "Switched to and reset branch '%s'\n" msgstr "Переключение и ÑÐ±Ñ€Ð¾Ñ Ð²ÐµÑ‚ÐºÐ¸ «%s»\n" -#: builtin/checkout.c:681 builtin/checkout.c:1070 +#: builtin/checkout.c:680 builtin/checkout.c:1069 #, c-format msgid "Switched to a new branch '%s'\n" msgstr "Переключено на новую ветку «%s»\n" -#: builtin/checkout.c:683 +#: builtin/checkout.c:682 #, c-format msgid "Switched to branch '%s'\n" msgstr "Переключено на ветку «%s»\n" -#: builtin/checkout.c:734 +#: builtin/checkout.c:733 #, c-format msgid " ... and %d more.\n" msgstr " … и еще %d.\n" -#: builtin/checkout.c:740 +#: builtin/checkout.c:739 #, c-format msgid "" "Warning: you are leaving %d commit behind, not connected to\n" @@ -4702,7 +5214,7 @@ msgstr[1] "Предупреждение: вы оÑтавлÑете позади msgstr[2] "Предупреждение: вы оÑтавлÑете позади %d коммитов не Ñоединенные ни Ñ Ð¾Ð´Ð½Ð¾Ð¹ из ваших веток:\n\n%s\n" msgstr[3] "Предупреждение: вы оÑтавлÑете позади %d коммитов не Ñоединенные ни Ñ Ð¾Ð´Ð½Ð¾Ð¹ из ваших веток:\n\n%s\n" -#: builtin/checkout.c:759 +#: 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" @@ -4721,162 +5233,162 @@ msgstr[1] "ЕÑли вы хотите Ñохранить их Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ msgstr[2] "ЕÑли вы хотите Ñохранить их Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ ветки, то ÑÐµÐ¹Ñ‡Ð°Ñ Ñамое времÑ\nÑделать Ñто Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ:\n\n git branch <имÑ-новой-ветки> %s\n" msgstr[3] "ЕÑли вы хотите Ñохранить их Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ ветки, то ÑÐµÐ¹Ñ‡Ð°Ñ Ñамое времÑ\nÑделать Ñто Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ:\n\n git branch <имÑ-новой-ветки> %s\n" -#: builtin/checkout.c:795 +#: builtin/checkout.c:794 msgid "internal error in revision walk" msgstr "внутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ° при хождении по редакциÑм" -#: builtin/checkout.c:799 +#: builtin/checkout.c:798 msgid "Previous HEAD position was" msgstr "ÐŸÑ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ HEAD была" -#: builtin/checkout.c:826 builtin/checkout.c:1065 +#: builtin/checkout.c:825 builtin/checkout.c:1064 msgid "You are on a branch yet to be born" msgstr "Ð’Ñ‹ находитеÑÑŒ на еще не Ñозданной ветке" -#: builtin/checkout.c:971 +#: builtin/checkout.c:970 #, c-format msgid "only one reference expected, %d given." msgstr "ожидаетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ одна ÑÑылка, а передано %d." -#: builtin/checkout.c:1011 builtin/worktree.c:214 +#: builtin/checkout.c:1010 builtin/worktree.c:214 #, c-format msgid "invalid reference: %s" msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ ÑÑылка: %s" -#: builtin/checkout.c:1040 +#: builtin/checkout.c:1039 #, c-format msgid "reference is not a tree: %s" msgstr "в дереве нет такой ÑÑылки: %s" -#: builtin/checkout.c:1079 +#: builtin/checkout.c:1078 msgid "paths cannot be used with switching branches" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать пути при переключении веток" -#: builtin/checkout.c:1082 builtin/checkout.c:1086 +#: builtin/checkout.c:1081 builtin/checkout.c:1085 #, c-format msgid "'%s' cannot be used with switching branches" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать «%s» при переключении веток" -#: builtin/checkout.c:1090 builtin/checkout.c:1093 builtin/checkout.c:1098 -#: builtin/checkout.c:1101 +#: 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» Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно Ñ Â«%s»" -#: builtin/checkout.c:1106 +#: builtin/checkout.c:1105 #, c-format msgid "Cannot switch branch to a non-commit '%s'" msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒ ветку на не коммит «%s»" -#: builtin/checkout.c:1139 builtin/checkout.c:1141 builtin/clone.c:88 +#: builtin/checkout.c:1138 builtin/checkout.c:1140 builtin/clone.c:93 #: builtin/remote.c:165 builtin/remote.c:167 builtin/worktree.c:324 #: builtin/worktree.c:326 msgid "branch" msgstr "ветка" -#: builtin/checkout.c:1140 +#: builtin/checkout.c:1139 msgid "create and checkout a new branch" msgstr "Ñоздать и переключитьÑÑ Ð½Ð° новую ветку" -#: builtin/checkout.c:1142 +#: builtin/checkout.c:1141 msgid "create/reset and checkout a branch" msgstr "Ñоздать/ÑброÑить и перключитьÑÑ Ð½Ð° новую ветку" -#: builtin/checkout.c:1143 +#: builtin/checkout.c:1142 msgid "create reflog for new branch" msgstr "Ñоздать журнал ÑÑылок Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ ветки" -#: builtin/checkout.c:1144 builtin/worktree.c:328 +#: builtin/checkout.c:1143 builtin/worktree.c:328 msgid "detach HEAD at named commit" msgstr "отÑоединить HEAD на указанном коммите" -#: builtin/checkout.c:1145 +#: builtin/checkout.c:1144 msgid "set upstream info for new branch" msgstr "уÑтановить информацию о вышеÑтоÑщей ветке Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð¹ ветки" -#: builtin/checkout.c:1147 +#: builtin/checkout.c:1146 msgid "new-branch" msgstr "новаÑ-ветка" -#: builtin/checkout.c:1147 +#: builtin/checkout.c:1146 msgid "new unparented branch" msgstr "Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ‚ÐºÐ° без родителей" -#: builtin/checkout.c:1148 +#: builtin/checkout.c:1147 msgid "checkout our version for unmerged files" msgstr "переключитьÑÑ Ð½Ð° нашу верÑию Ð´Ð»Ñ Ð½Ðµ Ñлитых файлов" -#: builtin/checkout.c:1150 +#: builtin/checkout.c:1149 msgid "checkout their version for unmerged files" msgstr "переключитьÑÑ Ð½Ð° их верÑию Ð´Ð»Ñ Ð½Ðµ Ñлитых файлов" -#: builtin/checkout.c:1152 +#: builtin/checkout.c:1151 msgid "force checkout (throw away local modifications)" msgstr "принудительное переключение на ÑоÑтоÑние (отбраÑывает вÑе локальные изменениÑ)" -#: builtin/checkout.c:1153 +#: builtin/checkout.c:1152 msgid "perform a 3-way merge with the new branch" msgstr "выполнить трехходовое ÑлиÑние Ñ Ð½Ð¾Ð²Ð¾Ð¹ веткой" -#: builtin/checkout.c:1154 builtin/merge.c:231 +#: builtin/checkout.c:1153 builtin/merge.c:231 msgid "update ignored files (default)" msgstr "обновить игнорируемые файлы (по умолчанию)" -#: builtin/checkout.c:1155 builtin/log.c:1459 parse-options.h:250 +#: builtin/checkout.c:1154 builtin/log.c:1466 parse-options.h:251 msgid "style" msgstr "Ñтиль" -#: builtin/checkout.c:1156 +#: builtin/checkout.c:1155 msgid "conflict style (merge or diff3)" msgstr "Ñтиль конфликтов ÑлиÑÐ½Ð¸Ñ (merge или diff3)" -#: builtin/checkout.c:1159 +#: builtin/checkout.c:1158 msgid "do not limit pathspecs to sparse entries only" msgstr "не ограничивать Ñпецификаторы пути только чаÑтичными запиÑÑми" -#: builtin/checkout.c:1161 +#: builtin/checkout.c:1160 msgid "second guess 'git checkout <no-such-branch>'" msgstr "переÑмотр «git checkout <нет-такой-ветки>»" -#: builtin/checkout.c:1163 +#: builtin/checkout.c:1162 msgid "do not check if another worktree is holding the given ref" msgstr "не проверÑÑ‚ÑŒ, что другое дерево уже Ñодержит указанную ÑÑылку" -#: 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/checkout.c:1163 builtin/clone.c:63 builtin/fetch.c:119 +#: builtin/merge.c:228 builtin/pull.c:117 builtin/push.c:536 #: builtin/send-pack.c:168 msgid "force progress reporting" msgstr "принудительно выводить прогреÑÑ" -#: builtin/checkout.c:1195 +#: builtin/checkout.c:1194 msgid "-b, -B and --orphan are mutually exclusive" msgstr "-b, -B и --orphan Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно" -#: builtin/checkout.c:1212 +#: builtin/checkout.c:1211 msgid "--track needs a branch name" msgstr "--track требует Ð¸Ð¼Ñ Ð²ÐµÑ‚ÐºÐ¸" -#: builtin/checkout.c:1217 +#: builtin/checkout.c:1216 msgid "Missing branch name; try -b" msgstr "Пропущено Ð¸Ð¼Ñ Ð²ÐµÑ‚ÐºÐ¸; попробуйте -b" -#: builtin/checkout.c:1253 +#: builtin/checkout.c:1252 msgid "invalid path specification" msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿ÑƒÑ‚Ð¸" -#: builtin/checkout.c:1260 +#: 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 "ÐÐµÐ»ÑŒÐ·Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒ пути и одновременно переключитьÑÑ Ð½Ð° ветку «%s».\nÐ’Ñ‹ хотели переключитьÑÑ Ð½Ð° «%s», что не может быть определено как коммит?" -#: builtin/checkout.c:1265 +#: builtin/checkout.c:1264 #, c-format msgid "git checkout: --detach does not take a path argument '%s'" msgstr "git checkout: --detach не принимает путь «%s» как аргумент" -#: builtin/checkout.c:1269 +#: builtin/checkout.c:1268 msgid "" "git checkout: --ours/--theirs, --force and --merge are incompatible when\n" "checking out of the index." @@ -5008,8 +5520,8 @@ msgstr "Ð¸Ð½Ñ‚ÐµÑ€Ð°ÐºÑ‚Ð¸Ð²Ð½Ð°Ñ Ð¾Ñ‡Ð¸Ñтка" msgid "remove whole directories" msgstr "удалить каталоги полноÑтью" -#: builtin/clean.c:875 builtin/describe.c:407 builtin/grep.c:724 -#: builtin/ls-files.c:457 builtin/name-rev.c:314 builtin/show-ref.c:182 +#: builtin/clean.c:875 builtin/describe.c:407 builtin/grep.c:725 +#: builtin/ls-files.c:536 builtin/name-rev.c:313 builtin/show-ref.c:182 msgid "pattern" msgstr "шаблон" @@ -5045,290 +5557,306 @@ msgstr "clean.requireForce уÑтановлен по умолчанию как t msgid "git clone [<options>] [--] <repo> [<dir>]" msgstr "git clone [<опции>] [--] <репозиторий> [<каталог>]" -#: builtin/clone.c:62 +#: builtin/clone.c:65 msgid "don't create a checkout" msgstr "не переключать рабочую копию на HEAD" -#: builtin/clone.c:63 builtin/clone.c:65 builtin/init-db.c:476 +#: builtin/clone.c:66 builtin/clone.c:68 builtin/init-db.c:478 msgid "create a bare repository" msgstr "Ñоздать голый репозиторий" -#: builtin/clone.c:67 +#: builtin/clone.c:70 msgid "create a mirror repository (implies bare)" msgstr "Ñоздать зеркало Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ (включает в ÑÐµÐ±Ñ Ð¸ параметр bare)" -#: builtin/clone.c:69 +#: builtin/clone.c:72 msgid "to clone from a local repository" msgstr "Ð´Ð»Ñ ÐºÐ»Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð· локального репозиториÑ" -#: builtin/clone.c:71 +#: builtin/clone.c:74 msgid "don't use local hardlinks, always copy" msgstr "не иÑпользовать жеÑткие ÑÑылки, вÑегда копировать файлы" -#: builtin/clone.c:73 +#: builtin/clone.c:76 msgid "setup as shared repository" msgstr "наÑтроить как общедоÑтупный репозиторий" -#: builtin/clone.c:75 builtin/clone.c:77 +#: builtin/clone.c:78 builtin/clone.c:80 msgid "initialize submodules in the clone" msgstr "инициализировать подмодули в клоне" -#: builtin/clone.c:79 +#: builtin/clone.c:82 msgid "number of submodules cloned in parallel" msgstr "количеÑтво подмодулей, которые будут клонированы парралельно" -#: builtin/clone.c:80 builtin/init-db.c:473 +#: builtin/clone.c:83 builtin/init-db.c:475 msgid "template-directory" msgstr "каталог-шаблонов" -#: builtin/clone.c:81 builtin/init-db.c:474 +#: builtin/clone.c:84 builtin/init-db.c:476 msgid "directory from which templates will be used" msgstr "каталог, шаблоны из которого будут иÑпользованы" -#: builtin/clone.c:83 builtin/submodule--helper.c:495 -#: builtin/submodule--helper.c:833 +#: builtin/clone.c:86 builtin/clone.c:88 builtin/submodule--helper.c:602 +#: builtin/submodule--helper.c:954 msgid "reference repository" msgstr "ÑÑылаемый репозиторий" -#: builtin/clone.c:85 +#: builtin/clone.c:90 msgid "use --reference only while cloning" msgstr "иÑпользуйте --reference только при клонировании" -#: builtin/clone.c:86 builtin/column.c:26 builtin/merge-file.c:44 +#: builtin/clone.c:91 builtin/column.c:26 builtin/merge-file.c:44 msgid "name" msgstr "имÑ" -#: builtin/clone.c:87 +#: builtin/clone.c:92 msgid "use <name> instead of 'origin' to track upstream" msgstr "иÑпользовать <имÑ> вмеÑто «origin» Ð´Ð»Ñ Ð¾Ñ‚ÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð²Ñ‹ÑˆÐµÑтоÑщего репозиториÑ" -#: builtin/clone.c:89 +#: builtin/clone.c:94 msgid "checkout <branch> instead of the remote's HEAD" msgstr "переключитьÑÑ Ð½Ð° <ветку>, вмеÑто HEAD внешнего репозиториÑ" -#: builtin/clone.c:91 +#: builtin/clone.c:96 msgid "path to git-upload-pack on the remote" msgstr "путь к git-upload-pack на внешнем репозитории" -#: builtin/clone.c:92 builtin/fetch.c:118 builtin/grep.c:667 -#: builtin/pull.c:201 +#: builtin/clone.c:97 builtin/fetch.c:120 builtin/grep.c:668 +#: builtin/pull.c:202 msgid "depth" msgstr "глубина" -#: builtin/clone.c:93 +#: builtin/clone.c:98 msgid "create a shallow clone of that depth" msgstr "Ñделать чаÑтичный клон указанной глубины" -#: builtin/clone.c:95 +#: builtin/clone.c:99 builtin/fetch.c:122 builtin/pack-objects.c:2848 +#: parse-options.h:142 +msgid "time" +msgstr "времÑ" + +#: builtin/clone.c:100 +msgid "create a shallow clone since a specific time" +msgstr "Ñделать чаÑтичный клон до определенного времени" + +#: builtin/clone.c:101 builtin/fetch.c:124 +msgid "revision" +msgstr "редакциÑ" + +#: builtin/clone.c:102 builtin/fetch.c:125 +msgid "deepen history of shallow clone by excluding rev" +msgstr "углубить иÑторию чаÑтичного клона иÑÐºÐ»ÑŽÑ‡Ð°Ñ Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸ÑŽ" + +#: builtin/clone.c:104 msgid "clone only one branch, HEAD or --branch" msgstr "клонировать только одну ветку, HEAD или --branch" -#: builtin/clone.c:97 +#: builtin/clone.c:106 msgid "any cloned submodules will be shallow" msgstr "вÑе Ñклонированные подмодули будут чаÑтичными клонами" -#: builtin/clone.c:98 builtin/init-db.c:482 +#: builtin/clone.c:107 builtin/init-db.c:484 msgid "gitdir" msgstr "каталог-git" -#: builtin/clone.c:99 builtin/init-db.c:483 +#: builtin/clone.c:108 builtin/init-db.c:485 msgid "separate git dir from working tree" msgstr "размеÑтить каталог git отдельно от рабочей копии" -#: builtin/clone.c:100 +#: builtin/clone.c:109 msgid "key=value" msgstr "ключ=значение" -#: builtin/clone.c:101 +#: builtin/clone.c:110 msgid "set config inside the new repository" msgstr "уÑтановить параметры внутри нового репозиториÑ" -#: builtin/clone.c:102 builtin/fetch.c:132 builtin/push.c:547 +#: builtin/clone.c:111 builtin/fetch.c:140 builtin/push.c:547 msgid "use IPv4 addresses only" msgstr "иÑпользовать только IPv4 адреÑа" -#: builtin/clone.c:104 builtin/fetch.c:134 builtin/push.c:549 +#: builtin/clone.c:113 builtin/fetch.c:142 builtin/push.c:549 msgid "use IPv6 addresses only" msgstr "иÑпользовать только IPv6 адреÑа" -#: builtin/clone.c:241 +#: builtin/clone.c:250 msgid "" "No directory name could be guessed.\n" "Please specify a directory on the command line" msgstr "Ð˜Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° не может быть угадано.\nУкажите Ð¸Ð¼Ñ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ параметра командной Ñтроки" -#: builtin/clone.c:307 -#, c-format -msgid "reference repository '%s' as a linked checkout is not supported yet." -msgstr "ÑÑылаемый репозиторий «%s» как ÑвÑзанное ÑоÑтоÑние, пока не поддерживаетÑÑ." - -#: builtin/clone.c:309 -#, c-format -msgid "reference repository '%s' is not a local repository." -msgstr "ÑÑылаемый репозиторий «%s» не ÑвлÑетÑÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ñ‹Ð¼." - -#: builtin/clone.c:314 +#: builtin/clone.c:303 #, c-format -msgid "reference repository '%s' is shallow" -msgstr "ÑÑылаемый репозиторий «%s» ÑвлÑетÑÑ Ñ‡Ð°Ñтичным" +msgid "info: Could not add alternate for '%s': %s\n" +msgstr "информациÑ: Ðе удалоÑÑŒ добавить альтернативу Ð´Ð»Ñ Â«%s»: %s\n" -#: builtin/clone.c:317 -#, c-format -msgid "reference repository '%s' is grafted" -msgstr "ÑÑылаемый репозиторий «%s» ÑвлÑетÑÑ Ñращенным" - -#: builtin/clone.c:376 +#: builtin/clone.c:375 #, c-format msgid "failed to open '%s'" msgstr "не удалоÑÑŒ открыть «%s»" -#: builtin/clone.c:384 +#: builtin/clone.c:383 #, c-format msgid "%s exists and is not a directory" msgstr "%s уже ÑущеÑтвует и не ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼" -#: builtin/clone.c:398 +#: builtin/clone.c:397 #, c-format msgid "failed to stat %s\n" msgstr "не удалоÑÑŒ выполнить stat %s\n" -#: builtin/clone.c:420 +#: builtin/clone.c:419 #, c-format msgid "failed to create link '%s'" msgstr "не удалоÑÑŒ Ñоздать ÑÑылку «%s»" -#: builtin/clone.c:424 +#: builtin/clone.c:423 #, c-format msgid "failed to copy file to '%s'" msgstr "не удалоÑÑŒ копировать файл в «%s»" -#: builtin/clone.c:449 +#: builtin/clone.c:448 #, c-format msgid "done.\n" msgstr "готово.\n" -#: builtin/clone.c:461 +#: builtin/clone.c:460 msgid "" "Clone succeeded, but checkout failed.\n" "You can inspect what was checked out with 'git status'\n" "and retry the checkout with 'git checkout -f HEAD'\n" msgstr "Клонирование прошло уÑпешно, но во Ð²Ñ€ÐµÐ¼Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ ÑоÑтоÑÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð¾ÑˆÐ»Ð° ошибка.\nС помощь команды «git status» вы можете проÑмотреть, какие файлы были обновлены, а повторить попытку Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð½Ð° ветку Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «git checkout -f HEAD»\n" -#: builtin/clone.c:538 +#: builtin/clone.c:537 #, c-format msgid "Could not find remote branch %s to clone." msgstr "Ðе удалоÑÑŒ найти внешнюю ветку %s Ð´Ð»Ñ ÐºÐ»Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ." -#: builtin/clone.c:633 +#: builtin/clone.c:632 msgid "remote did not send all necessary objects" msgstr "внешний репозиторий приÑлал не вÑе необходимые объекты" -#: builtin/clone.c:649 +#: builtin/clone.c:648 #, c-format msgid "unable to update %s" msgstr "не удалоÑÑŒ обновить %s" -#: builtin/clone.c:698 +#: builtin/clone.c:697 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n" msgstr "внешний HEAD ÑÑылаетÑÑ Ð½Ð° неÑущеÑтвующую ÑÑылку, Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ð½Ð° такую верÑию.\n" -#: builtin/clone.c:729 +#: builtin/clone.c:728 msgid "unable to checkout working tree" msgstr "не удалоÑÑŒ переключитьÑÑ Ð½Ð° верÑию в рабочем каталоге" -#: builtin/clone.c:766 +#: builtin/clone.c:768 msgid "unable to write parameters to config file" msgstr "не удалоÑÑŒ запиÑать параметры в файл конфигурации" -#: builtin/clone.c:829 +#: builtin/clone.c:831 msgid "cannot repack to clean up" msgstr "не удалоÑÑŒ выполнить перепаковку Ð´Ð»Ñ Ð¾Ñ‡Ð¸Ñтки" -#: builtin/clone.c:831 +#: builtin/clone.c:833 msgid "cannot unlink temporary alternates file" msgstr "не удалоÑÑŒ отÑоединить временные альтернативные файлы" -#: builtin/clone.c:863 builtin/receive-pack.c:1855 +#: builtin/clone.c:866 builtin/receive-pack.c:1895 msgid "Too many arguments." msgstr "Слишком много аргументов." -#: builtin/clone.c:867 +#: builtin/clone.c:870 msgid "You must specify a repository to clone." msgstr "Ð’Ñ‹ должны указать репозиторий Ð´Ð»Ñ ÐºÐ»Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ." -#: builtin/clone.c:878 +#: builtin/clone.c:883 #, c-format msgid "--bare and --origin %s options are incompatible." msgstr "--bare и --origin %s Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно." -#: builtin/clone.c:881 +#: builtin/clone.c:886 msgid "--bare and --separate-git-dir are incompatible." msgstr "--bare и --separate-git-dir Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно." -#: builtin/clone.c:894 +#: builtin/clone.c:899 #, c-format msgid "repository '%s' does not exist" msgstr "репозиторий «%s» не ÑущеÑтвует" -#: builtin/clone.c:900 builtin/fetch.c:1293 +#: builtin/clone.c:905 builtin/fetch.c:1338 #, c-format msgid "depth %s is not a positive number" msgstr "глубина %s не ÑвлÑетÑÑ Ð¿Ð¾Ð»Ð¾Ð¶Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼ чиÑлом" -#: builtin/clone.c:910 +#: builtin/clone.c:915 #, c-format msgid "destination path '%s' already exists and is not an empty directory." msgstr "целевой путь «%s» уже ÑущеÑтвует и не ÑвлÑетÑÑ Ð¿ÑƒÑтым каталогом." -#: builtin/clone.c:920 +#: builtin/clone.c:925 #, c-format msgid "working tree '%s' already exists." msgstr "рабочий каталог «%s» уже ÑущеÑтвует." -#: builtin/clone.c:935 builtin/clone.c:946 builtin/submodule--helper.c:544 +#: builtin/clone.c:940 builtin/clone.c:951 builtin/submodule--helper.c:657 #: builtin/worktree.c:222 builtin/worktree.c:249 #, c-format msgid "could not create leading directories of '%s'" msgstr "не удалоÑÑŒ Ñоздать родительÑкие каталоги Ð´Ð»Ñ Â«%s»" -#: builtin/clone.c:938 +#: builtin/clone.c:943 #, c-format msgid "could not create work tree dir '%s'" msgstr "не удалоÑÑŒ Ñоздать рабочий каталог «%s»" -#: builtin/clone.c:956 +#: builtin/clone.c:955 #, c-format msgid "Cloning into bare repository '%s'...\n" msgstr "Клонирование в голый репозиторий «%s»…\n" -#: builtin/clone.c:958 +#: builtin/clone.c:957 #, c-format msgid "Cloning into '%s'...\n" msgstr "Клонирование в «%s»…\n" -#: builtin/clone.c:997 +#: builtin/clone.c:963 +msgid "" +"clone --recursive is not compatible with both --reference and --reference-" +"if-able" +msgstr "клонирование Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð¾Ð¼ --recursive Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно ни Ñ --reference, ни Ñ --reference-if-able" + +#: builtin/clone.c:1019 msgid "--depth is ignored in local clones; use file:// instead." msgstr "--depth игнорируетÑÑ Ð½Ð° локальных клонах; вмеÑто Ñтого иÑпользуйте file://." -#: builtin/clone.c:1000 +#: builtin/clone.c:1021 +msgid "--shallow-since is ignored in local clones; use file:// instead." +msgstr "--shallow-since игнорируетÑÑ Ð½Ð° локальных клонах; иÑпользуйте file:// вмеÑто Ñтого." + +#: builtin/clone.c:1023 +msgid "--shallow-exclude is ignored in local clones; use file:// instead." +msgstr "--shallow-exclude игнорируетÑÑ Ð½Ð° локальных клонах; иÑпользуйте file:// вмеÑто Ñтого." + +#: builtin/clone.c:1026 msgid "source repository is shallow, ignoring --local" msgstr "иÑходный репозиторий ÑвлÑетÑÑ Ñ‡Ð°Ñтичным, --local игнорируетÑÑ" -#: builtin/clone.c:1005 +#: builtin/clone.c:1031 msgid "--local is ignored" msgstr "--local игнорируетÑÑ" -#: builtin/clone.c:1009 +#: builtin/clone.c:1035 #, c-format msgid "Don't know how to clone %s" msgstr "Ðе знаю как клонировать %s" -#: builtin/clone.c:1058 builtin/clone.c:1066 +#: builtin/clone.c:1090 builtin/clone.c:1098 #, c-format msgid "Remote branch %s not found in upstream %s" msgstr "ВнешнÑÑ Ð²ÐµÑ‚ÐºÐ° %s не найдена в вышеÑтоÑщем репозитории %s" -#: builtin/clone.c:1069 +#: builtin/clone.c:1101 msgid "You appear to have cloned an empty repository." msgstr "Похоже, что вы клонировали пуÑтой репозиторий." @@ -5431,103 +5959,103 @@ msgid "" "the remaining commits.\n" msgstr "ЕÑли вы хотите пропуÑтит Ñтот коммит, иÑпользуйте команду:\n\n git reset\n\nПоÑле Ñтого «git cherry-pick --continue» продолжит копирование оÑтавшихÑÑ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð¾Ð².\n" -#: builtin/commit.c:308 +#: builtin/commit.c:318 msgid "failed to unpack HEAD tree object" msgstr "Ñбой раÑпаковки объекта дерева HEAD" -#: builtin/commit.c:349 +#: builtin/commit.c:359 msgid "unable to create temporary index" msgstr "не удалоÑÑŒ Ñоздать временный индекÑ" -#: builtin/commit.c:355 +#: builtin/commit.c:365 msgid "interactive add failed" msgstr "Ñбой интерактивного добавлениÑ" -#: builtin/commit.c:368 +#: builtin/commit.c:378 msgid "unable to update temporary index" msgstr "не удалоÑÑŒ обновить временный индекÑ" -#: builtin/commit.c:370 +#: builtin/commit.c:380 msgid "Failed to update main cache tree" msgstr "Сбой при обновлении оÑновного кÑша дерева" -#: builtin/commit.c:394 builtin/commit.c:417 builtin/commit.c:466 +#: builtin/commit.c:404 builtin/commit.c:427 builtin/commit.c:476 msgid "unable to write new_index file" msgstr "не удалоÑÑŒ запиÑать файл new_index" -#: builtin/commit.c:448 +#: builtin/commit.c:458 msgid "cannot do a partial commit during a merge." msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ñоздать чаÑтичный коммит во Ð²Ñ€ÐµÐ¼Ñ ÑлиÑниÑ." -#: builtin/commit.c:450 +#: builtin/commit.c:460 msgid "cannot do a partial commit during a cherry-pick." msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ñоздать чаÑтичный коммит во Ð²Ñ€ÐµÐ¼Ñ ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°." -#: builtin/commit.c:459 +#: builtin/commit.c:469 msgid "cannot read the index" msgstr "не удалоÑÑŒ прочитать индекÑ" -#: builtin/commit.c:478 +#: builtin/commit.c:488 msgid "unable to write temporary index file" msgstr "не удалоÑÑŒ запиÑать временный файл индекÑа" -#: builtin/commit.c:583 +#: builtin/commit.c:582 #, c-format msgid "commit '%s' lacks author header" msgstr "у коммита «%s» отÑутÑтвует автор в заголовке" -#: builtin/commit.c:585 +#: builtin/commit.c:584 #, c-format msgid "commit '%s' has malformed author line" msgstr "у коммита «%s» Ñтрока автора в неправильном формате" -#: builtin/commit.c:604 +#: builtin/commit.c:603 msgid "malformed --author parameter" msgstr "параметр --author в неправильном формате" -#: builtin/commit.c:612 +#: builtin/commit.c:611 #, c-format msgid "invalid date format: %s" msgstr "неправильный формат даты: %s" -#: builtin/commit.c:656 +#: builtin/commit.c:655 msgid "" "unable to select a comment character that is not used\n" "in the current commit message" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ Ñимвол комментариÑ, который\nне иÑпользуетÑÑ Ð² текущем Ñообщении коммита" -#: builtin/commit.c:693 builtin/commit.c:726 builtin/commit.c:1092 +#: builtin/commit.c:692 builtin/commit.c:725 builtin/commit.c:1096 #, c-format msgid "could not lookup commit %s" msgstr "не удалоÑÑŒ запроÑить коммит %s" -#: builtin/commit.c:705 builtin/shortlog.c:286 +#: builtin/commit.c:704 builtin/shortlog.c:286 #, c-format msgid "(reading log message from standard input)\n" msgstr "(чтение файла журнала из Ñтандартного ввода)\n" -#: builtin/commit.c:707 +#: builtin/commit.c:706 msgid "could not read log from standard input" msgstr "не удалоÑÑŒ прочитать файл журнала из Ñтандартного ввода" -#: builtin/commit.c:711 +#: builtin/commit.c:710 #, c-format msgid "could not read log file '%s'" msgstr "не удалоÑÑŒ прочитать файл журнала «%s»" -#: builtin/commit.c:738 builtin/commit.c:746 +#: builtin/commit.c:737 builtin/commit.c:745 msgid "could not read SQUASH_MSG" msgstr "не удалоÑÑŒ прочитать SQUASH_MSG" -#: builtin/commit.c:743 +#: builtin/commit.c:742 msgid "could not read MERGE_MSG" msgstr "не удалоÑÑŒ прочитать MERGE_MSG" -#: builtin/commit.c:797 +#: builtin/commit.c:796 msgid "could not write commit template" msgstr "не удалоÑÑŒ запиÑать шаблон опиÑÐ°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°" -#: builtin/commit.c:815 +#: builtin/commit.c:814 #, c-format msgid "" "\n" @@ -5537,7 +6065,7 @@ msgid "" "and try again.\n" msgstr "\nПохоже, что вы пытаетеÑÑŒ закоммитить ÑлиÑние.\nЕÑли Ñто ошибка, пожалуйÑта удалите файл\n\t%s\nи попробуйте Ñнова.\n" -#: builtin/commit.c:820 +#: builtin/commit.c:819 #, c-format msgid "" "\n" @@ -5547,14 +6075,14 @@ msgid "" "and try again.\n" msgstr "\nПохоже, что вы пытаетеÑÑŒ закоммитить при копировании коммита.\nЕÑли Ñто не так, то удалите файл\n\t%s\nи попробуйте Ñнова.\n" -#: builtin/commit.c:833 +#: builtin/commit.c:832 #, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" "with '%c' will be ignored, and an empty message aborts the commit.\n" msgstr "ПожалуйÑта, ввеÐ´Ð¸Ñ‚е Ñообщение коммита Ð´Ð»Ñ Ð²Ð°ÑˆÐ¸Ñ… изменений. Строки,\nначинающиеÑÑ Ñ Â«%c» будут проигнорированы, а пуÑтое Ñообщение\nотменÑет процеÑÑ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°.\n" -#: builtin/commit.c:840 +#: builtin/commit.c:839 #, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" @@ -5562,341 +6090,345 @@ msgid "" "An empty message aborts the commit.\n" msgstr "ПожалуйÑта, введите Ñообщение коммита Ð´Ð»Ñ Ð²Ð°ÑˆÐ¸Ñ… изменений. Строки,\nначинающиеÑÑ Ñ Â«%c» будут оÑтавлены; вы можете удалить их вручную,\nеÑли хотите. ПуÑтое Ñообщение отменÑет процеÑÑ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°.\n" -#: builtin/commit.c:860 +#: builtin/commit.c:859 #, c-format msgid "%sAuthor: %.*s <%.*s>" msgstr "%sÐвтор: %.*s <%.*s>" -#: builtin/commit.c:868 +#: builtin/commit.c:867 #, c-format msgid "%sDate: %s" msgstr "%sДата: %s" -#: builtin/commit.c:875 +#: builtin/commit.c:874 #, c-format msgid "%sCommitter: %.*s <%.*s>" msgstr "%sКоммитер: %.*s <%.*s>" -#: builtin/commit.c:893 +#: builtin/commit.c:892 msgid "Cannot read index" msgstr "Ðе удалоÑÑŒ прочитать индекÑ" -#: builtin/commit.c:950 +#: builtin/commit.c:954 msgid "Error building trees" msgstr "Ошибка при поÑтроении деревьев" -#: builtin/commit.c:965 builtin/tag.c:266 +#: builtin/commit.c:969 builtin/tag.c:266 #, c-format msgid "Please supply the message using either -m or -F option.\n" msgstr "ПожалуйÑта, укажите Ñообщение, при указании опций -m или -F.\n" -#: builtin/commit.c:1067 +#: builtin/commit.c:1071 #, c-format msgid "--author '%s' is not 'Name <email>' and matches no existing author" msgstr "--author «%s» не в формате Â«Ð˜Ð¼Ñ <почта>» и не Ñовпадает Ñ ÑущеÑтвующим автором" -#: builtin/commit.c:1082 builtin/commit.c:1322 +#: builtin/commit.c:1086 builtin/commit.c:1327 #, c-format msgid "Invalid untracked files mode '%s'" msgstr "Ðеправильный режим неотÑлеживаемых файлов «%s»" -#: builtin/commit.c:1119 +#: builtin/commit.c:1124 msgid "--long and -z are incompatible" msgstr "--long и -z Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно" -#: builtin/commit.c:1149 +#: builtin/commit.c:1154 msgid "Using both --reset-author and --author does not make sense" msgstr "Указание одновременно опций --reset-author и --author не имеет ÑмыÑла" -#: builtin/commit.c:1158 +#: builtin/commit.c:1163 msgid "You have nothing to amend." msgstr "Ðечего иÑправлÑÑ‚ÑŒ." -#: builtin/commit.c:1161 +#: builtin/commit.c:1166 msgid "You are in the middle of a merge -- cannot amend." msgstr "Ð’Ñ‹ в процеÑÑе ÑлиÑÐ½Ð¸Ñ â€” ÑÐµÐ¹Ñ‡Ð°Ñ Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸ÑправлÑÑ‚ÑŒ." -#: builtin/commit.c:1163 +#: builtin/commit.c:1168 msgid "You are in the middle of a cherry-pick -- cannot amend." msgstr "Ð’Ñ‹ в процеÑÑе ÐºÐ¾Ð¿Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð° — ÑÐµÐ¹Ñ‡Ð°Ñ Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸ÑправлÑÑ‚ÑŒ." -#: builtin/commit.c:1166 +#: builtin/commit.c:1171 msgid "Options --squash and --fixup cannot be used together" msgstr "Опции --squash и --fixup не могут иÑпользоватьÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾" -#: builtin/commit.c:1176 +#: builtin/commit.c:1181 msgid "Only one of -c/-C/-F/--fixup can be used." msgstr "Может иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ одна из опций -c/-C/-F/--fixup." -#: builtin/commit.c:1178 +#: builtin/commit.c:1183 msgid "Option -m cannot be combined with -c/-C/-F/--fixup." msgstr "ÐžÐ¿Ñ†Ð¸Ñ -m не может иÑпользоватьÑÑ Ñ -c/-C/-F/--fixup." -#: builtin/commit.c:1186 +#: builtin/commit.c:1191 msgid "--reset-author can be used only with -C, -c or --amend." msgstr "--reset-author может иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ одновременно Ñ Ð¾Ð¿Ñ†Ð¸Ñми -C, -c или --amend." -#: builtin/commit.c:1203 +#: builtin/commit.c:1208 msgid "Only one of --include/--only/--all/--interactive/--patch can be used." msgstr "Может иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ одна из опций --include/--only/--all/--interactive/--patch." -#: builtin/commit.c:1205 +#: builtin/commit.c:1210 msgid "No paths with --include/--only does not make sense." msgstr "Указание путей каталогов Ñ Ð¾Ð¿Ñ†Ð¸Ñми --include/--only не имеет ÑмыÑла." -#: builtin/commit.c:1207 +#: builtin/commit.c:1212 msgid "Clever... amending the last one with dirty index." msgstr "Умно… отмена поÑледнего Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð½Ñ‹Ð¼ индекÑом." -#: builtin/commit.c:1209 +#: builtin/commit.c:1214 msgid "Explicit paths specified without -i or -o; assuming --only paths..." msgstr "Пути Ñвно указаны пути без опций -i или -o; предполагаю опцию --only…" -#: builtin/commit.c:1221 builtin/tag.c:474 +#: builtin/commit.c:1226 builtin/tag.c:474 #, c-format msgid "Invalid cleanup mode %s" msgstr "Ðеправильное значение режима очиÑтки %s" -#: builtin/commit.c:1226 +#: builtin/commit.c:1231 msgid "Paths with -a does not make sense." msgstr "С опцией -a указание пути не имеет ÑмыÑла." -#: builtin/commit.c:1336 builtin/commit.c:1622 +#: builtin/commit.c:1341 builtin/commit.c:1617 msgid "show status concisely" msgstr "кратко показать ÑтатуÑ" -#: builtin/commit.c:1338 builtin/commit.c:1624 +#: builtin/commit.c:1343 builtin/commit.c:1619 msgid "show branch information" msgstr "показать информацию о верÑии" -#: builtin/commit.c:1340 builtin/commit.c:1626 builtin/push.c:522 +#: builtin/commit.c:1345 +msgid "version" +msgstr "верÑиÑ" + +#: builtin/commit.c:1345 builtin/commit.c:1621 builtin/push.c:522 #: builtin/worktree.c:440 msgid "machine-readable output" msgstr "машиночитаемый вывод" -#: builtin/commit.c:1343 builtin/commit.c:1628 +#: builtin/commit.c:1348 builtin/commit.c:1623 msgid "show status in long format (default)" msgstr "показать ÑÑ‚Ð°Ñ‚ÑƒÑ Ð² длинном формате (по умолчанию)" -#: builtin/commit.c:1346 builtin/commit.c:1631 +#: builtin/commit.c:1351 builtin/commit.c:1626 msgid "terminate entries with NUL" msgstr "завершать запиÑи ÐУЛЕВЫМ байтом" -#: builtin/commit.c:1348 builtin/commit.c:1634 builtin/fast-export.c:981 +#: builtin/commit.c:1353 builtin/commit.c:1629 builtin/fast-export.c:981 #: builtin/fast-export.c:984 builtin/tag.c:353 msgid "mode" msgstr "режим" -#: builtin/commit.c:1349 builtin/commit.c:1634 +#: builtin/commit.c:1354 builtin/commit.c:1629 msgid "show untracked files, optional modes: all, normal, no. (Default: all)" msgstr "показать неотÑлеживаемые файлы, опциональные режимы: all (вÑе), normal (как обычно), no (нет). (По умолчанию: all)" -#: builtin/commit.c:1352 +#: builtin/commit.c:1357 msgid "show ignored files" msgstr "показать игнорируемые файлы" -#: builtin/commit.c:1353 parse-options.h:155 +#: builtin/commit.c:1358 parse-options.h:155 msgid "when" msgstr "когда" -#: builtin/commit.c:1354 +#: builtin/commit.c:1359 msgid "" "ignore changes to submodules, optional when: all, dirty, untracked. " "(Default: all)" msgstr "игнорировать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² подмодулÑÑ…, опционально когда: all (вÑегда), dirty (измененные), untracked (неотÑлеживаемые). (По умолчанию: all)" -#: builtin/commit.c:1356 +#: builtin/commit.c:1361 msgid "list untracked files in columns" msgstr "показать неотÑлеживаемые файлы по Ñтолбцам" -#: builtin/commit.c:1442 +#: builtin/commit.c:1437 msgid "couldn't look up newly created commit" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñить новоÑозданный коммит" -#: builtin/commit.c:1444 +#: builtin/commit.c:1439 msgid "could not parse newly created commit" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ñ€Ð°Ð·Ð¾Ð±Ñ€Ð°Ñ‚ÑŒ новоÑозданный коммит" -#: builtin/commit.c:1489 +#: builtin/commit.c:1484 msgid "detached HEAD" msgstr "отделённый HEAD" -#: builtin/commit.c:1492 +#: builtin/commit.c:1487 msgid " (root-commit)" msgstr " (корневой коммит)" -#: builtin/commit.c:1592 +#: builtin/commit.c:1587 msgid "suppress summary after successful commit" msgstr "не выводить Ñводку поÑле уÑпешного коммита" -#: builtin/commit.c:1593 +#: builtin/commit.c:1588 msgid "show diff in commit message template" msgstr "добавить ÑпиÑок изменений в шаблон ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°" -#: builtin/commit.c:1595 +#: builtin/commit.c:1590 msgid "Commit message options" msgstr "Опции ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°" -#: builtin/commit.c:1596 builtin/tag.c:351 +#: builtin/commit.c:1591 builtin/tag.c:351 msgid "read message from file" msgstr "прочитать Ñообщение из файла" -#: builtin/commit.c:1597 +#: builtin/commit.c:1592 msgid "author" msgstr "автор" -#: builtin/commit.c:1597 +#: builtin/commit.c:1592 msgid "override author for commit" msgstr "подменить автора коммита" -#: builtin/commit.c:1598 builtin/gc.c:326 +#: builtin/commit.c:1593 builtin/gc.c:326 msgid "date" msgstr "дата" -#: builtin/commit.c:1598 +#: builtin/commit.c:1593 msgid "override date for commit" msgstr "подменить дату коммита" -#: builtin/commit.c:1599 builtin/merge.c:220 builtin/notes.c:396 -#: builtin/notes.c:559 builtin/tag.c:349 +#: builtin/commit.c:1594 builtin/merge.c:220 builtin/notes.c:398 +#: builtin/notes.c:561 builtin/tag.c:349 msgid "message" msgstr "Ñообщение" -#: builtin/commit.c:1599 +#: builtin/commit.c:1594 msgid "commit message" msgstr "Ñообщение коммита" -#: builtin/commit.c:1600 builtin/commit.c:1601 builtin/commit.c:1602 -#: builtin/commit.c:1603 parse-options.h:256 ref-filter.h:79 +#: builtin/commit.c:1595 builtin/commit.c:1596 builtin/commit.c:1597 +#: builtin/commit.c:1598 parse-options.h:257 ref-filter.h:79 msgid "commit" msgstr "коммит" -#: builtin/commit.c:1600 +#: builtin/commit.c:1595 msgid "reuse and edit message from specified commit" msgstr "иÑпользовать и отредактировать Ñообщение от указанного коммита" -#: builtin/commit.c:1601 +#: builtin/commit.c:1596 msgid "reuse message from specified commit" msgstr "иÑпользовать Ñообщение указанного коммита" -#: builtin/commit.c:1602 +#: builtin/commit.c:1597 msgid "use autosquash formatted message to fixup specified commit" msgstr "иÑпользовать форматированное Ñообщение Ð°Ð²Ñ‚Ð¾ÑƒÐ¿Ð»Ð¾Ñ‚Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¸ÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ коммита" -#: builtin/commit.c:1603 +#: builtin/commit.c:1598 msgid "use autosquash formatted message to squash specified commit" msgstr "иÑпользовать форматированное Ñообщение Ð°Ð²Ñ‚Ð¾ÑƒÐ¿Ð»Ð¾Ñ‚Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑƒÐ¿Ð»Ð¾Ñ‚Ð½ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð³Ð¾ коммита" -#: builtin/commit.c:1604 +#: builtin/commit.c:1599 msgid "the commit is authored by me now (used with -C/-c/--amend)" msgstr "коммит теперь за моим авторÑтвом (Ñ Ð¸Ñпользованием -C/-c/--amend)" -#: builtin/commit.c:1605 builtin/log.c:1409 builtin/revert.c:86 +#: builtin/commit.c:1600 builtin/log.c:1413 builtin/revert.c:86 msgid "add Signed-off-by:" msgstr "добавить Signed-off-by:" -#: builtin/commit.c:1606 +#: builtin/commit.c:1601 msgid "use specified template file" msgstr "иÑпользовать указанный файл шаблона" -#: builtin/commit.c:1607 +#: builtin/commit.c:1602 msgid "force edit of commit" msgstr "принудительно редактировать коммит" -#: builtin/commit.c:1608 +#: builtin/commit.c:1603 msgid "default" msgstr "по-умолчанию" -#: builtin/commit.c:1608 builtin/tag.c:354 +#: builtin/commit.c:1603 builtin/tag.c:354 msgid "how to strip spaces and #comments from message" msgstr "как удалÑÑ‚ÑŒ пробелы и #комментарии из ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°" -#: builtin/commit.c:1609 +#: builtin/commit.c:1604 msgid "include status in commit message template" msgstr "включить ÑÑ‚Ð°Ñ‚ÑƒÑ Ñ„Ð°Ð¹Ð»Ð¾Ð² в шаблон ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°" -#: builtin/commit.c:1611 builtin/merge.c:230 builtin/pull.c:165 +#: builtin/commit.c:1606 builtin/merge.c:230 builtin/pull.c:166 #: builtin/revert.c:93 msgid "GPG sign commit" msgstr "подпиÑать коммит Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ GPG" -#: builtin/commit.c:1614 +#: builtin/commit.c:1609 msgid "Commit contents options" msgstr "Опции Ñодержимого коммита" -#: builtin/commit.c:1615 +#: builtin/commit.c:1610 msgid "commit all changed files" msgstr "закоммитить вÑе измененные файлы" -#: builtin/commit.c:1616 +#: builtin/commit.c:1611 msgid "add specified files to index for commit" msgstr "добавить указанные файлы в Ð¸Ð½Ð´ÐµÐºÑ Ð´Ð»Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°" -#: builtin/commit.c:1617 +#: builtin/commit.c:1612 msgid "interactively add files" msgstr "интерактивное добавление файлов" -#: builtin/commit.c:1618 +#: builtin/commit.c:1613 msgid "interactively add changes" msgstr "интерактивное добавление изменений" -#: builtin/commit.c:1619 +#: builtin/commit.c:1614 msgid "commit only specified files" msgstr "закоммитить только указанные файлы" -#: builtin/commit.c:1620 +#: builtin/commit.c:1615 msgid "bypass pre-commit and commit-msg hooks" msgstr "пропуÑтить перехватчик pre-commit и commit-msg" -#: builtin/commit.c:1621 +#: builtin/commit.c:1616 msgid "show what would be committed" msgstr "показать, что будет закоммичено" -#: builtin/commit.c:1632 +#: builtin/commit.c:1627 msgid "amend previous commit" msgstr "иÑправить предыдущий коммит" -#: builtin/commit.c:1633 +#: builtin/commit.c:1628 msgid "bypass post-rewrite hook" msgstr "пропуÑтить перехватчик post-rewrite" -#: builtin/commit.c:1638 +#: builtin/commit.c:1633 msgid "ok to record an empty change" msgstr "разрешить запиÑÑŒ пуÑтого коммита" -#: builtin/commit.c:1640 +#: builtin/commit.c:1635 msgid "ok to record a change with an empty message" msgstr "разрешить запиÑÑŒ изменений Ñ Ð¿ÑƒÑтым Ñообщением" -#: builtin/commit.c:1669 +#: builtin/commit.c:1664 msgid "could not parse HEAD commit" msgstr "не удалоÑÑŒ разобрать HEAD коммит" -#: builtin/commit.c:1719 +#: builtin/commit.c:1712 #, c-format msgid "Corrupt MERGE_HEAD file (%s)" msgstr "Файл MERGE_HEAD поврежден (%s)" -#: builtin/commit.c:1726 +#: builtin/commit.c:1719 msgid "could not read MERGE_MODE" msgstr "не удалоÑÑŒ прочитать MERGE_MODE" -#: builtin/commit.c:1745 +#: builtin/commit.c:1738 #, c-format msgid "could not read commit message: %s" msgstr "не удалоÑÑŒ открыть Ñообщение коммита: %s" -#: builtin/commit.c:1756 +#: builtin/commit.c:1749 #, c-format msgid "Aborting commit; you did not edit the message.\n" msgstr "Отмена коммита; вы не изменили Ñообщение.\n" -#: builtin/commit.c:1761 +#: builtin/commit.c:1754 #, c-format msgid "Aborting commit due to empty commit message.\n" msgstr "Отмена коммита из-за пуÑтого ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°.\n" -#: builtin/commit.c:1809 +#: builtin/commit.c:1802 msgid "" "Repository has been updated, but unable to write\n" "new_index file. Check that disk is not full and quota is\n" @@ -6054,11 +6586,18 @@ msgstr "# Ðто файл конфигурации Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Git. msgid "cannot create configuration file %s" msgstr "не удалоÑÑŒ Ñоздать файл конфигурации %s" -#: builtin/count-objects.c:77 +#: builtin/config.c:625 +#, c-format +msgid "" +"cannot overwrite multiple values with a single value\n" +" Use a regexp, --add or --replace-all to change %s." +msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñать неÑколько значений одним\n ИÑпользуйте регулÑрные выражениÑ, параметры --add или --replace-all, чтобы изменить %s." + +#: builtin/count-objects.c:86 msgid "git count-objects [-v] [-H | --human-readable]" msgstr "git count-objects [-v] [-H | --human-readable]" -#: builtin/count-objects.c:87 +#: builtin/count-objects.c:96 msgid "print sizes in human readable format" msgstr "вывод размеров в удобочитаемом Ð´Ð»Ñ Ñ‡ÐµÐ»Ð¾Ð²ÐµÐºÐ° виде" @@ -6172,7 +6711,7 @@ msgstr "раÑÑматривать поÑледние <n> меток (по умРmsgid "only consider tags matching <pattern>" msgstr "раÑÑматривать только метки по <шаблону>" -#: builtin/describe.c:410 builtin/name-rev.c:321 +#: builtin/describe.c:410 builtin/name-rev.c:320 msgid "show abbreviated commit object as fallback" msgstr "еÑли не найдено, показать Ñокращенный номер редакции коммита" @@ -6206,21 +6745,21 @@ msgstr "«%s»: не ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ файлом или ÑимРmsgid "invalid option: %s" msgstr "неправильный параметр: %s" -#: builtin/diff.c:360 +#: builtin/diff.c:361 msgid "Not a git repository" msgstr "Ðе найден git репозитоий" -#: builtin/diff.c:403 +#: builtin/diff.c:404 #, c-format msgid "invalid object '%s' given." msgstr "передан неправильный объект «%s»." -#: builtin/diff.c:412 +#: builtin/diff.c:413 #, c-format msgid "more than two blobs given: '%s'" msgstr "передано больше двух двоичных объектов: «%s»" -#: builtin/diff.c:419 +#: builtin/diff.c:420 #, c-format msgid "unhandled object '%s' given." msgstr "передан необработанный объект «%s»." @@ -6293,247 +6832,259 @@ msgstr "git fetch --multiple [<опции>] [(<репозиторий> | <гру msgid "git fetch --all [<options>]" msgstr "git fetch --all [<опции>]" -#: builtin/fetch.c:93 builtin/pull.c:174 +#: builtin/fetch.c:95 builtin/pull.c:175 msgid "fetch from all remotes" msgstr "извлечь Ñо вÑех внешних репозиториев" -#: builtin/fetch.c:95 builtin/pull.c:177 +#: builtin/fetch.c:97 builtin/pull.c:178 msgid "append to .git/FETCH_HEAD instead of overwriting" msgstr "допиÑать к .git/FETCH_HEAD вмеÑто перезапиÑи" -#: builtin/fetch.c:97 builtin/pull.c:180 +#: builtin/fetch.c:99 builtin/pull.c:181 msgid "path to upload pack on remote end" msgstr "путь к программе упаковки пакета на машине Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼ репозиторием" -#: builtin/fetch.c:98 builtin/pull.c:182 +#: builtin/fetch.c:100 builtin/pull.c:183 msgid "force overwrite of local branch" msgstr "Ð¿Ñ€Ð¸Ð½ÑƒÐ´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸ÑÑŒ локальной ветки" -#: builtin/fetch.c:100 +#: builtin/fetch.c:102 msgid "fetch from multiple remotes" msgstr "извлечь Ñ Ð½ÐµÑкольких внешних репозиториев" -#: builtin/fetch.c:102 builtin/pull.c:184 +#: builtin/fetch.c:104 builtin/pull.c:185 msgid "fetch all tags and associated objects" msgstr "извлечь вÑе метки и ÑвÑзанные объекты" -#: builtin/fetch.c:104 +#: builtin/fetch.c:106 msgid "do not fetch all tags (--no-tags)" msgstr "не извлекать вÑе метки (--no-tags)" -#: builtin/fetch.c:106 +#: builtin/fetch.c:108 msgid "number of submodules fetched in parallel" msgstr "количеÑтво подмодулей, которые будут Ñкачаны парралельно" -#: builtin/fetch.c:108 builtin/pull.c:187 +#: builtin/fetch.c:110 builtin/pull.c:188 msgid "prune remote-tracking branches no longer on remote" msgstr "почиÑтить отÑлеживаемые внешние ветки, которых уже нет на внешнем репозитории" -#: builtin/fetch.c:109 builtin/pull.c:190 +#: builtin/fetch.c:111 builtin/pull.c:191 msgid "on-demand" msgstr "по требованию" -#: builtin/fetch.c:110 builtin/pull.c:191 +#: builtin/fetch.c:112 builtin/pull.c:192 msgid "control recursive fetching of submodules" msgstr "управление рекурÑивным извлечением подмодулей" -#: builtin/fetch.c:114 builtin/pull.c:199 +#: builtin/fetch.c:116 builtin/pull.c:200 msgid "keep downloaded pack" msgstr "оÑтавить загруженный пакет данных" -#: builtin/fetch.c:116 +#: builtin/fetch.c:118 msgid "allow updating of HEAD ref" msgstr "разрешить обновление ÑÑылки HEAD" -#: builtin/fetch.c:119 builtin/pull.c:202 +#: builtin/fetch.c:121 builtin/fetch.c:127 builtin/pull.c:203 msgid "deepen history of shallow clone" -msgstr "Ð³Ð»ÑƒÐ±Ð¾ÐºÐ°Ñ Ð¸ÑÑ‚Ð¾Ñ€Ð¸Ñ Ñ‡Ð°Ñтичного клона" +msgstr "улугубить иÑторию чаÑтичного клона" + +#: builtin/fetch.c:123 +msgid "deepen history of shallow repository based on time" +msgstr "углубить иÑторию чаÑтичного клона оÑновываÑÑÑŒ на времени" -#: builtin/fetch.c:121 builtin/pull.c:205 +#: builtin/fetch.c:129 builtin/pull.c:206 msgid "convert to a complete repository" msgstr "преобразовать в полный репозиторий" -#: builtin/fetch.c:123 builtin/log.c:1426 +#: builtin/fetch.c:131 builtin/log.c:1433 msgid "dir" msgstr "каталог" -#: builtin/fetch.c:124 +#: builtin/fetch.c:132 msgid "prepend this to submodule path output" msgstr "приÑоединÑÑ‚ÑŒ Ñто Ñпереди к выводу путей подмодулÑ" -#: builtin/fetch.c:127 +#: builtin/fetch.c:135 msgid "default mode for recursion" msgstr "режим по умолчанию Ð´Ð»Ñ Ñ€ÐµÐºÑƒÑ€Ñии" -#: builtin/fetch.c:129 builtin/pull.c:208 +#: builtin/fetch.c:137 builtin/pull.c:209 msgid "accept refs that update .git/shallow" msgstr "принимать ÑÑылки, которые обновлÑÑŽÑ‚ .git/shallow" -#: builtin/fetch.c:130 builtin/pull.c:210 +#: builtin/fetch.c:138 builtin/pull.c:211 msgid "refmap" msgstr "ÑоответÑтвие-ÑÑылок" -#: builtin/fetch.c:131 builtin/pull.c:211 +#: builtin/fetch.c:139 builtin/pull.c:212 msgid "specify fetch refmap" msgstr "указать ÑоответÑтвие ÑÑылок при извлечении" -#: builtin/fetch.c:387 +#: builtin/fetch.c:398 msgid "Couldn't find remote ref HEAD" msgstr "Ðе удалоÑÑŒ найти ÑÑылку HEAD на внешнем репозитории" -#: builtin/fetch.c:503 +#: builtin/fetch.c:514 #, c-format msgid "configuration fetch.output contains invalid value %s" msgstr "Ð¾Ð¿Ñ†Ð¸Ñ fetch.output Ñодержит неправильное значение Ð´Ð»Ñ %s" -#: builtin/fetch.c:592 +#: builtin/fetch.c:607 #, c-format msgid "object %s not found" msgstr "объект %s не найден" -#: builtin/fetch.c:596 +#: builtin/fetch.c:611 msgid "[up to date]" msgstr "[актуально]" -#: builtin/fetch.c:609 builtin/fetch.c:689 +#: builtin/fetch.c:624 builtin/fetch.c:704 msgid "[rejected]" msgstr "[отклонено]" -#: builtin/fetch.c:610 +#: builtin/fetch.c:625 msgid "can't fetch in current branch" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ð·Ð²Ð»ÐµÑ‡ÑŒ текущую ветку" -#: builtin/fetch.c:619 +#: builtin/fetch.c:634 msgid "[tag update]" msgstr "[обновление метки]" -#: builtin/fetch.c:620 builtin/fetch.c:653 builtin/fetch.c:669 -#: builtin/fetch.c:684 +#: builtin/fetch.c:635 builtin/fetch.c:668 builtin/fetch.c:684 +#: builtin/fetch.c:699 msgid "unable to update local ref" msgstr "не удалоÑÑŒ обновить локальную ÑÑылку" -#: builtin/fetch.c:639 +#: builtin/fetch.c:654 msgid "[new tag]" msgstr "[Ð½Ð¾Ð²Ð°Ñ Ð¼ÐµÑ‚ÐºÐ°]" -#: builtin/fetch.c:642 +#: builtin/fetch.c:657 msgid "[new branch]" msgstr "[Ð½Ð¾Ð²Ð°Ñ Ð²ÐµÑ‚ÐºÐ°]" -#: builtin/fetch.c:645 +#: builtin/fetch.c:660 msgid "[new ref]" msgstr "[Ð½Ð¾Ð²Ð°Ñ ÑÑылка]" -#: builtin/fetch.c:684 +#: builtin/fetch.c:699 msgid "forced update" msgstr "принудительное обновление" -#: builtin/fetch.c:689 +#: builtin/fetch.c:704 msgid "non-fast-forward" msgstr "без перемотки вперед" -#: builtin/fetch.c:733 +#: builtin/fetch.c:749 #, c-format msgid "%s did not send all necessary objects\n" msgstr "%s не отправил вÑе необходимые объекты\n" -#: builtin/fetch.c:753 +#: builtin/fetch.c:769 #, c-format msgid "reject %s because shallow roots are not allowed to be updated" msgstr "%s отклонено из-за того, что чаÑтичные корни не разрешено обновлÑÑ‚ÑŒ" -#: builtin/fetch.c:839 builtin/fetch.c:934 +#: builtin/fetch.c:856 builtin/fetch.c:952 #, c-format msgid "From %.*s\n" msgstr "Из %.*s\n" -#: builtin/fetch.c:850 +#: builtin/fetch.c:867 #, c-format msgid "" "some local refs could not be updated; try running\n" " 'git remote prune %s' to remove any old, conflicting branches" msgstr "не удалоÑÑŒ обновить некоторые локальные ÑÑылки; попробуйте запуÑтить «git remote prune %s», чтобы почиÑтить Ñтарые, конфликтующие ветки" -#: builtin/fetch.c:904 +#: builtin/fetch.c:922 #, c-format msgid " (%s will become dangling)" msgstr " (%s будет виÑÑщей веткой)" -#: builtin/fetch.c:905 +#: builtin/fetch.c:923 #, c-format msgid " (%s has become dangling)" msgstr " (%s Ñтала виÑÑщей веткой)" -#: builtin/fetch.c:937 +#: builtin/fetch.c:955 msgid "[deleted]" msgstr "[удалено]" -#: builtin/fetch.c:938 builtin/remote.c:1020 +#: builtin/fetch.c:956 builtin/remote.c:1020 msgid "(none)" msgstr "(нет)" -#: builtin/fetch.c:960 +#: builtin/fetch.c:979 #, c-format msgid "Refusing to fetch into current branch %s of non-bare repository" msgstr "Отказ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð² текущую ветку %s не голого репозиториÑ" -#: builtin/fetch.c:979 +#: builtin/fetch.c:998 #, c-format msgid "Option \"%s\" value \"%s\" is not valid for %s" msgstr "Ðеправильное значение «%2$s» Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° «%1$s» Ð´Ð»Ñ %3$s" -#: builtin/fetch.c:982 +#: builtin/fetch.c:1001 #, c-format msgid "Option \"%s\" is ignored for %s\n" msgstr "Параметр «%s» игнорируетÑÑ Ð´Ð»Ñ %s\n" -#: builtin/fetch.c:1039 +#: builtin/fetch.c:1077 #, c-format msgid "Don't know how to fetch from %s" msgstr "Ðе знаю как извлечь Ñ %s" -#: builtin/fetch.c:1199 +#: builtin/fetch.c:1237 #, c-format msgid "Fetching %s\n" msgstr "Извлечение из %s\n" -#: builtin/fetch.c:1201 builtin/remote.c:96 +#: builtin/fetch.c:1239 builtin/remote.c:96 #, c-format msgid "Could not fetch %s" msgstr "Ðе удалоÑÑŒ извлечь %s" -#: builtin/fetch.c:1219 +#: builtin/fetch.c:1257 msgid "" "No remote repository specified. Please, specify either a URL or a\n" "remote name from which new revisions should be fetched." msgstr "Ðе указан внешний репозиторий. Укажите URL или Ð¸Ð¼Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð· которого должны извлекатьÑÑ Ð½Ð¾Ð²Ñ‹Ðµ редакции." -#: builtin/fetch.c:1242 +#: builtin/fetch.c:1280 msgid "You need to specify a tag name." msgstr "Вам нужно указать Ð¸Ð¼Ñ Ð¼ÐµÑ‚ÐºÐ¸." -#: builtin/fetch.c:1284 +#: builtin/fetch.c:1322 +msgid "Negative depth in --deepen is not supported" +msgstr "ÐžÑ‚Ñ€Ð¸Ñ†Ð°Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð³Ñ€ÑƒÐ±Ð¸Ð½Ð° Ð´Ð»Ñ --deepen не поддерживаетÑÑ" + +#: builtin/fetch.c:1324 +msgid "--deepen and --depth are mutually exclusive" +msgstr "--deepen и --depth Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно" + +#: builtin/fetch.c:1329 msgid "--depth and --unshallow cannot be used together" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно --depth и --unshallow" -#: builtin/fetch.c:1286 +#: builtin/fetch.c:1331 msgid "--unshallow on a complete repository does not make sense" msgstr "--unshallow не имеет ÑмыÑла на полном репозитории" -#: builtin/fetch.c:1306 +#: builtin/fetch.c:1353 msgid "fetch --all does not take a repository argument" msgstr "fetch --all не принимает Ð¸Ð¼Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ ÐºÐ°Ðº аргумент" -#: builtin/fetch.c:1308 +#: builtin/fetch.c:1355 msgid "fetch --all does not make sense with refspecs" msgstr "fetch --all не имеет ÑмыÑла при указании Ñпецификаций ÑÑылок" -#: builtin/fetch.c:1319 +#: builtin/fetch.c:1366 #, c-format msgid "No such remote or remote group: %s" msgstr "Ðет такого внешнего Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð»Ð¸ группы: %s" -#: builtin/fetch.c:1327 +#: builtin/fetch.c:1374 msgid "Fetching a group and specifying refspecs does not make sense" msgstr "Получение группы и указание Ñпецификаций ÑÑылок не имеет ÑмыÑла" @@ -6542,23 +7093,23 @@ msgid "" "git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]" msgstr "git fmt-merge-msg [-m <Ñообщение>] [--log[=<n>] | --no-log] [--file <файл>]" -#: builtin/fmt-merge-msg.c:667 +#: builtin/fmt-merge-msg.c:663 msgid "populate log with at most <n> entries from shortlog" msgstr "отправить в журнал <n> запиÑей из короткого журнала" -#: builtin/fmt-merge-msg.c:670 +#: builtin/fmt-merge-msg.c:666 msgid "alias for --log (deprecated)" msgstr "Ñокращение Ð´Ð»Ñ --log (уÑтаревшее)" -#: builtin/fmt-merge-msg.c:673 +#: builtin/fmt-merge-msg.c:669 msgid "text" msgstr "текÑÑ‚" -#: builtin/fmt-merge-msg.c:674 +#: builtin/fmt-merge-msg.c:670 msgid "use <text> as start of message" msgstr "иÑпользовать <текÑÑ‚> как начальное Ñообщение" -#: builtin/fmt-merge-msg.c:675 +#: builtin/fmt-merge-msg.c:671 msgid "file to read from" msgstr "файл Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ" @@ -6674,7 +7225,7 @@ msgstr "показать прогреÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ" msgid "show verbose names for reachable objects" msgstr "показать подробные имена Ð´Ð»Ñ Ð½ÐµÐ´Ð¾Ñтупных объектов" -#: builtin/fsck.c:671 +#: builtin/fsck.c:665 msgid "Checking objects" msgstr "Проверка объектов" @@ -6759,224 +7310,219 @@ msgstr "grep: Ñбой ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ°: %s" msgid "invalid number of threads specified (%d) for %s" msgstr "указано недопуÑтимое количеÑтво потоков (%d) Ð´Ð»Ñ %s" -#: builtin/grep.c:452 builtin/grep.c:487 +#: builtin/grep.c:453 builtin/grep.c:488 #, c-format msgid "unable to read tree (%s)" msgstr "не удалоÑÑŒ прочитать дерево (%s)" -#: builtin/grep.c:502 +#: builtin/grep.c:503 #, c-format msgid "unable to grep from object of type %s" msgstr "не удалоÑÑŒ выполнить grep из объекта типа %s" -#: builtin/grep.c:560 +#: builtin/grep.c:561 #, c-format msgid "switch `%c' expects a numerical value" msgstr "параметр «%c» ожидает чиÑловое значение" -#: builtin/grep.c:577 -#, c-format -msgid "cannot open '%s'" -msgstr "не удалоÑÑŒ открыть «%s»" - -#: builtin/grep.c:646 +#: builtin/grep.c:647 msgid "search in index instead of in the work tree" msgstr "иÑкать в индекÑе, а не в рабочем каталоге" -#: builtin/grep.c:648 +#: builtin/grep.c:649 msgid "find in contents not managed by git" msgstr "иÑкать в Ñодержимом не управлÑемым git" -#: builtin/grep.c:650 +#: builtin/grep.c:651 msgid "search in both tracked and untracked files" msgstr "иÑкать и в отÑлеживаемых, и в неотÑлеживаемых файлах" -#: builtin/grep.c:652 +#: builtin/grep.c:653 msgid "ignore files specified via '.gitignore'" msgstr "игнорировать файлы указанные в «.gitignore»" -#: builtin/grep.c:655 +#: builtin/grep.c:656 msgid "show non-matching lines" msgstr "иÑкать в неÑовпадающих Ñтроках" -#: builtin/grep.c:657 +#: builtin/grep.c:658 msgid "case insensitive matching" msgstr "без учета региÑтра" -#: builtin/grep.c:659 +#: builtin/grep.c:660 msgid "match patterns only at word boundaries" msgstr "иÑкать ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° только на границах Ñлов" -#: builtin/grep.c:661 +#: builtin/grep.c:662 msgid "process binary files as text" msgstr "обработка двоичных файлов как текÑта" -#: builtin/grep.c:663 +#: builtin/grep.c:664 msgid "don't match patterns in binary files" msgstr "не иÑкать ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° в двоичных файлах" -#: builtin/grep.c:666 +#: builtin/grep.c:667 msgid "process binary files with textconv filters" msgstr "обрабатыватьÑÑ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ñ‹Ðµ файлы Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ фильтров textconv" -#: builtin/grep.c:668 +#: builtin/grep.c:669 msgid "descend at most <depth> levels" msgstr "на глубине макÑиму <глубина> уровней" -#: builtin/grep.c:672 +#: builtin/grep.c:673 msgid "use extended POSIX regular expressions" msgstr "иÑпользовать раÑширенные регулÑрные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ POSIX" -#: builtin/grep.c:675 +#: builtin/grep.c:676 msgid "use basic POSIX regular expressions (default)" msgstr "иÑпользовать базовые регулÑрные Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ POSIX (по умолчанию)" -#: builtin/grep.c:678 +#: builtin/grep.c:679 msgid "interpret patterns as fixed strings" msgstr "интерпретировать шаблоны как фикÑированные Ñтроки" -#: builtin/grep.c:681 +#: builtin/grep.c:682 msgid "use Perl-compatible regular expressions" msgstr "иÑпользовать Perl-ÑовмеÑтимые регулÑрные выражениÑ" -#: builtin/grep.c:684 +#: builtin/grep.c:685 msgid "show line numbers" msgstr "вывеÑти номера Ñтрок" -#: builtin/grep.c:685 +#: builtin/grep.c:686 msgid "don't show filenames" msgstr "не выводить имена файлов" -#: builtin/grep.c:686 +#: builtin/grep.c:687 msgid "show filenames" msgstr "выводить имена файлов" -#: builtin/grep.c:688 +#: builtin/grep.c:689 msgid "show filenames relative to top directory" msgstr "выводить имена файлов отноÑительно каталога репозиториÑ" -#: builtin/grep.c:690 +#: builtin/grep.c:691 msgid "show only filenames instead of matching lines" msgstr "выводить только имена файлов, а не Ñовпадающие Ñтроки" -#: builtin/grep.c:692 +#: builtin/grep.c:693 msgid "synonym for --files-with-matches" msgstr "Ñиноним Ð´Ð»Ñ --files-with-matches" -#: builtin/grep.c:695 +#: builtin/grep.c:696 msgid "show only the names of files without match" msgstr "выводить только неÑовпадающие имена файлов" -#: builtin/grep.c:697 +#: builtin/grep.c:698 msgid "print NUL after filenames" msgstr "выводить двоичный ÐОЛЬ поÑле ÑпиÑка имен файлов" -#: builtin/grep.c:699 +#: builtin/grep.c:700 msgid "show the number of matches instead of matching lines" msgstr "выводить количеÑтво Ñовпадений, а не Ñовпадающие Ñтроки" -#: builtin/grep.c:700 +#: builtin/grep.c:701 msgid "highlight matches" msgstr "подÑвечивать ÑовпадениÑ" -#: builtin/grep.c:702 +#: builtin/grep.c:703 msgid "print empty line between matches from different files" msgstr "выводить пуÑтую Ñтроку поÑле Ñовпадений из разных файлов" -#: builtin/grep.c:704 +#: builtin/grep.c:705 msgid "show filename only once above matches from same file" msgstr "выводить Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° только раз на неÑколько Ñовпадений в одном файле" -#: builtin/grep.c:707 +#: builtin/grep.c:708 msgid "show <n> context lines before and after matches" msgstr "показать <n> Ñтрок контекÑта перед и поÑле ÑовпадениÑ" -#: builtin/grep.c:710 +#: builtin/grep.c:711 msgid "show <n> context lines before matches" msgstr "показать <n> Ñтрок контекÑта перед Ñовпадением" -#: builtin/grep.c:712 +#: builtin/grep.c:713 msgid "show <n> context lines after matches" msgstr "показать <n> Ñтрок контекÑта поÑле ÑовпадениÑ" -#: builtin/grep.c:714 +#: builtin/grep.c:715 msgid "use <n> worker threads" msgstr "иÑпользовать <кол> рабочих потоков" -#: builtin/grep.c:715 +#: builtin/grep.c:716 msgid "shortcut for -C NUM" msgstr "тоже, что и -C КОЛИЧЕСТВО" -#: builtin/grep.c:718 +#: builtin/grep.c:719 msgid "show a line with the function name before matches" msgstr "показать Ñтроку Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ функции перед Ñовпадением" -#: builtin/grep.c:720 +#: builtin/grep.c:721 msgid "show the surrounding function" msgstr "показать окружающую функцию" -#: builtin/grep.c:723 +#: builtin/grep.c:724 msgid "read patterns from file" msgstr "прочитать шаблоны из файла" -#: builtin/grep.c:725 +#: builtin/grep.c:726 msgid "match <pattern>" msgstr "поиÑк ÑоответÑтвий Ñ <шаблоном>" -#: builtin/grep.c:727 +#: builtin/grep.c:728 msgid "combine patterns specified with -e" msgstr "объединить шаблоны указанные Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ -e" -#: builtin/grep.c:739 +#: builtin/grep.c:740 msgid "indicate hit with exit status without output" msgstr "ничего не выводить, указать на Ñовпадение Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ кода выхода" -#: builtin/grep.c:741 +#: builtin/grep.c:742 msgid "show only matches from files that match all patterns" msgstr "показать только ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ Ð¸Ð· файлов в которых Ñовпадают вÑе шаблоны" -#: builtin/grep.c:743 +#: builtin/grep.c:744 msgid "show parse tree for grep expression" msgstr "показать дерево разбора Ð´Ð»Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¸Ñка" -#: builtin/grep.c:747 +#: builtin/grep.c:748 msgid "pager" msgstr "пейджер" -#: builtin/grep.c:747 +#: builtin/grep.c:748 msgid "show matching files in the pager" msgstr "показать Ñовпадающие файлы Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ программы-пейджера" -#: builtin/grep.c:750 +#: builtin/grep.c:751 msgid "allow calling of grep(1) (ignored by this build)" msgstr "разрешить вызов grep(1) (игнорируетÑÑ Ð² Ñтой Ñборке)" -#: builtin/grep.c:813 +#: builtin/grep.c:814 msgid "no pattern given." msgstr "не задан шаблон." -#: builtin/grep.c:845 builtin/index-pack.c:1479 +#: builtin/grep.c:846 builtin/index-pack.c:1480 #, c-format msgid "invalid number of threads specified (%d)" msgstr "указано неправильное количеÑтво потоков (%d)" -#: builtin/grep.c:875 +#: builtin/grep.c:876 msgid "--open-files-in-pager only works on the worktree" msgstr "--open-files-in-pager работает только в рабочем каталоге" -#: builtin/grep.c:901 +#: builtin/grep.c:902 msgid "--cached or --untracked cannot be used with --no-index." msgstr "--cached или --untracked Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно Ñ --no-index." -#: builtin/grep.c:906 +#: builtin/grep.c:907 msgid "--no-index or --untracked cannot be used with revs." msgstr "--no-index или --untracked Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸ÐµÐ¼ редакции." -#: builtin/grep.c:909 +#: builtin/grep.c:910 msgid "--[no-]exclude-standard cannot be used for tracked contents." msgstr "--[no-]exclude-standard не может иÑпользоватьÑÑ Ð´Ð»Ñ Ð¾Ñ‚Ñлеживаемого Ñодержимого." -#: builtin/grep.c:917 +#: builtin/grep.c:918 msgid "both --cached and trees are given." msgstr "указано одновременно --cached и дерево." @@ -6990,176 +7536,180 @@ msgstr "git hash-object [-t <тип>] [-w] [--path=<файл> | --no-filters] [- msgid "git hash-object --stdin-paths" msgstr "git hash-object --stdin-paths" -#: builtin/hash-object.c:93 +#: builtin/hash-object.c:94 msgid "type" msgstr "тип" -#: builtin/hash-object.c:93 +#: builtin/hash-object.c:94 msgid "object type" msgstr "тип объекта" -#: builtin/hash-object.c:94 +#: builtin/hash-object.c:95 msgid "write the object into the object database" msgstr "запиÑÑŒ объекта в базу данных объектов" -#: builtin/hash-object.c:96 +#: builtin/hash-object.c:97 msgid "read the object from stdin" msgstr "прочитать объект из Ñтандартного ввода" -#: builtin/hash-object.c:98 +#: builtin/hash-object.c:99 msgid "store file as is without filters" msgstr "Ñохранить файл без иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ð¾Ð²" -#: builtin/hash-object.c:99 +#: builtin/hash-object.c:100 msgid "" "just hash any random garbage to create corrupt objects for debugging Git" msgstr "Ñ…Ñшировать любой муÑор и Ñоздавать поврежденные объекты Ð´Ð»Ñ Ð¾Ñ‚Ð»Ð°Ð´ÐºÐ¸ Git" -#: builtin/hash-object.c:100 +#: builtin/hash-object.c:101 msgid "process file as it were from this path" msgstr "обработать файл так, будто он находитÑÑ Ð¿Ð¾ указанному пути" -#: builtin/help.c:41 +#: builtin/help.c:42 msgid "print all available commands" msgstr "вывеÑти ÑпиÑок вÑех доÑтупных команд" -#: builtin/help.c:42 +#: builtin/help.c:43 +msgid "exclude guides" +msgstr "иÑключить руководÑтва" + +#: builtin/help.c:44 msgid "print list of useful guides" msgstr "вывеÑти ÑпиÑок полезных руководÑтв" -#: builtin/help.c:43 +#: builtin/help.c:45 msgid "show man page" msgstr "открыть руководÑтво в формате man" -#: builtin/help.c:44 +#: builtin/help.c:46 msgid "show manual in web browser" msgstr "открыть руководÑтво в веб-браузере" -#: builtin/help.c:46 +#: builtin/help.c:48 msgid "show info page" msgstr "открыть руководÑтво в формате info" -#: builtin/help.c:52 +#: builtin/help.c:54 msgid "git help [--all] [--guides] [--man | --web | --info] [<command>]" msgstr "git help [--all] [--guides] [--man | --web | --info] [<команда>]" -#: builtin/help.c:64 +#: builtin/help.c:66 #, c-format msgid "unrecognized help format '%s'" msgstr "неопознанный формат руководÑтва «%s»" -#: builtin/help.c:91 +#: builtin/help.c:93 msgid "Failed to start emacsclient." msgstr "Сбой при запуÑке emacsclient." -#: builtin/help.c:104 +#: builtin/help.c:106 msgid "Failed to parse emacsclient version." msgstr "Сбой при определении верÑии emacsclient." -#: builtin/help.c:112 +#: builtin/help.c:114 #, c-format msgid "emacsclient version '%d' too old (< 22)." msgstr "верÑÐ¸Ñ emacsclient «%d» Ñлишком ÑÑ‚Ð°Ñ€Ð°Ñ (< 22)." -#: builtin/help.c:130 builtin/help.c:151 builtin/help.c:160 builtin/help.c:168 +#: builtin/help.c:132 builtin/help.c:153 builtin/help.c:162 builtin/help.c:170 #, c-format msgid "failed to exec '%s'" msgstr "Ñбой при запуÑке «%s»" -#: builtin/help.c:205 +#: builtin/help.c:207 #, c-format msgid "" "'%s': path for unsupported man viewer.\n" "Please consider using 'man.<tool>.cmd' instead." msgstr "«%s»: путь Ð´Ð»Ñ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð¹ программы проÑмотра man.\nВмеÑто Ñтого иÑпользуйте «man.<программа>.cmd»." -#: builtin/help.c:217 +#: builtin/help.c:219 #, c-format msgid "" "'%s': cmd for supported man viewer.\n" "Please consider using 'man.<tool>.path' instead." msgstr "«%s»: команда Ð´Ð»Ñ Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð¾Ð¹ программы проÑмотра man.\nВмеÑто Ñтого иÑпользуйте «man.<программа>.path»." -#: builtin/help.c:334 +#: builtin/help.c:336 #, c-format msgid "'%s': unknown man viewer." msgstr "«%s»: неизвеÑÑ‚Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° проÑмотра man." -#: builtin/help.c:351 +#: builtin/help.c:353 msgid "no man viewer handled the request" msgstr "программа проÑмотра man не обработала запроÑ" -#: builtin/help.c:359 +#: builtin/help.c:361 msgid "no info viewer handled the request" msgstr "программа проÑмотра info не обработала запроÑ" -#: builtin/help.c:401 +#: builtin/help.c:403 msgid "Defining attributes per path" msgstr "Определение атрибутов Ð´Ð»Ñ Ð¿ÑƒÑ‚ÐµÐ¹ файлов или каталогов" -#: builtin/help.c:402 +#: builtin/help.c:404 msgid "Everyday Git With 20 Commands Or So" msgstr "ПовÑедневный Git Ñ 20 командами или около того" -#: builtin/help.c:403 +#: builtin/help.c:405 msgid "A Git glossary" msgstr "ГлоÑÑарий Git" -#: builtin/help.c:404 +#: builtin/help.c:406 msgid "Specifies intentionally untracked files to ignore" msgstr "Указание Ñпециально игнорируемых файлов" -#: builtin/help.c:405 +#: builtin/help.c:407 msgid "Defining submodule properties" msgstr "Определение ÑвойÑтв подмодулей" -#: builtin/help.c:406 +#: builtin/help.c:408 msgid "Specifying revisions and ranges for Git" msgstr "Указание редакций и диапазонов Ð´Ð»Ñ Git" -#: builtin/help.c:407 +#: builtin/help.c:409 msgid "A tutorial introduction to Git (for version 1.5.1 or newer)" msgstr "Учебное введение в Git (Ð´Ð»Ñ Ð²ÐµÑ€Ñии 1.5.1 или новее)" -#: builtin/help.c:408 +#: builtin/help.c:410 msgid "An overview of recommended workflows with Git" msgstr "Обзор рекомендуемых поÑледовательноÑтей выполнÑемых дейÑтвий Ñ Git" -#: builtin/help.c:420 +#: builtin/help.c:422 msgid "The common Git guides are:\n" msgstr "ОÑновные руководÑтва Git:\n" -#: builtin/help.c:441 builtin/help.c:458 -#, c-format -msgid "usage: %s%s" -msgstr "иÑпользование: %s%s" - -#: builtin/help.c:474 +#: builtin/help.c:440 #, c-format msgid "`git %s' is aliased to `%s'" msgstr "«git %s» — Ñто Ñокращение Ð´Ð»Ñ Â«%s»" -#: builtin/index-pack.c:153 +#: builtin/help.c:462 builtin/help.c:479 +#, c-format +msgid "usage: %s%s" +msgstr "иÑпользование: %s%s" + +#: builtin/index-pack.c:154 #, c-format msgid "unable to open %s" msgstr "не удалоÑÑŒ открыть %s" -#: builtin/index-pack.c:203 +#: builtin/index-pack.c:204 #, c-format msgid "object type mismatch at %s" msgstr "неÑоответÑтвие типа объекта на %s" -#: builtin/index-pack.c:223 +#: builtin/index-pack.c:224 #, c-format msgid "did not receive expected object %s" msgstr "ожидаемый объект не получен на %s" -#: builtin/index-pack.c:226 +#: builtin/index-pack.c:227 #, c-format msgid "object %s: expected type %s, found %s" msgstr "объект %s: ожидаемый тип %s, получен %s" -#: builtin/index-pack.c:268 +#: builtin/index-pack.c:269 #, c-format msgid "cannot fill %d byte" msgid_plural "cannot fill %d bytes" @@ -7168,69 +7718,73 @@ msgstr[1] "не удалоÑÑŒ заполнить %d байта" msgstr[2] "не удалоÑÑŒ заполнить %d байтов" msgstr[3] "не удалоÑÑŒ заполнить %d байтов" -#: builtin/index-pack.c:278 +#: builtin/index-pack.c:279 msgid "early EOF" msgstr "неожиданный конец файла" -#: builtin/index-pack.c:279 +#: builtin/index-pack.c:280 msgid "read error on input" msgstr "ошибка Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°" -#: builtin/index-pack.c:291 +#: builtin/index-pack.c:292 msgid "used more bytes than were available" msgstr "иÑпользовано больше байт, чем было доÑтупно" -#: builtin/index-pack.c:298 +#: builtin/index-pack.c:299 msgid "pack too large for current definition of off_t" msgstr "пакет Ñлишком большой Ð´Ð»Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ off_t" -#: builtin/index-pack.c:314 +#: builtin/index-pack.c:302 builtin/unpack-objects.c:92 +msgid "pack exceeds maximum allowed size" +msgstr "размер пакета превышает макÑимальный допуÑтимый" + +#: builtin/index-pack.c:317 #, c-format msgid "unable to create '%s'" msgstr "не удалоÑÑŒ Ñоздать «%s»" -#: builtin/index-pack.c:319 +#: builtin/index-pack.c:322 #, c-format msgid "cannot open packfile '%s'" msgstr "не удалоÑÑŒ открыть файл пакета «%s»" -#: builtin/index-pack.c:333 +#: builtin/index-pack.c:336 msgid "pack signature mismatch" msgstr "неÑоответÑтвие подпиÑи пакета" -#: builtin/index-pack.c:335 +#: builtin/index-pack.c:338 #, c-format msgid "pack version %<PRIu32> unsupported" msgstr "верÑÐ¸Ñ Ð¿Ð°ÐºÐµÑ‚Ð° %<PRIu32> не поддерживаетÑÑ" -#: builtin/index-pack.c:353 +#: builtin/index-pack.c:356 #, c-format msgid "pack has bad object at offset %<PRIuMAX>: %s" msgstr "пакет Ñодержит плохой объект по Ñмещению %<PRIuMAX>: %s" -#: builtin/index-pack.c:475 +#: builtin/index-pack.c:478 #, c-format msgid "inflate returned %d" msgstr "программа ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð²ÐµÑ€Ð½ÑƒÐ»Ð° %d" -#: builtin/index-pack.c:524 +#: builtin/index-pack.c:527 msgid "offset value overflow for delta base object" msgstr "переполнение Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ ÑÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñƒ базового объекта дельты" -#: builtin/index-pack.c:532 +#: builtin/index-pack.c:535 msgid "delta base offset is out of bound" msgstr "Ñмещение базовой дельты вышло за допуÑтимые пределы" -#: builtin/index-pack.c:540 +#: builtin/index-pack.c:543 #, c-format msgid "unknown object type %d" msgstr "неизвеÑтный тип объекта %d" -#: builtin/index-pack.c:571 +#: builtin/index-pack.c:574 msgid "cannot pread pack file" msgstr "не удалоÑÑŒ выполнить pread Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° пакета" -#: builtin/index-pack.c:573 +#: builtin/index-pack.c:576 #, c-format msgid "premature end of pack file, %<PRIuMAX> byte missing" msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing" @@ -7239,88 +7793,88 @@ msgstr[1] "преждевременное окончание файла паке msgstr[2] "преждевременное окончание файла пакета, %<PRIuMAX> байтов отÑутÑтвует" msgstr[3] "преждевременное окончание файла пакета, %<PRIuMAX> байтов отÑутÑтвует" -#: builtin/index-pack.c:599 +#: builtin/index-pack.c:602 msgid "serious inflate inconsistency" msgstr "Ñерьезное неÑоответÑтвие при раÑпаковке" -#: 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 +#: builtin/index-pack.c:748 builtin/index-pack.c:754 builtin/index-pack.c:777 +#: builtin/index-pack.c:811 builtin/index-pack.c:820 #, c-format msgid "SHA1 COLLISION FOUND WITH %s !" msgstr "ÐÐЙДЕÐРКОЛЛИЗИЯ SHA1 С %s !" -#: builtin/index-pack.c:748 builtin/pack-objects.c:164 -#: builtin/pack-objects.c:256 +#: builtin/index-pack.c:751 builtin/pack-objects.c:166 +#: builtin/pack-objects.c:258 #, c-format msgid "unable to read %s" msgstr "не удалоÑÑŒ прочитать %s" -#: builtin/index-pack.c:814 +#: builtin/index-pack.c:817 #, c-format msgid "cannot read existing object %s" msgstr "не удалоÑÑŒ прочитать ÑущеÑтвующий объект %s" -#: builtin/index-pack.c:828 +#: builtin/index-pack.c:831 #, c-format msgid "invalid blob object %s" msgstr "неправильный файл двоичного объекта %s" -#: builtin/index-pack.c:842 +#: builtin/index-pack.c:845 #, c-format msgid "invalid %s" msgstr "неправильный %s" -#: builtin/index-pack.c:845 +#: builtin/index-pack.c:848 msgid "Error in object" msgstr "Ошибка в объекте" -#: builtin/index-pack.c:847 +#: builtin/index-pack.c:850 #, c-format msgid "Not all child objects of %s are reachable" msgstr "Ðе вÑе дочерние объекты %s доÑтижимы" -#: builtin/index-pack.c:919 builtin/index-pack.c:950 +#: builtin/index-pack.c:922 builtin/index-pack.c:953 msgid "failed to apply delta" msgstr "Ñбой при применении дельты" -#: builtin/index-pack.c:1120 +#: builtin/index-pack.c:1123 msgid "Receiving objects" msgstr "Получение объектов" -#: builtin/index-pack.c:1120 +#: builtin/index-pack.c:1123 msgid "Indexing objects" msgstr "ИндекÑирование объектов" -#: builtin/index-pack.c:1152 +#: builtin/index-pack.c:1155 msgid "pack is corrupted (SHA1 mismatch)" msgstr "пакет поврежден (неÑоответÑтвие SHA1)" -#: builtin/index-pack.c:1157 +#: builtin/index-pack.c:1160 msgid "cannot fstat packfile" msgstr "не удалоÑÑŒ выполнить fstat Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° пакета" -#: builtin/index-pack.c:1160 +#: builtin/index-pack.c:1163 msgid "pack has junk at the end" msgstr "файл пакета Ñодержит муÑор в конце" -#: builtin/index-pack.c:1171 +#: builtin/index-pack.c:1174 msgid "confusion beyond insanity in parse_pack_objects()" msgstr "Ð±ÐµÐ·ÑƒÐ¼Ð½Ð°Ñ Ð¿ÑƒÑ‚Ð°Ð½Ð¸Ñ†Ð° в parse_pack_objects()" -#: builtin/index-pack.c:1196 +#: builtin/index-pack.c:1197 msgid "Resolving deltas" msgstr "Определение изменений" -#: builtin/index-pack.c:1207 +#: builtin/index-pack.c:1208 #, c-format msgid "unable to create thread: %s" msgstr "не удалоÑÑŒ Ñоздать поток: %s" -#: builtin/index-pack.c:1249 +#: builtin/index-pack.c:1250 msgid "confusion beyond insanity" msgstr "Ð±ÐµÐ·ÑƒÐ¼Ð½Ð°Ñ Ð¿ÑƒÑ‚Ð°Ð½Ð¸Ñ†Ð°" -#: builtin/index-pack.c:1255 +#: builtin/index-pack.c:1256 #, c-format msgid "completed with %d local object" msgid_plural "completed with %d local objects" @@ -7329,12 +7883,12 @@ msgstr[1] "завершено Ñ %d локальными объектами" msgstr[2] "завершено Ñ %d локальными объектами" msgstr[3] "завершено Ñ %d локальными объектами" -#: builtin/index-pack.c:1267 +#: builtin/index-pack.c:1268 #, c-format msgid "Unexpected tail checksum for %s (disk corruption?)" msgstr "ÐÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ Ñумма в конце %s (диÑк поврежден?)" -#: builtin/index-pack.c:1271 +#: builtin/index-pack.c:1272 #, c-format msgid "pack has %d unresolved delta" msgid_plural "pack has %d unresolved deltas" @@ -7343,44 +7897,44 @@ msgstr[1] "пакет Ñодержит %d неразрешенные Ð´ÐµÐ»ÑŒÑ‚Ñ msgstr[2] "пакет Ñодержит %d неразрешенных дельт" msgstr[3] "пакет Ñодержит %d неразрешенных дельт" -#: builtin/index-pack.c:1295 +#: builtin/index-pack.c:1296 #, c-format msgid "unable to deflate appended object (%d)" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ñжать приÑоединенный объект (%d)" -#: builtin/index-pack.c:1371 +#: builtin/index-pack.c:1372 #, c-format msgid "local object %s is corrupt" msgstr "локальный объект %s поврежден" -#: builtin/index-pack.c:1395 +#: builtin/index-pack.c:1396 msgid "error while closing pack file" msgstr "ошибка при закрытии файла пакета" -#: builtin/index-pack.c:1408 +#: builtin/index-pack.c:1409 #, c-format msgid "cannot write keep file '%s'" msgstr "не удалоÑÑŒ запиÑать файл ÑƒÐ´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ Â«%s»" -#: builtin/index-pack.c:1416 +#: builtin/index-pack.c:1417 #, c-format msgid "cannot close written keep file '%s'" msgstr "не удалоÑÑŒ закрыть запиÑанный файл ÑƒÐ´ÐµÑ€Ð¶Ð°Ð½Ð¸Ñ Â«%s»" -#: builtin/index-pack.c:1429 +#: builtin/index-pack.c:1430 msgid "cannot store pack file" msgstr "не удалоÑÑŒ Ñохранить файл пакета" -#: builtin/index-pack.c:1440 +#: builtin/index-pack.c:1441 msgid "cannot store index file" msgstr "не удалоÑÑŒ Ñохранить файл индекÑа" -#: builtin/index-pack.c:1473 +#: builtin/index-pack.c:1474 #, c-format msgid "bad pack.indexversion=%<PRIu32>" msgstr "плохой pack.indexversion=%<PRIu32>" -#: builtin/index-pack.c:1483 builtin/index-pack.c:1681 +#: builtin/index-pack.c:1484 builtin/index-pack.c:1681 #, c-format msgid "no threads support, ignoring %s" msgstr "нет поддержки потоков, игнорирование %s" @@ -7424,126 +7978,126 @@ msgstr "Ð¸Ð¼Ñ Ð¿Ð°ÐºÐµÑ‚Ð° «%s» не оканчиваетÑÑ Ð½Ð° «.pack»" msgid "bad %s" msgstr "плохой %s" -#: builtin/index-pack.c:1730 +#: builtin/index-pack.c:1732 msgid "--fix-thin cannot be used without --stdin" msgstr "--fix-thin Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать без --stdin" -#: builtin/index-pack.c:1738 +#: builtin/index-pack.c:1740 msgid "--verify with no packfile name given" msgstr "--verify без ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ файла пакета" -#: builtin/init-db.c:55 +#: builtin/init-db.c:54 #, c-format msgid "cannot stat '%s'" msgstr "не удалоÑÑŒ выполнить stat Ð´Ð»Ñ Â«%s»" -#: builtin/init-db.c:61 +#: builtin/init-db.c:60 #, c-format msgid "cannot stat template '%s'" msgstr "не удалоÑÑŒ выполнить stat Ð´Ð»Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° «%s»" -#: builtin/init-db.c:66 +#: builtin/init-db.c:65 #, c-format msgid "cannot opendir '%s'" msgstr "не удалоÑÑŒ выполнить opendir Ð´Ð»Ñ Â«%s»" -#: builtin/init-db.c:77 +#: builtin/init-db.c:76 #, c-format msgid "cannot readlink '%s'" msgstr "не удалоÑÑŒ выполнить readlink Ð´Ð»Ñ Â«%s»" -#: builtin/init-db.c:79 +#: builtin/init-db.c:78 #, c-format msgid "cannot symlink '%s' '%s'" msgstr "не удалоÑÑŒ Ñоздать Ñимвольную ÑÑылку «%s» на «%s»" -#: builtin/init-db.c:85 +#: builtin/init-db.c:84 #, c-format msgid "cannot copy '%s' to '%s'" msgstr "не удалоÑÑŒ Ñкопировать файл «%s» в «%s»" -#: builtin/init-db.c:89 +#: builtin/init-db.c:88 #, c-format msgid "ignoring template %s" msgstr "игнорирование шаблона %s" -#: builtin/init-db.c:120 +#: builtin/init-db.c:119 #, c-format msgid "templates not found %s" msgstr "шаблоны не найдены %s" -#: builtin/init-db.c:135 +#: builtin/init-db.c:134 #, c-format msgid "not copying templates from '%s': %s" msgstr "не копирую шаблоны из «%s»: %s" -#: builtin/init-db.c:312 builtin/init-db.c:315 -#, c-format -msgid "%s already exists" -msgstr "%s уже ÑущеÑтвует" - -#: builtin/init-db.c:344 +#: builtin/init-db.c:327 #, c-format msgid "unable to handle file type %d" msgstr "не удаетÑÑ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚ÑŒ файл типа %d" -#: builtin/init-db.c:347 +#: builtin/init-db.c:330 #, c-format msgid "unable to move %s to %s" msgstr "не удаетÑÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÑтить файл %s в %s" -#: builtin/init-db.c:402 +#: builtin/init-db.c:347 builtin/init-db.c:350 +#, c-format +msgid "%s already exists" +msgstr "%s уже ÑущеÑтвует" + +#: builtin/init-db.c:403 #, c-format msgid "Reinitialized existing shared Git repository in %s%s\n" msgstr "Переинициализирован ÑущеÑтвующий общий репозиторий Git в %s%s\n" -#: builtin/init-db.c:403 +#: builtin/init-db.c:404 #, c-format msgid "Reinitialized existing Git repository in %s%s\n" msgstr "Переинициализирован ÑущеÑтвующий репозиторий Git в %s%s\n" -#: builtin/init-db.c:407 +#: builtin/init-db.c:408 #, c-format msgid "Initialized empty shared Git repository in %s%s\n" msgstr "Инициализирован пуÑтой общий репозиторий Git в %s%s\n" -#: builtin/init-db.c:408 +#: builtin/init-db.c:409 #, c-format msgid "Initialized empty Git repository in %s%s\n" msgstr "Инициализирован пуÑтой репозиторий Git в %s%s\n" -#: builtin/init-db.c:455 +#: builtin/init-db.c:457 msgid "" "git init [-q | --quiet] [--bare] [--template=<template-directory>] " "[--shared[=<permissions>]] [<directory>]" msgstr "git init [-q | --quiet] [--bare] [--template=<каталог-шаблонов>] [--shared[=<права-доÑтупа>]] [<каталог>]" -#: builtin/init-db.c:478 +#: builtin/init-db.c:480 msgid "permissions" msgstr "права-доÑтупа" -#: builtin/init-db.c:479 +#: builtin/init-db.c:481 msgid "specify that the git repository is to be shared amongst several users" msgstr "укажите, еÑли репозиторий git будет иÑпользоватьÑÑ Ð½ÐµÑколькими пользователÑми" -#: builtin/init-db.c:513 builtin/init-db.c:518 +#: builtin/init-db.c:515 builtin/init-db.c:520 #, c-format msgid "cannot mkdir %s" msgstr "не удалоÑÑŒ выполнить mkdir %s" -#: builtin/init-db.c:522 +#: builtin/init-db.c:524 #, c-format msgid "cannot chdir to %s" msgstr "не удалоÑÑŒ выполнить chdir в %s" -#: builtin/init-db.c:543 +#: builtin/init-db.c:545 #, c-format msgid "" "%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-" "dir=<directory>)" msgstr "%s (или --work-tree=<каталог>) Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать без ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ %s (или --git-dir=<каталог>)" -#: builtin/init-db.c:571 +#: builtin/init-db.c:573 #, c-format msgid "Cannot access work tree '%s'" msgstr "Ðе удалоÑÑŒ получить доÑтуп к рабочему каталогу «%s»" @@ -7652,345 +8206,350 @@ msgstr "Ðе ÑвлÑетÑÑ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼." msgid "Cover letter needs email format" msgstr "Сопроводительное пиÑьмо должно быть в формате Ñлектронной почты" -#: builtin/log.c:1064 +#: builtin/log.c:1063 #, c-format msgid "insane in-reply-to: %s" msgstr "ошибка в поле in-reply-to: %s" -#: builtin/log.c:1092 +#: builtin/log.c:1091 msgid "git format-patch [<options>] [<since> | <revision-range>]" msgstr "git format-patch [<опции>] [<начинаÑ-Ñ> | <диапазон-редакций>]" -#: builtin/log.c:1137 +#: builtin/log.c:1141 msgid "Two output directories?" msgstr "Два выходных каталога?" -#: builtin/log.c:1244 builtin/log.c:1883 builtin/log.c:1885 builtin/log.c:1897 +#: builtin/log.c:1248 builtin/log.c:1891 builtin/log.c:1893 builtin/log.c:1905 #, c-format msgid "Unknown commit %s" msgstr "ÐеизвеÑтный коммит %s" -#: 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 +#: builtin/log.c:1258 builtin/notes.c:884 builtin/tag.c:455 #, c-format msgid "Failed to resolve '%s' as a valid ref." msgstr "Ðе удалоÑÑŒ разрешить «%s» как ÑÑылку." -#: builtin/log.c:1259 +#: builtin/log.c:1263 msgid "Could not find exact merge base." msgstr "Ðе удалоÑÑŒ найти точную базу ÑлиÑниÑ." -#: builtin/log.c:1263 +#: builtin/log.c:1267 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 "Ðе удалоÑÑŒ получить вышеÑтоÑщую ветку. ЕÑли вы хотите запиÑать базовый коммит автомитичеÑки, то иÑпользуйте git branch --set-upstream-to Ð´Ð»Ñ Ð¾Ñ‚ÑÐ»ÐµÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ¹ ветки.\nИли же вы можете указать базовый коммит указанием --base=<идентификатор-базового-коммита> вручную." -#: builtin/log.c:1283 +#: builtin/log.c:1287 msgid "Failed to find exact merge base" msgstr "Ðе удалоÑÑŒ найти точную базу ÑлиÑниÑ" -#: builtin/log.c:1294 +#: builtin/log.c:1298 msgid "base commit should be the ancestor of revision list" msgstr "базовый коммит должен быть предком ÑпиÑка редакций" -#: builtin/log.c:1298 +#: builtin/log.c:1302 msgid "base commit shouldn't be in revision list" msgstr "базовый коммит не должен быть в ÑпиÑке редакций" -#: builtin/log.c:1347 +#: builtin/log.c:1351 msgid "cannot get patch id" msgstr "не удалоÑÑŒ получить идентификатор патча" -#: builtin/log.c:1404 +#: builtin/log.c:1408 msgid "use [PATCH n/m] even with a single patch" msgstr "выводить [PATCH n/m] даже когда один патч" -#: builtin/log.c:1407 +#: builtin/log.c:1411 msgid "use [PATCH] even with multiple patches" msgstr "выводить [PATCH] даже когда неÑколько патчей" -#: builtin/log.c:1411 +#: builtin/log.c:1415 msgid "print patches to standard out" msgstr "выводить патчи на Ñтандартный вывод" -#: builtin/log.c:1413 +#: builtin/log.c:1417 msgid "generate a cover letter" msgstr "генерировать Ñопроводительное пиÑьмо" -#: builtin/log.c:1415 +#: builtin/log.c:1419 msgid "use simple number sequence for output file names" msgstr "иÑпользовать проÑтую поÑледовательноÑÑ‚ÑŒ чиÑел Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½ выходных файлов" -#: builtin/log.c:1416 +#: builtin/log.c:1420 msgid "sfx" msgstr "ÑуффикÑ" -#: builtin/log.c:1417 +#: builtin/log.c:1421 msgid "use <sfx> instead of '.patch'" msgstr "иÑпользовать ÑÑƒÑ„Ñ„Ð¸ÐºÑ <ÑуффикÑ> вмеÑто «.patch»" -#: builtin/log.c:1419 +#: builtin/log.c:1423 msgid "start numbering patches at <n> instead of 1" msgstr "начать нумерацию патчей Ñ <n>, а не Ñ 1" -#: builtin/log.c:1421 +#: builtin/log.c:1425 msgid "mark the series as Nth re-roll" msgstr "пометить Ñерию как Ñнную попытку" -#: builtin/log.c:1423 +#: builtin/log.c:1427 +msgid "Use [RFC PATCH] instead of [PATCH]" +msgstr "ИÑпользовать [RFC PATCH] вмеÑто [PATCH]" + +#: builtin/log.c:1430 msgid "Use [<prefix>] instead of [PATCH]" msgstr "ИÑпользовать [<префикÑ>] вмеÑто [PATCH]" -#: builtin/log.c:1426 +#: builtin/log.c:1433 msgid "store resulting files in <dir>" msgstr "Ñохранить результирующие файлы в <каталог>" -#: builtin/log.c:1429 +#: builtin/log.c:1436 msgid "don't strip/add [PATCH]" msgstr "не обрезать/добавлÑÑ‚ÑŒ [PATCH]" -#: builtin/log.c:1432 +#: builtin/log.c:1439 msgid "don't output binary diffs" msgstr "не выводить двоичные различиÑ" -#: builtin/log.c:1434 +#: builtin/log.c:1441 msgid "output all-zero hash in From header" msgstr "выводить нулевую Ñ…Ñш-Ñумму в заголовке From" -#: builtin/log.c:1436 +#: builtin/log.c:1443 msgid "don't include a patch matching a commit upstream" msgstr "не включать патч, еÑли коммит уже еÑÑ‚ÑŒ в вышеÑтоÑщей ветке" -#: builtin/log.c:1438 +#: builtin/log.c:1445 msgid "show patch format instead of default (patch + stat)" msgstr "выводить в формате патча, а не в Ñтандартном (патч + ÑтатиÑтика)" -#: builtin/log.c:1440 +#: builtin/log.c:1447 msgid "Messaging" msgstr "Передача Ñообщений" -#: builtin/log.c:1441 +#: builtin/log.c:1448 msgid "header" msgstr "заголовок" -#: builtin/log.c:1442 +#: builtin/log.c:1449 msgid "add email header" msgstr "добавить заголовок ÑообщениÑ" -#: builtin/log.c:1443 builtin/log.c:1445 +#: builtin/log.c:1450 builtin/log.c:1452 msgid "email" msgstr "почта" -#: builtin/log.c:1443 +#: builtin/log.c:1450 msgid "add To: header" msgstr "добавить заголовок To:" -#: builtin/log.c:1445 +#: builtin/log.c:1452 msgid "add Cc: header" msgstr "добавить заголовок Cc:" -#: builtin/log.c:1447 +#: builtin/log.c:1454 msgid "ident" msgstr "идентификатор" -#: builtin/log.c:1448 +#: builtin/log.c:1455 msgid "set From address to <ident> (or committer ident if absent)" msgstr "уÑтановить Ð°Ð´Ñ€ÐµÑ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÐµÐ»Ñ Ð½Ð° <идентификатор> (или на идентификатор коммитера, еÑли отÑутÑтвует)" -#: builtin/log.c:1450 +#: builtin/log.c:1457 msgid "message-id" msgstr "идентификатор-ÑообщениÑ" -#: builtin/log.c:1451 +#: builtin/log.c:1458 msgid "make first mail a reply to <message-id>" msgstr "Ñделать первое пиÑьмо ответом на <идентификатор-ÑообщениÑ>" -#: builtin/log.c:1452 builtin/log.c:1455 +#: builtin/log.c:1459 builtin/log.c:1462 msgid "boundary" msgstr "вложение" -#: builtin/log.c:1453 +#: builtin/log.c:1460 msgid "attach the patch" msgstr "приложить патч" -#: builtin/log.c:1456 +#: builtin/log.c:1463 msgid "inline the patch" msgstr "включить патч в текÑÑ‚ пиÑьма" -#: builtin/log.c:1460 +#: builtin/log.c:1467 msgid "enable message threading, styles: shallow, deep" msgstr "включить в пиÑьмах иерархичноÑÑ‚ÑŒ, Ñтили: shallow (чаÑтичную), deep (глубокую)" -#: builtin/log.c:1462 +#: builtin/log.c:1469 msgid "signature" msgstr "подпиÑÑŒ" -#: builtin/log.c:1463 +#: builtin/log.c:1470 msgid "add a signature" msgstr "добавить подпиÑÑŒ" -#: builtin/log.c:1464 +#: builtin/log.c:1471 msgid "base-commit" msgstr "базовый коммит" -#: builtin/log.c:1465 +#: builtin/log.c:1472 msgid "add prerequisite tree info to the patch series" msgstr "добавить информацию о требовании дерева к Ñерии патчей" -#: builtin/log.c:1467 +#: builtin/log.c:1474 msgid "add a signature from a file" msgstr "добавить подпиÑÑŒ из файла" -#: builtin/log.c:1468 +#: builtin/log.c:1475 msgid "don't print the patch filenames" msgstr "не выводить имена файлов патчей" -#: builtin/log.c:1558 +#: builtin/log.c:1565 msgid "-n and -k are mutually exclusive." msgstr "-n и -k Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно" -#: builtin/log.c:1560 -msgid "--subject-prefix and -k are mutually exclusive." -msgstr "--subject-prefix и -k Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно." +#: builtin/log.c:1567 +msgid "--subject-prefix/--rfc and -k are mutually exclusive." +msgstr "--subject-prefix/--rfc и -k Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно." -#: builtin/log.c:1568 +#: builtin/log.c:1575 msgid "--name-only does not make sense" msgstr "--name-only не имеет ÑмыÑла" -#: builtin/log.c:1570 +#: builtin/log.c:1577 msgid "--name-status does not make sense" msgstr "--name-status не имеет ÑмыÑла" -#: builtin/log.c:1572 +#: builtin/log.c:1579 msgid "--check does not make sense" msgstr "--check не имеет ÑмыÑла" -#: builtin/log.c:1602 +#: builtin/log.c:1609 msgid "standard output, or directory, which one?" msgstr "Ñтандартный вывод или каталог?" -#: builtin/log.c:1604 +#: builtin/log.c:1611 #, c-format msgid "Could not create directory '%s'" msgstr "Ðе удалоÑÑŒ Ñоздать каталог «%s»" -#: builtin/log.c:1698 +#: builtin/log.c:1705 #, c-format msgid "unable to read signature file '%s'" msgstr "не удалоÑÑŒ прочитать файл подпиÑи «%s»" -#: builtin/log.c:1769 +#: builtin/log.c:1777 msgid "Failed to create output files" msgstr "Сбой при Ñоздании выходных файлов" -#: builtin/log.c:1818 +#: builtin/log.c:1826 msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]" msgstr "git cherry [-v] [<вышеÑтоÑщаÑ-ветка> [<голова> [<ограничение>]]]" -#: builtin/log.c:1872 +#: builtin/log.c:1880 #, c-format msgid "" "Could not find a tracked remote branch, please specify <upstream> " "manually.\n" msgstr "Ðе удалоÑÑŒ найти отÑлеживаемую внешнюю ветку, укажите <вышеÑтоÑщую-ветку> вручную.\n" -#: builtin/ls-files.c:379 +#: builtin/ls-files.c:458 msgid "git ls-files [<options>] [<file>...]" msgstr "git ls-files [<опции>] [<файл>…]" -#: builtin/ls-files.c:428 +#: builtin/ls-files.c:507 msgid "identify the file status with tags" msgstr "выводить имена файлов Ñ Ð¼ÐµÑ‚ÐºÐ°Ð¼Ð¸" -#: builtin/ls-files.c:430 +#: builtin/ls-files.c:509 msgid "use lowercase letters for 'assume unchanged' files" msgstr "иÑпользовать Ñимволы в нижнем региÑтре Ð´Ð»Ñ Â«Ð¿Ñ€ÐµÐ´Ð¿Ð¾Ð»Ð¾Ð¶Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾ без изменений» файлов" -#: builtin/ls-files.c:432 +#: builtin/ls-files.c:511 msgid "show cached files in the output (default)" msgstr "показывать кÑшированные файлы при выводе (по умолчанию)" -#: builtin/ls-files.c:434 +#: builtin/ls-files.c:513 msgid "show deleted files in the output" msgstr "показывать удаленные файлы при выводе" -#: builtin/ls-files.c:436 +#: builtin/ls-files.c:515 msgid "show modified files in the output" msgstr "показывать измененные файлы при выводе" -#: builtin/ls-files.c:438 +#: builtin/ls-files.c:517 msgid "show other files in the output" msgstr "показывать другие файлы при выводе" -#: builtin/ls-files.c:440 +#: builtin/ls-files.c:519 msgid "show ignored files in the output" msgstr "показывать игнорируемые файлы при выводе" -#: builtin/ls-files.c:443 +#: builtin/ls-files.c:522 msgid "show staged contents' object name in the output" msgstr "показывать Ð¸Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑированного объекта на выводе" -#: builtin/ls-files.c:445 +#: builtin/ls-files.c:524 msgid "show files on the filesystem that need to be removed" msgstr "показывать файлы в файловой ÑиÑтеме, которые должны быть удалены" -#: builtin/ls-files.c:447 +#: builtin/ls-files.c:526 msgid "show 'other' directories' names only" msgstr "показывать только имена у «других» каталогов" -#: builtin/ls-files.c:449 +#: builtin/ls-files.c:528 msgid "show line endings of files" msgstr "показать концы Ñтрок файлов" -#: builtin/ls-files.c:451 +#: builtin/ls-files.c:530 msgid "don't show empty directories" msgstr "не показывать пуÑтые каталоги" -#: builtin/ls-files.c:454 +#: builtin/ls-files.c:533 msgid "show unmerged files in the output" msgstr "показывать не Ñлитые файлы на выводе" -#: builtin/ls-files.c:456 +#: builtin/ls-files.c:535 msgid "show resolve-undo information" msgstr "показывать информации о разрешении конфликтов и отмене" -#: builtin/ls-files.c:458 +#: builtin/ls-files.c:537 msgid "skip files matching pattern" msgstr "пропуÑтить файлы, ÑоответÑтвующие шаблону" -#: builtin/ls-files.c:461 +#: builtin/ls-files.c:540 msgid "exclude patterns are read from <file>" msgstr "прочитать шаблоны иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð· <файл>" -#: builtin/ls-files.c:464 +#: builtin/ls-files.c:543 msgid "read additional per-directory exclude patterns in <file>" msgstr "прочитать дополнительные покаталожные шаблоны иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ð¸Ð· <файл>" -#: builtin/ls-files.c:466 +#: builtin/ls-files.c:545 msgid "add the standard git exclusions" msgstr "добавить Ñтандартные иÑÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ git" -#: builtin/ls-files.c:469 +#: builtin/ls-files.c:548 msgid "make the output relative to the project top directory" msgstr "выводить пути отноÑительно корневого каталога проекта" -#: builtin/ls-files.c:472 +#: builtin/ls-files.c:551 +msgid "recurse through submodules" +msgstr "рекурÑивно по подмодулÑм" + +#: builtin/ls-files.c:553 msgid "if any <file> is not in the index, treat this as an error" msgstr "еÑли какой-либо <файл> не в индекÑе, Ñчитать Ñто ошибкой" -#: builtin/ls-files.c:473 +#: builtin/ls-files.c:554 msgid "tree-ish" msgstr "указатель-дерева" -#: builtin/ls-files.c:474 +#: builtin/ls-files.c:555 msgid "pretend that paths removed since <tree-ish> are still present" msgstr "притворитьÑÑ, что пути удалены, Ñ‚.к. <указатель-дерева> еще ÑущеÑтвует" -#: builtin/ls-files.c:476 +#: builtin/ls-files.c:557 msgid "show debugging data" msgstr "показать отладочную информацию" @@ -8104,31 +8663,31 @@ msgstr "ДоÑтупные Ñтратегии:" msgid "Available custom strategies are:" msgstr "ДоÑтупные пользовательÑкие Ñтратегии:" -#: builtin/merge.c:195 builtin/pull.c:126 +#: builtin/merge.c:195 builtin/pull.c:127 msgid "do not show a diffstat at the end of the merge" msgstr "не выводить ÑтатиÑтику изменений поÑле Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ ÑлиÑниÑ" -#: builtin/merge.c:198 builtin/pull.c:129 +#: builtin/merge.c:198 builtin/pull.c:130 msgid "show a diffstat at the end of the merge" msgstr "вывеÑти ÑтатиÑтику изменений поÑле Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ ÑлиÑниÑ" -#: builtin/merge.c:199 builtin/pull.c:132 +#: builtin/merge.c:199 builtin/pull.c:133 msgid "(synonym to --stat)" msgstr "(Ñиноним Ð´Ð»Ñ --stat)" -#: builtin/merge.c:201 builtin/pull.c:135 +#: builtin/merge.c:201 builtin/pull.c:136 msgid "add (at most <n>) entries from shortlog to merge commit message" msgstr "добавить (макÑимум <n>) запиÑей из короткого журнала в Ñообщение коммита у ÑлиÑниÑ" -#: builtin/merge.c:204 builtin/pull.c:138 +#: builtin/merge.c:204 builtin/pull.c:139 msgid "create a single commit instead of doing a merge" msgstr "Ñоздать один коммит, вмеÑто Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑлиÑниÑ" -#: builtin/merge.c:206 builtin/pull.c:141 +#: builtin/merge.c:206 builtin/pull.c:142 msgid "perform a commit if the merge succeeds (default)" msgstr "Ñделать коммит, еÑли ÑлиÑние прошло уÑпешно (по умолчанию)" -#: builtin/merge.c:208 builtin/pull.c:144 +#: builtin/merge.c:208 builtin/pull.c:145 msgid "edit message before committing" msgstr "отредактировать Ñообщение перед выполнением коммита" @@ -8136,28 +8695,28 @@ msgstr "отредактировать Ñообщение перед выполРmsgid "allow fast-forward (default)" msgstr "разрешить перемотку вперед (по умолчанию)" -#: builtin/merge.c:211 builtin/pull.c:150 +#: builtin/merge.c:211 builtin/pull.c:151 msgid "abort if fast-forward is not possible" msgstr "отменить выполнение ÑлиÑниÑ, еÑли перемотка вперед невозможна" -#: builtin/merge.c:215 builtin/pull.c:153 +#: builtin/merge.c:215 builtin/pull.c:154 msgid "verify that the named commit has a valid GPG signature" msgstr "проверить, что указанный коммит имеет верную Ñлектронную подпиÑÑŒ GPG" -#: builtin/merge.c:216 builtin/notes.c:772 builtin/pull.c:157 +#: builtin/merge.c:216 builtin/notes.c:774 builtin/pull.c:158 #: builtin/revert.c:89 msgid "strategy" msgstr "ÑтратегиÑ" -#: builtin/merge.c:217 builtin/pull.c:158 +#: builtin/merge.c:217 builtin/pull.c:159 msgid "merge strategy to use" msgstr "иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ ÑÑ‚Ñ€Ð°Ñ‚ÐµÐ³Ð¸Ñ ÑлиÑниÑ" -#: builtin/merge.c:218 builtin/pull.c:161 +#: builtin/merge.c:218 builtin/pull.c:162 msgid "option=value" msgstr "опциÑ=значение" -#: builtin/merge.c:219 builtin/pull.c:162 +#: builtin/merge.c:219 builtin/pull.c:163 msgid "option for selected merge strategy" msgstr "опции Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ð¾Ð¹ Ñтратегии ÑлиÑниÑ" @@ -8169,7 +8728,7 @@ msgstr "Ñообщение коммита Ð´Ð»Ñ ÑлиÑÐ½Ð¸Ñ (Ð´Ð»Ñ ÑÐ»Ð¸Ñ msgid "abort the current in-progress merge" msgstr "отменить выполнение проиÑходÑщего ÑлиÑниÑ" -#: builtin/merge.c:227 builtin/pull.c:169 +#: builtin/merge.c:227 builtin/pull.c:170 msgid "allow merging unrelated histories" msgstr "разрешить ÑлиÑние неÑвÑзанных иÑторий изменений" @@ -8376,55 +8935,55 @@ msgstr "отказ ÑлиÑÐ½Ð¸Ñ Ð½ÐµÑвÑзанных иÑторий изме msgid "Already up-to-date." msgstr "Уже обновлено." -#: builtin/merge.c:1382 +#: builtin/merge.c:1377 #, c-format msgid "Updating %s..%s\n" msgstr "Обновление %s..%s\n" -#: builtin/merge.c:1419 +#: builtin/merge.c:1418 #, c-format msgid "Trying really trivial in-index merge...\n" msgstr "Попытка тривиального ÑлиÑÐ½Ð¸Ñ Ð² индекÑе…\n" -#: builtin/merge.c:1426 +#: builtin/merge.c:1425 #, c-format msgid "Nope.\n" msgstr "Ðе вышло.\n" -#: builtin/merge.c:1451 +#: builtin/merge.c:1450 msgid "Already up-to-date. Yeeah!" msgstr "Уже обновлено. Круто!" -#: builtin/merge.c:1457 +#: builtin/merge.c:1456 msgid "Not possible to fast-forward, aborting." msgstr "Перемотка вперед невозможна, отмена." -#: builtin/merge.c:1480 builtin/merge.c:1559 +#: builtin/merge.c:1479 builtin/merge.c:1558 #, c-format msgid "Rewinding the tree to pristine...\n" msgstr "Перемотка дерева к иÑходному ÑоÑтоÑнию…\n" -#: builtin/merge.c:1484 +#: builtin/merge.c:1483 #, c-format msgid "Trying merge strategy %s...\n" msgstr "Попытка ÑлиÑÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñтратегии %s…\n" -#: builtin/merge.c:1550 +#: builtin/merge.c:1549 #, c-format msgid "No merge strategy handled the merge.\n" msgstr "Ðи одна ÑÑ‚Ñ€Ð°Ñ‚ÐµÐ³Ð¸Ñ ÑлиÑÐ½Ð¸Ñ Ð½Ðµ обработала ÑлиÑние.\n" -#: builtin/merge.c:1552 +#: builtin/merge.c:1551 #, c-format msgid "Merge with strategy %s failed.\n" msgstr "Сбой при ÑлиÑнии Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñтратегии %s.\n" -#: builtin/merge.c:1561 +#: builtin/merge.c:1560 #, c-format msgid "Using the %s to prepare resolving by hand.\n" msgstr "ИÑпользую %s Ð´Ð»Ñ Ð¿Ð¾Ð´Ð³Ð¾Ñ‚Ð¾Ð²ÐºÐ¸ ручного Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÐºÐ¾Ð½Ñ„Ð»Ð¸ÐºÑ‚Ð¾Ð².\n" -#: builtin/merge.c:1573 +#: builtin/merge.c:1572 #, c-format msgid "Automatic merge went well; stopped before committing as requested\n" msgstr "ÐвтоматичеÑкое ÑлиÑние прошло уÑпешно; как и запрашивали, оÑтановлено перед выполнением коммита\n" @@ -8449,23 +9008,23 @@ msgstr "git merge-base --is-ancestor <коммит> <коммит>" msgid "git merge-base --fork-point <ref> [<commit>]" msgstr "git merge-base --fork-point <ÑÑылка> [<коммит>]" -#: builtin/merge-base.c:214 +#: builtin/merge-base.c:217 msgid "output all common ancestors" msgstr "вывеÑти вÑех общих предков" -#: builtin/merge-base.c:216 +#: builtin/merge-base.c:219 msgid "find ancestors for a single n-way merge" msgstr "вывеÑти предков Ð´Ð»Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ многоходового ÑлиÑниÑ" -#: builtin/merge-base.c:218 +#: builtin/merge-base.c:221 msgid "list revs not reachable from others" msgstr "вывеÑти ÑпиÑок редаций, которые не доÑтижимы из друг друга" -#: builtin/merge-base.c:220 +#: builtin/merge-base.c:223 msgid "is the first one ancestor of the other?" msgstr "ÑвлÑетÑÑ Ð¿ÐµÑ€Ð²Ñ‹Ð¼ предком второго указанного коммита?" -#: builtin/merge-base.c:222 +#: builtin/merge-base.c:225 msgid "find where <commit> forked from reflog of <ref>" msgstr "найти журнале ÑÑылок <ÑÑылка> где именно <коммит> разветвилÑÑ" @@ -8507,6 +9066,39 @@ msgstr "не предупреждать о конфликтах" msgid "set labels for file1/orig-file/file2" msgstr "уÑтановить метки Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»1/ориг-файл/файл2" +#: builtin/merge-recursive.c:45 +#, c-format +msgid "unknown option %s" +msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ %s" + +#: builtin/merge-recursive.c:51 +#, c-format +msgid "could not parse object '%s'" +msgstr "не удалоÑÑŒ разобрать объект «%s»" + +#: builtin/merge-recursive.c:55 +#, c-format +msgid "cannot handle more than %d base. Ignoring %s." +msgid_plural "cannot handle more than %d bases. Ignoring %s." +msgstr[0] "невозможно обработать больше %d базы. Игнорирую %s." +msgstr[1] "невозможно обработать больше %d баз. Игнорирую %s." +msgstr[2] "невозможно обработать больше %d баз. Игнорирую %s." +msgstr[3] "невозможно обработать больше %d базы. Игнорирую %s." + +#: builtin/merge-recursive.c:63 +msgid "not handling anything other than two heads merge." +msgstr "не обрабатываю ничего, кроме ÑлиÑÐ½Ð¸Ñ Ð´Ð²ÑƒÑ… указателей на ветки." + +#: builtin/merge-recursive.c:69 builtin/merge-recursive.c:71 +#, c-format +msgid "could not resolve ref '%s'" +msgstr "не удалоÑÑŒ раÑпознать ÑÑылку «%s»" + +#: builtin/merge-recursive.c:77 +#, c-format +msgid "Merging %s with %s\n" +msgstr "СлиÑние %s и %s\n" + #: builtin/mktree.c:65 msgid "git mktree [-z] [--missing] [--batch]" msgstr "git mktree [-z] [--missing] [--batch]" @@ -8615,43 +9207,43 @@ msgstr "Переименование %s в %s\n" msgid "renaming '%s' failed" msgstr "Ñбой при переименовании «%s»" -#: builtin/name-rev.c:258 +#: builtin/name-rev.c:257 msgid "git name-rev [<options>] <commit>..." msgstr "git name-rev [<опции>] <коммит>…" -#: builtin/name-rev.c:259 +#: builtin/name-rev.c:258 msgid "git name-rev [<options>] --all" msgstr "git name-rev [<опции>] --all" -#: builtin/name-rev.c:260 +#: builtin/name-rev.c:259 msgid "git name-rev [<options>] --stdin" msgstr "git name-rev [<опции>] --stdin" -#: builtin/name-rev.c:312 +#: builtin/name-rev.c:311 msgid "print only names (no SHA-1)" msgstr "выводить только имена (без SHA-1)" -#: builtin/name-rev.c:313 +#: builtin/name-rev.c:312 msgid "only use tags to name the commits" msgstr "иÑпользовать только метки Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð¾Ð²" -#: builtin/name-rev.c:315 +#: builtin/name-rev.c:314 msgid "only use refs matching <pattern>" msgstr "иÑпользовать только ÑÑылки, ÑоответÑтвующие <шаблону> " -#: builtin/name-rev.c:317 +#: builtin/name-rev.c:316 msgid "list all commits reachable from all refs" msgstr "вывеÑти ÑпиÑок вÑех коммитов, доÑтижимых Ñо вÑех ÑÑылок" -#: builtin/name-rev.c:318 +#: builtin/name-rev.c:317 msgid "read from stdin" msgstr "прочитать из Ñтандартного ввода" -#: builtin/name-rev.c:319 +#: builtin/name-rev.c:318 msgid "allow to print `undefined` names (default)" msgstr "разрешить вывод «undefined», еÑли не найдено (по умолчанию)" -#: builtin/name-rev.c:325 +#: builtin/name-rev.c:324 msgid "dereference tags in the input (internal use)" msgstr "разыменовывать введенные метки (Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€ÐµÐ½Ð½ÐµÐ³Ð¾ иÑпользованиÑ)" @@ -8779,8 +9371,8 @@ msgid "failed to finish 'show' for object '%s'" msgstr "не удалоÑÑŒ завершить «show» Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° «%s»" #: builtin/notes.c:194 -msgid "Please supply the note contents using either -m or -F option" -msgstr "ПожалуйÑта, укажите Ñодержимое заметки, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¾Ð¿Ñ†Ð¸ÑŽ -m или -F" +msgid "please supply the note contents using either -m or -F option" +msgstr "пожалуйÑта, укажите Ñодержимое заметки, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð¾Ð¿Ñ†Ð¸ÑŽ -m или -F" #: builtin/notes.c:203 msgid "unable to write note object" @@ -8788,8 +9380,8 @@ msgstr "не удалоÑÑŒ запиÑать объект заметки" #: builtin/notes.c:205 #, c-format -msgid "The note contents have been left in %s" -msgstr "Содержимое заметки оÑталоÑÑŒ в %s" +msgid "the note contents have been left in %s" +msgstr "Ñодержимое заметки оÑталоÑÑŒ в %s" #: builtin/notes.c:233 builtin/tag.c:439 #, c-format @@ -8801,158 +9393,214 @@ msgstr "не удалоÑÑŒ прочитать «%s»" msgid "could not open or read '%s'" msgstr "не удалоÑÑŒ открыть или прочитать «%s»" +#: builtin/notes.c:254 builtin/notes.c:305 builtin/notes.c:307 +#: builtin/notes.c:372 builtin/notes.c:427 builtin/notes.c:513 +#: builtin/notes.c:518 builtin/notes.c:596 builtin/notes.c:659 +#, c-format +msgid "failed to resolve '%s' as a valid ref." +msgstr "не удалоÑÑŒ разрешить «%s» как ÑÑылку." + #: builtin/notes.c:257 #, c-format -msgid "Failed to read object '%s'." -msgstr "Ðе удалоÑÑŒ прочитать объект «%s»." +msgid "failed to read object '%s'." +msgstr "не удалоÑÑŒ прочитать объект «%s»." #: builtin/notes.c:261 #, c-format -msgid "Cannot read note data from non-blob object '%s'." -msgstr "Ðе удалоÑÑŒ прочитать данные заметки из недвоичного объекта «%s»." +msgid "cannot read note data from non-blob object '%s'." +msgstr "не удалоÑÑŒ прочитать данные заметки из недвоичного объекта «%s»." -#: 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 +#: builtin/notes.c:301 +#, c-format +msgid "malformed input line: '%s'." +msgstr "Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð²Ð²ÐµÐ´ÐµÐ½Ð½Ð°Ñ Ñтрока: «%s»." + +#: builtin/notes.c:316 +#, c-format +msgid "failed to copy notes from '%s' to '%s'" +msgstr "не удалоÑÑŒ Ñкопировать заметку из «%s» в «%s»" + +#. TRANSLATORS: the first %s will be replaced by a +#. git notes command: 'add', 'merge', 'remove', etc. +#: builtin/notes.c:345 +#, c-format +msgid "refusing to %s notes in %s (outside of refs/notes/)" +msgstr "отказ в перезапиÑи %s заметок в %s (за пределами refs/notes/)" + +#: builtin/notes.c:365 builtin/notes.c:420 builtin/notes.c:496 +#: builtin/notes.c:508 builtin/notes.c:584 builtin/notes.c:652 +#: builtin/notes.c:802 builtin/notes.c:949 builtin/notes.c:970 msgid "too many parameters" msgstr "передано Ñлишком много параметров" -#: builtin/notes.c:376 builtin/notes.c:663 +#: builtin/notes.c:378 builtin/notes.c:665 #, c-format -msgid "No note found for object %s." -msgstr "Ðе найдена заметка Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %s." +msgid "no note found for object %s." +msgstr "не найдена заметка Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð° %s." -#: builtin/notes.c:397 builtin/notes.c:560 +#: builtin/notes.c:399 builtin/notes.c:562 msgid "note contents as a string" msgstr "текÑтовое Ñодержимое заметки" -#: builtin/notes.c:400 builtin/notes.c:563 +#: builtin/notes.c:402 builtin/notes.c:565 msgid "note contents in a file" msgstr "Ñодержимое заметки в файле" -#: builtin/notes.c:403 builtin/notes.c:566 +#: builtin/notes.c:405 builtin/notes.c:568 msgid "reuse and edit specified note object" msgstr "иÑпользовать и отредактировать указанный объект заметки" -#: builtin/notes.c:406 builtin/notes.c:569 +#: builtin/notes.c:408 builtin/notes.c:571 msgid "reuse specified note object" msgstr "иÑпользовать указанный объект заметки" -#: builtin/notes.c:409 builtin/notes.c:572 +#: builtin/notes.c:411 builtin/notes.c:574 msgid "allow storing empty note" msgstr "разрешить Ñохранение пуÑтой заметки" -#: builtin/notes.c:410 builtin/notes.c:481 +#: builtin/notes.c:412 builtin/notes.c:483 msgid "replace existing notes" msgstr "заменить ÑущеÑтвующие заметки" -#: builtin/notes.c:435 +#: builtin/notes.c:437 #, c-format msgid "" "Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite " "existing notes" msgstr "Ðе удалоÑÑŒ добавить заметку. Ðайдена ÑущеÑÑ‚Ð²ÑƒÑŽÑ‰Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ° у объекта %s. ИÑпользуйте параметр «-f» Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñи ÑущеÑтвующих заметок." -#: builtin/notes.c:450 builtin/notes.c:529 +#: builtin/notes.c:452 builtin/notes.c:531 #, c-format msgid "Overwriting existing notes for object %s\n" msgstr "ПерезапиÑÑŒ ÑущеÑтвующих заметок у объекта %s\n" -#: builtin/notes.c:461 builtin/notes.c:622 builtin/notes.c:887 +#: builtin/notes.c:463 builtin/notes.c:624 builtin/notes.c:889 #, c-format msgid "Removing note for object %s\n" msgstr "Удаление заметки у объекта %s\n" -#: builtin/notes.c:482 +#: builtin/notes.c:484 msgid "read objects from stdin" msgstr "прочитать объекты из Ñтандартного ввода" -#: builtin/notes.c:484 +#: builtin/notes.c:486 msgid "load rewriting config for <command> (implies --stdin)" msgstr "загрузить наÑтройки перезапиÑи Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ <команда> (включает в ÑÐµÐ±Ñ --stdin)" -#: builtin/notes.c:502 +#: builtin/notes.c:504 msgid "too few parameters" msgstr "передано Ñлишком мало параметров" -#: builtin/notes.c:523 +#: builtin/notes.c:525 #, c-format msgid "" "Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite" " existing notes" msgstr "Ðе удалоÑÑŒ Ñкопировать заметку. Ðайдена ÑущеÑÑ‚Ð²ÑƒÑŽÑ‰Ð°Ñ Ð·Ð°Ð¼ÐµÑ‚ÐºÐ° у объекта %s. ИÑпользуйте параметр «-f» Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñи ÑущеÑтвующих заметок." -#: builtin/notes.c:535 +#: builtin/notes.c:537 #, c-format -msgid "Missing notes on source object %s. Cannot copy." -msgstr "Ðет заметок у иÑходного объекта %s. ÐÐµÐ»ÑŒÐ·Ñ Ñкопировать." +msgid "missing notes on source object %s. Cannot copy." +msgstr "нет заметок у иÑходного объекта %s. ÐÐµÐ»ÑŒÐ·Ñ Ñкопировать." -#: builtin/notes.c:587 +#: builtin/notes.c:589 #, c-format msgid "" "The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n" "Please use 'git notes add -f -m/-F/-c/-C' instead.\n" msgstr "Опции -m/-F/-c/-C Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ «edit» уÑтарели.\nИÑпользуйте вмеÑто них «git notes add -f -m/-F/-c/-C».\n" -#: builtin/notes.c:753 +#: builtin/notes.c:685 +msgid "failed to delete ref NOTES_MERGE_PARTIAL" +msgstr "не удалоÑÑŒ удалить ÑÑылку NOTES_MERGE_PARTIAL" + +#: builtin/notes.c:687 +msgid "failed to delete ref NOTES_MERGE_REF" +msgstr "не удалоÑÑŒ удалить ÑÑылку NOTES_MERGE_REF" + +#: builtin/notes.c:689 +msgid "failed to remove 'git notes merge' worktree" +msgstr "не удалоÑÑŒ удалить рабочий каталог «git notes merge»" + +#: builtin/notes.c:709 +msgid "failed to read ref NOTES_MERGE_PARTIAL" +msgstr "не удалоÑÑŒ прочитать ÑÑылку NOTES_MERGE_PARTIAL" + +#: builtin/notes.c:711 +msgid "could not find commit from NOTES_MERGE_PARTIAL." +msgstr "не удалоÑÑŒ найти коммит из NOTES_MERGE_PARTIAL." + +#: builtin/notes.c:713 +msgid "could not parse commit from NOTES_MERGE_PARTIAL." +msgstr "не удалоÑÑŒ разобрать коммит из NOTES_MERGE_PARTIAL." + +#: builtin/notes.c:726 +msgid "failed to resolve NOTES_MERGE_REF" +msgstr "не удалоÑÑŒ разрешить NOTES_MERGE_REF" + +#: builtin/notes.c:729 +msgid "failed to finalize notes merge" +msgstr "не удалоÑÑŒ завершить Ñлиние заметок" + +#: builtin/notes.c:755 #, c-format msgid "unknown notes merge strategy %s" msgstr "неизвеÑÑ‚Ð½Ð°Ñ ÑÑ‚Ñ€Ð°Ñ‚ÐµÐ³Ð¸Ñ ÑлиÑÐ½Ð¸Ñ Ð·Ð°Ð¼ÐµÑ‚Ð¾Ðº %s" -#: builtin/notes.c:769 +#: builtin/notes.c:771 msgid "General options" msgstr "Общие опции" -#: builtin/notes.c:771 +#: builtin/notes.c:773 msgid "Merge options" msgstr "Опции ÑлиÑниÑ" -#: builtin/notes.c:773 +#: builtin/notes.c:775 msgid "" "resolve notes conflicts using the given strategy " "(manual/ours/theirs/union/cat_sort_uniq)" msgstr "разрешить конфликты заметок Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ указанной Ñтратегии (manual/ours/theirs/union/cat_sort_uniq)" -#: builtin/notes.c:775 +#: builtin/notes.c:777 msgid "Committing unmerged notes" msgstr "Коммит не Ñлитых заметок" -#: builtin/notes.c:777 +#: builtin/notes.c:779 msgid "finalize notes merge by committing unmerged notes" msgstr "завершить ÑлиÑние заметок коммитом не Ñлитых заметок" -#: builtin/notes.c:779 +#: builtin/notes.c:781 msgid "Aborting notes merge resolution" msgstr "Отмена Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ ÑлиÑÐ½Ð¸Ñ Ð·Ð°Ð¼ÐµÑ‚Ð¾Ðº" -#: builtin/notes.c:781 +#: builtin/notes.c:783 msgid "abort notes merge" msgstr "отменить ÑлиÑние заметок" -#: builtin/notes.c:792 +#: builtin/notes.c:794 msgid "cannot mix --commit, --abort or -s/--strategy" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно --commit, --abort и -s/--strategy" -#: builtin/notes.c:797 -msgid "Must specify a notes ref to merge" -msgstr "Ð’Ñ‹ должны указать ÑÑылку заметки Ð´Ð»Ñ ÑлиÑниÑ" +#: builtin/notes.c:799 +msgid "must specify a notes ref to merge" +msgstr "вы должны указать ÑÑылку заметки Ð´Ð»Ñ ÑлиÑниÑ" -#: builtin/notes.c:821 +#: builtin/notes.c:823 #, c-format -msgid "Unknown -s/--strategy: %s" -msgstr "ÐеизвеÑтный параметр Ð´Ð»Ñ -s/--strategy: %s" +msgid "unknown -s/--strategy: %s" +msgstr "неизвеÑтный параметр Ð´Ð»Ñ -s/--strategy: %s" -#: builtin/notes.c:858 +#: builtin/notes.c:860 #, c-format -msgid "A notes merge into %s is already in-progress at %s" -msgstr "СлиÑние заметок в %s уже выполнÑетÑÑ Ð½Ð° %s" +msgid "a notes merge into %s is already in-progress at %s" +msgstr "ÑлиÑние заметок в %s уже выполнÑетÑÑ Ð½Ð° %s" -#: builtin/notes.c:861 +#: builtin/notes.c:863 #, c-format -msgid "Failed to store link to current notes ref (%s)" -msgstr "Ðе удалоÑÑŒ Ñохранить Ð°Ð´Ñ€ÐµÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ ÑÑылки на заметку (%s)" +msgid "failed to store link to current notes ref (%s)" +msgstr "не удалоÑÑŒ Ñохранить Ð°Ð´Ñ€ÐµÑ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ ÑÑылки на заметку (%s)" -#: builtin/notes.c:863 +#: builtin/notes.c:865 #, c-format msgid "" "Automatic notes merge failed. Fix conflicts in %s and commit the result with" @@ -8960,222 +9608,218 @@ msgid "" "--abort'.\n" msgstr "Ðе удалоÑÑŒ автоматичеÑки Ñлить заметки. ИÑправьте конфликты в %s и закоммитьте результат Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «git notes merge --commit», или прервите процеÑÑ ÑлиÑÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «git notes merge --abort».\n" -#: builtin/notes.c:885 +#: builtin/notes.c:887 #, c-format msgid "Object %s has no note\n" msgstr "У объекта %s нет заметки\n" -#: builtin/notes.c:897 +#: builtin/notes.c:899 msgid "attempt to remove non-existent note is not an error" msgstr "попытка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÑущеÑтвующей заметки не ÑвлÑетÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹" -#: builtin/notes.c:900 +#: builtin/notes.c:902 msgid "read object names from the standard input" msgstr "прочитать имена объектов из Ñтандартного ввода" -#: builtin/notes.c:938 builtin/prune.c:105 builtin/worktree.c:127 +#: builtin/notes.c:940 builtin/prune.c:105 builtin/worktree.c:127 msgid "do not remove, show only" msgstr "не удалÑÑ‚ÑŒ, только показать ÑпиÑок" -#: builtin/notes.c:939 +#: builtin/notes.c:941 msgid "report pruned notes" msgstr "вывеÑти ÑпиÑок удаленных заметок" -#: builtin/notes.c:981 +#: builtin/notes.c:983 msgid "notes-ref" msgstr "ÑÑылка-на-заметку" -#: builtin/notes.c:982 +#: builtin/notes.c:984 msgid "use notes from <notes-ref>" msgstr "иÑпользовать заметку из <ÑÑылка-на-заметку>" -#: builtin/notes.c:1017 builtin/remote.c:1623 +#: builtin/notes.c:1019 #, c-format -msgid "Unknown subcommand: %s" -msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°: %s" +msgid "unknown subcommand: %s" +msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°: %s" -#: builtin/pack-objects.c:28 +#: builtin/pack-objects.c:29 msgid "" "git pack-objects --stdout [<options>...] [< <ref-list> | < <object-list>]" msgstr "git pack-objects --stdout [<опции>…] [< <ÑпиÑок-ÑÑылок> | < <ÑпиÑок-объектов>]" -#: builtin/pack-objects.c:29 +#: builtin/pack-objects.c:30 msgid "" "git pack-objects [<options>...] <base-name> [< <ref-list> | < <object-list>]" msgstr "git pack-objects [<опции>…] <имÑ-базы> [< <ÑпиÑок-ÑÑылок> | < <ÑпиÑок-объектов>]" -#: builtin/pack-objects.c:177 builtin/pack-objects.c:180 +#: builtin/pack-objects.c:179 builtin/pack-objects.c:182 #, c-format msgid "deflate error (%d)" msgstr "ошибка ÑÐ¶Ð°Ñ‚Ð¸Ñ (%d)" -#: builtin/pack-objects.c:766 +#: builtin/pack-objects.c:768 msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit" msgstr "отключение запиÑи битовых карт, так как карты были разбиты на чаÑти из-за pack.packSizeLimit" -#: builtin/pack-objects.c:779 +#: builtin/pack-objects.c:781 msgid "Writing objects" msgstr "ЗапиÑÑŒ объектов" -#: builtin/pack-objects.c:1037 +#: builtin/pack-objects.c:1070 msgid "disabling bitmap writing, as some objects are not being packed" msgstr "отключение запиÑи битовых карт, так как некоторые объекты не были упакованы" -#: builtin/pack-objects.c:2197 +#: builtin/pack-objects.c:2346 msgid "Compressing objects" msgstr "Сжатие объектов" -#: builtin/pack-objects.c:2611 +#: builtin/pack-objects.c:2759 #, c-format msgid "unsupported index version %s" msgstr "Ð½ÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¸Ð½Ð´ÐµÐºÑа %s" -#: builtin/pack-objects.c:2615 +#: builtin/pack-objects.c:2763 #, c-format msgid "bad index version '%s'" msgstr "Ð¿Ð»Ð¾Ñ…Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¸Ð½Ð´ÐµÐºÑа «%s»" -#: builtin/pack-objects.c:2645 +#: builtin/pack-objects.c:2793 msgid "do not show progress meter" msgstr "не выводить прогреÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ" -#: builtin/pack-objects.c:2647 +#: builtin/pack-objects.c:2795 msgid "show progress meter" msgstr "показать прогреÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ" -#: builtin/pack-objects.c:2649 +#: builtin/pack-objects.c:2797 msgid "show progress meter during object writing phase" msgstr "показать прогреÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð·Ð°Ð¿Ð¸Ñи объектов" -#: builtin/pack-objects.c:2652 +#: builtin/pack-objects.c:2800 msgid "similar to --all-progress when progress meter is shown" msgstr "похоже на --all-progress при включенном прогреÑÑе выполнениÑ" -#: builtin/pack-objects.c:2653 +#: builtin/pack-objects.c:2801 msgid "version[,offset]" msgstr "верÑиÑ[,Ñмещение]" -#: builtin/pack-objects.c:2654 +#: builtin/pack-objects.c:2802 msgid "write the pack index file in the specified idx format version" msgstr "запиÑать файл индекÑа пакета в указанной верÑии формата" -#: builtin/pack-objects.c:2657 +#: builtin/pack-objects.c:2805 msgid "maximum size of each output pack file" msgstr "макÑимальный размер каждого выходного файла пакета" -#: builtin/pack-objects.c:2659 +#: builtin/pack-objects.c:2807 msgid "ignore borrowed objects from alternate object store" msgstr "игнорировать чужие объекты, взÑтые из альтернативного хранилища объектов" -#: builtin/pack-objects.c:2661 +#: builtin/pack-objects.c:2809 msgid "ignore packed objects" msgstr "игнорировать упакованные объекты" -#: builtin/pack-objects.c:2663 +#: builtin/pack-objects.c:2811 msgid "limit pack window by objects" msgstr "ограничить окно пакета по количеÑтву объектов" -#: builtin/pack-objects.c:2665 +#: builtin/pack-objects.c:2813 msgid "limit pack window by memory in addition to object limit" msgstr "дополнительно к количеÑтву объектов ограничить окно пакета по памÑти" -#: builtin/pack-objects.c:2667 +#: builtin/pack-objects.c:2815 msgid "maximum length of delta chain allowed in the resulting pack" msgstr "макÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° цепочки дельт в результирующем пакете" -#: builtin/pack-objects.c:2669 +#: builtin/pack-objects.c:2817 msgid "reuse existing deltas" msgstr "иÑпользовать повторно ÑущеÑтвующие дельты" -#: builtin/pack-objects.c:2671 +#: builtin/pack-objects.c:2819 msgid "reuse existing objects" msgstr "иÑпользовать повторно ÑущеÑтвующие объекты" -#: builtin/pack-objects.c:2673 +#: builtin/pack-objects.c:2821 msgid "use OFS_DELTA objects" msgstr "иÑпользовать объекты OFS_DELTA" -#: builtin/pack-objects.c:2675 +#: builtin/pack-objects.c:2823 msgid "use threads when searching for best delta matches" msgstr "иÑпользовать многопоточноÑÑ‚ÑŒ при поиÑке лучших Ñовпадений дельт" -#: builtin/pack-objects.c:2677 +#: builtin/pack-objects.c:2825 msgid "do not create an empty pack output" msgstr "не Ñоздавать пуÑтые выходные пакеты" -#: builtin/pack-objects.c:2679 +#: builtin/pack-objects.c:2827 msgid "read revision arguments from standard input" msgstr "прочитать аргументы редакций из Ñтандартного ввода" -#: builtin/pack-objects.c:2681 +#: builtin/pack-objects.c:2829 msgid "limit the objects to those that are not yet packed" msgstr "ограничитьÑÑ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°Ð¼Ð¸, которые еще не упакованы" -#: builtin/pack-objects.c:2684 +#: builtin/pack-objects.c:2832 msgid "include objects reachable from any reference" msgstr "включить объекты, которые доÑтижимы по любой из ÑÑылок" -#: builtin/pack-objects.c:2687 +#: builtin/pack-objects.c:2835 msgid "include objects referred by reflog entries" msgstr "включить объекты, на которые ÑÑылаютÑÑ Ð·Ð°Ð¿Ð¸Ñи журнала ÑÑылок" -#: builtin/pack-objects.c:2690 +#: builtin/pack-objects.c:2838 msgid "include objects referred to by the index" msgstr "включить объекты, на которые ÑÑылаетÑÑ Ð¸Ð½Ð´ÐµÐºÑ" -#: builtin/pack-objects.c:2693 +#: builtin/pack-objects.c:2841 msgid "output pack to stdout" msgstr "вывеÑти пакет на Ñтандартный вывод" -#: builtin/pack-objects.c:2695 +#: builtin/pack-objects.c:2843 msgid "include tag objects that refer to objects to be packed" msgstr "включить объекты меток, которые ÑÑылаютÑÑ Ð½Ð° упаковываемые объекты" -#: builtin/pack-objects.c:2697 +#: builtin/pack-objects.c:2845 msgid "keep unreachable objects" msgstr "ÑохранÑÑ‚ÑŒ ÑÑылки на недоÑтупные объекты" -#: builtin/pack-objects.c:2699 +#: builtin/pack-objects.c:2847 msgid "pack loose unreachable objects" msgstr "паковать недоÑтижимые объекты" -#: builtin/pack-objects.c:2700 parse-options.h:142 -msgid "time" -msgstr "времÑ" - -#: builtin/pack-objects.c:2701 +#: builtin/pack-objects.c:2849 msgid "unpack unreachable objects newer than <time>" msgstr "раÑпаковать недоÑтупные объекты, которые новее, чем <времÑ>" -#: builtin/pack-objects.c:2704 +#: builtin/pack-objects.c:2852 msgid "create thin packs" msgstr "Ñоздавать тонкие пакеты" -#: builtin/pack-objects.c:2706 +#: builtin/pack-objects.c:2854 msgid "create packs suitable for shallow fetches" msgstr "Ñоздавать пакеты, подходÑщие Ð´Ð»Ñ Ñ‡Ð°Ñтичных извлечений" -#: builtin/pack-objects.c:2708 +#: builtin/pack-objects.c:2856 msgid "ignore packs that have companion .keep file" msgstr "игнорировать пакеты, Ñ€Ñдом Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ð¼Ð¸ лежит .keep файл" -#: builtin/pack-objects.c:2710 +#: builtin/pack-objects.c:2858 msgid "pack compression level" msgstr "уровень ÑÐ¶Ð°Ñ‚Ð¸Ñ Ð¿Ð°ÐºÐµÑ‚Ð°" -#: builtin/pack-objects.c:2712 +#: builtin/pack-objects.c:2860 msgid "do not hide commits by grafts" msgstr "не Ñкрывать коммиты ÑращениÑми" -#: builtin/pack-objects.c:2714 +#: builtin/pack-objects.c:2862 msgid "use a bitmap index if available to speed up counting objects" msgstr "по возможноÑти иÑпользовать Ð¸Ð½Ð´ÐµÐºÑ Ð² битовых картах, Ð´Ð»Ñ ÑƒÑÐºÐ¾Ñ€ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ñчета объектов" -#: builtin/pack-objects.c:2716 +#: builtin/pack-objects.c:2864 msgid "write a bitmap index together with the pack index" msgstr "запиÑÑŒ индекÑа в битовых картах вмеÑте Ñ Ð¸Ð½Ð´ÐµÐºÑом пакета" -#: builtin/pack-objects.c:2829 +#: builtin/pack-objects.c:2993 msgid "Counting objects" msgstr "ПодÑчет объектов" @@ -9215,69 +9859,62 @@ msgstr "удалить объекты Ñтарее чем <дата-оконча msgid "cannot prune in a precious-objects repo" msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¿Ð¾Ñ‡Ð¸Ñтить неиÑпользуемые объекты в precious-objects репозитории" -#: builtin/pull.c:72 +#: builtin/pull.c:51 builtin/pull.c:53 +#, c-format +msgid "Invalid value for %s: %s" +msgstr "Ðеправильное значение %s: %s" + +#: builtin/pull.c:73 msgid "git pull [<options>] [<repository> [<refspec>...]]" msgstr "git pull [<опции>] [<репозиторий> [<ÑпецификациÑ-ÑÑылки>…]]" -#: builtin/pull.c:120 +#: builtin/pull.c:121 msgid "Options related to merging" msgstr "Опции, ÑвÑзанные Ñо ÑлиÑнием" -#: builtin/pull.c:123 +#: builtin/pull.c:124 msgid "incorporate changes by rebasing rather than merging" msgstr "забрать Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ перебазированиÑ, а не ÑлиÑниÑ" -#: builtin/pull.c:147 builtin/revert.c:101 +#: builtin/pull.c:148 builtin/revert.c:101 msgid "allow fast-forward" msgstr "разрешить перемотку вперед" -#: builtin/pull.c:156 +#: builtin/pull.c:157 msgid "automatically stash/stash pop before and after rebase" msgstr "автоматичеÑки выполнÑÑ‚ÑŒ stash/stash pop до и поÑле перемещениÑ" -#: builtin/pull.c:172 +#: builtin/pull.c:173 msgid "Options related to fetching" msgstr "Опции, ÑвÑзанные Ñ Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸ÐµÐ¼ изменений" -#: builtin/pull.c:194 +#: builtin/pull.c:195 msgid "number of submodules pulled in parallel" msgstr "количеÑтво подмодулей, которые будут получены парралельно" -#: builtin/pull.c:283 +#: builtin/pull.c:284 #, c-format msgid "Invalid value for pull.ff: %s" msgstr "Ðеправильное значение Ð´Ð»Ñ pull.ff: %s" -#: builtin/pull.c:379 git-sh-setup.sh:226 -msgid "Cannot pull with rebase: You have unstaged changes." -msgstr "Ðе удалоÑÑŒ получить Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼: У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ непроиндекÑированные изменениÑ." - -#: builtin/pull.c:385 git-sh-setup.sh:252 -msgid "Additionally, your index contains uncommitted changes." -msgstr "К тому же, в вашем индекÑе еÑÑ‚ÑŒ незакоммиченные изменениÑ." - -#: builtin/pull.c:387 git-sh-setup.sh:245 -msgid "Cannot pull with rebase: Your index contains uncommitted changes." -msgstr "Ðе удалоÑÑŒ получить Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼: Ð’ вашем индекÑе еÑÑ‚ÑŒ незакоммиченные изменениÑ." - -#: builtin/pull.c:463 +#: builtin/pull.c:397 msgid "" "There is no candidate for rebasing against among the refs that you just " "fetched." msgstr "Ðет претендентов Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ñреди ÑÑылок, которые вы только что получили." -#: builtin/pull.c:465 +#: builtin/pull.c:399 msgid "" "There are no candidates for merging among the refs that you just fetched." msgstr "Ðет претендентов Ð´Ð»Ñ ÑлиÑÐ½Ð¸Ñ Ñреди ÑÑылок, которые вы только что получили." -#: builtin/pull.c:466 +#: builtin/pull.c:400 msgid "" "Generally this means that you provided a wildcard refspec which had no\n" "matches on the remote end." msgstr "Обычно Ñто означает, что вы передали Ñпецификацию ÑÑылки Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ шаблона и Ñтот шаблон ни Ñ Ñ‡ÐµÐ¼ не Ñовпал на внешнем репозитории." -#: builtin/pull.c:469 +#: builtin/pull.c:403 #, c-format msgid "" "You asked to pull from the remote '%s', but did not specify\n" @@ -9285,61 +9922,69 @@ msgid "" "for your current branch, you must specify a branch on the command line." msgstr "Ð’Ñ‹ попроÑили получить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñо внешнего Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Â«%s», но не указали ветку. Так как Ñто не репозиторий по умолчанию Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ текущей ветки, вы должны указать ветку в командной Ñтроке." -#: builtin/pull.c:474 git-parse-remote.sh:73 +#: builtin/pull.c:408 git-parse-remote.sh:73 msgid "You are not currently on a branch." msgstr "Ð’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð¸ на одной из веток." -#: builtin/pull.c:476 builtin/pull.c:491 git-parse-remote.sh:79 +#: builtin/pull.c:410 builtin/pull.c:425 git-parse-remote.sh:79 msgid "Please specify which branch you want to rebase against." msgstr "ПожалуйÑта, укажите на какую ветку вы хотите перемеÑтить изменениÑ." -#: builtin/pull.c:478 builtin/pull.c:493 git-parse-remote.sh:82 +#: builtin/pull.c:412 builtin/pull.c:427 git-parse-remote.sh:82 msgid "Please specify which branch you want to merge with." msgstr "ПожалуйÑта, укажите Ñ ÐºÐ°ÐºÐ¾Ð¹ веткой вы хотите Ñлить изменениÑ." -#: builtin/pull.c:479 builtin/pull.c:494 +#: builtin/pull.c:413 builtin/pull.c:428 msgid "See git-pull(1) for details." msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации, Ñмотрите git-pull(1)." -#: builtin/pull.c:481 builtin/pull.c:487 builtin/pull.c:496 +#: builtin/pull.c:415 builtin/pull.c:421 builtin/pull.c:430 #: git-parse-remote.sh:64 msgid "<remote>" msgstr "<внешний-репозиторий>" -#: builtin/pull.c:481 builtin/pull.c:496 builtin/pull.c:501 git-rebase.sh:451 +#: builtin/pull.c:415 builtin/pull.c:430 builtin/pull.c:435 git-rebase.sh:451 #: git-parse-remote.sh:65 msgid "<branch>" msgstr "<ветка>" -#: builtin/pull.c:489 git-parse-remote.sh:75 +#: builtin/pull.c:423 git-parse-remote.sh:75 msgid "There is no tracking information for the current branch." msgstr "У текущей ветки нет информации об отÑлеживании." -#: builtin/pull.c:498 git-parse-remote.sh:95 +#: builtin/pull.c:432 git-parse-remote.sh:95 msgid "" "If you wish to set tracking information for this branch you can do so with:" msgstr "ЕÑли вы хотите указать информацию о отÑлеживаемой ветке, выполните:" -#: builtin/pull.c:503 +#: builtin/pull.c:437 #, c-format msgid "" "Your configuration specifies to merge with the ref '%s'\n" "from the remote, but no such ref was fetched." msgstr "Ваша ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÐµÑ‚, что нужно Ñлить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñо ÑÑылкой\n«%s» из внешнего репозиториÑ, но Ñ‚Ð°ÐºÐ°Ñ ÑÑылка не была получена." -#: builtin/pull.c:820 +#: builtin/pull.c:754 msgid "ignoring --verify-signatures for rebase" msgstr "игнорирование --verify-signatures при перемещении" -#: builtin/pull.c:867 +#: builtin/pull.c:801 msgid "--[no-]autostash option is only valid with --rebase." msgstr "--[no-]autostash можно иÑпользовать только вмеÑте Ñ --rebase." -#: builtin/pull.c:875 +#: builtin/pull.c:809 msgid "Updating an unborn branch with changes added to the index." msgstr "Обновление еще не начавшейÑÑ Ð²ÐµÑ‚ÐºÐ¸ Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñми, добавленными в индекÑ." -#: builtin/pull.c:903 +#: builtin/pull.c:812 +msgid "pull with rebase" +msgstr "получение Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼" + +#: builtin/pull.c:813 +msgid "please commit or stash them." +msgstr "Ñделайте коммит или ÑпрÑчьте их." + +#: builtin/pull.c:838 #, c-format msgid "" "fetch updated the current branch head.\n" @@ -9347,7 +9992,7 @@ msgid "" "commit %s." msgstr "извлечение обновило указатель на вашу текущую ветку.\nперемотка вашего рабочего каталога\nÑ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð° %s." -#: builtin/pull.c:908 +#: builtin/pull.c:843 #, c-format msgid "" "Cannot fast-forward your working tree.\n" @@ -9358,11 +10003,11 @@ msgid "" "to recover." msgstr "Ðе удалоÑÑŒ перемотать вперёд Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² вашем рабочем каталоге.\nПоÑле того, как вы убедитеÑÑŒ, что вы Ñохранили вÑÑ‘ необходимое из вывода\n$ git diff %s\n, запуÑтите\n$ git reset --hard\nÐ´Ð»Ñ Ð²Ð¾ÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ñходного ÑоÑтоÑниÑ." -#: builtin/pull.c:923 +#: builtin/pull.c:858 msgid "Cannot merge multiple branches into empty head." msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ñлить неÑколько веток в пуÑтой указатель на ветку." -#: builtin/pull.c:927 +#: builtin/pull.c:862 msgid "Cannot rebase onto multiple branches." msgstr "Ðевозможно перемеÑтить над неÑколькими ветками." @@ -9679,15 +10324,44 @@ msgstr "пропуÑтить применение фильтра чаÑтичнРmsgid "debug unpack-trees" msgstr "отладка unpack-trees" -#: builtin/receive-pack.c:25 +#: builtin/receive-pack.c:26 msgid "git receive-pack <git-dir>" msgstr "git receive-pack <каталог-git>" -#: builtin/receive-pack.c:1843 +#: builtin/receive-pack.c:793 +msgid "" +"By default, updating the current branch in a non-bare repository\n" +"is denied, because it will make the index and work tree inconsistent\n" +"with what you pushed, and will require 'git reset --hard' to match\n" +"the work tree to HEAD.\n" +"\n" +"You can set 'receive.denyCurrentBranch' configuration variable to\n" +"'ignore' or 'warn' in the remote repository to allow pushing into\n" +"its current branch; however, this is not recommended unless you\n" +"arranged to update its work tree to match what you pushed in some\n" +"other way.\n" +"\n" +"To squelch this message and still keep the default behaviour, set\n" +"'receive.denyCurrentBranch' configuration variable to 'refuse'." +msgstr "По умолчанию, обновлÑÑ‚ÑŒ текущую ветку в репозитории Ñ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ¹\nкопией (не голом) запрещено, так как Ñто Ñделает ÑоÑтоÑние индекÑа\nи рабочего каталога противоречивым, и вам прийдетÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ\n«git reset --hard», чтобы ÑоÑтоÑние рабочего каталога Ñнова\nÑоответÑтвовало HEAD.\n\nÐ’Ñ‹ можете уÑтановить значение опции «receive.denyCurrentBranch»\nв «ignore» или «warn» во внешнем репозитории, чтобы разрешить\nотправку в его текущую ветку; но Ñто не рекомендуетÑÑ, еÑли только\nвы не намерены обновить его рабочий каталог ÑпоÑобом подобным\nвышеопиÑанному.\n\nЧтобы пропуÑтить Ñто Ñообщение и вÑе равно оÑтавить поведение\nпо умолчанию, уÑтановите значение опции «receive.denyCurrentBranch»\nв «refuse»." + +#: builtin/receive-pack.c:813 +msgid "" +"By default, deleting the current branch is denied, because the next\n" +"'git clone' won't result in any file checked out, causing confusion.\n" +"\n" +"You can set 'receive.denyDeleteCurrent' configuration variable to\n" +"'warn' or 'ignore' in the remote repository to allow deleting the\n" +"current branch, with or without a warning message.\n" +"\n" +"To squelch this message, you can set it to 'refuse'." +msgstr "По умолчанию, удаление текущей ветки запрещено, так как поÑледующий\n«git clone» не Ñможет получить никаких файлов, что приведет к путанице.\n\nÐ’Ñ‹ можете уÑтановить значение опции «receive.denyDeleteCurrent»\nв «warn» или «ignore», во внешнем репозитории, чтобы разрешить\nудаление текущей ветки Ñ Ð¸Ð»Ð¸ без предупреждающего ÑообщениÑ.\n\nЧтобы пропуÑтить Ñто Ñообщение, вы можете уÑтановить значение опции\nв «refuse»." + +#: builtin/receive-pack.c:1883 msgid "quiet" msgstr "тихий режим" -#: builtin/receive-pack.c:1857 +#: builtin/receive-pack.c:1897 msgid "You must specify a directory." msgstr "Ð’Ñ‹ должны указать каталог." @@ -10006,7 +10680,7 @@ msgstr "* внешний репозиторий %s" msgid " Fetch URL: %s" msgstr " URL Ð´Ð»Ñ Ð¸Ð·Ð²Ð»ÐµÑ‡ÐµÐ½Ð¸Ñ: %s" -#: builtin/remote.c:1143 builtin/remote.c:1156 builtin/remote.c:1296 +#: builtin/remote.c:1143 builtin/remote.c:1156 builtin/remote.c:1295 msgid "(no URL)" msgstr "(нет URL)" @@ -10044,7 +10718,7 @@ msgstr[1] " Внешние ветки:%s" msgstr[2] " Внешние ветки:%s" msgstr[3] " Внешние ветки:%s" -#: builtin/remote.c:1179 builtin/remote.c:1206 +#: builtin/remote.c:1179 builtin/remote.c:1205 msgid " (status not queried)" msgstr " (ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ðµ запрашивалÑÑ)" @@ -10060,7 +10734,7 @@ msgstr[3] " Локальные ветки, наÑтроенные Ð´Ð»Ñ Â«git msgid " Local refs will be mirrored by 'git push'" msgstr " Локальные ÑÑылки, зеркалируемые Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «git push»" -#: builtin/remote.c:1203 +#: builtin/remote.c:1202 #, c-format msgid " Local ref configured for 'git push'%s:" msgid_plural " Local refs configured for 'git push'%s:" @@ -10069,131 +10743,136 @@ msgstr[1] " Локальные ÑÑылки, наÑтроенные Ð´Ð»Ñ Â«gi msgstr[2] " Локальные ÑÑылки, наÑтроенные Ð´Ð»Ñ Â«git push»%s:" msgstr[3] " Локальные ÑÑылки, наÑтроенные Ð´Ð»Ñ Â«git push»%s:" -#: builtin/remote.c:1224 +#: builtin/remote.c:1223 msgid "set refs/remotes/<name>/HEAD according to remote" msgstr "уÑтановить refs/remotes/<имÑ>/HEAD в завиÑимоÑти от внешнего репозиториÑ" -#: builtin/remote.c:1226 +#: builtin/remote.c:1225 msgid "delete refs/remotes/<name>/HEAD" msgstr "удалить refs/remotes/<имÑ>/HEAD" -#: builtin/remote.c:1241 +#: builtin/remote.c:1240 msgid "Cannot determine remote HEAD" msgstr "Ðе удалоÑÑŒ определить внешний HEAD" -#: builtin/remote.c:1243 +#: builtin/remote.c:1242 msgid "Multiple remote HEAD branches. Please choose one explicitly with:" msgstr "ÐеÑколько внешних HEAD веток. Укажите Ñвно одну из них:" -#: builtin/remote.c:1253 +#: builtin/remote.c:1252 #, c-format msgid "Could not delete %s" msgstr "Ðе удалоÑÑŒ удалить %s" -#: builtin/remote.c:1261 +#: builtin/remote.c:1260 #, c-format msgid "Not a valid ref: %s" msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ ÑÑылка: %s" -#: builtin/remote.c:1263 +#: builtin/remote.c:1262 #, c-format msgid "Could not setup %s" msgstr "Ðе удалоÑÑŒ наÑтроить %s" -#: builtin/remote.c:1281 +#: builtin/remote.c:1280 #, c-format msgid " %s will become dangling!" msgstr " %s будет виÑÑщей веткой!" -#: builtin/remote.c:1282 +#: builtin/remote.c:1281 #, c-format msgid " %s has become dangling!" msgstr " %s Ñтала виÑÑщей веткой!" -#: builtin/remote.c:1292 +#: builtin/remote.c:1291 #, c-format msgid "Pruning %s" msgstr "ОчиÑтка %s" -#: builtin/remote.c:1293 +#: builtin/remote.c:1292 #, c-format msgid "URL: %s" msgstr "URL: %s" -#: builtin/remote.c:1309 +#: builtin/remote.c:1308 #, c-format msgid " * [would prune] %s" msgstr " * [будет удалена] %s" -#: builtin/remote.c:1312 +#: builtin/remote.c:1311 #, c-format msgid " * [pruned] %s" msgstr " * [удалена] %s" -#: builtin/remote.c:1357 +#: builtin/remote.c:1356 msgid "prune remotes after fetching" msgstr "почиÑтить внешние репозитории поÑле извлечениÑ" -#: builtin/remote.c:1420 builtin/remote.c:1474 builtin/remote.c:1542 +#: builtin/remote.c:1419 builtin/remote.c:1473 builtin/remote.c:1541 #, c-format msgid "No such remote '%s'" msgstr "Ðет такого внешнего Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Â«%s»" -#: builtin/remote.c:1436 +#: builtin/remote.c:1435 msgid "add branch" msgstr "добавить ветку" -#: builtin/remote.c:1443 +#: builtin/remote.c:1442 msgid "no remote specified" msgstr "не указан внешний репозиторий" -#: builtin/remote.c:1460 +#: builtin/remote.c:1459 msgid "query push URLs rather than fetch URLs" msgstr "запроÑить URL отправки, вмеÑто URL извлечениÑ" -#: builtin/remote.c:1462 +#: builtin/remote.c:1461 msgid "return all URLs" msgstr "вернуть вÑе URL" -#: builtin/remote.c:1490 +#: builtin/remote.c:1489 #, c-format msgid "no URLs configured for remote '%s'" msgstr "URL не наÑтроены Ð´Ð»Ñ Ð²Ð½ÐµÑˆÐ½ÐµÐ³Ð¾ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Â«%s»" -#: builtin/remote.c:1516 +#: builtin/remote.c:1515 msgid "manipulate push URLs" msgstr "управление URL отправки" -#: builtin/remote.c:1518 +#: builtin/remote.c:1517 msgid "add URL" msgstr "добавить URL" -#: builtin/remote.c:1520 +#: builtin/remote.c:1519 msgid "delete URLs" msgstr "удалить URL" -#: builtin/remote.c:1527 +#: builtin/remote.c:1526 msgid "--add --delete doesn't make sense" msgstr "--add Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно Ñ --delete" -#: builtin/remote.c:1568 +#: builtin/remote.c:1567 #, c-format msgid "Invalid old URL pattern: %s" msgstr "Ðеправильный шаблон Ñтарого URL: %s" -#: builtin/remote.c:1576 +#: builtin/remote.c:1575 #, c-format msgid "No such URL found: %s" msgstr "Ðе найдены ÑÐ¾Ð²Ð¿Ð°Ð´ÐµÐ½Ð¸Ñ URL: %s" -#: builtin/remote.c:1578 +#: builtin/remote.c:1577 msgid "Will not delete all non-push URLs" msgstr "ÐÐµÐ»ÑŒÐ·Ñ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ вÑе URL не-отправки" -#: builtin/remote.c:1592 +#: builtin/remote.c:1591 msgid "be verbose; must be placed before a subcommand" msgstr "быть многоÑловнее; должно ÑтоÑÑ‚ÑŒ перед подкомандой" +#: builtin/remote.c:1622 +#, c-format +msgid "Unknown subcommand: %s" +msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°: %s" + #: builtin/repack.c:17 msgid "git repack [<options>]" msgstr "git repack [<опции>]" @@ -10377,8 +11056,8 @@ msgid "" msgstr "git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<коммит>]" #: builtin/reset.c:27 -msgid "git reset [-q] <tree-ish> [--] <paths>..." -msgstr "git reset [-q] <указатель-дерева> [--] <пути>…" +msgid "git reset [-q] [<tree-ish>] [--] <paths>..." +msgstr "git reset [-q] [<указатель-дерева>] [--] <пути>…" #: builtin/reset.c:28 msgid "git reset --patch [<tree-ish>] [--] [<paths>...]" @@ -10496,27 +11175,27 @@ msgstr "Ðе удалоÑÑŒ ÑброÑить файл индекÑа на ред msgid "Could not write new index file." msgstr "Ðе удалоÑÑŒ запиÑать новый файл индекÑа." -#: builtin/rev-list.c:362 +#: builtin/rev-list.c:354 msgid "rev-list does not support display of notes" msgstr "rev-list не поддерживает отображение заметок" -#: builtin/rev-parse.c:358 +#: builtin/rev-parse.c:386 msgid "git rev-parse --parseopt [<options>] -- [<args>...]" msgstr "git rev-parse --parseopt [<опции>] -- [<аргументы>…]" -#: builtin/rev-parse.c:363 +#: builtin/rev-parse.c:391 msgid "keep the `--` passed as an arg" msgstr "передавать далее «--» как аргумент" -#: builtin/rev-parse.c:365 +#: builtin/rev-parse.c:393 msgid "stop parsing after the first non-option argument" msgstr "оÑтановить разбор поÑле первого аргумента не ÑвлÑющегоÑÑ Ð¾Ð¿Ñ†Ð¸ÐµÐ¹" -#: builtin/rev-parse.c:368 +#: builtin/rev-parse.c:396 msgid "output in stuck long form" msgstr "выводить аргументы в длинном формате" -#: builtin/rev-parse.c:499 +#: builtin/rev-parse.c:527 msgid "" "git rev-parse --parseopt [<options>] -- [<args>...]\n" " or: git rev-parse --sq-quote [<arg>...]\n" @@ -10602,7 +11281,7 @@ msgstr "оÑтавить избыточные, пуÑтые коммиты" msgid "revert failed" msgstr "Ñбой Ð¾Ð±Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ коммита" -#: builtin/revert.c:207 +#: builtin/revert.c:205 msgid "cherry-pick failed" msgstr "Ñбой при копировании коммита" @@ -10756,70 +11435,131 @@ msgstr "git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-ord msgid "git show-branch (-g | --reflog)[=<n>[,<base>]] [--list] [<ref>]" msgstr "git show-branch (-g | --reflog)[=<n>[,<база>]] [--list] [<ÑÑылка>]" -#: builtin/show-branch.c:640 +#: builtin/show-branch.c:375 +#, c-format +msgid "ignoring %s; cannot handle more than %d ref" +msgid_plural "ignoring %s; cannot handle more than %d refs" +msgstr[0] "игнорирование %s; невозможно обработать больше %d ÑÑылки" +msgstr[1] "игнорирование %s; невозможно обработать больше %d ÑÑылок" +msgstr[2] "игнорирование %s; невозможно обработать больше %d ÑÑылок" +msgstr[3] "игнорирование %s; невозможно обработать больше %d ÑÑылки" + +#: builtin/show-branch.c:541 +#, c-format +msgid "no matching refs with %s" +msgstr "нет Ñовпадающих запиÑей Ñ %s" + +#: builtin/show-branch.c:639 msgid "show remote-tracking and local branches" msgstr "показать ÑпиÑок и отÑлеживаемых внешних и локальных веток" -#: builtin/show-branch.c:642 +#: builtin/show-branch.c:641 msgid "show remote-tracking branches" msgstr "показать ÑпиÑок отÑлеживаемых внешних веток" -#: builtin/show-branch.c:644 +#: builtin/show-branch.c:643 msgid "color '*!+-' corresponding to the branch" msgstr "окрашивать «*!+-» в ÑоответÑтвии Ñ Ð²ÐµÑ‚ÐºÐ¾Ð¹" -#: builtin/show-branch.c:646 +#: builtin/show-branch.c:645 msgid "show <n> more commits after the common ancestor" msgstr "показать <n> коммитов поÑле общего предка" -#: builtin/show-branch.c:648 +#: builtin/show-branch.c:647 msgid "synonym to more=-1" msgstr "Ñиноним Ð´Ð»Ñ more=-1" -#: builtin/show-branch.c:649 +#: builtin/show-branch.c:648 msgid "suppress naming strings" msgstr "не выводить именованные Ñтроки" -#: builtin/show-branch.c:651 +#: builtin/show-branch.c:650 msgid "include the current branch" msgstr "включить в вывод текущую ветку" -#: builtin/show-branch.c:653 +#: builtin/show-branch.c:652 msgid "name commits with their object names" msgstr "именовать коммиты их именами объектов" -#: builtin/show-branch.c:655 +#: builtin/show-branch.c:654 msgid "show possible merge bases" msgstr "вывеÑти возможные базы ÑлиÑниÑ" -#: builtin/show-branch.c:657 +#: builtin/show-branch.c:656 msgid "show refs unreachable from any other ref" msgstr "вывеÑти ÑÑылки, недоÑтупные из любых других ÑÑылок" -#: builtin/show-branch.c:659 +#: builtin/show-branch.c:658 msgid "show commits in topological order" msgstr "вывеÑти коммиты в топологичеÑком порÑдке" -#: builtin/show-branch.c:662 +#: builtin/show-branch.c:661 msgid "show only commits not on the first branch" msgstr "вывеÑти только коммиты, отÑутÑтвующие в первой ветке" -#: builtin/show-branch.c:664 +#: builtin/show-branch.c:663 msgid "show merges reachable from only one tip" msgstr "вывеÑти ÑлиÑниÑ, доÑтижимые только из одной из верхушек" -#: builtin/show-branch.c:666 +#: builtin/show-branch.c:665 msgid "topologically sort, maintaining date order where possible" msgstr "топологичеÑÐºÐ°Ñ Ñортировка, Ñ Ñохранением порÑдка дат, еÑли возможно" -#: builtin/show-branch.c:669 +#: builtin/show-branch.c:668 msgid "<n>[,<base>]" msgstr "<n>[,<база>]" -#: builtin/show-branch.c:670 +#: builtin/show-branch.c:669 msgid "show <n> most recent ref-log entries starting at base" msgstr "показать <n> поÑледних запиÑей в журнале ÑÑылок, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ð±Ð°Ð·Ñ‹" +#: builtin/show-branch.c:703 +msgid "" +"--reflog is incompatible with --all, --remotes, --independent or --merge-" +"base" +msgstr "--reflog неÑовмеÑтимо Ñ --all, --remotes, --independent и --merge-base" + +#: builtin/show-branch.c:727 +msgid "no branches given, and HEAD is not valid" +msgstr "не указаны ветки и HEAD не дейÑтвительный" + +#: builtin/show-branch.c:730 +msgid "--reflog option needs one branch name" +msgstr "параметр --reflog требует ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ одной ветки" + +#: builtin/show-branch.c:733 +#, c-format +msgid "only %d entry can be shown at one time." +msgid_plural "only %d entries can be shown at one time." +msgstr[0] "только %d запиÑÑŒ может быть показана одновременно." +msgstr[1] "только %d запиÑи могут быть показаны одновременно." +msgstr[2] "только %d запиÑей могут быть показаны одновременно." +msgstr[3] "только %d запиÑи могут быть показаны одновременно." + +#: builtin/show-branch.c:737 +#, c-format +msgid "no such ref %s" +msgstr "нет такой ÑÑылки %s" + +#: builtin/show-branch.c:829 +#, c-format +msgid "cannot handle more than %d rev." +msgid_plural "cannot handle more than %d revs." +msgstr[0] "невозможно обработать больше %d редакции." +msgstr[1] "невозможно обработать больше %d редакций." +msgstr[2] "невозможно обработать больше %d редакций." +msgstr[3] "невозможно обработать больше %d редакции." + +#: builtin/show-branch.c:833 +#, c-format +msgid "'%s' is not a valid ref." +msgstr "«%s» не ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимой ÑÑылкой на коммит." + +#: builtin/show-branch.c:836 +#, c-format +msgid "cannot find commit %s (%s)" +msgstr "не удалоÑÑŒ найти коммит %s (%s)" + #: builtin/show-ref.c:10 msgid "" "git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | " @@ -10878,12 +11618,12 @@ msgstr "пропуÑтить и удалить вÑе Ñтроки, начина msgid "prepend comment character and space to each line" msgstr "добавить перед каждой Ñтрокой Ñимвол ÐºÐ¾Ð¼Ð¼ÐµÑ‚Ð°Ñ€Ð¸Ñ Ð¸ пробел" -#: builtin/submodule--helper.c:24 builtin/submodule--helper.c:923 +#: builtin/submodule--helper.c:24 builtin/submodule--helper.c:1046 #, c-format msgid "No such ref: %s" msgstr "Ðет такой ÑÑылки: %s" -#: builtin/submodule--helper.c:31 builtin/submodule--helper.c:932 +#: builtin/submodule--helper.c:31 builtin/submodule--helper.c:1055 #, c-format msgid "Expecting a full ref name, got %s" msgstr "ОжидалоÑÑŒ полное Ð¸Ð¼Ñ ÑÑылки, а получено %s" @@ -10893,181 +11633,200 @@ msgstr "ОжидалоÑÑŒ полное Ð¸Ð¼Ñ ÑÑылки, а получено msgid "cannot strip one component off url '%s'" msgstr "не удалоÑÑŒ обрезать один компонент url «%s»" -#: builtin/submodule--helper.c:278 builtin/submodule--helper.c:403 -#: builtin/submodule--helper.c:483 +#: builtin/submodule--helper.c:282 builtin/submodule--helper.c:408 +#: builtin/submodule--helper.c:590 msgid "alternative anchor for relative paths" msgstr "альтернативный Ñимвол Ð´Ð»Ñ Ð¾Ñ‚Ð½Ð¾Ñительных путей" -#: builtin/submodule--helper.c:283 +#: builtin/submodule--helper.c:287 msgid "git submodule--helper list [--prefix=<path>] [<path>...]" msgstr "git submodule--helper list [--prefix=<путь>] [<путь>…]" -#: builtin/submodule--helper.c:324 builtin/submodule--helper.c:338 +#: builtin/submodule--helper.c:329 builtin/submodule--helper.c:343 #, c-format msgid "No url found for submodule path '%s' in .gitmodules" msgstr "URL Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾ пути «%s» не найден в .gitmodules" -#: builtin/submodule--helper.c:364 +#: builtin/submodule--helper.c:369 #, c-format msgid "Failed to register url for submodule path '%s'" msgstr "Сбой региÑтрации адреÑа Ð´Ð»Ñ Ð¿ÑƒÑ‚Ð¸ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»" -#: builtin/submodule--helper.c:368 +#: builtin/submodule--helper.c:373 #, c-format msgid "Submodule '%s' (%s) registered for path '%s'\n" msgstr "Подмодуль «%s» (%s) зарегиÑтрирован по пути «%s»\n" -#: builtin/submodule--helper.c:378 +#: builtin/submodule--helper.c:383 #, c-format msgid "warning: command update mode suggested for submodule '%s'\n" msgstr "внимание: предполагаемый режим Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»\n" -#: builtin/submodule--helper.c:385 +#: builtin/submodule--helper.c:390 #, c-format msgid "Failed to register update mode for submodule path '%s'" msgstr "Сбой региÑтрации режима Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿ÑƒÑ‚Ð¸ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»" -#: builtin/submodule--helper.c:404 +#: builtin/submodule--helper.c:409 msgid "Suppress output for initializing a submodule" msgstr "Ðе выводить информацию о инициализации подмодулÑ" -#: builtin/submodule--helper.c:409 +#: builtin/submodule--helper.c:414 msgid "git submodule--helper init [<path>]" msgstr "git submodule--helper init [<путь>]" -#: builtin/submodule--helper.c:430 +#: builtin/submodule--helper.c:435 msgid "git submodule--helper name <path>" msgstr "git submodule--helper name <путь>" -#: builtin/submodule--helper.c:436 +#: builtin/submodule--helper.c:441 #, c-format msgid "no submodule mapping found in .gitmodules for path '%s'" msgstr "не найдено ÑоответÑтвие подмодулей в .gitmodules Ð´Ð»Ñ Ð¿ÑƒÑ‚Ð¸ «%s»" -#: builtin/submodule--helper.c:486 +#: builtin/submodule--helper.c:524 builtin/submodule--helper.c:527 +#, c-format +msgid "submodule '%s' cannot add alternate: %s" +msgstr "подмодулю «%s» не удалоÑÑŒ добавить альтернативу: %s" + +#: builtin/submodule--helper.c:563 +#, c-format +msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized" +msgstr "Значение «%s» Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° submodule.alternateErrorStrategy не рапознано" + +#: builtin/submodule--helper.c:570 +#, c-format +msgid "Value '%s' for submodule.alternateLocation is not recognized" +msgstr "Значение «%s» Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° submodule.alternateLocation не рапознано" + +#: builtin/submodule--helper.c:593 msgid "where the new submodule will be cloned to" msgstr "куда должен быть Ñклонирован новый подмодуль" -#: builtin/submodule--helper.c:489 +#: builtin/submodule--helper.c:596 msgid "name of the new submodule" msgstr "Ð¸Ð¼Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ подмодулÑ" -#: builtin/submodule--helper.c:492 +#: builtin/submodule--helper.c:599 msgid "url where to clone the submodule from" msgstr "url откуда должен был Ñклонирован новый подмодуль" -#: builtin/submodule--helper.c:498 +#: builtin/submodule--helper.c:605 msgid "depth for shallow clones" msgstr "глубина Ð´Ð»Ñ Ñ‡Ð°Ñтичного клона" -#: builtin/submodule--helper.c:504 +#: builtin/submodule--helper.c:608 builtin/submodule--helper.c:964 +msgid "force cloning progress" +msgstr "принудительно выводить прогреÑÑ ÐºÐ»Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ" + +#: builtin/submodule--helper.c:613 msgid "" "git submodule--helper clone [--prefix=<path>] [--quiet] [--reference " "<repository>] [--name <name>] [--depth <depth>] --url <url> --path <path>" msgstr "git submodule--helper clone [--prefix=<путь>] [--quiet] [--reference <репозиторий>] [--name <имÑ>] [--depth <глубина>] --url <url> --path <путь>" -#: builtin/submodule--helper.c:529 builtin/submodule--helper.c:535 +#: builtin/submodule--helper.c:638 builtin/submodule--helper.c:648 #, c-format msgid "could not create directory '%s'" msgstr "не удалоÑÑŒ Ñоздать каталог «%s»" -#: builtin/submodule--helper.c:531 +#: builtin/submodule--helper.c:644 #, c-format msgid "clone of '%s' into submodule path '%s' failed" msgstr "не удалоÑÑŒ клонировать «%s» в подмодуль по пути «%s»" -#: builtin/submodule--helper.c:547 +#: builtin/submodule--helper.c:660 #, c-format msgid "cannot open file '%s'" msgstr "не удалоÑÑŒ открыть файл «%s»" -#: builtin/submodule--helper.c:552 +#: builtin/submodule--helper.c:665 #, c-format msgid "could not close file %s" msgstr "не удалоÑÑŒ закрыть файл %s" -#: builtin/submodule--helper.c:559 +#: builtin/submodule--helper.c:672 #, c-format msgid "could not get submodule directory for '%s'" msgstr "не удалоÑÑŒ получить каталог Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»" -#: builtin/submodule--helper.c:611 +#: builtin/submodule--helper.c:726 #, c-format msgid "Submodule path '%s' not initialized" msgstr "Подмодуль по пути «%s» не инициализирован" -#: builtin/submodule--helper.c:615 +#: builtin/submodule--helper.c:730 msgid "Maybe you want to use 'update --init'?" msgstr "Возможно, вы хотели иÑпользовать «update --init»?" -#: builtin/submodule--helper.c:641 +#: builtin/submodule--helper.c:756 #, c-format msgid "Skipping unmerged submodule %s" msgstr "ПропуÑк не Ñлитого Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ %s" -#: builtin/submodule--helper.c:662 +#: builtin/submodule--helper.c:777 #, c-format msgid "Skipping submodule '%s'" msgstr "ПропуÑк Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«%s»" -#: builtin/submodule--helper.c:792 +#: builtin/submodule--helper.c:913 #, c-format msgid "Failed to clone '%s'. Retry scheduled" msgstr "Ðе удалоÑÑŒ клонировать «%s». Запланирована Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ°" -#: builtin/submodule--helper.c:803 +#: builtin/submodule--helper.c:924 #, c-format msgid "Failed to clone '%s' a second time, aborting" msgstr "Ðе удалоÑÑŒ клонировать «%s» Ñо второй попытки, отмена" -#: builtin/submodule--helper.c:824 +#: builtin/submodule--helper.c:945 msgid "path into the working tree" msgstr "путь в рабочем каталоге" -#: builtin/submodule--helper.c:827 +#: builtin/submodule--helper.c:948 msgid "path into the working tree, across nested submodule boundaries" msgstr "путь в рабочем каталоге, в пределах границ подмодулÑ" -#: builtin/submodule--helper.c:831 +#: builtin/submodule--helper.c:952 msgid "rebase, merge, checkout or none" msgstr "rebase, merge, checkout или none" -#: builtin/submodule--helper.c:835 +#: builtin/submodule--helper.c:956 msgid "Create a shallow clone truncated to the specified number of revisions" msgstr "Создать чаÑтичный клон, ограниченный указанным количеÑтвом редакций" -#: builtin/submodule--helper.c:838 +#: builtin/submodule--helper.c:959 msgid "parallel jobs" msgstr "параллельные задачи" -#: builtin/submodule--helper.c:840 +#: builtin/submodule--helper.c:961 msgid "whether the initial clone should follow the shallow recommendation" msgstr "должен ли изначальный процеÑÑ ÐºÐ»Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñледовать рекомендации о чаÑтичноÑти" -#: builtin/submodule--helper.c:841 +#: builtin/submodule--helper.c:962 msgid "don't print cloning progress" msgstr "вы выводить прогреÑÑ ÐºÐ»Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ" -#: builtin/submodule--helper.c:846 +#: builtin/submodule--helper.c:969 msgid "git submodule--helper update_clone [--prefix=<path>] [<path>...]" msgstr "git submodule--helper update_clone [--prefix=<путь>] [<путь>…]" -#: builtin/submodule--helper.c:856 +#: builtin/submodule--helper.c:979 msgid "bad value for update parameter" msgstr "плохое значение Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° update" -#: builtin/submodule--helper.c:927 +#: builtin/submodule--helper.c:1050 #, c-format msgid "" "Submodule (%s) branch configured to inherit branch from superproject, but " "the superproject is not on any branch" msgstr "Ветка Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ (%s) наÑтроена на наÑледование ветки из родительÑкого проекта, но он не находитÑÑ Ð½Ð¸ на одной ветке" -#: builtin/submodule--helper.c:977 +#: builtin/submodule--helper.c:1100 msgid "submodule--helper subcommand must be called with a subcommand" msgstr "подкоманда submodule--helper должна вызыватьÑÑ Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸ÐµÐ¼ подкоманды" -#: builtin/submodule--helper.c:984 +#: builtin/submodule--helper.c:1107 #, c-format msgid "'%s' is not a valid submodule--helper subcommand" msgstr "«%s» не ÑвлÑетÑÑ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹ submodule--helper" @@ -11289,7 +12048,7 @@ msgstr "метка «%s» уже ÑущеÑтвует" msgid "Updated tag '%s' (was %s)\n" msgstr "Метка «%s» обновлена (была %s)\n" -#: builtin/unpack-objects.c:490 +#: builtin/unpack-objects.c:493 msgid "Unpacking objects" msgstr "РаÑпаковка объектов" @@ -11351,131 +12110,143 @@ msgstr "Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ ÑтатиÑтики каталога не изме msgid " OK" msgstr " OK" -#: builtin/update-index.c:575 +#: builtin/update-index.c:564 msgid "git update-index [<options>] [--] [<file>...]" msgstr "git update-index [<опции>] [--] [<файл>…]" -#: builtin/update-index.c:930 +#: builtin/update-index.c:919 msgid "continue refresh even when index needs update" msgstr "продолжить обновление, даже еÑли Ð¸Ð½Ð´ÐµÐºÑ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚ обновлениÑ" -#: builtin/update-index.c:933 +#: builtin/update-index.c:922 msgid "refresh: ignore submodules" msgstr "обновление: игнорировать подмодули" -#: builtin/update-index.c:936 +#: builtin/update-index.c:925 msgid "do not ignore new files" msgstr "не игнорировать новые файлы" -#: builtin/update-index.c:938 +#: builtin/update-index.c:927 msgid "let files replace directories and vice-versa" msgstr "разрешить файлам заменÑÑ‚ÑŒ каталоги и наоборот" -#: builtin/update-index.c:940 +#: builtin/update-index.c:929 msgid "notice files missing from worktree" msgstr "замечать файлы отÑутÑтвующие в рабочем каталоге" -#: builtin/update-index.c:942 +#: builtin/update-index.c:931 msgid "refresh even if index contains unmerged entries" msgstr "обновить, даже еÑли в индекÑе имеютÑÑ Ð½Ðµ Ñлитые запиÑи" -#: builtin/update-index.c:945 +#: builtin/update-index.c:934 msgid "refresh stat information" msgstr "обновить информацию о ÑтатуÑе файлов" -#: builtin/update-index.c:949 +#: builtin/update-index.c:938 msgid "like --refresh, but ignore assume-unchanged setting" msgstr "как --refresh, но игнорировать наÑтройку assume-unchanged" -#: builtin/update-index.c:953 +#: builtin/update-index.c:942 msgid "<mode>,<object>,<path>" msgstr "<режим доÑтупа>,<объект>,<путь>" -#: builtin/update-index.c:954 +#: builtin/update-index.c:943 msgid "add the specified entry to the index" msgstr "добавить указанную запиÑÑŒ в индекÑ" -#: builtin/update-index.c:963 +#: builtin/update-index.c:952 msgid "mark files as \"not changing\"" msgstr "пометить файлы как «не измененные»" -#: builtin/update-index.c:966 +#: builtin/update-index.c:955 msgid "clear assumed-unchanged bit" msgstr "убрать пометку assumed-unchanged" -#: builtin/update-index.c:969 +#: builtin/update-index.c:958 msgid "mark files as \"index-only\"" msgstr "пометить файлы как «только в индекÑе»" -#: builtin/update-index.c:972 +#: builtin/update-index.c:961 msgid "clear skip-worktree bit" msgstr "убрать пометку skip-worktree" -#: builtin/update-index.c:975 +#: builtin/update-index.c:964 msgid "add to index only; do not add content to object database" msgstr "только добавить в индекÑ; не добавлÑÑ‚ÑŒ Ñодержимое в базу данных объектов" -#: builtin/update-index.c:977 +#: builtin/update-index.c:966 msgid "remove named paths even if present in worktree" msgstr "удалить указанные пути, даже еÑли они ÑущеÑтвуют в рабочем каталоге" -#: builtin/update-index.c:979 +#: builtin/update-index.c:968 msgid "with --stdin: input lines are terminated by null bytes" msgstr "Ñ Ð¾Ð¿Ñ†Ð¸ÐµÐ¹ --stdin: Ñтроки на вводе отделÑÑŽÑ‚ÑÑ ÐУЛЕВЫМ байтом" -#: builtin/update-index.c:981 +#: builtin/update-index.c:970 msgid "read list of paths to be updated from standard input" msgstr "прочитать ÑпиÑок обновлÑемых путей из Ñтандартного ввода" -#: builtin/update-index.c:985 +#: builtin/update-index.c:974 msgid "add entries from standard input to the index" msgstr "добавить запиÑи из Ñтандартного ввода в индекÑ" -#: builtin/update-index.c:989 +#: builtin/update-index.c:978 msgid "repopulate stages #2 and #3 for the listed paths" msgstr "заново заполнить Ð¸Ð½Ð´ÐµÐºÑ #2 и #3 Ð´Ð»Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ñ‹Ñ… путей" -#: builtin/update-index.c:993 +#: builtin/update-index.c:982 msgid "only update entries that differ from HEAD" msgstr "обновить только запиÑи, которые отличаютÑÑ Ð¾Ñ‚ HEAD" -#: builtin/update-index.c:997 +#: builtin/update-index.c:986 msgid "ignore files missing from worktree" msgstr "игнорировать файлы, отÑутÑтвующие в рабочем каталоге" -#: builtin/update-index.c:1000 +#: builtin/update-index.c:989 msgid "report actions to standard output" msgstr "вывеÑти выполнÑемые дейÑÑ‚Ð²Ð¸Ñ Ð½Ð° Ñтандартный вывод" -#: builtin/update-index.c:1002 +#: builtin/update-index.c:991 msgid "(for porcelains) forget saved unresolved conflicts" msgstr "(Ð´Ð»Ñ Ð¼Ð°ÑˆÐ¸Ð½Ð½Ð¾Ð¹ обработки) забыть Ñохраненные неразрешенные конфликты" -#: builtin/update-index.c:1006 +#: builtin/update-index.c:995 msgid "write index in this format" msgstr "запиÑать Ð¸Ð½Ð´ÐµÐºÑ Ð² указанном формате" -#: builtin/update-index.c:1008 +#: builtin/update-index.c:997 msgid "enable or disable split index" msgstr "разрешить или запретить раздельный индекÑ" -#: builtin/update-index.c:1010 +#: builtin/update-index.c:999 msgid "enable/disable untracked cache" msgstr "включить/отключить кÑш неотÑлеживаемых файлов" -#: builtin/update-index.c:1012 +#: builtin/update-index.c:1001 msgid "test if the filesystem supports untracked cache" msgstr "проверить, что Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑтема поддерживает кÑш неотÑлеживаемых файлов" -#: builtin/update-index.c:1014 +#: builtin/update-index.c:1003 msgid "enable untracked cache without testing the filesystem" msgstr "включить кÑш неотÑлеживаемых файлов без проверки файловой ÑиÑтемы" -#: builtin/update-index.c:1134 +#: builtin/update-index.c:1119 +msgid "" +"core.untrackedCache is set to true; remove or change it, if you really want " +"to disable the untracked cache" +msgstr "параметр core.untrackedCache уÑтановлен true; удалите или измените его, еÑли вы дейÑтвительно хотите удалить кÑш неотÑлеживаемых файлов" + +#: builtin/update-index.c:1123 msgid "Untracked cache disabled" msgstr "КÑш неотÑлеживаемых файлов отключен" -#: builtin/update-index.c:1146 +#: builtin/update-index.c:1131 +msgid "" +"core.untrackedCache is set to false; remove or change it, if you really want" +" to enable the untracked cache" +msgstr "параметр core.untrackedCache уÑтановлен false; удалите или измените его, еÑли вы дейÑтвительно хотите включить кÑш неотÑлеживаемых файлов" + +#: builtin/update-index.c:1135 #, c-format msgid "Untracked cache enabled for '%s'" msgstr "КÑш неотÑлеживаемых файлов включен Ð´Ð»Ñ Â«%s»" @@ -11672,26 +12443,35 @@ msgstr "вывеÑти объект дерева Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð° Ñ msgid "only useful for debugging" msgstr "иÑпользуетÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ при отладке" -#: upload-pack.c:20 +#: upload-pack.c:22 msgid "git upload-pack [<options>] <dir>" msgstr "git upload-pack [<опции>] <каталог>" -#: upload-pack.c:837 +#: upload-pack.c:1028 msgid "quit after a single request/response exchange" msgstr "выход поÑле обмена одним запроÑом/ответом" -#: upload-pack.c:839 +#: upload-pack.c:1030 msgid "exit immediately after initial ref advertisement" msgstr "выходить Ñразу поÑле начального объÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑпиÑка ÑÑылок" -#: upload-pack.c:841 +#: upload-pack.c:1032 msgid "do not try <directory>/.git/ if <directory> is no Git directory" msgstr "не проверÑÑ‚ÑŒ <каталог>/.git/ еÑли <каталог> не ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼ Git" -#: upload-pack.c:843 +#: upload-pack.c:1034 msgid "interrupt transfer after <n> seconds of inactivity" msgstr "прервать передачу поÑле <кол> Ñекунд проÑтоÑ" +#: credential-cache--daemon.c:223 +#, c-format +msgid "" +"The permissions on your socket directory are too loose; other\n" +"users may be able to read your cached credentials. Consider running:\n" +"\n" +"\tchmod 0700 %s" +msgstr "Права доÑтупа к вашему каталогу Ñокетов Ñлишком Ñвободны; друге пользователи могуи читать ваши закÑшированные пароли доÑтупа. Обдумайте запуÑк команды:\n\n\tchmod 0700 %s" + #: credential-cache--daemon.c:271 msgid "print debugging messages to stderr" msgstr "вывод отладочных Ñообщений на stderr" @@ -11703,7 +12483,11 @@ msgid "" "to read about a specific subcommand or concept." msgstr "«git help -а» и «git help -g» выводит ÑпиÑок доÑтупных подкоманд и\nнекоторые руководÑтва по темам. ЗапуÑтите «git help <команда>» или\n«git help <термин>», чтобы прочеÑÑ‚ÑŒ о конкретных подкоманде или теме." -#: http.c:323 +#: http.c:342 +msgid "Delegation control is not supported with cURL < 7.22.0" +msgstr "Ð”ÐµÐ»ÐµÐ³Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ полномочий не поддерживаетÑÑ Ñ cURL < 7.22.0" + +#: http.c:351 msgid "Public key pinning not supported with cURL < 7.44.0" msgstr "Public key pinning не поддерживаетÑÑ Ñ cURL < 7.44.0" @@ -11819,15 +12603,15 @@ msgstr "дата-окончаниÑ" msgid "no-op (backward compatibility)" msgstr "ничего не делает (оÑтавлено Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ ÑовмеÑтимоÑти)" -#: parse-options.h:237 +#: parse-options.h:238 msgid "be more verbose" msgstr "быть многоÑловнее" -#: parse-options.h:239 +#: parse-options.h:240 msgid "be more quiet" msgstr "тихий режим" -#: parse-options.h:245 +#: parse-options.h:246 msgid "use <n> digits to display SHA-1s" msgstr "иÑпользовать <n> цифр Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° SHA-1" @@ -12028,7 +12812,7 @@ msgid "Automated merge did not work." msgstr "Ðе удалоÑÑŒ автоматичеÑки Ñлить изменениÑ." #: git-merge-octopus.sh:62 -msgid "Should not be doing an Octopus." +msgid "Should not be doing an octopus." msgstr "Должно быть octopus не подходит." #: git-merge-octopus.sh:73 @@ -12196,6 +12980,10 @@ msgstr "У Ð²Ð°Ñ ÐµÑ‰Ðµ нет начального коммита" msgid "Cannot save the current index state" msgstr "Ðе удалоÑÑŒ Ñохранить текущее ÑоÑтоÑние индекÑа" +#: git-stash.sh:103 +msgid "Cannot save the untracked files" +msgstr "Ðевозможно Ñохранить неотÑлеживаемые файлы" + #: git-stash.sh:123 git-stash.sh:136 msgid "Cannot save the current worktree state" msgstr "Ðе удалоÑÑŒ Ñохранить текущее ÑоÑтоÑние рабочего каталога" @@ -12233,6 +13021,10 @@ msgid "" " To provide a message, use git stash save -- '$option'" msgstr "ошибка: неизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ Ð´Ð»Ñ Â«stash save»: $option\n Ð”Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑообщениÑ, иÑпользуйте git stash save -- «$option»" +#: git-stash.sh:251 +msgid "Can't use --patch and --include-untracked or --all at the same time" +msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать --patch и --include-untracked или --all одновременно" + #: git-stash.sh:259 msgid "No local changes to save" msgstr "Ðет локальных изменений Ð´Ð»Ñ ÑохранениÑ" @@ -12254,96 +13046,100 @@ msgstr "Рабочий каталог и ÑоÑтоÑние индекÑа ÑÐ¾Ñ msgid "Cannot remove worktree changes" msgstr "Ðе удалоÑÑŒ удалить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ³Ð¾ каталога" -#: git-stash.sh:404 +#: git-stash.sh:403 #, sh-format msgid "unknown option: $opt" msgstr "неизвеÑÑ‚Ð½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ: $opt" -#: git-stash.sh:414 +#: git-stash.sh:416 msgid "No stash found." msgstr "Ðе найдены ÑпрÑтанные изменениÑ." -#: git-stash.sh:421 +#: git-stash.sh:423 #, sh-format msgid "Too many revisions specified: $REV" msgstr "Передано Ñлишком много редакций: $REV" -#: git-stash.sh:427 +#: git-stash.sh:438 #, sh-format msgid "$reference is not a valid reference" msgstr "$reference не ÑвлÑетÑÑ Ð´ÐµÐ¹Ñтвительной ÑÑылкой" -#: git-stash.sh:455 +#: git-stash.sh:466 #, sh-format msgid "'$args' is not a stash-like commit" msgstr "«$args» не похоже на коммит Ñо ÑпрÑтанными изменениÑми" -#: git-stash.sh:466 +#: git-stash.sh:477 #, sh-format msgid "'$args' is not a stash reference" msgstr "«$args» не ÑвлÑетÑÑ ÑÑылкой на ÑпрÑтанные изменениÑ" -#: git-stash.sh:474 +#: git-stash.sh:485 msgid "unable to refresh index" msgstr "не удалоÑÑŒ обновить индекÑ" -#: git-stash.sh:478 +#: git-stash.sh:489 msgid "Cannot apply a stash in the middle of a merge" msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ð¿Ñ€Ð¸Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ ÑпрÑтанные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑлиÑниÑ" -#: git-stash.sh:486 +#: git-stash.sh:497 msgid "Conflicts in index. Try without --index." msgstr "Конфликты в индекÑе. Попробуйте без --index." -#: git-stash.sh:488 +#: git-stash.sh:499 msgid "Could not save index tree" msgstr "Ðе удалоÑÑŒ Ñохранить дерево индекÑа" -#: git-stash.sh:522 +#: git-stash.sh:508 +msgid "Could not restore untracked files from stash" +msgstr "Ðевозможно воÑÑтановить неотÑлеживаемые файлы из ÑпÑтанных файлов" + +#: git-stash.sh:533 msgid "Cannot unstage modified files" msgstr "Ðевозможно убрать из индекÑа измененные файлы" -#: git-stash.sh:537 +#: git-stash.sh:548 msgid "Index was not unstashed." msgstr "Ð˜Ð½Ð´ÐµÐºÑ Ð½Ðµ был извлечён из ÑпрÑтанных изменений." -#: git-stash.sh:551 +#: git-stash.sh:562 msgid "The stash is kept in case you need it again." msgstr "СпрÑтанные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñохранены, на Ñлучай еÑли они Ñнова вам понадобÑÑ‚ÑÑ." -#: git-stash.sh:560 +#: git-stash.sh:571 #, sh-format msgid "Dropped ${REV} ($s)" msgstr "Отброшено ${REV} ($s)" -#: git-stash.sh:561 +#: git-stash.sh:572 #, sh-format msgid "${REV}: Could not drop stash entry" msgstr "${REV}: Ðе удалоÑÑŒ отброÑить запиÑÑŒ из ÑпрÑтанных изменений" -#: git-stash.sh:569 +#: git-stash.sh:580 msgid "No branch name specified" msgstr "Ðе указано Ð¸Ð¼Ñ Ð²ÐµÑ‚ÐºÐ¸" -#: git-stash.sh:641 +#: git-stash.sh:652 msgid "(To restore them type \"git stash apply\")" msgstr "(Чтобы воÑÑтановить их, наберите «git stash apply»)" -#: git-submodule.sh:183 +#: git-submodule.sh:184 msgid "Relative path can only be used from the toplevel of the working tree" msgstr "ОтноÑительный путь можно иÑпользовать только находÑÑÑŒ на вершине рабочего каталога" -#: git-submodule.sh:193 +#: git-submodule.sh:194 #, sh-format msgid "repo URL: '$repo' must be absolute or begin with ./|../" msgstr "URL репозиториÑ: «$repo» должен быть абÑолютным или начинатьÑÑ Ñ ./|../" -#: git-submodule.sh:210 +#: git-submodule.sh:211 #, sh-format msgid "'$sm_path' already exists in the index" msgstr "«$sm_path» уже ÑодержитÑÑ Ð² индекÑе" -#: git-submodule.sh:214 +#: git-submodule.sh:215 #, sh-format msgid "" "The following path is ignored by one of your .gitignore files:\n" @@ -12351,22 +13147,22 @@ msgid "" "Use -f if you really want to add it." msgstr "Следующие пути игнорируютÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из ваших файлов .gitignore:\n$sm_path\nИÑпользуйте опцию -f, еÑли вы дейÑтвительно хотите его добавить." -#: git-submodule.sh:232 +#: git-submodule.sh:233 #, sh-format msgid "Adding existing repo at '$sm_path' to the index" msgstr "ДобавлÑÑŽ ÑущеÑтвующий репозиторий из «$sm_path» в индекÑ" -#: git-submodule.sh:234 +#: git-submodule.sh:235 #, sh-format msgid "'$sm_path' already exists and is not a valid git repo" msgstr "«$sm_path» уже ÑущеÑтвует и не ÑвлÑетÑÑ Ð´ÐµÐ¹Ñтвительным репозиторием git" -#: git-submodule.sh:242 +#: git-submodule.sh:243 #, sh-format msgid "A git directory for '$sm_name' is found locally with remote(s):" msgstr "Каталог git Ð´Ð»Ñ Â«$sm_name» найден локально на внешних репозиториÑÑ…:" -#: git-submodule.sh:244 +#: git-submodule.sh:245 #, sh-format msgid "" "If you want to reuse this local git directory instead of cloning again from\n" @@ -12375,188 +13171,184 @@ msgid "" "or you are unsure what this means choose another name with the '--name' option." msgstr "ЕÑли вы хотите повторно иÑпользовать локальный каталог git вмеÑто повторного ÐºÐ»Ð¾Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð·\n $realrepo\nто иÑпользуйте параметр «--force». ЕÑли же локальный каталог git не ÑвлÑетÑÑ Ð½ÑƒÐ¶Ð½Ñ‹Ð¼ репозиторием или еÑли вы не уверены, что Ñто значит, то укажите другое Ð¸Ð¼Ñ Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ параметра «--name»." -#: git-submodule.sh:250 +#: git-submodule.sh:251 #, sh-format msgid "Reactivating local git directory for submodule '$sm_name'." msgstr "ВоÑÑтановление локального каталога git Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«$sm_name»." -#: git-submodule.sh:262 +#: git-submodule.sh:263 #, sh-format msgid "Unable to checkout submodule '$sm_path'" msgstr "Ðе удалоÑÑŒ переключитьÑÑ Ð½Ð° ÑоÑтоÑние у Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«$sm_path»" -#: git-submodule.sh:267 +#: git-submodule.sh:268 #, sh-format msgid "Failed to add submodule '$sm_path'" msgstr "Сбой Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«$sm_path»" -#: git-submodule.sh:276 +#: git-submodule.sh:277 #, sh-format msgid "Failed to register submodule '$sm_path'" msgstr "Ðе удалоÑÑŒ зарегиÑтрировать подмодуль «$sm_path»" -#: git-submodule.sh:323 +#: git-submodule.sh:324 #, sh-format msgid "Entering '$displaypath'" msgstr "Заходим в «$displaypath»" -#: git-submodule.sh:343 +#: git-submodule.sh:344 #, sh-format msgid "Stopping at '$displaypath'; script returned non-zero status." msgstr "ОÑтанавливаемÑÑ Ð½Ð° «$displaypath»; Ñценарий вернул не нулевой код возврата." -#: git-submodule.sh:414 +#: git-submodule.sh:415 #, sh-format msgid "pathspec and --all are incompatible" msgstr "Ñпецификацию пути и --all Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно" -#: git-submodule.sh:419 +#: git-submodule.sh:420 #, sh-format msgid "Use '--all' if you really want to deinitialize all submodules" msgstr "ИÑпользуйте «--all», еÑли вы дейÑтвительно хотите деинициализировать вÑе подмодули" -#: git-submodule.sh:439 +#: git-submodule.sh:440 #, 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 "Рабочий каталог Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«$displaypath» уже Ñодержит каталог .git\n(иÑпользуйте «rm -rf», еÑли вы дейÑтвительно хотите удалить его Ñо вÑей иÑторией изменений)" -#: git-submodule.sh:447 +#: git-submodule.sh:448 #, sh-format msgid "" "Submodule work tree '$displaypath' contains local modifications; use '-f' to" " discard them" msgstr "Рабочий каталог Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«$displaypath» Ñодержит локальные изменениÑ; иÑпользуйте «-f», чтобы отменить их" -#: git-submodule.sh:450 +#: git-submodule.sh:451 #, sh-format msgid "Cleared directory '$displaypath'" msgstr "Очищен каталог «$displaypath»" -#: git-submodule.sh:451 +#: git-submodule.sh:452 #, sh-format msgid "Could not remove submodule work tree '$displaypath'" msgstr "Ðе удалоÑÑŒ удалить рабочий каталог Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«$displaypath»" -#: git-submodule.sh:454 +#: git-submodule.sh:455 #, sh-format msgid "Could not create empty submodule directory '$displaypath'" msgstr "Ðе удалоÑÑŒ Ñоздать пуÑтой каталог Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«$displaypath»" -#: git-submodule.sh:463 +#: git-submodule.sh:464 #, sh-format msgid "Submodule '$name' ($url) unregistered for path '$displaypath'" msgstr "Подмодуль «$name» ($url) был ÑнÑÑ‚ Ñ Ñ€ÐµÐ³Ð¸Ñтрации по пути «$displaypath»" -#: git-submodule.sh:612 +#: git-submodule.sh:617 #, sh-format msgid "Unable to find current revision in submodule path '$displaypath'" msgstr "Ðе удалоÑÑŒ найти текущую редакцию Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾ пути «$displaypath»" -#: git-submodule.sh:622 +#: git-submodule.sh:627 #, sh-format msgid "Unable to fetch in submodule path '$sm_path'" msgstr "Ðе удалоÑÑŒ выполнить извлечение Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾ пути «$sm_path»" -#: git-submodule.sh:627 +#: git-submodule.sh:632 #, sh-format msgid "" "Unable to find current ${remote_name}/${branch} revision in submodule path " "'$sm_path'" msgstr "Ðе удалоÑÑŒ найти текущую редакцию ${remote_name}/${branch} Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾ пути «$sm_path»" -#: git-submodule.sh:645 +#: git-submodule.sh:650 #, sh-format msgid "Unable to fetch in submodule path '$displaypath'" msgstr "Ðе удалоÑÑŒ выполнить извлечение Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾ пути «$displaypath»" -#: git-submodule.sh:651 +#: git-submodule.sh:656 #, sh-format msgid "" "Fetched in submodule path '$displaypath', but it did not contain $sha1. " "Direct fetching of that commit failed." msgstr "Получен по пути Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«$displaypath», но не Ñодержит $sha1. Сбой при прÑмом получении коммита." -#: git-submodule.sh:658 +#: git-submodule.sh:663 #, sh-format msgid "Unable to checkout '$sha1' in submodule path '$displaypath'" msgstr "Ðе удалоÑÑŒ переключитьÑÑ Ð½Ð° ÑоÑтоÑние «$sha1» Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾ пути «$displaypath»" -#: git-submodule.sh:659 +#: git-submodule.sh:664 #, sh-format msgid "Submodule path '$displaypath': checked out '$sha1'" msgstr "Подмодуль по пути «$displaypath»: забрано ÑоÑтоÑние «$sha1»" -#: git-submodule.sh:663 +#: git-submodule.sh:668 #, sh-format msgid "Unable to rebase '$sha1' in submodule path '$displaypath'" msgstr "Ðе удалоÑÑŒ перемеÑтить «$sha1» Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾ пути «$displaypath»" -#: git-submodule.sh:664 +#: git-submodule.sh:669 #, sh-format msgid "Submodule path '$displaypath': rebased into '$sha1'" msgstr "Подмодуль по пути «$displaypath»: перемещен над «$sha1»" -#: git-submodule.sh:669 +#: git-submodule.sh:674 #, sh-format msgid "Unable to merge '$sha1' in submodule path '$displaypath'" msgstr "Ðе удалоÑÑŒ выполнить ÑлиÑние Ñ Â«$sha1» Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾ пути «$displaypath»" -#: git-submodule.sh:670 +#: git-submodule.sh:675 #, sh-format msgid "Submodule path '$displaypath': merged in '$sha1'" msgstr "Подмодуль по пути «$displaypath»: Ñлито Ñ Â«$sha1»" -#: git-submodule.sh:675 +#: git-submodule.sh:680 #, sh-format msgid "Execution of '$command $sha1' failed in submodule path '$displaypath'" msgstr "Сбой Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Â«$command $sha1» Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾ пути «$displaypath»" -#: git-submodule.sh:676 +#: git-submodule.sh:681 #, sh-format msgid "Submodule path '$displaypath': '$command $sha1'" msgstr "Подмодуль по пути «$displaypath»: «$command $sha1»" -#: git-submodule.sh:707 +#: git-submodule.sh:712 #, sh-format msgid "Failed to recurse into submodule path '$displaypath'" msgstr "Ðе удалоÑÑŒ выполнить рекурÑивно Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾ пути «$displaypath»" -#: git-submodule.sh:815 +#: git-submodule.sh:820 msgid "The --cached option cannot be used with the --files option" msgstr "Опцию --cached Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать одновременно Ñ Ð¾Ð¿Ñ†Ð¸ÐµÐ¹ --files" -#: git-submodule.sh:867 +#: git-submodule.sh:872 #, sh-format msgid "unexpected mode $mod_dst" msgstr "неизвеÑтный режим $mod_dst" -#: git-submodule.sh:887 +#: git-submodule.sh:892 #, sh-format msgid " Warn: $display_name doesn't contain commit $sha1_src" msgstr " Предупреждение: $display_name не Ñодержит коммит $sha1_src" -#: git-submodule.sh:890 +#: git-submodule.sh:895 #, sh-format msgid " Warn: $display_name doesn't contain commit $sha1_dst" msgstr " Предупреждение: $display_name не Ñодержит коммит $sha1_dst" -#: git-submodule.sh:893 +#: git-submodule.sh:898 #, sh-format msgid " Warn: $display_name doesn't contain commits $sha1_src and $sha1_dst" msgstr " Предупреждение: $display_name не Ñодержит коммиты $sha1_src и $sha1_dst" -#: git-submodule.sh:918 -msgid "blob" -msgstr "двоичный объект" - -#: git-submodule.sh:1040 +#: git-submodule.sh:1045 #, sh-format msgid "Failed to recurse into submodule path '$sm_path'" msgstr "Ðе удалоÑÑŒ выполнить рекурÑивно Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ð¾ пути «$sm_path»" -#: git-submodule.sh:1107 +#: git-submodule.sh:1112 #, sh-format msgid "Synchronizing submodule url for '$displaypath'" msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ url Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«$displaypath»" @@ -12566,12 +13358,12 @@ msgstr "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ url Ð´Ð»Ñ Ð¿Ð¾Ð´Ð¼Ð¾Ð´ÑƒÐ»Ñ Â«$displaypath msgid "See git-${cmd}(1) for details." msgstr "Ð”Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации, Ñмотрите git-${cmd}(1)." -#: git-rebase--interactive.sh:131 +#: git-rebase--interactive.sh:140 #, sh-format msgid "Rebasing ($new_count/$total)" msgstr "Перемещение ($new_count/$total)" -#: git-rebase--interactive.sh:147 +#: git-rebase--interactive.sh:156 msgid "" "\n" "Commands:\n" @@ -12586,19 +13378,19 @@ msgid "" "These lines can be re-ordered; they are executed from top to bottom.\n" msgstr "\nКоманды:\n p, pick = иÑпользовать коммит\n r, reword = иÑпользовать коммит, но изменить Ñообщение коммита\n e, edit = иÑпользовать коммит, но оÑтановитьÑÑ Ð´Ð»Ñ Ð²Ð½ÐµÑÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¾Ðº\n s, squash = иÑпользовать коммит, но объединить его Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼ коммитом\n f, fixup = как «squash», но отброÑить Ñообщение Ñтого коммита\n x, exec = выполнить команду (оÑтаток Ñтроки) Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ командной оболочки\n d, drop = удалить коммит\n\nÐти Ñтроки могут быть перемещены; выполнÑÑŽÑ‚ÑÑ Ð¿Ð¾ очереди Ñверху вниз.\n" -#: git-rebase--interactive.sh:162 +#: git-rebase--interactive.sh:171 msgid "" "\n" "Do not remove any line. Use 'drop' explicitly to remove a commit.\n" msgstr "\nÐе удалÑйте Ñтроки. ИÑпользуйте «drop», чтобы Ñвно удалить коммит.\n" -#: git-rebase--interactive.sh:166 +#: git-rebase--interactive.sh:175 msgid "" "\n" "If you remove a line here THAT COMMIT WILL BE LOST.\n" msgstr "\nЕÑли вы удалите Ñтроку здеÑÑŒ, то УКÐЗÐÐÐЫЙ КОММИТ БУДЕТ УТЕРЯÐ.\n" -#: git-rebase--interactive.sh:202 +#: git-rebase--interactive.sh:211 #, sh-format msgid "" "You can amend the commit now, with\n" @@ -12610,61 +13402,61 @@ msgid "" "\tgit rebase --continue" msgstr "Теперь вы можете иÑправить коммит Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ\n\n\tgit commit --amend $gpg_sign_opt_quoted\n\nКак только вы будете довольны результатом, запуÑтите\n\n\tgit rebase --continue" -#: git-rebase--interactive.sh:227 +#: git-rebase--interactive.sh:236 #, sh-format msgid "$sha1: not a commit that can be picked" msgstr "$sha1: не ÑвлÑетÑÑ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð¾Ð¼, который можно взÑÑ‚ÑŒ" -#: git-rebase--interactive.sh:266 +#: git-rebase--interactive.sh:275 #, sh-format msgid "Invalid commit name: $sha1" msgstr "ÐедопуÑтимое Ð¸Ð¼Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°: $sha1" -#: git-rebase--interactive.sh:308 +#: git-rebase--interactive.sh:317 msgid "Cannot write current commit's replacement sha1" msgstr "Ðе удалоÑÑŒ запиÑать замену sha1 текущего коммита" -#: git-rebase--interactive.sh:360 +#: git-rebase--interactive.sh:369 #, sh-format msgid "Fast-forward to $sha1" msgstr "Перемотка вперед до $sha1" -#: git-rebase--interactive.sh:362 +#: git-rebase--interactive.sh:371 #, sh-format msgid "Cannot fast-forward to $sha1" msgstr "Ðе удалоÑÑŒ перемотать вперед до $sha1" -#: git-rebase--interactive.sh:371 +#: git-rebase--interactive.sh:380 #, sh-format msgid "Cannot move HEAD to $first_parent" msgstr "Ðе удалоÑÑŒ перемеÑтить HEAD на $first_parent" -#: git-rebase--interactive.sh:376 +#: git-rebase--interactive.sh:385 #, sh-format msgid "Refusing to squash a merge: $sha1" msgstr "ÐÐµÐ»ÑŒÐ·Ñ ÑƒÐ¿Ð»Ð¾Ñ‚Ð½Ð¸Ñ‚ÑŒ ÑлиÑние: $sha1" -#: git-rebase--interactive.sh:390 +#: git-rebase--interactive.sh:399 #, sh-format msgid "Error redoing merge $sha1" msgstr "Ошибка при повторении ÑлиÑÐ½Ð¸Ñ $sha1" -#: git-rebase--interactive.sh:398 +#: git-rebase--interactive.sh:407 #, sh-format msgid "Could not pick $sha1" msgstr "Ðе удалоÑÑŒ взÑÑ‚ÑŒ $sha1" -#: git-rebase--interactive.sh:407 +#: git-rebase--interactive.sh:416 #, sh-format msgid "This is the commit message #${n}:" msgstr "Ðто Ñообщение коммита номер #${n}:" -#: git-rebase--interactive.sh:412 +#: git-rebase--interactive.sh:421 #, sh-format msgid "The commit message #${n} will be skipped:" msgstr "Сообщение коммита номер #${n} будет пропущено:" -#: git-rebase--interactive.sh:423 +#: git-rebase--interactive.sh:432 #, sh-format msgid "This is a combination of $count commit." msgid_plural "This is a combination of $count commits." @@ -12673,26 +13465,26 @@ msgstr[1] "Ðто объединение $count коммитов" msgstr[2] "Ðто объединение $count коммитов" msgstr[3] "Ðто объединение $count коммитов" -#: git-rebase--interactive.sh:431 +#: git-rebase--interactive.sh:440 #, sh-format msgid "Cannot write $fixup_msg" msgstr "Ðе удалоÑÑŒ запиÑать $fixup_msg" -#: git-rebase--interactive.sh:434 +#: git-rebase--interactive.sh:443 msgid "This is a combination of 2 commits." msgstr "Ðто объединение 2 коммитов" -#: git-rebase--interactive.sh:435 +#: git-rebase--interactive.sh:444 msgid "This is the 1st commit message:" msgstr "Ðто 1-е Ñообщение коммита:" -#: git-rebase--interactive.sh:475 git-rebase--interactive.sh:518 -#: git-rebase--interactive.sh:521 +#: git-rebase--interactive.sh:484 git-rebase--interactive.sh:527 +#: git-rebase--interactive.sh:530 #, sh-format msgid "Could not apply $sha1... $rest" msgstr "Ðе удалоÑÑŒ применить $sha1… $rest" -#: git-rebase--interactive.sh:549 +#: git-rebase--interactive.sh:558 #, sh-format msgid "" "Could not amend commit after successfully picking $sha1... $rest\n" @@ -12701,31 +13493,31 @@ msgid "" "you are able to reword the commit." msgstr "Ðе удолоÑÑŒ иÑправить коммит поÑле уÑпешного перехода на $sha1… $rest\nÐто произошло, Ñкорее вÑего, из-за пуÑтого ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð° или из-за перехватчика перед коммитом. ЕÑли же Ñто произошло из-за перехватчика перед коммитом, то вам нужно решить Ñ Ð½Ð¸Ð¼ проблему и повторить попытку Ñнова." -#: git-rebase--interactive.sh:564 +#: git-rebase--interactive.sh:573 #, sh-format msgid "Stopped at $sha1_abbrev... $rest" msgstr "ОÑтановлено на $sha1_abbrev… $rest" -#: git-rebase--interactive.sh:579 +#: git-rebase--interactive.sh:588 #, sh-format msgid "Cannot '$squash_style' without a previous commit" msgstr "ÐÐµÐ»ÑŒÐ·Ñ Ñделать «$squash_style» без ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰ÐµÐ³Ð¾ коммита" -#: git-rebase--interactive.sh:621 +#: git-rebase--interactive.sh:630 #, sh-format msgid "Executing: $rest" msgstr "Выполнение: $rest" -#: git-rebase--interactive.sh:629 +#: git-rebase--interactive.sh:638 #, sh-format msgid "Execution failed: $rest" msgstr "Ðе удалоÑÑŒ выполнить: $rest" -#: git-rebase--interactive.sh:631 +#: git-rebase--interactive.sh:640 msgid "and made changes to the index and/or the working tree" msgstr "и были Ñделаны Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² индекÑе и/или в рабочем каталоге" -#: git-rebase--interactive.sh:633 +#: git-rebase--interactive.sh:642 msgid "" "You can fix the problem, and then run\n" "\n" @@ -12733,7 +13525,7 @@ msgid "" msgstr "Ð’Ñ‹ можете иÑправить ошибку, а затем запуÑтить\n\n\tgit rebase --continue" #. TRANSLATORS: after these lines is a command to be issued by the user -#: git-rebase--interactive.sh:646 +#: git-rebase--interactive.sh:655 #, sh-format msgid "" "Execution succeeded: $rest\n" @@ -12743,49 +13535,49 @@ msgid "" "\tgit rebase --continue" msgstr "УÑпешное выполнение: $rest\nно оÑталиÑÑŒ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² индекÑе и/или в рабочем каталоге\nСделайте коммит или ÑпрÑчьте ваши изменениÑ, а затем выполните\n\n\tgit rebase --continue" -#: git-rebase--interactive.sh:657 +#: git-rebase--interactive.sh:666 #, sh-format msgid "Unknown command: $command $sha1 $rest" msgstr "ÐÐµÐ¾Ð¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°: $command $sha1 $rest" -#: git-rebase--interactive.sh:658 +#: git-rebase--interactive.sh:667 msgid "Please fix this using 'git rebase --edit-todo'." msgstr "ПожалуйÑта иÑправьте Ñто Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «git rebase --edit-todo»." -#: git-rebase--interactive.sh:693 +#: git-rebase--interactive.sh:702 #, sh-format msgid "Successfully rebased and updated $head_name." msgstr "УÑпешно перебазирован и обновлён $head_name." -#: git-rebase--interactive.sh:740 +#: git-rebase--interactive.sh:749 msgid "Could not skip unnecessary pick commands" msgstr "Ðе удалоÑÑŒ пропуÑтить ненужные команды отбора (pick)" -#: git-rebase--interactive.sh:898 +#: git-rebase--interactive.sh:907 #, sh-format msgid "" "Warning: the SHA-1 is missing or isn't a commit in the following line:\n" " - $line" msgstr "Внимание: не найден SHA-1 или он не указывает на коммит. Ðа Ñтроке:\n - $line" -#: git-rebase--interactive.sh:931 +#: git-rebase--interactive.sh:940 #, sh-format msgid "" "Warning: the command isn't recognized in the following line:\n" " - $line" msgstr "Внимание: команда не раÑпознана на Ñтроке:\n - $line" -#: git-rebase--interactive.sh:970 +#: git-rebase--interactive.sh:979 msgid "could not detach HEAD" msgstr "не удалоÑÑŒ отделить HEAD" -#: git-rebase--interactive.sh:1008 +#: git-rebase--interactive.sh:1017 msgid "" "Warning: some commits may have been dropped accidentally.\n" "Dropped commits (newer to older):" msgstr "Внимание: некоторые коммиты могли быть отброшены по ошибке.\nОтброшенные коммиты (от новых к Ñтарым):" -#: git-rebase--interactive.sh:1016 +#: git-rebase--interactive.sh:1025 msgid "" "To avoid this message, use \"drop\" to explicitly remove a commit.\n" "\n" @@ -12793,26 +13585,28 @@ msgid "" "The possible behaviours are: ignore, warn, error." msgstr "Ð”Ð»Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°Ð½Ð¸Ñ Ñтого ÑообщениÑ, иÑпользуйте «drop» чтобы Ñвно удалить коммит.\n\nИÑпользуйте опцию «git config rebase.missingCommitsCheck» Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð»Ð¸Ñ‡ÐµÑтва предупреждений.\nВозможные значениÑ: ignore, warn, error." -#: git-rebase--interactive.sh:1027 +#: git-rebase--interactive.sh:1036 #, sh-format msgid "" "Unrecognized setting $check_level for option rebase.missingCommitsCheck. " "Ignoring." msgstr "ÐераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð½Ð°Ñ Ð½Ð°Ñтройка $check_level Ð´Ð»Ñ Ð¾Ð¿Ñ†Ð¸Ð¸ rebase.missingCommitsCheck. Игнорирую." -#: git-rebase--interactive.sh:1044 -msgid "You can fix this with 'git rebase --edit-todo'." -msgstr "Ð’Ñ‹ можете иÑправить Ñто Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «git rebase --edit-todo»." +#: git-rebase--interactive.sh:1053 +msgid "" +"You can fix this with 'git rebase --edit-todo' and then run 'git rebase " +"--continue'." +msgstr "Ð’Ñ‹ можете иÑправить Ñто Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «git rebase --edit-todo», а потом запуÑтив «git rebase --continue»." -#: git-rebase--interactive.sh:1045 +#: git-rebase--interactive.sh:1054 msgid "Or you can abort the rebase with 'git rebase --abort'." msgstr "Или вы можете отменить процеÑÑ Ð¿ÐµÑ€ÐµÐ±Ð°Ð·Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ «git rebase --abort»." -#: git-rebase--interactive.sh:1069 +#: git-rebase--interactive.sh:1078 msgid "Could not remove CHERRY_PICK_HEAD" msgstr "Ðе удалоÑÑŒ удалить CHERRY_PICK_HEAD" -#: git-rebase--interactive.sh:1074 +#: git-rebase--interactive.sh:1083 #, sh-format msgid "" "You have staged changes in your working tree.\n" @@ -12825,26 +13619,26 @@ msgid "" "\n" " git commit $gpg_sign_opt_quoted\n" "\n" -"In both case, once you're done, continue with:\n" +"In both cases, once you're done, continue with:\n" "\n" " git rebase --continue\n" msgstr "У Ð²Ð°Ñ Ð¸Ð¼ÐµÑŽÑ‚ÑÑ Ð¿Ñ€Ð¾Ð¸Ð½Ð´ÐµÐºÑированные Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² рабочем каталоге.\nЕÑли Ñти Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ‹ быть объеденены Ñ Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð¸Ð¼ коммитом, то запуÑтите:\n\n git commit --amend $gpg_sign_opt_quoted\n\nЕÑли же они должны быть помещены в новый коммит, то запуÑтите:\n\n git commit $gpg_sign_opt_quoted\n\nÐ’ любом Ñлучае, поÑле того как вы закончите, продолжить перемещение можно выполнив:\n\n git rebase --continue\n" -#: git-rebase--interactive.sh:1091 +#: git-rebase--interactive.sh:1100 msgid "Error trying to find the author identity to amend commit" msgstr "Произошла ошибка при поиÑке автора Ð´Ð»Ñ Ð¸ÑÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¼Ð¸Ñ‚Ð°" -#: git-rebase--interactive.sh:1096 +#: git-rebase--interactive.sh:1105 msgid "" "You have uncommitted changes in your working tree. Please commit them\n" "first and then run 'git rebase --continue' again." msgstr "У Ð²Ð°Ñ Ð¸Ð¼ÐµÑŽÑ‚ÑÑ Ð½ÐµÐ·Ð°ÐºÐ¾Ð¼Ð¼Ð¸Ñ‡ÐµÐ½Ð½Ñ‹Ðµ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² рабочем каталоге. Сделайте коммит, а затем запуÑтите «git rebase --continue» Ñнова." -#: git-rebase--interactive.sh:1101 git-rebase--interactive.sh:1105 +#: git-rebase--interactive.sh:1110 git-rebase--interactive.sh:1114 msgid "Could not commit staged changes." msgstr "Ðе удалоÑÑŒ закоммитить проиндекÑированные изменениÑ." -#: git-rebase--interactive.sh:1129 +#: git-rebase--interactive.sh:1138 msgid "" "\n" "You are editing the todo file of an ongoing interactive rebase.\n" @@ -12853,37 +13647,33 @@ msgid "" "\n" msgstr "\nÐ’Ñ‹ ÑÐµÐ¹Ñ‡Ð°Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€ÑƒÐµÑ‚Ðµ файл Ñо ÑпиÑком дел Ð´Ð»Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¾Ð³Ð¾ перемещениÑ.\nÐ”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ, поÑле Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° запуÑтите:\n git rebase --continue\n\n" -#: git-rebase--interactive.sh:1137 git-rebase--interactive.sh:1298 +#: git-rebase--interactive.sh:1146 git-rebase--interactive.sh:1304 msgid "Could not execute editor" msgstr "Ðе удалоÑÑŒ запуÑтить редактор" -#: git-rebase--interactive.sh:1145 -msgid "You need to set your committer info first" -msgstr "Сначала вам нужно указать вашу информацию коммитера" - -#: git-rebase--interactive.sh:1153 +#: git-rebase--interactive.sh:1159 #, sh-format msgid "Could not checkout $switch_to" msgstr "Ðе удалоÑÑŒ перейти на верÑию $switch_to" -#: git-rebase--interactive.sh:1158 +#: git-rebase--interactive.sh:1164 msgid "No HEAD?" msgstr "Ðет ÑƒÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ HEAD?" -#: git-rebase--interactive.sh:1159 +#: git-rebase--interactive.sh:1165 #, sh-format msgid "Could not create temporary $state_dir" msgstr "Ðе удалоÑÑŒ Ñоздать временный каталог $state_dir" -#: git-rebase--interactive.sh:1161 +#: git-rebase--interactive.sh:1167 msgid "Could not mark as interactive" msgstr "Ðе удалоÑÑŒ пометить как интерактивный" -#: git-rebase--interactive.sh:1171 git-rebase--interactive.sh:1176 +#: git-rebase--interactive.sh:1177 git-rebase--interactive.sh:1182 msgid "Could not init rewritten commits" msgstr "Ðе удалоÑÑŒ инициализировать перезапиÑанные коммиты" -#: git-rebase--interactive.sh:1276 +#: git-rebase--interactive.sh:1282 #, sh-format msgid "Rebase $shortrevisions onto $shortonto ($todocount command)" msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)" @@ -12892,14 +13682,14 @@ msgstr[1] "Перемещение $shortrevisions над $shortonto ($todocount msgstr[2] "Перемещение $shortrevisions над $shortonto ($todocount команд)" msgstr[3] "Перемещение $shortrevisions над $shortonto ($todocount команд)" -#: git-rebase--interactive.sh:1281 +#: git-rebase--interactive.sh:1287 msgid "" "\n" "However, if you remove everything, the rebase will be aborted.\n" "\n" msgstr "\nÐо еÑли вы удалите вÑе, то процеÑÑ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ будет прерван.\n\n" -#: git-rebase--interactive.sh:1288 +#: git-rebase--interactive.sh:1294 msgid "Note that empty commits are commented out" msgstr "Заметьте, что пуÑтые коммиты закомментированны" @@ -12926,6 +13716,10 @@ msgstr "Ðе удалоÑÑŒ выполнить перемещение комми msgid "Cannot rewrite branches: You have unstaged changes." msgstr "Ðе удалоÑÑŒ выполнить перезапиÑÑŒ веток: У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ непроиндекÑированные изменениÑ." +#: git-sh-setup.sh:226 +msgid "Cannot pull with rebase: You have unstaged changes." +msgstr "Ðе удалоÑÑŒ получить Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼: У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ непроиндекÑированные изменениÑ." + #: git-sh-setup.sh:229 #, sh-format msgid "Cannot $action: You have unstaged changes." @@ -12935,11 +13729,19 @@ msgstr "Ðе удалоÑÑŒ выполнить $action: У Ð²Ð°Ñ ÐµÑÑ‚ÑŒ неРmsgid "Cannot rebase: Your index contains uncommitted changes." msgstr "Ðе удалоÑÑŒ выполнить перемещение коммитов: Ð’ вашем индекÑе еÑÑ‚ÑŒ незакоммиченные изменениÑ." +#: git-sh-setup.sh:245 +msgid "Cannot pull with rebase: Your index contains uncommitted changes." +msgstr "Ðе удалоÑÑŒ получить Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸ÐµÐ¼: Ð’ вашем индекÑе еÑÑ‚ÑŒ незакоммиченные изменениÑ." + #: git-sh-setup.sh:248 #, sh-format msgid "Cannot $action: Your index contains uncommitted changes." msgstr "Ðе удалоÑÑŒ выполнить $action: Ð’ вашем индекÑе еÑÑ‚ÑŒ незакоммиченные изменениÑ." +#: git-sh-setup.sh:252 +msgid "Additionally, your index contains uncommitted changes." +msgstr "К тому же, в вашем индекÑе еÑÑ‚ÑŒ незакоммиченные изменениÑ." + #: git-sh-setup.sh:372 msgid "You need to run this command from the toplevel of the working tree." msgstr "Вам нужно запуÑкать Ñту команду находÑÑÑŒ на вершине рабочего каталога." @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: git 2.11.0\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2016-11-22 22:10+0800\n" -"PO-Revision-Date: 2016-11-22 22:16+0800\n" +"POT-Creation-Date: 2016-11-25 22:50+0800\n" +"PO-Revision-Date: 2016-11-25 22:59+0800\n" "Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n" "Language-Team: Svenska <tp-sv@listor.tp-sv.se>\n" "Language: sv\n" @@ -2655,7 +2655,7 @@ msgstr "kunde inte skriva till \"%s\"" #: sequencer.c:251 #, c-format -msgid "could not write eol to '%s" +msgid "could not write eol to '%s'" msgstr "kunde inte skriva radslut till \"%s\"" #: sequencer.c:255 sequencer.c:1130 sequencer.c:1216 @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: git v2.11.0\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2016-11-22 22:10+0800\n" -"PO-Revision-Date: 2016-11-22 22:17+0800\n" +"POT-Creation-Date: 2016-11-25 22:50+0800\n" +"PO-Revision-Date: 2016-11-25 23:00+0800\n" "Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" "Language: vi\n" @@ -2638,7 +2638,7 @@ msgstr "không thể ghi và o “%sâ€" #: sequencer.c:251 #, c-format -msgid "could not write eol to '%s" +msgid "could not write eol to '%s'" msgstr "không thể ghi eol và o “%sâ€" #: sequencer.c:255 sequencer.c:1130 sequencer.c:1216 diff --git a/po/zh_CN.po b/po/zh_CN.po index 1ce25337ec..c38326c6f1 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -135,8 +135,8 @@ msgid "" msgstr "" "Project-Id-Version: Git\n" "Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n" -"POT-Creation-Date: 2016-11-22 22:10+0800\n" -"PO-Revision-Date: 2016-11-22 22:15+0800\n" +"POT-Creation-Date: 2016-11-25 22:50+0800\n" +"PO-Revision-Date: 2016-11-25 22:54+0800\n" "Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n" "Language-Team: GitHub <https://github.com/jiangxin/git/>\n" "Language: zh_CN\n" @@ -2732,7 +2732,7 @@ msgstr "ä¸èƒ½å†™å…¥ '%s'" #: sequencer.c:251 #, c-format -msgid "could not write eol to '%s" +msgid "could not write eol to '%s'" msgstr "ä¸èƒ½å°†æ¢è¡Œç¬¦å†™å…¥ '%s'" #: sequencer.c:255 sequencer.c:1130 sequencer.c:1216 @@ -10,6 +10,7 @@ #include "color.h" #include "reflog-walk.h" #include "gpg-interface.h" +#include "trailer.h" static char *user_format; static struct cmt_fmt_map { @@ -889,6 +890,16 @@ const char *format_subject(struct strbuf *sb, const char *msg, return msg; } +static void format_trailers(struct strbuf *sb, const char *msg) +{ + struct trailer_info info; + + trailer_info_get(&info, msg); + strbuf_add(sb, info.trailer_start, + info.trailer_end - info.trailer_start); + trailer_info_release(&info); +} + static void parse_commit_message(struct format_commit_context *c) { const char *msg = c->message + c->message_off; @@ -1292,6 +1303,12 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */ strbuf_addstr(sb, msg + c->body_off); return 1; } + + if (starts_with(placeholder, "(trailers)")) { + format_trailers(sb, msg + c->subject_off); + return strlen("(trailers)"); + } + return 0; /* unknown placeholder */ } diff --git a/read-cache.c b/read-cache.c index db5d910642..2eca639cce 100644 --- a/read-cache.c +++ b/read-cache.c @@ -156,14 +156,7 @@ void fill_stat_cache_info(struct cache_entry *ce, struct stat *st) static int ce_compare_data(const struct cache_entry *ce, struct stat *st) { int match = -1; - static int cloexec = O_CLOEXEC; - int fd = open(ce->name, O_RDONLY | cloexec); - - if ((cloexec & O_CLOEXEC) && fd < 0 && errno == EINVAL) { - /* Try again w/o O_CLOEXEC: the kernel might not support it */ - cloexec &= ~O_CLOEXEC; - fd = open(ce->name, O_RDONLY | cloexec); - } + int fd = git_open_cloexec(ce->name, O_RDONLY); if (fd >= 0) { unsigned char sha1[20]; @@ -1425,12 +1418,9 @@ static int read_index_extension(struct index_state *istate, return 0; } -int hold_locked_index(struct lock_file *lk, int die_on_error) +int hold_locked_index(struct lock_file *lk, int lock_flags) { - return hold_lock_file_for_update(lk, get_index_file(), - die_on_error - ? LOCK_DIE_ON_ERROR - : 0); + return hold_lock_file_for_update(lk, get_index_file(), lock_flags); } int read_index(struct index_state *istate) diff --git a/ref-filter.c b/ref-filter.c index d4c2931f3a..1a978405e6 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -13,6 +13,7 @@ #include "utf8.h" #include "git-compat-util.h" #include "version.h" +#include "trailer.h" typedef enum { FIELD_STR, FIELD_ULONG, FIELD_TIME } cmp_type; @@ -40,7 +41,7 @@ static struct used_atom { enum { RR_NORMAL, RR_SHORTEN, RR_TRACK, RR_TRACKSHORT } remote_ref; struct { - enum { C_BARE, C_BODY, C_BODY_DEP, C_LINES, C_SIG, C_SUB } option; + enum { C_BARE, C_BODY, C_BODY_DEP, C_LINES, C_SIG, C_SUB, C_TRAILERS } option; unsigned int nlines; } contents; enum { O_FULL, O_SHORT } objectname; @@ -85,6 +86,13 @@ static void subject_atom_parser(struct used_atom *atom, const char *arg) atom->u.contents.option = C_SUB; } +static void trailers_atom_parser(struct used_atom *atom, const char *arg) +{ + if (arg) + die(_("%%(trailers) does not take arguments")); + atom->u.contents.option = C_TRAILERS; +} + static void contents_atom_parser(struct used_atom *atom, const char *arg) { if (!arg) @@ -95,6 +103,8 @@ static void contents_atom_parser(struct used_atom *atom, const char *arg) atom->u.contents.option = C_SIG; else if (!strcmp(arg, "subject")) atom->u.contents.option = C_SUB; + else if (!strcmp(arg, "trailers")) + atom->u.contents.option = C_TRAILERS; else if (skip_prefix(arg, "lines=", &arg)) { atom->u.contents.option = C_LINES; if (strtoul_ui(arg, 10, &atom->u.contents.nlines)) @@ -194,6 +204,7 @@ static struct { { "creatordate", FIELD_TIME }, { "subject", FIELD_STR, subject_atom_parser }, { "body", FIELD_STR, body_atom_parser }, + { "trailers", FIELD_STR, trailers_atom_parser }, { "contents", FIELD_STR, contents_atom_parser }, { "upstream", FIELD_STR, remote_ref_atom_parser }, { "push", FIELD_STR, remote_ref_atom_parser }, @@ -785,6 +796,7 @@ static void grab_sub_body_contents(struct atom_value *val, int deref, struct obj name++; if (strcmp(name, "subject") && strcmp(name, "body") && + strcmp(name, "trailers") && !starts_with(name, "contents")) continue; if (!subpos) @@ -808,6 +820,14 @@ static void grab_sub_body_contents(struct atom_value *val, int deref, struct obj /* Size is the length of the message after removing the signature */ append_lines(&s, subpos, contents_end - subpos, atom->u.contents.nlines); v->s = strbuf_detach(&s, NULL); + } else if (atom->u.contents.option == C_TRAILERS) { + struct trailer_info info; + + /* Search for trailer info */ + trailer_info_get(&info, subpos); + v->s = xmemdupz(info.trailer_start, + info.trailer_end - info.trailer_start); + trailer_info_release(&info); } else if (atom->u.contents.option == C_BARE) v->s = xstrdup(subpos); } @@ -1017,7 +1037,7 @@ static void populate_value(struct ref_array_item *ref) head = resolve_ref_unsafe("HEAD", RESOLVE_REF_READING, sha1, NULL); - if (!strcmp(ref->refname, head)) + if (head && !strcmp(ref->refname, head)) v->s = "*"; else v->s = " "; @@ -1231,8 +1251,14 @@ static int commit_contains(struct ref_filter *filter, struct commit *commit) * matches a pattern "refs/heads/mas") or a wildcard (e.g. the same ref * matches "refs/heads/mas*", too). */ -static int match_pattern(const char **patterns, const char *refname) +static int match_pattern(const struct ref_filter *filter, const char *refname) { + const char **patterns = filter->name_patterns; + unsigned flags = 0; + + if (filter->ignore_case) + flags |= WM_CASEFOLD; + /* * When no '--format' option is given we need to skip the prefix * for matching refs of tags and branches. @@ -1243,7 +1269,7 @@ static int match_pattern(const char **patterns, const char *refname) skip_prefix(refname, "refs/", &refname)); for (; *patterns; patterns++) { - if (!wildmatch(*patterns, refname, 0, NULL)) + if (!wildmatch(*patterns, refname, flags, NULL)) return 1; } return 0; @@ -1255,9 +1281,15 @@ static int match_pattern(const char **patterns, const char *refname) * matches a pattern "refs/heads/" but not "refs/heads/m") or a * wildcard (e.g. the same ref matches "refs/heads/m*", too). */ -static int match_name_as_path(const char **pattern, const char *refname) +static int match_name_as_path(const struct ref_filter *filter, const char *refname) { + const char **pattern = filter->name_patterns; int namelen = strlen(refname); + unsigned flags = WM_PATHNAME; + + if (filter->ignore_case) + flags |= WM_CASEFOLD; + for (; *pattern; pattern++) { const char *p = *pattern; int plen = strlen(p); @@ -1280,8 +1312,8 @@ static int filter_pattern_match(struct ref_filter *filter, const char *refname) if (!*filter->name_patterns) return 1; /* No pattern always matches */ if (filter->match_as_path) - return match_name_as_path(filter->name_patterns, refname); - return match_pattern(filter->name_patterns, refname); + return match_name_as_path(filter, refname); + return match_pattern(filter, refname); } /* @@ -1536,18 +1568,20 @@ static int cmp_ref_sorting(struct ref_sorting *s, struct ref_array_item *a, stru struct atom_value *va, *vb; int cmp; cmp_type cmp_type = used_atom[s->atom].type; + int (*cmp_fn)(const char *, const char *); get_ref_atom_value(a, s->atom, &va); get_ref_atom_value(b, s->atom, &vb); + cmp_fn = s->ignore_case ? strcasecmp : strcmp; if (s->version) cmp = versioncmp(va->s, vb->s); else if (cmp_type == FIELD_STR) - cmp = strcmp(va->s, vb->s); + cmp = cmp_fn(va->s, vb->s); else { if (va->ul < vb->ul) cmp = -1; else if (va->ul == vb->ul) - cmp = strcmp(a->refname, b->refname); + cmp = cmp_fn(a->refname, b->refname); else cmp = 1; } diff --git a/ref-filter.h b/ref-filter.h index 14d435e2cc..fc55fa3574 100644 --- a/ref-filter.h +++ b/ref-filter.h @@ -29,6 +29,7 @@ struct ref_sorting { struct ref_sorting *next; int atom; /* index into used_atom array (internal) */ unsigned reverse : 1, + ignore_case : 1, version : 1; }; @@ -62,6 +63,7 @@ struct ref_filter { unsigned int with_commit_tag_algo : 1, match_as_path : 1, + ignore_case : 1, detached : 1; unsigned int kind, lines; diff --git a/remote-curl.c b/remote-curl.c index f14c41f4c0..34a97e7328 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -274,7 +274,7 @@ static struct discovery *discover_refs(const char *service, int for_push) struct strbuf effective_url = STRBUF_INIT; struct discovery *last = last_discovery; int http_ret, maybe_smart = 0; - struct http_get_options options; + struct http_get_options http_options; if (last && !strcmp(service, last->service)) return last; @@ -291,15 +291,16 @@ static struct discovery *discover_refs(const char *service, int for_push) strbuf_addf(&refs_url, "service=%s", service); } - memset(&options, 0, sizeof(options)); - options.content_type = &type; - options.charset = &charset; - options.effective_url = &effective_url; - options.base_url = &url; - options.no_cache = 1; - options.keep_error = 1; + memset(&http_options, 0, sizeof(http_options)); + http_options.content_type = &type; + http_options.charset = &charset; + http_options.effective_url = &effective_url; + http_options.base_url = &url; + http_options.initial_request = 1; + http_options.no_cache = 1; + http_options.keep_error = 1; - http_ret = http_get_strbuf(refs_url.buf, &buffer, &options); + http_ret = http_get_strbuf(refs_url.buf, &buffer, &http_options); switch (http_ret) { case HTTP_OK: break; @@ -314,6 +315,9 @@ static struct discovery *discover_refs(const char *service, int for_push) die("unable to access '%s': %s", url.buf, curl_errorstr); } + if (options.verbosity && !starts_with(refs_url.buf, url.buf)) + warning(_("redirecting to %s"), url.buf); + last= xcalloc(1, sizeof(*last_discovery)); last->service = service; last->buf_alloc = strbuf_detach(&buffer, &last->len); @@ -400,6 +404,7 @@ struct rpc_state { size_t pos; int in; int out; + int any_written; struct strbuf result; unsigned gzip_request : 1; unsigned initial_buffer : 1; @@ -456,6 +461,8 @@ static size_t rpc_in(char *ptr, size_t eltsize, { size_t size = eltsize * nmemb; struct rpc_state *rpc = buffer_; + if (size) + rpc->any_written = 1; write_or_die(rpc->in, ptr, size); return size; } @@ -659,6 +666,8 @@ retry: curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, rpc_in); curl_easy_setopt(slot->curl, CURLOPT_FILE, rpc); + + rpc->any_written = 0; err = run_slot(slot, NULL); if (err == HTTP_REAUTH && !large_request) { credential_fill(&http_auth); @@ -667,6 +676,9 @@ retry: if (err != HTTP_OK) err = -1; + if (!rpc->any_written) + err = -1; + curl_slist_free_all(headers); free(gzip_body); return err; @@ -708,7 +708,7 @@ static void update_paths(struct string_list *update) { int i; - hold_locked_index(&index_lock, 1); + hold_locked_index(&index_lock, LOCK_DIE_ON_ERROR); for (i = 0; i < update->nr; i++) { struct string_list_item *item = &update->items[i]; diff --git a/sequencer.c b/sequencer.c index 30b10ba143..9adb7bbf1d 100644 --- a/sequencer.c +++ b/sequencer.c @@ -16,6 +16,7 @@ #include "refs.h" #include "argv-array.h" #include "quote.h" +#include "trailer.h" #define GIT_REFLOG_ACTION "GIT_REFLOG_ACTION" @@ -27,6 +28,7 @@ GIT_PATH_FUNC(git_path_seq_dir, "sequencer") static GIT_PATH_FUNC(git_path_todo_file, "sequencer/todo") static GIT_PATH_FUNC(git_path_opts_file, "sequencer/opts") static GIT_PATH_FUNC(git_path_head_file, "sequencer/head") +static GIT_PATH_FUNC(git_path_abort_safety_file, "sequencer/abort-safety") /* * A script to set the GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, and @@ -56,30 +58,6 @@ static const char *get_todo_path(const struct replay_opts *opts) return git_path_todo_file(); } -static int is_rfc2822_line(const char *buf, int len) -{ - int i; - - for (i = 0; i < len; i++) { - int ch = buf[i]; - if (ch == ':') - return 1; - if (!isalnum(ch) && ch != '-') - break; - } - - return 0; -} - -static int is_cherry_picked_from_line(const char *buf, int len) -{ - /* - * We only care that it looks roughly like (cherry picked from ...) - */ - return len > strlen(cherry_picked_prefix) + 1 && - starts_with(buf, cherry_picked_prefix) && buf[len - 1] == ')'; -} - /* * Returns 0 for non-conforming footer * Returns 1 for conforming footer @@ -89,49 +67,25 @@ static int is_cherry_picked_from_line(const char *buf, int len) static int has_conforming_footer(struct strbuf *sb, struct strbuf *sob, int ignore_footer) { - char prev; - int i, k; - int len = sb->len - ignore_footer; - const char *buf = sb->buf; - int found_sob = 0; - - /* footer must end with newline */ - if (!len || buf[len - 1] != '\n') - return 0; + struct trailer_info info; + int i; + int found_sob = 0, found_sob_last = 0; - prev = '\0'; - for (i = len - 1; i > 0; i--) { - char ch = buf[i]; - if (prev == '\n' && ch == '\n') /* paragraph break */ - break; - prev = ch; - } + trailer_info_get(&info, sb->buf); - /* require at least one blank line */ - if (prev != '\n' || buf[i] != '\n') + if (info.trailer_start == info.trailer_end) return 0; - /* advance to start of last paragraph */ - while (i < len - 1 && buf[i] == '\n') - i++; - - for (; i < len; i = k) { - int found_rfc2822; - - for (k = i; k < len && buf[k] != '\n'; k++) - ; /* do nothing */ - k++; + for (i = 0; i < info.trailer_nr; i++) + if (sob && !strncmp(info.trailers[i], sob->buf, sob->len)) { + found_sob = 1; + if (i == info.trailer_nr - 1) + found_sob_last = 1; + } - found_rfc2822 = is_rfc2822_line(buf + i, k - i - 1); - if (found_rfc2822 && sob && - !strncmp(buf + i, sob->buf, sob->len)) - found_sob = k; + trailer_info_release(&info); - if (!(found_rfc2822 || - is_cherry_picked_from_line(buf + i, k - i - 1))) - return 0; - } - if (found_sob == i) + if (found_sob_last) return 3; if (found_sob) return 2; @@ -310,6 +264,20 @@ static int error_dirty_index(struct replay_opts *opts) return -1; } +static void update_abort_safety_file(void) +{ + struct object_id head; + + /* Do nothing on a single-pick */ + if (!file_exists(git_path_seq_dir())) + return; + + if (!get_oid("HEAD", &head)) + write_file(git_path_abort_safety_file(), "%s", oid_to_hex(&head)); + else + write_file(git_path_abort_safety_file(), "%s", ""); +} + static int fast_forward_to(const unsigned char *to, const unsigned char *from, int unborn, struct replay_opts *opts) { @@ -339,6 +307,7 @@ static int fast_forward_to(const unsigned char *to, const unsigned char *from, strbuf_release(&sb); strbuf_release(&err); ref_transaction_free(transaction); + update_abort_safety_file(); return 0; } @@ -370,7 +339,7 @@ static int do_recursive_merge(struct commit *base, struct commit *next, char **xopt; static struct lock_file index_lock; - hold_locked_index(&index_lock, 1); + hold_locked_index(&index_lock, LOCK_DIE_ON_ERROR); read_cache(); @@ -813,6 +782,7 @@ static int do_pick_commit(enum todo_command command, struct commit *commit, leave: free_message(commit, &msg); + update_abort_safety_file(); return res; } @@ -1132,9 +1102,34 @@ static int save_head(const char *head) return 0; } +static int rollback_is_safe(void) +{ + struct strbuf sb = STRBUF_INIT; + struct object_id expected_head, actual_head; + + if (strbuf_read_file(&sb, git_path_abort_safety_file(), 0) >= 0) { + strbuf_trim(&sb); + if (get_oid_hex(sb.buf, &expected_head)) { + strbuf_release(&sb); + die(_("could not parse %s"), git_path_abort_safety_file()); + } + strbuf_release(&sb); + } + else if (errno == ENOENT) + oidclr(&expected_head); + else + die_errno(_("could not read '%s'"), git_path_abort_safety_file()); + + if (get_oid("HEAD", &actual_head)) + oidclr(&actual_head); + + return !oidcmp(&actual_head, &expected_head); +} + static int reset_for_rollback(const unsigned char *sha1) { const char *argv[4]; /* reset --merge <arg> + NULL */ + argv[0] = "reset"; argv[1] = "--merge"; argv[2] = sha1_to_hex(sha1); @@ -1189,6 +1184,12 @@ int sequencer_rollback(struct replay_opts *opts) error(_("cannot abort from a branch yet to be born")); goto fail; } + + if (!rollback_is_safe()) { + /* Do not error, just do not rollback */ + warning(_("You seem to have moved HEAD. " + "Not rewinding, check your HEAD!")); + } else if (reset_for_rollback(sha1)) goto fail; strbuf_release(&buf); @@ -1393,6 +1394,7 @@ int sequencer_pick_revisions(struct replay_opts *opts) return -1; if (save_opts(opts)) return -1; + update_abort_safety_file(); res = pick_commits(&todo_list, opts); todo_list_release(&todo_list); return res; diff --git a/sha1_file.c b/sha1_file.c index 9c86d1924a..1eb47f6113 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -26,14 +26,7 @@ #include "mru.h" #include "list.h" #include "mergesort.h" - -#ifndef O_NOATIME -#if defined(__linux__) && (defined(__i386__) || defined(__PPC__)) -#define O_NOATIME 01000000 -#else -#define O_NOATIME 0 -#endif -#endif +#include "quote.h" #define SZ_FMT PRIuMAX static inline uintmax_t sz_fmt(size_t s) { return s; } @@ -329,13 +322,40 @@ static int link_alt_odb_entry(const char *entry, const char *relative_base, return 0; } +static const char *parse_alt_odb_entry(const char *string, + int sep, + struct strbuf *out) +{ + const char *end; + + strbuf_reset(out); + + if (*string == '#') { + /* comment; consume up to next separator */ + end = strchrnul(string, sep); + } else if (*string == '"' && !unquote_c_style(out, string, &end)) { + /* + * quoted path; unquote_c_style has copied the + * data for us and set "end". Broken quoting (e.g., + * an entry that doesn't end with a quote) falls + * back to the unquoted case below. + */ + } else { + /* normal, unquoted path */ + end = strchrnul(string, sep); + strbuf_add(out, string, end - string); + } + + if (*end) + end++; + return end; +} + static void link_alt_odb_entries(const char *alt, int len, int sep, const char *relative_base, int depth) { - struct string_list entries = STRING_LIST_INIT_NODUP; - char *alt_copy; - int i; struct strbuf objdirbuf = STRBUF_INIT; + struct strbuf entry = STRBUF_INIT; if (depth > 5) { error("%s: ignoring alternate object stores, nesting too deep.", @@ -348,16 +368,13 @@ static void link_alt_odb_entries(const char *alt, int len, int sep, die("unable to normalize object directory: %s", objdirbuf.buf); - alt_copy = xmemdupz(alt, len); - string_list_split_in_place(&entries, alt_copy, sep, -1); - for (i = 0; i < entries.nr; i++) { - const char *entry = entries.items[i].string; - if (entry[0] == '\0' || entry[0] == '#') + while (*alt) { + alt = parse_alt_odb_entry(alt, sep, &entry); + if (!entry.len) continue; - link_alt_odb_entry(entry, relative_base, depth, objdirbuf.buf); + link_alt_odb_entry(entry.buf, relative_base, depth, objdirbuf.buf); } - string_list_clear(&entries, 0); - free(alt_copy); + strbuf_release(&entry); strbuf_release(&objdirbuf); } @@ -1586,31 +1603,31 @@ int check_sha1_signature(const unsigned char *sha1, void *map, return hashcmp(sha1, real_sha1) ? -1 : 0; } -int git_open(const char *name) +int git_open_cloexec(const char *name, int flags) { - static int sha1_file_open_flag = O_NOATIME | O_CLOEXEC; - - for (;;) { - int fd; - - errno = 0; - fd = open(name, O_RDONLY | sha1_file_open_flag); - if (fd >= 0) - return fd; + int fd; + static int o_cloexec = O_CLOEXEC; + fd = open(name, flags | o_cloexec); + if ((o_cloexec & O_CLOEXEC) && fd < 0 && errno == EINVAL) { /* Try again w/o O_CLOEXEC: the kernel might not support it */ - if ((sha1_file_open_flag & O_CLOEXEC) && errno == EINVAL) { - sha1_file_open_flag &= ~O_CLOEXEC; - continue; - } + o_cloexec &= ~O_CLOEXEC; + fd = open(name, flags | o_cloexec); + } - /* Might the failure be due to O_NOATIME? */ - if (errno != ENOENT && (sha1_file_open_flag & O_NOATIME)) { - sha1_file_open_flag &= ~O_NOATIME; - continue; +#if defined(F_GETFL) && defined(F_SETFL) && defined(FD_CLOEXEC) + { + static int fd_cloexec = FD_CLOEXEC; + + if (!o_cloexec && 0 <= fd && fd_cloexec) { + /* Opened w/o O_CLOEXEC? try with fcntl(2) to add it */ + int flags = fcntl(fd, F_GETFL); + if (fcntl(fd, F_SETFL, flags | fd_cloexec)) + fd_cloexec = 0; } - return -1; } +#endif + return fd; } static int stat_sha1_file(const unsigned char *sha1, struct stat *st) @@ -431,12 +431,14 @@ void remove_nonexistent_theirs_shallow(struct shallow_info *info) define_commit_slab(ref_bitmap, uint32_t *); +#define POOL_SIZE (512 * 1024) + struct paint_info { struct ref_bitmap ref_bitmap; unsigned nr_bits; - char **slab; + char **pools; char *free, *end; - unsigned slab_count; + unsigned pool_count; }; static uint32_t *paint_alloc(struct paint_info *info) @@ -444,12 +446,15 @@ static uint32_t *paint_alloc(struct paint_info *info) unsigned nr = (info->nr_bits + 31) / 32; unsigned size = nr * sizeof(uint32_t); void *p; - if (!info->slab_count || info->free + size > info->end) { - info->slab_count++; - REALLOC_ARRAY(info->slab, info->slab_count); - info->free = xmalloc(COMMIT_SLAB_SIZE); - info->slab[info->slab_count - 1] = info->free; - info->end = info->free + COMMIT_SLAB_SIZE; + if (!info->pool_count || size > info->end - info->free) { + if (size > POOL_SIZE) + die("BUG: pool size too small for %d in paint_alloc()", + size); + info->pool_count++; + REALLOC_ARRAY(info->pools, info->pool_count); + info->free = xmalloc(POOL_SIZE); + info->pools[info->pool_count - 1] = info->free; + info->end = info->free + POOL_SIZE; } p = info->free; info->free += size; @@ -462,7 +467,7 @@ static uint32_t *paint_alloc(struct paint_info *info) * all walked commits. */ static void paint_down(struct paint_info *info, const unsigned char *sha1, - int id) + unsigned int id) { unsigned int i, nr; struct commit_list *head = NULL; @@ -474,7 +479,7 @@ static void paint_down(struct paint_info *info, const unsigned char *sha1, if (!c) return; memset(bitmap, 0, bitmap_size); - bitmap[id / 32] |= (1 << (id % 32)); + bitmap[id / 32] |= (1U << (id % 32)); commit_list_insert(c, &head); while (head) { struct commit_list *p; @@ -507,12 +512,8 @@ static void paint_down(struct paint_info *info, const unsigned char *sha1, oid_to_hex(&c->object.oid)); for (p = c->parents; p; p = p->next) { - uint32_t **p_refs = ref_bitmap_at(&info->ref_bitmap, - p->item); if (p->item->object.flags & SEEN) continue; - if (*p_refs == NULL || *p_refs == *refs) - *p_refs = *refs; commit_list_insert(p->item, &head); } } @@ -624,9 +625,9 @@ void assign_shallow_commits_to_refs(struct shallow_info *info, post_assign_shallow(info, &pi.ref_bitmap, ref_status); clear_ref_bitmap(&pi.ref_bitmap); - for (i = 0; i < pi.slab_count; i++) - free(pi.slab[i]); - free(pi.slab); + for (i = 0; i < pi.pool_count; i++) + free(pi.pools[i]); + free(pi.pools); free(shallow); } @@ -648,11 +649,11 @@ static int add_ref(const char *refname, const struct object_id *oid, static void update_refstatus(int *ref_status, int nr, uint32_t *bitmap) { - int i; + unsigned int i; if (!ref_status) return; for (i = 0; i < nr; i++) - if (bitmap[i / 32] & (1 << (i % 32))) + if (bitmap[i / 32] & (1U << (i % 32))) ref_status[i]++; } diff --git a/shortlog.h b/shortlog.h index 5a326c6860..5d64cfe929 100644 --- a/shortlog.h +++ b/shortlog.h @@ -13,6 +13,7 @@ struct shortlog { int in2; int user_format; int abbrev; + int committer; char *common_repo_prefix; int email; diff --git a/submodule-config.c b/submodule-config.c index 098085be69..ec13ab5a3d 100644 --- a/submodule-config.c +++ b/submodule-config.c @@ -263,12 +263,12 @@ int parse_push_recurse_submodules_arg(const char *opt, const char *arg) return parse_push_recurse(opt, arg, 1); } -static void warn_multiple_config(const unsigned char *commit_sha1, +static void warn_multiple_config(const unsigned char *treeish_name, const char *name, const char *option) { const char *commit_string = "WORKTREE"; - if (commit_sha1) - commit_string = sha1_to_hex(commit_sha1); + if (treeish_name) + commit_string = sha1_to_hex(treeish_name); warning("%s:.gitmodules, multiple configurations found for " "'submodule.%s.%s'. Skipping second one!", commit_string, name, option); @@ -276,7 +276,7 @@ static void warn_multiple_config(const unsigned char *commit_sha1, struct parse_config_parameter { struct submodule_cache *cache; - const unsigned char *commit_sha1; + const unsigned char *treeish_name; const unsigned char *gitmodules_sha1; int overwrite; }; @@ -300,7 +300,7 @@ static int parse_config(const char *var, const char *value, void *data) if (!value) ret = config_error_nonbool(var); else if (!me->overwrite && submodule->path) - warn_multiple_config(me->commit_sha1, submodule->name, + warn_multiple_config(me->treeish_name, submodule->name, "path"); else { if (submodule->path) @@ -314,7 +314,7 @@ static int parse_config(const char *var, const char *value, void *data) int die_on_error = is_null_sha1(me->gitmodules_sha1); if (!me->overwrite && submodule->fetch_recurse != RECURSE_SUBMODULES_NONE) - warn_multiple_config(me->commit_sha1, submodule->name, + warn_multiple_config(me->treeish_name, submodule->name, "fetchrecursesubmodules"); else submodule->fetch_recurse = parse_fetch_recurse( @@ -324,7 +324,7 @@ static int parse_config(const char *var, const char *value, void *data) if (!value) ret = config_error_nonbool(var); else if (!me->overwrite && submodule->ignore) - warn_multiple_config(me->commit_sha1, submodule->name, + warn_multiple_config(me->treeish_name, submodule->name, "ignore"); else if (strcmp(value, "untracked") && strcmp(value, "dirty") && @@ -340,7 +340,7 @@ static int parse_config(const char *var, const char *value, void *data) if (!value) { ret = config_error_nonbool(var); } else if (!me->overwrite && submodule->url) { - warn_multiple_config(me->commit_sha1, submodule->name, + warn_multiple_config(me->treeish_name, submodule->name, "url"); } else { free((void *) submodule->url); @@ -351,21 +351,21 @@ static int parse_config(const char *var, const char *value, void *data) ret = config_error_nonbool(var); else if (!me->overwrite && submodule->update_strategy.type != SM_UPDATE_UNSPECIFIED) - warn_multiple_config(me->commit_sha1, submodule->name, + warn_multiple_config(me->treeish_name, submodule->name, "update"); else if (parse_submodule_update_strategy(value, &submodule->update_strategy) < 0) die(_("invalid value for %s"), var); } else if (!strcmp(item.buf, "shallow")) { if (!me->overwrite && submodule->recommend_shallow != -1) - warn_multiple_config(me->commit_sha1, submodule->name, + warn_multiple_config(me->treeish_name, submodule->name, "shallow"); else submodule->recommend_shallow = git_config_bool(var, value); } else if (!strcmp(item.buf, "branch")) { if (!me->overwrite && submodule->branch) - warn_multiple_config(me->commit_sha1, submodule->name, + warn_multiple_config(me->treeish_name, submodule->name, "branch"); else { free((void *)submodule->branch); @@ -379,18 +379,18 @@ static int parse_config(const char *var, const char *value, void *data) return ret; } -static int gitmodule_sha1_from_commit(const unsigned char *commit_sha1, +static int gitmodule_sha1_from_commit(const unsigned char *treeish_name, unsigned char *gitmodules_sha1, struct strbuf *rev) { int ret = 0; - if (is_null_sha1(commit_sha1)) { + if (is_null_sha1(treeish_name)) { hashclr(gitmodules_sha1); return 1; } - strbuf_addf(rev, "%s:.gitmodules", sha1_to_hex(commit_sha1)); + strbuf_addf(rev, "%s:.gitmodules", sha1_to_hex(treeish_name)); if (get_sha1(rev->buf, gitmodules_sha1) >= 0) ret = 1; @@ -402,7 +402,7 @@ static int gitmodule_sha1_from_commit(const unsigned char *commit_sha1, * revisions. */ static const struct submodule *config_from(struct submodule_cache *cache, - const unsigned char *commit_sha1, const char *key, + const unsigned char *treeish_name, const char *key, enum lookup_type lookup_type) { struct strbuf rev = STRBUF_INIT; @@ -418,7 +418,7 @@ static const struct submodule *config_from(struct submodule_cache *cache, * return the first submodule. Can be used to check whether * there are any submodules parsed. */ - if (!commit_sha1 || !key) { + if (!treeish_name || !key) { struct hashmap_iter iter; struct submodule_entry *entry; @@ -428,7 +428,7 @@ static const struct submodule *config_from(struct submodule_cache *cache, return entry->config; } - if (!gitmodule_sha1_from_commit(commit_sha1, sha1, &rev)) + if (!gitmodule_sha1_from_commit(treeish_name, sha1, &rev)) goto out; switch (lookup_type) { @@ -448,7 +448,7 @@ static const struct submodule *config_from(struct submodule_cache *cache, /* fill the submodule config into the cache */ parameter.cache = cache; - parameter.commit_sha1 = commit_sha1; + parameter.treeish_name = treeish_name; parameter.gitmodules_sha1 = sha1; parameter.overwrite = 0; git_config_from_mem(parse_config, CONFIG_ORIGIN_SUBMODULE_BLOB, rev.buf, @@ -471,18 +471,6 @@ out: return submodule; } -static const struct submodule *config_from_path(struct submodule_cache *cache, - const unsigned char *commit_sha1, const char *path) -{ - return config_from(cache, commit_sha1, path, lookup_path); -} - -static const struct submodule *config_from_name(struct submodule_cache *cache, - const unsigned char *commit_sha1, const char *name) -{ - return config_from(cache, commit_sha1, name, lookup_name); -} - static void ensure_cache_init(void) { if (is_cache_init) @@ -496,7 +484,7 @@ int parse_submodule_config_option(const char *var, const char *value) { struct parse_config_parameter parameter; parameter.cache = &the_submodule_cache; - parameter.commit_sha1 = NULL; + parameter.treeish_name = NULL; parameter.gitmodules_sha1 = null_sha1; parameter.overwrite = 1; @@ -504,18 +492,18 @@ int parse_submodule_config_option(const char *var, const char *value) return parse_config(var, value, ¶meter); } -const struct submodule *submodule_from_name(const unsigned char *commit_sha1, +const struct submodule *submodule_from_name(const unsigned char *treeish_name, const char *name) { ensure_cache_init(); - return config_from_name(&the_submodule_cache, commit_sha1, name); + return config_from(&the_submodule_cache, treeish_name, name, lookup_name); } -const struct submodule *submodule_from_path(const unsigned char *commit_sha1, +const struct submodule *submodule_from_path(const unsigned char *treeish_name, const char *path) { ensure_cache_init(); - return config_from_path(&the_submodule_cache, commit_sha1, path); + return config_from(&the_submodule_cache, treeish_name, path, lookup_path); } void submodule_free(void) diff --git a/submodule-config.h b/submodule-config.h index d05c542d2c..99df8e593c 100644 --- a/submodule-config.h +++ b/submodule-config.h @@ -25,9 +25,9 @@ struct submodule { int parse_fetch_recurse_submodules_arg(const char *opt, const char *arg); int parse_push_recurse_submodules_arg(const char *opt, const char *arg); int parse_submodule_config_option(const char *var, const char *value); -const struct submodule *submodule_from_name(const unsigned char *commit_sha1, +const struct submodule *submodule_from_name(const unsigned char *commit_or_tree, const char *name); -const struct submodule *submodule_from_path(const unsigned char *commit_sha1, +const struct submodule *submodule_from_path(const unsigned char *commit_or_tree, const char *path); void submodule_free(void); diff --git a/submodule.c b/submodule.c index 45ccfb7ab4..73521cdbb2 100644 --- a/submodule.c +++ b/submodule.c @@ -501,27 +501,67 @@ static int has_remote(const char *refname, const struct object_id *oid, return 1; } -static int submodule_needs_pushing(const char *path, const unsigned char sha1[20]) +static int append_sha1_to_argv(const unsigned char sha1[20], void *data) { - if (add_submodule_odb(path) || !lookup_commit_reference(sha1)) + struct argv_array *argv = data; + argv_array_push(argv, sha1_to_hex(sha1)); + return 0; +} + +static int check_has_commit(const unsigned char sha1[20], void *data) +{ + int *has_commit = data; + + if (!lookup_commit_reference(sha1)) + *has_commit = 0; + + return 0; +} + +static int submodule_has_commits(const char *path, struct sha1_array *commits) +{ + int has_commit = 1; + + if (add_submodule_odb(path)) + return 0; + + sha1_array_for_each_unique(commits, check_has_commit, &has_commit); + return has_commit; +} + +static int submodule_needs_pushing(const char *path, struct sha1_array *commits) +{ + if (!submodule_has_commits(path, commits)) + /* + * NOTE: We do consider it safe to return "no" here. The + * correct answer would be "We do not know" instead of + * "No push needed", but it is quite hard to change + * the submodule pointer without having the submodule + * around. If a user did however change the submodules + * without having the submodule around, this indicates + * an expert who knows what they are doing or a + * maintainer integrating work from other people. In + * both cases it should be safe to skip this check. + */ return 0; if (for_each_remote_ref_submodule(path, has_remote, NULL) > 0) { struct child_process cp = CHILD_PROCESS_INIT; - const char *argv[] = {"rev-list", NULL, "--not", "--remotes", "-n", "1" , NULL}; struct strbuf buf = STRBUF_INIT; int needs_pushing = 0; - argv[1] = sha1_to_hex(sha1); - cp.argv = argv; + argv_array_push(&cp.args, "rev-list"); + sha1_array_for_each_unique(commits, append_sha1_to_argv, &cp.args); + argv_array_pushl(&cp.args, "--not", "--remotes", "-n", "1" , NULL); + prepare_submodule_repo_env(&cp.env_array); cp.git_cmd = 1; cp.no_stdin = 1; cp.out = -1; cp.dir = path; if (start_command(&cp)) - die("Could not run 'git rev-list %s --not --remotes -n 1' command in submodule %s", - sha1_to_hex(sha1), path); + die("Could not run 'git rev-list <commits> --not --remotes -n 1' command in submodule %s", + path); if (strbuf_read(&buf, cp.out, 41)) needs_pushing = 1; finish_command(&cp); @@ -533,19 +573,34 @@ static int submodule_needs_pushing(const char *path, const unsigned char sha1[20 return 0; } +static struct sha1_array *submodule_commits(struct string_list *submodules, + const char *path) +{ + struct string_list_item *item; + + item = string_list_insert(submodules, path); + if (item->util) + return (struct sha1_array *) item->util; + + /* NEEDSWORK: should we have sha1_array_init()? */ + item->util = xcalloc(1, sizeof(struct sha1_array)); + return (struct sha1_array *) item->util; +} + static void collect_submodules_from_diff(struct diff_queue_struct *q, struct diff_options *options, void *data) { int i; - struct string_list *needs_pushing = data; + struct string_list *submodules = data; for (i = 0; i < q->nr; i++) { struct diff_filepair *p = q->queue[i]; + struct sha1_array *commits; if (!S_ISGITLINK(p->two->mode)) continue; - if (submodule_needs_pushing(p->two->path, p->two->oid.hash)) - string_list_insert(needs_pushing, p->two->path); + commits = submodule_commits(submodules, p->two->path); + sha1_array_append(commits, p->two->oid.hash); } } @@ -561,46 +616,63 @@ static void find_unpushed_submodule_commits(struct commit *commit, diff_tree_combined_merge(commit, 1, &rev); } -int find_unpushed_submodules(unsigned char new_sha1[20], +static void free_submodules_sha1s(struct string_list *submodules) +{ + struct string_list_item *item; + for_each_string_list_item(item, submodules) + sha1_array_clear((struct sha1_array *) item->util); + string_list_clear(submodules, 1); +} + +int find_unpushed_submodules(struct sha1_array *commits, const char *remotes_name, struct string_list *needs_pushing) { struct rev_info rev; struct commit *commit; - const char *argv[] = {NULL, NULL, "--not", "NULL", NULL}; - int argc = ARRAY_SIZE(argv) - 1; - char *sha1_copy; - - struct strbuf remotes_arg = STRBUF_INIT; + struct string_list submodules = STRING_LIST_INIT_DUP; + struct string_list_item *submodule; + struct argv_array argv = ARGV_ARRAY_INIT; - strbuf_addf(&remotes_arg, "--remotes=%s", remotes_name); init_revisions(&rev, NULL); - sha1_copy = xstrdup(sha1_to_hex(new_sha1)); - argv[1] = sha1_copy; - argv[3] = remotes_arg.buf; - setup_revisions(argc, argv, &rev, NULL); + + /* argv.argv[0] will be ignored by setup_revisions */ + argv_array_push(&argv, "find_unpushed_submodules"); + sha1_array_for_each_unique(commits, append_sha1_to_argv, &argv); + argv_array_push(&argv, "--not"); + argv_array_pushf(&argv, "--remotes=%s", remotes_name); + + setup_revisions(argv.argc, argv.argv, &rev, NULL); if (prepare_revision_walk(&rev)) die("revision walk setup failed"); while ((commit = get_revision(&rev)) != NULL) - find_unpushed_submodule_commits(commit, needs_pushing); + find_unpushed_submodule_commits(commit, &submodules); reset_revision_walk(); - free(sha1_copy); - strbuf_release(&remotes_arg); + argv_array_clear(&argv); + + for_each_string_list_item(submodule, &submodules) { + struct sha1_array *commits = (struct sha1_array *) submodule->util; + + if (submodule_needs_pushing(submodule->string, commits)) + string_list_insert(needs_pushing, submodule->string); + } + free_submodules_sha1s(&submodules); return needs_pushing->nr; } -static int push_submodule(const char *path) +static int push_submodule(const char *path, int dry_run) { if (add_submodule_odb(path)) return 1; if (for_each_remote_ref_submodule(path, has_remote, NULL) > 0) { struct child_process cp = CHILD_PROCESS_INIT; - const char *argv[] = {"push", NULL}; + argv_array_push(&cp.args, "push"); + if (dry_run) + argv_array_push(&cp.args, "--dry-run"); - cp.argv = argv; prepare_submodule_repo_env(&cp.env_array); cp.git_cmd = 1; cp.no_stdin = 1; @@ -613,18 +685,20 @@ static int push_submodule(const char *path) return 1; } -int push_unpushed_submodules(unsigned char new_sha1[20], const char *remotes_name) +int push_unpushed_submodules(struct sha1_array *commits, + const char *remotes_name, + int dry_run) { int i, ret = 1; struct string_list needs_pushing = STRING_LIST_INIT_DUP; - if (!find_unpushed_submodules(new_sha1, remotes_name, &needs_pushing)) + if (!find_unpushed_submodules(commits, remotes_name, &needs_pushing)) return 1; for (i = 0; i < needs_pushing.nr; i++) { const char *path = needs_pushing.items[i].string; fprintf(stderr, "Pushing submodule '%s'\n", path); - if (!push_submodule(path)) { + if (!push_submodule(path, dry_run)) { fprintf(stderr, "Unable to push submodule '%s'\n", path); ret = 0; } diff --git a/submodule.h b/submodule.h index 6229054b99..b7576d6f43 100644 --- a/submodule.h +++ b/submodule.h @@ -3,6 +3,7 @@ struct diff_options; struct argv_array; +struct sha1_array; enum { RECURSE_SUBMODULES_CHECK = -4, @@ -62,9 +63,11 @@ int submodule_uses_gitfile(const char *path); int ok_to_remove_submodule(const char *path); int merge_submodule(unsigned char result[20], const char *path, const unsigned char base[20], const unsigned char a[20], const unsigned char b[20], int search); -int find_unpushed_submodules(unsigned char new_sha1[20], const char *remotes_name, +int find_unpushed_submodules(struct sha1_array *commits, const char *remotes_name, struct string_list *needs_pushing); -int push_unpushed_submodules(unsigned char new_sha1[20], const char *remotes_name); +extern int push_unpushed_submodules(struct sha1_array *commits, + const char *remotes_name, + int dry_run); int parallel_submodules(void); /* diff --git a/t/helper/test-scrap-cache-tree.c b/t/helper/test-scrap-cache-tree.c index 27fe0405b8..d2a63bea43 100644 --- a/t/helper/test-scrap-cache-tree.c +++ b/t/helper/test-scrap-cache-tree.c @@ -8,7 +8,7 @@ static struct lock_file index_lock; int cmd_main(int ac, const char **av) { setup_git_directory(); - hold_locked_index(&index_lock, 1); + hold_locked_index(&index_lock, LOCK_DIE_ON_ERROR); if (read_cache() < 0) die("unable to read index file"); active_cache_tree = NULL; diff --git a/t/lib-httpd/apache.conf b/t/lib-httpd/apache.conf index c3e631394f..69174c6e31 100644 --- a/t/lib-httpd/apache.conf +++ b/t/lib-httpd/apache.conf @@ -123,6 +123,7 @@ ScriptAlias /error/ error.sh/ </Files> RewriteEngine on +RewriteRule ^/dumb-redir/(.*)$ /dumb/$1 [R=301] RewriteRule ^/smart-redir-perm/(.*)$ /smart/$1 [R=301] RewriteRule ^/smart-redir-temp/(.*)$ /smart/$1 [R=302] RewriteRule ^/smart-redir-auth/(.*)$ /auth/smart/$1 [R=301] @@ -132,6 +133,19 @@ RewriteRule ^/ftp-redir/(.*)$ ftp://localhost:1000/$1 [R=302] RewriteRule ^/loop-redir/x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-(.*) /$1 [R=302] RewriteRule ^/loop-redir/(.*)$ /loop-redir/x-$1 [R=302] +# The first rule issues a client-side redirect to something +# that _doesn't_ look like a git repo. The second rule is a +# server-side rewrite, so that it turns out the odd-looking +# thing _is_ a git repo. The "[PT]" tells Apache to match +# the usual ScriptAlias rules for /smart. +RewriteRule ^/insane-redir/(.*)$ /intern-redir/$1/foo [R=301] +RewriteRule ^/intern-redir/(.*)/foo$ /smart/$1 [PT] + +# Serve info/refs internally without redirecting, but +# issue a redirect for any object requests. +RewriteRule ^/redir-objects/(.*/info/refs)$ /dumb/$1 [PT] +RewriteRule ^/redir-objects/(.*/objects/.*)$ /dumb/$1 [R=301] + # Apache 2.2 does not understand <RequireAll>, so we use RewriteCond. # And as RewriteCond does not allow testing for non-matches, we match # the desired case first (one has abra, two has cadabra), and let it diff --git a/t/lib-proto-disable.sh b/t/lib-proto-disable.sh index b0917d93e6..02f49cb409 100644 --- a/t/lib-proto-disable.sh +++ b/t/lib-proto-disable.sh @@ -1,15 +1,12 @@ # Test routines for checking protocol disabling. -# test cloning a particular protocol -# $1 - description of the protocol -# $2 - machine-readable name of the protocol -# $3 - the URL to try cloning -test_proto () { +# Test clone/fetch/push with GIT_ALLOW_PROTOCOL whitelist +test_whitelist () { desc=$1 proto=$2 url=$3 - test_expect_success "clone $1 (enabled)" ' + test_expect_success "clone $desc (enabled)" ' rm -rf tmp.git && ( GIT_ALLOW_PROTOCOL=$proto && @@ -18,7 +15,7 @@ test_proto () { ) ' - test_expect_success "fetch $1 (enabled)" ' + test_expect_success "fetch $desc (enabled)" ' ( cd tmp.git && GIT_ALLOW_PROTOCOL=$proto && @@ -27,7 +24,7 @@ test_proto () { ) ' - test_expect_success "push $1 (enabled)" ' + test_expect_success "push $desc (enabled)" ' ( cd tmp.git && GIT_ALLOW_PROTOCOL=$proto && @@ -36,7 +33,7 @@ test_proto () { ) ' - test_expect_success "push $1 (disabled)" ' + test_expect_success "push $desc (disabled)" ' ( cd tmp.git && GIT_ALLOW_PROTOCOL=none && @@ -45,7 +42,7 @@ test_proto () { ) ' - test_expect_success "fetch $1 (disabled)" ' + test_expect_success "fetch $desc (disabled)" ' ( cd tmp.git && GIT_ALLOW_PROTOCOL=none && @@ -54,7 +51,7 @@ test_proto () { ) ' - test_expect_success "clone $1 (disabled)" ' + test_expect_success "clone $desc (disabled)" ' rm -rf tmp.git && ( GIT_ALLOW_PROTOCOL=none && @@ -62,6 +59,129 @@ test_proto () { test_must_fail git clone --bare "$url" tmp.git ) ' + + test_expect_success "clone $desc (env var has precedence)" ' + rm -rf tmp.git && + ( + GIT_ALLOW_PROTOCOL=none && + export GIT_ALLOW_PROTOCOL && + test_must_fail git -c protocol.allow=always clone --bare "$url" tmp.git && + test_must_fail git -c protocol.$proto.allow=always clone --bare "$url" tmp.git + ) + ' +} + +test_config () { + desc=$1 + proto=$2 + url=$3 + + # Test clone/fetch/push with protocol.<type>.allow config + test_expect_success "clone $desc (enabled with config)" ' + rm -rf tmp.git && + git -c protocol.$proto.allow=always clone --bare "$url" tmp.git + ' + + test_expect_success "fetch $desc (enabled)" ' + git -C tmp.git -c protocol.$proto.allow=always fetch + ' + + test_expect_success "push $desc (enabled)" ' + git -C tmp.git -c protocol.$proto.allow=always push origin HEAD:pushed + ' + + test_expect_success "push $desc (disabled)" ' + test_must_fail git -C tmp.git -c protocol.$proto.allow=never push origin HEAD:pushed + ' + + test_expect_success "fetch $desc (disabled)" ' + test_must_fail git -C tmp.git -c protocol.$proto.allow=never fetch + ' + + test_expect_success "clone $desc (disabled)" ' + rm -rf tmp.git && + test_must_fail git -c protocol.$proto.allow=never clone --bare "$url" tmp.git + ' + + # Test clone/fetch/push with protocol.user.allow and its env var + test_expect_success "clone $desc (enabled)" ' + rm -rf tmp.git && + git -c protocol.$proto.allow=user clone --bare "$url" tmp.git + ' + + test_expect_success "fetch $desc (enabled)" ' + git -C tmp.git -c protocol.$proto.allow=user fetch + ' + + test_expect_success "push $desc (enabled)" ' + git -C tmp.git -c protocol.$proto.allow=user push origin HEAD:pushed + ' + + test_expect_success "push $desc (disabled)" ' + ( + cd tmp.git && + GIT_PROTOCOL_FROM_USER=0 && + export GIT_PROTOCOL_FROM_USER && + test_must_fail git -c protocol.$proto.allow=user push origin HEAD:pushed + ) + ' + + test_expect_success "fetch $desc (disabled)" ' + ( + cd tmp.git && + GIT_PROTOCOL_FROM_USER=0 && + export GIT_PROTOCOL_FROM_USER && + test_must_fail git -c protocol.$proto.allow=user fetch + ) + ' + + test_expect_success "clone $desc (disabled)" ' + rm -rf tmp.git && + ( + GIT_PROTOCOL_FROM_USER=0 && + export GIT_PROTOCOL_FROM_USER && + test_must_fail git -c protocol.$proto.allow=user clone --bare "$url" tmp.git + ) + ' + + # Test clone/fetch/push with protocol.allow user defined default + test_expect_success "clone $desc (enabled)" ' + rm -rf tmp.git && + git config --global protocol.allow always && + git clone --bare "$url" tmp.git + ' + + test_expect_success "fetch $desc (enabled)" ' + git -C tmp.git fetch + ' + + test_expect_success "push $desc (enabled)" ' + git -C tmp.git push origin HEAD:pushed + ' + + test_expect_success "push $desc (disabled)" ' + git config --global protocol.allow never && + test_must_fail git -C tmp.git push origin HEAD:pushed + ' + + test_expect_success "fetch $desc (disabled)" ' + test_must_fail git -C tmp.git fetch + ' + + test_expect_success "clone $desc (disabled)" ' + rm -rf tmp.git && + test_must_fail git clone --bare "$url" tmp.git + ' +} + +# test cloning a particular protocol +# $1 - description of the protocol +# $2 - machine-readable name of the protocol +# $3 - the URL to try cloning +test_proto () { + test_whitelist "$@" + + test_config "$@" } # set up an ssh wrapper that will access $host/$repo in the diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh index 4ea534e9fa..161f560446 100755 --- a/t/t0021-conversion.sh +++ b/t/t0021-conversion.sh @@ -93,7 +93,7 @@ test_expect_success setup ' git checkout -- test test.t test.i && echo "content-test2" >test2.o && - echo "content-test3 - filename with special characters" >"test3 '\''sq'\'',\$x.o" + echo "content-test3 - filename with special characters" >"test3 '\''sq'\'',\$x=.o" ' script='s/^\$Id: \([0-9a-f]*\) \$/\1/p' @@ -350,21 +350,20 @@ test_expect_success PERL 'required process filter should filter data' ' cd repo && git init && - echo "git-stderr.log" >.gitignore && echo "*.r filter=protocol" >.gitattributes && git add . && - git commit . -m "test commit 1" && + git commit -m "test commit 1" && git branch empty-branch && cp "$TEST_ROOT/test.o" test.r && cp "$TEST_ROOT/test2.o" test2.r && mkdir testsubdir && - cp "$TEST_ROOT/test3 '\''sq'\'',\$x.o" "testsubdir/test3 '\''sq'\'',\$x.r" && + cp "$TEST_ROOT/test3 '\''sq'\'',\$x=.o" "testsubdir/test3 '\''sq'\'',\$x=.r" && >test4-empty.r && S=$(file_size test.r) && S2=$(file_size test2.r) && - S3=$(file_size "testsubdir/test3 '\''sq'\'',\$x.r") && + S3=$(file_size "testsubdir/test3 '\''sq'\'',\$x=.r") && filter_git add . && cat >expected.log <<-EOF && @@ -373,35 +372,20 @@ test_expect_success PERL 'required process filter should filter data' ' IN: clean test.r $S [OK] -- OUT: $S . [OK] IN: clean test2.r $S2 [OK] -- OUT: $S2 . [OK] IN: clean test4-empty.r 0 [OK] -- OUT: 0 [OK] - IN: clean testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK] + IN: clean testsubdir/test3 '\''sq'\'',\$x=.r $S3 [OK] -- OUT: $S3 . [OK] STOP EOF test_cmp_count expected.log rot13-filter.log && - filter_git commit . -m "test commit 2" && - cat >expected.log <<-EOF && - START - init handshake complete - IN: clean test.r $S [OK] -- OUT: $S . [OK] - IN: clean test2.r $S2 [OK] -- OUT: $S2 . [OK] - IN: clean test4-empty.r 0 [OK] -- OUT: 0 [OK] - IN: clean testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK] - IN: clean test.r $S [OK] -- OUT: $S . [OK] - IN: clean test2.r $S2 [OK] -- OUT: $S2 . [OK] - IN: clean test4-empty.r 0 [OK] -- OUT: 0 [OK] - IN: clean testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK] - STOP - EOF - test_cmp_count expected.log rot13-filter.log && - - rm -f test2.r "testsubdir/test3 '\''sq'\'',\$x.r" && + git commit -m "test commit 2" && + rm -f test2.r "testsubdir/test3 '\''sq'\'',\$x=.r" && filter_git checkout --quiet --no-progress . && cat >expected.log <<-EOF && START init handshake complete IN: smudge test2.r $S2 [OK] -- OUT: $S2 . [OK] - IN: smudge testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK] + IN: smudge testsubdir/test3 '\''sq'\'',\$x=.r $S3 [OK] -- OUT: $S3 . [OK] STOP EOF test_cmp_exclude_clean expected.log rot13-filter.log && @@ -422,14 +406,14 @@ test_expect_success PERL 'required process filter should filter data' ' IN: smudge test.r $S [OK] -- OUT: $S . [OK] IN: smudge test2.r $S2 [OK] -- OUT: $S2 . [OK] IN: smudge test4-empty.r 0 [OK] -- OUT: 0 [OK] - IN: smudge testsubdir/test3 '\''sq'\'',\$x.r $S3 [OK] -- OUT: $S3 . [OK] + IN: smudge testsubdir/test3 '\''sq'\'',\$x=.r $S3 [OK] -- OUT: $S3 . [OK] STOP EOF test_cmp_exclude_clean expected.log rot13-filter.log && test_cmp_committed_rot13 "$TEST_ROOT/test.o" test.r && test_cmp_committed_rot13 "$TEST_ROOT/test2.o" test2.r && - test_cmp_committed_rot13 "$TEST_ROOT/test3 '\''sq'\'',\$x.o" "testsubdir/test3 '\''sq'\'',\$x.r" + test_cmp_committed_rot13 "$TEST_ROOT/test3 '\''sq'\'',\$x=.o" "testsubdir/test3 '\''sq'\'',\$x=.r" ) ' diff --git a/t/t0021/rot13-filter.pl b/t/t0021/rot13-filter.pl index 4d5697ee51..617f581e56 100644 --- a/t/t0021/rot13-filter.pl +++ b/t/t0021/rot13-filter.pl @@ -109,14 +109,18 @@ print $debug "init handshake complete\n"; $debug->flush(); while (1) { - my ($command) = packet_txt_read() =~ /^command=([^=]+)$/; + my ($command) = packet_txt_read() =~ /^command=(.+)$/; print $debug "IN: $command"; $debug->flush(); - my ($pathname) = packet_txt_read() =~ /^pathname=([^=]+)$/; + my ($pathname) = packet_txt_read() =~ /^pathname=(.+)$/; print $debug " $pathname"; $debug->flush(); + if ( $pathname eq "" ) { + die "bad pathname '$pathname'"; + } + # Flush packet_bin_read(); diff --git a/t/t0030-stripspace.sh b/t/t0030-stripspace.sh index 29e91d861c..bbf3e39e3d 100755 --- a/t/t0030-stripspace.sh +++ b/t/t0030-stripspace.sh @@ -432,6 +432,15 @@ test_expect_success '-c with changed comment char' ' test_cmp expect actual ' +test_expect_success '-c with comment char defined in .git/config' ' + test_config core.commentchar = && + printf "= foo\n" >expect && + printf "foo" | ( + mkdir sub && cd sub && git stripspace -c + ) >actual && + test_cmp expect actual +' + test_expect_success 'avoid SP-HT sequence in commented line' ' printf "#\tone\n#\n# two\n" >expect && printf "\tone\n\ntwo\n" | git stripspace -c >actual && diff --git a/t/t0202/test.pl b/t/t0202/test.pl index 2c10cb4693..2cbf7b9590 100755 --- a/t/t0202/test.pl +++ b/t/t0202/test.pl @@ -4,7 +4,7 @@ use lib (split(/:/, $ENV{GITPERLLIB})); use strict; use warnings; use POSIX qw(:locale_h); -use Test::More tests => 8; +use Test::More tests => 13; use Git::I18N; my $has_gettext_library = $Git::I18N::__HAS_LIBRARY; @@ -31,6 +31,8 @@ is_deeply(\@Git::I18N::EXPORT, \@Git::I18N::EXPORT_OK, "sanity: Git::I18N export # more gettext wrapper functions. my %prototypes = (qw( __ $ + __n $$$ + N__ $ )); while (my ($sub, $proto) = each %prototypes) { is(prototype(\&{"Git::I18N::$sub"}), $proto, "sanity: $sub has a $proto prototype"); @@ -46,6 +48,16 @@ is_deeply(\@Git::I18N::EXPORT, \@Git::I18N::EXPORT_OK, "sanity: Git::I18N export my ($got, $expect) = (('TEST: A Perl test string') x 2); is(__($got), $expect, "Passing a string through __() in the C locale works"); + + my ($got_singular, $got_plural, $expect_singular, $expect_plural) = + (('TEST: 1 file', 'TEST: n files') x 2); + + is(__n($got_singular, $got_plural, 1), $expect_singular, + "Get singular string through __n() in C locale"); + is(__n($got_singular, $got_plural, 2), $expect_plural, + "Get plural string through __n() in C locale"); + + is(N__($got), $expect, "Passing a string through N__() in the C locale works"); } # Test a basic message on different locales diff --git a/t/t1050-large.sh b/t/t1050-large.sh index 096dbffecc..6fd264cff0 100755 --- a/t/t1050-large.sh +++ b/t/t1050-large.sh @@ -5,6 +5,12 @@ test_description='adding and checking out large blobs' . ./test-lib.sh +# This should be moved to test-lib.sh together with the +# copy in t0021 after both topics have graduated to 'master'. +file_size () { + perl -e 'print -s $ARGV[0]' "$1" +} + test_expect_success setup ' # clone does not allow us to pass core.bigfilethreshold to # new repos, so set core.bigfilethreshold globally @@ -17,6 +23,29 @@ test_expect_success setup ' export GIT_ALLOC_LIMIT ' +# add a large file with different settings +while read expect config +do + test_expect_success "add with $config" ' + test_when_finished "rm -f .git/objects/pack/pack-*.* .git/index" && + git $config add large1 && + sz=$(file_size .git/objects/pack/pack-*.pack) && + case "$expect" in + small) test "$sz" -le 100000 ;; + large) test "$sz" -ge 100000 ;; + esac + ' +done <<\EOF +large -c core.compression=0 +small -c core.compression=9 +large -c core.compression=0 -c pack.compression=0 +large -c core.compression=9 -c pack.compression=0 +small -c core.compression=0 -c pack.compression=9 +small -c core.compression=9 -c pack.compression=9 +large -c pack.compression=0 +small -c pack.compression=9 +EOF + test_expect_success 'add a large file or two' ' git add large1 huge large2 && # make sure we got a single packfile and no loose objects diff --git a/t/t1308-config-set.sh b/t/t1308-config-set.sh index 7655c94c28..ff50960cca 100755 --- a/t/t1308-config-set.sh +++ b/t/t1308-config-set.sh @@ -219,14 +219,8 @@ test_expect_success 'check line errors for malformed values' ' ' test_expect_success 'error on modifying repo config without repo' ' - mkdir no-repo && - ( - GIT_CEILING_DIRECTORIES=$(pwd) && - export GIT_CEILING_DIRECTORIES && - cd no-repo && - test_must_fail git config a.b c 2>err && - grep "not in a git directory" err - ) + nongit test_must_fail git config a.b c 2>err && + grep "not in a git directory" err ' cmdline_config="'foo.bar=from-cmdline'" diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh index 470f33466c..9a893b5fe7 100755 --- a/t/t3030-merge-recursive.sh +++ b/t/t3030-merge-recursive.sh @@ -575,13 +575,13 @@ test_expect_success 'merge removes empty directories' ' test_must_fail test -d d ' -test_expect_failure 'merge-recursive simple w/submodule' ' +test_expect_success 'merge-recursive simple w/submodule' ' git checkout submod && git merge remove ' -test_expect_failure 'merge-recursive simple w/submodule result' ' +test_expect_success 'merge-recursive simple w/submodule result' ' git ls-files -s >actual && ( diff --git a/t/t3203-branch-output.sh b/t/t3203-branch-output.sh index c6a3ccba1b..52283dfc8c 100755 --- a/t/t3203-branch-output.sh +++ b/t/t3203-branch-output.sh @@ -89,6 +89,11 @@ test_expect_success 'git branch --list -v pattern shows branch summaries' ' awk "{print \$NF}" <tmp >actual && test_cmp expect actual ' +test_expect_success 'git branch --ignore-case --list -v pattern shows branch summaries' ' + git branch --list --ignore-case -v BRANCH* >tmp && + awk "{print \$NF}" <tmp >actual && + test_cmp expect actual +' test_expect_success 'git branch -v pattern does not show branch summaries' ' test_must_fail git branch -v branch* @@ -196,4 +201,28 @@ test_expect_success 'local-branch symrefs shortened properly' ' test_cmp expect actual ' +test_expect_success 'sort branches, ignore case' ' + ( + git init sort-icase && + cd sort-icase && + test_commit initial && + git branch branch-one && + git branch BRANCH-two && + git branch --list | awk "{print \$NF}" >actual && + cat >expected <<-\EOF && + BRANCH-two + branch-one + master + EOF + test_cmp expected actual && + git branch --list -i | awk "{print \$NF}" >actual && + cat >expected <<-\EOF && + branch-one + BRANCH-two + master + EOF + test_cmp expected actual + ) +' + test_done diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index e38e296388..c896a4c106 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh @@ -976,6 +976,17 @@ test_expect_success 'rebase -i respects core.commentchar' ' test B = $(git cat-file commit HEAD^ | sed -ne \$p) ' +test_expect_success 'rebase -i respects core.commentchar=auto' ' + test_config core.commentchar auto && + write_script copy-edit-script.sh <<-\EOF && + cp "$1" edit-script + EOF + test_set_editor "$(pwd)/copy-edit-script.sh" && + test_when_finished "git rebase --abort || :" && + git rebase -i HEAD^ && + test -z "$(grep -ve "^#" -e "^\$" -e "^pick" edit-script)" +' + test_expect_success 'rebase -i, with <onto> and <upstream> specified as :/quuxery' ' test_when_finished "git branch -D torebase" && git checkout -b torebase branch1 && diff --git a/t/t3407-rebase-abort.sh b/t/t3407-rebase-abort.sh index a6a6c40a98..910f218284 100755 --- a/t/t3407-rebase-abort.sh +++ b/t/t3407-rebase-abort.sh @@ -99,4 +99,28 @@ testrebase() { testrebase "" .git/rebase-apply testrebase " --merge" .git/rebase-merge +test_expect_success 'rebase --quit' ' + cd "$work_dir" && + # Clean up the state from the previous one + git reset --hard pre-rebase && + test_must_fail git rebase master && + test_path_is_dir .git/rebase-apply && + head_before=$(git rev-parse HEAD) && + git rebase --quit && + test $(git rev-parse HEAD) = $head_before && + test ! -d .git/rebase-apply +' + +test_expect_success 'rebase --merge --quit' ' + cd "$work_dir" && + # Clean up the state from the previous one + git reset --hard pre-rebase && + test_must_fail git rebase --merge master && + test_path_is_dir .git/rebase-merge && + head_before=$(git rev-parse HEAD) && + git rebase --quit && + test $(git rev-parse HEAD) = $head_before && + test ! -d .git/rebase-merge +' + test_done diff --git a/t/t3426-rebase-submodule.sh b/t/t3426-rebase-submodule.sh index d5b896d445..ebf4f5e4b2 100755 --- a/t/t3426-rebase-submodule.sh +++ b/t/t3426-rebase-submodule.sh @@ -38,9 +38,6 @@ git_rebase_interactive () { git rebase -i "$1" } -KNOWN_FAILURE_NOFF_MERGE_DOESNT_CREATE_EMPTY_SUBMODULE_DIR=1 -# The real reason "replace directory with submodule" fails is because a -# directory "sub1" exists, but we reuse the suppression added for merge here test_submodule_switch "git_rebase_interactive" test_done diff --git a/t/t3501-revert-cherry-pick.sh b/t/t3501-revert-cherry-pick.sh index 394f0005a1..4f2a263b63 100755 --- a/t/t3501-revert-cherry-pick.sh +++ b/t/t3501-revert-cherry-pick.sh @@ -141,4 +141,16 @@ test_expect_success 'cherry-pick "-" works with arguments' ' test_cmp expect actual ' +test_expect_success 'cherry-pick works with dirty renamed file' ' + test_commit to-rename && + git checkout -b unrelated && + test_commit unrelated && + git checkout @{-1} && + git mv to-rename.t renamed && + test_tick && + git commit -m renamed && + echo modified >renamed && + git cherry-pick refs/heads/unrelated +' + test_done diff --git a/t/t3510-cherry-pick-sequence.sh b/t/t3510-cherry-pick-sequence.sh index 7b7a89dbd5..372307c21b 100755 --- a/t/t3510-cherry-pick-sequence.sh +++ b/t/t3510-cherry-pick-sequence.sh @@ -147,6 +147,16 @@ test_expect_success '--abort to cancel single cherry-pick' ' git diff-index --exit-code HEAD ' +test_expect_success '--abort does not unsafely change HEAD' ' + pristine_detach initial && + test_must_fail git cherry-pick picked anotherpick && + git reset --hard base && + test_must_fail git cherry-pick picked anotherpick && + git cherry-pick --abort 2>actual && + test_i18ngrep "You seem to have moved HEAD" actual && + test_cmp_rev base HEAD +' + test_expect_success 'cherry-pick --abort to cancel multiple revert' ' pristine_detach anotherpick && test_expect_code 1 git revert base..picked && diff --git a/t/t3511-cherry-pick-x.sh b/t/t3511-cherry-pick-x.sh index 9cce5ae881..bf0a5c9887 100755 --- a/t/t3511-cherry-pick-x.sh +++ b/t/t3511-cherry-pick-x.sh @@ -25,9 +25,8 @@ Signed-off-by: B.U. Thor <buthor@example.com>" mesg_broken_footer="$mesg_no_footer -The signed-off-by string should begin with the words Signed-off-by followed -by a colon and space, and then the signers name and email address. e.g. -Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" +This is not recognized as a footer because Myfooter is not a recognized token. +Myfooter: A.U. Thor <author@example.com>" mesg_with_footer_sob="$mesg_with_footer Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" @@ -112,6 +111,17 @@ test_expect_success 'cherry-pick -s inserts blank line after non-conforming foot test_cmp expect actual ' +test_expect_success 'cherry-pick -s recognizes trailer config' ' + pristine_detach initial && + git -c "trailer.Myfooter.ifexists=add" cherry-pick -s mesg-broken-footer && + cat <<-EOF >expect && + $mesg_broken_footer + Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> + EOF + git log -1 --pretty=format:%B >actual && + test_cmp expect actual +' + test_expect_success 'cherry-pick -x inserts blank line when conforming footer not found' ' pristine_detach initial && sha1=$(git rev-parse mesg-no-footer^0) && diff --git a/t/t3600-rm.sh b/t/t3600-rm.sh index 14f0edca2b..bcbb680651 100755 --- a/t/t3600-rm.sh +++ b/t/t3600-rm.sh @@ -111,21 +111,21 @@ test_expect_success 'Remove nonexistent file with --ignore-unmatch' ' ' test_expect_success '"rm" command printed' ' - echo frotz > test-file && + echo frotz >test-file && git add test-file && git commit -m "add file for rm test" && - git rm test-file > rm-output && + git rm test-file >rm-output && test $(grep "^rm " rm-output | wc -l) = 1 && rm -f test-file rm-output && git commit -m "remove file from rm test" ' test_expect_success '"rm" command suppressed with --quiet' ' - echo frotz > test-file && + echo frotz >test-file && git add test-file && git commit -m "add file for rm --quiet test" && - git rm --quiet test-file > rm-output && - test $(wc -l < rm-output) = 0 && + git rm --quiet test-file >rm-output && + test_must_be_empty rm-output && rm -f test-file rm-output && git commit -m "remove file from rm --quiet test" ' @@ -221,7 +221,7 @@ test_expect_success 'Call "rm" from outside the work tree' ' mkdir repo && (cd repo && git init && - echo something > somefile && + echo something >somefile && git add somefile && git commit -m "add a file" && (cd .. && @@ -287,7 +287,7 @@ test_expect_success 'rm removes empty submodules from work tree' ' git commit -m "add submodule" && git rm submod && test ! -e submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual && test_must_fail git config -f .gitmodules submodule.sub.url && test_must_fail git config -f .gitmodules submodule.sub.path @@ -298,7 +298,7 @@ test_expect_success 'rm removes removed submodule from index and .gitmodules' ' git submodule update && rm -rf submod && git rm submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual && test_must_fail git config -f .gitmodules submodule.sub.url && test_must_fail git config -f .gitmodules submodule.sub.path @@ -309,7 +309,7 @@ test_expect_success 'rm removes work tree of unmodified submodules' ' git submodule update && git rm submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual && test_must_fail git config -f .gitmodules submodule.sub.url && test_must_fail git config -f .gitmodules submodule.sub.path @@ -320,7 +320,7 @@ test_expect_success 'rm removes a submodule with a trailing /' ' git submodule update && git rm submod/ && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual ' @@ -335,17 +335,15 @@ test_expect_success 'rm succeeds when given a directory with a trailing /' ' test_expect_success 'rm of a populated submodule with different HEAD fails unless forced' ' git reset --hard && git submodule update && - (cd submod && - git checkout HEAD^ - ) && + git -C submod checkout HEAD^ && test_must_fail git rm submod && test -d submod && test -f submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect.modified actual && git rm -f submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual && test_must_fail git config -f .gitmodules submodule.sub.url && test_must_fail git config -f .gitmodules submodule.sub.path @@ -418,34 +416,30 @@ test_expect_success 'rm issues a warning when section is not found in .gitmodule test_expect_success 'rm of a populated submodule with modifications fails unless forced' ' git reset --hard && git submodule update && - (cd submod && - echo X >empty - ) && + echo X >submod/empty && test_must_fail git rm submod && test -d submod && test -f submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect.modified actual && git rm -f submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual ' test_expect_success 'rm of a populated submodule with untracked files fails unless forced' ' git reset --hard && git submodule update && - (cd submod && - echo X >untracked - ) && + echo X >submod/untracked && test_must_fail git rm submod && test -d submod && test -f submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect.modified actual && git rm -f submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual ' @@ -461,16 +455,12 @@ test_expect_success 'setup submodule conflict' ' git add nitfol && git commit -m "added nitfol 2" && git checkout -b conflict1 master && - (cd submod && - git fetch && - git checkout branch1 - ) && + git -C submod fetch && + git -C submod checkout branch1 && git add submod && git commit -m "submod 1" && git checkout -b conflict2 master && - (cd submod && - git checkout branch2 - ) && + git -C submod checkout branch2 && git add submod && git commit -m "submod 2" ' @@ -486,7 +476,7 @@ test_expect_success 'rm removes work tree of unmodified conflicted submodule' ' test_must_fail git merge conflict2 && git rm submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual ' @@ -494,18 +484,16 @@ test_expect_success 'rm of a conflicted populated submodule with different HEAD git checkout conflict1 && git reset --hard && git submodule update && - (cd submod && - git checkout HEAD^ - ) && + git -C submod checkout HEAD^ && test_must_fail git merge conflict2 && test_must_fail git rm submod && test -d submod && test -f submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect.conflict actual && git rm -f submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual && test_must_fail git config -f .gitmodules submodule.sub.url && test_must_fail git config -f .gitmodules submodule.sub.path @@ -515,18 +503,16 @@ test_expect_success 'rm of a conflicted populated submodule with modifications f git checkout conflict1 && git reset --hard && git submodule update && - (cd submod && - echo X >empty - ) && + echo X >submod/empty && test_must_fail git merge conflict2 && test_must_fail git rm submod && test -d submod && test -f submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect.conflict actual && git rm -f submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual && test_must_fail git config -f .gitmodules submodule.sub.url && test_must_fail git config -f .gitmodules submodule.sub.path @@ -536,18 +522,16 @@ test_expect_success 'rm of a conflicted populated submodule with untracked files git checkout conflict1 && git reset --hard && git submodule update && - (cd submod && - echo X >untracked - ) && + echo X >submod/untracked && test_must_fail git merge conflict2 && test_must_fail git rm submod && test -d submod && test -f submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect.conflict actual && git rm -f submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual ' @@ -564,12 +548,12 @@ test_expect_success 'rm of a conflicted populated submodule with a .git director test_must_fail git rm submod && test -d submod && test -d submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect.conflict actual && test_must_fail git rm -f submod && test -d submod && test -d submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect.conflict actual && git merge --abort && rm -rf submod @@ -581,7 +565,7 @@ test_expect_success 'rm of a conflicted unpopulated submodule succeeds' ' test_must_fail git merge conflict2 && git rm submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual ' @@ -597,12 +581,12 @@ test_expect_success 'rm of a populated submodule with a .git directory fails eve test_must_fail git rm submod && test -d submod && test -d submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && ! test -s actual && test_must_fail git rm -f submod && test -d submod && test -d submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && ! test -s actual && rm -rf submod ' @@ -629,58 +613,52 @@ test_expect_success 'setup subsubmodule' ' test_expect_success 'rm recursively removes work tree of unmodified submodules' ' git rm submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual ' test_expect_success 'rm of a populated nested submodule with different nested HEAD fails unless forced' ' git reset --hard && git submodule update --recursive && - (cd submod/subsubmod && - git checkout HEAD^ - ) && + git -C submod/subsubmod checkout HEAD^ && test_must_fail git rm submod && test -d submod && test -f submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect.modified actual && git rm -f submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual ' test_expect_success 'rm of a populated nested submodule with nested modifications fails unless forced' ' git reset --hard && git submodule update --recursive && - (cd submod/subsubmod && - echo X >empty - ) && + echo X >submod/subsubmod/empty && test_must_fail git rm submod && test -d submod && test -f submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect.modified actual && git rm -f submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual ' test_expect_success 'rm of a populated nested submodule with nested untracked files fails unless forced' ' git reset --hard && git submodule update --recursive && - (cd submod/subsubmod && - echo X >untracked - ) && + echo X >submod/subsubmod/untracked && test_must_fail git rm submod && test -d submod && test -f submod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect.modified actual && git rm -f submod && test ! -d submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && test_cmp expect actual ' @@ -695,12 +673,12 @@ test_expect_success 'rm of a populated nested submodule with a nested .git direc test_must_fail git rm submod && test -d submod && test -d submod/subsubmod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && ! test -s actual && test_must_fail git rm -f submod && test -d submod && test -d submod/subsubmod/.git && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && ! test -s actual && rm -rf submod ' @@ -709,14 +687,14 @@ test_expect_success 'checking out a commit after submodule removal needs manual git commit -m "submodule removal" submod && git checkout HEAD^ && git submodule update && - git checkout -q HEAD^ 2>actual && + git checkout -q HEAD^ && git checkout -q master 2>actual && test_i18ngrep "^warning: unable to rmdir submod:" actual && git status -s submod >actual && echo "?? submod/" >expected && test_cmp expected actual && rm -rf submod && - git status -s -uno --ignore-submodules=none > actual && + git status -s -uno --ignore-submodules=none >actual && ! test -s actual ' diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh index e1a6ccc00c..2de3e18ce6 100755 --- a/t/t3903-stash.sh +++ b/t/t3903-stash.sh @@ -766,4 +766,13 @@ test_expect_success 'stash list --cc shows combined diff' ' test_cmp expect actual ' +test_expect_success 'stash is not confused by partial renames' ' + mv file renamed && + git add renamed && + git stash && + git stash apply && + test_path_is_file renamed && + test_path_is_missing file +' + test_done diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh index 566817e2ef..d09acfe48e 100755 --- a/t/t4013-diff-various.sh +++ b/t/t4013-diff-various.sh @@ -311,6 +311,13 @@ diff --line-prefix=abc master master^ side diff --dirstat master~1 master~2 diff --dirstat initial rearrange diff --dirstat-by-file initial rearrange +# No-index --abbrev and --no-abbrev +diff --raw initial +diff --raw --abbrev=4 initial +diff --raw --no-abbrev initial +diff --no-index --raw dir2 dir +diff --no-index --raw --abbrev=4 dir2 dir +diff --no-index --raw --no-abbrev dir2 dir EOF test_expect_success 'log -S requires an argument' ' diff --git a/t/t4013/diff.diff_--no-index_--raw_--abbrev=4_dir2_dir b/t/t4013/diff.diff_--no-index_--raw_--abbrev=4_dir2_dir new file mode 100644 index 0000000000..a71b38a833 --- /dev/null +++ b/t/t4013/diff.diff_--no-index_--raw_--abbrev=4_dir2_dir @@ -0,0 +1,3 @@ +$ git diff --no-index --raw --abbrev=4 dir2 dir +:000000 100644 0000... 0000... A dir/sub +$ diff --git a/t/t4013/diff.diff_--no-index_--raw_--no-abbrev_dir2_dir b/t/t4013/diff.diff_--no-index_--raw_--no-abbrev_dir2_dir new file mode 100644 index 0000000000..e0f00977c8 --- /dev/null +++ b/t/t4013/diff.diff_--no-index_--raw_--no-abbrev_dir2_dir @@ -0,0 +1,3 @@ +$ git diff --no-index --raw --no-abbrev dir2 dir +:000000 100644 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 A dir/sub +$ diff --git a/t/t4013/diff.diff_--no-index_--raw_dir2_dir b/t/t4013/diff.diff_--no-index_--raw_dir2_dir new file mode 100644 index 0000000000..3cb4ee7a9a --- /dev/null +++ b/t/t4013/diff.diff_--no-index_--raw_dir2_dir @@ -0,0 +1,3 @@ +$ git diff --no-index --raw dir2 dir +:000000 100644 0000000... 0000000... A dir/sub +$ diff --git a/t/t4013/diff.diff_--raw_--abbrev=4_initial b/t/t4013/diff.diff_--raw_--abbrev=4_initial new file mode 100644 index 0000000000..c3641db31d --- /dev/null +++ b/t/t4013/diff.diff_--raw_--abbrev=4_initial @@ -0,0 +1,6 @@ +$ git diff --raw --abbrev=4 initial +:100644 100644 35d2... 9929... M dir/sub +:100644 100644 01e7... 10a8... M file0 +:000000 100644 0000... b1e6... A file1 +:100644 000000 01e7... 0000... D file2 +$ diff --git a/t/t4013/diff.diff_--raw_--no-abbrev_initial b/t/t4013/diff.diff_--raw_--no-abbrev_initial new file mode 100644 index 0000000000..c87a1258e3 --- /dev/null +++ b/t/t4013/diff.diff_--raw_--no-abbrev_initial @@ -0,0 +1,6 @@ +$ git diff --raw --no-abbrev initial +:100644 100644 35d242ba79ae89ac695e26b3d4c27a8e6f028f9e 992913c5aa0a5476d10c49ed0f21fc0c6d1aedf3 M dir/sub +:100644 100644 01e79c32a8c99c557f0757da7cb6d65b3414466d 10a8a9f3657f91a156b9f0184ed79a20adef9f7f M file0 +:000000 100644 0000000000000000000000000000000000000000 b1e67221afe8461efd244b487afca22d46b95eb8 A file1 +:100644 000000 01e79c32a8c99c557f0757da7cb6d65b3414466d 0000000000000000000000000000000000000000 D file2 +$ diff --git a/t/t4013/diff.diff_--raw_initial b/t/t4013/diff.diff_--raw_initial new file mode 100644 index 0000000000..a3e978040d --- /dev/null +++ b/t/t4013/diff.diff_--raw_initial @@ -0,0 +1,6 @@ +$ git diff --raw initial +:100644 100644 35d242b... 992913c... M dir/sub +:100644 100644 01e79c3... 10a8a9f... M file0 +:000000 100644 0000000... b1e6722... A file1 +:100644 000000 01e79c3... 0000000... D file2 +$ diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh index ba4902df2b..482112ca33 100755 --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh @@ -1294,8 +1294,7 @@ EOF 4:Subject: [PATCH] subject 8: 10:Signed-off-by: example happens to be wrapped here. -11: -12:Signed-off-by: C O Mitter <committer@example.com> +11:Signed-off-by: C O Mitter <committer@example.com> EOF test_cmp expected actual ' @@ -1368,7 +1367,7 @@ EOF test_cmp expected actual ' -test_expect_success 'signoff: detect garbage in non-conforming footer' ' +test_expect_success 'signoff: tolerate garbage in conforming footer' ' append_signoff <<\EOF >actual && subject @@ -1383,8 +1382,36 @@ EOF 8: 10: 13:Signed-off-by: C O Mitter <committer@example.com> -14: -15:Signed-off-by: C O Mitter <committer@example.com> +EOF + test_cmp expected actual +' + +test_expect_success 'signoff: respect trailer config' ' + append_signoff <<\EOF >actual && +subject + +Myfooter: x +Some Trash +EOF + cat >expected <<\EOF && +4:Subject: [PATCH] subject +8: +11: +12:Signed-off-by: C O Mitter <committer@example.com> +EOF + test_cmp expected actual && + + test_config trailer.Myfooter.ifexists add && + append_signoff <<\EOF >actual && +subject + +Myfooter: x +Some Trash +EOF + cat >expected <<\EOF && +4:Subject: [PATCH] subject +8: +11:Signed-off-by: C O Mitter <committer@example.com> EOF test_cmp expected actual ' diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh index ae08b57712..9df054bf05 100755 --- a/t/t4201-shortlog.sh +++ b/t/t4201-shortlog.sh @@ -190,4 +190,23 @@ test_expect_success 'shortlog with --output=<file>' ' test_line_count = 3 shortlog ' +test_expect_success 'shortlog --committer (internal)' ' + git checkout --orphan side && + git commit --allow-empty -m one && + git commit --allow-empty -m two && + GIT_COMMITTER_NAME="Sin Nombre" git commit --allow-empty -m three && + + cat >expect <<-\EOF && + 2 C O Mitter + 1 Sin Nombre + EOF + git shortlog -nsc HEAD >actual && + test_cmp expect actual +' + +test_expect_success 'shortlog --committer (external)' ' + git log --format=full | git shortlog -nsc >actual && + test_cmp expect actual +' + test_done diff --git a/t/t4205-log-pretty-formats.sh b/t/t4205-log-pretty-formats.sh index f5435fd250..21eb8c8587 100755 --- a/t/t4205-log-pretty-formats.sh +++ b/t/t4205-log-pretty-formats.sh @@ -535,4 +535,30 @@ test_expect_success 'clean log decoration' ' test_cmp expected actual1 ' +cat >trailers <<EOF +Signed-off-by: A U Thor <author@example.com> +Acked-by: A U Thor <author@example.com> +[ v2 updated patch description ] +Signed-off-by: A U Thor <author@example.com> +EOF + +test_expect_success 'pretty format %(trailers) shows trailers' ' + echo "Some contents" >trailerfile && + git add trailerfile && + git commit -F - <<-EOF && + trailers: this commit message has trailers + + This commit is a test commit with trailers at the end. We parse this + message and display the trailers using %bT + + $(cat trailers) + EOF + git log --no-walk --pretty="%(trailers)" >actual && + cat >expect <<-EOF && + $(cat trailers) + + EOF + test_cmp expect actual +' + test_done diff --git a/t/t5000-tar-tree.sh b/t/t5000-tar-tree.sh index 80b2387341..886b6953e4 100755 --- a/t/t5000-tar-tree.sh +++ b/t/t5000-tar-tree.sh @@ -179,6 +179,15 @@ test_expect_success 'git archive --remote' \ 'git archive --remote=. HEAD >b5.tar && test_cmp_bin b.tar b5.tar' +test_expect_success 'git archive --remote with configured remote' ' + git config remote.foo.url . && + ( + cd a && + git archive --remote=foo --output=../b5-nick.tar HEAD + ) && + test_cmp_bin b.tar b5-nick.tar +' + test_expect_success \ 'validate file modification time' \ 'mkdir extract && @@ -197,9 +206,15 @@ test_expect_success 'git archive with --output, override inferred format' ' test_cmp_bin b.tar d4.zip ' -test_expect_success \ - 'git archive --list outside of a git repo' \ - 'GIT_DIR=some/non-existing/directory git archive --list' +test_expect_success 'git archive --list outside of a git repo' ' + nongit git archive --list +' + +test_expect_success 'git archive --remote outside of a git repo' ' + git archive HEAD >expect.tar && + nongit git archive --remote="$PWD" HEAD >actual.tar && + test_cmp_bin expect.tar actual.tar +' test_expect_success 'clients cannot access unreachable commits' ' test_commit unreachable && diff --git a/t/t5100-mailinfo.sh b/t/t5100-mailinfo.sh index e6b995161e..7171f67539 100755 --- a/t/t5100-mailinfo.sh +++ b/t/t5100-mailinfo.sh @@ -158,4 +158,17 @@ test_expect_success 'mailinfo handles rfc2822 comment' ' test_cmp "$DATA/comment.expect" comment/info ' +test_expect_success 'mailinfo with mailinfo.scissors config' ' + test_config mailinfo.scissors true && + ( + mkdir sub && + cd sub && + git mailinfo ../msg0014.sc ../patch0014.sc <../0014 >../info0014.sc + ) && + test_cmp "$DATA/msg0014--scissors" msg0014.sc && + test_cmp "$DATA/patch0014--scissors" patch0014.sc && + test_cmp "$DATA/info0014--scissors" info0014.sc +' + + test_done diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh index 899e52d50f..43a672c345 100755 --- a/t/t5300-pack-object.sh +++ b/t/t5300-pack-object.sh @@ -406,6 +406,21 @@ test_expect_success 'verify resulting packs' ' git verify-pack test-11-*.pack ' +test_expect_success 'set up pack for non-repo tests' ' + # make sure we have a pack with no matching index file + cp test-1-*.pack foo.pack +' + +test_expect_success 'index-pack --stdin complains of non-repo' ' + nongit test_must_fail git index-pack --stdin <foo.pack && + test_path_is_missing non-repo/.git +' + +test_expect_success 'index-pack <pack> works in non-repo' ' + nongit git index-pack ../foo.pack && + test_path_is_file foo.idx +' + # # WARNING! # diff --git a/t/t5315-pack-objects-compression.sh b/t/t5315-pack-objects-compression.sh new file mode 100755 index 0000000000..34c47dae09 --- /dev/null +++ b/t/t5315-pack-objects-compression.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +test_description='pack-object compression configuration' + +. ./test-lib.sh + +# This should be moved to test-lib.sh together with the +# copy in t0021 after both topics have graduated to 'master'. +file_size () { + perl -e 'print -s $ARGV[0]' "$1" +} + +test_expect_success setup ' + printf "%2000000s" X | + git hash-object -w --stdin >object-name && + # make sure it resulted in a loose object + ob=$(sed -e "s/\(..\).*/\1/" object-name) && + ject=$(sed -e "s/..\(.*\)/\1/" object-name) && + test -f .git/objects/$ob/$ject +' + +while read expect config +do + test_expect_success "pack-objects with $config" ' + test_when_finished "rm -f pack-*.*" && + git $config pack-objects pack <object-name && + sz=$(file_size pack-*.pack) && + case "$expect" in + small) test "$sz" -le 100000 ;; + large) test "$sz" -ge 100000 ;; + esac + ' +done <<\EOF +large -c core.compression=0 +small -c core.compression=9 +large -c core.compression=0 -c pack.compression=0 +large -c core.compression=9 -c pack.compression=0 +small -c core.compression=0 -c pack.compression=9 +small -c core.compression=9 -c pack.compression=9 +large -c pack.compression=0 +small -c pack.compression=9 +EOF + +test_done diff --git a/t/t5509-fetch-push-namespaces.sh b/t/t5509-fetch-push-namespaces.sh index bc44ac36d5..75c570adca 100755 --- a/t/t5509-fetch-push-namespaces.sh +++ b/t/t5509-fetch-push-namespaces.sh @@ -4,6 +4,7 @@ test_description='fetch/push involving ref namespaces' . ./test-lib.sh test_expect_success setup ' + git config --global protocol.ext.allow user && test_tick && git init original && ( diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh index 551844584f..17f4d0fe4e 100755 --- a/t/t5520-pull.sh +++ b/t/t5520-pull.sh @@ -255,6 +255,23 @@ test_expect_success '--rebase' ' test new = "$(git show HEAD:file2)" ' +test_expect_success '--rebase fast forward' ' + git reset --hard before-rebase && + git checkout -b ff && + echo another modification >file && + git commit -m third file && + + git checkout to-rebase && + git pull --rebase . ff && + test "$(git rev-parse HEAD)" = "$(git rev-parse ff)" && + + # The above only validates the result. Did we actually bypass rebase? + git reflog -1 >reflog.actual && + sed "s/^[0-9a-f][0-9a-f]*/OBJID/" reflog.actual >reflog.fuzzy && + echo "OBJID HEAD@{0}: pull --rebase . ff: Fast-forward" >reflog.expected && + test_cmp reflog.expected reflog.fuzzy +' + test_expect_success '--rebase with conflicts shows advice' ' test_when_finished "git rebase --abort; git checkout -f to-rebase" && git checkout -b seq && diff --git a/t/t5528-push-default.sh b/t/t5528-push-default.sh index 73f4bb6346..44309566f1 100755 --- a/t/t5528-push-default.sh +++ b/t/t5528-push-default.sh @@ -98,6 +98,16 @@ test_expect_success 'push from/to new branch with upstream, matching and simple' test_push_failure upstream ' +test_expect_success 'push ambiguously named branch with upstream, matching and simple' ' + git checkout -b ambiguous && + test_config branch.ambiguous.remote parent1 && + test_config branch.ambiguous.merge refs/heads/ambiguous && + git tag ambiguous && + test_push_success simple ambiguous && + test_push_success matching ambiguous && + test_push_success upstream ambiguous +' + test_expect_success 'push from/to new branch with current creates remote branch' ' test_config branch.new-branch.remote repo1 && git checkout new-branch && diff --git a/t/t5531-deep-submodule-push.sh b/t/t5531-deep-submodule-push.sh index 198ce84754..1524ff5ba6 100755 --- a/t/t5531-deep-submodule-push.sh +++ b/t/t5531-deep-submodule-push.sh @@ -427,7 +427,31 @@ test_expect_success 'push unpushable submodule recursively fails' ' cd submodule.git && git rev-parse master >../actual ) && + test_when_finished git -C work reset --hard master^ && test_cmp expected actual ' +test_expect_success 'push --dry-run does not recursively update submodules' ' + ( + cd work/gar/bage && + git checkout master && + git rev-parse master >../../../expected_submodule && + > junk9 && + git add junk9 && + git commit -m "Ninth junk" && + + # Go up to 'work' directory + cd ../.. && + git checkout master && + git rev-parse master >../expected_pub && + git add gar/bage && + git commit -m "Ninth commit for gar/bage" && + git push --dry-run --recurse-submodules=on-demand ../pub.git master + ) && + git -C submodule.git rev-parse master >actual_submodule && + git -C pub.git rev-parse master >actual_pub && + test_cmp expected_pub actual_pub && + test_cmp expected_submodule actual_submodule +' + test_done diff --git a/t/t5547-push-quarantine.sh b/t/t5547-push-quarantine.sh index 1e5d32d068..af9fcd833a 100755 --- a/t/t5547-push-quarantine.sh +++ b/t/t5547-push-quarantine.sh @@ -33,4 +33,29 @@ test_expect_success 'rejected objects are removed' ' test_cmp expect actual ' +test_expect_success 'push to repo path with path separator (colon)' ' + # The interesting failure case here is when the + # receiving end cannot access its original object directory, + # so make it likely for us to generate a delta by having + # a non-trivial file with multiple versions. + + test-genrandom foo 4096 >file.bin && + git add file.bin && + git commit -m bin && + + if test_have_prereq MINGW + then + pathsep=";" + else + pathsep=":" + fi && + git clone --bare . "xxx${pathsep}yyy.git" && + + echo change >>file.bin && + git commit -am change && + # Note that we have to use the full path here, or it gets confused + # with the ssh host:path syntax. + git push "$(pwd)/xxx${pathsep}yyy.git" HEAD +' + test_done diff --git a/t/t5550-http-fetch-dumb.sh b/t/t5550-http-fetch-dumb.sh index 7641417b4a..aeb3a63f7c 100755 --- a/t/t5550-http-fetch-dumb.sh +++ b/t/t5550-http-fetch-dumb.sh @@ -307,5 +307,76 @@ test_expect_success 'remote-http complains cleanly about malformed urls' ' test_must_fail git remote-http http::/example.com/repo.git ' +test_expect_success 'redirects can be forbidden/allowed' ' + test_must_fail git -c http.followRedirects=false \ + clone $HTTPD_URL/dumb-redir/repo.git dumb-redir && + git -c http.followRedirects=true \ + clone $HTTPD_URL/dumb-redir/repo.git dumb-redir 2>stderr +' + +test_expect_success 'redirects are reported to stderr' ' + # just look for a snippet of the redirected-to URL + test_i18ngrep /dumb/ stderr +' + +test_expect_success 'non-initial redirects can be forbidden' ' + test_must_fail git -c http.followRedirects=initial \ + clone $HTTPD_URL/redir-objects/repo.git redir-objects && + git -c http.followRedirects=true \ + clone $HTTPD_URL/redir-objects/repo.git redir-objects +' + +test_expect_success 'http.followRedirects defaults to "initial"' ' + test_must_fail git clone $HTTPD_URL/redir-objects/repo.git default +' + +# The goal is for a clone of the "evil" repository, which has no objects +# itself, to cause the client to fetch objects from the "victim" repository. +test_expect_success 'set up evil alternates scheme' ' + victim=$HTTPD_DOCUMENT_ROOT_PATH/victim.git && + git init --bare "$victim" && + git -C "$victim" --work-tree=. commit --allow-empty -m secret && + git -C "$victim" repack -ad && + git -C "$victim" update-server-info && + sha1=$(git -C "$victim" rev-parse HEAD) && + + evil=$HTTPD_DOCUMENT_ROOT_PATH/evil.git && + git init --bare "$evil" && + # do this by hand to avoid object existence check + printf "%s\\t%s\\n" $sha1 refs/heads/master >"$evil/info/refs" +' + +# Here we'll just redirect via HTTP. In a real-world attack these would be on +# different servers, but we should reject it either way. +test_expect_success 'http-alternates is a non-initial redirect' ' + echo "$HTTPD_URL/dumb/victim.git/objects" \ + >"$evil/objects/info/http-alternates" && + test_must_fail git -c http.followRedirects=initial \ + clone $HTTPD_URL/dumb/evil.git evil-initial && + git -c http.followRedirects=true \ + clone $HTTPD_URL/dumb/evil.git evil-initial +' + +# Curl supports a lot of protocols that we'd prefer not to allow +# http-alternates to use, but it's hard to test whether curl has +# accessed, say, the SMTP protocol, because we are not running an SMTP server. +# But we can check that it does not allow access to file://, which would +# otherwise allow this clone to complete. +test_expect_success 'http-alternates cannot point at funny protocols' ' + echo "file://$victim/objects" >"$evil/objects/info/http-alternates" && + test_must_fail git -c http.followRedirects=true \ + clone "$HTTPD_URL/dumb/evil.git" evil-file +' + +test_expect_success 'http-alternates triggers not-from-user protocol check' ' + echo "$HTTPD_URL/dumb/victim.git/objects" \ + >"$evil/objects/info/http-alternates" && + test_config_global http.followRedirects true && + test_must_fail git -c protocol.http.allow=user \ + clone $HTTPD_URL/dumb/evil.git evil-user && + git -c protocol.http.allow=always \ + clone $HTTPD_URL/dumb/evil.git evil-user +' + stop_httpd test_done diff --git a/t/t5551-http-fetch-smart.sh b/t/t5551-http-fetch-smart.sh index 1ec5b2747a..a51b7e20d3 100755 --- a/t/t5551-http-fetch-smart.sh +++ b/t/t5551-http-fetch-smart.sh @@ -119,6 +119,10 @@ test_expect_success 'redirects re-root further requests' ' git clone $HTTPD_URL/smart-redir-limited/repo.git repo-redir-limited ' +test_expect_success 're-rooting dies on insane schemes' ' + test_must_fail git clone $HTTPD_URL/insane-redir/repo.git insane +' + test_expect_success 'clone from password-protected repository' ' echo two >expect && set_askpass user@host pass@host && @@ -276,6 +280,58 @@ test_expect_success 'large fetch-pack requests can be split across POSTs' ' test_line_count = 2 posts ' +test_expect_success 'test allowreachablesha1inwant' ' + test_when_finished "rm -rf test_reachable.git" && + server="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" && + master_sha=$(git -C "$server" rev-parse refs/heads/master) && + git -C "$server" config uploadpack.allowreachablesha1inwant 1 && + + git init --bare test_reachable.git && + git -C test_reachable.git remote add origin "$HTTPD_URL/smart/repo.git" && + git -C test_reachable.git fetch origin "$master_sha" +' + +test_expect_success 'test allowreachablesha1inwant with unreachable' ' + test_when_finished "rm -rf test_reachable.git; git reset --hard $(git rev-parse HEAD)" && + + #create unreachable sha + echo content >file2 && + git add file2 && + git commit -m two && + git push public HEAD:refs/heads/doomed && + git push public :refs/heads/doomed && + + server="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" && + master_sha=$(git -C "$server" rev-parse refs/heads/master) && + git -C "$server" config uploadpack.allowreachablesha1inwant 1 && + + git init --bare test_reachable.git && + git -C test_reachable.git remote add origin "$HTTPD_URL/smart/repo.git" && + test_must_fail git -C test_reachable.git fetch origin "$(git rev-parse HEAD)" +' + +test_expect_success 'test allowanysha1inwant with unreachable' ' + test_when_finished "rm -rf test_reachable.git; git reset --hard $(git rev-parse HEAD)" && + + #create unreachable sha + echo content >file2 && + git add file2 && + git commit -m two && + git push public HEAD:refs/heads/doomed && + git push public :refs/heads/doomed && + + server="$HTTPD_DOCUMENT_ROOT_PATH/repo.git" && + master_sha=$(git -C "$server" rev-parse refs/heads/master) && + git -C "$server" config uploadpack.allowreachablesha1inwant 1 && + + git init --bare test_reachable.git && + git -C test_reachable.git remote add origin "$HTTPD_URL/smart/repo.git" && + test_must_fail git -C test_reachable.git fetch origin "$(git rev-parse HEAD)" && + + git -C "$server" config uploadpack.allowanysha1inwant 1 && + git -C test_reachable.git fetch origin "$(git rev-parse HEAD)" +' + test_expect_success EXPENSIVE 'http can handle enormous ref negotiation' ' ( cd "$HTTPD_DOCUMENT_ROOT_PATH/repo.git" && diff --git a/t/t5615-alternate-env.sh b/t/t5615-alternate-env.sh index eec4137ca5..26ebb0375d 100755 --- a/t/t5615-alternate-env.sh +++ b/t/t5615-alternate-env.sh @@ -68,4 +68,22 @@ test_expect_success 'access alternate via relative path (subdir)' ' EOF ' +# set variables outside test to avoid quote insanity; the \057 is '/', +# which doesn't need quoting, but just confirms that de-quoting +# is working. +quoted='"one.git\057objects"' +unquoted='two.git/objects' +test_expect_success 'mix of quoted and unquoted alternates' ' + check_obj "$quoted:$unquoted" <<-EOF + $one blob + $two blob +' + +test_expect_success !MINGW 'broken quoting falls back to interpreting raw' ' + mv one.git \"one.git && + check_obj \"one.git/objects <<-EOF + $one blob + EOF +' + test_done diff --git a/t/t5802-connect-helper.sh b/t/t5802-connect-helper.sh index b7a7f9d588..c6c2661878 100755 --- a/t/t5802-connect-helper.sh +++ b/t/t5802-connect-helper.sh @@ -4,6 +4,7 @@ test_description='ext::cmd remote "connect" helper' . ./test-lib.sh test_expect_success setup ' + git config --global protocol.ext.allow user && test_tick && git commit --allow-empty -m initial && test_tick && diff --git a/t/t5812-proto-disable-http.sh b/t/t5812-proto-disable-http.sh index 0d105d5417..d911afd24c 100755 --- a/t/t5812-proto-disable-http.sh +++ b/t/t5812-proto-disable-http.sh @@ -18,6 +18,7 @@ test_proto "smart http" http "$HTTPD_URL/smart/repo.git" test_expect_success 'curl redirects respect whitelist' ' test_must_fail env GIT_ALLOW_PROTOCOL=http:https \ + GIT_SMART_HTTP=0 \ git clone "$HTTPD_URL/ftp-redir/repo.git" 2>stderr && { test_i18ngrep "ftp.*disabled" stderr || @@ -29,5 +30,12 @@ test_expect_success 'curl limits redirects' ' test_must_fail git clone "$HTTPD_URL/loop-redir/smart/repo.git" ' +test_expect_success 'http can be limited to from-user' ' + git -c protocol.http.allow=user \ + clone "$HTTPD_URL/smart/repo.git" plain.git && + test_must_fail git -c protocol.http.allow=user \ + clone "$HTTPD_URL/smart-redir-perm/repo.git" redir.git +' + stop_httpd test_done diff --git a/t/t6101-rev-parse-parents.sh b/t/t6101-rev-parse-parents.sh index 64a9850e31..8c617981a3 100755 --- a/t/t6101-rev-parse-parents.sh +++ b/t/t6101-rev-parse-parents.sh @@ -83,12 +83,24 @@ test_expect_success 'final^1^@ = final^1^1 final^1^2' ' test_cmp expect actual ' +test_expect_success 'symbolic final^1^@ = final^1^1 final^1^2' ' + git rev-parse --symbolic final^1^1 final^1^2 >expect && + git rev-parse --symbolic final^1^@ >actual && + test_cmp expect actual +' + test_expect_success 'final^1^! = final^1 ^final^1^1 ^final^1^2' ' git rev-parse final^1 ^final^1^1 ^final^1^2 >expect && git rev-parse final^1^! >actual && test_cmp expect actual ' +test_expect_success 'symbolic final^1^! = final^1 ^final^1^1 ^final^1^2' ' + git rev-parse --symbolic final^1 ^final^1^1 ^final^1^2 >expect && + git rev-parse --symbolic final^1^! >actual && + test_cmp expect actual +' + test_expect_success 'large graft octopus' ' test_cmp_rev_output b31 "git rev-parse --verify b1^30" ' @@ -143,6 +155,12 @@ test_expect_success 'rev-parse merge^-2 = merge^2..merge' ' test_cmp expect actual ' +test_expect_success 'symbolic merge^-1 = merge^1..merge' ' + git rev-parse --symbolic merge^1..merge >expect && + git rev-parse --symbolic merge^-1 >actual && + test_cmp expect actual +' + test_expect_success 'rev-parse merge^-0 (invalid parent)' ' test_must_fail git rev-parse merge^-0 ' diff --git a/t/t6300-for-each-ref.sh b/t/t6300-for-each-ref.sh index 19a2823025..aea1dfc714 100755 --- a/t/t6300-for-each-ref.sh +++ b/t/t6300-for-each-ref.sh @@ -553,4 +553,39 @@ test_expect_success 'Verify sort with multiple keys' ' refs/tags/bogo refs/tags/master > actual && test_cmp expected actual ' + +test_expect_success 'do not dereference NULL upon %(HEAD) on unborn branch' ' + test_when_finished "git checkout master" && + git for-each-ref --format="%(HEAD) %(refname:short)" refs/heads/ >actual && + sed -e "s/^\* / /" actual >expect && + git checkout --orphan HEAD && + git for-each-ref --format="%(HEAD) %(refname:short)" refs/heads/ >actual && + test_cmp expect actual +' + +cat >trailers <<EOF +Reviewed-by: A U Thor <author@example.com> +Signed-off-by: A U Thor <author@example.com> +EOF + +test_expect_success 'basic atom: head contents:trailers' ' + echo "Some contents" > two && + git add two && + git commit -F - <<-EOF && + trailers: this commit message has trailers + + Some message contents + + $(cat trailers) + EOF + git for-each-ref --format="%(contents:trailers)" refs/heads/master >actual && + sanitize_pgp <actual >actual.clean && + # git for-each-ref ends with a blank line + cat >expect <<-EOF && + $(cat trailers) + + EOF + test_cmp expect actual.clean +' + test_done diff --git a/t/t7004-tag.sh b/t/t7004-tag.sh index 8b0f71a2ac..07869b0c09 100755 --- a/t/t7004-tag.sh +++ b/t/t7004-tag.sh @@ -27,6 +27,30 @@ test_expect_success 'listing all tags in an empty tree should output nothing' ' test $(git tag | wc -l) -eq 0 ' +test_expect_success 'sort tags, ignore case' ' + ( + git init sort && + cd sort && + test_commit initial && + git tag tag-one && + git tag TAG-two && + git tag -l >actual && + cat >expected <<-\EOF && + TAG-two + initial + tag-one + EOF + test_cmp expected actual && + git tag -l -i >actual && + cat >expected <<-\EOF && + initial + tag-one + TAG-two + EOF + test_cmp expected actual + ) +' + test_expect_success 'looking for a tag in an empty tree should fail' \ '! (tag_exists mytag)' @@ -81,6 +105,9 @@ test_expect_success 'listing all tags if one exists should output that tag' ' test_expect_success 'listing a tag using a matching pattern should succeed' \ 'git tag -l mytag' +test_expect_success 'listing a tag with --ignore-case' \ + 'test $(git tag -l --ignore-case MYTAG) = mytag' + test_expect_success \ 'listing a tag using a matching pattern should output that tag' \ 'test $(git tag -l mytag) = mytag' diff --git a/t/t7408-submodule-reference.sh b/t/t7408-submodule-reference.sh index 1c1e289ffd..e159fc5035 100755 --- a/t/t7408-submodule-reference.sh +++ b/t/t7408-submodule-reference.sh @@ -125,4 +125,70 @@ test_expect_success 'ignoring missing submodule alternates passes clone and subm ) ' +test_expect_success 'preparing second superproject with a nested submodule plus partial clone' ' + test_create_repo supersuper && + ( + cd supersuper && + echo "I am super super." >file && + git add file && + git commit -m B-super-super-initial + git submodule add "file://$base_dir/super" subwithsub && + git commit -m B-super-super-added && + git submodule update --init --recursive && + git repack -ad + ) && + git clone supersuper supersuper2 && + ( + cd supersuper2 && + git submodule update --init + ) +' + +# At this point there are three root-level positories: A, B, super and super2 + +test_expect_success 'nested submodule alternate in works and is actually used' ' + test_when_finished "rm -rf supersuper-clone" && + git clone --recursive --reference supersuper supersuper supersuper-clone && + ( + cd supersuper-clone && + # test superproject has alternates setup correctly + test_alternate_is_used .git/objects/info/alternates . && + # immediate submodule has alternate: + test_alternate_is_used .git/modules/subwithsub/objects/info/alternates subwithsub && + # nested submodule also has alternate: + test_alternate_is_used .git/modules/subwithsub/modules/sub/objects/info/alternates subwithsub/sub + ) +' + +check_that_two_of_three_alternates_are_used() { + test_alternate_is_used .git/objects/info/alternates . && + # immediate submodule has alternate: + test_alternate_is_used .git/modules/subwithsub/objects/info/alternates subwithsub && + # but nested submodule has no alternate: + test_must_fail test_alternate_is_used .git/modules/subwithsub/modules/sub/objects/info/alternates subwithsub/sub +} + + +test_expect_success 'missing nested submodule alternate fails clone and submodule update' ' + test_when_finished "rm -rf supersuper-clone" && + test_must_fail git clone --recursive --reference supersuper2 supersuper2 supersuper-clone && + ( + cd supersuper-clone && + check_that_two_of_three_alternates_are_used && + # update of the submodule fails + test_must_fail git submodule update --init --recursive + ) +' + +test_expect_success 'missing nested submodule alternate in --reference-if-able mode' ' + test_when_finished "rm -rf supersuper-clone" && + git clone --recursive --reference-if-able supersuper2 supersuper2 supersuper-clone && + ( + cd supersuper-clone && + check_that_two_of_three_alternates_are_used && + # update of the submodule succeeds + git submodule update --init --recursive + ) +' + test_done diff --git a/t/t7411-submodule-config.sh b/t/t7411-submodule-config.sh index 47562ce465..d389ae5408 100755 --- a/t/t7411-submodule-config.sh +++ b/t/t7411-submodule-config.sh @@ -93,6 +93,20 @@ test_expect_success 'error message contains blob reference' ' ) ' +test_expect_success 'using different treeishs works' ' + ( + cd super && + git tag new_tag && + tree=$(git rev-parse HEAD^{tree}) && + commit=$(git rev-parse HEAD^{commit}) && + test-submodule-config $commit b >expect && + test-submodule-config $tree b >actual.1 && + test-submodule-config new_tag b >actual.2 && + test_cmp expect actual.1 && + test_cmp expect actual.2 + ) +' + cat >super/expect_url <<EOF Submodule url: 'git@somewhere.else.net:a.git' for path 'b' Submodule url: 'git@somewhere.else.net:submodule.git' for path 'submodule' diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh index d84897a67a..0b6da7ae1f 100755 --- a/t/t7501-commit.sh +++ b/t/t7501-commit.sh @@ -155,6 +155,15 @@ test_expect_success 'amend --only ignores staged contents' ' git diff --exit-code ' +test_expect_success 'allow-empty --only ignores staged contents' ' + echo changed-again >file && + git add file && + git commit --allow-empty --only -m "empty" && + git cat-file blob HEAD:file >file.actual && + test_cmp file.expect file.actual && + git diff --exit-code +' + test_expect_success 'set up editor' ' cat >editor <<-\EOF && #!/bin/sh @@ -460,6 +469,42 @@ $alt" && test_cmp expected actual ' +test_expect_success 'signoff respects trailer config' ' + + echo 5 >positive && + git add positive && + git commit -s -m "subject + +non-trailer line +Myfooter: x" && + git cat-file commit HEAD | sed -e "1,/^\$/d" > actual && + ( + echo subject + echo + echo non-trailer line + echo Myfooter: x + echo + echo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" + ) >expected && + test_cmp expected actual && + + echo 6 >positive && + git add positive && + git -c "trailer.Myfooter.ifexists=add" commit -s -m "subject + +non-trailer line +Myfooter: x" && + git cat-file commit HEAD | sed -e "1,/^\$/d" > actual && + ( + echo subject + echo + echo non-trailer line + echo Myfooter: x + echo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" + ) >expected && + test_cmp expected actual +' + test_expect_success 'multiple -m' ' >negative && diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh index 85248a14b6..2ebda509ac 100755 --- a/t/t7600-merge.sh +++ b/t/t7600-merge.sh @@ -154,6 +154,10 @@ test_expect_success 'test option parsing' ' test_must_fail git merge -s foobar c1 && test_must_fail git merge -s=foobar c1 && test_must_fail git merge -m && + test_must_fail git merge --abort foobar && + test_must_fail git merge --abort --quiet && + test_must_fail git merge --continue foobar && + test_must_fail git merge --continue --quiet && test_must_fail git merge ' @@ -763,4 +767,11 @@ test_expect_success 'merge nothing into void' ' ) ' +test_expect_success 'merge can be completed with --continue' ' + git reset --hard c0 && + git merge --no-ff --no-commit c1 && + git merge --continue && + verify_parents $c0 $c1 +' + test_done diff --git a/t/t7609-merge-co-error-msgs.sh b/t/t7609-merge-co-error-msgs.sh index f80bdb81e1..e90413204e 100755 --- a/t/t7609-merge-co-error-msgs.sh +++ b/t/t7609-merge-co-error-msgs.sh @@ -105,7 +105,7 @@ test_expect_success 'not uptodate file porcelain checkout error' ' ' cat >expect <<\EOF -error: Updating the following directories would lose untracked files in it: +error: Updating the following directories would lose untracked files in them: rep rep2 diff --git a/t/t7610-mergetool.sh b/t/t7610-mergetool.sh index 6d9f21511f..63d36fb28e 100755 --- a/t/t7610-mergetool.sh +++ b/t/t7610-mergetool.sh @@ -591,7 +591,8 @@ test_expect_success 'filenames seen by tools start with ./' ' test_lazy_prereq MKTEMP ' tempdir=$(mktemp -d -t foo.XXXXXX) && - test -d "$tempdir" + test -d "$tempdir" && + rmdir "$tempdir" ' test_expect_success MKTEMP 'temporary filenames are used with mergetool.writeToTemp' ' diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh index 70a2de461a..99d4123461 100755 --- a/t/t7800-difftool.sh +++ b/t/t7800-difftool.sh @@ -374,6 +374,7 @@ test_expect_success PERL 'setup change in subdirectory' ' echo master >sub/sub && git add sub/sub && git commit -m "added sub/sub" && + git tag v1 && echo test >>file && echo test >>sub/sub && git add file sub/sub && @@ -409,12 +410,49 @@ run_dir_diff_test 'difftool --dir-diff ignores --prompt' ' grep file output ' -run_dir_diff_test 'difftool --dir-diff from subdirectory' ' +run_dir_diff_test 'difftool --dir-diff branch from subdirectory' ' ( cd sub && git difftool --dir-diff $symlinks --extcmd ls branch >output && - grep sub output && - grep file output + # "sub" must only exist in "right" + # "file" and "file2" must be listed in both "left" and "right" + test "1" = $(grep sub output | wc -l) && + test "2" = $(grep file"$" output | wc -l) && + test "2" = $(grep file2 output | wc -l) + ) +' + +run_dir_diff_test 'difftool --dir-diff v1 from subdirectory' ' + ( + cd sub && + git difftool --dir-diff $symlinks --extcmd ls v1 >output && + # "sub" and "file" exist in both v1 and HEAD. + # "file2" is unchanged. + test "2" = $(grep sub output | wc -l) && + test "2" = $(grep file output | wc -l) && + test "0" = $(grep file2 output | wc -l) + ) +' + +run_dir_diff_test 'difftool --dir-diff branch from subdirectory w/ pathspec' ' + ( + cd sub && + git difftool --dir-diff $symlinks --extcmd ls branch -- .>output && + # "sub" only exists in "right" + # "file" and "file2" must not be listed + test "1" = $(grep sub output | wc -l) && + test "0" = $(grep file output | wc -l) + ) +' + +run_dir_diff_test 'difftool --dir-diff v1 from subdirectory w/ pathspec' ' + ( + cd sub && + git difftool --dir-diff $symlinks --extcmd ls v1 -- .>output && + # "sub" exists in v1 and HEAD + # "file" is filtered out by the pathspec + test "2" = $(grep sub output | wc -l) && + test "0" = $(grep file output | wc -l) ) ' diff --git a/t/t9100-git-svn-basic.sh b/t/t9100-git-svn-basic.sh index 92a3aa8063..8a8ba65a2a 100755 --- a/t/t9100-git-svn-basic.sh +++ b/t/t9100-git-svn-basic.sh @@ -17,25 +17,12 @@ case "$GIT_SVN_LC_ALL" in ;; esac -deepdir=nothing-above -ceiling=$PWD - test_expect_success 'git svn --version works anywhere' ' - mkdir -p "$deepdir" && ( - GIT_CEILING_DIRECTORIES="$ceiling" && - export GIT_CEILING_DIRECTORIES && - cd "$deepdir" && - git svn --version - ) + nongit git svn --version ' test_expect_success 'git svn help works anywhere' ' - mkdir -p "$deepdir" && ( - GIT_CEILING_DIRECTORIES="$ceiling" && - export GIT_CEILING_DIRECTORIES && - cd "$deepdir" && - git svn help - ) + nongit git svn help ' test_expect_success \ diff --git a/t/t9301-fast-import-notes.sh b/t/t9301-fast-import-notes.sh index 83acf68bc3..dadc70b7d5 100755 --- a/t/t9301-fast-import-notes.sh +++ b/t/t9301-fast-import-notes.sh @@ -483,6 +483,48 @@ test_expect_success 'verify that lots of notes trigger a fanout scheme' ' ' +# Create another notes tree from the one above +SP=" " +cat >>input <<INPUT_END +commit refs/heads/other_commits +committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE +data <<COMMIT +commit #$(($num_commit + 1)) +COMMIT + +from refs/heads/many_commits +M 644 inline file +data <<EOF +file contents in commit #$(($num_commit + 1)) +EOF + +commit refs/notes/other_notes +committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE +data <<COMMIT +committing one more note on a tree imported from a previous notes tree +COMMIT + +M 040000 $(git log --no-walk --format=%T refs/notes/many_notes)$SP +N inline :$(($num_commit + 1)) +data <<EOF +note for commit #$(($num_commit + 1)) +EOF +INPUT_END + +test_expect_success 'verify that importing a notes tree respects the fanout scheme' ' + git fast-import <input && + + # None of the entries in the top-level notes tree should be a full SHA1 + git ls-tree --name-only refs/notes/other_notes | + while read path + do + if test $(expr length "$path") -ge 40 + then + return 1 + fi + done +' + cat >>expect_non-note1 << EOF This is not a note, but rather a regular file residing in a notes tree EOF diff --git a/t/t9303-fast-import-compression.sh b/t/t9303-fast-import-compression.sh new file mode 100755 index 0000000000..856219f46a --- /dev/null +++ b/t/t9303-fast-import-compression.sh @@ -0,0 +1,67 @@ +#!/bin/sh + +test_description='compression setting of fast-import utility' +. ./test-lib.sh + +# This should be moved to test-lib.sh together with the +# copy in t0021 after both topics have graduated to 'master'. +file_size () { + perl -e 'print -s $ARGV[0]' "$1" +} + +import_large () { + ( + echo blob + echo "data <<EOD" + printf "%2000000s\n" "$*" + echo EOD + ) | git "$@" fast-import +} + +while read expect config +do + test_expect_success "fast-import (packed) with $config" ' + test_when_finished "rm -f .git/objects/pack/pack-*.*" && + test_when_finished "rm -rf .git/objects/??" && + import_large -c fastimport.unpacklimit=0 $config && + sz=$(file_size .git/objects/pack/pack-*.pack) && + case "$expect" in + small) test "$sz" -le 100000 ;; + large) test "$sz" -ge 100000 ;; + esac + ' +done <<\EOF +large -c core.compression=0 +small -c core.compression=9 +large -c core.compression=0 -c pack.compression=0 +large -c core.compression=9 -c pack.compression=0 +small -c core.compression=0 -c pack.compression=9 +small -c core.compression=9 -c pack.compression=9 +large -c pack.compression=0 +small -c pack.compression=9 +EOF + +while read expect config +do + test_expect_success "fast-import (loose) with $config" ' + test_when_finished "rm -f .git/objects/pack/pack-*.*" && + test_when_finished "rm -rf .git/objects/??" && + import_large -c fastimport.unpacklimit=9 $config && + sz=$(file_size .git/objects/??/????*) && + case "$expect" in + small) test "$sz" -le 100000 ;; + large) test "$sz" -ge 100000 ;; + esac + ' +done <<\EOF +large -c core.compression=0 +small -c core.compression=9 +large -c core.compression=0 -c core.loosecompression=0 +large -c core.compression=9 -c core.loosecompression=0 +small -c core.compression=0 -c core.loosecompression=9 +small -c core.compression=9 -c core.loosecompression=9 +large -c core.loosecompression=0 +small -c core.loosecompression=9 +EOF + +test_done diff --git a/t/t9800-git-p4-basic.sh b/t/t9800-git-p4-basic.sh index 0730f18d0f..4849edc4ef 100755 --- a/t/t9800-git-p4-basic.sh +++ b/t/t9800-git-p4-basic.sh @@ -131,6 +131,26 @@ test_expect_success 'clone two dirs, @all, conflicting files' ' ) ' +test_expect_success 'clone two dirs, each edited by submit, single git commit' ' + ( + cd "$cli" && + echo sub1/f4 >sub1/f4 && + p4 add sub1/f4 && + echo sub2/f4 >sub2/f4 && + p4 add sub2/f4 && + p4 submit -d "sub1/f4 and sub2/f4" + ) && + git p4 clone --dest="$git" //depot/sub1@all //depot/sub2@all && + test_when_finished cleanup_git && + ( + cd "$git" && + git ls-files >lines && + test_line_count = 4 lines && + git log --oneline p4/master >lines && + test_line_count = 5 lines + ) +' + revision_ranges="2000/01/01,#head \ 1,2080/01/01 \ 2000/01/01,2080/01/01 \ @@ -147,7 +167,7 @@ test_expect_success 'clone using non-numeric revision ranges' ' ( cd "$git" && git ls-files >lines && - test_line_count = 6 lines + test_line_count = 8 lines ) done ' @@ -257,6 +277,26 @@ test_expect_success 'submit from detached head' ' ) ' +test_expect_success 'submit from worktree' ' + test_when_finished cleanup_git && + git p4 clone --dest="$git" //depot && + ( + cd "$git" && + git worktree add ../worktree-test + ) && + ( + cd "$git/../worktree-test" && + test_commit "worktree-commit" && + git config git-p4.skipSubmitEdit true && + git p4 submit + ) && + ( + cd "$cli" && + p4 sync && + test_path_is_file worktree-commit.t + ) +' + test_expect_success 'kill p4d' ' kill_p4d ' diff --git a/t/t9806-git-p4-options.sh b/t/t9806-git-p4-options.sh index 254d428b73..1ab76c4246 100755 --- a/t/t9806-git-p4-options.sh +++ b/t/t9806-git-p4-options.sh @@ -269,6 +269,38 @@ test_expect_success 'submit works with two branches' ' ) ' +test_expect_success 'use --git-dir option and GIT_DIR' ' + test_when_finished cleanup_git && + git p4 clone //depot --destination="$git" && + ( + cd "$git" && + git config git-p4.skipSubmitEdit true && + test_commit first-change && + git p4 submit --git-dir "$git" + ) && + ( + cd "$cli" && + p4 sync && + test_path_is_file first-change.t && + echo "cli_file" >cli_file.t && + p4 add cli_file.t && + p4 submit -d "cli change" + ) && + (git --git-dir "$git" p4 sync) && + (cd "$git" && git checkout -q p4/master) && + test_path_is_file "$git"/cli_file.t && + ( + cd "$cli" && + echo "cli_file2" >cli_file2.t && + p4 add cli_file2.t && + p4 submit -d "cli change2" + ) && + (GIT_DIR="$git" git p4 sync) && + (cd "$git" && git checkout -q p4/master) && + test_path_is_file "$git"/cli_file2.t +' + + test_expect_success 'kill p4d' ' kill_p4d ' diff --git a/t/t9807-git-p4-submit.sh b/t/t9807-git-p4-submit.sh index 593152817d..e37239e657 100755 --- a/t/t9807-git-p4-submit.sh +++ b/t/t9807-git-p4-submit.sh @@ -413,6 +413,75 @@ test_expect_success 'submit --prepare-p4-only' ' ) ' +test_expect_success 'submit --shelve' ' + test_when_finished cleanup_git && + git p4 clone --dest="$git" //depot && + ( + cd "$cli" && + p4 revert ... && + cd "$git" && + git config git-p4.skipSubmitEdit true && + test_commit "shelveme1" && + git p4 submit --origin=HEAD^ && + + echo 654321 >shelveme2.t && + echo 123456 >>shelveme1.t && + git add shelveme* && + git commit -m"shelvetest" && + git p4 submit --shelve --origin=HEAD^ && + + test_path_is_file shelveme1.t && + test_path_is_file shelveme2.t + ) && + ( + cd "$cli" && + change=$(p4 -G changes -s shelved -m 1 //depot/... | \ + marshal_dump change) && + p4 describe -S $change | grep shelveme2 && + p4 describe -S $change | grep 123456 && + test_path_is_file shelveme1.t && + test_path_is_missing shelveme2.t + ) +' + +# Update an existing shelved changelist + +test_expect_success 'submit --update-shelve' ' + test_when_finished cleanup_git && + git p4 clone --dest="$git" //depot && + ( + cd "$cli" && + p4 revert ... && + cd "$git" && + git config git-p4.skipSubmitEdit true && + test_commit "test-update-shelved-change" && + git p4 submit --origin=HEAD^ --shelve && + + shelf_cl=$(p4 -G changes -s shelved -m 1 |\ + marshal_dump change) && + test -n $shelf_cl && + echo "updating shelved change list $shelf_cl" && + + echo "updated-line" >>shelf.t && + echo added-file.t >added-file.t && + git add shelf.t added-file.t && + git rm -f test-update-shelved-change.t && + git commit --amend -C HEAD && + git show --stat HEAD && + git p4 submit -v --origin HEAD^ --update-shelve $shelf_cl && + echo "done git p4 submit" + ) && + ( + cd "$cli" && + change=$(p4 -G changes -s shelved -m 1 //depot/... | \ + marshal_dump change) && + p4 unshelve -c $change -s $change && + grep -q updated-line shelf.t && + p4 describe -S $change | grep added-file.t && + test_path_is_missing test-update-shelved-change.t + ) +' + test_expect_success 'kill p4d' ' kill_p4d ' diff --git a/t/t9824-git-p4-git-lfs.sh b/t/t9824-git-p4-git-lfs.sh index 110a7e7924..ed80ca858c 100755 --- a/t/t9824-git-p4-git-lfs.sh +++ b/t/t9824-git-p4-git-lfs.sh @@ -42,6 +42,8 @@ test_expect_success 'Create repo with binary files' ' ( cd "$cli" && + >file0.dat && + p4 add file0.dat && echo "content 1 txt 23 bytes" >file1.txt && p4 add file1.txt && echo "content 2-3 bin 25 bytes" >file2.dat && @@ -81,9 +83,9 @@ test_expect_success 'Store files in LFS based on size (>24 bytes)' ' # # Git LFS (see https://git-lfs.github.com/) # - /file2.dat filter=lfs -text - /file4.bin filter=lfs -text - /path[[:space:]]with[[:space:]]spaces/file3.bin filter=lfs -text + /file2.dat filter=lfs diff=lfs merge=lfs -text + /file4.bin filter=lfs diff=lfs merge=lfs -text + /path[[:space:]]with[[:space:]]spaces/file3.bin filter=lfs diff=lfs merge=lfs -text EOF test_path_is_file .gitattributes && test_cmp expect .gitattributes @@ -109,7 +111,7 @@ test_expect_success 'Store files in LFS based on size (>25 bytes)' ' # # Git LFS (see https://git-lfs.github.com/) # - /file4.bin filter=lfs -text + /file4.bin filter=lfs diff=lfs merge=lfs -text EOF test_path_is_file .gitattributes && test_cmp expect .gitattributes @@ -135,7 +137,7 @@ test_expect_success 'Store files in LFS based on extension (dat)' ' # # Git LFS (see https://git-lfs.github.com/) # - *.dat filter=lfs -text + *.dat filter=lfs diff=lfs merge=lfs -text EOF test_path_is_file .gitattributes && test_cmp expect .gitattributes @@ -163,8 +165,8 @@ test_expect_success 'Store files in LFS based on size (>25 bytes) and extension # # Git LFS (see https://git-lfs.github.com/) # - *.dat filter=lfs -text - /file4.bin filter=lfs -text + *.dat filter=lfs diff=lfs merge=lfs -text + /file4.bin filter=lfs diff=lfs merge=lfs -text EOF test_path_is_file .gitattributes && test_cmp expect .gitattributes @@ -199,8 +201,8 @@ test_expect_success 'Remove file from repo and store files in LFS based on size # # Git LFS (see https://git-lfs.github.com/) # - /file2.dat filter=lfs -text - /path[[:space:]]with[[:space:]]spaces/file3.bin filter=lfs -text + /file2.dat filter=lfs diff=lfs merge=lfs -text + /path[[:space:]]with[[:space:]]spaces/file3.bin filter=lfs diff=lfs merge=lfs -text EOF test_path_is_file .gitattributes && test_cmp expect .gitattributes @@ -237,8 +239,8 @@ test_expect_success 'Add .gitattributes and store files in LFS based on size (>2 # # Git LFS (see https://git-lfs.github.com/) # - /file2.dat filter=lfs -text - /path[[:space:]]with[[:space:]]spaces/file3.bin filter=lfs -text + /file2.dat filter=lfs diff=lfs merge=lfs -text + /path[[:space:]]with[[:space:]]spaces/file3.bin filter=lfs diff=lfs merge=lfs -text EOF test_path_is_file .gitattributes && test_cmp expect .gitattributes @@ -278,7 +280,7 @@ test_expect_success 'Add big files to repo and store files in LFS based on compr # # Git LFS (see https://git-lfs.github.com/) # - /file6.bin filter=lfs -text + /file6.bin filter=lfs diff=lfs merge=lfs -text EOF test_path_is_file .gitattributes && test_cmp expect .gitattributes diff --git a/t/t9830-git-p4-symlink-dir.sh b/t/t9830-git-p4-symlink-dir.sh new file mode 100755 index 0000000000..3dc528bb1e --- /dev/null +++ b/t/t9830-git-p4-symlink-dir.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +test_description='git p4 symlinked directories' + +. ./lib-git-p4.sh + +test_expect_success 'start p4d' ' + start_p4d +' + +test_expect_success 'symlinked directory' ' + ( + cd "$cli" && + : >first_file.t && + p4 add first_file.t && + p4 submit -d "first change" + ) && + git p4 clone --dest "$git" //depot && + ( + cd "$git" && + mkdir -p some/sub/directory && + mkdir -p other/subdir2 && + : > other/subdir2/file.t && + (cd some/sub/directory && ln -s ../../../other/subdir2 .) && + git add some other && + git commit -m "symlinks" && + git config git-p4.skipSubmitEdit true && + git p4 submit -v + ) && + ( + cd "$cli" && + p4 sync && + test -L some/sub/directory/subdir2 + test_path_is_file some/sub/directory/subdir2/file.t + ) + +' + +test_expect_success 'kill p4d' ' + kill_p4d +' + +test_done diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index 2ba62fbc17..a34e55f874 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -257,12 +257,7 @@ test_expect_success SYMLINKS '__gitdir - resulting path avoids symlinks' ' ' test_expect_success '__gitdir - not a git repository' ' - ( - cd subdir/subsubdir && - GIT_CEILING_DIRECTORIES="$TRASH_DIRECTORY" && - export GIT_CEILING_DIRECTORIES && - test_must_fail __gitdir - ) + nongit test_must_fail __gitdir ' test_expect_success '__gitcomp - trailing space - options' ' diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh index 579e812506..bd357704cc 100644 --- a/t/test-lib-functions.sh +++ b/t/test-lib-functions.sh @@ -1004,3 +1004,17 @@ test_copy_bytes () { } ' - "$1" } + +# run "$@" inside a non-git directory +nongit () { + test -d non-repo || + mkdir non-repo || + return 1 + + ( + GIT_CEILING_DIRECTORIES=$(pwd) && + export GIT_CEILING_DIRECTORIES && + cd non-repo && + "$@" + ) +} diff --git a/tmp-objdir.c b/tmp-objdir.c index 64435f23a4..b2d9280f10 100644 --- a/tmp-objdir.c +++ b/tmp-objdir.c @@ -5,6 +5,7 @@ #include "string-list.h" #include "strbuf.h" #include "argv-array.h" +#include "quote.h" struct tmp_objdir { struct strbuf path; @@ -79,12 +80,27 @@ static void remove_tmp_objdir_on_signal(int signo) */ static void env_append(struct argv_array *env, const char *key, const char *val) { - const char *old = getenv(key); + struct strbuf quoted = STRBUF_INIT; + const char *old; + /* + * Avoid quoting if it's not necessary, for maximum compatibility + * with older parsers which don't understand the quoting. + */ + if (*val == '"' || strchr(val, PATH_SEP)) { + strbuf_addch("ed, '"'); + quote_c_style(val, "ed, NULL, 1); + strbuf_addch("ed, '"'); + val = quoted.buf; + } + + old = getenv(key); if (!old) argv_array_pushf(env, "%s=%s", key, val); else argv_array_pushf(env, "%s=%s%c%s", key, old, PATH_SEP, val); + + strbuf_release("ed); } static void env_replace(struct argv_array *env, const char *key, const char *val) @@ -46,6 +46,8 @@ static LIST_HEAD(conf_head); static char *separators = ":"; +static int configured; + #define TRAILER_ARG_STRING "$ARG" static const char *git_generated_prefixes[] = { @@ -102,12 +104,12 @@ static int same_trailer(struct trailer_item *a, struct arg_item *b) return same_token(a, b) && same_value(a, b); } -static inline int contains_only_spaces(const char *str) +static inline int is_blank_line(const char *str) { const char *s = str; - while (*s && isspace(*s)) + while (*s && *s != '\n' && isspace(*s)) s++; - return !*s; + return !*s || *s == '\n'; } static inline void strbuf_replace(struct strbuf *sb, const char *a, const char *b) @@ -546,6 +548,17 @@ static int git_trailer_config(const char *conf_key, const char *value, void *cb) return 0; } +static void ensure_configured(void) +{ + if (configured) + return; + + /* Default config must be setup first */ + git_config(git_trailer_default_config, NULL); + git_config(git_trailer_config, NULL); + configured = 1; +} + static const char *token_from_item(struct arg_item *item, char *tok) { if (item->conf.key) @@ -563,15 +576,32 @@ static int token_matches_item(const char *tok, struct arg_item *item, int tok_le } /* - * Return the location of the first separator in line, or -1 if there is no - * separator. + * If the given line is of the form + * "<token><optional whitespace><separator>..." or "<separator>...", return the + * location of the separator. Otherwise, return -1. The optional whitespace + * is allowed there primarily to allow things like "Bug #43" where <token> is + * "Bug" and <separator> is "#". + * + * The separator-starts-line case (in which this function returns 0) is + * distinguished from the non-well-formed-line case (in which this function + * returns -1) because some callers of this function need such a distinction. */ static int find_separator(const char *line, const char *separators) { - int loc = strcspn(line, separators); - if (!line[loc]) - return -1; - return loc; + int whitespace_found = 0; + const char *c; + for (c = line; *c; c++) { + if (strchr(separators, *c)) + return c - line; + if (!whitespace_found && (isalnum(*c) || *c == '-')) + continue; + if (c != line && (*c == ' ' || *c == '\t')) { + whitespace_found = 1; + continue; + } + break; + } + return -1; } /* @@ -685,51 +715,71 @@ static void process_command_line_args(struct list_head *arg_head, free(cl_separators); } -static struct strbuf **read_input_file(const char *file) +static void read_input_file(struct strbuf *sb, const char *file) { - struct strbuf **lines; - struct strbuf sb = STRBUF_INIT; - if (file) { - if (strbuf_read_file(&sb, file, 0) < 0) + if (strbuf_read_file(sb, file, 0) < 0) die_errno(_("could not read input file '%s'"), file); } else { - if (strbuf_read(&sb, fileno(stdin), 0) < 0) + if (strbuf_read(sb, fileno(stdin), 0) < 0) die_errno(_("could not read from stdin")); } +} - lines = strbuf_split(&sb, '\n'); +static const char *next_line(const char *str) +{ + const char *nl = strchrnul(str, '\n'); + return nl + !!*nl; +} - strbuf_release(&sb); +/* + * Return the position of the start of the last line. If len is 0, return -1. + */ +static int last_line(const char *buf, size_t len) +{ + int i; + if (len == 0) + return -1; + if (len == 1) + return 0; + /* + * Skip the last character (in addition to the null terminator), + * because if the last character is a newline, it is considered as part + * of the last line anyway. + */ + i = len - 2; - return lines; + for (; i >= 0; i--) { + if (buf[i] == '\n') + return i + 1; + } + return 0; } /* - * Return the (0 based) index of the start of the patch or the line - * count if there is no patch in the message. + * Return the position of the start of the patch or the length of str if there + * is no patch in the message. */ -static int find_patch_start(struct strbuf **lines, int count) +static int find_patch_start(const char *str) { - int i; + const char *s; - /* Get the start of the patch part if any */ - for (i = 0; i < count; i++) { - if (starts_with(lines[i]->buf, "---")) - return i; + for (s = str; *s; s = next_line(s)) { + if (starts_with(s, "---")) + return s - str; } - return count; + return s - str; } /* - * Return the (0 based) index of the first trailer line or count if - * there are no trailers. Trailers are searched only in the lines from - * index (count - 1) down to index 0. + * Return the position of the first trailer line or len if there are no + * trailers. */ -static int find_trailer_start(struct strbuf **lines, int count) +static int find_trailer_start(const char *buf, size_t len) { - int start, end_of_title, only_spaces = 1; + const char *s; + int end_of_title, l, only_spaces = 1; int recognized_prefix = 0, trailer_lines = 0, non_trailer_lines = 0; /* * Number of possible continuation lines encountered. This will be @@ -741,13 +791,13 @@ static int find_trailer_start(struct strbuf **lines, int count) int possible_continuation_lines = 0; /* The first paragraph is the title and cannot be trailers */ - for (start = 0; start < count; start++) { - if (lines[start]->buf[0] == comment_line_char) + for (s = buf; s < buf + len; s = next_line(s)) { + if (s[0] == comment_line_char) continue; - if (contains_only_spaces(lines[start]->buf)) + if (is_blank_line(s)) break; } - end_of_title = start; + end_of_title = s - buf; /* * Get the start of the trailers by looking starting from the end for a @@ -755,30 +805,33 @@ static int find_trailer_start(struct strbuf **lines, int count) * trailers, or (ii) contains at least one Git-generated trailer and * consists of at least 25% trailers. */ - for (start = count - 1; start >= end_of_title; start--) { + for (l = last_line(buf, len); + l >= end_of_title; + l = last_line(buf, l)) { + const char *bol = buf + l; const char **p; int separator_pos; - if (lines[start]->buf[0] == comment_line_char) { + if (bol[0] == comment_line_char) { non_trailer_lines += possible_continuation_lines; possible_continuation_lines = 0; continue; } - if (contains_only_spaces(lines[start]->buf)) { + if (is_blank_line(bol)) { if (only_spaces) continue; non_trailer_lines += possible_continuation_lines; if (recognized_prefix && trailer_lines * 3 >= non_trailer_lines) - return start + 1; - if (trailer_lines && !non_trailer_lines) - return start + 1; - return count; + return next_line(bol) - buf; + else if (trailer_lines && !non_trailer_lines) + return next_line(bol) - buf; + return len; } only_spaces = 0; for (p = git_generated_prefixes; *p; p++) { - if (starts_with(lines[start]->buf, *p)) { + if (starts_with(bol, *p)) { trailer_lines++; possible_continuation_lines = 0; recognized_prefix = 1; @@ -786,8 +839,8 @@ static int find_trailer_start(struct strbuf **lines, int count) } } - separator_pos = find_separator(lines[start]->buf, separators); - if (separator_pos >= 1 && !isspace(lines[start]->buf[0])) { + separator_pos = find_separator(bol, separators); + if (separator_pos >= 1 && !isspace(bol[0])) { struct list_head *pos; trailer_lines++; @@ -797,13 +850,13 @@ static int find_trailer_start(struct strbuf **lines, int count) list_for_each(pos, &conf_head) { struct arg_item *item; item = list_entry(pos, struct arg_item, list); - if (token_matches_item(lines[start]->buf, item, + if (token_matches_item(bol, item, separator_pos)) { recognized_prefix = 1; break; } } - } else if (isspace(lines[start]->buf[0])) + } else if (isspace(bol[0])) possible_continuation_lines++; else { non_trailer_lines++; @@ -814,97 +867,64 @@ continue_outer_loop: ; } - return count; -} - -/* Get the index of the end of the trailers */ -static int find_trailer_end(struct strbuf **lines, int patch_start) -{ - struct strbuf sb = STRBUF_INIT; - int i, ignore_bytes; - - for (i = 0; i < patch_start; i++) - strbuf_addbuf(&sb, lines[i]); - ignore_bytes = ignore_non_trailer(&sb); - strbuf_release(&sb); - for (i = patch_start - 1; i >= 0 && ignore_bytes > 0; i--) - ignore_bytes -= lines[i]->len; - - return i + 1; + return len; } -static int has_blank_line_before(struct strbuf **lines, int start) +/* Return the position of the end of the trailers. */ +static int find_trailer_end(const char *buf, size_t len) { - for (;start >= 0; start--) { - if (lines[start]->buf[0] == comment_line_char) - continue; - return contains_only_spaces(lines[start]->buf); - } - return 0; + return len - ignore_non_trailer(buf, len); } -static void print_lines(FILE *outfile, struct strbuf **lines, int start, int end) +static int ends_with_blank_line(const char *buf, size_t len) { - int i; - for (i = start; lines[i] && i < end; i++) - fprintf(outfile, "%s", lines[i]->buf); + int ll = last_line(buf, len); + if (ll < 0) + return 0; + return is_blank_line(buf + ll); } static int process_input_file(FILE *outfile, - struct strbuf **lines, + const char *str, struct list_head *head) { - int count = 0; - int patch_start, trailer_start, trailer_end, i; + struct trailer_info info; struct strbuf tok = STRBUF_INIT; struct strbuf val = STRBUF_INIT; - struct trailer_item *last = NULL; - - /* Get the line count */ - while (lines[count]) - count++; + int i; - patch_start = find_patch_start(lines, count); - trailer_end = find_trailer_end(lines, patch_start); - trailer_start = find_trailer_start(lines, trailer_end); + trailer_info_get(&info, str); /* Print lines before the trailers as is */ - print_lines(outfile, lines, 0, trailer_start); + fwrite(str, 1, info.trailer_start - str, outfile); - if (!has_blank_line_before(lines, trailer_start - 1)) + if (!info.blank_line_before_trailer) fprintf(outfile, "\n"); - /* Parse trailer lines */ - for (i = trailer_start; i < trailer_end; i++) { + for (i = 0; i < info.trailer_nr; i++) { int separator_pos; - if (lines[i]->buf[0] == comment_line_char) + char *trailer = info.trailers[i]; + if (trailer[0] == comment_line_char) continue; - if (last && isspace(lines[i]->buf[0])) { - struct strbuf sb = STRBUF_INIT; - strbuf_addf(&sb, "%s\n%s", last->value, lines[i]->buf); - strbuf_strip_suffix(&sb, "\n"); - free(last->value); - last->value = strbuf_detach(&sb, NULL); - continue; - } - separator_pos = find_separator(lines[i]->buf, separators); + separator_pos = find_separator(trailer, separators); if (separator_pos >= 1) { - parse_trailer(&tok, &val, NULL, lines[i]->buf, + parse_trailer(&tok, &val, NULL, trailer, separator_pos); - last = add_trailer_item(head, - strbuf_detach(&tok, NULL), - strbuf_detach(&val, NULL)); + add_trailer_item(head, + strbuf_detach(&tok, NULL), + strbuf_detach(&val, NULL)); } else { - strbuf_addbuf(&val, lines[i]); + strbuf_addstr(&val, trailer); strbuf_strip_suffix(&val, "\n"); add_trailer_item(head, NULL, strbuf_detach(&val, NULL)); - last = NULL; } } - return trailer_end; + trailer_info_release(&info); + + return info.trailer_end - str; } static void free_all(struct list_head *head) @@ -951,21 +971,19 @@ void process_trailers(const char *file, int in_place, int trim_empty, struct str { LIST_HEAD(head); LIST_HEAD(arg_head); - struct strbuf **lines; + struct strbuf sb = STRBUF_INIT; int trailer_end; FILE *outfile = stdout; - /* Default config must be setup first */ - git_config(git_trailer_default_config, NULL); - git_config(git_trailer_config, NULL); + ensure_configured(); - lines = read_input_file(file); + read_input_file(&sb, file); if (in_place) outfile = create_in_place_tempfile(file); /* Print the lines before the trailers */ - trailer_end = process_input_file(outfile, lines, &head); + trailer_end = process_input_file(outfile, sb.buf, &head); process_command_line_args(&arg_head, trailers); @@ -976,11 +994,62 @@ void process_trailers(const char *file, int in_place, int trim_empty, struct str free_all(&head); /* Print the lines after the trailers as is */ - print_lines(outfile, lines, trailer_end, INT_MAX); + fwrite(sb.buf + trailer_end, 1, sb.len - trailer_end, outfile); if (in_place) if (rename_tempfile(&trailers_tempfile, file)) die_errno(_("could not rename temporary file to %s"), file); - strbuf_list_free(lines); + strbuf_release(&sb); +} + +void trailer_info_get(struct trailer_info *info, const char *str) +{ + int patch_start, trailer_end, trailer_start; + struct strbuf **trailer_lines, **ptr; + char **trailer_strings = NULL; + size_t nr = 0, alloc = 0; + char **last = NULL; + + ensure_configured(); + + patch_start = find_patch_start(str); + trailer_end = find_trailer_end(str, patch_start); + trailer_start = find_trailer_start(str, trailer_end); + + trailer_lines = strbuf_split_buf(str + trailer_start, + trailer_end - trailer_start, + '\n', + 0); + for (ptr = trailer_lines; *ptr; ptr++) { + if (last && isspace((*ptr)->buf[0])) { + struct strbuf sb = STRBUF_INIT; + strbuf_attach(&sb, *last, strlen(*last), strlen(*last)); + strbuf_addbuf(&sb, *ptr); + *last = strbuf_detach(&sb, NULL); + continue; + } + ALLOC_GROW(trailer_strings, nr + 1, alloc); + trailer_strings[nr] = strbuf_detach(*ptr, NULL); + last = find_separator(trailer_strings[nr], separators) >= 1 + ? &trailer_strings[nr] + : NULL; + nr++; + } + strbuf_list_free(trailer_lines); + + info->blank_line_before_trailer = ends_with_blank_line(str, + trailer_start); + info->trailer_start = str + trailer_start; + info->trailer_end = str + trailer_end; + info->trailers = trailer_strings; + info->trailer_nr = nr; +} + +void trailer_info_release(struct trailer_info *info) +{ + int i; + for (i = 0; i < info->trailer_nr; i++) + free(info->trailers[i]); + free(info->trailers); } @@ -1,7 +1,32 @@ #ifndef TRAILER_H #define TRAILER_H +struct trailer_info { + /* + * True if there is a blank line before the location pointed to by + * trailer_start. + */ + int blank_line_before_trailer; + + /* + * Pointers to the start and end of the trailer block found. If there + * is no trailer block found, these 2 pointers point to the end of the + * input string. + */ + const char *trailer_start, *trailer_end; + + /* + * Array of trailers found. + */ + char **trailers; + size_t trailer_nr; +}; + void process_trailers(const char *file, int in_place, int trim_empty, struct string_list *trailers); +void trailer_info_get(struct trailer_info *info, const char *str); + +void trailer_info_release(struct trailer_info *info); + #endif /* TRAILER_H */ diff --git a/transport.c b/transport.c index d57e8dec28..3e8799a611 100644 --- a/transport.c +++ b/transport.c @@ -664,21 +664,89 @@ static const struct string_list *protocol_whitelist(void) return enabled ? &allowed : NULL; } -int is_transport_allowed(const char *type) +enum protocol_allow_config { + PROTOCOL_ALLOW_NEVER = 0, + PROTOCOL_ALLOW_USER_ONLY, + PROTOCOL_ALLOW_ALWAYS +}; + +static enum protocol_allow_config parse_protocol_config(const char *key, + const char *value) { - const struct string_list *allowed = protocol_whitelist(); - return !allowed || string_list_has_string(allowed, type); + if (!strcasecmp(value, "always")) + return PROTOCOL_ALLOW_ALWAYS; + else if (!strcasecmp(value, "never")) + return PROTOCOL_ALLOW_NEVER; + else if (!strcasecmp(value, "user")) + return PROTOCOL_ALLOW_USER_ONLY; + + die("unknown value for config '%s': %s", key, value); } -void transport_check_allowed(const char *type) +static enum protocol_allow_config get_protocol_config(const char *type) { - if (!is_transport_allowed(type)) - die("transport '%s' not allowed", type); + char *key = xstrfmt("protocol.%s.allow", type); + char *value; + + /* first check the per-protocol config */ + if (!git_config_get_string(key, &value)) { + enum protocol_allow_config ret = + parse_protocol_config(key, value); + free(key); + free(value); + return ret; + } + free(key); + + /* if defined, fallback to user-defined default for unknown protocols */ + if (!git_config_get_string("protocol.allow", &value)) { + enum protocol_allow_config ret = + parse_protocol_config("protocol.allow", value); + free(value); + return ret; + } + + /* fallback to built-in defaults */ + /* known safe */ + if (!strcmp(type, "http") || + !strcmp(type, "https") || + !strcmp(type, "git") || + !strcmp(type, "ssh") || + !strcmp(type, "file")) + return PROTOCOL_ALLOW_ALWAYS; + + /* known scary; err on the side of caution */ + if (!strcmp(type, "ext")) + return PROTOCOL_ALLOW_NEVER; + + /* unknown; by default let them be used only directly by the user */ + return PROTOCOL_ALLOW_USER_ONLY; +} + +int is_transport_allowed(const char *type, int from_user) +{ + const struct string_list *whitelist = protocol_whitelist(); + if (whitelist) + return string_list_has_string(whitelist, type); + + switch (get_protocol_config(type)) { + case PROTOCOL_ALLOW_ALWAYS: + return 1; + case PROTOCOL_ALLOW_NEVER: + return 0; + case PROTOCOL_ALLOW_USER_ONLY: + if (from_user < 0) + from_user = git_env_bool("GIT_PROTOCOL_FROM_USER", 1); + return from_user; + } + + die("BUG: invalid protocol_allow_config type"); } -int transport_restrict_protocols(void) +void transport_check_allowed(const char *type) { - return !!protocol_whitelist(); + if (!is_transport_allowed(type, -1)) + die("transport '%s' not allowed", type); } struct transport *transport_get(struct remote *remote, const char *url) @@ -949,23 +1017,39 @@ int transport_push(struct transport *transport, if ((flags & TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND) && !is_bare_repository()) { struct ref *ref = remote_refs; + struct sha1_array commits = SHA1_ARRAY_INIT; + for (; ref; ref = ref->next) - if (!is_null_oid(&ref->new_oid) && - !push_unpushed_submodules(ref->new_oid.hash, - transport->remote->name)) - die ("Failed to push all needed submodules!"); + if (!is_null_oid(&ref->new_oid)) + sha1_array_append(&commits, ref->new_oid.hash); + + if (!push_unpushed_submodules(&commits, + transport->remote->name, + pretend)) { + sha1_array_clear(&commits); + die("Failed to push all needed submodules!"); + } + sha1_array_clear(&commits); } - if ((flags & (TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND | - TRANSPORT_RECURSE_SUBMODULES_CHECK)) && !is_bare_repository()) { + if (((flags & TRANSPORT_RECURSE_SUBMODULES_CHECK) || + ((flags & TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND) && + !pretend)) && !is_bare_repository()) { struct ref *ref = remote_refs; struct string_list needs_pushing = STRING_LIST_INIT_DUP; + struct sha1_array commits = SHA1_ARRAY_INIT; for (; ref; ref = ref->next) - if (!is_null_oid(&ref->new_oid) && - find_unpushed_submodules(ref->new_oid.hash, - transport->remote->name, &needs_pushing)) - die_with_unpushed_submodules(&needs_pushing); + if (!is_null_oid(&ref->new_oid)) + sha1_array_append(&commits, ref->new_oid.hash); + + if (find_unpushed_submodules(&commits, transport->remote->name, + &needs_pushing)) { + sha1_array_clear(&commits); + die_with_unpushed_submodules(&needs_pushing); + } + string_list_clear(&needs_pushing, 0); + sha1_array_clear(&commits); } push_ret = transport->push_refs(transport, remote_refs, flags); diff --git a/transport.h b/transport.h index b8e4ee8099..9820f10b8e 100644 --- a/transport.h +++ b/transport.h @@ -153,10 +153,17 @@ extern int transport_summary_width(const struct ref *refs); struct transport *transport_get(struct remote *, const char *); /* - * Check whether a transport is allowed by the environment. Type should - * generally be the URL scheme, as described in Documentation/git.txt + * Check whether a transport is allowed by the environment. + * + * Type should generally be the URL scheme, as described in + * Documentation/git.txt + * + * from_user specifies if the transport was given by the user. If unknown pass + * a -1 to read from the environment to determine if the transport was given by + * the user. + * */ -int is_transport_allowed(const char *type); +int is_transport_allowed(const char *type, int from_user); /* * Check whether a transport is allowed by the environment, @@ -164,12 +171,6 @@ int is_transport_allowed(const char *type); */ void transport_check_allowed(const char *type); -/* - * Returns true if the user has attempted to turn on protocol - * restrictions at all. - */ -int transport_restrict_protocols(void); - /* Transport options which apply to git:// and scp-style URLs */ /* The program to use on the remote side to send a pack */ diff --git a/unicode_width.h b/unicode_width.h index 47cdd2369d..02207be4fc 100644 --- a/unicode_width.h +++ b/unicode_width.h @@ -25,7 +25,7 @@ static const struct interval zero_width[] = { { 0x0825, 0x0827 }, { 0x0829, 0x082D }, { 0x0859, 0x085B }, -{ 0x08E4, 0x0902 }, +{ 0x08D4, 0x0902 }, { 0x093A, 0x093A }, { 0x093C, 0x093C }, { 0x0941, 0x0948 }, @@ -120,6 +120,7 @@ static const struct interval zero_width[] = { { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD }, { 0x180B, 0x180E }, +{ 0x1885, 0x1886 }, { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 }, { 0x1927, 0x1928 }, @@ -158,7 +159,7 @@ static const struct interval zero_width[] = { { 0x1CF4, 0x1CF4 }, { 0x1CF8, 0x1CF9 }, { 0x1DC0, 0x1DF5 }, -{ 0x1DFC, 0x1DFF }, +{ 0x1DFB, 0x1DFF }, { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2064 }, @@ -171,13 +172,13 @@ static const struct interval zero_width[] = { { 0x3099, 0x309A }, { 0xA66F, 0xA672 }, { 0xA674, 0xA67D }, -{ 0xA69F, 0xA69F }, +{ 0xA69E, 0xA69F }, { 0xA6F0, 0xA6F1 }, { 0xA802, 0xA802 }, { 0xA806, 0xA806 }, { 0xA80B, 0xA80B }, { 0xA825, 0xA826 }, -{ 0xA8C4, 0xA8C4 }, +{ 0xA8C4, 0xA8C5 }, { 0xA8E0, 0xA8F1 }, { 0xA926, 0xA92D }, { 0xA947, 0xA951 }, @@ -204,7 +205,7 @@ static const struct interval zero_width[] = { { 0xABED, 0xABED }, { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F }, -{ 0xFE20, 0xFE2D }, +{ 0xFE20, 0xFE2F }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB }, { 0x101FD, 0x101FD }, @@ -228,16 +229,21 @@ static const struct interval zero_width[] = { { 0x11173, 0x11173 }, { 0x11180, 0x11181 }, { 0x111B6, 0x111BE }, +{ 0x111CA, 0x111CC }, { 0x1122F, 0x11231 }, { 0x11234, 0x11234 }, { 0x11236, 0x11237 }, +{ 0x1123E, 0x1123E }, { 0x112DF, 0x112DF }, { 0x112E3, 0x112EA }, -{ 0x11301, 0x11301 }, +{ 0x11300, 0x11301 }, { 0x1133C, 0x1133C }, { 0x11340, 0x11340 }, { 0x11366, 0x1136C }, { 0x11370, 0x11374 }, +{ 0x11438, 0x1143F }, +{ 0x11442, 0x11444 }, +{ 0x11446, 0x11446 }, { 0x114B3, 0x114B8 }, { 0x114BA, 0x114BA }, { 0x114BF, 0x114C0 }, @@ -245,6 +251,7 @@ static const struct interval zero_width[] = { { 0x115B2, 0x115B5 }, { 0x115BC, 0x115BD }, { 0x115BF, 0x115C0 }, +{ 0x115DC, 0x115DD }, { 0x11633, 0x1163A }, { 0x1163D, 0x1163D }, { 0x1163F, 0x11640 }, @@ -252,6 +259,16 @@ static const struct interval zero_width[] = { { 0x116AD, 0x116AD }, { 0x116B0, 0x116B5 }, { 0x116B7, 0x116B7 }, +{ 0x1171D, 0x1171F }, +{ 0x11722, 0x11725 }, +{ 0x11727, 0x1172B }, +{ 0x11C30, 0x11C36 }, +{ 0x11C38, 0x11C3D }, +{ 0x11C3F, 0x11C3F }, +{ 0x11C92, 0x11CA7 }, +{ 0x11CAA, 0x11CB0 }, +{ 0x11CB2, 0x11CB3 }, +{ 0x11CB5, 0x11CB6 }, { 0x16AF0, 0x16AF4 }, { 0x16B30, 0x16B36 }, { 0x16F8F, 0x16F92 }, @@ -262,31 +279,59 @@ static const struct interval zero_width[] = { { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD }, { 0x1D242, 0x1D244 }, +{ 0x1DA00, 0x1DA36 }, +{ 0x1DA3B, 0x1DA6C }, +{ 0x1DA75, 0x1DA75 }, +{ 0x1DA84, 0x1DA84 }, +{ 0x1DA9B, 0x1DA9F }, +{ 0x1DAA1, 0x1DAAF }, +{ 0x1E000, 0x1E006 }, +{ 0x1E008, 0x1E018 }, +{ 0x1E01B, 0x1E021 }, +{ 0x1E023, 0x1E024 }, +{ 0x1E026, 0x1E02A }, { 0x1E8D0, 0x1E8D6 }, +{ 0x1E944, 0x1E94A }, { 0xE0001, 0xE0001 }, { 0xE0020, 0xE007F }, { 0xE0100, 0xE01EF } }; static const struct interval double_width[] = { -{ /* plane */ 0x0, 0x1C }, -{ /* plane */ 0x1C, 0x21 }, -{ /* plane */ 0x21, 0x22 }, -{ /* plane */ 0x22, 0x23 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, -{ /* plane */ 0x0, 0x0 }, { 0x1100, 0x115F }, +{ 0x231A, 0x231B }, { 0x2329, 0x232A }, +{ 0x23E9, 0x23EC }, +{ 0x23F0, 0x23F0 }, +{ 0x23F3, 0x23F3 }, +{ 0x25FD, 0x25FE }, +{ 0x2614, 0x2615 }, +{ 0x2648, 0x2653 }, +{ 0x267F, 0x267F }, +{ 0x2693, 0x2693 }, +{ 0x26A1, 0x26A1 }, +{ 0x26AA, 0x26AB }, +{ 0x26BD, 0x26BE }, +{ 0x26C4, 0x26C5 }, +{ 0x26CE, 0x26CE }, +{ 0x26D4, 0x26D4 }, +{ 0x26EA, 0x26EA }, +{ 0x26F2, 0x26F3 }, +{ 0x26F5, 0x26F5 }, +{ 0x26FA, 0x26FA }, +{ 0x26FD, 0x26FD }, +{ 0x2705, 0x2705 }, +{ 0x270A, 0x270B }, +{ 0x2728, 0x2728 }, +{ 0x274C, 0x274C }, +{ 0x274E, 0x274E }, +{ 0x2753, 0x2755 }, +{ 0x2757, 0x2757 }, +{ 0x2795, 0x2797 }, +{ 0x27B0, 0x27B0 }, +{ 0x27BF, 0x27BF }, +{ 0x2B1B, 0x2B1C }, +{ 0x2B50, 0x2B50 }, +{ 0x2B55, 0x2B55 }, { 0x2E80, 0x2E99 }, { 0x2E9B, 0x2EF3 }, { 0x2F00, 0x2FD5 }, @@ -313,11 +358,49 @@ static const struct interval double_width[] = { { 0xFE68, 0xFE6B }, { 0xFF01, 0xFF60 }, { 0xFFE0, 0xFFE6 }, +{ 0x16FE0, 0x16FE0 }, +{ 0x17000, 0x187EC }, +{ 0x18800, 0x18AF2 }, { 0x1B000, 0x1B001 }, +{ 0x1F004, 0x1F004 }, +{ 0x1F0CF, 0x1F0CF }, +{ 0x1F18E, 0x1F18E }, +{ 0x1F191, 0x1F19A }, { 0x1F200, 0x1F202 }, -{ 0x1F210, 0x1F23A }, +{ 0x1F210, 0x1F23B }, { 0x1F240, 0x1F248 }, { 0x1F250, 0x1F251 }, +{ 0x1F300, 0x1F320 }, +{ 0x1F32D, 0x1F335 }, +{ 0x1F337, 0x1F37C }, +{ 0x1F37E, 0x1F393 }, +{ 0x1F3A0, 0x1F3CA }, +{ 0x1F3CF, 0x1F3D3 }, +{ 0x1F3E0, 0x1F3F0 }, +{ 0x1F3F4, 0x1F3F4 }, +{ 0x1F3F8, 0x1F43E }, +{ 0x1F440, 0x1F440 }, +{ 0x1F442, 0x1F4FC }, +{ 0x1F4FF, 0x1F53D }, +{ 0x1F54B, 0x1F54E }, +{ 0x1F550, 0x1F567 }, +{ 0x1F57A, 0x1F57A }, +{ 0x1F595, 0x1F596 }, +{ 0x1F5A4, 0x1F5A4 }, +{ 0x1F5FB, 0x1F64F }, +{ 0x1F680, 0x1F6C5 }, +{ 0x1F6CC, 0x1F6CC }, +{ 0x1F6D0, 0x1F6D2 }, +{ 0x1F6EB, 0x1F6EC }, +{ 0x1F6F4, 0x1F6F6 }, +{ 0x1F910, 0x1F91E }, +{ 0x1F920, 0x1F927 }, +{ 0x1F930, 0x1F930 }, +{ 0x1F933, 0x1F93E }, +{ 0x1F940, 0x1F94B }, +{ 0x1F950, 0x1F95E }, +{ 0x1F980, 0x1F991 }, +{ 0x1F9C0, 0x1F9C0 }, { 0x20000, 0x2FFFD }, { 0x30000, 0x3FFFD } }; diff --git a/unpack-trees.c b/unpack-trees.c index ea6bdd20e0..7a6df99d10 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -78,7 +78,7 @@ void setup_unpack_trees_porcelain(struct unpack_trees_options *opts, xstrfmt(msg, cmd, cmd); msgs[ERROR_NOT_UPTODATE_DIR] = - _("Updating the following directories would lose untracked files in it:\n%s"); + _("Updating the following directories would lose untracked files in them:\n%s"); if (!strcmp(cmd, "checkout")) msg = advice_commit_before_merge diff --git a/update_unicode.sh b/update_unicode.sh deleted file mode 100755 index 27af77c7df..0000000000 --- a/update_unicode.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh -#See http://www.unicode.org/reports/tr44/ -# -#Me Enclosing_Mark an enclosing combining mark -#Mn Nonspacing_Mark a nonspacing combining mark (zero advance width) -#Cf Format a format control character -# -UNICODEWIDTH_H=../unicode_width.h -if ! test -d unicode; then - mkdir unicode -fi && -( cd unicode && - if ! test -f UnicodeData.txt; then - wget http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt - fi && - if ! test -f EastAsianWidth.txt; then - wget http://www.unicode.org/Public/UCD/latest/ucd/EastAsianWidth.txt - fi && - if ! test -d uniset; then - git clone https://github.com/depp/uniset.git - fi && - ( - cd uniset && - if ! test -x uniset; then - autoreconf -i && - ./configure --enable-warnings=-Werror CFLAGS='-O0 -ggdb' - fi && - make - ) && - UNICODE_DIR=. && export UNICODE_DIR && - cat >$UNICODEWIDTH_H <<-EOF - static const struct interval zero_width[] = { - $(uniset/uniset --32 cat:Me,Mn,Cf + U+1160..U+11FF - U+00AD | - grep -v plane) - }; - static const struct interval double_width[] = { - $(uniset/uniset --32 eaw:F,W) - }; - EOF -) diff --git a/upload-pack.c b/upload-pack.c index e0db8b42be..7597ba3405 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -46,6 +46,8 @@ static int no_progress, daemon_mode; #define ALLOW_TIP_SHA1 01 /* Allow request of a sha1 if it is reachable from a ref (possibly hidden ref). */ #define ALLOW_REACHABLE_SHA1 02 +/* Allow request of any sha1. Implies ALLOW_TIP_SHA1 and ALLOW_REACHABLE_SHA1. */ +#define ALLOW_ANY_SHA1 07 static unsigned int allow_unadvertised_object_request; static int shallow_nr; static struct object_array have_obj; @@ -825,7 +827,8 @@ static void receive_needs(void) sha1_to_hex(sha1_buf)); if (!(o->flags & WANTED)) { o->flags |= WANTED; - if (!is_our_ref(o)) + if (!((allow_unadvertised_object_request & ALLOW_ANY_SHA1) == ALLOW_ANY_SHA1 + || is_our_ref(o))) has_non_tip = 1; add_object_array(o, NULL, &want_obj); } @@ -1008,6 +1011,11 @@ static int upload_pack_config(const char *var, const char *value, void *unused) allow_unadvertised_object_request |= ALLOW_REACHABLE_SHA1; else allow_unadvertised_object_request &= ~ALLOW_REACHABLE_SHA1; + } else if (!strcmp("uploadpack.allowanysha1inwant", var)) { + if (git_config_bool(var, value)) + allow_unadvertised_object_request |= ALLOW_ANY_SHA1; + else + allow_unadvertised_object_request &= ~ALLOW_ANY_SHA1; } else if (!strcmp("uploadpack.keepalive", var)) { keepalive = git_config_int(var, value); if (!keepalive) @@ -489,6 +489,28 @@ char *reencode_string_iconv(const char *in, size_t insz, iconv_t conv, int *outs return out; } +static const char *fallback_encoding(const char *name) +{ + /* + * Some platforms do not have the variously spelled variants of + * UTF-8, so let's fall back to trying the most official + * spelling. We do so only as a fallback in case the platform + * does understand the user's spelling, but not our official + * one. + */ + if (is_encoding_utf8(name)) + return "UTF-8"; + + /* + * Even though latin-1 is still seen in e-mail + * headers, some platforms only install ISO-8859-1. + */ + if (!strcasecmp(name, "latin-1")) + return "ISO-8859-1"; + + return name; +} + char *reencode_string_len(const char *in, int insz, const char *out_encoding, const char *in_encoding, int *outsz) @@ -501,17 +523,9 @@ char *reencode_string_len(const char *in, int insz, conv = iconv_open(out_encoding, in_encoding); if (conv == (iconv_t) -1) { - /* - * Some platforms do not have the variously spelled variants of - * UTF-8, so let's fall back to trying the most official - * spelling. We do so only as a fallback in case the platform - * does understand the user's spelling, but not our official - * one. - */ - if (is_encoding_utf8(in_encoding)) - in_encoding = "UTF-8"; - if (is_encoding_utf8(out_encoding)) - out_encoding = "UTF-8"; + in_encoding = fallback_encoding(in_encoding); + out_encoding = fallback_encoding(out_encoding); + conv = iconv_open(out_encoding, in_encoding); if (conv == (iconv_t) -1) return NULL; diff --git a/wt-status.c b/wt-status.c index a2e9d332d8..a715e71906 100644 --- a/wt-status.c +++ b/wt-status.c @@ -2258,11 +2258,12 @@ int has_uncommitted_changes(int ignore_submodules) int require_clean_work_tree(const char *action, const char *hint, int ignore_submodules, int gently) { struct lock_file *lock_file = xcalloc(1, sizeof(*lock_file)); - int err = 0; + int err = 0, fd; - hold_locked_index(lock_file, 0); + fd = hold_locked_index(lock_file, 0); refresh_cache(REFRESH_QUIET); - update_index_if_able(&the_index, lock_file); + if (0 <= fd) + update_index_if_able(&the_index, lock_file); rollback_lock_file(lock_file); if (has_unstaged_changes(ignore_submodules)) { diff --git a/xdiff/xdiff.h b/xdiff/xdiff.h index 8db16d4ae6..b090ad8eac 100644 --- a/xdiff/xdiff.h +++ b/xdiff/xdiff.h @@ -41,8 +41,7 @@ extern "C" { #define XDF_IGNORE_BLANK_LINES (1 << 7) -#define XDF_COMPACTION_HEURISTIC (1 << 8) -#define XDF_INDENT_HEURISTIC (1 << 9) +#define XDF_INDENT_HEURISTIC (1 << 8) #define XDL_EMIT_FUNCNAMES (1 << 0) #define XDL_EMIT_FUNCCONTEXT (1 << 2) diff --git a/xdiff/xdiffi.c b/xdiff/xdiffi.c index 760fbb6db7..93a65680a1 100644 --- a/xdiff/xdiffi.c +++ b/xdiff/xdiffi.c @@ -400,11 +400,6 @@ static xdchange_t *xdl_add_change(xdchange_t *xscr, long i1, long i2, long chg1, } -static int is_blank_line(xrecord_t *rec, long flags) -{ - return xdl_blankline(rec->ptr, rec->size, flags); -} - static int recs_match(xrecord_t *rec1, xrecord_t *rec2, long flags) { return (rec1->ha == rec2->ha && @@ -821,7 +816,6 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long flags) { struct xdlgroup g, go; long earliest_end, end_matching_other; long groupsize; - unsigned int blank_lines; group_init(xdf, &g); group_init(xdfo, &go); @@ -846,13 +840,6 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long flags) { */ end_matching_other = -1; - /* - * Boolean value that records whether there are any blank - * lines that could be made to be the last line of this - * group. - */ - blank_lines = 0; - /* Shift the group backward as much as possible: */ while (!group_slide_up(xdf, &g, flags)) if (group_previous(xdfo, &go)) @@ -869,11 +856,6 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long flags) { /* Now shift the group forward as far as possible: */ while (1) { - if (!blank_lines) - blank_lines = is_blank_line( - xdf->recs[g.end - 1], - flags); - if (group_slide_down(xdf, &g, flags)) break; if (group_next(xdfo, &go)) @@ -906,21 +888,6 @@ int xdl_change_compact(xdfile_t *xdf, xdfile_t *xdfo, long flags) { if (group_previous(xdfo, &go)) xdl_bug("group sync broken sliding to match"); } - } else if ((flags & XDF_COMPACTION_HEURISTIC) && blank_lines) { - /* - * Compaction heuristic: if it is possible to shift the - * group to make its bottom line a blank line, do so. - * - * As we already shifted the group forward as far as - * possible in the earlier loop, we only need to handle - * backward shifts, not forward ones. - */ - while (!is_blank_line(xdf->recs[g.end - 1], flags)) { - if (group_slide_up(xdf, &g, flags)) - xdl_bug("blank line disappeared"); - if (group_previous(xdfo, &go)) - xdl_bug("group sync broken sliding to blank line"); - } } else if (flags & XDF_INDENT_HEURISTIC) { /* * Indent heuristic: a group of pure add/delete lines diff --git a/xdiff/xutils.c b/xdiff/xutils.c index 027192a1c7..04d7b32e4e 100644 --- a/xdiff/xutils.c +++ b/xdiff/xutils.c @@ -264,110 +264,6 @@ static unsigned long xdl_hash_record_with_whitespace(char const **data, return ha; } -#ifdef XDL_FAST_HASH - -#define REPEAT_BYTE(x) ((~0ul / 0xff) * (x)) - -#define ONEBYTES REPEAT_BYTE(0x01) -#define NEWLINEBYTES REPEAT_BYTE(0x0a) -#define HIGHBITS REPEAT_BYTE(0x80) - -/* Return the high bit set in the first byte that is a zero */ -static inline unsigned long has_zero(unsigned long a) -{ - return ((a - ONEBYTES) & ~a) & HIGHBITS; -} - -static inline long count_masked_bytes(unsigned long mask) -{ - if (sizeof(long) == 8) { - /* - * Jan Achrenius on G+: microoptimized version of - * the simpler "(mask & ONEBYTES) * ONEBYTES >> 56" - * that works for the bytemasks without having to - * mask them first. - */ - /* - * return mask * 0x0001020304050608 >> 56; - * - * Doing it like this avoids warnings on 32-bit machines. - */ - long a = (REPEAT_BYTE(0x01) / 0xff + 1); - return mask * a >> (sizeof(long) * 7); - } else { - /* Carl Chatfield / Jan Achrenius G+ version for 32-bit */ - /* (000000 0000ff 00ffff ffffff) -> ( 1 1 2 3 ) */ - long a = (0x0ff0001 + mask) >> 23; - /* Fix the 1 for 00 case */ - return a & mask; - } -} - -unsigned long xdl_hash_record(char const **data, char const *top, long flags) -{ - unsigned long hash = 5381; - unsigned long a = 0, mask = 0; - char const *ptr = *data; - char const *end = top - sizeof(unsigned long) + 1; - - if (flags & XDF_WHITESPACE_FLAGS) - return xdl_hash_record_with_whitespace(data, top, flags); - - ptr -= sizeof(unsigned long); - do { - hash += hash << 5; - hash ^= a; - ptr += sizeof(unsigned long); - if (ptr >= end) - break; - a = *(unsigned long *)ptr; - /* Do we have any '\n' bytes in this word? */ - mask = has_zero(a ^ NEWLINEBYTES); - } while (!mask); - - if (ptr >= end) { - /* - * There is only a partial word left at the end of the - * buffer. Because we may work with a memory mapping, - * we have to grab the rest byte by byte instead of - * blindly reading it. - * - * To avoid problems with masking in a signed value, - * we use an unsigned char here. - */ - const char *p; - for (p = top - 1; p >= ptr; p--) - a = (a << 8) + *((const unsigned char *)p); - mask = has_zero(a ^ NEWLINEBYTES); - if (!mask) - /* - * No '\n' found in the partial word. Make a - * mask that matches what we read. - */ - mask = 1UL << (8 * (top - ptr) + 7); - } - - /* The mask *below* the first high bit set */ - mask = (mask - 1) & ~mask; - mask >>= 7; - hash += hash << 5; - hash ^= a & mask; - - /* Advance past the last (possibly partial) word */ - ptr += count_masked_bytes(mask); - - if (ptr < top) { - assert(*ptr == '\n'); - ptr++; - } - - *data = ptr; - - return hash; -} - -#else /* XDL_FAST_HASH */ - unsigned long xdl_hash_record(char const **data, char const *top, long flags) { unsigned long ha = 5381; char const *ptr = *data; @@ -384,8 +280,6 @@ unsigned long xdl_hash_record(char const **data, char const *top, long flags) { return ha; } -#endif /* XDL_FAST_HASH */ - unsigned int xdl_hashbits(unsigned int size) { unsigned int val = 1, bits = 0; |