From: Junio C Hamano Date: Thu, 11 Sep 2014 17:33:26 +0000 (-0700) Subject: Merge branch 'ta/config-set-2' X-Git-Tag: v2.2.0-rc0~147 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/554913daf43f744f7d6bd8bd2cd008d96d19cbd9?hp=b35b10d463fbc274a2edd006f6f5ab46e66a4722 Merge branch 'ta/config-set-2' Update git_config() users with callback functions for a very narrow scope with calls to config-set API that lets us query a single variable. * ta/config-set-2: builtin/apply.c: replace `git_config()` with `git_config_get_string_const()` merge-recursive.c: replace `git_config()` with `git_config_get_int()` ll-merge.c: refactor `read_merge_config()` to use `git_config_string()` fast-import.c: replace `git_config()` with `git_config_get_*()` family branch.c: replace `git_config()` with `git_config_get_string() alias.c: replace `git_config()` with `git_config_get_string()` imap-send.c: replace `git_config()` with `git_config_get_*()` family pager.c: replace `git_config()` with `git_config_get_value()` builtin/gc.c: replace `git_config()` with `git_config_get_*()` family rerere.c: replace `git_config()` with `git_config_get_*()` family fetchpack.c: replace `git_config()` with `git_config_get_*()` family archive.c: replace `git_config()` with `git_config_get_bool()` family read-cache.c: replace `git_config()` with `git_config_get_*()` family http-backend.c: replace `git_config()` with `git_config_get_bool()` family daemon.c: replace `git_config()` with `git_config_get_bool()` family --- diff --git a/Documentation/RelNotes/2.0.4.txt b/Documentation/RelNotes/2.0.4.txt new file mode 100644 index 0000000000..7e340921a2 --- /dev/null +++ b/Documentation/RelNotes/2.0.4.txt @@ -0,0 +1,5 @@ +Git v2.0.4 Release Notes +======================== + + * An earlier update to v2.0.2 broken output from "git diff-tree", + which is fixed in this release. diff --git a/Documentation/RelNotes/2.1.0.txt b/Documentation/RelNotes/2.1.0.txt index 13c7ec51e9..ae4753728e 100644 --- a/Documentation/RelNotes/2.1.0.txt +++ b/Documentation/RelNotes/2.1.0.txt @@ -12,7 +12,7 @@ Backward compatibility notes $ git config core.pager "less -S" to restore the traditional behaviour. It is expected that people - find output from the most subcommands easier to read with the new + find output from most subcommands easier to read with the new default, except for "blame" which tends to produce really long lines. To override the new default only for "git blame", you can do this: @@ -31,7 +31,7 @@ UI, Workflows & Features default value "FRSX" when we spawn "less" as the pager. "S" (chop long lines instead of wrapping) has been removed from this default set of options, because it is more or less a personal taste thing, - as opposed to others that have good justifications (i.e. "R" is + as opposed to the others that have good justifications (i.e. "R" is very much justified because many kinds of output we produce are colored and "FX" is justified because output we produce is often shorter than a page). @@ -39,41 +39,47 @@ UI, Workflows & Features * The logic and data used to compute the display width needed for UTF-8 strings have been updated to match Unicode 7.0 better. - * HTTP-based transports learned to propagate the error messages from - the webserver better to the client coming over the HTTP transport. + * HTTP-based transports learned to better propagate the error messages from + the webserver to the client coming over the HTTP transport. * The completion script for bash (in contrib/) has been updated to - handle aliases that define complex sequence of commands better. + better handle aliases that define a complex sequence of commands. - * The "core.preloadindex" configuration variable is by default - enabled, allowing modern platforms to take advantage of the - multiple cores they have. + * The "core.preloadindex" configuration variable is enabled by default, + allowing modern platforms to take advantage of their + multiple cores. - * "git commit --date=" option learned to read from more + * "git clone" applies the "if cloning from a local disk, physically + copy the repository using hardlinks, unless otherwise told not to with + --no-local" optimization when the url.*.insteadOf mechanism rewrites a + remote-repository "git clone $URL" into a + clone from a local disk. + + * "git commit --date=" option learned more timestamp formats, including "--date=now". * The `core.commentChar` configuration variable is used to specify a - custom comment character other than the default "#" to be used in - the commit log editor. This can be set to `auto` to attempt to - choose a different character that does not conflict with what - already starts a line in the message being edited for cases like + custom comment character (other than the default "#") for + the commit message editor. This can be set to `auto` to attempt to + choose a different character that does not conflict with any that + already starts a line in the message being edited, for cases like "git commit --amend". - * "git format-patch" learned --signature-file= to take the mail - signature from. + * "git format-patch" learned --signature-file= to add the contents + of a file as a signature to the mail message it produces. - * "git grep" learned grep.fullname configuration variable to force - "--full-name" to be default. This may cause regressions on - scripted users that do not expect this new behaviour. + * "git grep" learned the grep.fullname configuration variable to force + "--full-name" to be the default. This may cause regressions for + scripted users who do not expect this new behaviour. * "git imap-send" learned to ask the credential helper for auth material. - * "git log" and friends now understand the value "auto" set to the + * "git log" and friends now understand the value "auto" for the "log.decorate" configuration variable to enable the "--decorate" option automatically when the output is sent to tty. - * "git merge" without argument, even when there is an upstream + * "git merge" without an argument, even when there is an upstream defined for the current branch, refused to run until merge.defaultToUpstream is set to true. Flip the default of that configuration variable to true. @@ -81,21 +87,22 @@ UI, Workflows & Features * "git mergetool" learned to drive the vimdiff3 backend. * mergetool.prompt used to default to 'true', always asking "do you - really want to run the tool on this path?". Among the two - purposes this prompt serves, ignore the use case to confirm that - the user wants to view particular path with the named tool, and - redefine the meaning of the prompt only to confirm the choice of - the tool made by the autodetection (for those who configured the - tool explicitly, the prompt shown for the latter purpose is - simply annoying). - - Strictly speaking, this is a backward incompatible change and the + really want to run the tool on this path?". The default has been + changed to 'false'. However, the prompt will still appear if + mergetool used its autodetection system to guess which tool to use. + Users who explicitly specify or configure a tool will no longer see + the prompt by default. + + Strictly speaking, this is a backward incompatible change and users need to explicitly set the variable to 'true' if they want - to resurrect the now-ignored use case. + to be prompted to confirm running the tool on each path. * "git replace" learned the "--edit" subcommand to create a replacement by editing an existing object. + * "git replace" learned a "--graft" option to rewrite the parents of a + commit. + * "git send-email" learned "--to-cover" and "--cc-cover" options, to tell it to copy To: and Cc: headers found in the first input file when emitting later input files. @@ -107,7 +114,11 @@ UI, Workflows & Features * "git tag" when editing the tag message shows the name of the tag being edited as a comment in the editor. - * "git verify-commit" command to check GPG signature in signed + * "git tag" learned to pay attention to "tag.sort" configuration, to + be used as the default sort order when no --sort= option + is given. + + * A new "git verify-commit" command, to check GPG signatures in signed commits, in a way similar to "git verify-tag" is used to check signed tags, was added. @@ -116,8 +127,8 @@ Performance, Internal Implementation, etc. * Build procedure for 'subtree' (in contrib/) has been cleaned up. - * The support for the profile-feedback build, which has been left - bit-rotten for quite a while, has been updated. + * Support for the profile-feedback build, which has + bit-rotted for quite a while, has been updated. * An experimental format to use two files (the base file and incremental changes relative to it) to represent the index has been @@ -125,16 +136,12 @@ Performance, Internal Implementation, etc. when only small part of the working tree changes. * Effort to shrink the size of patches Windows folks maintain on top - by upstreaming them continues. + by upstreaming them continues. More tests that are not applicable + to the Windows environment are identified and either skipped or + made more portable. - * Patches maintained by msysgit folks for Windows port are being - upstreamed here a bit by bit. - - * The leaf function to check validity of a refname format has been - micro-optimized, using SSE2 instructions when available. A few - breakages during its development have been caught and fixed already - but there might remain some more still; please test and report if - you find any. + * Eradication of "test $condition -a $condition" from our scripts + continues. * The `core.deltabasecachelimit` used to default to 16 MiB , but this proved to be too small, and has been bumped to 96 MiB. @@ -143,7 +150,7 @@ Performance, Internal Implementation, etc. structure that is used to keep track of the work to be done. * "git diff" that compares 3-or-more trees (e.g. parents and the - result of a merge) have been optimized. + result of a merge) has been optimized. * The API to update/delete references are being converted to handle updates to multiple references in a transactional way. As an @@ -179,8 +186,8 @@ notes for details). to a tty. (merge 38de156 mn/sideband-no-ansi later to maint). - * Mishandling of patterns in .gitignore that has trailing SPs quoted - with backslashes (e.g. ones that end with "\ ") have been + * Mishandling of patterns in .gitignore that have trailing SPs quoted + with backslashes (e.g. ones that end with "\ ") has been corrected. (merge 97c1364be6b pb/trim-trailing-spaces later to maint). @@ -217,7 +224,7 @@ notes for details). and to allow the caller find the length of the object. (merge 218aa3a jk/commit-buffer-length later to maint). - * The "mailmap.file" configuration option did not support the tilde + * The "mailmap.file" configuration option did not support tilde expansion (i.e. ~user/path and ~/path). (merge 9352fd5 ow/config-mailmap-pathname later to maint). @@ -226,17 +233,23 @@ notes for details). couple of options unique to "git merge". (merge 8fee872 jk/complete-merge-pull later to maint). + * The unix-domain socket used by the sample credential cache daemon + tried to unlink an existing stale one at a wrong path, if the path + to the socket was given as an overlong path that does not fit in + the sun_path member of the sockaddr_un structure. + (merge 2869b3e rs/fix-unlink-unix-socket later to maint). + * An ancient rewrite passed a wrong pointer to a curl library function in a rarely used code path. (merge 479eaa8 ah/fix-http-push later to maint). * "--ignore-space-change" option of "git apply" ignored the spaces - at the beginning of line too aggressively, which is inconsistent - with the option of the same name "diff" and "git diff" have. + at the beginning of lines too aggressively, which is inconsistent + with the option of the same name that "diff" and "git diff" have. (merge 14d3bb4 jc/apply-ignore-whitespace later to maint). - * "git blame" miscounted number of columns needed to show localized - timestamps, resulting in jaggy left-side-edge of the source code + * "git blame" miscounted the number of columns needed to show localized + timestamps, resulting in a jaggy left-side-edge for the source code lines in its output. (merge dd75553 jx/blame-align-relative-time later to maint). @@ -250,17 +263,17 @@ notes for details). because it incorrectly used strstr(). (merge 60a5f5f jc/fix-clone-single-starting-at-a-tag later to maint). - * "git commit --allow-empty-messag -C $commit" did not work when the + * "git commit --allow-empty-message -C $commit" did not work when the commit did not have any log message. (merge 076cbd6 jk/commit-C-pick-empty later to maint). * "git diff --find-copies-harder" sometimes pretended as if the mode - bits have changed for paths that are marked with assume-unchanged + bits have changed for paths that are marked with the assume-unchanged bit. (merge 5304810 jk/diff-files-assume-unchanged later to maint). * "filter-branch" left an empty single-parent commit that results when - all parents of a merge commit gets mapped to the same commit, even + all parents of a merge commit get mapped to the same commit, even under "--prune-empty". (merge 79bc4ef cb/filter-branch-prune-empty-degenerate-merges later to maint). @@ -293,10 +306,10 @@ notes for details). mergetag that was and was not correctly validated. (merge 42c55ce mg/fix-log-mergetag-color later to maint). - * "log --show-signature" did not pay attention to "--graph" option. + * "log --show-signature" did not pay attention to the "--graph" option. (merge cf3983d zk/log-graph-showsig later to maint). - * "git mailinfo" used to read beyond the end of header string while + * "git mailinfo" used to read beyond the ends of header strings while parsing an incoming e-mail message to extract the patch. (merge b1a013d rs/mailinfo-header-cmp later to maint). @@ -316,7 +329,7 @@ notes for details). (merge fb79947 rs/pack-objects-no-unnecessary-realloc later to maint). * Recent updates to "git repack" started to duplicate objects that - are in packfiles marked with .keep flag into the new packfile by + are in packfiles marked with the .keep flag into the new packfile by mistake. (merge d078d85 jk/repack-pack-keep-objects later to maint). @@ -340,6 +353,9 @@ notes for details). emptying the insn sheet. (merge ddb5432 rr/rebase-autostash-fix later to maint). + * "git rebase --fork-point" did not filter out patch-identical + commits correctly. + * During "git rebase --merge", a conflicted patch could not be skipped with "--skip" if the next one also conflicted. (merge 95104c7 bc/fix-rebase-merge-skip later to maint). @@ -351,14 +367,14 @@ notes for details). * "git status", even though it is a read-only operation, tries to update the index with refreshed lstat(2) info to optimize future accesses to the working tree opportunistically, but this could - race with a "read-write" operation that modify the index while it + race with a "read-write" operation that modifies the index while it is running. Detect such a race and avoid overwriting the index. (merge 426ddee ym/fix-opportunistic-index-update-race later to maint). * "git status" (and "git commit") behaved as if changes in a modified submodule are not there if submodule.*.ignore configuration is set, which was misleading. The configuration is only to unclutter diff - output during the course of development, and should not to hide + output during the course of development, and not to hide changes in the "status" output to cause the users forget to commit them. (merge c215d3d jl/status-added-submodule-is-never-ignored later to maint). diff --git a/Documentation/RelNotes/2.2.0.txt b/Documentation/RelNotes/2.2.0.txt new file mode 100644 index 0000000000..f771854705 --- /dev/null +++ b/Documentation/RelNotes/2.2.0.txt @@ -0,0 +1,91 @@ +Git v2.2 Release Notes +====================== + +Updates since v2.1 +------------------ + +Ports + + * Building on older MacOS X systems automatically sets + the necessary NO_APPLE_COMMON_CRYPTO build-time option. + + +UI, Workflows & Features + + * "git config --edit --global" starts from a skeletal per-user + configuration file contents, instead of a total blank, when the + user does not already have any. This immediately reduces the + need for a later "Have you forgotten setting core.user?" and we + can add more to the template as we gain more experience. + + * "git stash list -p" used to be almost always a no-op because each + stash entry is represented as a merge commit. It learned to show + the difference between the base commit version and the working tree + version, which is in line with what "git show" gives. + +Performance, Internal Implementation, etc. + + * In tests, we have been using NOT_{MINGW,CYGWIN} test prerequisites + long before negated prerequisites e.g. !MINGW were invented. + The former has been converted to the latter to avoid confusion. + + * Looking up remotes configuration in a repository with very many + remotes defined has been optimized. + + * There are cases where you lock and open to write a file, close it + to show the updated contents to external processes, and then have + to update the file again while still holding the lock, but the + lockfile API lacked support for such an access pattern. + + * An in-core caching layer to let us avoid reading the same + configuration files number of times has been added. + + * Various code paths have been cleaned up and simplified by using + "strbuf", "starts_with()", and "skip_prefix()" APIs more. + + +Also contains various documentation updates and code clean-ups. + + +Fixes since v2.1 +---------------- + +Unless otherwise noted, all the fixes since v2.1 in the maintenance +track are contained in this release (see the maintenance releases' +notes for details). + + * "git log --pretty/format=" with an empty format string did not + mean the more obvious "No output whatsoever" but "Use default + format", which was counterintuitive. + (merge b9c7d6e jk/pretty-empty-format later to maint). + + * Implementations of "tar" that do not understand an extended pax + header would extract the contents of it in a regular file; make + sure the permission bits of this file follows the same tar.umask + configuration setting. + + * "git -c section.var command" and "git -c section.var= command" + should pass the configuration differently (the former should be a + boolean true, the latter should be an empty string). + (merge a789ca7 jk/command-line-config-empty-string later to maint). + + * Applying a patch not generated by Git in a subdirectory used to + check the whitespace breakage using the attributes for incorrect + paths. Also whitespace checks were performed even for paths + excluded via "git apply --exclude=" mechanism. + (merge 477a08a jc/apply-ws-prefix later to maint). + + * "git bundle create" with date-range specification were meant to + exclude tags outside the range, but it didn't. + (merge 2c8544a lf/bundle-exclusion later to maint). + + * "git add x" where x that used to be a directory has become a + symbolic link to a directory misbehaved. + (merge ccad42d rs/refresh-beyond-symlink later to maint). + + * The prompt script checked $GIT_DIR/ref/stash file to see if there + is a stash, which was a no-no. + (merge 0fa7f01 jk/prompt-stash-could-be-packed later to maint). + + * Pack-protocol documentation had a minor typo. + (merge 5d146f7 sp/pack-protocol-doc-on-shallow later to maint). diff --git a/Documentation/git-imap-send.txt b/Documentation/git-imap-send.txt index 875d2831a5..7d991d919c 100644 --- a/Documentation/git-imap-send.txt +++ b/Documentation/git-imap-send.txt @@ -38,18 +38,17 @@ Variables imap.folder:: The folder to drop the mails into, which is typically the Drafts folder. For example: "INBOX.Drafts", "INBOX/Drafts" or - "[Gmail]/Drafts". Required to use imap-send. + "[Gmail]/Drafts". Required. imap.tunnel:: Command used to setup a tunnel to the IMAP server through which commands will be piped instead of using a direct network connection - to the server. Required when imap.host is not set to use imap-send. + to the server. Required when imap.host is not set. imap.host:: A URL identifying the server. Use a `imap://` prefix for non-secure connections and a `imaps://` prefix for secure connections. - Ignored when imap.tunnel is set, but required to use imap-send - otherwise. + Ignored when imap.tunnel is set, but required otherwise. imap.user:: The username to use when logging in to the server. @@ -76,7 +75,8 @@ imap.preformattedHTML:: imap.authMethod:: Specify authenticate method for authentication with IMAP server. - Current supported method is 'CRAM-MD5' only. + Current supported method is 'CRAM-MD5' only. If this is not set + then 'git imap-send' uses the basic IMAP plaintext LOGIN command. Examples ~~~~~~~~ diff --git a/Documentation/git-init.txt b/Documentation/git-init.txt index afd721e3a9..369f889bb4 100644 --- a/Documentation/git-init.txt +++ b/Documentation/git-init.txt @@ -43,7 +43,7 @@ OPTIONS -q:: --quiet:: -Only print error and warning messages, all other output will be suppressed. +Only print error and warning messages; all other output will be suppressed. --bare:: @@ -57,12 +57,12 @@ DIRECTORY" section below.) --separate-git-dir=:: -Instead of initializing the repository where it is supposed to be, -place a filesytem-agnostic Git symbolic link there, pointing to the -specified path, and initialize a Git repository at the path. The -result is Git repository can be separated from working tree. If this -is reinitialization, the repository will be moved to the specified -path. +Instead of initializing the repository as a directory to either `$GIT_DIR` or +`./.git/`, create a text file there containing the path to the actual +repository. This file acts as filesystem-agnostic Git symbolic link to the +repository. ++ +If this is reinitialization, the repository will be moved to the specified path. --shared[=(false|true|umask|group|all|world|everybody|0xxx)]:: @@ -72,60 +72,65 @@ repository. When specified, the config variable "core.sharedRepository" is set so that files and directories under `$GIT_DIR` are created with the requested permissions. When not specified, Git will use permissions reported by umask(2). - ++ The option can have the following values, defaulting to 'group' if no value is given: ++ +-- +'umask' (or 'false'):: - - 'umask' (or 'false'): Use permissions reported by umask(2). The default, - when `--shared` is not specified. +Use permissions reported by umask(2). The default, when `--shared` is not +specified. - - 'group' (or 'true'): Make the repository group-writable, (and g+sx, since - the git group may be not the primary group of all users). - This is used to loosen the permissions of an otherwise safe umask(2) value. - Note that the umask still applies to the other permission bits (e.g. if - umask is '0022', using 'group' will not remove read privileges from other - (non-group) users). See '0xxx' for how to exactly specify the repository - permissions. +'group' (or 'true'):: - - 'all' (or 'world' or 'everybody'): Same as 'group', but make the repository - readable by all users. +Make the repository group-writable, (and g+sx, since the git group may be not +the primary group of all users). This is used to loosen the permissions of an +otherwise safe umask(2) value. Note that the umask still applies to the other +permission bits (e.g. if umask is '0022', using 'group' will not remove read +privileges from other (non-group) users). See '0xxx' for how to exactly specify +the repository permissions. - - '0xxx': '0xxx' is an octal number and each file will have mode '0xxx'. - '0xxx' will override users' umask(2) value (and not only loosen permissions - as 'group' and 'all' does). '0640' will create a repository which is - group-readable, but not group-writable or accessible to others. '0660' will - create a repo that is readable and writable to the current user and group, - but inaccessible to others. +'all' (or 'world' or 'everybody'):: -By default, the configuration flag receive.denyNonFastForwards is enabled +Same as 'group', but make the repository readable by all users. + +'0xxx':: + +'0xxx' is an octal number and each file will have mode '0xxx'. '0xxx' will +override users' umask(2) value (and not only loosen permissions as 'group' and +'all' does). '0640' will create a repository which is group-readable, but not +group-writable or accessible to others. '0660' will create a repo that is +readable and writable to the current user and group, but inaccessible to others. +-- + +By default, the configuration flag `receive.denyNonFastForwards` is enabled in shared repositories, so that you cannot force a non fast-forwarding push into it. -If you name a (possibly non-existent) directory at the end of the command -line, the command is run inside the directory (possibly after creating it). +If you provide a 'directory', the command is run inside it. If this directory +does not exist, it will be created. -- - TEMPLATE DIRECTORY ------------------ The template directory contains files and directories that will be copied to the `$GIT_DIR` after it is created. -The template directory used will (in order): +The template directory will be one of the following (in order): - - The argument given with the `--template` option. + - the argument given with the `--template` option; - - The contents of the `$GIT_TEMPLATE_DIR` environment variable. + - the contents of the `$GIT_TEMPLATE_DIR` environment variable; - - The `init.templatedir` configuration variable. + - the `init.templatedir` configuration variable; or - - The default template directory: `/usr/share/git-core/templates`. + - the default template directory: `/usr/share/git-core/templates`. -The default template directory includes some directory structure, some -suggested "exclude patterns", and copies of sample "hook" files. -The suggested patterns and hook files are all modifiable and extensible. +The default template directory includes some directory structure, suggested +"exclude patterns" (see linkgit:gitignore[5]), and sample hook files (see linkgit:githooks[5]). EXAMPLES -------- @@ -136,10 +141,12 @@ Start a new Git repository for an existing code base:: $ cd /path/to/my/codebase $ git init <1> $ git add . <2> +$ git commit <3> ---------------- + -<1> prepare /path/to/my/codebase/.git directory -<2> add all existing file to the index +<1> Create a /path/to/my/codebase/.git directory. +<2> Add all existing files to the index. +<3> Record the pristine state as the first commit in the history. GIT --- diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt index 21cd455508..c0d7403b9a 100644 --- a/Documentation/git-push.txt +++ b/Documentation/git-push.txt @@ -33,7 +33,7 @@ When the command line does not specify what to push with `...` arguments or `--all`, `--mirror`, `--tags` options, the command finds the default `` by consulting `remote.*.push` configuration, and if it is not found, honors `push.default` configuration to decide -what to push (See gitlink:git-config[1] for the meaning of `push.default`). +what to push (See linkgit:git-config[1] for the meaning of `push.default`). OPTIONS[[OPTIONS]] diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index 2a93c645bd..f14100a160 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -316,11 +316,8 @@ which makes little sense. -f:: --force-rebase:: - Force the rebase even if the current branch is a descendant - of the commit you are rebasing onto. Normally non-interactive rebase will - exit with the message "Current branch is up to date" in such a - situation. - Incompatible with the --interactive option. + Force a rebase even if the current branch is up-to-date and + the command without `--force` would return without doing anything. + You may find this (or --no-ff with an interactive rebase) helpful after reverting a topic branch merge, as this option recreates the topic branch with diff --git a/Documentation/git-replace.txt b/Documentation/git-replace.txt index 089dcac047..8fff598fd6 100644 --- a/Documentation/git-replace.txt +++ b/Documentation/git-replace.txt @@ -10,6 +10,7 @@ SYNOPSIS [verse] 'git replace' [-f] 'git replace' [-f] --edit +'git replace' [-f] --graft [...] 'git replace' -d ... 'git replace' [--format=] [-l []] @@ -81,6 +82,15 @@ OPTIONS cannot be pretty-printed. Note that you may need to configure your editor to cleanly read and write binary data. +--graft [...]:: + Create a graft commit. A new commit is created with the same + content as except that its parents will be + [...] instead of 's parents. A replacement ref + is then created to replace with the newly created + commit. See contrib/convert-grafts-to-replace-refs.sh for an + example script based on this option that can convert grafts to + replace refs. + -l :: --list :: List replace refs for objects that match the given pattern (or diff --git a/Documentation/git.txt b/Documentation/git.txt index a0f1ede866..26de4dd548 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -43,9 +43,15 @@ 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.0.3/git.html[documentation for release 2.0.3] +* link:v2.1.0/git.html[documentation for release 2.1] * release notes for + link:RelNotes/2.1.0.txt[2.1]. + +* link:v2.0.4/git.html[documentation for release 2.0.4] + +* release notes for + link:RelNotes/2.0.4.txt[2.0.4], link:RelNotes/2.0.3.txt[2.0.3], link:RelNotes/2.0.2.txt[2.0.2], link:RelNotes/2.0.1.txt[2.0.1], @@ -446,6 +452,11 @@ example the following invocations are equivalent: given will override values from configuration files. The is expected in the same format as listed by 'git config' (subkeys separated by dots). ++ +Note that omitting the `=` in `git -c foo.bar ...` is allowed and sets +`foo.bar` to the boolean true value (just like `[foo]bar` would in a +config file). Including the equals but with an empty value (like `git -c +foo.bar= ...`) sets `foo.bar` to the empty string. --exec-path[=]:: Path to wherever your core Git programs are installed. diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt index 85d63532a3..eac79096d3 100644 --- a/Documentation/pretty-formats.txt +++ b/Documentation/pretty-formats.txt @@ -122,7 +122,7 @@ The placeholders are: - '%ce': committer email - '%cE': committer email (respecting .mailmap, see linkgit:git-shortlog[1] or linkgit:git-blame[1]) -- '%cd': committer date +- '%cd': committer date (format respects --date= option) - '%cD': committer date, RFC2822 style - '%cr': committer date, relative - '%ct': committer date, UNIX timestamp diff --git a/Documentation/technical/api-config.txt b/Documentation/technical/api-config.txt index 7108888b8a..0d8b99b368 100644 --- a/Documentation/technical/api-config.txt +++ b/Documentation/technical/api-config.txt @@ -292,4 +292,33 @@ They all behave similarly to the `git_config_get*()` family described in Writing Config Files -------------------- -TODO +Git gives multiple entry points in the Config API to write config values to +files namely `git_config_set_in_file` and `git_config_set`, which write to +a specific config file or to `.git/config` respectively. They both take a +key/value pair as parameter. +In the end they both call `git_config_set_multivar_in_file` which takes four +parameters: + +- the name of the file, as a string, to which key/value pairs will be written. + +- the name of key, as a string. This is in canonical "flat" form: the section, + subsection, and variable segments will be separated by dots, and the section + and variable segments will be all lowercase. + E.g., `core.ignorecase`, `diff.SomeType.textconv`. + +- the value of the variable, as a string. If value is equal to NULL, it will + remove the matching key from the config file. + +- the value regex, as a string. It will disregard key/value pairs where value + does not match. + +- a multi_replace value, as an int. If value is equal to zero, nothing or only + one matching key/value is replaced, else all matching key/values (regardless + how many) are removed, before the new pair is written. + +It returns 0 on success. + +Also, there are functions `git_config_rename_section` and +`git_config_rename_section_in_file` with parameters `old_name` and `new_name` +for renaming or removing sections in the config files. If NULL is passed +through `new_name` parameter, the section will be removed from the config file. diff --git a/Documentation/technical/api-strbuf.txt b/Documentation/technical/api-strbuf.txt index f9c06a7573..430302c2f4 100644 --- a/Documentation/technical/api-strbuf.txt +++ b/Documentation/technical/api-strbuf.txt @@ -307,6 +307,16 @@ same behaviour as well. use it unless you need the correct position in the file descriptor. +`strbuf_getcwd`:: + + Set the buffer to the path of the current working directory. + +`strbuf_add_absolute_path` + + Add a path to a buffer, converting a relative path to an + absolute one in the process. Symbolic links are not + resolved. + `stripspace`:: Strip whitespace from a buffer. The second parameter controls if diff --git a/Documentation/technical/pack-protocol.txt b/Documentation/technical/pack-protocol.txt index 18dea8d15f..569c48a352 100644 --- a/Documentation/technical/pack-protocol.txt +++ b/Documentation/technical/pack-protocol.txt @@ -467,7 +467,7 @@ references. ---- update-request = *shallow command-list [pack-file] - shallow = PKT-LINE("shallow" SP obj-id) + shallow = PKT-LINE("shallow" SP obj-id LF) command-list = PKT-LINE(command NUL capability-list LF) *PKT-LINE(command LF) diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index 40adbf7bf7..153d55d2b9 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v2.0.0.GIT +DEF_VER=v2.1.0.GIT LF=' ' diff --git a/Makefile b/Makefile index b7462e3398..30cc622f08 100644 --- a/Makefile +++ b/Makefile @@ -1660,7 +1660,11 @@ endif profile:: profile-clean $(MAKE) PROFILE=GEN all $(MAKE) PROFILE=GEN -j1 test - $(MAKE) PROFILE=GEN -j1 perf + @if test -n "$$GIT_PERF_REPO" || test -d .git; then \ + $(MAKE) PROFILE=GEN -j1 perf; \ + else \ + echo "Skipping profile of perf tests..."; \ + fi $(MAKE) PROFILE=USE all profile-fast: profile-clean diff --git a/RelNotes b/RelNotes index bf76091401..c473b35ad9 120000 --- a/RelNotes +++ b/RelNotes @@ -1 +1 @@ -Documentation/RelNotes/2.1.0.txt \ No newline at end of file +Documentation/RelNotes/2.2.0.txt \ No newline at end of file diff --git a/abspath.c b/abspath.c index ca33558a91..5edb4e7816 100644 --- a/abspath.c +++ b/abspath.c @@ -33,7 +33,7 @@ int is_directory(const char *path) */ static const char *real_path_internal(const char *path, int die_on_error) { - static char bufs[2][PATH_MAX + 1], *buf = bufs[0], *next_buf = bufs[1]; + static struct strbuf sb = STRBUF_INIT; char *retval = NULL; /* @@ -41,16 +41,14 @@ static const char *real_path_internal(const char *path, int die_on_error) * here so that we can chdir() back to it at the end of the * function: */ - char cwd[1024] = ""; - - int buf_index = 1; + struct strbuf cwd = STRBUF_INIT; int depth = MAXDEPTH; char *last_elem = NULL; struct stat st; /* We've already done it */ - if (path == buf || path == next_buf) + if (path == sb.buf) return path; if (!*path) { @@ -60,41 +58,38 @@ static const char *real_path_internal(const char *path, int die_on_error) goto error_out; } - if (strlcpy(buf, path, PATH_MAX) >= PATH_MAX) { - if (die_on_error) - die("Too long path: %.*s", 60, path); - else - goto error_out; - } + strbuf_reset(&sb); + strbuf_addstr(&sb, path); while (depth--) { - if (!is_directory(buf)) { - char *last_slash = find_last_dir_sep(buf); + if (!is_directory(sb.buf)) { + char *last_slash = find_last_dir_sep(sb.buf); if (last_slash) { last_elem = xstrdup(last_slash + 1); - last_slash[1] = '\0'; + strbuf_setlen(&sb, last_slash - sb.buf + 1); } else { - last_elem = xstrdup(buf); - *buf = '\0'; + last_elem = xmemdupz(sb.buf, sb.len); + strbuf_reset(&sb); } } - if (*buf) { - if (!*cwd && !getcwd(cwd, sizeof(cwd))) { + if (sb.len) { + if (!cwd.len && strbuf_getcwd(&cwd)) { if (die_on_error) die_errno("Could not get current working directory"); else goto error_out; } - if (chdir(buf)) { + if (chdir(sb.buf)) { if (die_on_error) - die_errno("Could not switch to '%s'", buf); + die_errno("Could not switch to '%s'", + sb.buf); else goto error_out; } } - if (!getcwd(buf, PATH_MAX)) { + if (strbuf_getcwd(&sb)) { if (die_on_error) die_errno("Could not get current working directory"); else @@ -102,48 +97,35 @@ static const char *real_path_internal(const char *path, int die_on_error) } if (last_elem) { - size_t len = strlen(buf); - if (len + strlen(last_elem) + 2 > PATH_MAX) { - if (die_on_error) - die("Too long path name: '%s/%s'", - buf, last_elem); - else - goto error_out; - } - if (len && !is_dir_sep(buf[len - 1])) - buf[len++] = '/'; - strcpy(buf + len, last_elem); + if (sb.len && !is_dir_sep(sb.buf[sb.len - 1])) + strbuf_addch(&sb, '/'); + strbuf_addstr(&sb, last_elem); free(last_elem); last_elem = NULL; } - if (!lstat(buf, &st) && S_ISLNK(st.st_mode)) { - ssize_t len = readlink(buf, next_buf, PATH_MAX); + if (!lstat(sb.buf, &st) && S_ISLNK(st.st_mode)) { + struct strbuf next_sb = STRBUF_INIT; + ssize_t len = strbuf_readlink(&next_sb, sb.buf, 0); if (len < 0) { if (die_on_error) - die_errno("Invalid symlink '%s'", buf); - else - goto error_out; - } - if (PATH_MAX <= len) { - if (die_on_error) - die("symbolic link too long: %s", buf); + die_errno("Invalid symlink '%s'", + sb.buf); else goto error_out; } - next_buf[len] = '\0'; - buf = next_buf; - buf_index = 1 - buf_index; - next_buf = bufs[buf_index]; + strbuf_swap(&sb, &next_sb); + strbuf_release(&next_sb); } else break; } - retval = buf; + retval = sb.buf; error_out: free(last_elem); - if (*cwd && chdir(cwd)) - die_errno("Could not change back to '%s'", cwd); + if (cwd.len && chdir(cwd.buf)) + die_errno("Could not change back to '%s'", cwd.buf); + strbuf_release(&cwd); return retval; } @@ -158,54 +140,16 @@ const char *real_path_if_valid(const char *path) return real_path_internal(path, 0); } -static const char *get_pwd_cwd(void) -{ - static char cwd[PATH_MAX + 1]; - char *pwd; - struct stat cwd_stat, pwd_stat; - if (getcwd(cwd, PATH_MAX) == NULL) - return NULL; - pwd = getenv("PWD"); - if (pwd && strcmp(pwd, cwd)) { - stat(cwd, &cwd_stat); - if ((cwd_stat.st_dev || cwd_stat.st_ino) && - !stat(pwd, &pwd_stat) && - pwd_stat.st_dev == cwd_stat.st_dev && - pwd_stat.st_ino == cwd_stat.st_ino) { - strlcpy(cwd, pwd, PATH_MAX); - } - } - return cwd; -} - /* * Use this to get an absolute path from a relative one. If you want * to resolve links, you should use real_path. - * - * If the path is already absolute, then return path. As the user is - * never meant to free the return value, we're safe. */ const char *absolute_path(const char *path) { - static char buf[PATH_MAX + 1]; - - if (!*path) { - die("The empty string is not a valid path"); - } else if (is_absolute_path(path)) { - if (strlcpy(buf, path, PATH_MAX) >= PATH_MAX) - die("Too long path: %.*s", 60, path); - } else { - size_t len; - const char *fmt; - const char *cwd = get_pwd_cwd(); - if (!cwd) - die_errno("Cannot determine the current working directory"); - len = strlen(cwd); - fmt = (len > 0 && is_dir_sep(cwd[len - 1])) ? "%s%s" : "%s/%s"; - if (snprintf(buf, PATH_MAX, fmt, cwd, path) >= PATH_MAX) - die("Too long path: %.*s", 60, path); - } - return buf; + static struct strbuf sb = STRBUF_INIT; + strbuf_reset(&sb); + strbuf_add_absolute_path(&sb, path); + return sb.buf; } /* diff --git a/archive-tar.c b/archive-tar.c index 719b6298e6..603650fa3c 100644 --- a/archive-tar.c +++ b/archive-tar.c @@ -192,7 +192,7 @@ static int write_extended_header(struct archiver_args *args, unsigned int mode; memset(&header, 0, sizeof(header)); *header.typeflag = TYPEFLAG_EXT_HEADER; - mode = 0100666; + mode = 0100666 & ~tar_umask; sprintf(header.name, "%s.paxheader", sha1_to_hex(sha1)); prepare_header(args, &header, mode, size); write_blocked(&header, sizeof(header)); @@ -300,7 +300,7 @@ static int write_global_extended_header(struct archiver_args *args) strbuf_append_ext_header(&ext_header, "comment", sha1_to_hex(sha1), 40); memset(&header, 0, sizeof(header)); *header.typeflag = TYPEFLAG_GLOBAL_HEADER; - mode = 0100666; + mode = 0100666 & ~tar_umask; strcpy(header.name, "pax_global_header"); prepare_header(args, &header, mode, ext_header.len); write_blocked(&header, sizeof(header)); diff --git a/builtin/apply.c b/builtin/apply.c index b97a55d3a7..f204cca5d2 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -1075,7 +1075,7 @@ static int gitdiff_index(const char *line, struct patch *patch) line = ptr + 2; ptr = strchr(line, ' '); - eol = strchr(line, '\n'); + eol = strchrnul(line, '\n'); if (!ptr || eol < ptr) ptr = eol; @@ -1920,6 +1920,66 @@ static int parse_binary(char *buffer, unsigned long size, struct patch *patch) return used; } +static void prefix_one(char **name) +{ + char *old_name = *name; + if (!old_name) + return; + *name = xstrdup(prefix_filename(prefix, prefix_length, *name)); + free(old_name); +} + +static void prefix_patch(struct patch *p) +{ + if (!prefix || p->is_toplevel_relative) + return; + prefix_one(&p->new_name); + prefix_one(&p->old_name); +} + +/* + * include/exclude + */ + +static struct string_list limit_by_name; +static int has_include; +static void add_name_limit(const char *name, int exclude) +{ + struct string_list_item *it; + + it = string_list_append(&limit_by_name, name); + it->util = exclude ? NULL : (void *) 1; +} + +static int use_patch(struct patch *p) +{ + const char *pathname = p->new_name ? p->new_name : p->old_name; + int i; + + /* Paths outside are not touched regardless of "--include" */ + if (0 < prefix_length) { + int pathlen = strlen(pathname); + if (pathlen <= prefix_length || + memcmp(prefix, pathname, prefix_length)) + return 0; + } + + /* See if it matches any of exclude/include rule */ + for (i = 0; i < limit_by_name.nr; i++) { + struct string_list_item *it = &limit_by_name.items[i]; + if (!wildmatch(it->string, pathname, 0, NULL)) + return (it->util != NULL); + } + + /* + * If we had any include, a path that does not match any rule is + * not used. Otherwise, we saw bunch of exclude rules (or none) + * and such a path is used. + */ + return !has_include; +} + + /* * Read the patch text in "buffer" that extends for "size" bytes; stop * reading after seeing a single patch (i.e. changes to a single file). @@ -1935,9 +1995,14 @@ static int parse_chunk(char *buffer, unsigned long size, struct patch *patch) if (offset < 0) return offset; - patch->ws_rule = whitespace_rule(patch->new_name - ? patch->new_name - : patch->old_name); + prefix_patch(patch); + + if (!use_patch(patch)) + patch->ws_rule = 0; + else + patch->ws_rule = whitespace_rule(patch->new_name + ? patch->new_name + : patch->old_name); patchsize = parse_single_patch(buffer + offset + hdrsize, size - offset - hdrsize, patch); @@ -4127,64 +4192,6 @@ static int write_out_results(struct patch *list) static struct lock_file lock_file; -static struct string_list limit_by_name; -static int has_include; -static void add_name_limit(const char *name, int exclude) -{ - struct string_list_item *it; - - it = string_list_append(&limit_by_name, name); - it->util = exclude ? NULL : (void *) 1; -} - -static int use_patch(struct patch *p) -{ - const char *pathname = p->new_name ? p->new_name : p->old_name; - int i; - - /* Paths outside are not touched regardless of "--include" */ - if (0 < prefix_length) { - int pathlen = strlen(pathname); - if (pathlen <= prefix_length || - memcmp(prefix, pathname, prefix_length)) - return 0; - } - - /* See if it matches any of exclude/include rule */ - for (i = 0; i < limit_by_name.nr; i++) { - struct string_list_item *it = &limit_by_name.items[i]; - if (!wildmatch(it->string, pathname, 0, NULL)) - return (it->util != NULL); - } - - /* - * If we had any include, a path that does not match any rule is - * not used. Otherwise, we saw bunch of exclude rules (or none) - * and such a path is used. - */ - return !has_include; -} - - -static void prefix_one(char **name) -{ - char *old_name = *name; - if (!old_name) - return; - *name = xstrdup(prefix_filename(prefix, prefix_length, *name)); - free(old_name); -} - -static void prefix_patches(struct patch *p) -{ - if (!prefix || p->is_toplevel_relative) - return; - for ( ; p; p = p->next) { - prefix_one(&p->new_name); - prefix_one(&p->old_name); - } -} - #define INACCURATE_EOF (1<<0) #define RECOUNT (1<<1) @@ -4210,8 +4217,6 @@ static int apply_patch(int fd, const char *filename, int options) break; if (apply_in_reverse) reverse_patches(patch); - if (prefix) - prefix_patches(patch); if (use_patch(patch)) { patch_stats(patch); *listp = patch; diff --git a/builtin/blame.c b/builtin/blame.c index 17d30d00aa..ca4ba6ff15 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -2700,7 +2700,7 @@ int cmd_blame(int argc, const char **argv, const char *prefix) * uninteresting. */ if (prepare_revision_walk(&revs)) - die("revision walk setup failed"); + die(_("revision walk setup failed")); if (is_null_sha1(sb.final->object.sha1)) { o = sb.final->util; diff --git a/builtin/branch.c b/builtin/branch.c index 0591b22a48..ced422b627 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -653,7 +653,9 @@ static int print_ref_list(int kinds, int detached, int verbose, int abbrev, stru add_pending_object(&ref_list.revs, (struct object *) filter, ""); ref_list.revs.limited = 1; - prepare_revision_walk(&ref_list.revs); + + if (prepare_revision_walk(&ref_list.revs)) + die(_("revision walk setup failed")); if (verbose) ref_list.maxwidth = calc_maxwidth(&ref_list); } diff --git a/builtin/clean.c b/builtin/clean.c index 1032563e5f..3beeea6ec0 100644 --- a/builtin/clean.c +++ b/builtin/clean.c @@ -67,7 +67,7 @@ struct menu_item { char hotkey; const char *title; int selected; - int (*fn)(); + int (*fn)(void); }; enum menu_stuff_type { diff --git a/builtin/clone.c b/builtin/clone.c index bbd169ceb4..dd4092b050 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -1004,5 +1004,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix) strbuf_release(&key); strbuf_release(&value); junk_mode = JUNK_LEAVE_ALL; + + free(refspec); return err; } diff --git a/builtin/commit.c b/builtin/commit.c index 5ed60364ce..36e3a2eef2 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -42,7 +42,20 @@ static const char * const builtin_status_usage[] = { NULL }; -static const char implicit_ident_advice[] = +static const char implicit_ident_advice_noconfig[] = +N_("Your name and email address were configured automatically based\n" +"on your username and hostname. Please check that they are accurate.\n" +"You can suppress this message by setting them explicitly. Run the\n" +"following command and follow the instructions in your editor to edit\n" +"your configuration file:\n" +"\n" +" git config --global --edit\n" +"\n" +"After doing this, you may fix the identity used for this commit with:\n" +"\n" +" git commit --amend --reset-author\n"); + +static const char implicit_ident_advice_config[] = N_("Your name and email address were configured automatically based\n" "on your username and hostname. Please check that they are accurate.\n" "You can suppress this message by setting them explicitly:\n" @@ -1048,7 +1061,8 @@ static const char *find_author_by_nickname(const char *name) revs.mailmap = &mailmap; read_mailmap(revs.mailmap, NULL); - prepare_revision_walk(&revs); + if (prepare_revision_walk(&revs)) + die(_("revision walk setup failed")); commit = get_revision(&revs); if (commit) { struct pretty_print_context ctx = {0}; @@ -1402,6 +1416,24 @@ int cmd_status(int argc, const char **argv, const char *prefix) return 0; } +static const char *implicit_ident_advice(void) +{ + char *user_config = NULL; + char *xdg_config = NULL; + int config_exists; + + home_config_paths(&user_config, &xdg_config, "config"); + config_exists = file_exists(user_config) || file_exists(xdg_config); + free(user_config); + free(xdg_config); + + if (config_exists) + return _(implicit_ident_advice_config); + else + return _(implicit_ident_advice_noconfig); + +} + static void print_summary(const char *prefix, const unsigned char *sha1, int initial_commit) { @@ -1440,7 +1472,7 @@ static void print_summary(const char *prefix, const unsigned char *sha1, strbuf_addbuf_percentquote(&format, &committer_ident); if (advice_implicit_identity) { strbuf_addch(&format, '\n'); - strbuf_addstr(&format, _(implicit_ident_advice)); + strbuf_addstr(&format, implicit_ident_advice()); } } strbuf_release(&author_ident); diff --git a/builtin/config.c b/builtin/config.c index fcd8474701..aba71355f8 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -445,6 +445,20 @@ static int get_urlmatch(const char *var, const char *url) return 0; } +static char *default_user_config(void) +{ + struct strbuf buf = STRBUF_INIT; + strbuf_addf(&buf, + _("# This is Git's per-user configuration file.\n" + "[core]\n" + "# Please adapt and uncomment the following lines:\n" + "# user = %s\n" + "# email = %s\n"), + ident_default_name(), + ident_default_email()); + return strbuf_detach(&buf, NULL); +} + int cmd_config(int argc, const char **argv, const char *prefix) { int nongit = !startup_info->have_repository; @@ -551,6 +565,8 @@ int cmd_config(int argc, const char **argv, const char *prefix) } } else if (actions == ACTION_EDIT) { + const char *config_file = given_config_source.file ? + given_config_source.file : git_path("config"); check_argc(argc, 0, 0); if (!given_config_source.file && nongit) die("not in a git directory"); @@ -559,9 +575,18 @@ int cmd_config(int argc, const char **argv, const char *prefix) if (given_config_source.blob) die("editing blobs is not supported"); git_config(git_default_config, NULL); - launch_editor(given_config_source.file ? - given_config_source.file : git_path("config"), - NULL, NULL); + if (use_global_config) { + int fd = open(config_file, O_CREAT | O_EXCL | O_WRONLY, 0666); + if (fd) { + char *content = default_user_config(); + write_str_in_full(fd, content); + free(content); + close(fd); + } + else if (errno != EEXIST) + die_errno(_("cannot create configuration file %s"), config_file); + } + launch_editor(config_file, NULL, NULL); } else if (actions == ACTION_SET) { int ret; diff --git a/builtin/init-db.c b/builtin/init-db.c index 56f85e239a..587a5055ed 100644 --- a/builtin/init-db.c +++ b/builtin/init-db.c @@ -330,12 +330,12 @@ int set_git_dir_init(const char *git_dir, const char *real_git_dir, * moving the target repo later on in separate_git_dir() */ git_link = xstrdup(real_path(git_dir)); + set_git_dir(real_path(real_git_dir)); } else { - real_git_dir = real_path(git_dir); + set_git_dir(real_path(git_dir)); git_link = NULL; } - set_git_dir(real_path(real_git_dir)); return 0; } @@ -426,8 +426,9 @@ int init_db(const char *template_dir, unsigned int flags) static int guess_repository_type(const char *git_dir) { - char cwd[PATH_MAX]; const char *slash; + char *cwd; + int cwd_is_git_dir; /* * "GIT_DIR=. git init" is always bare. @@ -435,9 +436,10 @@ static int guess_repository_type(const char *git_dir) */ if (!strcmp(".", git_dir)) return 1; - if (!getcwd(cwd, sizeof(cwd))) - die_errno(_("cannot tell cwd")); - if (!strcmp(git_dir, cwd)) + cwd = xgetcwd(); + cwd_is_git_dir = !strcmp(git_dir, cwd); + free(cwd); + if (cwd_is_git_dir) return 1; /* * "GIT_DIR=.git or GIT_DIR=something/.git is usually not. @@ -535,10 +537,9 @@ int cmd_init_db(int argc, const char **argv, const char *prefix) usage(init_db_usage[0]); } if (is_bare_repository_cfg == 1) { - static char git_dir[PATH_MAX+1]; - - setenv(GIT_DIR_ENVIRONMENT, - getcwd(git_dir, sizeof(git_dir)), argc > 0); + char *cwd = xgetcwd(); + setenv(GIT_DIR_ENVIRONMENT, cwd, argc > 0); + free(cwd); } if (init_shared_repository != -1) @@ -572,13 +573,10 @@ int cmd_init_db(int argc, const char **argv, const char *prefix) git_work_tree_cfg = xstrdup(real_path(rel)); free(rel); } - if (!git_work_tree_cfg) { - git_work_tree_cfg = xcalloc(PATH_MAX, 1); - if (!getcwd(git_work_tree_cfg, PATH_MAX)) - die_errno (_("Cannot access current working directory")); - } + if (!git_work_tree_cfg) + git_work_tree_cfg = xgetcwd(); if (work_tree) - set_git_work_tree(real_path(work_tree)); + set_git_work_tree(work_tree); else set_git_work_tree(git_work_tree_cfg); if (access(get_git_work_tree(), X_OK)) @@ -587,7 +585,7 @@ int cmd_init_db(int argc, const char **argv, const char *prefix) } else { if (work_tree) - set_git_work_tree(real_path(work_tree)); + set_git_work_tree(work_tree); } set_git_dir_init(git_dir, real_git_dir, 1); diff --git a/builtin/log.c b/builtin/log.c index 4389722b4b..e4d812208d 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -864,6 +864,7 @@ static void add_branch_description(struct strbuf *buf, const char *branch_name) strbuf_addbuf(buf, &desc); strbuf_addch(buf, '\n'); } + strbuf_release(&desc); } static char *find_branch_name(struct rev_info *rev) diff --git a/builtin/mailsplit.c b/builtin/mailsplit.c index 06296d4bdf..763cda098c 100644 --- a/builtin/mailsplit.c +++ b/builtin/mailsplit.c @@ -53,14 +53,16 @@ static int keep_cr; */ static int split_one(FILE *mbox, const char *name, int allow_bare) { - FILE *output = NULL; + FILE *output; int fd; int status = 0; int is_bare = !is_from_line(buf.buf, buf.len); - if (is_bare && !allow_bare) - goto corrupt; - + if (is_bare && !allow_bare) { + unlink(name); + fprintf(stderr, "corrupt mailbox\n"); + exit(1); + } fd = open(name, O_WRONLY | O_CREAT | O_EXCL, 0666); if (fd < 0) die_errno("cannot open output file '%s'", name); @@ -91,13 +93,6 @@ static int split_one(FILE *mbox, const char *name, int allow_bare) } fclose(output); return status; - - corrupt: - if (output) - fclose(output); - unlink(name); - fprintf(stderr, "corrupt mailbox\n"); - exit(1); } static int populate_maildir_list(struct string_list *list, const char *path) diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index 238b5021eb..b59f5d895e 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -2494,6 +2494,7 @@ static void get_object_list(int ac, const char **av) if (get_sha1_hex(line + 10, sha1)) die("not an SHA-1 '%s'", line + 10); register_shallow(sha1); + use_bitmap_index = 0; continue; } die("not a rev '%s'", line); diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 92561bffc1..f93ac454b4 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -1122,7 +1122,7 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix) int advertise_refs = 0; int stateless_rpc = 0; int i; - char *dir = NULL; + const char *dir = NULL; struct command *commands; struct sha1_array shallow = SHA1_ARRAY_INIT; struct sha1_array ref = SHA1_ARRAY_INIT; @@ -1157,7 +1157,7 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix) } if (dir) usage(receive_pack_usage); - dir = xstrdup(arg); + dir = arg; } if (!dir) usage(receive_pack_usage); diff --git a/builtin/replace.c b/builtin/replace.c index d1ea2c2e56..294b61b97e 100644 --- a/builtin/replace.c +++ b/builtin/replace.c @@ -13,10 +13,12 @@ #include "refs.h" #include "parse-options.h" #include "run-command.h" +#include "tag.h" static const char * const git_replace_usage[] = { N_("git replace [-f] "), N_("git replace [-f] --edit "), + N_("git replace [-f] --graft [...]"), N_("git replace -d ..."), N_("git replace [--format=] [-l []]"), NULL @@ -299,6 +301,117 @@ static int edit_and_replace(const char *object_ref, int force, int raw) return replace_object_sha1(object_ref, old, "replacement", new, force); } +static void replace_parents(struct strbuf *buf, int argc, const char **argv) +{ + struct strbuf new_parents = STRBUF_INIT; + const char *parent_start, *parent_end; + int i; + + /* find existing parents */ + parent_start = buf->buf; + parent_start += 46; /* "tree " + "hex sha1" + "\n" */ + parent_end = parent_start; + + while (starts_with(parent_end, "parent ")) + parent_end += 48; /* "parent " + "hex sha1" + "\n" */ + + /* prepare new parents */ + for (i = 0; i < argc; i++) { + unsigned char sha1[20]; + if (get_sha1(argv[i], sha1) < 0) + die(_("Not a valid object name: '%s'"), argv[i]); + lookup_commit_or_die(sha1, argv[i]); + strbuf_addf(&new_parents, "parent %s\n", sha1_to_hex(sha1)); + } + + /* replace existing parents with new ones */ + strbuf_splice(buf, parent_start - buf->buf, parent_end - parent_start, + new_parents.buf, new_parents.len); + + strbuf_release(&new_parents); +} + +struct check_mergetag_data { + int argc; + const char **argv; +}; + +static void check_one_mergetag(struct commit *commit, + struct commit_extra_header *extra, + void *data) +{ + struct check_mergetag_data *mergetag_data = (struct check_mergetag_data *)data; + const char *ref = mergetag_data->argv[0]; + unsigned char tag_sha1[20]; + struct tag *tag; + int i; + + hash_sha1_file(extra->value, extra->len, typename(OBJ_TAG), tag_sha1); + tag = lookup_tag(tag_sha1); + if (!tag) + die(_("bad mergetag in commit '%s'"), ref); + if (parse_tag_buffer(tag, extra->value, extra->len)) + die(_("malformed mergetag in commit '%s'"), ref); + + /* iterate over new parents */ + for (i = 1; i < mergetag_data->argc; i++) { + unsigned char sha1[20]; + if (get_sha1(mergetag_data->argv[i], sha1) < 0) + die(_("Not a valid object name: '%s'"), mergetag_data->argv[i]); + if (!hashcmp(tag->tagged->sha1, sha1)) + return; /* found */ + } + + die(_("original commit '%s' contains mergetag '%s' that is discarded; " + "use --edit instead of --graft"), ref, sha1_to_hex(tag_sha1)); +} + +static void check_mergetags(struct commit *commit, int argc, const char **argv) +{ + struct check_mergetag_data mergetag_data; + + mergetag_data.argc = argc; + mergetag_data.argv = argv; + for_each_mergetag(check_one_mergetag, commit, &mergetag_data); +} + +static int create_graft(int argc, const char **argv, int force) +{ + unsigned char old[20], new[20]; + const char *old_ref = argv[0]; + struct commit *commit; + struct strbuf buf = STRBUF_INIT; + const char *buffer; + unsigned long size; + + if (get_sha1(old_ref, old) < 0) + die(_("Not a valid object name: '%s'"), old_ref); + commit = lookup_commit_or_die(old, old_ref); + + buffer = get_commit_buffer(commit, &size); + strbuf_add(&buf, buffer, size); + unuse_commit_buffer(commit, buffer); + + replace_parents(&buf, argc - 1, &argv[1]); + + if (remove_signature(&buf)) { + warning(_("the original commit '%s' has a gpg signature."), old_ref); + warning(_("the signature will be removed in the replacement commit!")); + } + + check_mergetags(commit, argc, argv); + + if (write_sha1_file(buf.buf, buf.len, commit_type, new)) + die(_("could not write replacement commit for: '%s'"), old_ref); + + strbuf_release(&buf); + + if (!hashcmp(old, new)) + return error("new commit is the same as the old one: '%s'", sha1_to_hex(old)); + + return replace_object_sha1(old_ref, old, "replacement", new, force); +} + int cmd_replace(int argc, const char **argv, const char *prefix) { int force = 0; @@ -309,12 +422,14 @@ int cmd_replace(int argc, const char **argv, const char *prefix) MODE_LIST, MODE_DELETE, MODE_EDIT, + MODE_GRAFT, MODE_REPLACE } cmdmode = MODE_UNSPECIFIED; struct option options[] = { OPT_CMDMODE('l', "list", &cmdmode, N_("list replace refs"), MODE_LIST), OPT_CMDMODE('d', "delete", &cmdmode, N_("delete replace refs"), MODE_DELETE), OPT_CMDMODE('e', "edit", &cmdmode, N_("edit existing object"), MODE_EDIT), + OPT_CMDMODE('g', "graft", &cmdmode, N_("change a commit's parents"), MODE_GRAFT), OPT_BOOL('f', "force", &force, N_("replace the ref if it exists")), OPT_BOOL(0, "raw", &raw, N_("do not pretty-print contents for --edit")), OPT_STRING(0, "format", &format, N_("format"), N_("use this format")), @@ -332,7 +447,10 @@ int cmd_replace(int argc, const char **argv, const char *prefix) usage_msg_opt("--format cannot be used when not listing", git_replace_usage, options); - if (force && cmdmode != MODE_REPLACE && cmdmode != MODE_EDIT) + if (force && + cmdmode != MODE_REPLACE && + cmdmode != MODE_EDIT && + cmdmode != MODE_GRAFT) usage_msg_opt("-f only makes sense when writing a replacement", git_replace_usage, options); @@ -359,6 +477,12 @@ int cmd_replace(int argc, const char **argv, const char *prefix) git_replace_usage, options); return edit_and_replace(argv[0], force, raw); + case MODE_GRAFT: + if (argc < 1) + usage_msg_opt("-g needs at least one argument", + git_replace_usage, options); + return create_graft(argc, argv, force); + case MODE_LIST: if (argc > 1) usage_msg_opt("only one pattern can be given with -l", diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index 8102aaa924..c911b456de 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -151,6 +151,7 @@ static void show_rev(int type, const unsigned char *sha1, const char *name) error("refname '%s' is ambiguous", name); break; } + free(full); } else { show_with_type(type, name); } @@ -735,7 +736,7 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix) } if (!strcmp(arg, "--git-dir")) { const char *gitdir = getenv(GIT_DIR_ENVIRONMENT); - static char cwd[PATH_MAX]; + char *cwd; int len; if (gitdir) { puts(gitdir); @@ -745,10 +746,10 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix) puts(".git"); continue; } - if (!getcwd(cwd, PATH_MAX)) - die_errno("unable to get current working directory"); + cwd = xgetcwd(); len = strlen(cwd); printf("%s%s.git\n", cwd, len && cwd[len-1] != '/' ? "/" : ""); + free(cwd); continue; } if (!strcmp(arg, "--resolve-git-dir")) { diff --git a/builtin/show-branch.c b/builtin/show-branch.c index 5fd4e4e488..298c95e3f8 100644 --- a/builtin/show-branch.c +++ b/builtin/show-branch.c @@ -777,6 +777,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix) sprintf(nth_desc, "%s@{%d}", *av, base+i); append_ref(nth_desc, sha1, 1); } + free(ref); } else if (all_heads + all_remotes) snarf_refs(all_heads, all_remotes); diff --git a/bundle.c b/bundle.c index 71a21a67fa..b708906cdb 100644 --- a/bundle.c +++ b/bundle.c @@ -221,8 +221,8 @@ static int is_tag_in_date_range(struct object *tag, struct rev_info *revs) line = memmem(buf, size, "\ntagger ", 8); if (!line++) return 1; - lineend = memchr(line, buf + size - line, '\n'); - line = memchr(line, lineend ? lineend - line : buf + size - line, '>'); + lineend = memchr(line, '\n', buf + size - line); + line = memchr(line, '>', lineend ? lineend - line : buf + size - line); if (!line++) return 1; date = strtoul(line, NULL, 10); diff --git a/cache.h b/cache.h index 2693a3736a..dfa1a5696d 100644 --- a/cache.h +++ b/cache.h @@ -586,6 +586,7 @@ extern NORETURN void unable_to_lock_index_die(const char *path, int err); extern int hold_lock_file_for_update(struct lock_file *, const char *path, int); extern int hold_lock_file_for_append(struct lock_file *, const char *path, int); extern int commit_lock_file(struct lock_file *); +extern int reopen_lock_file(struct lock_file *); extern void update_index_if_able(struct index_state *, struct lock_file *); extern int hold_locked_index(struct lock_file *, int); @@ -1062,6 +1063,7 @@ extern const char *git_author_info(int); extern const char *git_committer_info(int); extern const char *fmt_ident(const char *name, const char *email, const char *date_str, int); extern const char *fmt_name(const char *name, const char *email); +extern const char *ident_default_name(void); extern const char *ident_default_email(void); extern const char *git_editor(void); extern const char *git_pager(int stdout_is_tty); diff --git a/combine-diff.c b/combine-diff.c index f9975d2c2e..91edce58e1 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -12,6 +12,16 @@ #include "sha1-array.h" #include "revision.h" +static int compare_paths(const struct combine_diff_path *one, + const struct diff_filespec *two) +{ + if (!S_ISDIR(one->mode) && !S_ISDIR(two->mode)) + return strcmp(one->path, two->path); + + return base_name_compare(one->path, strlen(one->path), one->mode, + two->path, strlen(two->path), two->mode); +} + static struct combine_diff_path *intersect_paths(struct combine_diff_path *curr, int n, int num_parent) { struct diff_queue_struct *q = &diff_queued_diff; @@ -52,7 +62,7 @@ static struct combine_diff_path *intersect_paths(struct combine_diff_path *curr, i = 0; while ((p = *tail) != NULL) { cmp = ((i >= q->nr) - ? -1 : strcmp(p->path, q->queue[i]->two->path)); + ? -1 : compare_paths(p, q->queue[i]->two)); if (cmp < 0) { /* p->path not in q->queue[]; drop it */ @@ -1397,7 +1407,8 @@ void diff_tree_combined(const unsigned char *sha1, show_log(rev); if (rev->verbose_header && opt->output_format && - opt->output_format != DIFF_FORMAT_NO_OUTPUT) + opt->output_format != DIFF_FORMAT_NO_OUTPUT && + !commit_format_is_empty(rev->commit_format)) printf("%s%c", diff_line_prefix(opt), opt->line_termination); } diff --git a/commit.c b/commit.c index dce3d69dfd..ae7f2b10f4 100644 --- a/commit.c +++ b/commit.c @@ -764,45 +764,41 @@ void sort_in_topological_order(struct commit_list **list, enum rev_sort_order so static const unsigned all_flags = (PARENT1 | PARENT2 | STALE | RESULT); -static struct commit *interesting(struct commit_list *list) +static int queue_has_nonstale(struct prio_queue *queue) { - while (list) { - struct commit *commit = list->item; - list = list->next; - if (commit->object.flags & STALE) - continue; - return commit; + int i; + for (i = 0; i < queue->nr; i++) { + struct commit *commit = queue->array[i].data; + if (!(commit->object.flags & STALE)) + return 1; } - return NULL; + return 0; } /* all input commits in one and twos[] must have been parsed! */ static struct commit_list *paint_down_to_common(struct commit *one, int n, struct commit **twos) { - struct commit_list *list = NULL; + struct prio_queue queue = { compare_commits_by_commit_date }; struct commit_list *result = NULL; int i; one->object.flags |= PARENT1; - commit_list_insert_by_date(one, &list); - if (!n) - return list; + if (!n) { + commit_list_append(one, &result); + return result; + } + prio_queue_put(&queue, one); + for (i = 0; i < n; i++) { twos[i]->object.flags |= PARENT2; - commit_list_insert_by_date(twos[i], &list); + prio_queue_put(&queue, twos[i]); } - while (interesting(list)) { - struct commit *commit; + while (queue_has_nonstale(&queue)) { + struct commit *commit = prio_queue_get(&queue); struct commit_list *parents; - struct commit_list *next; int flags; - commit = list->item; - next = list->next; - free(list); - list = next; - flags = commit->object.flags & (PARENT1 | PARENT2 | STALE); if (flags == (PARENT1 | PARENT2)) { if (!(commit->object.flags & RESULT)) { @@ -821,11 +817,11 @@ static struct commit_list *paint_down_to_common(struct commit *one, int n, struc if (parse_commit(p)) return NULL; p->object.flags |= flags; - commit_list_insert_by_date(p, &list); + prio_queue_put(&queue, p); } } - free_commit_list(list); + clear_prio_queue(&queue); return result; } @@ -1150,6 +1146,40 @@ int parse_signed_commit(const struct commit *commit, return saw_signature; } +int remove_signature(struct strbuf *buf) +{ + const char *line = buf->buf; + const char *tail = buf->buf + buf->len; + int in_signature = 0; + const char *sig_start = NULL; + const char *sig_end = NULL; + + while (line < tail) { + const char *next = memchr(line, '\n', tail - line); + next = next ? next + 1 : tail; + + if (in_signature && line[0] == ' ') + sig_end = next; + else if (starts_with(line, gpg_sig_header) && + line[gpg_sig_header_len] == ' ') { + sig_start = line; + sig_end = next; + in_signature = 1; + } else { + if (*line == '\n') + /* dump the whole remainder of the buffer */ + next = tail; + in_signature = 0; + } + line = next; + } + + if (sig_start) + strbuf_remove(buf, sig_start - buf->buf, sig_end - sig_start); + + return sig_start != NULL; +} + static void handle_signed_tag(struct commit *parent, struct commit_extra_header ***tail) { struct merge_remote_desc *desc; diff --git a/commit.h b/commit.h index f43079c0c3..aa8c3ca50a 100644 --- a/commit.h +++ b/commit.h @@ -159,6 +159,7 @@ extern void get_commit_format(const char *arg, struct rev_info *); extern const char *format_subject(struct strbuf *sb, const char *msg, const char *line_separator); extern void userformat_find_requirements(const char *fmt, struct userformat_want *w); +extern int commit_format_is_empty(enum cmit_fmt); extern void format_commit_message(const struct commit *commit, const char *format, struct strbuf *sb, const struct pretty_print_context *context); @@ -333,6 +334,8 @@ struct commit *get_merge_parent(const char *name); extern int parse_signed_commit(const struct commit *commit, struct strbuf *message, struct strbuf *signature); +extern int remove_signature(struct strbuf *buf); + extern void print_commit_list(struct commit_list *list, const char *format_cur, const char *format_last); diff --git a/compat/mingw.c b/compat/mingw.c index 9d435e2cf4..c5c37e53ce 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -4,6 +4,7 @@ #include #include "../strbuf.h" #include "../run-command.h" +#include "../cache.h" static const int delay[] = { 0, 1, 10, 20, 40 }; @@ -898,11 +899,44 @@ static char *path_lookup(const char *cmd, char **path, int exe_only) return prog; } -static int env_compare(const void *a, const void *b) +static int do_putenv(char **env, const char *name, int size, int free_old); + +/* used number of elements of environ array, including terminating NULL */ +static int environ_size = 0; +/* allocated size of environ array, in bytes */ +static int environ_alloc = 0; + +/* + * Create environment block suitable for CreateProcess. Merges current + * process environment and the supplied environment changes. + */ +static wchar_t *make_environment_block(char **deltaenv) { - char *const *ea = a; - char *const *eb = b; - return strcasecmp(*ea, *eb); + wchar_t *wenvblk = NULL; + char **tmpenv; + int i = 0, size = environ_size, wenvsz = 0, wenvpos = 0; + + while (deltaenv && deltaenv[i]) + i++; + + /* copy the environment, leaving space for changes */ + tmpenv = xmalloc((size + i) * sizeof(char*)); + memcpy(tmpenv, environ, size * sizeof(char*)); + + /* merge supplied environment changes into the temporary environment */ + for (i = 0; deltaenv && deltaenv[i]; i++) + size = do_putenv(tmpenv, deltaenv[i], size, 0); + + /* create environment block from temporary environment */ + for (i = 0; tmpenv[i]; i++) { + size = 2 * strlen(tmpenv[i]) + 2; /* +2 for final \0 */ + ALLOC_GROW(wenvblk, (wenvpos + size) * sizeof(wchar_t), wenvsz); + wenvpos += xutftowcs(&wenvblk[wenvpos], tmpenv[i], size) + 1; + } + /* add final \0 terminator */ + wenvblk[wenvpos] = 0; + free(tmpenv); + return wenvblk; } struct pinfo_t { @@ -913,15 +947,15 @@ struct pinfo_t { static struct pinfo_t *pinfo = NULL; CRITICAL_SECTION pinfo_cs; -static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **env, +static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **deltaenv, const char *dir, int prepend_cmd, int fhin, int fhout, int fherr) { STARTUPINFOW si; PROCESS_INFORMATION pi; - struct strbuf envblk, args; - wchar_t wcmd[MAX_PATH], wdir[MAX_PATH], *wargs; - unsigned flags; + struct strbuf args; + wchar_t wcmd[MAX_PATH], wdir[MAX_PATH], *wargs, *wenvblk = NULL; + unsigned flags = CREATE_UNICODE_ENVIRONMENT; BOOL ret; /* Determine whether or not we are associated to a console */ @@ -938,7 +972,7 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **env, * instead of CREATE_NO_WINDOW to make ssh * recognize that it has no console. */ - flags = DETACHED_PROCESS; + flags |= DETACHED_PROCESS; } else { /* There is already a console. If we specified * DETACHED_PROCESS here, too, Windows would @@ -946,7 +980,6 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **env, * The same is true for CREATE_NO_WINDOW. * Go figure! */ - flags = 0; CloseHandle(cons); } memset(&si, 0, sizeof(si)); @@ -982,32 +1015,13 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **env, xutftowcs(wargs, args.buf, 2 * args.len + 1); strbuf_release(&args); - if (env) { - int count = 0; - char **e, **sorted_env; - - for (e = env; *e; e++) - count++; - - /* environment must be sorted */ - sorted_env = xmalloc(sizeof(*sorted_env) * (count + 1)); - memcpy(sorted_env, env, sizeof(*sorted_env) * (count + 1)); - qsort(sorted_env, count, sizeof(*sorted_env), env_compare); - - strbuf_init(&envblk, 0); - for (e = sorted_env; *e; e++) { - strbuf_addstr(&envblk, *e); - strbuf_addch(&envblk, '\0'); - } - free(sorted_env); - } + wenvblk = make_environment_block(deltaenv); memset(&pi, 0, sizeof(pi)); ret = CreateProcessW(wcmd, wargs, NULL, NULL, TRUE, flags, - env ? envblk.buf : NULL, dir ? wdir : NULL, &si, &pi); + wenvblk, dir ? wdir : NULL, &si, &pi); - if (env) - strbuf_release(&envblk); + free(wenvblk); free(wargs); if (!ret) { @@ -1039,10 +1053,10 @@ static pid_t mingw_spawnve_fd(const char *cmd, const char **argv, char **env, static pid_t mingw_spawnv(const char *cmd, const char **argv, int prepend_cmd) { - return mingw_spawnve_fd(cmd, argv, environ, NULL, prepend_cmd, 0, 1, 2); + return mingw_spawnve_fd(cmd, argv, NULL, NULL, prepend_cmd, 0, 1, 2); } -pid_t mingw_spawnvpe(const char *cmd, const char **argv, char **env, +pid_t mingw_spawnvpe(const char *cmd, const char **argv, char **deltaenv, const char *dir, int fhin, int fhout, int fherr) { @@ -1066,14 +1080,14 @@ pid_t mingw_spawnvpe(const char *cmd, const char **argv, char **env, pid = -1; } else { - pid = mingw_spawnve_fd(iprog, argv, env, dir, 1, + pid = mingw_spawnve_fd(iprog, argv, deltaenv, dir, 1, fhin, fhout, fherr); free(iprog); } argv[0] = argv0; } else - pid = mingw_spawnve_fd(prog, argv, env, dir, 0, + pid = mingw_spawnve_fd(prog, argv, deltaenv, dir, 0, fhin, fhout, fherr); free(prog); } @@ -1170,108 +1184,88 @@ int mingw_kill(pid_t pid, int sig) return -1; } -static char **copy_environ(void) -{ - char **env; - int i = 0; - while (environ[i]) - i++; - env = xmalloc((i+1)*sizeof(*env)); - for (i = 0; environ[i]; i++) - env[i] = xstrdup(environ[i]); - env[i] = NULL; - return env; -} - -void free_environ(char **env) -{ - int i; - for (i = 0; env[i]; i++) - free(env[i]); - free(env); +/* + * Compare environment entries by key (i.e. stopping at '=' or '\0'). + */ +static int compareenv(const void *v1, const void *v2) +{ + const char *e1 = *(const char**)v1; + const char *e2 = *(const char**)v2; + + for (;;) { + int c1 = *e1++; + int c2 = *e2++; + c1 = (c1 == '=') ? 0 : tolower(c1); + c2 = (c2 == '=') ? 0 : tolower(c2); + if (c1 > c2) + return 1; + if (c1 < c2) + return -1; + if (c1 == 0) + return 0; + } } -static int lookup_env(char **env, const char *name, size_t nmln) +static int bsearchenv(char **env, const char *name, size_t size) { - int i; - - for (i = 0; env[i]; i++) { - if (0 == strncmp(env[i], name, nmln) - && '=' == env[i][nmln]) - /* matches */ - return i; + unsigned low = 0, high = size; + while (low < high) { + unsigned mid = low + ((high - low) >> 1); + int cmp = compareenv(&env[mid], &name); + if (cmp < 0) + low = mid + 1; + else if (cmp > 0) + high = mid; + else + return mid; } - return -1; + return ~low; /* not found, return 1's complement of insert position */ } /* * If name contains '=', then sets the variable, otherwise it unsets it + * Size includes the terminating NULL. Env must have room for size + 1 entries + * (in case of insert). Returns the new size. Optionally frees removed entries. */ -static char **env_setenv(char **env, const char *name) +static int do_putenv(char **env, const char *name, int size, int free_old) { - char *eq = strchrnul(name, '='); - int i = lookup_env(env, name, eq-name); + int i = bsearchenv(env, name, size - 1); - if (i < 0) { - if (*eq) { - for (i = 0; env[i]; i++) - ; - env = xrealloc(env, (i+2)*sizeof(*env)); - env[i] = xstrdup(name); - env[i+1] = NULL; - } - } - else { + /* optionally free removed / replaced entry */ + if (i >= 0 && free_old) free(env[i]); - if (*eq) - env[i] = xstrdup(name); - else - for (; env[i]; i++) - env[i] = env[i+1]; - } - return env; -} -/* - * Copies global environ and adjusts variables as specified by vars. - */ -char **make_augmented_environ(const char *const *vars) -{ - char **env = copy_environ(); - - while (*vars) - env = env_setenv(env, *vars++); - return env; + if (strchr(name, '=')) { + /* if new value ('key=value') is specified, insert or replace entry */ + if (i < 0) { + i = ~i; + memmove(&env[i + 1], &env[i], (size - i) * sizeof(char*)); + size++; + } + env[i] = (char*) name; + } else if (i >= 0) { + /* otherwise ('key') remove existing entry */ + size--; + memmove(&env[i], &env[i + 1], (size - i) * sizeof(char*)); + } + return size; } -#undef getenv - -/* - * The system's getenv looks up the name in a case-insensitive manner. - * This version tries a case-sensitive lookup and falls back to - * case-insensitive if nothing was found. This is necessary because, - * as a prominent example, CMD sets 'Path', but not 'PATH'. - * Warning: not thread-safe. - */ -static char *getenv_cs(const char *name) +char *mingw_getenv(const char *name) { - size_t len = strlen(name); - int i = lookup_env(environ, name, len); - if (i >= 0) - return environ[i] + len + 1; /* skip past name and '=' */ - return getenv(name); + char *value; + int pos = bsearchenv(environ, name, environ_size - 1); + if (pos < 0) + return NULL; + value = strchr(environ[pos], '='); + return value ? &value[1] : NULL; } -char *mingw_getenv(const char *name) +int mingw_putenv(const char *namevalue) { - char *result = getenv_cs(name); - if (!result && !strcmp(name, "TMPDIR")) { - /* on Windows it is TMP and TEMP */ - result = getenv_cs("TMP"); - if (!result) - result = getenv_cs("TEMP"); - } - return result; + ALLOC_GROW(environ, (environ_size + 1) * sizeof(char*), environ_alloc); + environ_size = do_putenv(environ, namevalue, environ_size, 1); + return 0; } /* @@ -2049,9 +2043,23 @@ static NORETURN void die_startup() exit(128); } +static void *malloc_startup(size_t size) +{ + void *result = malloc(size); + if (!result) + die_startup(); + return result; +} + +static char *wcstoutfdup_startup(char *buffer, const wchar_t *wcs, size_t len) +{ + len = xwcstoutf(buffer, wcs, len) + 1; + return memcpy(malloc_startup(len), buffer, len); +} + void mingw_startup() { - int i, len, maxlen, argc; + int i, maxlen, argc; char *buffer; wchar_t **wenv, **wargv; _startupinfo si; @@ -2065,20 +2073,49 @@ void mingw_startup() maxlen = wcslen(_wpgmptr); for (i = 1; i < argc; i++) maxlen = max(maxlen, wcslen(wargv[i])); + for (i = 0; wenv[i]; i++) + maxlen = max(maxlen, wcslen(wenv[i])); + + /* + * nedmalloc can't free CRT memory, allocate resizable environment + * list. Note that xmalloc / xmemdupz etc. call getenv, so we cannot + * use it while initializing the environment itself. + */ + environ_size = i + 1; + environ_alloc = alloc_nr(environ_size * sizeof(char*)); + environ = malloc_startup(environ_alloc); /* allocate buffer (wchar_t encodes to max 3 UTF-8 bytes) */ maxlen = 3 * maxlen + 1; - buffer = xmalloc(maxlen); + buffer = malloc_startup(maxlen); /* convert command line arguments and environment to UTF-8 */ - len = xwcstoutf(buffer, _wpgmptr, maxlen); - __argv[0] = xmemdupz(buffer, len); - for (i = 1; i < argc; i++) { - len = xwcstoutf(buffer, wargv[i], maxlen); - __argv[i] = xmemdupz(buffer, len); - } + __argv[0] = wcstoutfdup_startup(buffer, _wpgmptr, maxlen); + for (i = 1; i < argc; i++) + __argv[i] = wcstoutfdup_startup(buffer, wargv[i], maxlen); + for (i = 0; wenv[i]; i++) + environ[i] = wcstoutfdup_startup(buffer, wenv[i], maxlen); + environ[i] = NULL; free(buffer); + /* sort environment for O(log n) getenv / putenv */ + qsort(environ, i, sizeof(char*), compareenv); + + /* fix Windows specific environment settings */ + + /* on Windows it is TMP and TEMP */ + if (!mingw_getenv("TMPDIR")) { + const char *tmp = mingw_getenv("TMP"); + if (!tmp) + tmp = mingw_getenv("TEMP"); + if (tmp) + setenv("TMPDIR", tmp, 1); + } + + /* simulate TERM to enable auto-color (see color.c) */ + if (!getenv("TERM")) + setenv("TERM", "cygwin", 1); + /* initialize critical section for waitpid pinfo_t list */ InitializeCriticalSection(&pinfo_cs); diff --git a/compat/mingw.h b/compat/mingw.h index 510530c690..df0e3203ab 100644 --- a/compat/mingw.h +++ b/compat/mingw.h @@ -210,6 +210,9 @@ char *mingw_getcwd(char *pointer, int len); char *mingw_getenv(const char *name); #define getenv mingw_getenv +int mingw_putenv(const char *namevalue); +#define putenv mingw_putenv +#define unsetenv mingw_putenv int mingw_gethostname(char *host, int namelen); #define gethostname mingw_gethostname @@ -357,12 +360,8 @@ int mingw_offset_1st_component(const char *path); void mingw_open_html(const char *path); #define open_html mingw_open_html -/* - * helpers - */ - -char **make_augmented_environ(const char *const *vars); -void free_environ(char **env); +void mingw_mark_as_git_dir(const char *dir); +#define mark_as_git_dir mingw_mark_as_git_dir /** * Converts UTF-8 encoded string to UTF-16LE. diff --git a/config.c b/config.c index 387e86bb6c..83c913ad09 100644 --- a/config.c +++ b/config.c @@ -171,19 +171,27 @@ void git_config_push_parameter(const char *text) int git_config_parse_parameter(const char *text, config_fn_t fn, void *data) { + const char *value; struct strbuf **pair; + pair = strbuf_split_str(text, '=', 2); if (!pair[0]) return error("bogus config parameter: %s", text); - if (pair[0]->len && pair[0]->buf[pair[0]->len - 1] == '=') + + if (pair[0]->len && pair[0]->buf[pair[0]->len - 1] == '=') { strbuf_setlen(pair[0], pair[0]->len - 1); + value = pair[1] ? pair[1]->buf : ""; + } else { + value = NULL; + } + strbuf_trim(pair[0]); if (!pair[0]->len) { strbuf_list_free(pair); return error("bogus config parameter: %s", text); } strbuf_tolower(pair[0]); - if (fn(pair[0]->buf, pair[1] ? pair[1]->buf : NULL, data) < 0) { + if (fn(pair[0]->buf, value, data) < 0) { strbuf_list_free(pair); return -1; } @@ -836,14 +844,12 @@ static int git_default_core_config(const char *var, const char *value) return git_config_string(&editor_program, var, value); if (!strcmp(var, "core.commentchar")) { - const char *comment; - int ret = git_config_string(&comment, var, value); - if (ret) - return ret; - else if (!strcasecmp(comment, "auto")) + if (!value) + return config_error_nonbool(var); + else if (!strcasecmp(value, "auto")) auto_comment_line_char = 1; - else if (comment[0] && !comment[1]) { - comment_line_char = comment[0]; + else if (value[0] && !value[1]) { + comment_line_char = value[0]; auto_comment_line_char = 0; } else return error("core.commentChar should only be one character"); diff --git a/config.mak.uname b/config.mak.uname index 00cf4c6b83..a2f380fd8d 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -89,8 +89,13 @@ ifeq ($(uname_S),Darwin) NEEDS_CRYPTO_WITH_SSL = YesPlease NEEDS_SSL_WITH_CRYPTO = YesPlease NEEDS_LIBICONV = YesPlease + # Note: $(uname_R) gives us the underlying Darwin version. + # - MacOS 10.0.* and MacOS 10.1.0 = Darwin 1.* + # - MacOS 10.x.* = Darwin (x+4).* for (1 <= x) + # i.e. "begins with [15678] and a dot" means "10.4.* or older". ifeq ($(shell expr "$(uname_R)" : '[15678]\.'),2) OLD_ICONV = UnfortunatelyYes + NO_APPLE_COMMON_CRYPTO = YesPlease endif ifeq ($(shell expr "$(uname_R)" : '[15]\.'),2) NO_STRLCPY = YesPlease @@ -327,7 +332,6 @@ ifeq ($(uname_S),Windows) NO_IPV6 = YesPlease NO_UNIX_SOCKETS = YesPlease NO_SETENV = YesPlease - NO_UNSETENV = YesPlease NO_STRCASESTR = YesPlease NO_STRLCPY = YesPlease NO_MEMMEM = YesPlease @@ -480,7 +484,6 @@ ifneq (,$(findstring MINGW,$(uname_S))) NO_SYMLINK_HEAD = YesPlease NO_UNIX_SOCKETS = YesPlease NO_SETENV = YesPlease - NO_UNSETENV = YesPlease NO_STRCASESTR = YesPlease NO_STRLCPY = YesPlease NO_MEMMEM = YesPlease diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash index 7a6e1d797a..06bf262087 100644 --- a/contrib/completion/git-completion.bash +++ b/contrib/completion/git-completion.bash @@ -1621,12 +1621,33 @@ _git_pull () __git_push_recurse_submodules="check on-demand" +__git_complete_force_with_lease () +{ + local cur_=$1 + + case "$cur_" in + --*=) + ;; + *:*) + __gitcomp_nl "$(__git_refs)" "" "${cur_#*:}" + ;; + *) + __gitcomp_nl "$(__git_refs)" "" "$cur_" + ;; + esac +} + _git_push () { case "$prev" in --repo) __gitcomp_nl "$(__git_remotes)" return + ;; + --recurse-submodules) + __gitcomp "$__git_push_recurse_submodules" + return + ;; esac case "$cur" in --repo=*) @@ -1637,11 +1658,16 @@ _git_push () __gitcomp "$__git_push_recurse_submodules" "" "${cur##--recurse-submodules=}" return ;; + --force-with-lease=*) + __git_complete_force_with_lease "${cur##--force-with-lease=}" + return + ;; --*) __gitcomp " --all --mirror --tags --dry-run --force --verbose + --quiet --prune --delete --follow-tags --receive-pack= --repo= --set-upstream - --recurse-submodules= + --force-with-lease --force-with-lease= --recurse-submodules= " return ;; diff --git a/contrib/completion/git-prompt.sh b/contrib/completion/git-prompt.sh index 9d684b10a6..c5473dc8db 100644 --- a/contrib/completion/git-prompt.sh +++ b/contrib/completion/git-prompt.sh @@ -468,7 +468,8 @@ __git_ps1 () fi fi if [ -n "${GIT_PS1_SHOWSTASHSTATE-}" ] && - [ -r "$g/refs/stash" ]; then + git rev-parse --verify --quiet refs/stash >/dev/null + then s="$" fi diff --git a/contrib/convert-grafts-to-replace-refs.sh b/contrib/convert-grafts-to-replace-refs.sh new file mode 100755 index 0000000000..0cbc917b8c --- /dev/null +++ b/contrib/convert-grafts-to-replace-refs.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +# You should execute this script in the repository where you +# want to convert grafts to replace refs. + +GRAFTS_FILE="${GIT_DIR:-.git}/info/grafts" + +. $(git --exec-path)/git-sh-setup + +test -f "$GRAFTS_FILE" || die "Could not find graft file: '$GRAFTS_FILE'" + +grep '^[^# ]' "$GRAFTS_FILE" | +while read definition +do + if test -n "$definition" + then + echo "Converting: $definition" + git replace --graft $definition || + die "Conversion failed for: $definition" + fi +done + +mv "$GRAFTS_FILE" "$GRAFTS_FILE.bak" || + die "Could not rename '$GRAFTS_FILE' to '$GRAFTS_FILE.bak'" + +echo "Success!" +echo "All the grafts in '$GRAFTS_FILE' have been converted to replace refs!" +echo "The grafts file '$GRAFTS_FILE' has been renamed: '$GRAFTS_FILE.bak'" diff --git a/contrib/convert-objects/git-convert-objects.txt b/contrib/convert-objects/git-convert-objects.txt index 0565d83fc4..f871880cfb 100644 --- a/contrib/convert-objects/git-convert-objects.txt +++ b/contrib/convert-objects/git-convert-objects.txt @@ -26,4 +26,4 @@ Documentation by David Greaves, Junio C Hamano and the git-list . GIT --- -Part of the gitlink:git[7] suite +Part of the linkgit:git[7] suite diff --git a/contrib/gitview/gitview.txt b/contrib/gitview/gitview.txt index 9e12f97842..7b5f9002b9 100644 --- a/contrib/gitview/gitview.txt +++ b/contrib/gitview/gitview.txt @@ -28,7 +28,7 @@ OPTIONS :: - All the valid option for gitlink:git-rev-list[1]. + All the valid option for linkgit:git-rev-list[1]. Key Bindings ------------ diff --git a/dir.c b/dir.c index fcb68729b1..bd274a73f1 100644 --- a/dir.c +++ b/dir.c @@ -1507,12 +1507,16 @@ int dir_inside_of(const char *subdir, const char *dir) int is_inside_dir(const char *dir) { - char cwd[PATH_MAX]; + char *cwd; + int rc; + if (!dir) return 0; - if (!getcwd(cwd, sizeof(cwd))) - die_errno("can't find the current directory"); - return dir_inside_of(cwd, dir) >= 0; + + cwd = xgetcwd(); + rc = (dir_inside_of(cwd, dir) >= 0); + free(cwd); + return rc; } int is_empty_dir(const char *path) diff --git a/exec_cmd.c b/exec_cmd.c index 125fa6fabf..698e7526c4 100644 --- a/exec_cmd.c +++ b/exec_cmd.c @@ -86,11 +86,7 @@ const char *git_exec_path(void) static void add_path(struct strbuf *out, const char *path) { if (path && *path) { - if (is_absolute_path(path)) - strbuf_addstr(out, path); - else - strbuf_addstr(out, absolute_path(path)); - + strbuf_add_absolute_path(out, path); strbuf_addch(out, PATH_SEP); } } diff --git a/git-compat-util.h b/git-compat-util.h index 26e92f19cf..d675c89603 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -264,19 +264,35 @@ extern char *gitbasename(char *); #endif #ifndef has_dos_drive_prefix -#define has_dos_drive_prefix(path) 0 +static inline int git_has_dos_drive_prefix(const char *path) +{ + return 0; +} +#define has_dos_drive_prefix git_has_dos_drive_prefix #endif -#ifndef offset_1st_component -#define offset_1st_component(path) (is_dir_sep((path)[0])) +#ifndef is_dir_sep +static inline int git_is_dir_sep(int c) +{ + return c == '/'; +} +#define is_dir_sep git_is_dir_sep #endif -#ifndef is_dir_sep -#define is_dir_sep(c) ((c) == '/') +#ifndef offset_1st_component +static inline int git_offset_1st_component(const char *path) +{ + return is_dir_sep(path[0]); +} +#define offset_1st_component git_offset_1st_component #endif #ifndef find_last_dir_sep -#define find_last_dir_sep(path) strrchr(path, '/') +static inline char *git_find_last_dir_sep(const char *path) +{ + return strrchr(path, '/'); +} +#define find_last_dir_sep git_find_last_dir_sep #endif #if defined(__HP_cc) && (__HP_cc >= 61000) @@ -607,6 +623,7 @@ extern int xmkstemp(char *template); extern int xmkstemp_mode(char *template, int mode); extern int odb_mkstemp(char *template, size_t limit, const char *pattern); extern int odb_pack_keep(char *name, size_t namesz, const unsigned char *sha1); +extern char *xgetcwd(void); static inline size_t xsize_t(off_t len) { @@ -731,17 +748,6 @@ void git_qsort(void *base, size_t nmemb, size_t size, #endif #endif -#if defined(__GNUC__) && defined(__x86_64__) -#include -/* - * This is the system memory page size; it's used so that we can read - * outside the bounds of an allocation without segfaulting. - */ -#ifndef PAGE_SIZE -#define PAGE_SIZE 4096 -#endif -#endif - #ifdef UNRELIABLE_FSTAT #define fstat_is_reliable() 0 #else diff --git a/git-rebase--am.sh b/git-rebase--am.sh index ca20e1e66f..f923732333 100644 --- a/git-rebase--am.sh +++ b/git-rebase--am.sh @@ -29,7 +29,13 @@ skip) ;; esac -test -n "$rebase_root" && root_flag=--root +if test -z "$rebase_root" + # this is now equivalent to ! -z "$upstream" +then + revisions=$upstream...$orig_head +else + revisions=$onto...$orig_head +fi ret=0 if test -n "$keep_empty" @@ -38,14 +44,17 @@ then # empty commits and even if it didn't the format doesn't really lend # itself well to recording empty patches. fortunately, cherry-pick # makes this easy - git cherry-pick ${gpg_sign_opt:+"$gpg_sign_opt"} --allow-empty "$revisions" + git cherry-pick ${gpg_sign_opt:+"$gpg_sign_opt"} --allow-empty \ + --right-only "$revisions" \ + ${restrict_revision+^$restrict_revision} ret=$? else rm -f "$GIT_DIR/rebased-patches" - git format-patch -k --stdout --full-index --ignore-if-in-upstream \ + git format-patch -k --stdout --full-index --cherry-pick --right-only \ --src-prefix=a/ --dst-prefix=b/ --no-renames --no-cover-letter \ - $root_flag "$revisions" >"$GIT_DIR/rebased-patches" + "$revisions" ${restrict_revision+^$restrict_revision} \ + >"$GIT_DIR/rebased-patches" ret=$? if test 0 != $ret diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 7e1eda0088..b64dd28acf 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -963,7 +963,7 @@ else fi git rev-list $merges_option --pretty=oneline --abbrev-commit \ --abbrev=7 --reverse --left-right --topo-order \ - $revisions | \ + $revisions ${restrict_revision+^$restrict_revision} | \ sed -n "s/^>//p" | while read -r shortsha1 rest do diff --git a/git-rebase.sh b/git-rebase.sh index 06c810b64f..55da9db818 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -59,6 +59,7 @@ If you prefer to skip this patch, run "git rebase --skip" instead. To check out the original branch and stop rebasing, run "git rebase --abort".') " unset onto +unset restrict_revision cmd= strategy= strategy_opts= @@ -546,7 +547,7 @@ then "${switch_to:-HEAD}") if test -n "$new_upstream" then - upstream=$new_upstream + restrict_revision=$new_upstream fi fi @@ -572,7 +573,7 @@ require_clean_work_tree "rebase" "$(gettext "Please commit or stash them.")" # and if this is not an interactive rebase. mb=$(git merge-base "$onto" "$orig_head") if test "$type" != interactive && test "$upstream" = "$onto" && - test "$mb" = "$onto" && + test "$mb" = "$onto" && test -z "$restrict_revision" && # linear history? ! (git rev-list --parents "$onto".."$orig_head" | sane_grep " .* ") > /dev/null then @@ -626,7 +627,7 @@ if test -n "$rebase_root" then revisions="$onto..$orig_head" else - revisions="$upstream..$orig_head" + revisions="${restrict_revision-$upstream}..$orig_head" fi run_specific_rebase diff --git a/git-stash.sh b/git-stash.sh index bcc757b390..9c1ba8e4b8 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -297,7 +297,7 @@ have_stash () { list_stash () { have_stash || return 0 - git log --format="%gd: %gs" -g "$@" $ref_stash -- + git log --format="%gd: %gs" -g --first-parent -m "$@" $ref_stash -- } show_stash () { diff --git a/git.c b/git.c index 9c49519831..210f1ae9d0 100644 --- a/git.c +++ b/git.c @@ -20,7 +20,7 @@ const char git_more_info_string[] = static struct startup_info git_startup_info; static int use_pager = -1; -static char orig_cwd[PATH_MAX]; +static char *orig_cwd; static const char *env_names[] = { GIT_DIR_ENVIRONMENT, GIT_WORK_TREE_ENVIRONMENT, @@ -36,8 +36,7 @@ static void save_env(void) if (saved_environment) return; saved_environment = 1; - if (!getcwd(orig_cwd, sizeof(orig_cwd))) - die_errno("cannot getcwd"); + orig_cwd = xgetcwd(); for (i = 0; i < ARRAY_SIZE(env_names); i++) { orig_env[i] = getenv(env_names[i]); if (orig_env[i]) @@ -48,8 +47,9 @@ static void save_env(void) static void restore_env(void) { int i; - if (*orig_cwd && chdir(orig_cwd)) + if (orig_cwd && chdir(orig_cwd)) die_errno("could not move to %s", orig_cwd); + free(orig_cwd); for (i = 0; i < ARRAY_SIZE(env_names); i++) { if (orig_env[i]) setenv(env_names[i], orig_env[i], 1); @@ -161,9 +161,10 @@ static int handle_options(const char ***argv, int *argc, int *envchanged) if (envchanged) *envchanged = 1; } else if (!strcmp(cmd, "--bare")) { - static char git_dir[PATH_MAX+1]; + char *cwd = xgetcwd(); is_bare_repository_cfg = 1; - setenv(GIT_DIR_ENVIRONMENT, getcwd(git_dir, sizeof(git_dir)), 0); + setenv(GIT_DIR_ENVIRONMENT, cwd, 0); + free(cwd); setenv(GIT_IMPLICIT_WORK_TREE_ENVIRONMENT, "0", 1); if (envchanged) *envchanged = 1; diff --git a/gitk-git/gitk b/gitk-git/gitk index c8df35dee5..3520bdaebc 100755 --- a/gitk-git/gitk +++ b/gitk-git/gitk @@ -2594,6 +2594,9 @@ proc makewindow {} { bind $ctext $ctxbut {pop_diff_menu %W %X %Y %x %y} bind $ctext {focus %W} bind $ctext <> rehighlight_search_results + for {set i 1} {$i < 10} {incr i} { + bind . <$M1B-Key-$i> [list go_to_parent $i] + } set maincursor [. cget -cursor] set textcursor [$ctext cget -cursor] @@ -3017,6 +3020,7 @@ proc keys {} { [mc ", n, j Move down one commit"] [mc ", z, h Go back in history list"] [mc ", x, l Go forward in history list"] +[mc "<%s-n> Go to n-th parent of current commit in history list" $M1T] [mc " Move up one page in commit list"] [mc " Move down one page in commit list"] [mc "<%s-Home> Scroll to top of commit list" $M1T] @@ -7497,6 +7501,14 @@ proc goforw {} { } } +proc go_to_parent {i} { + global parents curview targetid + set ps $parents($curview,$targetid) + if {[llength $ps] >= $i} { + selbyid [lindex $ps [expr $i - 1]] + } +} + proc gettree {id} { global treefilelist treeidlist diffids diffmergeid treepending global nullid nullid2 diff --git a/gitk-git/po/bg.po b/gitk-git/po/bg.po index 782397e6b5..f86a161129 100644 --- a/gitk-git/po/bg.po +++ b/gitk-git/po/bg.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: gitk master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-01-26 15:47-0800\n" -"PO-Revision-Date: 2014-01-08 08:03+0200\n" +"POT-Creation-Date: 2014-08-03 11:17+0300\n" +"PO-Revision-Date: 2014-07-28 07:32+0300\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -22,11 +22,11 @@ msgstr "" msgid "Couldn't get list of unmerged files:" msgstr "Списъкът с неслети файлове не може да бъде получен:" -#: gitk:212 gitk:2353 +#: gitk:212 gitk:2379 msgid "Color words" msgstr "Оцветяване на думите" -#: gitk:217 gitk:2353 gitk:8103 gitk:8136 +#: gitk:217 gitk:2379 gitk:8155 gitk:8188 msgid "Markup words" msgstr "Отбелязване на думите" @@ -40,13 +40,16 @@ msgstr "Грешка при изпълнение на командата с „- #: gitk:391 msgid "No files selected: --merge specified but no files are unmerged." -msgstr "Не са избрани файлове — указана е опцията „--merge“, но няма неслети файлове." +msgstr "" +"Не са избрани файлове — указана е опцията „--merge“, но няма неслети файлове." #: gitk:394 msgid "" "No files selected: --merge specified but no unmerged files are within file " "limit." -msgstr "Не са избрани файлове — указана е опцията „--merge“, но няма неслети файлове в ограниченията." +msgstr "" +"Не са избрани файлове — указана е опцията „--merge“, но няма неслети файлове " +"в ограниченията." #: gitk:416 gitk:564 msgid "Error executing git log:" @@ -56,11 +59,11 @@ msgstr "Грешка при изпълнение на „git log“:" msgid "Reading" msgstr "Прочитане" -#: gitk:494 gitk:4429 +#: gitk:494 gitk:4470 msgid "Reading commits..." msgstr "Прочитане на подаванията…" -#: gitk:497 gitk:1635 gitk:4432 +#: gitk:497 gitk:1635 gitk:4473 msgid "No commits selected" msgstr "Не са избрани подавания" @@ -76,12 +79,12 @@ msgstr "Липсва информация за подавания" msgid "mc" msgstr "mc" -#: gitk:1930 gitk:4222 gitk:9552 gitk:11122 gitk:11401 +#: gitk:1930 gitk:4263 gitk:9604 gitk:11174 gitk:11453 msgid "OK" msgstr "Добре" -#: gitk:1932 gitk:4224 gitk:9079 gitk:9158 gitk:9274 gitk:9323 gitk:9554 -#: gitk:11123 gitk:11402 +#: gitk:1932 gitk:4265 gitk:9131 gitk:9210 gitk:9326 gitk:9375 gitk:9606 +#: gitk:11175 gitk:11454 msgid "Cancel" msgstr "Отказ" @@ -103,7 +106,7 @@ msgstr "Изброяване на указателите" #: gitk:2072 msgid "Start git gui" -msgstr "Стартиране на git gui" +msgstr "Стартиране на „git gui“" #: gitk:2074 msgid "Quit" @@ -137,11 +140,11 @@ msgstr "Изтриване на изгледа" msgid "All files" msgstr "Всички файлове" -#: gitk:2081 gitk:3975 +#: gitk:2081 gitk:4016 msgid "View" msgstr "Изглед" -#: gitk:2091 gitk:2101 gitk:2945 +#: gitk:2091 gitk:2101 gitk:2976 msgid "About gitk" msgstr "Относно gitk" @@ -153,7 +156,7 @@ msgstr "Клавишни комбинации" msgid "Help" msgstr "Помощ" -#: gitk:2183 gitk:8535 +#: gitk:2183 gitk:8587 msgid "SHA1 ID:" msgstr "SHA1:" @@ -165,708 +168,706 @@ msgstr "Ред" msgid "Find" msgstr "Търсене" -#: gitk:2266 -msgid "next" -msgstr "следващо" - -#: gitk:2267 -msgid "prev" -msgstr "предишно" - -#: gitk:2268 +#: gitk:2293 msgid "commit" msgstr "подаване" -#: gitk:2271 gitk:2273 gitk:4590 gitk:4613 gitk:4637 gitk:6653 gitk:6725 -#: gitk:6810 +#: gitk:2297 gitk:2299 gitk:4631 gitk:4654 gitk:4678 gitk:6698 gitk:6770 +#: gitk:6855 msgid "containing:" msgstr "съдържащо:" -#: gitk:2274 gitk:3457 gitk:3462 gitk:4666 +#: gitk:2300 gitk:3488 gitk:3493 gitk:4707 msgid "touching paths:" msgstr "засягащо пътищата:" -#: gitk:2275 gitk:4680 +#: gitk:2301 gitk:4721 msgid "adding/removing string:" msgstr "добавящо/премахващо низ" -#: gitk:2276 gitk:4682 +#: gitk:2302 gitk:4723 msgid "changing lines matching:" msgstr "променящо редове напасващи:" -#: gitk:2285 gitk:2287 gitk:4669 +#: gitk:2311 gitk:2313 gitk:4710 msgid "Exact" msgstr "Точно" -#: gitk:2287 gitk:4757 gitk:6621 +#: gitk:2313 gitk:4798 gitk:6666 msgid "IgnCase" msgstr "Без регистър" -#: gitk:2287 gitk:4639 gitk:4755 gitk:6617 +#: gitk:2313 gitk:4680 gitk:4796 gitk:6662 msgid "Regexp" -msgstr "Рег. изр." +msgstr "Рег. израз" -#: gitk:2289 gitk:2290 gitk:4777 gitk:4807 gitk:4814 gitk:6746 gitk:6814 +#: gitk:2315 gitk:2316 gitk:4818 gitk:4848 gitk:4855 gitk:6791 gitk:6859 msgid "All fields" msgstr "Всички полета" -#: gitk:2290 gitk:4774 gitk:4807 gitk:6684 +#: gitk:2316 gitk:4815 gitk:4848 gitk:6729 msgid "Headline" msgstr "Първи ред" -#: gitk:2291 gitk:4774 gitk:6684 gitk:6814 gitk:7283 +#: gitk:2317 gitk:4815 gitk:6729 gitk:6859 gitk:7332 msgid "Comments" msgstr "Коментари" -#: gitk:2291 gitk:4774 gitk:4779 gitk:4814 gitk:6684 gitk:7218 gitk:8713 -#: gitk:8728 +#: gitk:2317 gitk:4815 gitk:4820 gitk:4855 gitk:6729 gitk:7267 gitk:8765 +#: gitk:8780 msgid "Author" msgstr "Автор" -#: gitk:2291 gitk:4774 gitk:6684 gitk:7220 +#: gitk:2317 gitk:4815 gitk:6729 gitk:7269 msgid "Committer" msgstr "Подаващ" -#: gitk:2322 +#: gitk:2348 msgid "Search" msgstr "Търсене" -#: gitk:2330 +#: gitk:2356 msgid "Diff" msgstr "Разлики" -#: gitk:2332 +#: gitk:2358 msgid "Old version" msgstr "Стара версия" -#: gitk:2334 +#: gitk:2360 msgid "New version" msgstr "Нова версия" -#: gitk:2336 +#: gitk:2362 msgid "Lines of context" msgstr "Контекст в редове" -#: gitk:2346 +#: gitk:2372 msgid "Ignore space change" msgstr "Празните знаци без значение" -#: gitk:2350 gitk:2352 gitk:7842 gitk:8089 +#: gitk:2376 gitk:2378 gitk:7894 gitk:8141 msgid "Line diff" msgstr "Поредови разлики" -#: gitk:2417 +#: gitk:2443 msgid "Patch" msgstr "Кръпка" -#: gitk:2419 +#: gitk:2445 msgid "Tree" msgstr "Дърво" -#: gitk:2577 gitk:2597 +#: gitk:2604 gitk:2624 msgid "Diff this -> selected" msgstr "Разлики между това и избраното" -#: gitk:2578 gitk:2598 +#: gitk:2605 gitk:2625 msgid "Diff selected -> this" msgstr "Разлики между избраното и това" -#: gitk:2579 gitk:2599 +#: gitk:2606 gitk:2626 msgid "Make patch" msgstr "Създаване на кръпка" -#: gitk:2580 gitk:9137 +#: gitk:2607 gitk:9189 msgid "Create tag" msgstr "Създаване на етикет" -#: gitk:2581 gitk:9254 +#: gitk:2608 gitk:9306 msgid "Write commit to file" msgstr "Запазване на подаването във файл" -#: gitk:2582 gitk:9311 +#: gitk:2609 gitk:9363 msgid "Create new branch" msgstr "Създаване на нов клон" -#: gitk:2583 +#: gitk:2610 msgid "Cherry-pick this commit" msgstr "Отбиране на това подаване" -#: gitk:2584 +#: gitk:2611 msgid "Reset HEAD branch to here" msgstr "Привеждане на върха на клона към текущото подаване" -#: gitk:2585 +#: gitk:2612 msgid "Mark this commit" msgstr "Отбелязване на това подаване" -#: gitk:2586 +#: gitk:2613 msgid "Return to mark" msgstr "Връщане към отбелязаното подаване" -#: gitk:2587 +#: gitk:2614 msgid "Find descendant of this and mark" msgstr "Откриване и отбелязване на наследниците" -#: gitk:2588 +#: gitk:2615 msgid "Compare with marked commit" msgstr "Сравнение с отбелязаното подаване" -#: gitk:2589 gitk:2600 +#: gitk:2616 gitk:2627 msgid "Diff this -> marked commit" msgstr "Разлики между това и отбелязаното" -#: gitk:2590 gitk:2601 +#: gitk:2617 gitk:2628 msgid "Diff marked commit -> this" msgstr "Разлики между отбелязаното и това" -#: gitk:2591 +#: gitk:2618 msgid "Revert this commit" msgstr "Отмяна на това подаване" -#: gitk:2607 +#: gitk:2634 msgid "Check out this branch" msgstr "Изтегляне на този клон" -#: gitk:2608 +#: gitk:2635 msgid "Remove this branch" msgstr "Изтриване на този клон" -#: gitk:2615 +#: gitk:2642 msgid "Highlight this too" msgstr "Отбелязване и на това" -#: gitk:2616 +#: gitk:2643 msgid "Highlight this only" msgstr "Отбелязване само на това" -#: gitk:2617 +#: gitk:2644 msgid "External diff" msgstr "Външна програма за разлики" -#: gitk:2618 +#: gitk:2645 msgid "Blame parent commit" msgstr "Анотиране на родителското подаване" -#: gitk:2625 +#: gitk:2652 msgid "Show origin of this line" msgstr "Показване на произхода на този ред" -#: gitk:2626 +#: gitk:2653 msgid "Run git gui blame on this line" msgstr "Изпълнение на „git gui blame“ върху този ред" -#: gitk:2947 +#: gitk:2978 msgid "" "\n" "Gitk - a commit viewer for git\n" "\n" -"Copyright © 2005-2011 Paul Mackerras\n" +"Copyright © 2005-2014 Paul Mackerras\n" "\n" "Use and redistribute under the terms of the GNU General Public License" msgstr "" "\n" "Gitk — визуализация на подаванията в Git\n" "\n" -"Авторски права: © 2005-2011 Paul Mackerras\n" +"Авторски права: © 2005-2014 Paul Mackerras\n" "\n" "Използвайте и разпространявайте при условията на ОПЛ на ГНУ" -#: gitk:2955 gitk:3020 gitk:9738 +#: gitk:2986 gitk:3051 gitk:9790 msgid "Close" msgstr "Затваряне" -#: gitk:2976 +#: gitk:3007 msgid "Gitk key bindings" msgstr "Клавишни комбинации" -#: gitk:2979 +#: gitk:3010 msgid "Gitk key bindings:" msgstr "Клавишни комбинации:" -#: gitk:2981 +#: gitk:3012 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tСпиране на програмата" -#: gitk:2982 +#: gitk:3013 #, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-W>\t\tЗатваряне на прозореца" -#: gitk:2983 +#: gitk:3014 msgid "\t\tMove to first commit" msgstr "\t\tКъм първото подаване" -#: gitk:2984 +#: gitk:3015 msgid "\t\tMove to last commit" msgstr "\t\tКъм последното подаване" -#: gitk:2985 +#: gitk:3016 msgid ", p, k\tMove up one commit" msgstr ", p, k\tЕдно подаване нагоре" -#: gitk:2986 +#: gitk:3017 msgid ", n, j\tMove down one commit" msgstr ", n, j\tЕдно подаване надолу" -#: gitk:2987 +#: gitk:3018 msgid ", z, h\tGo back in history list" msgstr ", z, h\tНазад в историята" -#: gitk:2988 +#: gitk:3019 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tНапред в историята" -#: gitk:2989 +#: gitk:3020 msgid "\tMove up one page in commit list" -msgstr "\tЕдна страница нагоре в списъка с подаванията" +msgstr "\tСтраница нагоре в списъка с подаванията" -#: gitk:2990 +#: gitk:3021 msgid "\tMove down one page in commit list" -msgstr "\tЕдна страница надолу в списъка с подаванията" +msgstr "\tСтраница надолу в списъка с подаванията" -#: gitk:2991 +#: gitk:3022 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tКъм началото на списъка с подаванията" -#: gitk:2992 +#: gitk:3023 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tКъм края на списъка с подаванията" -#: gitk:2993 +#: gitk:3024 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" -msgstr "<%s-Up>\tПридвижване на списъка с подавания с един ред нагоре" +msgstr "<%s-Up>\tРед нагоре в списъка с подавания" -#: gitk:2994 +#: gitk:3025 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" -msgstr "<%s-Down>\tПридвижване на списъка с подавания с един ред надолу" +msgstr "<%s-Down>\tРед надолу в списъка с подавания" -#: gitk:2995 +#: gitk:3026 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" -msgstr "<%s-PageUp>\tПридвижване на списъка с подавания с една страница нагоре" +msgstr "<%s-PageUp>\tСтраница нагоре в списъка с подавания" -#: gitk:2996 +#: gitk:3027 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" -msgstr "<%s-PageDown>\tПридвижване на списъка с подавания с една страница надолу" +msgstr "<%s-PageDown>\tСтраница надолу в списъка с подавания" -#: gitk:2997 +#: gitk:3028 msgid "\tFind backwards (upwards, later commits)" msgstr "\tТърсене назад (визуално нагоре, исторически — последващи)" -#: gitk:2998 +#: gitk:3029 msgid "\tFind forwards (downwards, earlier commits)" -msgstr "\tТърсене напред (визуално надолу, исторически — предхождащи)" +msgstr "" +"\tТърсене напред (визуално надолу, исторически — предхождащи)" -#: gitk:2999 +#: gitk:3030 msgid ", b\tScroll diff view up one page" -msgstr ", b\tПридвижване на изгледа за разлики една страница нагоре" +msgstr ", b\tСтраница нагоре в изгледа за разлики" -#: gitk:3000 +#: gitk:3031 msgid "\tScroll diff view up one page" -msgstr "\tПридвижване на изгледа за разлики една страница нагоре" +msgstr "\tСтраница надолу в изгледа за разлики" -#: gitk:3001 +#: gitk:3032 msgid "\t\tScroll diff view down one page" -msgstr "\t\tПридвижване на изгледа за разлики една страница надолу" +msgstr "\t\tСтраница надолу в изгледа за разлики" -#: gitk:3002 +#: gitk:3033 msgid "u\t\tScroll diff view up 18 lines" -msgstr "u\t\tПридвижване на изгледа за разлики 18 реда нагоре" +msgstr "u\t\t18 реда нагоре в изгледа за разлики" -#: gitk:3003 +#: gitk:3034 msgid "d\t\tScroll diff view down 18 lines" -msgstr "d\t\tПридвижване на изгледа за разлики 18 реда надолу" +msgstr "d\t\t18 реда надолу в изгледа за разлики" -#: gitk:3004 +#: gitk:3035 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tТърсене" -#: gitk:3005 +#: gitk:3036 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tКъм следващата поява" -#: gitk:3006 +#: gitk:3037 msgid "\tMove to next find hit" msgstr "\tКъм следващата поява" -#: gitk:3007 +#: gitk:3038 msgid "/\t\tFocus the search box" msgstr "/\t\tФокус върху полето за търсене" -#: gitk:3008 +#: gitk:3039 msgid "?\t\tMove to previous find hit" msgstr "?\t\tКъм предишната поява" -#: gitk:3009 +#: gitk:3040 msgid "f\t\tScroll diff view to next file" -msgstr "f\t\tПридвижване на изгледа за разлики към следващия ред" +msgstr "f\t\tСледващ файл в изгледа за разлики" -#: gitk:3010 +#: gitk:3041 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tТърсене на следващата поява в изгледа за разлики" -#: gitk:3011 +#: gitk:3042 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tТърсене на предишната поява в изгледа за разлики" -#: gitk:3012 +#: gitk:3043 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-KP+>\tПо-голям размер на шрифта" -#: gitk:3013 +#: gitk:3044 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-plus>\tПо-голям размер на шрифта" -#: gitk:3014 +#: gitk:3045 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-KP->\tПо-малък размер на шрифта" -#: gitk:3015 +#: gitk:3046 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-minus>\tПо-малък размер на шрифта" -#: gitk:3016 +#: gitk:3047 msgid "\t\tUpdate" msgstr "\t\tОбновяване" -#: gitk:3471 gitk:3480 +#: gitk:3512 gitk:3521 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Грешка при създаването на временната директория „%s“:" -#: gitk:3493 +#: gitk:3534 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Грешка при получаването на „%s“ от %s:" -#: gitk:3556 +#: gitk:3597 msgid "command failed:" msgstr "неуспешно изпълнение на команда:" -#: gitk:3705 +#: gitk:3746 msgid "No such commit" msgstr "Такова подаване няма" -#: gitk:3719 +#: gitk:3760 msgid "git gui blame: command failed:" -msgstr "git gui blame: неуспешно изпълнение на команда:" +msgstr "„git gui blame“: неуспешно изпълнение на команда:" -#: gitk:3750 +#: gitk:3791 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Върхът за сливане не може да бъде прочетен: %s" -#: gitk:3758 +#: gitk:3799 #, tcl-format msgid "Error reading index: %s" msgstr "Грешка при прочитане на индекса: %s" -#: gitk:3783 +#: gitk:3824 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "Командата „git blame“ не може да бъде стартирана: %s" -#: gitk:3786 gitk:6652 +#: gitk:3827 gitk:6697 msgid "Searching" msgstr "Търсене" -#: gitk:3818 +#: gitk:3859 #, tcl-format msgid "Error running git blame: %s" msgstr "Грешка при изпълнението на „git blame“: %s" -#: gitk:3846 +#: gitk:3887 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "Този ред идва от подаването %s, което не е в изгледа" -#: gitk:3860 +#: gitk:3901 msgid "External diff viewer failed:" msgstr "Неуспешно изпълнение на външната програма за разлики:" -#: gitk:3978 +#: gitk:4019 msgid "Gitk view definition" msgstr "Дефиниция на изглед в Gitk" -#: gitk:3982 +#: gitk:4023 msgid "Remember this view" msgstr "Запазване на този изглед" -#: gitk:3983 +#: gitk:4024 msgid "References (space separated list):" msgstr "Указатели (списък с разделител интервал):" -#: gitk:3984 +#: gitk:4025 msgid "Branches & tags:" msgstr "Клони и етикети:" -#: gitk:3985 +#: gitk:4026 msgid "All refs" msgstr "Всички указатели" -#: gitk:3986 +#: gitk:4027 msgid "All (local) branches" msgstr "Всички (локални) клони" -#: gitk:3987 +#: gitk:4028 msgid "All tags" msgstr "Всички етикети" -#: gitk:3988 +#: gitk:4029 msgid "All remote-tracking branches" msgstr "Всички следящи клони" -#: gitk:3989 +#: gitk:4030 msgid "Commit Info (regular expressions):" msgstr "Информация за подаване (рег. изр.):" -#: gitk:3990 +#: gitk:4031 msgid "Author:" msgstr "Автор:" -#: gitk:3991 +#: gitk:4032 msgid "Committer:" msgstr "Подал:" -#: gitk:3992 +#: gitk:4033 msgid "Commit Message:" msgstr "Съобщение при подаване:" -#: gitk:3993 +#: gitk:4034 msgid "Matches all Commit Info criteria" msgstr "Съвпадение по коя да е информация за подаването" -#: gitk:3994 +#: gitk:4035 msgid "Changes to Files:" msgstr "Промени по файловете:" -#: gitk:3995 +#: gitk:4036 msgid "Fixed String" msgstr "Дословен низ" -#: gitk:3996 +#: gitk:4037 msgid "Regular Expression" msgstr "Регулярен израз" -#: gitk:3997 +#: gitk:4038 msgid "Search string:" msgstr "Низ за търсене:" -#: gitk:3998 +#: gitk:4039 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" -msgstr "Дата на подаване („2 weeks ago“ (преди 2 седмици), „2009-03-17 15:27:38“, „March 17, 2009 15:27:38“):" +msgstr "" +"Дата на подаване („2 weeks ago“ (преди 2 седмици), „2009-03-17 15:27:38“, " +"„March 17, 2009 15:27:38“):" -#: gitk:3999 +#: gitk:4040 msgid "Since:" msgstr "От:" -#: gitk:4000 +#: gitk:4041 msgid "Until:" msgstr "До:" -#: gitk:4001 +#: gitk:4042 msgid "Limit and/or skip a number of revisions (positive integer):" -msgstr "Ограничаване и/или прескачане на определен брой версии (неотрицателно цяло число):" +msgstr "" +"Ограничаване и/или прескачане на определен брой версии (неотрицателно цяло " +"число):" -#: gitk:4002 +#: gitk:4043 msgid "Number to show:" msgstr "Брой показани:" -#: gitk:4003 +#: gitk:4044 msgid "Number to skip:" msgstr "Брой прескочени:" -#: gitk:4004 +#: gitk:4045 msgid "Miscellaneous options:" msgstr "Разни:" -#: gitk:4005 +#: gitk:4046 msgid "Strictly sort by date" msgstr "Подреждане по дата" -#: gitk:4006 +#: gitk:4047 msgid "Mark branch sides" msgstr "Отбелязване на страните по клона" -#: gitk:4007 +#: gitk:4048 msgid "Limit to first parent" -msgstr "Само първият родител" +msgstr "Само първия родител" -#: gitk:4008 +#: gitk:4049 msgid "Simple history" msgstr "Опростена история" -#: gitk:4009 +#: gitk:4050 msgid "Additional arguments to git log:" msgstr "Допълнителни аргументи към „git log“:" -#: gitk:4010 +#: gitk:4051 msgid "Enter files and directories to include, one per line:" msgstr "Въведете файловете и директориите за включване, по елемент на ред" -#: gitk:4011 +#: gitk:4052 msgid "Command to generate more commits to include:" -msgstr "Команда за генерирането на допълнителни подавания, които да бъдат включени:" +msgstr "" +"Команда за генерирането на допълнителни подавания, които да бъдат включени:" -#: gitk:4135 +#: gitk:4176 msgid "Gitk: edit view" msgstr "Gitk: редактиране на изглед" -#: gitk:4143 +#: gitk:4184 msgid "-- criteria for selecting revisions" msgstr "— критерии за избор на версии" -#: gitk:4148 +#: gitk:4189 msgid "View Name" msgstr "Име на изглед" -#: gitk:4223 +#: gitk:4264 msgid "Apply (F5)" msgstr "Прилагане (F5)" -#: gitk:4261 +#: gitk:4302 msgid "Error in commit selection arguments:" msgstr "Грешка в аргументите за избор на подавания:" -#: gitk:4314 gitk:4366 gitk:4827 gitk:4841 gitk:6107 gitk:12184 gitk:12185 +#: gitk:4355 gitk:4407 gitk:4868 gitk:4882 gitk:6152 gitk:12281 gitk:12282 msgid "None" msgstr "Няма" -#: gitk:4924 gitk:4929 +#: gitk:4965 gitk:4970 msgid "Descendant" msgstr "Наследник" -#: gitk:4925 +#: gitk:4966 msgid "Not descendant" msgstr "Не е наследник" -#: gitk:4932 gitk:4937 +#: gitk:4973 gitk:4978 msgid "Ancestor" msgstr "Предшественик" -#: gitk:4933 +#: gitk:4974 msgid "Not ancestor" msgstr "Не е предшественик" -#: gitk:5223 +#: gitk:5268 msgid "Local changes checked in to index but not committed" msgstr "Локални промени добавени към индекса, но неподадени" -#: gitk:5259 +#: gitk:5304 msgid "Local uncommitted changes, not checked in to index" msgstr "Локални промени извън индекса" -#: gitk:7032 +#: gitk:7077 msgid "and many more" msgstr "и още много" -#: gitk:7035 +#: gitk:7080 msgid "many" msgstr "много" -#: gitk:7222 +#: gitk:7271 msgid "Tags:" msgstr "Етикети:" -#: gitk:7239 gitk:7245 gitk:8708 +#: gitk:7288 gitk:7294 gitk:8760 msgid "Parent" msgstr "Родител" -#: gitk:7250 +#: gitk:7299 msgid "Child" msgstr "Дете" -#: gitk:7259 +#: gitk:7308 msgid "Branch" msgstr "Клон" -#: gitk:7262 +#: gitk:7311 msgid "Follows" msgstr "Следва" -#: gitk:7265 +#: gitk:7314 msgid "Precedes" msgstr "Предшества" -#: gitk:7849 +#: gitk:7901 #, tcl-format msgid "Error getting diffs: %s" msgstr "Грешка при получаването на разликите: %s" -#: gitk:8533 +#: gitk:8585 msgid "Goto:" msgstr "Към ред:" -#: gitk:8554 +#: gitk:8606 #, tcl-format msgid "Short SHA1 id %s is ambiguous" -msgstr "Съкратената SHA1 %s не е еднозначна" +msgstr "Съкратената сума по SHA1 %s не е еднозначна" -#: gitk:8561 +#: gitk:8613 #, tcl-format msgid "Revision %s is not known" msgstr "Непозната версия %s" -#: gitk:8571 +#: gitk:8623 #, tcl-format msgid "SHA1 id %s is not known" -msgstr "Непозната SHA1 %s" +msgstr "Непозната сума по SHA1 %s" -#: gitk:8573 +#: gitk:8625 #, tcl-format msgid "Revision %s is not in the current view" msgstr "Версия %s не е в текущия изглед" -#: gitk:8715 gitk:8730 +#: gitk:8767 gitk:8782 msgid "Date" msgstr "Дата" -#: gitk:8718 +#: gitk:8770 msgid "Children" msgstr "Деца" -#: gitk:8781 +#: gitk:8833 #, tcl-format msgid "Reset %s branch to here" msgstr "Зануляване на клона „%s“ към текущото подаване" -#: gitk:8783 +#: gitk:8835 msgid "Detached head: can't reset" msgstr "Несвързан връх: невъзможно зануляване" -#: gitk:8888 gitk:8894 +#: gitk:8940 gitk:8946 msgid "Skipping merge commit " msgstr "Пропускане на подаването на сливането" -#: gitk:8903 gitk:8908 +#: gitk:8955 gitk:8960 msgid "Error getting patch ID for " msgstr "Грешка при получаването на идентификатора на " -#: gitk:8904 gitk:8909 +#: gitk:8956 gitk:8961 msgid " - stopping\n" msgstr " — спиране\n" -#: gitk:8914 gitk:8917 gitk:8925 gitk:8939 gitk:8948 +#: gitk:8966 gitk:8969 gitk:8977 gitk:8991 gitk:9000 msgid "Commit " msgstr "Подаване" -#: gitk:8918 +#: gitk:8970 msgid "" " is the same patch as\n" " " @@ -874,7 +875,7 @@ msgstr "" " е същата кръпка като\n" " " -#: gitk:8926 +#: gitk:8978 msgid "" " differs from\n" " " @@ -882,135 +883,138 @@ msgstr "" " се различава от\n" " " -#: gitk:8928 +#: gitk:8980 msgid "" "Diff of commits:\n" "\n" -msgstr "Разлика между подаванията:\n\n" +msgstr "" +"Разлика между подаванията:\n" +"\n" -#: gitk:8940 gitk:8949 +#: gitk:8992 gitk:9001 #, tcl-format msgid " has %s children - stopping\n" msgstr " има %s деца — спиране\n" -#: gitk:8968 +#: gitk:9020 #, tcl-format msgid "Error writing commit to file: %s" msgstr "Грешка при запазването на подаването във файл: %s" -#: gitk:8974 +#: gitk:9026 #, tcl-format msgid "Error diffing commits: %s" msgstr "Грешка при изчисляването на разликите между подаванията: %s" -#: gitk:9020 +#: gitk:9072 msgid "Top" msgstr "Най-горе" -#: gitk:9021 +#: gitk:9073 msgid "From" msgstr "От" -#: gitk:9026 +#: gitk:9078 msgid "To" msgstr "До" -#: gitk:9050 +#: gitk:9102 msgid "Generate patch" msgstr "Генериране на кръпка" -#: gitk:9052 +#: gitk:9104 msgid "From:" msgstr "От:" -#: gitk:9061 +#: gitk:9113 msgid "To:" msgstr "До:" -#: gitk:9070 +#: gitk:9122 msgid "Reverse" msgstr "Обръщане" -#: gitk:9072 gitk:9268 +#: gitk:9124 gitk:9320 msgid "Output file:" msgstr "Запазване във файла:" -#: gitk:9078 +#: gitk:9130 msgid "Generate" msgstr "Генериране" -#: gitk:9116 +#: gitk:9168 msgid "Error creating patch:" msgstr "Грешка при създаването на кръпка:" -#: gitk:9139 gitk:9256 gitk:9313 +#: gitk:9191 gitk:9308 gitk:9365 msgid "ID:" msgstr "Идентификатор:" -#: gitk:9148 +#: gitk:9200 msgid "Tag name:" msgstr "Име на етикет:" -#: gitk:9151 +#: gitk:9203 msgid "Tag message is optional" msgstr "Съобщението за етикет е незадължително" -#: gitk:9153 +#: gitk:9205 msgid "Tag message:" msgstr "Съобщение за етикет:" -#: gitk:9157 gitk:9322 +#: gitk:9209 gitk:9374 msgid "Create" msgstr "Създаване" -#: gitk:9175 +#: gitk:9227 msgid "No tag name specified" msgstr "Липсва име на етикет" -#: gitk:9179 +#: gitk:9231 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "Етикетът „%s“ вече съществува" -#: gitk:9189 +#: gitk:9241 msgid "Error creating tag:" msgstr "Грешка при създаването на етикет:" -#: gitk:9265 +#: gitk:9317 msgid "Command:" msgstr "Команда:" -#: gitk:9273 +#: gitk:9325 msgid "Write" -msgstr "Pdmdpldke" +msgstr "Запазване" -#: gitk:9291 +#: gitk:9343 msgid "Error writing commit:" msgstr "Грешка при запазването на подаването:" -#: gitk:9318 +#: gitk:9370 msgid "Name:" msgstr "Име:" -#: gitk:9341 +#: gitk:9393 msgid "Please specify a name for the new branch" msgstr "Укажете име за новия клон" -#: gitk:9346 +#: gitk:9398 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "Клонът „%s“ вече съществува. Да бъде ли презаписан?" -#: gitk:9413 +#: gitk:9465 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" -msgstr "Подаването „%s“ вече е включено в клона „%s“ — да бъде ли приложено отново?" +msgstr "" +"Подаването „%s“ вече е включено в клона „%s“ — да бъде ли приложено отново?" -#: gitk:9418 +#: gitk:9470 msgid "Cherry-picking" msgstr "Отбиране" -#: gitk:9427 +#: gitk:9479 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1019,7 +1023,7 @@ msgstr "" "Неуспешно отбиране, защото във файла „%s“ има локални промени.\n" "Подайте, занулете или ги скатайте и пробвайте отново." -#: gitk:9433 +#: gitk:9485 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1027,20 +1031,20 @@ msgstr "" "Неуспешно отбиране поради конфликти при сливане.\n" "Искате ли да ги коригирате чрез „git citool“?" -#: gitk:9449 gitk:9507 +#: gitk:9501 gitk:9559 msgid "No changes committed" msgstr "Не са подадени промени" -#: gitk:9476 +#: gitk:9528 #, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "Подаването „%s“ не е включено в клона „%s“. Да бъде ли отменено?" -#: gitk:9481 +#: gitk:9533 msgid "Reverting" msgstr "Отмяна" -#: gitk:9489 +#: gitk:9541 #, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1049,7 +1053,7 @@ msgstr "" "Неуспешна отмяна, защото във файла „%s“ има локални промени.\n" "Подайте, занулете или ги скатайте и пробвайте отново.<" -#: gitk:9493 +#: gitk:9545 msgid "" "Revert failed because of merge conflict.\n" " Do you wish to run git citool to resolve it?" @@ -1057,28 +1061,28 @@ msgstr "" "Неуспешно отмяна поради конфликти при сливане.\n" "Искате ли да ги коригирате чрез „git citool“?" -#: gitk:9536 +#: gitk:9588 msgid "Confirm reset" msgstr "Потвърждаване на зануляването" -#: gitk:9538 +#: gitk:9590 #, tcl-format msgid "Reset branch %s to %s?" -msgstr "Да се занули ли клона „%s“ към „%s“?" +msgstr "Да се занули ли клонът „%s“ към „%s“?" -#: gitk:9540 +#: gitk:9592 msgid "Reset type:" msgstr "Вид зануляване:" -#: gitk:9543 +#: gitk:9595 msgid "Soft: Leave working tree and index untouched" msgstr "Слабо: работното дърво и индекса остават същите" -#: gitk:9546 +#: gitk:9598 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Смесено: работното дърво остава същото, индексът се занулява" -#: gitk:9549 +#: gitk:9601 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1086,249 +1090,251 @@ msgstr "" "Силно: зануляване и на работното дърво, и на индекса\n" "(*ВСИЧКИ* локални промени ще бъдат безвъзвратно загубени)" -#: gitk:9566 +#: gitk:9618 msgid "Resetting" msgstr "Зануляване" -#: gitk:9626 +#: gitk:9678 msgid "Checking out" msgstr "Изтегляне" -#: gitk:9679 +#: gitk:9731 msgid "Cannot delete the currently checked-out branch" msgstr "Текущо изтегленият клон не може да бъде изтрит" -#: gitk:9685 +#: gitk:9737 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" "Really delete branch %s?" msgstr "" "Подаванията на клона „%s“ не са на никой друг клон.\n" -"Наистина ли да се изтрие клона „%s“?" +"Наистина ли да се изтрие клонът „%s“?" -#: gitk:9716 +#: gitk:9768 #, tcl-format msgid "Tags and heads: %s" msgstr "Етикети и върхове: %s" -#: gitk:9731 +#: gitk:9783 msgid "Filter" msgstr "Филтриране" -#: gitk:10027 +#: gitk:10079 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." -msgstr "Грешка при прочитането на топологията на подаванията. Информацията за клона и предшестващите/следващите етикети ще е непълна." +msgstr "" +"Грешка при прочитането на топологията на подаванията. Информацията за клона " +"и предшестващите/следващите етикети ще е непълна." -#: gitk:11004 +#: gitk:11056 msgid "Tag" msgstr "Етикет" -#: gitk:11008 +#: gitk:11060 msgid "Id" msgstr "Идентификатор" -#: gitk:11091 +#: gitk:11143 msgid "Gitk font chooser" msgstr "Избор на шрифт за Gitk" -#: gitk:11108 +#: gitk:11160 msgid "B" msgstr "Ч" -#: gitk:11111 +#: gitk:11163 msgid "I" msgstr "К" -#: gitk:11229 +#: gitk:11281 msgid "Commit list display options" msgstr "Настройки на списъка с подавания" -#: gitk:11232 +#: gitk:11284 msgid "Maximum graph width (lines)" msgstr "Максимална широчина на графа (в редове)" -#: gitk:11235 +#: gitk:11287 #, tcl-format msgid "Maximum graph width (% of pane)" msgstr "Максимална широчина на графа (% от панела)" -#: gitk:11238 +#: gitk:11290 msgid "Show local changes" msgstr "Показване на локалните промени" -#: gitk:11241 +#: gitk:11293 msgid "Auto-select SHA1 (length)" msgstr "Автоматично избиране на SHA1 (дължина)" -#: gitk:11245 +#: gitk:11297 msgid "Hide remote refs" msgstr "Скриване на отдалечените указатели" -#: gitk:11249 +#: gitk:11301 msgid "Diff display options" msgstr "Настройки на показването на разликите" -#: gitk:11251 +#: gitk:11303 msgid "Tab spacing" msgstr "Широчина на табулатора" -#: gitk:11254 +#: gitk:11306 msgid "Display nearby tags/heads" msgstr "Извеждане на близките етикети и върхове" -#: gitk:11257 +#: gitk:11309 msgid "Maximum # tags/heads to show" msgstr "Максимален брой етикети/върхове за показване" -#: gitk:11260 +#: gitk:11312 msgid "Limit diffs to listed paths" msgstr "Разлика само в избраните пътища" -#: gitk:11263 +#: gitk:11315 msgid "Support per-file encodings" msgstr "Поддръжка на различни кодирания за всеки файл" -#: gitk:11269 gitk:11416 +#: gitk:11321 gitk:11468 msgid "External diff tool" msgstr "Външен инструмент за разлики" -#: gitk:11270 +#: gitk:11322 msgid "Choose..." msgstr "Избор…" -#: gitk:11275 +#: gitk:11327 msgid "General options" msgstr "Общи настройки" -#: gitk:11278 +#: gitk:11330 msgid "Use themed widgets" msgstr "Използване на тема за графичните обекти" -#: gitk:11280 +#: gitk:11332 msgid "(change requires restart)" msgstr "(промяната изисква рестартиране на Gitk)" -#: gitk:11282 +#: gitk:11334 msgid "(currently unavailable)" msgstr "(в момента недостъпно)" -#: gitk:11293 +#: gitk:11345 msgid "Colors: press to choose" msgstr "Цветове: избира се с натискане" -#: gitk:11296 +#: gitk:11348 msgid "Interface" msgstr "Интерфейс" -#: gitk:11297 +#: gitk:11349 msgid "interface" msgstr "интерфейс" -#: gitk:11300 +#: gitk:11352 msgid "Background" msgstr "Фон" -#: gitk:11301 gitk:11331 +#: gitk:11353 gitk:11383 msgid "background" -msgstr "Фон" +msgstr "фон" -#: gitk:11304 +#: gitk:11356 msgid "Foreground" msgstr "Знаци" -#: gitk:11305 +#: gitk:11357 msgid "foreground" msgstr "знаци" -#: gitk:11308 +#: gitk:11360 msgid "Diff: old lines" msgstr "Разлика: стари редове" -#: gitk:11309 +#: gitk:11361 msgid "diff old lines" msgstr "разлика, стари редове" -#: gitk:11313 +#: gitk:11365 msgid "Diff: new lines" msgstr "Разлика: нови редове" -#: gitk:11314 +#: gitk:11366 msgid "diff new lines" msgstr "разлика, нови редове" -#: gitk:11318 +#: gitk:11370 msgid "Diff: hunk header" msgstr "Разлика: начало на парче" -#: gitk:11320 +#: gitk:11372 msgid "diff hunk header" msgstr "разлика, начало на парче" -#: gitk:11324 +#: gitk:11376 msgid "Marked line bg" msgstr "Фон на отбелязан ред" -#: gitk:11326 +#: gitk:11378 msgid "marked line background" -msgstr "Фон на отбелязан ред" +msgstr "фон на отбелязан ред" -#: gitk:11330 +#: gitk:11382 msgid "Select bg" msgstr "Избор на фон" -#: gitk:11339 +#: gitk:11391 msgid "Fonts: press to choose" msgstr "Шрифтове: избира се с натискане" -#: gitk:11341 +#: gitk:11393 msgid "Main font" msgstr "Основен шрифт" -#: gitk:11342 +#: gitk:11394 msgid "Diff display font" msgstr "Шрифт за разликите" -#: gitk:11343 +#: gitk:11395 msgid "User interface font" msgstr "Шрифт на интерфейса" -#: gitk:11365 +#: gitk:11417 msgid "Gitk preferences" msgstr "Настройки на Gitk" -#: gitk:11374 +#: gitk:11426 msgid "General" msgstr "Общи" -#: gitk:11375 +#: gitk:11427 msgid "Colors" msgstr "Цветове" -#: gitk:11376 +#: gitk:11428 msgid "Fonts" msgstr "Шрифтове" -#: gitk:11426 +#: gitk:11478 #, tcl-format msgid "Gitk: choose color for %s" -msgstr "Gitk: избор на цвят на %s" +msgstr "Gitk: избор на цвят на „%s“" -#: gitk:12080 +#: gitk:12177 msgid "Cannot find a git repository here." msgstr "Тук липсва хранилище на Git." -#: gitk:12127 +#: gitk:12224 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Нееднозначен аргумент „%s“: има и такава версия, и такъв файл" -#: gitk:12139 +#: gitk:12236 msgid "Bad arguments to gitk:" msgstr "Неправилни аргументи на gitk:" -#: gitk:12242 +#: gitk:12339 msgid "Command line" msgstr "Команден ред" diff --git a/ident.c b/ident.c index 1d9b6e770d..77bc882e59 100644 --- a/ident.c +++ b/ident.c @@ -102,7 +102,7 @@ static void copy_email(const struct passwd *pw, struct strbuf *email) add_domainname(email); } -static const char *ident_default_name(void) +const char *ident_default_name(void) { if (!git_default_name.len) { copy_gecos(xgetpwuid_self(), &git_default_name); diff --git a/imap-send.c b/imap-send.c index 618d75b149..614b744106 100644 --- a/imap-send.c +++ b/imap-send.c @@ -128,7 +128,6 @@ struct imap_cmd_cb { char *data; int dlen; int uid; - unsigned create:1, trycreate:1; }; struct imap_cmd { @@ -493,9 +492,9 @@ static int nfsnprintf(char *buf, int blen, const char *fmt, ...) return ret; } -static struct imap_cmd *v_issue_imap_cmd(struct imap_store *ctx, - struct imap_cmd_cb *cb, - const char *fmt, va_list ap) +static struct imap_cmd *issue_imap_cmd(struct imap_store *ctx, + struct imap_cmd_cb *cb, + const char *fmt, va_list ap) { struct imap *imap = ctx->imap; struct imap_cmd *cmd; @@ -558,20 +557,6 @@ static struct imap_cmd *v_issue_imap_cmd(struct imap_store *ctx, return cmd; } -__attribute__((format (printf, 3, 4))) -static struct imap_cmd *issue_imap_cmd(struct imap_store *ctx, - struct imap_cmd_cb *cb, - const char *fmt, ...) -{ - struct imap_cmd *ret; - va_list ap; - - va_start(ap, fmt); - ret = v_issue_imap_cmd(ctx, cb, fmt, ap); - va_end(ap); - return ret; -} - __attribute__((format (printf, 3, 4))) static int imap_exec(struct imap_store *ctx, struct imap_cmd_cb *cb, const char *fmt, ...) @@ -580,7 +565,7 @@ static int imap_exec(struct imap_store *ctx, struct imap_cmd_cb *cb, struct imap_cmd *cmdp; va_start(ap, fmt); - cmdp = v_issue_imap_cmd(ctx, cb, fmt, ap); + cmdp = issue_imap_cmd(ctx, cb, fmt, ap); va_end(ap); if (!cmdp) return RESP_BAD; @@ -596,7 +581,7 @@ static int imap_exec_m(struct imap_store *ctx, struct imap_cmd_cb *cb, struct imap_cmd *cmdp; va_start(ap, fmt); - cmdp = v_issue_imap_cmd(ctx, cb, fmt, ap); + cmdp = issue_imap_cmd(ctx, cb, fmt, ap); va_end(ap); if (!cmdp) return DRV_STORE_BAD; @@ -714,8 +699,8 @@ static int parse_response_code(struct imap_store *ctx, struct imap_cmd_cb *cb, static int get_cmd_result(struct imap_store *ctx, struct imap_cmd *tcmd) { struct imap *imap = ctx->imap; - struct imap_cmd *cmdp, **pcmdp, *ncmdp; - char *cmd, *arg, *arg1, *p; + struct imap_cmd *cmdp, **pcmdp; + char *cmd, *arg, *arg1; int n, resp, resp2, tag; for (;;) { @@ -801,30 +786,9 @@ static int get_cmd_result(struct imap_store *ctx, struct imap_cmd *tcmd) if (!strcmp("OK", arg)) resp = DRV_OK; else { - if (!strcmp("NO", arg)) { - if (cmdp->cb.create && cmd && (cmdp->cb.trycreate || !memcmp(cmd, "[TRYCREATE]", 11))) { /* SELECT, APPEND or UID COPY */ - p = strchr(cmdp->cmd, '"'); - if (!issue_imap_cmd(ctx, NULL, "CREATE \"%.*s\"", (int)(strchr(p + 1, '"') - p + 1), p)) { - resp = RESP_BAD; - goto normal; - } - /* not waiting here violates the spec, but a server that does not - grok this nonetheless violates it too. */ - cmdp->cb.create = 0; - if (!(ncmdp = issue_imap_cmd(ctx, &cmdp->cb, "%s", cmdp->cmd))) { - resp = RESP_BAD; - goto normal; - } - free(cmdp->cmd); - free(cmdp); - if (!tcmd) - return 0; /* ignored */ - if (cmdp == tcmd) - tcmd = ncmdp; - continue; - } + if (!strcmp("NO", arg)) resp = RESP_NO; - } else /*if (!strcmp("BAD", arg))*/ + else /*if (!strcmp("BAD", arg))*/ resp = RESP_BAD; fprintf(stderr, "IMAP command '%s' returned response (%s) - %s\n", memcmp(cmdp->cmd, "LOGIN", 5) ? @@ -833,7 +797,6 @@ static int get_cmd_result(struct imap_store *ctx, struct imap_cmd *tcmd) } if ((resp2 = parse_response_code(ctx, &cmdp->cb, cmd)) > resp) resp = resp2; - normal: if (cmdp->cb.done) cmdp->cb.done(ctx, cmdp, resp); free(cmdp->cb.data); @@ -944,7 +907,7 @@ static int auth_cram_md5(struct imap_store *ctx, struct imap_cmd *cmd, const cha return 0; } -static struct imap_store *imap_open_store(struct imap_server_conf *srvc) +static struct imap_store *imap_open_store(struct imap_server_conf *srvc, char *folder) { struct credential cred = CREDENTIAL_INIT; struct imap_store *ctx; @@ -1156,6 +1119,25 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc) credential_approve(&cred); credential_clear(&cred); + /* check the target mailbox exists */ + ctx->name = folder; + switch (imap_exec(ctx, NULL, "EXAMINE \"%s\"", ctx->name)) { + case RESP_OK: + /* ok */ + break; + case RESP_BAD: + fprintf(stderr, "IMAP error: could not check mailbox\n"); + goto out; + case RESP_NO: + if (imap_exec(ctx, NULL, "CREATE \"%s\"", ctx->name) == RESP_OK) { + imap_info("Created missing mailbox\n"); + } else { + fprintf(stderr, "IMAP error: could not create missing mailbox\n"); + goto out; + } + break; + } + ctx->prefix = ""; return ctx; @@ -1164,6 +1146,7 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc) credential_reject(&cred); credential_clear(&cred); + out: imap_close_store(ctx); return NULL; } @@ -1219,7 +1202,6 @@ static int imap_store_msg(struct imap_store *ctx, struct strbuf *msg) box = ctx->name; prefix = !strcmp(box, "INBOX") ? "" : ctx->prefix; - cb.create = 0; ret = imap_exec_m(ctx, &cb, "APPEND \"%s%s\" ", prefix, box); imap->caps = imap->rcaps; if (ret != DRV_OK) @@ -1410,14 +1392,13 @@ int main(int argc, char **argv) } /* write it to the imap server */ - ctx = imap_open_store(&server); + ctx = imap_open_store(&server, imap_folder); if (!ctx) { fprintf(stderr, "failed to open store\n"); return 1; } fprintf(stderr, "sending %d message%s\n", total, (total != 1) ? "s" : ""); - ctx->name = imap_folder; while (1) { unsigned percent = n * 100 / total; diff --git a/lockfile.c b/lockfile.c index 2564a7f544..2a800cef33 100644 --- a/lockfile.c +++ b/lockfile.c @@ -237,6 +237,16 @@ int close_lock_file(struct lock_file *lk) return close(fd); } +int reopen_lock_file(struct lock_file *lk) +{ + if (0 <= lk->fd) + die(_("BUG: reopen a lockfile that is still open")); + if (!lk->filename[0]) + die(_("BUG: reopen a lockfile that has been committed")); + lk->fd = open(lk->filename, O_WRONLY); + return lk->fd; +} + int commit_lock_file(struct lock_file *lk) { char result_file[PATH_MAX]; diff --git a/log-tree.c b/log-tree.c index 0c53dc11ab..95e9b1da25 100644 --- a/log-tree.c +++ b/log-tree.c @@ -649,7 +649,7 @@ void show_log(struct rev_info *opt) graph_show_commit_msg(opt->graph, &msgbuf); else fwrite(msgbuf.buf, sizeof(char), msgbuf.len, stdout); - if (opt->use_terminator) { + if (opt->use_terminator && !commit_format_is_empty(opt->commit_format)) { if (!opt->missing_newline) graph_show_padding(opt->graph); putchar(opt->diffopt.line_termination); @@ -676,7 +676,8 @@ int log_tree_diff_flush(struct rev_info *opt) show_log(opt); if ((opt->diffopt.output_format & ~DIFF_FORMAT_NO_OUTPUT) && opt->verbose_header && - opt->commit_format != CMIT_FMT_ONELINE) { + opt->commit_format != CMIT_FMT_ONELINE && + !commit_format_is_empty(opt->commit_format)) { /* * When showing a verbose header (i.e. log message), * and not in --pretty=oneline format, we would want diff --git a/path.c b/path.c index 3afcdb432a..f68df0cf88 100644 --- a/path.c +++ b/path.c @@ -148,10 +148,12 @@ void home_config_paths(char **global, char **xdg, char *file) *global = mkpathdup("%s/.gitconfig", home); } - if (!xdg_home) - *xdg = NULL; - else - *xdg = mkpathdup("%s/git/%s", xdg_home, file); + if (xdg) { + if (!xdg_home) + *xdg = NULL; + else + *xdg = mkpathdup("%s/git/%s", xdg_home, file); + } free(to_free); } diff --git a/po/TEAMS b/po/TEAMS index f75a1743eb..461cc14354 100644 --- a/po/TEAMS +++ b/po/TEAMS @@ -5,12 +5,18 @@ Language: bg (Bulgarian) Repository: https://github.com/git-l10n/git-po Leader: Alexander Shopov +Language: ca (Catalan) +Repository: https://github.com/alexhenrie/git-po +Leader: Alex Henrie + Language: de (German) Repository: https://github.com/ralfth/git-po-de Leader: Ralf Thielow Members: Thomas Rast Jan Krüger Christian Stimming + Phillip Szelat + Matthias Rüster Language: fr (French) Repository: https://github.com/jnavila/git diff --git a/po/bg.po b/po/bg.po index e862e10604..ef97185321 100644 --- a/po/bg.po +++ b/po/bg.po @@ -18,7 +18,7 @@ # root commit начално подаване # fixup вкарвам подаване в предното без следа # remote-tracking branch следящ клон -# git bundle архив на git +# git bundle пратка на git # bisect двоично търсене # am прилагам поредица от кръпки # working directory/tree — винаги работно дърво, git следи цялото дърво, а не директории @@ -39,16 +39,41 @@ # sequence последователност/поредица # whitespace symbol знаци за интервали # shortlog съкратения журнал +# backing store мястото за съхранение +# reject отхвърлено парче +# topic branch тематичен клон +# empty head връх без история +# tree-ish указател към дърво +# three-way merge тройно сливане +# dirty нечист, мръсен (файл, индекс) +# fallback резервен вариант +# pathspec magic опция за магически пътища +# bitmap index индекс на база битови маски +# mark маркер +# plumbing команди от системно ниво +# porcelain команди от потребителско ниво +# pack [noun] пакетен файл - fixme in glossary +# mainline базово подаване - при cherry-pick на merge - към коя версия да се изчислява разликата +# # ---- # FAILED to parse неуспешен анализ на... -> неразпозната стойност на -# +# blob обект BLOB # ======================== -# „“…— +# „“…— ●≫ѝ→ +# +# stressed a +# форма̀та +# delta - разлика или делта +# consistency between stdout - standard output/ stdin - standard input/ stderr - standard error +# mergetag етикет при сливане +# # ======================== # RECHECK # ------------------------ +# FIXME # HEAD as a reference vs head of a branch -# +# git update-index -h извежда само един ред, а не цялата помощ за опциите +# git fetch --al работи подобно на --all # ======================== # GENERATE STATS # ------------------------ @@ -67,7 +92,7 @@ # ======================== # STRINGS statistics # ------------------------ -# 1307t,0f,921u +# 2228t # # ======================== # MOST IMPORTANT name asc ordering @@ -75,40 +100,37 @@ # add, blame, branch, checkout, clone, commit, common-cmds, config, diff, fetch, fsck, gc, git-rebase, git-stash, grep, log, mv, parse-options, push, reflog, remote, reset, revert, rm, wt-status # # ======================== -# IMPORTANT strings desc, name asc ordering +# IMPORTANT strings, name asc ordering # ------------------------ -# 111 apply 54 git-submodule 30 git-am 13 check-ignore 10 merge-file -# 97 merge 39 init-db 30 describe 12 pathspec 10 merge-base -# 64 tag 35 archive 29 git-bisect 12 name-rev 10 ls-tree -# 55 merge-recursive 32 clean 14 show-ref 11 date 10 hash-object +# apply, archive, check-ignore, clean, date, describe, git-am, git-bisect, git-submodule, hash-object, init-db, ls-tree, merge, merge-base, merge-file, merge-recursive, name-rev, pathspec, show-ref, tag # # ======================== # WHOLE STATISTICS strings desc, name asc ordering # ------------------------ -# 144 [remote] 47 [push] 26 [revert] 12 checkout-index 6 [prune] 2 [verify-tag] -# 137 [commit] 46 pack-objects 24 [mv] 11 date 6 [gpg-interface] 2 [update-server-info] -# 114 [branch] 41 [help] 23 repack 11 column 6 [check-attr] 2 [run-command] -# 111 apply 39 init-db 21 [rm] 10 urlmatch 5 [write-tree] 2 [rerere] -# 101 notes 36 [add] 21 [common-cmds] 10 shortlog 5 [sha1_name] 2 [read-cache] -# 100 [wt-status] 35 [reset] 19 [show-branch] 10 merge-file 5 [rev-parse] 2 [obstack] -# 97 merge 35 archive 19 read-tree 10 merge-base 4 [wrapper] 2 [advice] -# 78 [checkout] 34 [config] 19 bundle 10 ls-tree 4 [prune-packed] 1 [unpack-trees] -# 77 [log] 32 clean 16 [parse-options] 10 hash-object 4 [notes-utils] 1 [unpack-objects] -# 69 [clone] 30 git-am 15 [fsck] 10 for-each-ref 4 [mktree] 1 [progress] -# 68 index-pack 30 describe 14 show-ref 10 cat-file 4 [check-mailmap] 1 [precompose_utf8] +# 144 [remote] 47 [push] 26 [revert] 12 [checkout-index] 6 [prune] 2 [verify-tag] +# 137 [commit] 46 [pack-objects] 24 [mv] 11 [date] 6 [gpg-interface] 2 [update-server-info] +# 114 [branch] 41 [help] 23 [repack] 11 [column] 6 [check-attr] 2 [run-command] +# 111 [apply] 39 [init-db] 21 [rm] 10 [urlmatch] 5 [write-tree] 2 [rerere] +# 101 [notes] 36 [add] 21 [common-cmds] 10 [shortlog] 5 [sha1_name] 2 [read-cache] +# 100 [wt-status] 35 [reset] 19 [show-branch] 10 [merge-file] 5 [rev-parse] 2 [obstack] +# 97 [merge] 35 [archive] 19 [read-tree] 10 [merge-base] 4 [wrapper] 2 [advice] +# 78 [checkout] 34 [config] 19 [bundle] 10 [ls-tree] 4 [prune-packed] 1 [unpack-trees] +# 77 [log] 32 [clean] 16 [parse-options] 10 [hash-object] 4 [notes-utils] 1 [unpack-objects] +# 69 [clone] 30 [git-am] 15 [fsck] 10 [for-each-ref] 4 [mktree] 1 [progress] +# 68 [index-pack] 30 [describe] 14 [show-ref] 10 [cat-file] 4 [check-mailmap] 1 [precompose_utf8] # 68 [fetch] 29 [git-stash] 14 [gc] 9 [update-ref] 3 [verify-pack] 1 [object] -# 64 tag 29 git-bisect 14 fast-export 9 [submodule] 3 [reflog] 1 [git] -# 64 [grep] 28 update-index 13 [diff] 8 [replace] 3 [pack-refs] 1 [diffcore-rename] -# 56 sequencer 28 [blame] 13 check-ignore 8 [git-pull] 3 [count-objects] 1 [diffcore-order] -# 55 merge-recursive 27 ls-files 12 pathspec 8 [fmt-merge-msg] 3 [connected] 1 [attr] -# 54 git-submodule 27 [git-rebase] 12 name-rev 7 [symbolic-ref] 3 [bisect--helper] +# 64 [tag] 29 [git-bisect] 14 [fast-export] 9 [submodule] 3 [reflog] 1 [git] +# 64 [grep] 28 [update-index] 13 [diff] 8 [replace] 3 [pack-refs] 1 [diffcore-rename] +# 56 [sequencer] 28 [blame] 13 [check-ignore] 8 [git-pull] 3 [count-objects] 1 [diffcore-order] +# 55 [merge-recursive] 27 [ls-files] 12 [pathspec] 8 [fmt-merge-msg] 3 [connected] 1 [attr] +# 54 [git-submodule] 27 [git-rebase] 12 [name-rev] 7 [symbolic-ref] 3 [bisect--helper] # msgid "" msgstr "" "Project-Id-Version: git master\n" "Report-Msgid-Bugs-To: Git Mailing List \n" -"POT-Creation-Date: 2014-04-19 12:50+0800\n" -"PO-Revision-Date: 2014-05-11 17:06+0300\n" +"POT-Creation-Date: 2014-08-04 14:48+0800\n" +"PO-Revision-Date: 2014-08-03 13:01+0300\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -122,59 +144,60 @@ msgstr "" msgid "hint: %.*s\n" msgstr "Подсказка: %.*s\n" -#: advice.c:85 +# TRANSFER +#: advice.c:88 msgid "" -"Fix them up in the work tree,\n" -"and then use 'git add/rm ' as\n" -"appropriate to mark resolution and make a commit,\n" -"or use 'git commit -a'." +"Fix them up in the work tree, and then use 'git add/rm '\n" +"as appropriate to mark resolution and make a commit, or use\n" +"'git commit -a'." msgstr "" -"Редактирайте ги в работното дърво,\n" -"и тогава ползвайте „git add/rm “,\n" -"за да отбележите коригирането им и ги\n" -"подадете или просто ползвайте „git commit -a“." +"Редактирайте ги в работното дърво, и тогава ползвайте „git add/rm ФАЙЛ“\n" +"за да отбележите коригирането им и ги подадете или просто ползвайте:\n" +"„git commit -a“" #: archive.c:10 msgid "git archive [options] [...]" -msgstr "" +msgstr "git archive [ОПЦИЯ…] УКАЗАТЕЛ_КЪМ_ДЪРВО [ПЪТ…]" #: archive.c:11 msgid "git archive --list" -msgstr "" +msgstr "git archive --list" #: archive.c:12 msgid "" "git archive --remote [--exec ] [options] [...]" msgstr "" +"git archive --remote ХРАНИЛИЩЕ [--exec КОМАНДА] [ОПЦИЯ…] УКАЗАТЕЛ_КЪМ_ДЪРВО " +"[ПЪТ…]" #: archive.c:13 msgid "git archive --remote [--exec ] --list" -msgstr "" +msgstr "git archive --remote ХРАНИЛИЩЕ [--exec КОМАНДА] --list" -#: archive.c:243 builtin/add.c:136 builtin/add.c:428 builtin/rm.c:328 +#: archive.c:243 builtin/add.c:136 builtin/add.c:427 builtin/rm.c:328 #, c-format msgid "pathspec '%s' did not match any files" msgstr "пътят „%s“ не съвпада с никой файл" #: archive.c:328 msgid "fmt" -msgstr "" +msgstr "ФОРМАТ" #: archive.c:328 msgid "archive format" -msgstr "" +msgstr "ФОРМАТ на архива" -#: archive.c:329 builtin/log.c:1193 +#: archive.c:329 builtin/log.c:1201 msgid "prefix" msgstr "префикс" #: archive.c:330 msgid "prepend prefix to each pathname in the archive" -msgstr "" +msgstr "добавяне на този префикс към всеки път в архива" -#: archive.c:331 builtin/archive.c:88 builtin/blame.c:2258 -#: builtin/blame.c:2259 builtin/config.c:57 builtin/fast-export.c:680 -#: builtin/fast-export.c:682 builtin/grep.c:714 builtin/hash-object.c:77 +#: archive.c:331 builtin/archive.c:88 builtin/blame.c:2517 +#: builtin/blame.c:2518 builtin/config.c:57 builtin/fast-export.c:709 +#: builtin/fast-export.c:711 builtin/grep.c:712 builtin/hash-object.c:77 #: builtin/ls-files.c:489 builtin/ls-files.c:492 builtin/notes.c:412 #: builtin/notes.c:569 builtin/read-tree.c:108 parse-options.h:151 msgid "file" @@ -182,31 +205,31 @@ msgstr "файл" #: archive.c:332 builtin/archive.c:89 msgid "write the archive to this file" -msgstr "" +msgstr "запазване на архива в този файл" #: archive.c:334 msgid "read .gitattributes in working directory" -msgstr "" +msgstr "изчитане на „.gitattributes“ в работната директория" #: archive.c:335 msgid "report archived files on stderr" -msgstr "" +msgstr "извеждане на архивираните файлове на стандартната грешка" #: archive.c:336 msgid "store only" -msgstr "" +msgstr "само съхранение без компресиране" #: archive.c:337 msgid "compress faster" -msgstr "" +msgstr "бързо компресиране" #: archive.c:345 msgid "compress better" -msgstr "" +msgstr "добро компресиране" #: archive.c:348 msgid "list supported archive formats" -msgstr "" +msgstr "извеждане на списъка с поддържаните формати" #: archive.c:350 builtin/archive.c:90 builtin/clone.c:84 msgid "repo" @@ -214,15 +237,15 @@ msgstr "хранилище" #: archive.c:351 builtin/archive.c:91 msgid "retrieve the archive from remote repository " -msgstr "" +msgstr "изтегляне на архива от отдалеченото ХРАНИЛИЩЕ" #: archive.c:352 builtin/archive.c:92 builtin/notes.c:491 msgid "command" -msgstr "" +msgstr "команда" #: archive.c:353 builtin/archive.c:93 msgid "path to the remote git-upload-archive command" -msgstr "" +msgstr "път към отдалечената команда „git-upload-archive“" #: attr.c:259 msgid "" @@ -355,24 +378,24 @@ msgstr "Указателят не може да бъде записан" #: bundle.c:33 #, c-format msgid "'%s' does not look like a v2 bundle file" -msgstr "Файлът „%s“ не изглежда да е архив на git версия 2" +msgstr "Файлът „%s“ не изглежда да е пратка на git версия 2" #: bundle.c:60 #, c-format msgid "unrecognized header: %s%s (%d)" -msgstr "" +msgstr "непозната заглавна част: %s%s (%d)" -#: bundle.c:86 builtin/commit.c:706 +#: bundle.c:86 builtin/commit.c:755 #, c-format msgid "could not open '%s'" msgstr "„%s“ не може да се отвори" #: bundle.c:138 msgid "Repository lacks these prerequisite commits:" -msgstr "" +msgstr "В хранилището липсват следните необходими подавания:" -#: bundle.c:162 sequencer.c:669 sequencer.c:1123 builtin/log.c:332 -#: builtin/log.c:821 builtin/log.c:1418 builtin/log.c:1644 builtin/merge.c:357 +#: bundle.c:162 sequencer.c:630 sequencer.c:1085 builtin/log.c:330 +#: builtin/log.c:821 builtin/log.c:1428 builtin/log.c:1665 builtin/merge.c:357 #: builtin/shortlog.c:158 msgid "revision walk setup failed" msgstr "неуспешно настройване на обхождането на версиите" @@ -381,61 +404,65 @@ msgstr "неуспешно настройване на обхождането н #, c-format msgid "The bundle contains this ref:" msgid_plural "The bundle contains these %d refs:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Пратката съдържа следния указател:" +msgstr[1] "Пратката съдържа следните %d указатели:" #: bundle.c:191 msgid "The bundle records a complete history." -msgstr "" +msgstr "Пратката съдържа пълна история." #: bundle.c:193 #, c-format msgid "The bundle requires this ref:" msgid_plural "The bundle requires these %d refs:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Пратката изисква следния указател:" +msgstr[1] "Пратката изисква следните %d указатели:" -#: bundle.c:293 +# FIXME better message +#: bundle.c:289 msgid "rev-list died" -msgstr "" +msgstr "Командата „git rev-list“ не завърши успешно" -#: bundle.c:299 builtin/log.c:1329 builtin/shortlog.c:261 +#: bundle.c:295 builtin/log.c:1339 builtin/shortlog.c:261 #, c-format msgid "unrecognized argument: %s" msgstr "непознат аргумент: %s" -#: bundle.c:334 +#: bundle.c:330 #, c-format msgid "ref '%s' is excluded by the rev-list options" msgstr "" +"указателят „%s“ не е бил включен поради опциите зададени на „git rev-list“" -#: bundle.c:379 +#: bundle.c:375 msgid "Refusing to create empty bundle." -msgstr "" +msgstr "Създаването на празна пратка е невъзможно." -#: bundle.c:395 +#: bundle.c:390 msgid "Could not spawn pack-objects" -msgstr "" +msgstr "Командата „git pack-objects“ не може да бъде стартирана" -#: bundle.c:413 +# FIXME better message +#: bundle.c:408 msgid "pack-objects died" -msgstr "" +msgstr "Командата „git pack-objects“ не завърши успешно" -#: bundle.c:416 +#: bundle.c:411 #, c-format msgid "cannot create '%s'" -msgstr "" +msgstr "Файлът „%s“ не може да бъде създаден" -#: bundle.c:438 +# FIXME better message +#: bundle.c:433 msgid "index-pack died" -msgstr "" +msgstr "Командата „git index-pack“ не завърши успешно" -#: commit.c:54 +#: commit.c:40 #, c-format msgid "could not parse %s" msgstr "„%s“ не може да се анализира" -#: commit.c:56 +#: commit.c:42 #, c-format msgid "%s %s is not a commit!" msgstr "%s %s не е подаване!" @@ -451,7 +478,7 @@ msgstr "Командата „git rev-list“ не може да бъде изп #: connected.c:90 #, c-format msgid "failed write to rev-list: %s" -msgstr "неуспешен запис в списъка с версиите: %s" +msgstr "неуспешен запис на списъка с версиите: %s" #: connected.c:98 #, c-format @@ -460,99 +487,99 @@ msgstr "стандартният вход на списъка с версиит #: date.c:95 msgid "in the future" -msgstr "" +msgstr "в бъдещето" #: date.c:101 #, c-format msgid "%lu second ago" msgid_plural "%lu seconds ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "преди %lu секунда" +msgstr[1] "преди %lu секунди" #: date.c:108 #, c-format msgid "%lu minute ago" msgid_plural "%lu minutes ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "преди %lu минута" +msgstr[1] "преди %lu минути" #: date.c:115 #, c-format msgid "%lu hour ago" msgid_plural "%lu hours ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "преди %lu час" +msgstr[1] "преди %lu часа" #: date.c:122 #, c-format msgid "%lu day ago" msgid_plural "%lu days ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "преди %lu ден" +msgstr[1] "преди %lu дена" #: date.c:128 #, c-format msgid "%lu week ago" msgid_plural "%lu weeks ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "преди %lu седмица" +msgstr[1] "преди %lu седмици" #: date.c:135 #, c-format msgid "%lu month ago" msgid_plural "%lu months ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "преди %lu месец" +msgstr[1] "преди %lu месеца" #: date.c:146 #, c-format msgid "%lu year" msgid_plural "%lu years" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%lu година" +msgstr[1] "%lu години" #. TRANSLATORS: "%s" is " years" #: date.c:149 #, c-format msgid "%s, %lu month ago" msgid_plural "%s, %lu months ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "преди %s и %lu месец" +msgstr[1] "преди %s и %lu месеца" #: date.c:154 date.c:159 #, c-format msgid "%lu year ago" msgid_plural "%lu years ago" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "преди %lu година" +msgstr[1] "преди %lu години" #: diffcore-order.c:24 #, c-format msgid "failed to read orderfile '%s'" msgstr "файлът с подредбата на съответствията „%s“ не може да бъде прочетен" -#: diffcore-rename.c:517 +#: diffcore-rename.c:514 msgid "Performing inexact rename detection" msgstr "Търсене на преименувания на обекти съчетани с промени" -#: diff.c:113 +#: diff.c:114 #, c-format msgid " Failed to parse dirstat cut-off percentage '%s'\n" msgstr "" " Неуспешно разпознаване на „%s“ като процент-праг за статистиката по " "директории\n" -#: diff.c:118 +#: diff.c:119 #, c-format msgid " Unknown dirstat parameter '%s'\n" msgstr " Непознат параметър „%s“ за статистиката по директории'\n" -#: diff.c:213 +#: diff.c:214 #, c-format msgid "Unknown value for 'diff.submodule' config variable: '%s'" msgstr "Непозната стойност „%s“ за настройката „diff.submodule“" -#: diff.c:263 +#: diff.c:267 #, c-format msgid "" "Found errors in 'diff.dirstat' config variable:\n" @@ -561,7 +588,17 @@ msgstr "" "Грешки в настройката „diff.dirstat“:\n" "%s" -#: diff.c:3495 +#: diff.c:2934 +#, c-format +msgid "external diff died, stopping at %s" +msgstr "" +"външната програма за разлики завърши неуспешно. Спиране на работата при „%s“" + +#: diff.c:3329 +msgid "--follow requires exactly one pathspec" +msgstr "Опцията „--follow“ изисква точно един път" + +#: diff.c:3492 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" @@ -570,58 +607,58 @@ msgstr "" "Неразпознат параметър към опцията „--dirstat/-X“:\n" "%s" -#: diff.c:3509 +#: diff.c:3506 #, c-format msgid "Failed to parse --submodule option parameter: '%s'" msgstr "Неразпознат параметър към опцията „--submodule“: „%s“" -#: gpg-interface.c:59 gpg-interface.c:131 +#: gpg-interface.c:73 gpg-interface.c:145 msgid "could not run gpg." msgstr "Програмата „gpg“ не може да бъде стартирана." -#: gpg-interface.c:71 +#: gpg-interface.c:85 msgid "gpg did not accept the data" msgstr "Програмата „gpg“ не прие подадените данни." -#: gpg-interface.c:82 +#: gpg-interface.c:96 msgid "gpg failed to sign the data" msgstr "Програмата „gpg“ не подписа данните." -#: gpg-interface.c:115 +#: gpg-interface.c:129 #, c-format msgid "could not create temporary file '%s': %s" msgstr "Програмата „gpg“ не успя да създаде временния файл „%s“: %s" -#: gpg-interface.c:118 +#: gpg-interface.c:132 #, c-format msgid "failed writing detached signature to '%s': %s" msgstr "Програмата „gpg“ не успя да запише самостоятелния подпис към „%s“: %s" -#: grep.c:1698 +#: grep.c:1703 #, c-format msgid "'%s': unable to read %s" msgstr "„%s“: файлът сочен от „%s“ не може да бъде прочетен" -#: grep.c:1715 +#: grep.c:1720 #, c-format msgid "'%s': %s" msgstr "„%s“: „%s“" -#: grep.c:1726 +#: grep.c:1731 #, c-format msgid "'%s': short read %s" msgstr "„%s“: изчитането на „%s“ върна по-малко байтове от заявените" -#: help.c:209 +#: help.c:207 #, c-format msgid "available git commands in '%s'" msgstr "налични команди на git от „%s“" -#: help.c:216 +#: help.c:214 msgid "git commands available from elsewhere on your $PATH" -msgstr "команди на git от други директории от пътя „$PATH“" +msgstr "команди на git от други директории от „$PATH“" -#: help.c:232 +#: help.c:230 msgid "The most commonly used git commands are:" msgstr "Най-често употребяваните команди на git са:" @@ -660,7 +697,7 @@ msgstr "след %0.1f секунди…" msgid "git: '%s' is not a git command. See 'git --help'." msgstr "git: „%s“ не е команда на git. Вижте изхода от „git --help“." -#: help.c:384 help.c:443 +#: help.c:384 help.c:444 msgid "" "\n" "Did you mean this?" @@ -674,16 +711,16 @@ msgstr[1] "" "\n" "Команди с подобно име са:" -#: help.c:439 +#: help.c:440 #, c-format msgid "%s: %s - %s" msgstr "%s: %s — %s" -#: merge.c:56 +#: merge.c:40 msgid "failed to read the cache" -msgstr "" +msgstr "кешът не може да бъде прочетен" -#: merge.c:110 builtin/checkout.c:357 builtin/checkout.c:558 +#: merge.c:93 builtin/checkout.c:356 builtin/checkout.c:556 #: builtin/clone.c:661 msgid "unable to write new index file" msgstr "неуспешно записване на новия индекс" @@ -691,258 +728,274 @@ msgstr "неуспешно записване на новия индекс" #: merge-recursive.c:190 #, c-format msgid "(bad commit)\n" -msgstr "" +msgstr "(лошо подаване)\n" -#: merge-recursive.c:208 +#: merge-recursive.c:210 #, c-format msgid "addinfo_cache failed for path '%s'" -msgstr "" +msgstr "неуспешно изпълнение на „addinfo_cache“ за пътя „%s“" #: merge-recursive.c:271 msgid "error building trees" -msgstr "" +msgstr "грешка при изграждане на дърветата" -#: merge-recursive.c:675 +#: merge-recursive.c:692 #, c-format msgid "failed to create path '%s'%s" -msgstr "" +msgstr "грешка при създаването на пътя „%s“%s" -#: merge-recursive.c:686 +#: merge-recursive.c:703 #, c-format msgid "Removing %s to make room for subdirectory\n" -msgstr "" +msgstr "Изтриване на „%s“, за да се освободи място за поддиректория\n" -#: merge-recursive.c:700 merge-recursive.c:721 +# FIXME better message +#: merge-recursive.c:717 merge-recursive.c:738 msgid ": perhaps a D/F conflict?" -msgstr "" +msgstr ": възможно е да има конфликт директория/файл." -#: merge-recursive.c:711 +#: merge-recursive.c:728 #, c-format msgid "refusing to lose untracked file at '%s'" msgstr "" +"преустановяване на действието, за да не се изтрие неследеният файл „%s“" -#: merge-recursive.c:751 +#: merge-recursive.c:768 #, c-format msgid "cannot read object %s '%s'" -msgstr "" +msgstr "обектът „%s“ (%s) не може да бъде прочетен" -#: merge-recursive.c:753 +#: merge-recursive.c:770 #, c-format msgid "blob expected for %s '%s'" -msgstr "" +msgstr "обектът „%s“ (%s) се очакваше да е BLOB, а не е" -#: merge-recursive.c:776 builtin/clone.c:317 +#: merge-recursive.c:793 builtin/clone.c:317 #, c-format msgid "failed to open '%s'" msgstr "директорията „%s“ не може да бъде отворена" -#: merge-recursive.c:784 +#: merge-recursive.c:801 #, c-format msgid "failed to symlink '%s'" -msgstr "" +msgstr "неуспешно създаване на символната връзка „%s“" -#: merge-recursive.c:787 +#: merge-recursive.c:804 #, c-format msgid "do not know what to do with %06o %s '%s'" msgstr "" +"не е ясно какво да се прави с обекта „%2$s“ (%3$s) с права за достъп „%1$06o“" -#: merge-recursive.c:925 +#: merge-recursive.c:942 msgid "Failed to execute internal merge" -msgstr "" +msgstr "Неуспешно вътрешно сливане" -#: merge-recursive.c:929 +#: merge-recursive.c:946 #, c-format msgid "Unable to add %s to database" -msgstr "" +msgstr "„%s“ не може да се добави в базата с данни" -#: merge-recursive.c:945 +#: merge-recursive.c:962 msgid "unsupported object type in the tree" -msgstr "" +msgstr "в дървото има неподдържан вид обект" -#: merge-recursive.c:1024 merge-recursive.c:1038 +#: merge-recursive.c:1037 merge-recursive.c:1051 #, c-format msgid "" "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left " "in tree." msgstr "" +"КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ в %s. Версия %s на „%s“ " +"е оставена в дървото." -#: merge-recursive.c:1030 merge-recursive.c:1043 +#: merge-recursive.c:1043 merge-recursive.c:1056 #, c-format msgid "" "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left " "in tree at %s." msgstr "" +"КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ в %s. Версия %s на „%s“ " +"е оставена в дървото: %s." -#: merge-recursive.c:1084 +#: merge-recursive.c:1097 msgid "rename" -msgstr "" +msgstr "преименуване" -#: merge-recursive.c:1084 +#: merge-recursive.c:1097 msgid "renamed" msgstr "преименуван" -#: merge-recursive.c:1140 +#: merge-recursive.c:1153 #, c-format msgid "%s is a directory in %s adding as %s instead" -msgstr "" +msgstr "„%s“ е директория в „%s“, затова се добавя като „%s“" -#: merge-recursive.c:1162 +#: merge-recursive.c:1175 #, c-format msgid "" "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s" "\"->\"%s\" in \"%s\"%s" msgstr "" +"КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон " +"„%s“, а „%s“ е преименуван на „%s“ в „%s“/%s." -#: merge-recursive.c:1167 +#: merge-recursive.c:1180 msgid " (left unresolved)" -msgstr "" +msgstr " (некоригиран конфликт)" -#: merge-recursive.c:1221 +#: merge-recursive.c:1234 #, c-format msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s" msgstr "" +"КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон " +"„%s“, а „%s“ е преименуван на „%s“ в „%s“" -#: merge-recursive.c:1251 +#: merge-recursive.c:1264 #, c-format msgid "Renaming %s to %s and %s to %s instead" -msgstr "" +msgstr "Преименуване на „%s“ на „%s“, а „%s“ на „%s“" -#: merge-recursive.c:1450 +#: merge-recursive.c:1463 #, c-format msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s" msgstr "" +"КОНФЛИКТ (преименуване/добавяне): „%s“ е преименуван на „%s“ в клон „%s“, а " +"„%s“ е добавен в „%s“" -#: merge-recursive.c:1460 +#: merge-recursive.c:1473 #, c-format msgid "Adding merged %s" -msgstr "" +msgstr "Добавяне на слетия „%s“" -#: merge-recursive.c:1465 merge-recursive.c:1663 +#: merge-recursive.c:1478 merge-recursive.c:1676 #, c-format msgid "Adding as %s instead" -msgstr "" +msgstr "Добавяне като „%s“" -#: merge-recursive.c:1516 +#: merge-recursive.c:1529 #, c-format msgid "cannot read object %s" -msgstr "" +msgstr "обектът „%s“ не може да се прочете" -#: merge-recursive.c:1519 +#: merge-recursive.c:1532 #, c-format msgid "object %s is not a blob" -msgstr "" +msgstr "обектът „%s“ не е BLOB" -#: merge-recursive.c:1567 +#: merge-recursive.c:1580 msgid "modify" -msgstr "" +msgstr "промяна" -#: merge-recursive.c:1567 +#: merge-recursive.c:1580 msgid "modified" msgstr "променен" -#: merge-recursive.c:1577 +#: merge-recursive.c:1590 msgid "content" -msgstr "" +msgstr "съдържание" -#: merge-recursive.c:1584 +#: merge-recursive.c:1597 msgid "add/add" -msgstr "" +msgstr "добавяне/добавяне" -#: merge-recursive.c:1618 +#: merge-recursive.c:1631 #, c-format msgid "Skipped %s (merged same as existing)" -msgstr "" +msgstr "Прескачане на „%s“ (слетият резултат е идентичен със сегашния)" -#: merge-recursive.c:1632 +#: merge-recursive.c:1645 #, c-format msgid "Auto-merging %s" -msgstr "" +msgstr "Автоматично сливане на „%s“" -#: merge-recursive.c:1636 git-submodule.sh:1149 +#: merge-recursive.c:1649 git-submodule.sh:1150 msgid "submodule" msgstr "ПОДМОДУЛ" -#: merge-recursive.c:1637 +#: merge-recursive.c:1650 #, c-format msgid "CONFLICT (%s): Merge conflict in %s" -msgstr "" +msgstr "КОНФЛИКТ (%s): Конфликт при сливане на „%s“" -#: merge-recursive.c:1727 +#: merge-recursive.c:1740 #, c-format msgid "Removing %s" msgstr "Изтриване на „%s“" -#: merge-recursive.c:1752 +#: merge-recursive.c:1765 msgid "file/directory" -msgstr "" +msgstr "файл/директория" -#: merge-recursive.c:1758 +#: merge-recursive.c:1771 msgid "directory/file" -msgstr "" +msgstr "директория/файл" -#: merge-recursive.c:1763 +#: merge-recursive.c:1776 #, c-format msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s" msgstr "" +"КОНФЛИКТ (%s): Съществува директория на име „%s“ в „%s“. Добавяне на „%s“ " +"като „%s“" -#: merge-recursive.c:1773 +#: merge-recursive.c:1786 #, c-format msgid "Adding %s" -msgstr "" +msgstr "Добавяне на „%s“" -#: merge-recursive.c:1790 +#: merge-recursive.c:1803 msgid "Fatal merge failure, shouldn't happen." -msgstr "" +msgstr "Фатална грешка при сливане, а такава не трябва да възниква!" -#: merge-recursive.c:1809 +#: merge-recursive.c:1822 msgid "Already up-to-date!" -msgstr "" +msgstr "Вече е обновено!" -#: merge-recursive.c:1818 +#: merge-recursive.c:1831 #, c-format msgid "merging of trees %s and %s failed" -msgstr "" +msgstr "неуспешно сливане на дърветата „%s“ и „%s“" -#: merge-recursive.c:1848 +# FIXME message +#: merge-recursive.c:1861 #, c-format msgid "Unprocessed path??? %s" -msgstr "" +msgstr "Пътят „%s“ не е обработен, това е грешка в Git." -#: merge-recursive.c:1893 +#: merge-recursive.c:1906 msgid "Merging:" -msgstr "" +msgstr "Сливане:" -#: merge-recursive.c:1906 +#: merge-recursive.c:1919 #, c-format msgid "found %u common ancestor:" msgid_plural "found %u common ancestors:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "открит е %u общ предшественик:" +msgstr[1] "открити са %u общи предшественици:" -#: merge-recursive.c:1943 +#: merge-recursive.c:1956 msgid "merge returned no commit" -msgstr "" +msgstr "сливането не върна подаване" -#: merge-recursive.c:2000 +#: merge-recursive.c:2013 #, c-format msgid "Could not parse object '%s'" -msgstr "" +msgstr "Неуспешен анализ на обекта „%s“" -#: merge-recursive.c:2012 builtin/merge.c:668 +#: merge-recursive.c:2024 builtin/merge.c:666 msgid "Unable to write index." -msgstr "" +msgstr "Индексът не може да бъде прочетен" -#: notes-utils.c:40 +#: notes-utils.c:41 msgid "Cannot commit uninitialized/unreferenced notes tree" msgstr "" "Неинициализирано или нереферирано дърво за бележки не може да бъде подадено" -#: notes-utils.c:81 +#: notes-utils.c:83 #, c-format msgid "Bad notes.rewriteMode value: '%s'" -msgstr "Лоша стойност за „notes.rewriteMode“: „%s“" +msgstr "Неправилна стойност за „notes.rewriteMode“: „%s“" -#: notes-utils.c:91 +#: notes-utils.c:93 #, c-format msgid "Refusing to rewrite notes in %s (outside of refs/notes/)" msgstr "" @@ -950,106 +1003,110 @@ msgstr "" #. TRANSLATORS: The first %s is the name of the #. environment variable, the second %s is its value -#: notes-utils.c:118 +#: notes-utils.c:120 #, c-format msgid "Bad %s value: '%s'" msgstr "Зададена е лоша стойност на променливата „%s“: „%s“" -#: object.c:229 +#: object.c:234 #, c-format msgid "unable to parse object: %s" msgstr "обектът „%s“ не може да бъде анализиран" -#: parse-options.c:532 +#: parse-options.c:534 msgid "..." msgstr "…" -#: parse-options.c:550 +#: parse-options.c:552 #, c-format msgid "usage: %s" msgstr "употреба: %s" #. TRANSLATORS: the colon here should align with the #. one in "usage: %s" translation -#: parse-options.c:554 +#: parse-options.c:556 #, c-format msgid " or: %s" msgstr " или: %s" -#: parse-options.c:557 +#: parse-options.c:559 #, c-format msgid " %s" msgstr " %s" -#: parse-options.c:591 +#: parse-options.c:593 msgid "-NUM" msgstr "-ЧИСЛО" #: pathspec.c:133 msgid "global 'glob' and 'noglob' pathspec settings are incompatible" -msgstr "" +msgstr "глобалните настройки за пътища „glob“ и „noglob“ са несъвместими" #: pathspec.c:143 msgid "" "global 'literal' pathspec setting is incompatible with all other global " "pathspec settings" msgstr "" +"глобалната настройка за дословни пътища „literal“ е несъвместима с всички " +"други глобални настройки за пътища" #: pathspec.c:177 msgid "invalid parameter for pathspec magic 'prefix'" -msgstr "" +msgstr "неправилен параметър за опцията за магически пътища „prefix“" #: pathspec.c:183 #, c-format msgid "Invalid pathspec magic '%.*s' in '%s'" -msgstr "" +msgstr "Неправилна стойност за опцията за магически пътища „%.*s“ в „%s“" #: pathspec.c:187 #, c-format msgid "Missing ')' at the end of pathspec magic in '%s'" -msgstr "" +msgstr "Знакът „)“ липсва в опцията за магически пътища в „%s“" #: pathspec.c:205 #, c-format msgid "Unimplemented pathspec magic '%c' in '%s'" -msgstr "" +msgstr "Магическите пътища „%c“ са без реализация за „%s“" #: pathspec.c:230 #, c-format msgid "%s: 'literal' and 'glob' are incompatible" -msgstr "" +msgstr "%s: опциите „literal“ и „glob“ са несъвместими" #: pathspec.c:241 #, c-format msgid "%s: '%s' is outside repository" -msgstr "" +msgstr "%s: „%s“ е извън хранилището" #: pathspec.c:291 #, c-format msgid "Pathspec '%s' is in submodule '%.*s'" -msgstr "" +msgstr "Пътят „%s“ е в подмодула „%.*s“" #: pathspec.c:353 #, c-format msgid "%s: pathspec magic not supported by this command: %s" -msgstr "" +msgstr "%s: магическите пътища не се поддържат от командата „%s“" -#: pathspec.c:433 +#: pathspec.c:432 #, c-format msgid "pathspec '%s' is beyond a symbolic link" -msgstr "" +msgstr "пътят „%s“ е след символна връзка" -#: pathspec.c:442 +#: pathspec.c:441 msgid "" "There is nothing to exclude from by :(exclude) patterns.\n" "Perhaps you forgot to add either ':/' or '.' ?" msgstr "" +"Нищо не се изключва от шаблоните за изключване.\n" +"Това често се случва, ако сте забравили да добавите „:/“ или „.“." -#: progress.c:224 +#: progress.c:225 msgid "done" msgstr "действието завърши" -#: read-cache.c:1238 +#: read-cache.c:1260 #, c-format msgid "" "index.version set, but the value is invalid.\n" @@ -1058,7 +1115,7 @@ msgstr "" "Зададена е неправилна стойност на настройката „index.version“.\n" "Ще се ползва версия %i" -#: read-cache.c:1248 +#: read-cache.c:1270 #, c-format msgid "" "GIT_INDEX_VERSION set, but the value is invalid.\n" @@ -1068,51 +1125,51 @@ msgstr "" "„GIT_INDEX_VERSION“.\n" "Ще се ползва версия %i" -#: remote.c:758 +#: remote.c:753 #, c-format msgid "Cannot fetch both %s and %s to %s" msgstr "Невъзможно е да се доставят едновременно и „%s“, и „%s“ към „%s“" -#: remote.c:762 +#: remote.c:757 #, c-format msgid "%s usually tracks %s, not %s" msgstr "„%s“ обикновено следи „%s“, а не „%s“" -#: remote.c:766 +#: remote.c:761 #, c-format msgid "%s tracks both %s and %s" msgstr "„%s“ следи както „%s“, така и „%s“" -#: remote.c:774 +#: remote.c:769 msgid "Internal error" msgstr "Вътрешна грешка" -#: remote.c:1948 +#: remote.c:1943 #, c-format msgid "Your branch is based on '%s', but the upstream is gone.\n" msgstr "Този клон следи „%s“, но следеният клон е изтрит.\n" -#: remote.c:1952 +#: remote.c:1947 msgid " (use \"git branch --unset-upstream\" to fixup)\n" msgstr " (за да коригирате това, използвайте „git branch --unset-upstream“)\n" -#: remote.c:1955 +#: remote.c:1950 #, c-format msgid "Your branch is up-to-date with '%s'.\n" -msgstr "Клонът е актуализиран както „%s“.\n" +msgstr "Клонът е актуализиран към „%s“.\n" -#: remote.c:1959 +#: remote.c:1954 #, c-format msgid "Your branch is ahead of '%s' by %d commit.\n" msgid_plural "Your branch is ahead of '%s' by %d commits.\n" msgstr[0] "Клонът ви е с %2$d подаване пред „%1$s“.\n" msgstr[1] "Клонът ви е с %2$d подавания пред „%1$s“.\n" -#: remote.c:1965 +#: remote.c:1960 msgid " (use \"git push\" to publish your local commits)\n" msgstr " (публикувайте локалните си промени чрез „git push“)\n" -#: remote.c:1968 +#: remote.c:1963 #, c-format msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n" msgid_plural "" @@ -1122,11 +1179,11 @@ msgstr[0] "" msgstr[1] "" "Клонът ви е с %2$d подавания след „%1$s“ и може да бъде тривиално слят.\n" -#: remote.c:1976 +#: remote.c:1971 msgid " (use \"git pull\" to update your local branch)\n" msgstr " (обновете локалния си клон чрез „git pull“)\n" -#: remote.c:1979 +#: remote.c:1974 #, c-format msgid "" "Your branch and '%s' have diverged,\n" @@ -1141,7 +1198,7 @@ msgstr[1] "" "Текущият клон се е отделил от „%s“,\n" "двата имат съответно по %d и %d несъвпадащи подавания.\n" -#: remote.c:1989 +#: remote.c:1984 msgid " (use \"git pull\" to merge the remote branch into yours)\n" msgstr " (слейте отдалечения клон в локалния чрез „git pull“)\n" @@ -1154,247 +1211,266 @@ msgstr "неуспешно отваряне на „/dev/null“" msgid "dup2(%d,%d) failed" msgstr "неуспешно изпълнение на dup2(%d,%d)" -#: sequencer.c:206 builtin/merge.c:786 builtin/merge.c:899 -#: builtin/merge.c:1009 builtin/merge.c:1019 +#: sequencer.c:171 builtin/merge.c:782 builtin/merge.c:893 +#: builtin/merge.c:1003 builtin/merge.c:1013 #, c-format msgid "Could not open '%s' for writing" -msgstr "" +msgstr "„%s“ не може да бъде отворен за запис" -#: sequencer.c:208 builtin/merge.c:343 builtin/merge.c:789 -#: builtin/merge.c:1011 builtin/merge.c:1024 +#: sequencer.c:173 builtin/merge.c:343 builtin/merge.c:785 +#: builtin/merge.c:1005 builtin/merge.c:1018 #, c-format msgid "Could not write to '%s'" -msgstr "" +msgstr "„%s“ не може да бъде записан" -#: sequencer.c:229 +# FIXME git add for consistence +#: sequencer.c:194 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add ' or 'git rm '" msgstr "" +"след коригирането на конфликтите, отбележете съответните\n" +"пътища с „git add ПЪТ…“ или „git rm ПЪТ…“." -#: sequencer.c:232 +#: sequencer.c:197 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add ' or 'git rm '\n" "and commit the result with 'git commit'" msgstr "" +"след коригирането на конфликтите, отбележете съответните\n" +"пътища с „git add ПЪТ…“ или „git rm ПЪТ…“, след което\n" +"подайте резултата с командата „git commit'“." -#: sequencer.c:245 sequencer.c:879 sequencer.c:962 +# FIXME - must be the same as Could not write to '%s' above +#: sequencer.c:210 sequencer.c:841 sequencer.c:924 #, c-format msgid "Could not write to %s" -msgstr "" +msgstr "„%s“ не може да бъде записан" -#: sequencer.c:248 +# FIXME wrap up as ffinishing the work on, in fact, full stop at end for consistency with below +#: sequencer.c:213 #, c-format msgid "Error wrapping up %s" -msgstr "" +msgstr "Обработката на „%s“ не завърши успешно." -#: sequencer.c:263 +#: sequencer.c:228 msgid "Your local changes would be overwritten by cherry-pick." -msgstr "" +msgstr "Локалните ви промени ще бъдат презаписани при отбирането на подавания." -#: sequencer.c:265 +#: sequencer.c:230 msgid "Your local changes would be overwritten by revert." -msgstr "" +msgstr "Локалните ви промени ще бъдат презаписани при отмяната на подавания." -#: sequencer.c:268 +#: sequencer.c:233 msgid "Commit your changes or stash them to proceed." -msgstr "" +msgstr "Подайте или скатайте промените, за да продължите" + +#: sequencer.c:250 +msgid "Failed to lock HEAD during fast_forward_to" +msgstr "Указателят „HEAD“ не може да бъде заключен при тривиално сливане" #. TRANSLATORS: %s will be "revert" or "cherry-pick" -#: sequencer.c:325 +#: sequencer.c:293 #, c-format msgid "%s: Unable to write new index file" msgstr "%s: новият индекс не може да бъде запазен" -#: sequencer.c:356 +#: sequencer.c:324 msgid "Could not resolve HEAD commit\n" -msgstr "" +msgstr "Подаването сочено от указателя „HEAD“ не може да бъде открито\n" -#: sequencer.c:378 +#: sequencer.c:344 msgid "Unable to update cache tree\n" -msgstr "" +msgstr "Дървото на кеша не може да бъде обновено\n" -#: sequencer.c:430 +#: sequencer.c:391 #, c-format msgid "Could not parse commit %s\n" -msgstr "" +msgstr "Подаването „%s“ не може да бъде анализирано\n" -#: sequencer.c:435 +#: sequencer.c:396 #, c-format msgid "Could not parse parent commit %s\n" -msgstr "" +msgstr "Родителското подаване „%s“ не може да бъде анализирано\n" -#: sequencer.c:501 +#: sequencer.c:462 msgid "Your index file is unmerged." msgstr "Индексът не е слят." -#: sequencer.c:520 +#: sequencer.c:481 #, c-format msgid "Commit %s is a merge but no -m option was given." -msgstr "" +msgstr "Подаването „%s“ е сливане, но не е дадена опцията „-m“" -#: sequencer.c:528 +#: sequencer.c:489 #, c-format msgid "Commit %s does not have parent %d" -msgstr "" +msgstr "Подаването „%s“ няма родител %d" -#: sequencer.c:532 +#: sequencer.c:493 #, c-format msgid "Mainline was specified but commit %s is not a merge." -msgstr "" +msgstr "Указано е базово подаване, но подаването „%s“ не е сливане." #. TRANSLATORS: The first %s will be "revert" or #. "cherry-pick", the second %s a SHA1 -#: sequencer.c:545 +#: sequencer.c:506 #, c-format msgid "%s: cannot parse parent commit %s" -msgstr "" +msgstr "%s: неразпозната стойност за родителското подаване „%s“" -#: sequencer.c:549 +#: sequencer.c:510 #, c-format msgid "Cannot get commit message for %s" -msgstr "" +msgstr "Неуспешно извличане на съобщението за подаване на „%s“" -#: sequencer.c:635 +#: sequencer.c:596 #, c-format msgid "could not revert %s... %s" -msgstr "" +msgstr "подаването „%s“… не може да бъде отменено: „%s“" -#: sequencer.c:636 +#: sequencer.c:597 #, c-format msgid "could not apply %s... %s" -msgstr "" +msgstr "подаването „%s“… не може да бъде приложено: „%s“" -#: sequencer.c:672 +#: sequencer.c:633 msgid "empty commit set passed" -msgstr "" +msgstr "зададено е празно множество от подавания" -#: sequencer.c:680 +#: sequencer.c:641 #, c-format msgid "git %s: failed to read the index" -msgstr "" +msgstr "git %s: неуспешно изчитане на индекса" -#: sequencer.c:685 +#: sequencer.c:645 #, c-format msgid "git %s: failed to refresh the index" -msgstr "" +msgstr "git %s: неуспешно обновяване на индекса" -#: sequencer.c:743 +#: sequencer.c:705 #, c-format msgid "Cannot %s during a %s" -msgstr "" +msgstr "По време на „%1$s“ не може да се извърши „%2$s“" -#: sequencer.c:765 +#: sequencer.c:727 #, c-format msgid "Could not parse line %d." -msgstr "" +msgstr "%d-ят ред не може да се анализира." -#: sequencer.c:770 +#: sequencer.c:732 msgid "No commits parsed." -msgstr "" +msgstr "Никое от подаванията не може да се разпознае." -#: sequencer.c:783 +# FIXME Could not open %s. - full stop for consistence with next message +#: sequencer.c:745 #, c-format msgid "Could not open %s" -msgstr "" +msgstr "„%s“ не може да се прочете." -#: sequencer.c:787 +#: sequencer.c:749 #, c-format msgid "Could not read %s." -msgstr "" +msgstr "„%s“ не може да се отвори." -#: sequencer.c:794 +#: sequencer.c:756 #, c-format msgid "Unusable instruction sheet: %s" -msgstr "" +msgstr "Файлът с описание на предстоящите действия — „%s“ не може да се ползва" -#: sequencer.c:824 +#: sequencer.c:786 #, c-format msgid "Invalid key: %s" -msgstr "" +msgstr "Неправилен ключ: „%s“" -#: sequencer.c:827 +#: sequencer.c:789 #, c-format msgid "Invalid value for %s: %s" -msgstr "" +msgstr "Неправилна стойност за „%s“: „%s“" -#: sequencer.c:839 +#: sequencer.c:801 #, c-format msgid "Malformed options sheet: %s" -msgstr "" +msgstr "Неправилно съдържание на файла с опции: „%s“" -#: sequencer.c:860 +#: sequencer.c:822 msgid "a cherry-pick or revert is already in progress" msgstr "" +"в момента вече се извършва отбиране на подавания или пребазиране на клона" -#: sequencer.c:861 +#: sequencer.c:823 msgid "try \"git cherry-pick (--continue | --quit | --abort)\"" -msgstr "" +msgstr "използвайте „git cherry-pick (--continue | --quit | --abort)“" -#: sequencer.c:865 +#: sequencer.c:827 #, c-format msgid "Could not create sequencer directory %s" -msgstr "" +msgstr "Директорията за секвенсора „%s“ не може да бъде създадена" -#: sequencer.c:881 sequencer.c:966 +#: sequencer.c:843 sequencer.c:928 #, c-format msgid "Error wrapping up %s." -msgstr "" +msgstr "Обработката на „%s“ не завърши успешно." -#: sequencer.c:900 sequencer.c:1036 +#: sequencer.c:862 sequencer.c:998 msgid "no cherry-pick or revert in progress" msgstr "" +"в момента не се извършва отбиране на подавания или пребазиране на клона" -#: sequencer.c:902 +#: sequencer.c:864 msgid "cannot resolve HEAD" -msgstr "" +msgstr "Подаването сочено от указателя „HEAD“ не може да бъде открито" -#: sequencer.c:904 +#: sequencer.c:866 msgid "cannot abort from a branch yet to be born" msgstr "" +"действието не може да бъде преустановено, когато сте на клон, който тепърва " +"предстои да бъде създаден" -#: sequencer.c:926 builtin/apply.c:4061 +#: sequencer.c:888 builtin/apply.c:4062 #, c-format msgid "cannot open %s: %s" -msgstr "" +msgstr "файлът „%s“ не може да бъде отворен: %s" -#: sequencer.c:929 +#: sequencer.c:891 #, c-format msgid "cannot read %s: %s" -msgstr "" +msgstr "файлът „%s“ не може да бъде прочетен: %s" -#: sequencer.c:930 +#: sequencer.c:892 msgid "unexpected end of file" -msgstr "" +msgstr "неочакван край на файл" -#: sequencer.c:936 +#: sequencer.c:898 #, c-format msgid "stored pre-cherry-pick HEAD file '%s' is corrupt" msgstr "" +"запазеният преди започването на отбирането файл за указателя „HEAD“ — „%s“ е " +"повреден" -#: sequencer.c:959 +#: sequencer.c:921 #, c-format msgid "Could not format %s." -msgstr "" +msgstr "Файлът „%s“ не може да се форматира по подходящия начин." -#: sequencer.c:1104 +#: sequencer.c:1066 #, c-format msgid "%s: can't cherry-pick a %s" -msgstr "" +msgstr "%s: не може да се отбере „%s“" -#: sequencer.c:1107 +#: sequencer.c:1069 #, c-format msgid "%s: bad revision" -msgstr "" +msgstr "%s: неправилна версия" -#: sequencer.c:1141 +#: sequencer.c:1103 msgid "Can't revert as initial commit" -msgstr "" +msgstr "Първоначалното подаване не може да бъде отменено" -#: sequencer.c:1142 +#: sequencer.c:1104 msgid "Can't cherry-pick into empty head" -msgstr "" +msgstr "При празен връх не могат да се отбират подавания" #: sha1_name.c:439 msgid "" @@ -1408,34 +1484,33 @@ msgid "" "examine these refs and maybe delete them. Turn this message off by\n" "running \"git config advice.objectNameWarning false\"" msgstr "" -"При нормална работа git никога не създава указатели, които завършват с 40\n" -"шестнасетични знаци, защото те ще бъдат прескачани, когато указвате \n" -"шестнайсетични знаци. Една възможност е такива указатели да са създадени\n" -"по погрешка. Например:\n" +"При нормална работа Git никога не създава указатели, които завършват с 40\n" +"шестнадесетични знака, защото стандартно те ще бъдат прескачани.\n" +"Възможно е такива указатели да са създадени случайно. Например:\n" "\n" " git checkout -b $BRANCH $(git rev-parse…)\n" "\n" "където стойността на променливата на средата BRANCH е празна, при което се\n" "създава подобен указател. Прегледайте тези указатели и ги изтрийте. Можете " "да\n" -"спрете това съобщение като изпълнете „git config advice.objectNameWarning " -"false“" +"спрете това съобщение като изпълните командата:\n" +"„git config advice.objectNameWarning false“" -#: sha1_name.c:1072 +#: sha1_name.c:1060 msgid "HEAD does not point to a branch" msgstr "Указателят „HEAD“ не сочи към клон" -#: sha1_name.c:1075 +#: sha1_name.c:1063 #, c-format msgid "No such branch: '%s'" msgstr "Не съществува клон на име „%s“" -#: sha1_name.c:1077 +#: sha1_name.c:1065 #, c-format msgid "No upstream configured for branch '%s'" msgstr "Не е зададен клон-източник за клона „%s“" -#: sha1_name.c:1081 +#: sha1_name.c:1069 #, c-format msgid "Upstream branch '%s' not stored as a remote-tracking branch" msgstr "Клонът-източник „%s“ не е съхранен като следящ клон" @@ -1463,67 +1538,67 @@ msgstr "Записът „%s“ във файла „.gitmodules“ не мож #: submodule.c:120 msgid "staging updated .gitmodules failed" -msgstr "неуспешно добавяне в индекса на променения файл „.gitmodules“" +msgstr "неуспешно добавяне на променения файл „.gitmodules“ в индекса" -#: submodule.c:1121 builtin/init-db.c:363 +#: submodule.c:1118 builtin/init-db.c:363 #, c-format msgid "Could not create git link %s" msgstr "Връзката в Git „%s“ не може да бъде създадена" -#: submodule.c:1132 +#: submodule.c:1129 #, c-format msgid "Could not set core.worktree in %s" -msgstr "В „%s“ не може да се зададе настройката „core.worktree“" +msgstr "Настройката „core.worktree“ не може да се зададе в „%s“" -#: unpack-trees.c:206 +#: unpack-trees.c:202 msgid "Checking out files" msgstr "Изтегляне на файлове" #: urlmatch.c:120 msgid "invalid URL scheme name or missing '://' suffix" -msgstr "" +msgstr "неправилна схема за адрес или суфиксът „://“ липсва" #: urlmatch.c:144 urlmatch.c:297 urlmatch.c:356 #, c-format msgid "invalid %XX escape sequence" -msgstr "" +msgstr "неправилна екранираща последователност „%XX“" #: urlmatch.c:172 msgid "missing host and scheme is not 'file:'" -msgstr "" +msgstr "не е указана машина, а схемата не е „file:“" #: urlmatch.c:189 msgid "a 'file:' URL may not have a port number" -msgstr "" +msgstr "при схема „file:“ не можете да указвате номер на порт" #: urlmatch.c:199 msgid "invalid characters in host name" -msgstr "" +msgstr "неправилни знаци в името на машина" #: urlmatch.c:244 urlmatch.c:255 msgid "invalid port number" -msgstr "" +msgstr "неправилен номер на порт" #: urlmatch.c:322 msgid "invalid '..' path segment" -msgstr "" +msgstr "неправилна част от пътя „..“" -#: wrapper.c:422 +#: wrapper.c:460 #, c-format msgid "unable to access '%s': %s" msgstr "няма достъп до „%s“: %s" -#: wrapper.c:443 +#: wrapper.c:481 #, c-format msgid "unable to access '%s'" msgstr "няма достъп до „%s“" -#: wrapper.c:454 +#: wrapper.c:492 #, c-format msgid "unable to look up current user in the passwd file: %s" msgstr "текущият потребител не може да бъде открит във файла „/etc/passwd“: %s" -#: wrapper.c:455 +#: wrapper.c:493 msgid "no such user" msgstr "такъв потребител не съществува" @@ -1612,7 +1687,7 @@ msgstr "добавени от тях:" #: wt-status.c:260 msgid "deleted by us:" -msgstr "изтрити от нас:" +msgstr "изтрити от вас:" #: wt-status.c:262 msgid "both added:" @@ -1676,15 +1751,15 @@ msgstr "неследено съдържание, " msgid "bug: unhandled diff status %c" msgstr "грешка: състоянието на промяната „%c“ не може да бъде обработено" -#: wt-status.c:765 +#: wt-status.c:764 msgid "Submodules changed but not updated:" msgstr "Подмодулите са променени, но не са обновени:" -#: wt-status.c:767 +#: wt-status.c:766 msgid "Submodule changes to be committed:" msgstr "Промени в подмодулите за подаване:" -#: wt-status.c:846 +#: wt-status.c:845 msgid "" "Do not touch the line above.\n" "Everything below will be removed." @@ -1692,193 +1767,193 @@ msgstr "" "Не променяйте горния ред.\n" "Всичко отдолу ще бъде изтрито." -#: wt-status.c:937 +#: wt-status.c:936 msgid "You have unmerged paths." msgstr "Някои пътища не са слети." -#: wt-status.c:940 +#: wt-status.c:939 msgid " (fix conflicts and run \"git commit\")" msgstr " (коригирайте конфликтите и изпълнете „git commit“)" -#: wt-status.c:943 +#: wt-status.c:942 msgid "All conflicts fixed but you are still merging." msgstr "Всички конфликти са решени, но продължавате сливането." -#: wt-status.c:946 +#: wt-status.c:945 msgid " (use \"git commit\" to conclude merge)" msgstr " (използвайте „git commit“, за да завършите сливането)" -#: wt-status.c:956 +#: wt-status.c:955 msgid "You are in the middle of an am session." msgstr "В момента прилагате поредица от кръпки чрез „git am“." -#: wt-status.c:959 +#: wt-status.c:958 msgid "The current patch is empty." msgstr "Текущата кръпка е празна." -#: wt-status.c:963 +#: wt-status.c:962 msgid " (fix conflicts and then run \"git am --continue\")" msgstr " (коригирайте конфликтите и изпълнете „git am --continue“)" -#: wt-status.c:965 +#: wt-status.c:964 msgid " (use \"git am --skip\" to skip this patch)" msgstr " (използвайте „git am --skip“, за да пропуснете тази кръпка)" -#: wt-status.c:967 +#: wt-status.c:966 msgid " (use \"git am --abort\" to restore the original branch)" msgstr "" " (използвайте „git am --abort“, за да възстановите първоначалния клон)" -#: wt-status.c:1027 wt-status.c:1044 +#: wt-status.c:1026 wt-status.c:1043 #, c-format msgid "You are currently rebasing branch '%s' on '%s'." msgstr "В момента пребазирате клона „%s“ върху „%s“." -#: wt-status.c:1032 wt-status.c:1049 +#: wt-status.c:1031 wt-status.c:1048 msgid "You are currently rebasing." msgstr "В момента пребазирате." -#: wt-status.c:1035 +#: wt-status.c:1034 msgid " (fix conflicts and then run \"git rebase --continue\")" msgstr " (коригирайте конфликтите и използвайте „git rebase --continue“)" -#: wt-status.c:1037 +#: wt-status.c:1036 msgid " (use \"git rebase --skip\" to skip this patch)" msgstr " (използвайте „git rebase --skip“, за да пропуснете тази кръпка)" -#: wt-status.c:1039 +#: wt-status.c:1038 msgid " (use \"git rebase --abort\" to check out the original branch)" msgstr "" " (използвайте „git rebase --abort“, за да възстановите първоначалния клон)" -#: wt-status.c:1052 +#: wt-status.c:1051 msgid " (all conflicts fixed: run \"git rebase --continue\")" msgstr " (всички конфликти са коригирани: изпълнете „git rebase --continue“)" -#: wt-status.c:1056 +#: wt-status.c:1055 #, c-format msgid "" "You are currently splitting a commit while rebasing branch '%s' on '%s'." msgstr "В момента разделяте подаване докато пребазирате клона „%s“ върху „%s“." -#: wt-status.c:1061 +#: wt-status.c:1060 msgid "You are currently splitting a commit during a rebase." msgstr "В момента разделяте подаване докато пребазирате." -#: wt-status.c:1064 +#: wt-status.c:1063 msgid " (Once your working directory is clean, run \"git rebase --continue\")" msgstr "" " (След като работното ви дърво стане чисто, използвайте „git rebase --" "continue“)" -#: wt-status.c:1068 +#: wt-status.c:1067 #, c-format msgid "You are currently editing a commit while rebasing branch '%s' on '%s'." msgstr "" "В момента редактирате подаване докато пребазирате клона „%s“ върху „%s“." -#: wt-status.c:1073 +#: wt-status.c:1072 msgid "You are currently editing a commit during a rebase." msgstr "В момента редактирате подаване докато пребазирате." -#: wt-status.c:1076 +#: wt-status.c:1075 msgid " (use \"git commit --amend\" to amend the current commit)" msgstr "" " (използвайте „git commit --amend“, за да редактирате текущото подаване)" -#: wt-status.c:1078 +#: wt-status.c:1077 msgid "" " (use \"git rebase --continue\" once you are satisfied with your changes)" msgstr "" " (използвайте „git rebase --continue“, след като завършите промените си)" -#: wt-status.c:1088 +#: wt-status.c:1087 #, c-format msgid "You are currently cherry-picking commit %s." msgstr "В момента отбирате подаването „%s“." -#: wt-status.c:1093 +#: wt-status.c:1092 msgid " (fix conflicts and run \"git cherry-pick --continue\")" msgstr " (коригирайте конфликтите и изпълнете „git cherry-pick --continue“)" -#: wt-status.c:1096 +#: wt-status.c:1095 msgid " (all conflicts fixed: run \"git cherry-pick --continue\")" msgstr "" " (всички конфликти са коригирани, изпълнете „git cherry-pick --continue“)" -#: wt-status.c:1098 +#: wt-status.c:1097 msgid " (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)" msgstr "" " (използвайте „git cherry-pick --abort“, за да отмените всички действия с " "отбиране)" -#: wt-status.c:1107 +#: wt-status.c:1106 #, c-format msgid "You are currently reverting commit %s." msgstr "В момента отменяте подаване „%s“." -#: wt-status.c:1112 +#: wt-status.c:1111 msgid " (fix conflicts and run \"git revert --continue\")" msgstr " (коригирайте конфликтите и изпълнете „git revert --continue“)" -#: wt-status.c:1115 +#: wt-status.c:1114 msgid " (all conflicts fixed: run \"git revert --continue\")" msgstr " (всички конфликти са коригирани, изпълнете „git revert --continue“)" -#: wt-status.c:1117 +#: wt-status.c:1116 msgid " (use \"git revert --abort\" to cancel the revert operation)" msgstr "" " (използвайте „git revert --abort“, за да преустановите отмяната на " "подаване)" -#: wt-status.c:1128 +#: wt-status.c:1127 #, c-format msgid "You are currently bisecting, started from branch '%s'." msgstr "В момента търсите двоично, като сте стартирали от клон „%s“." -#: wt-status.c:1132 +#: wt-status.c:1131 msgid "You are currently bisecting." msgstr "В момента търсите двоично." -#: wt-status.c:1135 +#: wt-status.c:1134 msgid " (use \"git bisect reset\" to get back to the original branch)" msgstr "" " (използвайте „git bisect reset“, за да се върнете към първоначалното " "състояние и клон)" -#: wt-status.c:1310 +#: wt-status.c:1309 msgid "On branch " msgstr "На клон " -#: wt-status.c:1317 +#: wt-status.c:1316 msgid "rebase in progress; onto " msgstr "извършвате пребазиране върху " -#: wt-status.c:1324 +#: wt-status.c:1323 msgid "HEAD detached at " -msgstr "Указателят „HEAD“ не е свързан и е на подаване " +msgstr "Указателят „HEAD“ не е свързан и е при подаване " -#: wt-status.c:1326 +#: wt-status.c:1325 msgid "HEAD detached from " msgstr "Указателят „HEAD“ не е свързан и е отделѐн от " -#: wt-status.c:1329 +#: wt-status.c:1328 msgid "Not currently on any branch." -msgstr "Извън всички клони" +msgstr "Извън всички клони." -#: wt-status.c:1346 +#: wt-status.c:1345 msgid "Initial commit" msgstr "Първоначално подаване" -#: wt-status.c:1360 +#: wt-status.c:1359 msgid "Untracked files" msgstr "Неследени файлове" -#: wt-status.c:1362 +#: wt-status.c:1361 msgid "Ignored files" msgstr "Игнорирани файлове" -#: wt-status.c:1366 +#: wt-status.c:1365 #, c-format msgid "" "It took %.2f seconds to enumerate untracked files. 'status -uno'\n" @@ -1887,35 +1962,35 @@ msgid "" msgstr "" "Бяха необходими %.2f секунди за изброяването на неследените файлове.\n" "Добавянето на опцията „-uno“ към командата „git status“, ще ускори\n" -"нещата, но не трябва да забравяте ръчно да добавяте новите файлове.\n" +"изпълнението, но не трябва да забравяте ръчно да добавяте новите файлове.\n" "За повече подробности погледнете „git status help“." -#: wt-status.c:1372 +#: wt-status.c:1371 #, c-format msgid "Untracked files not listed%s" msgstr "Неследените файлове не са изведени%s" -#: wt-status.c:1374 +#: wt-status.c:1373 msgid " (use -u option to show untracked files)" msgstr " (използвайте опцията „-u“, за да изведете неследените файлове)" -#: wt-status.c:1380 +#: wt-status.c:1379 msgid "No changes" msgstr "Няма промени" -#: wt-status.c:1385 +#: wt-status.c:1384 #, c-format msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" msgstr "" "към индекса за подаване не са добавени промени (използвайте „git add“ и/или " "„git commit -a“)\n" -#: wt-status.c:1388 +#: wt-status.c:1387 #, c-format msgid "no changes added to commit\n" msgstr "към индекса за подаване не са добавени промени\n" -#: wt-status.c:1391 +#: wt-status.c:1390 #, c-format msgid "" "nothing added to commit but untracked files present (use \"git add\" to " @@ -1924,48 +1999,48 @@ msgstr "" "към индекса за подаване не са добавени промени, но има нови файлове " "(използвайте „git add“, за да започне тяхното следене)\n" -#: wt-status.c:1394 +#: wt-status.c:1393 #, c-format msgid "nothing added to commit but untracked files present\n" msgstr "към индекса за подаване не са добавени промени, но има нови файлове\n" -#: wt-status.c:1397 +#: wt-status.c:1396 #, c-format msgid "nothing to commit (create/copy files and use \"git add\" to track)\n" msgstr "" "липсват каквито и да е промени (създайте или копирайте файлове и използвайте " "„git add“, за да започне тяхното следене)\n" -#: wt-status.c:1400 wt-status.c:1405 +#: wt-status.c:1399 wt-status.c:1404 #, c-format msgid "nothing to commit\n" msgstr "липсват каквито и да е промени\n" -#: wt-status.c:1403 +#: wt-status.c:1402 #, c-format msgid "nothing to commit (use -u to show untracked files)\n" msgstr "" "липсват каквито и да е промени (използвайте опцията „-u“, за да се изведат и " "неследените файлове)\n" -#: wt-status.c:1407 +#: wt-status.c:1406 #, c-format msgid "nothing to commit, working directory clean\n" msgstr "липсват каквито и да е промени, работното дърво е чисто\n" -#: wt-status.c:1516 +#: wt-status.c:1515 msgid "HEAD (no branch)" msgstr "HEAD (извън клон)" -#: wt-status.c:1522 +#: wt-status.c:1521 msgid "Initial commit on " -msgstr "Първоначално подаване на " +msgstr "Първоначално подаване на клон" -#: wt-status.c:1554 +#: wt-status.c:1553 msgid "gone" msgstr "изтрит" -#: wt-status.c:1556 wt-status.c:1564 +#: wt-status.c:1555 wt-status.c:1563 msgid "behind " msgstr "назад с " @@ -1976,7 +2051,7 @@ msgstr "неуспешно изтриване на „%s“" #: builtin/add.c:21 msgid "git add [options] [--] ..." -msgstr "git add [ОПЦИИ] [--] ПЪТ…" +msgstr "git add [ОПЦИЯ…] [--] ПЪТ…" #: builtin/add.c:64 #, c-format @@ -1996,7 +2071,7 @@ msgstr "изтриване на „%s“\n" msgid "Unstaged changes after refreshing the index:" msgstr "Промени, които и след обновяването на индекса не са добавени към него:" -#: builtin/add.c:193 +#: builtin/add.c:193 builtin/rev-parse.c:781 msgid "Could not read the index" msgstr "Индексът не може да бъде прочетен" @@ -2028,15 +2103,15 @@ msgid "The following paths are ignored by one of your .gitignore files:\n" msgstr "" "Следните пътища ще бъдат игнорирани според някой от файловете „.gitignore“:\n" -#: builtin/add.c:248 builtin/clean.c:876 builtin/fetch.c:93 builtin/mv.c:70 -#: builtin/prune-packed.c:77 builtin/push.c:489 builtin/remote.c:1344 +#: builtin/add.c:248 builtin/clean.c:875 builtin/fetch.c:108 builtin/mv.c:70 +#: builtin/prune-packed.c:77 builtin/push.c:488 builtin/remote.c:1367 #: builtin/rm.c:269 msgid "dry run" msgstr "пробно изпълнeние" -#: builtin/add.c:249 builtin/apply.c:4410 builtin/check-ignore.c:19 -#: builtin/commit.c:1256 builtin/count-objects.c:95 builtin/fsck.c:612 -#: builtin/log.c:1592 builtin/mv.c:69 builtin/read-tree.c:113 +#: builtin/add.c:249 builtin/apply.c:4411 builtin/check-ignore.c:19 +#: builtin/commit.c:1328 builtin/count-objects.c:95 builtin/fsck.c:606 +#: builtin/log.c:1613 builtin/mv.c:69 builtin/read-tree.c:113 msgid "be verbose" msgstr "повече подробности" @@ -2044,7 +2119,7 @@ msgstr "повече подробности" msgid "interactive picking" msgstr "интерактивно отбиране на промени" -#: builtin/add.c:252 builtin/checkout.c:1108 builtin/reset.c:283 +#: builtin/add.c:252 builtin/checkout.c:1102 builtin/reset.c:285 msgid "select hunks interactively" msgstr "интерактивен избор на парчета код" @@ -2092,7 +2167,7 @@ msgstr "" #: builtin/add.c:286 #, c-format msgid "Use -f if you really want to add them.\n" -msgstr "Използвайте опцията „-f“, ако наистина искате да ги добавите.\n" +msgstr "Използвайте опцията „-f“, за да ги добавите наистина.\n" #: builtin/add.c:287 msgid "no files added" @@ -2102,91 +2177,99 @@ msgstr "не са добавени файлове" msgid "adding files failed" msgstr "неуспешно добавяне на файлове" -#: builtin/add.c:330 +#: builtin/add.c:329 msgid "-A and -u are mutually incompatible" msgstr "опциите „-A“ и „-u“ са несъвместими" -#: builtin/add.c:337 +#: builtin/add.c:336 msgid "Option --ignore-missing can only be used together with --dry-run" msgstr "Опцията „--ignore-missing“ е съвместима само с „--dry-run“" -#: builtin/add.c:358 +#: builtin/add.c:357 #, c-format msgid "Nothing specified, nothing added.\n" msgstr "Нищо не е зададено и нищо не е добавено.\n" -#: builtin/add.c:359 +#: builtin/add.c:358 #, c-format msgid "Maybe you wanted to say 'git add .'?\n" msgstr "Вероятно искахте да използвате „git add .“?\n" -#: builtin/add.c:364 builtin/check-ignore.c:172 builtin/clean.c:920 -#: builtin/commit.c:320 builtin/mv.c:90 builtin/reset.c:234 builtin/rm.c:299 +#: builtin/add.c:363 builtin/check-ignore.c:172 builtin/clean.c:919 +#: builtin/commit.c:319 builtin/mv.c:90 builtin/reset.c:234 builtin/rm.c:299 msgid "index file corrupt" msgstr "файлът с индекса е повреден" -#: builtin/add.c:448 builtin/apply.c:4506 builtin/mv.c:280 builtin/rm.c:432 +#: builtin/add.c:446 builtin/apply.c:4506 builtin/mv.c:280 builtin/rm.c:431 msgid "Unable to write new index file" msgstr "Новият индекс не може да бъде записан" #: builtin/apply.c:57 msgid "git apply [options] [...]" -msgstr "" +msgstr "git apply [ОПЦИЯ…] [КРЪПКА…]" #: builtin/apply.c:110 #, c-format msgid "unrecognized whitespace option '%s'" -msgstr "" +msgstr "непозната опция за знаците за интервали „%s“" #: builtin/apply.c:125 #, c-format msgid "unrecognized whitespace ignore option '%s'" -msgstr "" +msgstr "непозната опция за игнориране на знаците за интервали „%s“" -#: builtin/apply.c:823 +#: builtin/apply.c:825 #, c-format msgid "Cannot prepare timestamp regexp %s" -msgstr "" +msgstr "Регулярният израз за времето „%s“ не може за бъде компилиран" -#: builtin/apply.c:832 +#: builtin/apply.c:834 #, c-format msgid "regexec returned %d for input: %s" -msgstr "" +msgstr "Регулярният израз върна %d при подадена последователност „%s“ на входа" -#: builtin/apply.c:913 +#: builtin/apply.c:915 #, c-format msgid "unable to find filename in patch at line %d" -msgstr "" +msgstr "Липсва име на файл на ред %d от кръпката" -#: builtin/apply.c:945 +#: builtin/apply.c:947 #, c-format msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d" msgstr "" +"git apply: лош изход от командата „git-diff“ — на ред %2$d се очакваше „/dev/" +"null“, а бе получен „%1$s“" -#: builtin/apply.c:949 +#: builtin/apply.c:951 #, c-format msgid "git apply: bad git-diff - inconsistent new filename on line %d" msgstr "" +"git apply: лош изход от командата „git-diff“ — на ред %d бе получено " +"неправилно име на нов файл" -#: builtin/apply.c:950 +#: builtin/apply.c:952 #, c-format msgid "git apply: bad git-diff - inconsistent old filename on line %d" msgstr "" +"git apply: лош изход от командата „git-diff“ — на ред %d бе получено " +"неправилно име на стар файл" -#: builtin/apply.c:957 +#: builtin/apply.c:959 #, c-format msgid "git apply: bad git-diff - expected /dev/null on line %d" msgstr "" +"git apply: лош изход от командата „git-diff“ — на ред %d се очакваше „/dev/" +"null“" #: builtin/apply.c:1422 #, c-format msgid "recount: unexpected line: %.*s" -msgstr "" +msgstr "при повторното преброяване бе получен неочакван ред: „%.*s“" #: builtin/apply.c:1479 #, c-format msgid "patch fragment without header at line %d: %.*s" -msgstr "" +msgstr "част от кръпка без заглавна част на ред %d: %.*s" #: builtin/apply.c:1496 #, c-format @@ -2197,30 +2280,34 @@ msgid_plural "" "git diff header lacks filename information when removing %d leading pathname " "components (line %d)" msgstr[0] "" +"След съкращаването на %d-та част от компонентите на пътя, в заглавната част " +"на „git diff“ липсва информация за име на файл (ред: %d)" msgstr[1] "" +"След съкращаването на първите %d части от компонентите на пътя, в заглавната " +"част на „git diff“ липсва информация за име на файл (ред: %d)" #: builtin/apply.c:1656 msgid "new file depends on old contents" -msgstr "" +msgstr "новият файл зависи от старото съдържание на файла" #: builtin/apply.c:1658 msgid "deleted file still has contents" -msgstr "" +msgstr "изтритият файл не е празен" #: builtin/apply.c:1684 #, c-format msgid "corrupt patch at line %d" -msgstr "" +msgstr "грешка в кръпката на ред %d" #: builtin/apply.c:1720 #, c-format msgid "new file %s depends on old contents" -msgstr "" +msgstr "новият файл „%s“ зависи от старото съдържание на файла" #: builtin/apply.c:1722 #, c-format msgid "deleted file %s still has contents" -msgstr "" +msgstr "изтритият файл „%s“ не е празен" # FIXME - double **?? #: builtin/apply.c:1725 @@ -2231,44 +2318,47 @@ msgstr "●● предупреждение: файлът „%s“ вече е #: builtin/apply.c:1871 #, c-format msgid "corrupt binary patch at line %d: %.*s" -msgstr "" +msgstr "грешка в двоичната кръпка на ред %d: %.*s" #: builtin/apply.c:1900 #, c-format msgid "unrecognized binary patch at line %d" -msgstr "" +msgstr "неразпозната двоичната кръпка на ред %d" #: builtin/apply.c:1986 #, c-format msgid "patch with only garbage at line %d" -msgstr "" +msgstr "кръпката е с изцяло повредени данни на ред %d" #: builtin/apply.c:2076 #, c-format msgid "unable to read symlink %s" -msgstr "" +msgstr "символната връзка „%s“ не може да бъде прочетена" #: builtin/apply.c:2080 #, c-format msgid "unable to open or read %s" -msgstr "" +msgstr "файлът „%s“ не може да бъде отворен или прочетен" #: builtin/apply.c:2688 #, c-format msgid "invalid start of line: '%c'" -msgstr "" +msgstr "неправилно начало на ред: „%c“" #: builtin/apply.c:2806 #, 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 реда)." #: builtin/apply.c:2818 #, c-format msgid "Context reduced to (%ld/%ld) to apply fragment at %d" msgstr "" +"Контекстът е намален на (%ld/%ld) за прилагането на парчето код на ред %d" #: builtin/apply.c:2824 #, c-format @@ -2276,100 +2366,105 @@ msgid "" "while searching for:\n" "%.*s" msgstr "" +"при търсене за:\n" +"%.*s" #: builtin/apply.c:2843 #, c-format msgid "missing binary patch data for '%s'" -msgstr "" +msgstr "липсват данните за двоичната кръпка за „%s“" -#: builtin/apply.c:2946 +#: builtin/apply.c:2944 #, c-format msgid "binary patch does not apply to '%s'" -msgstr "" +msgstr "двоичната кръпка не може да бъде приложена върху „%s“" -#: builtin/apply.c:2952 +#: builtin/apply.c:2950 #, c-format msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)" msgstr "" +"двоичната кръпка за „%s“ води до неправилни резултати (очакваше се SHA1: " +"„%s“, а бе получено: „%s“)" -#: builtin/apply.c:2973 +#: builtin/apply.c:2971 #, c-format msgid "patch failed: %s:%ld" -msgstr "" +msgstr "неуспешно прилагане на кръпка: „%s:%ld“" #: builtin/apply.c:3095 #, c-format msgid "cannot checkout %s" -msgstr "" +msgstr "„%s“ не може да се изтегли" #: builtin/apply.c:3140 builtin/apply.c:3149 builtin/apply.c:3194 #, c-format msgid "read of %s failed" -msgstr "" +msgstr "неуспешно прочитане на „%s“" #: builtin/apply.c:3174 builtin/apply.c:3396 #, c-format msgid "path %s has been renamed/deleted" -msgstr "" +msgstr "обектът с път „%s“ е преименуван или изтрит" #: builtin/apply.c:3255 builtin/apply.c:3410 #, c-format msgid "%s: does not exist in index" -msgstr "" +msgstr "„%s“ не съществува в индекса" #: builtin/apply.c:3259 builtin/apply.c:3402 builtin/apply.c:3424 #, c-format msgid "%s: %s" -msgstr "" +msgstr "„%s“: %s" #: builtin/apply.c:3264 builtin/apply.c:3418 #, c-format msgid "%s: does not match index" -msgstr "" +msgstr "„%s“ не съответства на индекса" #: builtin/apply.c:3366 msgid "removal patch leaves file contents" -msgstr "" +msgstr "изтриващата кръпка оставя файла непразен" #: builtin/apply.c:3435 #, c-format msgid "%s: wrong type" -msgstr "" +msgstr "„%s“: неправилен вид" #: builtin/apply.c:3437 #, c-format msgid "%s has type %o, expected %o" -msgstr "" +msgstr "„%s“ е от вид „%o“, а се очакваше „%o“" #: builtin/apply.c:3538 #, c-format msgid "%s: already exists in index" -msgstr "" +msgstr "„%s“: вече съществува в индекса" #: builtin/apply.c:3541 #, c-format msgid "%s: already exists in working directory" -msgstr "" +msgstr "„%s“: вече съществува в работната директория" #: builtin/apply.c:3561 #, c-format msgid "new mode (%o) of %s does not match old mode (%o)" -msgstr "" +msgstr "новите права за достъп (%o) на „%s“ не съвпадат със старите (%o)" #: builtin/apply.c:3566 #, c-format msgid "new mode (%o) of %s does not match old mode (%o) of %s" msgstr "" +"новите права за достъп (%o) на „%s“ не съвпадат със старите (%o) на „%s“" #: builtin/apply.c:3574 #, c-format msgid "%s: patch does not apply" -msgstr "" +msgstr "Кръпката „%s“ не може да бъде приложена" #: builtin/apply.c:3587 #, c-format msgid "Checking patch %s..." -msgstr "" +msgstr "Проверяване на кръпката „%s“…" #: builtin/apply.c:3680 builtin/checkout.c:213 builtin/reset.c:134 #, c-format @@ -2379,255 +2474,261 @@ msgstr "неуспешно създаване на запис в кеша чре #: builtin/apply.c:3823 #, c-format msgid "unable to remove %s from index" -msgstr "" +msgstr "„%s“ не може да се извади от индекса" -#: builtin/apply.c:3851 +#: builtin/apply.c:3852 #, c-format msgid "corrupt patch for submodule %s" -msgstr "" +msgstr "повредена кръпка за модула „%s“" -#: builtin/apply.c:3855 +#: builtin/apply.c:3856 #, c-format msgid "unable to stat newly created file '%s'" msgstr "" +"не може да се получи информация чрез „stat“ за новосъздадения файл „%s“" -#: builtin/apply.c:3860 +#: builtin/apply.c:3861 #, c-format msgid "unable to create backing store for newly created file %s" msgstr "" +"не може да се за създаде мястото за съхранение на новосъздадения файл „%s“" -#: builtin/apply.c:3863 builtin/apply.c:3971 +#: builtin/apply.c:3864 builtin/apply.c:3972 #, c-format msgid "unable to add cache entry for %s" -msgstr "" +msgstr "не може да се добави запис в кеша за „%s“" -#: builtin/apply.c:3896 +#: builtin/apply.c:3897 #, c-format msgid "closing file '%s'" -msgstr "" +msgstr "затваряне на файла „%s“" -#: builtin/apply.c:3945 +#: builtin/apply.c:3946 #, c-format msgid "unable to write file '%s' mode %o" -msgstr "" +msgstr "файлът „%s“ не може да се запише с режим на достъп „%o“" -#: builtin/apply.c:4032 +#: builtin/apply.c:4033 #, c-format msgid "Applied patch %s cleanly." -msgstr "" +msgstr "Кръпката „%s“ бе приложена чисто." -#: builtin/apply.c:4040 +#: builtin/apply.c:4041 msgid "internal error" -msgstr "" +msgstr "вътрешна грешка" -#: builtin/apply.c:4043 +#: builtin/apply.c:4044 #, c-format msgid "Applying patch %%s with %d reject..." msgid_plural "Applying patch %%s with %d rejects..." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Прилагане на кръпката „%%s“ с %d отхвърлено парче…" +msgstr[1] "Прилагане на кръпката „%%s“ с %d отхвърлени парчета…" -#: builtin/apply.c:4053 +#: builtin/apply.c:4054 #, c-format msgid "truncating .rej filename to %.*s.rej" -msgstr "" +msgstr "съкращаване на името на файла с отхвърлените парчета на „ %.*s.rej“" -#: builtin/apply.c:4074 +#: builtin/apply.c:4075 #, c-format msgid "Hunk #%d applied cleanly." -msgstr "" +msgstr "%d-то парче бе успешно приложено." -#: builtin/apply.c:4077 +#: builtin/apply.c:4078 #, c-format msgid "Rejected hunk #%d." -msgstr "" +msgstr "%d-то парче бе отхвърлено." -#: builtin/apply.c:4227 +#: builtin/apply.c:4228 msgid "unrecognized input" -msgstr "" +msgstr "непознат вход" -#: builtin/apply.c:4238 +#: builtin/apply.c:4239 msgid "unable to read index file" msgstr "индексът не може да бъде записан" -#: builtin/apply.c:4357 builtin/apply.c:4360 builtin/clone.c:90 -#: builtin/fetch.c:78 +#: builtin/apply.c:4358 builtin/apply.c:4361 builtin/clone.c:90 +#: builtin/fetch.c:93 msgid "path" msgstr "път" -#: builtin/apply.c:4358 +#: builtin/apply.c:4359 msgid "don't apply changes matching the given path" -msgstr "" +msgstr "без прилагане на промените напасващи на дадения път" -#: builtin/apply.c:4361 +#: builtin/apply.c:4362 msgid "apply changes matching the given path" -msgstr "" +msgstr "прилагане на промените напасващи на дадения път" -#: builtin/apply.c:4363 +#: builtin/apply.c:4364 msgid "num" -msgstr "" +msgstr "БРОЙ" -#: builtin/apply.c:4364 +#: builtin/apply.c:4365 msgid "remove leading slashes from traditional diff paths" -msgstr "" +msgstr "премахване на този БРОЙ водещи елементи от пътищата в разликата" -#: builtin/apply.c:4367 +#: builtin/apply.c:4368 msgid "ignore additions made by the patch" -msgstr "" +msgstr "игнориране на редовете добавени от тази кръпка" -#: builtin/apply.c:4369 +#: builtin/apply.c:4370 msgid "instead of applying the patch, output diffstat for the input" -msgstr "" +msgstr "извеждане на статистика на промените без прилагане на кръпката" -#: builtin/apply.c:4373 +#: builtin/apply.c:4374 msgid "show number of added and deleted lines in decimal notation" -msgstr "" +msgstr "извеждане на броя на добавените и изтритите редове" -#: builtin/apply.c:4375 +#: builtin/apply.c:4376 msgid "instead of applying the patch, output a summary for the input" -msgstr "" +msgstr "извеждане на статистика на входните данни без прилагане на кръпката" -#: builtin/apply.c:4377 +#: builtin/apply.c:4378 msgid "instead of applying the patch, see if the patch is applicable" -msgstr "" +msgstr "проверка дали кръпката може да се приложи, без действително прилагане" -#: builtin/apply.c:4379 +#: builtin/apply.c:4380 msgid "make sure the patch is applicable to the current index" -msgstr "" +msgstr "проверка дали кръпката може да бъде приложена към текущия индекс" -#: builtin/apply.c:4381 +#: builtin/apply.c:4382 msgid "apply a patch without touching the working tree" -msgstr "" +msgstr "прилагане на кръпката без промяна на работното дърво" -#: builtin/apply.c:4383 +#: builtin/apply.c:4384 msgid "also apply the patch (use with --stat/--summary/--check)" msgstr "" +"кръпката да бъде приложена. Опцията се комбинира с „--check“/„--stat“/„--" +"summary“" -#: builtin/apply.c:4385 +#: builtin/apply.c:4386 msgid "attempt three-way merge if a patch does not apply" -msgstr "" +msgstr "пробване с тройно сливане, ако кръпката не може да се приложи директно" -#: builtin/apply.c:4387 +#: builtin/apply.c:4388 msgid "build a temporary index based on embedded index information" msgstr "" +"създаване на временен индекс на база на включената информация за индекса" -#: builtin/apply.c:4389 builtin/checkout-index.c:197 builtin/ls-files.c:455 +#: builtin/apply.c:4390 builtin/checkout-index.c:198 builtin/ls-files.c:455 msgid "paths are separated with NUL character" msgstr "разделяне на пътищата с нулевия знак „NUL“" -#: builtin/apply.c:4392 +#: builtin/apply.c:4393 msgid "ensure at least lines of context match" msgstr "да се осигури контекст от поне такъв БРОЙ съвпадащи редове" -#: builtin/apply.c:4393 +#: builtin/apply.c:4394 msgid "action" -msgstr "" +msgstr "действие" -#: builtin/apply.c:4394 +#: builtin/apply.c:4395 msgid "detect new or modified lines that have whitespace errors" -msgstr "" +msgstr "засичане на нови или променени редове с грешки в знаците за интервали" -#: builtin/apply.c:4397 builtin/apply.c:4400 +#: builtin/apply.c:4398 builtin/apply.c:4401 msgid "ignore changes in whitespace when finding context" msgstr "" +"игнориране на промените в знаците за интервали при откриване на контекста" -#: builtin/apply.c:4403 +#: builtin/apply.c:4404 msgid "apply the patch in reverse" -msgstr "" +msgstr "прилагане на кръпката в обратна посока" -#: builtin/apply.c:4405 +#: builtin/apply.c:4406 msgid "don't expect at least one line of context" -msgstr "" +msgstr "без изискване на дори и един ред контекст" -#: builtin/apply.c:4407 +#: builtin/apply.c:4408 msgid "leave the rejected hunks in corresponding *.rej files" -msgstr "" +msgstr "оставяне на отхвърлените парчета във файлове с разширение „.rej“" -#: builtin/apply.c:4409 +#: builtin/apply.c:4410 msgid "allow overlapping hunks" -msgstr "" +msgstr "позволяване на застъпващи се парчета" -#: builtin/apply.c:4412 +#: builtin/apply.c:4413 msgid "tolerate incorrectly detected missing new-line at the end of file" -msgstr "" +msgstr "пренебрегване на неправилно липсващ знак за нов ред в края на файл" -#: builtin/apply.c:4415 +#: builtin/apply.c:4416 msgid "do not trust the line counts in the hunk headers" -msgstr "" +msgstr "без доверяване на номерата на редовете в заглавните части на парчетата" -#: builtin/apply.c:4417 +#: builtin/apply.c:4418 msgid "root" -msgstr "" +msgstr "НАЧАЛНА_ДИРЕКТОРИЯ" -#: builtin/apply.c:4418 +#: builtin/apply.c:4419 msgid "prepend to all filenames" -msgstr "" +msgstr "добавяне на тази НАЧАЛНА_ДИРЕКТОРИЯ към имената на всички файлове" -#: builtin/apply.c:4440 +#: builtin/apply.c:4441 msgid "--3way outside a repository" -msgstr "" +msgstr "като „--3way“, но извън хранилище" -#: builtin/apply.c:4448 +#: builtin/apply.c:4449 msgid "--index outside a repository" -msgstr "" +msgstr "като „--index“, но извън хранилище" -#: builtin/apply.c:4451 +#: builtin/apply.c:4452 msgid "--cached outside a repository" -msgstr "" +msgstr "като „--cached“, но извън хранилище" -#: builtin/apply.c:4467 +#: builtin/apply.c:4468 #, c-format msgid "can't open patch '%s'" -msgstr "" +msgstr "кръпката „%s“ не може да бъде отворена" -#: builtin/apply.c:4481 +#: builtin/apply.c:4482 #, c-format msgid "squelched %d whitespace error" msgid_plural "squelched %d whitespace errors" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "пренебрегната е %d грешка в знаците за интервали" +msgstr[1] "пренебрегнати са %d грешки в знаците за интервали" -#: builtin/apply.c:4487 builtin/apply.c:4497 +#: builtin/apply.c:4488 builtin/apply.c:4498 #, c-format msgid "%d line adds whitespace errors." msgid_plural "%d lines add whitespace errors." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d ред добавя грешки в знаците за интервали." +msgstr[1] "%d реда добавят грешки в знаците за интервали." #: builtin/archive.c:17 #, c-format msgid "could not create archive file '%s'" -msgstr "" +msgstr "архивният файл „%s“ не може да бъде създаден" #: builtin/archive.c:20 msgid "could not redirect output" -msgstr "" +msgstr "изходът не може да бъде пренасочен" #: builtin/archive.c:37 msgid "git archive: Remote with no URL" -msgstr "" +msgstr "git archive: Липсва адрес за отдалеченото хранилище" #: builtin/archive.c:58 msgid "git archive: expected ACK/NAK, got EOF" -msgstr "" +msgstr "git archive: очакваше се „ACK“/„NAK“, а бе получен „EOF“" #: builtin/archive.c:61 #, c-format msgid "git archive: NACK %s" -msgstr "" +msgstr "git archive: получен е „NACK“ — %s" #: builtin/archive.c:63 #, c-format msgid "remote error: %s" -msgstr "" +msgstr "отдалечена грешка: %s" #: builtin/archive.c:64 msgid "git archive: protocol error" -msgstr "" +msgstr "git archive: протоколна грешка" #: builtin/archive.c:68 msgid "git archive: expected a flush" -msgstr "" +msgstr "git archive: очакваше се изчистване на буферите чрез „flush“" #: builtin/bisect--helper.c:7 msgid "git bisect--helper --next-all [--no-checkout]" @@ -2642,139 +2743,150 @@ msgid "update BISECT_HEAD instead of checking out the current commit" msgstr "" "обновяване на указателя „BISECT_HEAD“ вместо да се използва текущото подаване" -#: builtin/blame.c:27 +#: builtin/blame.c:30 msgid "git blame [options] [rev-opts] [rev] [--] file" -msgstr "git blame [ОПЦИИ] [ОПЦИИ_ЗА_ВЕРСИЯТА] [ВЕРСИЯ] [--] ФАЙЛ" +msgstr "git blame [ОПЦИЯ…] [ОПЦИИ_ЗА_ВЕРСИЯТА] [ВЕРСИЯ] [--] ФАЙЛ" -#: builtin/blame.c:32 +#: builtin/blame.c:35 msgid "[rev-opts] are documented in git-rev-list(1)" msgstr "ОПЦИИте_ЗА_ВЕРСИЯТА са документирани в ръководството git-rev-list(1)" -#: builtin/blame.c:2242 +#: builtin/blame.c:2501 msgid "Show blame entries as we find them, incrementally" msgstr "Извеждане на анотациите с намирането им, последователно" # FIXME SHA-1 -> SHA1 -#: builtin/blame.c:2243 +#: builtin/blame.c:2502 msgid "Show blank SHA-1 for boundary commits (Default: off)" msgstr "" "Извеждане на празни суми по SHA1 за граничните подавания (стандартно опцията " "е изключена)" -#: builtin/blame.c:2244 +#: builtin/blame.c:2503 msgid "Do not treat root commits as boundaries (Default: off)" msgstr "" "Началните подавания да не се считат за гранични (стандартно опцията е " "изключена)" -#: builtin/blame.c:2245 +#: builtin/blame.c:2504 msgid "Show work cost statistics" msgstr "Извеждане на статистика за извършените действия" -#: builtin/blame.c:2246 +#: builtin/blame.c:2505 msgid "Show output score for blame entries" msgstr "Извеждане на допълнителна информация за определянето на анотациите" -#: builtin/blame.c:2247 +#: builtin/blame.c:2506 msgid "Show original filename (Default: auto)" msgstr "" "Извеждане на първоначалното име на файл (стандартно това е автоматично)" -#: builtin/blame.c:2248 +#: builtin/blame.c:2507 msgid "Show original linenumber (Default: off)" msgstr "" "Извеждане на първоначалният номер на ред (стандартно опцията е изключена)" -#: builtin/blame.c:2249 +#: builtin/blame.c:2508 msgid "Show in a format designed for machine consumption" msgstr "Извеждане във формат за по-нататъшна обработка" -#: builtin/blame.c:2250 +#: builtin/blame.c:2509 msgid "Show porcelain format with per-line commit information" msgstr "" -"Извеждане във формат за по-нататъшна обработка с информация на всеки ред" +"Извеждане във формат за команди от потребителско ниво с информация на всеки " +"ред" -#: builtin/blame.c:2251 +#: builtin/blame.c:2510 msgid "Use the same output mode as git-annotate (Default: off)" msgstr "" "Използване на същия формат като „git-annotate“ (стандартно опцията е " "изключена)" -#: builtin/blame.c:2252 +#: builtin/blame.c:2511 msgid "Show raw timestamp (Default: off)" msgstr "Извеждане на неформатирани времена (стандартно опцията е изключена)" -#: builtin/blame.c:2253 +#: builtin/blame.c:2512 msgid "Show long commit SHA1 (Default: off)" msgstr "Извеждане на пълните суми по SHA1 (стандартно опцията е изключена)" -#: builtin/blame.c:2254 +#: builtin/blame.c:2513 msgid "Suppress author name and timestamp (Default: off)" -msgstr "Без име на автор и време на промяна(стандартно опцията е изключена)" +msgstr "Без име на автор и време на промяна (стандартно опцията е изключена)" -#: builtin/blame.c:2255 +#: builtin/blame.c:2514 msgid "Show author email instead of name (Default: off)" msgstr "" "Извеждане на е-пощата на автора, а не името му (стандартно опцията е " "изключена)" -#: builtin/blame.c:2256 +#: builtin/blame.c:2515 msgid "Ignore whitespace differences" msgstr "Без разлики в знаците за интервали" -#: builtin/blame.c:2257 +#: builtin/blame.c:2516 msgid "Spend extra cycles to find better match" msgstr "Допълнителни изчисления за по-добри резултати" -#: builtin/blame.c:2258 +#: builtin/blame.c:2517 msgid "Use revisions from instead of calling git-rev-list" msgstr "Изчитане на версиите от ФАЙЛ, а не чрез изпълнение на „git-rev-list“" -#: builtin/blame.c:2259 +#: builtin/blame.c:2518 msgid "Use 's contents as the final image" msgstr "Използване на съдържанието на ФАЙЛа като крайно положение" -#: builtin/blame.c:2260 builtin/blame.c:2261 +#: builtin/blame.c:2519 builtin/blame.c:2520 msgid "score" msgstr "напасване на редовете" -#: builtin/blame.c:2260 +#: builtin/blame.c:2519 msgid "Find line copies within and across files" msgstr "" "Търсене на копирани редове както в рамките на един файл, така и от един файл " "към друг" -#: builtin/blame.c:2261 +#: builtin/blame.c:2520 msgid "Find line movements within and across files" msgstr "" "Търсене на преместени редове както в рамките на един файл, така и от един " "файл към друг" -#: builtin/blame.c:2262 +#: builtin/blame.c:2521 msgid "n,m" msgstr "n,m" -#: builtin/blame.c:2262 +#: builtin/blame.c:2521 msgid "Process only line range n,m, counting from 1" msgstr "" "Информация само за редовете в интервала от n до m включително. Броенето " "започва от 1" +#. 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:2599 +msgid "4 years, 11 months ago" +msgstr "преди 4 години и 11 месеца" + #: builtin/branch.c:24 msgid "git branch [options] [-r | -a] [--merged | --no-merged]" -msgstr "git branch [ОПЦИИ] [-r | -a] [--merged | --no-merged]" +msgstr "git branch [ОПЦИЯ…] [-r | -a] [--merged | --no-merged]" #: builtin/branch.c:25 msgid "git branch [options] [-l] [-f] []" -msgstr "git branch [ОПЦИИ] [-l] [-f] ИМЕ_НА_КЛОН [НАЧАЛО]" +msgstr "git branch [ОПЦИЯ…] [-l] [-f] ИМЕ_НА_КЛОН [НАЧАЛО]" #: builtin/branch.c:26 msgid "git branch [options] [-r] (-d | -D) ..." -msgstr "git branch [ОПЦИИ] [-r] (-d | -D) ИМЕ_НА_КЛОН…" +msgstr "git branch [ОПЦИЯ…] [-r] (-d | -D) ИМЕ_НА_КЛОН…" #: builtin/branch.c:27 msgid "git branch [options] (-m | -M) [] " -msgstr "git branch [ОПЦИИ] (-m | -M) [СТАР_КЛОН] НОВ_КЛОН" +msgstr "git branch [ОПЦИЯ…] (-m | -M) [СТАР_КЛОН] НОВ_КЛОН" #: builtin/branch.c:150 #, c-format @@ -2955,11 +3067,11 @@ msgstr "На клона с неправилно име „%s“ е дадено #: builtin/branch.c:727 #, c-format msgid "Branch renamed to %s, but HEAD is not updated!" -msgstr "Клонът е преименуван на „%s“, но указателят „HEAD“ не е преименуван" +msgstr "Клонът е преименуван на „%s“, но указателят „HEAD“ не е обновен" #: builtin/branch.c:734 msgid "Branch is renamed, but update of config-file failed" -msgstr "Клонът е преименуван, но конфигурационният файл не бе обновен" +msgstr "Клонът е преименуван, но конфигурационният файл не е обновен" #: builtin/branch.c:749 #, c-format @@ -3001,9 +3113,9 @@ msgid "act on remote-tracking branches" msgstr "действие върху следящите клони" #: builtin/branch.c:817 builtin/branch.c:823 builtin/branch.c:844 -#: builtin/branch.c:850 builtin/commit.c:1494 builtin/commit.c:1495 -#: builtin/commit.c:1496 builtin/commit.c:1497 builtin/tag.c:527 -#: builtin/tag.c:533 +#: builtin/branch.c:850 builtin/commit.c:1573 builtin/commit.c:1574 +#: builtin/commit.c:1575 builtin/commit.c:1576 builtin/tag.c:615 +#: builtin/tag.c:621 msgid "commit" msgstr "подаване" @@ -3068,7 +3180,7 @@ msgstr "извеждане по колони" msgid "Failed to resolve HEAD as a valid ref." msgstr "Не може да се открие към какво сочи указателят „HEAD“" -#: builtin/branch.c:872 builtin/clone.c:635 +#: builtin/branch.c:872 builtin/clone.c:636 msgid "HEAD not found below refs/heads!" msgstr "В директорията „refs/heads“ липсва файл „HEAD“" @@ -3179,55 +3291,60 @@ msgstr " git branch --set-upstream-to %s\n" #: builtin/bundle.c:47 #, c-format msgid "%s is okay\n" -msgstr "" +msgstr "Пратката „%s“ е наред\n" #: builtin/bundle.c:56 msgid "Need a repository to create a bundle." -msgstr "" +msgstr "За създаването на пратка е необходимо хранилище." #: builtin/bundle.c:60 msgid "Need a repository to unbundle." -msgstr "" +msgstr "За приемането на пратка е необходимо хранилище." #: builtin/cat-file.c:331 msgid "git cat-file (-t|-s|-e|-p||--textconv) " -msgstr "" +msgstr "git cat-file (-t|-s|-e|-p|ВИД|--textconv) ОБЕКТ" #: builtin/cat-file.c:332 msgid "git cat-file (--batch|--batch-check) < " -msgstr "" +msgstr "git cat-file (--batch|--batch-check) < СПИСЪК_С_ОБЕКТИ" #: builtin/cat-file.c:369 msgid " can be one of: blob, tree, commit, tag" msgstr "" +"ВИДът може да е: „blob“ (обект BLOB), „tree“ (дърво), „commit“ (подаване), " +"„tag“ (етикет)" #: builtin/cat-file.c:370 msgid "show object type" -msgstr "" +msgstr "извеждане на вида на обект" #: builtin/cat-file.c:371 msgid "show object size" -msgstr "" +msgstr "извеждане на размера на обект" #: builtin/cat-file.c:373 msgid "exit with zero when there's no error" -msgstr "" +msgstr "изход с 0, когато няма грешка" #: builtin/cat-file.c:374 msgid "pretty-print object's content" -msgstr "" +msgstr "форматирано извеждане на съдържанието на обекта" #: builtin/cat-file.c:376 msgid "for blob objects, run textconv on object's content" msgstr "" +"да се стартира програмата зададена в настройката „textconv“ за преобразуване " +"на съдържанието на обекта" #: builtin/cat-file.c:378 msgid "show info and content of objects fed from the standard input" msgstr "" +"извеждане на информация и съдържание на обектите подадени на стандартния вход" #: builtin/cat-file.c:381 msgid "show info about objects fed from the standard input" -msgstr "" +msgstr "извеждане на информация за обектите подадени на стандартния вход" #: builtin/check-attr.c:11 msgid "git check-attr [-a | --all | attr...] [--] pathname..." @@ -3253,45 +3370,48 @@ msgstr "изчитане на имената на файловете от ста msgid "terminate input and output records by a NUL character" msgstr "разделяне на входните и изходните записи с нулевия знак „NUL“" -#: builtin/check-ignore.c:18 builtin/checkout.c:1089 builtin/gc.c:271 +#: builtin/check-ignore.c:18 builtin/checkout.c:1083 builtin/gc.c:285 msgid "suppress progress reporting" msgstr "без показване на напредъка" #: builtin/check-ignore.c:26 msgid "show non-matching input paths" -msgstr "" +msgstr "извеждане на несъвпадащите пътища" #: builtin/check-ignore.c:28 msgid "ignore index when checking" -msgstr "" +msgstr "прескачане на индекса при проверката" #: builtin/check-ignore.c:154 msgid "cannot specify pathnames with --stdin" -msgstr "" +msgstr "опцията „--stdin“ е несъвместима с имена на пътища" +# FIXME options #: builtin/check-ignore.c:157 msgid "-z only makes sense with --stdin" -msgstr "" +msgstr "опцията „-z“ изисква „--stdin“" #: builtin/check-ignore.c:159 msgid "no path specified" -msgstr "" +msgstr "не е зададен път" #: builtin/check-ignore.c:163 msgid "--quiet is only valid with a single pathname" -msgstr "" +msgstr "опцията „--quiet“ изисква да е подаден точно един път" +# FIXME options #: builtin/check-ignore.c:165 msgid "cannot have both --quiet and --verbose" -msgstr "" +msgstr "опциите „--quiet“ и „--verbose“ са несъвместими" +# FIXME options #: builtin/check-ignore.c:168 msgid "--non-matching is only valid with --verbose" -msgstr "" +msgstr "опцията „--non-matching“ изисква „--verbose“" #: builtin/check-mailmap.c:8 msgid "git check-mailmap [options] ..." -msgstr "git check-mailmap [ОПЦИИ] КОНТАКТ…" +msgstr "git check-mailmap [ОПЦИЯ…] КОНТАКТ…" #: builtin/check-mailmap.c:13 msgid "also read contacts from stdin" @@ -3308,55 +3428,55 @@ msgstr "не са указани контакти" #: builtin/checkout-index.c:126 msgid "git checkout-index [options] [--] [...]" -msgstr "" +msgstr "git checkout-index [ОПЦИЯ…] [--] [ФАЙЛ…]" -#: builtin/checkout-index.c:187 +#: builtin/checkout-index.c:188 msgid "check out all files in the index" -msgstr "" +msgstr "изтегляне на всички файлове в индекса" -#: builtin/checkout-index.c:188 +#: builtin/checkout-index.c:189 msgid "force overwrite of existing files" -msgstr "" +msgstr "презаписване на файловете, дори и да съществуват" -#: builtin/checkout-index.c:190 +#: builtin/checkout-index.c:191 msgid "no warning for existing files and files not in index" -msgstr "" +msgstr "без предупреждения при липсващи файлове и файлове не в индекса" -#: builtin/checkout-index.c:192 +#: builtin/checkout-index.c:193 msgid "don't checkout new files" -msgstr "" +msgstr "без изтегляне на нови файлове" -#: builtin/checkout-index.c:194 +#: builtin/checkout-index.c:195 msgid "update stat information in the index file" msgstr "обновяване на информацията получена чрез „stat“ за файловете в индекса" -#: builtin/checkout-index.c:200 +#: builtin/checkout-index.c:201 msgid "read list of paths from the standard input" -msgstr "" +msgstr "изчитане на пътищата от стандартния вход" -#: builtin/checkout-index.c:202 +#: builtin/checkout-index.c:203 msgid "write the content to temporary files" -msgstr "" +msgstr "записване на съдържанието във временни файлове" -#: builtin/checkout-index.c:203 builtin/column.c:30 +#: builtin/checkout-index.c:204 builtin/column.c:30 msgid "string" -msgstr "" +msgstr "НИЗ" -#: builtin/checkout-index.c:204 +#: builtin/checkout-index.c:205 msgid "when creating files, prepend " -msgstr "" +msgstr "при създаването на нови файлове да се добавя префикса НИЗ" -#: builtin/checkout-index.c:207 +#: builtin/checkout-index.c:208 msgid "copy out the files from named stage" -msgstr "" +msgstr "копиране на файловете от това състояние на сливане" #: builtin/checkout.c:25 msgid "git checkout [options] " -msgstr "git checkout [ОПЦИИ] КЛОН" +msgstr "git checkout [ОПЦИЯ…] КЛОН" #: builtin/checkout.c:26 msgid "git checkout [options] [] -- ..." -msgstr "git checkout [ОПЦИИ] [КЛОН] -- ФАЙЛ…" +msgstr "git checkout [ОПЦИЯ…] [КЛОН] -- ФАЙЛ…" #: builtin/checkout.c:114 builtin/checkout.c:147 #, c-format @@ -3390,77 +3510,77 @@ msgstr "пътят „%s“ не може да бъде слян" msgid "Unable to add merge result for '%s'" msgstr "Резултатът за „%s“ не може да бъде слян" -#: builtin/checkout.c:232 builtin/checkout.c:235 builtin/checkout.c:238 -#: builtin/checkout.c:241 +#: builtin/checkout.c:231 builtin/checkout.c:234 builtin/checkout.c:237 +#: builtin/checkout.c:240 #, c-format msgid "'%s' cannot be used with updating paths" msgstr "Опцията „%s“ е несъвместима с обновяването на пътища" -#: builtin/checkout.c:244 builtin/checkout.c:247 +#: builtin/checkout.c:243 builtin/checkout.c:246 #, c-format msgid "'%s' cannot be used with %s" msgstr "Опцията „%s“ е несъвместима с „%s“" -#: builtin/checkout.c:250 +#: builtin/checkout.c:249 #, c-format msgid "Cannot update paths and switch to branch '%s' at the same time." msgstr "" "Невъзможно е едновременно да обновявате пътища и да се прехвърлите към клона " "„%s“." -#: builtin/checkout.c:261 builtin/checkout.c:450 +#: builtin/checkout.c:260 builtin/checkout.c:449 msgid "corrupt index file" msgstr "повреден файл на индекса" -#: builtin/checkout.c:321 builtin/checkout.c:328 +#: builtin/checkout.c:320 builtin/checkout.c:327 #, c-format msgid "path '%s' is unmerged" msgstr "пътят „%s“ не е слят" -#: builtin/checkout.c:472 +#: builtin/checkout.c:471 msgid "you need to resolve your current index first" msgstr "първо трябва да коригирате индекса си" -#: builtin/checkout.c:593 +#: builtin/checkout.c:591 #, c-format msgid "Can not do reflog for '%s'\n" msgstr "Журналът на указателите за „%s“ не може да бъде създаден\n" -#: builtin/checkout.c:631 +#: builtin/checkout.c:629 msgid "HEAD is now at" msgstr "Указателят „HEAD“ в момента сочи към" -#: builtin/checkout.c:638 +#: builtin/checkout.c:636 #, c-format msgid "Reset branch '%s'\n" msgstr "Зануляване на клона „%s“\n" -#: builtin/checkout.c:641 +#: builtin/checkout.c:639 #, c-format msgid "Already on '%s'\n" msgstr "Вече сте на „%s“\n" -#: builtin/checkout.c:645 +#: builtin/checkout.c:643 #, c-format msgid "Switched to and reset branch '%s'\n" msgstr "Преминаване към клона „%s“ и зануляване на промените\n" -#: builtin/checkout.c:647 builtin/checkout.c:1032 +#: builtin/checkout.c:645 builtin/checkout.c:1026 #, c-format msgid "Switched to a new branch '%s'\n" msgstr "Преминахте към новия клон „%s“\n" -#: builtin/checkout.c:649 +#: builtin/checkout.c:647 #, c-format msgid "Switched to branch '%s'\n" msgstr "Преминахте към клона „%s“\n" -#: builtin/checkout.c:705 +#: builtin/checkout.c:699 #, c-format msgid " ... and %d more.\n" msgstr "… и още %d.\n" -#: builtin/checkout.c:711 +#: builtin/checkout.c:705 #, c-format msgid "" "Warning: you are leaving %d commit behind, not connected to\n" @@ -3482,7 +3602,7 @@ msgstr[1] "" "\n" "%s\n" -#: builtin/checkout.c:729 +#: builtin/checkout.c:723 #, c-format msgid "" "If you want to keep them by creating a new branch, this may be a good time\n" @@ -3491,150 +3611,149 @@ msgid "" " git branch new_branch_name %s\n" "\n" msgstr "" -"Ако все пак искате да ги запазите, сега вероятно е най-подходящият момент " -"да\n" -"създадете нов клон с тях чрез командата:\n" +"Ако все пак искате да запазите тези промени, сега е най-подходящият\n" +"момент да създадете нов клон за тях чрез командата:\n" "\n" " git branch ИМЕ_НА_НОВИЯ_КЛОН %s\n" "\n" -#: builtin/checkout.c:759 +#: builtin/checkout.c:753 msgid "internal error in revision walk" msgstr "вътрешна грешка при обхождането на версиите" -#: builtin/checkout.c:763 +#: builtin/checkout.c:757 msgid "Previous HEAD position was" msgstr "Преди това „HEAD“ сочеше към" -#: builtin/checkout.c:790 builtin/checkout.c:1027 +#: builtin/checkout.c:784 builtin/checkout.c:1021 msgid "You are on a branch yet to be born" msgstr "В момента сте на клон, който предстои да бъде създаден" -#: builtin/checkout.c:934 +#: builtin/checkout.c:928 #, c-format msgid "only one reference expected, %d given." msgstr "очакваше се един указател, а сте подали %d." -#: builtin/checkout.c:973 +#: builtin/checkout.c:967 #, c-format msgid "invalid reference: %s" msgstr "неправилен указател: %s" -#: builtin/checkout.c:1002 +#: builtin/checkout.c:996 #, c-format msgid "reference is not a tree: %s" msgstr "указателят не сочи към обект-дърво: %s" -#: builtin/checkout.c:1041 +#: builtin/checkout.c:1035 msgid "paths cannot be used with switching branches" msgstr "задаването на път е несъвместимо с преминаването от един клон към друг" -#: builtin/checkout.c:1044 builtin/checkout.c:1048 +#: builtin/checkout.c:1038 builtin/checkout.c:1042 #, c-format msgid "'%s' cannot be used with switching branches" msgstr "опцията „%s“ е несъвместима с преминаването от един клон към друг" -#: builtin/checkout.c:1052 builtin/checkout.c:1055 builtin/checkout.c:1060 -#: builtin/checkout.c:1063 +#: builtin/checkout.c:1046 builtin/checkout.c:1049 builtin/checkout.c:1054 +#: builtin/checkout.c:1057 #, c-format msgid "'%s' cannot be used with '%s'" msgstr "опцията „%s“ е несъвместима с „%s“" -#: builtin/checkout.c:1068 +#: builtin/checkout.c:1062 #, c-format msgid "Cannot switch branch to a non-commit '%s'" msgstr "" "За да преминете към клон, подайте указател, който сочи към подаване. „%s“ не " "е такъв" -#: builtin/checkout.c:1090 builtin/checkout.c:1092 builtin/clone.c:88 +#: builtin/checkout.c:1084 builtin/checkout.c:1086 builtin/clone.c:88 #: builtin/remote.c:159 builtin/remote.c:161 msgid "branch" msgstr "клон" -#: builtin/checkout.c:1091 +#: builtin/checkout.c:1085 msgid "create and checkout a new branch" msgstr "създаване и преминаване към нов клон" -#: builtin/checkout.c:1093 +#: builtin/checkout.c:1087 msgid "create/reset and checkout a branch" msgstr "създаване/зануляване на клон и преминаване към него" -#: builtin/checkout.c:1094 +#: builtin/checkout.c:1088 msgid "create reflog for new branch" msgstr "създаване на журнал на указателите за нов клон" -#: builtin/checkout.c:1095 +#: builtin/checkout.c:1089 msgid "detach the HEAD at named commit" msgstr "отделяне на указателя „HEAD“ към указаното подаване" -#: builtin/checkout.c:1096 +#: builtin/checkout.c:1090 msgid "set upstream info for new branch" msgstr "задаване на кой клон бива следен при създаването на новия клон" -#: builtin/checkout.c:1098 +#: builtin/checkout.c:1092 msgid "new-branch" msgstr "НОВ_КЛОН" -#: builtin/checkout.c:1098 +#: builtin/checkout.c:1092 msgid "new unparented branch" msgstr "нов клон без родител" -#: builtin/checkout.c:1099 +#: builtin/checkout.c:1093 msgid "checkout our version for unmerged files" msgstr "изтегляне на вашата версия на неслетите файлове" -#: builtin/checkout.c:1101 +#: builtin/checkout.c:1095 msgid "checkout their version for unmerged files" msgstr "изтегляне на чуждата версия на неслетите файлове" -#: builtin/checkout.c:1103 +#: builtin/checkout.c:1097 msgid "force checkout (throw away local modifications)" msgstr "принудително изтегляне (вашите промени ще бъдат занулени)" -#: builtin/checkout.c:1104 +#: builtin/checkout.c:1098 msgid "perform a 3-way merge with the new branch" msgstr "извършване на тройно сливане с новия клон" -#: builtin/checkout.c:1105 builtin/merge.c:225 +#: builtin/checkout.c:1099 builtin/merge.c:225 msgid "update ignored files (default)" msgstr "обновяване на игнорираните файлове (стандартно)" -#: builtin/checkout.c:1106 builtin/log.c:1228 parse-options.h:245 +#: builtin/checkout.c:1100 builtin/log.c:1236 parse-options.h:245 msgid "style" msgstr "стил" -#: builtin/checkout.c:1107 +#: builtin/checkout.c:1101 msgid "conflict style (merge or diff3)" msgstr "действие при конфликт (сливане или тройна разлика)" -#: builtin/checkout.c:1110 +#: builtin/checkout.c:1104 msgid "do not limit pathspecs to sparse entries only" msgstr "без ограничаване на изброените пътища само до частично изтеглените" -#: builtin/checkout.c:1112 +#: builtin/checkout.c:1106 msgid "second guess 'git checkout no-such-branch'" msgstr "" "последващ опит за отгатване след неуспешен опит с „git checkout no-such-" "branch“" -#: builtin/checkout.c:1135 +#: builtin/checkout.c:1129 msgid "-b, -B and --orphan are mutually exclusive" msgstr "Опциите „-b“, „-B“ и „--orphan“ са несъвместими една с друга" -#: builtin/checkout.c:1152 +#: builtin/checkout.c:1146 msgid "--track needs a branch name" msgstr "опцията „--track“ изисква име на клон" -#: builtin/checkout.c:1159 +#: builtin/checkout.c:1153 msgid "Missing branch name; try -b" msgstr "Липсва име на клон, използвайте опцията „-b“" -#: builtin/checkout.c:1196 +#: builtin/checkout.c:1190 msgid "invalid path specification" msgstr "указан е неправилен път" -#: builtin/checkout.c:1203 +#: builtin/checkout.c:1197 #, c-format msgid "" "Cannot update paths and switch to branch '%s' at the same time.\n" @@ -3643,49 +3762,48 @@ msgstr "" "Не можете едновременно да обновявате пътища и да преминете към клона „%s“.\n" "Дали не искате да изтеглите „%s“, който не сочи към подаване?" -#: builtin/checkout.c:1208 +#: builtin/checkout.c:1202 #, c-format msgid "git checkout: --detach does not take a path argument '%s'" msgstr "git checkout: опцията „--detach“ не приема аргумент-път „%s“" -#: builtin/checkout.c:1212 +#: builtin/checkout.c:1206 msgid "" "git checkout: --ours/--theirs, --force and --merge are incompatible when\n" "checking out of the index." msgstr "" -"git checkout: опциите „--ours“/„--theirs“, „--force“ и „--merge“ са " -"несъвместими\n" -"с изтегляне от индекса." +"git checkout: опциите „--ours“/„--theirs“, „--force“ и „--merge“\n" +"са несъвместими с изтегляне от индекса." #: builtin/clean.c:26 msgid "" "git clean [-d] [-f] [-i] [-n] [-q] [-e ] [-x | -X] [--] ..." -msgstr "" +msgstr "git clean [-d] [-f] [-i] [-n] [-q] [-e ШАБЛОН] [-x | -X] [--] ПЪТ…" #: builtin/clean.c:30 #, c-format msgid "Removing %s\n" -msgstr "" +msgstr "Изтриване на „%s“\n" #: builtin/clean.c:31 #, c-format msgid "Would remove %s\n" -msgstr "" +msgstr "Файлът „%s“ ще бъде изтрит\n" #: builtin/clean.c:32 #, c-format msgid "Skipping repository %s\n" -msgstr "" +msgstr "Прескачане на хранилището „%s“\n" #: builtin/clean.c:33 #, c-format msgid "Would skip repository %s\n" -msgstr "" +msgstr "Хранилището „%s“ ще бъде прескочено\n" #: builtin/clean.c:34 #, c-format msgid "failed to remove %s" -msgstr "" +msgstr "файлът „%s“ не може да бъде изтрит" #: builtin/clean.c:295 msgid "" @@ -3694,6 +3812,10 @@ msgid "" "foo - select item based on unique prefix\n" " - (empty) select nothing" msgstr "" +"Подсказка:\n" +"1 — избор на обект според реда\n" +"ПРЕФИКС — избор на единствен обект по този уникален префикс\n" +" — (празно) нищо да не се избира" #: builtin/clean.c:299 msgid "" @@ -3706,36 +3828,47 @@ msgid "" "* - choose all items\n" " - (empty) finish selecting" msgstr "" +"Подсказка:\n" +"1 — избор на един обект\n" +"3-5 — интервал за избор на обекти\n" +"2-3,6-9 — множество интервали за избор на обекти\n" +"ПРЕФИКС — избор на единствен обект по този уникален префикс\n" +"-… — отмяна на избора на обекти\n" +"* — избиране на всички обекти\n" +" — (празно) завършване на избирането" +# FIXME WTF does this mean #: builtin/clean.c:517 #, c-format msgid "Huh (%s)?" -msgstr "" +msgstr "Неправилен избор (%s)" -#: builtin/clean.c:660 +# FIXME - should we use >> or sth else +#: builtin/clean.c:659 #, c-format msgid "Input ignore patterns>> " -msgstr "" +msgstr "Шаблони за игнорирани елементи≫ " -#: builtin/clean.c:697 +#: builtin/clean.c:696 #, c-format msgid "WARNING: Cannot find items matched by: %s" -msgstr "" +msgstr "ПРЕДУПРЕЖДЕНИЕ: Никой обект не напасва на „%s“" -#: builtin/clean.c:718 +#: builtin/clean.c:717 msgid "Select items to delete" -msgstr "" +msgstr "Избиране на обекти за изтриване" -#: builtin/clean.c:758 +#: builtin/clean.c:757 #, c-format msgid "remove %s? " -msgstr "" +msgstr "Да се изтрие ли „%s“? " -#: builtin/clean.c:783 +# FIXME improve message +#: builtin/clean.c:782 msgid "Bye." -msgstr "" +msgstr "Изход." -#: builtin/clean.c:791 +#: builtin/clean.c:790 msgid "" "clean - start cleaning\n" "filter by pattern - exclude items from deletion\n" @@ -3745,81 +3878,94 @@ msgid "" "help - this screen\n" "? - help for prompt selection" msgstr "" +"clean — начало на изчистването\n" +"filter by pattern — шаблон за обекти, които да не се трият\n" +"select by numbers — номера на обекти, които да се трият\n" +"ask each — потвърждаване на всяко изтриване (подобно на „rm -i“)\n" +"quit — край на изчистването\n" +"help — този край\n" +"? — подсказка за шаблоните" # FIXME how many *** -#: builtin/clean.c:818 +#: builtin/clean.c:817 msgid "*** Commands ***" msgstr "●●● Команди ●●●" -#: builtin/clean.c:819 +# FIXME improve message +#: builtin/clean.c:818 msgid "What now" -msgstr "" +msgstr "Избор на следващо действие" -#: builtin/clean.c:827 +#: builtin/clean.c:826 msgid "Would remove the following item:" msgid_plural "Would remove the following items:" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Следният обект ще бъде изтрит:" +msgstr[1] "Следните обекти ще бъдат изтрити:" -#: builtin/clean.c:844 +#: builtin/clean.c:843 msgid "No more files to clean, exiting." -msgstr "" +msgstr "Файловете за изчистване свършиха. Изход от програмата." -#: builtin/clean.c:875 +#: builtin/clean.c:874 msgid "do not print names of files removed" -msgstr "" +msgstr "без извеждане на имената на файловете, които ще бъдат изтрити" -#: builtin/clean.c:877 +#: builtin/clean.c:876 msgid "force" -msgstr "" +msgstr "принудително изтриване" -#: builtin/clean.c:878 +#: builtin/clean.c:877 msgid "interactive cleaning" -msgstr "" +msgstr "интерактивно изтриване" -#: builtin/clean.c:880 +#: builtin/clean.c:879 msgid "remove whole directories" -msgstr "" +msgstr "изтриване на цели директории" -#: builtin/clean.c:881 builtin/describe.c:415 builtin/grep.c:716 -#: builtin/ls-files.c:486 builtin/name-rev.c:314 builtin/show-ref.c:185 +#: builtin/clean.c:880 builtin/describe.c:406 builtin/grep.c:714 +#: builtin/ls-files.c:486 builtin/name-rev.c:311 builtin/show-ref.c:185 msgid "pattern" msgstr "шаблон" -#: builtin/clean.c:882 +#: builtin/clean.c:881 msgid "add to ignore rules" -msgstr "" +msgstr "добавяне на ШАБЛОН от файлове, които да не се трият" -#: builtin/clean.c:883 +#: builtin/clean.c:882 msgid "remove ignored files, too" -msgstr "" +msgstr "изтриване и на игнорираните файлове" -#: builtin/clean.c:885 +#: builtin/clean.c:884 msgid "remove only ignored files" -msgstr "" +msgstr "изтриване само на игнорирани файлове" -#: builtin/clean.c:903 +#: builtin/clean.c:902 msgid "-x and -X cannot be used together" -msgstr "" +msgstr "опциите „-x“ и „-X“ са несъвместими" -#: builtin/clean.c:907 +#: builtin/clean.c:906 msgid "" "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to " "clean" msgstr "" +"Настройката „clean.requireForce“ е зададена като истина, което изисква някоя " +"от опциите „-i“, „-n“ или „-f“. Няма да се извърши изчистване" -#: builtin/clean.c:910 +#: builtin/clean.c:909 msgid "" "clean.requireForce defaults to true and neither -i, -n, nor -f given; " "refusing to clean" msgstr "" +"Настройката „clean.requireForce“ не е зададена, но стандартно е истина, " +"което изисква някоя от опциите „-i“, „-n“ или „-f“. Няма да се извърши " +"изчистване" #: builtin/clone.c:36 msgid "git clone [options] [--] []" -msgstr "git clone [ОПЦИИ] [--] ХРАНИЛИЩЕ [ДИРЕКТОРИЯ]" +msgstr "git clone [ОПЦИЯ…] [--] ХРАНИЛИЩЕ [ДИРЕКТОРИЯ]" -#: builtin/clone.c:64 builtin/fetch.c:97 builtin/merge.c:222 -#: builtin/push.c:504 +#: builtin/clone.c:64 builtin/fetch.c:112 builtin/merge.c:222 +#: builtin/push.c:503 msgid "force progress reporting" msgstr "извеждане на напредъка" @@ -3833,7 +3979,8 @@ msgstr "създаване на голо хранилище" #: builtin/clone.c:71 msgid "create a mirror repository (implies bare)" -msgstr "създаване на хранилище-огледало (това включва хранилището да е голо)" +msgstr "" +"създаване на хранилище-огледало (включва опцията „--bare“ за голо хранилище)" #: builtin/clone.c:73 msgid "to clone from a local repository" @@ -3879,7 +4026,7 @@ msgstr "изтегляне на този КЛОН, а не соченият от msgid "path to git-upload-pack on the remote" msgstr "път към командата „git-upload-pack“ на отдалеченото хранилище" -#: builtin/clone.c:92 builtin/fetch.c:98 builtin/grep.c:661 +#: builtin/clone.c:92 builtin/fetch.c:113 builtin/grep.c:659 msgid "depth" msgstr "ДЪЛБОЧИНА" @@ -3952,7 +4099,7 @@ msgstr "връзката „%s“ не може да бъде създадена #: builtin/clone.c:365 #, c-format msgid "failed to copy file to '%s'" -msgstr "файлът не можа да бъде копиран като „%s“" +msgstr "файлът не може да бъде копиран като „%s“" #: builtin/clone.c:388 builtin/clone.c:565 #, c-format @@ -3974,152 +4121,153 @@ msgstr "" #, c-format msgid "Could not find remote branch %s to clone." msgstr "" -"Клонът „%s“ от отдалеченото хранилище което клонирате,\n" -"който следва да бъде изтеглен, не съществува." +"Клонът „%s“ от отдалеченото хранилище, което клонирате,\n" +"и който следва да бъде изтеглен, не съществува." +# FIXME translator note that the space at end is necesssary #: builtin/clone.c:560 #, c-format msgid "Checking connectivity... " -msgstr "Проверка на връзката…" +msgstr "Проверка на връзката… " #: builtin/clone.c:563 msgid "remote did not send all necessary objects" msgstr "отдалеченото хранилище не изпрати всички необходими обекти." -#: builtin/clone.c:626 +#: builtin/clone.c:627 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n" msgstr "" "указателят „HEAD“ от отдалеченото хранилище сочи към нещо,\n" "което не съществува. Не може да се изтегли определен клон.\n" -#: builtin/clone.c:657 +#: builtin/clone.c:658 msgid "unable to checkout working tree" msgstr "работното дърво не може да бъде подготвено" -#: builtin/clone.c:765 +#: builtin/clone.c:768 msgid "Too many arguments." msgstr "Прекалено много аргументи." -#: builtin/clone.c:769 +#: builtin/clone.c:772 msgid "You must specify a repository to clone." msgstr "Трябва да укажете кое хранилище искате да клонирате." -#: builtin/clone.c:780 +#: builtin/clone.c:783 #, c-format msgid "--bare and --origin %s options are incompatible." msgstr "опциите „--bare“ и „--origin %s“ са несъвместими." -#: builtin/clone.c:783 +#: builtin/clone.c:786 msgid "--bare and --separate-git-dir are incompatible." msgstr "опциите „--bare“ и „--separate-git-dir“ са несъвместими." -#: builtin/clone.c:796 +#: builtin/clone.c:799 #, c-format msgid "repository '%s' does not exist" msgstr "не съществува хранилище „%s“" -#: builtin/clone.c:802 -msgid "--depth is ignored in local clones; use file:// instead." -msgstr "" -"При локално клониране опцията „--depth“ се игнорира. Ползвайте схемата " -"„file://“." - -#: builtin/clone.c:805 -msgid "source repository is shallow, ignoring --local" -msgstr "клонираното хранилище е плитко, затова опцията „--local“ се игнорира" - -#: builtin/clone.c:810 -msgid "--local is ignored" -msgstr "опцията „--local“ се игнорира" - -#: builtin/clone.c:814 builtin/fetch.c:1119 +#: builtin/clone.c:805 builtin/fetch.c:1143 #, c-format msgid "depth %s is not a positive number" msgstr "дълбочината трябва да е положително цяло число, а не „%s“" -#: builtin/clone.c:824 +#: builtin/clone.c:815 #, c-format msgid "destination path '%s' already exists and is not an empty directory." msgstr "целевият път „%s“ съществува и не е празна директория." -#: builtin/clone.c:834 +#: builtin/clone.c:825 #, c-format msgid "working tree '%s' already exists." msgstr "в „%s“ вече съществува работно дърво." -#: builtin/clone.c:847 builtin/clone.c:859 +#: builtin/clone.c:838 builtin/clone.c:850 #, c-format msgid "could not create leading directories of '%s'" msgstr "родителските директории на „%s“ не могат да бъдат създадени" -#: builtin/clone.c:850 +#: builtin/clone.c:841 #, c-format msgid "could not create work tree dir '%s'." msgstr "работното дърво в „%s“ не може да бъде създадено." -#: builtin/clone.c:869 +#: builtin/clone.c:860 #, c-format msgid "Cloning into bare repository '%s'...\n" msgstr "Клониране и създаване на голо хранилище в „%s“…\n" -#: builtin/clone.c:871 +#: builtin/clone.c:862 #, c-format msgid "Cloning into '%s'...\n" msgstr "Клониране и създаване на хранилище в „%s“…\n" +#: builtin/clone.c:898 +msgid "--depth is ignored in local clones; use file:// instead." +msgstr "" +"При локално клониране опцията „--depth“ се игнорира. Ползвайте схемата " +"„file://“." + +#: builtin/clone.c:901 +msgid "source repository is shallow, ignoring --local" +msgstr "клонираното хранилище е плитко, затова опцията „--local“ се игнорира" + #: builtin/clone.c:906 +msgid "--local is ignored" +msgstr "опцията „--local“ се игнорира" + +#: builtin/clone.c:910 #, c-format msgid "Don't know how to clone %s" msgstr "Не се поддържа клониране на връзки от вида „%s“ " -#: builtin/clone.c:957 builtin/clone.c:965 +#: builtin/clone.c:961 builtin/clone.c:969 #, c-format msgid "Remote branch %s not found in upstream %s" msgstr "Отдалеченият клон „%s“ липсва в клонираното хранилище „%s“" -#: builtin/clone.c:968 +#: builtin/clone.c:972 msgid "You appear to have cloned an empty repository." msgstr "Изглежда клонирахте празно хранилище." #: builtin/column.c:9 msgid "git column [options]" -msgstr "" +msgstr "git column [ОПЦИЯ…]" #: builtin/column.c:26 msgid "lookup config vars" -msgstr "" +msgstr "извеждане на настройките" #: builtin/column.c:27 builtin/column.c:28 msgid "layout to use" -msgstr "" +msgstr "как да се подреди резултата" #: builtin/column.c:29 msgid "Maximum width" -msgstr "" +msgstr "Максимална широчина" #: builtin/column.c:30 msgid "Padding space on left border" -msgstr "" +msgstr "Поле в знаци отляво" #: builtin/column.c:31 msgid "Padding space on right border" -msgstr "" +msgstr "Поле в знаци отдясно" #: builtin/column.c:32 msgid "Padding space between columns" -msgstr "" +msgstr "Поле в знаци между колоните" #: builtin/column.c:51 msgid "--command must be the first argument" -msgstr "" +msgstr "опцията „--command“ трябва да е първият аргумент" #: builtin/commit.c:36 msgid "git commit [options] [--] ..." -msgstr "git commit [ОПЦИИ] [--] ПЪТ…" +msgstr "git commit [ОПЦИЯ…] [--] ПЪТ…" #: builtin/commit.c:41 msgid "git status [options] [--] ..." -msgstr "git status [ОПЦИИ] [--] ПЪТ…" +msgstr "git status [ОПЦИЯ…] [--] ПЪТ…" #: builtin/commit.c:46 msgid "" @@ -4197,90 +4345,99 @@ msgstr "" msgid "failed to unpack HEAD tree object" msgstr "неуспешно изваждана на върховото дърво (HEAD tree object) от пакет" -#: builtin/commit.c:330 +#: builtin/commit.c:328 msgid "unable to create temporary index" msgstr "неуспешно създаване на временен индекс" -#: builtin/commit.c:336 +#: builtin/commit.c:334 msgid "interactive add failed" msgstr "неуспешно интерактивно добавяне" -#: builtin/commit.c:369 builtin/commit.c:390 builtin/commit.c:440 +#: builtin/commit.c:366 builtin/commit.c:387 builtin/commit.c:435 msgid "unable to write new_index file" msgstr "неуспешен запис на новия индекс" -#: builtin/commit.c:421 +#: builtin/commit.c:418 msgid "cannot do a partial commit during a merge." msgstr "по време на сливане не може да се извърши частично подаване." -#: builtin/commit.c:423 +#: builtin/commit.c:420 msgid "cannot do a partial commit during a cherry-pick." msgstr "по време на отбиране не може да се извърши частично подаване." -#: builtin/commit.c:433 +#: builtin/commit.c:429 msgid "cannot read the index" msgstr "индексът не може да бъде прочетен" -#: builtin/commit.c:453 +#: builtin/commit.c:447 msgid "unable to write temporary index file" msgstr "временният индекс не може да бъде записан" -#: builtin/commit.c:544 builtin/commit.c:550 +#: builtin/commit.c:557 builtin/commit.c:563 #, c-format msgid "invalid commit: %s" msgstr "неправилно подаване: %s" -#: builtin/commit.c:572 +#: builtin/commit.c:585 msgid "malformed --author parameter" msgstr "неправилен параметър към опцията „--author“" #: builtin/commit.c:592 #, c-format +msgid "invalid date format: %s" +msgstr "неправилен формат на дата: %s" + +#: builtin/commit.c:609 +#, c-format msgid "Malformed ident string: '%s'" msgstr "Неправилен низ за идентичност: „%s“" -#: builtin/commit.c:629 builtin/commit.c:663 builtin/commit.c:1014 +#: builtin/commit.c:642 +msgid "" +"unable to select a comment character that is not used\n" +"in the current commit message" +msgstr "" +"не може да се избере знак за коментар — в текущото съобщение за подаване са " +"използвани всички подобни знаци" + +#: builtin/commit.c:679 builtin/commit.c:712 builtin/commit.c:1086 #, c-format msgid "could not lookup commit %s" msgstr "следното подаване не може да бъде открито: %s" -#: builtin/commit.c:641 builtin/shortlog.c:273 +#: builtin/commit.c:691 builtin/shortlog.c:273 #, c-format msgid "(reading log message from standard input)\n" msgstr "(изчитане на съобщението за подаване от стандартния вход)\n" -#: builtin/commit.c:643 +#: builtin/commit.c:693 msgid "could not read log from standard input" msgstr "съобщението за подаване не бе прочетено стандартния вход" -#: builtin/commit.c:647 +#: builtin/commit.c:697 #, c-format msgid "could not read log file '%s'" msgstr "файлът със съобщението за подаване „%s“ не може да бъде прочетен" -#: builtin/commit.c:654 -msgid "commit has empty message" -msgstr "подаване с празно съобщение" - -#: builtin/commit.c:670 +#: builtin/commit.c:719 msgid "could not read MERGE_MSG" msgstr "съобщението за сливане MERGE_MSG не може да бъде прочетено" -#: builtin/commit.c:674 +#: builtin/commit.c:723 msgid "could not read SQUASH_MSG" msgstr "съобщението за смачкване SQUASH_MSG не може да бъде прочетено" -#: builtin/commit.c:678 +#: builtin/commit.c:727 #, c-format msgid "could not read '%s'" msgstr "файлът „%s“ не може да бъде прочетен" -#: builtin/commit.c:749 +#: builtin/commit.c:798 msgid "could not write commit template" msgstr "шаблонът за подаване не може да бъде запазен" # FIXME -#: builtin/commit.c:764 +#: builtin/commit.c:816 #, c-format msgid "" "\n" @@ -4296,7 +4453,7 @@ msgstr "" "и опитайте отново.\n" # FIXME -#: builtin/commit.c:769 +#: builtin/commit.c:821 #, c-format msgid "" "\n" @@ -4312,16 +4469,16 @@ msgstr "" " %s\n" "и опитайте отново.\n" -#: builtin/commit.c:782 +#: builtin/commit.c:834 #, 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" +"с „%c“, ще бъдат пропуснати, а празно съобщение преустановява подаването.\n" -#: builtin/commit.c:789 +#: builtin/commit.c:841 #, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" @@ -4329,154 +4486,158 @@ msgid "" "An empty message aborts the commit.\n" msgstr "" "Въведете съобщението за подаване на промените. Редовете, които започват\n" -"с „%c“ НЯМА да бъдат филтрирани, може да ги изтриете вие. Празно \n" -"съобщение отменя подаването.\n" +"с „%c“, също ще бъдат включени — може да ги изтриете вие. Празно \n" +"съобщение преустановява подаването.\n" + +#: builtin/commit.c:855 +#, c-format +msgid "%sAuthor: %.*s <%.*s>" +msgstr "%sАвтор: %.*s <%.*s>" -#: builtin/commit.c:802 +#: builtin/commit.c:863 #, c-format -msgid "%sAuthor: %s" -msgstr "%sАвтор: %s" +msgid "%sDate: %s" +msgstr "%sДата: %s" -#: builtin/commit.c:809 +#: builtin/commit.c:870 #, c-format -msgid "%sCommitter: %s" -msgstr "%sПодаващ: %s" +msgid "%sCommitter: %.*s <%.*s>" +msgstr "%sПодаващ: %.*s <%.*s>" -#: builtin/commit.c:829 +#: builtin/commit.c:888 msgid "Cannot read index" msgstr "Индексът не може да бъде прочетен" -#: builtin/commit.c:872 +#: builtin/commit.c:945 msgid "Error building trees" msgstr "Грешка при изграждане на дърветата" -#: builtin/commit.c:887 builtin/tag.c:391 +#: builtin/commit.c:960 builtin/tag.c:495 #, c-format msgid "Please supply the message using either -m or -F option.\n" msgstr "Подайте съобщението с някоя от опциите „-m“ или „-F“.\n" -#: builtin/commit.c:989 +#: builtin/commit.c:1061 #, c-format msgid "No existing author found with '%s'" msgstr "Не е открит автор с име „%s“." -#: builtin/commit.c:1004 builtin/commit.c:1244 +#: builtin/commit.c:1076 builtin/commit.c:1316 #, c-format msgid "Invalid untracked files mode '%s'" msgstr "Неправилна стойност за неследените файлове: „%s“" -#: builtin/commit.c:1041 +#: builtin/commit.c:1113 msgid "--long and -z are incompatible" msgstr "Опциите „--long“ и „-z“ са несъвместими." -#: builtin/commit.c:1071 +#: builtin/commit.c:1143 msgid "Using both --reset-author and --author does not make sense" msgstr "Опциите „--reset-author“ и „--author“ са несъвместими." -#: builtin/commit.c:1080 +#: builtin/commit.c:1152 msgid "You have nothing to amend." msgstr "Няма какво да бъде поправено." -#: builtin/commit.c:1083 +#: builtin/commit.c:1155 msgid "You are in the middle of a merge -- cannot amend." msgstr "В момента се извършва сливане, не можете да поправяте." -#: builtin/commit.c:1085 +#: builtin/commit.c:1157 msgid "You are in the middle of a cherry-pick -- cannot amend." msgstr "В момента се извършва отбиране на подаване, не можете да поправяте." -#: builtin/commit.c:1088 +#: builtin/commit.c:1160 msgid "Options --squash and --fixup cannot be used together" msgstr "Опциите „--squash“ и „--fixup“ са несъвместими." -#: builtin/commit.c:1098 +#: builtin/commit.c:1170 msgid "Only one of -c/-C/-F/--fixup can be used." -msgstr "" -"Можете да използвате само една от опциите „-c“, „-C“, „-F“ и „--fixup“." +msgstr "Опциите „-c“, „-C“, „-F“ и „--fixup““ са несъвместими." -#: builtin/commit.c:1100 +#: builtin/commit.c:1172 msgid "Option -m cannot be combined with -c/-C/-F/--fixup." msgstr "Опцията „-m“ е несъвместима с „-c“, „-C“, „-F“ и „--fixup“." -#: builtin/commit.c:1108 +#: builtin/commit.c:1180 msgid "--reset-author can be used only with -C, -c or --amend." msgstr "" "Опцията „--reset-author“ може да се използва само заедно с „-C“, „-c“ или\n" "„--amend“." -#: builtin/commit.c:1125 +#: builtin/commit.c:1197 msgid "Only one of --include/--only/--all/--interactive/--patch can be used." msgstr "" "Опциите „--include“, „--only“, „--all“, „--interactive“ и „--patch“ са\n" "несъвместими." -#: builtin/commit.c:1127 +#: builtin/commit.c:1199 msgid "No paths with --include/--only does not make sense." msgstr "Опциите „--include“ и „--only“ изискват аргументи." # FIXME bad message -#: builtin/commit.c:1129 +#: builtin/commit.c:1201 msgid "Clever... amending the last one with dirty index." msgstr "" -"Поправяте последното подаване докато индекса има проблеми. Това е лоша идея." +"Поправяте последното подаване докато индексът има проблеми. Това е лоша идея." -#: builtin/commit.c:1131 +#: builtin/commit.c:1203 msgid "Explicit paths specified without -i or -o; assuming --only paths..." msgstr "" "Зададени са изрични пътища без опциите „-i“ или „-o“. Приема се, че все едно " "сте\n" "ползвали опцията „--only“ с ПЪТища…" -#: builtin/commit.c:1143 builtin/tag.c:639 +#: builtin/commit.c:1215 builtin/tag.c:727 #, c-format msgid "Invalid cleanup mode %s" msgstr "Несъществуващ режим на изчистване „%s“" -#: builtin/commit.c:1148 +#: builtin/commit.c:1220 msgid "Paths with -a does not make sense." -msgstr "Използването на пътища е несъвместимо със задаването на опцията „-a“." +msgstr "Опцията „-a“ е несъвместима със задаването на пътища." -#: builtin/commit.c:1258 builtin/commit.c:1516 +#: builtin/commit.c:1330 builtin/commit.c:1595 msgid "show status concisely" msgstr "кратка информация за състоянието" -#: builtin/commit.c:1260 builtin/commit.c:1518 +#: builtin/commit.c:1332 builtin/commit.c:1597 msgid "show branch information" msgstr "информация за клоните" -#: builtin/commit.c:1262 builtin/commit.c:1520 builtin/push.c:490 +#: builtin/commit.c:1334 builtin/commit.c:1599 builtin/push.c:489 msgid "machine-readable output" msgstr "формат на изхода за четене от програма" -#: builtin/commit.c:1265 builtin/commit.c:1522 +#: builtin/commit.c:1337 builtin/commit.c:1601 msgid "show status in long format (default)" msgstr "подробна информация за състоянието (стандартно)" -#: builtin/commit.c:1268 builtin/commit.c:1525 +#: builtin/commit.c:1340 builtin/commit.c:1604 msgid "terminate entries with NUL" msgstr "разделяне на елементите с нулевия знак „NUL“" -#: builtin/commit.c:1270 builtin/commit.c:1528 builtin/fast-export.c:674 -#: builtin/fast-export.c:677 builtin/tag.c:514 +#: builtin/commit.c:1342 builtin/commit.c:1607 builtin/fast-export.c:703 +#: builtin/fast-export.c:706 builtin/tag.c:602 msgid "mode" msgstr "режим" -#: builtin/commit.c:1271 builtin/commit.c:1528 +#: builtin/commit.c:1343 builtin/commit.c:1607 msgid "show untracked files, optional modes: all, normal, no. (Default: all)" msgstr "" "извеждане на неследените файлове. Възможните режими са „all“ (подробна\n" "информация), „normal“ (кратка информация), „no“ (без неследените файлове).\n" "Стандартният режим е: „all“." -#: builtin/commit.c:1274 +#: builtin/commit.c:1346 msgid "show ignored files" msgstr "извеждане на игнорираните файлове" -#: builtin/commit.c:1275 parse-options.h:153 +#: builtin/commit.c:1347 parse-options.h:153 msgid "when" msgstr "кога" -#: builtin/commit.c:1276 +#: builtin/commit.c:1348 msgid "" "ignore changes to submodules, optional when: all, dirty, untracked. " "(Default: all)" @@ -4485,233 +4646,233 @@ msgstr "" "една от\n" "„all“ (всички), „dirty“ (тези с неподадени промени), „untracked“ (неследени)" -#: builtin/commit.c:1278 +#: builtin/commit.c:1350 msgid "list untracked files in columns" msgstr "извеждане на неследените файлове в колони" -#: builtin/commit.c:1347 +#: builtin/commit.c:1419 msgid "couldn't look up newly created commit" msgstr "току що създаденото подаване не може да бъде открито" -#: builtin/commit.c:1349 +#: builtin/commit.c:1421 msgid "could not parse newly created commit" msgstr "току що създаденото подаване не може да бъде анализирано" -#: builtin/commit.c:1390 +#: builtin/commit.c:1469 msgid "detached HEAD" -msgstr "несвързан връх HEAD" +msgstr "несвързан връх „HEAD“" -#: builtin/commit.c:1392 +#: builtin/commit.c:1471 msgid " (root-commit)" msgstr " (начално подаване)" -#: builtin/commit.c:1486 +#: builtin/commit.c:1565 msgid "suppress summary after successful commit" msgstr "без информация след успешно подаване" -#: builtin/commit.c:1487 +#: builtin/commit.c:1566 msgid "show diff in commit message template" msgstr "добавяне на разликата към шаблона за съобщението при подаване" -#: builtin/commit.c:1489 +#: builtin/commit.c:1568 msgid "Commit message options" msgstr "Опции за съобщението при подаване" -#: builtin/commit.c:1490 builtin/tag.c:512 +#: builtin/commit.c:1569 builtin/tag.c:600 msgid "read message from file" -msgstr "взимане та съобщението от файл" +msgstr "взимане на съобщението от файл" -#: builtin/commit.c:1491 +#: builtin/commit.c:1570 msgid "author" msgstr "автор" -#: builtin/commit.c:1491 +#: builtin/commit.c:1570 msgid "override author for commit" msgstr "задаване на автор за подаването" -#: builtin/commit.c:1492 builtin/gc.c:272 +#: builtin/commit.c:1571 builtin/gc.c:286 msgid "date" msgstr "дата" -#: builtin/commit.c:1492 +#: builtin/commit.c:1571 msgid "override date for commit" msgstr "задаване на дата за подаването" -#: builtin/commit.c:1493 builtin/merge.c:216 builtin/notes.c:409 -#: builtin/notes.c:566 builtin/tag.c:510 +#: builtin/commit.c:1572 builtin/merge.c:216 builtin/notes.c:409 +#: builtin/notes.c:566 builtin/tag.c:598 msgid "message" msgstr "съобщение" -#: builtin/commit.c:1493 +#: builtin/commit.c:1572 msgid "commit message" msgstr "съобщение при подаване" -#: builtin/commit.c:1494 +#: builtin/commit.c:1573 msgid "reuse and edit message from specified commit" msgstr "преизползване и редактиране на съобщението от указаното подаване" -#: builtin/commit.c:1495 +#: builtin/commit.c:1574 msgid "reuse message from specified commit" msgstr "преизползване на съобщението от указаното подаване" -#: builtin/commit.c:1496 +#: builtin/commit.c:1575 msgid "use autosquash formatted message to fixup specified commit" msgstr "" "използване на автоматичното съобщение при смачкване за вкарване на " "указаното\n" "подаване в предното без следа" -#: builtin/commit.c:1497 +#: builtin/commit.c:1576 msgid "use autosquash formatted message to squash specified commit" msgstr "" "използване на автоматичното съобщение при смачкване за смачкване на " "указаното\n" "подаване в предното" -#: builtin/commit.c:1498 +#: builtin/commit.c:1577 msgid "the commit is authored by me now (used with -C/-c/--amend)" msgstr "" "смяна на автора да съвпада с подаващия (използва се с „-C“/„-c“/„--amend“)" -#: builtin/commit.c:1499 builtin/log.c:1180 builtin/revert.c:86 +#: builtin/commit.c:1578 builtin/log.c:1188 builtin/revert.c:86 msgid "add Signed-off-by:" msgstr "добавяне на поле за подпис — „Signed-off-by:“" -#: builtin/commit.c:1500 +#: builtin/commit.c:1579 msgid "use specified template file" msgstr "използване на указания шаблонен файл" -#: builtin/commit.c:1501 +#: builtin/commit.c:1580 msgid "force edit of commit" msgstr "редактиране на подаване" -#: builtin/commit.c:1502 +#: builtin/commit.c:1581 msgid "default" msgstr "стандартно" -#: builtin/commit.c:1502 builtin/tag.c:515 +#: builtin/commit.c:1581 builtin/tag.c:603 msgid "how to strip spaces and #comments from message" msgstr "кои празни знаци и #коментари да се махат от съобщенията" -#: builtin/commit.c:1503 +#: builtin/commit.c:1582 msgid "include status in commit message template" msgstr "вмъкване на състоянието в шаблона за съобщението при подаване" -#: builtin/commit.c:1504 builtin/merge.c:223 builtin/revert.c:92 -#: builtin/tag.c:516 +#: builtin/commit.c:1583 builtin/merge.c:223 builtin/revert.c:92 +#: builtin/tag.c:604 msgid "key-id" msgstr "ИДЕНТИФИКАТОР_НА_КЛЮЧ" -#: builtin/commit.c:1505 builtin/merge.c:224 builtin/revert.c:93 +#: builtin/commit.c:1584 builtin/merge.c:224 builtin/revert.c:93 msgid "GPG sign commit" msgstr "подписване на подаването с GPG" -#: builtin/commit.c:1508 +#: builtin/commit.c:1587 msgid "Commit contents options" msgstr "Опции за избор на файлове при подаване" -#: builtin/commit.c:1509 +#: builtin/commit.c:1588 msgid "commit all changed files" msgstr "подаване на всички променени файлове" -#: builtin/commit.c:1510 +#: builtin/commit.c:1589 msgid "add specified files to index for commit" msgstr "добавяне на указаните файлове към индекса за подаване" -#: builtin/commit.c:1511 +#: builtin/commit.c:1590 msgid "interactively add files" msgstr "интерактивно добавяне на файлове" -#: builtin/commit.c:1512 +#: builtin/commit.c:1591 msgid "interactively add changes" msgstr "интерактивно добавяне на промени" -#: builtin/commit.c:1513 +#: builtin/commit.c:1592 msgid "commit only specified files" msgstr "подаване само на указаните файлове" -#: builtin/commit.c:1514 +#: builtin/commit.c:1593 msgid "bypass pre-commit hook" msgstr "без изпълнение на куката преди подаване (pre-commit)" -#: builtin/commit.c:1515 +#: builtin/commit.c:1594 msgid "show what would be committed" msgstr "отпечатване на това, което би било подадено" -#: builtin/commit.c:1526 +#: builtin/commit.c:1605 msgid "amend previous commit" msgstr "поправяне на предишното подаване" -#: builtin/commit.c:1527 +#: builtin/commit.c:1606 msgid "bypass post-rewrite hook" msgstr "без изпълнение на куката след презаписване (post-rewrite)" -#: builtin/commit.c:1532 +#: builtin/commit.c:1611 msgid "ok to record an empty change" msgstr "позволяване на празни подавания" -#: builtin/commit.c:1534 +#: builtin/commit.c:1613 msgid "ok to record a change with an empty message" msgstr "позволяване на подавания с празни съобщения" -#: builtin/commit.c:1562 +#: builtin/commit.c:1641 msgid "could not parse HEAD commit" msgstr "върховото подаване „HEAD“ не може да бъде прочетено" -#: builtin/commit.c:1601 builtin/merge.c:518 +#: builtin/commit.c:1680 builtin/merge.c:518 #, c-format msgid "could not open '%s' for reading" msgstr "файлът не може да бъде прочетен: „%s“" -#: builtin/commit.c:1608 +#: builtin/commit.c:1687 #, c-format msgid "Corrupt MERGE_HEAD file (%s)" msgstr "Повреден файл за върха за сливането „MERGE_HEAD“ (%s)" -#: builtin/commit.c:1615 +#: builtin/commit.c:1694 msgid "could not read MERGE_MODE" msgstr "режимът на сливане „MERGE_MODE“ не може да бъде прочетен" -#: builtin/commit.c:1634 +#: builtin/commit.c:1713 #, c-format msgid "could not read commit message: %s" msgstr "съобщението за подаване не може да бъде прочетено: %s" -#: builtin/commit.c:1645 +#: builtin/commit.c:1724 #, c-format msgid "Aborting commit; you did not edit the message.\n" msgstr "Неизвършване на подаване поради нередактирано съобщение.\n" -#: builtin/commit.c:1650 +#: builtin/commit.c:1729 #, c-format msgid "Aborting commit due to empty commit message.\n" msgstr "Неизвършване на подаване поради празно съобщение.\n" -#: builtin/commit.c:1665 builtin/merge.c:857 builtin/merge.c:882 +#: builtin/commit.c:1744 builtin/merge.c:851 builtin/merge.c:876 msgid "failed to write commit object" msgstr "обектът за подаването не може да бъде записан" -#: builtin/commit.c:1686 +#: builtin/commit.c:1756 msgid "cannot lock HEAD ref" msgstr "указателят към върха „HEAD“ не може да бъде заключен" -#: builtin/commit.c:1690 +#: builtin/commit.c:1769 msgid "cannot update HEAD ref" msgstr "указателят към върха „HEAD“ не може да бъде обновен" -#: builtin/commit.c:1701 +#: builtin/commit.c:1780 msgid "" "Repository has been updated, but unable to write\n" "new_index file. Check that disk is not full or quota is\n" "not exceeded, and then \"git reset HEAD\" to recover." msgstr "" "Хранилището е обновено, но новият файл за индекс „new_index“\n" -"не е записан. Проверете дали не е препълнен диска или не сте\n" +"не е записан. Проверете дали дискът не е препълнен или не сте\n" "превишили дисковата си квота. След това изпълнете „git reset HEAD“." #: builtin/config.c:8 msgid "git config [options]" -msgstr "git config [ОПЦИИ]" +msgstr "git config [ОПЦИЯ…]" #: builtin/config.c:53 msgid "Config file location" @@ -4804,12 +4965,11 @@ msgstr "настройка" #: builtin/config.c:72 msgid "find the color configured: [default]" -msgstr "извеждане на зададения цвят на настройката: [стандартно]" +msgstr "извеждане на зададения цвят: [стандартно]" #: builtin/config.c:73 msgid "find the color setting: [stdout-is-tty]" -msgstr "" -"извеждане на зададения цвят на настройката: [стандартният изход е терминал]" +msgstr "извеждане на зададения цвят: [стандартният изход е терминал]" #: builtin/config.c:74 msgid "Type" @@ -4855,135 +5015,144 @@ msgstr "извеждане на размерите на обектите във # FIXME ... instead of *??? #: builtin/describe.c:16 msgid "git describe [options] *" -msgstr "git describe [ОПЦИИ] указател към подаване…" +msgstr "git describe [ОПЦИЯ…] УКАЗАТЕЛ_КЪМ_ПОДАВАНЕ…" #: builtin/describe.c:17 msgid "git describe [options] --dirty" -msgstr "" +msgstr "git describe [ОПЦИЯ…] --dirty" -#: builtin/describe.c:225 +#: builtin/describe.c:216 #, c-format msgid "annotated tag %s not available" -msgstr "" +msgstr "не съществува анотиран етикет „%s“" -#: builtin/describe.c:229 +#: builtin/describe.c:220 #, c-format msgid "annotated tag %s has no embedded name" -msgstr "" +msgstr "в анотирания етикет „%s“ липсва вградено име" -#: builtin/describe.c:231 +#: builtin/describe.c:222 #, c-format msgid "tag '%s' is really '%s' here" -msgstr "" +msgstr "етикетът „%s“ тук е всъщност „%s“" -#: builtin/describe.c:258 +#: builtin/describe.c:249 #, c-format msgid "Not a valid object name %s" -msgstr "" +msgstr "Неправилно име на обект „%s“" -#: builtin/describe.c:261 +#: builtin/describe.c:252 #, c-format msgid "%s is not a valid '%s' object" -msgstr "" +msgstr "„%s“ е неправилен обект „%s“" -#: builtin/describe.c:278 +#: builtin/describe.c:269 #, c-format msgid "no tag exactly matches '%s'" -msgstr "" +msgstr "никой етикет не напасва точно „%s“" -#: builtin/describe.c:280 +#: builtin/describe.c:271 #, c-format msgid "searching to describe %s\n" -msgstr "" +msgstr "търсене за описание на „%s“\n" -#: builtin/describe.c:327 +#: builtin/describe.c:318 #, c-format msgid "finished search at %s\n" -msgstr "" +msgstr "търсенето приключи при „%s“\n" -#: builtin/describe.c:354 +#: builtin/describe.c:345 #, c-format msgid "" "No annotated tags can describe '%s'.\n" "However, there were unannotated tags: try --tags." msgstr "" +"Никой анотиран етикет не описва „%s“.\n" +"Съществуват и неанотирани етикети. Пробвайте с опцията „--tags“." -#: builtin/describe.c:358 +#: builtin/describe.c:349 #, c-format msgid "" "No tags can describe '%s'.\n" "Try --always, or create some tags." msgstr "" +"Никой етикет не описва „%s“.\n" +"Пробвайте с опцията „--always“ или създайте етикети." -#: builtin/describe.c:379 +# FIXME - plural +#: builtin/describe.c:370 #, c-format msgid "traversed %lu commits\n" -msgstr "" +msgstr "претърсени са %lu подавания\n" -#: builtin/describe.c:382 +#: builtin/describe.c:373 #, c-format msgid "" "more than %i tags found; listed %i most recent\n" "gave up search at %s\n" msgstr "" +"открити са над %i етикета, изведени са последните %i,\n" +"търсенето бе прекратено при „%s“.\n" -#: builtin/describe.c:404 +#: builtin/describe.c:395 msgid "find the tag that comes after the commit" -msgstr "" +msgstr "откриване на етикета, който следва подаване" -#: builtin/describe.c:405 +#: builtin/describe.c:396 msgid "debug search strategy on stderr" msgstr "" +"извеждане на информация за трасиране на стратегията за търсене на " +"стандартната грешка" -#: builtin/describe.c:406 +#: builtin/describe.c:397 msgid "use any ref" -msgstr "" +msgstr "използване на произволен указател" -#: builtin/describe.c:407 +#: builtin/describe.c:398 msgid "use any tag, even unannotated" -msgstr "" +msgstr "използване на всеки етикет — включително и неанотираните" -#: builtin/describe.c:408 +#: builtin/describe.c:399 msgid "always use long format" -msgstr "" +msgstr "винаги да се ползва дългият формат" -#: builtin/describe.c:409 +#: builtin/describe.c:400 msgid "only follow first parent" -msgstr "" +msgstr "проследяване само на първия родител" -#: builtin/describe.c:412 +#: builtin/describe.c:403 msgid "only output exact matches" -msgstr "" +msgstr "извеждане само на точните съвпадения" -#: builtin/describe.c:414 +#: builtin/describe.c:405 msgid "consider most recent tags (default: 10)" msgstr "да се търси само в този БРОЙ последни етикети (стандартно: 10)" -#: builtin/describe.c:416 +#: builtin/describe.c:407 msgid "only consider tags matching " -msgstr "" +msgstr "да се търси само измежду етикетите напасващи този ШАБЛОН" -#: builtin/describe.c:418 builtin/name-rev.c:321 +#: builtin/describe.c:409 builtin/name-rev.c:318 msgid "show abbreviated commit object as fallback" -msgstr "" +msgstr "извеждане на съкратено име на обект като резервен вариант" -#: builtin/describe.c:419 +#: builtin/describe.c:410 msgid "mark" -msgstr "" +msgstr "МАРКЕР" -#: builtin/describe.c:420 +#: builtin/describe.c:411 msgid "append on dirty working tree (default: \"-dirty\")" -msgstr "" +msgstr "добавяне на такъв МАРКЕР на работното дърво (стандартно е „-dirty“)" -#: builtin/describe.c:438 +#: builtin/describe.c:429 msgid "--long is incompatible with --abbrev=0" -msgstr "" +msgstr "Опциите „--long“ и „--abbrev=0“ са несъвместими" -#: builtin/describe.c:464 +#: builtin/describe.c:455 msgid "No names found, cannot describe anything." -msgstr "" +msgstr "Не са открити имена — нищо не може да бъде описано." -#: builtin/describe.c:484 +#: builtin/describe.c:475 msgid "--dirty is incompatible with commit-ishes" msgstr "опцията „--dirty“ е несъвместима с указател към подаване" @@ -5016,305 +5185,320 @@ msgstr "зададени са повече от 2 обекта: „%s“" msgid "unhandled object '%s' given." msgstr "зададен е неподдържан обект „%s“." -#: builtin/fast-export.c:22 +#: builtin/fast-export.c:23 msgid "git fast-export [rev-list-opts]" -msgstr "" +msgstr "git fast-export [ОПЦИИ_ЗА_СПИСЪКА_С_ВЕРСИИ]" -#: builtin/fast-export.c:673 +#: builtin/fast-export.c:702 msgid "show progress after objects" -msgstr "съобщение за напредъка на всеки такъв БРОЙ обекта" +msgstr "Съобщение за напредъка на всеки такъв БРОЙ обекта" -#: builtin/fast-export.c:675 +#: builtin/fast-export.c:704 msgid "select handling of signed tags" -msgstr "" +msgstr "Как да се обработват подписаните етикети" -#: builtin/fast-export.c:678 +#: builtin/fast-export.c:707 msgid "select handling of tags that tag filtered objects" -msgstr "" +msgstr "Как да се обработват етикетите на филтрираните обекти" -#: builtin/fast-export.c:681 +#: builtin/fast-export.c:710 msgid "Dump marks to this file" -msgstr "" +msgstr "Запазване на маркерите в този файл" -#: builtin/fast-export.c:683 +#: builtin/fast-export.c:712 msgid "Import marks from this file" -msgstr "" +msgstr "Внасяне на маркерите от този файл" -#: builtin/fast-export.c:685 +#: builtin/fast-export.c:714 msgid "Fake a tagger when tags lack one" -msgstr "" +msgstr "Да се използва изкуствено име на човек при липса на задаващ етикета" -#: builtin/fast-export.c:687 +#: builtin/fast-export.c:716 msgid "Output full tree for each commit" -msgstr "" +msgstr "Извеждане на цялото дърво за всяко подаване" -#: builtin/fast-export.c:689 +#: builtin/fast-export.c:718 msgid "Use the done feature to terminate the stream" -msgstr "" +msgstr "Използване на маркер за завършване на потока" -#: builtin/fast-export.c:690 +#: builtin/fast-export.c:719 msgid "Skip output of blob data" -msgstr "" +msgstr "Без извеждане на съдържанието на обектите BLOB" + +#: builtin/fast-export.c:720 +msgid "refspec" +msgstr "указател на версия" + +#: builtin/fast-export.c:721 +msgid "Apply refspec to exported refs" +msgstr "Прилагане на указателя на версия към изнесените указатели" #: builtin/fetch.c:20 msgid "git fetch [] [ [...]]" -msgstr "git fetch [ОПЦИИ] [ХРАНИЛИЩЕ [УКАЗАТЕЛ…]]" +msgstr "git fetch [ОПЦИЯ…] [ХРАНИЛИЩЕ [УКАЗАТЕЛ…]]" #: builtin/fetch.c:21 msgid "git fetch [] " -msgstr "git fetch [ОПЦИИ] ГРУПА" +msgstr "git fetch [ОПЦИЯ…] ГРУПА" #: builtin/fetch.c:22 msgid "git fetch --multiple [] [( | )...]" -msgstr "git fetch --multiple [ОПЦИИ] [(ХРАНИЛИЩЕ | ГРУПА)…]" +msgstr "git fetch --multiple [ОПЦИЯ…] [(ХРАНИЛИЩЕ | ГРУПА)…]" #: builtin/fetch.c:23 msgid "git fetch --all []" -msgstr "git fetch --all [ОПЦИИ]" +msgstr "git fetch --all [ОПЦИЯ…]" -#: builtin/fetch.c:75 +#: builtin/fetch.c:90 msgid "fetch from all remotes" msgstr "доставяне от всички отдалечени хранилища" -#: builtin/fetch.c:77 +#: builtin/fetch.c:92 msgid "append to .git/FETCH_HEAD instead of overwriting" -msgstr "добавяне към вместо замяна на „.git/FETCH_HEAD“" +msgstr "добавяне към „.git/FETCH_HEAD“ вместо замяна" -#: builtin/fetch.c:79 +#: builtin/fetch.c:94 msgid "path to upload pack on remote end" msgstr "отдалечен път, където да се качи пакетът" -#: builtin/fetch.c:80 +#: builtin/fetch.c:95 msgid "force overwrite of local branch" msgstr "принудително презаписване на локалния клон" -#: builtin/fetch.c:82 +#: builtin/fetch.c:97 msgid "fetch from multiple remotes" msgstr "доставяне от множество отдалечени хранилища" -#: builtin/fetch.c:84 +#: builtin/fetch.c:99 msgid "fetch all tags and associated objects" msgstr "доставяне на всички етикети и принадлежащи обекти" -#: builtin/fetch.c:86 +#: builtin/fetch.c:101 msgid "do not fetch all tags (--no-tags)" msgstr "без доставянето на всички етикети „--no-tags“" -#: builtin/fetch.c:88 +#: builtin/fetch.c:103 msgid "prune remote-tracking branches no longer on remote" -msgstr "окастряне на клоните следящи вече не съществуващи отдалечени клони" +msgstr "окастряне на клоните следящи вече несъществуващи отдалечени клони" -#: builtin/fetch.c:89 +#: builtin/fetch.c:104 msgid "on-demand" msgstr "при нужда" -#: builtin/fetch.c:90 +#: builtin/fetch.c:105 msgid "control recursive fetching of submodules" msgstr "управление на рекурсивното доставяне на подмодулите" -#: builtin/fetch.c:94 +#: builtin/fetch.c:109 msgid "keep downloaded pack" msgstr "запазване на изтеглените пакети с обекти" -#: builtin/fetch.c:96 +#: builtin/fetch.c:111 msgid "allow updating of HEAD ref" msgstr "позволяване на обновяването на указателя „HEAD“" -#: builtin/fetch.c:99 +#: builtin/fetch.c:114 msgid "deepen history of shallow clone" msgstr "задълбочаване на историята на плитко хранилище" -#: builtin/fetch.c:101 +#: builtin/fetch.c:116 msgid "convert to a complete repository" msgstr "превръщане в пълно хранилище" -#: builtin/fetch.c:103 builtin/log.c:1197 +#: builtin/fetch.c:118 builtin/log.c:1205 msgid "dir" msgstr "директория" -#: builtin/fetch.c:104 +#: builtin/fetch.c:119 msgid "prepend this to submodule path output" msgstr "добавяне на това пред пътя на подмодула" -#: builtin/fetch.c:107 +#: builtin/fetch.c:122 msgid "default mode for recursion" msgstr "стандартен режим на рекурсия" -#: builtin/fetch.c:109 +#: builtin/fetch.c:124 msgid "accept refs that update .git/shallow" msgstr "приемане на указатели, които обновяват „.git/shallow“" -#: builtin/fetch.c:347 +#: builtin/fetch.c:125 +msgid "refmap" +msgstr "карта с указатели" + +#: builtin/fetch.c:126 +msgid "specify fetch refmap" +msgstr "указване на картата с указатели за доставяне" + +#: builtin/fetch.c:376 msgid "Couldn't find remote ref HEAD" msgstr "Указателят „HEAD“ в отдалеченото хранилище не може да бъде открит" -#: builtin/fetch.c:411 +#: builtin/fetch.c:440 #, c-format msgid "object %s not found" msgstr "обектът „%s“ липсва" -#: builtin/fetch.c:416 +#: builtin/fetch.c:445 msgid "[up to date]" msgstr "[актуализиран]" -# FIXME - the signs -#: builtin/fetch.c:430 +#: builtin/fetch.c:459 #, c-format msgid "! %-*s %-*s -> %s (can't fetch in current branch)" -msgstr "! %-*s %-*s -> %s (в текущия клон не може да се доставя)" +msgstr "! %-*s %-*s → %s (в текущия клон не може да се доставя)" -#: builtin/fetch.c:431 builtin/fetch.c:517 +#: builtin/fetch.c:460 builtin/fetch.c:546 msgid "[rejected]" msgstr "[отхвърлен]" -#: builtin/fetch.c:442 +#: builtin/fetch.c:471 msgid "[tag update]" msgstr "[обновяване на етикетите]" -#: builtin/fetch.c:444 builtin/fetch.c:479 builtin/fetch.c:497 +#: builtin/fetch.c:473 builtin/fetch.c:508 builtin/fetch.c:526 msgid " (unable to update local ref)" msgstr " (локалните указатели не могат да бъдат обновени)" -#: builtin/fetch.c:462 +#: builtin/fetch.c:491 msgid "[new tag]" msgstr "[нов етикет]" -#: builtin/fetch.c:465 +#: builtin/fetch.c:494 msgid "[new branch]" msgstr "[нов клон]" -#: builtin/fetch.c:468 +#: builtin/fetch.c:497 msgid "[new ref]" msgstr "[нов указател]" -#: builtin/fetch.c:513 +#: builtin/fetch.c:542 msgid "unable to update local ref" msgstr "локален указател не може да бъде обновен" -#: builtin/fetch.c:513 +#: builtin/fetch.c:542 msgid "forced update" msgstr "принудително обновяване" -#: builtin/fetch.c:519 +#: builtin/fetch.c:548 msgid "(non-fast-forward)" msgstr "(сливането не е тривиално)" -#: builtin/fetch.c:552 builtin/fetch.c:785 +#: builtin/fetch.c:581 builtin/fetch.c:814 #, c-format msgid "cannot open %s: %s\n" msgstr "файлът „%s“ не може да бъде отворен: %s\n" -#: builtin/fetch.c:561 +#: builtin/fetch.c:590 #, c-format msgid "%s did not send all necessary objects\n" msgstr "хранилището „%s“ не изпрати всички необходими обекти\n" -#: builtin/fetch.c:579 +#: builtin/fetch.c:608 #, c-format msgid "reject %s because shallow roots are not allowed to be updated" msgstr "" "отхвърляне на върха „%s“, защото плитките хранилища не могат да бъдат " "обновявани" -#: builtin/fetch.c:667 builtin/fetch.c:750 +#: builtin/fetch.c:696 builtin/fetch.c:779 #, c-format msgid "From %.*s\n" msgstr "От %.*s\n" -#: builtin/fetch.c:678 +# FIXME - is the space necessary +#: builtin/fetch.c:707 #, c-format msgid "" "some local refs could not be updated; try running\n" " 'git remote prune %s' to remove any old, conflicting branches" msgstr "" "някои локални указатели не могат да бъдат обновени. Изпълнете командата\n" -" „git remote prune %s“, за да премахнете остарелите клони, които " +"„git remote prune %s“, за да премахнете остарелите клони, които\n" "предизвикват конфликта" -#: builtin/fetch.c:730 +#: builtin/fetch.c:759 #, c-format msgid " (%s will become dangling)" msgstr " (обектът „%s“ ще се окаже извън клон)" -#: builtin/fetch.c:731 +#: builtin/fetch.c:760 #, c-format msgid " (%s has become dangling)" msgstr " (обектът „%s“ вече е извън клон)" -#: builtin/fetch.c:755 +#: builtin/fetch.c:784 msgid "[deleted]" msgstr "[изтрит]" -#: builtin/fetch.c:756 builtin/remote.c:1050 +#: builtin/fetch.c:785 builtin/remote.c:1059 msgid "(none)" msgstr "(нищо)" -#: builtin/fetch.c:775 +#: builtin/fetch.c:804 #, c-format msgid "Refusing to fetch into current branch %s of non-bare repository" -msgstr "" -"Не може да изтегляте в текущия клон „%s“, на хранилище, което не е голо" +msgstr "Не може да изтегляте в текущия клон „%s“ на хранилище, което не е голо" -#: builtin/fetch.c:794 +#: builtin/fetch.c:823 #, c-format msgid "Option \"%s\" value \"%s\" is not valid for %s" msgstr "Стойността „%2$s“ за опцията „%1$s“ не е съвместима с „%3$s“" -#: builtin/fetch.c:797 +#: builtin/fetch.c:826 #, c-format msgid "Option \"%s\" is ignored for %s\n" msgstr "Опцията „%s“ се игнорира при „%s“\n" -#: builtin/fetch.c:853 +#: builtin/fetch.c:882 #, c-format msgid "Don't know how to fetch from %s" msgstr "Не се поддържа доставяне от „%s“" -#: builtin/fetch.c:1015 +#: builtin/fetch.c:1044 #, c-format msgid "Fetching %s\n" msgstr "Доставяне на „%s“\n" -#: builtin/fetch.c:1017 builtin/remote.c:90 +#: builtin/fetch.c:1046 builtin/remote.c:90 #, c-format msgid "Could not fetch %s" msgstr "„%s“ не може да се достави" -#: builtin/fetch.c:1035 +#: builtin/fetch.c:1064 msgid "" "No remote repository specified. Please, specify either a URL or a\n" "remote name from which new revisions should be fetched." msgstr "" "Не сте указали отдалечено хранилище. Задайте или адрес, или име\n" -"на отдалечено хранилище, от където да се доставят новите версии." +"на отдалечено хранилище, откъдето да се доставят новите версии." -#: builtin/fetch.c:1059 +#: builtin/fetch.c:1087 msgid "You need to specify a tag name." msgstr "Трябва да укажете име на етикет." -#: builtin/fetch.c:1107 +#: builtin/fetch.c:1131 msgid "--depth and --unshallow cannot be used together" msgstr "опциите „--depth“ и „--unshallow“ са несъвместими" -#: builtin/fetch.c:1109 +#: builtin/fetch.c:1133 msgid "--unshallow on a complete repository does not make sense" msgstr "не можете да използвате опцията „--unshallow“ върху пълно хранилище" -#: builtin/fetch.c:1132 +#: builtin/fetch.c:1156 msgid "fetch --all does not take a repository argument" -msgstr "към „git fetch --all“ не можете да добавите хранилище аргумент" +msgstr "към „git fetch --all“ не можете да добавите аргумент — хранилище" -#: builtin/fetch.c:1134 +#: builtin/fetch.c:1158 msgid "fetch --all does not make sense with refspecs" msgstr "" -"към „git fetch --all“ не можете да добавите указател на версия за аргумент" +"към „git fetch --all“ не можете да добавите аргумент — указател на версия" -#: builtin/fetch.c:1145 +#: builtin/fetch.c:1169 #, c-format msgid "No such remote or remote group: %s" msgstr "Няма нито отдалечено хранилище, нито група от хранилища на име „%s“" -#: builtin/fetch.c:1153 +#: builtin/fetch.c:1177 msgid "Fetching a group and specifying refspecs does not make sense" msgstr "Указването на група и указването на версия са несъвместими" @@ -5322,9 +5506,9 @@ msgstr "Указването на група и указването на вер msgid "git fmt-merge-msg [-m ] [--log[=]|--no-log] [--file ]" msgstr "git fmt-merge-msg [-m СЪОБЩЕНИЕ] [--log[=БРОЙ]|--no-log] [--file ФАЙЛ]" -#: builtin/fmt-merge-msg.c:663 builtin/fmt-merge-msg.c:666 builtin/grep.c:700 -#: builtin/merge.c:196 builtin/repack.c:175 builtin/repack.c:179 -#: builtin/show-branch.c:654 builtin/show-ref.c:178 builtin/tag.c:501 +#: builtin/fmt-merge-msg.c:663 builtin/fmt-merge-msg.c:666 builtin/grep.c:698 +#: builtin/merge.c:196 builtin/repack.c:179 builtin/repack.c:183 +#: builtin/show-branch.c:654 builtin/show-ref.c:178 builtin/tag.c:589 #: parse-options.h:132 parse-options.h:239 msgid "n" msgstr "БРОЙ" @@ -5351,154 +5535,155 @@ msgstr "за начало на съобщението да се ползва Т msgid "file to read from" msgstr "файл, от който да се чете" -#: builtin/for-each-ref.c:1063 +#: builtin/for-each-ref.c:1051 msgid "git for-each-ref [options] []" -msgstr "" +msgstr "git for-each-ref [ОПЦИЯ…] [ШАБЛОН]" -#: builtin/for-each-ref.c:1078 +#: builtin/for-each-ref.c:1066 msgid "quote placeholders suitably for shells" -msgstr "" +msgstr "цитиране подходящо за командни интерпретатори на обвивката" -#: builtin/for-each-ref.c:1080 +#: builtin/for-each-ref.c:1068 msgid "quote placeholders suitably for perl" -msgstr "" +msgstr "цитиране подходящо за perl" -#: builtin/for-each-ref.c:1082 +#: builtin/for-each-ref.c:1070 msgid "quote placeholders suitably for python" -msgstr "" +msgstr "цитиране подходящо за python" -#: builtin/for-each-ref.c:1084 +#: builtin/for-each-ref.c:1072 msgid "quote placeholders suitably for tcl" -msgstr "" +msgstr "цитиране подходящо за tcl" -#: builtin/for-each-ref.c:1087 +#: builtin/for-each-ref.c:1075 msgid "show only matched refs" msgstr "извеждане само на този БРОЙ напаснати указатели" -#: builtin/for-each-ref.c:1088 builtin/replace.c:177 +#: builtin/for-each-ref.c:1076 builtin/replace.c:435 msgid "format" msgstr "ФОРМАТ" -#: builtin/for-each-ref.c:1088 +#: builtin/for-each-ref.c:1076 msgid "format to use for the output" msgstr "ФОРМАТ за изхода" -#: builtin/for-each-ref.c:1089 +#: builtin/for-each-ref.c:1077 msgid "key" -msgstr "" +msgstr "ключ" -#: builtin/for-each-ref.c:1090 +#: builtin/for-each-ref.c:1078 msgid "field name to sort on" -msgstr "" +msgstr "име на полето, по което да е подредбата" #: builtin/fsck.c:147 builtin/prune.c:172 msgid "Checking connectivity" msgstr "Проверка на връзката" -#: builtin/fsck.c:544 +#: builtin/fsck.c:538 msgid "Checking object directories" msgstr "Проверка на директориите с обекти" -#: builtin/fsck.c:607 +#: builtin/fsck.c:601 msgid "git fsck [options] [...]" -msgstr "git fsck [ОПЦИИ] [ОБЕКТ…]" +msgstr "git fsck [ОПЦИЯ…] [ОБЕКТ…]" -#: builtin/fsck.c:613 +#: builtin/fsck.c:607 msgid "show unreachable objects" msgstr "показване на недостижимите обекти" -#: builtin/fsck.c:614 +#: builtin/fsck.c:608 msgid "show dangling objects" msgstr "показване на обектите извън клоните" -#: builtin/fsck.c:615 +#: builtin/fsck.c:609 msgid "report tags" msgstr "показване на етикетите" -#: builtin/fsck.c:616 +#: builtin/fsck.c:610 msgid "report root nodes" msgstr "показване на кореновите възли" -#: builtin/fsck.c:617 +#: builtin/fsck.c:611 msgid "make index objects head nodes" msgstr "задаване на обекти от индекса да са коренови" # FIXME bad message -#: builtin/fsck.c:618 +#: builtin/fsck.c:612 msgid "make reflogs head nodes (default)" msgstr "проследяване на указателите от журнала като глави (стандартно)" -#: builtin/fsck.c:619 +#: builtin/fsck.c:613 msgid "also consider packs and alternate objects" msgstr "допълнително да се проверяват пакетите и алтернативните обекти" -#: builtin/fsck.c:620 +#: builtin/fsck.c:614 msgid "enable more strict checking" msgstr "по-строги проверки" -#: builtin/fsck.c:622 +#: builtin/fsck.c:616 msgid "write dangling objects in .git/lost-found" msgstr "запазване на обектите извън клоните в директорията „.git/lost-found“" -#: builtin/fsck.c:623 builtin/prune.c:144 +#: builtin/fsck.c:617 builtin/prune.c:144 msgid "show progress" msgstr "показване на напредъка" -#: builtin/fsck.c:673 +#: builtin/fsck.c:667 msgid "Checking objects" msgstr "Проверка на обектите" +# FIXME plural with ... #: builtin/gc.c:24 msgid "git gc [options]" -msgstr "git gc [ОПЦИИ]" +msgstr "git gc [ОПЦИЯ…]" -#: builtin/gc.c:90 +#: builtin/gc.c:91 #, c-format msgid "Invalid %s: '%s'" msgstr "Неправилна стойност за „%s“: „%s“" -#: builtin/gc.c:117 +#: builtin/gc.c:118 #, c-format msgid "insanely long object directory %.*s" msgstr "прекалено дълга директория с обекти „%.*s“" -#: builtin/gc.c:273 +#: builtin/gc.c:287 msgid "prune unreferenced objects" msgstr "окастряне на обектите, към които нищо не сочи" -#: builtin/gc.c:275 +#: builtin/gc.c:289 msgid "be more thorough (increased runtime)" msgstr "изчерпателно търсене на боклука (за сметка на повече време работа)" -#: builtin/gc.c:276 +#: builtin/gc.c:290 msgid "enable auto-gc mode" msgstr "включване на автоматичното събиране на боклука (auto-gc)" -#: builtin/gc.c:277 +#: builtin/gc.c:291 msgid "force running gc even if there may be another gc running" msgstr "" "изрично стартиране на събирането на боклука, дори и ако вече работи друго " "събиране" -#: builtin/gc.c:318 +#: builtin/gc.c:332 #, c-format msgid "Auto packing the repository in background for optimum performance.\n" msgstr "" "Автоматично пакетиране на заден фон на хранилището за по-добра " "производителност.\n" -#: builtin/gc.c:320 +#: builtin/gc.c:334 #, c-format msgid "Auto packing the repository for optimum performance.\n" msgstr "Автоматично пакетиране на хранилището за по-добра производителност.\n" -#: builtin/gc.c:321 +#: builtin/gc.c:335 #, c-format msgid "See \"git help gc\" for manual housekeeping.\n" msgstr "" "Вижте ръководството за повече информация как да изпълните „git help gc“.\n" -#: builtin/gc.c:336 +#: builtin/gc.c:353 #, c-format msgid "" "gc is already running on machine '%s' pid % (use --force if not)" @@ -5507,256 +5692,251 @@ msgstr "" "процеса: % (ако сте сигурни, че това не е вярно, това използвайте\n" "опцията „--force“)" -#: builtin/gc.c:361 +#: builtin/gc.c:375 msgid "" "There are too many unreachable loose objects; run 'git prune' to remove them." msgstr "" -"Има прекалено много недостижими, непакетирани обекти. Използвайте „git " -"prune“, за да\n" -"ги окастрите." +"Има прекалено много недостижими, непакетирани обекти.\n" +"Използвайте „git prune“, за да ги окастрите." +# FIXME plural ... options #: builtin/grep.c:23 msgid "git grep [options] [-e] [...] [[--] ...]" -msgstr "git grep [ОПЦИИ] [-e] ШАБЛОН [ВЕРСИЯ…] [[--] ПЪТ…]" +msgstr "git grep [ОПЦИЯ…] [-e] ШАБЛОН [ВЕРСИЯ…] [[--] ПЪТ…]" #: builtin/grep.c:218 #, c-format msgid "grep: failed to create thread: %s" msgstr "grep: неуспешно създаване на нишка: %s" -#: builtin/grep.c:365 -#, c-format -msgid "Failed to chdir: %s" -msgstr "Неуспешна смяна на директория: %s" - -#: builtin/grep.c:443 builtin/grep.c:478 +#: builtin/grep.c:441 builtin/grep.c:476 #, c-format msgid "unable to read tree (%s)" msgstr "дървото не може да бъде прочетено (%s)" -#: builtin/grep.c:493 +#: builtin/grep.c:491 #, c-format msgid "unable to grep from object of type %s" msgstr "не може да се изпълни „grep“ от обект от вида %s" -#: builtin/grep.c:549 +#: builtin/grep.c:547 #, c-format msgid "switch `%c' expects a numerical value" msgstr "опцията „%c“ очаква число за аргумент" -#: builtin/grep.c:566 +#: builtin/grep.c:564 #, c-format msgid "cannot open '%s'" msgstr "„%s“ не може да бъде отворен" -#: builtin/grep.c:640 +#: builtin/grep.c:638 msgid "search in index instead of in the work tree" msgstr "търсене в индекса, а не в работното дърво" -#: builtin/grep.c:642 +#: builtin/grep.c:640 msgid "find in contents not managed by git" msgstr "търсене и във файловете, които не са под управлението на git" -#: builtin/grep.c:644 +#: builtin/grep.c:642 msgid "search in both tracked and untracked files" msgstr "търсене и в следените, и в неследените файлове" -#: builtin/grep.c:646 +#: builtin/grep.c:644 msgid "search also in ignored files" msgstr "търсене и в игнорираните файлове" -#: builtin/grep.c:649 +#: builtin/grep.c:647 msgid "show non-matching lines" msgstr "извеждане на редовете, които не съвпадат" -#: builtin/grep.c:651 +#: builtin/grep.c:649 msgid "case insensitive matching" msgstr "без значение на регистъра на буквите (главни/малки)" -#: builtin/grep.c:653 +#: builtin/grep.c:651 msgid "match patterns only at word boundaries" msgstr "напасване на шаблоните само по границите на думите" -#: builtin/grep.c:655 +#: builtin/grep.c:653 msgid "process binary files as text" msgstr "обработване на двоичните файлове като текстови" -#: builtin/grep.c:657 +#: builtin/grep.c:655 msgid "don't match patterns in binary files" msgstr "прескачане на двоичните файлове" -#: builtin/grep.c:660 +#: builtin/grep.c:658 msgid "process binary files with textconv filters" msgstr "" "обработване на двоичните файлове чрез филтри за преобразуване към текст" -#: builtin/grep.c:662 +#: builtin/grep.c:660 msgid "descend at most levels" msgstr "навлизане максимално на тази ДЪЛБОЧИНА в дървото" -#: builtin/grep.c:666 +#: builtin/grep.c:664 msgid "use extended POSIX regular expressions" msgstr "разширени регулярни изрази по POSIX" -#: builtin/grep.c:669 +#: builtin/grep.c:667 msgid "use basic POSIX regular expressions (default)" msgstr "основни регулярни изрази по POSIX (стандартно)" -#: builtin/grep.c:672 +#: builtin/grep.c:670 msgid "interpret patterns as fixed strings" msgstr "шаблоните са дословни низове" -#: builtin/grep.c:675 +#: builtin/grep.c:673 msgid "use Perl-compatible regular expressions" msgstr "регулярни изрази на Perl" -#: builtin/grep.c:678 +#: builtin/grep.c:676 msgid "show line numbers" msgstr "извеждане на номерата на редовете" -#: builtin/grep.c:679 +#: builtin/grep.c:677 msgid "don't show filenames" msgstr "без извеждане на имената на файловете" -#: builtin/grep.c:680 +#: builtin/grep.c:678 msgid "show filenames" msgstr "извеждане на имената на файловете" -#: builtin/grep.c:682 +#: builtin/grep.c:680 msgid "show filenames relative to top directory" msgstr "" "извеждане на относителните имена на файловете спрямо основната директория на " "хранилището" -#: builtin/grep.c:684 +#: builtin/grep.c:682 msgid "show only filenames instead of matching lines" msgstr "извеждане само на имената на файловете без напасващите редове" -#: builtin/grep.c:686 +#: builtin/grep.c:684 msgid "synonym for --files-with-matches" msgstr "синоним на „--files-with-matches“" -#: builtin/grep.c:689 +#: builtin/grep.c:687 msgid "show only the names of files without match" msgstr "" "извеждане само на имената на файловете, които не съдържат ред, напасващ на " "шаблона" -#: builtin/grep.c:691 +#: builtin/grep.c:689 msgid "print NUL after filenames" msgstr "извеждане на нулевия знак „NUL“ след всяко име на файл" -#: builtin/grep.c:693 +#: builtin/grep.c:691 msgid "show the number of matches instead of matching lines" msgstr "извеждане на броя на съвпаденията вместо напасващите редове" -#: builtin/grep.c:694 +#: builtin/grep.c:692 msgid "highlight matches" msgstr "оцветяване на напасванията" -#: builtin/grep.c:696 +#: builtin/grep.c:694 msgid "print empty line between matches from different files" msgstr "извеждане на празен ред между напасванията от различни файлове" -#: builtin/grep.c:698 +#: builtin/grep.c:696 msgid "show filename only once above matches from same file" msgstr "" "извеждане на името на файла само веднъж за всички напасвания от този файл" -#: builtin/grep.c:701 +#: builtin/grep.c:699 msgid "show context lines before and after matches" msgstr "извеждане на такъв БРОЙ редове преди и след напасванията" -#: builtin/grep.c:704 +#: builtin/grep.c:702 msgid "show context lines before matches" msgstr "извеждане на такъв БРОЙ редове преди напасванията" -#: builtin/grep.c:706 +#: builtin/grep.c:704 msgid "show context lines after matches" msgstr "извеждане на такъв БРОЙ редове след напасванията" -#: builtin/grep.c:707 +#: builtin/grep.c:705 msgid "shortcut for -C NUM" msgstr "синоним на „-C БРОЙ“" -#: builtin/grep.c:710 +#: builtin/grep.c:708 msgid "show a line with the function name before matches" msgstr "извеждане на ред с името на функцията, в която е напаснат шаблона" -#: builtin/grep.c:712 +#: builtin/grep.c:710 msgid "show the surrounding function" msgstr "извеждане на обхващащата функция" -#: builtin/grep.c:715 +#: builtin/grep.c:713 msgid "read patterns from file" msgstr "изчитане на шаблоните от файл" -#: builtin/grep.c:717 +#: builtin/grep.c:715 msgid "match " msgstr "напасване на ШАБЛОН" -#: builtin/grep.c:719 +#: builtin/grep.c:717 msgid "combine patterns specified with -e" msgstr "комбиниране на шаблоните указани с опцията „-e“" -#: builtin/grep.c:731 +#: builtin/grep.c:729 msgid "indicate hit with exit status without output" msgstr "" "без извеждане на стандартния изход. Изходният код указва наличието на " "напасване" -#: builtin/grep.c:733 +#: builtin/grep.c:731 msgid "show only matches from files that match all patterns" msgstr "" "извеждане на редове само от файловете, които напасват на всички шаблони" -#: builtin/grep.c:735 +#: builtin/grep.c:733 msgid "show parse tree for grep expression" msgstr "извеждане на дървото за анализ на регулярния израз" -#: builtin/grep.c:739 +#: builtin/grep.c:737 msgid "pager" -msgstr "програма за обхождане" +msgstr "програма за преглед по страници" -#: builtin/grep.c:739 +#: builtin/grep.c:737 msgid "show matching files in the pager" -msgstr "извеждане на съвпадащите файлове в програма за обхождане" +msgstr "извеждане на съвпадащите файлове в програма за преглед по страници" -#: builtin/grep.c:742 +#: builtin/grep.c:740 msgid "allow calling of grep(1) (ignored by this build)" msgstr "" "позволяване на стартирането на grep(1) (текущият компилат пренебрегва тази " "опция)" -#: builtin/grep.c:743 builtin/show-ref.c:187 +#: builtin/grep.c:741 builtin/show-ref.c:187 msgid "show usage" msgstr "извеждане на начина на употреба на командата" -#: builtin/grep.c:810 +#: builtin/grep.c:808 msgid "no pattern given." msgstr "липсва шаблон." -#: builtin/grep.c:868 +#: builtin/grep.c:866 msgid "--open-files-in-pager only works on the worktree" msgstr "" "опцията „--open-files-in-pager“ е съвместима само с търсене в работното дърво" -#: builtin/grep.c:891 +#: builtin/grep.c:892 msgid "--cached or --untracked cannot be used with --no-index." msgstr "опциите „--cached“ и „--untracked“ са несъвместими с „--no-index“." -#: builtin/grep.c:896 +#: builtin/grep.c:897 msgid "--no-index or --untracked cannot be used with revs." msgstr "" "опциите „--cached“ и „--untracked“ са несъвместими с търсене във версии." -#: builtin/grep.c:899 +#: builtin/grep.c:900 msgid "--[no-]exclude-standard cannot be used for tracked contents." msgstr "" "опциите „--(no-)exclude-standard“ са несъвместими с търсене по следени " "файлове." -#: builtin/grep.c:907 +#: builtin/grep.c:908 msgid "both --cached and trees are given." msgstr "опцията „--cached“ е несъвместима със задаване на дърво." @@ -5765,34 +5945,36 @@ msgid "" "git hash-object [-t ] [-w] [--path=|--no-filters] [--stdin] [--] " "..." msgstr "" +"git hash-object [-t ВИД] [-w] [--path=ФАЙЛ|--no-filters] [--stdin] [--] ФАЙЛ…" +# FIXME - list of paths or path... #: builtin/hash-object.c:61 msgid "git hash-object --stdin-paths < " -msgstr "" +msgstr "git hash-object --stdin-paths < ПЪТ…" -#: builtin/hash-object.c:72 builtin/tag.c:521 +#: builtin/hash-object.c:72 builtin/tag.c:609 msgid "type" -msgstr "" +msgstr "ВИД" #: builtin/hash-object.c:72 msgid "object type" -msgstr "" +msgstr "вид на обекта" #: builtin/hash-object.c:73 msgid "write the object into the object database" -msgstr "" +msgstr "записване на обекта в базата от данни за обектите" #: builtin/hash-object.c:74 msgid "read the object from stdin" -msgstr "" +msgstr "изчитане на обекта от стандартния вход" #: builtin/hash-object.c:76 msgid "store file as is without filters" -msgstr "" +msgstr "запазване на файла както е — без филтри" #: builtin/hash-object.c:77 msgid "process file as it were from this path" -msgstr "" +msgstr "обработване на файла все едно е с този път" #: builtin/help.c:41 msgid "print all available commands" @@ -5847,7 +6029,7 @@ msgid "" "'%s': path for unsupported man viewer.\n" "Please consider using 'man..cmd' instead." msgstr "" -"„%s“: път към неподдържана програма за разглеждане на\n" +"„%s“: път към неподдържана програма за преглед на\n" " ръководството. Вместо нея пробвайте „man..cmd“." #: builtin/help.c:228 @@ -5856,7 +6038,7 @@ msgid "" "'%s': cmd for supported man viewer.\n" "Please consider using 'man..path' instead." msgstr "" -"„%s“: команда за поддържана програма за разглеждане на\n" +"„%s“: команда за поддържана програма за преглед на\n" " ръководството. Вместо нея пробвайте „man..path“." #: builtin/help.c:353 @@ -5866,11 +6048,13 @@ msgstr "„%s“: непозната програма за преглед на #: builtin/help.c:370 msgid "no man viewer handled the request" -msgstr "никоя програма за ръководство не успя да обработи заявката" +msgstr "никоя програма за преглед на ръководство не успя да обработи заявката" #: builtin/help.c:378 msgid "no info viewer handled the request" -msgstr "никоя програма за информационни страници не успя да обработи заявката" +msgstr "" +"никоя програма за преглед на информационните страници не успя да обработи " +"заявката" #: builtin/help.c:424 msgid "Defining attributes per path" @@ -5914,367 +6098,394 @@ msgstr "употреба: %s%s" msgid "`git %s' is aliased to `%s'" msgstr "„git %s“ е синоним на „%s“" -#: builtin/index-pack.c:184 +# FIXME merge with next? +#: builtin/index-pack.c:145 #, c-format -msgid "object type mismatch at %s" -msgstr "" +msgid "unable to open %s" +msgstr "обектът „%s“ не може да бъде отворен" -#: builtin/index-pack.c:204 -msgid "object of unexpected type" -msgstr "" +#: builtin/index-pack.c:191 +#, c-format +msgid "object type mismatch at %s" +msgstr "неправилен вид на обекта „%s“" + +#: builtin/index-pack.c:211 +#, c-format +msgid "did not receive expected object %s" +msgstr "очакваният обект „%s“ не бе получен" + +#: builtin/index-pack.c:214 +#, c-format +msgid "object %s: expected type %s, found %s" +msgstr "неправилен вид на обекта „%s“: очакваше се „%s“, а бе получен „%s“" -#: builtin/index-pack.c:244 +#: builtin/index-pack.c:256 #, c-format msgid "cannot fill %d byte" msgid_plural "cannot fill %d bytes" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "не може да се запълни %d байт" +msgstr[1] "не може да се запълнят %d байта" -#: builtin/index-pack.c:254 +#: builtin/index-pack.c:266 msgid "early EOF" -msgstr "" +msgstr "неочакван край на файл" -#: builtin/index-pack.c:255 +#: builtin/index-pack.c:267 msgid "read error on input" -msgstr "" +msgstr "грешка при четене на входните данни" -#: builtin/index-pack.c:267 +#: builtin/index-pack.c:279 msgid "used more bytes than were available" -msgstr "" +msgstr "използвани са повече от наличните байтове" -#: builtin/index-pack.c:274 +#: builtin/index-pack.c:286 msgid "pack too large for current definition of off_t" -msgstr "" +msgstr "пакетният файл е прекалено голям за текущата стойност на типа „off_t“" -#: builtin/index-pack.c:290 +#: builtin/index-pack.c:302 #, c-format msgid "unable to create '%s'" -msgstr "" +msgstr "пакетният файл „%s“ не може да бъде създаден" -#: builtin/index-pack.c:295 +#: builtin/index-pack.c:307 #, c-format msgid "cannot open packfile '%s'" -msgstr "" +msgstr "пакетният файл „%s“ не може да бъде отворен" -#: builtin/index-pack.c:309 +#: builtin/index-pack.c:321 msgid "pack signature mismatch" -msgstr "" +msgstr "несъответствие в подписа към пакетния файл" -#: builtin/index-pack.c:311 +#: builtin/index-pack.c:323 #, c-format msgid "pack version % unsupported" -msgstr "" +msgstr "не се поддържа пакетиране вeрсия „%“" -#: builtin/index-pack.c:329 +#: builtin/index-pack.c:341 #, c-format msgid "pack has bad object at offset %lu: %s" -msgstr "" +msgstr "повреден обект в пакетния файл при отместване %lu: %s" -#: builtin/index-pack.c:451 +#: builtin/index-pack.c:462 #, c-format msgid "inflate returned %d" -msgstr "" +msgstr "декомпресирането с „inflate“ върна %d" -#: builtin/index-pack.c:500 +#: builtin/index-pack.c:511 msgid "offset value overflow for delta base object" -msgstr "" +msgstr "стойността на отместването за обекта-разлика води до препълване" -#: builtin/index-pack.c:508 +#: builtin/index-pack.c:519 msgid "delta base offset is out of bound" -msgstr "" +msgstr "стойността на отместването за обекта-разлика е извън диапазона" -#: builtin/index-pack.c:516 +#: builtin/index-pack.c:527 #, c-format msgid "unknown object type %d" -msgstr "" +msgstr "непознат вид обект %d" -#: builtin/index-pack.c:547 +#: builtin/index-pack.c:558 msgid "cannot pread pack file" -msgstr "" +msgstr "пакетният файл не може да бъде прочетен" -#: builtin/index-pack.c:549 +#: builtin/index-pack.c:560 #, c-format msgid "premature end of pack file, %lu byte missing" msgid_plural "premature end of pack file, %lu bytes missing" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "неочакван край на файл, липсва %lu байт" +msgstr[1] "неочакван край на файл, липсват %lu байта" -#: builtin/index-pack.c:575 +#: builtin/index-pack.c:586 msgid "serious inflate inconsistency" -msgstr "" +msgstr "сериозна грешка при декомпресиране с „inflate“" -#: builtin/index-pack.c:666 builtin/index-pack.c:672 builtin/index-pack.c:695 -#: builtin/index-pack.c:729 builtin/index-pack.c:738 +#: builtin/index-pack.c:677 builtin/index-pack.c:683 builtin/index-pack.c:706 +#: builtin/index-pack.c:740 builtin/index-pack.c:749 #, c-format msgid "SHA1 COLLISION FOUND WITH %s !" msgstr "" +"СЪВПАДЕНИЕ НА СТОЙНОСТИТЕ ЗА СУМИТЕ ЗА SHA1: „%s“ НА ДВА РАЗЛИЧНИ ОБЕКТА!" -#: builtin/index-pack.c:669 builtin/pack-objects.c:162 +# FIXME merge with next? +#: builtin/index-pack.c:680 builtin/pack-objects.c:162 #: builtin/pack-objects.c:254 #, c-format msgid "unable to read %s" -msgstr "" +msgstr "обектът „%s“ не може да бъде прочетен" -#: builtin/index-pack.c:735 +#: builtin/index-pack.c:746 #, c-format msgid "cannot read existing object %s" -msgstr "" +msgstr "съществуващият обект „%s“ не може да бъде прочетен" -#: builtin/index-pack.c:749 +#: builtin/index-pack.c:760 #, c-format msgid "invalid blob object %s" -msgstr "" +msgstr "неправилен обект BLOB „%s“" -#: builtin/index-pack.c:763 +# FIXME perhaps invalid object +#: builtin/index-pack.c:774 #, c-format msgid "invalid %s" -msgstr "" +msgstr "неправилен обект „%s“" -#: builtin/index-pack.c:766 +#: builtin/index-pack.c:777 msgid "Error in object" -msgstr "" +msgstr "Грешка в обекта" -#: builtin/index-pack.c:768 +#: builtin/index-pack.c:779 #, c-format msgid "Not all child objects of %s are reachable" -msgstr "" +msgstr "Някои обекти, наследници на „%s“, не могат да бъдат достигнати" -#: builtin/index-pack.c:839 builtin/index-pack.c:869 +#: builtin/index-pack.c:851 builtin/index-pack.c:881 msgid "failed to apply delta" -msgstr "" +msgstr "разликата не може да бъде приложена" -#: builtin/index-pack.c:1010 +#: builtin/index-pack.c:1022 msgid "Receiving objects" -msgstr "" +msgstr "Получаване на обекти" -#: builtin/index-pack.c:1010 +#: builtin/index-pack.c:1022 msgid "Indexing objects" -msgstr "" +msgstr "Индексиране на обекти" -#: builtin/index-pack.c:1036 +#: builtin/index-pack.c:1048 msgid "pack is corrupted (SHA1 mismatch)" -msgstr "" +msgstr "пакетният файл е повреден (нееднакви суми по SHA1)" -#: builtin/index-pack.c:1041 +#: builtin/index-pack.c:1053 msgid "cannot fstat packfile" -msgstr "" +msgstr "не може да се получи информация за пакетния файл с „fstat“" -#: builtin/index-pack.c:1044 +#: builtin/index-pack.c:1056 msgid "pack has junk at the end" -msgstr "" +msgstr "в края на пакетния файл има повредени данни" -#: builtin/index-pack.c:1055 +# FIXME WTF message +#: builtin/index-pack.c:1067 msgid "confusion beyond insanity in parse_pack_objects()" -msgstr "" +msgstr "катастрофална грешка във функцията „parse_pack_objects“" -#: builtin/index-pack.c:1078 +#: builtin/index-pack.c:1090 msgid "Resolving deltas" -msgstr "" +msgstr "Откриване на съответните разлики" -#: builtin/index-pack.c:1088 +#: builtin/index-pack.c:1100 #, c-format msgid "unable to create thread: %s" -msgstr "" +msgstr "не може да се създаде нишка: %s" -#: builtin/index-pack.c:1130 +# FIXME WTF message +#: builtin/index-pack.c:1142 msgid "confusion beyond insanity" -msgstr "" +msgstr "катастрофална грешка" -#: builtin/index-pack.c:1138 +#: builtin/index-pack.c:1150 #, c-format msgid "completed with %d local objects" -msgstr "" +msgstr "действието завърши с %d локални обекта" -#: builtin/index-pack.c:1148 +#: builtin/index-pack.c:1160 #, c-format msgid "Unexpected tail checksum for %s (disk corruption?)" msgstr "" +"Неочаквана последваща сума за грешки за „%s“ (причината може да е грешка в " +"диска)" -#: builtin/index-pack.c:1152 +#: builtin/index-pack.c:1164 #, c-format msgid "pack has %d unresolved delta" msgid_plural "pack has %d unresolved deltas" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "в пакета има %d ненапасваща разлика" +msgstr[1] "в пакета има %d ненапасващи разлики" -#: builtin/index-pack.c:1177 +#: builtin/index-pack.c:1189 #, c-format msgid "unable to deflate appended object (%d)" -msgstr "" +msgstr "добавеният обект не може да се компресира с „deflate“: %d" -#: builtin/index-pack.c:1256 +#: builtin/index-pack.c:1268 #, c-format msgid "local object %s is corrupt" -msgstr "" +msgstr "локалният обект „%s“ е повреден" -#: builtin/index-pack.c:1280 +#: builtin/index-pack.c:1292 msgid "error while closing pack file" -msgstr "" +msgstr "грешка при затварянето на пакетния файл" -#: builtin/index-pack.c:1293 +#: builtin/index-pack.c:1305 #, c-format msgid "cannot write keep file '%s'" msgstr "" +"грешка при записването на файла „%s“, осигуряващ запазване на директория" -#: builtin/index-pack.c:1301 +#: builtin/index-pack.c:1313 #, c-format msgid "cannot close written keep file '%s'" msgstr "" +"грешка при затварянето на записания файл „%s“, осигуряващ запазване на " +"директория" -#: builtin/index-pack.c:1314 +#: builtin/index-pack.c:1326 msgid "cannot store pack file" -msgstr "" +msgstr "пакетният файл не може да бъде запазен" -#: builtin/index-pack.c:1325 +#: builtin/index-pack.c:1337 msgid "cannot store index file" msgstr "файлът за индекса не може да бъде съхранен" -#: builtin/index-pack.c:1358 +#: builtin/index-pack.c:1370 #, c-format msgid "bad pack.indexversion=%" -msgstr "" +msgstr "зададена е неправилна версия пакетиране: „pack.indexversion=%“" -#: builtin/index-pack.c:1364 +#: builtin/index-pack.c:1376 #, c-format msgid "invalid number of threads specified (%d)" -msgstr "" +msgstr "зададен е неправилен брой нишки: %d" -#: builtin/index-pack.c:1368 builtin/index-pack.c:1546 +#: builtin/index-pack.c:1380 builtin/index-pack.c:1559 #, c-format msgid "no threads support, ignoring %s" -msgstr "" +msgstr "липсва поддръжка за нишки. „%s“ ще се пренебрегне" -#: builtin/index-pack.c:1426 +#: builtin/index-pack.c:1438 #, c-format msgid "Cannot open existing pack file '%s'" -msgstr "" +msgstr "Съществуващият пакетен файл „%s“ не може да бъде отворен" -#: builtin/index-pack.c:1428 +#: builtin/index-pack.c:1440 #, c-format msgid "Cannot open existing pack idx file for '%s'" -msgstr "" +msgstr "Съществуващият индекс за пакетния файл „%s“ не може да бъде отворен" -#: builtin/index-pack.c:1475 +#: builtin/index-pack.c:1487 #, c-format msgid "non delta: %d object" msgid_plural "non delta: %d objects" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d обект не е разлика" +msgstr[1] "%d обекта не са разлика" -#: builtin/index-pack.c:1482 +#: builtin/index-pack.c:1494 #, c-format msgid "chain length = %d: %lu object" msgid_plural "chain length = %d: %lu objects" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "дължината на веригата е %d: %lu обект" +msgstr[1] "дължината на веригата е %d: %lu обекта" -#: builtin/index-pack.c:1510 +# FIXME it is not the cwd it is the previous cwd +#: builtin/index-pack.c:1523 msgid "Cannot come back to cwd" -msgstr "" +msgstr "Процесът не може да се върне към предишната работна директория" -#: builtin/index-pack.c:1558 builtin/index-pack.c:1561 -#: builtin/index-pack.c:1573 builtin/index-pack.c:1577 +#: builtin/index-pack.c:1571 builtin/index-pack.c:1574 +#: builtin/index-pack.c:1586 builtin/index-pack.c:1590 #, c-format msgid "bad %s" -msgstr "" +msgstr "неправилна стойност „%s“" -#: builtin/index-pack.c:1591 +#: builtin/index-pack.c:1604 msgid "--fix-thin cannot be used without --stdin" -msgstr "" +msgstr "опцията „--fix-thin“ изисква „--stdin“" -#: builtin/index-pack.c:1595 builtin/index-pack.c:1605 +#: builtin/index-pack.c:1608 builtin/index-pack.c:1617 #, c-format msgid "packfile name '%s' does not end with '.pack'" -msgstr "" +msgstr "името на пакетния файл „%s“ не завършва на „.pack“" -#: builtin/index-pack.c:1614 +#: builtin/index-pack.c:1625 msgid "--verify with no packfile name given" -msgstr "" +msgstr "опцията „--verify“ изисква име на пакетен файл" #: builtin/init-db.c:35 #, c-format msgid "Could not make %s writable by group" -msgstr "" +msgstr "Не могат да се дадат права за запис в директорията „%s“ на групата" +# FIXME - bad wording insanely #: builtin/init-db.c:62 #, c-format msgid "insanely long template name %s" -msgstr "" +msgstr "твърде дълго име на шаблон: „%s“" #: builtin/init-db.c:67 #, c-format msgid "cannot stat '%s'" -msgstr "" +msgstr "не може да се получи информация чрез „stat“ за директорията „%s“" #: builtin/init-db.c:73 #, c-format msgid "cannot stat template '%s'" -msgstr "" +msgstr "не може да се получи информация чрез „stat“ за шаблона „%s“" #: builtin/init-db.c:80 #, c-format msgid "cannot opendir '%s'" -msgstr "" +msgstr "директорията „%s“ не може да бъде отворена" #: builtin/init-db.c:97 #, c-format msgid "cannot readlink '%s'" -msgstr "" +msgstr "връзката „%s“ не може да бъде прочетена" +# FIXME - bad wording insanely #: builtin/init-db.c:99 #, c-format msgid "insanely long symlink %s" -msgstr "" +msgstr "твърде дълго име на символна връзка: „%s“" #: builtin/init-db.c:102 #, c-format msgid "cannot symlink '%s' '%s'" -msgstr "" +msgstr "не може да се създаде символна връзка „%s“ в „%s“" #: builtin/init-db.c:106 #, c-format msgid "cannot copy '%s' to '%s'" -msgstr "" +msgstr "„%s“ не може да се копира в „%s“" #: builtin/init-db.c:110 #, c-format msgid "ignoring template %s" -msgstr "" +msgstr "игнориране на шаблона „%s“" +# FIXME bad word insanely #: builtin/init-db.c:133 #, c-format msgid "insanely long template path %s" -msgstr "" +msgstr "твърде дълъг път към шаблон: „%s“" #: builtin/init-db.c:141 #, c-format msgid "templates not found %s" -msgstr "" +msgstr "директорията с шаблоните не е открита: „%s“" #: builtin/init-db.c:154 #, c-format msgid "not copying templates of a wrong format version %d from '%s'" msgstr "" +"шаблоните с неправилен номер на формата %d няма да бъдат копирани от „%s“" #: builtin/init-db.c:192 #, c-format msgid "insane git directory %s" -msgstr "" +msgstr "твърде дълго име на директория на Git: „%s“" #: builtin/init-db.c:323 builtin/init-db.c:326 #, c-format msgid "%s already exists" -msgstr "" +msgstr "Директорията „%s“ вече съществува" #: builtin/init-db.c:355 #, c-format msgid "unable to handle file type %d" -msgstr "" +msgstr "файлове от вид %d не се поддържат" #: builtin/init-db.c:358 #, c-format msgid "unable to move %s to %s" -msgstr "" +msgstr "„%s“ не може да се премести в „%s“" #. TRANSLATORS: The first '%s' is either "Reinitialized #. existing" or "Initialized empty", the second " shared" or @@ -6282,51 +6493,55 @@ msgstr "" #: builtin/init-db.c:418 #, c-format msgid "%s%s Git repository in %s%s\n" -msgstr "" +msgstr "%s%s хранилище на Git в „%s%s“\n" #: builtin/init-db.c:419 msgid "Reinitialized existing" -msgstr "" +msgstr "Наново инициализирано, съществуващо" #: builtin/init-db.c:419 msgid "Initialized empty" -msgstr "" +msgstr "Инициализирано празно" #: builtin/init-db.c:420 msgid " shared" -msgstr "" +msgstr ", споделено" #: builtin/init-db.c:439 msgid "cannot tell cwd" -msgstr "" +msgstr "текущата директория не може да бъде определена" #: builtin/init-db.c:465 msgid "" "git init [-q | --quiet] [--bare] [--template=] [--" "shared[=]] [directory]" msgstr "" +"git init [-q | --quiet] [--bare] [--template=ДИРЕКТОРИЯ_С_ШАБЛОНИ] [--" +"shared[=ПРАВА]] [ДИРЕКТОРИЯ]" #: builtin/init-db.c:488 msgid "permissions" -msgstr "" +msgstr "права" #: builtin/init-db.c:489 msgid "specify that the git repository is to be shared amongst several users" msgstr "" +"указване, че хранилището на Git ще бъде споделено от повече от един " +"потребител" -#: builtin/init-db.c:491 builtin/prune-packed.c:79 builtin/repack.c:168 +#: builtin/init-db.c:491 builtin/prune-packed.c:79 builtin/repack.c:172 msgid "be quiet" msgstr "без извеждане на информация" #: builtin/init-db.c:523 builtin/init-db.c:528 #, c-format msgid "cannot mkdir %s" -msgstr "" +msgstr "директорията „%s“ не може да бъде създадена" #: builtin/init-db.c:532 #, c-format msgid "cannot chdir to %s" -msgstr "" +msgstr "не може да се влезе в директорията „%s“" #: builtin/init-db.c:554 #, c-format @@ -6334,58 +6549,60 @@ msgid "" "%s (or --work-tree=) not allowed without specifying %s (or --git-" "dir=)" msgstr "" +"%s (или --work-tree=ДИРЕКТОРИЯ) изисква указването на %s (или --git-" +"dir=ДИРЕКТОРИЯ)" #: builtin/init-db.c:578 msgid "Cannot access current working directory" -msgstr "" +msgstr "Текущата работна директория е недостъпна" #: builtin/init-db.c:585 #, c-format msgid "Cannot access work tree '%s'" -msgstr "" +msgstr "Работното дърво в „%s“ е недостъпно" #: builtin/log.c:41 msgid "git log [] [] [[--] ...]\n" -msgstr "git log [ОПЦИИ] [ДИАПАЗОН_НА_ВЕРСИИТЕ] [[--] ПЪТ…]\n" +msgstr "git log [ОПЦИЯ…] [ДИАПАЗОН_НА_ВЕРСИИТЕ] [[--] ПЪТ…]\n" #: builtin/log.c:42 msgid " or: git show [options] ..." -msgstr " или: git show [ОПЦИИ] ОБЕКТ…" +msgstr " или: git show [ОПЦИЯ…] ОБЕКТ…" -#: builtin/log.c:125 +#: builtin/log.c:127 msgid "suppress diff output" msgstr "без извеждане на разликите" -#: builtin/log.c:126 +#: builtin/log.c:128 msgid "show source" msgstr "извеждане на изходния код" -#: builtin/log.c:127 +#: builtin/log.c:129 msgid "Use mail map file" msgstr "" "Използване на файл за съответствията на имената и адресите на е-поща („." "mailmap“)" -#: builtin/log.c:128 +#: builtin/log.c:130 msgid "decorate options" msgstr "настройки на форма̀та на извежданата информация" -#: builtin/log.c:231 +#: builtin/log.c:229 #, c-format msgid "Final output: %d %s\n" msgstr "Резултат: %d %s\n" -#: builtin/log.c:473 builtin/log.c:565 +#: builtin/log.c:470 builtin/log.c:562 #, c-format msgid "Could not read object %s" msgstr "Обектът не може да бъде прочетен: %s" -#: builtin/log.c:589 +#: builtin/log.c:586 #, c-format msgid "Unknown type: %d" msgstr "Неизвестен вид: %d" -#: builtin/log.c:689 +#: builtin/log.c:687 msgid "format.headers without value" msgstr "не е зададена стойност на „format.headers“" @@ -6406,204 +6623,214 @@ msgstr "Трябва да зададете точно един диапазон. msgid "Not a range." msgstr "Не е диапазон." -#: builtin/log.c:911 +#: builtin/log.c:916 msgid "Cover letter needs email format" msgstr "Придружаващото писмо трябва да е форматирано като е-писмо" -#: builtin/log.c:987 +# FIXME bad wording insanely +#: builtin/log.c:995 #, c-format msgid "insane in-reply-to: %s" msgstr "неправилен формат на заглавната част за отговор „in-reply-to“: %s" -#: builtin/log.c:1015 +#: builtin/log.c:1023 msgid "git format-patch [options] [ | ]" -msgstr "git format-patch [ОПЦИИ] [ОТ | ДИАПАЗОН_НА_ВЕРСИИТЕ]" +msgstr "git format-patch [ОПЦИЯ…] [ОТ | ДИАПАЗОН_НА_ВЕРСИИТЕ]" -# FIXME message -#: builtin/log.c:1060 +# FIXME message WTF why ask it +#: builtin/log.c:1068 msgid "Two output directories?" msgstr "" "Можете да укажете максимум една директория за изход, а сте задали поне две." -#: builtin/log.c:1175 +#: builtin/log.c:1183 msgid "use [PATCH n/m] even with a single patch" msgstr "номерация „[PATCH n/m]“ дори и при единствена кръпка" -#: builtin/log.c:1178 +#: builtin/log.c:1186 msgid "use [PATCH] even with multiple patches" msgstr "номерация „[PATCH]“ дори и при множество кръпки" -#: builtin/log.c:1182 +#: builtin/log.c:1190 msgid "print patches to standard out" msgstr "извеждане на кръпките на стандартния изход" -#: builtin/log.c:1184 +#: builtin/log.c:1192 msgid "generate a cover letter" msgstr "създаване на придружаващо писмо" -#: builtin/log.c:1186 +#: builtin/log.c:1194 msgid "use simple number sequence for output file names" msgstr "проста числова последователност за имената на файловете-кръпки" -#: builtin/log.c:1187 +#: builtin/log.c:1195 msgid "sfx" msgstr "ЗНАЦИ" -#: builtin/log.c:1188 +#: builtin/log.c:1196 msgid "use instead of '.patch'" msgstr "използване на тези ЗНАЦИ за суфикс вместо „.patch“" -#: builtin/log.c:1190 +#: builtin/log.c:1198 msgid "start numbering patches at instead of 1" msgstr "номерирането на кръпките да започва от този БРОЙ, а не с 1" -#: builtin/log.c:1192 +#: builtin/log.c:1200 msgid "mark the series as Nth re-roll" msgstr "отбелязване, че това е N-тата поредна редакция на поредицата от кръпки" -#: builtin/log.c:1194 +#: builtin/log.c:1202 msgid "Use [] instead of [PATCH]" msgstr "Използване на този „[ПРЕФИКС]“ вместо „[PATCH]“" -#: builtin/log.c:1197 +#: builtin/log.c:1205 msgid "store resulting files in " msgstr "запазване на изходните файлове в тази ДИРЕКТОРИЯ" -#: builtin/log.c:1200 +#: builtin/log.c:1208 msgid "don't strip/add [PATCH]" msgstr "без добавяне/махане на префикса „[PATCH]“" -#: builtin/log.c:1203 +#: builtin/log.c:1211 msgid "don't output binary diffs" msgstr "без извеждане на разлики между двоични файлове" -#: builtin/log.c:1205 +#: builtin/log.c:1213 msgid "don't include a patch matching a commit upstream" msgstr "да не се включват кръпки, които присъстват в следения клон" -#: builtin/log.c:1207 +#: builtin/log.c:1215 msgid "show patch format instead of default (patch + stat)" msgstr "" "извеждане във формат за кръпки, а на в стандартния (кръпка и статистика)" -#: builtin/log.c:1209 +#: builtin/log.c:1217 msgid "Messaging" msgstr "Опции при изпращане" -#: builtin/log.c:1210 +#: builtin/log.c:1218 msgid "header" msgstr "ЗАГЛАВНА_ЧАСТ" -#: builtin/log.c:1211 +#: builtin/log.c:1219 msgid "add email header" msgstr "добавяне на тази ЗАГЛАВНА_ЧАСТ" -#: builtin/log.c:1212 builtin/log.c:1214 +#: builtin/log.c:1220 builtin/log.c:1222 msgid "email" msgstr "Е-ПОЩА" -#: builtin/log.c:1212 +#: builtin/log.c:1220 msgid "add To: header" msgstr "добавяне на заглавна част „To:“ (до)" -#: builtin/log.c:1214 +#: builtin/log.c:1222 msgid "add Cc: header" msgstr "добавяне на заглавна част „Cc:“ (и до)" -#: builtin/log.c:1216 +#: builtin/log.c:1224 msgid "ident" msgstr "ИДЕНТИЧНОСТ" -#: builtin/log.c:1217 +#: builtin/log.c:1225 msgid "set From address to (or committer ident if absent)" msgstr "" "задаване на адреса в заглавната част „From“ да е тази ИДЕНТИЧНОСТ. Ако не е " "зададена такава, се взима адреса на подаващия" -#: builtin/log.c:1219 +#: builtin/log.c:1227 msgid "message-id" msgstr "ИДЕНТИФИКАТОР_НА_СЪОБЩЕНИЕ" -#: builtin/log.c:1220 +#: builtin/log.c:1228 msgid "make first mail a reply to " msgstr "" "първото съобщение да е в отговор на е-писмото с този " "ИДЕНТИФИКАТОР_НА_СЪОБЩЕНИЕ" -#: builtin/log.c:1221 builtin/log.c:1224 +#: builtin/log.c:1229 builtin/log.c:1232 msgid "boundary" msgstr "граница" -#: builtin/log.c:1222 +#: builtin/log.c:1230 msgid "attach the patch" msgstr "прикрепяне на кръпката" -#: builtin/log.c:1225 +#: builtin/log.c:1233 msgid "inline the patch" msgstr "включване на кръпката в текста на писмата" -#: builtin/log.c:1229 +#: builtin/log.c:1237 msgid "enable message threading, styles: shallow, deep" msgstr "" "използване на нишки за съобщенията. Стилът е „shallow“ (плитък) или " "„deep“ (дълбок)" -#: builtin/log.c:1231 +#: builtin/log.c:1239 msgid "signature" msgstr "подпис" -#: builtin/log.c:1232 +#: builtin/log.c:1240 msgid "add a signature" msgstr "добавяне на поле за подпис" -#: builtin/log.c:1233 +#: builtin/log.c:1242 +msgid "add a signature from a file" +msgstr "добавяне на подпис от файл" + +#: builtin/log.c:1243 msgid "don't print the patch filenames" msgstr "без извеждане на имената на кръпките" -#: builtin/log.c:1307 +#: builtin/log.c:1317 #, c-format msgid "invalid ident line: %s" msgstr "грешна идентичност: %s" -#: builtin/log.c:1322 +#: builtin/log.c:1332 msgid "-n and -k are mutually exclusive." msgstr "опциите „-n“ и „-k“ са несъвместими." -#: builtin/log.c:1324 +#: builtin/log.c:1334 msgid "--subject-prefix and -k are mutually exclusive." msgstr "опциите „--subject-prefix“ и „-k“ са несъвместими." -#: builtin/log.c:1332 +#: builtin/log.c:1342 msgid "--name-only does not make sense" msgstr "опцията „--name-only“ е несъвместима с генерирането на кръпки" -#: builtin/log.c:1334 +#: builtin/log.c:1344 msgid "--name-status does not make sense" msgstr "опцията „--name-status“ е несъвместима с генерирането на кръпки" -#: builtin/log.c:1336 +#: builtin/log.c:1346 msgid "--check does not make sense" msgstr "опцията „--check“ е несъвместима с генерирането на кръпки" -#: builtin/log.c:1359 +#: builtin/log.c:1369 msgid "standard output, or directory, which one?" msgstr "" "изходът може да или стандартният, или да е в директория, но не и двете." -#: builtin/log.c:1361 +#: builtin/log.c:1371 #, c-format msgid "Could not create directory '%s'" -msgstr "Папката „%s“ не може да бъде създадена" +msgstr "Директорията „%s“ не може да бъде създадена" -#: builtin/log.c:1509 +#: builtin/log.c:1468 +#, c-format +msgid "unable to read signature file '%s'" +msgstr "файлът „%s“ с подпис не може да бъде прочетен" + +#: builtin/log.c:1531 msgid "Failed to create output files" msgstr "Изходните файлове не могат да бъдат създадени" -#: builtin/log.c:1558 +#: builtin/log.c:1579 msgid "git cherry [-v] [ [ []]]" msgstr "git cherry [-v] [ОТДАЛЕЧЕН_КЛОН [ВРЪХ [ПРЕДЕЛ]]]" -#: builtin/log.c:1613 +#: builtin/log.c:1634 #, c-format msgid "" "Could not find a tracked remote branch, please specify manually.\n" @@ -6611,118 +6838,121 @@ msgstr "" "Следеният отдалечен клон не бе открит, затова изрично задайте " "ОТДАЛЕЧЕН_КЛОН.\n" -#: builtin/log.c:1626 builtin/log.c:1628 builtin/log.c:1640 +#: builtin/log.c:1647 builtin/log.c:1649 builtin/log.c:1661 #, c-format msgid "Unknown commit %s" msgstr "Непознато подаване „%s“" #: builtin/ls-files.c:401 msgid "git ls-files [options] [...]" -msgstr "" +msgstr "git ls-files [ОПЦИЯ…] [ФАЙЛ…]" #: builtin/ls-files.c:458 msgid "identify the file status with tags" -msgstr "" +msgstr "извеждане на състоянието на файловете с еднобуквени флагове" #: builtin/ls-files.c:460 msgid "use lowercase letters for 'assume unchanged' files" -msgstr "" +msgstr "малки букви за файловете, които да се счетат за непроменени" #: builtin/ls-files.c:462 msgid "show cached files in the output (default)" -msgstr "" +msgstr "извеждане на кешираните файлове (стандартно)" #: builtin/ls-files.c:464 msgid "show deleted files in the output" -msgstr "" +msgstr "извеждане на изтритите файлове" #: builtin/ls-files.c:466 msgid "show modified files in the output" -msgstr "" +msgstr "извеждане на променените файлове" #: builtin/ls-files.c:468 msgid "show other files in the output" -msgstr "" +msgstr "извеждане на другите файлове" #: builtin/ls-files.c:470 msgid "show ignored files in the output" -msgstr "" +msgstr "извеждане на игнорираните файлове" #: builtin/ls-files.c:473 msgid "show staged contents' object name in the output" -msgstr "" +msgstr "извеждане на името на обекта за съдържанието на индекса" #: builtin/ls-files.c:475 msgid "show files on the filesystem that need to be removed" -msgstr "" +msgstr "извеждане на файловете, които трябва да бъдат изтрити" #: builtin/ls-files.c:477 msgid "show 'other' directories' name only" -msgstr "" +msgstr "извеждане само на името на другите директории" #: builtin/ls-files.c:480 msgid "don't show empty directories" -msgstr "" +msgstr "без извеждане на празните директории" #: builtin/ls-files.c:483 msgid "show unmerged files in the output" -msgstr "" +msgstr "извеждане на неслетите файлове" +# FIXME not clear about what this option does #: builtin/ls-files.c:485 msgid "show resolve-undo information" -msgstr "" +msgstr "извеждане на информацията за отмяна на разрешените подавания" #: builtin/ls-files.c:487 msgid "skip files matching pattern" -msgstr "" +msgstr "прескачане на файловете напасващи ШАБЛОНа" #: builtin/ls-files.c:490 msgid "exclude patterns are read from " -msgstr "" +msgstr "шаблоните за игнориране да се прочетат от този ФАЙЛ" #: builtin/ls-files.c:493 msgid "read additional per-directory exclude patterns in " msgstr "" +"изчитане на допълнителните шаблони за игнориране по директория от този ФАЙЛ" #: builtin/ls-files.c:495 msgid "add the standard git exclusions" -msgstr "" +msgstr "добавяне на стандартно игнорираните от Git файлове" #: builtin/ls-files.c:498 msgid "make the output relative to the project top directory" -msgstr "" +msgstr "пътищата да са относителни спрямо основната директория на проекта" #: builtin/ls-files.c:501 msgid "if any is not in the index, treat this as an error" -msgstr "" +msgstr "грешка, ако някой от тези ФАЙЛове не е в индекса" #: builtin/ls-files.c:502 msgid "tree-ish" -msgstr "" +msgstr "УКАЗАТЕЛ_КЪМ_ДЪРВО" #: builtin/ls-files.c:503 msgid "pretend that paths removed since are still present" msgstr "" +"считане, че пътищата изтрити след УКАЗАТЕЛя_КЪМ_ДЪРВО все още съществуват" #: builtin/ls-files.c:505 msgid "show debugging data" -msgstr "" +msgstr "извеждане на информацията за изчистване на грешки" #: builtin/ls-tree.c:28 msgid "git ls-tree [] [...]" -msgstr "" +msgstr "git ls-tree [ОПЦИЯ…] УКАЗАТЕЛ_КЪМ_ДЪРВО [ПЪТ…]" #: builtin/ls-tree.c:126 msgid "only show trees" -msgstr "" +msgstr "извеждане само на дървета" #: builtin/ls-tree.c:128 msgid "recurse into subtrees" -msgstr "" +msgstr "рекурсивно обхождане поддърветата" #: builtin/ls-tree.c:130 msgid "show trees when recursing" -msgstr "" +msgstr "извеждане на дърветата при рекурсивното обхождане" #: builtin/ls-tree.c:133 msgid "terminate entries with NUL byte" @@ -6730,62 +6960,65 @@ msgstr "разделяне на обектите с нулевия знак „N #: builtin/ls-tree.c:134 msgid "include object size" -msgstr "" +msgstr "извеждане на размера на обекта" #: builtin/ls-tree.c:136 builtin/ls-tree.c:138 msgid "list only filenames" -msgstr "" +msgstr "извеждане само имената на файловете" #: builtin/ls-tree.c:141 msgid "use full path names" -msgstr "" +msgstr "използване на пълните имена на пътищата" #: builtin/ls-tree.c:143 msgid "list entire tree; not just current directory (implies --full-name)" msgstr "" +"извеждане на цялото дърво, не само на текущата директория (включва опцията " +"„--full-name“)" #: builtin/merge.c:43 msgid "git merge [options] [...]" -msgstr "" +msgstr "git merge [ОПЦИЯ…] [ПОДАВАНЕ…]" #: builtin/merge.c:44 msgid "git merge [options] HEAD " -msgstr "" +msgstr "git merge [ОПЦИЯ…] СЪОБЩЕНИЕ HEAD ПОДАВАНЕ" #: builtin/merge.c:45 msgid "git merge --abort" -msgstr "" +msgstr "git merge --abort" +# FIXME -m rather than just m #: builtin/merge.c:98 msgid "switch `m' requires a value" -msgstr "" +msgstr "опцията „-m“ изисква стойност" #: builtin/merge.c:135 #, c-format msgid "Could not find merge strategy '%s'.\n" -msgstr "" +msgstr "Няма такава стратегия за сливане: „%s“.\n" #: builtin/merge.c:136 #, c-format msgid "Available strategies are:" -msgstr "" +msgstr "Наличните стратегии са:" #: builtin/merge.c:141 #, c-format msgid "Available custom strategies are:" -msgstr "" +msgstr "Допълнителните стратегии са:" #: builtin/merge.c:191 msgid "do not show a diffstat at the end of the merge" -msgstr "" +msgstr "без извеждане на статистиката след завършване на сливане" #: builtin/merge.c:194 msgid "show a diffstat at the end of the merge" -msgstr "" +msgstr "извеждане на статистиката след завършване на сливане" #: builtin/merge.c:195 msgid "(synonym to --stat)" -msgstr "" +msgstr "(синоним на „--stat“)" #: builtin/merge.c:197 msgid "add (at most ) entries from shortlog to merge commit message" @@ -6795,27 +7028,27 @@ msgstr "" #: builtin/merge.c:200 msgid "create a single commit instead of doing a merge" -msgstr "" +msgstr "създаване на едно подаване вместо извършване на сливане" #: builtin/merge.c:202 msgid "perform a commit if the merge succeeds (default)" -msgstr "" +msgstr "извършване на подаване при успешно сливане (стандартно действие)" #: builtin/merge.c:204 msgid "edit message before committing" -msgstr "" +msgstr "редактиране на съобщението преди подаване" #: builtin/merge.c:205 msgid "allow fast-forward (default)" -msgstr "" +msgstr "позволяване на тривиално сливане (стандартно действие)" #: builtin/merge.c:207 msgid "abort if fast-forward is not possible" -msgstr "" +msgstr "преустановяване, ако сливането не е тривиално" #: builtin/merge.c:211 msgid "Verify that the named commit has a valid GPG signature" -msgstr "" +msgstr "Проверка, че именуваното подаване е с правилен подпис на GPG" #: builtin/merge.c:212 builtin/notes.c:742 builtin/revert.c:89 msgid "strategy" @@ -6823,102 +7056,105 @@ msgstr "стратегия" #: builtin/merge.c:213 msgid "merge strategy to use" -msgstr "" +msgstr "стратегия за сливане, която да се ползва" #: builtin/merge.c:214 msgid "option=value" -msgstr "" +msgstr "опция=стойност" #: builtin/merge.c:215 msgid "option for selected merge strategy" -msgstr "" +msgstr "опция за избраната стратегия за сливане" #: builtin/merge.c:217 msgid "merge commit message (for a non-fast-forward merge)" -msgstr "" +msgstr "съобщение при подаването със сливане (при нетривиални сливания)" #: builtin/merge.c:221 msgid "abort the current in-progress merge" -msgstr "" +msgstr "преустановяване на текущото сливане" #: builtin/merge.c:250 msgid "could not run stash." -msgstr "" +msgstr "не може да се извърши скатаване" #: builtin/merge.c:255 msgid "stash failed" -msgstr "" +msgstr "неуспешно скатаване" #: builtin/merge.c:260 #, c-format msgid "not a valid object: %s" -msgstr "" +msgstr "неправилен обект: „%s“" #: builtin/merge.c:279 builtin/merge.c:296 msgid "read-tree failed" -msgstr "" +msgstr "неуспешно прочитане на обект-дърво" #: builtin/merge.c:326 msgid " (nothing to squash)" -msgstr "" +msgstr " (няма какво да се смачка)" #: builtin/merge.c:339 #, c-format msgid "Squash commit -- not updating HEAD\n" -msgstr "" +msgstr "Подаване със смачкване — указателят „HEAD“ няма да бъде обновен\n" #: builtin/merge.c:371 msgid "Writing SQUASH_MSG" -msgstr "" +msgstr "Записване на съобщението за смачкване SQUASH_MSG" #: builtin/merge.c:373 msgid "Finishing SQUASH_MSG" -msgstr "" +msgstr "Завършване на съобщението за смачкване SQUASH_MSG" #: builtin/merge.c:396 #, c-format msgid "No merge message -- not updating HEAD\n" msgstr "" +"Липсва съобщение при подаване — указателят „HEAD“ няма да бъде обновен\n" #: builtin/merge.c:446 #, c-format msgid "'%s' does not point to a commit" -msgstr "" +msgstr "„%s“ не сочи към подаване" #: builtin/merge.c:558 #, c-format msgid "Bad branch.%s.mergeoptions string: %s" -msgstr "" +msgstr "Неправилен низ за настройката „branch.%s.mergeoptions“: „%s“" #: builtin/merge.c:653 msgid "git write-tree failed to write a tree" msgstr "Командата „git write-tree“ не успя да запише обект-дърво" -#: builtin/merge.c:681 +#: builtin/merge.c:678 msgid "Not handling anything other than two heads merge." -msgstr "" +msgstr "Поддържа се само сливане на точно две истории." -#: builtin/merge.c:695 +#: builtin/merge.c:692 #, c-format msgid "Unknown option for merge-recursive: -X%s" -msgstr "" +msgstr "Непозната опция за рекурсивното сливане „merge-recursive“: „-X%s“" -#: builtin/merge.c:709 +#: builtin/merge.c:705 #, c-format msgid "unable to write %s" -msgstr "" +msgstr "„%s“ не може да бъде записан" -#: builtin/merge.c:798 +#: builtin/merge.c:794 #, c-format msgid "Could not read from '%s'" -msgstr "" +msgstr "От „%s“ не може да се чете" -#: builtin/merge.c:807 +#: builtin/merge.c:803 #, c-format msgid "Not committing merge; use 'git commit' to complete the merge.\n" msgstr "" +"Сливането няма да бъде подадено. За завършването му и подаването му " +"използвайте командата „git commit“.\n" -#: builtin/merge.c:813 +#: builtin/merge.c:809 #, c-format msgid "" "Please enter a commit message to explain why this merge is necessary,\n" @@ -6927,48 +7163,56 @@ msgid "" "Lines starting with '%c' will be ignored, and an empty message aborts\n" "the commit.\n" msgstr "" +"В съобщението при подаване добавете информация за причината за\n" +"сливането, особено ако сливате обновен отдалечен клон в тематичен клон.\n" +"\n" +"Редовете, които започват с „%c“ ще бъдат пропуснати, а празно съобщение\n" +"преустановява подаването.\n" -#: builtin/merge.c:837 +#: builtin/merge.c:833 msgid "Empty commit message." -msgstr "" +msgstr "Празно съобщение при подаване." -#: builtin/merge.c:849 +# FIXME - WTF is wonderful. +#: builtin/merge.c:845 #, c-format msgid "Wonderful.\n" -msgstr "" +msgstr "Чудесно.\n" -#: builtin/merge.c:914 +#: builtin/merge.c:908 #, c-format msgid "Automatic merge failed; fix conflicts and then commit the result.\n" -msgstr "" +msgstr "Неуспешно сливане — коригирайте конфликтите и подайте резултата.\n" -#: builtin/merge.c:930 +#: builtin/merge.c:924 #, c-format msgid "'%s' is not a commit" -msgstr "" +msgstr "„%s“ не е подаване" -#: builtin/merge.c:971 +#: builtin/merge.c:965 msgid "No current branch." -msgstr "" +msgstr "Няма текущ клон." -#: builtin/merge.c:973 +#: builtin/merge.c:967 msgid "No remote for the current branch." -msgstr "" +msgstr "Текущият клон не следи никой." -#: builtin/merge.c:975 +#: builtin/merge.c:969 msgid "No default upstream defined for the current branch." -msgstr "" +msgstr "Текущият клон не следи никой клон." -#: builtin/merge.c:980 +#: builtin/merge.c:974 #, c-format msgid "No remote-tracking branch for %s from %s" -msgstr "" +msgstr "Никой клон не следи клона „%s“ от хранилището „%s“" -#: builtin/merge.c:1136 +#: builtin/merge.c:1130 msgid "There is no merge to abort (MERGE_HEAD missing)." msgstr "" +"Не може да преустановите сливане, защото в момента не се извършва такова " +"(липсва указател „MERGE_HEAD“)." -#: builtin/merge.c:1152 git-pull.sh:31 +#: builtin/merge.c:1146 git-pull.sh:31 msgid "" "You have not concluded your merge (MERGE_HEAD exists).\n" "Please, commit your changes before you can merge." @@ -6976,11 +7220,11 @@ msgstr "" "Не сте завършили сливане. (Указателят „MERGE_HEAD“ съществува).\n" "Подайте промените си, преди да започнете ново сливане." -#: builtin/merge.c:1155 git-pull.sh:34 +#: builtin/merge.c:1149 git-pull.sh:34 msgid "You have not concluded your merge (MERGE_HEAD exists)." msgstr "Не сте завършили сливане. (Указателят „MERGE_HEAD“ съществува)." -#: builtin/merge.c:1159 +#: builtin/merge.c:1153 msgid "" "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n" "Please, commit your changes before you can merge." @@ -6988,183 +7232,197 @@ msgstr "" "Не сте завършили отбиране на подаване (указателят „CHERRY_PICK_HEAD“\n" "съществува). Подайте промените си, преди да започнете ново сливане." -#: builtin/merge.c:1162 +#: builtin/merge.c:1156 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)." msgstr "" "Не сте завършили отбиране на подаване (указателят „CHERRY_PICK_HEAD“\n" "съществува)." -#: builtin/merge.c:1171 +#: builtin/merge.c:1165 msgid "You cannot combine --squash with --no-ff." -msgstr "" +msgstr "Опцията „--squash“ е несъвместима с „--no-ff“." -#: builtin/merge.c:1180 +#: builtin/merge.c:1174 msgid "No commit specified and merge.defaultToUpstream not set." msgstr "" +"Не е указано подаване и настройката „merge.defaultToUpstream“ не е зададена." -#: builtin/merge.c:1212 +#: builtin/merge.c:1206 msgid "Can merge only exactly one commit into empty head" -msgstr "" +msgstr "Можете да слеете точно едно подаване във връх без история" -#: builtin/merge.c:1215 +#: builtin/merge.c:1209 msgid "Squash commit into empty head not supported yet" -msgstr "" +msgstr "Подаване със смачкване във връх без история все още не се поддържа" -#: builtin/merge.c:1217 +#: builtin/merge.c:1211 msgid "Non-fast-forward commit does not make sense into an empty head" msgstr "" +"Понеже върхът е без история, всички сливания са тривиални, не може да се " +"извърши нетривиално сливане изисквано от опцията „--no-ff“" -#: builtin/merge.c:1222 +#: builtin/merge.c:1216 #, c-format msgid "%s - not something we can merge" -msgstr "" +msgstr "„%s“ — не е нещо, което може да се слее" -#: builtin/merge.c:1273 +#: builtin/merge.c:1267 #, c-format msgid "Commit %s has an untrusted GPG signature, allegedly by %s." msgstr "" +"Подаването „%s“ е с недоверен подпис от GPG, който твърди, че е на „%s“." -#: builtin/merge.c:1276 +#: builtin/merge.c:1270 #, c-format msgid "Commit %s has a bad GPG signature allegedly by %s." msgstr "" +"Подаването „%s“ е с неправилен подпис от GPG, който твърди, че е на „%s“." -#: builtin/merge.c:1279 +#: builtin/merge.c:1273 #, c-format msgid "Commit %s does not have a GPG signature." -msgstr "" +msgstr "Подаването „%s“ е без подпис от GPG." -#: builtin/merge.c:1282 +#: builtin/merge.c:1276 #, c-format msgid "Commit %s has a good GPG signature by %s\n" -msgstr "" +msgstr "Подаването „%s“ е с коректен подпис от GPG на „%s“.\n" -#: builtin/merge.c:1366 +#: builtin/merge.c:1357 #, c-format msgid "Updating %s..%s\n" -msgstr "" +msgstr "Обновяване „%s..%s“\n" -#: builtin/merge.c:1405 +#: builtin/merge.c:1396 #, c-format msgid "Trying really trivial in-index merge...\n" -msgstr "" +msgstr "Проба с най-тривиалното сливане в рамките на индекса…\n" -#: builtin/merge.c:1412 +# FIXME WTF message +#: builtin/merge.c:1403 #, c-format msgid "Nope.\n" -msgstr "" +msgstr "Неуспех.\n" -#: builtin/merge.c:1444 +#: builtin/merge.c:1435 msgid "Not possible to fast-forward, aborting." msgstr "" +"Не може да се извърши тривиално сливане, преустановяване на действието." -#: builtin/merge.c:1467 builtin/merge.c:1546 +#: builtin/merge.c:1458 builtin/merge.c:1537 #, c-format msgid "Rewinding the tree to pristine...\n" -msgstr "" +msgstr "Привеждане на дървото към първоначалното…\n" -#: builtin/merge.c:1471 +#: builtin/merge.c:1462 #, c-format msgid "Trying merge strategy %s...\n" -msgstr "" +msgstr "Пробване със стратегията за сливане „%s“…\n" -#: builtin/merge.c:1537 +#: builtin/merge.c:1528 #, c-format msgid "No merge strategy handled the merge.\n" -msgstr "" +msgstr "Никоя стратегия за сливане не може да извърши сливането.\n" -#: builtin/merge.c:1539 +#: builtin/merge.c:1530 #, c-format msgid "Merge with strategy %s failed.\n" -msgstr "" +msgstr "Неуспешно сливане със стратегия „%s“.\n" -#: builtin/merge.c:1548 +#: builtin/merge.c:1539 #, c-format msgid "Using the %s to prepare resolving by hand.\n" msgstr "" +"Ползва се стратегията „%s“, която ще подготви дървото за коригиране на " +"ръка.\n" -#: builtin/merge.c:1560 +#: builtin/merge.c:1551 #, c-format msgid "Automatic merge went well; stopped before committing as requested\n" msgstr "" +"Автоматичното сливане завърши успешно. Самото подаване не е извършено, " +"защото бе зададена опцията „--no-commit“.\n" #: builtin/merge-base.c:29 msgid "git merge-base [-a|--all] ..." -msgstr "" +msgstr "git merge-base [-a|--all] ПОДАВАНЕ ПОДАВАНЕ…" #: builtin/merge-base.c:30 msgid "git merge-base [-a|--all] --octopus ..." -msgstr "" +msgstr "git merge-base [-a|--all] --octopus ПОДАВАНЕ…" #: builtin/merge-base.c:31 msgid "git merge-base --independent ..." -msgstr "" +msgstr "git merge-base --independent ПОДАВАНЕ…" #: builtin/merge-base.c:32 msgid "git merge-base --is-ancestor " -msgstr "" +msgstr "git merge-base --is-ancestor ПОДАВАНЕ_1 ПОДАВАНЕ_2" #: builtin/merge-base.c:33 msgid "git merge-base --fork-point []" -msgstr "" +msgstr "git merge-base --fork-point УКАЗАТЕЛ [ПОДАВАНЕ]" #: builtin/merge-base.c:214 msgid "output all common ancestors" -msgstr "" +msgstr "извеждане на всички общи предшественици" #: builtin/merge-base.c:216 msgid "find ancestors for a single n-way merge" msgstr "" +"откриване на предшествениците за еднократно сливане на множество истории" #: builtin/merge-base.c:218 msgid "list revs not reachable from others" -msgstr "" +msgstr "извеждане на недостижимите от другите указатели" #: builtin/merge-base.c:220 msgid "is the first one ancestor of the other?" -msgstr "" +msgstr "ПОДАВАНЕ_1 предшественик ли е на ПОДАВАНЕ_2?" #: builtin/merge-base.c:222 msgid "find where forked from reflog of " -msgstr "" +msgstr "откриване къде ПОДАВАНЕто се е отклонило от историята на УКАЗАТЕЛя" #: builtin/merge-file.c:8 msgid "" "git merge-file [options] [-L name1 [-L orig [-L name2]]] file1 orig_file " "file2" msgstr "" +"git merge-file [ОПЦИЯ…] [-L ИМЕ_1 [-L ОРИГИНАЛ [-L ИМЕ_2]]] ФАЙЛ_1 ОРИГ_ФАЙЛ " +"ФАЙЛ_2" #: builtin/merge-file.c:33 msgid "send results to standard output" -msgstr "" +msgstr "извеждане на резултатите на стандартния изход" #: builtin/merge-file.c:34 msgid "use a diff3 based merge" -msgstr "" +msgstr "сливане на базата на „diff3“" #: builtin/merge-file.c:35 msgid "for conflicts, use our version" -msgstr "" +msgstr "при конфликти да се ползва локалната версия" #: builtin/merge-file.c:37 msgid "for conflicts, use their version" -msgstr "" +msgstr "при конфликти да се ползва чуждата версия" #: builtin/merge-file.c:39 msgid "for conflicts, use a union version" -msgstr "" +msgstr "при конфликти да се ползва обединена версия" #: builtin/merge-file.c:42 msgid "for conflicts, use this marker size" -msgstr "" +msgstr "при конфликти да се ползва маркер с такъв БРОЙ знаци" #: builtin/merge-file.c:43 msgid "do not warn about conflicts" -msgstr "" +msgstr "без предупреждения при конфликти" #: builtin/merge-file.c:45 msgid "set labels for file1/orig_file/file2" -msgstr "" +msgstr "задаване на етикети за ФАЙЛ_1/ОРИГИНАЛ/ФАЙЛ_2" #: builtin/mktree.c:64 msgid "git mktree [-z] [--missing] [--batch]" @@ -7172,7 +7430,7 @@ msgstr "git mktree [-z] [--missing] [--batch]" #: builtin/mktree.c:150 msgid "input is NUL terminated" -msgstr "входните записа са разделени с нулевия знак „NUL“" +msgstr "входните записи са разделени с нулевия знак „NUL“" #: builtin/mktree.c:151 builtin/write-tree.c:24 msgid "allow missing objects" @@ -7184,7 +7442,7 @@ msgstr "разрешаване на създаването на повече о #: builtin/mv.c:15 msgid "git mv [options] ... " -msgstr "git mv [ОПЦИИ] ОБЕКТ… ЦЕЛ" +msgstr "git mv [ОПЦИЯ…] ОБЕКТ… ЦЕЛ" #: builtin/mv.c:71 msgid "force move/rename even if target exists" @@ -7220,7 +7478,7 @@ msgstr "Директорията „%s“ е в индекса, но не е п #: builtin/mv.c:140 builtin/rm.c:318 msgid "Please, stage your changes to .gitmodules or stash them to proceed" msgstr "" -"За да продължите или вкарайте промените по файла „.gitmodules“ в индекса,\n" +"За да продължите, или вкарайте промените по файла „.gitmodules“ в индекса,\n" "или ги скатайте" # FIXME message @@ -7237,298 +7495,308 @@ msgstr "първоначалната директория е празна" msgid "not under version control" msgstr "не е под контрола на Git" -#: builtin/mv.c:207 +#: builtin/mv.c:208 msgid "destination exists" msgstr "целта съществува" -#: builtin/mv.c:215 +#: builtin/mv.c:216 #, c-format msgid "overwriting '%s'" msgstr "презаписване на „%s“" -#: builtin/mv.c:218 +#: builtin/mv.c:219 msgid "Cannot overwrite" msgstr "Презаписването е невъзможно" -#: builtin/mv.c:221 +#: builtin/mv.c:222 msgid "multiple sources for the same target" msgstr "множество източници за една цел" -#: builtin/mv.c:223 +#: builtin/mv.c:224 msgid "destination directory does not exist" msgstr "целевата директория не съществува" -#: builtin/mv.c:243 +#: builtin/mv.c:244 #, c-format msgid "%s, source=%s, destination=%s" msgstr "%s, обект: „%s“, цел: „%s“" -#: builtin/mv.c:253 +#: builtin/mv.c:254 #, c-format msgid "Renaming %s to %s\n" msgstr "Преименуване на „%s“ на „%s“\n" -#: builtin/mv.c:256 builtin/remote.c:726 builtin/repack.c:355 +#: builtin/mv.c:257 builtin/remote.c:725 builtin/repack.c:358 #, c-format msgid "renaming '%s' failed" msgstr "неуспешно преименуване на „%s“" -#: builtin/name-rev.c:258 +#: builtin/name-rev.c:255 msgid "git name-rev [options] ..." -msgstr "" +msgstr "git name-rev [ОПЦИЯ…] ПОДАВАНЕ…" -#: builtin/name-rev.c:259 +#: builtin/name-rev.c:256 msgid "git name-rev [options] --all" -msgstr "" +msgstr "git name-rev [ОПЦИЯ…] --all" -#: builtin/name-rev.c:260 +#: builtin/name-rev.c:257 msgid "git name-rev [options] --stdin" -msgstr "" +msgstr "git name-rev [ОПЦИЯ…] --stdin" -# FIXME -#: builtin/name-rev.c:312 +# FIXME sha +#: builtin/name-rev.c:309 msgid "print only names (no SHA-1)" -msgstr "" +msgstr "извеждане само на имената (без сумите по SHA1)" -#: builtin/name-rev.c:313 +#: builtin/name-rev.c:310 msgid "only use tags to name the commits" -msgstr "" +msgstr "използване само на етикетите за именуване на подаванията" -#: builtin/name-rev.c:315 +#: builtin/name-rev.c:312 msgid "only use refs matching " -msgstr "" +msgstr "използване само на шаблоните напасващи на ШАБЛОНа" -#: builtin/name-rev.c:317 +#: builtin/name-rev.c:314 msgid "list all commits reachable from all refs" msgstr "" +"извеждане на всички подавания, които могат да бъдат достигнати от всички " +"указатели" -#: builtin/name-rev.c:318 +#: builtin/name-rev.c:315 msgid "read from stdin" -msgstr "" +msgstr "четене от стандартния вход" -#: builtin/name-rev.c:319 +#: builtin/name-rev.c:316 msgid "allow to print `undefined` names (default)" -msgstr "" +msgstr "да се извеждат и недефинираните имена (стандартна стойност на опцията)" -#: builtin/name-rev.c:325 +#: builtin/name-rev.c:322 msgid "dereference tags in the input (internal use)" -msgstr "" +msgstr "извеждане на идентификаторите на обекти-етикети (за вътрешни нужди)" #: builtin/notes.c:24 msgid "git notes [--ref ] [list []]" -msgstr "" +msgstr "git notes [--ref УКАЗАТЕЛ_ЗА_БЕЛЕЖКА] [list [ОБЕКТ]]" #: builtin/notes.c:25 msgid "" "git notes [--ref ] add [-f] [-m | -F | (-c | -C) " "] []" msgstr "" +"git notes [--ref УКАЗАТЕЛ_ЗА_БЕЛЕЖКА] add [-f] [-m СЪОБЩЕНИЕ | -F ФАЙЛ | (-c " +"| -C) ОБЕКТ] [ОБЕКТ]" #: builtin/notes.c:26 msgid "git notes [--ref ] copy [-f] " msgstr "" +"git notes [--ref УКАЗАТЕЛ_ЗА_БЕЛЕЖКА] copy [-f] ОБЕКТ_ИЗТОЧНИК ОБЕКТ_ЦЕЛ" #: builtin/notes.c:27 msgid "" "git notes [--ref ] append [-m | -F | (-c | -C) " "] []" msgstr "" +"git notes [--ref УКАЗАТЕЛ_ЗА_БЕЛЕЖКА] append [-m СЪОБЩЕНИЕ | -F ФАЙЛ | (-c | " +"-C) ОБЕКТ] [ОБЕКТ]" #: builtin/notes.c:28 msgid "git notes [--ref ] edit []" -msgstr "" +msgstr "git notes [--ref УКАЗАТЕЛ_ЗА_БЕЛЕЖКА] edit [ОБЕКТ]" #: builtin/notes.c:29 msgid "git notes [--ref ] show []" -msgstr "" +msgstr "git notes [--ref УКАЗАТЕЛ_ЗА_БЕЛЕЖКА] show [ОБЕКТ]" #: builtin/notes.c:30 msgid "" "git notes [--ref ] merge [-v | -q] [-s ] " msgstr "" +"git notes [--ref УКАЗАТЕЛ_ЗА_БЕЛЕЖКА] merge [-v | -q] [-s СТРАТЕГИЯ] " +"УКАЗАТЕЛ_ЗА_БЕЛЕЖКА" #: builtin/notes.c:31 msgid "git notes merge --commit [-v | -q]" -msgstr "" +msgstr "git notes merge --commit [-v | -q]" #: builtin/notes.c:32 msgid "git notes merge --abort [-v | -q]" -msgstr "" +msgstr "git notes merge --abort [-v | -q]" #: builtin/notes.c:33 msgid "git notes [--ref ] remove [...]" -msgstr "" +msgstr "git notes [--ref УКАЗАТЕЛ_ЗА_БЕЛЕЖКА] remove [ОБЕКТ…]" #: builtin/notes.c:34 msgid "git notes [--ref ] prune [-n | -v]" -msgstr "" +msgstr "git notes [--ref УКАЗАТЕЛ_ЗА_БЕЛЕЖКА] prune [-n | -v]" #: builtin/notes.c:35 msgid "git notes [--ref ] get-ref" -msgstr "" +msgstr "git notes [--ref УКАЗАТЕЛ_ЗА_БЕЛЕЖКА] get-ref" #: builtin/notes.c:40 msgid "git notes [list []]" -msgstr "" +msgstr "git notes [list [ОБЕКТ]]" #: builtin/notes.c:45 msgid "git notes add [] []" -msgstr "" +msgstr "git notes add [ОПЦИЯ…] [ОБЕКТ]" #: builtin/notes.c:50 msgid "git notes copy [] " -msgstr "" +msgstr "git notes copy [ОПЦИЯ…] ОБЕКТ_ИЗТОЧНИК ОБЕКТ_ЦЕЛ" #: builtin/notes.c:51 msgid "git notes copy --stdin [ ]..." -msgstr "" +msgstr "git notes copy --stdin [ОБЕКТ_ИЗТОЧНИК ОБЕКТ_ЦЕЛ]…" #: builtin/notes.c:56 msgid "git notes append [] []" -msgstr "" +msgstr "git notes append [ОПЦИЯ…] [ОБЕКТ]" #: builtin/notes.c:61 msgid "git notes edit []" -msgstr "" +msgstr "git notes edit [ОБЕКТ]" #: builtin/notes.c:66 msgid "git notes show []" -msgstr "" +msgstr "git notes show [ОБЕКТ]" #: builtin/notes.c:71 msgid "git notes merge [] " -msgstr "" +msgstr "git notes merge [ОПЦИЯ…] УКАЗАТЕЛ_ЗА_БЕЛЕЖКА" #: builtin/notes.c:72 msgid "git notes merge --commit []" -msgstr "" +msgstr "git notes merge --commit [ОПЦИЯ…]" #: builtin/notes.c:73 msgid "git notes merge --abort []" -msgstr "" +msgstr "git notes merge --abort [ОПЦИЯ…]" #: builtin/notes.c:78 msgid "git notes remove []" -msgstr "" +msgstr "git notes remove [ОБЕКТ]" #: builtin/notes.c:83 msgid "git notes prune []" -msgstr "" +msgstr "git notes prune [ОПЦИЯ…]" #: builtin/notes.c:88 msgid "git notes get-ref" -msgstr "" +msgstr "git notes get-ref" #: builtin/notes.c:137 #, c-format msgid "unable to start 'show' for object '%s'" -msgstr "" +msgstr "действието „show“ не може да се изпълни за обект „%s“" #: builtin/notes.c:141 msgid "could not read 'show' output" -msgstr "" +msgstr "изведената информация от действието „show“ не може да се прочете" #: builtin/notes.c:149 #, c-format msgid "failed to finish 'show' for object '%s'" -msgstr "" +msgstr "действието „show“ не може да се завърши за обект „%s“" -#: builtin/notes.c:167 builtin/tag.c:373 +#: builtin/notes.c:167 builtin/tag.c:477 #, c-format msgid "could not create file '%s'" -msgstr "" +msgstr "файлът „%s“ не може да бъде създаден" #: builtin/notes.c:186 msgid "Please supply the note contents using either -m or -F option" -msgstr "" +msgstr "Задайте съдържанието на бележката с някоя от опциите „-m“ или „-F“" #: builtin/notes.c:207 builtin/notes.c:848 #, c-format msgid "Removing note for object %s\n" -msgstr "" +msgstr "Изтриване на бележката за обекта „%s“\n" #: builtin/notes.c:212 msgid "unable to write note object" -msgstr "" +msgstr "обектът-бележка не може да бъде записан" #: builtin/notes.c:214 #, c-format msgid "The note contents has been left in %s" -msgstr "" +msgstr "Съдържанието на бележката е във файла „%s“" -#: builtin/notes.c:248 builtin/tag.c:604 +#: builtin/notes.c:248 builtin/tag.c:692 #, c-format msgid "cannot read '%s'" -msgstr "" +msgstr "файлът „%s“ не може да бъде прочетен" -#: builtin/notes.c:250 builtin/tag.c:607 +#: builtin/notes.c:250 builtin/tag.c:695 #, c-format msgid "could not open or read '%s'" -msgstr "" +msgstr "файлът „%s“ не може да бъде отворен или прочетен" #: builtin/notes.c:269 builtin/notes.c:320 builtin/notes.c:322 #: builtin/notes.c:382 builtin/notes.c:436 builtin/notes.c:519 #: builtin/notes.c:524 builtin/notes.c:599 builtin/notes.c:641 -#: builtin/notes.c:843 builtin/tag.c:620 +#: builtin/notes.c:843 builtin/tag.c:708 #, c-format msgid "Failed to resolve '%s' as a valid ref." -msgstr "" +msgstr "Не може да се открие към какво сочи „%s“." #: builtin/notes.c:272 #, c-format msgid "Failed to read object '%s'." -msgstr "" +msgstr "Обектът „%s“ не може да бъде прочетен." #: builtin/notes.c:276 #, c-format msgid "Cannot read note data from non-blob object '%s'." msgstr "" +"Съдържанието на бележка не може да се вземе от обект, който не е BLOB: „%s“." #: builtin/notes.c:316 #, c-format msgid "Malformed input line: '%s'." -msgstr "" +msgstr "Даденият входен ред е с неправилен формат: „%s“." #: builtin/notes.c:331 #, c-format msgid "Failed to copy notes from '%s' to '%s'" -msgstr "" +msgstr "Бележката не може да се копира от „%s“ към „%s“" #: builtin/notes.c:375 builtin/notes.c:429 builtin/notes.c:502 #: builtin/notes.c:514 builtin/notes.c:587 builtin/notes.c:634 #: builtin/notes.c:908 msgid "too many parameters" -msgstr "" +msgstr "прекалено много параметри" #: builtin/notes.c:388 builtin/notes.c:647 #, c-format msgid "No note found for object %s." -msgstr "" +msgstr "Няма бележки за обекта „%s“." #: builtin/notes.c:410 builtin/notes.c:567 msgid "note contents as a string" -msgstr "" +msgstr "низ, който е съдържанието на бележката" #: builtin/notes.c:413 builtin/notes.c:570 msgid "note contents in a file" -msgstr "" +msgstr "файл със съдържанието на бележката" #: builtin/notes.c:415 builtin/notes.c:418 builtin/notes.c:572 -#: builtin/notes.c:575 builtin/tag.c:539 +#: builtin/notes.c:575 builtin/tag.c:627 msgid "object" -msgstr "" +msgstr "обект" #: builtin/notes.c:416 builtin/notes.c:573 msgid "reuse and edit specified note object" -msgstr "" +msgstr "преизползване и редактиране на указания обект-бележка" #: builtin/notes.c:419 builtin/notes.c:576 msgid "reuse specified note object" -msgstr "" +msgstr "преизползване на указания обект-бележка" #: builtin/notes.c:421 builtin/notes.c:489 msgid "replace existing notes" -msgstr "" +msgstr "замяна на съществуващите бележки" #: builtin/notes.c:455 #, c-format @@ -7536,23 +7804,28 @@ msgid "" "Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite " "existing notes" msgstr "" +"Не може да се добави бележка, защото такава вече съществува за обекта „%s“. " +"Използвайте опцията „-f“, за да презапишете съществуващи бележки." #: builtin/notes.c:460 builtin/notes.c:537 #, c-format msgid "Overwriting existing notes for object %s\n" -msgstr "" +msgstr "Презаписване на съществуващите бележки за обекта „%s“\n" #: builtin/notes.c:490 msgid "read objects from stdin" -msgstr "" +msgstr "изчитане на обектите от стандартния вход" +# FIXME imporve message #: builtin/notes.c:492 msgid "load rewriting config for (implies --stdin)" msgstr "" +"зареждане на настройките за КОМАНДАта, която презаписва подавания (включва " +"опцията „--stdin“)" #: builtin/notes.c:510 msgid "too few parameters" -msgstr "" +msgstr "прекалено малко параметри" #: builtin/notes.c:531 #, c-format @@ -7560,11 +7833,15 @@ msgid "" "Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite " "existing notes" msgstr "" +"Не може да се копира бележка, защото такава вече съществува за обекта „%s“. " +"Използвайте опцията „-f“, за да презапишете съществуващи бележки." #: builtin/notes.c:543 #, c-format msgid "Missing notes on source object %s. Cannot copy." msgstr "" +"Не може да се копира бележка, която не съществува — няма бележки за обекта-" +"източник „%s“." #: builtin/notes.c:592 #, c-format @@ -7572,59 +7849,67 @@ 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" +"Вместо това ги използвайте с командата „add“: „git notes add -f -m/-F/-c/-" +"C“.\n" #: builtin/notes.c:739 msgid "General options" -msgstr "" +msgstr "Общи опции" #: builtin/notes.c:741 msgid "Merge options" -msgstr "" +msgstr "Опции при сливане" #: builtin/notes.c:743 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:745 msgid "Committing unmerged notes" -msgstr "" +msgstr "Подаване на неслети бележки" #: builtin/notes.c:747 msgid "finalize notes merge by committing unmerged notes" -msgstr "" +msgstr "завършване на сливането чрез подаване на неслети бележки" #: builtin/notes.c:749 msgid "Aborting notes merge resolution" -msgstr "" +msgstr "Преустановяване на корекцията при сливането на бележки" #: builtin/notes.c:751 msgid "abort notes merge" -msgstr "" +msgstr "преустановяване на сливането на бележки" #: builtin/notes.c:846 #, c-format msgid "Object %s has no note\n" -msgstr "" +msgstr "Няма бележки за обекта „%s“\n" #: builtin/notes.c:858 msgid "attempt to remove non-existent note is not an error" -msgstr "" +msgstr "опитът за изтриването на несъществуваща бележка не се счита за грешка" #: builtin/notes.c:861 msgid "read object names from the standard input" -msgstr "" +msgstr "изчитане на имената на обектите от стандартния вход" #: builtin/notes.c:942 msgid "notes-ref" -msgstr "" +msgstr "УКАЗАТЕЛ_ЗА_БЕЛЕЖКА" #: builtin/notes.c:943 msgid "use notes from " -msgstr "" +msgstr "да се използва бележката сочена от този УКАЗАТЕЛ_ЗА_БЕЛЕЖКА" -#: builtin/notes.c:978 builtin/remote.c:1593 +#: builtin/notes.c:978 builtin/remote.c:1616 #, c-format msgid "Unknown subcommand: %s" msgstr "Непозната подкоманда: %s" @@ -7632,15 +7917,19 @@ msgstr "Непозната подкоманда: %s" #: builtin/pack-objects.c:25 msgid "git pack-objects --stdout [options...] [< ref-list | < object-list]" msgstr "" +"git pack-objects --stdout [ОПЦИЯ…] [< СПИСЪК_С_ВЕРСИИ | < СПИСЪК_С_ОБЕКТИ]" +# FIXME [options] vs [options...] #: builtin/pack-objects.c:26 msgid "git pack-objects [options...] base-name [< ref-list | < object-list]" msgstr "" +"git pack-objects [ОПЦИЯ…] ПРЕФИКС_НА_ИМЕТО [< СПИСЪК_С_ВЕРСИИ | < " +"СПИСЪК_С_ОБЕКТИ]" #: builtin/pack-objects.c:175 builtin/pack-objects.c:178 #, c-format msgid "deflate error (%d)" -msgstr "" +msgstr "грешка при декомпресиране с „deflate“ (%d)" #: builtin/pack-objects.c:771 msgid "Writing objects" @@ -7649,166 +7938,182 @@ msgstr "Записване на обектите" #: builtin/pack-objects.c:1012 msgid "disabling bitmap writing, as some objects are not being packed" msgstr "" +"изключване на записването на битовата маска, защото някои обекти няма да се " +"пакетират" #: builtin/pack-objects.c:2174 msgid "Compressing objects" msgstr "Компресиране на обектите" -#: builtin/pack-objects.c:2530 +#: builtin/pack-objects.c:2526 #, c-format msgid "unsupported index version %s" -msgstr "" +msgstr "неподдържана версия на индекса „%s“" -#: builtin/pack-objects.c:2534 +#: builtin/pack-objects.c:2530 #, c-format msgid "bad index version '%s'" -msgstr "" +msgstr "неправилна версия на индекса „%s“" -#: builtin/pack-objects.c:2557 +#: builtin/pack-objects.c:2553 #, c-format msgid "option %s does not accept negative form" -msgstr "" +msgstr "опцията „%s“ не притежава отрицателна версия" -#: builtin/pack-objects.c:2561 +#: builtin/pack-objects.c:2557 #, c-format msgid "unable to parse value '%s' for option %s" -msgstr "" +msgstr "неразпозната стойност „%s“ за опцията „%s“" -#: builtin/pack-objects.c:2580 +#: builtin/pack-objects.c:2576 msgid "do not show progress meter" -msgstr "" +msgstr "без извеждане на напредъка" -#: builtin/pack-objects.c:2582 +#: builtin/pack-objects.c:2578 msgid "show progress meter" -msgstr "" +msgstr "извеждане на напредъка" -#: builtin/pack-objects.c:2584 +#: builtin/pack-objects.c:2580 msgid "show progress meter during object writing phase" -msgstr "" +msgstr "извеждане на напредъка във фазата на запазване на обектите" -#: builtin/pack-objects.c:2587 +#: builtin/pack-objects.c:2583 msgid "similar to --all-progress when progress meter is shown" msgstr "" +"същото действие като опцията „--all-progress“ при извеждането на напредъка" -#: builtin/pack-objects.c:2588 +#: builtin/pack-objects.c:2584 msgid "version[,offset]" -msgstr "" +msgstr "ВЕРСИЯ[,ОТМЕСТВАНЕ]" -#: builtin/pack-objects.c:2589 +#: builtin/pack-objects.c:2585 msgid "write the pack index file in the specified idx format version" msgstr "" +"запазване на индекса на пакетните файлове във форма̀та с указаната версия" -#: builtin/pack-objects.c:2592 +#: builtin/pack-objects.c:2588 msgid "maximum size of each output pack file" -msgstr "" +msgstr "максимален размер на всеки пакетен файл" -#: builtin/pack-objects.c:2594 +#: builtin/pack-objects.c:2590 msgid "ignore borrowed objects from alternate object store" -msgstr "" +msgstr "игнориране на обектите заети от други хранилища на обекти" -#: builtin/pack-objects.c:2596 +#: builtin/pack-objects.c:2592 msgid "ignore packed objects" -msgstr "" +msgstr "игнориране на пакетираните обекти" -#: builtin/pack-objects.c:2598 +#: builtin/pack-objects.c:2594 msgid "limit pack window by objects" -msgstr "" +msgstr "ограничаване на прозореца за пакетиране по брой обекти" -#: builtin/pack-objects.c:2600 +#: builtin/pack-objects.c:2596 msgid "limit pack window by memory in addition to object limit" msgstr "" +"ограничаване на прозореца за пакетиране и по памет освен по брой обекти" -#: builtin/pack-objects.c:2602 +#: builtin/pack-objects.c:2598 msgid "maximum length of delta chain allowed in the resulting pack" msgstr "" +"максимална дължина на веригата от разлики, която е позволена в пакетния файл" -#: builtin/pack-objects.c:2604 +#: builtin/pack-objects.c:2600 msgid "reuse existing deltas" -msgstr "" +msgstr "преизползване на съществуващите разлики" -#: builtin/pack-objects.c:2606 +#: builtin/pack-objects.c:2602 msgid "reuse existing objects" -msgstr "" +msgstr "преизползване на съществуващите обекти" -#: builtin/pack-objects.c:2608 +#: builtin/pack-objects.c:2604 msgid "use OFS_DELTA objects" -msgstr "" +msgstr "използване на обекти „OFS_DELTA“" -#: builtin/pack-objects.c:2610 +#: builtin/pack-objects.c:2606 msgid "use threads when searching for best delta matches" msgstr "" +"стартиране на нишки за претърсване на най-добрите съвпадения на разликите" -#: builtin/pack-objects.c:2612 +#: builtin/pack-objects.c:2608 msgid "do not create an empty pack output" -msgstr "" +msgstr "без създаване на празен пакетен файл" -#: builtin/pack-objects.c:2614 +#: builtin/pack-objects.c:2610 msgid "read revision arguments from standard input" -msgstr "" +msgstr "изчитане на версиите от стандартния вход" -#: builtin/pack-objects.c:2616 +#: builtin/pack-objects.c:2612 msgid "limit the objects to those that are not yet packed" -msgstr "" +msgstr "ограничаване до все още непакетираните обекти" -#: builtin/pack-objects.c:2619 +#: builtin/pack-objects.c:2615 msgid "include objects reachable from any reference" msgstr "" +"включване на всички обекти, които могат да се достигнат от произволен " +"указател" -#: builtin/pack-objects.c:2622 +#: builtin/pack-objects.c:2618 msgid "include objects referred by reflog entries" -msgstr "" +msgstr "включване и на обектите сочени от записите в журнала на указателите" -#: builtin/pack-objects.c:2625 +#: builtin/pack-objects.c:2621 msgid "output pack to stdout" -msgstr "" +msgstr "извеждане на пакета на стандартния изход" -#: builtin/pack-objects.c:2627 +#: builtin/pack-objects.c:2623 msgid "include tag objects that refer to objects to be packed" msgstr "" +"включване и на обектите-етикети, които сочат към обектите, които ще бъдат " +"пакетирани" -#: builtin/pack-objects.c:2629 +#: builtin/pack-objects.c:2625 msgid "keep unreachable objects" -msgstr "" +msgstr "запазване на недостижимите обекти" -#: builtin/pack-objects.c:2630 parse-options.h:140 +#: builtin/pack-objects.c:2626 parse-options.h:140 msgid "time" -msgstr "време" +msgstr "ВРЕМЕ" -#: builtin/pack-objects.c:2631 +#: builtin/pack-objects.c:2627 msgid "unpack unreachable objects newer than