summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/RelNotes/2.25.2.txt60
-rw-r--r--Documentation/RelNotes/2.26.0.txt49
-rw-r--r--Documentation/RelNotes/2.27.0.txt41
-rw-r--r--Documentation/config.txt2
-rw-r--r--Documentation/config/http.txt21
-rw-r--r--Documentation/config/tag.txt7
-rw-r--r--Documentation/config/tar.txt6
-rw-r--r--Documentation/fetch-options.txt10
-rw-r--r--Documentation/git-fast-import.txt20
-rw-r--r--Documentation/git-init.txt7
-rw-r--r--Documentation/git-rebase.txt10
-rw-r--r--Documentation/git.txt6
-rw-r--r--Documentation/howto/maintain-git.txt52
-rwxr-xr-xGIT-VERSION-GEN2
-rw-r--r--Makefile1
l---------RelNotes2
-rw-r--r--abspath.c18
-rw-r--r--advice.c97
-rw-r--r--advice.h52
-rw-r--r--builtin/clone.c8
-rw-r--r--builtin/commit-graph.c5
-rw-r--r--builtin/commit.c42
-rw-r--r--builtin/fmt-merge-msg.c11
-rw-r--r--builtin/init-db.c79
-rw-r--r--builtin/pack-objects.c2
-rw-r--r--builtin/rebase.c2
-rw-r--r--builtin/rev-parse.c12
-rw-r--r--builtin/submodule--helper.c8
-rw-r--r--builtin/tag.c5
-rw-r--r--builtin/worktree.c9
-rw-r--r--cache.h29
-rwxr-xr-xci/lib.sh6
-rw-r--r--commit-slab.h7
-rw-r--r--commit.c30
-rw-r--r--config.mak.dev2
-rw-r--r--connected.c4
-rw-r--r--csum-file.c2
-rw-r--r--editor.c11
-rw-r--r--environment.c18
-rw-r--r--fast-import.c246
-rwxr-xr-xgit-gui/git-gui--askpass5
-rwxr-xr-xgit-gui/git-gui.sh14
-rw-r--r--git-gui/lib/chord.tcl56
-rw-r--r--git-gui/lib/index.tcl10
-rw-r--r--git-gui/lib/merge.tcl2
-rw-r--r--git-gui/po/de.po3388
-rw-r--r--git-gui/po/git-gui.pot2506
-rw-r--r--git-gui/po/glossary/de.po315
-rw-r--r--git-gui/po/glossary/git-gui-glossary.pot250
-rw-r--r--git-gui/po/glossary/git-gui-glossary.txt101
-rwxr-xr-xgit-p4.py235
-rw-r--r--gpg-interface.c97
-rw-r--r--gpg-interface.h9
-rw-r--r--hash.h21
-rw-r--r--hex.c55
-rw-r--r--http.c74
-rw-r--r--log-tree.c34
-rw-r--r--oidset.h1
-rw-r--r--path.c6
-rw-r--r--pathspec.c8
-rw-r--r--po/TEAMS4
-rw-r--r--po/bg.po5376
-rw-r--r--po/ca.po517
-rw-r--r--po/de.po5634
-rw-r--r--po/es.po5529
-rw-r--r--po/fr.po5470
-rw-r--r--po/git.pot5228
-rw-r--r--po/it.po5607
-rw-r--r--po/sv.po5553
-rw-r--r--po/tr.po24563
-rw-r--r--po/vi.po5560
-rw-r--r--po/zh_CN.po5385
-rw-r--r--po/zh_TW.po5696
-rw-r--r--repository.c4
-rw-r--r--sequencer.c56
-rw-r--r--sequencer.h3
-rw-r--r--setup.c49
-rw-r--r--sha1-file.c31
-rw-r--r--sha256/gcrypt.h6
-rw-r--r--submodule.c22
-rw-r--r--submodule.h4
-rw-r--r--t/helper/test-advise.c22
-rw-r--r--t/helper/test-dump-split-index.c2
-rw-r--r--t/helper/test-path-utils.c5
-rw-r--r--t/helper/test-repository.c14
-rw-r--r--t/helper/test-tool.c1
-rw-r--r--t/helper/test-tool.h1
-rwxr-xr-xt/lib-submodule-update.sh68
-rwxr-xr-xt/t0018-advice.sh32
-rwxr-xr-xt/t1450-fsck.sh24
-rwxr-xr-xt/t3403-rebase-skip.sh79
-rwxr-xr-xt/t3404-rebase-interactive.sh64
-rwxr-xr-xt/t3419-rebase-patch-id.sh2
-rwxr-xr-xt/t3424-rebase-empty.sh8
-rwxr-xr-xt/t3507-cherry-pick-conflict.sh23
-rwxr-xr-xt/t3510-cherry-pick-sequence.sh3
-rwxr-xr-xt/t4202-log.sh105
-rwxr-xr-xt/t6022-merge-rename.sh19
-rwxr-xr-xt/t6046-merge-skip-unneeded-updates.sh21
-rwxr-xr-xt/t6136-pathspec-in-bare.sh38
-rwxr-xr-xt/t6200-fmt-merge-msg.sh23
-rwxr-xr-xt/t6300-for-each-ref.sh27
-rwxr-xr-xt/t7004-tag.sh1
-rwxr-xr-xt/t7112-reset-submodule.sh1
-rwxr-xr-xt/t7510-signed-commit.sh16
-rwxr-xr-xt/t9300-fast-import.sh109
-rw-r--r--t/test-lib.sh29
-rw-r--r--unicode-width.h43
-rw-r--r--unpack-trees.c7
-rw-r--r--worktree.c22
-rw-r--r--wt-status.h15
111 files changed, 59747 insertions, 29562 deletions
diff --git a/Documentation/RelNotes/2.25.2.txt b/Documentation/RelNotes/2.25.2.txt
new file mode 100644
index 0000000..303c53a
--- /dev/null
+++ b/Documentation/RelNotes/2.25.2.txt
@@ -0,0 +1,60 @@
+Git 2.25.2 Release Notes
+========================
+
+Fixes since v2.25.1
+-------------------
+
+ * Minor bugfixes to "git add -i" that has recently been rewritten in C.
+
+ * An earlier update to show the location of working tree in the error
+ message did not consider the possibility that a git command may be
+ run in a bare repository, which has been corrected.
+
+ * The "--recurse-submodules" option of various subcommands did not
+ work well when run in an alternate worktree, which has been
+ corrected.
+
+ * Running "git rm" on a submodule failed unnecessarily when
+ .gitmodules is only cache-dirty, which has been corrected.
+
+ * "git rebase -i" identifies existing commits in its todo file with
+ their abbreviated object name, which could become ambigous as it
+ goes to create new commits, and has a mechanism to avoid ambiguity
+ in the main part of its execution. A few other cases however were
+ not covered by the protection against ambiguity, which has been
+ corrected.
+
+ * The index-pack code now diagnoses a bad input packstream that
+ records the same object twice when it is used as delta base; the
+ code used to declare a software bug when encountering such an
+ input, but it is an input error.
+
+ * The code to automatically shrink the fan-out in the notes tree had
+ an off-by-one bug, which has been killed.
+
+ * "git check-ignore" did not work when the given path is explicitly
+ marked as not ignored with a negative entry in the .gitignore file.
+
+ * The merge-recursive machinery failed to refresh the cache entry for
+ a merge result in a couple of places, resulting in an unnecessary
+ merge failure, which has been fixed.
+
+ * Fix for a bug revealed by a recent change to make the protocol v2
+ the default.
+
+ * "git merge signed-tag" while lacking the public key started to say
+ "No signature", which was utterly wrong. This regression has been
+ reverted.
+
+ * MinGW's poll() emulation has been improved.
+
+ * "git show" and others gave an object name in raw format in its
+ error output, which has been corrected to give it in hex.
+
+ * Both "git ls-remote -h" and "git grep -h" give short usage help,
+ like any other Git subcommand, but it is not unreasonable to expect
+ that the former would behave the same as "git ls-remote --head"
+ (there is no other sensible behaviour for the latter). The
+ documentation has been updated in an attempt to clarify this.
+
+Also contains various documentation updates, code clean-ups and minor fixups.
diff --git a/Documentation/RelNotes/2.26.0.txt b/Documentation/RelNotes/2.26.0.txt
index 13c2684..3a7a734 100644
--- a/Documentation/RelNotes/2.26.0.txt
+++ b/Documentation/RelNotes/2.26.0.txt
@@ -4,6 +4,19 @@ Git 2.26 Release Notes
Updates since v2.25
-------------------
+Backward compatibility notes
+
+ * "git rebase" uses a different backend that is based on the 'merge'
+ machinery by default. There are a few known differences in the
+ behaviour from the traditional machinery based on patch+apply.
+
+ If your workflow is negatively affected by this change, please
+ report it to git@vger.kernel.org so that we can take a look into
+ it. After doing so, you can set the 'rebase.backend' configuration
+ variable to 'apply', in order to use the old default behaviour in
+ the meantime.
+
+
UI, Workflows & Features
* Sample credential helper for using .netrc has been updated to work
@@ -50,7 +63,7 @@ UI, Workflows & Features
* "git rm" and "git stash" learns the new "--pathspec-from-file"
option.
- * "git am --short-current-patch" is a way to show the piece of e-mail
+ * "git am --show-current-patch" is a way to show the piece of e-mail
for the stopped step, which is not suitable to directly feed "git
apply" (it is designed to be a good "git am" input). It learned a
new option to show only the patch part.
@@ -66,7 +79,7 @@ Performance, Internal Implementation, Development Support etc.
with tabs.
* The test-lint machinery knew to check "VAR=VAL shell_function"
- construct, but did not check "VAR= shell_funciton", which has been
+ construct, but did not check "VAR= shell_function", which has been
corrected.
* Replace "git config --bool" calls with "git config --type=bool" in
@@ -175,7 +188,6 @@ Fixes since v2.25
of gcc and clang.
* Minor bugfixes to "git add -i" that has recently been rewritten in C.
- (merge 849e43cc18 js/builtin-add-i-cmds later to maint).
* "git fetch --refmap=" option has got a better documentation.
@@ -198,17 +210,14 @@ Fixes since v2.25
* The "--recurse-submodules" option of various subcommands did not
work well when run in an alternate worktree, which has been
corrected.
- (merge a9472afb63 pb/recurse-submodule-in-worktree-fix later to maint).
* Futureproofing a test not to depend on the current implementation
detail.
* Running "git rm" on a submodule failed unnecessarily when
.gitmodules is only cache-dirty, which has been corrected.
- (merge 7edee32985 dt/submodule-rm-with-stale-cache later to maint).
* C pedantry ;-) fix.
- (merge cf82bff73f jk/clang-sanitizer-fixes later to maint).
* "git grep --no-index" should not get affected by the contents of
the .gitmodules file but when "--recurse-submodules" is given or
@@ -220,12 +229,11 @@ Fixes since v2.25
* Unhelpful warning messages during documentation build have been squelched.
* "git rebase -i" identifies existing commits in its todo file with
- their abbreviated object name, which could become ambigous as it
+ their abbreviated object name, which could become ambiguous as it
goes to create new commits, and has a mechanism to avoid ambiguity
in the main part of its execution. A few other cases however were
not covered by the protection against ambiguity, which has been
corrected.
- (merge 26027625dd js/rebase-i-with-colliding-hash later to maint).
* Allow the rebase.missingCommitsCheck configuration to kick in when
"rebase --edit-todo" and "rebase --continue" restarts the procedure.
@@ -239,13 +247,12 @@ Fixes since v2.25
* The code to automatically shrink the fan-out in the notes tree had
an off-by-one bug, which has been killed.
- (merge dbc27477ff jh/notes-fanout-fix later to maint).
* The index-pack code now diagnoses a bad input packstream that
records the same object twice when it is used as delta base; the
code used to declare a software bug when encountering such an
input, but it is an input error.
- (merge a21781011f jk/index-pack-dupfix later to maint).
+
* The code to compute the commit-graph has been taught to use a more
robust way to tell if two object directories refer to the same
@@ -257,23 +264,18 @@ Fixes since v2.25
branch.<name>.pushRemote is now also updated.
* Update to doc-diff.
- (merge 2607d39da3 jk/doc-diff-parallel later to maint).
* Doc markup fix.
- (merge 0aa6ce3094 jk/push-option-doc-markup-fix later to maint).
* "git check-ignore" did not work when the given path is explicitly
marked as not ignored with a negative entry in the .gitignore file.
- (merge 7ec8125fba en/check-ignore later to maint).
* The merge-recursive machinery failed to refresh the cache entry for
a merge result in a couple of places, resulting in an unnecessary
merge failure, which has been fixed.
- (merge fb1c18fc46 en/t3433-rebase-stat-dirty-failure later to maint).
* Fix for a bug revealed by a recent change to make the protocol v2
the default.
- (merge 3e96c66805 ds/partial-clone-fixes later to maint).
* In rare cases "git worktree add <path>" could think that <path>
was already a registered worktree even when it wasn't and refuse
@@ -298,22 +300,24 @@ Fixes since v2.25
* "git merge signed-tag" while lacking the public key started to say
"No signature", which was utterly wrong. This regression has been
reverted.
- (merge 0106b1d4be hi/gpg-use-check-signature later to maint).
* MinGW's poll() emulation has been improved.
- (merge 94f4d01932 am/mingw-poll-fix later to maint).
* "git show" and others gave an object name in raw format in its
error output, which has been corrected to give it in hex.
- (merge 237a28173f hd/show-one-mergetag-fix later to maint).
* "git fetch" over HTTP walker protocol did not show any progress
output. We inherently do not know how much work remains, but still
we can show something not to bore users.
(merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint).
+ * Both "git ls-remote -h" and "git grep -h" give short usage help,
+ like any other Git subcommand, but it is not unreasonable to expect
+ that the former would behave the same as "git ls-remote --head"
+ (there is no other sensible behaviour for the latter). The
+ documentation has been updated in an attempt to clarify this.
+
* Other code cleanup, docfix, build fix, etc.
- (merge 26f924d50e en/simplify-check-updates-in-unpack-trees later to maint).
(merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint).
(merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint).
(merge c513a958b6 ss/t6025-modernize later to maint).
@@ -324,20 +328,13 @@ Fixes since v2.25
(merge 7a9f8ca805 rs/parse-options-concat-dup later to maint).
(merge 517b60564e rs/strbuf-insertstr later to maint).
(merge f696a2b1c8 jk/mailinfo-cleanup later to maint).
- (merge 076ee3e8a2 js/test-write-junit-xml-fix later to maint).
(merge de26f02db1 js/test-avoid-pipe later to maint).
- (merge bfe2bbb47f js/test-unc-fetch later to maint).
- (merge 08809c09aa js/mingw-open-in-gdb later to maint).
- (merge cc4f2eb828 jk/doc-credential-helper later to maint).
- (merge e0020b2f82 es/outside-repo-errmsg-hints later to maint).
(merge a2dc43414c es/doc-mentoring later to maint).
- (merge 539052f42f jk/run-command-formatfix later to maint).
(merge 02bbbe9df9 es/worktree-cleanup later to maint).
(merge 2ce6d075fa rs/micro-cleanups later to maint).
(merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint).
(merge 3c29e21eb0 ma/test-cleanup later to maint).
(merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
- (merge 7f487ce062 js/ci-windows-update later to maint).
(merge d68ce906c7 rs/commit-graph-code-simplification later to maint).
(merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint).
(merge fd0bc17557 kk/complete-diff-color-moved later to maint).
diff --git a/Documentation/RelNotes/2.27.0.txt b/Documentation/RelNotes/2.27.0.txt
new file mode 100644
index 0000000..84eab73
--- /dev/null
+++ b/Documentation/RelNotes/2.27.0.txt
@@ -0,0 +1,41 @@
+Git 2.27 Release Notes
+======================
+
+Updates since v2.26
+-------------------
+
+UI, Workflows & Features
+
+ * A handful of options to configure SSL when talking to proxies have
+ been added.
+
+
+Performance, Internal Implementation, Development Support etc.
+
+ * The advise API has been revamped to allow more systematic enumeration of
+ advice knobs in the future.
+
+
+Fixes since v2.26
+-----------------
+
+ * The real_path() convenience function can easily be misused; with a
+ bit of code refactoring in the callers' side, its use has been
+ eliminated.
+ (merge 49d3c4b481 am/real-path-fix later to maint).
+
+ * Update "git p4" to work with Python 3.
+ (merge 6bb40ed20a yz/p4-py3 later to maint).
+
+ * The mechanism to prevent "git commit" from making an empty commit
+ or amending during an interrupted cherry-pick was broken during the
+ rewrite of "git rebase" in C, which has been corrected.
+ (merge 430b75f720 pw/advise-rebase-skip later to maint).
+
+ * Other code cleanup, docfix, build fix, etc.
+ (merge 564956f358 jc/maintain-doc later to maint).
+ (merge 7422b2a0a1 sg/commit-slab-clarify-peek later to maint).
+ (merge 9c688735f6 rs/doc-passthru-fetch-options later to maint).
+ (merge 757c2ba3e2 en/oidset-uninclude-hashmap later to maint).
+ (merge 8312aa7d74 jc/config-tar later to maint).
+ (merge d00a5bdd50 ss/submodule-foreach-cb later to maint).
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 08b13ba..2450589 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -447,6 +447,8 @@ include::config/submodule.txt[]
include::config/tag.txt[]
+include::config/tar.txt[]
+
include::config/trace2.txt[]
include::config/transfer.txt[]
diff --git a/Documentation/config/http.txt b/Documentation/config/http.txt
index e806033..3968fbb 100644
--- a/Documentation/config/http.txt
+++ b/Documentation/config/http.txt
@@ -29,6 +29,27 @@ http.proxyAuthMethod::
* `ntlm` - NTLM authentication (compare the --ntlm option of `curl(1)`)
--
+http.proxySSLCert::
+ The pathname of a file that stores a client certificate to use to authenticate
+ with an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_CERT` environment
+ variable.
+
+http.proxySSLKey::
+ The pathname of a file that stores a private key to use to authenticate with
+ an HTTPS proxy. Can be overridden by the `GIT_PROXY_SSL_KEY` environment
+ variable.
+
+http.proxySSLCertPasswordProtected::
+ Enable Git's password prompt for the proxy SSL certificate. Otherwise OpenSSL
+ will prompt the user, possibly many times, if the certificate or private key
+ is encrypted. Can be overriden by the `GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED`
+ environment variable.
+
+http.proxySSLCAInfo::
+ Pathname to the file containing the certificate bundle that should be used to
+ verify the proxy with when using an HTTPS proxy. Can be overriden by the
+ `GIT_PROXY_SSL_CAINFO` environment variable.
+
http.emptyAuth::
Attempt authentication without seeking a username or password. This
can be used to attempt GSS-Negotiate authentication without specifying
diff --git a/Documentation/config/tag.txt b/Documentation/config/tag.txt
index 6d9110d..5062a05 100644
--- a/Documentation/config/tag.txt
+++ b/Documentation/config/tag.txt
@@ -15,10 +15,3 @@ tag.gpgSign::
convenient to use an agent to avoid typing your gpg passphrase
several times. Note that this option doesn't affect tag signing
behavior enabled by "-u <keyid>" or "--local-user=<keyid>" options.
-
-tar.umask::
- This variable can be used to restrict the permission bits of
- tar archive entries. The default is 0002, which turns off the
- world write bit. The special value "user" indicates that the
- archiving user's umask will be used instead. See umask(2) and
- linkgit:git-archive[1].
diff --git a/Documentation/config/tar.txt b/Documentation/config/tar.txt
new file mode 100644
index 0000000..de8ff48
--- /dev/null
+++ b/Documentation/config/tar.txt
@@ -0,0 +1,6 @@
+tar.umask::
+ This variable can be used to restrict the permission bits of
+ tar archive entries. The default is 0002, which turns off the
+ world write bit. The special value "user" indicates that the
+ archiving user's umask will be used instead. See umask(2) and
+ linkgit:git-archive[1].
diff --git a/Documentation/fetch-options.txt b/Documentation/fetch-options.txt
index a115a1a..00d03ec 100644
--- a/Documentation/fetch-options.txt
+++ b/Documentation/fetch-options.txt
@@ -61,10 +61,8 @@ this option multiple times, one for each matching ref name.
See also the `fetch.negotiationAlgorithm` configuration variable
documented in linkgit:git-config[1].
-ifndef::git-pull[]
--dry-run::
Show what would be done, without making any changes.
-endif::git-pull[]
-f::
--force::
@@ -95,6 +93,7 @@ ifndef::git-pull[]
--[no-]write-commit-graph::
Write a commit-graph after fetching. This overrides the config
setting `fetch.writeCommitGraph`.
+endif::git-pull[]
-p::
--prune::
@@ -107,6 +106,7 @@ ifndef::git-pull[]
was cloned with the --mirror option), then they are also
subject to pruning. Supplying `--prune-tags` is a shorthand for
providing the tag refspec.
+ifndef::git-pull[]
+
See the PRUNING section below for more details.
@@ -133,7 +133,6 @@ endif::git-pull[]
behavior for a remote may be specified with the remote.<name>.tagOpt
setting. See linkgit:git-config[1].
-ifndef::git-pull[]
--refmap=<refspec>::
When fetching refs listed on the command line, use the
specified refspec (can be given more than once) to map the
@@ -154,6 +153,7 @@ ifndef::git-pull[]
is used (though tags may be pruned anyway if they are also the
destination of an explicit refspec; see `--prune`).
+ifndef::git-pull[]
--recurse-submodules[=yes|on-demand|no]::
This option controls if and under what conditions new commits of
populated submodules should be fetched too. It can be used as a
@@ -164,6 +164,7 @@ ifndef::git-pull[]
when the superproject retrieves a commit that updates the submodule's
reference to a commit that isn't already in the local submodule
clone.
+endif::git-pull[]
-j::
--jobs=<n>::
@@ -177,9 +178,11 @@ parallel. To control them independently, use the config settings
Typically, parallel recursive and multi-remote fetches will be faster. By
default fetches are performed sequentially, not in parallel.
+ifndef::git-pull[]
--no-recurse-submodules::
Disable recursive fetching of submodules (this has the same effect as
using the `--recurse-submodules=no` option).
+endif::git-pull[]
--set-upstream::
If the remote is fetched successfully, pull and add upstream
@@ -188,6 +191,7 @@ default fetches are performed sequentially, not in parallel.
see `branch.<name>.merge` and `branch.<name>.remote` in
linkgit:git-config[1].
+ifndef::git-pull[]
--submodule-prefix=<path>::
Prepend <path> to paths printed in informative messages
such as "Fetching submodule foo". This option is used
diff --git a/Documentation/git-fast-import.txt b/Documentation/git-fast-import.txt
index 7889f95..77c6b3d 100644
--- a/Documentation/git-fast-import.txt
+++ b/Documentation/git-fast-import.txt
@@ -122,6 +122,26 @@ Locations of Marks Files
Relative and non-relative marks may be combined by interweaving
--(no-)-relative-marks with the --(import|export)-marks= options.
+Submodule Rewriting
+~~~~~~~~~~~~~~~~~~~
+
+--rewrite-submodules-from=<name>:<file>::
+--rewrite-submodules-to=<name>:<file>::
+ Rewrite the object IDs for the submodule specified by <name> from the values
+ used in the from <file> to those used in the to <file>. The from marks should
+ have been created by `git fast-export`, and the to marks should have been
+ created by `git fast-import` when importing that same submodule.
++
+<name> may be any arbitrary string not containing a colon character, but the
+same value must be used with both options when specifying corresponding marks.
+Multiple submodules may be specified with different values for <name>. It is an
+error not to use these options in corresponding pairs.
++
+These options are primarily useful when converting a repository from one hash
+algorithm to another; without them, fast-import will fail if it encounters a
+submodule because it has no way of writing the object ID into the new hash
+algorithm.
+
Performance and Compression Tuning
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/Documentation/git-init.txt b/Documentation/git-init.txt
index 32880aa..adc6adf 100644
--- a/Documentation/git-init.txt
+++ b/Documentation/git-init.txt
@@ -10,7 +10,7 @@ SYNOPSIS
--------
[verse]
'git init' [-q | --quiet] [--bare] [--template=<template_directory>]
- [--separate-git-dir <git dir>]
+ [--separate-git-dir <git dir>] [--object-format=<format]
[--shared[=<permissions>]] [directory]
@@ -48,6 +48,11 @@ Only print error and warning messages; all other output will be suppressed.
Create a bare repository. If `GIT_DIR` environment is not set, it is set to the
current working directory.
+--object-format=<format>::
+
+Specify the given object format (hash algorithm) for the repository. The valid
+values are 'sha1' and (if enabled) 'sha256'. 'sha1' is the default.
+
--template=<template_directory>::
Specify the directory from which templates will be used. (See the "TEMPLATE
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index 8c1f4b8..f7a6033 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -699,6 +699,16 @@ suffer from the same shortcoming. (See
https://lore.kernel.org/git/20200207132152.GC2868@szeder.dev/ for
details.)
+Commit Rewording
+~~~~~~~~~~~~~~~~
+
+When a conflict occurs while rebasing, rebase stops and asks the user
+to resolve. Since the user may need to make notable changes while
+resolving conflicts, after conflicts are resolved and the user has run
+`git rebase --continue`, the rebase should open an editor and ask the
+user to update the commit message. The merge backend does this, while
+the apply backend blindly applies the original commit message.
+
Miscellaneous differences
~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/Documentation/git.txt b/Documentation/git.txt
index b0672bd..9d6769e 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -493,6 +493,12 @@ double-quotes and respecting backslash escapes. E.g., the value
details. This variable has lower precedence than other path
variables such as GIT_INDEX_FILE, GIT_OBJECT_DIRECTORY...
+`GIT_DEFAULT_HASH_ALGORITHM`::
+ If this variable is set, the default hash algorithm for new
+ repositories will be set to this value. This value is currently
+ ignored when cloning; the setting of the remote repository
+ is used instead. The default is "sha1".
+
Git Commits
~~~~~~~~~~~
`GIT_AUTHOR_NAME`::
diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index ca43787..73be8b4 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -154,15 +154,17 @@ by doing the following:
- Anything unobvious that is applicable to 'master' (in other
words, does not depend on anything that is still in 'next'
and not in 'master') is applied to a new topic branch that
- is forked from the tip of 'master'. This includes both
+ is forked from the tip of 'master' (or the last feature release,
+ which is a bit older than 'master'). This includes both
enhancements and unobvious fixes to 'master'. A topic
branch is named as ai/topic where "ai" is two-letter string
named after author's initial and "topic" is a descriptive name
of the topic (in other words, "what's the series is about").
- An unobvious fix meant for 'maint' is applied to a new
- topic branch that is forked from the tip of 'maint'. The
- topic is named as ai/maint-topic.
+ topic branch that is forked from the tip of 'maint' (or the
+ oldest and still relevant maintenance branch). The
+ topic may be named as ai/maint-topic.
- Changes that pertain to an existing topic are applied to
the branch, but:
@@ -174,24 +176,40 @@ by doing the following:
- Replacement patches to an existing topic are accepted only
for commits not in 'next'.
- The above except the "replacement" are all done with:
+ The initial round is done with:
$ git checkout ai/topic ;# or "git checkout -b ai/topic master"
$ git am -sc3 mailbox
- while patch replacement is often done by:
+ and replacing an existing topic with subsequent round is done with:
- $ git format-patch ai/topic~$n..ai/topic ;# export existing
+ $ git checkout master...ai/topic ;# try to reapply to the same base
+ $ git am -sc3 mailbox
+
+ to prepare the new round on a detached HEAD, and then
+
+ $ git range-diff @{-1}...
+ $ git diff @{-1}
- then replace some parts with the new patch, and reapplying:
+ to double check what changed since the last round, and finally
- $ git checkout ai/topic
- $ git reset --hard ai/topic~$n
- $ git am -sc3 -s 000*.txt
+ $ git checkout -B @{-1}
+
+ to conclude (the last step is why a topic already in 'next' is
+ not replaced but updated incrementally).
+
+ Whether it is the initial round or a subsequent round, the topic
+ may not build even in isolation, or may break the build when
+ merged to integration branches due to bugs. There may already
+ be obvious and trivial improvements suggested on the list. The
+ maintainer often adds an extra commit, with "SQUASH???" in its
+ title, to fix things up, before publishing the integration
+ branches to make it usable by other developers for testing.
+ These changes are what the maintainer is not 100% committed to
+ (trivial typofixes etc. are often squashed directly into the
+ patches that need fixing, without being applied as a separate
+ "SQUASH???" commit), so that they can be removed easily as needed.
- The full test suite is always run for 'maint' and 'master'
- after patch application; for topic branches the tests are run
- as time permits.
- Merge maint to master as needed:
@@ -371,6 +389,14 @@ Some observations to be made.
be included in the next feature release. Being in the
'master' branch typically is.
+ * Due to the nature of "SQUASH???" fix-ups, if the original author
+ agrees with the suggested changes, it is OK to squash them to
+ appropriate patches in the next round (when the suggested change
+ is small enough, the author should not even bother with
+ "Helped-by"). It is also OK to drop them from the next round
+ when the original author does not agree with the suggestion, but
+ the author is expected to say why somewhere in the discussion.
+
Appendix
--------
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 41c2d7c..21f929e 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -1,7 +1,7 @@
#!/bin/sh
GVF=GIT-VERSION-FILE
-DEF_VER=v2.26.0-rc1
+DEF_VER=v2.26.GIT
LF='
'
diff --git a/Makefile b/Makefile
index 9804a07..a596111 100644
--- a/Makefile
+++ b/Makefile
@@ -695,6 +695,7 @@ X =
PROGRAMS += $(patsubst %.o,git-%$X,$(PROGRAM_OBJS))
+TEST_BUILTINS_OBJS += test-advise.o
TEST_BUILTINS_OBJS += test-chmtime.o
TEST_BUILTINS_OBJS += test-config.o
TEST_BUILTINS_OBJS += test-ctype.o
diff --git a/RelNotes b/RelNotes
index 370269d..f3d8527 120000
--- a/RelNotes
+++ b/RelNotes
@@ -1 +1 @@
-Documentation/RelNotes/2.26.0.txt \ No newline at end of file
+Documentation/RelNotes/2.27.0.txt \ No newline at end of file
diff --git a/abspath.c b/abspath.c
index 9857985..6f15a41 100644
--- a/abspath.c
+++ b/abspath.c
@@ -202,22 +202,6 @@ error_out:
return retval;
}
-/*
- * Resolve `path` into an absolute, cleaned-up path. The return value
- * comes from a shared buffer.
- */
-const char *real_path(const char *path)
-{
- static struct strbuf realpath = STRBUF_INIT;
- return strbuf_realpath(&realpath, path, 1);
-}
-
-const char *real_path_if_valid(const char *path)
-{
- static struct strbuf realpath = STRBUF_INIT;
- return strbuf_realpath(&realpath, path, 0);
-}
-
char *real_pathdup(const char *path, int die_on_error)
{
struct strbuf realpath = STRBUF_INIT;
@@ -233,7 +217,7 @@ char *real_pathdup(const char *path, int die_on_error)
/*
* Use this to get an absolute path from a relative one. If you want
- * to resolve links, you should use real_path.
+ * to resolve links, you should use strbuf_realpath.
*/
const char *absolute_path(const char *path)
{
diff --git a/advice.c b/advice.c
index 97f3f98..f0a3d32 100644
--- a/advice.c
+++ b/advice.c
@@ -29,7 +29,6 @@ int advice_ignored_hook = 1;
int advice_waiting_for_editor = 1;
int advice_graft_file_deprecated = 1;
int advice_checkout_ambiguous_remote_branch_name = 1;
-int advice_nested_tag = 1;
int advice_submodule_alternate_error_strategy_die = 1;
int advice_add_ignored_file = 1;
int advice_add_empty_pathspec = 1;
@@ -82,7 +81,7 @@ static struct {
{ "sequencerInUse", &advice_sequencer_in_use },
{ "implicitIdentity", &advice_implicit_identity },
{ "detachedHead", &advice_detached_head },
- { "setupStreamFailure", &advice_set_upstream_failure },
+ { "setUpstreamFailure", &advice_set_upstream_failure },
{ "objectNameWarning", &advice_object_name_warning },
{ "amWorkDir", &advice_amworkdir },
{ "rmHints", &advice_rm_hints },
@@ -91,7 +90,6 @@ static struct {
{ "waitingForEditor", &advice_waiting_for_editor },
{ "graftFileDeprecated", &advice_graft_file_deprecated },
{ "checkoutAmbiguousRemoteBranchName", &advice_checkout_ambiguous_remote_branch_name },
- { "nestedTag", &advice_nested_tag },
{ "submoduleAlternateErrorStrategyDie", &advice_submodule_alternate_error_strategy_die },
{ "addIgnoredFile", &advice_add_ignored_file },
{ "addEmptyPathspec", &advice_add_empty_pathspec },
@@ -100,15 +98,58 @@ static struct {
{ "pushNonFastForward", &advice_push_update_rejected }
};
-void advise(const char *advice, ...)
+static struct {
+ const char *key;
+ int enabled;
+} advice_setting[] = {
+ [ADVICE_ADD_EMBEDDED_REPO] = { "addEmbeddedRepo", 1 },
+ [ADVICE_AM_WORK_DIR] = { "amWorkDir", 1 },
+ [ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME] = { "checkoutAmbiguousRemoteBranchName", 1 },
+ [ADVICE_COMMIT_BEFORE_MERGE] = { "commitBeforeMerge", 1 },
+ [ADVICE_DETACHED_HEAD] = { "detachedHead", 1 },
+ [ADVICE_FETCH_SHOW_FORCED_UPDATES] = { "fetchShowForcedUpdates", 1 },
+ [ADVICE_GRAFT_FILE_DEPRECATED] = { "graftFileDeprecated", 1 },
+ [ADVICE_IGNORED_HOOK] = { "ignoredHook", 1 },
+ [ADVICE_IMPLICIT_IDENTITY] = { "implicitIdentity", 1 },
+ [ADVICE_NESTED_TAG] = { "nestedTag", 1 },
+ [ADVICE_OBJECT_NAME_WARNING] = { "objectNameWarning", 1 },
+ [ADVICE_PUSH_ALREADY_EXISTS] = { "pushAlreadyExists", 1 },
+ [ADVICE_PUSH_FETCH_FIRST] = { "pushFetchFirst", 1 },
+ [ADVICE_PUSH_NEEDS_FORCE] = { "pushNeedsForce", 1 },
+
+ /* make this an alias for backward compatibility */
+ [ADVICE_PUSH_UPDATE_REJECTED_ALIAS] = { "pushNonFastForward", 1 },
+
+ [ADVICE_PUSH_NON_FF_CURRENT] = { "pushNonFFCurrent", 1 },
+ [ADVICE_PUSH_NON_FF_MATCHING] = { "pushNonFFMatching", 1 },
+ [ADVICE_PUSH_UNQUALIFIED_REF_NAME] = { "pushUnqualifiedRefName", 1 },
+ [ADVICE_PUSH_UPDATE_REJECTED] = { "pushUpdateRejected", 1 },
+ [ADVICE_RESET_QUIET_WARNING] = { "resetQuiet", 1 },
+ [ADVICE_RESOLVE_CONFLICT] = { "resolveConflict", 1 },
+ [ADVICE_RM_HINTS] = { "rmHints", 1 },
+ [ADVICE_SEQUENCER_IN_USE] = { "sequencerInUse", 1 },
+ [ADVICE_SET_UPSTREAM_FAILURE] = { "setUpstreamFailure", 1 },
+ [ADVICE_STATUS_AHEAD_BEHIND_WARNING] = { "statusAheadBehindWarning", 1 },
+ [ADVICE_STATUS_HINTS] = { "statusHints", 1 },
+ [ADVICE_STATUS_U_OPTION] = { "statusUoption", 1 },
+ [ADVICE_SUBMODULE_ALTERNATE_ERROR_STRATEGY_DIE] = { "submoduleAlternateErrorStrategyDie", 1 },
+ [ADVICE_WAITING_FOR_EDITOR] = { "waitingForEditor", 1 },
+};
+
+static const char turn_off_instructions[] =
+N_("\n"
+ "Disable this message with \"git config advice.%s false\"");
+
+static void vadvise(const char *advice, int display_instructions,
+ const char *key, va_list params)
{
struct strbuf buf = STRBUF_INIT;
- va_list params;
const char *cp, *np;
- va_start(params, advice);
strbuf_vaddf(&buf, advice, params);
- va_end(params);
+
+ if (display_instructions)
+ strbuf_addf(&buf, turn_off_instructions, key);
for (cp = buf.buf; *cp; cp = np) {
np = strchrnul(cp, '\n');
@@ -122,6 +163,37 @@ void advise(const char *advice, ...)
strbuf_release(&buf);
}
+void advise(const char *advice, ...)
+{
+ va_list params;
+ va_start(params, advice);
+ vadvise(advice, 0, "", params);
+ va_end(params);
+}
+
+int advice_enabled(enum advice_type type)
+{
+ switch(type) {
+ case ADVICE_PUSH_UPDATE_REJECTED:
+ return advice_setting[ADVICE_PUSH_UPDATE_REJECTED].enabled &&
+ advice_setting[ADVICE_PUSH_UPDATE_REJECTED_ALIAS].enabled;
+ default:
+ return advice_setting[type].enabled;
+ }
+}
+
+void advise_if_enabled(enum advice_type type, const char *advice, ...)
+{
+ va_list params;
+
+ if (!advice_enabled(type))
+ return;
+
+ va_start(params, advice);
+ vadvise(advice, 1, advice_setting[type].key, params);
+ va_end(params);
+}
+
int git_default_advice_config(const char *var, const char *value)
{
const char *k, *slot_name;
@@ -148,6 +220,13 @@ int git_default_advice_config(const char *var, const char *value)
if (strcasecmp(k, advice_config[i].name))
continue;
*advice_config[i].preference = git_config_bool(var, value);
+ break;
+ }
+
+ for (i = 0; i < ARRAY_SIZE(advice_setting); i++) {
+ if (strcasecmp(k, advice_setting[i].key))
+ continue;
+ advice_setting[i].enabled = git_config_bool(var, value);
return 0;
}
@@ -158,8 +237,8 @@ void list_config_advices(struct string_list *list, const char *prefix)
{
int i;
- for (i = 0; i < ARRAY_SIZE(advice_config); i++)
- list_config_item(list, prefix, advice_config[i].name);
+ for (i = 0; i < ARRAY_SIZE(advice_setting); i++)
+ list_config_item(list, prefix, advice_setting[i].key);
}
int error_resolve_conflict(const char *me)
diff --git a/advice.h b/advice.h
index 0e6e58d..16f2c11 100644
--- a/advice.h
+++ b/advice.h
@@ -29,14 +29,64 @@ extern int advice_ignored_hook;
extern int advice_waiting_for_editor;
extern int advice_graft_file_deprecated;
extern int advice_checkout_ambiguous_remote_branch_name;
-extern int advice_nested_tag;
extern int advice_submodule_alternate_error_strategy_die;
extern int advice_add_ignored_file;
extern int advice_add_empty_pathspec;
+/*
+ * To add a new advice, you need to:
+ * Define a new advice_type.
+ * Add a new entry to advice_setting array.
+ * Add the new config variable to Documentation/config/advice.txt.
+ * Call advise_if_enabled to print your advice.
+ */
+ enum advice_type {
+ ADVICE_ADD_EMBEDDED_REPO,
+ ADVICE_AM_WORK_DIR,
+ ADVICE_CHECKOUT_AMBIGUOUS_REMOTE_BRANCH_NAME,
+ ADVICE_COMMIT_BEFORE_MERGE,
+ ADVICE_DETACHED_HEAD,
+ ADVICE_FETCH_SHOW_FORCED_UPDATES,
+ ADVICE_GRAFT_FILE_DEPRECATED,
+ ADVICE_IGNORED_HOOK,
+ ADVICE_IMPLICIT_IDENTITY,
+ ADVICE_NESTED_TAG,
+ ADVICE_OBJECT_NAME_WARNING,
+ ADVICE_PUSH_ALREADY_EXISTS,
+ ADVICE_PUSH_FETCH_FIRST,
+ ADVICE_PUSH_NEEDS_FORCE,
+ ADVICE_PUSH_NON_FF_CURRENT,
+ ADVICE_PUSH_NON_FF_MATCHING,
+ ADVICE_PUSH_UNQUALIFIED_REF_NAME,
+ ADVICE_PUSH_UPDATE_REJECTED_ALIAS,
+ ADVICE_PUSH_UPDATE_REJECTED,
+ ADVICE_RESET_QUIET_WARNING,
+ ADVICE_RESOLVE_CONFLICT,
+ ADVICE_RM_HINTS,
+ ADVICE_SEQUENCER_IN_USE,
+ ADVICE_SET_UPSTREAM_FAILURE,
+ ADVICE_STATUS_AHEAD_BEHIND_WARNING,
+ ADVICE_STATUS_HINTS,
+ ADVICE_STATUS_U_OPTION,
+ ADVICE_SUBMODULE_ALTERNATE_ERROR_STRATEGY_DIE,
+ ADVICE_WAITING_FOR_EDITOR,
+};
+
int git_default_advice_config(const char *var, const char *value);
__attribute__((format (printf, 1, 2)))
void advise(const char *advice, ...);
+
+/**
+ * Checks if advice type is enabled (can be printed to the user).
+ * Should be called before advise().
+ */
+int advice_enabled(enum advice_type type);
+
+/**
+ * Checks the visibility of the advice before printing.
+ */
+void advise_if_enabled(enum advice_type type, const char *advice, ...);
+
int error_resolve_conflict(const char *me);
void NORETURN die_resolve_conflict(const char *me);
void NORETURN die_conclude_merge(void);
diff --git a/builtin/clone.c b/builtin/clone.c
index d28b4d4..d8b1f41 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -420,6 +420,7 @@ static void copy_or_link_directory(struct strbuf *src, struct strbuf *dest,
struct dir_iterator *iter;
int iter_status;
unsigned int flags;
+ struct strbuf realpath = STRBUF_INIT;
mkdir_if_missing(dest->buf, 0777);
@@ -454,7 +455,8 @@ static void copy_or_link_directory(struct strbuf *src, struct strbuf *dest,
if (unlink(dest->buf) && errno != ENOENT)
die_errno(_("failed to unlink '%s'"), dest->buf);
if (!option_no_hardlinks) {
- if (!link(real_path(src->buf), dest->buf))
+ strbuf_realpath(&realpath, src->buf, 1);
+ if (!link(realpath.buf, dest->buf))
continue;
if (option_local > 0)
die_errno(_("failed to create link '%s'"), dest->buf);
@@ -468,6 +470,8 @@ static void copy_or_link_directory(struct strbuf *src, struct strbuf *dest,
strbuf_setlen(src, src_len);
die(_("failed to iterate over '%s'"), src->buf);
}
+
+ strbuf_release(&realpath);
}
static void clone_local(const char *src_repo, const char *dest_repo)
@@ -1105,7 +1109,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
}
}
- init_db(git_dir, real_git_dir, option_template, INIT_DB_QUIET);
+ init_db(git_dir, real_git_dir, option_template, GIT_HASH_UNKNOWN, INIT_DB_QUIET);
if (real_git_dir)
git_dir = real_git_dir;
diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c
index 4a70b33..d1ab662 100644
--- a/builtin/commit-graph.c
+++ b/builtin/commit-graph.c
@@ -39,14 +39,17 @@ static struct object_directory *find_odb(struct repository *r,
{
struct object_directory *odb;
char *obj_dir_real = real_pathdup(obj_dir, 1);
+ struct strbuf odb_path_real = STRBUF_INIT;
prepare_alt_odb(r);
for (odb = r->objects->odb; odb; odb = odb->next) {
- if (!strcmp(obj_dir_real, real_path(odb->path)))
+ strbuf_realpath(&odb_path_real, odb->path, 1);
+ if (!strcmp(obj_dir_real, odb_path_real.buf))
break;
}
free(obj_dir_real);
+ strbuf_release(&odb_path_real);
if (!odb)
die(_("could not find object directory matching %s"), obj_dir);
diff --git a/builtin/commit.c b/builtin/commit.c
index 7ba33a3..d3e7781 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -59,6 +59,9 @@ N_("The previous cherry-pick is now empty, possibly due to conflict resolution.\
" git commit --allow-empty\n"
"\n");
+static const char empty_rebase_pick_advice[] =
+N_("Otherwise, please use 'git rebase --skip'\n");
+
static const char empty_cherry_pick_advice_single[] =
N_("Otherwise, please use 'git cherry-pick --skip'\n");
@@ -122,7 +125,6 @@ static enum commit_msg_cleanup_mode cleanup_mode;
static const char *cleanup_arg;
static enum commit_whence whence;
-static int sequencer_in_use;
static int use_editor = 1, include_status = 1;
static int have_option_m;
static struct strbuf message = STRBUF_INIT;
@@ -179,12 +181,7 @@ static void determine_whence(struct wt_status *s)
{
if (file_exists(git_path_merge_head(the_repository)))
whence = FROM_MERGE;
- else if (file_exists(git_path_cherry_pick_head(the_repository))) {
- whence = FROM_CHERRY_PICK;
- if (file_exists(git_path_seq_dir()))
- sequencer_in_use = 1;
- }
- else
+ else if (!sequencer_determine_whence(the_repository, &whence))
whence = FROM_COMMIT;
if (s)
s->whence = whence;
@@ -477,8 +474,10 @@ static const char *prepare_index(int argc, const char **argv, const char *prefix
if (whence != FROM_COMMIT) {
if (whence == FROM_MERGE)
die(_("cannot do a partial commit during a merge."));
- else if (whence == FROM_CHERRY_PICK)
+ else if (is_from_cherry_pick(whence))
die(_("cannot do a partial commit during a cherry-pick."));
+ else if (is_from_rebase(whence))
+ die(_("cannot do a partial commit during a rebase."));
}
if (list_paths(&partial, !current_head ? NULL : "HEAD", &pathspec))
@@ -795,7 +794,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
*/
else if (whence == FROM_MERGE)
hook_arg1 = "merge";
- else if (whence == FROM_CHERRY_PICK) {
+ else if (is_from_cherry_pick(whence) || whence == FROM_REBASE_PICK) {
hook_arg1 = "commit";
hook_arg2 = "CHERRY_PICK_HEAD";
}
@@ -973,12 +972,15 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
run_status(stdout, index_file, prefix, 0, s);
if (amend)
fputs(_(empty_amend_advice), stderr);
- else if (whence == FROM_CHERRY_PICK) {
+ else if (is_from_cherry_pick(whence) ||
+ whence == FROM_REBASE_PICK) {
fputs(_(empty_cherry_pick_advice), stderr);
- if (!sequencer_in_use)
+ if (whence == FROM_CHERRY_PICK_SINGLE)
fputs(_(empty_cherry_pick_advice_single), stderr);
- else
+ else if (whence == FROM_CHERRY_PICK_MULTI)
fputs(_(empty_cherry_pick_advice_multi), stderr);
+ else
+ fputs(_(empty_rebase_pick_advice), stderr);
}
return 0;
}
@@ -1181,8 +1183,10 @@ static int parse_and_validate_options(int argc, const char *argv[],
if (amend && whence != FROM_COMMIT) {
if (whence == FROM_MERGE)
die(_("You are in the middle of a merge -- cannot amend."));
- else if (whence == FROM_CHERRY_PICK)
+ else if (is_from_cherry_pick(whence))
die(_("You are in the middle of a cherry-pick -- cannot amend."));
+ else if (whence == FROM_REBASE_PICK)
+ die(_("You are in the middle of a rebase -- cannot amend."));
}
if (fixup_message && squash_message)
die(_("Options --squash and --fixup cannot be used together"));
@@ -1204,7 +1208,8 @@ static int parse_and_validate_options(int argc, const char *argv[],
use_message = edit_message;
if (amend && !use_message && !fixup_message)
use_message = "HEAD";
- if (!use_message && whence != FROM_CHERRY_PICK && renew_authorship)
+ if (!use_message && !is_from_cherry_pick(whence) &&
+ !is_from_rebase(whence) && renew_authorship)
die(_("--reset-author can be used only with -C, -c or --amend."));
if (use_message) {
use_message_buffer = read_commit_message(use_message);
@@ -1213,7 +1218,8 @@ static int parse_and_validate_options(int argc, const char *argv[],
author_message_buffer = use_message_buffer;
}
}
- if (whence == FROM_CHERRY_PICK && !renew_authorship) {
+ if ((is_from_cherry_pick(whence) || whence == FROM_REBASE_PICK) &&
+ !renew_authorship) {
author_message = "CHERRY_PICK_HEAD";
author_message_buffer = read_commit_message(author_message);
}
@@ -1631,8 +1637,10 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
reduce_heads_replace(&parents);
} else {
if (!reflog_msg)
- reflog_msg = (whence == FROM_CHERRY_PICK)
+ reflog_msg = is_from_cherry_pick(whence)
? "commit (cherry-pick)"
+ : is_from_rebase(whence)
+ ? "commit (rebase)"
: "commit";
commit_list_insert(current_head, &parents);
}
@@ -1659,7 +1667,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
}
if (amend) {
- const char *exclude_gpgsig[2] = { "gpgsig", NULL };
+ const char *exclude_gpgsig[3] = { "gpgsig", "gpgsig-sha256", NULL };
extra = read_commit_extra_headers(current_head, exclude_gpgsig);
} else {
struct commit_extra_header **tail = &extra;
diff --git a/builtin/fmt-merge-msg.c b/builtin/fmt-merge-msg.c
index 736f666..172dfbd 100644
--- a/builtin/fmt-merge-msg.c
+++ b/builtin/fmt-merge-msg.c
@@ -494,6 +494,7 @@ static void fmt_merge_msg_sigs(struct strbuf *out)
enum object_type type;
unsigned long size, len;
char *buf = read_object_file(oid, &type, &size);
+ struct signature_check sigc = { 0 };
struct strbuf sig = STRBUF_INIT;
if (!buf || type != OBJ_TAG)
@@ -502,10 +503,12 @@ static void fmt_merge_msg_sigs(struct strbuf *out)
if (size == len)
; /* merely annotated */
- else if (verify_signed_buffer(buf, len, buf + len, size - len, &sig, NULL)) {
- if (!sig.len)
- strbuf_addstr(&sig, "gpg verification failed.\n");
- }
+ else if (check_signature(buf, len, buf + len, size - len, &sigc) &&
+ !sigc.gpg_output)
+ strbuf_addstr(&sig, "gpg verification failed.\n");
+ else
+ strbuf_addstr(&sig, sigc.gpg_output);
+ signature_check_clear(&sigc);
if (!tag_number++) {
fmt_tag_signature(&tagbuf, &sig, buf, len);
diff --git a/builtin/init-db.c b/builtin/init-db.c
index 944ec77..0b7222e 100644
--- a/builtin/init-db.c
+++ b/builtin/init-db.c
@@ -20,6 +20,8 @@
#define TEST_FILEMODE 1
#endif
+#define GIT_DEFAULT_HASH_ENVIRONMENT "GIT_DEFAULT_HASH"
+
static int init_is_bare_repository = 0;
static int init_shared_repository = -1;
static const char *init_db_template_dir;
@@ -176,13 +178,36 @@ static int needs_work_tree_config(const char *git_dir, const char *work_tree)
return 1;
}
+void initialize_repository_version(int hash_algo)
+{
+ char repo_version_string[10];
+ int repo_version = GIT_REPO_VERSION;
+
+#ifndef ENABLE_SHA256
+ if (hash_algo != GIT_HASH_SHA1)
+ die(_("The hash algorithm %s is not supported in this build."), hash_algos[hash_algo].name);
+#endif
+
+ if (hash_algo != GIT_HASH_SHA1)
+ repo_version = GIT_REPO_VERSION_READ;
+
+ /* This forces creation of new config file */
+ xsnprintf(repo_version_string, sizeof(repo_version_string),
+ "%d", repo_version);
+ git_config_set("core.repositoryformatversion", repo_version_string);
+
+ if (hash_algo != GIT_HASH_SHA1)
+ git_config_set("extensions.objectformat",
+ hash_algos[hash_algo].name);
+}
+
static int create_default_files(const char *template_path,
- const char *original_git_dir)
+ const char *original_git_dir,
+ const struct repository_format *fmt)
{
struct stat st1;
struct strbuf buf = STRBUF_INIT;
char *path;
- char repo_version_string[10];
char junk[2];
int reinit;
int filemode;
@@ -244,10 +269,7 @@ static int create_default_files(const char *template_path,
exit(1);
}
- /* This forces creation of new config file */
- xsnprintf(repo_version_string, sizeof(repo_version_string),
- "%d", GIT_REPO_VERSION);
- git_config_set("core.repositoryformatversion", repo_version_string);
+ initialize_repository_version(fmt->hash_algo);
/* Check filemode trustability */
path = git_path_buf(&buf, "config");
@@ -340,12 +362,33 @@ static void separate_git_dir(const char *git_dir, const char *git_link)
write_file(git_link, "gitdir: %s", git_dir);
}
+static void validate_hash_algorithm(struct repository_format *repo_fmt, int hash)
+{
+ const char *env = getenv(GIT_DEFAULT_HASH_ENVIRONMENT);
+ /*
+ * If we already have an initialized repo, don't allow the user to
+ * specify a different algorithm, as that could cause corruption.
+ * Otherwise, if the user has specified one on the command line, use it.
+ */
+ if (repo_fmt->version >= 0 && hash != GIT_HASH_UNKNOWN && hash != repo_fmt->hash_algo)
+ die(_("attempt to reinitialize repository with different hash"));
+ else if (hash != GIT_HASH_UNKNOWN)
+ repo_fmt->hash_algo = hash;
+ else if (env) {
+ int env_algo = hash_algo_by_name(env);
+ if (env_algo == GIT_HASH_UNKNOWN)
+ die(_("unknown hash algorithm '%s'"), env);
+ repo_fmt->hash_algo = env_algo;
+ }
+}
+
int init_db(const char *git_dir, const char *real_git_dir,
- const char *template_dir, unsigned int flags)
+ const char *template_dir, int hash, unsigned int flags)
{
int reinit;
int exist_ok = flags & INIT_DB_EXIST_OK;
char *original_git_dir = real_pathdup(git_dir, 1);
+ struct repository_format repo_fmt = REPOSITORY_FORMAT_INIT;
if (real_git_dir) {
struct stat st;
@@ -356,12 +399,12 @@ int init_db(const char *git_dir, const char *real_git_dir,
if (!exist_ok && !stat(real_git_dir, &st))
die(_("%s already exists"), real_git_dir);
- set_git_dir(real_path(real_git_dir));
+ set_git_dir(real_git_dir, 1);
git_dir = get_git_dir();
separate_git_dir(git_dir, original_git_dir);
}
else {
- set_git_dir(real_path(git_dir));
+ set_git_dir(git_dir, 1);
git_dir = get_git_dir();
}
startup_info->have_repository = 1;
@@ -378,9 +421,11 @@ int init_db(const char *git_dir, const char *real_git_dir,
* config file, so this will not fail. What we are catching
* is an attempt to reinitialize new repository with an old tool.
*/
- check_repository_format();
+ check_repository_format(&repo_fmt);
- reinit = create_default_files(template_dir, original_git_dir);
+ validate_hash_algorithm(&repo_fmt, hash);
+
+ reinit = create_default_files(template_dir, original_git_dir, &repo_fmt);
create_object_directory();
@@ -482,6 +527,8 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
const char *work_tree;
const char *template_dir = NULL;
unsigned int flags = 0;
+ const char *object_format = NULL;
+ int hash_algo = GIT_HASH_UNKNOWN;
const struct option init_db_options[] = {
OPT_STRING(0, "template", &template_dir, N_("template-directory"),
N_("directory from which templates will be used")),
@@ -494,6 +541,8 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
OPT_BIT('q', "quiet", &flags, N_("be quiet"), INIT_DB_QUIET),
OPT_STRING(0, "separate-git-dir", &real_git_dir, N_("gitdir"),
N_("separate git dir from working tree")),
+ OPT_STRING(0, "object-format", &object_format, N_("hash"),
+ N_("specify the hash algorithm to use")),
OPT_END()
};
@@ -546,6 +595,12 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
free(cwd);
}
+ if (object_format) {
+ hash_algo = hash_algo_by_name(object_format);
+ if (hash_algo == GIT_HASH_UNKNOWN)
+ die(_("unknown hash algorithm '%s'"), object_format);
+ }
+
if (init_shared_repository != -1)
set_shared_repository(init_shared_repository);
@@ -597,5 +652,5 @@ int cmd_init_db(int argc, const char **argv, const char *prefix)
UNLEAK(work_tree);
flags |= INIT_DB_EXIST_OK;
- return init_db(git_dir, real_git_dir, template_dir, flags);
+ return init_db(git_dir, real_git_dir, template_dir, hash_algo, flags);
}
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index 02aa6ee..4c2bb17 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -880,7 +880,7 @@ static void write_reused_pack_one(size_t pos, struct hashfile *out,
len = encode_in_pack_object_header(header, sizeof(header),
OBJ_REF_DELTA, size);
hashwrite(out, header, len);
- hashwrite(out, base_oid.hash, 20);
+ hashwrite(out, base_oid.hash, the_hash_algo->rawsz);
copy_pack_data(out, reuse_packfile, w_curs, cur, next - cur);
return;
}
diff --git a/builtin/rebase.c b/builtin/rebase.c
index 903267f..27a07d4 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1544,7 +1544,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
"ignoring them"),
REBASE_PRESERVE_MERGES, PARSE_OPT_HIDDEN),
OPT_RERERE_AUTOUPDATE(&options.allow_rerere_autoupdate),
- OPT_CALLBACK_F(0, "empty", &options, N_("{drop,keep,ask}"),
+ OPT_CALLBACK_F(0, "empty", &options, "{drop,keep,ask}",
N_("how to handle commits that become empty"),
PARSE_OPT_NONEG, parse_opt_empty),
{ OPTION_CALLBACK, 'k', "keep-empty", &options, NULL,
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
index 7a00da8..0605643 100644
--- a/builtin/rev-parse.c
+++ b/builtin/rev-parse.c
@@ -808,9 +808,10 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
continue;
}
if (!strcmp(arg, "--show-superproject-working-tree")) {
- const char *superproject = get_superproject_working_tree();
- if (superproject)
- puts(superproject);
+ struct strbuf superproject = STRBUF_INIT;
+ if (get_superproject_working_tree(&superproject))
+ puts(superproject.buf);
+ strbuf_release(&superproject);
continue;
}
if (!strcmp(arg, "--show-prefix")) {
@@ -857,7 +858,10 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix)
if (!gitdir && !prefix)
gitdir = ".git";
if (gitdir) {
- puts(real_path(gitdir));
+ struct strbuf realpath = STRBUF_INIT;
+ strbuf_realpath(&realpath, gitdir, 1);
+ puts(realpath.buf);
+ strbuf_release(&realpath);
continue;
}
}
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 86a608e..1a4b391 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -444,19 +444,19 @@ static void for_each_listed_submodule(const struct module_list *list,
fn(list->entries[i], cb_data);
}
-struct cb_foreach {
+struct foreach_cb {
int argc;
const char **argv;
const char *prefix;
int quiet;
int recursive;
};
-#define CB_FOREACH_INIT { 0 }
+#define FOREACH_CB_INIT { 0 }
static void runcommand_in_submodule_cb(const struct cache_entry *list_item,
void *cb_data)
{
- struct cb_foreach *info = cb_data;
+ struct foreach_cb *info = cb_data;
const char *path = list_item->name;
const struct object_id *ce_oid = &list_item->oid;
@@ -557,7 +557,7 @@ cleanup:
static int module_foreach(int argc, const char **argv, const char *prefix)
{
- struct cb_foreach info = CB_FOREACH_INIT;
+ struct foreach_cb info = FOREACH_CB_INIT;
struct pathspec pathspec;
struct module_list list = MODULE_LIST_INIT;
diff --git a/builtin/tag.c b/builtin/tag.c
index e0a4c25..cc30d34 100644
--- a/builtin/tag.c
+++ b/builtin/tag.c
@@ -231,8 +231,9 @@ static void create_tag(const struct object_id *object, const char *object_ref,
if (type <= OBJ_NONE)
die(_("bad object type."));
- if (type == OBJ_TAG && advice_nested_tag)
- advise(_(message_advice_nested_tag), tag, object_ref);
+ if (type == OBJ_TAG)
+ advise_if_enabled(ADVICE_NESTED_TAG, _(message_advice_nested_tag),
+ tag, object_ref);
strbuf_addf(&header,
"object %s\n"
diff --git a/builtin/worktree.c b/builtin/worktree.c
index 24f2280..d99db35 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -258,7 +258,7 @@ static int add_worktree(const char *path, const char *refname,
const struct add_opts *opts)
{
struct strbuf sb_git = STRBUF_INIT, sb_repo = STRBUF_INIT;
- struct strbuf sb = STRBUF_INIT;
+ struct strbuf sb = STRBUF_INIT, realpath = STRBUF_INIT;
const char *name;
struct child_process cp = CHILD_PROCESS_INIT;
struct argv_array child_env = ARGV_ARRAY_INIT;
@@ -330,9 +330,11 @@ static int add_worktree(const char *path, const char *refname,
strbuf_reset(&sb);
strbuf_addf(&sb, "%s/gitdir", sb_repo.buf);
- write_file(sb.buf, "%s", real_path(sb_git.buf));
+ strbuf_realpath(&realpath, sb_git.buf, 1);
+ write_file(sb.buf, "%s", realpath.buf);
+ strbuf_realpath(&realpath, get_git_common_dir(), 1);
write_file(sb_git.buf, "gitdir: %s/worktrees/%s",
- real_path(get_git_common_dir()), name);
+ realpath.buf, name);
/*
* This is to keep resolve_ref() happy. We need a valid HEAD
* or is_git_directory() will reject the directory. Any value which
@@ -418,6 +420,7 @@ done:
strbuf_release(&sb_repo);
strbuf_release(&sb_git);
strbuf_release(&sb_name);
+ strbuf_release(&realpath);
return ret;
}
diff --git a/cache.h b/cache.h
index 9b24e5d..c77b958 100644
--- a/cache.h
+++ b/cache.h
@@ -543,7 +543,7 @@ const char *get_git_common_dir(void);
char *get_object_directory(void);
char *get_index_file(void);
char *get_graft_file(struct repository *r);
-void set_git_dir(const char *path);
+void set_git_dir(const char *path, int make_realpath);
int get_common_dir_noenv(struct strbuf *sb, const char *gitdir);
int get_common_dir(struct strbuf *sb, const char *gitdir);
const char *get_git_namespace(void);
@@ -627,7 +627,9 @@ int path_inside_repo(const char *prefix, const char *path);
#define INIT_DB_EXIST_OK 0x0002
int init_db(const char *git_dir, const char *real_git_dir,
- const char *template_dir, unsigned int flags);
+ const char *template_dir, int hash_algo,
+ unsigned int flags);
+void initialize_repository_version(int hash_algo);
void sanitize_stdfds(void);
int daemonize(void);
@@ -1086,8 +1088,10 @@ int verify_repository_format(const struct repository_format *format,
* and die if it is a version we don't understand. Generally one would
* set_git_dir() before calling this, and use it only for "are we in a valid
* repo?".
+ *
+ * If successful and fmt is not NULL, fill fmt with data.
*/
-void check_repository_format(void);
+void check_repository_format(struct repository_format *fmt);
#define MTIME_CHANGED 0x0001
#define CTIME_CHANGED 0x0002
@@ -1314,8 +1318,6 @@ static inline int is_absolute_path(const char *path)
int is_directory(const char *);
char *strbuf_realpath(struct strbuf *resolved, const char *path,
int die_on_error);
-const char *real_path(const char *path);
-const char *real_path_if_valid(const char *path);
char *real_pathdup(const char *path, int die_on_error);
const char *absolute_path(const char *path);
char *absolute_pathdup(const char *path);
@@ -1481,6 +1483,9 @@ int set_disambiguate_hint_config(const char *var, const char *value);
int get_sha1_hex(const char *hex, unsigned char *sha1);
int get_oid_hex(const char *hex, struct object_id *sha1);
+/* Like get_oid_hex, but for an arbitrary hash algorithm. */
+int get_oid_hex_algop(const char *hex, struct object_id *oid, const struct git_hash_algo *algop);
+
/*
* Read `len` pairs of hexadecimal digits from `hex` and write the
* values to `binary` as `len` bytes. Return 0 on success, or -1 if
@@ -1516,6 +1521,20 @@ char *oid_to_hex(const struct object_id *oid); /* same static buffer */
*/
int parse_oid_hex(const char *hex, struct object_id *oid, const char **end);
+/* Like parse_oid_hex, but for an arbitrary hash algorithm. */
+int parse_oid_hex_algop(const char *hex, struct object_id *oid, const char **end,
+ const struct git_hash_algo *algo);
+
+
+/*
+ * These functions work like get_oid_hex and parse_oid_hex, but they will parse
+ * a hex value for any algorithm. The algorithm is detected based on the length
+ * and the algorithm in use is returned. If this is not a hex object ID in any
+ * algorithm, returns GIT_HASH_UNKNOWN.
+ */
+int get_oid_hex_any(const char *hex, struct object_id *oid);
+int parse_oid_hex_any(const char *hex, struct object_id *oid, const char **end);
+
/*
* This reads short-hand syntax that not only evaluates to a commit
* object name, but also can act as if the end user spelled the name
diff --git a/ci/lib.sh b/ci/lib.sh
index a90d0dc..c3a8cd2 100755
--- a/ci/lib.sh
+++ b/ci/lib.sh
@@ -162,6 +162,9 @@ linux-clang|linux-gcc)
if [ "$jobname" = linux-gcc ]
then
export CC=gcc-8
+ MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python3)"
+ else
+ MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
fi
export GIT_TEST_HTTPD=true
@@ -182,6 +185,9 @@ osx-clang|osx-gcc)
if [ "$jobname" = osx-gcc ]
then
export CC=gcc-9
+ MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python3)"
+ else
+ MAKEFLAGS="$MAKEFLAGS PYTHON_PATH=$(which python2)"
fi
# t9810 occasionally fails on Travis CI OS X
diff --git a/commit-slab.h b/commit-slab.h
index 69bf0c8..05b3f28 100644
--- a/commit-slab.h
+++ b/commit-slab.h
@@ -24,7 +24,12 @@
* - int *indegree_peek(struct indegree *, struct commit *);
*
* This function is similar to indegree_at(), but it will return NULL
- * until a call to indegree_at() was made for the commit.
+ * if the location to store the data associated with the given commit
+ * has not been allocated yet.
+ * Note that the location to store the data might have already been
+ * allocated even if no indegree_at() call has been made for that commit
+ * yet; in this case this function returns a pointer to a
+ * zero-initialized location.
*
* - void init_indegree(struct indegree *);
* void init_indegree_with_stride(struct indegree *, int);
diff --git a/commit.c b/commit.c
index a6cfa41..534e14f 100644
--- a/commit.c
+++ b/commit.c
@@ -961,14 +961,22 @@ cleanup_return:
return ret;
}
-static const char gpg_sig_header[] = "gpgsig";
-static const int gpg_sig_header_len = sizeof(gpg_sig_header) - 1;
+/*
+ * Indexed by hash algorithm identifier.
+ */
+static const char *gpg_sig_headers[] = {
+ NULL,
+ "gpgsig",
+ "gpgsig-sha256",
+};
static int do_sign_commit(struct strbuf *buf, const char *keyid)
{
struct strbuf sig = STRBUF_INIT;
int inspos, copypos;
const char *eoh;
+ const char *gpg_sig_header = gpg_sig_headers[hash_algo_by_ptr(the_hash_algo)];
+ int gpg_sig_header_len = strlen(gpg_sig_header);
/* find the end of the header */
eoh = strstr(buf->buf, "\n\n");
@@ -1010,6 +1018,8 @@ int parse_signed_commit(const struct commit *commit,
const char *buffer = get_commit_buffer(commit, &size);
int in_signature, saw_signature = -1;
const char *line, *tail;
+ const char *gpg_sig_header = gpg_sig_headers[hash_algo_by_ptr(the_hash_algo)];
+ int gpg_sig_header_len = strlen(gpg_sig_header);
line = buffer;
tail = buffer + size;
@@ -1056,11 +1066,17 @@ int remove_signature(struct strbuf *buf)
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 (starts_with(line, "gpgsig")) {
+ int i;
+ for (i = 1; i < GIT_HASH_NALGOS; i++) {
+ const char *p;
+ if (skip_prefix(line, gpg_sig_headers[i], &p) &&
+ *p == ' ') {
+ sig_start = line;
+ sig_end = next;
+ in_signature = 1;
+ }
+ }
} else {
if (*line == '\n')
/* dump the whole remainder of the buffer */
diff --git a/config.mak.dev b/config.mak.dev
index 89b218d..cd4a82a 100644
--- a/config.mak.dev
+++ b/config.mak.dev
@@ -16,6 +16,8 @@ DEVELOPER_CFLAGS += -Wstrict-prototypes
DEVELOPER_CFLAGS += -Wunused
DEVELOPER_CFLAGS += -Wvla
+DEVELOPER_CFLAGS += -DENABLE_SHA256
+
ifndef COMPILER_FEATURES
COMPILER_FEATURES := $(shell ./detect-compiler $(CC))
endif
diff --git a/connected.c b/connected.c
index 7e9bd1b..ac52b07 100644
--- a/connected.c
+++ b/connected.c
@@ -61,7 +61,11 @@ int check_connected(oid_iterate_fn fn, void *cb_data,
* object is a promisor object. Instead, just make sure we
* received, in a promisor packfile, the objects pointed to by
* each wanted ref.
+ *
+ * Before checking for promisor packs, be sure we have the
+ * latest pack-files loaded into memory.
*/
+ reprepare_packed_git(the_repository);
do {
struct packed_git *p;
diff --git a/csum-file.c b/csum-file.c
index 53ce37f..0f35fa5 100644
--- a/csum-file.c
+++ b/csum-file.c
@@ -157,7 +157,7 @@ void hashfile_checkpoint(struct hashfile *f, struct hashfile_checkpoint *checkpo
{
hashflush(f);
checkpoint->offset = f->total;
- checkpoint->ctx = f->ctx;
+ the_hash_algo->clone_fn(&checkpoint->ctx, &f->ctx);
}
int hashfile_truncate(struct hashfile *f, struct hashfile_checkpoint *checkpoint)
diff --git a/editor.c b/editor.c
index f079abb..91989ee 100644
--- a/editor.c
+++ b/editor.c
@@ -54,7 +54,8 @@ static int launch_specified_editor(const char *editor, const char *path,
return error("Terminal is dumb, but EDITOR unset");
if (strcmp(editor, ":")) {
- const char *args[] = { editor, real_path(path), NULL };
+ struct strbuf realpath = STRBUF_INIT;
+ const char *args[] = { editor, NULL, NULL };
struct child_process p = CHILD_PROCESS_INIT;
int ret, sig;
int print_waiting_for_editor = advice_waiting_for_editor && isatty(2);
@@ -75,16 +76,22 @@ static int launch_specified_editor(const char *editor, const char *path,
fflush(stderr);
}
+ strbuf_realpath(&realpath, path, 1);
+ args[1] = realpath.buf;
+
p.argv = args;
p.env = env;
p.use_shell = 1;
p.trace2_child_class = "editor";
- if (start_command(&p) < 0)
+ if (start_command(&p) < 0) {
+ strbuf_release(&realpath);
return error("unable to start editor '%s'", editor);
+ }
sigchain_push(SIGINT, SIG_IGN);
sigchain_push(SIGQUIT, SIG_IGN);
ret = finish_command(&p);
+ strbuf_release(&realpath);
sig = ret - 128;
sigchain_pop(SIGINT);
sigchain_pop(SIGQUIT);
diff --git a/environment.c b/environment.c
index e72a02d..10c9061 100644
--- a/environment.c
+++ b/environment.c
@@ -254,8 +254,11 @@ static int git_work_tree_initialized;
*/
void set_git_work_tree(const char *new_work_tree)
{
+ struct strbuf realpath = STRBUF_INIT;
+
if (git_work_tree_initialized) {
- new_work_tree = real_path(new_work_tree);
+ strbuf_realpath(&realpath, new_work_tree, 1);
+ new_work_tree = realpath.buf;
if (strcmp(new_work_tree, the_repository->worktree))
die("internal error: work tree has already been set\n"
"Current worktree: %s\nNew worktree: %s",
@@ -264,6 +267,8 @@ void set_git_work_tree(const char *new_work_tree)
}
git_work_tree_initialized = 1;
repo_set_worktree(the_repository, new_work_tree);
+
+ strbuf_release(&realpath);
}
const char *get_git_work_tree(void)
@@ -345,11 +350,20 @@ static void update_relative_gitdir(const char *name,
free(path);
}
-void set_git_dir(const char *path)
+void set_git_dir(const char *path, int make_realpath)
{
+ struct strbuf realpath = STRBUF_INIT;
+
+ if (make_realpath) {
+ strbuf_realpath(&realpath, path, 1);
+ path = realpath.buf;
+ }
+
set_git_dir_1(path);
if (!is_absolute_path(path))
chdir_notify_register(NULL, update_relative_gitdir, NULL);
+
+ strbuf_release(&realpath);
}
const char *get_log_output_encoding(void)
diff --git a/fast-import.c b/fast-import.c
index b8b65a8..202dda1 100644
--- a/fast-import.c
+++ b/fast-import.c
@@ -18,6 +18,7 @@
#include "object-store.h"
#include "mem-pool.h"
#include "commit-reach.h"
+#include "khash.h"
#define PACK_ID_BITS 16
#define MAX_PACK_ID ((1<<PACK_ID_BITS)-1)
@@ -53,6 +54,7 @@ struct object_entry_pool {
struct mark_set {
union {
+ struct object_id *oids[1024];
struct object_entry *marked[1024];
struct mark_set *sets[1024];
} data;
@@ -131,6 +133,9 @@ struct recent_command {
char *buf;
};
+typedef void (*mark_set_inserter_t)(struct mark_set *s, struct object_id *oid, uintmax_t mark);
+typedef void (*each_mark_fn_t)(uintmax_t mark, void *obj, void *cbp);
+
/* Configured limits on output */
static unsigned long max_depth = 50;
static off_t max_packsize;
@@ -222,6 +227,11 @@ static int allow_unsafe_features;
/* Signal handling */
static volatile sig_atomic_t checkpoint_requested;
+/* Submodule marks */
+static struct string_list sub_marks_from = STRING_LIST_INIT_DUP;
+static struct string_list sub_marks_to = STRING_LIST_INIT_DUP;
+static kh_oid_map_t *sub_oid_map;
+
/* Where to write output of cat-blob commands */
static int cat_blob_fd = STDOUT_FILENO;
@@ -230,6 +240,29 @@ static void parse_get_mark(const char *p);
static void parse_cat_blob(const char *p);
static void parse_ls(const char *p, struct branch *b);
+static void for_each_mark(struct mark_set *m, uintmax_t base, each_mark_fn_t callback, void *p)
+{
+ uintmax_t k;
+ if (m->shift) {
+ for (k = 0; k < 1024; k++) {
+ if (m->data.sets[k])
+ for_each_mark(m->data.sets[k], base + (k << m->shift), callback, p);
+ }
+ } else {
+ for (k = 0; k < 1024; k++) {
+ if (m->data.marked[k])
+ callback(base + k, m->data.marked[k], p);
+ }
+ }
+}
+
+static void dump_marks_fn(uintmax_t mark, void *object, void *cbp) {
+ struct object_entry *e = object;
+ FILE *f = cbp;
+
+ fprintf(f, ":%" PRIuMAX " %s\n", mark, oid_to_hex(&e->idx.oid));
+}
+
static void write_branch_report(FILE *rpt, struct branch *b)
{
fprintf(rpt, "%s:\n", b->name);
@@ -258,8 +291,6 @@ static void write_branch_report(FILE *rpt, struct branch *b)
fputc('\n', rpt);
}
-static void dump_marks_helper(FILE *, uintmax_t, struct mark_set *);
-
static void write_crash_report(const char *err)
{
char *loc = git_pathdup("fast_import_crash_%"PRIuMAX, (uintmax_t) getpid());
@@ -338,7 +369,7 @@ static void write_crash_report(const char *err)
if (export_marks_file)
fprintf(rpt, " exported to %s\n", export_marks_file);
else
- dump_marks_helper(rpt, 0, marks);
+ for_each_mark(marks, 0, dump_marks_fn, rpt);
fputc('\n', rpt);
fputs("-------------------\n", rpt);
@@ -493,9 +524,8 @@ static char *pool_strdup(const char *s)
return r;
}
-static void insert_mark(uintmax_t idnum, struct object_entry *oe)
+static void insert_mark(struct mark_set *s, uintmax_t idnum, struct object_entry *oe)
{
- struct mark_set *s = marks;
while ((idnum >> s->shift) >= 1024) {
s = mem_pool_calloc(&fi_mem_pool, 1, sizeof(struct mark_set));
s->shift = marks->shift + 10;
@@ -516,10 +546,9 @@ static void insert_mark(uintmax_t idnum, struct object_entry *oe)
s->data.marked[idnum] = oe;
}
-static struct object_entry *find_mark(uintmax_t idnum)
+static void *find_mark(struct mark_set *s, uintmax_t idnum)
{
uintmax_t orig_idnum = idnum;
- struct mark_set *s = marks;
struct object_entry *oe = NULL;
if ((idnum >> s->shift) < 1024) {
while (s && s->shift) {
@@ -919,7 +948,7 @@ static int store_object(
e = insert_object(&oid);
if (mark)
- insert_mark(mark, e);
+ insert_mark(marks, mark, e);
if (e->idx.offset) {
duplicate_count_by_type[type]++;
return 1;
@@ -1117,7 +1146,7 @@ static void stream_blob(uintmax_t len, struct object_id *oidout, uintmax_t mark)
e = insert_object(&oid);
if (mark)
- insert_mark(mark, e);
+ insert_mark(marks, mark, e);
if (e->idx.offset) {
duplicate_count_by_type[OBJ_BLOB]++;
@@ -1655,26 +1684,6 @@ static void dump_tags(void)
strbuf_release(&err);
}
-static void dump_marks_helper(FILE *f,
- uintmax_t base,
- struct mark_set *m)
-{
- uintmax_t k;
- if (m->shift) {
- for (k = 0; k < 1024; k++) {
- if (m->data.sets[k])
- dump_marks_helper(f, base + (k << m->shift),
- m->data.sets[k]);
- }
- } else {
- for (k = 0; k < 1024; k++) {
- if (m->data.marked[k])
- fprintf(f, ":%" PRIuMAX " %s\n", base + k,
- oid_to_hex(&m->data.marked[k]->idx.oid));
- }
- }
-}
-
static void dump_marks(void)
{
struct lock_file mark_lock = LOCK_INIT;
@@ -1704,7 +1713,7 @@ static void dump_marks(void)
return;
}
- dump_marks_helper(f, 0, marks);
+ for_each_mark(marks, 0, dump_marks_fn, f);
if (commit_lock_file(&mark_lock)) {
failure |= error_errno("Unable to write file %s",
export_marks_file);
@@ -1712,21 +1721,38 @@ static void dump_marks(void)
}
}
-static void read_marks(void)
+static void insert_object_entry(struct mark_set *s, struct object_id *oid, uintmax_t mark)
+{
+ struct object_entry *e;
+ e = find_object(oid);
+ if (!e) {
+ enum object_type type = oid_object_info(the_repository,
+ oid, NULL);
+ if (type < 0)
+ die("object not found: %s", oid_to_hex(oid));
+ e = insert_object(oid);
+ e->type = type;
+ e->pack_id = MAX_PACK_ID;
+ e->idx.offset = 1; /* just not zero! */
+ }
+ insert_mark(s, mark, e);
+}
+
+static void insert_oid_entry(struct mark_set *s, struct object_id *oid, uintmax_t mark)
+{
+ insert_mark(s, mark, xmemdupz(oid, sizeof(*oid)));
+}
+
+static void read_mark_file(struct mark_set *s, FILE *f, mark_set_inserter_t inserter)
{
char line[512];
- FILE *f = fopen(import_marks_file, "r");
- if (f)
- ;
- else if (import_marks_file_ignore_missing && errno == ENOENT)
- goto done; /* Marks file does not exist */
- else
- die_errno("cannot read '%s'", import_marks_file);
while (fgets(line, sizeof(line), f)) {
uintmax_t mark;
char *end;
struct object_id oid;
- struct object_entry *e;
+
+ /* Ensure SHA-1 objects are padded with zeros. */
+ memset(oid.hash, 0, sizeof(oid.hash));
end = strchr(line, '\n');
if (line[0] != ':' || !end)
@@ -1734,21 +1760,23 @@ static void read_marks(void)
*end = 0;
mark = strtoumax(line + 1, &end, 10);
if (!mark || end == line + 1
- || *end != ' ' || get_oid_hex(end + 1, &oid))
+ || *end != ' '
+ || get_oid_hex_any(end + 1, &oid) == GIT_HASH_UNKNOWN)
die("corrupt mark line: %s", line);
- e = find_object(&oid);
- if (!e) {
- enum object_type type = oid_object_info(the_repository,
- &oid, NULL);
- if (type < 0)
- die("object not found: %s", oid_to_hex(&oid));
- e = insert_object(&oid);
- e->type = type;
- e->pack_id = MAX_PACK_ID;
- e->idx.offset = 1; /* just not zero! */
- }
- insert_mark(mark, e);
+ inserter(s, &oid, mark);
}
+}
+
+static void read_marks(void)
+{
+ FILE *f = fopen(import_marks_file, "r");
+ if (f)
+ ;
+ else if (import_marks_file_ignore_missing && errno == ENOENT)
+ goto done; /* Marks file does not exist */
+ else
+ die_errno("cannot read '%s'", import_marks_file);
+ read_mark_file(marks, f, insert_object_entry);
fclose(f);
done:
import_marks_file_done = 1;
@@ -2134,6 +2162,30 @@ static uintmax_t change_note_fanout(struct tree_entry *root,
return do_change_note_fanout(root, root, hex_oid, 0, path, 0, fanout);
}
+static int parse_mapped_oid_hex(const char *hex, struct object_id *oid, const char **end)
+{
+ int algo;
+ khiter_t it;
+
+ /* Make SHA-1 object IDs have all-zero padding. */
+ memset(oid->hash, 0, sizeof(oid->hash));
+
+ algo = parse_oid_hex_any(hex, oid, end);
+ if (algo == GIT_HASH_UNKNOWN)
+ return -1;
+
+ it = kh_get_oid_map(sub_oid_map, *oid);
+ /* No such object? */
+ if (it == kh_end(sub_oid_map)) {
+ /* If we're using the same algorithm, pass it through. */
+ if (hash_algos[algo].format_id == the_hash_algo->format_id)
+ return 0;
+ return -1;
+ }
+ oidcpy(oid, kh_value(sub_oid_map, it));
+ return 0;
+}
+
/*
* Given a pointer into a string, parse a mark reference:
*
@@ -2214,13 +2266,13 @@ static void file_change_m(const char *p, struct branch *b)
}
if (*p == ':') {
- oe = find_mark(parse_mark_ref_space(&p));
+ oe = find_mark(marks, parse_mark_ref_space(&p));
oidcpy(&oid, &oe->idx.oid);
} else if (skip_prefix(p, "inline ", &p)) {
inline_data = 1;
oe = NULL; /* not used with inline_data, but makes gcc happy */
} else {
- if (parse_oid_hex(p, &oid, &p))
+ if (parse_mapped_oid_hex(p, &oid, &p))
die("Invalid dataref: %s", command_buf.buf);
oe = find_object(&oid);
if (*p++ != ' ')
@@ -2388,13 +2440,13 @@ static void note_change_n(const char *p, struct branch *b, unsigned char *old_fa
/* Now parse the notemodify command. */
/* <dataref> or 'inline' */
if (*p == ':') {
- oe = find_mark(parse_mark_ref_space(&p));
+ oe = find_mark(marks, parse_mark_ref_space(&p));
oidcpy(&oid, &oe->idx.oid);
} else if (skip_prefix(p, "inline ", &p)) {
inline_data = 1;
oe = NULL; /* not used with inline_data, but makes gcc happy */
} else {
- if (parse_oid_hex(p, &oid, &p))
+ if (parse_mapped_oid_hex(p, &oid, &p))
die("Invalid dataref: %s", command_buf.buf);
oe = find_object(&oid);
if (*p++ != ' ')
@@ -2409,7 +2461,7 @@ static void note_change_n(const char *p, struct branch *b, unsigned char *old_fa
oidcpy(&commit_oid, &s->oid);
} else if (*p == ':') {
uintmax_t commit_mark = parse_mark_ref_eol(p);
- struct object_entry *commit_oe = find_mark(commit_mark);
+ struct object_entry *commit_oe = find_mark(marks, commit_mark);
if (commit_oe->type != OBJ_COMMIT)
die("Mark :%" PRIuMAX " not a commit", commit_mark);
oidcpy(&commit_oid, &commit_oe->idx.oid);
@@ -2513,7 +2565,7 @@ static int parse_objectish(struct branch *b, const char *objectish)
oidcpy(&b->branch_tree.versions[1].oid, t);
} else if (*objectish == ':') {
uintmax_t idnum = parse_mark_ref_eol(objectish);
- struct object_entry *oe = find_mark(idnum);
+ struct object_entry *oe = find_mark(marks, idnum);
if (oe->type != OBJ_COMMIT)
die("Mark :%" PRIuMAX " not a commit", idnum);
if (!oideq(&b->oid, &oe->idx.oid)) {
@@ -2577,7 +2629,7 @@ static struct hash_list *parse_merge(unsigned int *count)
oidcpy(&n->oid, &s->oid);
else if (*from == ':') {
uintmax_t idnum = parse_mark_ref_eol(from);
- struct object_entry *oe = find_mark(idnum);
+ struct object_entry *oe = find_mark(marks, idnum);
if (oe->type != OBJ_COMMIT)
die("Mark :%" PRIuMAX " not a commit", idnum);
oidcpy(&n->oid, &oe->idx.oid);
@@ -2751,7 +2803,7 @@ static void parse_new_tag(const char *arg)
} else if (*from == ':') {
struct object_entry *oe;
from_mark = parse_mark_ref_eol(from);
- oe = find_mark(from_mark);
+ oe = find_mark(marks, from_mark);
type = oe->type;
oidcpy(&oid, &oe->idx.oid);
} else if (!get_oid(from, &oid)) {
@@ -2909,7 +2961,7 @@ static void parse_get_mark(const char *p)
if (*p != ':')
die("Not a mark: %s", p);
- oe = find_mark(parse_mark_ref_eol(p));
+ oe = find_mark(marks, parse_mark_ref_eol(p));
if (!oe)
die("Unknown mark: %s", command_buf.buf);
@@ -2924,12 +2976,12 @@ static void parse_cat_blob(const char *p)
/* cat-blob SP <object> LF */
if (*p == ':') {
- oe = find_mark(parse_mark_ref_eol(p));
+ oe = find_mark(marks, parse_mark_ref_eol(p));
if (!oe)
die("Unknown mark: %s", command_buf.buf);
oidcpy(&oid, &oe->idx.oid);
} else {
- if (parse_oid_hex(p, &oid, &p))
+ if (parse_mapped_oid_hex(p, &oid, &p))
die("Invalid dataref: %s", command_buf.buf);
if (*p)
die("Garbage after SHA1: %s", command_buf.buf);
@@ -2993,18 +3045,54 @@ static struct object_entry *dereference(struct object_entry *oe,
return find_object(oid);
}
+static void insert_mapped_mark(uintmax_t mark, void *object, void *cbp)
+{
+ struct object_id *fromoid = object;
+ struct object_id *tooid = find_mark(cbp, mark);
+ int ret;
+ khiter_t it;
+
+ it = kh_put_oid_map(sub_oid_map, *fromoid, &ret);
+ /* We've already seen this object. */
+ if (ret == 0)
+ return;
+ kh_value(sub_oid_map, it) = tooid;
+}
+
+static void build_mark_map_one(struct mark_set *from, struct mark_set *to)
+{
+ for_each_mark(from, 0, insert_mapped_mark, to);
+}
+
+static void build_mark_map(struct string_list *from, struct string_list *to)
+{
+ struct string_list_item *fromp, *top;
+
+ sub_oid_map = kh_init_oid_map();
+
+ for_each_string_list_item(fromp, from) {
+ top = string_list_lookup(to, fromp->string);
+ if (!fromp->util) {
+ die(_("Missing from marks for submodule '%s'"), fromp->string);
+ } else if (!top || !top->util) {
+ die(_("Missing to marks for submodule '%s'"), fromp->string);
+ }
+ build_mark_map_one(fromp->util, top->util);
+ }
+}
+
static struct object_entry *parse_treeish_dataref(const char **p)
{
struct object_id oid;
struct object_entry *e;
if (**p == ':') { /* <mark> */
- e = find_mark(parse_mark_ref_space(p));
+ e = find_mark(marks, parse_mark_ref_space(p));
if (!e)
die("Unknown mark: %s", command_buf.buf);
oidcpy(&oid, &e->idx.oid);
} else { /* <sha1> */
- if (parse_oid_hex(*p, &oid, p))
+ if (parse_mapped_oid_hex(*p, &oid, p))
die("Invalid dataref: %s", command_buf.buf);
e = find_object(&oid);
if (*(*p)++ != ' ')
@@ -3130,7 +3218,7 @@ static void parse_alias(void)
die(_("Expected 'to' command, got %s"), command_buf.buf);
e = find_object(&b.oid);
assert(e);
- insert_mark(next_mark, e);
+ insert_mark(marks, next_mark, e);
}
static char* make_fast_import_path(const char *path)
@@ -3210,6 +3298,26 @@ static void option_export_pack_edges(const char *edges)
pack_edges = xfopen(edges, "a");
}
+static void option_rewrite_submodules(const char *arg, struct string_list *list)
+{
+ struct mark_set *ms;
+ FILE *fp;
+ char *s = xstrdup(arg);
+ char *f = strchr(s, ':');
+ if (!f)
+ die(_("Expected format name:filename for submodule rewrite option"));
+ *f = '\0';
+ f++;
+ ms = xcalloc(1, sizeof(*ms));
+ string_list_insert(list, s)->util = ms;
+
+ fp = fopen(f, "r");
+ if (!fp)
+ die_errno("cannot read '%s'", f);
+ read_mark_file(ms, fp, insert_oid_entry);
+ fclose(fp);
+}
+
static int parse_one_option(const char *option)
{
if (skip_prefix(option, "max-pack-size=", &option)) {
@@ -3272,6 +3380,11 @@ static int parse_one_feature(const char *feature, int from_stream)
option_export_marks(arg);
} else if (!strcmp(feature, "alias")) {
; /* Don't die - this feature is supported */
+ } else if (skip_prefix(feature, "rewrite-submodules-to=", &arg)) {
+ option_rewrite_submodules(arg, &sub_marks_to);
+ } else if (skip_prefix(feature, "rewrite-submodules-from=", &arg)) {
+ option_rewrite_submodules(arg, &sub_marks_from);
+ } else if (skip_prefix(feature, "rewrite-submodules-from=", &arg)) {
} else if (!strcmp(feature, "get-mark")) {
; /* Don't die - this feature is supported */
} else if (!strcmp(feature, "cat-blob")) {
@@ -3377,6 +3490,7 @@ static void parse_argv(void)
seen_data_command = 1;
if (import_marks_file)
read_marks();
+ build_mark_map(&sub_marks_from, &sub_marks_to);
}
int cmd_main(int argc, const char **argv)
diff --git a/git-gui/git-gui--askpass b/git-gui/git-gui--askpass
index 4277f30..1c99ee8 100755
--- a/git-gui/git-gui--askpass
+++ b/git-gui/git-gui--askpass
@@ -56,6 +56,11 @@ proc finish {} {
}
}
+ # On Windows, force the encoding to UTF-8: it is what `git.exe` expects
+ if {$::tcl_platform(platform) eq {windows}} {
+ set ::answer [encoding convertto utf-8 $::answer]
+ }
+
puts $::answer
set ::rc 0
}
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index f41ed2e..4610e4c 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -30,8 +30,8 @@ along with this program; if not, see <http://www.gnu.org/licenses/>.}]
##
## Tcl/Tk sanity check
-if {[catch {package require Tcl 8.6} err]
- || [catch {package require Tk 8.6} err]
+if {[catch {package require Tcl 8.5} err]
+ || [catch {package require Tk 8.5} err]
} {
catch {wm withdraw .}
tk_messageBox \
@@ -2205,11 +2205,13 @@ proc do_gitk {revs {is_submodule false}} {
set env(GIT_WORK_TREE) $_gitworktree
cd $pwd
- set status_operation [$::main_status \
- start \
- [mc "Starting %s... please wait..." "gitk"]]
+ if {[info exists main_status]} {
+ set status_operation [$::main_status \
+ start \
+ [mc "Starting %s... please wait..." "gitk"]]
- after 3500 [list $status_operation stop]
+ after 3500 [list $status_operation stop]
+ }
}
}
diff --git a/git-gui/lib/chord.tcl b/git-gui/lib/chord.tcl
index 275a6cd..e21e7d3 100644
--- a/git-gui/lib/chord.tcl
+++ b/git-gui/lib/chord.tcl
@@ -27,7 +27,7 @@
# # Turn off the UI while running a couple of async operations.
# lock_ui
#
-# set chord [SimpleChord new {
+# set chord [SimpleChord::new {
# unlock_ui
# # Note: $notice here is not referenced in the calling scope
# if {$notice} { info_popup $notice }
@@ -37,9 +37,9 @@
# # all operations have been initiated.
# set common_note [$chord add_note]
#
-# # Pass notes as 'after' callbacks to other operations
-# async_operation $args [$chord add_note]
-# other_async_operation $args [$chord add_note]
+# # Activate notes in 'after' callbacks to other operations
+# set newnote [$chord add_note]
+# async_operation $args [list $newnote activate]
#
# # Communicate with the chord body
# if {$condition} {
@@ -48,7 +48,7 @@
# }
#
# # Activate the common note, making the chord eligible to complete
-# $common_note
+# $common_note activate
#
# At this point, the chord will complete at some unknown point in the future.
# The common note might have been the first note activated, or the async
@@ -60,18 +60,23 @@
# Represents a procedure that conceptually has multiple entrypoints that must
# all be called before the procedure executes. Each entrypoint is called a
# "note". The chord is only "completed" when all the notes are "activated".
-oo::class create SimpleChord {
- variable notes body is_completed
+class SimpleChord {
+ field notes
+ field body
+ field is_completed
+ field eval_ns
# Constructor:
- # set chord [SimpleChord new {body}]
+ # set chord [SimpleChord::new {body}]
# Creates a new chord object with the specified body script. The
# body script is evaluated at most once, when a note is activated
# and the chord has no other non-activated notes.
- constructor {body} {
+ constructor new {i_body} {
set notes [list]
- my eval [list set body $body]
+ set body $i_body
set is_completed 0
+ set eval_ns "[namespace qualifiers $this]::eval"
+ return $this
}
# Method:
@@ -80,7 +85,7 @@ oo::class create SimpleChord {
# the chord body will be evaluated. This can be used to set variable
# values for the chord body to use.
method eval {script} {
- namespace eval [self] $script
+ namespace eval $eval_ns $script
}
# Method:
@@ -92,7 +97,7 @@ oo::class create SimpleChord {
method add_note {} {
if {$is_completed} { error "Cannot add a note to a completed chord" }
- set note [ChordNote new [self]]
+ set note [ChordNote::new $this]
lappend notes $note
@@ -108,8 +113,8 @@ oo::class create SimpleChord {
set is_completed 1
- namespace eval [self] $body
- namespace delete [self]
+ namespace eval $eval_ns $body
+ delete_this
}
}
}
@@ -119,15 +124,17 @@ oo::class create SimpleChord {
# final note of the chord is activated (this can be any note in the chord,
# with all other notes already previously activated in any order), the chord's
# body is evaluated.
-oo::class create ChordNote {
- variable chord is_activated
+class ChordNote {
+ field chord
+ field is_activated
# Constructor:
# Instances of ChordNote are created internally by calling add_note on
# SimpleChord objects.
- constructor {chord} {
- my eval set chord $chord
+ constructor new {c} {
+ set chord $c
set is_activated 0
+ return $this
}
# Method:
@@ -138,20 +145,11 @@ oo::class create ChordNote {
}
# Method:
- # $note
+ # $note activate
# Activates the note, if it has not already been activated, and
# completes the chord if there are no other notes awaiting
# activation. Subsequent calls will have no further effect.
- #
- # NB: In TclOO, if an object is invoked like a method without supplying
- # any method name, then this internal method `unknown` is what
- # actually runs (with no parameters). It is used in the ChordNote
- # class for the purpose of allowing the note object to be called as
- # a function (see example above). (The `unknown` method can also be
- # used to support dynamic dispatch, but must take parameters to
- # identify the "unknown" method to be invoked. In this form, this
- # proc serves only to make instances behave directly like methods.)
- method unknown {} {
+ method activate {} {
if {!$is_activated} {
set is_activated 1
$chord notify_note_activation
diff --git a/git-gui/lib/index.tcl b/git-gui/lib/index.tcl
index 1254145..1fc5b42 100644
--- a/git-gui/lib/index.tcl
+++ b/git-gui/lib/index.tcl
@@ -436,7 +436,7 @@ proc revert_helper {txt paths} {
#
# The asynchronous operations are each indicated below by a comment
# before the code block that starts the async operation.
- set after_chord [SimpleChord new {
+ set after_chord [SimpleChord::new {
if {[string trim $err] != ""} {
rescan_on_error $err
} else {
@@ -522,10 +522,11 @@ proc revert_helper {txt paths} {
]
if {$reply == 1} {
+ set note [$after_chord add_note]
checkout_index \
$txt \
$path_list \
- [$after_chord add_note] \
+ [list $note activate] \
$capture_error
}
}
@@ -567,14 +568,15 @@ proc revert_helper {txt paths} {
if {$reply == 1} {
$after_chord eval { set should_reshow_diff 1 }
- delete_files $untracked_list [$after_chord add_note]
+ set note [$after_chord add_note]
+ delete_files $untracked_list [list $note activate]
}
}
# Activate the common note. If no other notes were created, this
# completes the chord. If other notes were created, then this common
# note prevents a race condition where the chord might complete early.
- $after_common_note
+ $after_common_note activate
}
# Delete all of the specified files, performing deletion in batches to allow the
diff --git a/git-gui/lib/merge.tcl b/git-gui/lib/merge.tcl
index 8df8ffa..664803c 100644
--- a/git-gui/lib/merge.tcl
+++ b/git-gui/lib/merge.tcl
@@ -244,7 +244,7 @@ Continue with resetting the current changes?"]
set status_bar_operation [$::main_status \
start \
[mc "Aborting"] \
- [mc "files reset"]
+ [mc "files reset"]]
fileevent $fd readable [namespace code [list \
_reset_wait $fd $status_bar_operation]]
} else {
diff --git a/git-gui/po/de.po b/git-gui/po/de.po
index baebff2..a8d5f61 100644
--- a/git-gui/po/de.po
+++ b/git-gui/po/de.po
@@ -7,41 +7,42 @@ msgid ""
msgstr ""
"Project-Id-Version: git-gui\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-26 22:22+0100\n"
-"PO-Revision-Date: 2010-01-26 22:25+0100\n"
-"Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
+"POT-Creation-Date: 2020-02-08 22:54+0100\n"
+"PO-Revision-Date: 2020-02-09 22:40+0100\n"
+"Last-Translator: Christian Stimming <christian@cstimming.de>\n"
"Language-Team: German\n"
+"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: git-gui.sh:41 git-gui.sh:793 git-gui.sh:807 git-gui.sh:820 git-gui.sh:903
-#: git-gui.sh:922
-msgid "git-gui: fatal error"
-msgstr "git-gui: Programmfehler"
-
-#: git-gui.sh:743
+#: git-gui.sh:847
#, tcl-format
msgid "Invalid font specified in %s:"
msgstr "Ungültige Zeichensatz-Angabe in %s:"
-#: git-gui.sh:779
+#: git-gui.sh:901
msgid "Main Font"
msgstr "Programmschriftart"
-#: git-gui.sh:780
+#: git-gui.sh:902
msgid "Diff/Console Font"
msgstr "Vergleich-Schriftart"
-#: git-gui.sh:794
+#: git-gui.sh:917 git-gui.sh:931 git-gui.sh:944 git-gui.sh:1034 git-gui.sh:1053
+#: git-gui.sh:3212
+msgid "git-gui: fatal error"
+msgstr "git-gui: Programmfehler"
+
+#: git-gui.sh:918
msgid "Cannot find git in PATH."
msgstr "Git kann im PATH nicht gefunden werden."
-#: git-gui.sh:821
+#: git-gui.sh:945
msgid "Cannot parse Git version string:"
msgstr "Git Versionsangabe kann nicht erkannt werden:"
-#: git-gui.sh:839
+#: git-gui.sh:970
#, tcl-format
msgid ""
"Git version cannot be determined.\n"
@@ -60,479 +61,524 @@ msgstr ""
"\n"
"Soll angenommen werden, »%s« sei Version 1.5.0?\n"
-#: git-gui.sh:1128
+#: git-gui.sh:1267
msgid "Git directory not found:"
msgstr "Git-Verzeichnis nicht gefunden:"
-#: git-gui.sh:1146
+#: git-gui.sh:1301
msgid "Cannot move to top of working directory:"
msgstr ""
"Es konnte nicht in das oberste Verzeichnis der Arbeitskopie gewechselt "
"werden:"
-#: git-gui.sh:1154
+#: git-gui.sh:1309
msgid "Cannot use bare repository:"
-msgstr "Bloßes Projektarchiv kann nicht benutzt werden:"
+msgstr "Bloßes Repository kann nicht benutzt werden:"
-#: git-gui.sh:1162
+#: git-gui.sh:1317
msgid "No working directory"
msgstr "Kein Arbeitsverzeichnis"
-#: git-gui.sh:1334 lib/checkout_op.tcl:306
+#: git-gui.sh:1491 lib/checkout_op.tcl:306
msgid "Refreshing file status..."
msgstr "Dateistatus aktualisieren..."
-#: git-gui.sh:1390
+#: git-gui.sh:1551
msgid "Scanning for modified files ..."
msgstr "Nach geänderten Dateien suchen..."
-#: git-gui.sh:1454
+#: git-gui.sh:1629
msgid "Calling prepare-commit-msg hook..."
-msgstr "Aufrufen der Eintragen-Vorbereiten-Kontrolle (»prepare-commit hook«)..."
+msgstr "Aufrufen des »prepare-commit-msg hook«..."
-#: git-gui.sh:1471
+#: git-gui.sh:1646
msgid "Commit declined by prepare-commit-msg hook."
-msgstr ""
-"Eintragen abgelehnt durch Eintragen-Vorbereiten-Kontrolle (»prepare-commit "
-"hook«)."
+msgstr "Commit abgelehnt durch »prepare-commit-msg hook«."
-#: git-gui.sh:1629 lib/browser.tcl:246
+#: git-gui.sh:1804 lib/browser.tcl:252
msgid "Ready."
msgstr "Bereit."
-#: git-gui.sh:1787
+#: git-gui.sh:1968
#, tcl-format
-msgid "Displaying only %s of %s files."
-msgstr "Nur %s von %s Dateien werden angezeigt."
+msgid ""
+"Display limit (gui.maxfilesdisplayed = %s) reached, not showing all %s files."
+msgstr ""
+"Anzeigelimit erreicht (gui.maxfilesdisplayed = %s) für Anzahl Einträge. Es "
+"werden nicht alle %s Dateien gezeigt."
-#: git-gui.sh:1913
+#: git-gui.sh:2091
msgid "Unmodified"
msgstr "Unverändert"
-#: git-gui.sh:1915
+#: git-gui.sh:2093
msgid "Modified, not staged"
msgstr "Verändert, nicht bereitgestellt"
-#: git-gui.sh:1916 git-gui.sh:1924
+#: git-gui.sh:2094 git-gui.sh:2106
msgid "Staged for commit"
-msgstr "Bereitgestellt zum Eintragen"
+msgstr "Bereitgestellt zum Committen"
-#: git-gui.sh:1917 git-gui.sh:1925
+#: git-gui.sh:2095 git-gui.sh:2107
msgid "Portions staged for commit"
-msgstr "Teilweise bereitgestellt zum Eintragen"
+msgstr "Teilweise bereitgestellt zum Committen"
-#: git-gui.sh:1918 git-gui.sh:1926
+#: git-gui.sh:2096 git-gui.sh:2108
msgid "Staged for commit, missing"
-msgstr "Bereitgestellt zum Eintragen, fehlend"
+msgstr "Bereitgestellt zum Committen, fehlend"
-#: git-gui.sh:1920
+#: git-gui.sh:2098
msgid "File type changed, not staged"
msgstr "Dateityp geändert, nicht bereitgestellt"
-#: git-gui.sh:1921
+#: git-gui.sh:2099 git-gui.sh:2100
+msgid "File type changed, old type staged for commit"
+msgstr "Dateityp geändert, alter Dateityp bereitgestellt"
+
+#: git-gui.sh:2101
msgid "File type changed, staged"
msgstr "Dateityp geändert, bereitgestellt"
-#: git-gui.sh:1923
+#: git-gui.sh:2102
+msgid "File type change staged, modification not staged"
+msgstr "Dateityp-Änderung bereitgestellt, Inhaltsänderung nicht bereitgestellt"
+
+#: git-gui.sh:2103
+msgid "File type change staged, file missing"
+msgstr "Dateityp-Änderung bereitgestellt, Datei gelöscht"
+
+#: git-gui.sh:2105
msgid "Untracked, not staged"
-msgstr "Nicht unter Versionskontrolle, nicht bereitgestellt"
+msgstr "Unversioniert, nicht bereitgestellt"
-#: git-gui.sh:1928
+#: git-gui.sh:2110
msgid "Missing"
msgstr "Fehlend"
-#: git-gui.sh:1929
+#: git-gui.sh:2111
msgid "Staged for removal"
msgstr "Bereitgestellt zum Löschen"
-#: git-gui.sh:1930
+#: git-gui.sh:2112
msgid "Staged for removal, still present"
msgstr "Bereitgestellt zum Löschen, trotzdem vorhanden"
-#: git-gui.sh:1932 git-gui.sh:1933 git-gui.sh:1934 git-gui.sh:1935
-#: git-gui.sh:1936 git-gui.sh:1937
+#: git-gui.sh:2114 git-gui.sh:2115 git-gui.sh:2116 git-gui.sh:2117
+#: git-gui.sh:2118 git-gui.sh:2119
msgid "Requires merge resolution"
msgstr "Konfliktauflösung nötig"
-#: git-gui.sh:1972
-msgid "Starting gitk... please wait..."
-msgstr "Gitk wird gestartet... bitte warten."
-
-#: git-gui.sh:1984
+#: git-gui.sh:2164
msgid "Couldn't find gitk in PATH"
msgstr "Gitk kann im PATH nicht gefunden werden."
-#: git-gui.sh:2043
+#: git-gui.sh:2210 git-gui.sh:2245
+#, tcl-format
+msgid "Starting %s... please wait..."
+msgstr "%s wird gestartet... bitte warten."
+
+#: git-gui.sh:2224
msgid "Couldn't find git gui in PATH"
msgstr "»Git gui« kann im PATH nicht gefunden werden."
-#: git-gui.sh:2455 lib/choose_repository.tcl:36
+#: git-gui.sh:2726 lib/choose_repository.tcl:53
msgid "Repository"
-msgstr "Projektarchiv"
+msgstr "Repository"
-#: git-gui.sh:2456
+#: git-gui.sh:2727
msgid "Edit"
msgstr "Bearbeiten"
-#: git-gui.sh:2458 lib/choose_rev.tcl:561
+#: git-gui.sh:2729 lib/choose_rev.tcl:567
msgid "Branch"
-msgstr "Zweig"
+msgstr "Branch"
-#: git-gui.sh:2461 lib/choose_rev.tcl:548
+#: git-gui.sh:2732 lib/choose_rev.tcl:554
msgid "Commit@@noun"
-msgstr "Version"
+msgstr "Commit"
-#: git-gui.sh:2464 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
+#: git-gui.sh:2735 lib/merge.tcl:127 lib/merge.tcl:174
msgid "Merge"
msgstr "Zusammenführen"
-#: git-gui.sh:2465 lib/choose_rev.tcl:557
+#: git-gui.sh:2736 lib/choose_rev.tcl:563
msgid "Remote"
-msgstr "Externe Archive"
+msgstr "Extern"
-#: git-gui.sh:2468
+#: git-gui.sh:2739
msgid "Tools"
msgstr "Werkzeuge"
-#: git-gui.sh:2477
+#: git-gui.sh:2748
msgid "Explore Working Copy"
-msgstr "Arbeitskopie im Dateimanager"
+msgstr "Arbeitskopie im Dateimanager öffnen"
+
+#: git-gui.sh:2763
+msgid "Git Bash"
+msgstr "Git Bash"
-#: git-gui.sh:2483
+#: git-gui.sh:2772
msgid "Browse Current Branch's Files"
-msgstr "Aktuellen Zweig durchblättern"
+msgstr "Aktuellen Branch durchblättern"
-#: git-gui.sh:2487
+#: git-gui.sh:2776
msgid "Browse Branch Files..."
-msgstr "Einen Zweig durchblättern..."
+msgstr "Branch durchblättern..."
-#: git-gui.sh:2492
+#: git-gui.sh:2781
msgid "Visualize Current Branch's History"
-msgstr "Aktuellen Zweig darstellen"
+msgstr "Aktuellen Branch darstellen"
-#: git-gui.sh:2496
+#: git-gui.sh:2785
msgid "Visualize All Branch History"
-msgstr "Alle Zweige darstellen"
+msgstr "Historie aller Branches darstellen"
-#: git-gui.sh:2503
+#: git-gui.sh:2792
#, tcl-format
msgid "Browse %s's Files"
-msgstr "Zweig »%s« durchblättern"
+msgstr "Branch »%s« durchblättern"
-#: git-gui.sh:2505
+#: git-gui.sh:2794
#, tcl-format
msgid "Visualize %s's History"
msgstr "Historie von »%s« darstellen"
-#: git-gui.sh:2510 lib/database.tcl:27 lib/database.tcl:67
+#: git-gui.sh:2799 lib/database.tcl:40
msgid "Database Statistics"
msgstr "Datenbankstatistik"
-#: git-gui.sh:2513 lib/database.tcl:34
+#: git-gui.sh:2802 lib/database.tcl:33
msgid "Compress Database"
msgstr "Datenbank komprimieren"
-#: git-gui.sh:2516
+#: git-gui.sh:2805
msgid "Verify Database"
msgstr "Datenbank überprüfen"
-#: git-gui.sh:2523 git-gui.sh:2527 git-gui.sh:2531 lib/shortcut.tcl:8
-#: lib/shortcut.tcl:40 lib/shortcut.tcl:72
+#: git-gui.sh:2812 git-gui.sh:2816 git-gui.sh:2820
msgid "Create Desktop Icon"
msgstr "Desktop-Icon erstellen"
-#: git-gui.sh:2539 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
+#: git-gui.sh:2828 lib/choose_repository.tcl:209 lib/choose_repository.tcl:217
msgid "Quit"
msgstr "Beenden"
-#: git-gui.sh:2547
+#: git-gui.sh:2836
msgid "Undo"
msgstr "Rückgängig"
-#: git-gui.sh:2550
+#: git-gui.sh:2839
msgid "Redo"
msgstr "Wiederholen"
-#: git-gui.sh:2554 git-gui.sh:3109
+#: git-gui.sh:2843 git-gui.sh:3461
msgid "Cut"
msgstr "Ausschneiden"
-#: git-gui.sh:2557 git-gui.sh:3112 git-gui.sh:3186 git-gui.sh:3259
+#: git-gui.sh:2846 git-gui.sh:3464 git-gui.sh:3540 git-gui.sh:3633
#: lib/console.tcl:69
msgid "Copy"
msgstr "Kopieren"
-#: git-gui.sh:2560 git-gui.sh:3115
+#: git-gui.sh:2849 git-gui.sh:3467
msgid "Paste"
msgstr "Einfügen"
-#: git-gui.sh:2563 git-gui.sh:3118 lib/branch_delete.tcl:26
-#: lib/remote_branch_delete.tcl:38
+#: git-gui.sh:2852 git-gui.sh:3470 lib/remote_branch_delete.tcl:39
+#: lib/branch_delete.tcl:28
msgid "Delete"
msgstr "Löschen"
-#: git-gui.sh:2567 git-gui.sh:3122 git-gui.sh:3263 lib/console.tcl:71
+#: git-gui.sh:2856 git-gui.sh:3474 git-gui.sh:3637 lib/console.tcl:71
msgid "Select All"
msgstr "Alle auswählen"
-#: git-gui.sh:2576
+#: git-gui.sh:2865
msgid "Create..."
msgstr "Erstellen..."
-#: git-gui.sh:2582
+#: git-gui.sh:2871
msgid "Checkout..."
-msgstr "Umstellen..."
+msgstr "Auschecken..."
-#: git-gui.sh:2588
+#: git-gui.sh:2877
msgid "Rename..."
msgstr "Umbenennen..."
-#: git-gui.sh:2593
+#: git-gui.sh:2882
msgid "Delete..."
msgstr "Löschen..."
-#: git-gui.sh:2598
+#: git-gui.sh:2887
msgid "Reset..."
-msgstr "Zurücksetzen..."
+msgstr "Änderungen verwerfen..."
-#: git-gui.sh:2608
+#: git-gui.sh:2897
msgid "Done"
msgstr "Fertig"
-#: git-gui.sh:2610
+#: git-gui.sh:2899
msgid "Commit@@verb"
-msgstr "Eintragen"
+msgstr "Committen"
-#: git-gui.sh:2619 git-gui.sh:3050
-msgid "New Commit"
-msgstr "Neue Version"
-
-#: git-gui.sh:2627 git-gui.sh:3057
+#: git-gui.sh:2908 git-gui.sh:3400
msgid "Amend Last Commit"
-msgstr "Letzte nachbessern"
+msgstr "Letzten Commit nachbessern"
-#: git-gui.sh:2637 git-gui.sh:3011 lib/remote_branch_delete.tcl:99
+#: git-gui.sh:2918 git-gui.sh:3361 lib/remote_branch_delete.tcl:101
msgid "Rescan"
msgstr "Neu laden"
-#: git-gui.sh:2643
+#: git-gui.sh:2924
msgid "Stage To Commit"
-msgstr "Zum Eintragen bereitstellen"
+msgstr "Für Commit bereitstellen"
-#: git-gui.sh:2649
+#: git-gui.sh:2930
msgid "Stage Changed Files To Commit"
-msgstr "Geänderte Dateien bereitstellen"
+msgstr "Geänderte Dateien für Commit bereitstellen"
-#: git-gui.sh:2655
+#: git-gui.sh:2936
msgid "Unstage From Commit"
-msgstr "Aus der Bereitstellung herausnehmen"
+msgstr "Aus Commit-Bereitstellung herausnehmen"
-#: git-gui.sh:2661 lib/index.tcl:412
+#: git-gui.sh:2942 lib/index.tcl:521
msgid "Revert Changes"
msgstr "Änderungen verwerfen"
-#: git-gui.sh:2669 git-gui.sh:3310 git-gui.sh:3341
+#: git-gui.sh:2950 git-gui.sh:3700 git-gui.sh:3731
msgid "Show Less Context"
msgstr "Weniger Zeilen anzeigen"
-#: git-gui.sh:2673 git-gui.sh:3314 git-gui.sh:3345
+#: git-gui.sh:2954 git-gui.sh:3704 git-gui.sh:3735
msgid "Show More Context"
msgstr "Mehr Zeilen anzeigen"
-#: git-gui.sh:2680 git-gui.sh:3024 git-gui.sh:3133
+#: git-gui.sh:2961 git-gui.sh:3374 git-gui.sh:3485
msgid "Sign Off"
msgstr "Abzeichnen"
-#: git-gui.sh:2696
+#: git-gui.sh:2977
msgid "Local Merge..."
msgstr "Lokales Zusammenführen..."
-#: git-gui.sh:2701
+#: git-gui.sh:2982
msgid "Abort Merge..."
msgstr "Zusammenführen abbrechen..."
-#: git-gui.sh:2713 git-gui.sh:2741
+#: git-gui.sh:2994 git-gui.sh:3022
msgid "Add..."
-msgstr "Hinzufügen..."
+msgstr "Neues hinzufügen..."
-#: git-gui.sh:2717
+#: git-gui.sh:2998
msgid "Push..."
msgstr "Versenden..."
-#: git-gui.sh:2721
+#: git-gui.sh:3002
msgid "Delete Branch..."
-msgstr "Zweig löschen..."
+msgstr "Branch löschen..."
-#: git-gui.sh:2731 git-gui.sh:3292
+#: git-gui.sh:3012 git-gui.sh:3666
msgid "Options..."
msgstr "Optionen..."
-#: git-gui.sh:2742
+#: git-gui.sh:3023
msgid "Remove..."
msgstr "Entfernen..."
-#: git-gui.sh:2751 lib/choose_repository.tcl:50
+#: git-gui.sh:3032 lib/choose_repository.tcl:67
msgid "Help"
msgstr "Hilfe"
-#: git-gui.sh:2755 git-gui.sh:2759 lib/about.tcl:14
-#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
+#: git-gui.sh:3036 git-gui.sh:3040 lib/choose_repository.tcl:61
+#: lib/choose_repository.tcl:70 lib/about.tcl:14
#, tcl-format
msgid "About %s"
msgstr "Über %s"
-#: git-gui.sh:2783
+#: git-gui.sh:3064
msgid "Online Documentation"
msgstr "Online-Dokumentation"
-#: git-gui.sh:2786 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
+#: git-gui.sh:3067 lib/choose_repository.tcl:64 lib/choose_repository.tcl:73
msgid "Show SSH Key"
msgstr "SSH-Schlüssel anzeigen"
-#: git-gui.sh:2893
+#: git-gui.sh:3097 git-gui.sh:3229
+msgid "usage:"
+msgstr "Verwendung:"
+
+#: git-gui.sh:3101 git-gui.sh:3233
+msgid "Usage"
+msgstr "Verwendung"
+
+#: git-gui.sh:3182 lib/blame.tcl:575
+msgid "Error"
+msgstr "Fehler"
+
+#: git-gui.sh:3213
#, tcl-format
msgid "fatal: cannot stat path %s: No such file or directory"
msgstr ""
"Fehler: Verzeichnis »%s« kann nicht gelesen werden: Datei oder Verzeichnis "
"nicht gefunden"
-#: git-gui.sh:2926
+#: git-gui.sh:3246
msgid "Current Branch:"
-msgstr "Aktueller Zweig:"
+msgstr "Aktueller Branch:"
-#: git-gui.sh:2947
-msgid "Staged Changes (Will Commit)"
-msgstr "Bereitstellung (zum Eintragen)"
-
-#: git-gui.sh:2967
+#: git-gui.sh:3271
msgid "Unstaged Changes"
msgstr "Nicht bereitgestellte Änderungen"
-#: git-gui.sh:3017
+#: git-gui.sh:3293
+msgid "Staged Changes (Will Commit)"
+msgstr "Bereitstellung (zum Committen)"
+
+#: git-gui.sh:3367
msgid "Stage Changed"
msgstr "Alles bereitstellen"
-#: git-gui.sh:3036 lib/transport.tcl:104 lib/transport.tcl:193
+#: git-gui.sh:3386 lib/transport.tcl:137
msgid "Push"
msgstr "Versenden"
-#: git-gui.sh:3071
+#: git-gui.sh:3413
msgid "Initial Commit Message:"
-msgstr "Erste Versionsbeschreibung:"
+msgstr "Erste Commit-Beschreibung:"
-#: git-gui.sh:3072
+#: git-gui.sh:3414
msgid "Amended Commit Message:"
msgstr "Nachgebesserte Beschreibung:"
-#: git-gui.sh:3073
+#: git-gui.sh:3415
msgid "Amended Initial Commit Message:"
msgstr "Nachgebesserte erste Beschreibung:"
-#: git-gui.sh:3074
+#: git-gui.sh:3416
msgid "Amended Merge Commit Message:"
msgstr "Nachgebesserte Zusammenführungs-Beschreibung:"
-#: git-gui.sh:3075
+#: git-gui.sh:3417
msgid "Merge Commit Message:"
msgstr "Zusammenführungs-Beschreibung:"
-#: git-gui.sh:3076
+#: git-gui.sh:3418
msgid "Commit Message:"
-msgstr "Versionsbeschreibung:"
+msgstr "Commit-Beschreibung:"
-#: git-gui.sh:3125 git-gui.sh:3267 lib/console.tcl:73
+#: git-gui.sh:3477 git-gui.sh:3641 lib/console.tcl:73
msgid "Copy All"
msgstr "Alle kopieren"
-#: git-gui.sh:3149 lib/blame.tcl:104
+#: git-gui.sh:3501 lib/blame.tcl:106
msgid "File:"
msgstr "Datei:"
-#: git-gui.sh:3255
+#: git-gui.sh:3549 lib/choose_repository.tcl:1100
+msgid "Open"
+msgstr "Öffnen"
+
+#: git-gui.sh:3629
msgid "Refresh"
msgstr "Aktualisieren"
-#: git-gui.sh:3276
+#: git-gui.sh:3650
msgid "Decrease Font Size"
msgstr "Schriftgröße verkleinern"
-#: git-gui.sh:3280
+#: git-gui.sh:3654
msgid "Increase Font Size"
msgstr "Schriftgröße vergrößern"
-#: git-gui.sh:3288 lib/blame.tcl:281
+#: git-gui.sh:3662 lib/blame.tcl:296
msgid "Encoding"
msgstr "Zeichenkodierung"
-#: git-gui.sh:3299
+#: git-gui.sh:3673
msgid "Apply/Reverse Hunk"
-msgstr "Kontext anwenden/umkehren"
+msgstr "Patch-Block anwenden/zurücknehmen"
-#: git-gui.sh:3304
+#: git-gui.sh:3678
msgid "Apply/Reverse Line"
-msgstr "Zeile anwenden/umkehren"
+msgstr "Zeile anwenden/zurücknehmen"
+
+#: git-gui.sh:3684 git-gui.sh:3794 git-gui.sh:3805
+msgid "Revert Hunk"
+msgstr "Patch-Block zurücknehmen"
+
+#: git-gui.sh:3689 git-gui.sh:3801 git-gui.sh:3812
+msgid "Revert Line"
+msgstr "Zeilenänderungen zurücknehmen"
+
+#: git-gui.sh:3694 git-gui.sh:3791
+msgid "Undo Last Revert"
+msgstr "Letztes Zurücknehmen rückgängig"
-#: git-gui.sh:3323
+#: git-gui.sh:3713
msgid "Run Merge Tool"
msgstr "Zusammenführungswerkzeug"
-#: git-gui.sh:3328
+#: git-gui.sh:3718
msgid "Use Remote Version"
msgstr "Externe Version benutzen"
-#: git-gui.sh:3332
+#: git-gui.sh:3722
msgid "Use Local Version"
msgstr "Lokale Version benutzen"
-#: git-gui.sh:3336
+#: git-gui.sh:3726
msgid "Revert To Base"
-msgstr "Ursprüngliche Version benutzen"
+msgstr "Zurücksetzen auf ursprünglichen Commit"
-#: git-gui.sh:3354
+#: git-gui.sh:3744
msgid "Visualize These Changes In The Submodule"
-msgstr "Diese Änderungen im Untermodul darstellen"
+msgstr "Diese Änderungen im Submodul darstellen"
-#: git-gui.sh:3358
+#: git-gui.sh:3748
msgid "Visualize Current Branch History In The Submodule"
-msgstr "Aktuellen Zweig im Untermodul darstellen"
+msgstr "Aktuellen Branch im Submodul darstellen"
-#: git-gui.sh:3362
+#: git-gui.sh:3752
msgid "Visualize All Branch History In The Submodule"
-msgstr "Alle Zweige im Untermodul darstellen"
+msgstr "Alle Branches im Submodul darstellen"
-#: git-gui.sh:3367
+#: git-gui.sh:3757
msgid "Start git gui In The Submodule"
-msgstr "Git gui im Untermodul starten"
+msgstr "Git gui im Submodul starten"
-#: git-gui.sh:3389
+#: git-gui.sh:3793
msgid "Unstage Hunk From Commit"
-msgstr "Kontext aus Bereitstellung herausnehmen"
+msgstr "Patch-Block aus Bereitstellung herausnehmen"
-#: git-gui.sh:3391
+#: git-gui.sh:3797
msgid "Unstage Lines From Commit"
msgstr "Zeilen aus der Bereitstellung herausnehmen"
-#: git-gui.sh:3393
+#: git-gui.sh:3798 git-gui.sh:3809
+msgid "Revert Lines"
+msgstr "Zeilenänderung zurücknehmen"
+
+#: git-gui.sh:3800
msgid "Unstage Line From Commit"
msgstr "Zeile aus der Bereitstellung herausnehmen"
-#: git-gui.sh:3396
+#: git-gui.sh:3804
msgid "Stage Hunk For Commit"
-msgstr "Kontext zur Bereitstellung hinzufügen"
+msgstr "Patch-Block zur Bereitstellung hinzufügen"
-#: git-gui.sh:3398
+#: git-gui.sh:3808
msgid "Stage Lines For Commit"
msgstr "Zeilen zur Bereitstellung hinzufügen"
-#: git-gui.sh:3400
+#: git-gui.sh:3811
msgid "Stage Line For Commit"
msgstr "Zeile zur Bereitstellung hinzufügen"
-#: git-gui.sh:3424
+#: git-gui.sh:3861
msgid "Initializing..."
msgstr "Initialisieren..."
-#: git-gui.sh:3541
+#: git-gui.sh:4017
#, tcl-format
msgid ""
"Possible environment issues exist.\n"
@@ -548,7 +594,7 @@ msgstr ""
"von %s an Git weitergegeben werden:\n"
"\n"
-#: git-gui.sh:3570
+#: git-gui.sh:4046
msgid ""
"\n"
"This is due to a known issue with the\n"
@@ -558,7 +604,7 @@ msgstr ""
"Dies ist ein bekanntes Problem der Tcl-Version, die\n"
"in Cygwin mitgeliefert wird."
-#: git-gui.sh:3575
+#: git-gui.sh:4051
#, tcl-format
msgid ""
"\n"
@@ -574,315 +620,151 @@ msgstr ""
"gewünschten Werte für die Einstellung user.name und \n"
"user.email in Ihre Datei ~/.gitconfig einfügen.\n"
-#: lib/about.tcl:26
-msgid "git-gui - a graphical user interface for Git."
-msgstr "git-gui - eine grafische Oberfläche für Git."
-
-#: lib/blame.tcl:72
-msgid "File Viewer"
-msgstr "Datei-Browser"
-
-#: lib/blame.tcl:78
-msgid "Commit:"
-msgstr "Version:"
-
-#: lib/blame.tcl:271
-msgid "Copy Commit"
-msgstr "Version kopieren"
-
-#: lib/blame.tcl:275
-msgid "Find Text..."
-msgstr "Text suchen..."
-
-#: lib/blame.tcl:284
-msgid "Do Full Copy Detection"
-msgstr "Volle Kopie-Erkennung"
+#: lib/spellcheck.tcl:57
+msgid "Unsupported spell checker"
+msgstr "Rechtschreibprüfungsprogramm nicht unterstützt"
-#: lib/blame.tcl:288
-msgid "Show History Context"
-msgstr "Historien-Kontext anzeigen"
+#: lib/spellcheck.tcl:65
+msgid "Spell checking is unavailable"
+msgstr "Rechtschreibprüfung nicht verfügbar"
-#: lib/blame.tcl:291
-msgid "Blame Parent Commit"
-msgstr "Elternversion annotieren"
+#: lib/spellcheck.tcl:68
+msgid "Invalid spell checking configuration"
+msgstr "Unbenutzbare Konfiguration der Rechtschreibprüfung"
-#: lib/blame.tcl:450
+#: lib/spellcheck.tcl:70
#, tcl-format
-msgid "Reading %s..."
-msgstr "%s lesen..."
-
-#: lib/blame.tcl:557
-msgid "Loading copy/move tracking annotations..."
-msgstr "Annotierungen für Kopieren/Verschieben werden geladen..."
-
-#: lib/blame.tcl:577
-msgid "lines annotated"
-msgstr "Zeilen annotiert"
-
-#: lib/blame.tcl:769
-msgid "Loading original location annotations..."
-msgstr "Annotierungen für ursprünglichen Ort werden geladen..."
-
-#: lib/blame.tcl:772
-msgid "Annotation complete."
-msgstr "Annotierung vollständig."
-
-#: lib/blame.tcl:802
-msgid "Busy"
-msgstr "Verarbeitung läuft"
-
-#: lib/blame.tcl:803
-msgid "Annotation process is already running."
-msgstr "Annotierung läuft bereits."
-
-#: lib/blame.tcl:842
-msgid "Running thorough copy detection..."
-msgstr "Intensive Kopie-Erkennung läuft..."
-
-#: lib/blame.tcl:910
-msgid "Loading annotation..."
-msgstr "Annotierung laden..."
-
-#: lib/blame.tcl:963
-msgid "Author:"
-msgstr "Autor:"
-
-#: lib/blame.tcl:967
-msgid "Committer:"
-msgstr "Eintragender:"
-
-#: lib/blame.tcl:972
-msgid "Original File:"
-msgstr "Ursprüngliche Datei:"
-
-#: lib/blame.tcl:1020
-msgid "Cannot find HEAD commit:"
-msgstr "Zweigspitze (»HEAD«) kann nicht gefunden werden:"
-
-#: lib/blame.tcl:1075
-msgid "Cannot find parent commit:"
-msgstr "Elternversion kann nicht gefunden werden:"
-
-#: lib/blame.tcl:1090
-msgid "Unable to display parent"
-msgstr "Elternversion kann nicht angezeigt werden"
-
-#: lib/blame.tcl:1091 lib/diff.tcl:320
-msgid "Error loading diff:"
-msgstr "Fehler beim Laden des Vergleichs:"
-
-#: lib/blame.tcl:1231
-msgid "Originally By:"
-msgstr "Ursprünglich von:"
-
-#: lib/blame.tcl:1237
-msgid "In File:"
-msgstr "In Datei:"
-
-#: lib/blame.tcl:1242
-msgid "Copied Or Moved Here By:"
-msgstr "Kopiert oder verschoben durch:"
-
-#: lib/branch_checkout.tcl:14 lib/branch_checkout.tcl:19
-msgid "Checkout Branch"
-msgstr "Auf Zweig umstellen"
-
-#: lib/branch_checkout.tcl:23
-msgid "Checkout"
-msgstr "Umstellen"
-
-#: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35
-#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282
-#: lib/checkout_op.tcl:579 lib/choose_font.tcl:43 lib/merge.tcl:172
-#: lib/option.tcl:125 lib/remote_add.tcl:32 lib/remote_branch_delete.tcl:42
-#: lib/tools_dlg.tcl:40 lib/tools_dlg.tcl:204 lib/tools_dlg.tcl:352
-#: lib/transport.tcl:108
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 lib/tools_dlg.tcl:328
-msgid "Revision"
-msgstr "Version"
-
-#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:280
-msgid "Options"
-msgstr "Optionen"
-
-#: lib/branch_checkout.tcl:39 lib/branch_create.tcl:92
-msgid "Fetch Tracking Branch"
-msgstr "Übernahmezweig anfordern"
-
-#: lib/branch_checkout.tcl:44
-msgid "Detach From Local Branch"
-msgstr "Verbindung zu lokalem Zweig lösen"
-
-#: lib/branch_create.tcl:22
-msgid "Create Branch"
-msgstr "Zweig erstellen"
-
-#: lib/branch_create.tcl:27
-msgid "Create New Branch"
-msgstr "Neuen Zweig erstellen"
-
-#: lib/branch_create.tcl:31 lib/choose_repository.tcl:381
-msgid "Create"
-msgstr "Erstellen"
-
-#: lib/branch_create.tcl:40
-msgid "Branch Name"
-msgstr "Zweigname"
-
-#: lib/branch_create.tcl:43 lib/remote_add.tcl:39 lib/tools_dlg.tcl:50
-msgid "Name:"
-msgstr "Name:"
-
-#: lib/branch_create.tcl:58
-msgid "Match Tracking Branch Name"
-msgstr "Passend zu Übernahmezweig-Name"
-
-#: lib/branch_create.tcl:66
-msgid "Starting Revision"
-msgstr "Anfangsversion"
-
-#: lib/branch_create.tcl:72
-msgid "Update Existing Branch:"
-msgstr "Existierenden Zweig aktualisieren:"
+msgid "Reverting dictionary to %s."
+msgstr "Wörterbuch auf %s zurückgesetzt."
-#: lib/branch_create.tcl:75
-msgid "No"
-msgstr "Nein"
+#: lib/spellcheck.tcl:73
+msgid "Spell checker silently failed on startup"
+msgstr "Rechtschreibprüfungsprogramm mit Fehler abgebrochen"
-#: lib/branch_create.tcl:80
-msgid "Fast Forward Only"
-msgstr "Nur Schnellzusammenführung"
+#: lib/spellcheck.tcl:80
+msgid "Unrecognized spell checker"
+msgstr "Unbekanntes Rechtschreibprüfungsprogramm"
-#: lib/branch_create.tcl:85 lib/checkout_op.tcl:571
-msgid "Reset"
-msgstr "Zurücksetzen"
+#: lib/spellcheck.tcl:186
+msgid "No Suggestions"
+msgstr "Keine Vorschläge"
-#: lib/branch_create.tcl:97
-msgid "Checkout After Creation"
-msgstr "Arbeitskopie umstellen nach Erstellen"
+#: lib/spellcheck.tcl:388
+msgid "Unexpected EOF from spell checker"
+msgstr "Unerwartetes EOF vom Rechtschreibprüfungsprogramm"
-#: lib/branch_create.tcl:131
-msgid "Please select a tracking branch."
-msgstr "Bitte wählen Sie einen Übernahmezweig."
+#: lib/spellcheck.tcl:392
+msgid "Spell Checker Failed"
+msgstr "Rechtschreibprüfung fehlgeschlagen"
-#: lib/branch_create.tcl:140
+#: lib/transport.tcl:6 lib/remote_add.tcl:132
#, tcl-format
-msgid "Tracking branch %s is not a branch in the remote repository."
-msgstr "Übernahmezweig »%s« ist kein Zweig im externen Projektarchiv."
+msgid "fetch %s"
+msgstr "»%s« anfordern"
-#: lib/branch_create.tcl:153 lib/branch_rename.tcl:86
-msgid "Please supply a branch name."
-msgstr "Bitte geben Sie einen Zweignamen an."
+#: lib/transport.tcl:7
+#, tcl-format
+msgid "Fetching new changes from %s"
+msgstr "Neue Änderungen von »%s« holen"
-#: lib/branch_create.tcl:164 lib/branch_rename.tcl:106
+#: lib/transport.tcl:18
#, tcl-format
-msgid "'%s' is not an acceptable branch name."
-msgstr "»%s« ist kein zulässiger Zweigname."
+msgid "remote prune %s"
+msgstr "Gelöschte externe Branches aus »%s« entfernen"
-#: lib/branch_delete.tcl:15
-msgid "Delete Branch"
-msgstr "Zweig löschen"
+#: lib/transport.tcl:19
+#, tcl-format
+msgid "Pruning tracking branches deleted from %s"
+msgstr "Gelöschte externe Trackingbranches aus »%s« werden entfernt"
-#: lib/branch_delete.tcl:20
-msgid "Delete Local Branch"
-msgstr "Lokalen Zweig löschen"
+#: lib/transport.tcl:25
+msgid "fetch all remotes"
+msgstr "Abrufen aller externen"
-#: lib/branch_delete.tcl:37
-msgid "Local Branches"
-msgstr "Lokale Zweige"
+#: lib/transport.tcl:26
+msgid "Fetching new changes from all remotes"
+msgstr "Neue Änderungen von allen externen anfordern"
-#: lib/branch_delete.tcl:52
-msgid "Delete Only If Merged Into"
-msgstr "Nur löschen, wenn zusammengeführt nach"
+#: lib/transport.tcl:40
+msgid "remote prune all remotes"
+msgstr "Extern veraltete Branches entfernen aller Repositories"
-#: lib/branch_delete.tcl:54 lib/remote_branch_delete.tcl:119
-msgid "Always (Do not perform merge checks)"
-msgstr "Immer (Keine Zusammenführungsprüfung)"
+#: lib/transport.tcl:41
+msgid "Pruning tracking branches deleted from all remotes"
+msgstr ""
+"Gelöschte externe Trackingbranches aus allen Repositories werden entfernt"
-#: lib/branch_delete.tcl:103
+#: lib/transport.tcl:54 lib/transport.tcl:92 lib/transport.tcl:110
+#: lib/remote_add.tcl:162
#, tcl-format
-msgid "The following branches are not completely merged into %s:"
-msgstr "Folgende Zweige sind noch nicht mit »%s« zusammengeführt:"
-
-#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:217
-msgid ""
-"Recovering deleted branches is difficult.\n"
-"\n"
-"Delete the selected branches?"
-msgstr ""
-"Das Wiederherstellen von gelöschten Zweigen ist nur mit größerem Aufwand "
-"möglich.\n"
-"\n"
-"Sollen die ausgewählten Zweige gelöscht werden?"
+msgid "push %s"
+msgstr "»%s« versenden..."
-#: lib/branch_delete.tcl:141
+#: lib/transport.tcl:55
#, tcl-format
-msgid ""
-"Failed to delete branches:\n"
-"%s"
-msgstr ""
-"Fehler beim Löschen der Zweige:\n"
-"%s"
+msgid "Pushing changes to %s"
+msgstr "Änderungen nach »%s« versenden"
-#: lib/branch_rename.tcl:14 lib/branch_rename.tcl:22
-msgid "Rename Branch"
-msgstr "Zweig umbenennen"
+#: lib/transport.tcl:93
+#, tcl-format
+msgid "Mirroring to %s"
+msgstr "Spiegeln nach %s"
-#: lib/branch_rename.tcl:26
-msgid "Rename"
-msgstr "Umbenennen"
+#: lib/transport.tcl:111
+#, tcl-format
+msgid "Pushing %s %s to %s"
+msgstr "%s %s nach %s versenden"
-#: lib/branch_rename.tcl:36
-msgid "Branch:"
-msgstr "Zweig:"
+#: lib/transport.tcl:132
+msgid "Push Branches"
+msgstr "Branches versenden"
-#: lib/branch_rename.tcl:39
-msgid "New Name:"
-msgstr "Neuer Name:"
+#: lib/transport.tcl:141 lib/checkout_op.tcl:580 lib/remote_add.tcl:34
+#: lib/browser.tcl:292 lib/branch_checkout.tcl:30 lib/branch_rename.tcl:32
+#: lib/choose_font.tcl:45 lib/option.tcl:127 lib/tools_dlg.tcl:41
+#: lib/tools_dlg.tcl:202 lib/tools_dlg.tcl:345 lib/remote_branch_delete.tcl:43
+#: lib/branch_create.tcl:37 lib/branch_delete.tcl:34 lib/merge.tcl:178
+msgid "Cancel"
+msgstr "Abbrechen"
-#: lib/branch_rename.tcl:75
-msgid "Please select a branch to rename."
-msgstr "Bitte wählen Sie einen Zweig zum umbenennen."
+#: lib/transport.tcl:147
+msgid "Source Branches"
+msgstr "Lokale Branches"
-#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:202
-#, tcl-format
-msgid "Branch '%s' already exists."
-msgstr "Zweig »%s« existiert bereits."
+#: lib/transport.tcl:162
+msgid "Destination Repository"
+msgstr "Ziel-Repository"
-#: lib/branch_rename.tcl:117
-#, tcl-format
-msgid "Failed to rename '%s'."
-msgstr "Fehler beim Umbenennen von »%s«."
+#: lib/transport.tcl:165 lib/remote_branch_delete.tcl:51
+msgid "Remote:"
+msgstr "Externes Repository:"
-#: lib/browser.tcl:17
-msgid "Starting..."
-msgstr "Starten..."
+#: lib/transport.tcl:187 lib/remote_branch_delete.tcl:72
+msgid "Arbitrary Location:"
+msgstr "Beliebige Adresse:"
-#: lib/browser.tcl:26
-msgid "File Browser"
-msgstr "Datei-Browser"
+#: lib/transport.tcl:205
+msgid "Transfer Options"
+msgstr "Netzwerk-Einstellungen"
-#: lib/browser.tcl:126 lib/browser.tcl:143
-#, tcl-format
-msgid "Loading %s..."
-msgstr "%s laden..."
+#: lib/transport.tcl:207
+msgid "Force overwrite existing branch (may discard changes)"
+msgstr ""
+"Überschreiben von existierenden Branches erzwingen (könnte Änderungen "
+"löschen)"
-#: lib/browser.tcl:187
-msgid "[Up To Parent]"
-msgstr "[Nach oben]"
+#: lib/transport.tcl:211
+msgid "Use thin pack (for slow network connections)"
+msgstr "Kompaktes Datenformat benutzen (für langsame Netzverbindungen)"
-#: lib/browser.tcl:267 lib/browser.tcl:273
-msgid "Browse Branch Files"
-msgstr "Dateien des Zweigs durchblättern"
+#: lib/transport.tcl:215
+msgid "Include tags"
+msgstr "Mit Tags versenden"
-#: lib/browser.tcl:278 lib/choose_repository.tcl:398
-#: lib/choose_repository.tcl:486 lib/choose_repository.tcl:497
-#: lib/choose_repository.tcl:1028
-msgid "Browse"
-msgstr "Blättern"
+#: lib/transport.tcl:229
+#, tcl-format
+msgid "%s (%s): Push"
+msgstr "%s (%s): Versenden"
#: lib/checkout_op.tcl:85
#, tcl-format
@@ -892,23 +774,28 @@ msgstr "Änderungen »%s« von »%s« anfordern"
#: lib/checkout_op.tcl:133
#, tcl-format
msgid "fatal: Cannot resolve %s"
-msgstr "Fehler: »%s« kann nicht als Zweig oder Version erkannt werden"
+msgstr "Fehler: »%s« kann nicht als Branch oder Version erkannt werden"
-#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:31
-#: lib/sshkey.tcl:53
+#: lib/checkout_op.tcl:146 lib/sshkey.tcl:58 lib/console.tcl:81
+#: lib/database.tcl:30
msgid "Close"
msgstr "Schließen"
#: lib/checkout_op.tcl:175
#, tcl-format
msgid "Branch '%s' does not exist."
-msgstr "Zweig »%s« existiert nicht."
+msgstr "Branch »%s« existiert nicht."
#: lib/checkout_op.tcl:194
#, tcl-format
msgid "Failed to configure simplified git-pull for '%s'."
msgstr "Fehler beim Einrichten der vereinfachten git-pull für »%s«."
+#: lib/checkout_op.tcl:202 lib/branch_rename.tcl:102
+#, tcl-format
+msgid "Branch '%s' already exists."
+msgstr "Branch »%s« existiert bereits."
+
#: lib/checkout_op.tcl:229
#, tcl-format
msgid ""
@@ -917,10 +804,10 @@ msgid ""
"It cannot fast-forward to %s.\n"
"A merge is required."
msgstr ""
-"Zweig »%s« existiert bereits.\n"
+"Branch »%s« existiert bereits.\n"
"\n"
-"Zweig kann nicht mit »%s« schnellzusammengeführt werden. Reguläres "
-"Zusammenführen ist notwendig."
+"Branch kann nicht auf »%s« vorgespult werden. Reguläres Zusammenführen ist "
+"notwendig."
#: lib/checkout_op.tcl:243
#, tcl-format
@@ -945,76 +832,79 @@ msgid ""
"\n"
"The rescan will be automatically started now.\n"
msgstr ""
-"Der letzte geladene Status stimmt nicht mehr mit dem Projektarchiv überein.\n"
+"Der letzte geladene Status stimmt nicht mehr mit dem Repository überein.\n"
"\n"
-"Ein anderes Git-Programm hat das Projektarchiv seit dem letzten Laden "
-"geändert. Vor dem Wechseln des lokalen Zweigs muss neu geladen werden.\n"
+"Ein anderes Git-Programm hat das Repository seit dem letzten Laden "
+"geändert. Vor dem Wechseln des lokalen Branches muss neu geladen werden.\n"
"\n"
"Es wird gleich neu geladen.\n"
#: lib/checkout_op.tcl:345
#, tcl-format
msgid "Updating working directory to '%s'..."
-msgstr "Arbeitskopie umstellen auf »%s«..."
+msgstr "Arbeitskopie aktualisieren auf »%s«..."
#: lib/checkout_op.tcl:346
msgid "files checked out"
msgstr "Dateien aktualisiert"
-#: lib/checkout_op.tcl:376
+#: lib/checkout_op.tcl:377
#, tcl-format
msgid "Aborted checkout of '%s' (file level merging is required)."
msgstr ""
-"Auf Zweig »%s« umstellen abgebrochen (Zusammenführen der Dateien ist "
+"Branch »%s« Auschecken abgebrochen (Zusammenführen der Dateien ist "
"notwendig)."
-#: lib/checkout_op.tcl:377
+#: lib/checkout_op.tcl:378
msgid "File level merge required."
msgstr "Zusammenführen der Dateien ist notwendig."
-#: lib/checkout_op.tcl:381
+#: lib/checkout_op.tcl:382
#, tcl-format
msgid "Staying on branch '%s'."
-msgstr "Es wird auf Zweig »%s« verblieben."
+msgstr "Es wird auf Branch »%s« verblieben."
-#: lib/checkout_op.tcl:452
+#: lib/checkout_op.tcl:453
msgid ""
"You are no longer on a local branch.\n"
"\n"
"If you wanted to be on a branch, create one now starting from 'This Detached "
"Checkout'."
msgstr ""
-"Die Arbeitskopie ist nicht auf einem lokalen Zweig.\n"
+"Die Arbeitskopie ist nicht auf einem lokalen Branch.\n"
"\n"
-"Wenn Sie auf einem Zweig arbeiten möchten, erstellen Sie bitte jetzt einen "
-"Zweig mit der Auswahl »Abgetrennte Arbeitskopie-Version«."
+"Wenn Sie auf einem Branch arbeiten möchten, erstellen Sie bitte jetzt einen "
+"Branch mit der Auswahl »Losgelöste Arbeitskopie-Version«."
-#: lib/checkout_op.tcl:503 lib/checkout_op.tcl:507
+#: lib/checkout_op.tcl:504 lib/checkout_op.tcl:508
#, tcl-format
msgid "Checked out '%s'."
msgstr "Umgestellt auf »%s«."
-#: lib/checkout_op.tcl:535
+#: lib/checkout_op.tcl:536
#, tcl-format
msgid "Resetting '%s' to '%s' will lose the following commits:"
-msgstr "Zurücksetzen von »%s« nach »%s« wird folgende Versionen verwerfen:"
+msgstr "Umsetzen von »%s« nach »%s« wird folgende Commits verlieren:"
-#: lib/checkout_op.tcl:557
+#: lib/checkout_op.tcl:558
msgid "Recovering lost commits may not be easy."
msgstr ""
-"Verworfene Versionen können nur mit größerem Aufwand wiederhergestellt "
-"werden."
+"Verlorene Commits können nur mit größerem Aufwand wiederhergestellt werden."
-#: lib/checkout_op.tcl:562
+#: lib/checkout_op.tcl:563
#, tcl-format
msgid "Reset '%s'?"
-msgstr "»%s« zurücksetzen?"
+msgstr "»%s« umsetzen?"
-#: lib/checkout_op.tcl:567 lib/merge.tcl:164 lib/tools_dlg.tcl:343
+#: lib/checkout_op.tcl:568 lib/tools_dlg.tcl:336 lib/merge.tcl:170
msgid "Visualize"
msgstr "Darstellen"
-#: lib/checkout_op.tcl:635
+#: lib/checkout_op.tcl:572 lib/branch_create.tcl:85
+msgid "Reset"
+msgstr "Umsetzen (Reset)"
+
+#: lib/checkout_op.tcl:636
#, tcl-format
msgid ""
"Failed to set current branch.\n"
@@ -1024,7 +914,7 @@ msgid ""
"\n"
"This should not have occurred. %s will now close and give up."
msgstr ""
-"Lokaler Zweig kann nicht gesetzt werden.\n"
+"Lokaler Branch kann nicht gesetzt werden.\n"
"\n"
"Diese Arbeitskopie ist nur teilweise umgestellt. Die Dateien sind korrekt "
"aktualisiert, aber einige interne Git-Dateien konnten nicht geändert "
@@ -1032,23 +922,345 @@ msgstr ""
"\n"
"Dies ist ein interner Programmfehler von %s. Programm wird jetzt abgebrochen."
-#: lib/choose_font.tcl:39
+#: lib/remote_add.tcl:20
+#, tcl-format
+msgid "%s (%s): Add Remote"
+msgstr "%s (%s): Externes Repository hinzufügen"
+
+#: lib/remote_add.tcl:25
+msgid "Add New Remote"
+msgstr "Neues externes Repository hinzufügen"
+
+#: lib/remote_add.tcl:30 lib/tools_dlg.tcl:37
+msgid "Add"
+msgstr "Hinzufügen"
+
+#: lib/remote_add.tcl:39
+msgid "Remote Details"
+msgstr "Einzelheiten des externen Repository"
+
+#: lib/remote_add.tcl:41 lib/tools_dlg.tcl:51 lib/branch_create.tcl:44
+msgid "Name:"
+msgstr "Name:"
+
+#: lib/remote_add.tcl:50
+msgid "Location:"
+msgstr "Adresse:"
+
+#: lib/remote_add.tcl:60
+msgid "Further Action"
+msgstr "Weitere Aktion"
+
+#: lib/remote_add.tcl:63
+msgid "Fetch Immediately"
+msgstr "Jetzt anfordern"
+
+#: lib/remote_add.tcl:69
+msgid "Initialize Remote Repository and Push"
+msgstr "Externes Repository initialisieren und dahin versenden"
+
+#: lib/remote_add.tcl:75
+msgid "Do Nothing Else Now"
+msgstr "Keine weitere Aktion"
+
+#: lib/remote_add.tcl:100
+msgid "Please supply a remote name."
+msgstr "Bitte geben Sie einen Namen des externen Repository an."
+
+#: lib/remote_add.tcl:113
+#, tcl-format
+msgid "'%s' is not an acceptable remote name."
+msgstr "»%s« ist kein zulässiger Name eines externen Repository."
+
+#: lib/remote_add.tcl:124
+#, tcl-format
+msgid "Failed to add remote '%s' of location '%s'."
+msgstr "Fehler beim Hinzufügen des externen Repository »%s« aus Adresse »%s«."
+
+#: lib/remote_add.tcl:133
+#, tcl-format
+msgid "Fetching the %s"
+msgstr "»%s« anfordern"
+
+#: lib/remote_add.tcl:156
+#, tcl-format
+msgid "Do not know how to initialize repository at location '%s'."
+msgstr ""
+"Initialisieren eines externen Repositories an Adresse »%s« ist nicht möglich."
+
+#: lib/remote_add.tcl:163
+#, tcl-format
+msgid "Setting up the %s (at %s)"
+msgstr "Einrichten von »%s« an »%s«"
+
+#: lib/browser.tcl:17
+msgid "Starting..."
+msgstr "Starten..."
+
+#: lib/browser.tcl:27
+#, tcl-format
+msgid "%s (%s): File Browser"
+msgstr "%s (%s): Datei-Browser"
+
+#: lib/browser.tcl:132 lib/browser.tcl:149
+#, tcl-format
+msgid "Loading %s..."
+msgstr "%s laden..."
+
+#: lib/browser.tcl:193
+msgid "[Up To Parent]"
+msgstr "[Nach oben]"
+
+#: lib/browser.tcl:275
+#, tcl-format
+msgid "%s (%s): Browse Branch Files"
+msgstr "%s (%s): Dateien des Branches durchblättern"
+
+#: lib/browser.tcl:282
+msgid "Browse Branch Files"
+msgstr "Dateien des Branches durchblättern"
+
+#: lib/browser.tcl:288 lib/choose_repository.tcl:437
+#: lib/choose_repository.tcl:524 lib/choose_repository.tcl:533
+#: lib/choose_repository.tcl:1115
+msgid "Browse"
+msgstr "Blättern"
+
+#: lib/browser.tcl:297 lib/branch_checkout.tcl:35 lib/tools_dlg.tcl:321
+msgid "Revision"
+msgstr "Version"
+
+#: lib/index.tcl:6
+msgid "Unable to unlock the index."
+msgstr "Bereitstellung kann nicht wieder freigegeben werden."
+
+#: lib/index.tcl:30
+msgid "Index Error"
+msgstr "Fehler in Bereitstellung"
+
+#: lib/index.tcl:32
+msgid ""
+"Updating the Git index failed. A rescan will be automatically started to "
+"resynchronize git-gui."
+msgstr ""
+"Das Aktualisieren der Git-Bereitstellung ist fehlgeschlagen. Eine allgemeine "
+"Git-Aktualisierung wird jetzt gestartet, um git-gui wieder mit git zu "
+"synchronisieren."
+
+#: lib/index.tcl:43
+msgid "Continue"
+msgstr "Fortsetzen"
+
+#: lib/index.tcl:46
+msgid "Unlock Index"
+msgstr "Bereitstellung freigeben"
+
+#: lib/index.tcl:77 lib/index.tcl:146 lib/index.tcl:220 lib/index.tcl:587
+#: lib/choose_repository.tcl:999
+msgid "files"
+msgstr "Dateien"
+
+#: lib/index.tcl:326
+msgid "Unstaging selected files from commit"
+msgstr "Gewählte Dateien aus der Bereitstellung herausnehmen"
+
+#: lib/index.tcl:330
+#, tcl-format
+msgid "Unstaging %s from commit"
+msgstr "Datei »%s« aus der Bereitstellung herausnehmen"
+
+#: lib/index.tcl:369
+msgid "Ready to commit."
+msgstr "Bereit zum Committen."
+
+#: lib/index.tcl:378
+msgid "Adding selected files"
+msgstr "Gewählte Dateien hinzufügen"
+
+#: lib/index.tcl:382
+#, tcl-format
+msgid "Adding %s"
+msgstr "»%s« hinzufügen"
+
+#: lib/index.tcl:412
+#, tcl-format
+msgid "Stage %d untracked files?"
+msgstr "%d unversionierte Dateien bereitstellen?"
+
+#: lib/index.tcl:420
+msgid "Adding all changed files"
+msgstr "Alle geänderten Dateien hinzufügen"
+
+#: lib/index.tcl:503
+#, tcl-format
+msgid "Revert changes in file %s?"
+msgstr "Änderungen in Datei »%s« verwerfen?"
+
+#: lib/index.tcl:508
+#, tcl-format
+msgid "Revert changes in these %i files?"
+msgstr "Änderungen in diesen %i Dateien verwerfen?"
+
+#: lib/index.tcl:517
+msgid "Any unstaged changes will be permanently lost by the revert."
+msgstr ""
+"Alle nicht bereitgestellten Änderungen werden beim Verwerfen verloren gehen."
+
+#: lib/index.tcl:520 lib/index.tcl:563
+msgid "Do Nothing"
+msgstr "Nichts tun"
+
+#: lib/index.tcl:545
+#, tcl-format
+msgid "Delete untracked file %s?"
+msgstr "Unversionierte Datei »%s« löschen?"
+
+#: lib/index.tcl:550
+#, tcl-format
+msgid "Delete these %i untracked files?"
+msgstr "Diese %i unversionierten Dateien löschen?"
+
+#: lib/index.tcl:560
+msgid "Files will be permanently deleted."
+msgstr "Dateien werden endgültig gelöscht."
+
+#: lib/index.tcl:564
+msgid "Delete Files"
+msgstr "Dateien löschen"
+
+#: lib/index.tcl:586
+msgid "Deleting"
+msgstr "Löschen"
+
+#: lib/index.tcl:665
+msgid "Encountered errors deleting files:\n"
+msgstr "Fehler beim Löschen der Dateien:\n"
+
+#: lib/index.tcl:674
+#, tcl-format
+msgid "None of the %d selected files could be deleted."
+msgstr "Keine der %d gewählten Dateien konnten gelöscht werden."
+
+#: lib/index.tcl:679
+#, tcl-format
+msgid "%d of the %d selected files could not be deleted."
+msgstr "%d der %d gewählten Dateien konnten nicht gelöscht werden."
+
+#: lib/index.tcl:726
+msgid "Reverting selected files"
+msgstr "Änderungen in gewählten Dateien verwerfen"
+
+#: lib/index.tcl:730
+#, tcl-format
+msgid "Reverting %s"
+msgstr "Änderungen in %s verwerfen"
+
+#: lib/branch_checkout.tcl:16
+#, tcl-format
+msgid "%s (%s): Checkout Branch"
+msgstr "%s (%s): Branch auschecken"
+
+#: lib/branch_checkout.tcl:21
+msgid "Checkout Branch"
+msgstr "Branch auschecken"
+
+#: lib/branch_checkout.tcl:26
+msgid "Checkout"
+msgstr "Auschecken"
+
+#: lib/branch_checkout.tcl:39 lib/option.tcl:310 lib/branch_create.tcl:69
+msgid "Options"
+msgstr "Optionen"
+
+#: lib/branch_checkout.tcl:42 lib/branch_create.tcl:92
+msgid "Fetch Tracking Branch"
+msgstr "Trackingbranch anfordern"
+
+#: lib/branch_checkout.tcl:47
+msgid "Detach From Local Branch"
+msgstr "Verbindung zu lokalem Branch lösen"
+
+#: lib/status_bar.tcl:263
+#, tcl-format
+msgid "%s ... %*i of %*i %s (%3i%%)"
+msgstr "%s ... %*i von %*i %s (%3i%%)"
+
+#: lib/remote.tcl:200
+msgid "Push to"
+msgstr "Versenden nach"
+
+#: lib/remote.tcl:218
+msgid "Remove Remote"
+msgstr "Externes Repository entfernen"
+
+#: lib/remote.tcl:223
+msgid "Prune from"
+msgstr "Veraltete Branches entfernen"
+
+#: lib/remote.tcl:228
+msgid "Fetch from"
+msgstr "Anfordern"
+
+#: lib/remote.tcl:249 lib/remote.tcl:253 lib/remote.tcl:258 lib/remote.tcl:264
+msgid "All"
+msgstr "Alle"
+
+#: lib/branch_rename.tcl:15
+#, tcl-format
+msgid "%s (%s): Rename Branch"
+msgstr "%s (%s): Branch umbenennen"
+
+#: lib/branch_rename.tcl:23
+msgid "Rename Branch"
+msgstr "Branch umbenennen"
+
+#: lib/branch_rename.tcl:28
+msgid "Rename"
+msgstr "Umbenennen"
+
+#: lib/branch_rename.tcl:38
+msgid "Branch:"
+msgstr "Branch:"
+
+#: lib/branch_rename.tcl:46
+msgid "New Name:"
+msgstr "Neuer Name:"
+
+#: lib/branch_rename.tcl:81
+msgid "Please select a branch to rename."
+msgstr "Bitte wählen Sie einen Branch zum umbenennen."
+
+#: lib/branch_rename.tcl:92 lib/branch_create.tcl:154
+msgid "Please supply a branch name."
+msgstr "Bitte geben Sie einen Branchnamen an."
+
+#: lib/branch_rename.tcl:112 lib/branch_create.tcl:165
+#, tcl-format
+msgid "'%s' is not an acceptable branch name."
+msgstr "»%s« ist kein zulässiger Branchname."
+
+#: lib/branch_rename.tcl:123
+#, tcl-format
+msgid "Failed to rename '%s'."
+msgstr "Fehler beim Umbenennen von »%s«."
+
+#: lib/choose_font.tcl:41
msgid "Select"
msgstr "Auswählen"
-#: lib/choose_font.tcl:53
+#: lib/choose_font.tcl:55
msgid "Font Family"
msgstr "Schriftfamilie"
-#: lib/choose_font.tcl:74
+#: lib/choose_font.tcl:76
msgid "Font Size"
msgstr "Schriftgröße"
-#: lib/choose_font.tcl:91
+#: lib/choose_font.tcl:93
msgid "Font Example"
msgstr "Schriftbeispiel"
-#: lib/choose_font.tcl:103
+#: lib/choose_font.tcl:105
msgid ""
"This is example text.\n"
"If you like this text, it can be your font."
@@ -1056,277 +1268,1137 @@ msgstr ""
"Dies ist ein Beispieltext.\n"
"Wenn Ihnen dieser Text gefällt, sollten Sie diese Schriftart wählen."
-#: lib/choose_repository.tcl:28
+#: lib/option.tcl:11
+#, tcl-format
+msgid "Invalid global encoding '%s'"
+msgstr "Ungültige globale Zeichenkodierung »%s«"
+
+#: lib/option.tcl:19
+#, tcl-format
+msgid "Invalid repo encoding '%s'"
+msgstr "Ungültige Repository-Zeichenkodierung »%s«"
+
+#: lib/option.tcl:119
+msgid "Restore Defaults"
+msgstr "Voreinstellungen wiederherstellen"
+
+#: lib/option.tcl:123
+msgid "Save"
+msgstr "Speichern"
+
+#: lib/option.tcl:133
+#, tcl-format
+msgid "%s Repository"
+msgstr "%s Repository"
+
+#: lib/option.tcl:134
+msgid "Global (All Repositories)"
+msgstr "Global (Alle Repositories)"
+
+#: lib/option.tcl:140
+msgid "User Name"
+msgstr "Benutzername"
+
+#: lib/option.tcl:141
+msgid "Email Address"
+msgstr "E-Mail-Adresse"
+
+#: lib/option.tcl:143
+msgid "Summarize Merge Commits"
+msgstr "Zusammenführungs-Commits zusammenfassen"
+
+#: lib/option.tcl:144
+msgid "Merge Verbosity"
+msgstr "Ausführlichkeit der Zusammenführen-Meldungen"
+
+#: lib/option.tcl:145
+msgid "Show Diffstat After Merge"
+msgstr "Vergleichsstatistik nach Zusammenführen anzeigen"
+
+#: lib/option.tcl:146
+msgid "Use Merge Tool"
+msgstr "Zusammenführungswerkzeug"
+
+#: lib/option.tcl:148
+msgid "Trust File Modification Timestamps"
+msgstr "Auf Dateiänderungsdatum verlassen"
+
+#: lib/option.tcl:149
+msgid "Prune Tracking Branches During Fetch"
+msgstr "Veraltete Trackingbranches entfernen während Anforderung"
+
+#: lib/option.tcl:150
+msgid "Match Tracking Branches"
+msgstr "Neue Branches automatisch als Trackingbranch"
+
+#: lib/option.tcl:151
+msgid "Use Textconv For Diffs and Blames"
+msgstr "Benutze »textconv« für Vergleich und Annotieren"
+
+#: lib/option.tcl:152
+msgid "Blame Copy Only On Changed Files"
+msgstr "Kopie-Annotieren nur bei geänderten Dateien"
+
+#: lib/option.tcl:153
+msgid "Maximum Length of Recent Repositories List"
+msgstr "Anzahl Einträge in »Letzte Repositories«"
+
+#: lib/option.tcl:154
+msgid "Minimum Letters To Blame Copy On"
+msgstr "Mindestzahl Zeichen für Kopie-Annotieren"
+
+#: lib/option.tcl:155
+msgid "Blame History Context Radius (days)"
+msgstr "Anzahl Tage für Annotieren-Historien-Kontext"
+
+#: lib/option.tcl:156
+msgid "Number of Diff Context Lines"
+msgstr "Anzahl der Kontextzeilen beim Vergleich"
+
+#: lib/option.tcl:157
+msgid "Additional Diff Parameters"
+msgstr "Zusätzliche Vergleich-/diff-Parameter"
+
+#: lib/option.tcl:158
+msgid "Commit Message Text Width"
+msgstr "Textbreite der Commit-Beschreibung"
+
+#: lib/option.tcl:159
+msgid "New Branch Name Template"
+msgstr "Namensvorlage für neue Branches"
+
+#: lib/option.tcl:160
+msgid "Default File Contents Encoding"
+msgstr "Voreingestellte Zeichenkodierung"
+
+#: lib/option.tcl:161
+msgid "Warn before committing to a detached head"
+msgstr "Warnen vor Committen auf losgelöste Branchspitze"
+
+#: lib/option.tcl:162
+msgid "Staging of untracked files"
+msgstr "Unversionierte Dateien bereitstellen"
+
+#: lib/option.tcl:163
+msgid "Show untracked files"
+msgstr "Unversionierte Dateien anzeigen"
+
+#: lib/option.tcl:164
+msgid "Tab spacing"
+msgstr "Tabulator-Breite"
+
+#: lib/option.tcl:182 lib/option.tcl:197 lib/option.tcl:220 lib/option.tcl:282
+#: lib/database.tcl:57
+#, tcl-format
+msgid "%s:"
+msgstr "%s:"
+
+#: lib/option.tcl:210
+msgid "Change"
+msgstr "Ändern"
+
+#: lib/option.tcl:254
+msgid "Spelling Dictionary:"
+msgstr "Wörterbuch Rechtschreibprüfung:"
+
+#: lib/option.tcl:284
+msgid "Change Font"
+msgstr "Schriftart ändern"
+
+#: lib/option.tcl:288
+#, tcl-format
+msgid "Choose %s"
+msgstr "%s wählen"
+
+#: lib/option.tcl:294
+msgid "pt."
+msgstr "pt."
+
+#: lib/option.tcl:308
+msgid "Preferences"
+msgstr "Einstellungen"
+
+#: lib/option.tcl:345
+msgid "Failed to completely save options:"
+msgstr "Optionen konnten nicht gespeichert werden:"
+
+#: lib/encoding.tcl:443
+msgid "Default"
+msgstr "Voreinstellung"
+
+#: lib/encoding.tcl:448
+#, tcl-format
+msgid "System (%s)"
+msgstr "Systemweit (%s)"
+
+#: lib/encoding.tcl:459 lib/encoding.tcl:465
+msgid "Other"
+msgstr "Andere"
+
+#: lib/tools.tcl:76
+#, tcl-format
+msgid "Running %s requires a selected file."
+msgstr "Um »%s« zu starten, muss eine Datei ausgewählt sein."
+
+#: lib/tools.tcl:92
+#, tcl-format
+msgid "Are you sure you want to run %1$s on file \"%2$s\"?"
+msgstr "Wollen Sie %1$s wirklich auf Datei »%2$s« starten?"
+
+#: lib/tools.tcl:96
+#, tcl-format
+msgid "Are you sure you want to run %s?"
+msgstr "Wollen Sie %s wirklich starten?"
+
+#: lib/tools.tcl:118
+#, tcl-format
+msgid "Tool: %s"
+msgstr "Werkzeug: %s"
+
+#: lib/tools.tcl:119
+#, tcl-format
+msgid "Running: %s"
+msgstr "Starten: %s"
+
+#: lib/tools.tcl:158
+#, tcl-format
+msgid "Tool completed successfully: %s"
+msgstr "Werkzeug erfolgreich abgeschlossen: %s"
+
+#: lib/tools.tcl:160
+#, tcl-format
+msgid "Tool failed: %s"
+msgstr "Werkzeug fehlgeschlagen: %s"
+
+#: lib/mergetool.tcl:8
+msgid "Force resolution to the base version?"
+msgstr "Konflikt durch Basisversion ersetzen?"
+
+#: lib/mergetool.tcl:9
+msgid "Force resolution to this branch?"
+msgstr "Konflikt durch diesen Branch ersetzen?"
+
+#: lib/mergetool.tcl:10
+msgid "Force resolution to the other branch?"
+msgstr "Konflikt durch anderen Branch ersetzen?"
+
+#: lib/mergetool.tcl:14
+#, tcl-format
+msgid ""
+"Note that the diff shows only conflicting changes.\n"
+"\n"
+"%s will be overwritten.\n"
+"\n"
+"This operation can be undone only by restarting the merge."
+msgstr ""
+"Hinweis: Der Vergleich zeigt nur konfliktverursachende Änderungen an.\n"
+"\n"
+"»%s« wird überschrieben.\n"
+"\n"
+"Diese Operation kann nur rückgängig gemacht werden, wenn die\n"
+"Zusammenführung erneut gestartet wird."
+
+#: lib/mergetool.tcl:45
+#, tcl-format
+msgid "File %s seems to have unresolved conflicts, still stage?"
+msgstr "Datei »%s« hat nicht aufgelöste Konflikte. Trotzdem bereitstellen?"
+
+#: lib/mergetool.tcl:60
+#, tcl-format
+msgid "Adding resolution for %s"
+msgstr "Auflösung hinzugefügt für %s"
+
+#: lib/mergetool.tcl:141
+msgid "Cannot resolve deletion or link conflicts using a tool"
+msgstr ""
+"Konflikte durch gelöschte Dateien oder symbolische Links können nicht durch "
+"das Zusamenführungswerkzeug gelöst werden."
+
+#: lib/mergetool.tcl:146
+msgid "Conflict file does not exist"
+msgstr "Konflikt-Datei existiert nicht"
+
+#: lib/mergetool.tcl:246
+#, tcl-format
+msgid "Not a GUI merge tool: '%s'"
+msgstr "Kein GUI Zusammenführungswerkzeug: »%s«"
+
+#: lib/mergetool.tcl:275
+#, tcl-format
+msgid "Unsupported merge tool '%s'"
+msgstr "Unbekanntes Zusammenführungswerkzeug: »%s«"
+
+#: lib/mergetool.tcl:310
+msgid "Merge tool is already running, terminate it?"
+msgstr "Zusammenführungswerkzeug läuft bereits. Soll es abgebrochen werden?"
+
+#: lib/mergetool.tcl:330
+#, tcl-format
+msgid ""
+"Error retrieving versions:\n"
+"%s"
+msgstr ""
+"Fehler beim Abrufen der Dateiversionen:\n"
+"%s"
+
+#: lib/mergetool.tcl:350
+#, tcl-format
+msgid ""
+"Could not start the merge tool:\n"
+"\n"
+"%s"
+msgstr ""
+"Zusammenführungswerkzeug konnte nicht gestartet werden:\n"
+"\n"
+"%s"
+
+#: lib/mergetool.tcl:354
+msgid "Running merge tool..."
+msgstr "Zusammenführungswerkzeug starten..."
+
+#: lib/mergetool.tcl:382 lib/mergetool.tcl:390
+msgid "Merge tool failed."
+msgstr "Zusammenführungswerkzeug fehlgeschlagen."
+
+#: lib/tools_dlg.tcl:22
+#, tcl-format
+msgid "%s (%s): Add Tool"
+msgstr "%s (%s): Werkzeug hinzufügen"
+
+#: lib/tools_dlg.tcl:28
+msgid "Add New Tool Command"
+msgstr "Neues Kommando für Werkzeug hinzufügen"
+
+#: lib/tools_dlg.tcl:34
+msgid "Add globally"
+msgstr "Global hinzufügen"
+
+#: lib/tools_dlg.tcl:46
+msgid "Tool Details"
+msgstr "Einzelheiten des Werkzeugs"
+
+#: lib/tools_dlg.tcl:49
+msgid "Use '/' separators to create a submenu tree:"
+msgstr "Benutzen Sie einen Schrägstrich »/«, um Untermenüs zu erstellen:"
+
+#: lib/tools_dlg.tcl:60
+msgid "Command:"
+msgstr "Kommando:"
+
+#: lib/tools_dlg.tcl:71
+msgid "Show a dialog before running"
+msgstr "Bestätigungsfrage vor Starten anzeigen"
+
+#: lib/tools_dlg.tcl:77
+msgid "Ask the user to select a revision (sets $REVISION)"
+msgstr "Benutzer nach Version fragen (setzt $REVISION)"
+
+#: lib/tools_dlg.tcl:82
+msgid "Ask the user for additional arguments (sets $ARGS)"
+msgstr "Benutzer nach zusätzlichen Argumenten fragen (setzt $ARGS)"
+
+#: lib/tools_dlg.tcl:89
+msgid "Don't show the command output window"
+msgstr "Kein Ausgabefenster zeigen"
+
+#: lib/tools_dlg.tcl:94
+msgid "Run only if a diff is selected ($FILENAME not empty)"
+msgstr "Nur starten, wenn ein Vergleich gewählt ist ($FILENAME ist nicht leer)"
+
+#: lib/tools_dlg.tcl:118
+msgid "Please supply a name for the tool."
+msgstr "Bitte geben Sie einen Werkzeugnamen an."
+
+#: lib/tools_dlg.tcl:126
+#, tcl-format
+msgid "Tool '%s' already exists."
+msgstr "Werkzeug »%s« existiert bereits."
+
+#: lib/tools_dlg.tcl:148
+#, tcl-format
+msgid ""
+"Could not add tool:\n"
+"%s"
+msgstr ""
+"Werkzeug konnte nicht hinzugefügt werden:\n"
+"\n"
+"%s"
+
+#: lib/tools_dlg.tcl:187
+#, tcl-format
+msgid "%s (%s): Remove Tool"
+msgstr "%s (%s): Werkzeug entfernen"
+
+#: lib/tools_dlg.tcl:193
+msgid "Remove Tool Commands"
+msgstr "Werkzeugkommandos entfernen"
+
+#: lib/tools_dlg.tcl:198
+msgid "Remove"
+msgstr "Entfernen"
+
+#: lib/tools_dlg.tcl:231
+msgid "(Blue denotes repository-local tools)"
+msgstr "(Werkzeuge für lokales Repository werden in Blau angezeigt)"
+
+#: lib/tools_dlg.tcl:283
+#, tcl-format
+msgid "%s (%s):"
+msgstr "%s (%s):"
+
+#: lib/tools_dlg.tcl:292
+#, tcl-format
+msgid "Run Command: %s"
+msgstr "Kommando aufrufen: %s"
+
+#: lib/tools_dlg.tcl:306
+msgid "Arguments"
+msgstr "Argumente"
+
+#: lib/tools_dlg.tcl:341
+msgid "OK"
+msgstr "Ok"
+
+#: lib/search.tcl:48
+msgid "Find:"
+msgstr "Suchen:"
+
+#: lib/search.tcl:50
+msgid "Next"
+msgstr "Nächster"
+
+#: lib/search.tcl:51
+msgid "Prev"
+msgstr "Voriger"
+
+#: lib/search.tcl:52
+msgid "RegExp"
+msgstr "RegAusdruck"
+
+#: lib/search.tcl:54
+msgid "Case"
+msgstr "Groß/klein"
+
+#: lib/shortcut.tcl:8 lib/shortcut.tcl:43 lib/shortcut.tcl:75
+#, tcl-format
+msgid "%s (%s): Create Desktop Icon"
+msgstr "%s (%s): Desktop-Icon erstellen"
+
+#: lib/shortcut.tcl:24 lib/shortcut.tcl:65
+msgid "Cannot write shortcut:"
+msgstr "Fehler beim Schreiben der Verknüpfung:"
+
+#: lib/shortcut.tcl:140
+msgid "Cannot write icon:"
+msgstr "Fehler beim Erstellen des Icons:"
+
+#: lib/remote_branch_delete.tcl:29
+#, tcl-format
+msgid "%s (%s): Delete Branch Remotely"
+msgstr "%s (%s): Branch in externem Repository löschen"
+
+#: lib/remote_branch_delete.tcl:34
+msgid "Delete Branch Remotely"
+msgstr "Branch in externem Repository löschen"
+
+#: lib/remote_branch_delete.tcl:48
+msgid "From Repository"
+msgstr "In Repository"
+
+#: lib/remote_branch_delete.tcl:88
+msgid "Branches"
+msgstr "Branches"
+
+#: lib/remote_branch_delete.tcl:110
+msgid "Delete Only If"
+msgstr "Nur löschen, wenn"
+
+#: lib/remote_branch_delete.tcl:112
+msgid "Merged Into:"
+msgstr "Zusammengeführt mit:"
+
+#: lib/remote_branch_delete.tcl:120 lib/branch_delete.tcl:53
+msgid "Always (Do not perform merge checks)"
+msgstr "Immer (Keine Zusammenführungsprüfung)"
+
+#: lib/remote_branch_delete.tcl:153
+msgid "A branch is required for 'Merged Into'."
+msgstr "Für »Zusammenführen mit« muss ein Branch angegeben werden."
+
+#: lib/remote_branch_delete.tcl:185
+#, tcl-format
+msgid ""
+"The following branches are not completely merged into %s:\n"
+"\n"
+" - %s"
+msgstr ""
+"Folgende Branches sind noch nicht mit »%s« zusammengeführt:\n"
+"\n"
+" - %s"
+
+#: lib/remote_branch_delete.tcl:190
+#, tcl-format
+msgid ""
+"One or more of the merge tests failed because you have not fetched the "
+"necessary commits. Try fetching from %s first."
+msgstr ""
+"Ein oder mehrere Zusammenführungen sind fehlgeschlagen, da Sie nicht die "
+"notwendigen Commits vorher angefordert haben. Sie sollten versuchen, zuerst "
+"von »%s« anzufordern."
+
+#: lib/remote_branch_delete.tcl:208
+msgid "Please select one or more branches to delete."
+msgstr "Bitte wählen Sie mindestens einen Branch, der gelöscht werden soll."
+
+#: lib/remote_branch_delete.tcl:218 lib/branch_delete.tcl:115
+msgid ""
+"Recovering deleted branches is difficult.\n"
+"\n"
+"Delete the selected branches?"
+msgstr ""
+"Das Wiederherstellen von gelöschten Branches ist nur mit größerem Aufwand "
+"möglich.\n"
+"\n"
+"Sollen die ausgewählten Branches gelöscht werden?"
+
+#: lib/remote_branch_delete.tcl:227
+#, tcl-format
+msgid "Deleting branches from %s"
+msgstr "Branches auf »%s« werden gelöscht"
+
+#: lib/remote_branch_delete.tcl:300
+msgid "No repository selected."
+msgstr "Kein Repository ausgewählt."
+
+#: lib/remote_branch_delete.tcl:305
+#, tcl-format
+msgid "Scanning %s..."
+msgstr "»%s« laden..."
+
+#: lib/choose_repository.tcl:45
msgid "Git Gui"
msgstr "Git Gui"
-#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:386
+#: lib/choose_repository.tcl:104 lib/choose_repository.tcl:427
msgid "Create New Repository"
-msgstr "Neues Projektarchiv"
+msgstr "Repository neu erstellen"
-#: lib/choose_repository.tcl:93
+#: lib/choose_repository.tcl:110
msgid "New..."
msgstr "Neu..."
-#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:471
+#: lib/choose_repository.tcl:117 lib/choose_repository.tcl:511
msgid "Clone Existing Repository"
-msgstr "Projektarchiv klonen"
+msgstr "Repository klonen"
-#: lib/choose_repository.tcl:106
+#: lib/choose_repository.tcl:128
msgid "Clone..."
msgstr "Klonen..."
-#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:1016
+#: lib/choose_repository.tcl:135 lib/choose_repository.tcl:1105
msgid "Open Existing Repository"
-msgstr "Projektarchiv öffnen"
+msgstr "Repository öffnen"
-#: lib/choose_repository.tcl:119
+#: lib/choose_repository.tcl:141
msgid "Open..."
msgstr "Öffnen..."
-#: lib/choose_repository.tcl:132
+#: lib/choose_repository.tcl:154
msgid "Recent Repositories"
-msgstr "Zuletzt benutzte Projektarchive"
+msgstr "Letzte Repositories"
-#: lib/choose_repository.tcl:138
+#: lib/choose_repository.tcl:164
msgid "Open Recent Repository:"
-msgstr "Zuletzt benutztes Projektarchiv öffnen:"
+msgstr "Zuletzt benutztes Repository öffnen:"
-#: lib/choose_repository.tcl:306 lib/choose_repository.tcl:313
-#: lib/choose_repository.tcl:320
+#: lib/choose_repository.tcl:331 lib/choose_repository.tcl:338
+#: lib/choose_repository.tcl:345
#, tcl-format
msgid "Failed to create repository %s:"
-msgstr "Projektarchiv »%s« konnte nicht erstellt werden:"
+msgstr "Repository »%s« konnte nicht erstellt werden:"
-#: lib/choose_repository.tcl:391
+#: lib/choose_repository.tcl:422 lib/branch_create.tcl:33
+msgid "Create"
+msgstr "Erstellen"
+
+#: lib/choose_repository.tcl:432
msgid "Directory:"
msgstr "Verzeichnis:"
-#: lib/choose_repository.tcl:423 lib/choose_repository.tcl:550
-#: lib/choose_repository.tcl:1052
+#: lib/choose_repository.tcl:462 lib/choose_repository.tcl:588
+#: lib/choose_repository.tcl:1139
msgid "Git Repository"
-msgstr "Git Projektarchiv"
+msgstr "Git Repository"
-#: lib/choose_repository.tcl:448
+#: lib/choose_repository.tcl:487
#, tcl-format
msgid "Directory %s already exists."
msgstr "Verzeichnis »%s« existiert bereits."
-#: lib/choose_repository.tcl:452
+#: lib/choose_repository.tcl:491
#, tcl-format
msgid "File %s already exists."
msgstr "Datei »%s« existiert bereits."
-#: lib/choose_repository.tcl:466
+#: lib/choose_repository.tcl:506
msgid "Clone"
msgstr "Klonen"
-#: lib/choose_repository.tcl:479
+#: lib/choose_repository.tcl:519
msgid "Source Location:"
-msgstr "Herkunft:"
+msgstr "Herkunfts-Adresse:"
-#: lib/choose_repository.tcl:490
+#: lib/choose_repository.tcl:528
msgid "Target Directory:"
msgstr "Zielverzeichnis:"
-#: lib/choose_repository.tcl:502
+#: lib/choose_repository.tcl:538
msgid "Clone Type:"
msgstr "Art des Klonens:"
-#: lib/choose_repository.tcl:508
+#: lib/choose_repository.tcl:543
msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
msgstr "Standard (schnell, teilweise redundant, Hardlinks)"
-#: lib/choose_repository.tcl:514
+#: lib/choose_repository.tcl:548
msgid "Full Copy (Slower, Redundant Backup)"
msgstr "Alles kopieren (langsamer, volle Redundanz)"
-#: lib/choose_repository.tcl:520
+#: lib/choose_repository.tcl:553
msgid "Shared (Fastest, Not Recommended, No Backup)"
msgstr "Verknüpft (schnell, nicht empfohlen, kein Backup)"
-#: lib/choose_repository.tcl:556 lib/choose_repository.tcl:603
-#: lib/choose_repository.tcl:749 lib/choose_repository.tcl:819
-#: lib/choose_repository.tcl:1058 lib/choose_repository.tcl:1066
+#: lib/choose_repository.tcl:560
+msgid "Recursively clone submodules too"
+msgstr "Rekursiv weitere Submodule klonen"
+
+#: lib/choose_repository.tcl:594 lib/choose_repository.tcl:641
+#: lib/choose_repository.tcl:790 lib/choose_repository.tcl:864
+#: lib/choose_repository.tcl:1145 lib/choose_repository.tcl:1153
#, tcl-format
msgid "Not a Git repository: %s"
-msgstr "Kein Git-Projektarchiv in »%s« gefunden."
+msgstr "Kein Git-Repository: %s"
-#: lib/choose_repository.tcl:592
+#: lib/choose_repository.tcl:630
msgid "Standard only available for local repository."
-msgstr "Standard ist nur für lokale Projektarchive verfügbar."
+msgstr "Standard ist nur für lokale Repositories verfügbar."
-#: lib/choose_repository.tcl:596
+#: lib/choose_repository.tcl:634
msgid "Shared only available for local repository."
-msgstr "Verknüpft ist nur für lokale Projektarchive verfügbar."
+msgstr "Verknüpft ist nur für lokale Repositories verfügbar."
-#: lib/choose_repository.tcl:617
+#: lib/choose_repository.tcl:655
#, tcl-format
msgid "Location %s already exists."
-msgstr "Projektarchiv »%s« existiert bereits."
+msgstr "Adresse »%s« existiert bereits."
-#: lib/choose_repository.tcl:628
+#: lib/choose_repository.tcl:666
msgid "Failed to configure origin"
msgstr "Der Ursprungsort konnte nicht eingerichtet werden"
-#: lib/choose_repository.tcl:640
+#: lib/choose_repository.tcl:678
msgid "Counting objects"
msgstr "Objekte werden gezählt"
-#: lib/choose_repository.tcl:641
+#: lib/choose_repository.tcl:679
msgid "buckets"
msgstr "Buckets"
-#: lib/choose_repository.tcl:665
+#: lib/choose_repository.tcl:703
#, tcl-format
msgid "Unable to copy objects/info/alternates: %s"
msgstr "Kopien von Objekten/Info/Alternates konnten nicht erstellt werden: %s"
-#: lib/choose_repository.tcl:701
+#: lib/choose_repository.tcl:740
#, tcl-format
msgid "Nothing to clone from %s."
msgstr "Von »%s« konnte nichts geklont werden."
-#: lib/choose_repository.tcl:703 lib/choose_repository.tcl:917
-#: lib/choose_repository.tcl:929
+#: lib/choose_repository.tcl:742 lib/choose_repository.tcl:962
+#: lib/choose_repository.tcl:974
msgid "The 'master' branch has not been initialized."
-msgstr "Der »master«-Zweig wurde noch nicht initialisiert."
+msgstr "Der »master«-Branch wurde noch nicht initialisiert."
-#: lib/choose_repository.tcl:716
+#: lib/choose_repository.tcl:755
msgid "Hardlinks are unavailable. Falling back to copying."
msgstr "Hardlinks nicht verfügbar. Stattdessen wird kopiert."
-#: lib/choose_repository.tcl:728
+#: lib/choose_repository.tcl:769
#, tcl-format
msgid "Cloning from %s"
msgstr "Kopieren von »%s«"
-#: lib/choose_repository.tcl:759
+#: lib/choose_repository.tcl:800
msgid "Copying objects"
msgstr "Objektdatenbank kopieren"
-#: lib/choose_repository.tcl:760
+#: lib/choose_repository.tcl:801
msgid "KiB"
msgstr "KB"
-#: lib/choose_repository.tcl:784
+#: lib/choose_repository.tcl:825
#, tcl-format
msgid "Unable to copy object: %s"
msgstr "Objekt kann nicht kopiert werden: %s"
-#: lib/choose_repository.tcl:794
+#: lib/choose_repository.tcl:837
msgid "Linking objects"
msgstr "Objekte verlinken"
-#: lib/choose_repository.tcl:795
+#: lib/choose_repository.tcl:838
msgid "objects"
msgstr "Objekte"
-#: lib/choose_repository.tcl:803
+#: lib/choose_repository.tcl:846
#, tcl-format
msgid "Unable to hardlink object: %s"
msgstr "Für Objekt konnte kein Hardlink erstellt werden: %s"
-#: lib/choose_repository.tcl:858
+#: lib/choose_repository.tcl:903
msgid "Cannot fetch branches and objects. See console output for details."
msgstr ""
-"Zweige und Objekte konnten nicht angefordert werden. Kontrollieren Sie die "
-"Ausgaben auf der Konsole für weitere Angaben."
+"Branches und Objekte konnten nicht angefordert werden. Kontrollieren Sie "
+"die Ausgaben auf der Konsole für weitere Angaben."
-#: lib/choose_repository.tcl:869
+#: lib/choose_repository.tcl:914
msgid "Cannot fetch tags. See console output for details."
msgstr ""
-"Markierungen konnten nicht angefordert werden. Kontrollieren Sie die "
-"Ausgaben auf der Konsole für weitere Angaben."
+"Tags konnten nicht angefordert werden. Kontrollieren Sie die Ausgaben auf "
+"der Konsole für weitere Angaben."
-#: lib/choose_repository.tcl:893
+#: lib/choose_repository.tcl:938
msgid "Cannot determine HEAD. See console output for details."
msgstr ""
-"Die Zweigspitze (HEAD) konnte nicht gefunden werden. Kontrollieren Sie die "
+"Die Branchspitze (HEAD) konnte nicht gefunden werden. Kontrollieren Sie die "
"Ausgaben auf der Konsole für weitere Angaben."
-#: lib/choose_repository.tcl:902
+#: lib/choose_repository.tcl:947
#, tcl-format
msgid "Unable to cleanup %s"
msgstr "Verzeichnis »%s« kann nicht aufgeräumt werden."
-#: lib/choose_repository.tcl:908
+#: lib/choose_repository.tcl:953
msgid "Clone failed."
msgstr "Klonen fehlgeschlagen."
-#: lib/choose_repository.tcl:915
+#: lib/choose_repository.tcl:960
msgid "No default branch obtained."
-msgstr "Kein voreingestellter Zweig gefunden."
+msgstr "Kein voreingestellter Branch gefunden."
-#: lib/choose_repository.tcl:926
+#: lib/choose_repository.tcl:971
#, tcl-format
msgid "Cannot resolve %s as a commit."
-msgstr "»%s« wurde nicht als Version gefunden."
+msgstr "»%s« wurde nicht als Commit gefunden."
-#: lib/choose_repository.tcl:938
+#: lib/choose_repository.tcl:998
msgid "Creating working directory"
msgstr "Arbeitskopie erstellen"
-#: lib/choose_repository.tcl:939 lib/index.tcl:67 lib/index.tcl:130
-#: lib/index.tcl:198
-msgid "files"
-msgstr "Dateien"
-
-#: lib/choose_repository.tcl:968
+#: lib/choose_repository.tcl:1028
msgid "Initial file checkout failed."
msgstr "Erstellen der Arbeitskopie fehlgeschlagen."
-#: lib/choose_repository.tcl:1011
-msgid "Open"
-msgstr "Öffnen"
+#: lib/choose_repository.tcl:1072
+msgid "Cloning submodules"
+msgstr "Klone Submodul"
-#: lib/choose_repository.tcl:1021
+#: lib/choose_repository.tcl:1087
+msgid "Cannot clone submodules."
+msgstr "Submodul konnte nicht geklont werden."
+
+#: lib/choose_repository.tcl:1110
msgid "Repository:"
-msgstr "Projektarchiv:"
+msgstr "Repository:"
-#: lib/choose_repository.tcl:1072
+#: lib/choose_repository.tcl:1159
#, tcl-format
msgid "Failed to open repository %s:"
-msgstr "Projektarchiv »%s« konnte nicht geöffnet werden."
+msgstr "Repository »%s« konnte nicht geöffnet werden."
+
+#: lib/about.tcl:26
+msgid "git-gui - a graphical user interface for Git."
+msgstr "git-gui - eine grafische Oberfläche für Git."
+
+#: lib/blame.tcl:74
+#, tcl-format
+msgid "%s (%s): File Viewer"
+msgstr "%s (%s): Datei-Browser"
+
+#: lib/blame.tcl:80
+msgid "Commit:"
+msgstr "Commit:"
+
+#: lib/blame.tcl:282
+msgid "Copy Commit"
+msgstr "Commit kopieren"
+
+#: lib/blame.tcl:286
+msgid "Find Text..."
+msgstr "Text suchen..."
+
+#: lib/blame.tcl:290
+msgid "Goto Line..."
+msgstr "Gehe zu Zeile..."
+
+#: lib/blame.tcl:299
+msgid "Do Full Copy Detection"
+msgstr "Volle Kopie-Erkennung"
+
+#: lib/blame.tcl:303
+msgid "Show History Context"
+msgstr "Historien-Kontext anzeigen"
+
+#: lib/blame.tcl:306
+msgid "Blame Parent Commit"
+msgstr "Elterncommit annotieren"
+
+#: lib/blame.tcl:468
+#, tcl-format
+msgid "Reading %s..."
+msgstr "%s lesen..."
+
+#: lib/blame.tcl:596
+msgid "Loading copy/move tracking annotations..."
+msgstr "Annotierungen für Kopieren/Verschieben werden geladen..."
+
+#: lib/blame.tcl:613
+msgid "lines annotated"
+msgstr "Zeilen annotiert"
+
+#: lib/blame.tcl:815
+msgid "Loading original location annotations..."
+msgstr "Annotierungen für ursprünglichen Ort werden geladen..."
+
+#: lib/blame.tcl:818
+msgid "Annotation complete."
+msgstr "Annotierung vollständig."
+
+#: lib/blame.tcl:849
+msgid "Busy"
+msgstr "Verarbeitung läuft"
+
+#: lib/blame.tcl:850
+msgid "Annotation process is already running."
+msgstr "Annotierung läuft bereits."
+
+#: lib/blame.tcl:889
+msgid "Running thorough copy detection..."
+msgstr "Intensive Kopie-Erkennung läuft..."
+
+#: lib/blame.tcl:957
+msgid "Loading annotation..."
+msgstr "Annotierung laden..."
+
+#: lib/blame.tcl:1010
+msgid "Author:"
+msgstr "Autor:"
+
+#: lib/blame.tcl:1014
+msgid "Committer:"
+msgstr "Committer:"
+
+#: lib/blame.tcl:1019
+msgid "Original File:"
+msgstr "Ursprüngliche Datei:"
+
+#: lib/blame.tcl:1067
+msgid "Cannot find HEAD commit:"
+msgstr "Branchspitze (»HEAD commit«) kann nicht gefunden werden:"
+
+#: lib/blame.tcl:1122
+msgid "Cannot find parent commit:"
+msgstr "Elterncommit kann nicht gefunden werden:"
+
+#: lib/blame.tcl:1137
+msgid "Unable to display parent"
+msgstr "Elterncommit kann nicht angezeigt werden"
+
+#: lib/blame.tcl:1138 lib/diff.tcl:345
+msgid "Error loading diff:"
+msgstr "Fehler beim Laden des Vergleichs:"
+
+#: lib/blame.tcl:1279
+msgid "Originally By:"
+msgstr "Ursprünglich von:"
+
+#: lib/blame.tcl:1285
+msgid "In File:"
+msgstr "In Datei:"
+
+#: lib/blame.tcl:1290
+msgid "Copied Or Moved Here By:"
+msgstr "Kopiert oder verschoben durch:"
+
+#: lib/diff.tcl:77
+#, tcl-format
+msgid ""
+"No differences detected.\n"
+"\n"
+"%s has no changes.\n"
+"\n"
+"The modification date of this file was updated by another application, but "
+"the content within the file was not changed.\n"
+"\n"
+"A rescan will be automatically started to find other files which may have "
+"the same state."
+msgstr ""
+"Keine Änderungen feststellbar.\n"
+"\n"
+"»%s« enthält keine Änderungen. Zwar wurde das Änderungsdatum dieser Datei "
+"von einem anderen Programm modifiziert, aber der Inhalt der Datei ist "
+"unverändert.\n"
+"\n"
+"Das Arbeitsverzeichnis wird jetzt neu geladen, um diese Änderung bei allen "
+"Dateien zu prüfen."
+
+#: lib/diff.tcl:117
+#, tcl-format
+msgid "Loading diff of %s..."
+msgstr "Vergleich von »%s« laden..."
+
+#: lib/diff.tcl:143
+msgid ""
+"LOCAL: deleted\n"
+"REMOTE:\n"
+msgstr ""
+"LOKAL: gelöscht\n"
+"EXTERN:\n"
+
+#: lib/diff.tcl:148
+msgid ""
+"REMOTE: deleted\n"
+"LOCAL:\n"
+msgstr ""
+"EXTERN: gelöscht\n"
+"LOKAL:\n"
+
+#: lib/diff.tcl:155
+msgid "LOCAL:\n"
+msgstr "LOKAL:\n"
+
+#: lib/diff.tcl:158
+msgid "REMOTE:\n"
+msgstr "EXTERN:\n"
+
+#: lib/diff.tcl:220 lib/diff.tcl:344
+#, tcl-format
+msgid "Unable to display %s"
+msgstr "Datei »%s« kann nicht angezeigt werden"
+
+#: lib/diff.tcl:221
+msgid "Error loading file:"
+msgstr "Fehler beim Laden der Datei:"
+
+#: lib/diff.tcl:227
+msgid "Git Repository (subproject)"
+msgstr "Git-Repository (Subprojekt)"
+
+#: lib/diff.tcl:239
+msgid "* Binary file (not showing content)."
+msgstr "* Binärdatei (Inhalt wird nicht angezeigt)"
+
+#: lib/diff.tcl:244
+#, tcl-format
+msgid ""
+"* Untracked file is %d bytes.\n"
+"* Showing only first %d bytes.\n"
+msgstr ""
+"* Unversionierte Datei hat %d Bytes.\n"
+"* Nur erste %d Bytes werden angezeigt.\n"
+
+#: lib/diff.tcl:250
+#, tcl-format
+msgid ""
+"\n"
+"* Untracked file clipped here by %s.\n"
+"* To see the entire file, use an external editor.\n"
+msgstr ""
+"\n"
+"* Unversionierte Datei, hier abgeschnitten durch %s.\n"
+"* Zum Ansehen der vollständigen Datei externen Editor benutzen.\n"
+
+#: lib/diff.tcl:583
+msgid "Failed to unstage selected hunk."
+msgstr ""
+"Fehler beim Herausnehmen des gewählten Patch-Blocks aus der Bereitstellung."
+
+#: lib/diff.tcl:591
+msgid "Failed to revert selected hunk."
+msgstr "Fehler beim Zurücknehmen des gewählten Patch-Blocks."
+
+#: lib/diff.tcl:594
+msgid "Failed to stage selected hunk."
+msgstr "Fehler beim Bereitstellen des gewählten Patch-Blocks."
+
+#: lib/diff.tcl:687
+msgid "Failed to unstage selected line."
+msgstr "Fehler beim Herausnehmen der gewählten Zeile aus der Bereitstellung."
+
+#: lib/diff.tcl:696
+msgid "Failed to revert selected line."
+msgstr "Fehler beim Zurücknehmen der gewählten Zeile."
+
+#: lib/diff.tcl:700
+msgid "Failed to stage selected line."
+msgstr "Fehler beim Bereitstellen der gewählten Zeile."
+
+#: lib/diff.tcl:889
+msgid "Failed to undo last revert."
+msgstr "Fehler beim Rückgängigmachen des letzten Zurücknehmen-Commits"
+
+#: lib/sshkey.tcl:34
+msgid "No keys found."
+msgstr "Keine Schlüssel gefunden."
+
+#: lib/sshkey.tcl:37
+#, tcl-format
+msgid "Found a public key in: %s"
+msgstr "Öffentlicher Schlüssel gefunden in: %s"
+
+#: lib/sshkey.tcl:43
+msgid "Generate Key"
+msgstr "Schlüssel erzeugen"
-#: lib/choose_rev.tcl:53
+#: lib/sshkey.tcl:61
+msgid "Copy To Clipboard"
+msgstr "In Zwischenablage kopieren"
+
+#: lib/sshkey.tcl:75
+msgid "Your OpenSSH Public Key"
+msgstr "Ihr OpenSSH öffenlicher Schlüssel"
+
+#: lib/sshkey.tcl:83
+msgid "Generating..."
+msgstr "Erzeugen..."
+
+#: lib/sshkey.tcl:89
+#, tcl-format
+msgid ""
+"Could not start ssh-keygen:\n"
+"\n"
+"%s"
+msgstr ""
+"Konnte »ssh-keygen« nicht starten:\n"
+"\n"
+"%s"
+
+#: lib/sshkey.tcl:116
+msgid "Generation failed."
+msgstr "Schlüsselerzeugung fehlgeschlagen."
+
+#: lib/sshkey.tcl:123
+msgid "Generation succeeded, but no keys found."
+msgstr "Schlüsselerzeugung erfolgreich, aber keine Schlüssel gefunden."
+
+#: lib/sshkey.tcl:126
+#, tcl-format
+msgid "Your key is in: %s"
+msgstr "Ihr Schlüssel ist abgelegt in: %s"
+
+#: lib/branch_create.tcl:23
+#, tcl-format
+msgid "%s (%s): Create Branch"
+msgstr "%s (%s): Branch erstellen"
+
+#: lib/branch_create.tcl:28
+msgid "Create New Branch"
+msgstr "Neuen Branch erstellen"
+
+#: lib/branch_create.tcl:42
+msgid "Branch Name"
+msgstr "Branchname"
+
+#: lib/branch_create.tcl:57
+msgid "Match Tracking Branch Name"
+msgstr "Passend zu Trackingbranch-Name"
+
+#: lib/branch_create.tcl:66
+msgid "Starting Revision"
+msgstr "Anfangsversion"
+
+#: lib/branch_create.tcl:72
+msgid "Update Existing Branch:"
+msgstr "Existierenden Branch aktualisieren:"
+
+#: lib/branch_create.tcl:75
+msgid "No"
+msgstr "Nein"
+
+#: lib/branch_create.tcl:80
+msgid "Fast Forward Only"
+msgstr "Nur Vorspulen"
+
+#: lib/branch_create.tcl:97
+msgid "Checkout After Creation"
+msgstr "Branch auschecken nach Erstellen"
+
+#: lib/branch_create.tcl:132
+msgid "Please select a tracking branch."
+msgstr "Bitte wählen Sie einen Trackingbranch."
+
+#: lib/branch_create.tcl:141
+#, tcl-format
+msgid "Tracking branch %s is not a branch in the remote repository."
+msgstr "Trackingbranch »%s« ist kein Branch im externen Repository."
+
+#: lib/console.tcl:59
+msgid "Working... please wait..."
+msgstr "Verarbeitung. Bitte warten..."
+
+#: lib/console.tcl:186
+msgid "Success"
+msgstr "Erfolgreich"
+
+#: lib/console.tcl:200
+msgid "Error: Command Failed"
+msgstr "Fehler: Kommando fehlgeschlagen"
+
+#: lib/line.tcl:17
+msgid "Goto Line:"
+msgstr "Gehe zu Zeile:"
+
+#: lib/line.tcl:23
+msgid "Go"
+msgstr "Gehe"
+
+#: lib/choose_rev.tcl:52
msgid "This Detached Checkout"
-msgstr "Abgetrennte Arbeitskopie-Version"
+msgstr "Losgelöste Arbeitskopie-Version"
#: lib/choose_rev.tcl:60
msgid "Revision Expression:"
-msgstr "Version Regexp-Ausdruck:"
+msgstr "Version Regex-Ausdruck:"
-#: lib/choose_rev.tcl:74
+#: lib/choose_rev.tcl:72
msgid "Local Branch"
-msgstr "Lokaler Zweig"
+msgstr "Lokaler Branch"
-#: lib/choose_rev.tcl:79
+#: lib/choose_rev.tcl:77
msgid "Tracking Branch"
-msgstr "Übernahmezweig"
+msgstr "Trackingbranch"
-#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538
+#: lib/choose_rev.tcl:82 lib/choose_rev.tcl:544
msgid "Tag"
-msgstr "Markierung"
+msgstr "Tag"
-#: lib/choose_rev.tcl:317
+#: lib/choose_rev.tcl:321
#, tcl-format
msgid "Invalid revision: %s"
msgstr "Ungültige Version: %s"
-#: lib/choose_rev.tcl:338
+#: lib/choose_rev.tcl:342
msgid "No revision selected."
msgstr "Keine Version ausgewählt."
-#: lib/choose_rev.tcl:346
+#: lib/choose_rev.tcl:350
msgid "Revision expression is empty."
msgstr "Versions-Ausdruck ist leer."
-#: lib/choose_rev.tcl:531
+#: lib/choose_rev.tcl:537
msgid "Updated"
msgstr "Aktualisiert"
-#: lib/choose_rev.tcl:559
+#: lib/choose_rev.tcl:565
msgid "URL"
msgstr "URL"
@@ -1337,10 +2409,10 @@ msgid ""
"You are about to create the initial commit. There is no commit before this "
"to amend.\n"
msgstr ""
-"Keine Version zur Nachbesserung vorhanden.\n"
+"Kein Commit zur Nachbesserung vorhanden.\n"
"\n"
-"Sie sind dabei, die erste Version zu übertragen. Es gibt keine existierende "
-"Version, die Sie nachbessern könnten.\n"
+"Sie sind dabei, den ersten Commit zu erstellen. Es gibt keinen existierenden "
+"Commit, den Sie nachbessern könnten.\n"
#: lib/commit.tcl:18
msgid ""
@@ -1350,31 +2422,31 @@ msgid ""
"completed. You cannot amend the prior commit unless you first abort the "
"current merge activity.\n"
msgstr ""
-"Nachbesserung währen Zusammenführung nicht möglich.\n"
+"Nachbesserung bei Zusammenführung nicht möglich.\n"
"\n"
-"Sie haben das Zusammenführen von Versionen angefangen, aber noch nicht "
-"beendet. Sie können keine vorige Übertragung nachbessern, solange eine "
+"Sie haben das Zusammenführen von Commits angefangen, aber noch nicht "
+"beendet. Sie können keinen vorigen Commit nachbessern, solange eine "
"unfertige Zusammenführung existiert. Dazu müssen Sie die Zusammenführung "
"beenden oder abbrechen.\n"
-#: lib/commit.tcl:48
+#: lib/commit.tcl:56
msgid "Error loading commit data for amend:"
-msgstr "Fehler beim Laden der Versionsdaten für Nachbessern:"
+msgstr "Fehler beim Laden der Commitdaten für Nachbessern:"
-#: lib/commit.tcl:75
+#: lib/commit.tcl:83
msgid "Unable to obtain your identity:"
msgstr "Benutzername konnte nicht bestimmt werden:"
-#: lib/commit.tcl:80
+#: lib/commit.tcl:88
msgid "Invalid GIT_COMMITTER_IDENT:"
msgstr "Ungültiger Wert von GIT_COMMITTER_INDENT:"
-#: lib/commit.tcl:129
+#: lib/commit.tcl:138
#, tcl-format
msgid "warning: Tcl does not support encoding '%s'."
msgstr "Warning: Tcl/Tk unterstützt die Zeichencodierung »%s« nicht."
-#: lib/commit.tcl:149
+#: lib/commit.tcl:158
msgid ""
"Last scanned state does not match repository state.\n"
"\n"
@@ -1383,14 +2455,14 @@ msgid ""
"\n"
"The rescan will be automatically started now.\n"
msgstr ""
-"Der letzte geladene Status stimmt nicht mehr mit dem Projektarchiv überein.\n"
+"Der letzte geladene Status stimmt nicht mehr mit dem Repository überein.\n"
"\n"
-"Ein anderes Git-Programm hat das Projektarchiv seit dem letzten Laden "
-"geändert. Vor dem Eintragen einer neuen Version muss neu geladen werden.\n"
+"Ein anderes Git-Programm hat das Repository seit dem letzten Laden "
+"geändert. Vor dem nächsten Commit muss neu geladen werden.\n"
"\n"
"Es wird gleich neu geladen.\n"
-#: lib/commit.tcl:172
+#: lib/commit.tcl:182
#, tcl-format
msgid ""
"Unmerged files cannot be committed.\n"
@@ -1398,12 +2470,13 @@ msgid ""
"File %s has merge conflicts. You must resolve them and stage the file "
"before committing.\n"
msgstr ""
-"Nicht zusammengeführte Dateien können nicht eingetragen werden.\n"
+"Nicht zusammengeführte Dateien können nicht committet werden.\n"
"\n"
"Die Datei »%s« hat noch nicht aufgelöste Zusammenführungs-Konflikte. Sie "
-"müssen diese Konflikte auflösen, bevor Sie eintragen können.\n"
+"müssen diese Konflikte auflösen und die Dateien in die Bereitstellung "
+"hinzufügen, bevor Sie committen können.\n"
-#: lib/commit.tcl:180
+#: lib/commit.tcl:190
#, tcl-format
msgid ""
"Unknown file state %s detected.\n"
@@ -1412,19 +2485,19 @@ msgid ""
msgstr ""
"Unbekannter Dateizustand »%s«.\n"
"\n"
-"Datei »%s« kann nicht eingetragen werden.\n"
+"Datei »%s« kann nicht committet werden.\n"
-#: lib/commit.tcl:188
+#: lib/commit.tcl:198
msgid ""
"No changes to commit.\n"
"\n"
"You must stage at least 1 file before you can commit.\n"
msgstr ""
-"Keine Änderungen vorhanden, die eingetragen werden könnten.\n"
+"Keine Änderungen vorhanden, die committet werden könnten.\n"
"\n"
-"Sie müssen mindestens eine Datei bereitstellen, bevor Sie eintragen können.\n"
+"Sie müssen mindestens eine Datei bereitstellen, bevor Sie committen können.\n"
-#: lib/commit.tcl:203
+#: lib/commit.tcl:213
msgid ""
"Please supply a commit message.\n"
"\n"
@@ -1444,42 +2517,58 @@ msgstr ""
"\n"
"- Rest: Eine ausführliche Beschreibung, warum diese Änderung hilfreich ist.\n"
-#: lib/commit.tcl:234
+#: lib/commit.tcl:244
msgid "Calling pre-commit hook..."
-msgstr "Aufrufen der Vor-Eintragen-Kontrolle (»pre-commit hook«)..."
+msgstr "Aufrufen des »pre-commit hook«..."
-#: lib/commit.tcl:249
+#: lib/commit.tcl:259
msgid "Commit declined by pre-commit hook."
-msgstr "Eintragen abgelehnt durch Vor-Eintragen-Kontrolle (»pre-commit hook«)."
+msgstr "Committen abgelehnt durch »pre-commit hook«."
-#: lib/commit.tcl:272
+#: lib/commit.tcl:278
+msgid ""
+"You are about to commit on a detached head. This is a potentially dangerous "
+"thing to do because if you switch to another branch you will lose your "
+"changes and it can be difficult to retrieve them later from the reflog. You "
+"should probably cancel this commit and create a new branch to continue.\n"
+" \n"
+" Do you really want to proceed with your Commit?"
+msgstr ""
+"Sie sind dabei, einen Commit auf losgelöste Branchspitze (»commit to "
+"detached head«) zu erstellen. Das ist riskant, denn wenn Sie zu einem "
+"anderen Branch wechseln, würden Sie diese Änderungen verlieren und es ist "
+"nachträglich schwierig, diese aus dem Commit-Log (»reflog«) wiederzufinden. "
+"Es wird empfohlen, diesen Commit abzubrechen und zunächst einen neuen Branch "
+"zu erstellen.\n"
+"\n"
+" Wollen Sie den Commit trotzdem in dieser Form erstellen?"
+
+#: lib/commit.tcl:299
msgid "Calling commit-msg hook..."
-msgstr "Aufrufen der Versionsbeschreibungs-Kontrolle (»commit-message hook«)..."
+msgstr "Aufrufen des »commit-msg hook«..."
-#: lib/commit.tcl:287
+#: lib/commit.tcl:314
msgid "Commit declined by commit-msg hook."
-msgstr ""
-"Eintragen abgelehnt durch Versionsbeschreibungs-Kontrolle (»commit-message "
-"hook«)."
+msgstr "Committen abgelehnt durch »commit-msg hook«."
-#: lib/commit.tcl:300
+#: lib/commit.tcl:327
msgid "Committing changes..."
-msgstr "Änderungen eintragen..."
+msgstr "Änderungen committen..."
-#: lib/commit.tcl:316
+#: lib/commit.tcl:344
msgid "write-tree failed:"
msgstr "write-tree fehlgeschlagen:"
-#: lib/commit.tcl:317 lib/commit.tcl:361 lib/commit.tcl:382
+#: lib/commit.tcl:345 lib/commit.tcl:395 lib/commit.tcl:422
msgid "Commit failed."
-msgstr "Eintragen fehlgeschlagen."
+msgstr "Committen fehlgeschlagen."
-#: lib/commit.tcl:334
+#: lib/commit.tcl:362
#, tcl-format
msgid "Commit %s appears to be corrupt"
msgstr "Version »%s« scheint beschädigt zu sein"
-#: lib/commit.tcl:339
+#: lib/commit.tcl:367
msgid ""
"No changes to commit.\n"
"\n"
@@ -1487,70 +2576,104 @@ msgid ""
"\n"
"A rescan will be automatically started now.\n"
msgstr ""
-"Keine Änderungen einzutragen.\n"
+"Keine Änderungen zum committen.\n"
"\n"
-"Es gibt keine geänderte Datei bei dieser Version und es wurde auch nichts "
+"Es gibt keine geänderte Datei in diesem Commit und es wurde auch nichts "
"zusammengeführt.\n"
"\n"
"Das Arbeitsverzeichnis wird daher jetzt neu geladen.\n"
-#: lib/commit.tcl:346
+#: lib/commit.tcl:374
msgid "No changes to commit."
-msgstr "Keine Änderungen, die eingetragen werden können."
+msgstr "Keine Änderungen, die committet werden können."
-#: lib/commit.tcl:360
+#: lib/commit.tcl:394
msgid "commit-tree failed:"
msgstr "commit-tree fehlgeschlagen:"
-#: lib/commit.tcl:381
+#: lib/commit.tcl:421
msgid "update-ref failed:"
msgstr "update-ref fehlgeschlagen:"
-#: lib/commit.tcl:469
+#: lib/commit.tcl:514
#, tcl-format
msgid "Created commit %s: %s"
-msgstr "Version %s übertragen: %s"
+msgstr "Commit %s erstellt: %s"
-#: lib/console.tcl:59
-msgid "Working... please wait..."
-msgstr "Verarbeitung. Bitte warten..."
+#: lib/branch_delete.tcl:16
+#, tcl-format
+msgid "%s (%s): Delete Branch"
+msgstr "%s (%s): Branch löschen"
-#: lib/console.tcl:186
-msgid "Success"
-msgstr "Erfolgreich"
+#: lib/branch_delete.tcl:21
+msgid "Delete Local Branch"
+msgstr "Lokalen Branch löschen"
-#: lib/console.tcl:200
-msgid "Error: Command Failed"
-msgstr "Fehler: Kommando fehlgeschlagen"
+#: lib/branch_delete.tcl:39
+msgid "Local Branches"
+msgstr "Lokale Branches"
-#: lib/database.tcl:43
+#: lib/branch_delete.tcl:51
+msgid "Delete Only If Merged Into"
+msgstr "Nur löschen, wenn zusammengeführt nach"
+
+#: lib/branch_delete.tcl:103
+#, tcl-format
+msgid "The following branches are not completely merged into %s:"
+msgstr "Folgende Branches sind noch nicht mit »%s« zusammengeführt:"
+
+#: lib/branch_delete.tcl:131
+#, tcl-format
+msgid " - %s:"
+msgstr " - %s:"
+
+#: lib/branch_delete.tcl:141
+#, tcl-format
+msgid ""
+"Failed to delete branches:\n"
+"%s"
+msgstr ""
+"Fehler beim Löschen der Branches:\n"
+"%s"
+
+#: lib/date.tcl:25
+#, tcl-format
+msgid "Invalid date from Git: %s"
+msgstr "Ungültiges Datum von Git: %s"
+
+#: lib/database.tcl:42
msgid "Number of loose objects"
msgstr "Anzahl unverknüpfter Objekte"
-#: lib/database.tcl:44
+#: lib/database.tcl:43
msgid "Disk space used by loose objects"
msgstr "Festplattenplatz von unverknüpften Objekten"
-#: lib/database.tcl:45
+#: lib/database.tcl:44
msgid "Number of packed objects"
msgstr "Anzahl komprimierter Objekte"
-#: lib/database.tcl:46
+#: lib/database.tcl:45
msgid "Number of packs"
msgstr "Anzahl Komprimierungseinheiten"
-#: lib/database.tcl:47
+#: lib/database.tcl:46
msgid "Disk space used by packed objects"
msgstr "Festplattenplatz von komprimierten Objekten"
-#: lib/database.tcl:48
+#: lib/database.tcl:47
msgid "Packed objects waiting for pruning"
msgstr "Komprimierte Objekte, die zum Aufräumen vorgesehen sind"
-#: lib/database.tcl:49
+#: lib/database.tcl:48
msgid "Garbage files"
msgstr "Dateien im Mülleimer"
+#: lib/database.tcl:66
+#, tcl-format
+msgid "%s (%s): Database Statistics"
+msgstr "%s (%s): Datenbankstatistik"
+
#: lib/database.tcl:72
msgid "Compressing the object database"
msgstr "Objektdatenbank komprimieren"
@@ -1569,214 +2692,37 @@ msgid ""
"\n"
"Compress the database now?"
msgstr ""
-"Dieses Projektarchiv enthält ungefähr %i nicht verknüpfte Objekte.\n"
+"Dieses Repository enthält ungefähr %i nicht verknüpfte Objekte.\n"
"\n"
-"Für eine optimale Performance wird empfohlen, die Datenbank des Projektarchivs zu komprimieren.\n"
+"Für eine optimale Performance wird empfohlen, die Datenbank des Repository "
+"zu komprimieren.\n"
"\n"
"Soll die Datenbank jetzt komprimiert werden?"
-#: lib/date.tcl:25
+#: lib/error.tcl:20
#, tcl-format
-msgid "Invalid date from Git: %s"
-msgstr "Ungültiges Datum von Git: %s"
-
-#: lib/diff.tcl:64
-#, tcl-format
-msgid ""
-"No differences detected.\n"
-"\n"
-"%s has no changes.\n"
-"\n"
-"The modification date of this file was updated by another application, but "
-"the content within the file was not changed.\n"
-"\n"
-"A rescan will be automatically started to find other files which may have "
-"the same state."
-msgstr ""
-"Keine Änderungen feststellbar.\n"
-"\n"
-"»%s« enthält keine Änderungen. Zwar wurde das Änderungsdatum dieser Datei von "
-"einem anderen Programm modifiziert, aber der Inhalt der Datei ist "
-"unverändert.\n"
-"\n"
-"Das Arbeitsverzeichnis wird jetzt neu geladen, um diese Änderung bei allen "
-"Dateien zu prüfen."
-
-#: lib/diff.tcl:104
-#, tcl-format
-msgid "Loading diff of %s..."
-msgstr "Vergleich von »%s« laden..."
-
-#: lib/diff.tcl:125
-msgid ""
-"LOCAL: deleted\n"
-"REMOTE:\n"
-msgstr ""
-"LOKAL: gelöscht\n"
-"ANDERES:\n"
-
-#: lib/diff.tcl:130
-msgid ""
-"REMOTE: deleted\n"
-"LOCAL:\n"
-msgstr ""
-"ANDERES: gelöscht\n"
-"LOKAL:\n"
-
-#: lib/diff.tcl:137
-msgid "LOCAL:\n"
-msgstr "LOKAL:\n"
-
-#: lib/diff.tcl:140
-msgid "REMOTE:\n"
-msgstr "ANDERES:\n"
-
-#: lib/diff.tcl:202 lib/diff.tcl:319
-#, tcl-format
-msgid "Unable to display %s"
-msgstr "Datei »%s« kann nicht angezeigt werden"
-
-#: lib/diff.tcl:203
-msgid "Error loading file:"
-msgstr "Fehler beim Laden der Datei:"
-
-#: lib/diff.tcl:210
-msgid "Git Repository (subproject)"
-msgstr "Git-Projektarchiv (Unterprojekt)"
-
-#: lib/diff.tcl:222
-msgid "* Binary file (not showing content)."
-msgstr "* Binärdatei (Inhalt wird nicht angezeigt)"
-
-#: lib/diff.tcl:227
-#, tcl-format
-msgid ""
-"* Untracked file is %d bytes.\n"
-"* Showing only first %d bytes.\n"
-msgstr ""
-"* Datei nicht unter Versionskontrolle, Dateigröße %d Bytes.\n"
-"* Nur erste %d Bytes werden angezeigt.\n"
-
-#: lib/diff.tcl:233
-#, tcl-format
-msgid ""
-"\n"
-"* Untracked file clipped here by %s.\n"
-"* To see the entire file, use an external editor.\n"
-msgstr ""
-"\n"
-"* Datei nicht unter Versionskontrolle, hier abgeschnitten durch %s.\n"
-"* Zum Ansehen der vollständigen Datei externen Editor benutzen.\n"
-
-#: lib/diff.tcl:482
-msgid "Failed to unstage selected hunk."
-msgstr ""
-"Fehler beim Herausnehmen des gewählten Kontexts aus der Bereitstellung."
-
-#: lib/diff.tcl:489
-msgid "Failed to stage selected hunk."
-msgstr "Fehler beim Bereitstellen des gewählten Kontexts."
-
-#: lib/diff.tcl:568
-msgid "Failed to unstage selected line."
-msgstr "Fehler beim Herausnehmen der gewählten Zeile aus der Bereitstellung."
-
-#: lib/diff.tcl:576
-msgid "Failed to stage selected line."
-msgstr "Fehler beim Bereitstellen der gewählten Zeile."
-
-#: lib/encoding.tcl:443
-msgid "Default"
-msgstr "Voreinstellung"
-
-#: lib/encoding.tcl:448
-#, tcl-format
-msgid "System (%s)"
-msgstr "Systemweit (%s)"
-
-#: lib/encoding.tcl:459 lib/encoding.tcl:465
-msgid "Other"
-msgstr "Andere"
-
-#: lib/error.tcl:20 lib/error.tcl:114
-msgid "error"
-msgstr "Fehler"
+msgid "%s: error"
+msgstr "%s: Fehler"
#: lib/error.tcl:36
-msgid "warning"
-msgstr "Warnung"
-
-#: lib/error.tcl:94
-msgid "You must correct the above errors before committing."
-msgstr ""
-"Sie müssen die obigen Fehler zuerst beheben, bevor Sie eintragen können."
-
-#: lib/index.tcl:6
-msgid "Unable to unlock the index."
-msgstr "Bereitstellung kann nicht wieder freigegeben werden."
-
-#: lib/index.tcl:15
-msgid "Index Error"
-msgstr "Fehler in Bereitstellung"
-
-#: lib/index.tcl:17
-msgid ""
-"Updating the Git index failed. A rescan will be automatically started to "
-"resynchronize git-gui."
-msgstr ""
-"Das Aktualisieren der Git-Bereitstellung ist fehlgeschlagen. Eine allgemeine "
-"Git-Aktualisierung wird jetzt gestartet, um git-gui wieder mit git zu "
-"synchronisieren."
-
-#: lib/index.tcl:28
-msgid "Continue"
-msgstr "Fortsetzen"
-
-#: lib/index.tcl:31
-msgid "Unlock Index"
-msgstr "Bereitstellung freigeben"
-
-#: lib/index.tcl:289
#, tcl-format
-msgid "Unstaging %s from commit"
-msgstr "Datei »%s« aus der Bereitstellung herausnehmen"
+msgid "%s: warning"
+msgstr "%s: Warnung"
-#: lib/index.tcl:328
-msgid "Ready to commit."
-msgstr "Bereit zum Eintragen."
-
-#: lib/index.tcl:341
+#: lib/error.tcl:80
#, tcl-format
-msgid "Adding %s"
-msgstr "»%s« hinzufügen..."
+msgid "%s hook failed:"
+msgstr "%s hook fehlgeschlagen:"
-#: lib/index.tcl:398
-#, tcl-format
-msgid "Revert changes in file %s?"
-msgstr "Änderungen in Datei »%s« verwerfen?"
-
-#: lib/index.tcl:400
-#, tcl-format
-msgid "Revert changes in these %i files?"
-msgstr "Änderungen in den gewählten %i Dateien verwerfen?"
-
-#: lib/index.tcl:408
-msgid "Any unstaged changes will be permanently lost by the revert."
+#: lib/error.tcl:96
+msgid "You must correct the above errors before committing."
msgstr ""
-"Alle nicht bereitgestellten Änderungen werden beim Verwerfen verloren gehen."
-
-#: lib/index.tcl:411
-msgid "Do Nothing"
-msgstr "Nichts tun"
-
-#: lib/index.tcl:429
-msgid "Reverting selected files"
-msgstr "Änderungen in gewählten Dateien verwerfen"
+"Sie müssen die obigen Fehler zuerst beheben, bevor Sie committen können."
-#: lib/index.tcl:433
+#: lib/error.tcl:116
#, tcl-format
-msgid "Reverting %s"
-msgstr "Änderungen in %s verwerfen"
+msgid "%s (%s): error"
+msgstr "%s (%s): Fehler"
#: lib/merge.tcl:13
msgid ""
@@ -1786,7 +2732,7 @@ msgid ""
msgstr ""
"Zusammenführen kann nicht gleichzeitig mit Nachbessern durchgeführt werden.\n"
"\n"
-"Sie müssen zuerst die Nachbesserungs-Version abschließen, bevor Sie "
+"Sie müssen zuerst den Nachbesserungs-Commit abschließen, bevor Sie "
"zusammenführen können.\n"
#: lib/merge.tcl:27
@@ -1798,9 +2744,9 @@ msgid ""
"\n"
"The rescan will be automatically started now.\n"
msgstr ""
-"Der letzte geladene Status stimmt nicht mehr mit dem Projektarchiv überein.\n"
+"Der letzte geladene Status stimmt nicht mehr mit dem Repository überein.\n"
"\n"
-"Ein anderes Git-Programm hat das Projektarchiv seit dem letzten Laden "
+"Ein anderes Git-Programm hat das Repository seit dem letzten Laden "
"geändert. Vor einem Zusammenführen muss neu geladen werden.\n"
"\n"
"Es wird gleich neu geladen.\n"
@@ -1817,10 +2763,11 @@ msgid ""
msgstr ""
"Zusammenführung mit Konflikten.\n"
"\n"
-"Die Datei »%s« enthält Konflikte beim Zusammenführen. Sie müssen diese "
-"Konflikte per Hand auflösen. Anschließend müssen Sie die Datei wieder "
-"bereitstellen und eintragen, um die Zusammenführung abzuschließen. Erst "
-"danach kann eine neue Zusammenführung begonnen werden.\n"
+"Die Datei »%s« enthält Konflikte beim Zusammenführen.\n"
+"\n"
+"Sie müssen diese Konflikte per Hand auflösen. Anschließend müssen Sie die "
+"Datei wieder bereitstellen und committen, um die Zusammenführung "
+"abzuschließen. Erst danach kann eine neue Zusammenführung begonnen werden.\n"
#: lib/merge.tcl:55
#, tcl-format
@@ -1834,39 +2781,45 @@ msgid ""
msgstr ""
"Es liegen Änderungen vor.\n"
"\n"
-"Die Datei »%s« wurde geändert. Sie sollten zuerst die bereitgestellte "
-"Version abschließen, bevor Sie eine Zusammenführung beginnen. Mit dieser "
-"Reihenfolge können Sie mögliche Konflikte beim Zusammenführen wesentlich "
-"einfacher beheben oder abbrechen.\n"
+"Die Datei »%s« wurde geändert.\n"
+"\n"
+"Sie sollten zuerst den bereitgestellten Commit abschließen, bevor Sie eine "
+"Zusammenführung beginnen. Mit dieser Reihenfolge können Sie mögliche "
+"Konflikte beim Zusammenführen wesentlich einfacher beheben oder abbrechen.\n"
-#: lib/merge.tcl:107
+#: lib/merge.tcl:108
#, tcl-format
msgid "%s of %s"
msgstr "%s von %s"
-#: lib/merge.tcl:120
+#: lib/merge.tcl:126
#, tcl-format
msgid "Merging %s and %s..."
msgstr "Zusammenführen von %s und %s..."
-#: lib/merge.tcl:131
+#: lib/merge.tcl:137
msgid "Merge completed successfully."
msgstr "Zusammenführen erfolgreich abgeschlossen."
-#: lib/merge.tcl:133
+#: lib/merge.tcl:139
msgid "Merge failed. Conflict resolution is required."
msgstr "Zusammenführen fehlgeschlagen. Konfliktauflösung ist notwendig."
-#: lib/merge.tcl:158
+#: lib/merge.tcl:156
+#, tcl-format
+msgid "%s (%s): Merge"
+msgstr "%s (%s): Zusammenführen"
+
+#: lib/merge.tcl:164
#, tcl-format
msgid "Merge Into %s"
msgstr "Zusammenführen in »%s«"
-#: lib/merge.tcl:177
+#: lib/merge.tcl:183
msgid "Revision To Merge"
msgstr "Zusammenzuführende Version"
-#: lib/merge.tcl:212
+#: lib/merge.tcl:218
msgid ""
"Cannot abort while amending.\n"
"\n"
@@ -1874,9 +2827,9 @@ msgid ""
msgstr ""
"Abbruch der Nachbesserung ist nicht möglich.\n"
"\n"
-"Sie müssen die Nachbesserung der Version abschließen.\n"
+"Sie müssen die Nachbesserung diese Commits abschließen.\n"
-#: lib/merge.tcl:222
+#: lib/merge.tcl:228
msgid ""
"Abort merge?\n"
"\n"
@@ -1886,12 +2839,11 @@ msgid ""
msgstr ""
"Zusammenführen abbrechen?\n"
"\n"
-"Wenn Sie abbrechen, gehen alle noch nicht eingetragenen Änderungen "
-"verloren.\n"
+"Wenn Sie abbrechen, gehen alle noch nicht committeten Änderungen verloren.\n"
"\n"
"Zusammenführen jetzt abbrechen?"
-#: lib/merge.tcl:228
+#: lib/merge.tcl:234
msgid ""
"Reset changes?\n"
"\n"
@@ -1899,694 +2851,24 @@ msgid ""
"\n"
"Continue with resetting the current changes?"
msgstr ""
-"Änderungen zurücksetzen?\n"
+"Änderungen verwerfen?\n"
"\n"
-"Wenn Sie zurücksetzen, gehen alle noch nicht eingetragenen Änderungen "
-"verloren.\n"
+"Alle noch nicht committeten Änderungen würden verloren gehen.\n"
"\n"
-"Änderungen jetzt zurücksetzen?"
+"Änderungen jetzt verwerfen?"
-#: lib/merge.tcl:239
+#: lib/merge.tcl:246
msgid "Aborting"
msgstr "Abbruch"
-#: lib/merge.tcl:239
+#: lib/merge.tcl:247
msgid "files reset"
msgstr "Dateien zurückgesetzt"
-#: lib/merge.tcl:267
+#: lib/merge.tcl:277
msgid "Abort failed."
msgstr "Abbruch fehlgeschlagen."
-#: lib/merge.tcl:269
+#: lib/merge.tcl:279
msgid "Abort completed. Ready."
msgstr "Abbruch durchgeführt. Bereit."
-
-#: lib/mergetool.tcl:8
-msgid "Force resolution to the base version?"
-msgstr "Konflikt durch Basisversion ersetzen?"
-
-#: lib/mergetool.tcl:9
-msgid "Force resolution to this branch?"
-msgstr "Konflikt durch diesen Zweig ersetzen?"
-
-#: lib/mergetool.tcl:10
-msgid "Force resolution to the other branch?"
-msgstr "Konflikt durch anderen Zweig ersetzen?"
-
-#: lib/mergetool.tcl:14
-#, tcl-format
-msgid ""
-"Note that the diff shows only conflicting changes.\n"
-"\n"
-"%s will be overwritten.\n"
-"\n"
-"This operation can be undone only by restarting the merge."
-msgstr ""
-"Hinweis: Der Vergleich zeigt nur konfliktverursachende Änderungen an.\n"
-"\n"
-"»%s« wird überschrieben.\n"
-"\n"
-"Diese Operation kann nur rückgängig gemacht werden, wenn die\n"
-"Zusammenführung erneut gestartet wird."
-
-#: lib/mergetool.tcl:45
-#, tcl-format
-msgid "File %s seems to have unresolved conflicts, still stage?"
-msgstr "Datei »%s« hat nicht aufgelöste Konflikte. Trotzdem bereitstellen?"
-
-#: lib/mergetool.tcl:60
-#, tcl-format
-msgid "Adding resolution for %s"
-msgstr "Auflösung hinzugefügt für %s"
-
-#: lib/mergetool.tcl:141
-msgid "Cannot resolve deletion or link conflicts using a tool"
-msgstr ""
-"Konflikte durch gelöschte Dateien oder symbolische Links können nicht durch "
-"das Zusamenführungswerkzeug gelöst werden."
-
-#: lib/mergetool.tcl:146
-msgid "Conflict file does not exist"
-msgstr "Konflikt-Datei existiert nicht"
-
-#: lib/mergetool.tcl:264
-#, tcl-format
-msgid "Not a GUI merge tool: '%s'"
-msgstr "Kein GUI Zusammenführungswerkzeug: »%s«"
-
-#: lib/mergetool.tcl:268
-#, tcl-format
-msgid "Unsupported merge tool '%s'"
-msgstr "Unbekanntes Zusammenführungswerkzeug: »%s«"
-
-#: lib/mergetool.tcl:303
-msgid "Merge tool is already running, terminate it?"
-msgstr "Zusammenführungswerkzeug läuft bereits. Soll es abgebrochen werden?"
-
-#: lib/mergetool.tcl:323
-#, tcl-format
-msgid ""
-"Error retrieving versions:\n"
-"%s"
-msgstr ""
-"Fehler beim Abrufen der Dateiversionen:\n"
-"%s"
-
-#: lib/mergetool.tcl:343
-#, tcl-format
-msgid ""
-"Could not start the merge tool:\n"
-"\n"
-"%s"
-msgstr ""
-"Zusammenführungswerkzeug konnte nicht gestartet werden:\n"
-"\n"
-"%s"
-
-#: lib/mergetool.tcl:347
-msgid "Running merge tool..."
-msgstr "Zusammenführungswerkzeug starten..."
-
-#: lib/mergetool.tcl:375 lib/mergetool.tcl:383
-msgid "Merge tool failed."
-msgstr "Zusammenführungswerkzeug fehlgeschlagen."
-
-#: lib/option.tcl:11
-#, tcl-format
-msgid "Invalid global encoding '%s'"
-msgstr "Ungültige globale Zeichenkodierung »%s«"
-
-#: lib/option.tcl:19
-#, tcl-format
-msgid "Invalid repo encoding '%s'"
-msgstr "Ungültige Archiv-Zeichenkodierung »%s«"
-
-#: lib/option.tcl:117
-msgid "Restore Defaults"
-msgstr "Voreinstellungen wiederherstellen"
-
-#: lib/option.tcl:121
-msgid "Save"
-msgstr "Speichern"
-
-#: lib/option.tcl:131
-#, tcl-format
-msgid "%s Repository"
-msgstr "Projektarchiv %s"
-
-#: lib/option.tcl:132
-msgid "Global (All Repositories)"
-msgstr "Global (Alle Projektarchive)"
-
-#: lib/option.tcl:138
-msgid "User Name"
-msgstr "Benutzername"
-
-#: lib/option.tcl:139
-msgid "Email Address"
-msgstr "E-Mail-Adresse"
-
-#: lib/option.tcl:141
-msgid "Summarize Merge Commits"
-msgstr "Zusammenführungs-Versionen zusammenfassen"
-
-#: lib/option.tcl:142
-msgid "Merge Verbosity"
-msgstr "Ausführlichkeit der Zusammenführen-Meldungen"
-
-#: lib/option.tcl:143
-msgid "Show Diffstat After Merge"
-msgstr "Vergleichsstatistik nach Zusammenführen anzeigen"
-
-#: lib/option.tcl:144
-msgid "Use Merge Tool"
-msgstr "Zusammenführungswerkzeug"
-
-#: lib/option.tcl:146
-msgid "Trust File Modification Timestamps"
-msgstr "Auf Dateiänderungsdatum verlassen"
-
-#: lib/option.tcl:147
-msgid "Prune Tracking Branches During Fetch"
-msgstr "Übernahmezweige aufräumen während Anforderung"
-
-#: lib/option.tcl:148
-msgid "Match Tracking Branches"
-msgstr "Passend zu Übernahmezweig"
-
-#: lib/option.tcl:149
-msgid "Blame Copy Only On Changed Files"
-msgstr "Kopie-Annotieren nur bei geänderten Dateien"
-
-#: lib/option.tcl:150
-msgid "Minimum Letters To Blame Copy On"
-msgstr "Mindestzahl Zeichen für Kopie-Annotieren"
-
-#: lib/option.tcl:151
-msgid "Blame History Context Radius (days)"
-msgstr "Anzahl Tage für Historien-Kontext"
-
-#: lib/option.tcl:152
-msgid "Number of Diff Context Lines"
-msgstr "Anzahl der Kontextzeilen beim Vergleich"
-
-#: lib/option.tcl:153
-msgid "Commit Message Text Width"
-msgstr "Textbreite der Versionsbeschreibung"
-
-#: lib/option.tcl:154
-msgid "New Branch Name Template"
-msgstr "Namensvorschlag für neue Zweige"
-
-#: lib/option.tcl:155
-msgid "Default File Contents Encoding"
-msgstr "Voreingestellte Zeichenkodierung"
-
-#: lib/option.tcl:203
-msgid "Change"
-msgstr "Ändern"
-
-#: lib/option.tcl:230
-msgid "Spelling Dictionary:"
-msgstr "Wörterbuch Rechtschreibprüfung:"
-
-#: lib/option.tcl:254
-msgid "Change Font"
-msgstr "Schriftart ändern"
-
-#: lib/option.tcl:258
-#, tcl-format
-msgid "Choose %s"
-msgstr "%s wählen"
-
-#: lib/option.tcl:264
-msgid "pt."
-msgstr "pt."
-
-#: lib/option.tcl:278
-msgid "Preferences"
-msgstr "Einstellungen"
-
-#: lib/option.tcl:314
-msgid "Failed to completely save options:"
-msgstr "Optionen konnten nicht gespeichert werden:"
-
-#: lib/remote_add.tcl:19
-msgid "Add Remote"
-msgstr "Externes Archiv hinzufügen"
-
-#: lib/remote_add.tcl:24
-msgid "Add New Remote"
-msgstr "Neues externes Archiv hinzufügen"
-
-#: lib/remote_add.tcl:28 lib/tools_dlg.tcl:36
-msgid "Add"
-msgstr "Hinzufügen"
-
-#: lib/remote_add.tcl:37
-msgid "Remote Details"
-msgstr "Einzelheiten des externen Archivs"
-
-#: lib/remote_add.tcl:50
-msgid "Location:"
-msgstr "Adresse:"
-
-#: lib/remote_add.tcl:62
-msgid "Further Action"
-msgstr "Weitere Aktion jetzt"
-
-#: lib/remote_add.tcl:65
-msgid "Fetch Immediately"
-msgstr "Gleich anfordern"
-
-#: lib/remote_add.tcl:71
-msgid "Initialize Remote Repository and Push"
-msgstr "Externes Archiv initialisieren und dahin versenden"
-
-#: lib/remote_add.tcl:77
-msgid "Do Nothing Else Now"
-msgstr "Nichts tun"
-
-#: lib/remote_add.tcl:101
-msgid "Please supply a remote name."
-msgstr "Bitte geben Sie einen Namen des externen Archivs an."
-
-#: lib/remote_add.tcl:114
-#, tcl-format
-msgid "'%s' is not an acceptable remote name."
-msgstr "»%s« ist kein zulässiger Name eines externen Archivs."
-
-#: lib/remote_add.tcl:125
-#, tcl-format
-msgid "Failed to add remote '%s' of location '%s'."
-msgstr "Fehler beim Hinzufügen des externen Archivs »%s« aus Herkunftsort »%s«."
-
-#: lib/remote_add.tcl:133 lib/transport.tcl:6
-#, tcl-format
-msgid "fetch %s"
-msgstr "»%s« anfordern"
-
-#: lib/remote_add.tcl:134
-#, tcl-format
-msgid "Fetching the %s"
-msgstr "»%s« anfordern"
-
-#: lib/remote_add.tcl:157
-#, tcl-format
-msgid "Do not know how to initialize repository at location '%s'."
-msgstr "Initialisieren eines externen Archivs an Adresse »%s« ist nicht möglich."
-
-#: lib/remote_add.tcl:163 lib/transport.tcl:25 lib/transport.tcl:63
-#: lib/transport.tcl:81
-#, tcl-format
-msgid "push %s"
-msgstr "»%s« versenden..."
-
-#: lib/remote_add.tcl:164
-#, tcl-format
-msgid "Setting up the %s (at %s)"
-msgstr "Einrichten von »%s« an »%s«"
-
-#: lib/remote_branch_delete.tcl:29 lib/remote_branch_delete.tcl:34
-msgid "Delete Branch Remotely"
-msgstr "Zweig in externem Archiv löschen"
-
-#: lib/remote_branch_delete.tcl:47
-msgid "From Repository"
-msgstr "In Projektarchiv"
-
-#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:134
-msgid "Remote:"
-msgstr "Externes Archiv:"
-
-#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:149
-msgid "Arbitrary Location:"
-msgstr "Adresse:"
-
-#: lib/remote_branch_delete.tcl:84
-msgid "Branches"
-msgstr "Zweige"
-
-#: lib/remote_branch_delete.tcl:109
-msgid "Delete Only If"
-msgstr "Nur löschen, wenn"
-
-#: lib/remote_branch_delete.tcl:111
-msgid "Merged Into:"
-msgstr "Zusammengeführt mit:"
-
-#: lib/remote_branch_delete.tcl:152
-msgid "A branch is required for 'Merged Into'."
-msgstr "Für »Zusammenführen mit« muss ein Zweig angegeben werden."
-
-#: lib/remote_branch_delete.tcl:184
-#, tcl-format
-msgid ""
-"The following branches are not completely merged into %s:\n"
-"\n"
-" - %s"
-msgstr ""
-"Folgende Zweige sind noch nicht mit »%s« zusammengeführt:\n"
-"\n"
-" - %s"
-
-#: lib/remote_branch_delete.tcl:189
-#, tcl-format
-msgid ""
-"One or more of the merge tests failed because you have not fetched the "
-"necessary commits. Try fetching from %s first."
-msgstr ""
-"Ein oder mehrere Zusammenführungen sind fehlgeschlagen, da Sie nicht die "
-"notwendigen Versionen vorher angefordert haben. Sie sollten versuchen, "
-"zuerst von »%s« anzufordern."
-
-#: lib/remote_branch_delete.tcl:207
-msgid "Please select one or more branches to delete."
-msgstr "Bitte wählen Sie mindestens einen Zweig, der gelöscht werden soll."
-
-#: lib/remote_branch_delete.tcl:226
-#, tcl-format
-msgid "Deleting branches from %s"
-msgstr "Zweige auf »%s« werden gelöscht"
-
-#: lib/remote_branch_delete.tcl:292
-msgid "No repository selected."
-msgstr "Kein Projektarchiv ausgewählt."
-
-#: lib/remote_branch_delete.tcl:297
-#, tcl-format
-msgid "Scanning %s..."
-msgstr "»%s« laden..."
-
-#: lib/remote.tcl:163
-msgid "Remove Remote"
-msgstr "Externes Archiv entfernen"
-
-#: lib/remote.tcl:168
-msgid "Prune from"
-msgstr "Aufräumen von"
-
-#: lib/remote.tcl:173
-msgid "Fetch from"
-msgstr "Anfordern von"
-
-#: lib/remote.tcl:215
-msgid "Push to"
-msgstr "Versenden nach"
-
-#: lib/search.tcl:21
-msgid "Find:"
-msgstr "Suchen:"
-
-#: lib/search.tcl:23
-msgid "Next"
-msgstr "Nächster"
-
-#: lib/search.tcl:24
-msgid "Prev"
-msgstr "Voriger"
-
-#: lib/search.tcl:25
-msgid "Case-Sensitive"
-msgstr "Groß-/Kleinschreibung unterscheiden"
-
-#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
-msgid "Cannot write shortcut:"
-msgstr "Fehler beim Schreiben der Verknüpfung:"
-
-#: lib/shortcut.tcl:137
-msgid "Cannot write icon:"
-msgstr "Fehler beim Erstellen des Icons:"
-
-#: lib/spellcheck.tcl:57
-msgid "Unsupported spell checker"
-msgstr "Rechtschreibprüfungsprogramm nicht unterstützt"
-
-#: lib/spellcheck.tcl:65
-msgid "Spell checking is unavailable"
-msgstr "Rechtschreibprüfung nicht verfügbar"
-
-#: lib/spellcheck.tcl:68
-msgid "Invalid spell checking configuration"
-msgstr "Unbenutzbare Konfiguration der Rechtschreibprüfung"
-
-#: lib/spellcheck.tcl:70
-#, tcl-format
-msgid "Reverting dictionary to %s."
-msgstr "Wörterbuch auf %s zurückgesetzt."
-
-#: lib/spellcheck.tcl:73
-msgid "Spell checker silently failed on startup"
-msgstr "Rechtschreibprüfungsprogramm mit Fehler abgebrochen"
-
-#: lib/spellcheck.tcl:80
-msgid "Unrecognized spell checker"
-msgstr "Unbekanntes Rechtschreibprüfungsprogramm"
-
-#: lib/spellcheck.tcl:186
-msgid "No Suggestions"
-msgstr "Keine Vorschläge"
-
-#: lib/spellcheck.tcl:388
-msgid "Unexpected EOF from spell checker"
-msgstr "Unerwartetes EOF vom Rechtschreibprüfungsprogramm"
-
-#: lib/spellcheck.tcl:392
-msgid "Spell Checker Failed"
-msgstr "Rechtschreibprüfung fehlgeschlagen"
-
-#: lib/sshkey.tcl:31
-msgid "No keys found."
-msgstr "Keine Schlüssel gefunden."
-
-#: lib/sshkey.tcl:34
-#, tcl-format
-msgid "Found a public key in: %s"
-msgstr "Öffentlicher Schlüssel gefunden in: %s"
-
-#: lib/sshkey.tcl:40
-msgid "Generate Key"
-msgstr "Schlüssel erzeugen"
-
-#: lib/sshkey.tcl:56
-msgid "Copy To Clipboard"
-msgstr "In Zwischenablage kopieren"
-
-#: lib/sshkey.tcl:70
-msgid "Your OpenSSH Public Key"
-msgstr "Ihr OpenSSH öffenlicher Schlüssel"
-
-#: lib/sshkey.tcl:78
-msgid "Generating..."
-msgstr "Erzeugen..."
-
-#: lib/sshkey.tcl:84
-#, tcl-format
-msgid ""
-"Could not start ssh-keygen:\n"
-"\n"
-"%s"
-msgstr ""
-"Konnte »ssh-keygen« nicht starten:\n"
-"\n"
-"%s"
-
-#: lib/sshkey.tcl:111
-msgid "Generation failed."
-msgstr "Schlüsselerzeugung fehlgeschlagen."
-
-#: lib/sshkey.tcl:118
-msgid "Generation succeeded, but no keys found."
-msgstr "Schlüsselerzeugung erfolgreich, aber keine Schlüssel gefunden."
-
-#: lib/sshkey.tcl:121
-#, tcl-format
-msgid "Your key is in: %s"
-msgstr "Ihr Schlüssel ist abgelegt in: %s"
-
-#: lib/status_bar.tcl:83
-#, tcl-format
-msgid "%s ... %*i of %*i %s (%3i%%)"
-msgstr "%s ... %*i von %*i %s (%3i%%)"
-
-#: lib/tools_dlg.tcl:22
-msgid "Add Tool"
-msgstr "Werkzeug hinzufügen"
-
-#: lib/tools_dlg.tcl:28
-msgid "Add New Tool Command"
-msgstr "Neues Kommando für Werkzeug hinzufügen"
-
-#: lib/tools_dlg.tcl:33
-msgid "Add globally"
-msgstr "Global hinzufügen"
-
-#: lib/tools_dlg.tcl:45
-msgid "Tool Details"
-msgstr "Einzelheiten des Werkzeugs"
-
-#: lib/tools_dlg.tcl:48
-msgid "Use '/' separators to create a submenu tree:"
-msgstr "Benutzen Sie einen Schrägstrich »/«, um Untermenüs zu erstellen:"
-
-#: lib/tools_dlg.tcl:61
-msgid "Command:"
-msgstr "Kommando:"
-
-#: lib/tools_dlg.tcl:74
-msgid "Show a dialog before running"
-msgstr "Bestätigungsfrage vor Starten anzeigen"
-
-#: lib/tools_dlg.tcl:80
-msgid "Ask the user to select a revision (sets $REVISION)"
-msgstr "Benutzer nach Version fragen (setzt $REVISION)"
-
-#: lib/tools_dlg.tcl:85
-msgid "Ask the user for additional arguments (sets $ARGS)"
-msgstr "Benutzer nach zusätzlichen Argumenten fragen (setzt $ARGS)"
-
-#: lib/tools_dlg.tcl:92
-msgid "Don't show the command output window"
-msgstr "Kein Ausgabefenster zeigen"
-
-#: lib/tools_dlg.tcl:97
-msgid "Run only if a diff is selected ($FILENAME not empty)"
-msgstr "Nur starten, wenn ein Vergleich gewählt ist ($FILENAME ist nicht leer)"
-
-#: lib/tools_dlg.tcl:121
-msgid "Please supply a name for the tool."
-msgstr "Bitte geben Sie einen Werkzeugnamen an."
-
-#: lib/tools_dlg.tcl:129
-#, tcl-format
-msgid "Tool '%s' already exists."
-msgstr "Werkzeug »%s« existiert bereits."
-
-#: lib/tools_dlg.tcl:151
-#, tcl-format
-msgid ""
-"Could not add tool:\n"
-"%s"
-msgstr ""
-"Werkzeug konnte nicht hinzugefügt werden:\n"
-"\n"
-"%s"
-
-#: lib/tools_dlg.tcl:190
-msgid "Remove Tool"
-msgstr "Werkzeug entfernen"
-
-#: lib/tools_dlg.tcl:196
-msgid "Remove Tool Commands"
-msgstr "Werkzeugkommandos entfernen"
-
-#: lib/tools_dlg.tcl:200
-msgid "Remove"
-msgstr "Entfernen"
-
-#: lib/tools_dlg.tcl:236
-msgid "(Blue denotes repository-local tools)"
-msgstr "(Werkzeuge für lokales Archiv werden in Blau angezeigt)"
-
-#: lib/tools_dlg.tcl:297
-#, tcl-format
-msgid "Run Command: %s"
-msgstr "Kommando aufrufen: %s"
-
-#: lib/tools_dlg.tcl:311
-msgid "Arguments"
-msgstr "Argumente"
-
-#: lib/tools_dlg.tcl:348
-msgid "OK"
-msgstr "Ok"
-
-#: lib/tools.tcl:75
-#, tcl-format
-msgid "Running %s requires a selected file."
-msgstr "Um »%s« zu starten, muss eine Datei ausgewählt sein."
-
-#: lib/tools.tcl:90
-#, tcl-format
-msgid "Are you sure you want to run %s?"
-msgstr "Wollen Sie %s wirklich starten?"
-
-#: lib/tools.tcl:110
-#, tcl-format
-msgid "Tool: %s"
-msgstr "Werkzeug: %s"
-
-#: lib/tools.tcl:111
-#, tcl-format
-msgid "Running: %s"
-msgstr "Starten: %s"
-
-#: lib/tools.tcl:149
-#, tcl-format
-msgid "Tool completed successfully: %s"
-msgstr "Werkzeug erfolgreich abgeschlossen: %s"
-
-#: lib/tools.tcl:151
-#, tcl-format
-msgid "Tool failed: %s"
-msgstr "Werkzeug fehlgeschlagen: %s"
-
-#: lib/transport.tcl:7
-#, tcl-format
-msgid "Fetching new changes from %s"
-msgstr "Neue Änderungen von »%s« holen"
-
-#: lib/transport.tcl:18
-#, tcl-format
-msgid "remote prune %s"
-msgstr "Aufräumen von »%s«"
-
-#: lib/transport.tcl:19
-#, tcl-format
-msgid "Pruning tracking branches deleted from %s"
-msgstr "Übernahmezweige aufräumen und entfernen, die in »%s« gelöscht wurden"
-
-#: lib/transport.tcl:26
-#, tcl-format
-msgid "Pushing changes to %s"
-msgstr "Änderungen nach »%s« versenden"
-
-#: lib/transport.tcl:64
-#, tcl-format
-msgid "Mirroring to %s"
-msgstr "Spiegeln nach %s"
-
-#: lib/transport.tcl:82
-#, tcl-format
-msgid "Pushing %s %s to %s"
-msgstr "%s %s nach %s versenden"
-
-#: lib/transport.tcl:100
-msgid "Push Branches"
-msgstr "Zweige versenden"
-
-#: lib/transport.tcl:114
-msgid "Source Branches"
-msgstr "Lokale Zweige"
-
-#: lib/transport.tcl:131
-msgid "Destination Repository"
-msgstr "Ziel-Projektarchiv"
-
-#: lib/transport.tcl:169
-msgid "Transfer Options"
-msgstr "Netzwerk-Einstellungen"
-
-#: lib/transport.tcl:171
-msgid "Force overwrite existing branch (may discard changes)"
-msgstr ""
-"Überschreiben von existierenden Zweigen erzwingen (könnte Änderungen löschen)"
-
-#: lib/transport.tcl:175
-msgid "Use thin pack (for slow network connections)"
-msgstr "Kompaktes Datenformat benutzen (für langsame Netzverbindungen)"
-
-#: lib/transport.tcl:179
-msgid "Include tags"
-msgstr "Mit Markierungen übertragen"
diff --git a/git-gui/po/git-gui.pot b/git-gui/po/git-gui.pot
index 0c94f9c..b79ed4e 100644
--- a/git-gui/po/git-gui.pot
+++ b/git-gui/po/git-gui.pot
@@ -8,41 +8,42 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-26 15:47-0800\n"
+"POT-Creation-Date: 2020-02-08 22:54+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: git-gui.sh:41 git-gui.sh:793 git-gui.sh:807 git-gui.sh:820 git-gui.sh:903
-#: git-gui.sh:922
-msgid "git-gui: fatal error"
-msgstr ""
-
-#: git-gui.sh:743
+#: git-gui.sh:847
#, tcl-format
msgid "Invalid font specified in %s:"
msgstr ""
-#: git-gui.sh:779
+#: git-gui.sh:901
msgid "Main Font"
msgstr ""
-#: git-gui.sh:780
+#: git-gui.sh:902
msgid "Diff/Console Font"
msgstr ""
-#: git-gui.sh:794
+#: git-gui.sh:917 git-gui.sh:931 git-gui.sh:944 git-gui.sh:1034 git-gui.sh:1053
+#: git-gui.sh:3212
+msgid "git-gui: fatal error"
+msgstr ""
+
+#: git-gui.sh:918
msgid "Cannot find git in PATH."
msgstr ""
-#: git-gui.sh:821
+#: git-gui.sh:945
msgid "Cannot parse Git version string:"
msgstr ""
-#: git-gui.sh:839
+#: git-gui.sh:970
#, tcl-format
msgid ""
"Git version cannot be determined.\n"
@@ -54,473 +55,518 @@ msgid ""
"Assume '%s' is version 1.5.0?\n"
msgstr ""
-#: git-gui.sh:1128
+#: git-gui.sh:1267
msgid "Git directory not found:"
msgstr ""
-#: git-gui.sh:1146
+#: git-gui.sh:1301
msgid "Cannot move to top of working directory:"
msgstr ""
-#: git-gui.sh:1154
+#: git-gui.sh:1309
msgid "Cannot use bare repository:"
msgstr ""
-#: git-gui.sh:1162
+#: git-gui.sh:1317
msgid "No working directory"
msgstr ""
-#: git-gui.sh:1334 lib/checkout_op.tcl:306
+#: git-gui.sh:1491 lib/checkout_op.tcl:306
msgid "Refreshing file status..."
msgstr ""
-#: git-gui.sh:1390
+#: git-gui.sh:1551
msgid "Scanning for modified files ..."
msgstr ""
-#: git-gui.sh:1454
+#: git-gui.sh:1629
msgid "Calling prepare-commit-msg hook..."
msgstr ""
-#: git-gui.sh:1471
+#: git-gui.sh:1646
msgid "Commit declined by prepare-commit-msg hook."
msgstr ""
-#: git-gui.sh:1629 lib/browser.tcl:246
+#: git-gui.sh:1804 lib/browser.tcl:252
msgid "Ready."
msgstr ""
-#: git-gui.sh:1787
+#: git-gui.sh:1968
#, tcl-format
-msgid "Displaying only %s of %s files."
+msgid ""
+"Display limit (gui.maxfilesdisplayed = %s) reached, not showing all %s files."
msgstr ""
-#: git-gui.sh:1913
+#: git-gui.sh:2091
msgid "Unmodified"
msgstr ""
-#: git-gui.sh:1915
+#: git-gui.sh:2093
msgid "Modified, not staged"
msgstr ""
-#: git-gui.sh:1916 git-gui.sh:1924
+#: git-gui.sh:2094 git-gui.sh:2106
msgid "Staged for commit"
msgstr ""
-#: git-gui.sh:1917 git-gui.sh:1925
+#: git-gui.sh:2095 git-gui.sh:2107
msgid "Portions staged for commit"
msgstr ""
-#: git-gui.sh:1918 git-gui.sh:1926
+#: git-gui.sh:2096 git-gui.sh:2108
msgid "Staged for commit, missing"
msgstr ""
-#: git-gui.sh:1920
+#: git-gui.sh:2098
msgid "File type changed, not staged"
msgstr ""
-#: git-gui.sh:1921
+#: git-gui.sh:2099 git-gui.sh:2100
+msgid "File type changed, old type staged for commit"
+msgstr ""
+
+#: git-gui.sh:2101
msgid "File type changed, staged"
msgstr ""
-#: git-gui.sh:1923
+#: git-gui.sh:2102
+msgid "File type change staged, modification not staged"
+msgstr ""
+
+#: git-gui.sh:2103
+msgid "File type change staged, file missing"
+msgstr ""
+
+#: git-gui.sh:2105
msgid "Untracked, not staged"
msgstr ""
-#: git-gui.sh:1928
+#: git-gui.sh:2110
msgid "Missing"
msgstr ""
-#: git-gui.sh:1929
+#: git-gui.sh:2111
msgid "Staged for removal"
msgstr ""
-#: git-gui.sh:1930
+#: git-gui.sh:2112
msgid "Staged for removal, still present"
msgstr ""
-#: git-gui.sh:1932 git-gui.sh:1933 git-gui.sh:1934 git-gui.sh:1935
-#: git-gui.sh:1936 git-gui.sh:1937
+#: git-gui.sh:2114 git-gui.sh:2115 git-gui.sh:2116 git-gui.sh:2117
+#: git-gui.sh:2118 git-gui.sh:2119
msgid "Requires merge resolution"
msgstr ""
-#: git-gui.sh:1972
-msgid "Starting gitk... please wait..."
+#: git-gui.sh:2164
+msgid "Couldn't find gitk in PATH"
msgstr ""
-#: git-gui.sh:1984
-msgid "Couldn't find gitk in PATH"
+#: git-gui.sh:2210 git-gui.sh:2245
+#, tcl-format
+msgid "Starting %s... please wait..."
msgstr ""
-#: git-gui.sh:2043
+#: git-gui.sh:2224
msgid "Couldn't find git gui in PATH"
msgstr ""
-#: git-gui.sh:2455 lib/choose_repository.tcl:36
+#: git-gui.sh:2726 lib/choose_repository.tcl:53
msgid "Repository"
msgstr ""
-#: git-gui.sh:2456
+#: git-gui.sh:2727
msgid "Edit"
msgstr ""
-#: git-gui.sh:2458 lib/choose_rev.tcl:561
+#: git-gui.sh:2729 lib/choose_rev.tcl:567
msgid "Branch"
msgstr ""
-#: git-gui.sh:2461 lib/choose_rev.tcl:548
+#: git-gui.sh:2732 lib/choose_rev.tcl:554
msgid "Commit@@noun"
msgstr ""
-#: git-gui.sh:2464 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
+#: git-gui.sh:2735 lib/merge.tcl:127 lib/merge.tcl:174
msgid "Merge"
msgstr ""
-#: git-gui.sh:2465 lib/choose_rev.tcl:557
+#: git-gui.sh:2736 lib/choose_rev.tcl:563
msgid "Remote"
msgstr ""
-#: git-gui.sh:2468
+#: git-gui.sh:2739
msgid "Tools"
msgstr ""
-#: git-gui.sh:2477
+#: git-gui.sh:2748
msgid "Explore Working Copy"
msgstr ""
-#: git-gui.sh:2483
+#: git-gui.sh:2763
+msgid "Git Bash"
+msgstr ""
+
+#: git-gui.sh:2772
msgid "Browse Current Branch's Files"
msgstr ""
-#: git-gui.sh:2487
+#: git-gui.sh:2776
msgid "Browse Branch Files..."
msgstr ""
-#: git-gui.sh:2492
+#: git-gui.sh:2781
msgid "Visualize Current Branch's History"
msgstr ""
-#: git-gui.sh:2496
+#: git-gui.sh:2785
msgid "Visualize All Branch History"
msgstr ""
-#: git-gui.sh:2503
+#: git-gui.sh:2792
#, tcl-format
msgid "Browse %s's Files"
msgstr ""
-#: git-gui.sh:2505
+#: git-gui.sh:2794
#, tcl-format
msgid "Visualize %s's History"
msgstr ""
-#: git-gui.sh:2510 lib/database.tcl:27 lib/database.tcl:67
+#: git-gui.sh:2799 lib/database.tcl:40
msgid "Database Statistics"
msgstr ""
-#: git-gui.sh:2513 lib/database.tcl:34
+#: git-gui.sh:2802 lib/database.tcl:33
msgid "Compress Database"
msgstr ""
-#: git-gui.sh:2516
+#: git-gui.sh:2805
msgid "Verify Database"
msgstr ""
-#: git-gui.sh:2523 git-gui.sh:2527 git-gui.sh:2531 lib/shortcut.tcl:8
-#: lib/shortcut.tcl:40 lib/shortcut.tcl:72
+#: git-gui.sh:2812 git-gui.sh:2816 git-gui.sh:2820
msgid "Create Desktop Icon"
msgstr ""
-#: git-gui.sh:2539 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
+#: git-gui.sh:2828 lib/choose_repository.tcl:209 lib/choose_repository.tcl:217
msgid "Quit"
msgstr ""
-#: git-gui.sh:2547
+#: git-gui.sh:2836
msgid "Undo"
msgstr ""
-#: git-gui.sh:2550
+#: git-gui.sh:2839
msgid "Redo"
msgstr ""
-#: git-gui.sh:2554 git-gui.sh:3109
+#: git-gui.sh:2843 git-gui.sh:3461
msgid "Cut"
msgstr ""
-#: git-gui.sh:2557 git-gui.sh:3112 git-gui.sh:3186 git-gui.sh:3259
+#: git-gui.sh:2846 git-gui.sh:3464 git-gui.sh:3540 git-gui.sh:3633
#: lib/console.tcl:69
msgid "Copy"
msgstr ""
-#: git-gui.sh:2560 git-gui.sh:3115
+#: git-gui.sh:2849 git-gui.sh:3467
msgid "Paste"
msgstr ""
-#: git-gui.sh:2563 git-gui.sh:3118 lib/branch_delete.tcl:26
-#: lib/remote_branch_delete.tcl:38
+#: git-gui.sh:2852 git-gui.sh:3470 lib/remote_branch_delete.tcl:39
+#: lib/branch_delete.tcl:28
msgid "Delete"
msgstr ""
-#: git-gui.sh:2567 git-gui.sh:3122 git-gui.sh:3263 lib/console.tcl:71
+#: git-gui.sh:2856 git-gui.sh:3474 git-gui.sh:3637 lib/console.tcl:71
msgid "Select All"
msgstr ""
-#: git-gui.sh:2576
+#: git-gui.sh:2865
msgid "Create..."
msgstr ""
-#: git-gui.sh:2582
+#: git-gui.sh:2871
msgid "Checkout..."
msgstr ""
-#: git-gui.sh:2588
+#: git-gui.sh:2877
msgid "Rename..."
msgstr ""
-#: git-gui.sh:2593
+#: git-gui.sh:2882
msgid "Delete..."
msgstr ""
-#: git-gui.sh:2598
+#: git-gui.sh:2887
msgid "Reset..."
msgstr ""
-#: git-gui.sh:2608
+#: git-gui.sh:2897
msgid "Done"
msgstr ""
-#: git-gui.sh:2610
+#: git-gui.sh:2899
msgid "Commit@@verb"
msgstr ""
-#: git-gui.sh:2619 git-gui.sh:3050
-msgid "New Commit"
-msgstr ""
-
-#: git-gui.sh:2627 git-gui.sh:3057
+#: git-gui.sh:2908 git-gui.sh:3400
msgid "Amend Last Commit"
msgstr ""
-#: git-gui.sh:2637 git-gui.sh:3011 lib/remote_branch_delete.tcl:99
+#: git-gui.sh:2918 git-gui.sh:3361 lib/remote_branch_delete.tcl:101
msgid "Rescan"
msgstr ""
-#: git-gui.sh:2643
+#: git-gui.sh:2924
msgid "Stage To Commit"
msgstr ""
-#: git-gui.sh:2649
+#: git-gui.sh:2930
msgid "Stage Changed Files To Commit"
msgstr ""
-#: git-gui.sh:2655
+#: git-gui.sh:2936
msgid "Unstage From Commit"
msgstr ""
-#: git-gui.sh:2661 lib/index.tcl:412
+#: git-gui.sh:2942 lib/index.tcl:521
msgid "Revert Changes"
msgstr ""
-#: git-gui.sh:2669 git-gui.sh:3310 git-gui.sh:3341
+#: git-gui.sh:2950 git-gui.sh:3700 git-gui.sh:3731
msgid "Show Less Context"
msgstr ""
-#: git-gui.sh:2673 git-gui.sh:3314 git-gui.sh:3345
+#: git-gui.sh:2954 git-gui.sh:3704 git-gui.sh:3735
msgid "Show More Context"
msgstr ""
-#: git-gui.sh:2680 git-gui.sh:3024 git-gui.sh:3133
+#: git-gui.sh:2961 git-gui.sh:3374 git-gui.sh:3485
msgid "Sign Off"
msgstr ""
-#: git-gui.sh:2696
+#: git-gui.sh:2977
msgid "Local Merge..."
msgstr ""
-#: git-gui.sh:2701
+#: git-gui.sh:2982
msgid "Abort Merge..."
msgstr ""
-#: git-gui.sh:2713 git-gui.sh:2741
+#: git-gui.sh:2994 git-gui.sh:3022
msgid "Add..."
msgstr ""
-#: git-gui.sh:2717
+#: git-gui.sh:2998
msgid "Push..."
msgstr ""
-#: git-gui.sh:2721
+#: git-gui.sh:3002
msgid "Delete Branch..."
msgstr ""
-#: git-gui.sh:2731 git-gui.sh:3292
+#: git-gui.sh:3012 git-gui.sh:3666
msgid "Options..."
msgstr ""
-#: git-gui.sh:2742
+#: git-gui.sh:3023
msgid "Remove..."
msgstr ""
-#: git-gui.sh:2751 lib/choose_repository.tcl:50
+#: git-gui.sh:3032 lib/choose_repository.tcl:67
msgid "Help"
msgstr ""
-#: git-gui.sh:2755 git-gui.sh:2759 lib/about.tcl:14
-#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
+#: git-gui.sh:3036 git-gui.sh:3040 lib/choose_repository.tcl:61
+#: lib/choose_repository.tcl:70 lib/about.tcl:14
#, tcl-format
msgid "About %s"
msgstr ""
-#: git-gui.sh:2783
+#: git-gui.sh:3064
msgid "Online Documentation"
msgstr ""
-#: git-gui.sh:2786 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
+#: git-gui.sh:3067 lib/choose_repository.tcl:64 lib/choose_repository.tcl:73
msgid "Show SSH Key"
msgstr ""
-#: git-gui.sh:2893
+#: git-gui.sh:3097 git-gui.sh:3229
+msgid "usage:"
+msgstr ""
+
+#: git-gui.sh:3101 git-gui.sh:3233
+msgid "Usage"
+msgstr ""
+
+#: git-gui.sh:3182 lib/blame.tcl:575
+msgid "Error"
+msgstr ""
+
+#: git-gui.sh:3213
#, tcl-format
msgid "fatal: cannot stat path %s: No such file or directory"
msgstr ""
-#: git-gui.sh:2926
+#: git-gui.sh:3246
msgid "Current Branch:"
msgstr ""
-#: git-gui.sh:2947
-msgid "Staged Changes (Will Commit)"
+#: git-gui.sh:3271
+msgid "Unstaged Changes"
msgstr ""
-#: git-gui.sh:2967
-msgid "Unstaged Changes"
+#: git-gui.sh:3293
+msgid "Staged Changes (Will Commit)"
msgstr ""
-#: git-gui.sh:3017
+#: git-gui.sh:3367
msgid "Stage Changed"
msgstr ""
-#: git-gui.sh:3036 lib/transport.tcl:104 lib/transport.tcl:193
+#: git-gui.sh:3386 lib/transport.tcl:137
msgid "Push"
msgstr ""
-#: git-gui.sh:3071
+#: git-gui.sh:3413
msgid "Initial Commit Message:"
msgstr ""
-#: git-gui.sh:3072
+#: git-gui.sh:3414
msgid "Amended Commit Message:"
msgstr ""
-#: git-gui.sh:3073
+#: git-gui.sh:3415
msgid "Amended Initial Commit Message:"
msgstr ""
-#: git-gui.sh:3074
+#: git-gui.sh:3416
msgid "Amended Merge Commit Message:"
msgstr ""
-#: git-gui.sh:3075
+#: git-gui.sh:3417
msgid "Merge Commit Message:"
msgstr ""
-#: git-gui.sh:3076
+#: git-gui.sh:3418
msgid "Commit Message:"
msgstr ""
-#: git-gui.sh:3125 git-gui.sh:3267 lib/console.tcl:73
+#: git-gui.sh:3477 git-gui.sh:3641 lib/console.tcl:73
msgid "Copy All"
msgstr ""
-#: git-gui.sh:3149 lib/blame.tcl:104
+#: git-gui.sh:3501 lib/blame.tcl:106
msgid "File:"
msgstr ""
-#: git-gui.sh:3255
+#: git-gui.sh:3549 lib/choose_repository.tcl:1100
+msgid "Open"
+msgstr ""
+
+#: git-gui.sh:3629
msgid "Refresh"
msgstr ""
-#: git-gui.sh:3276
+#: git-gui.sh:3650
msgid "Decrease Font Size"
msgstr ""
-#: git-gui.sh:3280
+#: git-gui.sh:3654
msgid "Increase Font Size"
msgstr ""
-#: git-gui.sh:3288 lib/blame.tcl:281
+#: git-gui.sh:3662 lib/blame.tcl:296
msgid "Encoding"
msgstr ""
-#: git-gui.sh:3299
+#: git-gui.sh:3673
msgid "Apply/Reverse Hunk"
msgstr ""
-#: git-gui.sh:3304
+#: git-gui.sh:3678
msgid "Apply/Reverse Line"
msgstr ""
-#: git-gui.sh:3323
+#: git-gui.sh:3684 git-gui.sh:3794 git-gui.sh:3805
+msgid "Revert Hunk"
+msgstr ""
+
+#: git-gui.sh:3689 git-gui.sh:3801 git-gui.sh:3812
+msgid "Revert Line"
+msgstr ""
+
+#: git-gui.sh:3694 git-gui.sh:3791
+msgid "Undo Last Revert"
+msgstr ""
+
+#: git-gui.sh:3713
msgid "Run Merge Tool"
msgstr ""
-#: git-gui.sh:3328
+#: git-gui.sh:3718
msgid "Use Remote Version"
msgstr ""
-#: git-gui.sh:3332
+#: git-gui.sh:3722
msgid "Use Local Version"
msgstr ""
-#: git-gui.sh:3336
+#: git-gui.sh:3726
msgid "Revert To Base"
msgstr ""
-#: git-gui.sh:3354
+#: git-gui.sh:3744
msgid "Visualize These Changes In The Submodule"
msgstr ""
-#: git-gui.sh:3358
+#: git-gui.sh:3748
msgid "Visualize Current Branch History In The Submodule"
msgstr ""
-#: git-gui.sh:3362
+#: git-gui.sh:3752
msgid "Visualize All Branch History In The Submodule"
msgstr ""
-#: git-gui.sh:3367
+#: git-gui.sh:3757
msgid "Start git gui In The Submodule"
msgstr ""
-#: git-gui.sh:3389
+#: git-gui.sh:3793
msgid "Unstage Hunk From Commit"
msgstr ""
-#: git-gui.sh:3391
+#: git-gui.sh:3797
msgid "Unstage Lines From Commit"
msgstr ""
-#: git-gui.sh:3393
+#: git-gui.sh:3798 git-gui.sh:3809
+msgid "Revert Lines"
+msgstr ""
+
+#: git-gui.sh:3800
msgid "Unstage Line From Commit"
msgstr ""
-#: git-gui.sh:3396
+#: git-gui.sh:3804
msgid "Stage Hunk For Commit"
msgstr ""
-#: git-gui.sh:3398
+#: git-gui.sh:3808
msgid "Stage Lines For Commit"
msgstr ""
-#: git-gui.sh:3400
+#: git-gui.sh:3811
msgid "Stage Line For Commit"
msgstr ""
-#: git-gui.sh:3424
+#: git-gui.sh:3861
msgid "Initializing..."
msgstr ""
-#: git-gui.sh:3541
+#: git-gui.sh:4017
#, tcl-format
msgid ""
"Possible environment issues exist.\n"
@@ -531,14 +577,14 @@ msgid ""
"\n"
msgstr ""
-#: git-gui.sh:3570
+#: git-gui.sh:4046
msgid ""
"\n"
"This is due to a known issue with the\n"
"Tcl binary distributed by Cygwin."
msgstr ""
-#: git-gui.sh:3575
+#: git-gui.sh:4051
#, tcl-format
msgid ""
"\n"
@@ -549,1846 +595,2072 @@ msgid ""
"~/.gitconfig file.\n"
msgstr ""
-#: lib/about.tcl:26
-msgid "git-gui - a graphical user interface for Git."
+#: lib/spellcheck.tcl:57
+msgid "Unsupported spell checker"
msgstr ""
-#: lib/blame.tcl:72
-msgid "File Viewer"
+#: lib/spellcheck.tcl:65
+msgid "Spell checking is unavailable"
msgstr ""
-#: lib/blame.tcl:78
-msgid "Commit:"
+#: lib/spellcheck.tcl:68
+msgid "Invalid spell checking configuration"
msgstr ""
-#: lib/blame.tcl:271
-msgid "Copy Commit"
+#: lib/spellcheck.tcl:70
+#, tcl-format
+msgid "Reverting dictionary to %s."
msgstr ""
-#: lib/blame.tcl:275
-msgid "Find Text..."
+#: lib/spellcheck.tcl:73
+msgid "Spell checker silently failed on startup"
msgstr ""
-#: lib/blame.tcl:284
-msgid "Do Full Copy Detection"
+#: lib/spellcheck.tcl:80
+msgid "Unrecognized spell checker"
msgstr ""
-#: lib/blame.tcl:288
-msgid "Show History Context"
+#: lib/spellcheck.tcl:186
+msgid "No Suggestions"
msgstr ""
-#: lib/blame.tcl:291
-msgid "Blame Parent Commit"
+#: lib/spellcheck.tcl:388
+msgid "Unexpected EOF from spell checker"
msgstr ""
-#: lib/blame.tcl:450
-#, tcl-format
-msgid "Reading %s..."
+#: lib/spellcheck.tcl:392
+msgid "Spell Checker Failed"
msgstr ""
-#: lib/blame.tcl:557
-msgid "Loading copy/move tracking annotations..."
+#: lib/transport.tcl:6 lib/remote_add.tcl:132
+#, tcl-format
+msgid "fetch %s"
msgstr ""
-#: lib/blame.tcl:577
-msgid "lines annotated"
+#: lib/transport.tcl:7
+#, tcl-format
+msgid "Fetching new changes from %s"
msgstr ""
-#: lib/blame.tcl:769
-msgid "Loading original location annotations..."
+#: lib/transport.tcl:18
+#, tcl-format
+msgid "remote prune %s"
msgstr ""
-#: lib/blame.tcl:772
-msgid "Annotation complete."
+#: lib/transport.tcl:19
+#, tcl-format
+msgid "Pruning tracking branches deleted from %s"
msgstr ""
-#: lib/blame.tcl:802
-msgid "Busy"
+#: lib/transport.tcl:25
+msgid "fetch all remotes"
msgstr ""
-#: lib/blame.tcl:803
-msgid "Annotation process is already running."
+#: lib/transport.tcl:26
+msgid "Fetching new changes from all remotes"
msgstr ""
-#: lib/blame.tcl:842
-msgid "Running thorough copy detection..."
+#: lib/transport.tcl:40
+msgid "remote prune all remotes"
msgstr ""
-#: lib/blame.tcl:910
-msgid "Loading annotation..."
+#: lib/transport.tcl:41
+msgid "Pruning tracking branches deleted from all remotes"
msgstr ""
-#: lib/blame.tcl:963
-msgid "Author:"
+#: lib/transport.tcl:54 lib/transport.tcl:92 lib/transport.tcl:110
+#: lib/remote_add.tcl:162
+#, tcl-format
+msgid "push %s"
msgstr ""
-#: lib/blame.tcl:967
-msgid "Committer:"
+#: lib/transport.tcl:55
+#, tcl-format
+msgid "Pushing changes to %s"
msgstr ""
-#: lib/blame.tcl:972
-msgid "Original File:"
+#: lib/transport.tcl:93
+#, tcl-format
+msgid "Mirroring to %s"
msgstr ""
-#: lib/blame.tcl:1020
-msgid "Cannot find HEAD commit:"
+#: lib/transport.tcl:111
+#, tcl-format
+msgid "Pushing %s %s to %s"
msgstr ""
-#: lib/blame.tcl:1075
-msgid "Cannot find parent commit:"
+#: lib/transport.tcl:132
+msgid "Push Branches"
msgstr ""
-#: lib/blame.tcl:1090
-msgid "Unable to display parent"
+#: lib/transport.tcl:141 lib/checkout_op.tcl:580 lib/remote_add.tcl:34
+#: lib/browser.tcl:292 lib/branch_checkout.tcl:30 lib/branch_rename.tcl:32
+#: lib/choose_font.tcl:45 lib/option.tcl:127 lib/tools_dlg.tcl:41
+#: lib/tools_dlg.tcl:202 lib/tools_dlg.tcl:345 lib/remote_branch_delete.tcl:43
+#: lib/branch_create.tcl:37 lib/branch_delete.tcl:34 lib/merge.tcl:178
+msgid "Cancel"
msgstr ""
-#: lib/blame.tcl:1091 lib/diff.tcl:320
-msgid "Error loading diff:"
+#: lib/transport.tcl:147
+msgid "Source Branches"
msgstr ""
-#: lib/blame.tcl:1231
-msgid "Originally By:"
+#: lib/transport.tcl:162
+msgid "Destination Repository"
msgstr ""
-#: lib/blame.tcl:1237
-msgid "In File:"
+#: lib/transport.tcl:165 lib/remote_branch_delete.tcl:51
+msgid "Remote:"
msgstr ""
-#: lib/blame.tcl:1242
-msgid "Copied Or Moved Here By:"
+#: lib/transport.tcl:187 lib/remote_branch_delete.tcl:72
+msgid "Arbitrary Location:"
msgstr ""
-#: lib/branch_checkout.tcl:14 lib/branch_checkout.tcl:19
-msgid "Checkout Branch"
+#: lib/transport.tcl:205
+msgid "Transfer Options"
msgstr ""
-#: lib/branch_checkout.tcl:23
-msgid "Checkout"
+#: lib/transport.tcl:207
+msgid "Force overwrite existing branch (may discard changes)"
msgstr ""
-#: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35
-#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282
-#: lib/checkout_op.tcl:579 lib/choose_font.tcl:43 lib/merge.tcl:172
-#: lib/option.tcl:125 lib/remote_add.tcl:32 lib/remote_branch_delete.tcl:42
-#: lib/tools_dlg.tcl:40 lib/tools_dlg.tcl:204 lib/tools_dlg.tcl:352
-#: lib/transport.tcl:108
-msgid "Cancel"
+#: lib/transport.tcl:211
+msgid "Use thin pack (for slow network connections)"
msgstr ""
-#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 lib/tools_dlg.tcl:328
-msgid "Revision"
+#: lib/transport.tcl:215
+msgid "Include tags"
msgstr ""
-#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:280
-msgid "Options"
+#: lib/transport.tcl:229
+#, tcl-format
+msgid "%s (%s): Push"
msgstr ""
-#: lib/branch_checkout.tcl:39 lib/branch_create.tcl:92
-msgid "Fetch Tracking Branch"
+#: lib/checkout_op.tcl:85
+#, tcl-format
+msgid "Fetching %s from %s"
msgstr ""
-#: lib/branch_checkout.tcl:44
-msgid "Detach From Local Branch"
+#: lib/checkout_op.tcl:133
+#, tcl-format
+msgid "fatal: Cannot resolve %s"
msgstr ""
-#: lib/branch_create.tcl:22
-msgid "Create Branch"
+#: lib/checkout_op.tcl:146 lib/sshkey.tcl:58 lib/console.tcl:81
+#: lib/database.tcl:30
+msgid "Close"
msgstr ""
-#: lib/branch_create.tcl:27
-msgid "Create New Branch"
+#: lib/checkout_op.tcl:175
+#, tcl-format
+msgid "Branch '%s' does not exist."
msgstr ""
-#: lib/branch_create.tcl:31 lib/choose_repository.tcl:381
-msgid "Create"
+#: lib/checkout_op.tcl:194
+#, tcl-format
+msgid "Failed to configure simplified git-pull for '%s'."
msgstr ""
-#: lib/branch_create.tcl:40
-msgid "Branch Name"
+#: lib/checkout_op.tcl:202 lib/branch_rename.tcl:102
+#, tcl-format
+msgid "Branch '%s' already exists."
msgstr ""
-#: lib/branch_create.tcl:43 lib/remote_add.tcl:39 lib/tools_dlg.tcl:50
-msgid "Name:"
+#: lib/checkout_op.tcl:229
+#, tcl-format
+msgid ""
+"Branch '%s' already exists.\n"
+"\n"
+"It cannot fast-forward to %s.\n"
+"A merge is required."
msgstr ""
-#: lib/branch_create.tcl:58
-msgid "Match Tracking Branch Name"
+#: lib/checkout_op.tcl:243
+#, tcl-format
+msgid "Merge strategy '%s' not supported."
msgstr ""
-#: lib/branch_create.tcl:66
-msgid "Starting Revision"
+#: lib/checkout_op.tcl:262
+#, tcl-format
+msgid "Failed to update '%s'."
msgstr ""
-#: lib/branch_create.tcl:72
-msgid "Update Existing Branch:"
+#: lib/checkout_op.tcl:274
+msgid "Staging area (index) is already locked."
msgstr ""
-#: lib/branch_create.tcl:75
-msgid "No"
+#: lib/checkout_op.tcl:289
+msgid ""
+"Last scanned state does not match repository state.\n"
+"\n"
+"Another Git program has modified this repository since the last scan. A "
+"rescan must be performed before the current branch can be changed.\n"
+"\n"
+"The rescan will be automatically started now.\n"
msgstr ""
-#: lib/branch_create.tcl:80
-msgid "Fast Forward Only"
+#: lib/checkout_op.tcl:345
+#, tcl-format
+msgid "Updating working directory to '%s'..."
msgstr ""
-#: lib/branch_create.tcl:85 lib/checkout_op.tcl:571
-msgid "Reset"
+#: lib/checkout_op.tcl:346
+msgid "files checked out"
msgstr ""
-#: lib/branch_create.tcl:97
-msgid "Checkout After Creation"
+#: lib/checkout_op.tcl:377
+#, tcl-format
+msgid "Aborted checkout of '%s' (file level merging is required)."
msgstr ""
-#: lib/branch_create.tcl:131
-msgid "Please select a tracking branch."
+#: lib/checkout_op.tcl:378
+msgid "File level merge required."
msgstr ""
-#: lib/branch_create.tcl:140
+#: lib/checkout_op.tcl:382
#, tcl-format
-msgid "Tracking branch %s is not a branch in the remote repository."
+msgid "Staying on branch '%s'."
msgstr ""
-#: lib/branch_create.tcl:153 lib/branch_rename.tcl:86
-msgid "Please supply a branch name."
+#: lib/checkout_op.tcl:453
+msgid ""
+"You are no longer on a local branch.\n"
+"\n"
+"If you wanted to be on a branch, create one now starting from 'This Detached "
+"Checkout'."
msgstr ""
-#: lib/branch_create.tcl:164 lib/branch_rename.tcl:106
+#: lib/checkout_op.tcl:504 lib/checkout_op.tcl:508
#, tcl-format
-msgid "'%s' is not an acceptable branch name."
+msgid "Checked out '%s'."
msgstr ""
-#: lib/branch_delete.tcl:15
-msgid "Delete Branch"
+#: lib/checkout_op.tcl:536
+#, tcl-format
+msgid "Resetting '%s' to '%s' will lose the following commits:"
msgstr ""
-#: lib/branch_delete.tcl:20
-msgid "Delete Local Branch"
+#: lib/checkout_op.tcl:558
+msgid "Recovering lost commits may not be easy."
msgstr ""
-#: lib/branch_delete.tcl:37
-msgid "Local Branches"
+#: lib/checkout_op.tcl:563
+#, tcl-format
+msgid "Reset '%s'?"
msgstr ""
-#: lib/branch_delete.tcl:52
-msgid "Delete Only If Merged Into"
+#: lib/checkout_op.tcl:568 lib/tools_dlg.tcl:336 lib/merge.tcl:170
+msgid "Visualize"
msgstr ""
-#: lib/branch_delete.tcl:54 lib/remote_branch_delete.tcl:119
-msgid "Always (Do not perform merge checks)"
+#: lib/checkout_op.tcl:572 lib/branch_create.tcl:85
+msgid "Reset"
msgstr ""
-#: lib/branch_delete.tcl:103
+#: lib/checkout_op.tcl:636
#, tcl-format
-msgid "The following branches are not completely merged into %s:"
-msgstr ""
-
-#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:217
msgid ""
-"Recovering deleted branches is difficult.\n"
+"Failed to set current branch.\n"
"\n"
-"Delete the selected branches?"
+"This working directory is only partially switched. We successfully updated "
+"your files, but failed to update an internal Git file.\n"
+"\n"
+"This should not have occurred. %s will now close and give up."
msgstr ""
-#: lib/branch_delete.tcl:141
+#: lib/remote_add.tcl:20
#, tcl-format
-msgid ""
-"Failed to delete branches:\n"
-"%s"
+msgid "%s (%s): Add Remote"
msgstr ""
-#: lib/branch_rename.tcl:14 lib/branch_rename.tcl:22
-msgid "Rename Branch"
+#: lib/remote_add.tcl:25
+msgid "Add New Remote"
msgstr ""
-#: lib/branch_rename.tcl:26
-msgid "Rename"
+#: lib/remote_add.tcl:30 lib/tools_dlg.tcl:37
+msgid "Add"
msgstr ""
-#: lib/branch_rename.tcl:36
-msgid "Branch:"
+#: lib/remote_add.tcl:39
+msgid "Remote Details"
msgstr ""
-#: lib/branch_rename.tcl:39
-msgid "New Name:"
+#: lib/remote_add.tcl:41 lib/tools_dlg.tcl:51 lib/branch_create.tcl:44
+msgid "Name:"
msgstr ""
-#: lib/branch_rename.tcl:75
-msgid "Please select a branch to rename."
+#: lib/remote_add.tcl:50
+msgid "Location:"
msgstr ""
-#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:202
+#: lib/remote_add.tcl:60
+msgid "Further Action"
+msgstr ""
+
+#: lib/remote_add.tcl:63
+msgid "Fetch Immediately"
+msgstr ""
+
+#: lib/remote_add.tcl:69
+msgid "Initialize Remote Repository and Push"
+msgstr ""
+
+#: lib/remote_add.tcl:75
+msgid "Do Nothing Else Now"
+msgstr ""
+
+#: lib/remote_add.tcl:100
+msgid "Please supply a remote name."
+msgstr ""
+
+#: lib/remote_add.tcl:113
#, tcl-format
-msgid "Branch '%s' already exists."
+msgid "'%s' is not an acceptable remote name."
msgstr ""
-#: lib/branch_rename.tcl:117
+#: lib/remote_add.tcl:124
#, tcl-format
-msgid "Failed to rename '%s'."
+msgid "Failed to add remote '%s' of location '%s'."
+msgstr ""
+
+#: lib/remote_add.tcl:133
+#, tcl-format
+msgid "Fetching the %s"
+msgstr ""
+
+#: lib/remote_add.tcl:156
+#, tcl-format
+msgid "Do not know how to initialize repository at location '%s'."
+msgstr ""
+
+#: lib/remote_add.tcl:163
+#, tcl-format
+msgid "Setting up the %s (at %s)"
msgstr ""
#: lib/browser.tcl:17
msgid "Starting..."
msgstr ""
-#: lib/browser.tcl:26
-msgid "File Browser"
+#: lib/browser.tcl:27
+#, tcl-format
+msgid "%s (%s): File Browser"
msgstr ""
-#: lib/browser.tcl:126 lib/browser.tcl:143
+#: lib/browser.tcl:132 lib/browser.tcl:149
#, tcl-format
msgid "Loading %s..."
msgstr ""
-#: lib/browser.tcl:187
+#: lib/browser.tcl:193
msgid "[Up To Parent]"
msgstr ""
-#: lib/browser.tcl:267 lib/browser.tcl:273
+#: lib/browser.tcl:275
+#, tcl-format
+msgid "%s (%s): Browse Branch Files"
+msgstr ""
+
+#: lib/browser.tcl:282
msgid "Browse Branch Files"
msgstr ""
-#: lib/browser.tcl:278 lib/choose_repository.tcl:398
-#: lib/choose_repository.tcl:486 lib/choose_repository.tcl:497
-#: lib/choose_repository.tcl:1028
+#: lib/browser.tcl:288 lib/choose_repository.tcl:437
+#: lib/choose_repository.tcl:524 lib/choose_repository.tcl:533
+#: lib/choose_repository.tcl:1115
msgid "Browse"
msgstr ""
-#: lib/checkout_op.tcl:85
-#, tcl-format
-msgid "Fetching %s from %s"
+#: lib/browser.tcl:297 lib/branch_checkout.tcl:35 lib/tools_dlg.tcl:321
+msgid "Revision"
msgstr ""
-#: lib/checkout_op.tcl:133
-#, tcl-format
-msgid "fatal: Cannot resolve %s"
+#: lib/index.tcl:6
+msgid "Unable to unlock the index."
msgstr ""
-#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:31
-#: lib/sshkey.tcl:53
-msgid "Close"
+#: lib/index.tcl:30
+msgid "Index Error"
msgstr ""
-#: lib/checkout_op.tcl:175
+#: lib/index.tcl:32
+msgid ""
+"Updating the Git index failed. A rescan will be automatically started to "
+"resynchronize git-gui."
+msgstr ""
+
+#: lib/index.tcl:43
+msgid "Continue"
+msgstr ""
+
+#: lib/index.tcl:46
+msgid "Unlock Index"
+msgstr ""
+
+#: lib/index.tcl:77 lib/index.tcl:146 lib/index.tcl:220 lib/index.tcl:587
+#: lib/choose_repository.tcl:999
+msgid "files"
+msgstr ""
+
+#: lib/index.tcl:326
+msgid "Unstaging selected files from commit"
+msgstr ""
+
+#: lib/index.tcl:330
#, tcl-format
-msgid "Branch '%s' does not exist."
+msgid "Unstaging %s from commit"
msgstr ""
-#: lib/checkout_op.tcl:194
+#: lib/index.tcl:369
+msgid "Ready to commit."
+msgstr ""
+
+#: lib/index.tcl:378
+msgid "Adding selected files"
+msgstr ""
+
+#: lib/index.tcl:382
#, tcl-format
-msgid "Failed to configure simplified git-pull for '%s'."
+msgid "Adding %s"
msgstr ""
-#: lib/checkout_op.tcl:229
+#: lib/index.tcl:412
#, tcl-format
-msgid ""
-"Branch '%s' already exists.\n"
-"\n"
-"It cannot fast-forward to %s.\n"
-"A merge is required."
+msgid "Stage %d untracked files?"
msgstr ""
-#: lib/checkout_op.tcl:243
+#: lib/index.tcl:420
+msgid "Adding all changed files"
+msgstr ""
+
+#: lib/index.tcl:503
#, tcl-format
-msgid "Merge strategy '%s' not supported."
+msgid "Revert changes in file %s?"
msgstr ""
-#: lib/checkout_op.tcl:262
+#: lib/index.tcl:508
#, tcl-format
-msgid "Failed to update '%s'."
+msgid "Revert changes in these %i files?"
msgstr ""
-#: lib/checkout_op.tcl:274
-msgid "Staging area (index) is already locked."
+#: lib/index.tcl:517
+msgid "Any unstaged changes will be permanently lost by the revert."
msgstr ""
-#: lib/checkout_op.tcl:289
-msgid ""
-"Last scanned state does not match repository state.\n"
-"\n"
-"Another Git program has modified this repository since the last scan. A "
-"rescan must be performed before the current branch can be changed.\n"
-"\n"
-"The rescan will be automatically started now.\n"
+#: lib/index.tcl:520 lib/index.tcl:563
+msgid "Do Nothing"
msgstr ""
-#: lib/checkout_op.tcl:345
+#: lib/index.tcl:545
#, tcl-format
-msgid "Updating working directory to '%s'..."
+msgid "Delete untracked file %s?"
msgstr ""
-#: lib/checkout_op.tcl:346
-msgid "files checked out"
+#: lib/index.tcl:550
+#, tcl-format
+msgid "Delete these %i untracked files?"
msgstr ""
-#: lib/checkout_op.tcl:376
-#, tcl-format
-msgid "Aborted checkout of '%s' (file level merging is required)."
+#: lib/index.tcl:560
+msgid "Files will be permanently deleted."
msgstr ""
-#: lib/checkout_op.tcl:377
-msgid "File level merge required."
+#: lib/index.tcl:564
+msgid "Delete Files"
msgstr ""
-#: lib/checkout_op.tcl:381
-#, tcl-format
-msgid "Staying on branch '%s'."
+#: lib/index.tcl:586
+msgid "Deleting"
msgstr ""
-#: lib/checkout_op.tcl:452
-msgid ""
-"You are no longer on a local branch.\n"
-"\n"
-"If you wanted to be on a branch, create one now starting from 'This Detached "
-"Checkout'."
+#: lib/index.tcl:665
+msgid "Encountered errors deleting files:\n"
msgstr ""
-#: lib/checkout_op.tcl:503 lib/checkout_op.tcl:507
+#: lib/index.tcl:674
#, tcl-format
-msgid "Checked out '%s'."
+msgid "None of the %d selected files could be deleted."
msgstr ""
-#: lib/checkout_op.tcl:535
+#: lib/index.tcl:679
#, tcl-format
-msgid "Resetting '%s' to '%s' will lose the following commits:"
+msgid "%d of the %d selected files could not be deleted."
msgstr ""
-#: lib/checkout_op.tcl:557
-msgid "Recovering lost commits may not be easy."
+#: lib/index.tcl:726
+msgid "Reverting selected files"
msgstr ""
-#: lib/checkout_op.tcl:562
+#: lib/index.tcl:730
#, tcl-format
-msgid "Reset '%s'?"
+msgid "Reverting %s"
msgstr ""
-#: lib/checkout_op.tcl:567 lib/merge.tcl:164 lib/tools_dlg.tcl:343
-msgid "Visualize"
+#: lib/branch_checkout.tcl:16
+#, tcl-format
+msgid "%s (%s): Checkout Branch"
msgstr ""
-#: lib/checkout_op.tcl:635
-#, tcl-format
-msgid ""
-"Failed to set current branch.\n"
-"\n"
-"This working directory is only partially switched. We successfully updated "
-"your files, but failed to update an internal Git file.\n"
-"\n"
-"This should not have occurred. %s will now close and give up."
+#: lib/branch_checkout.tcl:21
+msgid "Checkout Branch"
msgstr ""
-#: lib/choose_font.tcl:39
-msgid "Select"
+#: lib/branch_checkout.tcl:26
+msgid "Checkout"
msgstr ""
-#: lib/choose_font.tcl:53
-msgid "Font Family"
+#: lib/branch_checkout.tcl:39 lib/option.tcl:310 lib/branch_create.tcl:69
+msgid "Options"
msgstr ""
-#: lib/choose_font.tcl:74
-msgid "Font Size"
+#: lib/branch_checkout.tcl:42 lib/branch_create.tcl:92
+msgid "Fetch Tracking Branch"
msgstr ""
-#: lib/choose_font.tcl:91
-msgid "Font Example"
+#: lib/branch_checkout.tcl:47
+msgid "Detach From Local Branch"
msgstr ""
-#: lib/choose_font.tcl:103
-msgid ""
-"This is example text.\n"
-"If you like this text, it can be your font."
+#: lib/status_bar.tcl:263
+#, tcl-format
+msgid "%s ... %*i of %*i %s (%3i%%)"
msgstr ""
-#: lib/choose_repository.tcl:28
-msgid "Git Gui"
+#: lib/remote.tcl:200
+msgid "Push to"
msgstr ""
-#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:386
-msgid "Create New Repository"
+#: lib/remote.tcl:218
+msgid "Remove Remote"
msgstr ""
-#: lib/choose_repository.tcl:93
-msgid "New..."
+#: lib/remote.tcl:223
+msgid "Prune from"
msgstr ""
-#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:471
-msgid "Clone Existing Repository"
+#: lib/remote.tcl:228
+msgid "Fetch from"
msgstr ""
-#: lib/choose_repository.tcl:106
-msgid "Clone..."
+#: lib/remote.tcl:249 lib/remote.tcl:253 lib/remote.tcl:258 lib/remote.tcl:264
+msgid "All"
msgstr ""
-#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:1016
-msgid "Open Existing Repository"
+#: lib/branch_rename.tcl:15
+#, tcl-format
+msgid "%s (%s): Rename Branch"
msgstr ""
-#: lib/choose_repository.tcl:119
-msgid "Open..."
+#: lib/branch_rename.tcl:23
+msgid "Rename Branch"
msgstr ""
-#: lib/choose_repository.tcl:132
-msgid "Recent Repositories"
+#: lib/branch_rename.tcl:28
+msgid "Rename"
msgstr ""
-#: lib/choose_repository.tcl:138
-msgid "Open Recent Repository:"
+#: lib/branch_rename.tcl:38
+msgid "Branch:"
msgstr ""
-#: lib/choose_repository.tcl:306 lib/choose_repository.tcl:313
-#: lib/choose_repository.tcl:320
-#, tcl-format
-msgid "Failed to create repository %s:"
+#: lib/branch_rename.tcl:46
+msgid "New Name:"
msgstr ""
-#: lib/choose_repository.tcl:391
-msgid "Directory:"
+#: lib/branch_rename.tcl:81
+msgid "Please select a branch to rename."
msgstr ""
-#: lib/choose_repository.tcl:423 lib/choose_repository.tcl:550
-#: lib/choose_repository.tcl:1052
-msgid "Git Repository"
+#: lib/branch_rename.tcl:92 lib/branch_create.tcl:154
+msgid "Please supply a branch name."
msgstr ""
-#: lib/choose_repository.tcl:448
+#: lib/branch_rename.tcl:112 lib/branch_create.tcl:165
#, tcl-format
-msgid "Directory %s already exists."
+msgid "'%s' is not an acceptable branch name."
msgstr ""
-#: lib/choose_repository.tcl:452
+#: lib/branch_rename.tcl:123
#, tcl-format
-msgid "File %s already exists."
+msgid "Failed to rename '%s'."
msgstr ""
-#: lib/choose_repository.tcl:466
-msgid "Clone"
+#: lib/choose_font.tcl:41
+msgid "Select"
msgstr ""
-#: lib/choose_repository.tcl:479
-msgid "Source Location:"
+#: lib/choose_font.tcl:55
+msgid "Font Family"
msgstr ""
-#: lib/choose_repository.tcl:490
-msgid "Target Directory:"
+#: lib/choose_font.tcl:76
+msgid "Font Size"
msgstr ""
-#: lib/choose_repository.tcl:502
-msgid "Clone Type:"
+#: lib/choose_font.tcl:93
+msgid "Font Example"
msgstr ""
-#: lib/choose_repository.tcl:508
-msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
+#: lib/choose_font.tcl:105
+msgid ""
+"This is example text.\n"
+"If you like this text, it can be your font."
msgstr ""
-#: lib/choose_repository.tcl:514
-msgid "Full Copy (Slower, Redundant Backup)"
+#: lib/option.tcl:11
+#, tcl-format
+msgid "Invalid global encoding '%s'"
msgstr ""
-#: lib/choose_repository.tcl:520
-msgid "Shared (Fastest, Not Recommended, No Backup)"
+#: lib/option.tcl:19
+#, tcl-format
+msgid "Invalid repo encoding '%s'"
+msgstr ""
+
+#: lib/option.tcl:119
+msgid "Restore Defaults"
+msgstr ""
+
+#: lib/option.tcl:123
+msgid "Save"
msgstr ""
-#: lib/choose_repository.tcl:556 lib/choose_repository.tcl:603
-#: lib/choose_repository.tcl:749 lib/choose_repository.tcl:819
-#: lib/choose_repository.tcl:1058 lib/choose_repository.tcl:1066
+#: lib/option.tcl:133
#, tcl-format
-msgid "Not a Git repository: %s"
+msgid "%s Repository"
msgstr ""
-#: lib/choose_repository.tcl:592
-msgid "Standard only available for local repository."
+#: lib/option.tcl:134
+msgid "Global (All Repositories)"
msgstr ""
-#: lib/choose_repository.tcl:596
-msgid "Shared only available for local repository."
+#: lib/option.tcl:140
+msgid "User Name"
msgstr ""
-#: lib/choose_repository.tcl:617
-#, tcl-format
-msgid "Location %s already exists."
+#: lib/option.tcl:141
+msgid "Email Address"
msgstr ""
-#: lib/choose_repository.tcl:628
-msgid "Failed to configure origin"
+#: lib/option.tcl:143
+msgid "Summarize Merge Commits"
msgstr ""
-#: lib/choose_repository.tcl:640
-msgid "Counting objects"
+#: lib/option.tcl:144
+msgid "Merge Verbosity"
msgstr ""
-#: lib/choose_repository.tcl:641
-msgid "buckets"
+#: lib/option.tcl:145
+msgid "Show Diffstat After Merge"
msgstr ""
-#: lib/choose_repository.tcl:665
-#, tcl-format
-msgid "Unable to copy objects/info/alternates: %s"
+#: lib/option.tcl:146
+msgid "Use Merge Tool"
msgstr ""
-#: lib/choose_repository.tcl:701
-#, tcl-format
-msgid "Nothing to clone from %s."
+#: lib/option.tcl:148
+msgid "Trust File Modification Timestamps"
msgstr ""
-#: lib/choose_repository.tcl:703 lib/choose_repository.tcl:917
-#: lib/choose_repository.tcl:929
-msgid "The 'master' branch has not been initialized."
+#: lib/option.tcl:149
+msgid "Prune Tracking Branches During Fetch"
msgstr ""
-#: lib/choose_repository.tcl:716
-msgid "Hardlinks are unavailable. Falling back to copying."
+#: lib/option.tcl:150
+msgid "Match Tracking Branches"
msgstr ""
-#: lib/choose_repository.tcl:728
-#, tcl-format
-msgid "Cloning from %s"
+#: lib/option.tcl:151
+msgid "Use Textconv For Diffs and Blames"
msgstr ""
-#: lib/choose_repository.tcl:759
-msgid "Copying objects"
+#: lib/option.tcl:152
+msgid "Blame Copy Only On Changed Files"
msgstr ""
-#: lib/choose_repository.tcl:760
-msgid "KiB"
+#: lib/option.tcl:153
+msgid "Maximum Length of Recent Repositories List"
msgstr ""
-#: lib/choose_repository.tcl:784
-#, tcl-format
-msgid "Unable to copy object: %s"
+#: lib/option.tcl:154
+msgid "Minimum Letters To Blame Copy On"
msgstr ""
-#: lib/choose_repository.tcl:794
-msgid "Linking objects"
+#: lib/option.tcl:155
+msgid "Blame History Context Radius (days)"
msgstr ""
-#: lib/choose_repository.tcl:795
-msgid "objects"
+#: lib/option.tcl:156
+msgid "Number of Diff Context Lines"
msgstr ""
-#: lib/choose_repository.tcl:803
-#, tcl-format
-msgid "Unable to hardlink object: %s"
+#: lib/option.tcl:157
+msgid "Additional Diff Parameters"
msgstr ""
-#: lib/choose_repository.tcl:858
-msgid "Cannot fetch branches and objects. See console output for details."
+#: lib/option.tcl:158
+msgid "Commit Message Text Width"
msgstr ""
-#: lib/choose_repository.tcl:869
-msgid "Cannot fetch tags. See console output for details."
+#: lib/option.tcl:159
+msgid "New Branch Name Template"
msgstr ""
-#: lib/choose_repository.tcl:893
-msgid "Cannot determine HEAD. See console output for details."
+#: lib/option.tcl:160
+msgid "Default File Contents Encoding"
msgstr ""
-#: lib/choose_repository.tcl:902
-#, tcl-format
-msgid "Unable to cleanup %s"
+#: lib/option.tcl:161
+msgid "Warn before committing to a detached head"
msgstr ""
-#: lib/choose_repository.tcl:908
-msgid "Clone failed."
+#: lib/option.tcl:162
+msgid "Staging of untracked files"
msgstr ""
-#: lib/choose_repository.tcl:915
-msgid "No default branch obtained."
+#: lib/option.tcl:163
+msgid "Show untracked files"
msgstr ""
-#: lib/choose_repository.tcl:926
+#: lib/option.tcl:164
+msgid "Tab spacing"
+msgstr ""
+
+#: lib/option.tcl:182 lib/option.tcl:197 lib/option.tcl:220 lib/option.tcl:282
+#: lib/database.tcl:57
#, tcl-format
-msgid "Cannot resolve %s as a commit."
+msgid "%s:"
msgstr ""
-#: lib/choose_repository.tcl:938
-msgid "Creating working directory"
+#: lib/option.tcl:210
+msgid "Change"
msgstr ""
-#: lib/choose_repository.tcl:939 lib/index.tcl:67 lib/index.tcl:130
-#: lib/index.tcl:198
-msgid "files"
+#: lib/option.tcl:254
+msgid "Spelling Dictionary:"
msgstr ""
-#: lib/choose_repository.tcl:968
-msgid "Initial file checkout failed."
+#: lib/option.tcl:284
+msgid "Change Font"
msgstr ""
-#: lib/choose_repository.tcl:1011
-msgid "Open"
+#: lib/option.tcl:288
+#, tcl-format
+msgid "Choose %s"
msgstr ""
-#: lib/choose_repository.tcl:1021
-msgid "Repository:"
+#: lib/option.tcl:294
+msgid "pt."
msgstr ""
-#: lib/choose_repository.tcl:1072
+#: lib/option.tcl:308
+msgid "Preferences"
+msgstr ""
+
+#: lib/option.tcl:345
+msgid "Failed to completely save options:"
+msgstr ""
+
+#: lib/encoding.tcl:443
+msgid "Default"
+msgstr ""
+
+#: lib/encoding.tcl:448
#, tcl-format
-msgid "Failed to open repository %s:"
+msgid "System (%s)"
msgstr ""
-#: lib/choose_rev.tcl:53
-msgid "This Detached Checkout"
+#: lib/encoding.tcl:459 lib/encoding.tcl:465
+msgid "Other"
msgstr ""
-#: lib/choose_rev.tcl:60
-msgid "Revision Expression:"
+#: lib/tools.tcl:76
+#, tcl-format
+msgid "Running %s requires a selected file."
msgstr ""
-#: lib/choose_rev.tcl:74
-msgid "Local Branch"
+#: lib/tools.tcl:92
+#, tcl-format
+msgid "Are you sure you want to run %1$s on file \"%2$s\"?"
msgstr ""
-#: lib/choose_rev.tcl:79
-msgid "Tracking Branch"
+#: lib/tools.tcl:96
+#, tcl-format
+msgid "Are you sure you want to run %s?"
msgstr ""
-#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538
-msgid "Tag"
+#: lib/tools.tcl:118
+#, tcl-format
+msgid "Tool: %s"
msgstr ""
-#: lib/choose_rev.tcl:317
+#: lib/tools.tcl:119
#, tcl-format
-msgid "Invalid revision: %s"
+msgid "Running: %s"
msgstr ""
-#: lib/choose_rev.tcl:338
-msgid "No revision selected."
+#: lib/tools.tcl:158
+#, tcl-format
+msgid "Tool completed successfully: %s"
msgstr ""
-#: lib/choose_rev.tcl:346
-msgid "Revision expression is empty."
+#: lib/tools.tcl:160
+#, tcl-format
+msgid "Tool failed: %s"
msgstr ""
-#: lib/choose_rev.tcl:531
-msgid "Updated"
+#: lib/mergetool.tcl:8
+msgid "Force resolution to the base version?"
msgstr ""
-#: lib/choose_rev.tcl:559
-msgid "URL"
+#: lib/mergetool.tcl:9
+msgid "Force resolution to this branch?"
msgstr ""
-#: lib/commit.tcl:9
-msgid ""
-"There is nothing to amend.\n"
-"\n"
-"You are about to create the initial commit. There is no commit before this "
-"to amend.\n"
+#: lib/mergetool.tcl:10
+msgid "Force resolution to the other branch?"
msgstr ""
-#: lib/commit.tcl:18
+#: lib/mergetool.tcl:14
+#, tcl-format
msgid ""
-"Cannot amend while merging.\n"
+"Note that the diff shows only conflicting changes.\n"
"\n"
-"You are currently in the middle of a merge that has not been fully "
-"completed. You cannot amend the prior commit unless you first abort the "
-"current merge activity.\n"
+"%s will be overwritten.\n"
+"\n"
+"This operation can be undone only by restarting the merge."
msgstr ""
-#: lib/commit.tcl:48
-msgid "Error loading commit data for amend:"
+#: lib/mergetool.tcl:45
+#, tcl-format
+msgid "File %s seems to have unresolved conflicts, still stage?"
msgstr ""
-#: lib/commit.tcl:75
-msgid "Unable to obtain your identity:"
+#: lib/mergetool.tcl:60
+#, tcl-format
+msgid "Adding resolution for %s"
msgstr ""
-#: lib/commit.tcl:80
-msgid "Invalid GIT_COMMITTER_IDENT:"
+#: lib/mergetool.tcl:141
+msgid "Cannot resolve deletion or link conflicts using a tool"
msgstr ""
-#: lib/commit.tcl:129
+#: lib/mergetool.tcl:146
+msgid "Conflict file does not exist"
+msgstr ""
+
+#: lib/mergetool.tcl:246
#, tcl-format
-msgid "warning: Tcl does not support encoding '%s'."
+msgid "Not a GUI merge tool: '%s'"
msgstr ""
-#: lib/commit.tcl:149
-msgid ""
-"Last scanned state does not match repository state.\n"
-"\n"
-"Another Git program has modified this repository since the last scan. A "
-"rescan must be performed before another commit can be created.\n"
-"\n"
-"The rescan will be automatically started now.\n"
+#: lib/mergetool.tcl:275
+#, tcl-format
+msgid "Unsupported merge tool '%s'"
msgstr ""
-#: lib/commit.tcl:172
+#: lib/mergetool.tcl:310
+msgid "Merge tool is already running, terminate it?"
+msgstr ""
+
+#: lib/mergetool.tcl:330
#, tcl-format
msgid ""
-"Unmerged files cannot be committed.\n"
-"\n"
-"File %s has merge conflicts. You must resolve them and stage the file "
-"before committing.\n"
+"Error retrieving versions:\n"
+"%s"
msgstr ""
-#: lib/commit.tcl:180
+#: lib/mergetool.tcl:350
#, tcl-format
msgid ""
-"Unknown file state %s detected.\n"
+"Could not start the merge tool:\n"
"\n"
-"File %s cannot be committed by this program.\n"
+"%s"
msgstr ""
-#: lib/commit.tcl:188
-msgid ""
-"No changes to commit.\n"
-"\n"
-"You must stage at least 1 file before you can commit.\n"
+#: lib/mergetool.tcl:354
+msgid "Running merge tool..."
msgstr ""
-#: lib/commit.tcl:203
-msgid ""
-"Please supply a commit message.\n"
-"\n"
-"A good commit message has the following format:\n"
-"\n"
-"- First line: Describe in one sentence what you did.\n"
-"- Second line: Blank\n"
-"- Remaining lines: Describe why this change is good.\n"
+#: lib/mergetool.tcl:382 lib/mergetool.tcl:390
+msgid "Merge tool failed."
msgstr ""
-#: lib/commit.tcl:234
-msgid "Calling pre-commit hook..."
+#: lib/tools_dlg.tcl:22
+#, tcl-format
+msgid "%s (%s): Add Tool"
msgstr ""
-#: lib/commit.tcl:249
-msgid "Commit declined by pre-commit hook."
+#: lib/tools_dlg.tcl:28
+msgid "Add New Tool Command"
msgstr ""
-#: lib/commit.tcl:272
-msgid "Calling commit-msg hook..."
+#: lib/tools_dlg.tcl:34
+msgid "Add globally"
msgstr ""
-#: lib/commit.tcl:287
-msgid "Commit declined by commit-msg hook."
+#: lib/tools_dlg.tcl:46
+msgid "Tool Details"
msgstr ""
-#: lib/commit.tcl:300
-msgid "Committing changes..."
+#: lib/tools_dlg.tcl:49
+msgid "Use '/' separators to create a submenu tree:"
msgstr ""
-#: lib/commit.tcl:316
-msgid "write-tree failed:"
+#: lib/tools_dlg.tcl:60
+msgid "Command:"
msgstr ""
-#: lib/commit.tcl:317 lib/commit.tcl:361 lib/commit.tcl:382
-msgid "Commit failed."
+#: lib/tools_dlg.tcl:71
+msgid "Show a dialog before running"
msgstr ""
-#: lib/commit.tcl:334
-#, tcl-format
-msgid "Commit %s appears to be corrupt"
+#: lib/tools_dlg.tcl:77
+msgid "Ask the user to select a revision (sets $REVISION)"
msgstr ""
-#: lib/commit.tcl:339
-msgid ""
-"No changes to commit.\n"
-"\n"
-"No files were modified by this commit and it was not a merge commit.\n"
-"\n"
-"A rescan will be automatically started now.\n"
+#: lib/tools_dlg.tcl:82
+msgid "Ask the user for additional arguments (sets $ARGS)"
msgstr ""
-#: lib/commit.tcl:346
-msgid "No changes to commit."
+#: lib/tools_dlg.tcl:89
+msgid "Don't show the command output window"
msgstr ""
-#: lib/commit.tcl:360
-msgid "commit-tree failed:"
+#: lib/tools_dlg.tcl:94
+msgid "Run only if a diff is selected ($FILENAME not empty)"
msgstr ""
-#: lib/commit.tcl:381
-msgid "update-ref failed:"
+#: lib/tools_dlg.tcl:118
+msgid "Please supply a name for the tool."
msgstr ""
-#: lib/commit.tcl:469
+#: lib/tools_dlg.tcl:126
#, tcl-format
-msgid "Created commit %s: %s"
+msgid "Tool '%s' already exists."
msgstr ""
-#: lib/console.tcl:59
-msgid "Working... please wait..."
+#: lib/tools_dlg.tcl:148
+#, tcl-format
+msgid ""
+"Could not add tool:\n"
+"%s"
msgstr ""
-#: lib/console.tcl:186
-msgid "Success"
+#: lib/tools_dlg.tcl:187
+#, tcl-format
+msgid "%s (%s): Remove Tool"
msgstr ""
-#: lib/console.tcl:200
-msgid "Error: Command Failed"
+#: lib/tools_dlg.tcl:193
+msgid "Remove Tool Commands"
msgstr ""
-#: lib/database.tcl:43
-msgid "Number of loose objects"
+#: lib/tools_dlg.tcl:198
+msgid "Remove"
msgstr ""
-#: lib/database.tcl:44
-msgid "Disk space used by loose objects"
+#: lib/tools_dlg.tcl:231
+msgid "(Blue denotes repository-local tools)"
msgstr ""
-#: lib/database.tcl:45
-msgid "Number of packed objects"
+#: lib/tools_dlg.tcl:283
+#, tcl-format
+msgid "%s (%s):"
msgstr ""
-#: lib/database.tcl:46
-msgid "Number of packs"
+#: lib/tools_dlg.tcl:292
+#, tcl-format
+msgid "Run Command: %s"
msgstr ""
-#: lib/database.tcl:47
-msgid "Disk space used by packed objects"
+#: lib/tools_dlg.tcl:306
+msgid "Arguments"
msgstr ""
-#: lib/database.tcl:48
-msgid "Packed objects waiting for pruning"
+#: lib/tools_dlg.tcl:341
+msgid "OK"
msgstr ""
-#: lib/database.tcl:49
-msgid "Garbage files"
+#: lib/search.tcl:48
+msgid "Find:"
msgstr ""
-#: lib/database.tcl:72
-msgid "Compressing the object database"
+#: lib/search.tcl:50
+msgid "Next"
msgstr ""
-#: lib/database.tcl:83
-msgid "Verifying the object database with fsck-objects"
+#: lib/search.tcl:51
+msgid "Prev"
msgstr ""
-#: lib/database.tcl:107
-#, tcl-format
-msgid ""
-"This repository currently has approximately %i loose objects.\n"
-"\n"
-"To maintain optimal performance it is strongly recommended that you compress "
-"the database.\n"
-"\n"
-"Compress the database now?"
+#: lib/search.tcl:52
+msgid "RegExp"
msgstr ""
-#: lib/date.tcl:25
-#, tcl-format
-msgid "Invalid date from Git: %s"
+#: lib/search.tcl:54
+msgid "Case"
msgstr ""
-#: lib/diff.tcl:64
+#: lib/shortcut.tcl:8 lib/shortcut.tcl:43 lib/shortcut.tcl:75
#, tcl-format
-msgid ""
-"No differences detected.\n"
-"\n"
-"%s has no changes.\n"
-"\n"
-"The modification date of this file was updated by another application, but "
-"the content within the file was not changed.\n"
-"\n"
-"A rescan will be automatically started to find other files which may have "
-"the same state."
+msgid "%s (%s): Create Desktop Icon"
msgstr ""
-#: lib/diff.tcl:104
-#, tcl-format
-msgid "Loading diff of %s..."
+#: lib/shortcut.tcl:24 lib/shortcut.tcl:65
+msgid "Cannot write shortcut:"
msgstr ""
-#: lib/diff.tcl:125
-msgid ""
-"LOCAL: deleted\n"
-"REMOTE:\n"
+#: lib/shortcut.tcl:140
+msgid "Cannot write icon:"
msgstr ""
-#: lib/diff.tcl:130
-msgid ""
-"REMOTE: deleted\n"
-"LOCAL:\n"
+#: lib/remote_branch_delete.tcl:29
+#, tcl-format
+msgid "%s (%s): Delete Branch Remotely"
msgstr ""
-#: lib/diff.tcl:137
-msgid "LOCAL:\n"
+#: lib/remote_branch_delete.tcl:34
+msgid "Delete Branch Remotely"
msgstr ""
-#: lib/diff.tcl:140
-msgid "REMOTE:\n"
+#: lib/remote_branch_delete.tcl:48
+msgid "From Repository"
msgstr ""
-#: lib/diff.tcl:202 lib/diff.tcl:319
-#, tcl-format
-msgid "Unable to display %s"
+#: lib/remote_branch_delete.tcl:88
+msgid "Branches"
msgstr ""
-#: lib/diff.tcl:203
-msgid "Error loading file:"
+#: lib/remote_branch_delete.tcl:110
+msgid "Delete Only If"
msgstr ""
-#: lib/diff.tcl:210
-msgid "Git Repository (subproject)"
+#: lib/remote_branch_delete.tcl:112
+msgid "Merged Into:"
msgstr ""
-#: lib/diff.tcl:222
-msgid "* Binary file (not showing content)."
+#: lib/remote_branch_delete.tcl:120 lib/branch_delete.tcl:53
+msgid "Always (Do not perform merge checks)"
msgstr ""
-#: lib/diff.tcl:227
-#, tcl-format
-msgid ""
-"* Untracked file is %d bytes.\n"
-"* Showing only first %d bytes.\n"
+#: lib/remote_branch_delete.tcl:153
+msgid "A branch is required for 'Merged Into'."
msgstr ""
-#: lib/diff.tcl:233
+#: lib/remote_branch_delete.tcl:185
#, tcl-format
msgid ""
+"The following branches are not completely merged into %s:\n"
"\n"
-"* Untracked file clipped here by %s.\n"
-"* To see the entire file, use an external editor.\n"
+" - %s"
msgstr ""
-#: lib/diff.tcl:482
-msgid "Failed to unstage selected hunk."
+#: lib/remote_branch_delete.tcl:190
+#, tcl-format
+msgid ""
+"One or more of the merge tests failed because you have not fetched the "
+"necessary commits. Try fetching from %s first."
msgstr ""
-#: lib/diff.tcl:489
-msgid "Failed to stage selected hunk."
+#: lib/remote_branch_delete.tcl:208
+msgid "Please select one or more branches to delete."
msgstr ""
-#: lib/diff.tcl:568
-msgid "Failed to unstage selected line."
+#: lib/remote_branch_delete.tcl:218 lib/branch_delete.tcl:115
+msgid ""
+"Recovering deleted branches is difficult.\n"
+"\n"
+"Delete the selected branches?"
msgstr ""
-#: lib/diff.tcl:576
-msgid "Failed to stage selected line."
+#: lib/remote_branch_delete.tcl:227
+#, tcl-format
+msgid "Deleting branches from %s"
msgstr ""
-#: lib/encoding.tcl:443
-msgid "Default"
+#: lib/remote_branch_delete.tcl:300
+msgid "No repository selected."
msgstr ""
-#: lib/encoding.tcl:448
+#: lib/remote_branch_delete.tcl:305
#, tcl-format
-msgid "System (%s)"
+msgid "Scanning %s..."
msgstr ""
-#: lib/encoding.tcl:459 lib/encoding.tcl:465
-msgid "Other"
+#: lib/choose_repository.tcl:45
+msgid "Git Gui"
msgstr ""
-#: lib/error.tcl:20 lib/error.tcl:114
-msgid "error"
+#: lib/choose_repository.tcl:104 lib/choose_repository.tcl:427
+msgid "Create New Repository"
msgstr ""
-#: lib/error.tcl:36
-msgid "warning"
+#: lib/choose_repository.tcl:110
+msgid "New..."
msgstr ""
-#: lib/error.tcl:94
-msgid "You must correct the above errors before committing."
+#: lib/choose_repository.tcl:117 lib/choose_repository.tcl:511
+msgid "Clone Existing Repository"
msgstr ""
-#: lib/index.tcl:6
-msgid "Unable to unlock the index."
+#: lib/choose_repository.tcl:128
+msgid "Clone..."
msgstr ""
-#: lib/index.tcl:15
-msgid "Index Error"
+#: lib/choose_repository.tcl:135 lib/choose_repository.tcl:1105
+msgid "Open Existing Repository"
msgstr ""
-#: lib/index.tcl:17
-msgid ""
-"Updating the Git index failed. A rescan will be automatically started to "
-"resynchronize git-gui."
+#: lib/choose_repository.tcl:141
+msgid "Open..."
msgstr ""
-#: lib/index.tcl:28
-msgid "Continue"
+#: lib/choose_repository.tcl:154
+msgid "Recent Repositories"
msgstr ""
-#: lib/index.tcl:31
-msgid "Unlock Index"
+#: lib/choose_repository.tcl:164
+msgid "Open Recent Repository:"
msgstr ""
-#: lib/index.tcl:289
+#: lib/choose_repository.tcl:331 lib/choose_repository.tcl:338
+#: lib/choose_repository.tcl:345
#, tcl-format
-msgid "Unstaging %s from commit"
+msgid "Failed to create repository %s:"
msgstr ""
-#: lib/index.tcl:328
-msgid "Ready to commit."
+#: lib/choose_repository.tcl:422 lib/branch_create.tcl:33
+msgid "Create"
msgstr ""
-#: lib/index.tcl:341
-#, tcl-format
-msgid "Adding %s"
+#: lib/choose_repository.tcl:432
+msgid "Directory:"
msgstr ""
-#: lib/index.tcl:398
+#: lib/choose_repository.tcl:462 lib/choose_repository.tcl:588
+#: lib/choose_repository.tcl:1139
+msgid "Git Repository"
+msgstr ""
+
+#: lib/choose_repository.tcl:487
#, tcl-format
-msgid "Revert changes in file %s?"
+msgid "Directory %s already exists."
msgstr ""
-#: lib/index.tcl:400
+#: lib/choose_repository.tcl:491
#, tcl-format
-msgid "Revert changes in these %i files?"
+msgid "File %s already exists."
msgstr ""
-#: lib/index.tcl:408
-msgid "Any unstaged changes will be permanently lost by the revert."
+#: lib/choose_repository.tcl:506
+msgid "Clone"
msgstr ""
-#: lib/index.tcl:411
-msgid "Do Nothing"
+#: lib/choose_repository.tcl:519
+msgid "Source Location:"
msgstr ""
-#: lib/index.tcl:429
-msgid "Reverting selected files"
+#: lib/choose_repository.tcl:528
+msgid "Target Directory:"
msgstr ""
-#: lib/index.tcl:433
-#, tcl-format
-msgid "Reverting %s"
+#: lib/choose_repository.tcl:538
+msgid "Clone Type:"
msgstr ""
-#: lib/merge.tcl:13
-msgid ""
-"Cannot merge while amending.\n"
-"\n"
-"You must finish amending this commit before starting any type of merge.\n"
+#: lib/choose_repository.tcl:543
+msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
msgstr ""
-#: lib/merge.tcl:27
-msgid ""
-"Last scanned state does not match repository state.\n"
-"\n"
-"Another Git program has modified this repository since the last scan. A "
-"rescan must be performed before a merge can be performed.\n"
-"\n"
-"The rescan will be automatically started now.\n"
+#: lib/choose_repository.tcl:548
+msgid "Full Copy (Slower, Redundant Backup)"
msgstr ""
-#: lib/merge.tcl:45
+#: lib/choose_repository.tcl:553
+msgid "Shared (Fastest, Not Recommended, No Backup)"
+msgstr ""
+
+#: lib/choose_repository.tcl:560
+msgid "Recursively clone submodules too"
+msgstr ""
+
+#: lib/choose_repository.tcl:594 lib/choose_repository.tcl:641
+#: lib/choose_repository.tcl:790 lib/choose_repository.tcl:864
+#: lib/choose_repository.tcl:1145 lib/choose_repository.tcl:1153
#, tcl-format
-msgid ""
-"You are in the middle of a conflicted merge.\n"
-"\n"
-"File %s has merge conflicts.\n"
-"\n"
-"You must resolve them, stage the file, and commit to complete the current "
-"merge. Only then can you begin another merge.\n"
+msgid "Not a Git repository: %s"
msgstr ""
-#: lib/merge.tcl:55
+#: lib/choose_repository.tcl:630
+msgid "Standard only available for local repository."
+msgstr ""
+
+#: lib/choose_repository.tcl:634
+msgid "Shared only available for local repository."
+msgstr ""
+
+#: lib/choose_repository.tcl:655
#, tcl-format
-msgid ""
-"You are in the middle of a change.\n"
-"\n"
-"File %s is modified.\n"
-"\n"
-"You should complete the current commit before starting a merge. Doing so "
-"will help you abort a failed merge, should the need arise.\n"
+msgid "Location %s already exists."
+msgstr ""
+
+#: lib/choose_repository.tcl:666
+msgid "Failed to configure origin"
+msgstr ""
+
+#: lib/choose_repository.tcl:678
+msgid "Counting objects"
+msgstr ""
+
+#: lib/choose_repository.tcl:679
+msgid "buckets"
msgstr ""
-#: lib/merge.tcl:107
+#: lib/choose_repository.tcl:703
#, tcl-format
-msgid "%s of %s"
+msgid "Unable to copy objects/info/alternates: %s"
msgstr ""
-#: lib/merge.tcl:120
+#: lib/choose_repository.tcl:740
#, tcl-format
-msgid "Merging %s and %s..."
+msgid "Nothing to clone from %s."
msgstr ""
-#: lib/merge.tcl:131
-msgid "Merge completed successfully."
+#: lib/choose_repository.tcl:742 lib/choose_repository.tcl:962
+#: lib/choose_repository.tcl:974
+msgid "The 'master' branch has not been initialized."
msgstr ""
-#: lib/merge.tcl:133
-msgid "Merge failed. Conflict resolution is required."
+#: lib/choose_repository.tcl:755
+msgid "Hardlinks are unavailable. Falling back to copying."
msgstr ""
-#: lib/merge.tcl:158
+#: lib/choose_repository.tcl:769
#, tcl-format
-msgid "Merge Into %s"
+msgid "Cloning from %s"
msgstr ""
-#: lib/merge.tcl:177
-msgid "Revision To Merge"
+#: lib/choose_repository.tcl:800
+msgid "Copying objects"
msgstr ""
-#: lib/merge.tcl:212
-msgid ""
-"Cannot abort while amending.\n"
-"\n"
-"You must finish amending this commit.\n"
+#: lib/choose_repository.tcl:801
+msgid "KiB"
msgstr ""
-#: lib/merge.tcl:222
-msgid ""
-"Abort merge?\n"
-"\n"
-"Aborting the current merge will cause *ALL* uncommitted changes to be lost.\n"
-"\n"
-"Continue with aborting the current merge?"
+#: lib/choose_repository.tcl:825
+#, tcl-format
+msgid "Unable to copy object: %s"
msgstr ""
-#: lib/merge.tcl:228
-msgid ""
-"Reset changes?\n"
-"\n"
-"Resetting the changes will cause *ALL* uncommitted changes to be lost.\n"
-"\n"
-"Continue with resetting the current changes?"
+#: lib/choose_repository.tcl:837
+msgid "Linking objects"
msgstr ""
-#: lib/merge.tcl:239
-msgid "Aborting"
+#: lib/choose_repository.tcl:838
+msgid "objects"
msgstr ""
-#: lib/merge.tcl:239
-msgid "files reset"
+#: lib/choose_repository.tcl:846
+#, tcl-format
+msgid "Unable to hardlink object: %s"
msgstr ""
-#: lib/merge.tcl:267
-msgid "Abort failed."
+#: lib/choose_repository.tcl:903
+msgid "Cannot fetch branches and objects. See console output for details."
msgstr ""
-#: lib/merge.tcl:269
-msgid "Abort completed. Ready."
+#: lib/choose_repository.tcl:914
+msgid "Cannot fetch tags. See console output for details."
msgstr ""
-#: lib/mergetool.tcl:8
-msgid "Force resolution to the base version?"
+#: lib/choose_repository.tcl:938
+msgid "Cannot determine HEAD. See console output for details."
msgstr ""
-#: lib/mergetool.tcl:9
-msgid "Force resolution to this branch?"
+#: lib/choose_repository.tcl:947
+#, tcl-format
+msgid "Unable to cleanup %s"
msgstr ""
-#: lib/mergetool.tcl:10
-msgid "Force resolution to the other branch?"
+#: lib/choose_repository.tcl:953
+msgid "Clone failed."
msgstr ""
-#: lib/mergetool.tcl:14
-#, tcl-format
-msgid ""
-"Note that the diff shows only conflicting changes.\n"
-"\n"
-"%s will be overwritten.\n"
-"\n"
-"This operation can be undone only by restarting the merge."
+#: lib/choose_repository.tcl:960
+msgid "No default branch obtained."
msgstr ""
-#: lib/mergetool.tcl:45
+#: lib/choose_repository.tcl:971
#, tcl-format
-msgid "File %s seems to have unresolved conflicts, still stage?"
+msgid "Cannot resolve %s as a commit."
msgstr ""
-#: lib/mergetool.tcl:60
-#, tcl-format
-msgid "Adding resolution for %s"
+#: lib/choose_repository.tcl:998
+msgid "Creating working directory"
msgstr ""
-#: lib/mergetool.tcl:141
-msgid "Cannot resolve deletion or link conflicts using a tool"
+#: lib/choose_repository.tcl:1028
+msgid "Initial file checkout failed."
msgstr ""
-#: lib/mergetool.tcl:146
-msgid "Conflict file does not exist"
+#: lib/choose_repository.tcl:1072
+msgid "Cloning submodules"
msgstr ""
-#: lib/mergetool.tcl:264
-#, tcl-format
-msgid "Not a GUI merge tool: '%s'"
+#: lib/choose_repository.tcl:1087
+msgid "Cannot clone submodules."
+msgstr ""
+
+#: lib/choose_repository.tcl:1110
+msgid "Repository:"
msgstr ""
-#: lib/mergetool.tcl:268
+#: lib/choose_repository.tcl:1159
#, tcl-format
-msgid "Unsupported merge tool '%s'"
+msgid "Failed to open repository %s:"
msgstr ""
-#: lib/mergetool.tcl:303
-msgid "Merge tool is already running, terminate it?"
+#: lib/about.tcl:26
+msgid "git-gui - a graphical user interface for Git."
msgstr ""
-#: lib/mergetool.tcl:323
+#: lib/blame.tcl:74
#, tcl-format
-msgid ""
-"Error retrieving versions:\n"
-"%s"
+msgid "%s (%s): File Viewer"
msgstr ""
-#: lib/mergetool.tcl:343
-#, tcl-format
-msgid ""
-"Could not start the merge tool:\n"
-"\n"
-"%s"
+#: lib/blame.tcl:80
+msgid "Commit:"
msgstr ""
-#: lib/mergetool.tcl:347
-msgid "Running merge tool..."
+#: lib/blame.tcl:282
+msgid "Copy Commit"
msgstr ""
-#: lib/mergetool.tcl:375 lib/mergetool.tcl:383
-msgid "Merge tool failed."
+#: lib/blame.tcl:286
+msgid "Find Text..."
msgstr ""
-#: lib/option.tcl:11
-#, tcl-format
-msgid "Invalid global encoding '%s'"
+#: lib/blame.tcl:290
+msgid "Goto Line..."
msgstr ""
-#: lib/option.tcl:19
-#, tcl-format
-msgid "Invalid repo encoding '%s'"
+#: lib/blame.tcl:299
+msgid "Do Full Copy Detection"
msgstr ""
-#: lib/option.tcl:117
-msgid "Restore Defaults"
+#: lib/blame.tcl:303
+msgid "Show History Context"
msgstr ""
-#: lib/option.tcl:121
-msgid "Save"
+#: lib/blame.tcl:306
+msgid "Blame Parent Commit"
msgstr ""
-#: lib/option.tcl:131
+#: lib/blame.tcl:468
#, tcl-format
-msgid "%s Repository"
+msgid "Reading %s..."
msgstr ""
-#: lib/option.tcl:132
-msgid "Global (All Repositories)"
+#: lib/blame.tcl:596
+msgid "Loading copy/move tracking annotations..."
msgstr ""
-#: lib/option.tcl:138
-msgid "User Name"
+#: lib/blame.tcl:613
+msgid "lines annotated"
msgstr ""
-#: lib/option.tcl:139
-msgid "Email Address"
+#: lib/blame.tcl:815
+msgid "Loading original location annotations..."
msgstr ""
-#: lib/option.tcl:141
-msgid "Summarize Merge Commits"
+#: lib/blame.tcl:818
+msgid "Annotation complete."
msgstr ""
-#: lib/option.tcl:142
-msgid "Merge Verbosity"
+#: lib/blame.tcl:849
+msgid "Busy"
msgstr ""
-#: lib/option.tcl:143
-msgid "Show Diffstat After Merge"
+#: lib/blame.tcl:850
+msgid "Annotation process is already running."
msgstr ""
-#: lib/option.tcl:144
-msgid "Use Merge Tool"
+#: lib/blame.tcl:889
+msgid "Running thorough copy detection..."
msgstr ""
-#: lib/option.tcl:146
-msgid "Trust File Modification Timestamps"
+#: lib/blame.tcl:957
+msgid "Loading annotation..."
msgstr ""
-#: lib/option.tcl:147
-msgid "Prune Tracking Branches During Fetch"
+#: lib/blame.tcl:1010
+msgid "Author:"
msgstr ""
-#: lib/option.tcl:148
-msgid "Match Tracking Branches"
+#: lib/blame.tcl:1014
+msgid "Committer:"
msgstr ""
-#: lib/option.tcl:149
-msgid "Blame Copy Only On Changed Files"
+#: lib/blame.tcl:1019
+msgid "Original File:"
msgstr ""
-#: lib/option.tcl:150
-msgid "Minimum Letters To Blame Copy On"
+#: lib/blame.tcl:1067
+msgid "Cannot find HEAD commit:"
msgstr ""
-#: lib/option.tcl:151
-msgid "Blame History Context Radius (days)"
+#: lib/blame.tcl:1122
+msgid "Cannot find parent commit:"
msgstr ""
-#: lib/option.tcl:152
-msgid "Number of Diff Context Lines"
+#: lib/blame.tcl:1137
+msgid "Unable to display parent"
msgstr ""
-#: lib/option.tcl:153
-msgid "Commit Message Text Width"
+#: lib/blame.tcl:1138 lib/diff.tcl:345
+msgid "Error loading diff:"
msgstr ""
-#: lib/option.tcl:154
-msgid "New Branch Name Template"
+#: lib/blame.tcl:1279
+msgid "Originally By:"
msgstr ""
-#: lib/option.tcl:155
-msgid "Default File Contents Encoding"
+#: lib/blame.tcl:1285
+msgid "In File:"
msgstr ""
-#: lib/option.tcl:203
-msgid "Change"
+#: lib/blame.tcl:1290
+msgid "Copied Or Moved Here By:"
msgstr ""
-#: lib/option.tcl:230
-msgid "Spelling Dictionary:"
+#: lib/diff.tcl:77
+#, tcl-format
+msgid ""
+"No differences detected.\n"
+"\n"
+"%s has no changes.\n"
+"\n"
+"The modification date of this file was updated by another application, but "
+"the content within the file was not changed.\n"
+"\n"
+"A rescan will be automatically started to find other files which may have "
+"the same state."
msgstr ""
-#: lib/option.tcl:254
-msgid "Change Font"
+#: lib/diff.tcl:117
+#, tcl-format
+msgid "Loading diff of %s..."
msgstr ""
-#: lib/option.tcl:258
-#, tcl-format
-msgid "Choose %s"
+#: lib/diff.tcl:143
+msgid ""
+"LOCAL: deleted\n"
+"REMOTE:\n"
msgstr ""
-#: lib/option.tcl:264
-msgid "pt."
+#: lib/diff.tcl:148
+msgid ""
+"REMOTE: deleted\n"
+"LOCAL:\n"
msgstr ""
-#: lib/option.tcl:278
-msgid "Preferences"
+#: lib/diff.tcl:155
+msgid "LOCAL:\n"
msgstr ""
-#: lib/option.tcl:314
-msgid "Failed to completely save options:"
+#: lib/diff.tcl:158
+msgid "REMOTE:\n"
msgstr ""
-#: lib/remote.tcl:163
-msgid "Remove Remote"
+#: lib/diff.tcl:220 lib/diff.tcl:344
+#, tcl-format
+msgid "Unable to display %s"
msgstr ""
-#: lib/remote.tcl:168
-msgid "Prune from"
+#: lib/diff.tcl:221
+msgid "Error loading file:"
msgstr ""
-#: lib/remote.tcl:173
-msgid "Fetch from"
+#: lib/diff.tcl:227
+msgid "Git Repository (subproject)"
msgstr ""
-#: lib/remote.tcl:215
-msgid "Push to"
+#: lib/diff.tcl:239
+msgid "* Binary file (not showing content)."
msgstr ""
-#: lib/remote_add.tcl:19
-msgid "Add Remote"
+#: lib/diff.tcl:244
+#, tcl-format
+msgid ""
+"* Untracked file is %d bytes.\n"
+"* Showing only first %d bytes.\n"
msgstr ""
-#: lib/remote_add.tcl:24
-msgid "Add New Remote"
+#: lib/diff.tcl:250
+#, tcl-format
+msgid ""
+"\n"
+"* Untracked file clipped here by %s.\n"
+"* To see the entire file, use an external editor.\n"
msgstr ""
-#: lib/remote_add.tcl:28 lib/tools_dlg.tcl:36
-msgid "Add"
+#: lib/diff.tcl:583
+msgid "Failed to unstage selected hunk."
msgstr ""
-#: lib/remote_add.tcl:37
-msgid "Remote Details"
+#: lib/diff.tcl:591
+msgid "Failed to revert selected hunk."
msgstr ""
-#: lib/remote_add.tcl:50
-msgid "Location:"
+#: lib/diff.tcl:594
+msgid "Failed to stage selected hunk."
msgstr ""
-#: lib/remote_add.tcl:62
-msgid "Further Action"
+#: lib/diff.tcl:687
+msgid "Failed to unstage selected line."
msgstr ""
-#: lib/remote_add.tcl:65
-msgid "Fetch Immediately"
+#: lib/diff.tcl:696
+msgid "Failed to revert selected line."
msgstr ""
-#: lib/remote_add.tcl:71
-msgid "Initialize Remote Repository and Push"
+#: lib/diff.tcl:700
+msgid "Failed to stage selected line."
msgstr ""
-#: lib/remote_add.tcl:77
-msgid "Do Nothing Else Now"
+#: lib/diff.tcl:889
+msgid "Failed to undo last revert."
msgstr ""
-#: lib/remote_add.tcl:101
-msgid "Please supply a remote name."
+#: lib/sshkey.tcl:34
+msgid "No keys found."
msgstr ""
-#: lib/remote_add.tcl:114
+#: lib/sshkey.tcl:37
#, tcl-format
-msgid "'%s' is not an acceptable remote name."
+msgid "Found a public key in: %s"
msgstr ""
-#: lib/remote_add.tcl:125
-#, tcl-format
-msgid "Failed to add remote '%s' of location '%s'."
+#: lib/sshkey.tcl:43
+msgid "Generate Key"
msgstr ""
-#: lib/remote_add.tcl:133 lib/transport.tcl:6
-#, tcl-format
-msgid "fetch %s"
+#: lib/sshkey.tcl:61
+msgid "Copy To Clipboard"
msgstr ""
-#: lib/remote_add.tcl:134
-#, tcl-format
-msgid "Fetching the %s"
+#: lib/sshkey.tcl:75
+msgid "Your OpenSSH Public Key"
msgstr ""
-#: lib/remote_add.tcl:157
+#: lib/sshkey.tcl:83
+msgid "Generating..."
+msgstr ""
+
+#: lib/sshkey.tcl:89
#, tcl-format
-msgid "Do not know how to initialize repository at location '%s'."
+msgid ""
+"Could not start ssh-keygen:\n"
+"\n"
+"%s"
+msgstr ""
+
+#: lib/sshkey.tcl:116
+msgid "Generation failed."
msgstr ""
-#: lib/remote_add.tcl:163 lib/transport.tcl:25 lib/transport.tcl:63
-#: lib/transport.tcl:81
+#: lib/sshkey.tcl:123
+msgid "Generation succeeded, but no keys found."
+msgstr ""
+
+#: lib/sshkey.tcl:126
#, tcl-format
-msgid "push %s"
+msgid "Your key is in: %s"
msgstr ""
-#: lib/remote_add.tcl:164
+#: lib/branch_create.tcl:23
#, tcl-format
-msgid "Setting up the %s (at %s)"
+msgid "%s (%s): Create Branch"
msgstr ""
-#: lib/remote_branch_delete.tcl:29 lib/remote_branch_delete.tcl:34
-msgid "Delete Branch Remotely"
+#: lib/branch_create.tcl:28
+msgid "Create New Branch"
msgstr ""
-#: lib/remote_branch_delete.tcl:47
-msgid "From Repository"
+#: lib/branch_create.tcl:42
+msgid "Branch Name"
msgstr ""
-#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:134
-msgid "Remote:"
+#: lib/branch_create.tcl:57
+msgid "Match Tracking Branch Name"
msgstr ""
-#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:149
-msgid "Arbitrary Location:"
+#: lib/branch_create.tcl:66
+msgid "Starting Revision"
msgstr ""
-#: lib/remote_branch_delete.tcl:84
-msgid "Branches"
+#: lib/branch_create.tcl:72
+msgid "Update Existing Branch:"
msgstr ""
-#: lib/remote_branch_delete.tcl:109
-msgid "Delete Only If"
+#: lib/branch_create.tcl:75
+msgid "No"
msgstr ""
-#: lib/remote_branch_delete.tcl:111
-msgid "Merged Into:"
+#: lib/branch_create.tcl:80
+msgid "Fast Forward Only"
msgstr ""
-#: lib/remote_branch_delete.tcl:152
-msgid "A branch is required for 'Merged Into'."
+#: lib/branch_create.tcl:97
+msgid "Checkout After Creation"
msgstr ""
-#: lib/remote_branch_delete.tcl:184
-#, tcl-format
-msgid ""
-"The following branches are not completely merged into %s:\n"
-"\n"
-" - %s"
+#: lib/branch_create.tcl:132
+msgid "Please select a tracking branch."
msgstr ""
-#: lib/remote_branch_delete.tcl:189
+#: lib/branch_create.tcl:141
#, tcl-format
-msgid ""
-"One or more of the merge tests failed because you have not fetched the "
-"necessary commits. Try fetching from %s first."
+msgid "Tracking branch %s is not a branch in the remote repository."
msgstr ""
-#: lib/remote_branch_delete.tcl:207
-msgid "Please select one or more branches to delete."
+#: lib/console.tcl:59
+msgid "Working... please wait..."
msgstr ""
-#: lib/remote_branch_delete.tcl:226
-#, tcl-format
-msgid "Deleting branches from %s"
+#: lib/console.tcl:186
+msgid "Success"
msgstr ""
-#: lib/remote_branch_delete.tcl:292
-msgid "No repository selected."
+#: lib/console.tcl:200
+msgid "Error: Command Failed"
+msgstr ""
+
+#: lib/line.tcl:17
+msgid "Goto Line:"
+msgstr ""
+
+#: lib/line.tcl:23
+msgid "Go"
+msgstr ""
+
+#: lib/choose_rev.tcl:52
+msgid "This Detached Checkout"
+msgstr ""
+
+#: lib/choose_rev.tcl:60
+msgid "Revision Expression:"
+msgstr ""
+
+#: lib/choose_rev.tcl:72
+msgid "Local Branch"
+msgstr ""
+
+#: lib/choose_rev.tcl:77
+msgid "Tracking Branch"
+msgstr ""
+
+#: lib/choose_rev.tcl:82 lib/choose_rev.tcl:544
+msgid "Tag"
msgstr ""
-#: lib/remote_branch_delete.tcl:297
+#: lib/choose_rev.tcl:321
#, tcl-format
-msgid "Scanning %s..."
+msgid "Invalid revision: %s"
msgstr ""
-#: lib/search.tcl:21
-msgid "Find:"
+#: lib/choose_rev.tcl:342
+msgid "No revision selected."
msgstr ""
-#: lib/search.tcl:23
-msgid "Next"
+#: lib/choose_rev.tcl:350
+msgid "Revision expression is empty."
msgstr ""
-#: lib/search.tcl:24
-msgid "Prev"
+#: lib/choose_rev.tcl:537
+msgid "Updated"
msgstr ""
-#: lib/search.tcl:25
-msgid "Case-Sensitive"
+#: lib/choose_rev.tcl:565
+msgid "URL"
msgstr ""
-#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
-msgid "Cannot write shortcut:"
+#: lib/commit.tcl:9
+msgid ""
+"There is nothing to amend.\n"
+"\n"
+"You are about to create the initial commit. There is no commit before this "
+"to amend.\n"
msgstr ""
-#: lib/shortcut.tcl:137
-msgid "Cannot write icon:"
+#: lib/commit.tcl:18
+msgid ""
+"Cannot amend while merging.\n"
+"\n"
+"You are currently in the middle of a merge that has not been fully "
+"completed. You cannot amend the prior commit unless you first abort the "
+"current merge activity.\n"
msgstr ""
-#: lib/spellcheck.tcl:57
-msgid "Unsupported spell checker"
+#: lib/commit.tcl:56
+msgid "Error loading commit data for amend:"
msgstr ""
-#: lib/spellcheck.tcl:65
-msgid "Spell checking is unavailable"
+#: lib/commit.tcl:83
+msgid "Unable to obtain your identity:"
msgstr ""
-#: lib/spellcheck.tcl:68
-msgid "Invalid spell checking configuration"
+#: lib/commit.tcl:88
+msgid "Invalid GIT_COMMITTER_IDENT:"
msgstr ""
-#: lib/spellcheck.tcl:70
+#: lib/commit.tcl:138
#, tcl-format
-msgid "Reverting dictionary to %s."
+msgid "warning: Tcl does not support encoding '%s'."
msgstr ""
-#: lib/spellcheck.tcl:73
-msgid "Spell checker silently failed on startup"
+#: lib/commit.tcl:158
+msgid ""
+"Last scanned state does not match repository state.\n"
+"\n"
+"Another Git program has modified this repository since the last scan. A "
+"rescan must be performed before another commit can be created.\n"
+"\n"
+"The rescan will be automatically started now.\n"
msgstr ""
-#: lib/spellcheck.tcl:80
-msgid "Unrecognized spell checker"
+#: lib/commit.tcl:182
+#, tcl-format
+msgid ""
+"Unmerged files cannot be committed.\n"
+"\n"
+"File %s has merge conflicts. You must resolve them and stage the file "
+"before committing.\n"
msgstr ""
-#: lib/spellcheck.tcl:186
-msgid "No Suggestions"
+#: lib/commit.tcl:190
+#, tcl-format
+msgid ""
+"Unknown file state %s detected.\n"
+"\n"
+"File %s cannot be committed by this program.\n"
msgstr ""
-#: lib/spellcheck.tcl:388
-msgid "Unexpected EOF from spell checker"
+#: lib/commit.tcl:198
+msgid ""
+"No changes to commit.\n"
+"\n"
+"You must stage at least 1 file before you can commit.\n"
msgstr ""
-#: lib/spellcheck.tcl:392
-msgid "Spell Checker Failed"
+#: lib/commit.tcl:213
+msgid ""
+"Please supply a commit message.\n"
+"\n"
+"A good commit message has the following format:\n"
+"\n"
+"- First line: Describe in one sentence what you did.\n"
+"- Second line: Blank\n"
+"- Remaining lines: Describe why this change is good.\n"
msgstr ""
-#: lib/sshkey.tcl:31
-msgid "No keys found."
+#: lib/commit.tcl:244
+msgid "Calling pre-commit hook..."
msgstr ""
-#: lib/sshkey.tcl:34
-#, tcl-format
-msgid "Found a public key in: %s"
+#: lib/commit.tcl:259
+msgid "Commit declined by pre-commit hook."
msgstr ""
-#: lib/sshkey.tcl:40
-msgid "Generate Key"
+#: lib/commit.tcl:278
+msgid ""
+"You are about to commit on a detached head. This is a potentially dangerous "
+"thing to do because if you switch to another branch you will lose your "
+"changes and it can be difficult to retrieve them later from the reflog. You "
+"should probably cancel this commit and create a new branch to continue.\n"
+" \n"
+" Do you really want to proceed with your Commit?"
msgstr ""
-#: lib/sshkey.tcl:56
-msgid "Copy To Clipboard"
+#: lib/commit.tcl:299
+msgid "Calling commit-msg hook..."
msgstr ""
-#: lib/sshkey.tcl:70
-msgid "Your OpenSSH Public Key"
+#: lib/commit.tcl:314
+msgid "Commit declined by commit-msg hook."
msgstr ""
-#: lib/sshkey.tcl:78
-msgid "Generating..."
+#: lib/commit.tcl:327
+msgid "Committing changes..."
+msgstr ""
+
+#: lib/commit.tcl:344
+msgid "write-tree failed:"
+msgstr ""
+
+#: lib/commit.tcl:345 lib/commit.tcl:395 lib/commit.tcl:422
+msgid "Commit failed."
msgstr ""
-#: lib/sshkey.tcl:84
+#: lib/commit.tcl:362
#, tcl-format
+msgid "Commit %s appears to be corrupt"
+msgstr ""
+
+#: lib/commit.tcl:367
msgid ""
-"Could not start ssh-keygen:\n"
+"No changes to commit.\n"
"\n"
-"%s"
+"No files were modified by this commit and it was not a merge commit.\n"
+"\n"
+"A rescan will be automatically started now.\n"
msgstr ""
-#: lib/sshkey.tcl:111
-msgid "Generation failed."
+#: lib/commit.tcl:374
+msgid "No changes to commit."
msgstr ""
-#: lib/sshkey.tcl:118
-msgid "Generation succeeded, but no keys found."
+#: lib/commit.tcl:394
+msgid "commit-tree failed:"
msgstr ""
-#: lib/sshkey.tcl:121
-#, tcl-format
-msgid "Your key is in: %s"
+#: lib/commit.tcl:421
+msgid "update-ref failed:"
msgstr ""
-#: lib/status_bar.tcl:83
+#: lib/commit.tcl:514
#, tcl-format
-msgid "%s ... %*i of %*i %s (%3i%%)"
+msgid "Created commit %s: %s"
msgstr ""
-#: lib/tools.tcl:75
+#: lib/branch_delete.tcl:16
#, tcl-format
-msgid "Running %s requires a selected file."
+msgid "%s (%s): Delete Branch"
msgstr ""
-#: lib/tools.tcl:90
-#, tcl-format
-msgid "Are you sure you want to run %s?"
+#: lib/branch_delete.tcl:21
+msgid "Delete Local Branch"
+msgstr ""
+
+#: lib/branch_delete.tcl:39
+msgid "Local Branches"
msgstr ""
-#: lib/tools.tcl:110
+#: lib/branch_delete.tcl:51
+msgid "Delete Only If Merged Into"
+msgstr ""
+
+#: lib/branch_delete.tcl:103
#, tcl-format
-msgid "Tool: %s"
+msgid "The following branches are not completely merged into %s:"
msgstr ""
-#: lib/tools.tcl:111
+#: lib/branch_delete.tcl:131
#, tcl-format
-msgid "Running: %s"
+msgid " - %s:"
msgstr ""
-#: lib/tools.tcl:149
+#: lib/branch_delete.tcl:141
#, tcl-format
-msgid "Tool completed successfully: %s"
+msgid ""
+"Failed to delete branches:\n"
+"%s"
msgstr ""
-#: lib/tools.tcl:151
+#: lib/date.tcl:25
#, tcl-format
-msgid "Tool failed: %s"
+msgid "Invalid date from Git: %s"
msgstr ""
-#: lib/tools_dlg.tcl:22
-msgid "Add Tool"
+#: lib/database.tcl:42
+msgid "Number of loose objects"
msgstr ""
-#: lib/tools_dlg.tcl:28
-msgid "Add New Tool Command"
+#: lib/database.tcl:43
+msgid "Disk space used by loose objects"
msgstr ""
-#: lib/tools_dlg.tcl:33
-msgid "Add globally"
+#: lib/database.tcl:44
+msgid "Number of packed objects"
msgstr ""
-#: lib/tools_dlg.tcl:45
-msgid "Tool Details"
+#: lib/database.tcl:45
+msgid "Number of packs"
msgstr ""
-#: lib/tools_dlg.tcl:48
-msgid "Use '/' separators to create a submenu tree:"
+#: lib/database.tcl:46
+msgid "Disk space used by packed objects"
msgstr ""
-#: lib/tools_dlg.tcl:61
-msgid "Command:"
+#: lib/database.tcl:47
+msgid "Packed objects waiting for pruning"
msgstr ""
-#: lib/tools_dlg.tcl:74
-msgid "Show a dialog before running"
+#: lib/database.tcl:48
+msgid "Garbage files"
msgstr ""
-#: lib/tools_dlg.tcl:80
-msgid "Ask the user to select a revision (sets $REVISION)"
+#: lib/database.tcl:66
+#, tcl-format
+msgid "%s (%s): Database Statistics"
msgstr ""
-#: lib/tools_dlg.tcl:85
-msgid "Ask the user for additional arguments (sets $ARGS)"
+#: lib/database.tcl:72
+msgid "Compressing the object database"
msgstr ""
-#: lib/tools_dlg.tcl:92
-msgid "Don't show the command output window"
+#: lib/database.tcl:83
+msgid "Verifying the object database with fsck-objects"
msgstr ""
-#: lib/tools_dlg.tcl:97
-msgid "Run only if a diff is selected ($FILENAME not empty)"
+#: lib/database.tcl:107
+#, tcl-format
+msgid ""
+"This repository currently has approximately %i loose objects.\n"
+"\n"
+"To maintain optimal performance it is strongly recommended that you compress "
+"the database.\n"
+"\n"
+"Compress the database now?"
msgstr ""
-#: lib/tools_dlg.tcl:121
-msgid "Please supply a name for the tool."
+#: lib/error.tcl:20
+#, tcl-format
+msgid "%s: error"
msgstr ""
-#: lib/tools_dlg.tcl:129
+#: lib/error.tcl:36
#, tcl-format
-msgid "Tool '%s' already exists."
+msgid "%s: warning"
msgstr ""
-#: lib/tools_dlg.tcl:151
+#: lib/error.tcl:80
#, tcl-format
-msgid ""
-"Could not add tool:\n"
-"%s"
+msgid "%s hook failed:"
msgstr ""
-#: lib/tools_dlg.tcl:190
-msgid "Remove Tool"
+#: lib/error.tcl:96
+msgid "You must correct the above errors before committing."
msgstr ""
-#: lib/tools_dlg.tcl:196
-msgid "Remove Tool Commands"
+#: lib/error.tcl:116
+#, tcl-format
+msgid "%s (%s): error"
msgstr ""
-#: lib/tools_dlg.tcl:200
-msgid "Remove"
+#: lib/merge.tcl:13
+msgid ""
+"Cannot merge while amending.\n"
+"\n"
+"You must finish amending this commit before starting any type of merge.\n"
msgstr ""
-#: lib/tools_dlg.tcl:236
-msgid "(Blue denotes repository-local tools)"
+#: lib/merge.tcl:27
+msgid ""
+"Last scanned state does not match repository state.\n"
+"\n"
+"Another Git program has modified this repository since the last scan. A "
+"rescan must be performed before a merge can be performed.\n"
+"\n"
+"The rescan will be automatically started now.\n"
msgstr ""
-#: lib/tools_dlg.tcl:297
+#: lib/merge.tcl:45
#, tcl-format
-msgid "Run Command: %s"
+msgid ""
+"You are in the middle of a conflicted merge.\n"
+"\n"
+"File %s has merge conflicts.\n"
+"\n"
+"You must resolve them, stage the file, and commit to complete the current "
+"merge. Only then can you begin another merge.\n"
msgstr ""
-#: lib/tools_dlg.tcl:311
-msgid "Arguments"
+#: lib/merge.tcl:55
+#, tcl-format
+msgid ""
+"You are in the middle of a change.\n"
+"\n"
+"File %s is modified.\n"
+"\n"
+"You should complete the current commit before starting a merge. Doing so "
+"will help you abort a failed merge, should the need arise.\n"
msgstr ""
-#: lib/tools_dlg.tcl:348
-msgid "OK"
+#: lib/merge.tcl:108
+#, tcl-format
+msgid "%s of %s"
msgstr ""
-#: lib/transport.tcl:7
+#: lib/merge.tcl:126
#, tcl-format
-msgid "Fetching new changes from %s"
+msgid "Merging %s and %s..."
msgstr ""
-#: lib/transport.tcl:18
-#, tcl-format
-msgid "remote prune %s"
+#: lib/merge.tcl:137
+msgid "Merge completed successfully."
msgstr ""
-#: lib/transport.tcl:19
-#, tcl-format
-msgid "Pruning tracking branches deleted from %s"
+#: lib/merge.tcl:139
+msgid "Merge failed. Conflict resolution is required."
msgstr ""
-#: lib/transport.tcl:26
+#: lib/merge.tcl:156
#, tcl-format
-msgid "Pushing changes to %s"
+msgid "%s (%s): Merge"
msgstr ""
-#: lib/transport.tcl:64
+#: lib/merge.tcl:164
#, tcl-format
-msgid "Mirroring to %s"
+msgid "Merge Into %s"
msgstr ""
-#: lib/transport.tcl:82
-#, tcl-format
-msgid "Pushing %s %s to %s"
+#: lib/merge.tcl:183
+msgid "Revision To Merge"
msgstr ""
-#: lib/transport.tcl:100
-msgid "Push Branches"
+#: lib/merge.tcl:218
+msgid ""
+"Cannot abort while amending.\n"
+"\n"
+"You must finish amending this commit.\n"
msgstr ""
-#: lib/transport.tcl:114
-msgid "Source Branches"
+#: lib/merge.tcl:228
+msgid ""
+"Abort merge?\n"
+"\n"
+"Aborting the current merge will cause *ALL* uncommitted changes to be lost.\n"
+"\n"
+"Continue with aborting the current merge?"
msgstr ""
-#: lib/transport.tcl:131
-msgid "Destination Repository"
+#: lib/merge.tcl:234
+msgid ""
+"Reset changes?\n"
+"\n"
+"Resetting the changes will cause *ALL* uncommitted changes to be lost.\n"
+"\n"
+"Continue with resetting the current changes?"
msgstr ""
-#: lib/transport.tcl:169
-msgid "Transfer Options"
+#: lib/merge.tcl:246
+msgid "Aborting"
msgstr ""
-#: lib/transport.tcl:171
-msgid "Force overwrite existing branch (may discard changes)"
+#: lib/merge.tcl:247
+msgid "files reset"
msgstr ""
-#: lib/transport.tcl:175
-msgid "Use thin pack (for slow network connections)"
+#: lib/merge.tcl:277
+msgid "Abort failed."
msgstr ""
-#: lib/transport.tcl:179
-msgid "Include tags"
+#: lib/merge.tcl:279
+msgid "Abort completed. Ready."
msgstr ""
diff --git a/git-gui/po/glossary/de.po b/git-gui/po/glossary/de.po
index 35764d1..4c5f233 100644
--- a/git-gui/po/glossary/de.po
+++ b/git-gui/po/glossary/de.po
@@ -6,10 +6,11 @@
msgid ""
msgstr ""
"Project-Id-Version: git-gui glossary\n"
-"POT-Creation-Date: 2008-01-07 21:20+0100\n"
-"PO-Revision-Date: 2008-02-16 21:48+0100\n"
+"POT-Creation-Date: 2020-01-26 22:26+0100\n"
+"PO-Revision-Date: 2020-02-09 21:22+0100\n"
"Last-Translator: Christian Stimming <stimming@tuhh.de>\n"
"Language-Team: German \n"
+"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -19,6 +20,9 @@ msgid ""
"English Term (Dear translator: This file will never be visible to the user!)"
msgstr ""
"Deutsche Übersetzung.\n"
+"Git-core glossary:\n"
+" https://github.com/ruester/git-po-de/wiki/Translation-Guidelines\n"
+"\n"
"Andere deutsche SCM:\n"
" http://tortoisesvn.net/docs/release/TortoiseSVN_de/index.html und http://"
"tortoisesvn.tigris.org/svn/tortoisesvn/trunk/Languages/Tortoise_de.po "
@@ -32,33 +36,77 @@ msgstr ""
" http://rapidsvn.tigris.org/svn/rapidsvn/trunk/src/locale/de/rapidsvn.po "
"(username=guest, password empty, schlecht)"
+#. "prematurely stop and abandon an operation"
+msgid "abort"
+msgstr "abbrechen"
+
#. ""
msgid "amend"
msgstr "nachbessern (ergänzen)"
+#. "a commit that succeeds the current one in git's graph of commits (not necessarily directly)"
+msgid "ancestor"
+msgstr "Vorgänger-Commit"
+
#. ""
msgid "annotate"
msgstr "annotieren"
+#. "The person who initially created (authored) a commit"
+msgid "author"
+msgstr "Autor"
+
+#. "a repository with only .git directory, without working directory"
+msgid "bare repository"
+msgstr "bloßes Projektarchiv"
+
+#. "a parent version of the current file"
+msgid "base"
+msgstr "Ursprung"
+
+#. ""
+msgid "bisect"
+msgstr "binäre Suche [noun], binäre Suche benutzen [verb]"
+
+#. "get the authors responsible for each line in a file"
+msgid "blame"
+msgstr "annotieren"
+
+#. ""
+msgid "blob"
+msgstr "Blob"
+
#. "A 'branch' is an active line of development."
msgid "branch [noun]"
-msgstr "Zweig"
+msgstr "Branch"
#. ""
msgid "branch [verb]"
-msgstr "verzweigen"
+msgstr "branchen"
#. ""
msgid "checkout [noun]"
msgstr ""
-"Arbeitskopie (Erstellung einer Arbeitskopie; Auscheck? Ausspielung? Abruf? "
-"Source Safe: Auscheckvorgang)"
+"Arbeitskopie (Checkout; Erstellung einer Arbeitskopie; Auscheck? Source "
+"Safe: Auscheckvorgang)"
#. "The action of updating the working tree to a revision which was stored in the object database."
msgid "checkout [verb]"
msgstr ""
-"Arbeitskopie erstellen; Zweig umstellen [checkout a branch] (auschecken? "
-"ausspielen? abrufen? Source Safe: auschecken)"
+"Arbeitskopie erstellen; Branch auschecken [checkout a branch] (umstellen? "
+"Source Safe: auschecken)"
+
+#. "to select and apply a single commit to the current HEAD without merging"
+msgid "cherry-pick"
+msgstr "cherry-pick (pflücken?)"
+
+#. "a commit that directly succeeds the current one in git's graph of commits"
+msgid "child commit"
+msgstr "Kind-Commit"
+
+#. "clean the state of the git repository, often after manually stopped operation"
+msgid "cleanup"
+msgstr "aufräumen"
#. ""
msgid "clone [verb]"
@@ -66,39 +114,98 @@ msgstr "klonen"
#. "A single point in the git history."
msgid "commit [noun]"
-msgstr ""
-"Version; Eintragung; Änderung (Buchung?, Eintragung?, Übertragung?, "
-"Sendung?, Übergabe?, Einspielung?, Ablagevorgang?)"
+msgstr "Commit (Version?)"
#. "The action of storing a new snapshot of the project's state in the git history."
msgid "commit [verb]"
msgstr ""
-"eintragen (TortoiseSVN: übertragen; Source Safe: einchecken; senden?, "
-"übergeben?, einspielen?, einpflegen?, ablegen?)"
+"committen (eintragen?, TortoiseSVN: übertragen; Source Safe: einchecken)"
+
+#. "a message that gets attached with any commit"
+msgid "commit message"
+msgstr "Commit-Beschreibung (Meldung?, Nachricht?; Source Safe: Kommentar)"
+
+#. "The person who committed a commit (to the current branch), which might be different than the author."
+msgid "committer"
+msgstr "Committer"
+
+#. "a commit that precedes the current one in git's graph of commits (not necessarily directly)"
+msgid "descendant"
+msgstr "Nachfolger-Commit"
+
+#. "checkout of a revision rather than some head"
+msgid "detached HEAD"
+msgstr "losgelöster HEAD / Branchspitze"
+
+#. "checkout of a revision rather than some head"
+msgid "detached checkout"
+msgstr "losgelöster Commit (von Branch losgelöster Commit?)"
#. ""
msgid "diff [noun]"
-msgstr "Vergleich (Source Safe: Unterschiede)"
+msgstr "Vergleich (Diff? Source Safe: Unterschiede)"
#. ""
msgid "diff [verb]"
msgstr "vergleichen"
-#. "A fast-forward is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
-msgid "fast forward merge"
-msgstr "Schnellzusammenführung"
+#. ""
+msgid "directory"
+msgstr "Verzeichnis"
+
+#. "A fast-forward merge is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
+msgid "fast-forward"
+msgstr "vorspulen"
#. "Fetching a branch means to get the branch's head from a remote repository, to find out which objects are missing from the local object database, and to get them, too."
msgid "fetch"
msgstr "anfordern (holen?)"
+#. "any merge strategy that works on a file by file basis"
+msgid "file level merging"
+msgstr "Datei-basiertes zusammenführen"
+
+#. ""
+msgid "file"
+msgstr "Datei"
+
+#. "the last revision in a branch"
+msgid "head"
+msgstr "HEAD / Branchspitze"
+
+#. "script that gets executed automatically on some event"
+msgid "hook"
+msgstr "Hook (in der dt. Informatik wohl als Einschubmethode bezeichnet)"
+
#. "One context of consecutive lines in a whole patch, which consists of many such hunks"
msgid "hunk"
-msgstr "Kontext"
+msgstr "Patch-Block (Kontext?)"
#. "A collection of files. The index is a stored version of your working tree."
msgid "index (in git-gui: staging area)"
-msgstr "Bereitstellung"
+msgstr ""
+"Bereitstellung (sofern der git index gemeint ist. In git-gui sowieso: "
+"staging area)"
+
+#. "the first checkout during a clone operation"
+msgid "initial checkout"
+msgstr "Erstellen der Arbeitskopie, auschecken"
+
+#. "The very first commit in a repository"
+msgid "initial commit"
+msgstr "Allererster Commit"
+
+#. "a branch that resides in the local git repository"
+msgid "local branch"
+msgstr "Lokaler Branch"
+
+#. "a Git object that is not part of any pack"
+msgid "loose object"
+msgstr "loses Objekt"
+
+#. "a branch called by convention 'master' that exists in a newly created git repository"
+msgid "master branch"
+msgstr "Master-Branch"
#. "A successful merge results in the creation of a new commit representing the result of the merge."
msgid "merge [noun]"
@@ -112,78 +219,212 @@ msgstr "zusammenführen"
msgid "message"
msgstr "Beschreibung (Meldung?, Nachricht?; Source Safe: Kommentar)"
-#. "Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
+#. "a remote called by convention 'origin' that the current git repository has been cloned from"
+msgid "origin"
+msgstr "origin"
+
+#. ""
+msgid "orphan commit"
+msgstr "verwaister Commit"
+
+#. ""
+msgid "orphan reference"
+msgstr "verwaiste Referenz"
+
+#. "a file containing many git objects packed together"
+msgid "pack [noun]"
+msgstr "Pack-Datei"
+
+#. "the process of creating a pack file"
+msgid "pack [verb]"
+msgstr "Pack-Datei erstellen"
+
+#. "a Git object part of some pack"
+msgid "packed object"
+msgstr "gepacktes Objekt"
+
+#. "a commit that directly precedes the current one in git's graph of commits"
+msgid "parent commit"
+msgstr "Eltern-Commit"
+
+msgid "patch"
+msgstr "Patch"
+
+#. "The path to a file"
+msgid "path"
+msgstr "Pfad"
+
+#. "Delete all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
msgid "prune"
-msgstr "aufräumen (entfernen?)"
+msgstr "veraltete Branches entfernen (aufräumen?, entfernen?)"
#. "Pulling a branch means to fetch it and merge it."
msgid "pull"
-msgstr "übernehmen (ziehen?)"
+msgstr ""
+"übernehmen (pull? ziehen? Vorsicht: zusammenführen = merge, aber pull kann "
+"auch rebase bewirken)"
#. "Pushing a branch means to get the branch's head ref from a remote repository, and ... (well, can someone please explain it for mere mortals?)"
msgid "push"
msgstr "versenden (ausliefern? hochladen? verschicken? schieben?)"
+#. "The process of rebasing one set of commits on top of another branch's head"
+msgid "rebase [noun]"
+msgstr "der Rebase (das Umpflanzen)"
+
+#. "Re-apply one set of commits on top of another branch's head. Contrary to merge."
+msgid "rebase [verb]"
+msgstr "rebase (umpflanzen)"
+
#. ""
msgid "redo"
msgstr "wiederholen"
-#. "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
-msgid "remote"
-msgstr "Andere Archive (Gegenseite?, Entfernte?, Server?)"
+#. ""
+msgid "reference"
+msgstr "Referenz"
+
+#. "the log file containing all states of the HEAD reference (in other words past pristine states of the working copy)"
+msgid "reflog"
+msgstr "Commit-Log, »reflog«"
+
+msgid "refmap"
+msgstr "Refmap"
+
+#. ""
+msgid "refspec"
+msgstr "Refspec"
+
+#. "The adjective for anything which is outside of the current (local) repository"
+msgid "remote [adj]"
+msgstr "Extern (Andere?, Gegenseite?, Entfernte?, Server?)"
+
+#. "A branch in any other ('remote') repository"
+msgid "remote branch"
+msgstr "Externer branch"
+
+#. "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
+msgid "remote repository"
+msgstr "Externes Repository"
#. "A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)"
msgid "repository"
-msgstr "Projektarchiv"
+msgstr "Repository"
#. ""
msgid "reset"
-msgstr "zurücksetzen (zurückkehren?)"
+msgstr "umsetzen (reset to commit), Änderungen verwerfen (reset to HEAD)"
+
+#. "decide which changes from alternative versions of a file should persist in Git"
+msgid "resolve (a conflict)"
+msgstr "auflösen (einen Konflikt)"
+
+#. "abandon changes and go to pristine version"
+msgid "revert changes"
+msgstr ""
+"verwerfen (bei git-reset bzw. checkout), zurücknehmen (bei git-revert, also "
+"mit neuem commit; umkehren?)"
#. ""
msgid "revert"
-msgstr "verwerfen (bei git-reset), revidieren (bei git-revert, also mit neuem commit)"
+msgstr ""
+"verwerfen (bei git-reset bzw. checkout), zurücknehmen (bei git-revert, also "
+"mit neuem commit; umkehren?)"
+
+#. "expression that signifies a revision in git"
+msgid "revision expression"
+msgstr "Version Regexp-Ausdruck"
#. "A particular state of files and directories which was stored in the object database."
msgid "revision"
-msgstr "Version (TortoiseSVN: Revision; Source Safe: Version)"
+msgstr ""
+"Version (aber was macht das Wort revision hier im Git?? TortoiseSVN: "
+"Revision; Source Safe: Version)"
#. ""
msgid "sign off"
-msgstr "abzeichnen (gegenzeichnen?, freizeichnen?, absegnen?)"
+msgstr "abzeichnen (signieren? gegenzeichnen?, freizeichnen?)"
-#. ""
+#. "see: staging area. In some areas of git this is called 'index'."
+msgid "stage [noun], index"
+msgstr "Bereitstellung"
+
+#. "add some content of files and directories to the staging area in preparation for a commit"
+msgid "stage [verb]"
+msgstr "bereitstellen"
+
+#. "The place where changes from files are marked to be included for the next commit. In some areas of git this is called 'index'."
msgid "staging area"
msgstr "Bereitstellung"
+#. "The place (stack) where changes can be temporarily saved without committing"
+msgid "stash [noun]"
+msgstr "der Stash"
+
+#. "temporarily save changes in a stack without committing"
+msgid "stash [verb]"
+msgstr "in Stash speichern; \"stash\" benutzen"
+
#. ""
msgid "status"
msgstr "Status"
-#. "A ref pointing to a tag or commit object"
+#. ""
+msgid "submodule"
+msgstr "Submodul (Untermodul?)"
+
+#. "A ref pointing to some commit object. In other words: A label on a specific commit."
msgid "tag [noun]"
-msgstr "Markierung"
+msgstr "Tag (Markierung?)"
-#. ""
+#. "The process of creating a tag at a specific commit object"
msgid "tag [verb]"
-msgstr "markieren"
+msgstr "taggen (markieren?)"
+
+#. "The person who created a tag"
+msgid "tagger"
+msgstr "Tag-Ersteller (Markierungs-Ersteller?)"
+
+#. "file whose content is tracked/not tracked by git"
+msgid "tracked/untracked"
+msgstr "versioniert/unversioniert"
#. "A regular git branch that is used to follow changes from another repository."
msgid "tracking branch"
-msgstr "Übernahmezweig"
+msgstr "Tracking-Branch (Verfolgungsbranch? Übernahmebranch?)"
+
+#. ""
+msgid "trailer"
+msgstr "Anhang"
+
+#. "1. tree object, 2. directory tree"
+msgid "tree"
+msgstr "1. Baum-Objekt, 2. Verzeichnisbaum"
#. ""
msgid "undo"
msgstr "rückgängig"
+#. "Remove content of files from the staging area again so that it will not be part of the next commit"
+msgid "unstage"
+msgstr "aus Bereitstellung herausnehmen"
+
+#. "Retrieving the temporarily saved changes back again from the stash"
+msgid "unstash [verb]"
+msgstr "aus Stash zurückladen"
+
#. ""
msgid "update"
msgstr "aktualisieren"
#. ""
+msgid "upstream branch"
+msgstr "Upstream-Branch"
+
+#. ""
msgid "verify"
msgstr "überprüfen"
#. "The tree of actual checked out files."
-msgid "working copy, working tree"
+msgid "working directory, working copy, working tree"
msgstr "Arbeitskopie"
diff --git a/git-gui/po/glossary/git-gui-glossary.pot b/git-gui/po/glossary/git-gui-glossary.pot
index 40eb3e9..4e66e0d 100644
--- a/git-gui/po/glossary/git-gui-glossary.pot
+++ b/git-gui/po/glossary/git-gui-glossary.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2008-01-07 21:20+0100\n"
+"POT-Creation-Date: 2020-01-26 22:26+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,14 +18,46 @@ msgstr ""
msgid "English Term (Dear translator: This file will never be visible to the user!)"
msgstr ""
+#. "prematurely stop and abandon an operation"
+msgid "abort"
+msgstr ""
+
#. ""
msgid "amend"
msgstr ""
+#. "a commit that succeeds the current one in git's graph of commits (not necessarily directly)"
+msgid "ancestor"
+msgstr ""
+
#. ""
msgid "annotate"
msgstr ""
+#. "The person who initially created (authored) a commit"
+msgid "author"
+msgstr ""
+
+#. "a repository with only .git directory, without working directory"
+msgid "bare repository"
+msgstr ""
+
+#. "a parent version of the current file"
+msgid "base"
+msgstr ""
+
+#. ""
+msgid "bisect"
+msgstr ""
+
+#. "get the authors responsible for each line in a file"
+msgid "blame"
+msgstr ""
+
+#. ""
+msgid "blob"
+msgstr ""
+
#. "A 'branch' is an active line of development."
msgid "branch [noun]"
msgstr ""
@@ -42,6 +74,18 @@ msgstr ""
msgid "checkout [verb]"
msgstr ""
+#. "to select and apply a single commit to the current HEAD without merging"
+msgid "cherry-pick"
+msgstr ""
+
+#. "a commit that directly succeeds the current one in git's graph of commits"
+msgid "child commit"
+msgstr ""
+
+#. "clean the state of the git repository, often after manually stopped operation"
+msgid "cleanup"
+msgstr ""
+
#. ""
msgid "clone [verb]"
msgstr ""
@@ -54,6 +98,26 @@ msgstr ""
msgid "commit [verb]"
msgstr ""
+#. "a message that gets attached with any commit"
+msgid "commit message"
+msgstr ""
+
+#. "The person who committed a commit (to the current branch), which might be different than the author."
+msgid "committer"
+msgstr ""
+
+#. "a commit that precedes the current one in git's graph of commits (not necessarily directly)"
+msgid "descendant"
+msgstr ""
+
+#. "checkout of a revision rather than some head"
+msgid "detached HEAD"
+msgstr ""
+
+#. "checkout of a revision rather than some head"
+msgid "detached checkout"
+msgstr ""
+
#. ""
msgid "diff [noun]"
msgstr ""
@@ -62,14 +126,34 @@ msgstr ""
msgid "diff [verb]"
msgstr ""
-#. "A fast-forward is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
-msgid "fast forward merge"
+#. ""
+msgid "directory"
+msgstr ""
+
+#. "A fast-forward merge is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
+msgid "fast-forward"
msgstr ""
#. "Fetching a branch means to get the branch's head from a remote repository, to find out which objects are missing from the local object database, and to get them, too."
msgid "fetch"
msgstr ""
+#. "any merge strategy that works on a file by file basis"
+msgid "file level merging"
+msgstr ""
+
+#. ""
+msgid "file"
+msgstr ""
+
+#. "the last revision in a branch"
+msgid "head"
+msgstr ""
+
+#. "script that gets executed automatically on some event"
+msgid "hook"
+msgstr ""
+
#. "One context of consecutive lines in a whole patch, which consists of many such hunks"
msgid "hunk"
msgstr ""
@@ -78,6 +162,26 @@ msgstr ""
msgid "index (in git-gui: staging area)"
msgstr ""
+#. "the first checkout during a clone operation"
+msgid "initial checkout"
+msgstr ""
+
+#. "The very first commit in a repository"
+msgid "initial commit"
+msgstr ""
+
+#. "a branch that resides in the local git repository"
+msgid "local branch"
+msgstr ""
+
+#. "a Git object that is not part of any pack"
+msgid "loose object"
+msgstr ""
+
+#. "a branch called by convention 'master' that exists in a newly created git repository"
+msgid "master branch"
+msgstr ""
+
#. "A successful merge results in the creation of a new commit representing the result of the merge."
msgid "merge [noun]"
msgstr ""
@@ -90,7 +194,42 @@ msgstr ""
msgid "message"
msgstr ""
-#. "Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
+#. "a remote called by convention 'origin' that the current git repository has been cloned from"
+msgid "origin"
+msgstr ""
+
+#. ""
+msgid "orphan commit"
+msgstr ""
+
+#. ""
+msgid "orphan reference"
+msgstr ""
+
+#. "a file containing many git objects packed together"
+msgid "pack [noun]"
+msgstr ""
+
+#. "the process of creating a pack file"
+msgid "pack [verb]"
+msgstr ""
+
+#. "a Git object part of some pack"
+msgid "packed object"
+msgstr ""
+
+#. "a commit that directly precedes the current one in git's graph of commits"
+msgid "parent commit"
+msgstr ""
+
+msgid "patch" ""
+msgstr ""
+
+#. "The path to a file"
+msgid "path"
+msgstr ""
+
+#. "Delete all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
msgid "prune"
msgstr ""
@@ -102,12 +241,43 @@ msgstr ""
msgid "push"
msgstr ""
+#. "The process of rebasing one set of commits on top of another branch's head"
+msgid "rebase [noun]"
+msgstr ""
+
+#. "Re-apply one set of commits on top of another branch's head. Contrary to merge."
+msgid "rebase [verb]"
+msgstr ""
+
#. ""
msgid "redo"
msgstr ""
-#. "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
-msgid "remote"
+#. ""
+msgid "reference"
+msgstr ""
+
+#. "the log file containing all states of the HEAD reference (in other words past pristine states of the working copy)"
+msgid "reflog"
+msgstr ""
+
+msgid "refmap" ""
+msgstr ""
+
+#. ""
+msgid "refspec"
+msgstr ""
+
+#. "The adjective for anything which is outside of the current (local) repository"
+msgid "remote [adj]"
+msgstr ""
+
+#. "A branch in any other ('remote') repository"
+msgid "remote branch"
+msgstr ""
+
+#. "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
+msgid "remote repository"
msgstr ""
#. "A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)"
@@ -118,10 +288,22 @@ msgstr ""
msgid "reset"
msgstr ""
+#. "decide which changes from alternative versions of a file should persist in Git"
+msgid "resolve (a conflict)"
+msgstr ""
+
+#. "abandon changes and go to pristine version"
+msgid "revert changes"
+msgstr ""
+
#. ""
msgid "revert"
msgstr ""
+#. "expression that signifies a revision in git"
+msgid "revision expression"
+msgstr ""
+
#. "A particular state of files and directories which was stored in the object database."
msgid "revision"
msgstr ""
@@ -130,39 +312,87 @@ msgstr ""
msgid "sign off"
msgstr ""
-#. ""
+#. "see: staging area. In some areas of git this is called 'index'."
+msgid "stage [noun], index"
+msgstr ""
+
+#. "add some content of files and directories to the staging area in preparation for a commit"
+msgid "stage [verb]"
+msgstr ""
+
+#. "The place where changes from files are marked to be included for the next commit. In some areas of git this is called 'index'."
msgid "staging area"
msgstr ""
+#. "The place (stack) where changes can be temporarily saved without committing"
+msgid "stash [noun]"
+msgstr ""
+
+#. "temporarily save changes in a stack without committing"
+msgid "stash [verb]"
+msgstr ""
+
#. ""
msgid "status"
msgstr ""
-#. "A ref pointing to a tag or commit object"
+#. ""
+msgid "submodule"
+msgstr ""
+
+#. "A ref pointing to some commit object. In other words: A label on a specific commit."
msgid "tag [noun]"
msgstr ""
-#. ""
+#. "The process of creating a tag at a specific commit object"
msgid "tag [verb]"
msgstr ""
+#. "The person who created a tag"
+msgid "tagger"
+msgstr ""
+
+#. "file whose content is tracked/not tracked by git"
+msgid "tracked/untracked"
+msgstr ""
+
#. "A regular git branch that is used to follow changes from another repository."
msgid "tracking branch"
msgstr ""
#. ""
+msgid "trailer"
+msgstr ""
+
+#. "1. tree object, 2. directory tree"
+msgid "tree"
+msgstr ""
+
+#. ""
msgid "undo"
msgstr ""
+#. "Remove content of files from the staging area again so that it will not be part of the next commit"
+msgid "unstage"
+msgstr ""
+
+#. "Retrieving the temporarily saved changes back again from the stash"
+msgid "unstash [verb]"
+msgstr ""
+
#. ""
msgid "update"
msgstr ""
#. ""
+msgid "upstream branch"
+msgstr ""
+
+#. ""
msgid "verify"
msgstr ""
#. "The tree of actual checked out files."
-msgid "working copy, working tree"
+msgid "working directory, working copy, working tree"
msgstr ""
diff --git a/git-gui/po/glossary/git-gui-glossary.txt b/git-gui/po/glossary/git-gui-glossary.txt
index 4093046..48b9f10 100644
--- a/git-gui/po/glossary/git-gui-glossary.txt
+++ b/git-gui/po/glossary/git-gui-glossary.txt
@@ -1,67 +1,96 @@
"English Term (Dear translator: This file will never be visible to the user!)" "English Definition (Dear translator: This file will never be visible to the user! It should only serve as a tool for you, the translator. Nothing more.)"
+"abort" "prematurely stop and abandon an operation"
"amend" ""
+"ancestor" "a commit that succeeds the current one in git's graph of commits (not necessarily directly)"
"annotate" ""
+"author" "The person who initially created (authored) a commit"
+"bare repository" "a repository with only .git directory, without working directory"
+"base" "a parent version of the current file"
+"bisect" ""
+"blame" "get the authors responsible for each line in a file"
+"blob" ""
"branch [noun]" "A 'branch' is an active line of development."
"branch [verb]" ""
"checkout [noun]" ""
"checkout [verb]" "The action of updating the working tree to a revision which was stored in the object database."
+"cherry-pick" "to select and apply a single commit to the current HEAD without merging"
+"child commit" "a commit that directly succeeds the current one in git's graph of commits"
+"cleanup" "clean the state of the git repository, often after manually stopped operation"
"clone [verb]" ""
"commit [noun]" "A single point in the git history."
"commit [verb]" "The action of storing a new snapshot of the project's state in the git history."
+"commit message" "a message that gets attached with any commit"
+"committer" "The person who committed a commit (to the current branch), which might be different than the author."
+"descendant" "a commit that precedes the current one in git's graph of commits (not necessarily directly)"
+"detached HEAD" "checkout of a revision rather than some head"
+"detached checkout" "checkout of a revision rather than some head"
"diff [noun]" ""
"diff [verb]" ""
-"fast forward merge" "A fast-forward is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
+"directory" ""
+"fast-forward" "A fast-forward merge is a special type of merge where you have a revision and you are merging another branch's changes that happen to be a descendant of what you have."
"fetch" "Fetching a branch means to get the branch's head from a remote repository, to find out which objects are missing from the local object database, and to get them, too."
+"file level merging" "any merge strategy that works on a file by file basis"
+"file" ""
+"head" "the last revision in a branch"
+"hook" "script that gets executed automatically on some event"
"hunk" "One context of consecutive lines in a whole patch, which consists of many such hunks"
"index (in git-gui: staging area)" "A collection of files. The index is a stored version of your working tree."
+"initial checkout" "the first checkout during a clone operation"
+"initial commit" "The very first commit in a repository"
+"local branch" "a branch that resides in the local git repository"
+"loose object" "a Git object that is not part of any pack"
+"master branch" "a branch called by convention 'master' that exists in a newly created git repository"
"merge [noun]" "A successful merge results in the creation of a new commit representing the result of the merge."
"merge [verb]" "To bring the contents of another branch into the current branch."
"message" ""
-"prune" "Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
+"origin" "a remote called by convention 'origin' that the current git repository has been cloned from"
+"orphan commit" ""
+"orphan reference" ""
+"pack [noun]" "a file containing many git objects packed together"
+"pack [verb]" "the process of creating a pack file"
+"packed object" "a Git object part of some pack"
+"parent commit" "a commit that directly precedes the current one in git's graph of commits"
+"patch" ""
+"path" "The path to a file"
+"prune" "Delete all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in 'remotes/<name>'."
"pull" "Pulling a branch means to fetch it and merge it."
"push" "Pushing a branch means to get the branch's head ref from a remote repository, and ... (well, can someone please explain it for mere mortals?)"
+"rebase [noun]" "The process of rebasing one set of commits on top of another branch's head"
+"rebase [verb]" "Re-apply one set of commits on top of another branch's head. Contrary to merge."
"redo" ""
-"remote" "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
+"reference" ""
+"reflog" "the log file containing all states of the HEAD reference (in other words past pristine states of the working copy)"
+"refmap" ""
+"refspec" ""
+"remote [adj]" "The adjective for anything which is outside of the current (local) repository"
+"remote branch" "A branch in any other ('remote') repository"
+"remote repository" "An other repository ('remote'). One might have a set of remotes whose branches one tracks."
"repository" "A collection of refs (?) together with an object database containing all objects which are reachable from the refs... (oops, you've lost me here. Again, please an explanation for mere mortals?)"
"reset" ""
+"resolve (a conflict)" "decide which changes from alternative versions of a file should persist in Git"
+"revert changes" "abandon changes and go to pristine version"
"revert" ""
+"revision expression" "expression that signifies a revision in git"
"revision" "A particular state of files and directories which was stored in the object database."
"sign off" ""
-"staging area" ""
+"stage [noun], index" "see: staging area. In some areas of git this is called 'index'."
+"stage [verb]" "add some content of files and directories to the staging area in preparation for a commit"
+"staging area" "The place where changes from files are marked to be included for the next commit. In some areas of git this is called 'index'."
+"stash [noun]" "The place (stack) where changes can be temporarily saved without committing"
+"stash [verb]" "temporarily save changes in a stack without committing"
"status" ""
-"tag [noun]" "A ref pointing to a tag or commit object"
-"tag [verb]" ""
+"submodule" ""
+"tag [noun]" "A ref pointing to some commit object. In other words: A label on a specific commit."
+"tag [verb]" "The process of creating a tag at a specific commit object"
+"tagger" "The person who created a tag"
+"tracked/untracked" "file whose content is tracked/not tracked by git"
"tracking branch" "A regular git branch that is used to follow changes from another repository."
+"trailer" ""
+"tree" "1. tree object, 2. directory tree"
"undo" ""
+"unstage" "Remove content of files from the staging area again so that it will not be part of the next commit"
+"unstash [verb]" "Retrieving the temporarily saved changes back again from the stash"
"update" ""
+"upstream branch" ""
"verify" ""
-"working copy, working tree" "The tree of actual checked out files."
-"ancestor" "a commit that succeeds the current one in git's graph of commits (not necessarily directly)"
-"abort" "prematurely stop and abandon an operation"
-"bare repository" "a repository with only .git directory, without working directory"
-"base" "a parent version of the current file"
-"blame" "get the authors responsible for each line in a file"
-"cherry-pick" "to select and apply a single commit without merging"
-"child" "a commit that directly succeeds the current one in git's graph of commits"
-"cleanup" "clean the state of the git repository, often after manually stopped operation"
-"commit message" "a message that gets attached with any commit"
-"descendant" "a commit that precedes the current one in git's graph of commits (not necessarily directly)"
-"detached checkout" "checkout of a revision rather than a some head"
-"file level merging" "any merge strategy that works on a file by file basis"
-"head" "the last revision in a branch"
-"hook" "script that gets executed automatically on some event"
-"initial checkout" "the first checkout during a clone operation"
-"local branch" "a branch that resides in the local git repository"
-"loose object" "a Git object that is not part of any pack"
-"master branch" "a branch called by convention 'master' that exists in a newly created git repository"
-"origin" "a remote called by convention 'origin' that the current git repository has been cloned from"
-"pack [noun]" "a file containing many git objects packed together"
-"packed object" "a Git object part of some pack"
-"parent" "a commit that directly precedes the current one in git's graph of commits"
-"reflog" "the log file containing all states of the HEAD reference (in other words past pristine states of the working copy)"
-"resolve (a conflict)" "decide which changes from alternative versions of a file should persist in Git"
-"revert changes" "abandon changes and go to pristine version"
-"revision expression" "expression that signifies a revision in git"
-"stage/unstage" "add some content of files and directories to the staging area in preparation for a commit"
-"stash" "temporarily save changes in a stack without committing"
-"tracked/untracked" "file whose content is tracked/not tracked by git"
+"working directory, working copy, working tree" "The tree of actual checked out files."
diff --git a/git-p4.py b/git-p4.py
index 9a71a66..1fe03cd 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -16,12 +16,12 @@
# pylint: disable=too-many-branches,too-many-nested-blocks
#
import sys
-if sys.hexversion < 0x02040000:
- # The limiter is the subprocess module
- sys.stderr.write("git-p4: requires Python 2.4 or later.\n")
+if sys.version_info.major < 3 and sys.version_info.minor < 7:
+ sys.stderr.write("git-p4: requires Python 2.7 or later.\n")
sys.exit(1)
import os
import optparse
+import functools
import marshal
import subprocess
import tempfile
@@ -35,36 +35,15 @@ import zlib
import ctypes
import errno
+# On python2.7 where raw_input() and input() are both availble,
+# we want raw_input's semantics, but aliased to input for python3
+# compatibility
# support basestring in python3
try:
- unicode = unicode
-except NameError:
- # 'unicode' is undefined, must be Python 3
- str = str
- unicode = str
- bytes = bytes
- basestring = (str,bytes)
-else:
- # 'unicode' exists, must be Python 2
- str = str
- unicode = unicode
- bytes = str
- basestring = basestring
-
-try:
- from subprocess import CalledProcessError
-except ImportError:
- # from python2.7:subprocess.py
- # Exception classes used by this module.
- class CalledProcessError(Exception):
- """This exception is raised when a process run by check_call() returns
- a non-zero exit status. The exit status will be stored in the
- returncode attribute."""
- def __init__(self, returncode, cmd):
- self.returncode = returncode
- self.cmd = cmd
- def __str__(self):
- return "Command '%s' returned non-zero exit status %d" % (self.cmd, self.returncode)
+ if raw_input and input:
+ input = raw_input
+except:
+ pass
verbose = False
@@ -113,7 +92,7 @@ def p4_build_cmd(cmd):
# Provide a way to not pass this option by setting git-p4.retries to 0
real_cmd += ["-r", str(retries)]
- if isinstance(cmd,basestring):
+ if not isinstance(cmd, list):
real_cmd = ' '.join(real_cmd) + ' ' + cmd
else:
real_cmd += cmd
@@ -186,18 +165,48 @@ def prompt(prompt_text):
"""
choices = set(m.group(1) for m in re.finditer(r"\[(.)\]", prompt_text))
while True:
- response = raw_input(prompt_text).strip().lower()
+ response = input(prompt_text).strip().lower()
if not response:
continue
response = response[0]
if response in choices:
return response
+# We need different encoding/decoding strategies for text data being passed
+# around in pipes depending on python version
+if bytes is not str:
+ # For python3, always encode and decode as appropriate
+ def decode_text_stream(s):
+ return s.decode() if isinstance(s, bytes) else s
+ def encode_text_stream(s):
+ return s.encode() if isinstance(s, str) else s
+else:
+ # For python2.7, pass read strings as-is, but also allow writing unicode
+ def decode_text_stream(s):
+ return s
+ def encode_text_stream(s):
+ return s.encode('utf_8') if isinstance(s, unicode) else s
+
+def decode_path(path):
+ """Decode a given string (bytes or otherwise) using configured path encoding options
+ """
+ encoding = gitConfig('git-p4.pathEncoding') or 'utf_8'
+ if bytes is not str:
+ return path.decode(encoding, errors='replace') if isinstance(path, bytes) else path
+ else:
+ try:
+ path.decode('ascii')
+ except:
+ path = path.decode(encoding, errors='replace')
+ if verbose:
+ print('Path with non-ASCII characters detected. Used {} to decode: {}'.format(encoding, path))
+ return path
+
def write_pipe(c, stdin):
if verbose:
sys.stderr.write('Writing pipe: %s\n' % str(c))
- expand = isinstance(c,basestring)
+ expand = not isinstance(c, list)
p = subprocess.Popen(c, stdin=subprocess.PIPE, shell=expand)
pipe = p.stdin
val = pipe.write(stdin)
@@ -209,6 +218,8 @@ def write_pipe(c, stdin):
def p4_write_pipe(c, stdin):
real_cmd = p4_build_cmd(c)
+ if bytes is not str and isinstance(stdin, str):
+ stdin = encode_text_stream(stdin)
return write_pipe(real_cmd, stdin)
def read_pipe_full(c):
@@ -219,15 +230,17 @@ def read_pipe_full(c):
if verbose:
sys.stderr.write('Reading pipe: %s\n' % str(c))
- expand = isinstance(c,basestring)
+ expand = not isinstance(c, list)
p = subprocess.Popen(c, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=expand)
(out, err) = p.communicate()
- return (p.returncode, out, err)
+ return (p.returncode, out, decode_text_stream(err))
-def read_pipe(c, ignore_error=False):
+def read_pipe(c, ignore_error=False, raw=False):
""" Read output from command. Returns the output text on
success. On failure, terminates execution, unless
ignore_error is True, when it returns an empty string.
+
+ If raw is True, do not attempt to decode output text.
"""
(retcode, out, err) = read_pipe_full(c)
if retcode != 0:
@@ -235,6 +248,8 @@ def read_pipe(c, ignore_error=False):
out = ""
else:
die('Command failed: %s\nError: %s' % (str(c), err))
+ if not raw:
+ out = decode_text_stream(out)
return out
def read_pipe_text(c):
@@ -245,23 +260,22 @@ def read_pipe_text(c):
if retcode != 0:
return None
else:
- return out.rstrip()
+ return decode_text_stream(out).rstrip()
-def p4_read_pipe(c, ignore_error=False):
+def p4_read_pipe(c, ignore_error=False, raw=False):
real_cmd = p4_build_cmd(c)
- return read_pipe(real_cmd, ignore_error)
+ return read_pipe(real_cmd, ignore_error, raw=raw)
def read_pipe_lines(c):
if verbose:
sys.stderr.write('Reading pipe: %s\n' % str(c))
- expand = isinstance(c, basestring)
+ expand = not isinstance(c, list)
p = subprocess.Popen(c, stdout=subprocess.PIPE, shell=expand)
pipe = p.stdout
- val = pipe.readlines()
+ val = [decode_text_stream(line) for line in pipe.readlines()]
if pipe.close() or p.wait():
die('Command failed: %s' % str(c))
-
return val
def p4_read_pipe_lines(c):
@@ -289,6 +303,7 @@ def p4_has_move_command():
cmd = p4_build_cmd(["move", "-k", "@from", "@to"])
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(out, err) = p.communicate()
+ err = decode_text_stream(err)
# return code will be 1 in either case
if err.find("Invalid option") >= 0:
return False
@@ -298,7 +313,7 @@ def p4_has_move_command():
return True
def system(cmd, ignore_error=False):
- expand = isinstance(cmd,basestring)
+ expand = not isinstance(cmd, list)
if verbose:
sys.stderr.write("executing %s\n" % str(cmd))
retcode = subprocess.call(cmd, shell=expand)
@@ -310,7 +325,7 @@ def system(cmd, ignore_error=False):
def p4_system(cmd):
"""Specifically invoke p4 as the system command. """
real_cmd = p4_build_cmd(cmd)
- expand = isinstance(real_cmd, basestring)
+ expand = not isinstance(real_cmd, list)
retcode = subprocess.call(real_cmd, shell=expand)
if retcode:
raise CalledProcessError(retcode, real_cmd)
@@ -548,7 +563,7 @@ def getP4OpenedType(file):
# Return the set of all p4 labels
def getP4Labels(depotPaths):
labels = set()
- if isinstance(depotPaths,basestring):
+ if not isinstance(depotPaths, list):
depotPaths = [depotPaths]
for l in p4CmdList(["labels"] + ["%s..." % p for p in depotPaths]):
@@ -565,12 +580,7 @@ def getGitTags():
gitTags.add(tag)
return gitTags
-def diffTreePattern():
- # This is a simple generator for the diff tree regex pattern. This could be
- # a class variable if this and parseDiffTreeEntry were a part of a class.
- pattern = re.compile(':(\d+) (\d+) (\w+) (\w+) ([A-Z])(\d+)?\t(.*?)((\t(.*))|$)')
- while True:
- yield pattern
+_diff_tree_pattern = None
def parseDiffTreeEntry(entry):
"""Parses a single diff tree entry into its component elements.
@@ -591,7 +601,11 @@ def parseDiffTreeEntry(entry):
If the pattern is not matched, None is returned."""
- match = diffTreePattern().next().match(entry)
+ global _diff_tree_pattern
+ if not _diff_tree_pattern:
+ _diff_tree_pattern = re.compile(':(\d+) (\d+) (\w+) (\w+) ([A-Z])(\d+)?\t(.*?)((\t(.*))|$)')
+
+ match = _diff_tree_pattern.match(entry)
if match:
return {
'src_mode': match.group(1),
@@ -643,7 +657,7 @@ def isModeExecChanged(src_mode, dst_mode):
def p4CmdList(cmd, stdin=None, stdin_mode='w+b', cb=None, skip_info=False,
errors_as_exceptions=False):
- if isinstance(cmd,basestring):
+ if not isinstance(cmd, list):
cmd = "-G " + cmd
expand = True
else:
@@ -660,11 +674,12 @@ def p4CmdList(cmd, stdin=None, stdin_mode='w+b', cb=None, skip_info=False,
stdin_file = None
if stdin is not None:
stdin_file = tempfile.TemporaryFile(prefix='p4-stdin', mode=stdin_mode)
- if isinstance(stdin,basestring):
+ if not isinstance(stdin, list):
stdin_file.write(stdin)
else:
for i in stdin:
- stdin_file.write(i + '\n')
+ stdin_file.write(encode_text_stream(i))
+ stdin_file.write(b'\n')
stdin_file.flush()
stdin_file.seek(0)
@@ -677,6 +692,20 @@ def p4CmdList(cmd, stdin=None, stdin_mode='w+b', cb=None, skip_info=False,
try:
while True:
entry = marshal.load(p4.stdout)
+ if bytes is not str:
+ # Decode unmarshalled dict to use str keys and values, except for:
+ # - `data` which may contain arbitrary binary data
+ # - `depotFile[0-9]*`, `path`, or `clientFile` which may contain non-UTF8 encoded text
+ decoded_entry = {}
+ for key, value in entry.items():
+ key = key.decode()
+ if isinstance(value, bytes) and not (key in ('data', 'path', 'clientFile') or key.startswith('depotFile')):
+ value = value.decode()
+ decoded_entry[key] = value
+ # Parse out data if it's an error response
+ if decoded_entry.get('code') == 'error' and 'data' in decoded_entry:
+ decoded_entry['data'] = decoded_entry['data'].decode()
+ entry = decoded_entry
if skip_info:
if 'code' in entry and entry['code'] == 'info':
continue
@@ -727,7 +756,8 @@ def p4Where(depotPath):
if "depotFile" in entry:
# Search for the base client side depot path, as long as it starts with the branch's P4 path.
# The base path always ends with "/...".
- if entry["depotFile"].find(depotPath) == 0 and entry["depotFile"][-4:] == "/...":
+ entry_path = decode_path(entry['depotFile'])
+ if entry_path.find(depotPath) == 0 and entry_path[-4:] == "/...":
output = entry
break
elif "data" in entry:
@@ -742,11 +772,11 @@ def p4Where(depotPath):
return ""
clientPath = ""
if "path" in output:
- clientPath = output.get("path")
+ clientPath = decode_path(output['path'])
elif "data" in output:
data = output.get("data")
- lastSpace = data.rfind(" ")
- clientPath = data[lastSpace + 1:]
+ lastSpace = data.rfind(b" ")
+ clientPath = decode_path(data[lastSpace + 1:])
if clientPath.endswith("..."):
clientPath = clientPath[:-3]
@@ -894,6 +924,7 @@ def branch_exists(branch):
cmd = [ "git", "rev-parse", "--symbolic", "--verify", branch ]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, _ = p.communicate()
+ out = decode_text_stream(out)
if p.returncode:
return False
# expect exactly one line of output: the branch name
@@ -1171,7 +1202,7 @@ class LargeFileSystem(object):
assert False, "Method 'pushFile' required in " + self.__class__.__name__
def hasLargeFileExtension(self, relPath):
- return reduce(
+ return functools.reduce(
lambda a, b: a or b,
[relPath.endswith('.' + e) for e in gitConfigList('git-p4.largeFileExtensions')],
False
@@ -1278,7 +1309,7 @@ class GitLFS(LargeFileSystem):
['git', 'lfs', 'pointer', '--file=' + contentFile],
stdout=subprocess.PIPE
)
- pointerFile = pointerProcess.stdout.read()
+ pointerFile = decode_text_stream(pointerProcess.stdout.read())
if pointerProcess.wait():
os.remove(contentFile)
die('git-lfs pointer command failed. Did you install the extension?')
@@ -1414,14 +1445,14 @@ class P4UserMap:
for (key, val) in self.users.items():
s += "%s\t%s\n" % (key.expandtabs(1), val.expandtabs(1))
- open(self.getUserCacheFilename(), "wb").write(s)
+ open(self.getUserCacheFilename(), 'w').write(s)
self.userMapFromPerforceServer = True
def loadUserMapFromCache(self):
self.users = {}
self.userMapFromPerforceServer = False
try:
- cache = open(self.getUserCacheFilename(), "rb")
+ cache = open(self.getUserCacheFilename(), 'r')
lines = cache.readlines()
cache.close()
for line in lines:
@@ -1698,7 +1729,8 @@ class P4Submit(Command, P4UserMap):
c = changes[0]
if c['User'] == newUser: return # nothing to do
c['User'] = newUser
- input = marshal.dumps(c)
+ # p4 does not understand format version 3 and above
+ input = marshal.dumps(c, 2)
result = p4CmdList("change -f -i", stdin=input)
for r in result:
@@ -1762,7 +1794,7 @@ class P4Submit(Command, P4UserMap):
break
if not change_entry:
die('Failed to decode output of p4 change -o')
- for key, value in change_entry.iteritems():
+ for key, value in change_entry.items():
if key.startswith('File'):
if 'depot-paths' in settings:
if not [p for p in settings['depot-paths']
@@ -2042,7 +2074,7 @@ class P4Submit(Command, P4UserMap):
tmpFile = os.fdopen(handle, "w+b")
if self.isWindows:
submitTemplate = submitTemplate.replace("\n", "\r\n")
- tmpFile.write(submitTemplate)
+ tmpFile.write(encode_text_stream(submitTemplate))
tmpFile.close()
if self.prepare_p4_only:
@@ -2089,7 +2121,7 @@ class P4Submit(Command, P4UserMap):
if self.edit_template(fileName):
# read the edited message and submit
tmpFile = open(fileName, "rb")
- message = tmpFile.read()
+ message = decode_text_stream(tmpFile.read())
tmpFile.close()
if self.isWindows:
message = message.replace("\r\n", "\n")
@@ -2509,7 +2541,7 @@ class View(object):
def convert_client_path(self, clientFile):
# chop off //client/ part to make it relative
- if not clientFile.startswith(self.client_prefix):
+ if not decode_path(clientFile).startswith(self.client_prefix):
die("No prefix '%s' on clientFile '%s'" %
(self.client_prefix, clientFile))
return clientFile[len(self.client_prefix):]
@@ -2518,7 +2550,7 @@ class View(object):
""" Caching file paths by "p4 where" batch query """
# List depot file paths exclude that already cached
- fileArgs = [f['path'] for f in files if f['path'] not in self.client_spec_path_cache]
+ fileArgs = [f['path'] for f in files if decode_path(f['path']) not in self.client_spec_path_cache]
if len(fileArgs) == 0:
return # All files in cache
@@ -2533,16 +2565,18 @@ class View(object):
if "unmap" in res:
# it will list all of them, but only one not unmap-ped
continue
+ depot_path = decode_path(res['depotFile'])
if gitConfigBool("core.ignorecase"):
- res['depotFile'] = res['depotFile'].lower()
- self.client_spec_path_cache[res['depotFile']] = self.convert_client_path(res["clientFile"])
+ depot_path = depot_path.lower()
+ self.client_spec_path_cache[depot_path] = self.convert_client_path(res["clientFile"])
# not found files or unmap files set to ""
for depotFile in fileArgs:
+ depotFile = decode_path(depotFile)
if gitConfigBool("core.ignorecase"):
depotFile = depotFile.lower()
if depotFile not in self.client_spec_path_cache:
- self.client_spec_path_cache[depotFile] = ""
+ self.client_spec_path_cache[depotFile] = b''
def map_in_client(self, depot_path):
"""Return the relative location in the client where this
@@ -2647,6 +2681,7 @@ class P4Sync(Command, P4UserMap):
def checkpoint(self):
self.gitStream.write("checkpoint\n\n")
self.gitStream.write("progress checkpoint\n\n")
+ self.gitStream.flush()
out = self.gitOutput.readline()
if self.verbose:
print("checkpoint finished: " + out)
@@ -2660,7 +2695,7 @@ class P4Sync(Command, P4UserMap):
elif path.lower() == p.lower():
return False
for p in self.depotPaths:
- if p4PathStartsWith(path, p):
+ if p4PathStartsWith(path, decode_path(p)):
return True
return False
@@ -2669,7 +2704,7 @@ class P4Sync(Command, P4UserMap):
fnum = 0
while "depotFile%s" % fnum in commit:
path = commit["depotFile%s" % fnum]
- found = self.isPathWanted(path)
+ found = self.isPathWanted(decode_path(path))
if not found:
fnum = fnum + 1
continue
@@ -2703,7 +2738,7 @@ class P4Sync(Command, P4UserMap):
if self.useClientSpec:
# branch detection moves files up a level (the branch name)
# from what client spec interpretation gives
- path = self.clientSpecDirs.map_in_client(path)
+ path = decode_path(self.clientSpecDirs.map_in_client(path))
if self.detectBranches:
for b in self.knownBranches:
if p4PathStartsWith(path, b + "/"):
@@ -2737,14 +2772,15 @@ class P4Sync(Command, P4UserMap):
branches = {}
fnum = 0
while "depotFile%s" % fnum in commit:
- path = commit["depotFile%s" % fnum]
+ raw_path = commit["depotFile%s" % fnum]
+ path = decode_path(raw_path)
found = self.isPathWanted(path)
if not found:
fnum = fnum + 1
continue
file = {}
- file["path"] = path
+ file["path"] = raw_path
file["rev"] = commit["rev%s" % fnum]
file["action"] = commit["action%s" % fnum]
file["type"] = commit["type%s" % fnum]
@@ -2753,7 +2789,7 @@ class P4Sync(Command, P4UserMap):
# start with the full relative path where this file would
# go in a p4 client
if self.useClientSpec:
- relPath = self.clientSpecDirs.map_in_client(path)
+ relPath = decode_path(self.clientSpecDirs.map_in_client(path))
else:
relPath = self.stripRepoPath(path, self.depotPaths)
@@ -2769,7 +2805,7 @@ class P4Sync(Command, P4UserMap):
return branches
def writeToGitStream(self, gitMode, relPath, contents):
- self.gitStream.write('M %s inline %s\n' % (gitMode, relPath))
+ self.gitStream.write(encode_text_stream(u'M {} inline {}\n'.format(gitMode, relPath)))
self.gitStream.write('data %d\n' % sum(len(d) for d in contents))
for d in contents:
self.gitStream.write(d)
@@ -2791,14 +2827,15 @@ class P4Sync(Command, P4UserMap):
# - helper for streamP4Files
def streamOneP4File(self, file, contents):
- relPath = self.stripRepoPath(file['depotFile'], self.branchPrefixes)
- relPath = self.encodeWithUTF8(relPath)
+ file_path = file['depotFile']
+ relPath = self.stripRepoPath(decode_path(file_path), self.branchPrefixes)
+
if verbose:
if 'fileSize' in self.stream_file:
size = int(self.stream_file['fileSize'])
else:
size = 0 # deleted files don't get a fileSize apparently
- sys.stdout.write('\r%s --> %s (%i MB)\n' % (file['depotFile'], relPath, size/1024/1024))
+ sys.stdout.write('\r%s --> %s (%i MB)\n' % (file_path, relPath, size/1024/1024))
sys.stdout.flush()
(type_base, type_mods) = split_p4_type(file["type"])
@@ -2810,13 +2847,13 @@ class P4Sync(Command, P4UserMap):
git_mode = "120000"
# p4 print on a symlink sometimes contains "target\n";
# if it does, remove the newline
- data = ''.join(contents)
+ data = ''.join(decode_text_stream(c) for c in contents)
if not data:
# Some version of p4 allowed creating a symlink that pointed
# to nothing. This causes p4 errors when checking out such
# a change, and errors here too. Work around it by ignoring
# the bad symlink; hopefully a future change fixes it.
- print("\nIgnoring empty symlink in %s" % file['depotFile'])
+ print("\nIgnoring empty symlink in %s" % file_path)
return
elif data[-1] == '\n':
contents = [data[:-1]]
@@ -2835,7 +2872,7 @@ class P4Sync(Command, P4UserMap):
# just the native "NT" type.
#
try:
- text = p4_read_pipe(['print', '-q', '-o', '-', '%s@%s' % (file['depotFile'], file['change'])])
+ text = p4_read_pipe(['print', '-q', '-o', '-', '%s@%s' % (decode_path(file['depotFile']), file['change'])], raw=True)
except Exception as e:
if 'Translation of file content failed' in str(e):
type_base = 'binary'
@@ -2843,7 +2880,7 @@ class P4Sync(Command, P4UserMap):
raise e
else:
if p4_version_string().find('/NT') >= 0:
- text = text.replace('\r\n', '\n')
+ text = text.replace(b'\r\n', b'\n')
contents = [ text ]
if type_base == "apple":
@@ -2864,7 +2901,7 @@ class P4Sync(Command, P4UserMap):
pattern = p4_keywords_regexp_for_type(type_base, type_mods)
if pattern:
regexp = re.compile(pattern, re.VERBOSE)
- text = ''.join(contents)
+ text = ''.join(decode_text_stream(c) for c in contents)
text = regexp.sub(r'$\1$', text)
contents = [ text ]
@@ -2874,12 +2911,11 @@ class P4Sync(Command, P4UserMap):
self.writeToGitStream(git_mode, relPath, contents)
def streamOneP4Deletion(self, file):
- relPath = self.stripRepoPath(file['path'], self.branchPrefixes)
- relPath = self.encodeWithUTF8(relPath)
+ relPath = self.stripRepoPath(decode_path(file['path']), self.branchPrefixes)
if verbose:
sys.stdout.write("delete %s\n" % relPath)
sys.stdout.flush()
- self.gitStream.write("D %s\n" % relPath)
+ self.gitStream.write(encode_text_stream(u'D {}\n'.format(relPath)))
if self.largeFileSystem and self.largeFileSystem.isLargeFile(relPath):
self.largeFileSystem.removeLargeFile(relPath)
@@ -2979,9 +3015,9 @@ class P4Sync(Command, P4UserMap):
if 'shelved_cl' in f:
# Handle shelved CLs using the "p4 print file@=N" syntax to print
# the contents
- fileArg = '%s@=%d' % (f['path'], f['shelved_cl'])
+ fileArg = f['path'] + encode_text_stream('@={}'.format(f['shelved_cl']))
else:
- fileArg = '%s#%s' % (f['path'], f['rev'])
+ fileArg = f['path'] + encode_text_stream('#{}'.format(f['rev']))
fileArgs.append(fileArg)
@@ -3062,8 +3098,8 @@ class P4Sync(Command, P4UserMap):
if self.clientSpecDirs:
self.clientSpecDirs.update_client_spec_path_cache(files)
- files = [f for f in files
- if self.inClientSpec(f['path']) and self.hasBranchPrefix(f['path'])]
+ files = [f for (f, path) in ((f, decode_path(f['path'])) for f in files)
+ if self.inClientSpec(path) and self.hasBranchPrefix(path)]
if gitConfigBool('git-p4.keepEmptyCommits'):
allow_empty = True
@@ -3635,6 +3671,15 @@ class P4Sync(Command, P4UserMap):
self.gitStream = self.importProcess.stdin
self.gitError = self.importProcess.stderr
+ if bytes is not str:
+ # Wrap gitStream.write() so that it can be called using `str` arguments
+ def make_encoded_write(write):
+ def encoded_write(s):
+ return write(s.encode() if isinstance(s, str) else s)
+ return encoded_write
+
+ self.gitStream.write = make_encoded_write(self.gitStream.write)
+
def closeStreams(self):
if self.gitStream is None:
return
diff --git a/gpg-interface.c b/gpg-interface.c
index 165274d..2d538bc 100644
--- a/gpg-interface.c
+++ b/gpg-interface.c
@@ -256,6 +256,55 @@ error:
FREE_AND_NULL(sigc->key);
}
+static int verify_signed_buffer(const char *payload, size_t payload_size,
+ const char *signature, size_t signature_size,
+ struct strbuf *gpg_output,
+ struct strbuf *gpg_status)
+{
+ struct child_process gpg = CHILD_PROCESS_INIT;
+ struct gpg_format *fmt;
+ struct tempfile *temp;
+ int ret;
+ struct strbuf buf = STRBUF_INIT;
+
+ temp = mks_tempfile_t(".git_vtag_tmpXXXXXX");
+ if (!temp)
+ return error_errno(_("could not create temporary file"));
+ if (write_in_full(temp->fd, signature, signature_size) < 0 ||
+ close_tempfile_gently(temp) < 0) {
+ error_errno(_("failed writing detached signature to '%s'"),
+ temp->filename.buf);
+ delete_tempfile(&temp);
+ return -1;
+ }
+
+ fmt = get_format_by_sig(signature);
+ if (!fmt)
+ BUG("bad signature '%s'", signature);
+
+ argv_array_push(&gpg.args, fmt->program);
+ argv_array_pushv(&gpg.args, fmt->verify_args);
+ argv_array_pushl(&gpg.args,
+ "--status-fd=1",
+ "--verify", temp->filename.buf, "-",
+ NULL);
+
+ if (!gpg_status)
+ gpg_status = &buf;
+
+ sigchain_push(SIGPIPE, SIG_IGN);
+ ret = pipe_command(&gpg, payload, payload_size,
+ gpg_status, 0, gpg_output, 0);
+ sigchain_pop(SIGPIPE);
+
+ delete_tempfile(&temp);
+
+ ret |= !strstr(gpg_status->buf, "\n[GNUPG:] GOODSIG ");
+ strbuf_release(&buf); /* no matter it was used or not */
+
+ return ret;
+}
+
int check_signature(const char *payload, size_t plen, const char *signature,
size_t slen, struct signature_check *sigc)
{
@@ -418,51 +467,3 @@ int sign_buffer(struct strbuf *buffer, struct strbuf *signature, const char *sig
return 0;
}
-
-int verify_signed_buffer(const char *payload, size_t payload_size,
- const char *signature, size_t signature_size,
- struct strbuf *gpg_output, struct strbuf *gpg_status)
-{
- struct child_process gpg = CHILD_PROCESS_INIT;
- struct gpg_format *fmt;
- struct tempfile *temp;
- int ret;
- struct strbuf buf = STRBUF_INIT;
-
- temp = mks_tempfile_t(".git_vtag_tmpXXXXXX");
- if (!temp)
- return error_errno(_("could not create temporary file"));
- if (write_in_full(temp->fd, signature, signature_size) < 0 ||
- close_tempfile_gently(temp) < 0) {
- error_errno(_("failed writing detached signature to '%s'"),
- temp->filename.buf);
- delete_tempfile(&temp);
- return -1;
- }
-
- fmt = get_format_by_sig(signature);
- if (!fmt)
- BUG("bad signature '%s'", signature);
-
- argv_array_push(&gpg.args, fmt->program);
- argv_array_pushv(&gpg.args, fmt->verify_args);
- argv_array_pushl(&gpg.args,
- "--status-fd=1",
- "--verify", temp->filename.buf, "-",
- NULL);
-
- if (!gpg_status)
- gpg_status = &buf;
-
- sigchain_push(SIGPIPE, SIG_IGN);
- ret = pipe_command(&gpg, payload, payload_size,
- gpg_status, 0, gpg_output, 0);
- sigchain_pop(SIGPIPE);
-
- delete_tempfile(&temp);
-
- ret |= !strstr(gpg_status->buf, "\n[GNUPG:] GOODSIG ");
- strbuf_release(&buf); /* no matter it was used or not */
-
- return ret;
-}
diff --git a/gpg-interface.h b/gpg-interface.h
index 796571e..f4e9b4f 100644
--- a/gpg-interface.h
+++ b/gpg-interface.h
@@ -54,15 +54,6 @@ size_t parse_signature(const char *buf, size_t size);
int sign_buffer(struct strbuf *buffer, struct strbuf *signature,
const char *signing_key);
-/*
- * Run "gpg" to see if the payload matches the detached signature.
- * gpg_output, when set, receives the diagnostic output from GPG.
- * gpg_status, when set, receives the status output from GPG.
- */
-int verify_signed_buffer(const char *payload, size_t payload_size,
- const char *signature, size_t signature_size,
- struct strbuf *gpg_output, struct strbuf *gpg_status);
-
int git_gpg_config(const char *, const char *, void *);
void set_signing_key(const char *);
const char *get_signing_key(void);
diff --git a/hash.h b/hash.h
index 52a4f1a..e0f3f16 100644
--- a/hash.h
+++ b/hash.h
@@ -16,6 +16,7 @@
#endif
#if defined(SHA256_GCRYPT)
+#define SHA256_NEEDS_CLONE_HELPER
#include "sha256/gcrypt.h"
#elif defined(SHA256_OPENSSL)
#include <openssl/sha.h>
@@ -54,12 +55,28 @@
#define git_SHA256_Update platform_SHA256_Update
#define git_SHA256_Final platform_SHA256_Final
+#ifdef platform_SHA256_Clone
+#define git_SHA256_Clone platform_SHA256_Clone
+#endif
+
#ifdef SHA1_MAX_BLOCK_SIZE
#include "compat/sha1-chunked.h"
#undef git_SHA1_Update
#define git_SHA1_Update git_SHA1_Update_Chunked
#endif
+static inline void git_SHA1_Clone(git_SHA_CTX *dst, const git_SHA_CTX *src)
+{
+ memcpy(dst, src, sizeof(*dst));
+}
+
+#ifndef SHA256_NEEDS_CLONE_HELPER
+static inline void git_SHA256_Clone(git_SHA256_CTX *dst, const git_SHA256_CTX *src)
+{
+ memcpy(dst, src, sizeof(*dst));
+}
+#endif
+
/*
* Note that these constants are suitable for indexing the hash_algos array and
* comparing against each other, but are otherwise arbitrary, so they should not
@@ -85,6 +102,7 @@ union git_hash_ctx {
typedef union git_hash_ctx git_hash_ctx;
typedef void (*git_hash_init_fn)(git_hash_ctx *ctx);
+typedef void (*git_hash_clone_fn)(git_hash_ctx *dst, const git_hash_ctx *src);
typedef void (*git_hash_update_fn)(git_hash_ctx *ctx, const void *in, size_t len);
typedef void (*git_hash_final_fn)(unsigned char *hash, git_hash_ctx *ctx);
@@ -110,6 +128,9 @@ struct git_hash_algo {
/* The hash initialization function. */
git_hash_init_fn init_fn;
+ /* The hash context cloning function. */
+ git_hash_clone_fn clone_fn;
+
/* The hash update function. */
git_hash_update_fn update_fn;
diff --git a/hex.c b/hex.c
index fd7f00c..da51e64 100644
--- a/hex.c
+++ b/hex.c
@@ -47,32 +47,73 @@ int hex_to_bytes(unsigned char *binary, const char *hex, size_t len)
return 0;
}
-int get_sha1_hex(const char *hex, unsigned char *sha1)
+static int get_hash_hex_algop(const char *hex, unsigned char *hash,
+ const struct git_hash_algo *algop)
{
int i;
- for (i = 0; i < the_hash_algo->rawsz; i++) {
+ for (i = 0; i < algop->rawsz; i++) {
int val = hex2chr(hex);
if (val < 0)
return -1;
- *sha1++ = val;
+ *hash++ = val;
hex += 2;
}
return 0;
}
+int get_sha1_hex(const char *hex, unsigned char *sha1)
+{
+ return get_hash_hex_algop(hex, sha1, the_hash_algo);
+}
+
+int get_oid_hex_algop(const char *hex, struct object_id *oid,
+ const struct git_hash_algo *algop)
+{
+ return get_hash_hex_algop(hex, oid->hash, algop);
+}
+
+/*
+ * NOTE: This function relies on hash algorithms being in order from shortest
+ * length to longest length.
+ */
+int get_oid_hex_any(const char *hex, struct object_id *oid)
+{
+ int i;
+ for (i = GIT_HASH_NALGOS - 1; i > 0; i--) {
+ if (!get_hash_hex_algop(hex, oid->hash, &hash_algos[i]))
+ return i;
+ }
+ return GIT_HASH_UNKNOWN;
+}
+
int get_oid_hex(const char *hex, struct object_id *oid)
{
- return get_sha1_hex(hex, oid->hash);
+ return get_oid_hex_algop(hex, oid, the_hash_algo);
}
-int parse_oid_hex(const char *hex, struct object_id *oid, const char **end)
+int parse_oid_hex_algop(const char *hex, struct object_id *oid,
+ const char **end,
+ const struct git_hash_algo *algop)
{
- int ret = get_oid_hex(hex, oid);
+ int ret = get_hash_hex_algop(hex, oid->hash, algop);
if (!ret)
- *end = hex + the_hash_algo->hexsz;
+ *end = hex + algop->hexsz;
return ret;
}
+int parse_oid_hex_any(const char *hex, struct object_id *oid, const char **end)
+{
+ int ret = get_oid_hex_any(hex, oid);
+ if (ret)
+ *end = hex + hash_algos[ret].hexsz;
+ return ret;
+}
+
+int parse_oid_hex(const char *hex, struct object_id *oid, const char **end)
+{
+ return parse_oid_hex_algop(hex, oid, end, the_hash_algo);
+}
+
char *hash_to_hex_algop_r(char *buffer, const unsigned char *hash,
const struct git_hash_algo *algop)
{
diff --git a/http.c b/http.c
index 00a0e50..4283be9 100644
--- a/http.c
+++ b/http.c
@@ -86,6 +86,13 @@ static long curl_low_speed_time = -1;
static int curl_ftp_no_epsv;
static const char *curl_http_proxy;
static const char *http_proxy_authmethod;
+
+static const char *http_proxy_ssl_cert;
+static const char *http_proxy_ssl_key;
+static const char *http_proxy_ssl_ca_info;
+static struct credential proxy_cert_auth = CREDENTIAL_INIT;
+static int proxy_ssl_cert_password_required;
+
static struct {
const char *name;
long curlauth_param;
@@ -365,6 +372,20 @@ static int http_options(const char *var, const char *value, void *cb)
if (!strcmp("http.proxyauthmethod", var))
return git_config_string(&http_proxy_authmethod, var, value);
+ if (!strcmp("http.proxysslcert", var))
+ return git_config_string(&http_proxy_ssl_cert, var, value);
+
+ if (!strcmp("http.proxysslkey", var))
+ return git_config_string(&http_proxy_ssl_key, var, value);
+
+ if (!strcmp("http.proxysslcainfo", var))
+ return git_config_string(&http_proxy_ssl_ca_info, var, value);
+
+ if (!strcmp("http.proxysslcertpasswordprotected", var)) {
+ proxy_ssl_cert_password_required = git_config_bool(var, value);
+ return 0;
+ }
+
if (!strcmp("http.cookiefile", var))
return git_config_pathname(&curl_cookie_file, var, value);
if (!strcmp("http.savecookies", var)) {
@@ -565,6 +586,21 @@ static int has_cert_password(void)
return 1;
}
+#if LIBCURL_VERSION_NUM >= 0x073400
+static int has_proxy_cert_password(void)
+{
+ if (http_proxy_ssl_cert == NULL || proxy_ssl_cert_password_required != 1)
+ return 0;
+ if (!proxy_cert_auth.password) {
+ proxy_cert_auth.protocol = xstrdup("cert");
+ proxy_cert_auth.username = xstrdup("");
+ proxy_cert_auth.path = xstrdup(http_proxy_ssl_cert);
+ credential_fill(&proxy_cert_auth);
+ }
+ return 1;
+}
+#endif
+
#if LIBCURL_VERSION_NUM >= 0x071900
static void set_curl_keepalive(CURL *c)
{
@@ -924,8 +960,14 @@ static CURL *get_curl_handle(void)
#if LIBCURL_VERSION_NUM >= 0x073400
curl_easy_setopt(result, CURLOPT_PROXY_CAINFO, NULL);
#endif
- } else if (ssl_cainfo != NULL)
- curl_easy_setopt(result, CURLOPT_CAINFO, ssl_cainfo);
+ } else if (ssl_cainfo != NULL || http_proxy_ssl_ca_info != NULL) {
+ if (ssl_cainfo != NULL)
+ curl_easy_setopt(result, CURLOPT_CAINFO, ssl_cainfo);
+#if LIBCURL_VERSION_NUM >= 0x073400
+ if (http_proxy_ssl_ca_info != NULL)
+ curl_easy_setopt(result, CURLOPT_PROXY_CAINFO, http_proxy_ssl_ca_info);
+#endif
+ }
if (curl_low_speed_limit > 0 && curl_low_speed_time > 0) {
curl_easy_setopt(result, CURLOPT_LOW_SPEED_LIMIT,
@@ -1018,9 +1060,18 @@ static CURL *get_curl_handle(void)
CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
#endif
#if LIBCURL_VERSION_NUM >= 0x073400
- else if (starts_with(curl_http_proxy, "https"))
- curl_easy_setopt(result,
- CURLOPT_PROXYTYPE, CURLPROXY_HTTPS);
+ else if (starts_with(curl_http_proxy, "https")) {
+ curl_easy_setopt(result, CURLOPT_PROXYTYPE, CURLPROXY_HTTPS);
+
+ if (http_proxy_ssl_cert)
+ curl_easy_setopt(result, CURLOPT_PROXY_SSLCERT, http_proxy_ssl_cert);
+
+ if (http_proxy_ssl_key)
+ curl_easy_setopt(result, CURLOPT_PROXY_SSLKEY, http_proxy_ssl_key);
+
+ if (has_proxy_cert_password())
+ curl_easy_setopt(result, CURLOPT_PROXY_KEYPASSWD, proxy_cert_auth.password);
+ }
#endif
if (strstr(curl_http_proxy, "://"))
credential_from_url(&proxy_auth, curl_http_proxy);
@@ -1160,6 +1211,13 @@ void http_init(struct remote *remote, const char *url, int proactive_auth)
max_requests = DEFAULT_MAX_REQUESTS;
#endif
+ set_from_env(&http_proxy_ssl_cert, "GIT_PROXY_SSL_CERT");
+ set_from_env(&http_proxy_ssl_key, "GIT_PROXY_SSL_KEY");
+ set_from_env(&http_proxy_ssl_ca_info, "GIT_PROXY_SSL_CAINFO");
+
+ if (getenv("GIT_PROXY_SSL_CERT_PASSWORD_PROTECTED"))
+ proxy_ssl_cert_password_required = 1;
+
if (getenv("GIT_CURL_FTP_NO_EPSV"))
curl_ftp_no_epsv = 1;
@@ -1230,6 +1288,12 @@ void http_cleanup(void)
}
ssl_cert_password_required = 0;
+ if (proxy_cert_auth.password != NULL) {
+ memset(proxy_cert_auth.password, 0, strlen(proxy_cert_auth.password));
+ FREE_AND_NULL(proxy_cert_auth.password);
+ }
+ proxy_ssl_cert_password_required = 0;
+
FREE_AND_NULL(cached_accept_language);
}
diff --git a/log-tree.c b/log-tree.c
index 5212742..897a902 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -449,22 +449,21 @@ static void show_signature(struct rev_info *opt, struct commit *commit)
{
struct strbuf payload = STRBUF_INIT;
struct strbuf signature = STRBUF_INIT;
- struct strbuf gpg_output = STRBUF_INIT;
+ struct signature_check sigc = { 0 };
int status;
if (parse_signed_commit(commit, &payload, &signature) <= 0)
goto out;
- status = verify_signed_buffer(payload.buf, payload.len,
- signature.buf, signature.len,
- &gpg_output, NULL);
- if (status && !gpg_output.len)
- strbuf_addstr(&gpg_output, "No signature\n");
-
- show_sig_lines(opt, status, gpg_output.buf);
+ status = check_signature(payload.buf, payload.len, signature.buf,
+ signature.len, &sigc);
+ if (status && !sigc.gpg_output)
+ show_sig_lines(opt, status, "No signature\n");
+ else
+ show_sig_lines(opt, status, sigc.gpg_output);
+ signature_check_clear(&sigc);
out:
- strbuf_release(&gpg_output);
strbuf_release(&payload);
strbuf_release(&signature);
}
@@ -497,8 +496,9 @@ static int show_one_mergetag(struct commit *commit,
struct object_id oid;
struct tag *tag;
struct strbuf verify_message;
+ struct signature_check sigc = { 0 };
int status, nth;
- size_t payload_size, gpg_message_offset;
+ size_t payload_size;
hash_object_file(the_hash_algo, extra->value, extra->len,
type_name(OBJ_TAG), &oid);
@@ -520,19 +520,19 @@ static int show_one_mergetag(struct commit *commit,
else
strbuf_addf(&verify_message,
"parent #%d, tagged '%s'\n", nth + 1, tag->tag);
- gpg_message_offset = verify_message.len;
payload_size = parse_signature(extra->value, extra->len);
status = -1;
if (extra->len > payload_size) {
/* could have a good signature */
- if (!verify_signed_buffer(extra->value, payload_size,
- extra->value + payload_size,
- extra->len - payload_size,
- &verify_message, NULL))
- status = 0; /* good */
- else if (verify_message.len <= gpg_message_offset)
+ status = check_signature(extra->value, payload_size,
+ extra->value + payload_size,
+ extra->len - payload_size, &sigc);
+ if (sigc.gpg_output)
+ strbuf_addstr(&verify_message, sigc.gpg_output);
+ else
strbuf_addstr(&verify_message, "No signature\n");
+ signature_check_clear(&sigc);
/* otherwise we couldn't verify, which is shown as bad */
}
diff --git a/oidset.h b/oidset.h
index 5346563..d8a106b 100644
--- a/oidset.h
+++ b/oidset.h
@@ -1,7 +1,6 @@
#ifndef OIDSET_H
#define OIDSET_H
-#include "hashmap.h"
#include "khash.h"
/**
diff --git a/path.c b/path.c
index 88cf593..9bd717c 100644
--- a/path.c
+++ b/path.c
@@ -723,7 +723,7 @@ static struct passwd *getpw_str(const char *username, size_t len)
* then it is a newly allocated string. Returns NULL on getpw failure or
* if path is NULL.
*
- * If real_home is true, real_path($HOME) is used in the expansion.
+ * If real_home is true, strbuf_realpath($HOME) is used in the expansion.
*/
char *expand_user_path(const char *path, int real_home)
{
@@ -850,8 +850,8 @@ const char *enter_repo(const char *path, int strict)
}
if (is_git_directory(".")) {
- set_git_dir(".");
- check_repository_format();
+ set_git_dir(".", 0);
+ check_repository_format(NULL);
return path;
}
diff --git a/pathspec.c b/pathspec.c
index 166d255..8243e06 100644
--- a/pathspec.c
+++ b/pathspec.c
@@ -438,9 +438,13 @@ static void init_pathspec_item(struct pathspec_item *item, unsigned flags,
} else {
match = prefix_path_gently(prefix, prefixlen,
&prefixlen, copyfrom);
- if (!match)
+ if (!match) {
+ const char *hint_path = get_git_work_tree();
+ if (!hint_path)
+ hint_path = get_git_dir();
die(_("%s: '%s' is outside repository at '%s'"), elt,
- copyfrom, absolute_path(get_git_work_tree()));
+ copyfrom, absolute_path(hint_path));
+ }
}
item->match = match;
diff --git a/po/TEAMS b/po/TEAMS
index 4f0519d..dbcce4b 100644
--- a/po/TEAMS
+++ b/po/TEAMS
@@ -56,6 +56,10 @@ Language: sv (Swedish)
Repository: https://github.com/nafmo/git-l10n-sv/
Leader: Peter Krefting <peter@softwolves.pp.se>
+Language: tr (Turkish)
+Repository: https://github.com/bitigchi/git-po/
+Leader: Emir SARI <bitigchi@me.com>
+
Language: vi (Vietnamese)
Repository: https://github.com/vnwildman/git/
Leader: Trần Ngọc Quân <vnwildman AT gmail.com>
diff --git a/po/bg.po b/po/bg.po
index 29ba1c8..7990313 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -161,8 +161,8 @@ msgid ""
msgstr ""
"Project-Id-Version: git 2.25\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2020-01-09 16:22+0100\n"
-"PO-Revision-Date: 2020-01-09 16:31+0100\n"
+"POT-Creation-Date: 2020-03-11 15:26+0800\n"
+"PO-Revision-Date: 2020-03-12 00:03+0100\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n"
@@ -171,251 +171,531 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: add-interactive.c:347
+#: add-interactive.c:368
#, c-format
msgid "Huh (%s)?"
msgstr "Неуспешен анализ — „%s“."
-#: add-interactive.c:500 add-interactive.c:801 sequencer.c:3216
-#: sequencer.c:3656 builtin/rebase.c:871 builtin/rebase.c:1643
-#: builtin/rebase.c:2019 builtin/rebase.c:2063
+#: add-interactive.c:521 add-interactive.c:822 sequencer.c:3124
+#: sequencer.c:3562 builtin/rebase.c:875 builtin/rebase.c:1687
+#: builtin/rebase.c:2086 builtin/rebase.c:2130
msgid "could not read index"
msgstr "индексът не може да бъде прочетен"
-#: add-interactive.c:555 git-add--interactive.perl:269
+#: add-interactive.c:576 git-add--interactive.perl:269
#: git-add--interactive.perl:294
msgid "binary"
msgstr "двоично"
-#: add-interactive.c:613 git-add--interactive.perl:278
+#: add-interactive.c:634 git-add--interactive.perl:278
#: git-add--interactive.perl:332
msgid "nothing"
msgstr "нищо"
-#: add-interactive.c:614 git-add--interactive.perl:314
+#: add-interactive.c:635 git-add--interactive.perl:314
#: git-add--interactive.perl:329
msgid "unchanged"
msgstr "няма промени"
-#: add-interactive.c:651 git-add--interactive.perl:643
+#: add-interactive.c:672 git-add--interactive.perl:643
msgid "Update"
msgstr "Обновяване"
-#: add-interactive.c:668 add-interactive.c:856
+#: add-interactive.c:689 add-interactive.c:877
#, c-format
msgid "could not stage '%s'"
msgstr "неуспешно добавяне в индекса на „%s“"
-#: add-interactive.c:674 add-interactive.c:863 sequencer.c:3409
-#: builtin/rebase.c:895
+#: add-interactive.c:695 add-interactive.c:884 sequencer.c:3317
+#: builtin/rebase.c:899
msgid "could not write index"
msgstr "индексът не може да бъде записан"
-#: add-interactive.c:677 git-add--interactive.perl:628
+#: add-interactive.c:698 git-add--interactive.perl:628
#, c-format, perl-format
msgid "updated %d path\n"
msgid_plural "updated %d paths\n"
msgstr[0] "%d файл обновен\n"
msgstr[1] "%d файла обновени\n"
-#: add-interactive.c:695 git-add--interactive.perl:678
+#: add-interactive.c:716 git-add--interactive.perl:678
#, c-format, perl-format
msgid "note: %s is untracked now.\n"
msgstr "БЕЛЕЖКА: „%s“ вече не се следи.\n"
-#: add-interactive.c:700 apply.c:4108 builtin/checkout.c:281
+#: add-interactive.c:721 apply.c:4110 builtin/checkout.c:281
#: builtin/reset.c:144
#, c-format
msgid "make_cache_entry failed for path '%s'"
msgstr "неуспешно създаване на запис в кеша чрез „make_cache_entry“ за „%s“"
-#: add-interactive.c:730 git-add--interactive.perl:655
+#: add-interactive.c:751 git-add--interactive.perl:655
msgid "Revert"
msgstr "Отмяна"
-#: add-interactive.c:746
+#: add-interactive.c:767
msgid "Could not parse HEAD^{tree}"
msgstr "Указателят „HEAD^{tree}“ не може да бъде анализиран"
-#: add-interactive.c:784 git-add--interactive.perl:631
+#: add-interactive.c:805 git-add--interactive.perl:631
#, c-format, perl-format
msgid "reverted %d path\n"
msgid_plural "reverted %d paths\n"
msgstr[0] "%d файл с отменени промени\n"
msgstr[1] "%d файла с отменени промени\n"
-#: add-interactive.c:835 git-add--interactive.perl:695
+#: add-interactive.c:856 git-add--interactive.perl:695
#, c-format
msgid "No untracked files.\n"
msgstr "Няма неследени файлове.\n"
-#: add-interactive.c:839 git-add--interactive.perl:689
+#: add-interactive.c:860 git-add--interactive.perl:689
msgid "Add untracked"
msgstr "Добавяне на неследени"
-#: add-interactive.c:866 git-add--interactive.perl:625
+#: add-interactive.c:887 git-add--interactive.perl:625
#, c-format, perl-format
msgid "added %d path\n"
msgid_plural "added %d paths\n"
msgstr[0] "%d файл добавен\n"
msgstr[1] "%d файла добавени\n"
-#: add-interactive.c:896
+#: add-interactive.c:917
#, c-format
msgid "ignoring unmerged: %s"
msgstr "пренебрегване на неслятото: „%s“"
-#: add-interactive.c:908 add-patch.c:1331 git-add--interactive.perl:1366
+#: add-interactive.c:929 add-patch.c:1675 git-add--interactive.perl:1366
#, c-format
msgid "Only binary files changed.\n"
msgstr "Само двоични файлове са променени.\n"
-#: add-interactive.c:910 add-patch.c:1329 git-add--interactive.perl:1368
+#: add-interactive.c:931 add-patch.c:1673 git-add--interactive.perl:1368
#, c-format
msgid "No changes.\n"
msgstr "Няма промени.\n"
-#: add-interactive.c:914 git-add--interactive.perl:1376
+#: add-interactive.c:935 git-add--interactive.perl:1376
msgid "Patch update"
msgstr "Обновяване на кръпка"
-#: add-interactive.c:953 git-add--interactive.perl:1754
+#: add-interactive.c:974 git-add--interactive.perl:1754
msgid "Review diff"
msgstr "Преглед на разликата"
-#: add-interactive.c:981
+#: add-interactive.c:1002
msgid "show paths with changes"
msgstr "извеждане на пътищата с промени"
-#: add-interactive.c:983
+#: add-interactive.c:1004
msgid "add working tree state to the staged set of changes"
msgstr "добавяне на състоянието на работното дърво към промените в индекса"
-#: add-interactive.c:985
+#: add-interactive.c:1006
msgid "revert staged set of changes back to the HEAD version"
msgstr "връщане на състоянието на индекса към соченото от „HEAD“"
-#: add-interactive.c:987
+#: add-interactive.c:1008
msgid "pick hunks and update selectively"
msgstr "интерактивни избор и промяна на парчета код"
-#: add-interactive.c:989
+#: add-interactive.c:1010
msgid "view diff between HEAD and index"
msgstr "разлика между соченото от „HEAD“ и индекса"
-#: add-interactive.c:991
+#: add-interactive.c:1012
msgid "add contents of untracked files to the staged set of changes"
msgstr "добавяне на съдържанието на неследените файлове към индекса"
-#: add-interactive.c:999 add-interactive.c:1048
+#: add-interactive.c:1020 add-interactive.c:1069
msgid "Prompt help:"
msgstr "Помощ:"
-#: add-interactive.c:1001
+#: add-interactive.c:1022
msgid "select a single item"
msgstr "избор на eдин елемент"
-#: add-interactive.c:1003
+#: add-interactive.c:1024
msgid "select a range of items"
msgstr "избор на поредица от елементи"
-#: add-interactive.c:1005
+#: add-interactive.c:1026
msgid "select multiple ranges"
msgstr "избор на няколко поредици от елементи"
-#: add-interactive.c:1007 add-interactive.c:1052
+#: add-interactive.c:1028 add-interactive.c:1073
msgid "select item based on unique prefix"
msgstr "избор на базата на уникален префикс"
-#: add-interactive.c:1009
+#: add-interactive.c:1030
msgid "unselect specified items"
msgstr "изваждане на указаното от избора"
-#: add-interactive.c:1011
+#: add-interactive.c:1032
msgid "choose all items"
msgstr "избор на всички елементи"
-#: add-interactive.c:1013
+#: add-interactive.c:1034
msgid "(empty) finish selecting"
msgstr "(празно) приключване на избирането"
-#: add-interactive.c:1050
+#: add-interactive.c:1071
msgid "select a numbered item"
msgstr "избор на номериран елемент"
-#: add-interactive.c:1054
+#: add-interactive.c:1075
msgid "(empty) select nothing"
msgstr "(празно) без избор на нищо"
-#: add-interactive.c:1062 builtin/clean.c:822 git-add--interactive.perl:1851
+#: add-interactive.c:1083 builtin/clean.c:822 git-add--interactive.perl:1851
msgid "*** Commands ***"
msgstr "●●● Команди ●●●"
-#: add-interactive.c:1063 builtin/clean.c:823 git-add--interactive.perl:1848
+#: add-interactive.c:1084 builtin/clean.c:823 git-add--interactive.perl:1848
msgid "What now"
msgstr "Избор на следващо действие"
-#: add-interactive.c:1115 git-add--interactive.perl:213
+#: add-interactive.c:1136 git-add--interactive.perl:213
msgid "staged"
msgstr "в индекса"
-#: add-interactive.c:1115 git-add--interactive.perl:213
+#: add-interactive.c:1136 git-add--interactive.perl:213
msgid "unstaged"
msgstr "извън индекса"
-#: add-interactive.c:1115 apply.c:4965 apply.c:4968 builtin/am.c:2197
-#: builtin/am.c:2200 builtin/clone.c:123 builtin/fetch.c:144
-#: builtin/merge.c:273 builtin/pull.c:209 builtin/submodule--helper.c:409
-#: builtin/submodule--helper.c:1379 builtin/submodule--helper.c:1382
-#: builtin/submodule--helper.c:1875 builtin/submodule--helper.c:1878
-#: builtin/submodule--helper.c:2119 git-add--interactive.perl:213
+#: add-interactive.c:1136 apply.c:4967 apply.c:4970 builtin/am.c:2251
+#: builtin/am.c:2254 builtin/clone.c:123 builtin/fetch.c:144
+#: builtin/merge.c:274 builtin/pull.c:189 builtin/submodule--helper.c:409
+#: builtin/submodule--helper.c:1394 builtin/submodule--helper.c:1397
+#: builtin/submodule--helper.c:1902 builtin/submodule--helper.c:1905
+#: builtin/submodule--helper.c:2148 git-add--interactive.perl:213
msgid "path"
msgstr "път"
-#: add-interactive.c:1122
+#: add-interactive.c:1143
msgid "could not refresh index"
msgstr "индексът не може да бъде обновен"
#
-#: add-interactive.c:1136 builtin/clean.c:787 git-add--interactive.perl:1765
+#: add-interactive.c:1157 builtin/clean.c:787 git-add--interactive.perl:1765
#, c-format
msgid "Bye.\n"
msgstr "Изход.\n"
-#: add-patch.c:15
-#, c-format
-msgid "Stage mode change [y,n,a,q,d%s,?]? "
-msgstr "Добавяне на промяната на правата за достъп [y,n,a,q,d%s,?]? "
+#: add-patch.c:33 git-add--interactive.perl:1428
+#, c-format, perl-format
+msgid "Stage mode change [y,n,q,a,d%s,?]? "
+msgstr "Добавяне на промяната на правата за достъп [y,n,q,a,d%s,?]? "
-#: add-patch.c:16
-#, c-format
-msgid "Stage deletion [y,n,a,q,d%s,?]? "
-msgstr "Добавяне на изтриването [y,n,a,q,d%s,?]? "
+#: add-patch.c:34 git-add--interactive.perl:1429
+#, c-format, perl-format
+msgid "Stage deletion [y,n,q,a,d%s,?]? "
+msgstr "Добавяне на изтриването [y,n,q,a,d%s,?]? "
-#: add-patch.c:17
-#, c-format
-msgid "Stage this hunk [y,n,a,q,d%s,?]? "
-msgstr "Добавяне на това парче [y,n,a,q,d%s,?]? "
+#: add-patch.c:35 git-add--interactive.perl:1430
+#, c-format, perl-format
+msgid "Stage this hunk [y,n,q,a,d%s,?]? "
+msgstr "Добавяне на това парче [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:37
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"staging."
+msgstr ""
+"Ако кръпката може да се приложи чисто, редактираното парче ще бъде незабавно "
+"добавено към индекса."
+
+#: add-patch.c:40
+msgid ""
+"y - stage this hunk\n"
+"n - do not stage this hunk\n"
+"q - quit; do not stage this hunk or any of the remaining ones\n"
+"a - stage this hunk and all later hunks in the file\n"
+"d - do not stage this hunk or any of the later hunks in the file\n"
+msgstr ""
+"y — добавяне на парчето в индекса\n"
+"n — без добавяне на парчето в индекса\n"
+"q — изход, без добавяне на това и всички оставащи парчета от файла\n"
+"a — добавяне на това и всички следващи парчета от файла в индекса\n"
+"d — без добавяне на това и всички следващи парчета от файла в индекса\n"
+
+#: add-patch.c:54 git-add--interactive.perl:1433
+#, c-format, perl-format
+msgid "Stash mode change [y,n,q,a,d%s,?]? "
+msgstr "Скатаване на промяната на правата за достъп [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:55 git-add--interactive.perl:1434
+#, c-format, perl-format
+msgid "Stash deletion [y,n,q,a,d%s,?]? "
+msgstr "Скатаване на изтриването [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:56 git-add--interactive.perl:1435
+#, c-format, perl-format
+msgid "Stash this hunk [y,n,q,a,d%s,?]? "
+msgstr "Скатаване на това парче [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:58
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"stashing."
+msgstr ""
+"Ако кръпката може да се приложи чисто, редактираното парче ще бъде незабавно "
+"скътано."
+
+#: add-patch.c:61
+msgid ""
+"y - stash this hunk\n"
+"n - do not stash this hunk\n"
+"q - quit; do not stash this hunk or any of the remaining ones\n"
+"a - stash this hunk and all later hunks in the file\n"
+"d - do not stash this hunk or any of the later hunks in the file\n"
+msgstr ""
+"y — скатаване на парчето\n"
+"n — без скатаване на парчето\n"
+"q — изход, без скатаване на това и всички оставащи парчета\n"
+"a — скатаване на това и всички следващи парчета от файла\n"
+"d — без скатаване на това и всички следващи парчета от файла\n"
+
+#: add-patch.c:77 git-add--interactive.perl:1438
+#, c-format, perl-format
+msgid "Unstage mode change [y,n,q,a,d%s,?]? "
+msgstr "Изваждане на промяната на правата за достъп [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:78 git-add--interactive.perl:1439
+#, c-format, perl-format
+msgid "Unstage deletion [y,n,q,a,d%s,?]? "
+msgstr "Изваждане на изтриването [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:79 git-add--interactive.perl:1440
+#, c-format, perl-format
+msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
+msgstr "Изваждане на това парче [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:81
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"unstaging."
+msgstr ""
+"Ако кръпката може да се приложи чисто, редактираното парче ще бъде незабавно "
+"извадено от индекса."
+
+#: add-patch.c:84
+msgid ""
+"y - unstage this hunk\n"
+"n - do not unstage this hunk\n"
+"q - quit; do not unstage this hunk or any of the remaining ones\n"
+"a - unstage this hunk and all later hunks in the file\n"
+"d - do not unstage this hunk or any of the later hunks in the file\n"
+msgstr ""
+"y — изваждане на парчето от индекса\n"
+"n — без изваждане на парчето от индекса\n"
+"q — изход, без изваждане на това и всички оставащи парчета от индекса\n"
+"a — изваждане на това и всички следващи парчета от файла от индекса\n"
+"d — без изваждане на това и всички следващи парчета от файла от индекса\n"
+
+#: add-patch.c:99 git-add--interactive.perl:1443
+#, c-format, perl-format
+msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
+msgstr ""
+"Прилагане на промяната на правата за достъп към индекса [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:100 git-add--interactive.perl:1444
+#, c-format, perl-format
+msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
+msgstr "Прилагане на изтриването към индекса [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:101 git-add--interactive.perl:1445
+#, c-format, perl-format
+msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
+msgstr "Прилагане на това парче към индекса [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:103 add-patch.c:168 add-patch.c:211
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"applying."
+msgstr ""
+"Ако кръпката може да се приложи чисто, редактираното парче ще бъде незабавно "
+"набелязано за прилагане."
+
+#: add-patch.c:106
+msgid ""
+"y - apply this hunk to index\n"
+"n - do not apply this hunk to index\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file\n"
+msgstr ""
+"y — прилагане на парчето към индекса\n"
+"n — без прилагане на парчето към индекса\n"
+"q — изход, без прилагане на това и всички оставащи парчета към индекса\n"
+"a — прилагане на това и всички следващи парчета от файла към индекса\n"
+"d — без прилагане на това и всички следващи парчета от файла към индекса\n"
+
+#: add-patch.c:121 git-add--interactive.perl:1448
+#: git-add--interactive.perl:1463
+#, c-format, perl-format
+msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Премахване на промяната в правата за достъп от работното дърво [y,n,q,a,d"
+"%s,?]? "
+
+#: add-patch.c:122 git-add--interactive.perl:1449
+#: git-add--interactive.perl:1464
+#, c-format, perl-format
+msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
+msgstr "Премахване на изтриването от работното дърво [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:123 git-add--interactive.perl:1450
+#: git-add--interactive.perl:1465
+#, c-format, perl-format
+msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
+msgstr "Премахване на парчето от работното дърво [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:125 add-patch.c:147 add-patch.c:190
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"discarding."
+msgstr ""
+"Ако кръпката може да се приложи чисто, редактираното парче ще бъде незабавно "
+"набелязано за зануляване."
-#: add-patch.c:111
+#: add-patch.c:128 add-patch.c:193
+msgid ""
+"y - discard this hunk from worktree\n"
+"n - do not discard this hunk from worktree\n"
+"q - quit; do not discard this hunk or any of the remaining ones\n"
+"a - discard this hunk and all later hunks in the file\n"
+"d - do not discard this hunk or any of the later hunks in the file\n"
+msgstr ""
+"y — премахване на парчето от работното дърво\n"
+"n — без премахване на парчето от работното дърво\n"
+"q — изход, без премахване на това и всички оставащи парчета от работното "
+"дърво\n"
+"a — премахване на това и всички следващи парчета от файла от работното "
+"дърво\n"
+"d — без премахване на това и всички следващи парчета от файла от работното "
+"дърво\n"
+
+#: add-patch.c:143 add-patch.c:186 git-add--interactive.perl:1453
+#, c-format, perl-format
+msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Премахване на промяната в правата за достъп от индекса и работното дърво [y,"
+"n,q,a,d%s,?]? "
+
+#: add-patch.c:144 add-patch.c:187 git-add--interactive.perl:1454
+#, c-format, perl-format
+msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Премахване на изтриването от индекса и работното дърво [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:145 add-patch.c:188 git-add--interactive.perl:1455
+#, c-format, perl-format
+msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Премахване на парчето от индекса и работното дърво [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:150
+msgid ""
+"y - discard this hunk from index and worktree\n"
+"n - do not discard this hunk from index and worktree\n"
+"q - quit; do not discard this hunk or any of the remaining ones\n"
+"a - discard this hunk and all later hunks in the file\n"
+"d - do not discard this hunk or any of the later hunks in the file\n"
+msgstr ""
+"y — премахване на парчето от индекса и работното дърво\n"
+"n — без премахване на парчето от индекса и работното дърво\n"
+"q — изход, без премахване на това и всички оставащи парчета от индекса и "
+"работното дърво\n"
+"a — премахване на това и всички следващи парчета от файла от индекса и "
+"работното дърво\n"
+"d — без премахване на това и всички следващи парчета от файла от индекса и "
+"работното дърво\n"
+
+#: add-patch.c:164 add-patch.c:207 git-add--interactive.perl:1458
+#, c-format, perl-format
+msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Прилагане на промяната в правата за достъп от индекса и работното дърво [y,n,"
+"q,a,d%s,?]? "
+
+#: add-patch.c:165 add-patch.c:208 git-add--interactive.perl:1459
+#, c-format, perl-format
+msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Прилагане на изтриването от индекса и работното дърво [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:166 add-patch.c:209 git-add--interactive.perl:1460
+#, c-format, perl-format
+msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Прилагане на парчето от индекса и работното дърво [y,n,q,a,d%s,?]? "
+
+#: add-patch.c:171
+msgid ""
+"y - apply this hunk to index and worktree\n"
+"n - do not apply this hunk to index and worktree\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file\n"
+msgstr ""
+"y — прилагане на парчето от индекса и работното дърво\n"
+"n — без прилагане на парчето от индекса и работното дърво\n"
+"q — изход, без прилагане на това и всички оставащи парчета от индекса и "
+"работното дърво\n"
+"a — прилагане на това и всички следващи парчета от файла от индекса и "
+"работното дърво\n"
+"d — без прилагане на това и всички следващи парчета от файла от индекса и "
+"работното дърво\n"
+
+#: add-patch.c:214
+msgid ""
+"y - apply this hunk to worktree\n"
+"n - do not apply this hunk to worktree\n"
+"q - quit; do not apply this hunk or any of the remaining ones\n"
+"a - apply this hunk and all later hunks in the file\n"
+"d - do not apply this hunk or any of the later hunks in the file\n"
+msgstr ""
+"y — прилагане на парчето към работното дърво\n"
+"n — без прилагане на парчето към работното дърво\n"
+"q — изход, без прилагане на това и всички оставащи парчета\n"
+"a — прилагане на това и всички следващи парчета от файла\n"
+"d — без прилагане на това и всички следващи парчета от файла\n"
+
+#: add-patch.c:318
#, c-format
msgid "could not parse hunk header '%.*s'"
msgstr "заглавната част на парчето „%.*s“ не може да се анализира"
-#: add-patch.c:130 add-patch.c:134
+#: add-patch.c:337 add-patch.c:341
#, c-format
msgid "could not parse colored hunk header '%.*s'"
msgstr "заглавната част на оцветеното парче „%.*s“ не може да се анализира"
-#: add-patch.c:176
+#: add-patch.c:395
msgid "could not parse diff"
msgstr "разликата не може да се анализира"
-#: add-patch.c:194
+#: add-patch.c:414
msgid "could not parse colored diff"
msgstr "оцветената разлика не може да се анализира"
-#: add-patch.c:508
+#: add-patch.c:428
+#, c-format
+msgid "failed to run '%s'"
+msgstr "неуспешно изпълнение на „%s“"
+
+#: add-patch.c:587
+msgid "mismatched output from interactive.diffFilter"
+msgstr "изходът от „interactive.diffFilter“ не напасва"
+
+#: add-patch.c:588
+msgid ""
+"Your filter must maintain a one-to-one correspondence\n"
+"between its input and output lines."
+msgstr ""
+"Обработените редове на изхода на ползвания филтър, трябва\n"
+"да се отнасят едно към едно спрямо редовете на входа."
+
+#: add-patch.c:761
#, c-format
msgid ""
"expected context line #%d in\n"
@@ -424,7 +704,7 @@ msgstr ""
"очаква се ред №%d от контекста в\n"
"%.*s"
-#: add-patch.c:523
+#: add-patch.c:776
#, c-format
msgid ""
"hunks do not overlap:\n"
@@ -437,11 +717,11 @@ msgstr ""
" не завършва с:\n"
"%.*s"
-#: add-patch.c:799 git-add--interactive.perl:1112
+#: add-patch.c:1052 git-add--interactive.perl:1112
msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
msgstr "Ръчно редактиране на парчета код — отдолу има подсказка.\n"
-#: add-patch.c:803
+#: add-patch.c:1056
#, c-format
msgid ""
"---\n"
@@ -455,17 +735,8 @@ msgstr ""
"За да пропуснете редовете, започващи с „%c“: изтрийте ги.\n"
"Редовете, които започват с „%c“ ще бъдат пропуснати.\n"
-#: add-patch.c:810
-msgid ""
-"If the patch applies cleanly, the edited hunk will immediately be\n"
-"marked for staging.\n"
-msgstr ""
-"Ако кръпката може да се приложи чисто, редактираното парче ще бъде "
-"незабавно\n"
-"добавено към индекса.\n"
-
#. TRANSLATORS: 'it' refers to the patch mentioned in the previous messages.
-#: add-patch.c:818 git-add--interactive.perl:1126
+#: add-patch.c:1070 git-add--interactive.perl:1126
msgid ""
"If it does not apply cleanly, you will be given an opportunity to\n"
"edit again. If all lines of the hunk are removed, then the edit is\n"
@@ -475,11 +746,11 @@ msgstr ""
"изтриете всички редове от парчето код, то ще бъде оставено непроменено, а\n"
"редактирането — отказано.\n"
-#: add-patch.c:851
+#: add-patch.c:1103
msgid "could not parse hunk header"
msgstr "заглавната част парчето не може да се анализира"
-#: add-patch.c:895 add-patch.c:1294
+#: add-patch.c:1148
msgid "'git apply --cached' failed"
msgstr "неуспешно изпълнение на „git apply --cached“"
@@ -495,7 +766,7 @@ msgstr "неуспешно изпълнение на „git apply --cached“"
#. Consider translating (saying "no" discards!) as
#. (saying "n" for "no" discards!) if the translation
#. of the word "no" does not start with n.
-#: add-patch.c:952 git-add--interactive.perl:1239
+#: add-patch.c:1218 git-add--interactive.perl:1239
msgid ""
"Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
msgstr ""
@@ -503,21 +774,19 @@ msgstr ""
"редактирането? (текущите редакции ще се отменят при отказ!): „y“ (да)/ "
"„n“ (не)? "
-#: add-patch.c:1009
-msgid ""
-"y - stage this hunk\n"
-"n - do not stage this hunk\n"
-"q - quit; do not stage this hunk or any of the remaining ones\n"
-"a - stage this and all the remaining hunks\n"
-"d - do not stage this hunk nor any of the remaining hunks\n"
-msgstr ""
-"y — добавяне на парчето в индекса\n"
-"n — без добавяне на парчето в индекса\n"
-"q — изход, без добавяне на това и всички оставащи парчета\n"
-"a — добавяне на това и всички следващи парчета в индекса\n"
-"d — без добавяне на това и всички оставащи парчета в индекса\n"
+#: add-patch.c:1261
+msgid "The selected hunks do not apply to the index!"
+msgstr "Избраните парчета не могат да се добавят в индекса!"
-#: add-patch.c:1016
+#: add-patch.c:1262 git-add--interactive.perl:1343
+msgid "Apply them to the worktree anyway? "
+msgstr "Да се приложат ли към работното дърво? "
+
+#: add-patch.c:1269 git-add--interactive.perl:1346
+msgid "Nothing was applied.\n"
+msgstr "Нищо не е приложено.\n"
+
+#: add-patch.c:1326
msgid ""
"j - leave this hunk undecided, see next undecided hunk\n"
"J - leave this hunk undecided, see next hunk\n"
@@ -539,99 +808,103 @@ msgstr ""
"e — ръчно редактиране на текущото парче\n"
"? — извеждане не помощта\n"
-#: add-patch.c:1137 add-patch.c:1147
+#: add-patch.c:1447 add-patch.c:1457
msgid "No previous hunk"
msgstr "Няма друго парче преди това"
-#: add-patch.c:1142 add-patch.c:1152
+#: add-patch.c:1452 add-patch.c:1462
msgid "No next hunk"
msgstr "Няма друго парче след това"
-#: add-patch.c:1158
+#: add-patch.c:1468
msgid "No other hunks to goto"
msgstr "Няма други парчета"
-#: add-patch.c:1169 git-add--interactive.perl:1577
+#: add-patch.c:1479 git-add--interactive.perl:1577
msgid "go to which hunk (<ret> to see more)? "
msgstr "към кое парче да се придвижи (за повече варианти натиснете „enter“)? "
-#: add-patch.c:1170 git-add--interactive.perl:1579
+#: add-patch.c:1480 git-add--interactive.perl:1579
msgid "go to which hunk? "
msgstr "към кое парче да се придвижи? "
-#: add-patch.c:1181
+#: add-patch.c:1491
#, c-format
msgid "Invalid number: '%s'"
msgstr "Неправилен номер: „%s“"
-#: add-patch.c:1186
+#: add-patch.c:1496
#, c-format
msgid "Sorry, only %d hunk available."
msgid_plural "Sorry, only %d hunks available."
msgstr[0] "Има само %d парче."
msgstr[1] "Има само %d парчета."
-#: add-patch.c:1195
+#: add-patch.c:1505
msgid "No other hunks to search"
msgstr "Няма други парчета за търсене"
-#: add-patch.c:1201 git-add--interactive.perl:1623
+#: add-patch.c:1511 git-add--interactive.perl:1623
msgid "search for regex? "
msgstr "да се търси с регулярен израз? "
-#: add-patch.c:1216
+#: add-patch.c:1526
#, c-format
msgid "Malformed search regexp %s: %s"
msgstr "Сгрешен регулярен израз „%s“: %s"
-#: add-patch.c:1233
+#: add-patch.c:1543
msgid "No hunk matches the given pattern"
msgstr "Никое парче не напасва на регулярния израз"
-#: add-patch.c:1240
+#: add-patch.c:1550
msgid "Sorry, cannot split this hunk"
msgstr "Това парче не може да бъде разделено"
-#: add-patch.c:1244
+#: add-patch.c:1554
#, c-format
msgid "Split into %d hunks."
msgstr "Разделяне на %d парчета."
-#: add-patch.c:1248
+#: add-patch.c:1558
msgid "Sorry, cannot edit this hunk"
msgstr "Това парче не може да бъде редактирано"
-#: advice.c:111
+#: add-patch.c:1609
+msgid "'git apply' failed"
+msgstr "неуспешно изпълнение на „git apply“"
+
+#: advice.c:115
#, c-format
msgid "%shint: %.*s%s\n"
msgstr "%sподсказка: %.*s%s\n"
-#: advice.c:164
+#: advice.c:168
msgid "Cherry-picking is not possible because you have unmerged files."
msgstr "Отбирането на подавания е блокирано от неслети файлове."
-#: advice.c:166
+#: advice.c:170
msgid "Committing is not possible because you have unmerged files."
msgstr "Подаването е блокирано от неслети файлове."
-#: advice.c:168
+#: advice.c:172
msgid "Merging is not possible because you have unmerged files."
msgstr "Сливането е блокирано от неслети файлове."
-#: advice.c:170
+#: advice.c:174
msgid "Pulling is not possible because you have unmerged files."
msgstr "Издърпването е блокирано от неслети файлове."
-#: advice.c:172
+#: advice.c:176
msgid "Reverting is not possible because you have unmerged files."
msgstr "Отмяната е блокирана от неслети файлове."
-#: advice.c:174
+#: advice.c:178
#, c-format
msgid "It is not possible to %s because you have unmerged files."
msgstr "Действието „%s“ е блокирано от неслети файлове."
-#: advice.c:182
+#: advice.c:186
msgid ""
"Fix them up in the work tree, and then use 'git add/rm <file>'\n"
"as appropriate to mark resolution and make a commit."
@@ -639,23 +912,23 @@ msgstr ""
"Редактирайте ги в работното дърво, и тогава ползвайте „git add/rm ФАЙЛ“,\n"
"за да отбележите коригирането им. След това извършете подаването."
-#: advice.c:190
+#: advice.c:194
msgid "Exiting because of an unresolved conflict."
msgstr "Изход от програмата заради некоригиран конфликт."
-#: advice.c:195 builtin/merge.c:1332
+#: advice.c:199 builtin/merge.c:1335
msgid "You have not concluded your merge (MERGE_HEAD exists)."
msgstr "Не сте завършили сливане. (Указателят „MERGE_HEAD“ съществува)."
-#: advice.c:197
+#: advice.c:201
msgid "Please, commit your changes before merging."
msgstr "Промените трябва да се подадат преди сливане."
-#: advice.c:198
+#: advice.c:202
msgid "Exiting because of unfinished merge."
msgstr "Изход от програмата заради незавършено сливане."
-#: advice.c:204
+#: advice.c:208
#, c-format
msgid ""
"Note: switching to '%s'.\n"
@@ -919,295 +1192,295 @@ msgstr ""
msgid "cannot apply binary patch to '%s' without full index line"
msgstr "към „%s“ не може да се приложи двоична кръпка без пълен индекс"
-#: apply.c:3162
+#: apply.c:3163
#, c-format
msgid ""
"the patch applies to '%s' (%s), which does not match the current contents."
msgstr "кръпката съответства на „%s“ (%s), който не съвпада по съдържание."
-#: apply.c:3170
+#: apply.c:3171
#, c-format
msgid "the patch applies to an empty '%s' but it is not empty"
msgstr "кръпката съответства на „%s“, който трябва да е празен, но не е"
-#: apply.c:3188
+#: apply.c:3189
#, c-format
msgid "the necessary postimage %s for '%s' cannot be read"
msgstr ""
"необходимият резултат след операцията — „%s“ за „%s“ не може да бъде "
"прочетен"
-#: apply.c:3201
+#: apply.c:3202
#, c-format
msgid "binary patch does not apply to '%s'"
msgstr "двоичната кръпка не може да бъде приложена върху „%s“"
-#: apply.c:3207
+#: apply.c:3209
#, c-format
msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
msgstr ""
"двоичната кръпка за „%s“ води до неправилни резултати (очакваше се: „%s“, а "
"бе получено: „%s“)"
-#: apply.c:3228
+#: apply.c:3230
#, c-format
msgid "patch failed: %s:%ld"
msgstr "неуспешно прилагане на кръпка: „%s:%ld“"
-#: apply.c:3351
+#: apply.c:3353
#, c-format
msgid "cannot checkout %s"
msgstr "„%s“ не може да се изтегли"
-#: apply.c:3403 apply.c:3414 apply.c:3460 midx.c:61 setup.c:280
+#: apply.c:3405 apply.c:3416 apply.c:3462 midx.c:61 setup.c:298
#, c-format
msgid "failed to read %s"
msgstr "файлът „%s“ не може да бъде прочетен"
-#: apply.c:3411
+#: apply.c:3413
#, c-format
msgid "reading from '%s' beyond a symbolic link"
msgstr "изчитане на „%s“ след проследяване на символна връзка"
-#: apply.c:3440 apply.c:3683
+#: apply.c:3442 apply.c:3685
#, c-format
msgid "path %s has been renamed/deleted"
msgstr "обектът с път „%s“ е преименуван или изтрит"
-#: apply.c:3526 apply.c:3698
+#: apply.c:3528 apply.c:3700
#, c-format
msgid "%s: does not exist in index"
msgstr "„%s“ не съществува в индекса"
-#: apply.c:3535 apply.c:3706
+#: apply.c:3537 apply.c:3708
#, c-format
msgid "%s: does not match index"
msgstr "„%s“ не съответства на индекса"
-#: apply.c:3570
+#: apply.c:3572
msgid "repository lacks the necessary blob to fall back on 3-way merge."
msgstr ""
"в хранилището липсват необходимите обекти-BLOB, за да се премине към тройно "
"сливане."
-#: apply.c:3573
+#: apply.c:3575
#, c-format
msgid "Falling back to three-way merge...\n"
msgstr "Преминаване към тройно сливане…\n"
-#: apply.c:3589 apply.c:3593
+#: apply.c:3591 apply.c:3595
#, c-format
msgid "cannot read the current contents of '%s'"
msgstr "текущото съдържание на „%s“ не може да бъде прочетено"
-#: apply.c:3605
+#: apply.c:3607
#, c-format
msgid "Failed to fall back on three-way merge...\n"
msgstr "Неуспешно преминаване към тройно сливане…\n"
-#: apply.c:3619
+#: apply.c:3621
#, c-format
msgid "Applied patch to '%s' with conflicts.\n"
msgstr "Конфликти при прилагането на кръпката към „%s“.\n"
-#: apply.c:3624
+#: apply.c:3626
#, c-format
msgid "Applied patch to '%s' cleanly.\n"
msgstr "Кръпката бе приложена чисто към „%s“.\n"
-#: apply.c:3650
+#: apply.c:3652
msgid "removal patch leaves file contents"
msgstr "изтриващата кръпка оставя файла непразен"
-#: apply.c:3723
+#: apply.c:3725
#, c-format
msgid "%s: wrong type"
msgstr "„%s“: неправилен вид"
-#: apply.c:3725
+#: apply.c:3727
#, c-format
msgid "%s has type %o, expected %o"
msgstr "„%s“ е от вид „%o“, а се очакваше „%o“"
-#: apply.c:3876 apply.c:3878 read-cache.c:830 read-cache.c:856
+#: apply.c:3878 apply.c:3880 read-cache.c:830 read-cache.c:856
#: read-cache.c:1325
#, c-format
msgid "invalid path '%s'"
msgstr "неправилен път: „%s“"
-#: apply.c:3934
+#: apply.c:3936
#, c-format
msgid "%s: already exists in index"
msgstr "„%s“: вече съществува в индекса"
-#: apply.c:3937
+#: apply.c:3939
#, c-format
msgid "%s: already exists in working directory"
msgstr "„%s“: вече съществува в работното дърво"
-#: apply.c:3957
+#: apply.c:3959
#, c-format
msgid "new mode (%o) of %s does not match old mode (%o)"
msgstr "новите права за достъп (%o) на „%s“ не съвпадат със старите (%o)"
-#: apply.c:3962
+#: apply.c:3964
#, c-format
msgid "new mode (%o) of %s does not match old mode (%o) of %s"
msgstr ""
"новите права за достъп (%o) на „%s“ не съвпадат със старите (%o) на „%s“"
-#: apply.c:3982
+#: apply.c:3984
#, c-format
msgid "affected file '%s' is beyond a symbolic link"
msgstr "засегнатият файл „%s“ е след символна връзка"
-#: apply.c:3986
+#: apply.c:3988
#, c-format
msgid "%s: patch does not apply"
msgstr "Кръпката „%s“ не може да бъде приложена"
-#: apply.c:4001
+#: apply.c:4003
#, c-format
msgid "Checking patch %s..."
msgstr "Проверяване на кръпката „%s“…"
-#: apply.c:4093
+#: apply.c:4095
#, c-format
msgid "sha1 information is lacking or useless for submodule %s"
msgstr ""
"информацията за сумата по SHA1 за подмодула липсва или не е достатъчна (%s)."
-#: apply.c:4100
+#: apply.c:4102
#, c-format
msgid "mode change for %s, which is not in current HEAD"
msgstr "смяна на режима на достъпа на „%s“, който не е в текущия връх „HEAD“"
-#: apply.c:4103
+#: apply.c:4105
#, c-format
msgid "sha1 information is lacking or useless (%s)."
msgstr "информацията за сумата по SHA1 липсва или не е достатъчна (%s)."
-#: apply.c:4112
+#: apply.c:4114
#, c-format
msgid "could not add %s to temporary index"
msgstr "„%s“ не може да се добави към временния индекс"
-#: apply.c:4122
+#: apply.c:4124
#, c-format
msgid "could not write temporary index to %s"
msgstr "временният индекс не може да се запази в „%s“"
-#: apply.c:4260
+#: apply.c:4262
#, c-format
msgid "unable to remove %s from index"
msgstr "„%s“ не може да се извади от индекса"
-#: apply.c:4294
+#: apply.c:4296
#, c-format
msgid "corrupt patch for submodule %s"
msgstr "повредена кръпка за модула „%s“"
-#: apply.c:4300
+#: apply.c:4302
#, c-format
msgid "unable to stat newly created file '%s'"
msgstr ""
"не може да се получи информация чрез „stat“ за новосъздадения файл „%s“"
-#: apply.c:4308
+#: apply.c:4310
#, c-format
msgid "unable to create backing store for newly created file %s"
msgstr ""
"не може да се за създаде мястото за съхранение на новосъздадения файл „%s“"
-#: apply.c:4314 apply.c:4459
+#: apply.c:4316 apply.c:4461
#, c-format
msgid "unable to add cache entry for %s"
msgstr "не може да се добави запис в кеша за „%s“"
-#: apply.c:4357
+#: apply.c:4359
#, c-format
msgid "failed to write to '%s'"
msgstr "в „%s“ не може да се пише"
-#: apply.c:4361
+#: apply.c:4363
#, c-format
msgid "closing file '%s'"
msgstr "затваряне на файла „%s“"
-#: apply.c:4431
+#: apply.c:4433
#, c-format
msgid "unable to write file '%s' mode %o"
msgstr "файлът „%s“ не може да се запише с режим на достъп „%o“"
-#: apply.c:4529
+#: apply.c:4531
#, c-format
msgid "Applied patch %s cleanly."
msgstr "Кръпката „%s“ бе приложена чисто."
-#: apply.c:4537
+#: apply.c:4539
msgid "internal error"
msgstr "вътрешна грешка"
-#: apply.c:4540
+#: apply.c:4542
#, c-format
msgid "Applying patch %%s with %d reject..."
msgid_plural "Applying patch %%s with %d rejects..."
msgstr[0] "Прилагане на кръпката „%%s“ с %d отхвърлено парче…"
msgstr[1] "Прилагане на кръпката „%%s“ с %d отхвърлени парчета…"
-#: apply.c:4551
+#: apply.c:4553
#, c-format
msgid "truncating .rej filename to %.*s.rej"
msgstr "съкращаване на името на файла с отхвърлените парчета на „ %.*s.rej“"
-#: apply.c:4559 builtin/fetch.c:901 builtin/fetch.c:1192
+#: apply.c:4561 builtin/fetch.c:901 builtin/fetch.c:1201
#, c-format
msgid "cannot open %s"
msgstr "„%s“ не може да бъде отворен"
-#: apply.c:4573
+#: apply.c:4575
#, c-format
msgid "Hunk #%d applied cleanly."
msgstr "%d-то парче бе успешно приложено."
-#: apply.c:4577
+#: apply.c:4579
#, c-format
msgid "Rejected hunk #%d."
msgstr "%d-то парче бе отхвърлено."
-#: apply.c:4696
+#: apply.c:4698
#, c-format
msgid "Skipped patch '%s'."
msgstr "Пропусната кръпка: „%s“"
-#: apply.c:4704
+#: apply.c:4706
msgid "unrecognized input"
msgstr "непознат вход"
-#: apply.c:4724
+#: apply.c:4726
msgid "unable to read index file"
msgstr "индексът не може да бъде записан"
-#: apply.c:4881
+#: apply.c:4883
#, c-format
msgid "can't open patch '%s': %s"
msgstr "кръпката „%s“ не може да бъде отворена: %s"
-#: apply.c:4908
+#: apply.c:4910
#, c-format
msgid "squelched %d whitespace error"
msgid_plural "squelched %d whitespace errors"
msgstr[0] "пренебрегната е %d грешка в знаците за интервали"
msgstr[1] "пренебрегнати са %d грешки в знаците за интервали"
-#: apply.c:4914 apply.c:4929
+#: apply.c:4916 apply.c:4931
#, c-format
msgid "%d line adds whitespace errors."
msgid_plural "%d lines add whitespace errors."
msgstr[0] "%d ред добавя грешки в знаците за интервали."
msgstr[1] "%d реда добавят грешки в знаците за интервали."
-#: apply.c:4922
+#: apply.c:4924
#, c-format
msgid "%d line applied after fixing whitespace errors."
msgid_plural "%d lines applied after fixing whitespace errors."
@@ -1216,135 +1489,135 @@ msgstr[0] ""
msgstr[1] ""
"Добавени са %d реда след корекцията на грешките в знаците за интервали."
-#: apply.c:4938 builtin/add.c:579 builtin/mv.c:301 builtin/rm.c:390
+#: apply.c:4940 builtin/add.c:612 builtin/mv.c:301 builtin/rm.c:406
msgid "Unable to write new index file"
msgstr "Новият индекс не може да бъде записан"
-#: apply.c:4966
+#: apply.c:4968
msgid "don't apply changes matching the given path"
msgstr "без прилагане на промените напасващи на дадения път"
-#: apply.c:4969
+#: apply.c:4971
msgid "apply changes matching the given path"
msgstr "прилагане на промените напасващи на дадения път"
-#: apply.c:4971 builtin/am.c:2206
+#: apply.c:4973 builtin/am.c:2260
msgid "num"
msgstr "БРОЙ"
-#: apply.c:4972
+#: apply.c:4974
msgid "remove <num> leading slashes from traditional diff paths"
msgstr "премахване на този БРОЙ водещи елементи от пътищата в разликата"
-#: apply.c:4975
+#: apply.c:4977
msgid "ignore additions made by the patch"
msgstr "игнориране на редовете добавени от тази кръпка"
-#: apply.c:4977
+#: apply.c:4979
msgid "instead of applying the patch, output diffstat for the input"
msgstr "извеждане на статистика на промените без прилагане на кръпката"
-#: apply.c:4981
+#: apply.c:4983
msgid "show number of added and deleted lines in decimal notation"
msgstr "извеждане на броя на добавените и изтритите редове"
-#: apply.c:4983
+#: apply.c:4985
msgid "instead of applying the patch, output a summary for the input"
msgstr "извеждане на статистика на входните данни без прилагане на кръпката"
-#: apply.c:4985
+#: apply.c:4987
msgid "instead of applying the patch, see if the patch is applicable"
msgstr "проверка дали кръпката може да се приложи, без действително прилагане"
-#: apply.c:4987
+#: apply.c:4989
msgid "make sure the patch is applicable to the current index"
msgstr "проверка дали кръпката може да бъде приложена към текущия индекс"
-#: apply.c:4989
+#: apply.c:4991
msgid "mark new files with `git add --intent-to-add`"
msgstr "отбелязване на новите файлове с „git add --intent-to-add“"
-#: apply.c:4991
+#: apply.c:4993
msgid "apply a patch without touching the working tree"
msgstr "прилагане на кръпката без промяна на работното дърво"
-#: apply.c:4993
+#: apply.c:4995
msgid "accept a patch that touches outside the working area"
msgstr "прилагане на кръпка, която променя и файлове извън работното дърво"
-#: apply.c:4996
+#: apply.c:4998
msgid "also apply the patch (use with --stat/--summary/--check)"
msgstr ""
"кръпката да бъде приложена. Опцията се комбинира с „--check“/„--stat“/„--"
"summary“"
-#: apply.c:4998
+#: apply.c:5000
msgid "attempt three-way merge if a patch does not apply"
msgstr "пробване с тройно сливане, ако кръпката не може да се приложи директно"
-#: apply.c:5000
+#: apply.c:5002
msgid "build a temporary index based on embedded index information"
msgstr ""
"създаване на временен индекс на база на включената информация за индекса"
-#: apply.c:5003 builtin/checkout-index.c:173 builtin/ls-files.c:524
+#: apply.c:5005 builtin/checkout-index.c:173 builtin/ls-files.c:524
msgid "paths are separated with NUL character"
msgstr "разделяне на пътищата с нулевия знак „NUL“"
-#: apply.c:5005
+#: apply.c:5007
msgid "ensure at least <n> lines of context match"
msgstr "да се осигури контекст от поне такъв БРОЙ съвпадащи редове"
-#: apply.c:5006 builtin/am.c:2185 builtin/interpret-trailers.c:98
+#: apply.c:5008 builtin/am.c:2239 builtin/interpret-trailers.c:98
#: builtin/interpret-trailers.c:100 builtin/interpret-trailers.c:102
-#: builtin/pack-objects.c:3310 builtin/rebase.c:1474
+#: builtin/pack-objects.c:3457 builtin/rebase.c:1508
msgid "action"
msgstr "действие"
-#: apply.c:5007
+#: apply.c:5009
msgid "detect new or modified lines that have whitespace errors"
msgstr "засичане на нови или променени редове с грешки в знаците за интервали"
-#: apply.c:5010 apply.c:5013
+#: apply.c:5012 apply.c:5015
msgid "ignore changes in whitespace when finding context"
msgstr ""
"игнориране на промените в знаците за интервали при откриване на контекста"
-#: apply.c:5016
+#: apply.c:5018
msgid "apply the patch in reverse"
msgstr "прилагане на кръпката в обратна посока"
-#: apply.c:5018
+#: apply.c:5020
msgid "don't expect at least one line of context"
msgstr "без изискване на дори и един ред контекст"
-#: apply.c:5020
+#: apply.c:5022
msgid "leave the rejected hunks in corresponding *.rej files"
msgstr "оставяне на отхвърлените парчета във файлове с разширение „.rej“"
-#: apply.c:5022
+#: apply.c:5024
msgid "allow overlapping hunks"
msgstr "позволяване на застъпващи се парчета"
-#: apply.c:5023 builtin/add.c:309 builtin/check-ignore.c:22
-#: builtin/commit.c:1355 builtin/count-objects.c:98 builtin/fsck.c:774
+#: apply.c:5025 builtin/add.c:323 builtin/check-ignore.c:22
+#: builtin/commit.c:1360 builtin/count-objects.c:98 builtin/fsck.c:774
#: builtin/log.c:2166 builtin/mv.c:123 builtin/read-tree.c:128
msgid "be verbose"
msgstr "повече подробности"
-#: apply.c:5025
+#: apply.c:5027
msgid "tolerate incorrectly detected missing new-line at the end of file"
msgstr "пренебрегване на неправилно липсващ знак за нов ред в края на файл"
-#: apply.c:5028
+#: apply.c:5030
msgid "do not trust the line counts in the hunk headers"
msgstr "без доверяване на номерата на редовете в заглавните части на парчетата"
-#: apply.c:5030 builtin/am.c:2194
+#: apply.c:5032 builtin/am.c:2248
msgid "root"
msgstr "НАЧАЛНА_ДИРЕКТОРИЯ"
-#: apply.c:5031
+#: apply.c:5033
msgid "prepend <root> to all filenames"
msgstr "добавяне на тази НАЧАЛНА_ДИРЕКТОРИЯ към имената на всички файлове"
@@ -1367,7 +1640,7 @@ msgstr ""
msgid "git archive --remote <repo> [--exec <cmd>] --list"
msgstr "git archive --remote ХРАНИЛИЩЕ [--exec КОМАНДА] --list"
-#: archive.c:372 builtin/add.c:180 builtin/add.c:555 builtin/rm.c:299
+#: archive.c:372 builtin/add.c:181 builtin/add.c:588 builtin/rm.c:315
#, c-format
msgid "pathspec '%s' did not match any files"
msgstr "пътят „%s“ не съвпада с никой файл"
@@ -1408,8 +1681,8 @@ msgid "prepend prefix to each pathname in the archive"
msgstr "добавяне на този ПРЕФИКС към всеки път в архива"
#: archive.c:460 builtin/blame.c:861 builtin/blame.c:865 builtin/blame.c:866
-#: builtin/commit-tree.c:117 builtin/config.c:129 builtin/fast-export.c:1162
-#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:899
+#: builtin/commit-tree.c:117 builtin/config.c:130 builtin/fast-export.c:1162
+#: builtin/fast-export.c:1164 builtin/fast-export.c:1168 builtin/grep.c:887
#: builtin/hash-object.c:105 builtin/ls-files.c:560 builtin/ls-files.c:563
#: builtin/notes.c:412 builtin/notes.c:578 builtin/read-tree.c:123
#: parse-options.h:190
@@ -1445,7 +1718,7 @@ msgid "list supported archive formats"
msgstr "извеждане на списъка с поддържаните формати"
#: archive.c:479 builtin/archive.c:91 builtin/clone.c:113 builtin/clone.c:116
-#: builtin/submodule--helper.c:1391 builtin/submodule--helper.c:1884
+#: builtin/submodule--helper.c:1406 builtin/submodule--helper.c:1911
msgid "repo"
msgstr "хранилище"
@@ -1484,17 +1757,17 @@ msgstr "Непознат формат на архив: „%s“"
msgid "Argument not supported for format '%s': -%d"
msgstr "Аргументът не се поддържа за форма̀та „%s“: -%d"
-#: archive-tar.c:125 archive-zip.c:350
+#: archive-tar.c:125 archive-zip.c:351
#, c-format
msgid "cannot stream blob %s"
msgstr "обектът-BLOB „%s“ не може да бъде обработен"
-#: archive-tar.c:266 archive-zip.c:368
+#: archive-tar.c:266 archive-zip.c:369
#, c-format
msgid "unsupported file mode: 0%o (SHA1: %s)"
msgstr "неподдържани права за достъп до файл: 0%o (SHA1: %s)"
-#: archive-tar.c:293 archive-zip.c:358
+#: archive-tar.c:293 archive-zip.c:359
#, c-format
msgid "cannot read %s"
msgstr "обектът „%s“ не може да бъде прочетен"
@@ -1523,12 +1796,12 @@ msgstr "пътят не е правилно кодиран в UTF-8: %s"
msgid "path too long (%d chars, SHA1: %s): %s"
msgstr "твърде дълъг път (%d знака, SHA1: %s): %s"
-#: archive-zip.c:479 builtin/pack-objects.c:230 builtin/pack-objects.c:233
+#: archive-zip.c:480 builtin/pack-objects.c:231 builtin/pack-objects.c:234
#, c-format
msgid "deflate error (%d)"
msgstr "грешка при декомпресиране с „deflate“ (%d)"
-#: archive-zip.c:614
+#: archive-zip.c:615
#, c-format
msgid "timestamp too large for this system: %<PRIuMAX>"
msgstr "времевата стойност е твърде голяма за тази система: %<PRIuMAX>"
@@ -1561,12 +1834,12 @@ msgstr "Неправилно цитирано съдържание във фай
msgid "We cannot bisect more!\n"
msgstr "Повече не може да се търси двоично!\n"
-#: bisect.c:733
+#: bisect.c:745
#, c-format
msgid "Not a valid commit name %s"
msgstr "Неправилно име на подаване „%s“"
-#: bisect.c:758
+#: bisect.c:770
#, c-format
msgid ""
"The merge base %s is bad.\n"
@@ -1575,7 +1848,7 @@ msgstr ""
"Неправилна база за сливане: %s.\n"
"Следователно грешката е коригирана между „%s“ и [%s].\n"
-#: bisect.c:763
+#: bisect.c:775
#, c-format
msgid ""
"The merge base %s is new.\n"
@@ -1584,7 +1857,7 @@ msgstr ""
"Нова база за сливане: %s.\n"
"Свойството е променено между „%s“ и [%s].\n"
-#: bisect.c:768
+#: bisect.c:780
#, c-format
msgid ""
"The merge base %s is %s.\n"
@@ -1593,7 +1866,7 @@ msgstr ""
"Базата за сливане „%s“ е %s.\n"
"Следователно първото %s подаване е между „%s“ и [%s].\n"
-#: bisect.c:776
+#: bisect.c:788
#, c-format
msgid ""
"Some %s revs are not ancestors of the %s rev.\n"
@@ -1604,7 +1877,7 @@ msgstr ""
"Двоичното търсене с git bisect няма да работи правилно.\n"
"Дали не сте объркали указателите „%s“ и „%s“?\n"
-#: bisect.c:789
+#: bisect.c:801
#, c-format
msgid ""
"the merge base between %s and [%s] must be skipped.\n"
@@ -1615,36 +1888,36 @@ msgstr ""
"Не може да сме сигурни, че първото %s подаване е между „%s“ и „%s“.\n"
"Двоичното търсене продължава."
-#: bisect.c:822
+#: bisect.c:840
#, c-format
msgid "Bisecting: a merge base must be tested\n"
msgstr "Двоично търсене: трябва да се провери база за сливане\n"
-#: bisect.c:865
+#: bisect.c:890
#, c-format
msgid "a %s revision is needed"
msgstr "необходима е версия „%s“"
-#: bisect.c:884 builtin/notes.c:177 builtin/tag.c:254
+#: bisect.c:920 builtin/notes.c:177 builtin/tag.c:254
#, c-format
msgid "could not create file '%s'"
msgstr "файлът „%s“ не може да бъде създаден"
-#: bisect.c:928 builtin/merge.c:148
+#: bisect.c:966 builtin/merge.c:149
#, c-format
msgid "could not read file '%s'"
msgstr "файлът „%s“ не може да бъде прочетен"
-#: bisect.c:958
+#: bisect.c:997
msgid "reading bisect refs failed"
msgstr "неуспешно прочитане на указателите за двоично търсене"
-#: bisect.c:977
+#: bisect.c:1019
#, c-format
msgid "%s was both %s and %s\n"
msgstr "„%s“ e както „%s“, така и „%s“\n"
-#: bisect.c:985
+#: bisect.c:1028
#, c-format
msgid ""
"No testable commit found.\n"
@@ -1653,7 +1926,7 @@ msgstr ""
"Липсва подходящо за тестване подаване.\n"
"Проверете параметрите за пътищата.\n"
-#: bisect.c:1004
+#: bisect.c:1057
#, c-format
msgid "(roughly %d step)"
msgid_plural "(roughly %d steps)"
@@ -1663,7 +1936,7 @@ msgstr[1] "(приблизително %d стъпки)"
#. TRANSLATORS: the last %s will be replaced with "(roughly %d
#. steps)" translation.
#.
-#: bisect.c:1010
+#: bisect.c:1063
#, c-format
msgid "Bisecting: %d revision left to test after this %s\n"
msgid_plural "Bisecting: %d revisions left to test after this %s\n"
@@ -1684,10 +1957,10 @@ msgstr ""
"Едновременното задаване на опциите „--reverse“ и „--first-parent“ изисква "
"указването на крайно подаване"
-#: blame.c:2744 bundle.c:167 ref-filter.c:2203 remote.c:1941 sequencer.c:2093
-#: sequencer.c:4460 builtin/commit.c:1040 builtin/log.c:388 builtin/log.c:991
-#: builtin/log.c:1520 builtin/log.c:1925 builtin/log.c:2215 builtin/merge.c:411
-#: builtin/pack-objects.c:3128 builtin/pack-objects.c:3143
+#: blame.c:2744 bundle.c:167 ref-filter.c:2203 remote.c:1942 sequencer.c:2006
+#: sequencer.c:4358 submodule.c:847 builtin/commit.c:1045 builtin/log.c:388
+#: builtin/log.c:991 builtin/log.c:1520 builtin/log.c:1925 builtin/log.c:2215
+#: builtin/merge.c:412 builtin/pack-objects.c:3275 builtin/pack-objects.c:3290
#: builtin/shortlog.c:192
msgid "revision walk setup failed"
msgstr "неуспешно настройване на обхождането на версиите"
@@ -1857,8 +2130,8 @@ msgstr "Файлът „%s“ не изглежда да е пратка на gi
msgid "unrecognized header: %s%s (%d)"
msgstr "непозната заглавна част: %s%s (%d)"
-#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2344 sequencer.c:3108
-#: builtin/commit.c:811
+#: bundle.c:90 rerere.c:480 rerere.c:690 sequencer.c:2258 sequencer.c:3016
+#: builtin/commit.c:815
#, c-format
msgid "could not open '%s'"
msgstr "„%s“ не може да се отвори"
@@ -1929,13 +2202,13 @@ msgstr "Файлът „%s“ не може да бъде създаден"
msgid "index-pack died"
msgstr "Командата „git index-pack“ не завърши успешно"
-#: color.c:296
+#: color.c:329
#, c-format
msgid "invalid color value: %.*s"
msgstr "неправилна стойност за цвят: %.*s"
-#: commit.c:51 sequencer.c:2811 builtin/am.c:354 builtin/am.c:398
-#: builtin/am.c:1366 builtin/am.c:2009 builtin/replace.c:456
+#: commit.c:51 sequencer.c:2719 builtin/am.c:359 builtin/am.c:403
+#: builtin/am.c:1371 builtin/am.c:2014 builtin/replace.c:457
#, c-format
msgid "could not parse %s"
msgstr "„%s“ не може да се анализира"
@@ -1964,33 +2237,33 @@ msgstr ""
"\n"
" git replace --convert-graft-file\n"
"\n"
-"За да изключите това съобщение, ползвайте командата:\n"
+"За да изключите това съобщение, изпълнете:\n"
"\n"
" git config advice.graftFileDeprecated false"
-#: commit.c:1152
+#: commit.c:1153
#, c-format
msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
msgstr ""
"Подаването „%s“ е с недоверен подпис от GPG, който твърди, че е на „%s“."
-#: commit.c:1155
+#: commit.c:1157
#, c-format
msgid "Commit %s has a bad GPG signature allegedly by %s."
msgstr ""
"Подаването „%s“ е с неправилен подпис от GPG, който твърди, че е на „%s“."
-#: commit.c:1158
+#: commit.c:1160
#, c-format
msgid "Commit %s does not have a GPG signature."
msgstr "Подаването „%s“ е без подпис от GPG."
-#: commit.c:1161
+#: commit.c:1163
#, c-format
msgid "Commit %s has a good GPG signature by %s\n"
msgstr "Подаването „%s“ е с коректен подпис от GPG на „%s“.\n"
-#: commit.c:1415
+#: commit.c:1417
msgid ""
"Warning: commit message did not conform to UTF-8.\n"
"You may want to amend it after fixing the message, or set the config\n"
@@ -2000,247 +2273,247 @@ msgstr ""
"Може да поправите подаването заедно със съобщението или може да\n"
"зададете ползваното кодиране в настройката „i18n.commitencoding“.\n"
-#: commit-graph.c:130
+#: commit-graph.c:122
msgid "commit-graph file is too small"
msgstr "файлът с гра̀фа на подаванията е твърде малък"
-#: commit-graph.c:195
+#: commit-graph.c:189
#, c-format
msgid "commit-graph signature %X does not match signature %X"
msgstr "отпечатъкът на гра̀фа с подаванията %X не съвпада с %X"
-#: commit-graph.c:202
+#: commit-graph.c:196
#, c-format
msgid "commit-graph version %X does not match version %X"
msgstr "версията на гра̀фа с подаванията %X не съвпада с %X"
-#: commit-graph.c:209
+#: commit-graph.c:203
#, c-format
msgid "commit-graph hash version %X does not match version %X"
msgstr "версията на контролната сума на гра̀фа с подаванията %X не съвпада с %X"
-#: commit-graph.c:232
+#: commit-graph.c:226
msgid "commit-graph chunk lookup table entry missing; file may be incomplete"
msgstr ""
"записът в таблицата за откъси липсва, файлът за гра̀фа може да е непълен"
-#: commit-graph.c:243
+#: commit-graph.c:237
#, c-format
msgid "commit-graph improper chunk offset %08x%08x"
msgstr "неправилно отместване на откъс: %08x%08x"
-#: commit-graph.c:286
+#: commit-graph.c:280
#, c-format
msgid "commit-graph chunk id %08x appears multiple times"
msgstr "откъсът %08x се явява многократно"
-#: commit-graph.c:350
+#: commit-graph.c:343
msgid "commit-graph has no base graphs chunk"
msgstr "базовият откъс липсва в гра̀фа с подаванията"
-#: commit-graph.c:360
+#: commit-graph.c:353
msgid "commit-graph chain does not match"
msgstr "веригата на гра̀фа с подаванията не съвпада"
-#: commit-graph.c:407
+#: commit-graph.c:401
#, c-format
msgid "invalid commit-graph chain: line '%s' not a hash"
msgstr ""
"грешка във веригата на гра̀фа с подаванията: ред „%s“ не е контролна сума"
-#: commit-graph.c:433
+#: commit-graph.c:425
msgid "unable to find all commit-graph files"
msgstr "някои файлове на гра̀фа с подаванията не могат да бъдат открити"
-#: commit-graph.c:564 commit-graph.c:624
+#: commit-graph.c:558 commit-graph.c:618
msgid "invalid commit position. commit-graph is likely corrupt"
msgstr ""
"неправилна позиция на подаването. Вероятно графът с подаванията е повреден"
-#: commit-graph.c:585
+#: commit-graph.c:579
#, c-format
msgid "could not find commit %s"
msgstr "подаването „%s“ не може да бъде открито"
-#: commit-graph.c:858 builtin/am.c:1287
+#: commit-graph.c:852 builtin/am.c:1292
#, c-format
msgid "unable to parse commit %s"
msgstr "подаването не може да бъде анализирано: %s"
-#: commit-graph.c:1017 builtin/pack-objects.c:2641
+#: commit-graph.c:1011 builtin/pack-objects.c:2782
#, c-format
msgid "unable to get type of object %s"
msgstr "видът на обекта „%s“ не може да бъде определен"
-#: commit-graph.c:1049
+#: commit-graph.c:1043
msgid "Loading known commits in commit graph"
msgstr "Зареждане на познатите подавания в гра̀фа с подаванията"
-#: commit-graph.c:1066
+#: commit-graph.c:1060
msgid "Expanding reachable commits in commit graph"
msgstr "Разширяване на достижимите подавания в гра̀фа"
-#: commit-graph.c:1085
+#: commit-graph.c:1079
msgid "Clearing commit marks in commit graph"
msgstr "Изчистване на отбелязванията на подаванията в гра̀фа с подаванията"
-#: commit-graph.c:1104
+#: commit-graph.c:1098
msgid "Computing commit graph generation numbers"
msgstr "Изчисляване на номерата на поколенията в гра̀фа с подаванията"
-#: commit-graph.c:1179
+#: commit-graph.c:1173
#, c-format
msgid "Finding commits for commit graph in %d pack"
msgid_plural "Finding commits for commit graph in %d packs"
msgstr[0] "Откриване на подаванията в гра̀фа в %d пакетен файл"
msgstr[1] "Откриване на подаванията в гра̀фа в %d пакетни файла"
-#: commit-graph.c:1192
+#: commit-graph.c:1186
#, c-format
msgid "error adding pack %s"
msgstr "грешка при добавяне на пакетен файл „%s“"
-#: commit-graph.c:1196
+#: commit-graph.c:1190
#, c-format
msgid "error opening index for %s"
msgstr "грешка при отваряне на индекса на „%s“"
-#: commit-graph.c:1220
+#: commit-graph.c:1214
#, c-format
msgid "Finding commits for commit graph from %d ref"
msgid_plural "Finding commits for commit graph from %d refs"
msgstr[0] "Откриване на подаванията в гра̀фа измежду %d указател"
msgstr[1] "Откриване на подаванията в гра̀фа измежду %d указатели"
-#: commit-graph.c:1240
+#: commit-graph.c:1234
#, c-format
msgid "invalid commit object id: %s"
msgstr "неправилен идентификатор на обект-подаване: „%s“"
-#: commit-graph.c:1255
+#: commit-graph.c:1249
msgid "Finding commits for commit graph among packed objects"
msgstr "Откриване на подаванията в гра̀фа измежду пакетираните обекти"
-#: commit-graph.c:1270
+#: commit-graph.c:1264
msgid "Counting distinct commits in commit graph"
msgstr "Преброяване на различните подавания в гра̀фа"
-#: commit-graph.c:1300
+#: commit-graph.c:1294
msgid "Finding extra edges in commit graph"
msgstr "Откриване на още върхове в гра̀фа с подаванията"
-#: commit-graph.c:1346
+#: commit-graph.c:1340
msgid "failed to write correct number of base graph ids"
msgstr "правилният брой на базовите идентификатори не може да се запише"
-#: commit-graph.c:1379 midx.c:814
+#: commit-graph.c:1373 midx.c:814
#, c-format
msgid "unable to create leading directories of %s"
msgstr "родителските директории на „%s“ не могат да бъдат създадени"
-#: commit-graph.c:1391 builtin/index-pack.c:306 builtin/repack.c:248
+#: commit-graph.c:1385 builtin/index-pack.c:306 builtin/repack.c:248
#, c-format
msgid "unable to create '%s'"
msgstr "пакетният файл „%s“ не може да бъде създаден"
-#: commit-graph.c:1451
+#: commit-graph.c:1445
#, c-format
msgid "Writing out commit graph in %d pass"
msgid_plural "Writing out commit graph in %d passes"
msgstr[0] "Запазване на гра̀фа с подаванията в %d пас"
msgstr[1] "Запазване на гра̀фа с подаванията в %d паса"
-#: commit-graph.c:1492
+#: commit-graph.c:1486
msgid "unable to open commit-graph chain file"
msgstr "файлът с веригата на гра̀фа с подаванията не може да се отвори"
-#: commit-graph.c:1504
+#: commit-graph.c:1498
msgid "failed to rename base commit-graph file"
msgstr "основният файл на гра̀фа с подаванията не може да бъде преименуван"
-#: commit-graph.c:1524
+#: commit-graph.c:1518
msgid "failed to rename temporary commit-graph file"
msgstr "временният файл на гра̀фа с подаванията не може да бъде преименуван"
-#: commit-graph.c:1637
+#: commit-graph.c:1631
msgid "Scanning merged commits"
msgstr "Търсене на подаванията със сливания"
-#: commit-graph.c:1648
+#: commit-graph.c:1642
#, c-format
msgid "unexpected duplicate commit id %s"
msgstr "неочакван, повтарящ се идентификатор на подаване: %s"
-#: commit-graph.c:1672
+#: commit-graph.c:1665
msgid "Merging commit-graph"
msgstr "Сливане на гра̀фа с подаванията"
-#: commit-graph.c:1862
+#: commit-graph.c:1844
#, c-format
msgid "the commit graph format cannot write %d commits"
msgstr "форматът на гра̀фа с подаванията не може да запише %d подавания"
-#: commit-graph.c:1873
+#: commit-graph.c:1855
msgid "too many commits to write graph"
msgstr "прекалено много подавания за записване на гра̀фа"
-#: commit-graph.c:1963
+#: commit-graph.c:1944
msgid "the commit-graph file has incorrect checksum and is likely corrupt"
msgstr "графът с подаванията е с грешна сума за проверка — вероятно е повреден"
-#: commit-graph.c:1973
+#: commit-graph.c:1954
#, c-format
msgid "commit-graph has incorrect OID order: %s then %s"
msgstr ""
"неправилна подредба на обектите по идентификатор в гра̀фа с подаванията: „%s“ "
"е преди „%s“, а не трябва"
-#: commit-graph.c:1983 commit-graph.c:1998
+#: commit-graph.c:1964 commit-graph.c:1979
#, c-format
msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
msgstr ""
"неправилна стойност за откъс в гра̀фа с подаванията: fanout[%d] = %u, а "
"трябва да е %u"
-#: commit-graph.c:1990
+#: commit-graph.c:1971
#, c-format
msgid "failed to parse commit %s from commit-graph"
msgstr "подаване „%s“ в гра̀фа с подаванията не може да се анализира"
-#: commit-graph.c:2008
+#: commit-graph.c:1989
msgid "Verifying commits in commit graph"
msgstr "Проверка на подаванията в гра̀фа"
-#: commit-graph.c:2022
+#: commit-graph.c:2003
#, c-format
msgid "failed to parse commit %s from object database for commit-graph"
msgstr ""
"подаване „%s“ в базата от данни към гра̀фа с подаванията не може да се "
"анализира"
-#: commit-graph.c:2029
+#: commit-graph.c:2010
#, c-format
msgid "root tree OID for commit %s in commit-graph is %s != %s"
msgstr ""
"идентификаторът на обект за кореновото дърво за подаване „%s“ в гра̀фа с "
"подаванията е „%s“, а трябва да е „%s“"
-#: commit-graph.c:2039
+#: commit-graph.c:2020
#, c-format
msgid "commit-graph parent list for commit %s is too long"
msgstr "списъкът с родители на „%s“ в гра̀фа с подаванията е прекалено дълъг"
-#: commit-graph.c:2048
+#: commit-graph.c:2029
#, c-format
msgid "commit-graph parent for %s is %s != %s"
msgstr "родителят на „%s“ в гра̀фа с подаванията е „%s“, а трябва да е „%s“"
-#: commit-graph.c:2061
+#: commit-graph.c:2042
#, c-format
msgid "commit-graph parent list for commit %s terminates early"
msgstr "списъкът с родители на „%s“ в гра̀фа с подаванията е прекалено къс"
-#: commit-graph.c:2066
+#: commit-graph.c:2047
#, c-format
msgid ""
"commit-graph has generation number zero for commit %s, but non-zero elsewhere"
@@ -2248,7 +2521,7 @@ msgstr ""
"номерът на поколението на подаване „%s“ в гра̀фа с подаванията е 0, а другаде "
"не е"
-#: commit-graph.c:2070
+#: commit-graph.c:2051
#, c-format
msgid ""
"commit-graph has non-zero generation number for commit %s, but zero elsewhere"
@@ -2256,14 +2529,14 @@ msgstr ""
"номерът на поколението на подаване „%s“ в гра̀фа с подаванията не е 0, а "
"другаде е"
-#: commit-graph.c:2085
+#: commit-graph.c:2066
#, c-format
msgid "commit-graph generation for commit %s is %u != %u"
msgstr ""
"номерът на поколението на подаване „%s“ в гра̀фа с подаванията е %u, а "
"другаде е %u"
-#: commit-graph.c:2091
+#: commit-graph.c:2072
#, c-format
msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
msgstr ""
@@ -2312,7 +2585,7 @@ msgstr "ключът не съдържа раздел: „%s“"
msgid "key does not contain variable name: %s"
msgstr "ключът не съдържа име на променлива: „%s“"
-#: config.c:406 sequencer.c:2530
+#: config.c:406 sequencer.c:2444
#, c-format
msgid "invalid key: %s"
msgstr "неправилен ключ: „%s“"
@@ -2452,7 +2725,7 @@ msgstr ""
"„simple“ (клонът със същото име, от който се издърпва), „upstream“ (клонът, "
"от който се издърпва) или „current“ (клонът със същото име)"
-#: config.c:1518 builtin/pack-objects.c:3394
+#: config.c:1518 builtin/pack-objects.c:3541
#, c-format
msgid "bad pack compression level %d"
msgstr "неправилно ниво на компресиране при пакетиране: %d"
@@ -2477,107 +2750,107 @@ msgstr "обектът-BLOB „%s“ с конфигурации не може
msgid "failed to parse %s"
msgstr "„%s“ не може да бъде анализиран"
-#: config.c:1745
+#: config.c:1743
msgid "unable to parse command-line config"
msgstr "неправилни настройки от командния ред"
-#: config.c:2096
+#: config.c:2097
msgid "unknown error occurred while reading the configuration files"
msgstr "неочаквана грешка при изчитането на конфигурационните файлове"
-#: config.c:2266
+#: config.c:2267
#, c-format
msgid "Invalid %s: '%s'"
msgstr "Неправилен %s: „%s“"
-#: config.c:2311
+#: config.c:2312
#, c-format
msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
msgstr ""
"стойността на „splitIndex.maxPercentChange“ трябва да е между 1 и 100, а не "
"%d"
-#: config.c:2357
+#: config.c:2358
#, c-format
msgid "unable to parse '%s' from command-line config"
msgstr "неразпозната стойност „%s“ от командния ред"
-#: config.c:2359
+#: config.c:2360
#, c-format
msgid "bad config variable '%s' in file '%s' at line %d"
msgstr "неправилна настройка „%s“ във файла „%s“ на ред №%d"
-#: config.c:2440
+#: config.c:2441
#, c-format
msgid "invalid section name '%s'"
msgstr "неправилно име на раздел: „%s“"
-#: config.c:2472
+#: config.c:2473
#, c-format
msgid "%s has multiple values"
msgstr "зададени са няколко стойности за „%s“"
-#: config.c:2501
+#: config.c:2502
#, c-format
msgid "failed to write new configuration file %s"
msgstr "новият конфигурационен файл „%s“ не може да бъде запазен"
-#: config.c:2753 config.c:3077
+#: config.c:2754 config.c:3078
#, c-format
msgid "could not lock config file %s"
msgstr "конфигурационният файл „%s“ не може да бъде заключен"
-#: config.c:2764
+#: config.c:2765
#, c-format
msgid "opening %s"
msgstr "отваряне на „%s“"
-#: config.c:2799 builtin/config.c:328
+#: config.c:2800 builtin/config.c:344
#, c-format
msgid "invalid pattern: %s"
msgstr "неправилен шаблон: %s"
-#: config.c:2824
+#: config.c:2825
#, c-format
msgid "invalid config file %s"
msgstr "неправилен конфигурационен файл: „%s“"
-#: config.c:2837 config.c:3090
+#: config.c:2838 config.c:3091
#, c-format
msgid "fstat on %s failed"
msgstr "неуспешно изпълнение на „fstat“ върху „%s“"
-#: config.c:2848
+#: config.c:2849
#, c-format
msgid "unable to mmap '%s'"
msgstr "неуспешно изпълнение на „mmap“ върху „%s“"
-#: config.c:2857 config.c:3095
+#: config.c:2858 config.c:3096
#, c-format
msgid "chmod on %s failed"
msgstr "неуспешна смяна на права с „chmod“ върху „%s“"
-#: config.c:2942 config.c:3192
+#: config.c:2943 config.c:3193
#, c-format
msgid "could not write config file %s"
msgstr "конфигурационният файл „%s“ не може да бъде записан"
-#: config.c:2976
+#: config.c:2977
#, c-format
msgid "could not set '%s' to '%s'"
msgstr "„%s“ не може да се зададе да е „%s“"
-#: config.c:2978 builtin/remote.c:781
+#: config.c:2979 builtin/remote.c:655 builtin/remote.c:849 builtin/remote.c:857
#, c-format
msgid "could not unset '%s'"
msgstr "„%s“ не може да се премахне"
-#: config.c:3068
+#: config.c:3069
#, c-format
msgid "invalid section name: %s"
msgstr "неправилно име на раздел: %s"
-#: config.c:3235
+#: config.c:3236
#, c-format
msgid "missing value for '%s'"
msgstr "липсва стойност за „%s“"
@@ -2746,19 +3019,19 @@ msgstr "необичайният път „%s“ е блокиран"
msgid "unable to fork"
msgstr "неуспешно създаване на процес"
-#: connected.c:89 builtin/fsck.c:208 builtin/prune.c:43
+#: connected.c:98 builtin/fsck.c:208 builtin/prune.c:43
msgid "Checking connectivity"
msgstr "Проверка на свързаността"
-#: connected.c:101
+#: connected.c:110
msgid "Could not run 'git rev-list'"
msgstr "Командата „git rev-list“ не може да бъде изпълнена."
-#: connected.c:121
+#: connected.c:130
msgid "failed write to rev-list"
msgstr "неуспешен запис на списъка с версиите"
-#: connected.c:128
+#: connected.c:137
msgid "failed to close rev-list's stdin"
msgstr "стандартният вход на списъка с версиите не може да бъде затворен"
@@ -3095,7 +3368,7 @@ msgid "invalid --stat value: %s"
msgstr "неправилна стойност за „--stat“: %s"
#: diff.c:4681 diff.c:4686 diff.c:4691 diff.c:4696 diff.c:5209
-#: parse-options.c:199 parse-options.c:203
+#: parse-options.c:197 parse-options.c:201
#, c-format
msgid "%s expects a numerical value"
msgstr "опцията „%s“ очаква число за аргумент"
@@ -3631,62 +3904,62 @@ msgid ""
"you may want to set your %s variable to at least %d and retry the command."
msgstr "задайте променливата „%s“ да е поне %d и отново изпълнете командата."
-#: dir.c:554
+#: dir.c:555
#, c-format
msgid "pathspec '%s' did not match any file(s) known to git"
msgstr "пътят „%s“ не съвпада с никой файл в git"
-#: dir.c:664
+#: dir.c:695 dir.c:724 dir.c:737
#, c-format
msgid "unrecognized pattern: '%s'"
msgstr "непознат шаблон: „%s“"
-#: dir.c:682 dir.c:696
+#: dir.c:754 dir.c:768
#, c-format
msgid "unrecognized negative pattern: '%s'"
msgstr "непознат отрицателен шаблон: „%s“"
-#: dir.c:714
+#: dir.c:786
#, c-format
msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
msgstr ""
"файлът определящ частичността на изтегленото хранилище може да има проблем: "
"шаблонът „%s“ се повтаря"
-#: dir.c:724
+#: dir.c:796
msgid "disabling cone pattern matching"
msgstr "изключване на пътеводното напасване"
-#: dir.c:1101
+#: dir.c:1173
#, c-format
msgid "cannot use %s as an exclude file"
msgstr "„%s“ не може да се ползва за игнорираните файлове (като gitignore)"
-#: dir.c:2078
+#: dir.c:2144
#, c-format
msgid "could not open directory '%s'"
msgstr "директорията „%s“ не може да бъде отворена"
-#: dir.c:2415
+#: dir.c:2479
msgid "failed to get kernel name and information"
msgstr "името и версията на ядрото не бяха получени"
-#: dir.c:2539
+#: dir.c:2603
msgid "untracked cache is disabled on this system or location"
msgstr ""
"кешът за неследените файлове е изключен на тази система или местоположение"
-#: dir.c:3343
+#: dir.c:3407
#, c-format
msgid "index file corrupt in repo %s"
msgstr "файлът с индекса е повреден в хранилището „%s“"
-#: dir.c:3388 dir.c:3393
+#: dir.c:3452 dir.c:3457
#, c-format
msgid "could not create directories for %s"
msgstr "директориите за „%s“ не може да бъдат създадени"
-#: dir.c:3422
+#: dir.c:3486
#, c-format
msgid "could not migrate git directory from '%s' to '%s'"
msgstr "директорията на git не може да се мигрира от „%s“ до „%s“"
@@ -3935,7 +4208,7 @@ msgstr "грешка при обработката на исканите ука
msgid "no matching remote head"
msgstr "не може да бъде открит подходящ връх от отдалеченото хранилище"
-#: fetch-pack.c:1785 builtin/clone.c:688
+#: fetch-pack.c:1785 builtin/clone.c:689
msgid "remote did not send all necessary objects"
msgstr "отдалеченото хранилище не изпрати всички необходими обекти."
@@ -3949,19 +4222,19 @@ msgstr "такъв отдалечен указател няма: %s"
msgid "Server does not allow request for unadvertised object %s"
msgstr "Сървърът не позволява заявка за необявен обект „%s“"
-#: gpg-interface.c:223
+#: gpg-interface.c:408
+msgid "gpg failed to sign the data"
+msgstr "Програмата „gpg“ не подписа данните."
+
+#: gpg-interface.c:434
msgid "could not create temporary file"
msgstr "не може да се създаде временен файл"
-#: gpg-interface.c:226
+#: gpg-interface.c:437
#, c-format
msgid "failed writing detached signature to '%s'"
msgstr "Програмата не успя да запише самостоятелния подпис в „%s“"
-#: gpg-interface.c:390
-msgid "gpg failed to sign the data"
-msgstr "Програмата „gpg“ не подписа данните."
-
#: graph.c:98
#, c-format
msgid "ignore invalid color '%.*s' in log.graphColors"
@@ -3975,18 +4248,18 @@ msgstr ""
"зададеният шаблон съдържа нулев знак (идва от -f „ФАЙЛ“). Това се поддържа "
"в комбинация с „-P“ само при ползването на „PCRE v2“"
-#: grep.c:2124
+#: grep.c:2128
#, c-format
msgid "'%s': unable to read %s"
msgstr "„%s“: файлът сочен от „%s“ не може да бъде прочетен"
-#: grep.c:2141 setup.c:165 builtin/clone.c:411 builtin/diff.c:82
+#: grep.c:2145 setup.c:166 builtin/clone.c:411 builtin/diff.c:82
#: builtin/rm.c:135
#, c-format
msgid "failed to stat '%s'"
msgstr "не може да бъде получена информация чрез „stat“ за „%s“"
-#: grep.c:2152
+#: grep.c:2156
#, c-format
msgid "'%s': short read"
msgstr "„%s“: изчитането върна по-малко байтове от очакваното"
@@ -4209,7 +4482,7 @@ msgstr "не може да се ползва празно име като иде
msgid "name consists only of disallowed characters: %s"
msgstr "името съдържа само непозволени знаци: „%s“"
-#: ident.c:436 builtin/commit.c:631
+#: ident.c:436 builtin/commit.c:635
#, c-format
msgid "invalid date format: %s"
msgstr "неправилен формат на дата: %s"
@@ -4238,7 +4511,7 @@ msgstr "няма достъп до частично изтегления обе
#, c-format
msgid "unable to parse sparse filter data in %s"
msgstr ""
-"данните от филтъра за частични изтеглания в „%s“ не може да бъдат анализирани"
+"данните от филтъра за частични изтегляния в „%s“ не може да бъдат анализирани"
#: list-objects-filter-options.c:58
msgid "expected 'tree:<depth>'"
@@ -4294,9 +4567,9 @@ msgstr "Файлът-ключалка „%s.lock“ не може да бъде
msgid "failed to read the cache"
msgstr "кешът не може да бъде прочетен"
-#: merge.c:107 rerere.c:720 builtin/am.c:1874 builtin/am.c:1908
-#: builtin/checkout.c:539 builtin/checkout.c:798 builtin/clone.c:809
-#: builtin/stash.c:264
+#: merge.c:107 rerere.c:720 builtin/am.c:1879 builtin/am.c:1913
+#: builtin/checkout.c:541 builtin/checkout.c:800 builtin/clone.c:810
+#: builtin/stash.c:265
msgid "unable to write new index file"
msgstr "неуспешно записване на новия индекс"
@@ -4364,52 +4637,52 @@ msgid "do not know what to do with %06o %s '%s'"
msgstr ""
"не е ясно какво да се прави с обекта „%2$s“ (%3$s) с права за достъп „%1$06o“"
-#: merge-recursive.c:1188
+#: merge-recursive.c:1191
#, c-format
msgid "Failed to merge submodule %s (not checked out)"
msgstr "Неуспешно сливане на подмодула „%s“ (не е изтеглен)"
-#: merge-recursive.c:1195
+#: merge-recursive.c:1198
#, c-format
msgid "Failed to merge submodule %s (commits not present)"
msgstr "Неуспешно сливане на подмодула „%s“ (няма подавания)"
-#: merge-recursive.c:1202
+#: merge-recursive.c:1205
#, c-format
msgid "Failed to merge submodule %s (commits don't follow merge-base)"
msgstr ""
"Подмодулът „%s“ не може да бъде слят (базата за сливане не предшества "
"подаванията)"
-#: merge-recursive.c:1210 merge-recursive.c:1222
+#: merge-recursive.c:1213 merge-recursive.c:1225
#, c-format
msgid "Fast-forwarding submodule %s to the following commit:"
msgstr "Превъртане на подмодула „%s“ до следното подаване:"
-#: merge-recursive.c:1213 merge-recursive.c:1225
+#: merge-recursive.c:1216 merge-recursive.c:1228
#, c-format
msgid "Fast-forwarding submodule %s"
msgstr "Превъртане на подмодула „%s“"
-#: merge-recursive.c:1248
+#: merge-recursive.c:1251
#, c-format
msgid "Failed to merge submodule %s (merge following commits not found)"
msgstr ""
"Неуспешно сливане на подмодула „%s“ (липсва сливането, което се предшества "
"от подаванията)"
-#: merge-recursive.c:1252
+#: merge-recursive.c:1255
#, c-format
msgid "Failed to merge submodule %s (not fast-forward)"
msgstr "Неуспешно сливане на подмодула „%s“ (не е превъртане)"
-#: merge-recursive.c:1253
+#: merge-recursive.c:1256
msgid "Found a possible merge resolution for the submodule:\n"
msgstr ""
"Открито е сливане, което може да решава проблема със сливането на "
"подмодула:\n"
-#: merge-recursive.c:1256
+#: merge-recursive.c:1259
#, c-format
msgid ""
"If this is correct simply add it to the index for example\n"
@@ -4425,31 +4698,31 @@ msgstr ""
"\n"
"Това приема предложеното.\n"
-#: merge-recursive.c:1265
+#: merge-recursive.c:1268
#, c-format
msgid "Failed to merge submodule %s (multiple merges found)"
msgstr "Неуспешно сливане на подмодула „%s“ (открити са множество сливания)"
-#: merge-recursive.c:1338
+#: merge-recursive.c:1341
msgid "Failed to execute internal merge"
msgstr "Неуспешно вътрешно сливане"
-#: merge-recursive.c:1343
+#: merge-recursive.c:1346
#, c-format
msgid "Unable to add %s to database"
msgstr "„%s“ не може да се добави в базата с данни"
-#: merge-recursive.c:1375
+#: merge-recursive.c:1378
#, c-format
msgid "Auto-merging %s"
msgstr "Автоматично сливане на „%s“"
-#: merge-recursive.c:1399
+#: merge-recursive.c:1402
#, c-format
msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
msgstr "Грешка: за да не се изтрие неследеният файл „%s“, се записва в „%s“."
-#: merge-recursive.c:1471
+#: merge-recursive.c:1474
#, c-format
msgid ""
"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -4458,7 +4731,7 @@ msgstr ""
"КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ в %s. Версия %s на „%s“ "
"е оставена в дървото."
-#: merge-recursive.c:1476
+#: merge-recursive.c:1479
#, c-format
msgid ""
"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -4467,7 +4740,7 @@ msgstr ""
"КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ е преименуван на „%s“ в "
"%s. Версия %s на „%s“ е оставена в дървото."
-#: merge-recursive.c:1483
+#: merge-recursive.c:1486
#, c-format
msgid ""
"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -4476,7 +4749,7 @@ msgstr ""
"КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ в %s. Версия %s на „%s“ "
"е оставена в дървото: %s."
-#: merge-recursive.c:1488
+#: merge-recursive.c:1491
#, c-format
msgid ""
"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
@@ -4485,45 +4758,45 @@ msgstr ""
"КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ е преименуван на „%s“ в "
"%s. Версия %s на „%s“ е оставена в дървото: %s."
-#: merge-recursive.c:1523
+#: merge-recursive.c:1526
msgid "rename"
msgstr "преименуване"
-#: merge-recursive.c:1523
+#: merge-recursive.c:1526
msgid "renamed"
msgstr "преименуван"
-#: merge-recursive.c:1603 merge-recursive.c:2519 merge-recursive.c:3164
+#: merge-recursive.c:1577 merge-recursive.c:2472 merge-recursive.c:3117
#, c-format
msgid "Refusing to lose dirty file at %s"
msgstr "Преустановяване на действието, за да не се изгуби промененият „%s“"
-#: merge-recursive.c:1613
+#: merge-recursive.c:1587
#, c-format
msgid "Refusing to lose untracked file at %s, even though it's in the way."
msgstr ""
"Отказ да се загуби неследеният файл „%s“, защото е на място, където пречи."
-#: merge-recursive.c:1671
+#: merge-recursive.c:1645
#, c-format
msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
msgstr ""
"КОНФЛИКТ (преименуване/добавяне): „%s“ е преименуван на „%s“ в клон „%s“, а "
"„%s“ е добавен в „%s“"
-#: merge-recursive.c:1702
+#: merge-recursive.c:1676
#, c-format
msgid "%s is a directory in %s adding as %s instead"
msgstr "„%s“ е директория в „%s“, затова се добавя като „%s“"
-#: merge-recursive.c:1707
+#: merge-recursive.c:1681
#, c-format
msgid "Refusing to lose untracked file at %s; adding as %s instead"
msgstr ""
"Преустановяване на действието, за да не се изгуби неследеният файл „%s“. "
"Вместо него се добавя „%s“"
-#: merge-recursive.c:1726
+#: merge-recursive.c:1708
#, c-format
msgid ""
"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
@@ -4532,18 +4805,18 @@ msgstr ""
"КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
"„%s“, а „%s“ е преименуван на „%s“ в „%s“/%s."
-#: merge-recursive.c:1731
+#: merge-recursive.c:1713
msgid " (left unresolved)"
msgstr " (некоригиран конфликт)"
-#: merge-recursive.c:1840
+#: merge-recursive.c:1793
#, 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:2103
+#: merge-recursive.c:2056
#, c-format
msgid ""
"CONFLICT (directory rename split): Unclear where to place %s because "
@@ -4554,7 +4827,7 @@ msgstr ""
"постави „%s“, защото няколко нови директории поделят съдържанието на "
"директория „%s“, като никоя не съдържа мнозинство от файловете ѝ."
-#: merge-recursive.c:2135
+#: merge-recursive.c:2088
#, c-format
msgid ""
"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -4563,7 +4836,7 @@ msgstr ""
"КОНФЛИКТ (косвено преименуване на директория): следният файл или директория "
"„%s“ не позволяват косвеното преименуване на следния път/ища: %s."
-#: merge-recursive.c:2145
+#: merge-recursive.c:2098
#, c-format
msgid ""
"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -4573,7 +4846,7 @@ msgstr ""
"съответства на „%s“. Косвено преименуване на директория води до поставянето "
"на тези пътища там: %s."
-#: merge-recursive.c:2237
+#: merge-recursive.c:2190
#, c-format
msgid ""
"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
@@ -4582,7 +4855,7 @@ msgstr ""
"КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
"„%s“, а „%s“ е преименуван на „%s“ в „%s“"
-#: merge-recursive.c:2482
+#: merge-recursive.c:2435
#, c-format
msgid ""
"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
@@ -4591,52 +4864,52 @@ msgstr ""
"ПРЕДУПРЕЖДЕНИЕ: прескачане на преименуването на „%s“ на „%s“ в „%s“, защото "
"„%s“ също е с променено име."
-#: merge-recursive.c:3008
+#: merge-recursive.c:2961
#, c-format
msgid "cannot read object %s"
msgstr "обектът „%s“ не може да се прочете"
-#: merge-recursive.c:3011
+#: merge-recursive.c:2964
#, c-format
msgid "object %s is not a blob"
msgstr "обектът „%s“ не е BLOB"
-#: merge-recursive.c:3075
+#: merge-recursive.c:3028
msgid "modify"
msgstr "промяна"
-#: merge-recursive.c:3075
+#: merge-recursive.c:3028
msgid "modified"
msgstr "променен"
-#: merge-recursive.c:3087
+#: merge-recursive.c:3040
msgid "content"
msgstr "съдържание"
-#: merge-recursive.c:3091
+#: merge-recursive.c:3044
msgid "add/add"
msgstr "добавяне/добавяне"
-#: merge-recursive.c:3114
+#: merge-recursive.c:3067
#, c-format
msgid "Skipped %s (merged same as existing)"
msgstr "Прескачане на „%s“ (слетият резултат е идентичен със сегашния)"
-#: merge-recursive.c:3136 git-submodule.sh:993
+#: merge-recursive.c:3089 git-submodule.sh:1003
msgid "submodule"
msgstr "ПОДМОДУЛ"
-#: merge-recursive.c:3137
+#: merge-recursive.c:3090
#, c-format
msgid "CONFLICT (%s): Merge conflict in %s"
msgstr "КОНФЛИКТ (%s): Конфликт при сливане на „%s“"
-#: merge-recursive.c:3167
+#: merge-recursive.c:3120
#, c-format
msgid "Adding as %s instead"
msgstr "Добавяне като „%s“"
-#: merge-recursive.c:3250
+#: merge-recursive.c:3203
#, c-format
msgid ""
"Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -4645,7 +4918,7 @@ msgstr ""
"Обновен път: „%s“ е добавен в „%s“ в директория, която е преименувана в "
"„%s“. Обектът се мести в „%s“."
-#: merge-recursive.c:3253
+#: merge-recursive.c:3206
#, c-format
msgid ""
"CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -4654,7 +4927,7 @@ msgstr ""
"КОНФЛИКТ (места на файлове): „%s“ е добавен в „%s“ в директория, която е "
"преименувана в „%s“. Предложението е да преместите обекта в „%s“."
-#: merge-recursive.c:3257
+#: merge-recursive.c:3210
#, c-format
msgid ""
"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -4663,7 +4936,7 @@ msgstr ""
"Обновен път: „%s“ е преименуван на „%s“ в „%s“ в директория, която е "
"преименувана в „%s“. Обектът се мести в „%s“."
-#: merge-recursive.c:3260
+#: merge-recursive.c:3213
#, c-format
msgid ""
"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -4672,61 +4945,61 @@ msgstr ""
"КОНФЛИКТ (места на файлове): „%s“ е преименуван на „%s“ в „%s“ в директория, "
"която е преименувана в „%s“. Предложението е да преместите обекта в „%s“."
-#: merge-recursive.c:3374
+#: merge-recursive.c:3327
#, c-format
msgid "Removing %s"
msgstr "Изтриване на „%s“"
-#: merge-recursive.c:3397
+#: merge-recursive.c:3350
msgid "file/directory"
msgstr "файл/директория"
-#: merge-recursive.c:3402
+#: merge-recursive.c:3355
msgid "directory/file"
msgstr "директория/файл"
-#: merge-recursive.c:3409
+#: merge-recursive.c:3362
#, 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:3418
+#: merge-recursive.c:3371
#, c-format
msgid "Adding %s"
msgstr "Добавяне на „%s“"
-#: merge-recursive.c:3427
+#: merge-recursive.c:3380
#, c-format
msgid "CONFLICT (add/add): Merge conflict in %s"
msgstr "КОНФЛИКТ (добавяне/добавяне): Конфликт при сливане на „%s“"
-#: merge-recursive.c:3471
+#: merge-recursive.c:3424
msgid "Already up to date!"
msgstr "Вече е обновено!"
-#: merge-recursive.c:3480
+#: merge-recursive.c:3433
#, c-format
msgid "merging of trees %s and %s failed"
msgstr "неуспешно сливане на дърветата „%s“ и „%s“"
-#: merge-recursive.c:3584
+#: merge-recursive.c:3537
msgid "Merging:"
msgstr "Сливане:"
-#: merge-recursive.c:3597
+#: merge-recursive.c:3550
#, c-format
msgid "found %u common ancestor:"
msgid_plural "found %u common ancestors:"
msgstr[0] "открит е %u общ предшественик:"
msgstr[1] "открити са %u общи предшественици:"
-#: merge-recursive.c:3647
+#: merge-recursive.c:3600
msgid "merge returned no commit"
msgstr "сливането не върна подаване"
-#: merge-recursive.c:3706
+#: merge-recursive.c:3659
#, c-format
msgid ""
"Your local changes to the following files would be overwritten by merge:\n"
@@ -4735,12 +5008,12 @@ msgstr ""
"Сливането ще презапише локалните промени на тези файлове:\n"
" %s"
-#: merge-recursive.c:3803
+#: merge-recursive.c:3756
#, c-format
msgid "Could not parse object '%s'"
msgstr "Неуспешен анализ на обекта „%s“"
-#: merge-recursive.c:3821 builtin/merge.c:694 builtin/merge.c:874
+#: merge-recursive.c:3774 builtin/merge.c:697 builtin/merge.c:877
msgid "Unable to write index."
msgstr "Индексът не може да бъде прочетен"
@@ -4994,7 +5267,7 @@ msgstr "обектът „%s“ е непознат вид: %d"
msgid "unable to parse object: %s"
msgstr "обектът „%s“ не може да бъде анализиран"
-#: object.c:266 object.c:277
+#: object.c:266 object.c:278
#, c-format
msgid "hash mismatch %s"
msgstr "разлика в контролната сума: „%s“"
@@ -5004,20 +5277,25 @@ msgid "offset before end of packfile (broken .idx?)"
msgstr ""
"отместване преди края на пакетния файл (възможно е индексът да е повреден)"
-#: packfile.c:1876
+#: packfile.c:1899
#, c-format
msgid "offset before start of pack index for %s (corrupt index?)"
msgstr ""
"отместване преди началото на индекса на пакетния файл „%s“ (възможно е "
"индексът да е повреден)"
-#: packfile.c:1880
+#: packfile.c:1903
#, c-format
msgid "offset beyond end of pack index for %s (truncated index?)"
msgstr ""
"отместване преди края на индекса на пакетния файл „%s“ (възможно е индексът "
"да е отрязан)"
+#: pack-bitmap.c:800 pack-bitmap.c:806 builtin/pack-objects.c:2134
+#, c-format
+msgid "unable to get size of %s"
+msgstr "размерът на „%s“ не може да бъде получен"
+
#: parse-options.c:38
#, c-format
msgid "%s requires a value"
@@ -5033,7 +5311,7 @@ msgstr "опциите „%s“ и „%s“ са несъвместими"
msgid "%s : incompatible with something else"
msgstr "опцията „%s“ е несъвместима с нещо"
-#: parse-options.c:92 parse-options.c:96 parse-options.c:319
+#: parse-options.c:92 parse-options.c:96 parse-options.c:317
#, c-format
msgid "%s takes no value"
msgstr "опцията „%s“ не приема аргументи"
@@ -5043,42 +5321,42 @@ msgstr "опцията „%s“ не приема аргументи"
msgid "%s isn't available"
msgstr "опцията „%s“ не е налична"
-#: parse-options.c:219
+#: parse-options.c:217
#, c-format
msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
msgstr ""
"„%s“ очаква неотрицателно цяло число, евентуално със суфикс „k“/„m“/„g“"
-#: parse-options.c:389
+#: parse-options.c:386
#, c-format
msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
msgstr "нееднозначна опция: „%s“ (може да е „--%s%s“ или „--%s%s“)"
-#: parse-options.c:423 parse-options.c:431
+#: parse-options.c:420 parse-options.c:428
#, c-format
-msgid "did you mean `--%s` (with two dashes ?)"
+msgid "did you mean `--%s` (with two dashes)?"
msgstr "„--%s“ (с 2 тирета) ли имахте предвид?"
-#: parse-options.c:860
+#: parse-options.c:857
#, c-format
msgid "unknown option `%s'"
msgstr "непозната опция: „%s“"
-#: parse-options.c:862
+#: parse-options.c:859
#, c-format
msgid "unknown switch `%c'"
msgstr "непознат флаг „%c“"
-#: parse-options.c:864
+#: parse-options.c:861
#, c-format
msgid "unknown non-ascii option in string: `%s'"
msgstr "непозната стойност извън „ascii“ в низа: „%s“"
-#: parse-options.c:888
+#: parse-options.c:885
msgid "..."
msgstr "…"
-#: parse-options.c:907
+#: parse-options.c:904
#, c-format
msgid "usage: %s"
msgstr "употреба: %s"
@@ -5086,21 +5364,21 @@ msgstr "употреба: %s"
#. TRANSLATORS: the colon here should align with the
#. one in "usage: %s" translation.
#.
-#: parse-options.c:913
+#: parse-options.c:910
#, c-format
msgid " or: %s"
msgstr " или: %s"
-#: parse-options.c:916
+#: parse-options.c:913
#, c-format
msgid " %s"
msgstr " %s"
-#: parse-options.c:955
+#: parse-options.c:952
msgid "-NUM"
msgstr "-ЧИСЛО"
-#: parse-options.c:969
+#: parse-options.c:966
#, c-format
msgid "alias of --%s"
msgstr "псевдоним на „--%s“"
@@ -5188,25 +5466,25 @@ msgstr "%s: опциите „literal“ и „glob“ са несъвмести
#: pathspec.c:442
#, c-format
-msgid "%s: '%s' is outside repository"
-msgstr "%s: „%s“ е извън хранилището"
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s: „%s“ е извън хранилището при „%s“"
-#: pathspec.c:516
+#: pathspec.c:517
#, c-format
msgid "'%s' (mnemonic: '%c')"
msgstr "„%s“ (клавиш: „%c“)"
-#: pathspec.c:526
+#: pathspec.c:527
#, c-format
msgid "%s: pathspec magic not supported by this command: %s"
msgstr "%s: магическите пътища не се поддържат от командата „%s“"
-#: pathspec.c:593
+#: pathspec.c:594
#, c-format
msgid "pathspec '%s' is beyond a symbolic link"
msgstr "пътят „%s“ е след символна връзка"
-#: pathspec.c:638
+#: pathspec.c:639
#, c-format
msgid "line is badly quoted: %s"
msgstr "неправилно цитиран ред: %s"
@@ -5296,7 +5574,7 @@ msgid "could not read `log` output"
msgstr ""
"изходът от командата за журнала с подавания „log“ не може да се прочете"
-#: range-diff.c:96 sequencer.c:5163
+#: range-diff.c:96 sequencer.c:5020
#, c-format
msgid "could not parse commit '%s'"
msgstr "подаването „%s“ не може да бъде анализирано"
@@ -5352,11 +5630,6 @@ msgstr "„%s“ не може да се добави в индекса"
msgid "unable to stat '%s'"
msgstr "„stat“ не може да се изпълни върху „%s“"
-#: read-cache.c:1283
-#, c-format
-msgid "filename in tree entry contains backslash: '%s'"
-msgstr "името на файл в елемент от обект-дърво съдържа „\\“: „%s“"
-
#: read-cache.c:1330
#, c-format
msgid "'%s' appears as both a file and as a directory"
@@ -5435,10 +5708,11 @@ msgid "unordered stage entries for '%s'"
msgstr "неподредени записи за „%s“"
#: read-cache.c:1983 read-cache.c:2271 rerere.c:565 rerere.c:599 rerere.c:1111
-#: builtin/add.c:499 builtin/check-ignore.c:178 builtin/checkout.c:470
-#: builtin/checkout.c:654 builtin/clean.c:967 builtin/commit.c:367
-#: builtin/diff-tree.c:120 builtin/grep.c:499 builtin/mv.c:145
-#: builtin/reset.c:246 builtin/rm.c:271 builtin/submodule--helper.c:332
+#: submodule.c:1619 builtin/add.c:532 builtin/check-ignore.c:181
+#: builtin/checkout.c:470 builtin/checkout.c:656 builtin/clean.c:967
+#: builtin/commit.c:367 builtin/diff-tree.c:120 builtin/grep.c:485
+#: builtin/mv.c:145 builtin/reset.c:246 builtin/rm.c:290
+#: builtin/submodule--helper.c:332
msgid "index file corrupt"
msgstr "файлът с индекса е повреден"
@@ -5494,12 +5768,12 @@ msgstr "споделеният индекс „%s“ не може да се о
msgid "broken index, expect %s in %s, got %s"
msgstr "грешки в индекса — в „%2$s“ се очаква „%1$s“, а бе получено „%3$s“"
-#: read-cache.c:3026 strbuf.c:1145 wrapper.c:622 builtin/merge.c:1119
+#: read-cache.c:3026 strbuf.c:1160 wrapper.c:622 builtin/merge.c:1122
#, c-format
msgid "could not close '%s'"
msgstr "„%s“ не може да се затвори"
-#: read-cache.c:3129 sequencer.c:2429 sequencer.c:4069
+#: read-cache.c:3129 sequencer.c:2343 sequencer.c:3959
#, c-format
msgid "could not stat '%s'"
msgstr "неуспешно изпълнение на „stat“ върху „%s“"
@@ -5524,7 +5798,17 @@ msgstr "правата за достъп до „%s“ не могат да бъ
msgid "%s: cannot drop to stage #0"
msgstr "%s: не може да се премине към етап №0"
-#: rebase-interactive.c:26
+#: rebase-interactive.c:11
+msgid ""
+"You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
+"continue'.\n"
+"Or you can abort the rebase with 'git rebase --abort'.\n"
+msgstr ""
+"Може да промените това с командите „git rebase --edit-todo“ и „git rebase --"
+"continue“ след това.\n"
+"Може и да преустановите пребазирането с командата „git rebase --abort“.\n"
+
+#: rebase-interactive.c:33
#, c-format
msgid ""
"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
@@ -5532,7 +5816,7 @@ msgstr ""
"Непозната стойност „%s“ за настройката „rebase.missingCommitsCheck“. "
"Настройката се прескача."
-#: rebase-interactive.c:35
+#: rebase-interactive.c:42
msgid ""
"\n"
"Commands:\n"
@@ -5579,14 +5863,14 @@ msgstr ""
"Може да променяте последователността на редовете — те се изпълняват\n"
"последователно отгоре-надолу.\n"
-#: rebase-interactive.c:56
+#: rebase-interactive.c:63
#, c-format
msgid "Rebase %s onto %s (%d command)"
msgid_plural "Rebase %s onto %s (%d commands)"
msgstr[0] "Пребазиране на „%s“ върху „%s“ (%d команди)"
msgstr[1] "Пребазиране на „%s“ върху „%s“ (%d команда)"
-#: rebase-interactive.c:65 git-rebase--preserve-merges.sh:228
+#: rebase-interactive.c:72 git-rebase--preserve-merges.sh:228
msgid ""
"\n"
"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
@@ -5595,7 +5879,7 @@ msgstr ""
"Не изтривайте редове. Подаванията могат да се прескачат с командата "
"„drop“.\n"
-#: rebase-interactive.c:68 git-rebase--preserve-merges.sh:232
+#: rebase-interactive.c:75 git-rebase--preserve-merges.sh:232
msgid ""
"\n"
"If you remove a line here THAT COMMIT WILL BE LOST.\n"
@@ -5603,7 +5887,7 @@ msgstr ""
"\n"
"Ако изтриете ред, съответстващото му подаване ще бъде ИЗТРИТО.\n"
-#: rebase-interactive.c:74 git-rebase--preserve-merges.sh:871
+#: rebase-interactive.c:81 git-rebase--preserve-merges.sh:871
msgid ""
"\n"
"You are editing the todo file of an ongoing interactive rebase.\n"
@@ -5618,7 +5902,7 @@ msgstr ""
" git rebase --continue\n"
"\n"
-#: rebase-interactive.c:79 git-rebase--preserve-merges.sh:948
+#: rebase-interactive.c:86 git-rebase--preserve-merges.sh:948
msgid ""
"\n"
"However, if you remove everything, the rebase will be aborted.\n"
@@ -5628,22 +5912,19 @@ msgstr ""
"Ако изтриете всичко, пребазирането ще бъде преустановено.\n"
"\n"
-#: rebase-interactive.c:85 git-rebase--preserve-merges.sh:955
-msgid "Note that empty commits are commented out"
-msgstr "Празните подавания са коментирани"
-
-#: rebase-interactive.c:105 rerere.c:485 rerere.c:692 sequencer.c:3536
-#: sequencer.c:3562 sequencer.c:5263 builtin/fsck.c:346 builtin/rebase.c:254
+#: rebase-interactive.c:110 rerere.c:485 rerere.c:692 sequencer.c:3444
+#: sequencer.c:3470 sequencer.c:5125 builtin/fsck.c:346 builtin/rebase.c:252
#, c-format
msgid "could not write '%s'"
msgstr "„%s“ не може да се запише"
-#: rebase-interactive.c:108
+#: rebase-interactive.c:116 builtin/rebase.c:184 builtin/rebase.c:210
+#: builtin/rebase.c:234
#, c-format
-msgid "could not copy '%s' to '%s'."
-msgstr "„%s“ не може да се копира като „%s“."
+msgid "could not write '%s'."
+msgstr "„%s“ не може да се запише."
-#: rebase-interactive.c:173
+#: rebase-interactive.c:193
#, c-format
msgid ""
"Warning: some commits may have been dropped accidentally.\n"
@@ -5652,7 +5933,7 @@ msgstr ""
"Предупреждение: някои подавания може да са пропуснати.\n"
"Пропуснати подавания (новите са най-отгоре):\n"
-#: rebase-interactive.c:180
+#: rebase-interactive.c:200
#, c-format
msgid ""
"To avoid this message, use \"drop\" to explicitly remove a commit.\n"
@@ -5669,6 +5950,13 @@ msgstr ""
"предупреждение)\n"
"или „error“ (считане за грешка).\n"
+#: rebase-interactive.c:233 rebase-interactive.c:238 sequencer.c:2262
+#: builtin/rebase.c:170 builtin/rebase.c:195 builtin/rebase.c:221
+#: builtin/rebase.c:246
+#, c-format
+msgid "could not read '%s'."
+msgstr "от „%s“ не може да се чете."
+
#: refs.c:262
#, c-format
msgid "%s does not point to a valid object!"
@@ -5704,15 +5992,15 @@ msgstr "указателят „%s“ вече съществува"
msgid "unexpected object ID when writing '%s'"
msgstr "неочакван идентификатор на обект при записването на „%s“"
-#: refs.c:833 sequencer.c:405 sequencer.c:2793 sequencer.c:2997
-#: sequencer.c:3011 sequencer.c:3269 sequencer.c:5179 strbuf.c:1142
+#: refs.c:833 sequencer.c:407 sequencer.c:2701 sequencer.c:2905
+#: sequencer.c:2919 sequencer.c:3177 sequencer.c:5036 strbuf.c:1157
#: wrapper.c:620
#, c-format
msgid "could not write to '%s'"
msgstr "в „%s“ не може да се пише"
-#: refs.c:860 strbuf.c:1140 wrapper.c:188 wrapper.c:358 builtin/am.c:714
-#: builtin/rebase.c:1031
+#: refs.c:860 strbuf.c:1155 wrapper.c:188 wrapper.c:358 builtin/am.c:719
+#: builtin/rebase.c:1029
#, c-format
msgid "could not open '%s' for writing"
msgstr "„%s“ не може да бъде отворен за запис"
@@ -5766,18 +6054,18 @@ msgstr "„%s“ съществува, не може да се създаде
msgid "cannot process '%s' and '%s' at the same time"
msgstr "невъзможно е едновременно да се обработват „%s“ и „%s“"
-#: refs/files-backend.c:1234
+#: refs/files-backend.c:1233
#, c-format
msgid "could not remove reference %s"
msgstr "Указателят „%s“ не може да бъде изтрит"
-#: refs/files-backend.c:1248 refs/packed-backend.c:1541
+#: refs/files-backend.c:1247 refs/packed-backend.c:1541
#: refs/packed-backend.c:1551
#, c-format
msgid "could not delete reference %s: %s"
msgstr "Указателят „%s“ не може да бъде изтрит: %s"
-#: refs/files-backend.c:1251 refs/packed-backend.c:1554
+#: refs/files-backend.c:1250 refs/packed-backend.c:1554
#, c-format
msgid "could not delete references: %s"
msgstr "Указателите не може да бъдат изтрити: %s"
@@ -6042,45 +6330,45 @@ msgid "config remote shorthand cannot begin with '/': %s"
msgstr ""
"съкращението за отдалечено хранилище не може за започва със знака „/“: %s"
-#: remote.c:413
+#: remote.c:414
msgid "more than one receivepack given, using the first"
msgstr "зададен е повече от един пакет за получаване, ще се ползва първият"
-#: remote.c:421
+#: remote.c:422
msgid "more than one uploadpack given, using the first"
msgstr "зададен е повече от един пакет за изпращане, ще се ползва първият"
-#: remote.c:611
+#: remote.c:612
#, c-format
msgid "Cannot fetch both %s and %s to %s"
msgstr "Невъзможно е да се доставят едновременно и „%s“, и „%s“ към „%s“"
-#: remote.c:615
+#: remote.c:616
#, c-format
msgid "%s usually tracks %s, not %s"
msgstr "„%s“ обикновено следи „%s“, а не „%s“"
-#: remote.c:619
+#: remote.c:620
#, c-format
msgid "%s tracks both %s and %s"
msgstr "„%s“ следи както „%s“, така и „%s“"
-#: remote.c:687
+#: remote.c:688
#, c-format
msgid "key '%s' of pattern had no '*'"
msgstr "ключ „%s“ на шаблона не съдържа „*“"
-#: remote.c:697
+#: remote.c:698
#, c-format
msgid "value '%s' of pattern has no '*'"
msgstr "стойност „%s“ на шаблона не съдържа „*“"
-#: remote.c:1003
+#: remote.c:1004
#, c-format
msgid "src refspec %s does not match any"
msgstr "указателят на версия-източник „%s“ не съвпада с никой обект"
-#: remote.c:1008
+#: remote.c:1009
#, c-format
msgid "src refspec %s matches more than one"
msgstr "указателят на версия-източник „%s“ съвпада с повече от един обект"
@@ -6089,7 +6377,7 @@ msgstr "указателят на версия-източник „%s“ съв
#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
#. the <src>.
#.
-#: remote.c:1023
+#: remote.c:1024
#, c-format
msgid ""
"The destination you provided is not a full refname (i.e.,\n"
@@ -6113,7 +6401,7 @@ msgstr ""
"Никой от вариантите не сработи. Трябва сами да укажете пълното име на\n"
"указателя."
-#: remote.c:1043
+#: remote.c:1044
#, c-format
msgid ""
"The <src> part of the refspec is a commit object.\n"
@@ -6124,7 +6412,7 @@ msgstr ""
"като\n"
"изтласкате към „%s:refs/heads/%s“?"
-#: remote.c:1048
+#: remote.c:1049
#, c-format
msgid ""
"The <src> part of the refspec is a tag object.\n"
@@ -6135,7 +6423,7 @@ msgstr ""
"като\n"
"изтласкате към „%s:refs/tags/%s“?"
-#: remote.c:1053
+#: remote.c:1054
#, c-format
msgid ""
"The <src> part of the refspec is a tree object.\n"
@@ -6145,7 +6433,7 @@ msgstr ""
"ИЗТОЧНИКът е обект-дърво. Не целите ли всъщност да създадете нов клон като\n"
"изтласкате към „%s:refs/tags/%s“?"
-#: remote.c:1058
+#: remote.c:1059
#, c-format
msgid ""
"The <src> part of the refspec is a blob object.\n"
@@ -6155,118 +6443,118 @@ msgstr ""
"ИЗТОЧНИКът е обект-BLOB. Не целите ли всъщност да създадете нов клон като\n"
"изтласкате към „%s:refs/tags/%s“?"
-#: remote.c:1094
+#: remote.c:1095
#, c-format
msgid "%s cannot be resolved to branch"
msgstr "не е открит клон съответстващ на „%s“"
-#: remote.c:1105
+#: remote.c:1106
#, c-format
msgid "unable to delete '%s': remote ref does not exist"
msgstr "„%s“ не може да се изтрие: отдалечения указател не съществува"
-#: remote.c:1117
+#: remote.c:1118
#, c-format
msgid "dst refspec %s matches more than one"
msgstr "указателят на версия-цел „%s“ съвпада с повече от един обект"
-#: remote.c:1124
+#: remote.c:1125
#, c-format
msgid "dst ref %s receives from more than one src"
msgstr ""
"указателят на версия-цел „%s“ съответства и ще получава от повече от един "
"източник"
-#: remote.c:1627 remote.c:1728
+#: remote.c:1628 remote.c:1729
msgid "HEAD does not point to a branch"
msgstr "Указателят „HEAD“ не сочи към клон"
-#: remote.c:1636
+#: remote.c:1637
#, c-format
msgid "no such branch: '%s'"
msgstr "няма клон на име „%s“"
-#: remote.c:1639
+#: remote.c:1640
#, c-format
msgid "no upstream configured for branch '%s'"
msgstr "не е зададен клон-източник за клона „%s“"
-#: remote.c:1645
+#: remote.c:1646
#, c-format
msgid "upstream branch '%s' not stored as a remote-tracking branch"
msgstr "клонът-източник „%s“ не е съхранен като следящ клон"
-#: remote.c:1660
+#: remote.c:1661
#, c-format
msgid "push destination '%s' on remote '%s' has no local tracking branch"
msgstr ""
"липсва локален следящ клон за местоположението за изтласкване „%s“ в "
"хранилището „%s“"
-#: remote.c:1672
+#: remote.c:1673
#, c-format
msgid "branch '%s' has no remote for pushing"
msgstr "няма информация клонът „%s“ да следи някой друг"
-#: remote.c:1682
+#: remote.c:1683
#, c-format
msgid "push refspecs for '%s' do not include '%s'"
msgstr "указателят за изтласкване на „%s“ не включва „%s“"
-#: remote.c:1695
+#: remote.c:1696
msgid "push has no destination (push.default is 'nothing')"
msgstr "указателят за изтласкване не включва цел („push.default“ е „nothing“)"
-#: remote.c:1717
+#: remote.c:1718
msgid "cannot resolve 'simple' push to a single destination"
msgstr "простото (simple) изтласкване не съответства на една цел"
-#: remote.c:1843
+#: remote.c:1844
#, c-format
msgid "couldn't find remote ref %s"
msgstr "отдалеченият указател „%s“ не може да бъде открит"
-#: remote.c:1856
+#: remote.c:1857
#, c-format
msgid "* Ignoring funny ref '%s' locally"
msgstr "• прескачане на неочаквания локален указател „%s“"
-#: remote.c:2019
+#: remote.c:2020
#, c-format
msgid "Your branch is based on '%s', but the upstream is gone.\n"
msgstr "Този клон следи „%s“, но следеният клон е изтрит.\n"
-#: remote.c:2023
+#: remote.c:2024
msgid " (use \"git branch --unset-upstream\" to fixup)\n"
msgstr " (за да коригирате това, използвайте „git branch --unset-upstream“)\n"
-#: remote.c:2026
+#: remote.c:2027
#, c-format
msgid "Your branch is up to date with '%s'.\n"
msgstr "Клонът е актуализиран към „%s“.\n"
-#: remote.c:2030
+#: remote.c:2031
#, c-format
msgid "Your branch and '%s' refer to different commits.\n"
msgstr "Клонът ви и „%s“ сочат към различни подавания.\n"
-#: remote.c:2033
+#: remote.c:2034
#, c-format
msgid " (use \"%s\" for details)\n"
msgstr " (за повече информация ползвайте „%s“)\n"
-#: remote.c:2037
+#: remote.c:2038
#, 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:2043
+#: remote.c:2044
msgid " (use \"git push\" to publish your local commits)\n"
msgstr " (публикувайте локалните си промени чрез „git push“)\n"
-#: remote.c:2046
+#: remote.c:2047
#, c-format
msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
msgid_plural ""
@@ -6274,11 +6562,11 @@ msgid_plural ""
msgstr[0] "Клонът ви е с %2$d подаване зад „%1$s“ и може да бъде превъртян.\n"
msgstr[1] "Клонът ви е с %2$d подавания зад „%1$s“ и може да бъде превъртян.\n"
-#: remote.c:2054
+#: remote.c:2055
msgid " (use \"git pull\" to update your local branch)\n"
msgstr " (обновете локалния си клон чрез „git pull“)\n"
-#: remote.c:2057
+#: remote.c:2058
#, c-format
msgid ""
"Your branch and '%s' have diverged,\n"
@@ -6293,11 +6581,11 @@ msgstr[1] ""
"Текущият клон се е отделил от „%s“,\n"
"двата имат съответно по %d и %d несъвпадащи подавания.\n"
-#: remote.c:2067
+#: remote.c:2068
msgid " (use \"git pull\" to merge the remote branch into yours)\n"
msgstr " (слейте отдалечения клон в локалния чрез „git pull“)\n"
-#: remote.c:2250
+#: remote.c:2251
#, c-format
msgid "cannot parse expected object name '%s'"
msgstr "очакваното име на обект „%s“ не може да бъде анализирано"
@@ -6312,7 +6600,7 @@ msgstr "неправилно име на указател за замяна: „
msgid "duplicate replace ref: %s"
msgstr "повтарящ се указател за замяна: „%s“"
-#: replace-object.c:73
+#: replace-object.c:82
#, c-format
msgid "replace depth too high for object %s"
msgstr "дълбочината на замяна е прекалено голяма за обекта: „%s“"
@@ -6378,8 +6666,8 @@ msgstr "излишният обект „%s“ не може да се изтр
msgid "Recorded preimage for '%s'"
msgstr "Предварителният вариант на „%s“ е запазен"
-#: rerere.c:881 submodule.c:2067 builtin/log.c:1871
-#: builtin/submodule--helper.c:1436 builtin/submodule--helper.c:1448
+#: rerere.c:881 submodule.c:2078 builtin/log.c:1871
+#: builtin/submodule--helper.c:1454 builtin/submodule--helper.c:1466
#, c-format
msgid "could not create directory '%s'"
msgstr "Директорията „%s“ не може да бъде създадена"
@@ -6432,16 +6720,16 @@ msgstr ""
"опцията „-L“ поддържа единствено форматирането на разликите според опциите „-"
"p“ и „-s“"
-#: run-command.c:762
+#: run-command.c:763
msgid "open /dev/null failed"
msgstr "неуспешно отваряне на „/dev/null“"
-#: run-command.c:1268
+#: run-command.c:1269
#, c-format
msgid "cannot create async thread: %s"
msgstr "не може да се създаде асинхронна нишка: %s"
-#: run-command.c:1332
+#: run-command.c:1333
#, c-format
msgid ""
"The '%s' hook was ignored because it's not set as executable.\n"
@@ -6492,39 +6780,39 @@ msgstr "получаващата страна не поддържа изтлас
msgid "the receiving end does not support push options"
msgstr "отсрещната страна не поддържа опции при изтласкване"
-#: sequencer.c:189
+#: sequencer.c:191
#, c-format
msgid "invalid commit message cleanup mode '%s'"
msgstr "несъществуващ режим на изчистване „%s“ на съобщение при подаване"
-#: sequencer.c:294
+#: sequencer.c:296
#, c-format
msgid "could not delete '%s'"
msgstr "„%s“ не може да бъде изтрит"
-#: sequencer.c:313 builtin/rebase.c:781 builtin/rebase.c:1706 builtin/rm.c:369
+#: sequencer.c:315 builtin/rebase.c:785 builtin/rebase.c:1750 builtin/rm.c:385
#, c-format
msgid "could not remove '%s'"
msgstr "„%s“ не може да бъде изтрит"
-#: sequencer.c:323
+#: sequencer.c:325
msgid "revert"
msgstr "отмяна"
-#: sequencer.c:325
+#: sequencer.c:327
msgid "cherry-pick"
msgstr "отбиране"
-#: sequencer.c:327
-msgid "rebase -i"
-msgstr "rebase -i"
-
#: sequencer.c:329
+msgid "rebase"
+msgstr "пребазиране"
+
+#: sequencer.c:331
#, c-format
msgid "unknown action: %d"
msgstr "неизвестно действие: %d"
-#: sequencer.c:387
+#: sequencer.c:389
msgid ""
"after resolving the conflicts, mark the corrected paths\n"
"with 'git add <paths>' or 'git rm <paths>'"
@@ -6532,7 +6820,7 @@ msgstr ""
"след коригирането на конфликтите, отбележете съответните\n"
"пътища с „git add ПЪТ…“ или „git rm ПЪТ…“."
-#: sequencer.c:390
+#: sequencer.c:392
msgid ""
"after resolving the conflicts, mark the corrected paths\n"
"with 'git add <paths>' or 'git rm <paths>'\n"
@@ -6542,114 +6830,110 @@ msgstr ""
"пътища с „git add ПЪТ…“ или „git rm ПЪТ…“, след което\n"
"подайте резултата с командата „git commit'“."
-#: sequencer.c:403 sequencer.c:2993
+#: sequencer.c:405 sequencer.c:2901
#, c-format
msgid "could not lock '%s'"
msgstr "„%s“ не може да се заключи"
-#: sequencer.c:410
+#: sequencer.c:412
#, c-format
msgid "could not write eol to '%s'"
msgstr "краят на ред не може да се запише в „%s“"
-#: sequencer.c:415 sequencer.c:2798 sequencer.c:2999 sequencer.c:3013
-#: sequencer.c:3277
+#: sequencer.c:417 sequencer.c:2706 sequencer.c:2907 sequencer.c:2921
+#: sequencer.c:3185
#, c-format
msgid "failed to finalize '%s'"
msgstr "„%s“ не може да се завърши"
-#: sequencer.c:438 sequencer.c:1707 sequencer.c:2818 sequencer.c:3259
-#: sequencer.c:3368 builtin/am.c:244 builtin/commit.c:783 builtin/merge.c:1117
-#: builtin/rebase.c:589
+#: sequencer.c:440 sequencer.c:1613 sequencer.c:2726 sequencer.c:3167
+#: sequencer.c:3276 builtin/am.c:249 builtin/commit.c:787 builtin/merge.c:1120
+#: builtin/rebase.c:593
#, c-format
msgid "could not read '%s'"
msgstr "файлът „%s“ не може да бъде прочетен"
-#: sequencer.c:464
+#: sequencer.c:466
#, c-format
msgid "your local changes would be overwritten by %s."
msgstr "локалните ви промени ще бъдат презаписани при %s."
-#: sequencer.c:468
+#: sequencer.c:470
msgid "commit your changes or stash them to proceed."
msgstr "подайте или скатайте промените, за да продължите"
-#: sequencer.c:500
+#: sequencer.c:502
#, c-format
msgid "%s: fast-forward"
msgstr "%s: превъртане"
-#: sequencer.c:539 builtin/tag.c:565
+#: sequencer.c:541 builtin/tag.c:565
#, c-format
msgid "Invalid cleanup mode %s"
msgstr "Несъществуващ режим на изчистване „%s“"
#. TRANSLATORS: %s will be "revert", "cherry-pick" or
-#. "rebase -i".
+#. "rebase".
#.
-#: sequencer.c:633
+#: sequencer.c:635
#, c-format
msgid "%s: Unable to write new index file"
msgstr "%s: новият индекс не може да бъде запазен"
-#: sequencer.c:650
+#: sequencer.c:652
msgid "unable to update cache tree"
msgstr "дървото на кеша не може да бъде обновено"
-#: sequencer.c:664
+#: sequencer.c:666
msgid "could not resolve HEAD commit"
msgstr "подаването, сочено от указателя „HEAD“, не може да бъде открито"
-#: sequencer.c:744
+#: sequencer.c:746
#, c-format
msgid "no key present in '%.*s'"
msgstr "в „%.*s“ няма ключове"
-#: sequencer.c:755
+#: sequencer.c:757
#, c-format
msgid "unable to dequote value of '%s'"
msgstr "цитирането на стойността на „%s“ не може да бъде изчистено"
-#: sequencer.c:792 wrapper.c:190 wrapper.c:360 builtin/am.c:705
-#: builtin/am.c:797 builtin/merge.c:1114 builtin/rebase.c:1074
+#: sequencer.c:794 wrapper.c:190 wrapper.c:360 builtin/am.c:710
+#: builtin/am.c:802 builtin/merge.c:1117 builtin/rebase.c:1072
#, c-format
msgid "could not open '%s' for reading"
msgstr "файлът не може да бъде прочетен: „%s“"
-#: sequencer.c:802
+#: sequencer.c:804
msgid "'GIT_AUTHOR_NAME' already given"
msgstr "настройката за автор „GIT_AUTHOR_NAME“ вече е зададена"
-#: sequencer.c:807
+#: sequencer.c:809
msgid "'GIT_AUTHOR_EMAIL' already given"
msgstr "настройката за е-поща „GIT_AUTHOR_EMAIL“ вече е зададена"
-#: sequencer.c:812
+#: sequencer.c:814
msgid "'GIT_AUTHOR_DATE' already given"
msgstr "настройката за дата „GIT_AUTHOR_DATE“ вече е зададена"
-#: sequencer.c:816
+#: sequencer.c:818
#, c-format
msgid "unknown variable '%s'"
msgstr "непозната променлива „%s“"
-#: sequencer.c:821
+#: sequencer.c:823
msgid "missing 'GIT_AUTHOR_NAME'"
msgstr "настройката за автор „GIT_AUTHOR_NAME“ липсва"
-#: sequencer.c:823
+#: sequencer.c:825
msgid "missing 'GIT_AUTHOR_EMAIL'"
msgstr "настройката за е-поща „GIT_AUTHOR_EMAIL“ липсва"
-#: sequencer.c:825
+#: sequencer.c:827
msgid "missing 'GIT_AUTHOR_DATE'"
msgstr "настройката за дата „GIT_AUTHOR_DATE“ липсва"
-#: sequencer.c:902 sequencer.c:1427
-msgid "malformed ident line"
-msgstr "неправилен формат на ред за идентификация"
-
-#: sequencer.c:925
+#: sequencer.c:876
#, c-format
msgid ""
"you have staged changes in your working tree\n"
@@ -6678,13 +6962,13 @@ msgstr ""
"\n"
" git rebase --continue\n"
-#: sequencer.c:1218
+#: sequencer.c:1148
msgid "'prepare-commit-msg' hook failed"
msgstr ""
"неуспешно изпълнение на куката при промяна на съобщението при подаване "
"(prepare-commit-msg)"
-#: sequencer.c:1224
+#: sequencer.c:1154
msgid ""
"Your name and email address were configured automatically based\n"
"on your username and hostname. Please check that they are accurate.\n"
@@ -6713,7 +6997,7 @@ msgstr ""
"\n"
" git commit --amend --reset-author\n"
-#: sequencer.c:1237
+#: sequencer.c:1167
msgid ""
"Your name and email address were configured automatically based\n"
"on your username and hostname. Please check that they are accurate.\n"
@@ -6739,342 +7023,337 @@ msgstr ""
"\n"
" git commit --amend --reset-author\n"
-#: sequencer.c:1279
+#: sequencer.c:1209
msgid "couldn't look up newly created commit"
msgstr "току що създаденото подаване не може да бъде открито"
-#: sequencer.c:1281
+#: sequencer.c:1211
msgid "could not parse newly created commit"
msgstr "току що създаденото подаване не може да бъде анализирано"
-#: sequencer.c:1327
+#: sequencer.c:1257
msgid "unable to resolve HEAD after creating commit"
msgstr ""
"състоянието сочено от указателя „HEAD“ не може да бъде открито след "
"подаването"
-#: sequencer.c:1329
+#: sequencer.c:1259
msgid "detached HEAD"
msgstr "несвързан връх „HEAD“"
-#: sequencer.c:1333
+#: sequencer.c:1263
msgid " (root-commit)"
msgstr " (начално подаване)"
-#: sequencer.c:1354
+#: sequencer.c:1284
msgid "could not parse HEAD"
msgstr "указателят „HEAD“ не може да бъде анализиран"
-#: sequencer.c:1356
+#: sequencer.c:1286
#, c-format
msgid "HEAD %s is not a commit!"
msgstr "указателят „HEAD“ „%s“ сочи към нещо, което не е подаване!"
-#: sequencer.c:1360 sequencer.c:1458 builtin/commit.c:1569
+#: sequencer.c:1290 sequencer.c:1364 builtin/commit.c:1574
msgid "could not parse HEAD commit"
msgstr "върховото подаване „HEAD“ не може да бъде прочетено"
-#: sequencer.c:1411 sequencer.c:2055
+#: sequencer.c:1342 sequencer.c:1968
msgid "unable to parse commit author"
msgstr "авторът на подаването не може да бъде анализиран"
-#: sequencer.c:1431
-msgid "corrupted author without date information"
-msgstr "неправилен автор без дата"
-
-#: sequencer.c:1447 builtin/am.c:1561 builtin/merge.c:684
+#: sequencer.c:1353 builtin/am.c:1566 builtin/merge.c:687
msgid "git write-tree failed to write a tree"
msgstr "Командата „git write-tree“ не успя да запише обект-дърво"
-#: sequencer.c:1480 sequencer.c:1550
+#: sequencer.c:1386 sequencer.c:1447
#, c-format
msgid "unable to read commit message from '%s'"
msgstr "съобщението за подаване не може да бъде прочетено от „%s“"
-#: sequencer.c:1516 builtin/am.c:1583 builtin/commit.c:1668 builtin/merge.c:883
-#: builtin/merge.c:908
+#: sequencer.c:1413 builtin/am.c:1588 builtin/commit.c:1673 builtin/merge.c:886
+#: builtin/merge.c:911
msgid "failed to write commit object"
msgstr "обектът за подаването не може да бъде записан"
-#: sequencer.c:1577
+#: sequencer.c:1474
#, c-format
msgid "could not parse commit %s"
msgstr "подаването „%s“ не може да бъде анализирано"
-#: sequencer.c:1582
+#: sequencer.c:1479
#, c-format
msgid "could not parse parent commit %s"
msgstr "родителското подаване „%s“ не може да бъде анализирано"
-#: sequencer.c:1656 sequencer.c:1767
+#: sequencer.c:1562 sequencer.c:1673
#, c-format
msgid "unknown command: %d"
msgstr "непозната команда: %d"
-#: sequencer.c:1714 sequencer.c:1739
+#: sequencer.c:1620 sequencer.c:1645
#, c-format
msgid "This is a combination of %d commits."
msgstr "Това е обединение от %d подавания"
-#: sequencer.c:1724
+#: sequencer.c:1630
msgid "need a HEAD to fixup"
msgstr "За вкарване в предходното подаване ви трябва указател „HEAD“"
-#: sequencer.c:1726 sequencer.c:3304
+#: sequencer.c:1632 sequencer.c:3212
msgid "could not read HEAD"
msgstr "указателят „HEAD“ не може да се прочете"
-#: sequencer.c:1728
+#: sequencer.c:1634
msgid "could not read HEAD's commit message"
msgstr ""
"съобщението за подаване към указателя „HEAD“ не може да бъде прочетено: %s"
-#: sequencer.c:1734
+#: sequencer.c:1640
#, c-format
msgid "cannot write '%s'"
msgstr "„%s“ не може да се запази"
-#: sequencer.c:1741 git-rebase--preserve-merges.sh:496
+#: sequencer.c:1647 git-rebase--preserve-merges.sh:496
msgid "This is the 1st commit message:"
msgstr "Това е 1-то съобщение при подаване:"
-#: sequencer.c:1749
+#: sequencer.c:1655
#, c-format
msgid "could not read commit message of %s"
msgstr "съобщението за подаване към „%s“ не може да бъде прочетено"
-#: sequencer.c:1756
+#: sequencer.c:1662
#, c-format
msgid "This is the commit message #%d:"
msgstr "Това е съобщение при подаване №%d:"
-#: sequencer.c:1762
+#: sequencer.c:1668
#, c-format
msgid "The commit message #%d will be skipped:"
msgstr "Съобщение при подаване №%d ще бъде прескочено:"
-#: sequencer.c:1850
+#: sequencer.c:1756
msgid "your index file is unmerged."
msgstr "индексът не е слят."
-#: sequencer.c:1857
+#: sequencer.c:1763
msgid "cannot fixup root commit"
msgstr "началното подаване не може да се вкара в предходното му"
-#: sequencer.c:1876
+#: sequencer.c:1782
#, c-format
msgid "commit %s is a merge but no -m option was given."
msgstr "подаването „%s“ е сливане, но не е дадена опцията „-m“"
-#: sequencer.c:1884 sequencer.c:1892
+#: sequencer.c:1790 sequencer.c:1798
#, c-format
msgid "commit %s does not have parent %d"
msgstr "подаването „%s“ няма родител %d"
-#: sequencer.c:1898
+#: sequencer.c:1804
#, c-format
msgid "cannot get commit message for %s"
msgstr "неуспешно извличане на съобщението за подаване на „%s“"
#. TRANSLATORS: The first %s will be a "todo" command like
#. "revert" or "pick", the second %s a SHA1.
-#: sequencer.c:1917
+#: sequencer.c:1823
#, c-format
msgid "%s: cannot parse parent commit %s"
msgstr "%s: неразпозната стойност за родителското подаване „%s“"
-#: sequencer.c:1982
+#: sequencer.c:1888
#, c-format
msgid "could not rename '%s' to '%s'"
msgstr "„%s“ не може да се преименува на „%s“"
-#: sequencer.c:2037
+#: sequencer.c:1943
#, c-format
msgid "could not revert %s... %s"
msgstr "подаването „%s“… не може да бъде отменено: „%s“"
-#: sequencer.c:2038
+#: sequencer.c:1944
#, c-format
msgid "could not apply %s... %s"
msgstr "подаването „%s“… не може да бъде приложено: „%s“"
-#: sequencer.c:2105
+#: sequencer.c:1961
+#, c-format
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "прескачане на %s %s — кръпката вече е приложена\n"
+
+#: sequencer.c:2018
#, c-format
msgid "git %s: failed to read the index"
msgstr "git %s: неуспешно изчитане на индекса"
-#: sequencer.c:2112
+#: sequencer.c:2025
#, c-format
msgid "git %s: failed to refresh the index"
msgstr "git %s: неуспешно обновяване на индекса"
-#: sequencer.c:2189
+#: sequencer.c:2102
#, c-format
msgid "%s does not accept arguments: '%s'"
msgstr "„%s“ не приема аргументи: „%s“"
-#: sequencer.c:2198
+#: sequencer.c:2111
#, c-format
msgid "missing arguments for %s"
msgstr "„%s“ изисква аргументи"
-#: sequencer.c:2235
+#: sequencer.c:2142
#, c-format
-msgid "could not parse '%.*s'"
-msgstr "„%.*s“ не може да се анализира"
+msgid "could not parse '%s'"
+msgstr "„%s“ не може да се анализира"
-#: sequencer.c:2289
+#: sequencer.c:2203
#, c-format
msgid "invalid line %d: %.*s"
msgstr "неправилен ред %d: %.*s"
-#: sequencer.c:2300
+#: sequencer.c:2214
#, c-format
msgid "cannot '%s' without a previous commit"
msgstr "Без предишно подаване не може да се изпълни „%s“"
-#: sequencer.c:2348 builtin/rebase.c:172 builtin/rebase.c:197
-#: builtin/rebase.c:223 builtin/rebase.c:248
-#, c-format
-msgid "could not read '%s'."
-msgstr "от „%s“ не може да се чете."
-
-#: sequencer.c:2384
+#: sequencer.c:2298
msgid "cancelling a cherry picking in progress"
msgstr "преустановяване на извършваното в момента отбиране на подавания"
-#: sequencer.c:2391
+#: sequencer.c:2305
msgid "cancelling a revert in progress"
msgstr "преустановяване на извършваното в момента отмяна на подаване"
-#: sequencer.c:2435
+#: sequencer.c:2349
msgid "please fix this using 'git rebase --edit-todo'."
msgstr "коригирайте това чрез „git rebase --edit-todo“."
-#: sequencer.c:2437
+#: sequencer.c:2351
#, c-format
msgid "unusable instruction sheet: '%s'"
msgstr "неизползваем файл с описание на предстоящите действия: „%s“"
-#: sequencer.c:2442
+#: sequencer.c:2356
msgid "no commits parsed."
msgstr "никое от подаванията не може да се разпознае."
-#: sequencer.c:2453
+#: sequencer.c:2367
msgid "cannot cherry-pick during a revert."
msgstr ""
"по време на отмяна на подаване не може да се извърши отбиране на подаване."
-#: sequencer.c:2455
+#: sequencer.c:2369
msgid "cannot revert during a cherry-pick."
msgstr "по време на отбиране не може да се извърши отмяна на подаване."
-#: sequencer.c:2533
+#: sequencer.c:2447
#, c-format
msgid "invalid value for %s: %s"
msgstr "неправилна стойност за „%s“: „%s“"
-#: sequencer.c:2630
+#: sequencer.c:2540
msgid "unusable squash-onto"
msgstr "подаването, в което другите да се вкарат, не може да се използва"
-#: sequencer.c:2646
+#: sequencer.c:2556
#, c-format
msgid "malformed options sheet: '%s'"
msgstr "неправилен файл с опции: „%s“"
-#: sequencer.c:2736 sequencer.c:4463
+#: sequencer.c:2644 sequencer.c:4361
msgid "empty commit set passed"
msgstr "зададено е празно множество от подавания"
-#: sequencer.c:2752
+#: sequencer.c:2660
msgid "revert is already in progress"
msgstr "в момента вече се извършва отмяна на подавания"
-#: sequencer.c:2754
+#: sequencer.c:2662
#, c-format
msgid "try \"git revert (--continue | %s--abort | --quit)\""
msgstr "използвайте „git cherry-pick (--continue | %s--abort | --quit)“"
-#: sequencer.c:2757
+#: sequencer.c:2665
msgid "cherry-pick is already in progress"
msgstr "в момента вече се извършва отбиране на подавания"
-#: sequencer.c:2759
+#: sequencer.c:2667
#, c-format
msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
msgstr "използвайте „git cherry-pick (--continue | %s--abort | --quit)“"
-#: sequencer.c:2773
+#: sequencer.c:2681
#, c-format
msgid "could not create sequencer directory '%s'"
msgstr ""
"директорията за определянето на последователността „%s“ не може да бъде "
"създадена"
-#: sequencer.c:2788
+#: sequencer.c:2696
msgid "could not lock HEAD"
msgstr "указателят „HEAD“ не може да се заключи"
-#: sequencer.c:2848 sequencer.c:4209
+#: sequencer.c:2756 sequencer.c:4099
msgid "no cherry-pick or revert in progress"
msgstr ""
"в момента не се извършва отбиране на подавания или пребазиране на клона"
-#: sequencer.c:2850 sequencer.c:2861
+#: sequencer.c:2758 sequencer.c:2769
msgid "cannot resolve HEAD"
msgstr "Подаването сочено от указателя „HEAD“ не може да бъде открито"
-#: sequencer.c:2852 sequencer.c:2896
+#: sequencer.c:2760 sequencer.c:2804
msgid "cannot abort from a branch yet to be born"
msgstr ""
"действието не може да бъде преустановено, когато сте на клон, който тепърва "
"предстои да бъде създаден"
-#: sequencer.c:2882 builtin/grep.c:736
+#: sequencer.c:2790 builtin/grep.c:724
#, c-format
msgid "cannot open '%s'"
msgstr "„%s“ не може да бъде отворен"
-#: sequencer.c:2884
+#: sequencer.c:2792
#, c-format
msgid "cannot read '%s': %s"
msgstr "„%s“ не може да бъде прочетен: %s"
-#: sequencer.c:2885
+#: sequencer.c:2793
msgid "unexpected end of file"
msgstr "неочакван край на файл"
-#: sequencer.c:2891
+#: sequencer.c:2799
#, c-format
msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
msgstr ""
"запазеният преди започването на отбирането файл за указателя „HEAD“ — „%s“ е "
"повреден"
-#: sequencer.c:2902
+#: sequencer.c:2810
msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
msgstr ""
"Изглежда указателят „HEAD“ е променен. Проверете към какво сочи.\n"
"Не се правят промени."
-#: sequencer.c:2943
+#: sequencer.c:2851
msgid "no revert in progress"
msgstr "в момента не тече пребазиране"
-#: sequencer.c:2951
+#: sequencer.c:2859
msgid "no cherry-pick in progress"
msgstr "в момента не се извършва отбиране на подавания"
-#: sequencer.c:2961
+#: sequencer.c:2869
msgid "failed to skip the commit"
msgstr "неуспешно прескачане на подаването"
-#: sequencer.c:2968
+#: sequencer.c:2876
msgid "there is nothing to skip"
msgstr "няма какво да се прескочи"
-#: sequencer.c:2971
+#: sequencer.c:2879
#, c-format
msgid ""
"have you committed already?\n"
@@ -7084,21 +7363,21 @@ msgstr ""
"\n"
" git %s --continue"
-#: sequencer.c:3095 sequencer.c:4121
+#: sequencer.c:3003 sequencer.c:4011
#, c-format
msgid "could not update %s"
msgstr "„%s“ не може да се обнови"
-#: sequencer.c:3134 sequencer.c:4101
+#: sequencer.c:3042 sequencer.c:3991
msgid "cannot read HEAD"
msgstr "указателят „HEAD“ не може да бъде прочетен"
-#: sequencer.c:3151
+#: sequencer.c:3059
#, c-format
msgid "unable to copy '%s' to '%s'"
msgstr "„%s“ не може да се копира като „%s“"
-#: sequencer.c:3159
+#: sequencer.c:3067
#, c-format
msgid ""
"You can amend the commit now, with\n"
@@ -7117,22 +7396,22 @@ msgstr ""
"\n"
" git rebase --continue\n"
-#: sequencer.c:3169
+#: sequencer.c:3077
#, c-format
msgid "Could not apply %s... %.*s"
msgstr "Подаването „%s“… не може да бъде приложено: „%.*s“"
-#: sequencer.c:3176
+#: sequencer.c:3084
#, c-format
msgid "Could not merge %.*s"
msgstr "Невъзможно сливане на „%.*s“"
-#: sequencer.c:3190 sequencer.c:3194 builtin/difftool.c:641
+#: sequencer.c:3098 sequencer.c:3102 builtin/difftool.c:641
#, c-format
msgid "could not copy '%s' to '%s'"
msgstr "„%s“ не може да се копира като „%s“"
-#: sequencer.c:3221
+#: sequencer.c:3129
#, c-format
msgid ""
"execution failed: %s\n"
@@ -7147,11 +7426,11 @@ msgstr ""
" git rebase --continue\n"
"\n"
-#: sequencer.c:3227
+#: sequencer.c:3135
msgid "and made changes to the index and/or the working tree\n"
msgstr "и променѝ индекса и/или работното дърво\n"
-#: sequencer.c:3233
+#: sequencer.c:3141
#, c-format
msgid ""
"execution succeeded: %s\n"
@@ -7168,72 +7447,72 @@ msgstr ""
" git rebase --continue\n"
"\n"
-#: sequencer.c:3294
+#: sequencer.c:3202
#, c-format
msgid "illegal label name: '%.*s'"
msgstr "неправилно име на етикет: „%.*s“"
-#: sequencer.c:3348
+#: sequencer.c:3256
msgid "writing fake root commit"
msgstr "запазване на фалшиво начално подаване"
-#: sequencer.c:3353
+#: sequencer.c:3261
msgid "writing squash-onto"
msgstr "запазване на подаването, в което другите да се вкарат"
-#: sequencer.c:3391 builtin/rebase.c:876 builtin/rebase.c:882
+#: sequencer.c:3299 builtin/rebase.c:880 builtin/rebase.c:886
#, c-format
msgid "failed to find tree of %s"
msgstr "дървото, сочено от „%s“, не може да бъде открито"
-#: sequencer.c:3436
+#: sequencer.c:3344
#, c-format
msgid "could not resolve '%s'"
msgstr "„%s“ не може да бъде открит"
-#: sequencer.c:3467
+#: sequencer.c:3375
msgid "cannot merge without a current revision"
msgstr "без текущо подаване не може да се слива"
-#: sequencer.c:3489
+#: sequencer.c:3397
#, c-format
msgid "unable to parse '%.*s'"
msgstr "„%.*s“ не може да се анализира"
-#: sequencer.c:3498
+#: sequencer.c:3406
#, c-format
msgid "nothing to merge: '%.*s'"
msgstr "няма нищо за сливане: „%.*s“"
-#: sequencer.c:3510
+#: sequencer.c:3418
msgid "octopus merge cannot be executed on top of a [new root]"
msgstr "върху начално подаване не може да се извърши множествено сливане"
-#: sequencer.c:3526
+#: sequencer.c:3434
#, c-format
msgid "could not get commit message of '%s'"
msgstr "съобщението за подаване към „%s“ не може да бъде получено"
-#: sequencer.c:3688
+#: sequencer.c:3594
#, c-format
msgid "could not even attempt to merge '%.*s'"
msgstr "сливането на „%.*s“ не може даже да започне"
-#: sequencer.c:3704
+#: sequencer.c:3610
msgid "merge: Unable to write new index file"
msgstr "сливане: новият индекс не може да бъде запазен"
-#: sequencer.c:3773 builtin/rebase.c:733
+#: sequencer.c:3679 builtin/rebase.c:737
#, c-format
msgid "Applied autostash.\n"
msgstr "Автоматично скатаното е приложено.\n"
-#: sequencer.c:3785
+#: sequencer.c:3691
#, c-format
msgid "cannot store %s"
msgstr "„%s“ не може да бъде запазен"
-#: sequencer.c:3788 builtin/rebase.c:749 git-rebase--preserve-merges.sh:113
+#: sequencer.c:3694 builtin/rebase.c:753 git-rebase--preserve-merges.sh:113
#, c-format
msgid ""
"Applying autostash resulted in conflicts.\n"
@@ -7244,31 +7523,26 @@ msgstr ""
"надеждно скатани. Можете да пробвате да ги приложите чрез „git stash pop“\n"
"или да ги изхвърлите чрез „git stash drop“, когато поискате.\n"
-#: sequencer.c:3849
-#, c-format
-msgid "could not checkout %s"
-msgstr "„%s“ не може да се изтегли"
-
-#: sequencer.c:3863
+#: sequencer.c:3755
#, c-format
msgid "%s: not a valid OID"
msgstr "„%s“ е неправилен идентификатор на обект"
-#: sequencer.c:3868 git-rebase--preserve-merges.sh:779
+#: sequencer.c:3760 git-rebase--preserve-merges.sh:779
msgid "could not detach HEAD"
msgstr "указателят „HEAD“ не може да се отдели"
-#: sequencer.c:3883
+#: sequencer.c:3775
#, c-format
msgid "Stopped at HEAD\n"
msgstr "Бе спряно при „HEAD“\n"
-#: sequencer.c:3885
+#: sequencer.c:3777
#, c-format
msgid "Stopped at %s\n"
msgstr "Бе спряно при „%s“\n"
-#: sequencer.c:3893
+#: sequencer.c:3785
#, c-format
msgid ""
"Could not execute the todo command\n"
@@ -7291,48 +7565,48 @@ msgstr ""
" git rebase --edit-todo\n"
" git rebase --continue\n"
-#: sequencer.c:3979
+#: sequencer.c:3869
#, c-format
msgid "Stopped at %s... %.*s\n"
msgstr "Спиране при „%s“… %.*s\n"
-#: sequencer.c:4050
+#: sequencer.c:3940
#, c-format
msgid "unknown command %d"
msgstr "непозната команда %d"
-#: sequencer.c:4109
+#: sequencer.c:3999
msgid "could not read orig-head"
msgstr "указателят за „orig-head“ не може да се прочете"
-#: sequencer.c:4114
+#: sequencer.c:4004
msgid "could not read 'onto'"
msgstr "указателят за „onto“ не може да се прочете"
-#: sequencer.c:4128
+#: sequencer.c:4018
#, c-format
msgid "could not update HEAD to %s"
msgstr "„HEAD“ не може да бъде обновен до „%s“"
-#: sequencer.c:4221
+#: sequencer.c:4111
msgid "cannot rebase: You have unstaged changes."
msgstr "не може да пребазирате, защото има промени, които не са в индекса."
-#: sequencer.c:4230
+#: sequencer.c:4120
msgid "cannot amend non-existing commit"
msgstr "несъществуващо подаване не може да се поправи"
-#: sequencer.c:4232
+#: sequencer.c:4122
#, c-format
msgid "invalid file: '%s'"
msgstr "неправилен файл: „%s“"
-#: sequencer.c:4234
+#: sequencer.c:4124
#, c-format
msgid "invalid contents: '%s'"
msgstr "неправилно съдържание: „%s“"
-#: sequencer.c:4237
+#: sequencer.c:4127
msgid ""
"\n"
"You have uncommitted changes in your working tree. Please, commit them\n"
@@ -7342,69 +7616,59 @@ msgstr ""
"В работното дърво има неподадени промени. Първо ги подайте, а след това\n"
"отново изпълнете „git rebase --continue“."
-#: sequencer.c:4273 sequencer.c:4312
+#: sequencer.c:4163 sequencer.c:4202
#, c-format
msgid "could not write file: '%s'"
msgstr "файлът „%s“ не може да бъде записан"
-#: sequencer.c:4327
+#: sequencer.c:4217
msgid "could not remove CHERRY_PICK_HEAD"
msgstr "указателят „CHERRY_PICK_HEAD“ не може да бъде изтрит"
-#: sequencer.c:4334
+#: sequencer.c:4224
msgid "could not commit staged changes."
msgstr "промените в индекса не могат да бъдат подадени."
-#: sequencer.c:4440
+#: sequencer.c:4338
#, c-format
msgid "%s: can't cherry-pick a %s"
msgstr "%s: не може да се отбере „%s“"
-#: sequencer.c:4444
+#: sequencer.c:4342
#, c-format
msgid "%s: bad revision"
msgstr "%s: неправилна версия"
-#: sequencer.c:4479
+#: sequencer.c:4377
msgid "can't revert as initial commit"
msgstr "първоначалното подаване не може да бъде отменено"
-#: sequencer.c:4952
+#: sequencer.c:4846
msgid "make_script: unhandled options"
msgstr "make_script: неподдържани опции"
-#: sequencer.c:4955
+#: sequencer.c:4849
msgid "make_script: error preparing revisions"
msgstr "make_script: грешка при подготовката на версии"
-#: sequencer.c:5113
-msgid ""
-"You can fix this with 'git rebase --edit-todo' and then run 'git rebase --"
-"continue'.\n"
-"Or you can abort the rebase with 'git rebase --abort'.\n"
-msgstr ""
-"Може да промените това с командите „git rebase --edit-todo“ и „git rebase --"
-"continue“ след това.\n"
-"Може и да преустановите пребазирането с командата „git rebase --abort“.\n"
-
-#: sequencer.c:5226 sequencer.c:5243
+#: sequencer.c:5083 sequencer.c:5100
msgid "nothing to do"
msgstr "няма какво да се прави"
-#: sequencer.c:5257
+#: sequencer.c:5119
msgid "could not skip unnecessary pick commands"
msgstr "излишните команди за отбиране не бяха прескочени"
-#: sequencer.c:5351
+#: sequencer.c:5213
msgid "the script was already rearranged."
msgstr "скриптът вече е преподреден."
#: setup.c:124
#, c-format
-msgid "'%s' is outside repository"
-msgstr "„%s“ е извън хранилището"
+msgid "'%s' is outside repository at '%s'"
+msgstr "„%s“ е извън хранилището при „%s“"
-#: setup.c:174
+#: setup.c:175
#, c-format
msgid ""
"%s: no such path in the working tree.\n"
@@ -7415,7 +7679,7 @@ msgstr ""
"\n"
" git КОМАНДА -- ПЪТ…"
-#: setup.c:187
+#: setup.c:188
#, c-format
msgid ""
"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
@@ -7428,12 +7692,12 @@ msgstr ""
"\n"
" git КОМАНДА [ВЕРСИЯ…] -- [ФАЙЛ…]"
-#: setup.c:236
+#: setup.c:254
#, c-format
msgid "option '%s' must come before non-option arguments"
msgstr "опцията „%s“ трябва да е преди първия аргумент, който не е опция"
-#: setup.c:255
+#: setup.c:273
#, c-format
msgid ""
"ambiguous argument '%s': both revision and filename\n"
@@ -7445,95 +7709,95 @@ msgstr ""
"\n"
" git КОМАНДА [ВЕРСИЯ…] -- [ФАЙЛ…]"
-#: setup.c:391
+#: setup.c:409
msgid "unable to set up work tree using invalid config"
msgstr ""
"не може да се зададе текуща работна директория при неправилни настройки"
-#: setup.c:395
+#: setup.c:413
msgid "this operation must be run in a work tree"
msgstr "тази команда трябва да се изпълни в работно дърво"
-#: setup.c:541
+#: setup.c:559
#, c-format
msgid "Expected git repo version <= %d, found %d"
msgstr "Очаква се версия на хранилището на git <= %d, а не %d"
-#: setup.c:549
+#: setup.c:567
msgid "unknown repository extensions found:"
msgstr "открити са непознати разширения в хранилището:"
-#: setup.c:568
+#: setup.c:586
#, c-format
msgid "error opening '%s'"
msgstr "„%s“ не може да се отвори"
-#: setup.c:570
+#: setup.c:588
#, c-format
msgid "too large to be a .git file: '%s'"
msgstr "прекалено голям файл „.git“: „%s“"
-#: setup.c:572
+#: setup.c:590
#, c-format
msgid "error reading %s"
msgstr "грешка при прочитане на „%s“"
-#: setup.c:574
+#: setup.c:592
#, c-format
msgid "invalid gitfile format: %s"
msgstr "неправилен формат на gitfile: %s"
-#: setup.c:576
+#: setup.c:594
#, c-format
msgid "no path in gitfile: %s"
msgstr "липсва път в gitfile: „%s“"
-#: setup.c:578
+#: setup.c:596
#, c-format
msgid "not a git repository: %s"
msgstr "не е хранилище на Git: %s"
-#: setup.c:677
+#: setup.c:695
#, c-format
msgid "'$%s' too big"
msgstr "„%s“ е прекалено голям"
-#: setup.c:691
+#: setup.c:709
#, c-format
msgid "not a git repository: '%s'"
msgstr "не е хранилище на git: „%s“"
-#: setup.c:720 setup.c:722 setup.c:753
+#: setup.c:738 setup.c:740 setup.c:771
#, c-format
msgid "cannot chdir to '%s'"
msgstr "не може да се влезе в директорията „%s“"
-#: setup.c:725 setup.c:781 setup.c:791 setup.c:830 setup.c:838
+#: setup.c:743 setup.c:799 setup.c:809 setup.c:848 setup.c:856
msgid "cannot come back to cwd"
msgstr "процесът не може да се върне към предишната работна директория"
-#: setup.c:852
+#: setup.c:870
#, c-format
msgid "failed to stat '%*s%s%s'"
msgstr "не може да бъде получена информация чрез „stat“ за „%*s%s%s“"
-#: setup.c:1090
+#: setup.c:1108
msgid "Unable to read current working directory"
msgstr "Текущата работна директория не може да бъде прочетена"
-#: setup.c:1099 setup.c:1105
+#: setup.c:1117 setup.c:1123
#, c-format
msgid "cannot change to '%s'"
msgstr "не може да се влезе в директорията „%s“"
-#: setup.c:1110
+#: setup.c:1128
#, c-format
msgid "not a git repository (or any of the parent directories): %s"
msgstr ""
"нито тази, нито която и да е от по-горните директории, не е хранилище на "
"git: %s"
-#: setup.c:1116
+#: setup.c:1134
#, c-format
msgid ""
"not a git repository (or any parent up to mount point %s)\n"
@@ -7544,7 +7808,7 @@ msgstr ""
"Git работи в рамките на една файлова система, защото променливата на средата "
"„GIT_DISCOVERY_ACROSS_FILESYSTEM“ не е зададена."
-#: setup.c:1227
+#: setup.c:1245
#, c-format
msgid ""
"problem with core.sharedRepository filemode value (0%.3o).\n"
@@ -7554,15 +7818,15 @@ msgstr ""
"(0%.3o).\n"
"Собственикът на файла трябва да има права за писане и четене."
-#: setup.c:1271
+#: setup.c:1289
msgid "open /dev/null or dup failed"
msgstr "неуспешно изпълнение на „open“ или „dup“ върху „/dev/null“"
-#: setup.c:1286
+#: setup.c:1304
msgid "fork failed"
msgstr "неуспешно създаване на процес чрез „fork“"
-#: setup.c:1291
+#: setup.c:1309
msgid "setsid failed"
msgstr "неуспешно изпълнение на „setsid“"
@@ -7647,198 +7911,198 @@ msgstr "неуспешно изпълнение на „mmap“"
msgid "object file %s is empty"
msgstr "файлът с обектите „%s“ е празен"
-#: sha1-file.c:1252 sha1-file.c:2392
+#: sha1-file.c:1263 sha1-file.c:2443
#, c-format
msgid "corrupt loose object '%s'"
msgstr "непакетираният обект „%s“ е повреден"
-#: sha1-file.c:1254 sha1-file.c:2396
+#: sha1-file.c:1265 sha1-file.c:2447
#, c-format
msgid "garbage at end of loose object '%s'"
msgstr "грешни данни в края на непакетирания обект „%s“"
-#: sha1-file.c:1296
+#: sha1-file.c:1307
msgid "invalid object type"
msgstr "неправилен вид обект"
-#: sha1-file.c:1380
+#: sha1-file.c:1391
#, c-format
msgid "unable to unpack %s header with --allow-unknown-type"
msgstr ""
"заглавната част „%s“ не може да се разпакетира с опцията „--allow-unknown-"
"type“"
-#: sha1-file.c:1383
+#: sha1-file.c:1394
#, c-format
msgid "unable to unpack %s header"
msgstr "заглавната част на „%s“ не може да бъде разпакетирана"
-#: sha1-file.c:1389
+#: sha1-file.c:1400
#, c-format
msgid "unable to parse %s header with --allow-unknown-type"
msgstr ""
"заглавната част „%s“ не може да се анализира с опцията „--allow-unknown-type“"
-#: sha1-file.c:1392
+#: sha1-file.c:1403
#, c-format
msgid "unable to parse %s header"
msgstr "заглавната част на „%s“ не може да бъде анализирана"
-#: sha1-file.c:1584
+#: sha1-file.c:1629
#, c-format
msgid "failed to read object %s"
msgstr "обектът „%s“ не може да бъде прочетен"
-#: sha1-file.c:1588
+#: sha1-file.c:1633
#, c-format
msgid "replacement %s not found for %s"
msgstr "заместителят „%s“ на „%s“ не може да бъде открит"
-#: sha1-file.c:1592
+#: sha1-file.c:1637
#, c-format
msgid "loose object %s (stored in %s) is corrupt"
msgstr "непакетираният обект „%s“ (в „%s“) е повреден"
-#: sha1-file.c:1596
+#: sha1-file.c:1641
#, c-format
msgid "packed object %s (stored in %s) is corrupt"
msgstr "пакетираният обект „%s“ (в „%s“) е повреден"
-#: sha1-file.c:1699
+#: sha1-file.c:1746
#, c-format
msgid "unable to write file %s"
msgstr "файлът „%s“ не може да бъде записан"
-#: sha1-file.c:1706
+#: sha1-file.c:1753
#, c-format
msgid "unable to set permission to '%s'"
msgstr "правата за достъп до „%s“ не могат да бъдат зададени"
-#: sha1-file.c:1713
+#: sha1-file.c:1760
msgid "file write error"
msgstr "грешка при запис на файл"
-#: sha1-file.c:1732
+#: sha1-file.c:1780
msgid "error when closing loose object file"
msgstr "грешка при затварянето на файла с непакетиран обект"
-#: sha1-file.c:1797
+#: sha1-file.c:1845
#, c-format
msgid "insufficient permission for adding an object to repository database %s"
msgstr ""
"няма права за добавяне на обект към базата от данни на хранилището „%s“"
-#: sha1-file.c:1799
+#: sha1-file.c:1847
msgid "unable to create temporary file"
msgstr "не може да бъде създаден временен файл"
-#: sha1-file.c:1823
+#: sha1-file.c:1871
msgid "unable to write loose object file"
msgstr "грешка при записа на файла с непакетиран обект"
-#: sha1-file.c:1829
+#: sha1-file.c:1877
#, c-format
msgid "unable to deflate new object %s (%d)"
msgstr "новият обект „%s“ не може да се компресира с „deflate“: %d"
-#: sha1-file.c:1833
+#: sha1-file.c:1881
#, c-format
msgid "deflateEnd on object %s failed (%d)"
msgstr "неуспешно приключване на „deflate“ върху „%s“: %d"
-#: sha1-file.c:1837
+#: sha1-file.c:1885
#, c-format
msgid "confused by unstable object source data for %s"
msgstr "грешка поради нестабилния източник данни за обектите „%s“"
-#: sha1-file.c:1847 builtin/pack-objects.c:925
+#: sha1-file.c:1895 builtin/pack-objects.c:1054
#, c-format
msgid "failed utime() on %s"
msgstr "неуспешно задаване на време на достъп/създаване чрез „utime“ на „%s“"
-#: sha1-file.c:1922
+#: sha1-file.c:1972
#, c-format
msgid "cannot read object for %s"
msgstr "обектът за „%s“ не може да се прочете"
-#: sha1-file.c:1962
+#: sha1-file.c:2011
msgid "corrupt commit"
msgstr "повредено подаване"
-#: sha1-file.c:1970
+#: sha1-file.c:2019
msgid "corrupt tag"
msgstr "повреден етикет"
-#: sha1-file.c:2069
+#: sha1-file.c:2119
#, c-format
msgid "read error while indexing %s"
msgstr "грешка при четене по време на индексиране на „%s“"
-#: sha1-file.c:2072
+#: sha1-file.c:2122
#, c-format
msgid "short read while indexing %s"
msgstr "непълно прочитане по време на индексиране на „%s“"
-#: sha1-file.c:2145 sha1-file.c:2154
+#: sha1-file.c:2195 sha1-file.c:2205
#, c-format
msgid "%s: failed to insert into database"
msgstr "„%s“ не може да се вмъкне в базата от данни"
-#: sha1-file.c:2160
+#: sha1-file.c:2211
#, c-format
msgid "%s: unsupported file type"
msgstr "неподдържан вид файл: „%s“"
-#: sha1-file.c:2184
+#: sha1-file.c:2235
#, c-format
msgid "%s is not a valid object"
msgstr "„%s“ е неправилен обект"
-#: sha1-file.c:2186
+#: sha1-file.c:2237
#, c-format
msgid "%s is not a valid '%s' object"
msgstr "„%s“ е неправилен обект от вид „%s“"
-#: sha1-file.c:2213 builtin/index-pack.c:155
+#: sha1-file.c:2264 builtin/index-pack.c:155
#, c-format
msgid "unable to open %s"
msgstr "обектът „%s“ не може да бъде отворен"
-#: sha1-file.c:2403 sha1-file.c:2455
+#: sha1-file.c:2454 sha1-file.c:2507
#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "неправилна контролна сума за „%s“ (трябва да е %s)"
-#: sha1-file.c:2427
+#: sha1-file.c:2478
#, c-format
msgid "unable to mmap %s"
msgstr "неуспешно изпълнение на „mmap“ върху „%s“"
-#: sha1-file.c:2432
+#: sha1-file.c:2483
#, c-format
msgid "unable to unpack header of %s"
msgstr "заглавната част на „%s“ не може да бъде разпакетирана"
-#: sha1-file.c:2438
+#: sha1-file.c:2489
#, c-format
msgid "unable to parse header of %s"
msgstr "заглавната част на „%s“ не може да бъде анализирана"
-#: sha1-file.c:2449
+#: sha1-file.c:2500
#, c-format
msgid "unable to unpack contents of %s"
msgstr "съдържанието на „%s“ не може да бъде разпакетирано"
-#: sha1-name.c:487
+#: sha1-name.c:486
#, c-format
msgid "short SHA1 %s is ambiguous"
msgstr "късият SHA1 „%s“ не е еднозначен"
-#: sha1-name.c:498
+#: sha1-name.c:497
msgid "The candidates are:"
msgstr "Възможностите са:"
-#: sha1-name.c:797
+#: sha1-name.c:796
msgid ""
"Git normally never creates a ref that ends with 40 hex characters\n"
"because it will be ignored when you just specify 40-hex. These refs\n"
@@ -7850,57 +8114,122 @@ 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"
+"При нормална работа Git никога не създава указатели, които завършват\n"
+"с 40 шестнадесетични знака, защото стандартно те ще бъдат прескачани.\n"
"Възможно е такива указатели да са създадени случайно. Например:\n"
"\n"
" git switch -c $BRANCH $(git rev-parse …)\n"
"\n"
-"където стойността на променливата на средата BRANCH е празна, при което се\n"
-"създава подобен указател. Прегледайте тези указатели и ги изтрийте. Може "
-"да\n"
-"спрете това съобщение като изпълните командата:\n"
+"където стойността на променливата на средата BRANCH е празна, при което\n"
+"се създава подобен указател. Прегледайте тези указатели и ги изтрийте.\n"
+"За да изключите това съобщение, изпълнете:\n"
"\n"
" git config advice.objectNameWarning false"
+#: sha1-name.c:916
+#, c-format
+msgid "log for '%.*s' only goes back to %s"
+msgstr "журналът за „%.*s“ стига само до „%s“"
+
+#: sha1-name.c:924
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr "журналът за „%.*s“ съдържа само %d записа"
+
+#: sha1-name.c:1689
+#, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "пътят „%s“ съществува на диска, но не и в „%.*s“"
+
+#: sha1-name.c:1695
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+"пътят „%s“ съществува на диска, но не е в „%s“\n"
+"Пробвайте с „%.*s:%s“, което е същото като „%.*s:./%s“."
+
+#: sha1-name.c:1704
+#, c-format
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "пътят „%s“ не съществува в „%.*s“"
+
+#: sha1-name.c:1732
+#, c-format
+msgid ""
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
+msgstr ""
+"пътят „%s“ е в индекса, но не версия %d\n"
+"Пробвайте с „%d:%s“."
+
+#: sha1-name.c:1748
+#, c-format
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+"пътят „%s“ е в индекса, но не в „%s“\n"
+"Пробвайте с „%d:%s“, което е същото като „%d:./%s“."
+
+#: sha1-name.c:1756
+#, c-format
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "пътят „%s“ съществува на диска, но не е в индекса"
+
+#: sha1-name.c:1758
+#, c-format
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "пътят „%s“ не съществува нито на диска, нито в индекса"
+
+#: sha1-name.c:1771
+msgid "relative path syntax can't be used outside working tree"
+msgstr "относителен път не може да се ползва извън работното дърво"
+
+#: sha1-name.c:1909
+#, c-format
+msgid "invalid object name '%.*s'."
+msgstr "неправилно име на обект: „%.*s“"
+
#. TRANSLATORS: IEC 80000-13:2008 gibibyte
-#: strbuf.c:822
+#: strbuf.c:837
#, c-format
msgid "%u.%2.2u GiB"
msgstr "%u.%2.2u GiB"
#. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
-#: strbuf.c:824
+#: strbuf.c:839
#, c-format
msgid "%u.%2.2u GiB/s"
msgstr "%u.%2.2u GiB/s"
#. TRANSLATORS: IEC 80000-13:2008 mebibyte
-#: strbuf.c:832
+#: strbuf.c:847
#, c-format
msgid "%u.%2.2u MiB"
msgstr "%u.%2.2u MiB"
#. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
-#: strbuf.c:834
+#: strbuf.c:849
#, c-format
msgid "%u.%2.2u MiB/s"
msgstr "%u.%2.2u MiB/s"
#. TRANSLATORS: IEC 80000-13:2008 kibibyte
-#: strbuf.c:841
+#: strbuf.c:856
#, c-format
msgid "%u.%2.2u KiB"
msgstr "%u.%2.2u KiB"
#. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
-#: strbuf.c:843
+#: strbuf.c:858
#, c-format
msgid "%u.%2.2u KiB/s"
msgstr "%u.%2.2u KiB/s"
#. TRANSLATORS: IEC 80000-13:2008 byte
-#: strbuf.c:849
+#: strbuf.c:864
#, c-format
msgid "%u byte"
msgid_plural "%u bytes"
@@ -7908,14 +8237,14 @@ msgstr[0] "%u байт"
msgstr[1] "%u байта"
#. TRANSLATORS: IEC 80000-13:2008 byte/second
-#: strbuf.c:851
+#: strbuf.c:866
#, c-format
msgid "%u byte/s"
msgid_plural "%u bytes/s"
msgstr[0] "%u байт/сек."
msgstr[1] "%u байта/сек."
-#: strbuf.c:1149
+#: strbuf.c:1164
#, c-format
msgid "could not edit '%s'"
msgstr "„%s“ не може да се редактира"
@@ -7950,56 +8279,129 @@ msgstr "в неподготвения подмодул „%s“"
msgid "Pathspec '%s' is in submodule '%.*s'"
msgstr "Пътят „%s“ е в подмодула „%.*s“"
+#: submodule.c:434
+#, c-format
+msgid "bad --ignore-submodules argument: %s"
+msgstr "неправилен аргумент за „--ignore-submodules“: „%s“"
+
+#: submodule.c:815
+#, c-format
+msgid ""
+"Submodule in commit %s at path: '%s' collides with a submodule named the "
+"same. Skipping it."
+msgstr ""
+"Подмодулът при подаване %s на пътя „%s“ е различен от другия модул със "
+"същото име, затова първият се прескача."
+
#: submodule.c:910
#, c-format
msgid "submodule entry '%s' (%s) is a %s, not a commit"
msgstr "записът за подмодула „%s“ (%s) е %s, а не подаване!"
-#: submodule.c:1147 builtin/branch.c:680 builtin/submodule--helper.c:2016
+#: submodule.c:995
+#, c-format
+msgid ""
+"Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
+"submodule %s"
+msgstr ""
+"Командата „git rev-list ПОДАВАНИЯ --not --remotes -n 1“ не може да се "
+"изпълни в подмодула „%s“"
+
+#: submodule.c:1118
+#, c-format
+msgid "process for submodule '%s' failed"
+msgstr "процесът за подмодула „%s“ завърши неуспешно"
+
+#: submodule.c:1147 builtin/branch.c:680 builtin/submodule--helper.c:2045
msgid "Failed to resolve HEAD as a valid ref."
msgstr "Не може да се открие към какво сочи указателят „HEAD“"
-#: submodule.c:1481
+#: submodule.c:1158
+#, c-format
+msgid "Pushing submodule '%s'\n"
+msgstr "Изтласкване на подмодула „%s“\n"
+
+#: submodule.c:1161
+#, c-format
+msgid "Unable to push submodule '%s'\n"
+msgstr "Подмодулът „%s“ не може да бъде изтласкан\n"
+
+#: submodule.c:1453
+#, c-format
+msgid "Fetching submodule %s%s\n"
+msgstr "Доставяне на подмодула „%s%s“\n"
+
+#: submodule.c:1483
#, c-format
-msgid "Could not access submodule '%s'"
-msgstr "Подмодулът „%s“ не може да бъде достъпен"
+msgid "Could not access submodule '%s'\n"
+msgstr "Подмодулът „%s“ не може да бъде достъпен\n"
-#: submodule.c:1651
+#: submodule.c:1637
+#, c-format
+msgid ""
+"Errors during submodule fetch:\n"
+"%s"
+msgstr ""
+"Грешки при доставяне на подмодул:\n"
+"%s"
+
+#: submodule.c:1662
#, c-format
msgid "'%s' not recognized as a git repository"
msgstr "„%s“ не е хранилище на git"
-#: submodule.c:1789
+#: submodule.c:1679
+#, c-format
+msgid "Could not run 'git status --porcelain=2' in submodule %s"
+msgstr ""
+"Командата „git status --porcelain=2“ не може да се изпълни в подмодула „%s“"
+
+#: submodule.c:1720
+#, c-format
+msgid "'git status --porcelain=2' failed in submodule %s"
+msgstr ""
+"командата „git status --porcelain=2“ не може да се изпълни в подмодула „%s“"
+
+#: submodule.c:1800
#, c-format
msgid "could not start 'git status' in submodule '%s'"
msgstr "командата „git status“ не може да се изпълни в подмодула „%s“"
-#: submodule.c:1802
+#: submodule.c:1813
#, c-format
msgid "could not run 'git status' in submodule '%s'"
msgstr "командата „git status“ не може да се изпълни в подмодула „%s“"
-#: submodule.c:1817
+#: submodule.c:1828
#, c-format
msgid "Could not unset core.worktree setting in submodule '%s'"
msgstr "Настройката „core.worktree“ не може да се изтрие в подмодула „%s“"
-#: submodule.c:1907
+#: submodule.c:1855 submodule.c:2165
+#, c-format
+msgid "could not recurse into submodule '%s'"
+msgstr "неуспешна обработка на поддиректориите в подмодула „%s“"
+
+#: submodule.c:1876
+msgid "could not reset submodule index"
+msgstr "неуспешно зануляване на индекса на подмодула"
+
+#: submodule.c:1918
#, c-format
msgid "submodule '%s' has dirty index"
msgstr "индексът на подмодула „%s“ не е чист"
-#: submodule.c:1959
+#: submodule.c:1970
#, c-format
msgid "Submodule '%s' could not be updated."
msgstr "Подмодулът „%s“ не може да се обнови."
-#: submodule.c:2027
+#: submodule.c:2038
#, c-format
msgid "submodule git dir '%s' is inside git dir '%.*s'"
msgstr "„%s“ (директория на подмодул) е в директорията на git: „%.*s“"
-#: submodule.c:2048
+#: submodule.c:2059
#, c-format
msgid ""
"relocate_gitdir for submodule '%s' with more than one worktree not supported"
@@ -8007,17 +8409,17 @@ msgstr ""
"не се поддържа „relocate_gitdir“ за подмодула „%s“, който има повече от едно "
"работно дърво"
-#: submodule.c:2060 submodule.c:2119
+#: submodule.c:2071 submodule.c:2130
#, c-format
msgid "could not lookup name for submodule '%s'"
msgstr "името на подмодула „%s“ не може да бъде намерено"
-#: submodule.c:2064
+#: submodule.c:2075
#, c-format
msgid "refusing to move '%s' into an existing git dir"
msgstr "„%s“ не може да се премести в съществуваща директория на git"
-#: submodule.c:2071
+#: submodule.c:2082
#, c-format
msgid ""
"Migrating git directory of '%s%s' from\n"
@@ -8028,16 +8430,11 @@ msgstr ""
"„%s“ към\n"
"„%s“\n"
-#: submodule.c:2154
-#, c-format
-msgid "could not recurse into submodule '%s'"
-msgstr "неуспешна обработка на поддиректориите в подмодула „%s“"
-
-#: submodule.c:2198
+#: submodule.c:2209
msgid "could not start ls-files in .."
msgstr "„ls-stat“ не може да се стартира в „..“"
-#: submodule.c:2237
+#: submodule.c:2248
#, c-format
msgid "ls-tree returned unexpected return code %d"
msgstr "„ls-tree“ завърши с неочакван изходен код: %d"
@@ -8063,7 +8460,7 @@ msgstr ""
msgid "invalid value for %s"
msgstr "Неправилна стойност за „%s“"
-#: submodule-config.c:769
+#: submodule-config.c:765
#, c-format
msgid "Could not update .gitmodules entry %s"
msgstr "Записът „%s“ във файла „.gitmodules“ не може да бъде променен"
@@ -8079,7 +8476,7 @@ msgstr "неуспешно изпълнение на завършващата к
msgid "unknown value '%s' for key '%s'"
msgstr "непозната стойност „%s“ за настройката „%s“"
-#: trailer.c:539 trailer.c:544 builtin/remote.c:295
+#: trailer.c:539 trailer.c:544 builtin/remote.c:298 builtin/remote.c:323
#, c-format
msgid "more than one %s"
msgstr "стойността „%s“ се повтаря в настройките"
@@ -8210,7 +8607,7 @@ msgstr "Преустановяване на действието."
msgid "failed to push all needed submodules"
msgstr "неуспешно изтласкване на всички необходими подмодули"
-#: transport.c:1345 transport-helper.c:656
+#: transport.c:1345 transport-helper.c:657
msgid "operation not supported by protocol"
msgstr "опцията не се поддържа от протокола"
@@ -8223,7 +8620,7 @@ msgstr "неуспешен пълен запис към насрещната п
msgid "unable to find remote helper for '%s'"
msgstr "насрещната помощна програма за „%s“ не може да бъде открита"
-#: transport-helper.c:160 transport-helper.c:570
+#: transport-helper.c:160 transport-helper.c:571
msgid "can't dup helper output fd"
msgstr ""
"файловият дескриптор от насрещната помощна програма не може да се дублира с "
@@ -8244,105 +8641,105 @@ msgstr ""
"насрещната помощна програма трябва да поддържа способност за изброяване на "
"указатели"
-#: transport-helper.c:284 transport-helper.c:424
+#: transport-helper.c:284 transport-helper.c:425
#, c-format
msgid "%s unexpectedly said: '%s'"
msgstr "„%s“ неочаквано върна: „%s“"
-#: transport-helper.c:413
+#: transport-helper.c:414
#, c-format
msgid "%s also locked %s"
msgstr "„%s“ заключи и „%s“"
-#: transport-helper.c:492
+#: transport-helper.c:493
msgid "couldn't run fast-import"
msgstr "неуспешно изпълнение на бързо внасяне"
-#: transport-helper.c:515
+#: transport-helper.c:516
msgid "error while running fast-import"
msgstr "грешка при изпълнението на бързо внасяне"
-#: transport-helper.c:544 transport-helper.c:1133
+#: transport-helper.c:545 transport-helper.c:1134
#, c-format
msgid "could not read ref %s"
msgstr "указателят „%s“ не може да се прочете"
-#: transport-helper.c:589
+#: transport-helper.c:590
#, c-format
msgid "unknown response to connect: %s"
msgstr "неочакван отговор при свързване: „%s“"
-#: transport-helper.c:611
+#: transport-helper.c:612
msgid "setting remote service path not supported by protocol"
msgstr "протоколът не поддържа задаването на път на отдалечената услуга"
-#: transport-helper.c:613
+#: transport-helper.c:614
msgid "invalid remote service path"
msgstr "неправилен път на отдалечената услуга"
-#: transport-helper.c:659
+#: transport-helper.c:660
#, c-format
msgid "can't connect to subservice %s"
msgstr "неуспешно свързване към подуслугата „%s“"
-#: transport-helper.c:735
+#: transport-helper.c:736
#, c-format
msgid "expected ok/error, helper said '%s'"
msgstr ""
"очаква се или успех, или грешка, но насрещната помощна програма върна „%s“"
-#: transport-helper.c:788
+#: transport-helper.c:789
#, c-format
msgid "helper reported unexpected status of %s"
msgstr "насрещната помощна програма завърши с неочакван изходен код: „%s“"
-#: transport-helper.c:849
+#: transport-helper.c:850
#, c-format
msgid "helper %s does not support dry-run"
msgstr "насрещната помощна програма „%s“ не поддържа проби „dry-run“"
-#: transport-helper.c:852
+#: transport-helper.c:853
#, c-format
msgid "helper %s does not support --signed"
msgstr "насрещната помощна програма „%s“ не поддържа опцията „--signed“"
-#: transport-helper.c:855
+#: transport-helper.c:856
#, c-format
msgid "helper %s does not support --signed=if-asked"
msgstr ""
"насрещната помощна програма „%s“ не поддържа опцията „--signed=if-asked“"
-#: transport-helper.c:860
+#: transport-helper.c:861
#, c-format
msgid "helper %s does not support --atomic"
msgstr "насрещната помощна програма „%s“ не поддържа опцията „--atomic“"
-#: transport-helper.c:866
+#: transport-helper.c:867
#, c-format
msgid "helper %s does not support 'push-option'"
msgstr "насрещната помощна програма „%s“ не поддържа опции за изтласкване"
-#: transport-helper.c:964
+#: transport-helper.c:965
msgid "remote-helper doesn't support push; refspec needed"
msgstr ""
"насрещната помощна програма не поддържа изтласкване. Необходимо е "
"изброяване на указателите"
-#: transport-helper.c:969
+#: transport-helper.c:970
#, c-format
msgid "helper %s does not support 'force'"
msgstr ""
"насрещната помощна програма не поддържа „%s“ поддържа опцията „--force“"
-#: transport-helper.c:1016
+#: transport-helper.c:1017
msgid "couldn't run fast-export"
msgstr "не може да се извърши бързо изнасяне"
-#: transport-helper.c:1021
+#: transport-helper.c:1022
msgid "error while running fast-export"
msgstr "грешка при изпълнението на командата за бързо изнасяне"
-#: transport-helper.c:1046
+#: transport-helper.c:1047
#, c-format
msgid ""
"No refs in common and none specified; doing nothing.\n"
@@ -8351,63 +8748,63 @@ msgstr ""
"Няма общи указатели, не са указани никакви указатели — нищо няма да бъде\n"
"направено. Пробвайте да укажете клон, напр. “master“.\n"
-#: transport-helper.c:1119
+#: transport-helper.c:1120
#, c-format
msgid "malformed response in ref list: %s"
msgstr "неправилен отговор в списъка с указатели: „%s“"
-#: transport-helper.c:1271
+#: transport-helper.c:1272
#, c-format
msgid "read(%s) failed"
msgstr "неуспешно четене на „%s“"
-#: transport-helper.c:1298
+#: transport-helper.c:1299
#, c-format
msgid "write(%s) failed"
msgstr "неуспешен запис в „%s“"
-#: transport-helper.c:1347
+#: transport-helper.c:1348
#, c-format
msgid "%s thread failed"
msgstr "неуспешно изпълнение на нишката „%s“"
-#: transport-helper.c:1351
+#: transport-helper.c:1352
#, c-format
msgid "%s thread failed to join: %s"
msgstr "завършването на нишката „%s“ не може да се изчака: „%s“"
-#: transport-helper.c:1370 transport-helper.c:1374
+#: transport-helper.c:1371 transport-helper.c:1375
#, c-format
msgid "can't start thread for copying data: %s"
msgstr "неуспешно стартиране на нишка за копиране на данните: „%s“"
-#: transport-helper.c:1411
+#: transport-helper.c:1412
#, c-format
msgid "%s process failed to wait"
msgstr "процесът на „%s“ не успя да изчака чрез „waitpid“"
-#: transport-helper.c:1415
+#: transport-helper.c:1416
#, c-format
msgid "%s process failed"
msgstr "неуспешно изпълнение на „%s“"
-#: transport-helper.c:1433 transport-helper.c:1442
+#: transport-helper.c:1434 transport-helper.c:1443
msgid "can't start thread for copying data"
msgstr "неуспешно стартиране на нишка за копиране на данните"
-#: tree-walk.c:33
+#: tree-walk.c:32
msgid "too-short tree object"
msgstr "прекалено кратък обект-дърво"
-#: tree-walk.c:39
+#: tree-walk.c:38
msgid "malformed mode in tree entry"
msgstr "неправилни права за достъп в запис в дърво"
-#: tree-walk.c:43
+#: tree-walk.c:42
msgid "empty filename in tree entry"
msgstr "празно име на файл в запис в дърво"
-#: tree-walk.c:118
+#: tree-walk.c:117
msgid "too-short tree file"
msgstr "прекалено кратък файл-дърво"
@@ -8649,7 +9046,7 @@ msgstr ""
"във файлови системи, които не различават главни от малки букви)\n"
"и само един от участниците в конфликта е в работното дърво:\n"
-#: unpack-trees.c:1441
+#: unpack-trees.c:1445
msgid "Updating index flags"
msgstr "Обновяване на флаговете на индекса"
@@ -8682,33 +9079,37 @@ msgstr "неправилен номер на порт"
msgid "invalid '..' path segment"
msgstr "неправилна част от пътя „..“"
-#: worktree.c:258 builtin/am.c:2084
+#: walker.c:170
+msgid "Fetching objects"
+msgstr "Доставяне на обектите"
+
+#: worktree.c:259 builtin/am.c:2099
#, c-format
msgid "failed to read '%s'"
msgstr "„%s“ не може да бъде прочетен"
-#: worktree.c:304
+#: worktree.c:305
#, c-format
msgid "'%s' at main working tree is not the repository directory"
msgstr "„%s“ в основното работно дърво не е директорията на хранилището"
-#: worktree.c:315
+#: worktree.c:316
#, c-format
msgid "'%s' file does not contain absolute path to the working tree location"
msgstr ""
"файлът „%s“ не съдържа абсолютния път към местоположението на работното дърво"
-#: worktree.c:327
+#: worktree.c:328
#, c-format
msgid "'%s' does not exist"
msgstr "„%s“ не съществува."
-#: worktree.c:333
+#: worktree.c:334
#, c-format
msgid "'%s' is not a .git file, error code %d"
msgstr "„%s“ не е файл на .git, код за грешка: %d"
-#: worktree.c:341
+#: worktree.c:342
#, c-format
msgid "'%s' does not point back to '%s'"
msgstr "„%s“ не сочи към обратно към „%s“"
@@ -9276,128 +9677,132 @@ msgstr "неуспешно изтриване на „%s“"
msgid "git add [<options>] [--] <pathspec>..."
msgstr "git add [ОПЦИЯ…] [--] ПЪТ…"
-#: builtin/add.c:87
+#: builtin/add.c:88
#, c-format
msgid "unexpected diff status %c"
msgstr "неочакван изходен код при генериране на разлика: %c"
-#: builtin/add.c:92 builtin/commit.c:288
+#: builtin/add.c:93 builtin/commit.c:288
msgid "updating files failed"
msgstr "неуспешно обновяване на файловете"
-#: builtin/add.c:102
+#: builtin/add.c:103
#, c-format
msgid "remove '%s'\n"
msgstr "изтриване на „%s“\n"
-#: builtin/add.c:177
+#: builtin/add.c:178
msgid "Unstaged changes after refreshing the index:"
msgstr "Промени, които и след обновяването на индекса не са добавени към него:"
-#: builtin/add.c:252 builtin/rev-parse.c:899
+#: builtin/add.c:266 builtin/rev-parse.c:899
msgid "Could not read the index"
msgstr "Индексът не може да бъде прочетен"
-#: builtin/add.c:263
+#: builtin/add.c:277
#, c-format
msgid "Could not open '%s' for writing."
msgstr "Файлът „%s“ не може да бъде отворен за запис."
-#: builtin/add.c:267
+#: builtin/add.c:281
msgid "Could not write patch"
msgstr "Кръпката не може да бъде записана"
-#: builtin/add.c:270
+#: builtin/add.c:284
msgid "editing patch failed"
msgstr "неуспешно редактиране на кръпка"
-#: builtin/add.c:273
+#: builtin/add.c:287
#, c-format
msgid "Could not stat '%s'"
msgstr "Не може да се получи информация чрез „stat“ за файла „%s“"
-#: builtin/add.c:275
+#: builtin/add.c:289
msgid "Empty patch. Aborted."
msgstr "Празна кръпка, преустановяване на действието."
-#: builtin/add.c:280
+#: builtin/add.c:294
#, c-format
msgid "Could not apply '%s'"
msgstr "Кръпката „%s“ не може да бъде приложена"
-#: builtin/add.c:288
+#: builtin/add.c:302
msgid "The following paths are ignored by one of your .gitignore files:\n"
msgstr ""
"Следните пътища ще бъдат игнорирани според някой от файловете „.gitignore“:\n"
-#: builtin/add.c:308 builtin/clean.c:910 builtin/fetch.c:163 builtin/mv.c:124
-#: builtin/prune-packed.c:56 builtin/pull.c:223 builtin/push.c:548
-#: builtin/remote.c:1344 builtin/rm.c:241 builtin/send-pack.c:165
+#: builtin/add.c:322 builtin/clean.c:910 builtin/fetch.c:163 builtin/mv.c:124
+#: builtin/prune-packed.c:56 builtin/pull.c:203 builtin/push.c:548
+#: builtin/remote.c:1421 builtin/rm.c:242 builtin/send-pack.c:165
msgid "dry run"
msgstr "пробно изпълнение"
-#: builtin/add.c:311
+#: builtin/add.c:325
msgid "interactive picking"
msgstr "интерактивно отбиране на промени"
-#: builtin/add.c:312 builtin/checkout.c:1482 builtin/reset.c:307
+#: builtin/add.c:326 builtin/checkout.c:1511 builtin/reset.c:307
msgid "select hunks interactively"
msgstr "интерактивен избор на парчета код"
-#: builtin/add.c:313
+#: builtin/add.c:327
msgid "edit current diff and apply"
msgstr "редактиране на текущата разлика и прилагане"
-#: builtin/add.c:314
+#: builtin/add.c:328
msgid "allow adding otherwise ignored files"
msgstr "добавяне и на иначе игнорираните файлове"
-#: builtin/add.c:315
+#: builtin/add.c:329
msgid "update tracked files"
msgstr "обновяване на следените файлове"
-#: builtin/add.c:316
+#: builtin/add.c:330
msgid "renormalize EOL of tracked files (implies -u)"
msgstr "уеднаквяване на знаците за край на файл (включва опцията „-u“)"
-#: builtin/add.c:317
+#: builtin/add.c:331
msgid "record only the fact that the path will be added later"
msgstr "отбелязване само на факта, че пътят ще бъде добавен по-късно"
-#: builtin/add.c:318
+#: builtin/add.c:332
msgid "add changes from all tracked and untracked files"
msgstr "добавяне на всички промени в следените и неследените файлове"
-#: builtin/add.c:321
+#: builtin/add.c:335
msgid "ignore paths removed in the working tree (same as --no-all)"
msgstr ""
"игнориране на пътищата, които са изтрити от работното дърво (същото като „--"
"no-all“)"
-#: builtin/add.c:323
+#: builtin/add.c:337
msgid "don't add, only refresh the index"
msgstr "без добавяне на нови файлове, само обновяване на индекса"
-#: builtin/add.c:324
+#: builtin/add.c:338
msgid "just skip files which cannot be added because of errors"
msgstr ""
"прескачане на файловете, които не могат да бъдат добавени поради грешки"
-#: builtin/add.c:325
+#: builtin/add.c:339
msgid "check if - even missing - files are ignored in dry run"
msgstr ""
"проверка, че при пробно изпълнение всички файлове, дори и изтритите, се "
"игнорират"
-#: builtin/add.c:327 builtin/update-index.c:1004
+#: builtin/add.c:341 builtin/update-index.c:1004
msgid "override the executable bit of the listed files"
msgstr "изрично задаване на стойността на флага дали файлът е изпълним"
-#: builtin/add.c:329
+#: builtin/add.c:343
msgid "warn when adding an embedded repository"
msgstr "предупреждаване при добавяне на вградено хранилище"
-#: builtin/add.c:347
+#: builtin/add.c:345
+msgid "backend for `git stash -p`"
+msgstr "реализация на „git stash -p“"
+
+#: builtin/add.c:363
#, c-format
msgid ""
"You've added another git repository inside your current repository.\n"
@@ -9428,168 +9833,180 @@ msgstr ""
"\n"
"За повече информация погледнете „git help submodule“."
-#: builtin/add.c:375
+#: builtin/add.c:391
#, c-format
msgid "adding embedded git repository: %s"
msgstr "добавяне на вградено хранилище: %s"
-#: builtin/add.c:393
-#, c-format
-msgid "Use -f if you really want to add them.\n"
-msgstr "Използвайте опцията „-f“, за да ги добавите наистина.\n"
+#: builtin/add.c:410
+msgid ""
+"Use -f if you really want to add them.\n"
+"Turn this message off by running\n"
+"\"git config advice.addIgnoredFile false\""
+msgstr ""
+"Ползвайте опцията „-f“, ако наистина искате да ги добавите.\n"
+"За да изключите това съобщение, изпълнете:\n"
+"\n"
+" git config advice.addIgnoredFile false"
-#: builtin/add.c:400
+#: builtin/add.c:419
msgid "adding files failed"
msgstr "неуспешно добавяне на файлове"
-#: builtin/add.c:428 builtin/commit.c:348
+#: builtin/add.c:447 builtin/commit.c:348
msgid "--pathspec-from-file is incompatible with --interactive/--patch"
msgstr ""
"опцията „--pathspec-from-file“ е несъвместима с всяка от опциите „--"
"interactive“/„--patch“"
-#: builtin/add.c:434
+#: builtin/add.c:464
msgid "--pathspec-from-file is incompatible with --edit"
msgstr "опциите „--pathspec-from-file“ и „--edit“ са несъвместими"
-#: builtin/add.c:446
+#: builtin/add.c:476
msgid "-A and -u are mutually incompatible"
msgstr "опциите „-A“ и „-u“ са несъвместими"
-#: builtin/add.c:449
+#: builtin/add.c:479
msgid "Option --ignore-missing can only be used together with --dry-run"
msgstr "Опцията „--ignore-missing“ изисква „--dry-run“"
-#: builtin/add.c:453
+#: builtin/add.c:483
#, c-format
msgid "--chmod param '%s' must be either -x or +x"
msgstr "параметърът към „--chmod“ — „%s“ може да е или „-x“, или „+x“"
-#: builtin/add.c:471 builtin/checkout.c:1648 builtin/commit.c:354
-#: builtin/reset.c:327
+#: builtin/add.c:501 builtin/checkout.c:1675 builtin/commit.c:354
+#: builtin/reset.c:327 builtin/rm.c:272 builtin/stash.c:1509
msgid "--pathspec-from-file is incompatible with pathspec arguments"
msgstr ""
"опцията „--pathspec-from-file“ е несъвместима с аргументи, указващи пътища"
-#: builtin/add.c:478 builtin/checkout.c:1660 builtin/commit.c:360
-#: builtin/reset.c:333
+#: builtin/add.c:508 builtin/checkout.c:1687 builtin/commit.c:360
+#: builtin/reset.c:333 builtin/rm.c:278 builtin/stash.c:1515
msgid "--pathspec-file-nul requires --pathspec-from-file"
msgstr "опцията „--pathspec-file-nul“ изисква опция „--pathspec-from-file“"
-#: builtin/add.c:482
+#: builtin/add.c:512
#, c-format
msgid "Nothing specified, nothing added.\n"
msgstr "Нищо не е зададено и нищо не е добавено.\n"
-#: builtin/add.c:483
-#, c-format
-msgid "Maybe you wanted to say 'git add .'?\n"
-msgstr "Вероятно искахте да използвате „git add .“?\n"
+#: builtin/add.c:514
+msgid ""
+"Maybe you wanted to say 'git add .'?\n"
+"Turn this message off by running\n"
+"\"git config advice.addEmptyPathspec false\""
+msgstr ""
+"„git add .“ ли искахте да изпълните?\n"
+"За да изключите това съобщение, изпълнете:\n"
+"\n"
+" git config advice.addEmptyPathspec false"
-#: builtin/am.c:347
+#: builtin/am.c:352
msgid "could not parse author script"
msgstr "скриптът за автор не може да се анализира"
-#: builtin/am.c:431
+#: builtin/am.c:436
#, c-format
msgid "'%s' was deleted by the applypatch-msg hook"
msgstr "„%s“ бе изтрит от куката „applypatch-msg“"
-#: builtin/am.c:473
+#: builtin/am.c:478
#, c-format
msgid "Malformed input line: '%s'."
msgstr "Даденият входен ред е с неправилен формат: „%s“."
-#: builtin/am.c:511