aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.cirrus.yml8
-rw-r--r--.github/workflows/coverity.yml8
-rw-r--r--Documentation/BreakingChanges.adoc8
-rw-r--r--Documentation/CodingGuidelines14
-rw-r--r--Documentation/Makefile7
-rw-r--r--Documentation/MyFirstObjectWalk.adoc39
-rw-r--r--Documentation/RelNotes/2.43.7.adoc73
-rw-r--r--Documentation/RelNotes/2.44.4.adoc7
-rw-r--r--Documentation/RelNotes/2.45.4.adoc7
-rw-r--r--Documentation/RelNotes/2.46.4.adoc7
-rw-r--r--Documentation/RelNotes/2.47.3.adoc8
-rw-r--r--Documentation/RelNotes/2.48.2.adoc8
-rw-r--r--Documentation/RelNotes/2.49.1.adoc12
-rw-r--r--Documentation/RelNotes/2.50.0.adoc48
-rw-r--r--Documentation/RelNotes/2.50.1.adoc8
-rw-r--r--Documentation/RelNotes/2.51.0.adoc138
-rw-r--r--Documentation/config/branch.adoc4
-rw-r--r--Documentation/config/checkout.adoc14
-rw-r--r--Documentation/config/feature.adoc4
-rw-r--r--Documentation/config/fmt-merge-msg.adoc8
-rw-r--r--Documentation/config/format.adoc6
-rw-r--r--Documentation/config/gitcvs.adoc3
-rw-r--r--Documentation/config/http.adoc3
-rw-r--r--Documentation/config/imap.adoc11
-rw-r--r--Documentation/config/log.adoc11
-rw-r--r--Documentation/config/merge.adoc98
-rw-r--r--Documentation/config/mergetool.adoc54
-rw-r--r--Documentation/config/pack.adoc4
-rw-r--r--Documentation/config/sendemail.adoc20
-rw-r--r--Documentation/diff-generate-patch.adoc2
-rw-r--r--Documentation/git-cat-file.adoc13
-rw-r--r--Documentation/git-checkout.adoc228
-rw-r--r--Documentation/git-column.adoc6
-rw-r--r--Documentation/git-diff.adoc10
-rw-r--r--Documentation/git-fast-export.adoc12
-rw-r--r--Documentation/git-fast-import.adoc3
-rw-r--r--Documentation/git-imap-send.adoc68
-rw-r--r--Documentation/git-maintenance.adoc2
-rw-r--r--Documentation/git-merge.adoc51
-rw-r--r--Documentation/git-mergetool.adoc62
-rw-r--r--Documentation/git-pack-objects.adoc25
-rw-r--r--Documentation/git-repack.adoc5
-rw-r--r--Documentation/git-send-email.adoc257
-rw-r--r--Documentation/git-stash.adoc29
-rw-r--r--Documentation/git-switch.adoc114
-rw-r--r--Documentation/git-whatchanged.adoc10
-rw-r--r--Documentation/gitcredentials.adoc4
-rw-r--r--Documentation/gitprotocol-v2.adoc4
-rw-r--r--Documentation/gitremote-helpers.adoc2
-rw-r--r--Documentation/merge-options.adoc113
-rw-r--r--Documentation/merge-strategies.adoc58
-rw-r--r--Documentation/mergetools/vimdiff.adoc16
-rw-r--r--Documentation/meson.build2
-rw-r--r--Documentation/pretty-options.adoc5
-rw-r--r--Documentation/rerere-options.adoc4
-rw-r--r--Documentation/rev-list-options.adoc9
-rw-r--r--Documentation/technical/api-path-walk.adoc9
-rw-r--r--Documentation/technical/build-systems.adoc5
-rw-r--r--Documentation/technical/sparse-checkout.adoc4
-rw-r--r--Documentation/user-manual.adoc2
-rwxr-xr-xGIT-VERSION-GEN4
l---------RelNotes2
-rw-r--r--branch.c4
-rw-r--r--builtin/am.c4
-rw-r--r--builtin/cat-file.c14
-rw-r--r--builtin/checkout.c4
-rw-r--r--builtin/commit-graph.c1
-rw-r--r--builtin/diff.c2
-rw-r--r--builtin/fast-export.c7
-rw-r--r--builtin/fetch-pack.c7
-rw-r--r--builtin/fetch.c129
-rw-r--r--builtin/gc.c410
-rw-r--r--builtin/log.c19
-rw-r--r--builtin/merge.c66
-rw-r--r--builtin/mktag.c2
-rw-r--r--builtin/pack-objects.c425
-rw-r--r--builtin/pack-redundant.c10
-rw-r--r--builtin/pull.c5
-rw-r--r--builtin/receive-pack.c98
-rw-r--r--builtin/repack.c7
-rw-r--r--builtin/replay.c1
-rw-r--r--builtin/send-pack.c9
-rw-r--r--builtin/shortlog.c3
-rw-r--r--builtin/stash.c480
-rw-r--r--builtin/submodule--helper.c122
-rw-r--r--builtin/update-ref.c25
-rw-r--r--builtin/worktree.c2
-rw-r--r--bundle-uri.c24
-rw-r--r--compat/bswap.h14
-rw-r--r--compat/posix.h10
-rw-r--r--config.c7
-rw-r--r--config.mak.uname33
-rw-r--r--contrib/coccinelle/commit.cocci3
-rw-r--r--contrib/credential/netrc/meson.build2
-rw-r--r--contrib/credential/wincred/git-credential-wincred.c22
-rw-r--r--contrib/emacs/README33
-rw-r--r--contrib/emacs/git-blame.el6
-rw-r--r--contrib/emacs/git.el6
-rw-r--r--contrib/examples/README20
-rwxr-xr-xcontrib/git-resurrect.sh181
-rw-r--r--contrib/hooks/multimail/README.Git7
-rwxr-xr-xcontrib/hooks/post-receive-email759
-rwxr-xr-xcontrib/hooks/pre-auto-gc-battery42
-rwxr-xr-xcontrib/hooks/setgitperms.perl214
-rwxr-xr-xcontrib/hooks/update-paranoid421
-rw-r--r--contrib/mw-to-git/.gitignore2
-rw-r--r--contrib/mw-to-git/.perlcriticrc28
-rw-r--r--contrib/mw-to-git/Git/Mediawiki.pm101
-rw-r--r--contrib/mw-to-git/Makefile61
-rwxr-xr-xcontrib/mw-to-git/bin-wrapper/git14
-rwxr-xr-xcontrib/mw-to-git/git-mw.perl368
-rwxr-xr-xcontrib/mw-to-git/git-remote-mediawiki.perl1390
-rw-r--r--contrib/mw-to-git/git-remote-mediawiki.txt7
-rw-r--r--contrib/mw-to-git/t/.gitignore4
-rw-r--r--contrib/mw-to-git/t/Makefile32
-rw-r--r--contrib/mw-to-git/t/README124
-rwxr-xr-xcontrib/mw-to-git/t/install-wiki.sh55
-rw-r--r--contrib/mw-to-git/t/push-pull-tests.sh144
-rwxr-xr-xcontrib/mw-to-git/t/t9360-mw-to-git-clone.sh257
-rwxr-xr-xcontrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh24
-rwxr-xr-xcontrib/mw-to-git/t/t9362-mw-to-git-utf8.sh347
-rwxr-xr-xcontrib/mw-to-git/t/t9363-mw-to-git-export-import.sh218
-rwxr-xr-xcontrib/mw-to-git/t/t9364-pull-by-rev.sh17
-rwxr-xr-xcontrib/mw-to-git/t/t9365-continuing-queries.sh23
-rwxr-xr-xcontrib/mw-to-git/t/test-gitmw-lib.sh432
-rwxr-xr-xcontrib/mw-to-git/t/test-gitmw.pl223
-rw-r--r--contrib/mw-to-git/t/test.config40
-rw-r--r--contrib/persistent-https/LICENSE202
-rw-r--r--contrib/persistent-https/Makefile43
-rw-r--r--contrib/persistent-https/README72
-rw-r--r--contrib/persistent-https/client.go189
-rw-r--r--contrib/persistent-https/main.go82
-rw-r--r--contrib/persistent-https/proxy.go190
-rw-r--r--contrib/persistent-https/socket.go97
-rw-r--r--contrib/remote-helpers/README15
-rwxr-xr-xcontrib/remote-helpers/git-remote-bzr11
-rwxr-xr-xcontrib/remote-helpers/git-remote-hg11
-rwxr-xr-xcontrib/remotes2config.sh33
-rwxr-xr-xcontrib/stats/git-common-hash26
-rwxr-xr-xcontrib/stats/mailmap.pl70
-rw-r--r--contrib/subtree/README2
-rw-r--r--contrib/subtree/git-subtree.adoc19
-rwxr-xr-xcontrib/subtree/git-subtree.sh66
-rw-r--r--contrib/subtree/meson.build2
-rwxr-xr-xcontrib/subtree/t/t7900-subtree.sh113
-rw-r--r--contrib/thunderbird-patch-inline/README20
-rwxr-xr-xcontrib/thunderbird-patch-inline/appp.sh55
-rw-r--r--contrib/workdir/.gitattributes1
-rwxr-xr-xcontrib/workdir/git-new-workdir105
-rw-r--r--daemon.c17
-rw-r--r--diff-no-index.c95
-rw-r--r--dir.c19
-rw-r--r--dir.h23
-rw-r--r--environment.c3
-rw-r--r--environment.h1
-rwxr-xr-xgenerate-configlist.sh9
-rw-r--r--git-compat-util.h2
-rwxr-xr-xgit-gui/generate-tclindex.sh2
-rwxr-xr-xgit-gui/git-gui.sh510
-rw-r--r--git-gui/lib/blame.tcl12
-rw-r--r--git-gui/lib/branch.tcl6
-rw-r--r--git-gui/lib/browser.tcl2
-rw-r--r--git-gui/lib/checkout_op.tcl25
-rw-r--r--git-gui/lib/choose_repository.tcl23
-rw-r--r--git-gui/lib/choose_rev.tcl8
-rw-r--r--git-gui/lib/commit.tcl14
-rw-r--r--git-gui/lib/console.tcl5
-rw-r--r--git-gui/lib/database.tcl2
-rw-r--r--git-gui/lib/diff.tcl12
-rw-r--r--git-gui/lib/index.tcl8
-rw-r--r--git-gui/lib/merge.tcl6
-rw-r--r--git-gui/lib/mergetool.tcl8
-rw-r--r--git-gui/lib/remote.tcl8
-rw-r--r--git-gui/lib/remote_branch_delete.tcl2
-rw-r--r--git-gui/lib/shortcut.tcl14
-rw-r--r--git-gui/lib/sshkey.tcl7
-rw-r--r--git-gui/lib/tools.tcl7
-rw-r--r--git-gui/lib/win32.tcl9
-rwxr-xr-xgit-send-email.perl13
-rw-r--r--git.c6
-rwxr-xr-xgitk-git/gitk277
-rw-r--r--hash.h1
-rw-r--r--http-push.c8
-rw-r--r--http.c50
-rw-r--r--ident.c4
-rw-r--r--imap-send.c416
-rw-r--r--mailinfo.c2
-rw-r--r--mergetools/vimdiff4
-rw-r--r--meson.build12
-rw-r--r--object-name.c6
-rw-r--r--pack-bitmap-write.c2
-rw-r--r--pack-bitmap.c4
-rw-r--r--pack-objects.h12
-rw-r--r--path-walk.c6
-rw-r--r--path-walk.h7
-rw-r--r--pathspec.c6
-rw-r--r--pathspec.h11
-rw-r--r--po/TEAMS4
-rw-r--r--po/bg.po1314
-rw-r--r--po/de.po685
-rw-r--r--po/fr.po916
-rw-r--r--po/ga.po29758
-rw-r--r--po/id.po837
-rw-r--r--po/tr.po724
-rw-r--r--po/uk.po649
-rw-r--r--po/zh_CN.po825
-rw-r--r--po/zh_TW.po1159
-rw-r--r--preload-index.c7
-rw-r--r--refs.c20
-rw-r--r--refs.h5
-rw-r--r--refs/files-backend.c10
-rw-r--r--remote-curl.c12
-rw-r--r--remote.c141
-rw-r--r--remote.h8
-rw-r--r--repo-settings.c3
-rw-r--r--repo-settings.h1
-rw-r--r--revision.c1
-rw-r--r--scalar.c1
-rw-r--r--send-pack.c7
-rw-r--r--sequencer.c6
-rw-r--r--sub-process.h2
-rw-r--r--submodule-config.c12
-rw-r--r--t/README4
-rw-r--r--t/helper/test-path-walk.c2
-rw-r--r--t/meson.build7
-rwxr-xr-xt/perf/p5313-pack-objects.sh37
-rwxr-xr-xt/t0000-basic.sh39
-rwxr-xr-xt/t0021-conversion.sh4
-rwxr-xr-xt/t0050-filesystem.sh30
-rwxr-xr-xt/t0411-clone-from-partial.sh6
-rw-r--r--t/t0450/adoc-help-mismatches1
-rwxr-xr-xt/t0602-reffiles-fsck.sh19
-rwxr-xr-xt/t0610-reftable-basics.sh6
-rwxr-xr-xt/t0612-reftable-jgit-compatibility.sh13
-rwxr-xr-xt/t0613-reftable-write-options.sh24
-rwxr-xr-xt/t1006-cat-file.sh111
-rwxr-xr-xt/t1007-hash-object.sh2
-rwxr-xr-xt/t1021-rerere-in-workdir.sh58
-rwxr-xr-xt/t1300-config.sh11
-rwxr-xr-xt/t1400-update-ref.sh55
-rwxr-xr-xt/t1416-ref-transaction-hooks.sh2
-rwxr-xr-xt/t2400-worktree-add.sh20
-rwxr-xr-xt/t3000-ls-files-others.sh19
-rwxr-xr-xt/t3600-rm.sh5
-rwxr-xr-xt/t3903-stash.sh155
-rwxr-xr-xt/t4000-diff-format.sh2
-rwxr-xr-xt/t4013-diff-various.sh27
-rw-r--r--t/t4018/r-indent6
-rw-r--r--t/t4018/r-indent-nested10
-rw-r--r--t/t4018/r-noindent6
-rwxr-xr-xt/t4041-diff-submodule-option.sh22
-rwxr-xr-xt/t4053-diff-no-index.sh75
-rwxr-xr-xt/t4060-diff-submodule-option-diff-format.sh9
-rwxr-xr-xt/t4202-log.sh34
-rwxr-xr-xt/t4203-mailmap.sh33
-rwxr-xr-xt/t5004-archive-corner-cases.sh5
-rwxr-xr-xt/t5300-pack-object.sh19
-rwxr-xr-xt/t5306-pack-nobase.sh5
-rwxr-xr-xt/t5310-pack-bitmaps.sh13
-rwxr-xr-xt/t5316-pack-delta-depth.sh9
-rwxr-xr-xt/t5323-pack-redundant.sh5
-rwxr-xr-xt/t5332-multi-pack-reuse.sh7
-rwxr-xr-xt/t5333-pseudo-merge-bitmaps.sh17
-rwxr-xr-xt/t5408-send-pack-stdin.sh15
-rwxr-xr-xt/t5410-receive-pack.sh17
-rwxr-xr-xt/t5516-fetch-push.sh27
-rwxr-xr-xt/t5538-push-shallow.sh41
-rwxr-xr-xt/t5558-clone-bundle-uri.sh23
-rwxr-xr-xt/t6422-merge-rename-corner-cases.sh10
-rwxr-xr-xt/t6601-path-walk.sh20
-rwxr-xr-xt/t7007-show.sh24
-rwxr-xr-xt/t7401-submodule-summary.sh18
-rwxr-xr-xt/t7406-submodule-update.sh64
-rwxr-xr-xt/t7422-submodule-output.sh9
-rwxr-xr-xt/t7450-bad-git-dotfiles.sh33
-rwxr-xr-xt/t7600-merge.sh74
-rwxr-xr-xt/t7815-grep-binary.sh2
-rwxr-xr-xt/t7900-maintenance.sh19
-rwxr-xr-xt/t9300-fast-import.sh12
-rwxr-xr-xt/t9301-fast-import-notes.sh2
-rwxr-xr-xt/t9350-fast-export.sh20
-rwxr-xr-xt/t9500-gitweb-standalone-no-errors.sh16
-rwxr-xr-xt/t9822-git-p4-path-encoding.sh13
-rwxr-xr-xt/t9835-git-p4-metadata-encoding-python2.sh24
-rwxr-xr-xt/t9836-git-p4-metadata-encoding-python3.sh24
-rwxr-xr-xt/t9903-bash-prompt.sh4
-rw-r--r--t/test-lib-functions.sh16
-rw-r--r--t/test-lib.sh23
-rw-r--r--thread-utils.c8
-rw-r--r--usage.c14
-rw-r--r--userdiff.c4
291 files changed, 38280 insertions, 12818 deletions
diff --git a/.cirrus.yml b/.cirrus.yml
index 1fbdc2652b..fef04a3840 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -5,11 +5,13 @@ freebsd_task:
env:
GIT_PROVE_OPTS: "--timer --jobs 10"
GIT_TEST_OPTS: "--no-chain-lint --no-bin-wrappers"
- MAKEFLAGS: "-j4"
+ GIT_SKIP_TESTS: t7815.12
+ MAKEFLAGS: -j4
DEFAULT_TEST_TARGET: prove
+ DEFAULT_UNIT_TEST_TARGET: unit-tests-prove
DEVELOPER: 1
freebsd_instance:
- image_family: freebsd-13-4
+ image_family: freebsd-14-3
memory: 2G
install_script:
pkg install -y gettext gmake perl5
@@ -19,4 +21,4 @@ freebsd_task:
build_script:
- su git -c gmake
test_script:
- - su git -c 'gmake DEFAULT_UNIT_TEST_TARGET=unit-tests-prove test unit-tests'
+ - su git -c 'gmake test unit-tests'
diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml
index 124301dbbe..01a0437b2f 100644
--- a/.github/workflows/coverity.yml
+++ b/.github/workflows/coverity.yml
@@ -147,9 +147,13 @@ jobs:
key: cov-build-${{ env.COVERITY_LANGUAGE }}-${{ env.COVERITY_PLATFORM }}-${{ steps.lookup.outputs.hash }}
- name: build with cov-build
run: |
- export PATH="$RUNNER_TEMP/cov-analysis/bin:$PATH" &&
+ export PATH="$PATH:$RUNNER_TEMP/cov-analysis/bin" &&
cov-configure --gcc &&
- cov-build --dir cov-int make
+ if ! cov-build --dir cov-int make
+ then
+ cat cov-int/build-log.txt
+ exit 1
+ fi
- name: package the build
run: tar -czvf cov-int.tgz cov-int
- name: submit the build to Coverity Scan
diff --git a/Documentation/BreakingChanges.adoc b/Documentation/BreakingChanges.adoc
index 61bdd586b9..c6bd94986c 100644
--- a/Documentation/BreakingChanges.adoc
+++ b/Documentation/BreakingChanges.adoc
@@ -183,6 +183,14 @@ These features will be removed.
timeframe, in preference to its synonym "--annotate-stdin". Git 3.0
removes the support for "--stdin" altogether.
+* The git-whatchanged(1) command has outlived its usefulness more than
+ 10 years ago, and takes more keystrokes to type than its rough
+ equivalent `git log --raw`. We have nominated the command for
+ removal, have changed the command to refuse to work unless the
+ `--i-still-use-this` option is given, and asked the users to report
+ when they do so. So far there hasn't been a single complaint.
++
+The command will be removed.
== Superseded features that will not be deprecated
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index c1046abfb7..6350949f2e 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -315,6 +315,9 @@ For C programs:
encouraged to have a blank line between the end of the declarations
and the first statement in the block.
+ - Do not explicitly initialize global variables to 0 or NULL;
+ instead, let BSS take care of the zero initialization.
+
- NULL pointers shall be written as NULL, not as 0.
- When declaring pointers, the star sides with the variable
@@ -877,6 +880,17 @@ Characters are also surrounded by underscores:
As a side effect, backquoted placeholders are correctly typeset, but
this style is not recommended.
+ When documenting multiple related `git config` variables, place them on
+ a separate line instead of separating them by commas. For example, do
+ not write this:
+ `core.var1`, `core.var2`::
+ Description common to `core.var1` and `core.var2`.
+
+Instead write this:
+ `core.var1`::
+ `core.var2`::
+ Description common to `core.var1` and `core.var2`.
+
Synopsis Syntax
The synopsis (a paragraph with [synopsis] attribute) is automatically
diff --git a/Documentation/Makefile b/Documentation/Makefile
index b109d25e9c..df2ce187eb 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -510,7 +510,12 @@ lint-docs-meson:
awk "/^manpages = {$$/ {flag=1 ; next } /^}$$/ { flag=0 } flag { gsub(/^ \047/, \"\"); gsub(/\047 : [157],\$$/, \"\"); print }" meson.build | \
grep -v -e '#' -e '^$$' | \
sort >tmp-meson-diff/meson.adoc && \
- ls git*.adoc scalar.adoc | grep -v -e git-bisect-lk2009.adoc -e git-pack-redundant.adoc -e git-tools.adoc >tmp-meson-diff/actual.adoc && \
+ ls git*.adoc scalar.adoc | \
+ grep -v -e git-bisect-lk2009.adoc \
+ -e git-pack-redundant.adoc \
+ -e git-tools.adoc \
+ -e git-whatchanged.adoc \
+ >tmp-meson-diff/actual.adoc && \
if ! cmp tmp-meson-diff/meson.adoc tmp-meson-diff/actual.adoc; then \
echo "Meson man pages differ from actual man pages:"; \
diff -u tmp-meson-diff/meson.adoc tmp-meson-diff/actual.adoc; \
diff --git a/Documentation/MyFirstObjectWalk.adoc b/Documentation/MyFirstObjectWalk.adoc
index bfe8f5f561..413a9fdb05 100644
--- a/Documentation/MyFirstObjectWalk.adoc
+++ b/Documentation/MyFirstObjectWalk.adoc
@@ -43,7 +43,7 @@ Open up a new file `builtin/walken.c` and set up the command handler:
#include "builtin.h"
#include "trace.h"
-int cmd_walken(int argc, const char **argv, const char *prefix)
+int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
{
trace_printf(_("cmd_walken incoming...\n"));
return 0;
@@ -83,23 +83,36 @@ int cmd_walken(int argc, const char **argv, const char *prefix)
}
----
-Also add the relevant line in `builtin.h` near `cmd_whatchanged()`:
+Also add the relevant line in `builtin.h` near `cmd_version()`:
----
-int cmd_walken(int argc, const char **argv, const char *prefix);
+int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo);
----
-Include the command in `git.c` in `commands[]` near the entry for `whatchanged`,
+Include the command in `git.c` in `commands[]` near the entry for `version`,
maintaining alphabetical ordering:
----
{ "walken", cmd_walken, RUN_SETUP },
----
-Add it to the `Makefile` near the line for `builtin/worktree.o`:
+Add an entry for the new command in the both the Make and Meson build system,
+before the entry for `worktree`:
+- In the `Makefile`:
----
+...
BUILTIN_OBJS += builtin/walken.o
+...
+----
+
+- In the `meson.build` file:
+----
+builtin_sources = [
+ ...
+ 'builtin/walken.c',
+ ...
+]
----
Build and test out your command, without forgetting to ensure the `DEVELOPER`
@@ -193,7 +206,7 @@ initialization functions.
Next, we should have a look at any relevant configuration settings (i.e.,
settings readable and settable from `git config`). This is done by providing a
-callback to `git_config()`; within that callback, you can also invoke methods
+callback to `repo_config()`; within that callback, you can also invoke methods
from other components you may need that need to intercept these options. Your
callback will be invoked once per each configuration value which Git knows about
(global, local, worktree, etc.).
@@ -221,14 +234,14 @@ static int git_walken_config(const char *var, const char *value,
}
----
-Make sure to invoke `git_config()` with it in your `cmd_walken()`:
+Make sure to invoke `repo_config()` with it in your `cmd_walken()`:
----
-int cmd_walken(int argc, const char **argv, const char *prefix)
+int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
{
...
- git_config(git_walken_config, NULL);
+ repo_config(repo, git_walken_config, NULL);
...
}
@@ -250,14 +263,14 @@ We'll also need to include the `revision.h` header:
...
-int cmd_walken(int argc, const char **argv, const char *prefix)
+int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
{
/* This can go wherever you like in your declarations.*/
struct rev_info rev;
...
- /* This should go after the git_config() call. */
- repo_init_revisions(the_repository, &rev, prefix);
+ /* This should go after the repo_config() call. */
+ repo_init_revisions(repo, &rev, prefix);
...
}
@@ -305,7 +318,7 @@ Then let's invoke `final_rev_info_setup()` after the call to
`repo_init_revisions()`:
----
-int cmd_walken(int argc, const char **argv, const char *prefix)
+int cmd_walken(int argc, const char **argv, const char *prefix, struct repository *repo)
{
...
diff --git a/Documentation/RelNotes/2.43.7.adoc b/Documentation/RelNotes/2.43.7.adoc
new file mode 100644
index 0000000000..95702a036e
--- /dev/null
+++ b/Documentation/RelNotes/2.43.7.adoc
@@ -0,0 +1,73 @@
+Git v2.43.7 Release Notes
+=========================
+
+This release includes fixes for CVE-2025-27613, CVE-2025-27614,
+CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and
+CVE-2025-48386.
+
+Fixes since v2.43.6
+-------------------
+
+ * CVE-2025-27613, Gitk:
+
+ When a user clones an untrusted repository and runs Gitk without
+ additional command arguments, any writable file can be created and
+ truncated. The option "Support per-file encoding" must have been
+ enabled. The operation "Show origin of this line" is affected as
+ well, regardless of the option being enabled or not.
+
+ * CVE-2025-27614, Gitk:
+
+ A Git repository can be crafted in such a way that a user who has
+ cloned the repository can be tricked into running any script
+ supplied by the attacker by invoking `gitk filename`, where
+ `filename` has a particular structure.
+
+ * CVE-2025-46334, Git GUI (Windows only):
+
+ A malicious repository can ship versions of sh.exe or typical
+ textconv filter programs such as astextplain. On Windows, path
+ lookup can find such executables in the worktree. These programs
+ are invoked when the user selects "Git Bash" or "Browse Files" from
+ the menu.
+
+ * CVE-2025-46835, Git GUI:
+
+ When a user clones an untrusted repository and is tricked into
+ editing a file located in a maliciously named directory in the
+ repository, then Git GUI can create and overwrite any writable
+ file.
+
+ * CVE-2025-48384, Git:
+
+ When reading a config value, Git strips any trailing carriage
+ return and line feed (CRLF). When writing a config entry, values
+ with a trailing CR are not quoted, causing the CR to be lost when
+ the config is later read. When initializing a submodule, if the
+ submodule path contains a trailing CR, the altered path is read
+ resulting in the submodule being checked out to an incorrect
+ location. If a symlink exists that points the altered path to the
+ submodule hooks directory, and the submodule contains an executable
+ post-checkout hook, the script may be unintentionally executed
+ after checkout.
+
+ * CVE-2025-48385, Git:
+
+ When cloning a repository Git knows to optionally fetch a bundle
+ advertised by the remote server, which allows the server-side to
+ offload parts of the clone to a CDN. The Git client does not
+ perform sufficient validation of the advertised bundles, which
+ allows the remote side to perform protocol injection.
+
+ This protocol injection can cause the client to write the fetched
+ bundle to a location controlled by the adversary. The fetched
+ content is fully controlled by the server, which can in the worst
+ case lead to arbitrary code execution.
+
+ * CVE-2025-48386, Git:
+
+ The wincred credential helper uses a static buffer (`target`) as a
+ unique key for storing and comparing against internal storage. This
+ credential helper does not properly bounds check the available
+ space remaining in the buffer before appending to it with
+ `wcsncat()`, leading to potential buffer overflows.
diff --git a/Documentation/RelNotes/2.44.4.adoc b/Documentation/RelNotes/2.44.4.adoc
new file mode 100644
index 0000000000..8db4d5b537
--- /dev/null
+++ b/Documentation/RelNotes/2.44.4.adoc
@@ -0,0 +1,7 @@
+Git v2.44.4 Release Notes
+=========================
+
+This release merges up the fixes that appears in v2.43.7 to address
+the following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334,
+CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386.
+See the release notes for v2.43.7 for details.
diff --git a/Documentation/RelNotes/2.45.4.adoc b/Documentation/RelNotes/2.45.4.adoc
new file mode 100644
index 0000000000..5b50d8daf0
--- /dev/null
+++ b/Documentation/RelNotes/2.45.4.adoc
@@ -0,0 +1,7 @@
+Git v2.45.4 Release Notes
+=========================
+
+This release merges up the fixes that appears in v2.43.7, and v2.44.4
+to address the following CVEs: CVE-2025-27613, CVE-2025-27614,
+CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and
+CVE-2025-48386. See the release notes for v2.43.7 for details.
diff --git a/Documentation/RelNotes/2.46.4.adoc b/Documentation/RelNotes/2.46.4.adoc
new file mode 100644
index 0000000000..622f4c752f
--- /dev/null
+++ b/Documentation/RelNotes/2.46.4.adoc
@@ -0,0 +1,7 @@
+Git v2.46.4 Release Notes
+=========================
+
+This release merges up the fixes that appears in v2.43.7, v2.44.4, and
+v2.45.4 to address the following CVEs: CVE-2025-27613, CVE-2025-27614,
+CVE-2025-46334, CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and
+CVE-2025-48386. See the release notes for v2.43.7 for details.
diff --git a/Documentation/RelNotes/2.47.3.adoc b/Documentation/RelNotes/2.47.3.adoc
new file mode 100644
index 0000000000..bc2a2b833b
--- /dev/null
+++ b/Documentation/RelNotes/2.47.3.adoc
@@ -0,0 +1,8 @@
+Git v2.47.3 Release Notes
+=========================
+
+This release merges up the fixes that appears in v2.43.7, v2.44.4,
+v2.45.4, and v2.46.4 to address the following CVEs: CVE-2025-27613,
+CVE-2025-27614, CVE-2025-46334, CVE-2025-46835, CVE-2025-48384,
+CVE-2025-48385, and CVE-2025-48386. See the release notes for v2.43.7
+for details.
diff --git a/Documentation/RelNotes/2.48.2.adoc b/Documentation/RelNotes/2.48.2.adoc
new file mode 100644
index 0000000000..f3f2f90c2b
--- /dev/null
+++ b/Documentation/RelNotes/2.48.2.adoc
@@ -0,0 +1,8 @@
+Git v2.48.2 Release Notes
+=========================
+
+This release merges up the fixes that appears in v2.43.7, v2.44.4,
+v2.45.4, v2.46.4, and v2.47.3 to address the following CVEs:
+CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835,
+CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386. See the release
+notes for v2.43.7 for details.
diff --git a/Documentation/RelNotes/2.49.1.adoc b/Documentation/RelNotes/2.49.1.adoc
new file mode 100644
index 0000000000..c619e8b495
--- /dev/null
+++ b/Documentation/RelNotes/2.49.1.adoc
@@ -0,0 +1,12 @@
+Git v2.49.1 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.43.7, v2.44.4,
+v2.45.4, v2.46.4, v2.47.3, and v2.48.2 to address the following CVEs:
+CVE-2025-27613, CVE-2025-27614, CVE-2025-46334, CVE-2025-46835,
+CVE-2025-48384, CVE-2025-48385, and CVE-2025-48386. See the release
+notes for v2.43.7 for details.
+
+It also contains some updates to various CI bits to work around
+and/or to adjust to the deprecation of use of Ubuntu 20.04 GitHub
+Actions CI, updates to to Fedora base image.
diff --git a/Documentation/RelNotes/2.50.0.adoc b/Documentation/RelNotes/2.50.0.adoc
index b3bfdf29c9..e85747335b 100644
--- a/Documentation/RelNotes/2.50.0.adoc
+++ b/Documentation/RelNotes/2.50.0.adoc
@@ -36,7 +36,7 @@ UI, Workflows & Features
* Auth-related (and unrelated) error handling in send-email has been
made more robust.
- * Updating multiple references have only been possible in all-or-none
+ * Updating multiple references have only been possible in an all-or-nothing
fashion with transactions, but it can be more efficient to batch
multiple updates even when some of them are allowed to fail in a
best-effort manner. A new "best effort batches of updates" mode
@@ -53,7 +53,7 @@ UI, Workflows & Features
* The build procedure installs bash (but not zsh) completion script.
- * send-email has been updated to work better with Outlook's smtp server.
+ * send-email has been updated to work better with Outlook's SMTP server.
* "git diff --minimal" used to give non-minimal output when its
optimization kicked in, which has been disabled.
@@ -62,7 +62,7 @@ UI, Workflows & Features
delta chains from forming in a corner case even when there is no
such cycle.
- * Make repository clean-up tasks "gc" can do available to "git
+ * Make repository clean-up tasks that "gc" can do available to "git
maintenance" front-end.
* Bundle-URI feature did not use refs recorded in the bundle other
@@ -102,7 +102,9 @@ Performance, Internal Implementation, Development Support etc.
* "git fsck" becomes more careful when checking the refs.
* "git fast-export | git fast-import" learns to deal with commit and
- tag objects with embedded signatures a bit better.
+ tag objects with embedded signatures a bit better. This is highly
+ experimental and the format of the data stream may change in the
+ future without compatibility guarantees.
* The code paths to check whether a refname X is available (by seeing
if another ref X/Y exists, etc.) have been optimized.
@@ -186,7 +188,7 @@ Performance, Internal Implementation, Development Support etc.
been dropped.
* The code path to access the "packed-refs" file while "fsck" is
- taught to mmap the file, instead of reading the whole file in the
+ taught to mmap the file, instead of reading the whole file into
memory.
* Assorted fixes for issues found with CodeQL.
@@ -199,6 +201,17 @@ Performance, Internal Implementation, Development Support etc.
we ended up checking for these non-existent files repeatedly, which
has been optimized by memoizing the non-existence.
+ * Build settings have been improved for BSD based systems.
+
+ * Newer version of libcURL detected curl_easy_setopt() calls we made
+ with platform-natural "int" when we should have used "long", which
+ all have been corrected.
+
+ * Tests that compare $HOME and $(pwd), which should be the same
+ directory unless the tests chdir's around, would fail when the user
+ enters the test directory via symbolic links, which has been
+ corrected.
+
Fixes since v2.49
-----------------
@@ -298,7 +311,7 @@ Fixes since v2.49
(merge e7ef4be7c2 mh/left-right-limited later to maint).
* Document the convention to disable hooks altogether by setting the
- hooksPath configuration variable to /dev/nulll
+ hooksPath configuration variable to /dev/null.
(merge 1b2eee94f1 ds/doc-disable-hooks later to maint).
* Make sure outage of third-party sites that supply P4, Git-LFS, and
@@ -314,8 +327,10 @@ Fixes since v2.49
* Fix for scheduled maintenance tasks on platforms using launchctl.
(merge eb2d7beb0e jh/gc-launchctl-schedule-fix later to maint).
- * Update to arm64 Windows port.
- (merge 436a42215e js/windows-arm64 later to maint).
+ * Update to arm64 Windows port (part of which had been reverted as it
+ broke builds for existing platforms, which may need to be redone in
+ future releases).
+
* hashmap API clean-up to ensure hashmap_clear() leaves a cleared map
in a reusable state.
(merge 9481877de3 en/hashmap-clear-fix later to maint).
@@ -349,7 +364,7 @@ Fixes since v2.49
(merge 5dbaec628d pw/sequencer-reflog-use-after-free later to maint).
* win+Meson CI pipeline, unlike other pipelines for Windows,
- used to build artifacts in develper mode, which has been changed to
+ used to build artifacts in developer mode, which has been changed to
build them in release mode for consistency.
(merge 184abdcf05 js/ci-build-win-in-release-mode later to maint).
@@ -377,6 +392,20 @@ Fixes since v2.49
reverse failed to give the mode bits of the path "removed" by the
patch to the file it creates, which has been corrected.
+ * "git verify-refs" errored out in a repository in which
+ linked worktrees were prepared with Git 2.43 or lower.
+ (merge d5b3c38b8a sj/ref-contents-check-fix later to maint).
+
+ * Update total_ram() function on BSD variants.
+
+ * Update online_cpus() function on BSD variants.
+
+ * Revert a botched bswap.h change that broke ntohll() functions on
+ big-endian systems with __builtin_bswap32/64().
+
+ * Fixes for GitHub Actions Coverity job.
+ (merge 3cc4fc1ebd js/github-ci-win-coverity-fix later to maint).
+
* Other code cleanup, docfix, build fix, etc.
(merge 227c4f33a0 ja/doc-block-delimiter-markup-fix later to maint).
(merge 2bfd3b3685 ab/decorate-code-cleanup later to maint).
@@ -409,3 +438,4 @@ Fixes since v2.49
(merge 91db6c735d ly/reftable-writer-leakfix later to maint).
(merge 20e4e9ad0b jc/doc-synopsis-option-markup later to maint).
(merge cddcee7f64 es/meson-configure-build-options-fix later to maint).
+ (merge cea9f55f00 wk/sparse-checkout-doc-fix later to maint).
diff --git a/Documentation/RelNotes/2.50.1.adoc b/Documentation/RelNotes/2.50.1.adoc
new file mode 100644
index 0000000000..aa4a71adbc
--- /dev/null
+++ b/Documentation/RelNotes/2.50.1.adoc
@@ -0,0 +1,8 @@
+Git v2.50.1 Release Notes
+=========================
+
+This release merges up the fixes that appear in v2.43.7, v2.44.4,
+v2.45.4, v2.46.4, v2.47.3, v2.48.2, and v2.49.1 to address the
+following CVEs: CVE-2025-27613, CVE-2025-27614, CVE-2025-46334,
+CVE-2025-46835, CVE-2025-48384, CVE-2025-48385, and
+CVE-2025-48386. See the release notes for v2.43.7 for details.
diff --git a/Documentation/RelNotes/2.51.0.adoc b/Documentation/RelNotes/2.51.0.adoc
new file mode 100644
index 0000000000..40920e6495
--- /dev/null
+++ b/Documentation/RelNotes/2.51.0.adoc
@@ -0,0 +1,138 @@
+Git v2.51 Release Notes
+=======================
+
+UI, Workflows & Features
+------------------------
+
+ * Userdiff patterns for the R language have been added.
+
+ * Documentation for "git send-email" has been updated with a bit more
+ credential helper and OAuth information.
+
+ * "git cat-file --batch" learns to understand %(objectmode) atom to
+ allow the caller to tell missing objects (due to repository
+ corruption) and submodules (whose commit objects are OK to be
+ missing) apart.
+
+ * "git diff --no-index dirA dirB" can limit the comparison with
+ pathspec at the end of the command line, just like normal "git
+ diff".
+
+ * "git subtree" (in contrib/) learned to grok GPG signing its commits.
+
+ * "git whatchanged" that is longer to type than "git log --raw"
+ which is its modern rough equivalent has outlived its usefulness
+ more than 10 years ago. Plan to deprecate and remove it.
+
+ * An interchange format for stash entries is defined, and subcommand
+ of "git stash" to import/export has been added.
+
+ * "git merge/pull" has been taught the "--compact-summary" option to
+ use the compact-summary format, intead of diffstat, when showing
+ the summary of the incoming changes.
+
+ * "git imap-send" has been broken for a long time, which has been
+ resurrected and then taught to talk OAuth2.0 etc.
+
+ * Some error messages from "git imap-send" has been updated.
+
+ * When "git daemon" sees a signal while attempting to accept() a new
+ client, instead of retrying, it skipped it by mistake, which has
+ been corrected.
+
+
+Performance, Internal Implementation, Development Support etc.
+--------------------------------------------------------------
+
+ * "git pack-objects" learned to find delta bases from blobs at the
+ same path, using the --path-walk API.
+
+ * CodingGuidelines update.
+
+ * Add settings for Solaris 10 & 11.
+
+ * Meson-based build/test framework now understands TAP output
+ generated by our tests.
+
+ * "Do not explicitly initialize to zero" rule has been clarified in
+ the CodingGuidelines document.
+
+ * A test helper "test_seq" function learned the "-f <fmt>" option,
+ which allowed us to simplify a lot of test scripts.
+
+ * A lot of stale stuff has been removed from the contrib/ hierarchy.
+
+ * "git push" and "git fetch" are taught to update refs in batches to
+ gain performance.
+
+
+Fixes since v2.50
+-----------------
+
+Unless otherwise noted, all the changes in 2.50.X maintenance track,
+including security updates, are included in this release.
+
+ * A memory-leak in an error code path has been plugged.
+ (merge 7082da85cb ly/commit-graph-graph-write-leakfix later to maint).
+
+ * A memory-leak in an error code path has been plugged.
+ (merge aedebdb6b9 ly/fetch-pack-leakfix later to maint).
+
+ * Some leftover references to documentation source files that no
+ longer exist, due to recent ".txt" -> ".adoc" renaming, have been
+ corrected.
+ (merge 3717a5775a jw/doc-txt-to-adoc-refs later to maint).
+
+ * "git stash -p <pathspec>" improvements.
+ (merge 468817bab2 pw/stash-p-pathspec-fixes later to maint).
+
+ * "git send-email" incremented its internal message counter when a
+ message was edited, which made logic that treats the first message
+ specially misbehave, which has been corrected.
+ (merge 2cc27b3501 ag/send-email-edit-threading-fix later to maint).
+
+ * "git stash" recorded a wrong branch name when submodules are
+ present in the current checkout, which has been corrected.
+ (merge ffb36c64f2 kj/stash-onbranch-submodule-fix later to maint).
+
+ * When asking to apply mailmap to both author and committer field
+ while showing a commit object, the field that appears later was not
+ correctly parsed and replaced, which has been corrected.
+ (merge abf94a283f sa/multi-mailmap-fix later to maint).
+
+ * "git maintenance" lacked the care "git gc" had to avoid holding
+ onto the repository lock for too long during packing refs, which
+ has been remedied.
+ (merge 1b5074e614 ps/maintenance-ref-lock later to maint).
+
+ * Avoid regexp_constraint and instead use comparison_constraint when
+ listing functions to exclude from application of coccinelle rules,
+ as spatch can be built with different regexp engine X-<.
+ (merge f2ad545813 jc/cocci-avoid-regexp-constraint later to maint).
+
+ * Updating submodules from the upstream did not work well when
+ submodule's HEAD is detached, which has been improved.
+ (merge ca62f524c1 jk/submodule-remote-lookup-cleanup later to maint).
+
+ * Remove unnecessary check from "git daemon" code.
+ (merge 0c856224d2 cb/daemon-fd-check-fix later to maint).
+
+ * Leakfix.
+ (merge b0e9d25865 jk/fix-leak-send-pack later to maint).
+
+ * Other code cleanup, docfix, build fix, etc.
+ (merge b257adb571 lo/my-first-ow-doc-update later to maint).
+ (merge 8b34b6a220 ly/sequencer-update-squash-is-fixup-only later to maint).
+ (merge 5dceb8bd05 ly/do-not-localize-bug-messages later to maint).
+ (merge 61372dd613 ly/commit-buffer-reencode-leakfix later to maint).
+ (merge 81cd1eef7d ly/pack-bitmap-root-leakfix later to maint).
+ (merge bfc9f9cc64 ly/submodule-update-failure-leakfix later to maint).
+ (merge 65dff89c6b ma/doc-diff-cc-headers later to maint).
+ (merge efb61591ee jm/bundle-uri-debug-output-to-fp later to maint).
+ (merge a3d278bb64 ly/prepare-show-merge-leakfix later to maint).
+ (merge 1fde1c5daf ac/preload-index-wo-the-repository later to maint).
+ (merge 855cfc65ae rm/t2400-modernize later to maint).
+ (merge 2939494284 ly/run-builtin-use-passed-in-repo later to maint).
+ (merge ff73f375bb jg/mailinfo-leakfix later to maint).
+ (merge 996f14c02b jj/doc-branch-markup-fix later to maint).
+ (merge 1e77de1864 cb/ci-freebsd-update-to-14.3 later to maint).
diff --git a/Documentation/config/branch.adoc b/Documentation/config/branch.adoc
index e35ea7ac64..a4db9fa5c8 100644
--- a/Documentation/config/branch.adoc
+++ b/Documentation/config/branch.adoc
@@ -69,9 +69,9 @@ This option defaults to `never`.
`git fetch`) to lookup the default branch for merging. Without
this option, `git pull` defaults to merge the first refspec fetched.
Specify multiple values to get an octopus merge.
- If you wish to setup `git pull` so that it merges into <name> from
+ If you wish to setup `git pull` so that it merges into _<name>_ from
another branch in the local repository, you can point
- branch.<name>.merge to the desired branch, and use the relative path
+ `branch.<name>.merge` to the desired branch, and use the relative path
setting `.` (a period) for `branch.<name>.remote`.
`branch.<name>.mergeOptions`::
diff --git a/Documentation/config/checkout.adoc b/Documentation/config/checkout.adoc
index a323022993..e35d212969 100644
--- a/Documentation/config/checkout.adoc
+++ b/Documentation/config/checkout.adoc
@@ -1,9 +1,9 @@
-checkout.defaultRemote::
+`checkout.defaultRemote`::
When you run `git checkout <something>`
or `git switch <something>` and only have one
remote, it may implicitly fall back on checking out and
tracking e.g. `origin/<something>`. This stops working as soon
- as you have more than one remote with a `<something>`
+ as you have more than one remote with a _<something>_
reference. This setting allows for setting the name of a
preferred remote that should always win when it comes to
disambiguation. The typical use-case is to set this to
@@ -12,17 +12,17 @@ checkout.defaultRemote::
Currently this is used by linkgit:git-switch[1] and
linkgit:git-checkout[1] when `git checkout <something>`
or `git switch <something>`
-will checkout the `<something>` branch on another remote,
+will checkout the _<something>_ branch on another remote,
and by linkgit:git-worktree[1] when `git worktree add` refers to a
remote branch. This setting might be used for other checkout-like
commands or functionality in the future.
-checkout.guess::
+`checkout.guess`::
Provides the default value for the `--guess` or `--no-guess`
option in `git checkout` and `git switch`. See
linkgit:git-switch[1] and linkgit:git-checkout[1].
-checkout.workers::
+`checkout.workers`::
The number of parallel workers to use when updating the working tree.
The default is one, i.e. sequential execution. If set to a value less
than one, Git will use as many workers as the number of logical cores
@@ -30,13 +30,13 @@ checkout.workers::
all commands that perform checkout. E.g. checkout, clone, reset,
sparse-checkout, etc.
+
-Note: Parallel checkout usually delivers better performance for repositories
+NOTE: Parallel checkout usually delivers better performance for repositories
located on SSDs or over NFS. For repositories on spinning disks and/or machines
with a small number of cores, the default sequential checkout often performs
better. The size and compression level of a repository might also influence how
well the parallel version performs.
-checkout.thresholdForParallelism::
+`checkout.thresholdForParallelism`::
When running parallel checkout with a small number of files, the cost
of subprocess spawning and inter-process communication might outweigh
the parallelization gains. This setting allows you to define the minimum
diff --git a/Documentation/config/feature.adoc b/Documentation/config/feature.adoc
index f061b64b74..cb49ff2604 100644
--- a/Documentation/config/feature.adoc
+++ b/Documentation/config/feature.adoc
@@ -20,6 +20,10 @@ walking fewer objects.
+
* `pack.allowPackReuse=multi` may improve the time it takes to create a pack by
reusing objects from multiple packs instead of just one.
++
+* `pack.usePathWalk` may speed up packfile creation and make the packfiles be
+significantly smaller in the presence of certain filename collisions with Git's
+default name-hash.
feature.manyFiles::
Enable config options that optimize for repos with many files in the
diff --git a/Documentation/config/fmt-merge-msg.adoc b/Documentation/config/fmt-merge-msg.adoc
index 3fbf40e24f..696ba0531a 100644
--- a/Documentation/config/fmt-merge-msg.adoc
+++ b/Documentation/config/fmt-merge-msg.adoc
@@ -1,19 +1,19 @@
-merge.branchdesc::
+`merge.branchdesc`::
In addition to branch names, populate the log message with
the branch description text associated with them. Defaults
to false.
-merge.log::
+`merge.log`::
In addition to branch names, populate the log message with at
most the specified number of one-line descriptions from the
actual commits that are being merged. Defaults to false, and
true is a synonym for 20.
-merge.suppressDest::
+`merge.suppressDest`::
By adding a glob that matches the names of integration
branches to this multi-valued configuration variable, the
default merge message computed for merges into these
- integration branches will omit "into <branch name>" from
+ integration branches will omit "into _<branch-name>_" from
its title.
+
An element with an empty value can be used to clear the list
diff --git a/Documentation/config/format.adoc b/Documentation/config/format.adoc
index 7410e930e5..ab0710e86a 100644
--- a/Documentation/config/format.adoc
+++ b/Documentation/config/format.adoc
@@ -68,9 +68,15 @@ format.encodeEmailHeaders::
Defaults to true.
format.pretty::
+ifndef::with-breaking-changes[]
The default pretty format for log/show/whatchanged command.
See linkgit:git-log[1], linkgit:git-show[1],
linkgit:git-whatchanged[1].
+endif::with-breaking-changes[]
+ifdef::with-breaking-changes[]
+ The default pretty format for log/show command.
+ See linkgit:git-log[1], linkgit:git-show[1].
+endif::with-breaking-changes[]
format.thread::
The default threading style for 'git format-patch'. Can be
diff --git a/Documentation/config/gitcvs.adoc b/Documentation/config/gitcvs.adoc
index 02da427fd9..31d7be3992 100644
--- a/Documentation/config/gitcvs.adoc
+++ b/Documentation/config/gitcvs.adoc
@@ -47,7 +47,8 @@ gitcvs.dbDriver::
May not contain double colons (`:`). Default: 'SQLite'.
See linkgit:git-cvsserver[1].
-gitcvs.dbUser, gitcvs.dbPass::
+gitcvs.dbUser::
+gitcvs.dbPass::
Database user and password. Only useful if setting `gitcvs.dbDriver`,
since SQLite has no concept of database users and/or passwords.
'gitcvs.dbUser' supports variable substitution (see
diff --git a/Documentation/config/http.adoc b/Documentation/config/http.adoc
index 67393282fa..9da5c298cc 100644
--- a/Documentation/config/http.adoc
+++ b/Documentation/config/http.adoc
@@ -289,7 +289,8 @@ for most push problems, but can increase memory consumption
significantly since the entire buffer is allocated even for small
pushes.
-http.lowSpeedLimit, http.lowSpeedTime::
+http.lowSpeedLimit::
+http.lowSpeedTime::
If the HTTP transfer speed, in bytes per second, is less than
'http.lowSpeedLimit' for longer than 'http.lowSpeedTime' seconds,
the transfer is aborted.
diff --git a/Documentation/config/imap.adoc b/Documentation/config/imap.adoc
index 3d28f72643..4682a6bd03 100644
--- a/Documentation/config/imap.adoc
+++ b/Documentation/config/imap.adoc
@@ -1,7 +1,9 @@
imap.folder::
The folder to drop the mails into, which is typically the Drafts
- folder. For example: "INBOX.Drafts", "INBOX/Drafts" or
- "[Gmail]/Drafts". Required.
+ folder. For example: `INBOX.Drafts`, `INBOX/Drafts` or
+ `[Gmail]/Drafts`. The IMAP folder to interact with MUST be specified;
+ the value of this configuration variable is used as the fallback
+ default value when the `--folder` option is not given.
imap.tunnel::
Command used to set up a tunnel to the IMAP server through which
@@ -40,5 +42,6 @@ imap.authMethod::
Specify the authentication method for authenticating with the IMAP server.
If Git was built with the NO_CURL option, or if your curl version is older
than 7.34.0, or if you're running git-imap-send with the `--no-curl`
- option, the only supported method is 'CRAM-MD5'. If this is not set
- then 'git imap-send' uses the basic IMAP plaintext LOGIN command.
+ option, the only supported methods are `PLAIN`, `CRAM-MD5`, `OAUTHBEARER`
+ and `XOAUTH2`. If this is not set then `git imap-send` uses the basic IMAP
+ plaintext `LOGIN` command.
diff --git a/Documentation/config/log.adoc b/Documentation/config/log.adoc
index 9003a82191..a9b160e7de 100644
--- a/Documentation/config/log.adoc
+++ b/Documentation/config/log.adoc
@@ -1,6 +1,13 @@
log.abbrevCommit::
- If true, makes linkgit:git-log[1], linkgit:git-show[1], and
- linkgit:git-whatchanged[1] assume `--abbrev-commit`. You may
+ If true, makes
+ifndef::with-breaking-changes[]
+ linkgit:git-log[1], linkgit:git-show[1], and
+ linkgit:git-whatchanged[1]
+endif::with-breaking-changes[]
+ifdef::with-breaking-changes[]
+ linkgit:git-log[1] and linkgit:git-show[1]
+endif::with-breaking-changes[]
+ assume `--abbrev-commit`. You may
override this option with `--no-abbrev-commit`.
log.date::
diff --git a/Documentation/config/merge.adoc b/Documentation/config/merge.adoc
index d2d0f21a71..15a4c14c38 100644
--- a/Documentation/config/merge.adoc
+++ b/Documentation/config/merge.adoc
@@ -1,9 +1,9 @@
-merge.conflictStyle::
+`merge.conflictStyle`::
Specify the style in which conflicted hunks are written out to
working tree files upon merge. The default is "merge", which
- shows a `<<<<<<<` conflict marker, changes made by one side,
+ shows a +<<<<<<<+ conflict marker, changes made by one side,
a `=======` marker, changes made by the other side, and then
- a `>>>>>>>` marker. An alternate style, "diff3", adds a `|||||||`
+ a +>>>>>>>+ marker. An alternate style, "diff3", adds a +|||||||+
marker and the original text before the `=======` marker. The
"merge" style tends to produce smaller conflict regions than diff3,
both because of the exclusion of the original text, and because
@@ -13,17 +13,17 @@ merge.conflictStyle::
the conflict region when those matching lines appear near either
the beginning or end of a conflict region.
-merge.defaultToUpstream::
+`merge.defaultToUpstream`::
If merge is called without any commit argument, merge the upstream
branches configured for the current branch by using their last
observed values stored in their remote-tracking branches.
The values of the `branch.<current branch>.merge` that name the
- branches at the remote named by `branch.<current branch>.remote`
+ branches at the remote named by `branch.<current-branch>.remote`
are consulted, and then they are mapped via `remote.<remote>.fetch`
to their corresponding remote-tracking branches, and the tips of
these tracking branches are merged. Defaults to true.
-merge.ff::
+`merge.ff`::
By default, Git does not create an extra merge commit when merging
a commit that is a descendant of the current commit. Instead, the
tip of the current branch is fast-forwarded. When set to `false`,
@@ -33,42 +33,46 @@ merge.ff::
allowed (equivalent to giving the `--ff-only` option from the
command line).
-merge.verifySignatures::
- If true, this is equivalent to the --verify-signatures command
+`merge.verifySignatures`::
+ If true, this is equivalent to the `--verify-signatures` command
line option. See linkgit:git-merge[1] for details.
include::fmt-merge-msg.adoc[]
-merge.renameLimit::
+`merge.renameLimit`::
The number of files to consider in the exhaustive portion of
rename detection during a merge. If not specified, defaults
- to the value of diff.renameLimit. If neither
- merge.renameLimit nor diff.renameLimit are specified,
+ to the value of `diff.renameLimit`. If neither
+ `merge.renameLimit` nor `diff.renameLimit` are specified,
currently defaults to 7000. This setting has no effect if
rename detection is turned off.
-merge.renames::
- Whether Git detects renames. If set to "false", rename detection
- is disabled. If set to "true", basic rename detection is enabled.
+`merge.renames`::
+ Whether Git detects renames. If set to `false`, rename detection
+ is disabled. If set to `true`, basic rename detection is enabled.
Defaults to the value of diff.renames.
-merge.directoryRenames::
+`merge.directoryRenames`::
Whether Git detects directory renames, affecting what happens at
merge time to new files added to a directory on one side of
history when that directory was renamed on the other side of
- history. If merge.directoryRenames is set to "false", directory
- rename detection is disabled, meaning that such new files will be
- left behind in the old directory. If set to "true", directory
- rename detection is enabled, meaning that such new files will be
- moved into the new directory. If set to "conflict", a conflict
- will be reported for such paths. If merge.renames is false,
- merge.directoryRenames is ignored and treated as false. Defaults
- to "conflict".
-
-merge.renormalize::
+ history. Possible values are:
++
+--
+`false`;; Directory rename detection is disabled, meaning that such new files will be
+ left behind in the old directory.
+`true`;; Directory rename detection is enabled, meaning that such new files will be
+ moved into the new directory.
+`conflict`;; A conflict will be reported for such paths.
+--
++
+If `merge.renames` is `false`, `merge.directoryRenames` is ignored and treated
+as `false`. Defaults to `conflict`.
+
+`merge.renormalize`::
Tell Git that canonical representation of files in the
repository has changed over time (e.g. earlier commits record
- text files with CRLF line endings, but recent ones use LF line
+ text files with _CRLF_ line endings, but recent ones use _LF_ line
endings). In such a repository, for each file where a
three-way content merge is needed, Git can convert the data
recorded in commits to a canonical form before performing a
@@ -76,35 +80,45 @@ merge.renormalize::
see section "Merging branches with differing checkin/checkout
attributes" in linkgit:gitattributes[5].
-merge.stat::
- Whether to print the diffstat between ORIG_HEAD and the merge result
- at the end of the merge. True by default.
-
-merge.autoStash::
- When set to true, automatically create a temporary stash entry
+`merge.stat`::
+ What, if anything, to print between `ORIG_HEAD` and the merge result
+ at the end of the merge. Possible values are:
++
+--
+`false`;; Show nothing.
+`true`;; Show `git diff --diffstat --summary ORIG_HEAD`.
+`compact`;; Show `git diff --compact-summary ORIG_HEAD`.
+--
++
+but any unrecognised value (e.g., a value added by a future version of
+Git) is taken as `true` instead of triggering an error. Defaults to
+`true`.
+
+`merge.autoStash`::
+ When set to `true`, automatically create a temporary stash entry
before the operation begins, and apply it after the operation
ends. This means that you can run merge on a dirty worktree.
However, use with care: the final stash application after a
successful merge might result in non-trivial conflicts.
This option can be overridden by the `--no-autostash` and
`--autostash` options of linkgit:git-merge[1].
- Defaults to false.
+ Defaults to `false`.
-merge.tool::
+`merge.tool`::
Controls which merge tool is used by linkgit:git-mergetool[1].
The list below shows the valid built-in values.
Any other value is treated as a custom merge tool and requires
- that a corresponding mergetool.<tool>.cmd variable is defined.
+ that a corresponding `mergetool.<tool>.cmd` variable is defined.
-merge.guitool::
+`merge.guitool`::
Controls which merge tool is used by linkgit:git-mergetool[1] when the
- -g/--gui flag is specified. The list below shows the valid built-in values.
+ `-g`/`--gui` flag is specified. The list below shows the valid built-in values.
Any other value is treated as a custom merge tool and requires that a
- corresponding mergetool.<guitool>.cmd variable is defined.
+ corresponding `mergetool.<guitool>.cmd` variable is defined.
include::{build_dir}/mergetools-merge.adoc[]
-merge.verbosity::
+`merge.verbosity`::
Controls the amount of output shown by the recursive merge
strategy. Level 0 outputs nothing except a final error
message if conflicts were detected. Level 1 outputs only
@@ -112,15 +126,15 @@ merge.verbosity::
above outputs debugging information. The default is level 2.
Can be overridden by the `GIT_MERGE_VERBOSITY` environment variable.
-merge.<driver>.name::
+`merge.<driver>.name`::
Defines a human-readable name for a custom low-level
merge driver. See linkgit:gitattributes[5] for details.
-merge.<driver>.driver::
+`merge.<driver>.driver`::
Defines the command that implements a custom low-level
merge driver. See linkgit:gitattributes[5] for details.
-merge.<driver>.recursive::
+`merge.<driver>.recursive`::
Names a low-level merge driver to be used when
performing an internal merge between common ancestors.
See linkgit:gitattributes[5] for details.
diff --git a/Documentation/config/mergetool.adoc b/Documentation/config/mergetool.adoc
index 00bf665aa0..6be506145c 100644
--- a/Documentation/config/mergetool.adoc
+++ b/Documentation/config/mergetool.adoc
@@ -1,24 +1,24 @@
-mergetool.<tool>.path::
+`mergetool.<tool>.path`::
Override the path for the given tool. This is useful in case
- your tool is not in the PATH.
+ your tool is not in the `$PATH`.
-mergetool.<tool>.cmd::
+`mergetool.<tool>.cmd`::
Specify the command to invoke the specified merge tool. The
specified command is evaluated in shell with the following
- variables available: 'BASE' is the name of a temporary file
+ variables available: `BASE` is the name of a temporary file
containing the common base of the files to be merged, if available;
- 'LOCAL' is the name of a temporary file containing the contents of
- the file on the current branch; 'REMOTE' is the name of a temporary
+ `LOCAL` is the name of a temporary file containing the contents of
+ the file on the current branch; `REMOTE` is the name of a temporary
file containing the contents of the file from the branch being
- merged; 'MERGED' contains the name of the file to which the merge
+ merged; `MERGED` contains the name of the file to which the merge
tool should write the results of a successful merge.
-mergetool.<tool>.hideResolved::
+`mergetool.<tool>.hideResolved`::
Allows the user to override the global `mergetool.hideResolved` value
for a specific tool. See `mergetool.hideResolved` for the full
description.
-mergetool.<tool>.trustExitCode::
+`mergetool.<tool>.trustExitCode`::
For a custom merge command, specify whether the exit code of
the merge command can be used to determine whether the merge was
successful. If this is not set to true then the merge target file
@@ -26,7 +26,7 @@ mergetool.<tool>.trustExitCode::
if the file has been updated; otherwise, the user is prompted to
indicate the success of the merge.
-mergetool.meld.hasOutput::
+`mergetool.meld.hasOutput`::
Older versions of `meld` do not support the `--output` option.
Git will attempt to detect whether `meld` supports `--output`
by inspecting the output of `meld --help`. Configuring
@@ -35,7 +35,7 @@ mergetool.meld.hasOutput::
to `true` tells Git to unconditionally use the `--output` option,
and `false` avoids using `--output`.
-mergetool.meld.useAutoMerge::
+`mergetool.meld.useAutoMerge`::
When the `--auto-merge` is given, meld will merge all non-conflicting
parts automatically, highlight the conflicting parts, and wait for
user decision. Setting `mergetool.meld.useAutoMerge` to `true` tells
@@ -45,15 +45,15 @@ mergetool.meld.useAutoMerge::
value of `false` avoids using `--auto-merge` altogether, and is the
default value.
-mergetool.<vimdiff variant>.layout::
- Configure the split window layout for vimdiff's `<variant>`, which is any of `vimdiff`,
+`mergetool.<variant>.layout`::
+ Configure the split window layout for vimdiff's _<variant>_, which is any of `vimdiff`,
`nvimdiff`, `gvimdiff`.
Upon launching `git mergetool` with `--tool=<variant>` (or without `--tool`
- if `merge.tool` is configured as `<variant>`), Git will consult
+ if `merge.tool` is configured as _<variant>_), Git will consult
`mergetool.<variant>.layout` to determine the tool's layout. If the
- variant-specific configuration is not available, `vimdiff`'s is used as
+ variant-specific configuration is not available, `vimdiff` ' s is used as
fallback. If that too is not available, a default layout with 4 windows
- will be used. To configure the layout, see the `BACKEND SPECIFIC HINTS`
+ will be used. To configure the layout, see the 'BACKEND SPECIFIC HINTS'
ifdef::git-mergetool[]
section.
endif::[]
@@ -61,39 +61,39 @@ ifndef::git-mergetool[]
section in linkgit:git-mergetool[1].
endif::[]
-mergetool.hideResolved::
+`mergetool.hideResolved`::
During a merge, Git will automatically resolve as many conflicts as
- possible and write the 'MERGED' file containing conflict markers around
- any conflicts that it cannot resolve; 'LOCAL' and 'REMOTE' normally
- represent the versions of the file from before Git's conflict
- resolution. This flag causes 'LOCAL' and 'REMOTE' to be overwritten so
+ possible and write the `$MERGED` file containing conflict markers around
+ any conflicts that it cannot resolve; `$LOCAL` and `$REMOTE` normally
+ are the versions of the file from before Git`s conflict
+ resolution. This flag causes `$LOCAL` and `$REMOTE` to be overwritten so
that only the unresolved conflicts are presented to the merge tool. Can
be configured per-tool via the `mergetool.<tool>.hideResolved`
configuration variable. Defaults to `false`.
-mergetool.keepBackup::
+`mergetool.keepBackup`::
After performing a merge, the original file with conflict markers
can be saved as a file with a `.orig` extension. If this variable
is set to `false` then this file is not preserved. Defaults to
`true` (i.e. keep the backup files).
-mergetool.keepTemporaries::
+`mergetool.keepTemporaries`::
When invoking a custom merge tool, Git uses a set of temporary
files to pass to the tool. If the tool returns an error and this
variable is set to `true`, then these temporary files will be
preserved; otherwise, they will be removed after the tool has
exited. Defaults to `false`.
-mergetool.writeToTemp::
- Git writes temporary 'BASE', 'LOCAL', and 'REMOTE' versions of
+`mergetool.writeToTemp`::
+ Git writes temporary `BASE`, `LOCAL`, and `REMOTE` versions of
conflicting files in the worktree by default. Git will attempt
to use a temporary directory for these files when set `true`.
Defaults to `false`.
-mergetool.prompt::
+`mergetool.prompt`::
Prompt before each invocation of the merge resolution program.
-mergetool.guiDefault::
+`mergetool.guiDefault`::
Set `true` to use the `merge.guitool` by default (equivalent to
specifying the `--gui` argument), or `auto` to select `merge.guitool`
or `merge.tool` depending on the presence of a `DISPLAY` environment
diff --git a/Documentation/config/pack.adoc b/Documentation/config/pack.adoc
index da527377fa..75402d5579 100644
--- a/Documentation/config/pack.adoc
+++ b/Documentation/config/pack.adoc
@@ -155,6 +155,10 @@ pack.useSparse::
commits contain certain types of direct renames. Default is
`true`.
+pack.usePathWalk::
+ Enable the `--path-walk` option by default for `git pack-objects`
+ processes. See linkgit:git-pack-objects[1] for full details.
+
pack.preferBitmapTips::
When selecting which commits will receive bitmaps, prefer a
commit at the tip of any reference that is a suffix of any value
diff --git a/Documentation/config/sendemail.adoc b/Documentation/config/sendemail.adoc
index 5ffcfc9f2a..54f1248e64 100644
--- a/Documentation/config/sendemail.adoc
+++ b/Documentation/config/sendemail.adoc
@@ -1,32 +1,32 @@
sendemail.identity::
A configuration identity. When given, causes values in the
- 'sendemail.<identity>' subsection to take precedence over
- values in the 'sendemail' section. The default identity is
+ `sendemail.<identity>` subsection to take precedence over
+ values in the `sendemail` section. The default identity is
the value of `sendemail.identity`.
sendemail.smtpEncryption::
See linkgit:git-send-email[1] for description. Note that this
- setting is not subject to the 'identity' mechanism.
+ setting is not subject to the `identity` mechanism.
sendemail.smtpSSLCertPath::
Path to ca-certificates (either a directory or a single file).
Set it to an empty string to disable certificate verification.
sendemail.<identity>.*::
- Identity-specific versions of the 'sendemail.*' parameters
+ Identity-specific versions of the `sendemail.*` parameters
found below, taking precedence over those when this
identity is selected, through either the command-line or
`sendemail.identity`.
sendemail.multiEdit::
- If true (default), a single editor instance will be spawned to edit
+ If `true` (default), a single editor instance will be spawned to edit
files you have to edit (patches when `--annotate` is used, and the
- summary when `--compose` is used). If false, files will be edited one
+ summary when `--compose` is used). If `false`, files will be edited one
after the other, spawning a new editor each time.
sendemail.confirm::
Sets the default for whether to confirm before sending. Must be
- one of 'always', 'never', 'cc', 'compose', or 'auto'. See `--confirm`
+ one of `always`, `never`, `cc`, `compose`, or `auto`. See `--confirm`
in the linkgit:git-send-email[1] documentation for the meaning of these
values.
@@ -51,7 +51,7 @@ sendemail.aliasesFile::
sendemail.aliasFileType::
Format of the file(s) specified in sendemail.aliasesFile. Must be
- one of 'mutt', 'mailrc', 'pine', 'elm', 'gnus', or 'sendmail'.
+ one of `mutt`, `mailrc`, `pine`, `elm`, `gnus`, or `sendmail`.
+
What an alias file in each format looks like can be found in
the documentation of the email program of the same name. The
@@ -101,7 +101,7 @@ sendemail.signedOffCc (deprecated)::
sendemail.smtpBatchSize::
Number of messages to be sent per connection, after that a relogin
- will happen. If the value is 0 or undefined, send all messages in
+ will happen. If the value is `0` or undefined, send all messages in
one connection.
See also the `--batch-size` option of linkgit:git-send-email[1].
@@ -111,5 +111,5 @@ sendemail.smtpReloginDelay::
sendemail.forbidSendmailVariables::
To avoid common misconfiguration mistakes, linkgit:git-send-email[1]
- will abort with a warning if any configuration options for "sendmail"
+ will abort with a warning if any configuration options for `sendmail`
exist. Set this variable to bypass the check.
diff --git a/Documentation/diff-generate-patch.adoc b/Documentation/diff-generate-patch.adoc
index e5c813c96f..7b6cdd1980 100644
--- a/Documentation/diff-generate-patch.adoc
+++ b/Documentation/diff-generate-patch.adoc
@@ -138,7 +138,7 @@ or like this (when the `--cc` option is used):
+
[synopsis]
index <hash>,<hash>..<hash>
-mode <mode>,<mode>`..`<mode>
+mode <mode>,<mode>..<mode>
new file mode <mode>
deleted file mode <mode>,<mode>
+
diff --git a/Documentation/git-cat-file.adoc b/Documentation/git-cat-file.adoc
index cde79ad242..180d1ad363 100644
--- a/Documentation/git-cat-file.adoc
+++ b/Documentation/git-cat-file.adoc
@@ -307,6 +307,11 @@ newline. The available atoms are:
`objecttype`::
The type of the object (the same as `cat-file -t` reports).
+`objectmode`::
+ If the specified object has mode information (such as a tree or
+ index entry), the mode expressed as an octal integer. Otherwise,
+ empty string.
+
`objectsize`::
The size, in bytes, of the object (the same as `cat-file -s`
reports).
@@ -368,6 +373,14 @@ If a name is specified that might refer to more than one object (an ambiguous sh
<object> SP ambiguous LF
------------
+If a name is specified that refers to a submodule entry in a tree and the
+target object does not exist in the repository, then `cat-file` will ignore
+any custom format and print (with the object ID of the submodule):
+
+------------
+<oid> SP submodule LF
+------------
+
If `--follow-symlinks` is used, and a symlink in the repository points
outside the repository, then `cat-file` will ignore any custom format
and print:
diff --git a/Documentation/git-checkout.adoc b/Documentation/git-checkout.adoc
index a66c53a5cd..ee83b6d9ba 100644
--- a/Documentation/git-checkout.adoc
+++ b/Documentation/git-checkout.adoc
@@ -7,54 +7,54 @@ git-checkout - Switch branches or restore working tree files
SYNOPSIS
--------
-[verse]
-'git checkout' [-q] [-f] [-m] [<branch>]
-'git checkout' [-q] [-f] [-m] --detach [<branch>]
-'git checkout' [-q] [-f] [-m] [--detach] <commit>
-'git checkout' [-q] [-f] [-m] [[-b|-B|--orphan] <new-branch>] [<start-point>]
-'git checkout' [-f] <tree-ish> [--] <pathspec>...
-'git checkout' [-f] <tree-ish> --pathspec-from-file=<file> [--pathspec-file-nul]
-'git checkout' [-f|--ours|--theirs|-m|--conflict=<style>] [--] <pathspec>...
-'git checkout' [-f|--ours|--theirs|-m|--conflict=<style>] --pathspec-from-file=<file> [--pathspec-file-nul]
-'git checkout' (-p|--patch) [<tree-ish>] [--] [<pathspec>...]
+[synopsis]
+git checkout [-q] [-f] [-m] [<branch>]
+git checkout [-q] [-f] [-m] --detach [<branch>]
+git checkout [-q] [-f] [-m] [--detach] <commit>
+git checkout [-q] [-f] [-m] [[-b|-B|--orphan] <new-branch>] [<start-point>]
+git checkout [-f] <tree-ish> [--] <pathspec>...
+git checkout [-f] <tree-ish> --pathspec-from-file=<file> [--pathspec-file-nul]
+git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [--] <pathspec>...
+git checkout [-f|--ours|--theirs|-m|--conflict=<style>] --pathspec-from-file=<file> [--pathspec-file-nul]
+git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>...]
DESCRIPTION
-----------
Updates files in the working tree to match the version in the index
-or the specified tree. If no pathspec was given, 'git checkout' will
+or the specified tree. If no pathspec was given, `git checkout` will
also update `HEAD` to set the specified branch as the current
branch.
-'git checkout' [<branch>]::
- To prepare for working on `<branch>`, switch to it by updating
+`git checkout [<branch>]`::
+ To prepare for working on _<branch>_, switch to it by updating
the index and the files in the working tree, and by pointing
`HEAD` at the branch. Local modifications to the files in the
working tree are kept, so that they can be committed to the
- `<branch>`.
+ _<branch>_.
+
-If `<branch>` is not found but there does exist a tracking branch in
-exactly one remote (call it `<remote>`) with a matching name and
+If _<branch>_ is not found but there does exist a tracking branch in
+exactly one remote (call it _<remote>_) with a matching name and
`--no-guess` is not specified, treat as equivalent to
+
------------
$ git checkout -b <branch> --track <remote>/<branch>
------------
+
-You could omit `<branch>`, in which case the command degenerates to
+You could omit _<branch>_, in which case the command degenerates to
"check out the current branch", which is a glorified no-op with
rather expensive side-effects to show only the tracking information,
if it exists, for the current branch.
-'git checkout' -b|-B <new-branch> [<start-point>]::
+`git checkout (-b|-B) <new-branch> [<start-point>]`::
Specifying `-b` causes a new branch to be created as if
linkgit:git-branch[1] were called and then checked out. In
this case you can use the `--track` or `--no-track` options,
- which will be passed to 'git branch'. As a convenience,
+ which will be passed to `git branch`. As a convenience,
`--track` without `-b` implies branch creation; see the
description of `--track` below.
+
-If `-B` is given, `<new-branch>` is created if it doesn't exist; otherwise, it
+If `-B` is given, _<new-branch>_ is created if it doesn't exist; otherwise, it
is reset. This is the transactional equivalent of
+
------------
@@ -67,30 +67,30 @@ successful (e.g., when the branch is in use in another worktree, not
just the current branch stays the same, but the branch is not reset to
the start-point, either).
-'git checkout' --detach [<branch>]::
-'git checkout' [--detach] <commit>::
+`git checkout --detach [<branch>]`::
+`git checkout [--detach] <commit>`::
- Prepare to work on top of `<commit>`, by detaching `HEAD` at it
+ Prepare to work on top of _<commit>_, by detaching `HEAD` at it
(see "DETACHED HEAD" section), and updating the index and the
files in the working tree. Local modifications to the files
in the working tree are kept, so that the resulting working
tree will be the state recorded in the commit plus the local
modifications.
+
-When the `<commit>` argument is a branch name, the `--detach` option can
+When the _<commit>_ argument is a branch name, the `--detach` option can
be used to detach `HEAD` at the tip of the branch (`git checkout
<branch>` would check out that branch without detaching `HEAD`).
+
-Omitting `<branch>` detaches `HEAD` at the tip of the current branch.
+Omitting _<branch>_ detaches `HEAD` at the tip of the current branch.
-'git checkout' [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <pathspec>...::
-'git checkout' [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] --pathspec-from-file=<file> [--pathspec-file-nul]::
+`git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] [--] <pathspec>...`::
+`git checkout [-f|--ours|--theirs|-m|--conflict=<style>] [<tree-ish>] --pathspec-from-file=<file> [--pathspec-file-nul]`::
Overwrite the contents of the files that match the pathspec.
- When the `<tree-ish>` (most often a commit) is not given,
+ When the _<tree-ish>_ (most often a commit) is not given,
overwrite working tree with the contents in the index.
- When the `<tree-ish>` is given, overwrite both the index and
- the working tree with the contents at the `<tree-ish>`.
+ When the _<tree-ish>_ is given, overwrite both the index and
+ the working tree with the contents at the _<tree-ish>_.
+
The index may contain unmerged entries because of a previous failed merge.
By default, if you try to check out such an entry from the index, the
@@ -100,7 +100,7 @@ specific side of the merge can be checked out of the index by
using `--ours` or `--theirs`. With `-m`, changes made to the working tree
file can be discarded to re-create the original conflicted merge result.
-'git checkout' (-p|--patch) [<tree-ish>] [--] [<pathspec>...]::
+`git checkout (-p|--patch) [<tree-ish>] [--] [<pathspec>...]`::
This is similar to the previous mode, but lets you use the
interactive interface to show the "diff" output and choose which
hunks to use in the result. See below for the description of
@@ -108,19 +108,19 @@ file can be discarded to re-create the original conflicted merge result.
OPTIONS
-------
--q::
---quiet::
+`-q`::
+`--quiet`::
Quiet, suppress feedback messages.
---progress::
---no-progress::
+`--progress`::
+`--no-progress`::
Progress status is reported on the standard error stream
by default when it is attached to a terminal, unless `--quiet`
is specified. This flag enables progress reporting even if not
attached to a terminal, regardless of `--quiet`.
--f::
---force::
+`-f`::
+`--force`::
When switching branches, proceed even if the index or the
working tree differs from `HEAD`, and even if there are untracked
files in the way. This is used to throw away local changes and
@@ -129,13 +129,13 @@ OPTIONS
When checking out paths from the index, do not fail upon unmerged
entries; instead, unmerged entries are ignored.
---ours::
---theirs::
+`--ours`::
+`--theirs`::
When checking out paths from the index, check out stage #2
- ('ours') or #3 ('theirs') for unmerged paths.
+ (`ours`) or #3 (`theirs`) for unmerged paths.
+
-Note that during `git rebase` and `git pull --rebase`, 'ours' and
-'theirs' may appear swapped; `--ours` gives the version from the
+Note that during `git rebase` and `git pull --rebase`, `ours` and
+`theirs` may appear swapped; `--ours` gives the version from the
branch the changes are rebased onto, while `--theirs` gives the
version from the branch that holds your work that is being rebased.
+
@@ -149,22 +149,22 @@ as `ours` (i.e. "our shared canonical history"), while what you did
on your side branch as `theirs` (i.e. "one contributor's work on top
of it").
--b <new-branch>::
- Create a new branch named `<new-branch>`, start it at
- `<start-point>`, and check the resulting branch out;
+`-b <new-branch>`::
+ Create a new branch named _<new-branch>_, start it at
+ _<start-point>_, and check the resulting branch out;
see linkgit:git-branch[1] for details.
--B <new-branch>::
- Creates the branch `<new-branch>`, start it at `<start-point>`;
- if it already exists, then reset it to `<start-point>`. And then
+`-B <new-branch>`::
+ Creates the branch _<new-branch>_, start it at _<start-point>_;
+ if it already exists, then reset it to _<start-point>_. And then
check the resulting branch out. This is equivalent to running
- "git branch" with "-f" followed by "git checkout" of that branch;
+ `git branch` with `-f` followed by `git checkout` of that branch;
see linkgit:git-branch[1] for details.
--t::
---track[=(direct|inherit)]::
+`-t`::
+`--track[=(direct|inherit)]`::
When creating a new branch, set up "upstream" configuration. See
- "--track" in linkgit:git-branch[1] for details.
+ `--track` in linkgit:git-branch[1] for details.
+
If no `-b` option is given, the name of the new branch will be
derived from the remote-tracking branch, by looking at the local part of
@@ -176,14 +176,14 @@ off of `origin/hack` (or `remotes/origin/hack`, or even
guessing results in an empty name, the guessing is aborted. You can
explicitly give a name with `-b` in such a case.
---no-track::
+`--no-track`::
Do not set up "upstream" configuration, even if the
`branch.autoSetupMerge` configuration variable is true.
---guess::
---no-guess::
- If `<branch>` is not found but there does exist a tracking
- branch in exactly one remote (call it `<remote>`) with a
+`--guess`::
+`--no-guess`::
+ If _<branch>_ is not found but there does exist a tracking
+ branch in exactly one remote (call it _<remote>_) with a
matching name, treat as equivalent to
+
------------
@@ -192,10 +192,10 @@ $ git checkout -b <branch> --track <remote>/<branch>
+
If the branch exists in multiple remotes and one of them is named by
the `checkout.defaultRemote` configuration variable, we'll use that
-one for the purposes of disambiguation, even if the `<branch>` isn't
+one for the purposes of disambiguation, even if the _<branch>_ isn't
unique across all remotes. Set it to
e.g. `checkout.defaultRemote=origin` to always checkout remote
-branches from there if `<branch>` is ambiguous but exists on the
+branches from there if _<branch>_ is ambiguous but exists on the
'origin' remote. See also `checkout.defaultRemote` in
linkgit:git-config[1].
+
@@ -204,28 +204,28 @@ linkgit:git-config[1].
The default behavior can be set via the `checkout.guess` configuration
variable.
--l::
+`-l`::
Create the new branch's reflog; see linkgit:git-branch[1] for
details.
--d::
---detach::
+`-d`::
+`--detach`::
Rather than checking out a branch to work on it, check out a
commit for inspection and discardable experiments.
This is the default behavior of `git checkout <commit>` when
- `<commit>` is not a branch name. See the "DETACHED HEAD" section
+ _<commit>_ is not a branch name. See the "DETACHED HEAD" section
below for details.
---orphan <new-branch>::
- Create a new unborn branch, named `<new-branch>`, started from
- `<start-point>` and switch to it. The first commit made on this
+`--orphan <new-branch>`::
+ Create a new unborn branch, named _<new-branch>_, started from
+ _<start-point>_ and switch to it. The first commit made on this
new branch will have no parents and it will be the root of a new
history totally disconnected from all the other branches and
commits.
+
The index and the working tree are adjusted as if you had previously run
`git checkout <start-point>`. This allows you to start a new history
-that records a set of paths similar to `<start-point>` by easily running
+that records a set of paths similar to _<start-point>_ by easily running
`git commit -a` to make the root commit.
+
This can be useful when you want to publish the tree from a commit
@@ -235,20 +235,20 @@ whose full history contains proprietary or otherwise encumbered bits of
code.
+
If you want to start a disconnected history that records a set of paths
-that is totally different from the one of `<start-point>`, then you should
+that is totally different from the one of _<start-point>_, then you should
clear the index and the working tree right after creating the orphan
branch by running `git rm -rf .` from the top level of the working tree.
Afterwards you will be ready to prepare your new files, repopulating the
working tree, by copying them from elsewhere, extracting a tarball, etc.
---ignore-skip-worktree-bits::
- In sparse checkout mode, `git checkout -- <paths>` would
- update only entries matched by `<paths>` and sparse patterns
+`--ignore-skip-worktree-bits`::
+ In sparse checkout mode, `git checkout -- <path>...` would
+ update only entries matched by _<paths>_ and sparse patterns
in `$GIT_DIR/info/sparse-checkout`. This option ignores
- the sparse patterns and adds back any files in `<paths>`.
+ the sparse patterns and adds back any files in `<path>...`.
--m::
---merge::
+`-m`::
+`--merge`::
When switching branches,
if you have local modifications to one or more files that
are different between the current branch and the branch to
@@ -269,40 +269,40 @@ used when checking out paths from a tree-ish.
+
When switching branches with `--merge`, staged changes may be lost.
---conflict=<style>::
+`--conflict=<style>`::
The same as `--merge` option above, but changes the way the
conflicting hunks are presented, overriding the
`merge.conflictStyle` configuration variable. Possible values are
- "merge" (default), "diff3", and "zdiff3".
+ `merge` (default), `diff3`, and `zdiff3`.
--p::
---patch::
+`-p`::
+`--patch`::
Interactively select hunks in the difference between the
- `<tree-ish>` (or the index, if unspecified) and the working
+ _<tree-ish>_ (or the index, if unspecified) and the working
tree. The chosen hunks are then applied in reverse to the
- working tree (and if a `<tree-ish>` was specified, the index).
+ working tree (and if a _<tree-ish>_ was specified, the index).
+
This means that you can use `git checkout -p` to selectively discard
-edits from your current working tree. See the ``Interactive Mode''
+edits from your current working tree. See the "Interactive Mode"
section of linkgit:git-add[1] to learn how to operate the `--patch` mode.
+
Note that this option uses the no overlay mode by default (see also
`--overlay`), and currently doesn't support overlay mode.
---ignore-other-worktrees::
+`--ignore-other-worktrees`::
`git checkout` refuses when the wanted branch is already checked
out or otherwise in use by another worktree. This option makes
it check the branch out anyway. In other words, the branch can
be in use by more than one worktree.
---overwrite-ignore::
---no-overwrite-ignore::
+`--overwrite-ignore`::
+`--no-overwrite-ignore`::
Silently overwrite ignored files when switching branches. This
is the default behavior. Use `--no-overwrite-ignore` to abort
the operation when the new branch contains ignored files.
---recurse-submodules::
---no-recurse-submodules::
+`--recurse-submodules`::
+`--no-recurse-submodules`::
Using `--recurse-submodules` will update the content of all active
submodules according to the commit recorded in the superproject. If
local modifications in a submodule would be overwritten the checkout
@@ -311,25 +311,25 @@ Note that this option uses the no overlay mode by default (see also
Just like linkgit:git-submodule[1], this will detach `HEAD` of the
submodule.
---overlay::
---no-overlay::
+`--overlay`::
+`--no-overlay`::
In the default overlay mode, `git checkout` never
removes files from the index or the working tree. When
specifying `--no-overlay`, files that appear in the index and
- working tree, but not in `<tree-ish>` are removed, to make them
- match `<tree-ish>` exactly.
+ working tree, but not in _<tree-ish>_ are removed, to make them
+ match _<tree-ish>_ exactly.
---pathspec-from-file=<file>::
- Pathspec is passed in `<file>` instead of commandline args. If
- `<file>` is exactly `-` then standard input is used. Pathspec
- elements are separated by LF or CR/LF. Pathspec elements can be
+`--pathspec-from-file=<file>`::
+ Pathspec is passed in _<file>_ instead of commandline args. If
+ _<file>_ is exactly `-` then standard input is used. Pathspec
+ elements are separated by _LF_ or _CR_/_LF_. Pathspec elements can be
quoted as explained for the configuration variable `core.quotePath`
(see linkgit:git-config[1]). See also `--pathspec-file-nul` and
global `--literal-pathspecs`.
---pathspec-file-nul::
+`--pathspec-file-nul`::
Only meaningful with `--pathspec-from-file`. Pathspec elements are
- separated with NUL character and all other characters are taken
+ separated with _NUL_ character and all other characters are taken
literally (including newlines and quotes).
<branch>::
@@ -343,33 +343,33 @@ You can use the `@{-N}` syntax to refer to the N-th last
branch/commit checked out using "git checkout" operation. You may
also specify `-` which is synonymous to `@{-1}`.
+
-As a special case, you may use `A...B` as a shortcut for the
-merge base of `A` and `B` if there is exactly one merge base. You can
-leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
+As a special case, you may use `<rev-a>...<rev-b>` as a shortcut for the
+merge base of _<rev-a>_ and _<rev-b>_ if there is exactly one merge base. You can
+leave out at most one of _<rev-a>_ and _<rev-b>_, in which case it defaults to `HEAD`.
-<new-branch>::
+_<new-branch>_::
Name for the new branch.
-<start-point>::
+_<start-point>_::
The name of a commit at which to start the new branch; see
linkgit:git-branch[1] for details. Defaults to `HEAD`.
+
-As a special case, you may use `"A...B"` as a shortcut for the
-merge base of `A` and `B` if there is exactly one merge base. You can
-leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
+As a special case, you may use `<rev-a>...<rev-b>` as a shortcut for the
+merge base of _<rev-a>_ and _<rev-b>_ if there is exactly one merge base. You can
+leave out at most one of _<rev-a>_ and _<rev-b>_, in which case it defaults to `HEAD`.
-<tree-ish>::
+_<tree-ish>_::
Tree to checkout from (when paths are given). If not specified,
the index will be used.
+
-As a special case, you may use `"A...B"` as a shortcut for the
-merge base of `A` and `B` if there is exactly one merge base. You can
-leave out at most one of `A` and `B`, in which case it defaults to `HEAD`.
+As a special case, you may use `<rev-a>...<rev-b>` as a shortcut for the
+merge base of _<rev-a>_ and _<rev-b>_ if there is exactly one merge base. You can
+leave out at most one of _<rev-a>_ and _<rev-b>_, in which case it defaults to `HEAD`.
-\--::
+`--`::
Do not interpret any more arguments as options.
-<pathspec>...::
+`<pathspec>...`::
Limits the paths affected by the operation.
+
For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
@@ -391,7 +391,7 @@ a---b---c branch 'master' (refers to commit 'c')
------------
When a commit is created in this state, the branch is updated to refer to
-the new commit. Specifically, 'git commit' creates a new commit `d`, whose
+the new commit. Specifically, `git commit` creates a new commit `d`, whose
parent is commit `c`, and then updates branch `master` to refer to new
commit `d`. `HEAD` still refers to branch `master` and so indirectly now refers
to commit `d`:
@@ -510,11 +510,11 @@ ARGUMENT DISAMBIGUATION
-----------------------
When there is only one argument given and it is not `--` (e.g. `git
-checkout abc`), and when the argument is both a valid `<tree-ish>`
-(e.g. a branch `abc` exists) and a valid `<pathspec>` (e.g. a file
+checkout abc`), and when the argument is both a valid _<tree-ish>_
+(e.g. a branch `abc` exists) and a valid _<pathspec>_ (e.g. a file
or a directory whose name is "abc" exists), Git would usually ask
you to disambiguate. Because checking out a branch is so common an
-operation, however, `git checkout abc` takes "abc" as a `<tree-ish>`
+operation, however, `git checkout abc` takes "abc" as a _<tree-ish>_
in such a situation. Use `git checkout -- <pathspec>` if you want
to checkout these paths out of the index.
diff --git a/Documentation/git-column.adoc b/Documentation/git-column.adoc
index 5a4f2b6fde..8e0047214d 100644
--- a/Documentation/git-column.adoc
+++ b/Documentation/git-column.adoc
@@ -50,7 +50,7 @@ EXAMPLES
--------
Format data by columns:
-+
+
------------
$ seq 1 24 | git column --mode=column --padding=5
1 4 7 10 13 16 19 22
@@ -59,7 +59,7 @@ $ seq 1 24 | git column --mode=column --padding=5
------------
Format data by rows:
-+
+
------------
$ seq 1 21 | git column --mode=row --padding=5
1 2 3 4 5 6 7
@@ -68,7 +68,7 @@ $ seq 1 21 | git column --mode=row --padding=5
------------
List some tags in a table with unequal column widths:
-+
+
------------
$ git tag --list 'v2.4.*' --column=row,dense
v2.4.0 v2.4.0-rc0 v2.4.0-rc1 v2.4.0-rc2 v2.4.0-rc3
diff --git a/Documentation/git-diff.adoc b/Documentation/git-diff.adoc
index dec173a345..272331afba 100644
--- a/Documentation/git-diff.adoc
+++ b/Documentation/git-diff.adoc
@@ -14,7 +14,7 @@ git diff [<options>] --cached [--merge-base] [<commit>] [--] [<path>...]
git diff [<options>] [--merge-base] <commit> [<commit>...] <commit> [--] [<path>...]
git diff [<options>] <commit>...<commit> [--] [<path>...]
git diff [<options>] <blob> <blob>
-git diff [<options>] --no-index [--] <path> <path>
+git diff [<options>] --no-index [--] <path> <path> [<pathspec>...]
DESCRIPTION
-----------
@@ -31,14 +31,18 @@ files on disk.
further add to the index but you still haven't. You can
stage these changes by using linkgit:git-add[1].
-`git diff [<options>] --no-index [--] <path> <path>`::
+`git diff [<options>] --no-index [--] <path> <path> [<pathspec>...]`::
This form is to compare the given two paths on the
filesystem. You can omit the `--no-index` option when
running the command in a working tree controlled by Git and
at least one of the paths points outside the working tree,
or when running the command outside a working tree
- controlled by Git. This form implies `--exit-code`.
+ controlled by Git. This form implies `--exit-code`. If both
+ paths point to directories, additional pathspecs may be
+ provided. These will limit the files included in the
+ difference. All such pathspecs must be relative as they
+ apply to both sides of the diff.
`git diff [<options>] --cached [--merge-base] [<commit>] [--] [<path>...]`::
diff --git a/Documentation/git-fast-export.adoc b/Documentation/git-fast-export.adoc
index 413a527496..43bbb4f63c 100644
--- a/Documentation/git-fast-export.adoc
+++ b/Documentation/git-fast-export.adoc
@@ -46,14 +46,12 @@ resulting tag will have an invalid signature.
--signed-commits=(verbatim|warn-verbatim|warn-strip|strip|abort)::
Specify how to handle signed commits. Behaves exactly as
- '--signed-tags', but for commits. Default is 'abort'.
+ '--signed-tags', but for commits. Default is 'strip', which
+ is the same as how earlier versions of this command without
+ this option behaved.
+
-Earlier versions this command that did not have '--signed-commits'
-behaved as if '--signed-commits=strip'. As an escape hatch for users
-of tools that call 'git fast-export' but do not yet support
-'--signed-commits', you may set the environment variable
-'FAST_EXPORT_SIGNED_COMMITS_NOABORT=1' in order to change the default
-from 'abort' to 'warn-strip'.
+NOTE: This is highly experimental and the format of the data stream may
+change in the future without compatibility guarantees.
--tag-of-filtered-object=(abort|drop|rewrite)::
Specify how to handle tags whose tagged object is filtered out.
diff --git a/Documentation/git-fast-import.adoc b/Documentation/git-fast-import.adoc
index 7b107f5e8e..250d866652 100644
--- a/Documentation/git-fast-import.adoc
+++ b/Documentation/git-fast-import.adoc
@@ -523,6 +523,9 @@ that signs the commit data.
Here <alg> specifies which hashing algorithm is used for this
signature, either `sha1` or `sha256`.
+NOTE: This is highly experimental and the format of the data stream may
+change in the future without compatibility guarantees.
+
`encoding`
^^^^^^^^^^
The optional `encoding` command indicates the encoding of the commit
diff --git a/Documentation/git-imap-send.adoc b/Documentation/git-imap-send.adoc
index 26ccf4e433..17147f93c3 100644
--- a/Documentation/git-imap-send.adoc
+++ b/Documentation/git-imap-send.adoc
@@ -9,21 +9,24 @@ git-imap-send - Send a collection of patches from stdin to an IMAP folder
SYNOPSIS
--------
[verse]
-'git imap-send' [-v] [-q] [--[no-]curl]
+'git imap-send' [-v] [-q] [--[no-]curl] [(--folder|-f) <folder>]
+'git imap-send' --list
DESCRIPTION
-----------
-This command uploads a mailbox generated with 'git format-patch'
+This command uploads a mailbox generated with `git format-patch`
into an IMAP drafts folder. This allows patches to be sent as
other email is when using mail clients that cannot read mailbox
files directly. The command also works with any general mailbox
-in which emails have the fields "From", "Date", and "Subject" in
+in which emails have the fields `From`, `Date`, and `Subject` in
that order.
Typical usage is something like:
-git format-patch --signoff --stdout --attach origin | git imap-send
+------
+$ git format-patch --signoff --stdout --attach origin | git imap-send
+------
OPTIONS
@@ -37,6 +40,11 @@ OPTIONS
--quiet::
Be quiet.
+-f <folder>::
+--folder=<folder>::
+ Specify the folder in which the emails have to saved.
+ For example: `--folder=[Gmail]/Drafts` or `-f INBOX/Drafts`.
+
--curl::
Use libcurl to communicate with the IMAP server, unless tunneling
into it. Ignored if Git was built without the USE_CURL_FOR_IMAP_SEND
@@ -47,6 +55,8 @@ OPTIONS
using libcurl. Ignored if Git was built with the NO_OPENSSL option
set.
+--list::
+ Run the IMAP LIST command to output a list of all the folders present.
CONFIGURATION
-------------
@@ -102,20 +112,56 @@ Using Gmail's IMAP interface:
---------
[imap]
- folder = "[Gmail]/Drafts"
- host = imaps://imap.gmail.com
- user = user@gmail.com
- port = 993
+ folder = "[Gmail]/Drafts"
+ host = imaps://imap.gmail.com
+ user = user@gmail.com
+ port = 993
---------
+Gmail does not allow using your regular password for `git imap-send`.
+If you have multi-factor authentication set up on your Gmail account, you
+can generate an app-specific password for use with `git imap-send`.
+Visit https://security.google.com/settings/security/apppasswords to create
+it. Alternatively, use OAuth2.0 authentication as described below.
+
[NOTE]
You might need to instead use: `folder = "[Google Mail]/Drafts"` if you get an error
-that the "Folder doesn't exist".
+that the "Folder doesn't exist". You can also run `git imap-send --list` to get a
+list of available folders.
[NOTE]
If your Gmail account is set to another language than English, the name of the "Drafts"
folder will be localized.
+If you want to use OAuth2.0 based authentication, you can specify
+`OAUTHBEARER` or `XOAUTH2` mechanism in your config. It is more secure
+than using app-specific passwords, and also does not enforce the need of
+having multi-factor authentication. You will have to use an OAuth2.0
+access token in place of your password when using this authentication.
+
+---------
+[imap]
+ folder = "[Gmail]/Drafts"
+ host = imaps://imap.gmail.com
+ user = user@gmail.com
+ port = 993
+ authmethod = OAUTHBEARER
+---------
+
+Using Outlook's IMAP interface:
+
+Unlike Gmail, Outlook only supports OAuth2.0 based authentication. Also, it
+supports only `XOAUTH2` as the mechanism.
+
+---------
+[imap]
+ folder = "Drafts"
+ host = imaps://outlook.office365.com
+ user = user@outlook.com
+ port = 993
+ authmethod = XOAUTH2
+---------
+
Once the commits are ready to be sent, run the following command:
$ git format-patch --cover-letter -M --stdout origin/master | git imap-send
@@ -124,6 +170,10 @@ Just make sure to disable line wrapping in the email client (Gmail's web
interface will wrap lines no matter what, so you need to use a real
IMAP client).
+In case you are using OAuth2.0 authentication, it is easier to use credential
+helpers to generate tokens. Credential helpers suggested in
+linkgit:git-send-email[1] can be used for `git imap-send` as well.
+
CAUTION
-------
It is still your responsibility to make sure that the email message
diff --git a/Documentation/git-maintenance.adoc b/Documentation/git-maintenance.adoc
index 931f3e02e8..540b5cf68b 100644
--- a/Documentation/git-maintenance.adoc
+++ b/Documentation/git-maintenance.adoc
@@ -172,7 +172,7 @@ rerere-gc::
worktree-prune::
The `worktree-prune` task deletes stale or broken worktrees. See
- linkit:git-worktree[1] for more information.
+ linkgit:git-worktree[1] for more information.
OPTIONS
-------
diff --git a/Documentation/git-merge.adoc b/Documentation/git-merge.adoc
index 64281d6d44..d53923c3b7 100644
--- a/Documentation/git-merge.adoc
+++ b/Documentation/git-merge.adoc
@@ -8,13 +8,13 @@ git-merge - Join two or more development histories together
SYNOPSIS
--------
-[verse]
-'git merge' [-n] [--stat] [--no-commit] [--squash] [--[no-]edit]
+[synopsis]
+git merge [-n] [--stat] [--compact-summary] [--no-commit] [--squash] [--[no-]edit]
[--no-verify] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]]
[--[no-]allow-unrelated-histories]
[--[no-]rerere-autoupdate] [-m <msg>] [-F <file>]
[--into-name <branch>] [<commit>...]
-'git merge' (--continue | --abort | --quit)
+git merge (--continue | --abort | --quit)
DESCRIPTION
-----------
@@ -57,7 +57,7 @@ merge started (and especially if those changes were further modified
after the merge was started), `git merge --abort` will in some cases be
unable to reconstruct the original (pre-merge) changes. Therefore:
-*Warning*: Running `git merge` with non-trivial uncommitted changes is
+WARNING: Running `git merge` with non-trivial uncommitted changes is
discouraged: while possible, it may leave you in a state that is hard to
back out of in the case of a conflict.
@@ -67,7 +67,7 @@ OPTIONS
include::merge-options.adoc[]
--m <msg>::
+`-m <msg>`::
Set the commit message to be used for the merge commit (in
case one is created).
+
@@ -78,13 +78,13 @@ The `git fmt-merge-msg` command can be
used to give a good default for automated `git merge`
invocations. The automated message can include the branch description.
---into-name <branch>::
+`--into-name <branch>`::
Prepare the default merge message as if merging to the branch
- `<branch>`, instead of the name of the real branch to which
+ _<branch>_, instead of the name of the real branch to which
the merge is made.
--F <file>::
---file=<file>::
+`-F <file>`::
+`--file=<file>`::
Read the commit message to be used for the merge commit (in
case one is created).
+
@@ -93,12 +93,12 @@ will be appended to the specified message.
include::rerere-options.adoc[]
---overwrite-ignore::
---no-overwrite-ignore::
+`--overwrite-ignore`::
+`--no-overwrite-ignore`::
Silently overwrite ignored files from the merge result. This
is the default behavior. Use `--no-overwrite-ignore` to abort.
---abort::
+`--abort`::
Abort the current conflict resolution process, and
try to reconstruct the pre-merge state. If an autostash entry is
present, apply it to the worktree.
@@ -114,17 +114,17 @@ which case `git merge --abort` applies the stash entry to the worktree
whereas `git reset --merge` will save the stashed changes in the stash
list.
---quit::
+`--quit`::
Forget about the current merge in progress. Leave the index
and the working tree as-is. If `MERGE_AUTOSTASH` is present, the
stash entry will be saved to the stash list.
---continue::
+`--continue`::
After a `git merge` stops due to conflicts you can conclude the
merge by running `git merge --continue` (see "HOW TO RESOLVE
CONFLICTS" section below).
-<commit>...::
+`<commit>...`::
Commits, usually other branch heads, to merge into our branch.
Specifying more than one commit will create a merge with
more than two parents (affectionately called an Octopus merge).
@@ -152,7 +152,7 @@ To avoid recording unrelated changes in the merge commit,
`git pull` and `git merge` will also abort if there are any changes
registered in the index relative to the `HEAD` commit. (Special
narrow exceptions to this rule may exist depending on which merge
-strategy is in use, but generally, the index must match HEAD.)
+strategy is in use, but generally, the index must match `HEAD`.)
If all named commits are already ancestors of `HEAD`, `git merge`
will exit early with the message "Already up to date."
@@ -195,11 +195,11 @@ happens:
stage 2 from `HEAD`, and stage 3 from `MERGE_HEAD` (you
can inspect the stages with `git ls-files -u`). The working
tree files contain the result of the merge operation; i.e. 3-way
- merge results with familiar conflict markers `<<<` `===` `>>>`.
+ merge results with familiar conflict markers +<<<+ `===` +>>>+.
5. A ref named `AUTO_MERGE` is written, pointing to a tree
corresponding to the current content of the working tree (including
conflict markers for textual conflicts). Note that this ref is only
- written when the 'ort' merge strategy is used (the default).
+ written when the `ort` merge strategy is used (the default).
6. No other changes are made. In particular, the local
modifications you had before you started merge will stay the
same and the index entries for them stay as they were,
@@ -231,7 +231,6 @@ git merge v1.2.3^0
git merge --ff-only v1.2.3
----
-
HOW CONFLICTS ARE PRESENTED
---------------------------
@@ -260,7 +259,7 @@ And here is another line that is cleanly resolved or unmodified.
------------
The area where a pair of conflicting changes happened is marked with markers
-`<<<<<<<`, `=======`, and `>>>>>>>`. The part before the `=======`
++<<<<<<<+, `=======`, and +>>>>>>>+. The part before the `=======`
is typically your side, and the part afterwards is typically their side.
The default format does not show what the original said in the conflicting
@@ -270,7 +269,7 @@ side wants to say it is hard and you'd prefer to go shopping, while the
other side wants to claim it is easy.
An alternative style can be used by setting the `merge.conflictStyle`
-configuration variable to either "diff3" or "zdiff3". In "diff3"
+configuration variable to either `diff3` or `zdiff3`. In `diff3`
style, the above conflict may look like this:
------------
@@ -290,7 +289,7 @@ Git makes conflict resolution easy.
And here is another line that is cleanly resolved or unmodified.
------------
-while in "zdiff3" style, it may look like this:
+while in `zdiff3` style, it may look like this:
------------
Here are lines that are either unchanged from the common
@@ -308,8 +307,8 @@ Git makes conflict resolution easy.
And here is another line that is cleanly resolved or unmodified.
------------
-In addition to the `<<<<<<<`, `=======`, and `>>>>>>>` markers, it uses
-another `|||||||` marker that is followed by the original text. You can
+In addition to the +<<<<<<<+, `=======`, and +>>>>>>>+ markers, it uses
+another +|||||||+ marker that is followed by the original text. You can
tell that the original just stated a fact, and your side simply gave in to
that statement and gave up, while the other side tried to have a more
positive attitude. You can sometimes come up with a better resolution by
@@ -390,8 +389,8 @@ include::merge-strategies.adoc[]
CONFIGURATION
-------------
-branch.<name>.mergeOptions::
- Sets default options for merging into branch <name>. The syntax and
+`branch.<name>.mergeOptions`::
+ Sets default options for merging into branch _<name>_. The syntax and
supported options are the same as those of `git merge`, but option
values containing whitespace characters are currently not supported.
diff --git a/Documentation/git-mergetool.adoc b/Documentation/git-mergetool.adoc
index 046c3258f0..77d0b50550 100644
--- a/Documentation/git-mergetool.adoc
+++ b/Documentation/git-mergetool.adoc
@@ -7,95 +7,95 @@ git-mergetool - Run merge conflict resolution tools to resolve merge conflicts
SYNOPSIS
--------
-[verse]
-'git mergetool' [--tool=<tool>] [-y | --[no-]prompt] [<file>...]
+[synopsis]
+git mergetool [--tool=<tool>] [-y | --[no-]prompt] [<file>...]
DESCRIPTION
-----------
Use `git mergetool` to run one of several merge utilities to resolve
-merge conflicts. It is typically run after 'git merge'.
+merge conflicts. It is typically run after `git merge`.
If one or more <file> parameters are given, the merge tool program will
be run to resolve differences in each file (skipping those without
conflicts). Specifying a directory will include all unresolved files in
-that path. If no <file> names are specified, 'git mergetool' will run
+that path. If no _<file>_ names are specified, `git mergetool` will run
the merge tool program on every file with merge conflicts.
OPTIONS
-------
--t <tool>::
---tool=<tool>::
- Use the merge resolution program specified by <tool>.
- Valid values include emerge, gvimdiff, kdiff3,
- meld, vimdiff, and tortoisemerge. Run `git mergetool --tool-help`
- for the list of valid <tool> settings.
+`-t <tool>`::
+`--tool=<tool>`::
+ Use the merge resolution program specified by _<tool>_.
+ Valid values include `emerge`, `gvimdiff`, `kdiff3`,
+ `meld`, `vimdiff`, and `tortoisemerge`. Run `git mergetool --tool-help`
+ for the list of valid _<tool>_ settings.
+
-If a merge resolution program is not specified, 'git mergetool'
+If a merge resolution program is not specified, `git mergetool`
will use the configuration variable `merge.tool`. If the
-configuration variable `merge.tool` is not set, 'git mergetool'
+configuration variable `merge.tool` is not set, `git mergetool`
will pick a suitable default.
+
You can explicitly provide a full path to the tool by setting the
configuration variable `mergetool.<tool>.path`. For example, you
can configure the absolute path to kdiff3 by setting
-`mergetool.kdiff3.path`. Otherwise, 'git mergetool' assumes the
-tool is available in PATH.
+`mergetool.kdiff3.path`. Otherwise, `git mergetool` assumes the
+tool is available in `$PATH`.
+
Instead of running one of the known merge tool programs,
-'git mergetool' can be customized to run an alternative program
+`git mergetool` can be customized to run an alternative program
by specifying the command line to invoke in a configuration
variable `mergetool.<tool>.cmd`.
+
-When 'git mergetool' is invoked with this tool (either through the
+When `git mergetool` is invoked with this tool (either through the
`-t` or `--tool` option or the `merge.tool` configuration
-variable), the configured command line will be invoked with `$BASE`
+variable), the configured command line will be invoked with `BASE`
set to the name of a temporary file containing the common base for
-the merge, if available; `$LOCAL` set to the name of a temporary
+the merge, if available; `LOCAL` set to the name of a temporary
file containing the contents of the file on the current branch;
-`$REMOTE` set to the name of a temporary file containing the
-contents of the file to be merged, and `$MERGED` set to the name
+`REMOTE` set to the name of a temporary file containing the
+contents of the file to be merged, and `MERGED` set to the name
of the file to which the merge tool should write the result of the
merge resolution.
+
If the custom merge tool correctly indicates the success of a
merge resolution with its exit code, then the configuration
variable `mergetool.<tool>.trustExitCode` can be set to `true`.
-Otherwise, 'git mergetool' will prompt the user to indicate the
+Otherwise, `git mergetool` will prompt the user to indicate the
success of the resolution after the custom tool has exited.
---tool-help::
+`--tool-help`::
Print a list of merge tools that may be used with `--tool`.
--y::
---no-prompt::
+`-y`::
+`--no-prompt`::
Don't prompt before each invocation of the merge resolution
program.
This is the default if the merge resolution program is
explicitly specified with the `--tool` option or with the
`merge.tool` configuration variable.
---prompt::
+`--prompt`::
Prompt before each invocation of the merge resolution program
to give the user a chance to skip the path.
--g::
---gui::
- When 'git-mergetool' is invoked with the `-g` or `--gui` option,
+`-g`::
+`--gui`::
+ When `git-mergetool` is invoked with the `-g` or `--gui` option,
the default merge tool will be read from the configured
`merge.guitool` variable instead of `merge.tool`. If
`merge.guitool` is not set, we will fallback to the tool
configured under `merge.tool`. This may be autoselected using
the configuration variable `mergetool.guiDefault`.
---no-gui::
+`--no-gui`::
This overrides a previous `-g` or `--gui` setting or
`mergetool.guiDefault` configuration and reads the default merge
tool from the configured `merge.tool` variable.
--O<orderfile>::
+`-O<orderfile>`::
Process files in the order specified in the
- <orderfile>, which has one shell glob pattern per line.
+ _<orderfile>_, which has one shell glob pattern per line.
This overrides the `diff.orderFile` configuration variable
(see linkgit:git-config[1]). To cancel `diff.orderFile`,
use `-O/dev/null`.
diff --git a/Documentation/git-pack-objects.adoc b/Documentation/git-pack-objects.adoc
index 7f69ae4855..b1c5aa27da 100644
--- a/Documentation/git-pack-objects.adoc
+++ b/Documentation/git-pack-objects.adoc
@@ -10,13 +10,13 @@ SYNOPSIS
--------
[verse]
'git pack-objects' [-q | --progress | --all-progress] [--all-progress-implied]
- [--no-reuse-delta] [--delta-base-offset] [--non-empty]
- [--local] [--incremental] [--window=<n>] [--depth=<n>]
- [--revs [--unpacked | --all]] [--keep-pack=<pack-name>]
- [--cruft] [--cruft-expiration=<time>]
- [--stdout [--filter=<filter-spec>] | <base-name>]
- [--shallow] [--keep-true-parents] [--[no-]sparse]
- [--name-hash-version=<n>] < <object-list>
+ [--no-reuse-delta] [--delta-base-offset] [--non-empty]
+ [--local] [--incremental] [--window=<n>] [--depth=<n>]
+ [--revs [--unpacked | --all]] [--keep-pack=<pack-name>]
+ [--cruft] [--cruft-expiration=<time>]
+ [--stdout [--filter=<filter-spec>] | <base-name>]
+ [--shallow] [--keep-true-parents] [--[no-]sparse]
+ [--name-hash-version=<n>] [--path-walk] < <object-list>
DESCRIPTION
@@ -375,6 +375,17 @@ many different directories. At the moment, this version is not allowed
when writing reachability bitmap files with `--write-bitmap-index` and it
will be automatically changed to version `1`.
+--path-walk::
+ Perform compression by first organizing objects by path, then a
+ second pass that compresses across paths as normal. This has the
+ potential to improve delta compression especially in the presence
+ of filenames that cause collisions in Git's default name-hash
+ algorithm.
++
+Incompatible with `--delta-islands`, `--shallow`, or `--filter`. The
+`--use-bitmap-index` option will be ignored in the presence of
+`--path-walk.`
+
DELTA ISLANDS
-------------
diff --git a/Documentation/git-repack.adoc b/Documentation/git-repack.adoc
index e1cd75eebe..d12c4985f6 100644
--- a/Documentation/git-repack.adoc
+++ b/Documentation/git-repack.adoc
@@ -11,7 +11,7 @@ SYNOPSIS
[verse]
'git repack' [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m]
[--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>]
- [--write-midx] [--name-hash-version=<n>]
+ [--write-midx] [--name-hash-version=<n>] [--path-walk]
DESCRIPTION
-----------
@@ -258,6 +258,9 @@ linkgit:git-multi-pack-index[1]).
Provide this argument to the underlying `git pack-objects` process.
See linkgit:git-pack-objects[1] for full details.
+--path-walk::
+ Pass the `--path-walk` option to the underlying `git pack-objects`
+ process. See linkgit:git-pack-objects[1] for full details.
CONFIGURATION
-------------
diff --git a/Documentation/git-send-email.adoc b/Documentation/git-send-email.adoc
index 26fda63c2f..7bd09c254b 100644
--- a/Documentation/git-send-email.adoc
+++ b/Documentation/git-send-email.adoc
@@ -21,7 +21,7 @@ Takes the patches given on the command line and emails them out.
Patches can be specified as files, directories (which will send all
files in the directory), or directly as a revision list. In the
last case, any format accepted by linkgit:git-format-patch[1] can
-be passed to git send-email, as well as options understood by
+be passed to `git send-email`, as well as options understood by
linkgit:git-format-patch[1].
The header of the email is configurable via command-line options. If not
@@ -35,11 +35,11 @@ There are two formats accepted for patch files:
This is what linkgit:git-format-patch[1] generates. Most headers and MIME
formatting are ignored.
-2. The original format used by Greg Kroah-Hartman's 'send_lots_of_email.pl'
+2. The original format used by Greg Kroah-Hartman's `send_lots_of_email.pl`
script
+
-This format expects the first line of the file to contain the "Cc:" value
-and the "Subject:" of the message as the second line.
+This format expects the first line of the file to contain the `Cc:` value
+and the `Subject:` of the message as the second line.
OPTIONS
@@ -54,13 +54,13 @@ Composing
`sendemail.multiEdit`.
--bcc=<address>,...::
- Specify a "Bcc:" value for each email. Default is the value of
+ Specify a `Bcc:` value for each email. Default is the value of
`sendemail.bcc`.
+
This option may be specified multiple times.
--cc=<address>,...::
- Specify a starting "Cc:" value for each email.
+ Specify a starting `Cc:` value for each email.
Default is the value of `sendemail.cc`.
+
This option may be specified multiple times.
@@ -69,14 +69,14 @@ This option may be specified multiple times.
Invoke a text editor (see GIT_EDITOR in linkgit:git-var[1])
to edit an introductory message for the patch series.
+
-When `--compose` is used, git send-email will use the From, To, Cc, Bcc,
-Subject, Reply-To, and In-Reply-To headers specified in the message. If
-the body of the message (what you type after the headers and a blank
-line) only contains blank (or Git: prefixed) lines, the summary won't be
+When `--compose` is used, `git send-email` will use the `From`, `To`, `Cc`,
+`Bcc`, `Subject`, `Reply-To`, and `In-Reply-To` headers specified in the
+message. If the body of the message (what you type after the headers and a
+blank line) only contains blank (or `Git:` prefixed) lines, the summary won't be
sent, but the headers mentioned above will be used unless they are
removed.
+
-Missing From or In-Reply-To headers will be prompted for.
+Missing `From` or `In-Reply-To` headers will be prompted for.
+
See the CONFIGURATION section for `sendemail.multiEdit`.
@@ -85,13 +85,13 @@ See the CONFIGURATION section for `sendemail.multiEdit`.
the value of the `sendemail.from` configuration option is used. If
neither the command-line option nor `sendemail.from` are set, then the
user will be prompted for the value. The default for the prompt will be
- the value of GIT_AUTHOR_IDENT, or GIT_COMMITTER_IDENT if that is not
- set, as returned by "git var -l".
+ the value of `GIT_AUTHOR_IDENT`, or `GIT_COMMITTER_IDENT` if that is not
+ set, as returned by `git var -l`.
--reply-to=<address>::
Specify the address where replies from recipients should go to.
Use this if replies to messages should go to another address than what
- is specified with the --from parameter.
+ is specified with the `--from` parameter.
--in-reply-to=<identifier>::
Make the first mail (or all the mails with `--no-thread`) appear as a
@@ -112,14 +112,14 @@ illustration below where `[PATCH v2 0/3]` is in reply to `[PATCH 0/2]`:
[PATCH v2 2/3] New tests
[PATCH v2 3/3] Implementation
+
-Only necessary if --compose is also set. If --compose
+Only necessary if `--compose` is also set. If `--compose`
is not set, this will be prompted for.
--[no-]outlook-id-fix::
Microsoft Outlook SMTP servers discard the Message-ID sent via email and
assign a new random Message-ID, thus breaking threads.
+
-With `--outlook-id-fix`, 'git send-email' uses a mechanism specific to
+With `--outlook-id-fix`, `git send-email` uses a mechanism specific to
Outlook servers to learn the Message-ID the server assigned to fix the
threading. Use it only when you know that the server reports the
rewritten Message-ID the same way as Outlook servers do.
@@ -130,14 +130,14 @@ to 'smtp.office365.com' or 'smtp-mail.outlook.com'. Use
--subject=<string>::
Specify the initial subject of the email thread.
- Only necessary if --compose is also set. If --compose
+ Only necessary if `--compose` is also set. If `--compose`
is not set, this will be prompted for.
--to=<address>,...::
Specify the primary recipient of the emails generated. Generally, this
will be the upstream maintainer of the project involved. Default is the
value of the `sendemail.to` configuration value; if that is unspecified,
- and --to-cmd is not specified, this will be prompted for.
+ and `--to-cmd` is not specified, this will be prompted for.
+
This option may be specified multiple times.
@@ -145,30 +145,30 @@ This option may be specified multiple times.
When encountering a non-ASCII message or subject that does not
declare its encoding, add headers/quoting to indicate it is
encoded in <encoding>. Default is the value of the
- 'sendemail.assume8bitEncoding'; if that is unspecified, this
+ `sendemail.assume8bitEncoding`; if that is unspecified, this
will be prompted for if any non-ASCII files are encountered.
+
Note that no attempts whatsoever are made to validate the encoding.
--compose-encoding=<encoding>::
Specify encoding of compose message. Default is the value of the
- 'sendemail.composeEncoding'; if that is unspecified, UTF-8 is assumed.
+ `sendemail.composeEncoding`; if that is unspecified, UTF-8 is assumed.
--transfer-encoding=(7bit|8bit|quoted-printable|base64|auto)::
Specify the transfer encoding to be used to send the message over SMTP.
- 7bit will fail upon encountering a non-ASCII message. quoted-printable
+ `7bit` will fail upon encountering a non-ASCII message. `quoted-printable`
can be useful when the repository contains files that contain carriage
- returns, but makes the raw patch email file (as saved from a MUA) much
- harder to inspect manually. base64 is even more fool proof, but also
- even more opaque. auto will use 8bit when possible, and quoted-printable
- otherwise.
+ returns, but makes the raw patch email file (as saved from an MUA) much
+ harder to inspect manually. `base64` is even more fool proof, but also
+ even more opaque. `auto` will use `8bit` when possible, and
+ `quoted-printable` otherwise.
+
Default is the value of the `sendemail.transferEncoding` configuration
value; if that is unspecified, default to `auto`.
--xmailer::
--no-xmailer::
- Add (or prevent adding) the "X-Mailer:" header. By default,
+ Add (or prevent adding) the `X-Mailer:` header. By default,
the header is added, but it can be turned off by setting the
`sendemail.xmailer` configuration variable to `false`.
@@ -178,9 +178,9 @@ Sending
--envelope-sender=<address>::
Specify the envelope sender used to send the emails.
This is useful if your default address is not the address that is
- subscribed to a list. In order to use the 'From' address, set the
- value to "auto". If you use the sendmail binary, you must have
- suitable privileges for the -f parameter. Default is the value of the
+ subscribed to a list. In order to use the `From` address, set the
+ value to `auto`. If you use the `sendmail` binary, you must have
+ suitable privileges for the `-f` parameter. Default is the value of the
`sendemail.envelopeSender` configuration variable; if that is
unspecified, choosing the envelope sender is left to your MTA.
@@ -189,27 +189,27 @@ Sending
be sendmail-like; specifically, it must support the `-i` option.
The command will be executed in the shell if necessary. Default
is the value of `sendemail.sendmailCmd`. If unspecified, and if
- --smtp-server is also unspecified, git-send-email will search
- for `sendmail` in `/usr/sbin`, `/usr/lib` and $PATH.
+ `--smtp-server` is also unspecified, `git send-email` will search
+ for `sendmail` in `/usr/sbin`, `/usr/lib` and `$PATH`.
--smtp-encryption=<encryption>::
Specify in what way encrypting begins for the SMTP connection.
- Valid values are 'ssl' and 'tls'. Any other value reverts to plain
+ Valid values are `ssl` and `tls`. Any other value reverts to plain
(unencrypted) SMTP, which defaults to port 25.
Despite the names, both values will use the same newer version of TLS,
- but for historic reasons have these names. 'ssl' refers to "implicit"
+ but for historic reasons have these names. `ssl` refers to "implicit"
encryption (sometimes called SMTPS), that uses port 465 by default.
- 'tls' refers to "explicit" encryption (often known as STARTTLS),
+ `tls` refers to "explicit" encryption (often known as STARTTLS),
that uses port 25 by default. Other ports might be used by the SMTP
server, which are not the default. Commonly found alternative port for
- 'tls' and unencrypted is 587. You need to check your provider's
+ `tls` and unencrypted is 587. You need to check your provider's
documentation or your server configuration to make sure
for your own case. Default is the value of `sendemail.smtpEncryption`.
--smtp-domain=<FQDN>::
Specifies the Fully Qualified Domain Name (FQDN) used in the
HELO/EHLO command to the SMTP server. Some servers require the
- FQDN to match your IP address. If not set, git send-email attempts
+ FQDN to match your IP address. If not set, `git send-email` attempts
to determine your FQDN automatically. Default is the value of
`sendemail.smtpDomain`.
@@ -223,10 +223,10 @@ $ git send-email --smtp-auth="PLAIN LOGIN GSSAPI" ...
+
If at least one of the specified mechanisms matches the ones advertised by the
SMTP server and if it is supported by the utilized SASL library, the mechanism
-is used for authentication. If neither 'sendemail.smtpAuth' nor `--smtp-auth`
+is used for authentication. If neither `sendemail.smtpAuth` nor `--smtp-auth`
is specified, all mechanisms supported by the SASL library can be used. The
-special value 'none' maybe specified to completely disable authentication
-independently of `--smtp-user`
+special value `none` maybe specified to completely disable authentication
+independently of `--smtp-user`.
--smtp-pass[=<password>]::
Password for SMTP-AUTH. The argument is optional: If no
@@ -238,16 +238,16 @@ Furthermore, passwords need not be specified in configuration files
or on the command line. If a username has been specified (with
`--smtp-user` or a `sendemail.smtpUser`), but no password has been
specified (with `--smtp-pass` or `sendemail.smtpPass`), then
-a password is obtained using 'git-credential'.
+a password is obtained using linkgit:git-credential[1].
--no-smtp-auth::
- Disable SMTP authentication. Short hand for `--smtp-auth=none`
+ Disable SMTP authentication. Short hand for `--smtp-auth=none`.
--smtp-server=<host>::
If set, specifies the outgoing SMTP server to use (e.g.
`smtp.example.com` or a raw IP address). If unspecified, and if
`--sendmail-cmd` is also unspecified, the default is to search
- for `sendmail` in `/usr/sbin`, `/usr/lib` and $PATH if such a
+ for `sendmail` in `/usr/sbin`, `/usr/lib` and `$PATH` if such a
program is available, falling back to `localhost` otherwise.
+
For backward compatibility, this option can also specify a full pathname
@@ -260,7 +260,7 @@ instead.
Specifies a port different from the default port (SMTP
servers typically listen to smtp port 25, but may also listen to
submission port 587, or the common SSL smtp port 465);
- symbolic port names (e.g. "submission" instead of 587)
+ symbolic port names (e.g. `submission` instead of 587)
are also accepted. The port can also be set with the
`sendemail.smtpServerPort` configuration variable.
@@ -269,17 +269,17 @@ instead.
Default value can be specified by the `sendemail.smtpServerOption`
configuration option.
+
-The --smtp-server-option option must be repeated for each option you want
+The `--smtp-server-option` option must be repeated for each option you want
to pass to the server. Likewise, different lines in the configuration files
must be used for each option.
--smtp-ssl::
- Legacy alias for '--smtp-encryption ssl'.
+ Legacy alias for `--smtp-encryption ssl`.
--smtp-ssl-cert-path::
Path to a store of trusted CA certificates for SMTP SSL/TLS
certificate validation (either a directory that has been processed
- by 'c_rehash', or a single file containing one or more PEM format
+ by `c_rehash`, or a single file containing one or more PEM format
certificates concatenated together: see verify(1) -CAfile and
-CApath for more information on these). Set it to an empty string
to disable certificate verification. Defaults to the value of the
@@ -298,18 +298,18 @@ must be used for each option.
connection and authentication problems.
--batch-size=<num>::
- Some email servers (e.g. smtp.163.com) limit the number emails to be
+ Some email servers (e.g. 'smtp.163.com') limit the number of emails to be
sent per session (connection) and this will lead to a failure when
sending many messages. With this option, send-email will disconnect after
- sending $<num> messages and wait for a few seconds (see --relogin-delay)
- and reconnect, to work around such a limit. You may want to
- use some form of credential helper to avoid having to retype
- your password every time this happens. Defaults to the
+ sending _<num>_ messages and wait for a few seconds
+ (see `--relogin-delay`) and reconnect, to work around such a limit.
+ You may want to use some form of credential helper to avoid having to
+ retype your password every time this happens. Defaults to the
`sendemail.smtpBatchSize` configuration variable.
--relogin-delay=<int>::
- Waiting $<int> seconds before reconnecting to SMTP server. Used together
- with --batch-size option. Defaults to the `sendemail.smtpReloginDelay`
+ Waiting _<int>_ seconds before reconnecting to SMTP server. Used together
+ with `--batch-size` option. Defaults to the `sendemail.smtpReloginDelay`
configuration variable.
Automating
@@ -318,7 +318,7 @@ Automating
--no-to::
--no-cc::
--no-bcc::
- Clears any list of "To:", "Cc:", "Bcc:" addresses previously
+ Clears any list of `To:`, `Cc:`, `Bcc:` addresses previously
set via config.
--no-identity::
@@ -327,13 +327,13 @@ Automating
--to-cmd=<command>::
Specify a command to execute once per patch file which
- should generate patch file specific "To:" entries.
+ should generate patch file specific `To:` entries.
Output of this command must be single email address per line.
- Default is the value of 'sendemail.toCmd' configuration value.
+ Default is the value of `sendemail.toCmd` configuration value.
--cc-cmd=<command>::
Specify a command to execute once per patch file which
- should generate patch file specific "Cc:" entries.
+ should generate patch file specific `Cc:` entries.
Output of this command must be single email address per line.
Default is the value of `sendemail.ccCmd` configuration value.
@@ -341,7 +341,7 @@ Automating
Specify a command that is executed once per outgoing message
and output RFC 2822 style header lines to be inserted into
them. When the `sendemail.headerCmd` configuration variable is
- set, its value is always used. When --header-cmd is provided
+ set, its value is always used. When `--header-cmd` is provided
at the command line, its value takes precedence over the
`sendemail.headerCmd` configuration variable.
@@ -350,7 +350,7 @@ Automating
--[no-]chain-reply-to::
If this is set, each email will be sent as a reply to the previous
- email sent. If disabled with "--no-chain-reply-to", all emails after
+ email sent. If disabled with `--no-chain-reply-to`, all emails after
the first will be sent as replies to the first email sent. When using
this, it is recommended that the first file given be an overview of the
entire patch series. Disabled by default, but the `sendemail.chainReplyTo`
@@ -358,79 +358,80 @@ Automating
--identity=<identity>::
A configuration identity. When given, causes values in the
- 'sendemail.<identity>' subsection to take precedence over
- values in the 'sendemail' section. The default identity is
+ `sendemail.<identity>` subsection to take precedence over
+ values in the `sendemail` section. The default identity is
the value of `sendemail.identity`.
--[no-]signed-off-by-cc::
- If this is set, add emails found in the `Signed-off-by` trailer or Cc: lines to the
- cc list. Default is the value of `sendemail.signedOffByCc` configuration
- value; if that is unspecified, default to --signed-off-by-cc.
+ If this is set, add emails found in the `Signed-off-by` trailer or `Cc:`
+ lines to the cc list. Default is the value of `sendemail.signedOffByCc`
+ configuration value; if that is unspecified, default to
+ `--signed-off-by-cc`.
--[no-]cc-cover::
- If this is set, emails found in Cc: headers in the first patch of
+ If this is set, emails found in `Cc:` headers in the first patch of
the series (typically the cover letter) are added to the cc list
- for each email set. Default is the value of 'sendemail.ccCover'
- configuration value; if that is unspecified, default to --no-cc-cover.
+ for each email set. Default is the value of `sendemail.ccCover`
+ configuration value; if that is unspecified, default to `--no-cc-cover`.
--[no-]to-cover::
- If this is set, emails found in To: headers in the first patch of
+ If this is set, emails found in `To:` headers in the first patch of
the series (typically the cover letter) are added to the to list
- for each email set. Default is the value of 'sendemail.toCover'
- configuration value; if that is unspecified, default to --no-to-cover.
+ for each email set. Default is the value of `sendemail.toCover`
+ configuration value; if that is unspecified, default to `--no-to-cover`.
--suppress-cc=<category>::
Specify an additional category of recipients to suppress the
auto-cc of:
+
--
-- 'author' will avoid including the patch author.
-- 'self' will avoid including the sender.
-- 'cc' will avoid including anyone mentioned in Cc lines in the patch header
- except for self (use 'self' for that).
-- 'bodycc' will avoid including anyone mentioned in Cc lines in the
- patch body (commit message) except for self (use 'self' for that).
-- 'sob' will avoid including anyone mentioned in the Signed-off-by trailers except
- for self (use 'self' for that).
-- 'misc-by' will avoid including anyone mentioned in Acked-by,
+- `author` will avoid including the patch author.
+- `self` will avoid including the sender.
+- `cc` will avoid including anyone mentioned in Cc lines in the patch header
+ except for self (use `self` for that).
+- `bodycc` will avoid including anyone mentioned in Cc lines in the
+ patch body (commit message) except for self (use `self` for that).
+- `sob` will avoid including anyone mentioned in the Signed-off-by trailers except
+ for self (use `self` for that).
+- `misc-by` will avoid including anyone mentioned in Acked-by,
Reviewed-by, Tested-by and other "-by" lines in the patch body,
- except Signed-off-by (use 'sob' for that).
-- 'cccmd' will avoid running the --cc-cmd.
-- 'body' is equivalent to 'sob' + 'bodycc' + 'misc-by'.
-- 'all' will suppress all auto cc values.
+ except Signed-off-by (use `sob` for that).
+- `cccmd` will avoid running the --cc-cmd.
+- `body` is equivalent to `sob` + `bodycc` + `misc-by`.
+- `all` will suppress all auto cc values.
--
+
Default is the value of `sendemail.suppressCc` configuration value; if
-that is unspecified, default to 'self' if --suppress-from is
-specified, as well as 'body' if --no-signed-off-cc is specified.
+that is unspecified, default to `self` if `--suppress-from` is
+specified, as well as `body` if `--no-signed-off-cc` is specified.
--[no-]suppress-from::
- If this is set, do not add the From: address to the cc: list.
+ If this is set, do not add the `From:` address to the `Cc:` list.
Default is the value of `sendemail.suppressFrom` configuration
- value; if that is unspecified, default to --no-suppress-from.
+ value; if that is unspecified, default to `--no-suppress-from`.
--[no-]thread::
- If this is set, the In-Reply-To and References headers will be
+ If this is set, the `In-Reply-To` and `References` headers will be
added to each email sent. Whether each mail refers to the
- previous email (`deep` threading per 'git format-patch'
+ previous email (`deep` threading per `git format-patch`
wording) or to the first email (`shallow` threading) is
- governed by "--[no-]chain-reply-to".
+ governed by `--[no-]chain-reply-to`.
+
-If disabled with "--no-thread", those headers will not be added
-(unless specified with --in-reply-to). Default is the value of the
+If disabled with `--no-thread`, those headers will not be added
+(unless specified with `--in-reply-to`). Default is the value of the
`sendemail.thread` configuration value; if that is unspecified,
-default to --thread.
+default to `--thread`.
+
It is up to the user to ensure that no In-Reply-To header already
-exists when 'git send-email' is asked to add it (especially note that
-'git format-patch' can be configured to do the threading itself).
+exists when `git send-email` is asked to add it (especially note that
+`git format-patch` can be configured to do the threading itself).
Failure to do so may not produce the expected result in the
recipient's MUA.
--[no-]mailmap::
Use the mailmap file (see linkgit:gitmailmap[5]) to map all
addresses to their canonical real name and email address. Additional
- mailmap data specific to git-send-email may be provided using the
+ mailmap data specific to `git send-email` may be provided using the
`sendemail.mailmap.file` or `sendemail.mailmap.blob` configuration
values. Defaults to `sendemail.mailmap`.
@@ -441,17 +442,17 @@ Administering
Confirm just before sending:
+
--
-- 'always' will always confirm before sending
-- 'never' will never confirm before sending
-- 'cc' will confirm before sending when send-email has automatically
- added addresses from the patch to the Cc list
-- 'compose' will confirm before sending the first message when using --compose.
-- 'auto' is equivalent to 'cc' + 'compose'
+- `always` will always confirm before sending.
+- `never` will never confirm before sending.
+- `cc` will confirm before sending when send-email has automatically
+ added addresses from the patch to the Cc list.
+- `compose` will confirm before sending the first message when using --compose.
+- `auto` is equivalent to `cc` + `compose`.
--
+
Default is the value of `sendemail.confirm` configuration value; if that
-is unspecified, default to 'auto' unless any of the suppress options
-have been specified, in which case default to 'compose'.
+is unspecified, default to `auto` unless any of the suppress options
+have been specified, in which case default to `compose`.
--dry-run::
Do everything except actually send the emails.
@@ -460,10 +461,10 @@ have been specified, in which case default to 'compose'.
When an argument may be understood either as a reference or as a file name,
choose to understand it as a format-patch argument (`--format-patch`)
or as a file name (`--no-format-patch`). By default, when such a conflict
- occurs, git send-email will fail.
+ occurs, `git send-email` will fail.
--quiet::
- Make git-send-email less verbose. One line per email should be
+ Make `git send-email` less verbose. One line per email should be
all that is output.
--[no-]validate::
@@ -474,7 +475,7 @@ have been specified, in which case default to 'compose'.
* Invoke the sendemail-validate hook if present (see linkgit:githooks[5]).
* Warn of patches that contain lines longer than
998 characters unless a suitable transfer encoding
- ('auto', 'base64', or 'quoted-printable') is used;
+ (`auto`, `base64`, or `quoted-printable`) is used;
this is due to SMTP limits as described by
https://www.ietf.org/rfc/rfc5322.txt.
--
@@ -493,13 +494,13 @@ Information
Instead of the normal operation, dump the shorthand alias names from
the configured alias file(s), one per line in alphabetical order. Note
that this only includes the alias name and not its expanded email addresses.
- See 'sendemail.aliasesFile' for more information about aliases.
+ See `sendemail.aliasesFile` for more information about aliases.
--translate-aliases::
Instead of the normal operation, read from standard input and
interpret each line as an email alias. Translate it according to the
configured alias file(s). Output each translated name and email
- address to standard output, one per line. See 'sendemail.aliasFile'
+ address to standard output, one per line. See `sendemail.aliasFile`
for more information about aliases.
CONFIGURATION
@@ -524,15 +525,18 @@ edit `~/.gitconfig` to specify your account settings:
smtpServerPort = 587
----
+Gmail does not allow using your regular password for `git send-email`.
If you have multi-factor authentication set up on your Gmail account, you can
-generate an app-specific password for use with 'git send-email'. Visit
+generate an app-specific password for use with `git send-email`. Visit
https://security.google.com/settings/security/apppasswords to create it.
-You can also use OAuth2.0 authentication with Gmail. `OAUTHBEARER` and
-`XOAUTH2` are common methods used for this type of authentication. Gmail
-supports both of them. As an example, if you want to use `OAUTHBEARER`, edit
-your `~/.gitconfig` file and add `smtpAuth = OAUTHBEARER` to your account
-settings:
+Alternatively, instead of using an app-specific password, you can use
+OAuth2.0 authentication with Gmail. OAuth2.0 is more secure than
+app-specific passwords, and works regardless of whether you have multi-factor
+authentication set up. `OAUTHBEARER` and `XOAUTH2` are common mechanisms used
+for this type of authentication. Gmail supports both of them. As an example,
+if you want to use `OAUTHBEARER`, edit your `~/.gitconfig` file and add
+`smtpAuth = OAUTHBEARER` to your account settings:
----
[sendemail]
@@ -543,11 +547,15 @@ settings:
smtpAuth = OAUTHBEARER
----
+Another alternative is using a tool developed by Google known as
+https://github.com/google/gmail-oauth2-tools/tree/master/go/sendgmail[sendgmail]
+to send emails using `git send-email`.
+
Use Microsoft Outlook as the SMTP Server
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unlike Gmail, Microsoft Outlook no longer supports app-specific passwords.
Therefore, OAuth2.0 authentication must be used for Outlook. Also, it only
-supports `XOAUTH2` authentication method.
+supports `XOAUTH2` authentication mechanism.
Edit `~/.gitconfig` to specify your account settings for Outlook and use its
SMTP server with `git send-email`:
@@ -579,8 +587,7 @@ next time.
If you are using OAuth2.0 authentication, you need to use an access token in
place of a password when prompted. Various OAuth2.0 token generators are
-available online. Community maintained credential helpers for Gmail and Outlook
-are also available:
+available online. Community maintained credential helpers are also available:
- https://github.com/AdityaGarg8/git-credential-email[git-credential-gmail]
(cross platform, dedicated helper for authenticating Gmail accounts)
@@ -588,14 +595,24 @@ are also available:
- https://github.com/AdityaGarg8/git-credential-email[git-credential-outlook]
(cross platform, dedicated helper for authenticating Microsoft Outlook accounts)
+ - https://github.com/AdityaGarg8/git-credential-email[git-credential-yahoo]
+ (cross platform, dedicated helper for authenticating Yahoo accounts)
+
You can also see linkgit:gitcredentials[7] for more OAuth based authentication
helpers.
Note: the following core Perl modules that may be installed with your
distribution of Perl are required:
-MIME::Base64, MIME::QuotedPrint, Net::Domain and Net::SMTP.
+
+https://metacpan.org/pod/MIME::Base64[MIME::Base64],
+https://metacpan.org/pod/MIME::QuotedPrint[MIME::QuotedPrint],
+https://metacpan.org/pod/Net::Domain[Net::Domain] and
+https://metacpan.org/pod/Net::SMTP[Net::SMTP].
+
These additional Perl modules are also required:
-Authen::SASL and Mail::Address.
+
+https://metacpan.org/pod/Authen::SASL[Authen::SASL] and
+https://metacpan.org/pod/Mail::Address[Mail::Address].
SEE ALSO
diff --git a/Documentation/git-stash.adoc b/Documentation/git-stash.adoc
index 1a5177f498..e5e6c9d37f 100644
--- a/Documentation/git-stash.adoc
+++ b/Documentation/git-stash.adoc
@@ -23,6 +23,8 @@ SYNOPSIS
'git stash' clear
'git stash' create [<message>]
'git stash' store [(-m | --message) <message>] [-q | --quiet] <commit>
+'git stash' export (--print | --to-ref <ref>) [<stash>...]
+'git stash' import <commit>
DESCRIPTION
-----------
@@ -154,6 +156,18 @@ store::
reflog. This is intended to be useful for scripts. It is
probably not the command you want to use; see "push" above.
+export ( --print | --to-ref <ref> ) [<stash>...]::
+
+ Export the specified stashes, or all of them if none are specified, to
+ a chain of commits which can be transferred using the normal fetch and
+ push mechanisms, then imported using the `import` subcommand.
+
+import <commit>::
+
+ Import the specified stashes from the specified commit, which must have been
+ created by `export`, and add them to the list of stashes. To replace the
+ existing stashes, use `clear` first.
+
OPTIONS
-------
-a::
@@ -242,6 +256,19 @@ literally (including newlines and quotes).
+
Quiet, suppress feedback messages.
+--print::
+ This option is only valid for the `export` command.
++
+Create the chain of commits representing the exported stashes without
+storing it anywhere in the ref namespace and print the object ID to
+standard output. This is designed for scripts.
+
+--to-ref::
+ This option is only valid for the `export` command.
++
+Create the chain of commits representing the exported stashes and store
+it to the specified ref.
+
\--::
This option is only valid for `push` command.
+
@@ -259,7 +286,7 @@ For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
<stash>::
This option is only valid for `apply`, `branch`, `drop`, `pop`,
- `show` commands.
+ `show`, and `export` commands.
+
A reference of the form `stash@{<revision>}`. When no `<stash>` is
given, the latest stash is assumed (that is, `stash@{0}`).
diff --git a/Documentation/git-switch.adoc b/Documentation/git-switch.adoc
index f55315c51e..9f62abf9e2 100644
--- a/Documentation/git-switch.adoc
+++ b/Documentation/git-switch.adoc
@@ -7,11 +7,11 @@ git-switch - Switch branches
SYNOPSIS
--------
-[verse]
-'git switch' [<options>] [--no-guess] <branch>
-'git switch' [<options>] --detach [<start-point>]
-'git switch' [<options>] (-c|-C) <new-branch> [<start-point>]
-'git switch' [<options>] --orphan <new-branch>
+[synopsis]
+git switch [<options>] [--no-guess] <branch>
+git switch [<options>] --detach [<start-point>]
+git switch [<options>] (-c|-C) <new-branch> [<start-point>]
+git switch [<options>] --orphan <new-branch>
DESCRIPTION
-----------
@@ -33,33 +33,33 @@ THIS COMMAND IS EXPERIMENTAL. THE BEHAVIOR MAY CHANGE.
OPTIONS
-------
-<branch>::
+_<branch>_::
Branch to switch to.
-<new-branch>::
+_<new-branch>_::
Name for the new branch.
-<start-point>::
+_<start-point>_::
The starting point for the new branch. Specifying a
- `<start-point>` allows you to create a branch based on some
- other point in history than where HEAD currently points. (Or,
+ _<start-point>_ allows you to create a branch based on some
+ other point in history than where `HEAD` currently points. (Or,
in the case of `--detach`, allows you to inspect and detach
from some other point.)
+
-You can use the `@{-N}` syntax to refer to the N-th last
-branch/commit switched to using "git switch" or "git checkout"
+You can use the `@{-<N>}` syntax to refer to the _<N>_-th last
+branch/commit switched to using `git switch` or `git checkout`
operation. You may also specify `-` which is synonymous to `@{-1}`.
This is often used to switch quickly between two branches, or to undo
a branch switch by mistake.
+
-As a special case, you may use `A...B` as a shortcut for the merge
-base of `A` and `B` if there is exactly one merge base. You can leave
-out at most one of `A` and `B`, in which case it defaults to `HEAD`.
-
--c <new-branch>::
---create <new-branch>::
- Create a new branch named `<new-branch>` starting at
- `<start-point>` before switching to the branch. This is the
+As a special case, you may use `<rev-a>...<rev-b>` as a shortcut for the merge
+base of _<rev-a>_ and _<rev-b>_ if there is exactly one merge base. You can leave
+out at most one of _<rev-a>_ and _<rev-b>_, in which case it defaults to `HEAD`.
+
+`-c <new-branch>`::
+`--create <new-branch>`::
+ Create a new branch named _<new-branch>_ starting at
+ _<start-point>_ before switching to the branch. This is the
transactional equivalent of
+
------------
@@ -67,32 +67,32 @@ $ git branch <new-branch>
$ git switch <new-branch>
------------
+
-that is to say, the branch is not reset/created unless "git switch" is
+that is to say, the branch is not reset/created unless `git switch` is
successful (e.g., when the branch is in use in another worktree, not
just the current branch stays the same, but the branch is not reset to
the start-point, either).
--C <new-branch>::
---force-create <new-branch>::
- Similar to `--create` except that if `<new-branch>` already
- exists, it will be reset to `<start-point>`. This is a
+`-C <new-branch>`::
+`--force-create <new-branch>`::
+ Similar to `--create` except that if _<new-branch>_ already
+ exists, it will be reset to _<start-point>_. This is a
convenient shortcut for:
+
------------
-$ git branch -f <new-branch>
-$ git switch <new-branch>
+$ git branch -f _<new-branch>_
+$ git switch _<new-branch>_
------------
--d::
---detach::
+`-d`::
+`--detach`::
Switch to a commit for inspection and discardable
experiments. See the "DETACHED HEAD" section in
linkgit:git-checkout[1] for details.
---guess::
---no-guess::
- If `<branch>` is not found but there does exist a tracking
- branch in exactly one remote (call it `<remote>`) with a
+`--guess`::
+`--no-guess`::
+ If _<branch>_ is not found but there does exist a tracking
+ branch in exactly one remote (call it _<remote>_) with a
matching name, treat as equivalent to
+
------------
@@ -101,9 +101,9 @@ $ git switch -c <branch> --track <remote>/<branch>
+
If the branch exists in multiple remotes and one of them is named by
the `checkout.defaultRemote` configuration variable, we'll use that
-one for the purposes of disambiguation, even if the `<branch>` isn't
+one for the purposes of disambiguation, even if the _<branch>_ isn't
unique across all remotes. Set it to e.g. `checkout.defaultRemote=origin`
-to always checkout remote branches from there if `<branch>` is
+to always checkout remote branches from there if _<branch>_ is
ambiguous but exists on the 'origin' remote. See also
`checkout.defaultRemote` in linkgit:git-config[1].
+
@@ -112,19 +112,19 @@ ambiguous but exists on the 'origin' remote. See also
The default behavior can be set via the `checkout.guess` configuration
variable.
--f::
---force::
+`-f`::
+`--force`::
An alias for `--discard-changes`.
---discard-changes::
+`--discard-changes`::
Proceed even if the index or the working tree differs from
`HEAD`. Both the index and working tree are restored to match
the switching target. If `--recurse-submodules` is specified,
submodule content is also restored to match the switching
target. This is used to throw away local changes.
--m::
---merge::
+`-m`::
+`--merge`::
If you have local modifications to one or more files that are
different between the current branch and the branch to which
you are switching, the command refuses to switch branches in
@@ -138,25 +138,25 @@ paths are left unmerged, and you need to resolve the conflicts
and mark the resolved paths with `git add` (or `git rm` if the merge
should result in deletion of the path).
---conflict=<style>::
+`--conflict=<style>`::
The same as `--merge` option above, but changes the way the
conflicting hunks are presented, overriding the
`merge.conflictStyle` configuration variable. Possible values are
- "merge" (default), "diff3", and "zdiff3".
+ `merge` (default), `diff3`, and `zdiff3`.
--q::
---quiet::
+`-q`::
+`--quiet`::
Quiet, suppress feedback messages.
---progress::
---no-progress::
+`--progress`::
+`--no-progress`::
Progress status is reported on the standard error stream
by default when it is attached to a terminal, unless `--quiet`
is specified. This flag enables progress reporting even if not
attached to a terminal, regardless of `--quiet`.
--t::
---track [direct|inherit]::
+`-t`::
+`--track[ (direct|inherit)]`::
When creating a new branch, set up "upstream" configuration.
`-c` is implied. See `--track` in linkgit:git-branch[1] for
details.
@@ -171,22 +171,22 @@ given name has no slash, or the above guessing results in an empty
name, the guessing is aborted. You can explicitly give a name with
`-c` in such a case.
---no-track::
+`--no-track`::
Do not set up "upstream" configuration, even if the
`branch.autoSetupMerge` configuration variable is true.
---orphan <new-branch>::
- Create a new unborn branch, named `<new-branch>`. All
+`--orphan <new-branch>`::
+ Create a new unborn branch, named _<new-branch>_. All
tracked files are removed.
---ignore-other-worktrees::
+`--ignore-other-worktrees`::
`git switch` refuses when the wanted ref is already
checked out by another worktree. This option makes it check
the ref out anyway. In other words, the ref can be held by
more than one worktree.
---recurse-submodules::
---no-recurse-submodules::
+`--recurse-submodules`::
+`--no-recurse-submodules`::
Using `--recurse-submodules` will update the content of all
active submodules according to the commit recorded in the
superproject. If nothing (or `--no-recurse-submodules`) is
@@ -239,7 +239,7 @@ $ git switch -
------------
You can grow a new branch from any commit. For example, switch to
-"HEAD~3" and create branch "fixup":
+"`HEAD~3`" and create branch "`fixup`":
------------
$ git switch -c fixup HEAD~3
@@ -251,8 +251,8 @@ name:
------------
$ git switch new-topic
-Branch 'new-topic' set up to track remote branch 'new-topic' from 'origin'
-Switched to a new branch 'new-topic'
+Branch `new-topic` set up to track remote branch `new-topic` from `origin`
+Switched to a new branch `new-topic`
------------
To check out commit `HEAD~3` for temporary inspection or experiment
diff --git a/Documentation/git-whatchanged.adoc b/Documentation/git-whatchanged.adoc
index 8e55e0bb1e..d21484026f 100644
--- a/Documentation/git-whatchanged.adoc
+++ b/Documentation/git-whatchanged.adoc
@@ -8,8 +8,14 @@ git-whatchanged - Show logs with differences each commit introduces
SYNOPSIS
--------
-[verse]
-'git whatchanged' <option>...
+[synopsis]
+git whatchanged <option>...
+
+WARNING
+-------
+`git whatchanged` has been deprecated and is scheduled for removal in
+a future version of Git, as it is merely `git log` with different
+default; `whatchanged` is not even shorter to type than `log --raw`.
DESCRIPTION
-----------
diff --git a/Documentation/gitcredentials.adoc b/Documentation/gitcredentials.adoc
index b49923db02..3337bb475d 100644
--- a/Documentation/gitcredentials.adoc
+++ b/Documentation/gitcredentials.adoc
@@ -133,10 +133,6 @@ Popular helpers with OAuth support include:
- https://github.com/hickford/git-credential-oauth[git-credential-oauth] (cross platform, included in many Linux distributions)
- - https://github.com/AdityaGarg8/git-credential-email[git-credential-gmail] (cross platform, dedicated helper to authenticate Gmail accounts for linkgit:git-send-email[1])
-
- - https://github.com/AdityaGarg8/git-credential-email[git-credential-outlook] (cross platform, dedicated helper to authenticate Microsoft Outlook accounts for linkgit:git-send-email[1])
-
CREDENTIAL CONTEXTS
-------------------
diff --git a/Documentation/gitprotocol-v2.adoc b/Documentation/gitprotocol-v2.adoc
index 5598c93e67..9a57005d77 100644
--- a/Documentation/gitprotocol-v2.adoc
+++ b/Documentation/gitprotocol-v2.adoc
@@ -54,7 +54,7 @@ In general a client can request to speak protocol v2 by sending
`version=2` through the respective side-channel for the transport being
used which inevitably sets `GIT_PROTOCOL`. More information can be
found in linkgit:gitprotocol-pack[5] and linkgit:gitprotocol-http[5], as well as the
-`GIT_PROTOCOL` definition in `git.txt`. In all cases the
+`GIT_PROTOCOL` definition in linkgit:git[1]. In all cases the
response from the server is the capability advertisement.
Git Transport
@@ -99,7 +99,7 @@ Uses the `--http-backend-info-refs` option to
linkgit:git-upload-pack[1].
The server may need to be configured to pass this header's contents via
-the `GIT_PROTOCOL` variable. See the discussion in `git-http-backend.txt`.
+the `GIT_PROTOCOL` variable. See the discussion in linkgit:git-http-backend[1].
Capability Advertisement
------------------------
diff --git a/Documentation/gitremote-helpers.adoc b/Documentation/gitremote-helpers.adoc
index d0be008e5e..39cdece16e 100644
--- a/Documentation/gitremote-helpers.adoc
+++ b/Documentation/gitremote-helpers.adoc
@@ -498,7 +498,7 @@ set by Git if the remote helper has the 'option' capability.
ask for the tag specifically. Some helpers may be able to
use this option to avoid a second network connection.
-'option dry-run' {'true'|'false'}:
+'option dry-run' {'true'|'false'}::
If true, pretend the operation completed successfully,
but don't actually change any repository data. For most
helpers this only applies to the 'push', if supported.
diff --git a/Documentation/merge-options.adoc b/Documentation/merge-options.adoc
index 0022185201..95ef491be1 100644
--- a/Documentation/merge-options.adoc
+++ b/Documentation/merge-options.adoc
@@ -1,23 +1,23 @@
---commit::
---no-commit::
+`--commit`::
+`--no-commit`::
Perform the merge and commit the result. This option can
- be used to override --no-commit.
+ be used to override `--no-commit`.
ifdef::git-pull[]
Only useful when merging.
endif::git-pull[]
+
-With --no-commit perform the merge and stop just before creating
+With `--no-commit` perform the merge and stop just before creating
a merge commit, to give the user a chance to inspect and further
tweak the merge result before committing.
+
Note that fast-forward updates do not create a merge commit and
-therefore there is no way to stop those merges with --no-commit.
+therefore there is no way to stop those merges with `--no-commit`.
Thus, if you want to ensure your branch is not changed or updated
-by the merge command, use --no-ff with --no-commit.
+by the merge command, use `--no-ff` with `--no-commit`.
---edit::
--e::
---no-edit::
+`--edit`::
+`-e`::
+`--no-edit`::
Invoke an editor before committing successful mechanical merge to
further edit the auto-generated merge message, so that the user
can explain and justify the merge. The `--no-edit` option can be
@@ -35,17 +35,17 @@ they run `git merge`. To make it easier to adjust such scripts to the
updated behaviour, the environment variable `GIT_MERGE_AUTOEDIT` can be
set to `no` at the beginning of them.
---cleanup=<mode>::
+`--cleanup=<mode>`::
This option determines how the merge message will be cleaned up before
committing. See linkgit:git-commit[1] for more details. In addition, if
- the '<mode>' is given a value of `scissors`, scissors will be appended
+ the _<mode>_ is given a value of `scissors`, scissors will be appended
to `MERGE_MSG` before being passed on to the commit machinery in the
case of a merge conflict.
ifdef::git-merge[]
---ff::
---no-ff::
---ff-only::
+`--ff`::
+`--no-ff`::
+`--ff-only`::
Specifies how a merge is handled when the merged-in history is
already a descendant of the current history. `--ff` is the
default unless merging an annotated (and possibly signed) tag
@@ -53,13 +53,13 @@ ifdef::git-merge[]
hierarchy, in which case `--no-ff` is assumed.
endif::git-merge[]
ifdef::git-pull[]
---ff-only::
+`--ff-only`::
Only update to the new history if there is no divergent local
history. This is the default when no method for reconciling
divergent histories is provided (via the --rebase=* flags).
---ff::
---no-ff::
+`--ff`::
+`--no-ff`::
When merging rather than rebasing, specifies how a merge is
handled when the merged-in history is already a descendant of
the current history. If merging is requested, `--ff` is the
@@ -81,40 +81,43 @@ With `--ff-only`, resolve the merge as a fast-forward when possible.
When not possible, refuse to merge and exit with a non-zero status.
endif::git-merge[]
--S[<keyid>]::
---gpg-sign[=<keyid>]::
---no-gpg-sign::
- GPG-sign the resulting merge commit. The `keyid` argument is
+`-S[<key-id>]`::
+`--gpg-sign[=<key-id>]`::
+`--no-gpg-sign`::
+ GPG-sign the resulting merge commit. The _<key-id>_ argument is
optional and defaults to the committer identity; if specified,
it must be stuck to the option without a space. `--no-gpg-sign`
is useful to countermand both `commit.gpgSign` configuration variable,
and earlier `--gpg-sign`.
---log[=<n>]::
---no-log::
+`--log[=<n>]`::
+`--no-log`::
In addition to branch names, populate the log message with
- one-line descriptions from at most <n> actual commits that are being
+ one-line descriptions from at most _<n>_ actual commits that are being
merged. See also linkgit:git-fmt-merge-msg[1].
ifdef::git-pull[]
Only useful when merging.
endif::git-pull[]
+
-With --no-log do not list one-line descriptions from the
+With `--no-log` do not list one-line descriptions from the
actual commits being merged.
include::signoff-option.adoc[]
---stat::
--n::
---no-stat::
+`--stat`::
+`-n`::
+`--no-stat`::
Show a diffstat at the end of the merge. The diffstat is also
controlled by the configuration option merge.stat.
+
-With -n or --no-stat do not show a diffstat at the end of the
+With `-n` or `--no-stat` do not show a diffstat at the end of the
merge.
---squash::
---no-squash::
+`--compact-summary`::
+ Show a compact-summary at the end of the merge.
+
+`--squash`::
+`--no-squash`::
Produce the working tree and index state as if a real merge
happened (except for the merge information), but do not actually
make a commit, move the `HEAD`, or record `$GIT_DIR/MERGE_HEAD`
@@ -123,16 +126,16 @@ merge.
the current branch whose effect is the same as merging another
branch (or more in case of an octopus).
+
-With --no-squash perform the merge and commit the result. This
-option can be used to override --squash.
+With `--no-squash` perform the merge and commit the result. This
+option can be used to override `--squash`.
+
-With --squash, --commit is not allowed, and will fail.
+With `--squash`, `--commit` is not allowed, and will fail.
ifdef::git-pull[]
+
Only useful when merging.
endif::git-pull[]
---[no-]verify::
+`--[no-]verify`::
By default, the pre-merge and commit-msg hooks are run.
When `--no-verify` is given, these are bypassed.
See also linkgit:githooks[5].
@@ -140,21 +143,21 @@ ifdef::git-pull[]
Only useful when merging.
endif::git-pull[]
--s <strategy>::
---strategy=<strategy>::
+`-s <strategy>`::
+`--strategy=<strategy>`::
Use the given merge strategy; can be supplied more than
once to specify them in the order they should be tried.
If there is no `-s` option, a built-in list of strategies
is used instead (`ort` when merging a single head,
`octopus` otherwise).
--X <option>::
---strategy-option=<option>::
+`-X <option>`::
+`--strategy-option=<option>`::
Pass merge strategy specific option through to the merge
strategy.
---verify-signatures::
---no-verify-signatures::
+`--verify-signatures`::
+`--no-verify-signatures`::
Verify that the tip commit of the side branch being merged is
signed with a valid key, i.e. a key that has a valid uid: in the
default trust model, this means the signing key has been signed by
@@ -165,22 +168,22 @@ ifdef::git-pull[]
Only useful when merging.
endif::git-pull[]
---summary::
---no-summary::
- Synonyms to --stat and --no-stat; these are deprecated and will be
+`--summary`::
+`--no-summary`::
+ Synonyms to `--stat` and `--no-stat`; these are deprecated and will be
removed in the future.
ifndef::git-pull[]
--q::
---quiet::
- Operate quietly. Implies --no-progress.
+`-q`::
+`--quiet`::
+ Operate quietly. Implies `--no-progress`.
--v::
---verbose::
+`-v`::
+`--verbose`::
Be verbose.
---progress::
---no-progress::
+`--progress`::
+`--no-progress`::
Turn progress on/off explicitly. If neither is specified,
progress is shown if standard error is connected to a terminal.
Note that not all merge strategies may support progress
@@ -188,8 +191,8 @@ ifndef::git-pull[]
endif::git-pull[]
---autostash::
---no-autostash::
+`--autostash`::
+`--no-autostash`::
Automatically create a temporary stash entry before the operation
begins, record it in the ref `MERGE_AUTOSTASH`
and apply it after the operation ends. This means
@@ -197,13 +200,13 @@ endif::git-pull[]
with care: the final stash application after a successful
merge might result in non-trivial conflicts.
---allow-unrelated-histories::
+`--allow-unrelated-histories`::
By default, `git merge` command refuses to merge histories
that do not share a common ancestor. This option can be
used to override this safety when merging histories of two
projects that started their lives independently. As that is
a very rare occasion, no configuration variable to enable
- this by default exists and will not be added.
+ this by default exists or will be added.
ifdef::git-pull[]
+
Only useful when merging.
diff --git a/Documentation/merge-strategies.adoc b/Documentation/merge-strategies.adoc
index 9e034f447e..2ba43f84e7 100644
--- a/Documentation/merge-strategies.adoc
+++ b/Documentation/merge-strategies.adoc
@@ -6,7 +6,7 @@ backend 'merge strategies' to be chosen with `-s` option. Some strategies
can also take their own options, which can be passed by giving `-X<option>`
arguments to `git merge` and/or `git pull`.
-ort::
+`ort`::
This is the default merge strategy when pulling or merging one
branch. This strategy can only resolve two heads using a
3-way merge algorithm. When there is more than one common
@@ -29,26 +29,26 @@ descendant. Otherwise, Git will treat this case as a conflict, suggesting
as a resolution a submodule commit that is descendant of the conflicting
ones, if one exists.
+
-The 'ort' strategy can take the following options:
+The `ort` strategy can take the following options:
-ours;;
+`ours`;;
This option forces conflicting hunks to be auto-resolved cleanly by
favoring 'our' version. Changes from the other tree that do not
conflict with our side are reflected in the merge result.
For a binary file, the entire contents are taken from our side.
+
-This should not be confused with the 'ours' merge strategy, which does not
+This should not be confused with the `ours` merge strategy, which does not
even look at what the other tree contains at all. It discards everything
the other tree did, declaring 'our' history contains all that happened in it.
-theirs;;
- This is the opposite of 'ours'; note that, unlike 'ours', there is
- no 'theirs' merge strategy to confuse this merge option with.
+`theirs`;;
+ This is the opposite of `ours`; note that, unlike `ours`, there is
+ no `theirs` merge strategy to confuse this merge option with.
-ignore-space-change;;
-ignore-all-space;;
-ignore-space-at-eol;;
-ignore-cr-at-eol;;
+`ignore-space-change`;;
+`ignore-all-space`;;
+`ignore-space-at-eol`;;
+`ignore-cr-at-eol`;;
Treats lines with the indicated type of whitespace change as
unchanged for the sake of a three-way merge. Whitespace
changes mixed with other changes to a line are not ignored.
@@ -61,7 +61,7 @@ ignore-cr-at-eol;;
version includes a substantial change, 'their' version is used;
* Otherwise, the merge proceeds in the usual way.
-renormalize;;
+`renormalize`;;
This runs a virtual check-out and check-in of all three stages
of any file which needs a three-way merge. This option is
meant to be used when merging branches with different clean
@@ -69,31 +69,31 @@ renormalize;;
branches with differing checkin/checkout attributes" in
linkgit:gitattributes[5] for details.
-no-renormalize;;
+`no-renormalize`;;
Disables the `renormalize` option. This overrides the
`merge.renormalize` configuration variable.
-find-renames[=<n>];;
+`find-renames[=<n>]`;;
Turn on rename detection, optionally setting the similarity
threshold. This is the default. This overrides the
- 'merge.renames' configuration variable.
+ `merge.renames` configuration variable.
See also linkgit:git-diff[1] `--find-renames`.
-rename-threshold=<n>;;
+`rename-threshold=<n>`;;
Deprecated synonym for `find-renames=<n>`.
-no-renames;;
+`no-renames`;;
Turn off rename detection. This overrides the `merge.renames`
configuration variable.
See also linkgit:git-diff[1] `--no-renames`.
-histogram;;
+`histogram`;;
Deprecated synonym for `diff-algorithm=histogram`.
-patience;;
+`patience`;;
Deprecated synonym for `diff-algorithm=patience`.
-diff-algorithm=[histogram|minimal|myers|patience];;
+`diff-algorithm=(histogram|minimal|myers|patience)`;;
Use a different diff algorithm while merging, which can help
avoid mismerges that occur due to unimportant matching lines
(such as braces from distinct functions). See also
@@ -101,49 +101,49 @@ diff-algorithm=[histogram|minimal|myers|patience];;
defaults to `diff-algorithm=histogram`, while regular diffs
currently default to the `diff.algorithm` config setting.
-subtree[=<path>];;
+`subtree[=<path>]`;;
This option is a more advanced form of 'subtree' strategy, where
the strategy makes a guess on how two trees must be shifted to
match with each other when merging. Instead, the specified path
is prefixed (or stripped from the beginning) to make the shape of
two trees to match.
-recursive::
+`recursive`::
This is now a synonym for `ort`. It was an alternative
implementation until v2.49.0, but was redirected to mean `ort`
in v2.50.0. The previous recursive strategy was the default
strategy for resolving two heads from Git v0.99.9k until
v2.33.0.
-resolve::
+`resolve`::
This can only resolve two heads (i.e. the current branch
and another branch you pulled from) using a 3-way merge
algorithm. It tries to carefully detect criss-cross
merge ambiguities. It does not handle renames.
-octopus::
+`octopus`::
This resolves cases with more than two heads, but refuses to do
a complex merge that needs manual resolution. It is
primarily meant to be used for bundling topic branch
heads together. This is the default merge strategy when
pulling or merging more than one branch.
-ours::
+`ours`::
This resolves any number of heads, but the resulting tree of the
merge is always that of the current branch head, effectively
ignoring all changes from all other branches. It is meant to
be used to supersede old development history of side
- branches. Note that this is different from the -Xours option to
- the 'ort' merge strategy.
+ branches. Note that this is different from the `-Xours` option to
+ the `ort` merge strategy.
-subtree::
+`subtree`::
This is a modified `ort` strategy. When merging trees A and
B, if B corresponds to a subtree of A, B is first adjusted to
match the tree structure of A, instead of reading the trees at
the same level. This adjustment is also done to the common
ancestor tree.
-With the strategies that use 3-way merge (including the default, 'ort'),
+With the strategies that use 3-way merge (including the default, `ort`),
if a change is made on both branches, but later reverted on one of the
branches, that change will be present in the merged result; some people find
this behavior confusing. It occurs because only the heads and the merge base
diff --git a/Documentation/mergetools/vimdiff.adoc b/Documentation/mergetools/vimdiff.adoc
index ab915df408..abfd426f74 100644
--- a/Documentation/mergetools/vimdiff.adoc
+++ b/Documentation/mergetools/vimdiff.adoc
@@ -183,13 +183,13 @@ latter will be used as fallback if the variant-specific one is not set).
In addition, for backwards compatibility with previous Git versions, you can
also append `1`, `2` or `3` to either `vimdiff` or any of the variants (ex:
`vimdiff3`, `nvimdiff1`, etc...) to use a predefined layout.
-In other words, using `--tool=[g,n,]vimdiffx` is the same as using
-`--tool=[g,n,]vimdiff` and setting configuration variable
-`mergetool.[g,n,]vimdiff.layout` to...
+In other words, using `--tool=[g|n]vimdiff<x>` is the same as using
+`--tool=[g|n]vimdiff` and setting configuration variable
+`mergetool.[g|n]vimdiff.layout` to...
- * `x=1`: `"@LOCAL, REMOTE"`
- * `x=2`: `"LOCAL, MERGED, REMOTE"`
- * `x=3`: `"MERGED"`
+ * `<x>=1`: `"@LOCAL, REMOTE"`
+ * `<x>=2`: `"LOCAL, MERGED, REMOTE"`
+ * `<x>=3`: `"MERGED"`
-Example: using `--tool=gvimdiff2` will open `gvim` with three columns (LOCAL,
-MERGED and REMOTE).
+Example: using `--tool=gvimdiff2` will open `gvim` with three columns (`LOCAL`,
+`MERGED` and `REMOTE`).
diff --git a/Documentation/meson.build b/Documentation/meson.build
index 1433acfd31..2fe1a1369d 100644
--- a/Documentation/meson.build
+++ b/Documentation/meson.build
@@ -158,7 +158,6 @@ manpages = {
'git-verify-tag.adoc' : 1,
'git-version.adoc' : 1,
'git-web--browse.adoc' : 1,
- 'git-whatchanged.adoc' : 1,
'git-worktree.adoc' : 1,
'git-write-tree.adoc' : 1,
'git.adoc' : 1,
@@ -207,6 +206,7 @@ manpages = {
manpages_breaking_changes = {
'git-pack-redundant.adoc' : 1,
+ 'git-whatchanged.adoc' : 1,
}
if not get_option('breaking_changes')
diff --git a/Documentation/pretty-options.adoc b/Documentation/pretty-options.adoc
index 23888cd612..b36e96abe2 100644
--- a/Documentation/pretty-options.adoc
+++ b/Documentation/pretty-options.adoc
@@ -62,7 +62,12 @@ ifndef::git-rev-list[]
--notes[=<ref>]::
Show the notes (see linkgit:git-notes[1]) that annotate the
commit, when showing the commit log message. This is the default
+ifndef::with-breaking-changes[]
for `git log`, `git show` and `git whatchanged` commands when
+endif::with-breaking-changes[]
+ifdef::with-breaking-changes[]
+ for `git log` and `git show` commands when
+endif::with-breaking-changes[]
there is no `--pretty`, `--format`, or `--oneline` option given
on the command line.
+
diff --git a/Documentation/rerere-options.adoc b/Documentation/rerere-options.adoc
index c3321ddea2..b0b920144a 100644
--- a/Documentation/rerere-options.adoc
+++ b/Documentation/rerere-options.adoc
@@ -1,5 +1,5 @@
---rerere-autoupdate::
---no-rerere-autoupdate::
+`--rerere-autoupdate`::
+`--no-rerere-autoupdate`::
After the rerere mechanism reuses a recorded resolution on
the current conflict to update the files in the working
tree, allow it to also update the index with the result of
diff --git a/Documentation/rev-list-options.adoc b/Documentation/rev-list-options.adoc
index d38875efda..ae8765644c 100644
--- a/Documentation/rev-list-options.adoc
+++ b/Documentation/rev-list-options.adoc
@@ -1100,8 +1100,13 @@ Commit Formatting
ifdef::git-rev-list[]
Using these options, linkgit:git-rev-list[1] will act similar to the
-more specialized family of commit log tools: linkgit:git-log[1],
-linkgit:git-show[1], and linkgit:git-whatchanged[1]
+more specialized family of commit log tools:
+ifndef::with-breaking-changes[]
+linkgit:git-log[1], linkgit:git-show[1], and linkgit:git-whatchanged[1].
+endif::with-breaking-changes[]
+ifdef::with-breaking-changes[]
+linkgit:git-log[1] and linkgit:git-show[1].
+endif::with-breaking-changes[]
endif::git-rev-list[]
include::pretty-options.adoc[]
diff --git a/Documentation/technical/api-path-walk.adoc b/Documentation/technical/api-path-walk.adoc
index 3e089211fb..34c905eb9c 100644
--- a/Documentation/technical/api-path-walk.adoc
+++ b/Documentation/technical/api-path-walk.adoc
@@ -56,6 +56,14 @@ better off using the revision walk API instead.
the revision walk so that the walk emits commits marked with the
`UNINTERESTING` flag.
+`edge_aggressive`::
+ For performance reasons, usually only the boundary commits are
+ explored to find UNINTERESTING objects. However, in the case of
+ shallow clones it can be helpful to mark all trees and blobs
+ reachable from UNINTERESTING tip commits as UNINTERESTING. This
+ matches the behavior of `--objects-edge-aggressive` in the
+ revision API.
+
`pl`::
This pattern list pointer allows focusing the path-walk search to
a set of patterns, only emitting paths that match the given
@@ -69,4 +77,5 @@ Examples
See example usages in:
`t/helper/test-path-walk.c`,
+ `builtin/pack-objects.c`,
`builtin/backfill.c`
diff --git a/Documentation/technical/build-systems.adoc b/Documentation/technical/build-systems.adoc
index d9dafb407c..3c5237b9fd 100644
--- a/Documentation/technical/build-systems.adoc
+++ b/Documentation/technical/build-systems.adoc
@@ -32,7 +32,10 @@ that generally have somebody running test pipelines against regularly:
- OpenBSD
The platforms which must be supported by the tool should be aligned with our
-[platform support policy](platform-support.txt).
+platform support policy (see platform-support.adoc).
+// once we lose AsciiDoc compatibility, we can start writing the above as:
+// xref:platform-support.adoc#platform-support-policy[platform support policy]
+// or something like that, but until then....
=== Auto-detection of supported features
diff --git a/Documentation/technical/sparse-checkout.adoc b/Documentation/technical/sparse-checkout.adoc
index dc2e763bbe..0f750ef3e3 100644
--- a/Documentation/technical/sparse-checkout.adoc
+++ b/Documentation/technical/sparse-checkout.adoc
@@ -66,7 +66,7 @@ sparsity patterns: patterns from $GIT_DIR/info/sparse-checkout used to
reasons: (1) users in cone mode specify directories rather than
patterns (their directories are transformed into patterns, but
users may think you are talking about non-cone mode if you use the
- word "patterns"), and (b) the sparse specification might
+ word "patterns"), and (2) the sparse specification might
transiently differ in the working tree or index from the sparsity
patterns (see "Sparse specification vs. sparsity patterns").
@@ -440,7 +440,7 @@ understanding these differences can be beneficial.
* blame (only matters when one or more -C flags are passed)
* and annotate
* log
- * whatchanged
+ * whatchanged (may not exist anymore)
* ls-files
* diff-index
* diff-tree
diff --git a/Documentation/user-manual.adoc b/Documentation/user-manual.adoc
index d2b478ad23..7124345966 100644
--- a/Documentation/user-manual.adoc
+++ b/Documentation/user-manual.adoc
@@ -4240,7 +4240,7 @@ command `git`. The source side of a builtin is
- an entry in `BUILTIN_OBJECTS` in the `Makefile`.
Sometimes, more than one builtin is contained in one source file. For
-example, `cmd_whatchanged()` and `cmd_log()` both reside in `builtin/log.c`,
+example, `cmd_show()` and `cmd_log()` both reside in `builtin/log.c`,
since they share quite a bit of code. In that case, the commands which are
_not_ named like the `.c` file in which they live have to be listed in
`BUILT_INS` in the `Makefile`.
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index cea2a13401..63463c8773 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -1,6 +1,6 @@
#!/bin/sh
-DEF_VER=v2.50.0-rc0
+DEF_VER=v2.50.GIT
LF='
'
@@ -82,7 +82,7 @@ read GIT_MAJOR_VERSION GIT_MINOR_VERSION GIT_MICRO_VERSION GIT_PATCH_LEVEL trail
$(echo "$GIT_VERSION" 0 0 0 0 | tr '.a-zA-Z-' ' ')
EOF
-REPLACED=$(printf "%s" "$INPUT" | sed -e "s|@GIT_VERSION@|$GIT_VERSION|" \
+REPLACED=$(printf "%s\n" "$INPUT" | sed -e "s|@GIT_VERSION@|$GIT_VERSION|" \
-e "s|@GIT_MAJOR_VERSION@|$GIT_MAJOR_VERSION|" \
-e "s|@GIT_MINOR_VERSION@|$GIT_MINOR_VERSION|" \
-e "s|@GIT_MICRO_VERSION@|$GIT_MICRO_VERSION|" \
diff --git a/RelNotes b/RelNotes
index eaaaf878d3..48f15770a4 120000
--- a/RelNotes
+++ b/RelNotes
@@ -1 +1 @@
-Documentation/RelNotes/2.50.0.adoc \ No newline at end of file
+Documentation/RelNotes/2.51.0.adoc \ No newline at end of file
diff --git a/branch.c b/branch.c
index 6d01d7d6bd..93f5b4e8dd 100644
--- a/branch.c
+++ b/branch.c
@@ -230,7 +230,7 @@ static int inherit_tracking(struct tracking *tracking, const char *orig_ref)
return -1;
}
- if (branch->merge_nr < 1 || !branch->merge_name || !branch->merge_name[0]) {
+ if (branch->merge_nr < 1 || !branch->merge || !branch->merge[0] || !branch->merge[0]->src) {
warning(_("asked to inherit tracking from '%s', but no merge configuration is set"),
bare_ref);
return -1;
@@ -238,7 +238,7 @@ static int inherit_tracking(struct tracking *tracking, const char *orig_ref)
tracking->remote = branch->remote_name;
for (i = 0; i < branch->merge_nr; i++)
- string_list_append(tracking->srcs, branch->merge_name[i]);
+ string_list_append(tracking->srcs, branch->merge[i]->src);
return 0;
}
diff --git a/builtin/am.c b/builtin/am.c
index e32a3b4c97..a800003340 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -1000,7 +1000,7 @@ static void am_setup(struct am_state *state, enum patch_format patch_format,
if (!patch_format) {
fprintf_ln(stderr, _("Patch format detection failed."));
- exit(128);
+ die(NULL);
}
if (mkdir(state->dir, 0777) < 0 && errno != EEXIST)
@@ -1178,7 +1178,7 @@ static void NORETURN die_user_resolve(const struct am_state *state)
strbuf_release(&sb);
}
- exit(128);
+ die(NULL);
}
/**
diff --git a/builtin/cat-file.c b/builtin/cat-file.c
index 67a5ff2b9e..4b23fcecbd 100644
--- a/builtin/cat-file.c
+++ b/builtin/cat-file.c
@@ -275,6 +275,7 @@ struct expand_data {
struct object_id oid;
enum object_type type;
unsigned long size;
+ unsigned short mode;
off_t disk_size;
const char *rest;
struct object_id delta_base_oid;
@@ -306,6 +307,7 @@ struct expand_data {
*/
unsigned skip_object_info : 1;
};
+#define EXPAND_DATA_INIT { .mode = S_IFINVALID }
static int is_atom(const char *atom, const char *s, int slen)
{
@@ -345,6 +347,9 @@ static int expand_atom(struct strbuf *sb, const char *atom, int len,
else
strbuf_addstr(sb,
oid_to_hex(&data->delta_base_oid));
+ } else if (is_atom("objectmode", atom, len)) {
+ if (!data->mark_query && !(S_IFINVALID == data->mode))
+ strbuf_addf(sb, "%06o", data->mode);
} else
return 0;
return 1;
@@ -491,7 +496,10 @@ static void batch_object_write(const char *obj_name,
&data->oid, &data->info,
OBJECT_INFO_LOOKUP_REPLACE);
if (ret < 0) {
- report_object_status(opt, obj_name, &data->oid, "missing");
+ if (data->mode == S_IFGITLINK)
+ report_object_status(opt, oid_to_hex(&data->oid), &data->oid, "submodule");
+ else
+ report_object_status(opt, obj_name, &data->oid, "missing");
return;
}
@@ -613,6 +621,7 @@ static void batch_one_object(const char *obj_name,
goto out;
}
+ data->mode = ctx.mode;
batch_object_write(obj_name, scratch, opt, data, NULL, 0);
out:
@@ -866,7 +875,7 @@ static int batch_objects(struct batch_options *opt)
{
struct strbuf input = STRBUF_INIT;
struct strbuf output = STRBUF_INIT;
- struct expand_data data;
+ struct expand_data data = EXPAND_DATA_INIT;
int save_warning;
int retval = 0;
@@ -875,7 +884,6 @@ static int batch_objects(struct batch_options *opt)
* object_info to be handed to oid_object_info_extended for each
* object.
*/
- memset(&data, 0, sizeof(data));
data.mark_query = 1;
expand_format(&output,
opt->format ? opt->format : DEFAULT_FORMAT,
diff --git a/builtin/checkout.c b/builtin/checkout.c
index d185982f3a..536192d345 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -838,7 +838,7 @@ static int merge_working_tree(const struct checkout_opts *opts,
init_tree_desc(&trees[0], &tree->object.oid,
tree->buffer, tree->size);
if (parse_tree(new_tree) < 0)
- exit(128);
+ die(NULL);
tree = new_tree;
init_tree_desc(&trees[1], &tree->object.oid,
tree->buffer, tree->size);
@@ -913,7 +913,7 @@ static int merge_working_tree(const struct checkout_opts *opts,
work,
old_tree);
if (ret < 0)
- exit(128);
+ die(NULL);
ret = reset_tree(new_tree,
opts, 0,
writeout_error, new_branch_info);
diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c
index a783a86e79..ee48980248 100644
--- a/builtin/commit-graph.c
+++ b/builtin/commit-graph.c
@@ -311,6 +311,7 @@ static int graph_write(int argc, const char **argv, const char *prefix,
while (strbuf_getline(&buf, stdin) != EOF) {
if (read_one_commit(&commits, progress, buf.buf)) {
result = 1;
+ stop_progress(&progress);
goto cleanup;
}
}
diff --git a/builtin/diff.c b/builtin/diff.c
index fa963808c3..c6231edce4 100644
--- a/builtin/diff.c
+++ b/builtin/diff.c
@@ -35,7 +35,7 @@ static const char builtin_diff_usage[] =
" or: git diff [<options>] [--merge-base] <commit> [<commit>...] <commit> [--] [<path>...]\n"
" or: git diff [<options>] <commit>...<commit> [--] [<path>...]\n"
" or: git diff [<options>] <blob> <blob>\n"
-" or: git diff [<options>] --no-index [--] <path> <path>"
+" or: git diff [<options>] --no-index [--] <path> <path> [<pathspec>...]"
"\n"
COMMON_DIFF_OPTIONS_HELP;
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index 37c01d6c6f..fcf6b00d5f 100644
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
@@ -39,7 +39,7 @@ enum sign_mode { SIGN_ABORT, SIGN_VERBATIM, SIGN_STRIP, SIGN_WARN_VERBATIM, SIGN
static int progress;
static enum sign_mode signed_tag_mode = SIGN_ABORT;
-static enum sign_mode signed_commit_mode = SIGN_ABORT;
+static enum sign_mode signed_commit_mode = SIGN_STRIP;
static enum tag_of_filtered_mode { TAG_FILTERING_ABORT, DROP, REWRITE } tag_of_filtered_mode = TAG_FILTERING_ABORT;
static enum reencode_mode { REENCODE_ABORT, REENCODE_YES, REENCODE_NO } reencode_mode = REENCODE_ABORT;
static int fake_missing_tagger;
@@ -1269,7 +1269,6 @@ int cmd_fast_export(int argc,
const char *prefix,
struct repository *repo UNUSED)
{
- const char *env_signed_commits_noabort;
struct rev_info revs;
struct commit *commit;
char *export_filename = NULL,
@@ -1327,10 +1326,6 @@ int cmd_fast_export(int argc,
if (argc == 1)
usage_with_options (fast_export_usage, options);
- env_signed_commits_noabort = getenv("FAST_EXPORT_SIGNED_COMMITS_NOABORT");
- if (env_signed_commits_noabort && *env_signed_commits_noabort)
- signed_commit_mode = SIGN_WARN_STRIP;
-
/* we handle encodings */
git_config(git_default_config, NULL);
diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c
index d07eec9e55..d9e42bad58 100644
--- a/builtin/fetch-pack.c
+++ b/builtin/fetch-pack.c
@@ -274,8 +274,10 @@ int cmd_fetch_pack(int argc,
}
close(fd[0]);
close(fd[1]);
- if (finish_connect(conn))
- return 1;
+ if (finish_connect(conn)) {
+ ret = 1;
+ goto cleanup;
+ }
ret = !fetched_refs;
@@ -291,6 +293,7 @@ int cmd_fetch_pack(int argc,
printf("%s %s\n",
oid_to_hex(&ref->old_oid), ref->name);
+cleanup:
for (size_t i = 0; i < nr_sought; i++)
free_one_ref(sought_to_free[i]);
free(sought_to_free);
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 40a0e8d244..3267617a54 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -640,9 +640,6 @@ static struct ref *get_ref_map(struct remote *remote,
return ref_map;
}
-#define STORE_REF_ERROR_OTHER 1
-#define STORE_REF_ERROR_DF_CONFLICT 2
-
static int s_update_ref(const char *action,
struct ref *ref,
struct ref_transaction *transaction,
@@ -650,7 +647,6 @@ static int s_update_ref(const char *action,
{
char *msg;
char *rla = getenv("GIT_REFLOG_ACTION");
- struct ref_transaction *our_transaction = NULL;
struct strbuf err = STRBUF_INIT;
int ret;
@@ -660,43 +656,10 @@ static int s_update_ref(const char *action,
rla = default_rla.buf;
msg = xstrfmt("%s: %s", rla, action);
- /*
- * If no transaction was passed to us, we manage the transaction
- * ourselves. Otherwise, we trust the caller to handle the transaction
- * lifecycle.
- */
- if (!transaction) {
- transaction = our_transaction = ref_store_transaction_begin(get_main_ref_store(the_repository),
- 0, &err);
- if (!transaction) {
- ret = STORE_REF_ERROR_OTHER;
- goto out;
- }
- }
-
ret = ref_transaction_update(transaction, ref->name, &ref->new_oid,
check_old ? &ref->old_oid : NULL,
NULL, NULL, 0, msg, &err);
- if (ret) {
- ret = STORE_REF_ERROR_OTHER;
- goto out;
- }
-
- if (our_transaction) {
- switch (ref_transaction_commit(our_transaction, &err)) {
- case 0:
- break;
- case REF_TRANSACTION_ERROR_NAME_CONFLICT:
- ret = STORE_REF_ERROR_DF_CONFLICT;
- goto out;
- default:
- ret = STORE_REF_ERROR_OTHER;
- goto out;
- }
- }
-out:
- ref_transaction_free(our_transaction);
if (ret)
error("%s", err.buf);
strbuf_release(&err);
@@ -992,7 +955,7 @@ static int update_local_ref(struct ref *ref,
fast_forward = repo_in_merge_bases(the_repository, current,
updated);
if (fast_forward < 0)
- exit(128);
+ die(NULL);
forced_updates_ms += (getnanotime() - t_before) / 1000000;
} else {
fast_forward = 1;
@@ -1139,7 +1102,6 @@ N_("it took %.2f seconds to check forced updates; you can use\n"
"to avoid this check\n");
static int store_updated_refs(struct display_state *display_state,
- const char *remote_name,
int connectivity_checked,
struct ref_transaction *transaction, struct ref *ref_map,
struct fetch_head *fetch_head,
@@ -1277,11 +1239,6 @@ static int store_updated_refs(struct display_state *display_state,
}
}
- if (rc & STORE_REF_ERROR_DF_CONFLICT)
- error(_("some local refs could not be updated; try running\n"
- " 'git remote prune %s' to remove any old, conflicting "
- "branches"), remote_name);
-
if (advice_enabled(ADVICE_FETCH_SHOW_FORCED_UPDATES)) {
if (!config->show_forced_updates) {
warning(_(warn_show_forced_updates));
@@ -1365,9 +1322,8 @@ static int fetch_and_consume_refs(struct display_state *display_state,
}
trace2_region_enter("fetch", "consume_refs", the_repository);
- ret = store_updated_refs(display_state, transport->remote->name,
- connectivity_checked, transaction, ref_map,
- fetch_head, config);
+ ret = store_updated_refs(display_state, connectivity_checked,
+ transaction, ref_map, fetch_head, config);
trace2_region_leave("fetch", "consume_refs", the_repository);
out:
@@ -1687,6 +1643,36 @@ cleanup:
return result;
}
+struct ref_rejection_data {
+ int *retcode;
+ int conflict_msg_shown;
+ const char *remote_name;
+};
+
+static void ref_transaction_rejection_handler(const char *refname,
+ const struct object_id *old_oid UNUSED,
+ const struct object_id *new_oid UNUSED,
+ const char *old_target UNUSED,
+ const char *new_target UNUSED,
+ enum ref_transaction_error err,
+ void *cb_data)
+{
+ struct ref_rejection_data *data = cb_data;
+
+ if (err == REF_TRANSACTION_ERROR_NAME_CONFLICT && !data->conflict_msg_shown) {
+ error(_("some local refs could not be updated; try running\n"
+ " 'git remote prune %s' to remove any old, conflicting "
+ "branches"), data->remote_name);
+ data->conflict_msg_shown = 1;
+ } else {
+ const char *reason = ref_transaction_error_msg(err);
+
+ error(_("fetching ref %s failed: %s"), refname, reason);
+ }
+
+ *data->retcode = 1;
+}
+
static int do_fetch(struct transport *transport,
struct refspec *rs,
const struct fetch_config *config)
@@ -1807,6 +1793,24 @@ static int do_fetch(struct transport *transport,
retcode = 1;
}
+ /*
+ * If not atomic, we can still use batched updates, which would be much
+ * more performant. We don't initiate the transaction before pruning,
+ * since pruning must be an independent step, to avoid F/D conflicts.
+ *
+ * TODO: if reference transactions gain logical conflict resolution, we
+ * can delete and create refs (with F/D conflicts) in the same transaction
+ * and this can be moved above the 'prune_refs()' block.
+ */
+ if (!transaction) {
+ transaction = ref_store_transaction_begin(get_main_ref_store(the_repository),
+ REF_TRANSACTION_ALLOW_FAILURE, &err);
+ if (!transaction) {
+ retcode = -1;
+ goto cleanup;
+ }
+ }
+
if (fetch_and_consume_refs(&display_state, transport, transaction, ref_map,
&fetch_head, config)) {
retcode = 1;
@@ -1838,16 +1842,31 @@ static int do_fetch(struct transport *transport,
free_refs(tags_ref_map);
}
- if (transaction) {
- if (retcode)
- goto cleanup;
+ if (retcode)
+ goto cleanup;
- retcode = ref_transaction_commit(transaction, &err);
+ retcode = ref_transaction_commit(transaction, &err);
+ if (retcode) {
+ /*
+ * Explicitly handle transaction cleanup to avoid
+ * aborting an already closed transaction.
+ */
+ ref_transaction_free(transaction);
+ transaction = NULL;
+ goto cleanup;
+ }
+
+ if (!atomic_fetch) {
+ struct ref_rejection_data data = {
+ .retcode = &retcode,
+ .conflict_msg_shown = 0,
+ .remote_name = transport->remote->name,
+ };
+
+ ref_transaction_for_each_rejected_update(transaction,
+ ref_transaction_rejection_handler,
+ &data);
if (retcode) {
- /*
- * Explicitly handle transaction cleanup to avoid
- * aborting an already closed transaction.
- */
ref_transaction_free(transaction);
transaction = NULL;
goto cleanup;
diff --git a/builtin/gc.c b/builtin/gc.c
index 6880f5b13d..523e3de111 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -251,7 +251,24 @@ static enum schedule_priority parse_schedule(const char *value)
return SCHEDULE_NONE;
}
+enum maintenance_task_label {
+ TASK_PREFETCH,
+ TASK_LOOSE_OBJECTS,
+ TASK_INCREMENTAL_REPACK,
+ TASK_GC,
+ TASK_COMMIT_GRAPH,
+ TASK_PACK_REFS,
+ TASK_REFLOG_EXPIRE,
+ TASK_WORKTREE_PRUNE,
+ TASK_RERERE_GC,
+
+ /* Leave as final value */
+ TASK__COUNT
+};
+
struct maintenance_run_opts {
+ enum maintenance_task_label *tasks;
+ size_t tasks_nr, tasks_alloc;
int auto_flag;
int detach;
int quiet;
@@ -261,6 +278,11 @@ struct maintenance_run_opts {
.detach = -1, \
}
+static void maintenance_run_opts_release(struct maintenance_run_opts *opts)
+{
+ free(opts->tasks);
+}
+
static int pack_refs_condition(UNUSED struct gc_config *cfg)
{
/*
@@ -803,22 +825,14 @@ done:
return ret;
}
-static void gc_before_repack(struct maintenance_run_opts *opts,
- struct gc_config *cfg)
+static int gc_foreground_tasks(struct maintenance_run_opts *opts,
+ struct gc_config *cfg)
{
- /*
- * We may be called twice, as both the pre- and
- * post-daemonized phases will call us, but running these
- * commands more than once is pointless and wasteful.
- */
- static int done = 0;
- if (done++)
- return;
-
if (cfg->pack_refs && maintenance_task_pack_refs(opts, cfg))
- die(FAILED_RUN, "pack-refs");
+ return error(FAILED_RUN, "pack-refs");
if (cfg->prune_reflogs && maintenance_task_reflog_expire(opts, cfg))
- die(FAILED_RUN, "reflog");
+ return error(FAILED_RUN, "reflog");
+ return 0;
}
int cmd_gc(int argc,
@@ -827,12 +841,12 @@ int cmd_gc(int argc,
struct repository *repo UNUSED)
{
int aggressive = 0;
- int quiet = 0;
int force = 0;
const char *name;
pid_t pid;
int daemonized = 0;
int keep_largest_pack = -1;
+ int skip_foreground_tasks = 0;
timestamp_t dummy;
struct maintenance_run_opts opts = MAINTENANCE_RUN_OPTS_INIT;
struct gc_config cfg = GC_CONFIG_INIT;
@@ -840,7 +854,7 @@ int cmd_gc(int argc,
const char *prune_expire_arg = prune_expire_sentinel;
int ret;
struct option builtin_gc_options[] = {
- OPT__QUIET(&quiet, N_("suppress progress reporting")),
+ OPT__QUIET(&opts.quiet, N_("suppress progress reporting")),
{
.type = OPTION_STRING,
.long_name = "prune",
@@ -865,6 +879,8 @@ int cmd_gc(int argc,
N_("repack all other packs except the largest pack")),
OPT_STRING(0, "expire-to", &cfg.repack_expire_to, N_("dir"),
N_("pack prefix to store a pack containing pruned objects")),
+ OPT_HIDDEN_BOOL(0, "skip-foreground-tasks", &skip_foreground_tasks,
+ N_("skip maintenance tasks typically done in the foreground")),
OPT_END()
};
@@ -900,7 +916,7 @@ int cmd_gc(int argc,
if (cfg.aggressive_window > 0)
strvec_pushf(&repack, "--window=%d", cfg.aggressive_window);
}
- if (quiet)
+ if (opts.quiet)
strvec_push(&repack, "-q");
if (opts.auto_flag) {
@@ -915,7 +931,7 @@ int cmd_gc(int argc,
goto out;
}
- if (!quiet) {
+ if (!opts.quiet) {
if (opts.detach > 0)
fprintf(stderr, _("Auto packing the repository in background for optimum performance.\n"));
else
@@ -948,13 +964,16 @@ int cmd_gc(int argc,
goto out;
}
- if (lock_repo_for_gc(force, &pid)) {
- ret = 0;
- goto out;
- }
+ if (!skip_foreground_tasks) {
+ if (lock_repo_for_gc(force, &pid)) {
+ ret = 0;
+ goto out;
+ }
- gc_before_repack(&opts, &cfg); /* dies on failure */
- delete_tempfile(&pidfile);
+ if (gc_foreground_tasks(&opts, &cfg) < 0)
+ die(NULL);
+ delete_tempfile(&pidfile);
+ }
/*
* failure to daemonize is ok, we'll continue
@@ -983,7 +1002,8 @@ int cmd_gc(int argc,
free(path);
}
- gc_before_repack(&opts, &cfg);
+ if (opts.detach <= 0 && !skip_foreground_tasks)
+ gc_foreground_tasks(&opts, &cfg);
if (!repository_format_precious_objects) {
struct child_process repack_cmd = CHILD_PROCESS_INIT;
@@ -1000,7 +1020,7 @@ int cmd_gc(int argc,
strvec_pushl(&prune_cmd.args, "prune", "--expire", NULL);
/* run `git prune` even if using cruft packs */
strvec_push(&prune_cmd.args, cfg.prune_expire);
- if (quiet)
+ if (opts.quiet)
strvec_push(&prune_cmd.args, "--no-progress");
if (repo_has_promisor_remote(the_repository))
strvec_push(&prune_cmd.args,
@@ -1028,7 +1048,7 @@ int cmd_gc(int argc,
if (the_repository->settings.gc_write_commit_graph == 1)
write_commit_graph_reachable(the_repository->objects->odb,
- !quiet && !daemonized ? COMMIT_GRAPH_WRITE_PROGRESS : 0,
+ !opts.quiet && !daemonized ? COMMIT_GRAPH_WRITE_PROGRESS : 0,
NULL);
if (opts.auto_flag && too_many_loose_objects(&cfg))
@@ -1042,6 +1062,7 @@ int cmd_gc(int argc,
}
out:
+ maintenance_run_opts_release(&opts);
gc_config_release(&cfg);
return 0;
}
@@ -1218,8 +1239,14 @@ static int maintenance_task_prefetch(struct maintenance_run_opts *opts,
return 0;
}
-static int maintenance_task_gc(struct maintenance_run_opts *opts,
- struct gc_config *cfg UNUSED)
+static int maintenance_task_gc_foreground(struct maintenance_run_opts *opts,
+ struct gc_config *cfg)
+{
+ return gc_foreground_tasks(opts, cfg);
+}
+
+static int maintenance_task_gc_background(struct maintenance_run_opts *opts,
+ struct gc_config *cfg UNUSED)
{
struct child_process child = CHILD_PROCESS_INIT;
@@ -1233,6 +1260,7 @@ static int maintenance_task_gc(struct maintenance_run_opts *opts,
else
strvec_push(&child.args, "--no-quiet");
strvec_push(&child.args, "--no-detach");
+ strvec_push(&child.args, "--skip-foreground-tasks");
return run_command(&child);
}
@@ -1520,103 +1548,116 @@ static int maintenance_task_incremental_repack(struct maintenance_run_opts *opts
return 0;
}
-typedef int maintenance_task_fn(struct maintenance_run_opts *opts,
- struct gc_config *cfg);
-
-/*
- * An auto condition function returns 1 if the task should run
- * and 0 if the task should NOT run. See needs_to_gc() for an
- * example.
- */
-typedef int maintenance_auto_fn(struct gc_config *cfg);
+typedef int (*maintenance_task_fn)(struct maintenance_run_opts *opts,
+ struct gc_config *cfg);
+typedef int (*maintenance_auto_fn)(struct gc_config *cfg);
struct maintenance_task {
const char *name;
- maintenance_task_fn *fn;
- maintenance_auto_fn *auto_condition;
- unsigned enabled:1;
- enum schedule_priority schedule;
-
- /* -1 if not selected. */
- int selected_order;
-};
+ /*
+ * Work that will be executed before detaching. This should not include
+ * tasks that may run for an extended amount of time as it does cause
+ * auto-maintenance to block until foreground tasks have been run.
+ */
+ maintenance_task_fn foreground;
-enum maintenance_task_label {
- TASK_PREFETCH,
- TASK_LOOSE_OBJECTS,
- TASK_INCREMENTAL_REPACK,
- TASK_GC,
- TASK_COMMIT_GRAPH,
- TASK_PACK_REFS,
- TASK_REFLOG_EXPIRE,
- TASK_WORKTREE_PRUNE,
- TASK_RERERE_GC,
+ /*
+ * Work that will be executed after detaching. When not detaching the
+ * work will be run in the foreground, as well.
+ */
+ maintenance_task_fn background;
- /* Leave as final value */
- TASK__COUNT
+ /*
+ * An auto condition function returns 1 if the task should run and 0 if
+ * the task should NOT run. See needs_to_gc() for an example.
+ */
+ maintenance_auto_fn auto_condition;
};
-static struct maintenance_task tasks[] = {
+static const struct maintenance_task tasks[] = {
[TASK_PREFETCH] = {
- "prefetch",
- maintenance_task_prefetch,
+ .name = "prefetch",
+ .background = maintenance_task_prefetch,
},
[TASK_LOOSE_OBJECTS] = {
- "loose-objects",
- maintenance_task_loose_objects,
- loose_object_auto_condition,
+ .name = "loose-objects",
+ .background = maintenance_task_loose_objects,
+ .auto_condition = loose_object_auto_condition,
},
[TASK_INCREMENTAL_REPACK] = {
- "incremental-repack",
- maintenance_task_incremental_repack,
- incremental_repack_auto_condition,
+ .name = "incremental-repack",
+ .background = maintenance_task_incremental_repack,
+ .auto_condition = incremental_repack_auto_condition,
},
[TASK_GC] = {
- "gc",
- maintenance_task_gc,
- need_to_gc,
- 1,
+ .name = "gc",
+ .foreground = maintenance_task_gc_foreground,
+ .background = maintenance_task_gc_background,
+ .auto_condition = need_to_gc,
},
[TASK_COMMIT_GRAPH] = {
- "commit-graph",
- maintenance_task_commit_graph,
- should_write_commit_graph,
+ .name = "commit-graph",
+ .background = maintenance_task_commit_graph,
+ .auto_condition = should_write_commit_graph,
},
[TASK_PACK_REFS] = {
- "pack-refs",
- maintenance_task_pack_refs,
- pack_refs_condition,
+ .name = "pack-refs",
+ .foreground = maintenance_task_pack_refs,
+ .auto_condition = pack_refs_condition,
},
[TASK_REFLOG_EXPIRE] = {
- "reflog-expire",
- maintenance_task_reflog_expire,
- reflog_expire_condition,
+ .name = "reflog-expire",
+ .foreground = maintenance_task_reflog_expire,
+ .auto_condition = reflog_expire_condition,
},
[TASK_WORKTREE_PRUNE] = {
- "worktree-prune",
- maintenance_task_worktree_prune,
- worktree_prune_condition,
+ .name = "worktree-prune",
+ .background = maintenance_task_worktree_prune,
+ .auto_condition = worktree_prune_condition,
},
[TASK_RERERE_GC] = {
- "rerere-gc",
- maintenance_task_rerere_gc,
- rerere_gc_condition,
+ .name = "rerere-gc",
+ .background = maintenance_task_rerere_gc,
+ .auto_condition = rerere_gc_condition,
},
};
-static int compare_tasks_by_selection(const void *a_, const void *b_)
+enum task_phase {
+ TASK_PHASE_FOREGROUND,
+ TASK_PHASE_BACKGROUND,
+};
+
+static int maybe_run_task(const struct maintenance_task *task,
+ struct repository *repo,
+ struct maintenance_run_opts *opts,
+ struct gc_config *cfg,
+ enum task_phase phase)
{
- const struct maintenance_task *a = a_;
- const struct maintenance_task *b = b_;
+ int foreground = (phase == TASK_PHASE_FOREGROUND);
+ maintenance_task_fn fn = foreground ? task->foreground : task->background;
+ const char *region = foreground ? "maintenance foreground" : "maintenance";
+ int ret = 0;
- return b->selected_order - a->selected_order;
+ if (!fn)
+ return 0;
+ if (opts->auto_flag &&
+ (!task->auto_condition || !task->auto_condition(cfg)))
+ return 0;
+
+ trace2_region_enter(region, task->name, repo);
+ if (fn(opts, cfg)) {
+ error(_("task '%s' failed"), task->name);
+ ret = 1;
+ }
+ trace2_region_leave(region, task->name, repo);
+
+ return ret;
}
static int maintenance_run_tasks(struct maintenance_run_opts *opts,
struct gc_config *cfg)
{
- int i, found_selected = 0;
int result = 0;
struct lock_file lk;
struct repository *r = the_repository;
@@ -1638,6 +1679,11 @@ static int maintenance_run_tasks(struct maintenance_run_opts *opts,
}
free(lock_path);
+ for (size_t i = 0; i < opts->tasks_nr; i++)
+ if (maybe_run_task(&tasks[opts->tasks[i]], r, opts, cfg,
+ TASK_PHASE_FOREGROUND))
+ result = 1;
+
/* Failure to daemonize is ok, we'll continue in foreground. */
if (opts->detach > 0) {
trace2_region_enter("maintenance", "detach", the_repository);
@@ -1645,120 +1691,138 @@ static int maintenance_run_tasks(struct maintenance_run_opts *opts,
trace2_region_leave("maintenance", "detach", the_repository);
}
- for (i = 0; !found_selected && i < TASK__COUNT; i++)
- found_selected = tasks[i].selected_order >= 0;
-
- if (found_selected)
- QSORT(tasks, TASK__COUNT, compare_tasks_by_selection);
-
- for (i = 0; i < TASK__COUNT; i++) {
- if (found_selected && tasks[i].selected_order < 0)
- continue;
-
- if (!found_selected && !tasks[i].enabled)
- continue;
-
- if (opts->auto_flag &&
- (!tasks[i].auto_condition ||
- !tasks[i].auto_condition(cfg)))
- continue;
-
- if (opts->schedule && tasks[i].schedule < opts->schedule)
- continue;
-
- trace2_region_enter("maintenance", tasks[i].name, r);
- if (tasks[i].fn(opts, cfg)) {
- error(_("task '%s' failed"), tasks[i].name);
+ for (size_t i = 0; i < opts->tasks_nr; i++)
+ if (maybe_run_task(&tasks[opts->tasks[i]], r, opts, cfg,
+ TASK_PHASE_BACKGROUND))
result = 1;
- }
- trace2_region_leave("maintenance", tasks[i].name, r);
- }
rollback_lock_file(&lk);
return result;
}
-static void initialize_maintenance_strategy(void)
+struct maintenance_strategy {
+ struct {
+ int enabled;
+ enum schedule_priority schedule;
+ } tasks[TASK__COUNT];
+};
+
+static const struct maintenance_strategy none_strategy = { 0 };
+static const struct maintenance_strategy default_strategy = {
+ .tasks = {
+ [TASK_GC].enabled = 1,
+ },
+};
+static const struct maintenance_strategy incremental_strategy = {
+ .tasks = {
+ [TASK_COMMIT_GRAPH].enabled = 1,
+ [TASK_COMMIT_GRAPH].schedule = SCHEDULE_HOURLY,
+ [TASK_PREFETCH].enabled = 1,
+ [TASK_PREFETCH].schedule = SCHEDULE_HOURLY,
+ [TASK_INCREMENTAL_REPACK].enabled = 1,
+ [TASK_INCREMENTAL_REPACK].schedule = SCHEDULE_DAILY,
+ [TASK_LOOSE_OBJECTS].enabled = 1,
+ [TASK_LOOSE_OBJECTS].schedule = SCHEDULE_DAILY,
+ [TASK_PACK_REFS].enabled = 1,
+ [TASK_PACK_REFS].schedule = SCHEDULE_WEEKLY,
+ },
+};
+
+static void initialize_task_config(struct maintenance_run_opts *opts,
+ const struct string_list *selected_tasks)
{
+ struct strbuf config_name = STRBUF_INIT;
+ struct maintenance_strategy strategy;
const char *config_str;
- if (git_config_get_string_tmp("maintenance.strategy", &config_str))
- return;
+ /*
+ * In case the user has asked us to run tasks explicitly we only use
+ * those specified tasks. Specifically, we do _not_ want to consult the
+ * config or maintenance strategy.
+ */
+ if (selected_tasks->nr) {
+ for (size_t i = 0; i < selected_tasks->nr; i++) {
+ enum maintenance_task_label label = (intptr_t)selected_tasks->items[i].util;;
+ ALLOC_GROW(opts->tasks, opts->tasks_nr + 1, opts->tasks_alloc);
+ opts->tasks[opts->tasks_nr++] = label;
+ }
- if (!strcasecmp(config_str, "incremental")) {
- tasks[TASK_GC].schedule = SCHEDULE_NONE;
- tasks[TASK_COMMIT_GRAPH].enabled = 1;
- tasks[TASK_COMMIT_GRAPH].schedule = SCHEDULE_HOURLY;
- tasks[TASK_PREFETCH].enabled = 1;
- tasks[TASK_PREFETCH].schedule = SCHEDULE_HOURLY;
- tasks[TASK_INCREMENTAL_REPACK].enabled = 1;
- tasks[TASK_INCREMENTAL_REPACK].schedule = SCHEDULE_DAILY;
- tasks[TASK_LOOSE_OBJECTS].enabled = 1;
- tasks[TASK_LOOSE_OBJECTS].schedule = SCHEDULE_DAILY;
- tasks[TASK_PACK_REFS].enabled = 1;
- tasks[TASK_PACK_REFS].schedule = SCHEDULE_WEEKLY;
+ return;
}
-}
-static void initialize_task_config(int schedule)
-{
- int i;
- struct strbuf config_name = STRBUF_INIT;
+ /*
+ * Otherwise, the strategy depends on whether we run as part of a
+ * scheduled job or not:
+ *
+ * - Scheduled maintenance does not perform any housekeeping by
+ * default, but requires the user to pick a maintenance strategy.
+ *
+ * - Unscheduled maintenance uses our default strategy.
+ *
+ * Both of these are affected by the gitconfig though, which may
+ * override specific aspects of our strategy.
+ */
+ if (opts->schedule) {
+ strategy = none_strategy;
- if (schedule)
- initialize_maintenance_strategy();
+ if (!git_config_get_string_tmp("maintenance.strategy", &config_str)) {
+ if (!strcasecmp(config_str, "incremental"))
+ strategy = incremental_strategy;
+ }
+ } else {
+ strategy = default_strategy;
+ }
- for (i = 0; i < TASK__COUNT; i++) {
+ for (size_t i = 0; i < TASK__COUNT; i++) {
int config_value;
- char *config_str;
strbuf_reset(&config_name);
strbuf_addf(&config_name, "maintenance.%s.enabled",
tasks[i].name);
-
if (!git_config_get_bool(config_name.buf, &config_value))
- tasks[i].enabled = config_value;
-
- strbuf_reset(&config_name);
- strbuf_addf(&config_name, "maintenance.%s.schedule",
- tasks[i].name);
+ strategy.tasks[i].enabled = config_value;
+ if (!strategy.tasks[i].enabled)
+ continue;
- if (!git_config_get_string(config_name.buf, &config_str)) {
- tasks[i].schedule = parse_schedule(config_str);
- free(config_str);
+ if (opts->schedule) {
+ strbuf_reset(&config_name);
+ strbuf_addf(&config_name, "maintenance.%s.schedule",
+ tasks[i].name);
+ if (!git_config_get_string_tmp(config_name.buf, &config_str))
+ strategy.tasks[i].schedule = parse_schedule(config_str);
+ if (strategy.tasks[i].schedule < opts->schedule)
+ continue;
}
+
+ ALLOC_GROW(opts->tasks, opts->tasks_nr + 1, opts->tasks_alloc);
+ opts->tasks[opts->tasks_nr++] = i;
}
strbuf_release(&config_name);
}
-static int task_option_parse(const struct option *opt UNUSED,
+static int task_option_parse(const struct option *opt,
const char *arg, int unset)
{
- int i, num_selected = 0;
- struct maintenance_task *task = NULL;
+ struct string_list *selected_tasks = opt->value;
+ size_t i;
BUG_ON_OPT_NEG(unset);
- for (i = 0; i < TASK__COUNT; i++) {
- if (tasks[i].selected_order >= 0)
- num_selected++;
- if (!strcasecmp(tasks[i].name, arg)) {
- task = &tasks[i];
- }
- }
-
- if (!task) {
+ for (i = 0; i < TASK__COUNT; i++)
+ if (!strcasecmp(tasks[i].name, arg))
+ break;
+ if (i >= TASK__COUNT) {
error(_("'%s' is not a valid task"), arg);
return 1;
}
- if (task->selected_order >= 0) {
+ if (unsorted_string_list_has_string(selected_tasks, arg)) {
error(_("task '%s' cannot be selected multiple times"), arg);
return 1;
}
- task->selected_order = num_selected + 1;
+ string_list_append(selected_tasks, arg)->util = (void *)(intptr_t)i;
return 0;
}
@@ -1766,8 +1830,8 @@ static int task_option_parse(const struct option *opt UNUSED,
static int maintenance_run(int argc, const char **argv, const char *prefix,
struct repository *repo UNUSED)
{
- int i;
struct maintenance_run_opts opts = MAINTENANCE_RUN_OPTS_INIT;
+ struct string_list selected_tasks = STRING_LIST_INIT_DUP;
struct gc_config cfg = GC_CONFIG_INIT;
struct option builtin_maintenance_run_options[] = {
OPT_BOOL(0, "auto", &opts.auto_flag,
@@ -1779,7 +1843,7 @@ static int maintenance_run(int argc, const char **argv, const char *prefix,
maintenance_opt_schedule),
OPT_BOOL(0, "quiet", &opts.quiet,
N_("do not report progress or other information over stderr")),
- OPT_CALLBACK_F(0, "task", NULL, N_("task"),
+ OPT_CALLBACK_F(0, "task", &selected_tasks, N_("task"),
N_("run a specific task"),
PARSE_OPT_NONEG, task_option_parse),
OPT_END()
@@ -1788,25 +1852,27 @@ static int maintenance_run(int argc, const char **argv, const char *prefix,
opts.quiet = !isatty(2);
- for (i = 0; i < TASK__COUNT; i++)
- tasks[i].selected_order = -1;
-
argc = parse_options(argc, argv, prefix,
builtin_maintenance_run_options,
builtin_maintenance_run_usage,
PARSE_OPT_STOP_AT_NON_OPTION);
- if (opts.auto_flag && opts.schedule)
- die(_("use at most one of --auto and --schedule=<frequency>"));
+ die_for_incompatible_opt2(opts.auto_flag, "--auto",
+ opts.schedule, "--schedule=");
+ die_for_incompatible_opt2(selected_tasks.nr, "--task=",
+ opts.schedule, "--schedule=");
gc_config(&cfg);
- initialize_task_config(opts.schedule);
+ initialize_task_config(&opts, &selected_tasks);
if (argc != 0)
usage_with_options(builtin_maintenance_run_usage,
builtin_maintenance_run_options);
ret = maintenance_run_tasks(&opts, &cfg);
+
+ string_list_clear(&selected_tasks, 0);
+ maintenance_run_opts_release(&opts);
gc_config_release(&cfg);
return ret;
}
diff --git a/builtin/log.c b/builtin/log.c
index b450cd3bde..49cec1176a 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -113,6 +113,15 @@ struct log_config {
int fmt_patch_name_max;
char *fmt_pretty;
char *default_date_mode;
+
+#ifndef WITH_BREAKING_CHANGES
+ /*
+ * Note: git_log_config() does not touch this member and that
+ * is very deliberate. This member is only to be used to
+ * resurrect whatchanged that is deprecated.
+ */
+ int i_still_use_this;
+#endif
};
static void log_config_init(struct log_config *cfg)
@@ -267,6 +276,10 @@ static void cmd_log_init_finish(int argc, const char **argv, const char *prefix,
OPT__QUIET(&quiet, N_("suppress diff output")),
OPT_BOOL(0, "source", &source, N_("show source")),
OPT_BOOL(0, "use-mailmap", &mailmap, N_("use mail map file")),
+#ifndef WITH_BREAKING_CHANGES
+ OPT_HIDDEN_BOOL(0, "i-still-use-this", &cfg->i_still_use_this,
+ "<use this deprecated command>"),
+#endif
OPT_ALIAS(0, "mailmap", "use-mailmap"),
OPT_CALLBACK_F(0, "clear-decorations", NULL, NULL,
N_("clear all previously-defined decoration filters"),
@@ -633,6 +646,7 @@ static int git_log_config(const char *var, const char *value,
return git_diff_ui_config(var, value, ctx, cb);
}
+#ifndef WITH_BREAKING_CHANGES
int cmd_whatchanged(int argc,
const char **argv,
const char *prefix,
@@ -656,6 +670,10 @@ int cmd_whatchanged(int argc,
opt.def = "HEAD";
opt.revarg_opt = REVARG_COMMITTISH;
cmd_log_init(argc, argv, prefix, &rev, &opt, &cfg);
+
+ if (!cfg.i_still_use_this)
+ you_still_use_that("git whatchanged");
+
if (!rev.diffopt.output_format)
rev.diffopt.output_format = DIFF_FORMAT_RAW;
@@ -665,6 +683,7 @@ int cmd_whatchanged(int argc,
log_config_release(&cfg);
return ret;
}
+#endif
static void show_tagger(const char *buf, struct rev_info *rev)
{
diff --git a/builtin/merge.c b/builtin/merge.c
index ce90e52fe4..18b22c0a26 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -69,7 +69,10 @@ static const char * const builtin_merge_usage[] = {
NULL
};
-static int show_diffstat = 1, shortlog_len = -1, squash;
+#define MERGE_SHOW_DIFFSTAT 1
+#define MERGE_SHOW_COMPACTSUMMARY 2
+
+static int show_diffstat = MERGE_SHOW_DIFFSTAT, shortlog_len = -1, squash;
static int option_commit = -1;
static int option_edit = -1;
static int allow_trivial = 1, have_message, verify_signatures;
@@ -243,12 +246,28 @@ static int option_parse_strategy(const struct option *opt UNUSED,
return 0;
}
+static int option_parse_compact_summary(const struct option *opt,
+ const char *name UNUSED, int unset)
+{
+ int *setting = opt->value;
+
+ if (unset)
+ *setting = 0;
+ else
+ *setting = MERGE_SHOW_COMPACTSUMMARY;
+ return 0;
+}
+
static struct option builtin_merge_options[] = {
OPT_SET_INT('n', NULL, &show_diffstat,
N_("do not show a diffstat at the end of the merge"), 0),
OPT_BOOL(0, "stat", &show_diffstat,
N_("show a diffstat at the end of the merge")),
OPT_BOOL(0, "summary", &show_diffstat, N_("(synonym to --stat)")),
+ OPT_CALLBACK_F(0, "compact-summary", &show_diffstat, N_("compact-summary"),
+ N_("show a compact-summary at the end of the merge"),
+ PARSE_OPT_NOARG,
+ option_parse_compact_summary),
{
.type = OPTION_INTEGER,
.long_name = "log",
@@ -494,8 +513,19 @@ static void finish(struct commit *head_commit,
struct diff_options opts;
repo_diff_setup(the_repository, &opts);
init_diffstat_widths(&opts);
- opts.output_format |=
- DIFF_FORMAT_SUMMARY | DIFF_FORMAT_DIFFSTAT;
+
+ switch (show_diffstat) {
+ case MERGE_SHOW_DIFFSTAT: /* 1 */
+ opts.output_format |=
+ DIFF_FORMAT_SUMMARY | DIFF_FORMAT_DIFFSTAT;
+ break;
+ case MERGE_SHOW_COMPACTSUMMARY: /* 2 */
+ opts.output_format |= DIFF_FORMAT_DIFFSTAT;
+ opts.flags.stat_with_summary = 1;
+ break;
+ default:
+ break;
+ }
opts.detect_rename = DIFF_DETECT_RENAME;
diff_setup_done(&opts);
diff_tree_oid(head, new_head, "", &opts);
@@ -643,7 +673,35 @@ static int git_merge_config(const char *k, const char *v,
}
if (!strcmp(k, "merge.diffstat") || !strcmp(k, "merge.stat")) {
- show_diffstat = git_config_bool(k, v);
+ int val = git_parse_maybe_bool_text(v);
+ switch (val) {
+ case 0:
+ show_diffstat = 0;
+ break;
+ case 1:
+ show_diffstat = MERGE_SHOW_DIFFSTAT;
+ break;
+ default:
+ if (!strcmp(v, "compact"))
+ show_diffstat = MERGE_SHOW_COMPACTSUMMARY;
+ /*
+ * We do not need to have an explicit
+ *
+ * else if (!strcmp(v, "diffstat"))
+ * show_diffstat = MERGE_SHOW_DIFFSTAT;
+ *
+ * here, because the catch-all uses the
+ * diffstat style anyway.
+ */
+ else
+ /*
+ * A setting from a future? It is not an
+ * error grave enough to fail the command.
+ * proceed using the default one.
+ */
+ show_diffstat = MERGE_SHOW_DIFFSTAT;
+ break;
+ }
} else if (!strcmp(k, "merge.verifysignatures")) {
verify_signatures = git_config_bool(k, v);
} else if (!strcmp(k, "pull.twohead")) {
diff --git a/builtin/mktag.c b/builtin/mktag.c
index 7ac11c46d5..1b1dc0263e 100644
--- a/builtin/mktag.c
+++ b/builtin/mktag.c
@@ -41,7 +41,7 @@ static int mktag_fsck_error_func(struct fsck_options *o UNUSED,
fprintf_ln(stderr, _("error: tag input does not pass fsck: %s"), message);
return 1;
default:
- BUG(_("%d (FSCK_IGNORE?) should never trigger this callback"),
+ BUG("%d (FSCK_IGNORE?) should never trigger this callback",
msg_type);
}
}
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index 8b33edc2ff..67941c8a60 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -41,6 +41,10 @@
#include "promisor-remote.h"
#include "pack-mtimes.h"
#include "parse-options.h"
+#include "blob.h"
+#include "tree.h"
+#include "path-walk.h"
+#include "trace2.h"
/*
* Objects we are going to pack are collected in the `to_pack` structure.
@@ -184,8 +188,14 @@ static inline void oe_set_delta_size(struct packing_data *pack,
#define SET_DELTA_SIBLING(obj, val) oe_set_delta_sibling(&to_pack, obj, val)
static const char *const pack_usage[] = {
- N_("git pack-objects --stdout [<options>] [< <ref-list> | < <object-list>]"),
- N_("git pack-objects [<options>] <base-name> [< <ref-list> | < <object-list>]"),
+ N_("git pack-objects [-q | --progress | --all-progress] [--all-progress-implied]\n"
+ " [--no-reuse-delta] [--delta-base-offset] [--non-empty]\n"
+ " [--local] [--incremental] [--window=<n>] [--depth=<n>]\n"
+ " [--revs [--unpacked | --all]] [--keep-pack=<pack-name>]\n"
+ " [--cruft] [--cruft-expiration=<time>]\n"
+ " [--stdout [--filter=<filter-spec>] | <base-name>]\n"
+ " [--shallow] [--keep-true-parents] [--[no-]sparse]\n"
+ " [--name-hash-version=<n>] [--path-walk] < <object-list>"),
NULL
};
@@ -200,6 +210,7 @@ static int keep_unreachable, unpack_unreachable, include_tag;
static timestamp_t unpack_unreachable_expiration;
static int pack_loose_unreachable;
static int cruft;
+static int shallow = 0;
static timestamp_t cruft_expiration;
static int local;
static int have_non_local_packs;
@@ -218,6 +229,7 @@ static int delta_search_threads;
static int pack_to_stdout;
static int sparse;
static int thin;
+static int path_walk = -1;
static int num_preferred_base;
static struct progress *progress_state;
@@ -3041,6 +3053,7 @@ static void find_deltas(struct object_entry **list, unsigned *list_size,
struct thread_params {
pthread_t thread;
struct object_entry **list;
+ struct packing_region *regions;
unsigned list_size;
unsigned remaining;
int window;
@@ -3283,6 +3296,242 @@ static int add_ref_tag(const char *tag UNUSED, const char *referent UNUSED, cons
return 0;
}
+static int should_attempt_deltas(struct object_entry *entry)
+{
+ if (DELTA(entry))
+ /* This happens if we decided to reuse existing
+ * delta from a pack. "reuse_delta &&" is implied.
+ */
+ return 0;
+
+ if (!entry->type_valid ||
+ oe_size_less_than(&to_pack, entry, 50))
+ return 0;
+
+ if (entry->no_try_delta)
+ return 0;
+
+ if (!entry->preferred_base) {
+ if (oe_type(entry) < 0)
+ die(_("unable to get type of object %s"),
+ oid_to_hex(&entry->idx.oid));
+ } else if (oe_type(entry) < 0) {
+ /*
+ * This object is not found, but we
+ * don't have to include it anyway.
+ */
+ return 0;
+ }
+
+ return 1;
+}
+
+static void find_deltas_for_region(struct object_entry *list,
+ struct packing_region *region,
+ unsigned int *processed)
+{
+ struct object_entry **delta_list;
+ unsigned int delta_list_nr = 0;
+
+ ALLOC_ARRAY(delta_list, region->nr);
+ for (size_t i = 0; i < region->nr; i++) {
+ struct object_entry *entry = list + region->start + i;
+ if (should_attempt_deltas(entry))
+ delta_list[delta_list_nr++] = entry;
+ }
+
+ QSORT(delta_list, delta_list_nr, type_size_sort);
+ find_deltas(delta_list, &delta_list_nr, window, depth, processed);
+ free(delta_list);
+}
+
+static void find_deltas_by_region(struct object_entry *list,
+ struct packing_region *regions,
+ size_t start, size_t nr)
+{
+ unsigned int processed = 0;
+ size_t progress_nr;
+
+ if (!nr)
+ return;
+
+ progress_nr = regions[nr - 1].start + regions[nr - 1].nr;
+
+ if (progress)
+ progress_state = start_progress(the_repository,
+ _("Compressing objects by path"),
+ progress_nr);
+
+ while (nr--)
+ find_deltas_for_region(list,
+ &regions[start++],
+ &processed);
+
+ display_progress(progress_state, progress_nr);
+ stop_progress(&progress_state);
+}
+
+static void *threaded_find_deltas_by_path(void *arg)
+{
+ struct thread_params *me = arg;
+
+ progress_lock();
+ while (me->remaining) {
+ while (me->remaining) {
+ progress_unlock();
+ find_deltas_for_region(to_pack.objects,
+ me->regions,
+ me->processed);
+ progress_lock();
+ me->remaining--;
+ me->regions++;
+ }
+
+ me->working = 0;
+ pthread_cond_signal(&progress_cond);
+ progress_unlock();
+
+ /*
+ * We must not set ->data_ready before we wait on the
+ * condition because the main thread may have set it to 1
+ * before we get here. In order to be sure that new
+ * work is available if we see 1 in ->data_ready, it
+ * was initialized to 0 before this thread was spawned
+ * and we reset it to 0 right away.
+ */
+ pthread_mutex_lock(&me->mutex);
+ while (!me->data_ready)
+ pthread_cond_wait(&me->cond, &me->mutex);
+ me->data_ready = 0;
+ pthread_mutex_unlock(&me->mutex);
+
+ progress_lock();
+ }
+ progress_unlock();
+ /* leave ->working 1 so that this doesn't get more work assigned */
+ return NULL;
+}
+
+static void ll_find_deltas_by_region(struct object_entry *list,
+ struct packing_region *regions,
+ uint32_t start, uint32_t nr)
+{
+ struct thread_params *p;
+ int i, ret, active_threads = 0;
+ unsigned int processed = 0;
+ uint32_t progress_nr;
+ init_threaded_search();
+
+ if (!nr)
+ return;
+
+ progress_nr = regions[nr - 1].start + regions[nr - 1].nr;
+ if (delta_search_threads <= 1) {
+ find_deltas_by_region(list, regions, start, nr);
+ cleanup_threaded_search();
+ return;
+ }
+
+ if (progress > pack_to_stdout)
+ fprintf_ln(stderr,
+ Q_("Path-based delta compression using up to %d thread",
+ "Path-based delta compression using up to %d threads",
+ delta_search_threads),
+ delta_search_threads);
+ CALLOC_ARRAY(p, delta_search_threads);
+
+ if (progress)
+ progress_state = start_progress(the_repository,
+ _("Compressing objects by path"),
+ progress_nr);
+ /* Partition the work amongst work threads. */
+ for (i = 0; i < delta_search_threads; i++) {
+ unsigned sub_size = nr / (delta_search_threads - i);
+
+ p[i].window = window;
+ p[i].depth = depth;
+ p[i].processed = &processed;
+ p[i].working = 1;
+ p[i].data_ready = 0;
+
+ p[i].regions = regions;
+ p[i].list_size = sub_size;
+ p[i].remaining = sub_size;
+
+ regions += sub_size;
+ nr -= sub_size;
+ }
+
+ /* Start work threads. */
+ for (i = 0; i < delta_search_threads; i++) {
+ if (!p[i].list_size)
+ continue;
+ pthread_mutex_init(&p[i].mutex, NULL);
+ pthread_cond_init(&p[i].cond, NULL);
+ ret = pthread_create(&p[i].thread, NULL,
+ threaded_find_deltas_by_path, &p[i]);
+ if (ret)
+ die(_("unable to create thread: %s"), strerror(ret));
+ active_threads++;
+ }
+
+ /*
+ * Now let's wait for work completion. Each time a thread is done
+ * with its work, we steal half of the remaining work from the
+ * thread with the largest number of unprocessed objects and give
+ * it to that newly idle thread. This ensure good load balancing
+ * until the remaining object list segments are simply too short
+ * to be worth splitting anymore.
+ */
+ while (active_threads) {
+ struct thread_params *target = NULL;
+ struct thread_params *victim = NULL;
+ unsigned sub_size = 0;
+
+ progress_lock();
+ for (;;) {
+ for (i = 0; !target && i < delta_search_threads; i++)
+ if (!p[i].working)
+ target = &p[i];
+ if (target)
+ break;
+ pthread_cond_wait(&progress_cond, &progress_mutex);
+ }
+
+ for (i = 0; i < delta_search_threads; i++)
+ if (p[i].remaining > 2*window &&
+ (!victim || victim->remaining < p[i].remaining))
+ victim = &p[i];
+ if (victim) {
+ sub_size = victim->remaining / 2;
+ target->regions = victim->regions + victim->remaining - sub_size;
+ victim->list_size -= sub_size;
+ victim->remaining -= sub_size;
+ }
+ target->list_size = sub_size;
+ target->remaining = sub_size;
+ target->working = 1;
+ progress_unlock();
+
+ pthread_mutex_lock(&target->mutex);
+ target->data_ready = 1;
+ pthread_cond_signal(&target->cond);
+ pthread_mutex_unlock(&target->mutex);
+
+ if (!sub_size) {
+ pthread_join(target->thread, NULL);
+ pthread_cond_destroy(&target->cond);
+ pthread_mutex_destroy(&target->mutex);
+ active_threads--;
+ }
+ }
+ cleanup_threaded_search();
+ free(p);
+
+ display_progress(progress_state, progress_nr);
+ stop_progress(&progress_state);
+}
+
static void prepare_pack(int window, int depth)
{
struct object_entry **delta_list;
@@ -3307,39 +3556,21 @@ static void prepare_pack(int window, int depth)
if (!to_pack.nr_objects || !window || !depth)
return;
+ if (path_walk)
+ ll_find_deltas_by_region(to_pack.objects, to_pack.regions,
+ 0, to_pack.nr_regions);
+
ALLOC_ARRAY(delta_list, to_pack.nr_objects);
nr_deltas = n = 0;
for (i = 0; i < to_pack.nr_objects; i++) {
struct object_entry *entry = to_pack.objects + i;
- if (DELTA(entry))
- /* This happens if we decided to reuse existing
- * delta from a pack. "reuse_delta &&" is implied.
- */
- continue;
-
- if (!entry->type_valid ||
- oe_size_less_than(&to_pack, entry, 50))
- continue;
-
- if (entry->no_try_delta)
+ if (!should_attempt_deltas(entry))
continue;
- if (!entry->preferred_base) {
+ if (!entry->preferred_base)
nr_deltas++;
- if (oe_type(entry) < 0)
- die(_("unable to get type of object %s"),
- oid_to_hex(&entry->idx.oid));
- } else {
- if (oe_type(entry) < 0) {
- /*
- * This object is not found, but we
- * don't have to include it anyway.
- */
- continue;
- }
- }
delta_list[n++] = entry;
}
@@ -4272,6 +4503,93 @@ static void mark_bitmap_preferred_tips(void)
}
}
+static inline int is_oid_uninteresting(struct repository *repo,
+ struct object_id *oid)
+{
+ struct object *o = lookup_object(repo, oid);
+ return !o || (o->flags & UNINTERESTING);
+}
+
+static int add_objects_by_path(const char *path,
+ struct oid_array *oids,
+ enum object_type type,
+ void *data)
+{
+ size_t oe_start = to_pack.nr_objects;
+ size_t oe_end;
+ unsigned int *processed = data;
+
+ /*
+ * First, add all objects to the packing data, including the ones
+ * marked UNINTERESTING (translated to 'exclude') as they can be
+ * used as delta bases.
+ */
+ for (size_t i = 0; i < oids->nr; i++) {
+ int exclude;
+ struct object_info oi = OBJECT_INFO_INIT;
+ struct object_id *oid = &oids->oid[i];
+
+ /* Skip objects that do not exist locally. */
+ if ((exclude_promisor_objects || arg_missing_action != MA_ERROR) &&
+ oid_object_info_extended(the_repository, oid, &oi,
+ OBJECT_INFO_FOR_PREFETCH) < 0)
+ continue;
+
+ exclude = is_oid_uninteresting(the_repository, oid);
+
+ if (exclude && !thin)
+ continue;
+
+ add_object_entry(oid, type, path, exclude);
+ }
+
+ oe_end = to_pack.nr_objects;
+
+ /* We can skip delta calculations if it is a no-op. */
+ if (oe_end == oe_start || !window)
+ return 0;
+
+ ALLOC_GROW(to_pack.regions,
+ to_pack.nr_regions + 1,
+ to_pack.nr_regions_alloc);
+
+ to_pack.regions[to_pack.nr_regions].start = oe_start;
+ to_pack.regions[to_pack.nr_regions].nr = oe_end - oe_start;
+ to_pack.nr_regions++;
+
+ *processed += oids->nr;
+ display_progress(progress_state, *processed);
+
+ return 0;
+}
+
+static void get_object_list_path_walk(struct rev_info *revs)
+{
+ struct path_walk_info info = PATH_WALK_INFO_INIT;
+ unsigned int processed = 0;
+ int result;
+
+ info.revs = revs;
+ info.path_fn = add_objects_by_path;
+ info.path_fn_data = &processed;
+
+ /*
+ * Allow the --[no-]sparse option to be interesting here, if only
+ * for testing purposes. Paths with no interesting objects will not
+ * contribute to the resulting pack, but only create noisy preferred
+ * base objects.
+ */
+ info.prune_all_uninteresting = sparse;
+ info.edge_aggressive = shallow;
+
+ trace2_region_enter("pack-objects", "path-walk", revs->repo);
+ result = walk_objects_by_path(&info);
+ trace2_region_leave("pack-objects", "path-walk", revs->repo);
+
+ if (result)
+ die(_("failed to pack objects via path-walk"));
+}
+
static void get_object_list(struct rev_info *revs, int ac, const char **av)
{
struct setup_revision_opt s_r_opt = {
@@ -4327,15 +4645,19 @@ static void get_object_list(struct rev_info *revs, int ac, const char **av)
if (write_bitmap_index)
mark_bitmap_preferred_tips();
- if (prepare_revision_walk(revs))
- die(_("revision walk setup failed"));
- mark_edges_uninteresting(revs, show_edge, sparse);
-
if (!fn_show_object)
fn_show_object = show_object;
- traverse_commit_list(revs,
- show_commit, fn_show_object,
- NULL);
+
+ if (path_walk) {
+ get_object_list_path_walk(revs);
+ } else {
+ if (prepare_revision_walk(revs))
+ die(_("revision walk setup failed"));
+ mark_edges_uninteresting(revs, show_edge, sparse);
+ traverse_commit_list(revs,
+ show_commit, fn_show_object,
+ NULL);
+ }
if (unpack_unreachable_expiration) {
revs->ignore_missing_links = 1;
@@ -4464,7 +4786,6 @@ int cmd_pack_objects(int argc,
struct repository *repo UNUSED)
{
int use_internal_rev_list = 0;
- int shallow = 0;
int all_progress_implied = 0;
struct strvec rp = STRVEC_INIT;
int rev_list_unpacked = 0, rev_list_all = 0, rev_list_reflog = 0;
@@ -4545,6 +4866,8 @@ int cmd_pack_objects(int argc,
N_("use the sparse reachability algorithm")),
OPT_BOOL(0, "thin", &thin,
N_("create thin packs")),
+ OPT_BOOL(0, "path-walk", &path_walk,
+ N_("use the path-walk API to walk objects when possible")),
OPT_BOOL(0, "shallow", &shallow,
N_("create packs suitable for shallow fetches")),
OPT_BOOL(0, "honor-pack-keep", &ignore_packed_keep_on_disk,
@@ -4614,6 +4937,17 @@ int cmd_pack_objects(int argc,
if (pack_to_stdout != !base_name || argc)
usage_with_options(pack_usage, pack_objects_options);
+ if (path_walk < 0) {
+ if (use_bitmap_index > 0 ||
+ !use_internal_rev_list)
+ path_walk = 0;
+ else if (the_repository->gitdir &&
+ the_repository->settings.pack_use_path_walk)
+ path_walk = 1;
+ else
+ path_walk = git_env_bool("GIT_TEST_PACK_PATH_WALK", 0);
+ }
+
if (depth < 0)
depth = 0;
if (depth >= (1 << OE_DEPTH_BITS)) {
@@ -4630,7 +4964,28 @@ int cmd_pack_objects(int argc,
window = 0;
strvec_push(&rp, "pack-objects");
- if (thin) {
+
+ if (path_walk) {
+ const char *option = NULL;
+ if (filter_options.choice)
+ option = "--filter";
+ else if (use_delta_islands)
+ option = "--delta-islands";
+
+ if (option) {
+ warning(_("cannot use %s with %s"),
+ option, "--path-walk");
+ path_walk = 0;
+ }
+ }
+ if (path_walk) {
+ strvec_push(&rp, "--boundary");
+ /*
+ * We must disable the bitmaps because we are removing
+ * the --objects / --objects-edge[-aggressive] options.
+ */
+ use_bitmap_index = 0;
+ } else if (thin) {
use_internal_rev_list = 1;
strvec_push(&rp, shallow
? "--objects-edge-aggressive"
diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c
index 5d1fc78176..4138b52ccc 100644
--- a/builtin/pack-redundant.c
+++ b/builtin/pack-redundant.c
@@ -625,14 +625,8 @@ int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, s
break;
}
- if (!i_still_use_this) {
- fputs(_("'git pack-redundant' is nominated for removal.\n"
- "If you still use this command, please add an extra\n"
- "option, '--i-still-use-this', on the command line\n"
- "and let us know you still use it by sending an e-mail\n"
- "to <git@vger.kernel.org>. Thanks.\n"), stderr);
- die(_("refusing to run without --i-still-use-this"));
- }
+ if (!i_still_use_this)
+ you_still_use_that("git pack-redundant");
if (load_all_packs)
load_all();
diff --git a/builtin/pull.c b/builtin/pull.c
index a1ebc6ad33..c593f324fe 100644
--- a/builtin/pull.c
+++ b/builtin/pull.c
@@ -143,6 +143,9 @@ static struct option pull_options[] = {
OPT_PASSTHRU(0, "summary", &opt_diffstat, NULL,
N_("(synonym to --stat)"),
PARSE_OPT_NOARG | PARSE_OPT_HIDDEN),
+ OPT_PASSTHRU(0, "compact-summary", &opt_diffstat, NULL,
+ N_("show a compact-summary at the end of the merge"),
+ PARSE_OPT_NOARG),
OPT_PASSTHRU(0, "log", &opt_log, N_("n"),
N_("add (at most <n>) entries from shortlog to merge commit message"),
PARSE_OPT_OPTARG),
@@ -487,7 +490,7 @@ static void NORETURN die_no_merge_candidates(const char *repo, const char **refs
} else
fprintf_ln(stderr, _("Your configuration specifies to merge with the ref '%s'\n"
"from the remote, but no such ref was fetched."),
- *curr_branch->merge_name);
+ curr_branch->merge[0]->src);
exit(1);
}
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index a317d6c278..1809539201 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -1846,36 +1846,102 @@ static void BUG_if_skipped_connectivity_check(struct command *commands,
BUG_if_bug("connectivity check skipped???");
}
+static void ref_transaction_rejection_handler(const char *refname,
+ const struct object_id *old_oid UNUSED,
+ const struct object_id *new_oid UNUSED,
+ const char *old_target UNUSED,
+ const char *new_target UNUSED,
+ enum ref_transaction_error err,
+ void *cb_data)
+{
+ struct strmap *failed_refs = cb_data;
+
+ strmap_put(failed_refs, refname, (char *)ref_transaction_error_msg(err));
+}
+
static void execute_commands_non_atomic(struct command *commands,
struct shallow_info *si)
{
struct command *cmd;
struct strbuf err = STRBUF_INIT;
+ const char *reported_error = NULL;
+ struct strmap failed_refs = STRMAP_INIT;
- for (cmd = commands; cmd; cmd = cmd->next) {
- if (!should_process_cmd(cmd) || cmd->run_proc_receive)
- continue;
+ /*
+ * Reference updates, where D/F conflicts shouldn't arise due to
+ * one reference being deleted, while the other being created
+ * are treated as conflicts in batched updates. This is because
+ * we don't do conflict resolution inside a transaction. To
+ * mitigate this, delete references in a separate batch.
+ *
+ * NEEDSWORK: Add conflict resolution between deletion and creation
+ * of reference updates within a transaction. With that, we can
+ * combine the two phases.
+ */
+ enum processing_phase {
+ PHASE_DELETIONS,
+ PHASE_OTHERS
+ };
- transaction = ref_store_transaction_begin(get_main_ref_store(the_repository),
- 0, &err);
- if (!transaction) {
- rp_error("%s", err.buf);
- strbuf_reset(&err);
- cmd->error_string = "transaction failed to start";
- continue;
+ for (enum processing_phase phase = PHASE_DELETIONS; phase <= PHASE_OTHERS; phase++) {
+ for (cmd = commands; cmd; cmd = cmd->next) {
+ if (!should_process_cmd(cmd) || cmd->run_proc_receive)
+ continue;
+
+ if (phase == PHASE_DELETIONS && !is_null_oid(&cmd->new_oid))
+ continue;
+ else if (phase == PHASE_OTHERS && is_null_oid(&cmd->new_oid))
+ continue;
+
+ /*
+ * Lazily create a transaction only when we know there are
+ * updates to be added.
+ */
+ if (!transaction) {
+ transaction = ref_store_transaction_begin(get_main_ref_store(the_repository),
+ REF_TRANSACTION_ALLOW_FAILURE, &err);
+ if (!transaction) {
+ rp_error("%s", err.buf);
+ strbuf_reset(&err);
+ reported_error = "transaction failed to start";
+ goto failure;
+ }
+ }
+
+ cmd->error_string = update(cmd, si);
}
- cmd->error_string = update(cmd, si);
+ /* No transaction, so nothing to commit */
+ if (!transaction)
+ goto cleanup;
- if (!cmd->error_string
- && ref_transaction_commit(transaction, &err)) {
+ if (ref_transaction_commit(transaction, &err)) {
rp_error("%s", err.buf);
- strbuf_reset(&err);
- cmd->error_string = "failed to update ref";
+ reported_error = "failed to update refs";
+ goto failure;
}
+
+ ref_transaction_for_each_rejected_update(transaction,
+ ref_transaction_rejection_handler,
+ &failed_refs);
+
+ if (strmap_empty(&failed_refs))
+ goto cleanup;
+
+ failure:
+ for (cmd = commands; cmd; cmd = cmd->next) {
+ if (reported_error)
+ cmd->error_string = reported_error;
+ else if (strmap_contains(&failed_refs, cmd->ref_name))
+ cmd->error_string = strmap_get(&failed_refs, cmd->ref_name);
+ }
+
+ cleanup:
ref_transaction_free(transaction);
+ transaction = NULL;
+ strmap_clear(&failed_refs, 0);
+ strbuf_release(&err);
}
- strbuf_release(&err);
}
static void execute_commands_atomic(struct command *commands,
diff --git a/builtin/repack.c b/builtin/repack.c
index 59214dbdfd..5ddc6e7f95 100644
--- a/builtin/repack.c
+++ b/builtin/repack.c
@@ -43,7 +43,7 @@ static char *packdir, *packtmp_name, *packtmp;
static const char *const git_repack_usage[] = {
N_("git repack [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m]\n"
"[--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>]\n"
- "[--write-midx] [--name-hash-version=<n>]"),
+ "[--write-midx] [--name-hash-version=<n>] [--path-walk]"),
NULL
};
@@ -63,6 +63,7 @@ struct pack_objects_args {
int quiet;
int local;
int name_hash_version;
+ int path_walk;
struct list_objects_filter_options filter_options;
};
@@ -313,6 +314,8 @@ static void prepare_pack_objects(struct child_process *cmd,
strvec_pushf(&cmd->args, "--no-reuse-object");
if (args->name_hash_version)
strvec_pushf(&cmd->args, "--name-hash-version=%d", args->name_hash_version);
+ if (args->path_walk)
+ strvec_pushf(&cmd->args, "--path-walk");
if (args->local)
strvec_push(&cmd->args, "--local");
if (args->quiet)
@@ -1184,6 +1187,8 @@ int cmd_repack(int argc,
N_("pass --no-reuse-object to git-pack-objects")),
OPT_INTEGER(0, "name-hash-version", &po_args.name_hash_version,
N_("specify the name hash version to use for grouping similar objects by path")),
+ OPT_BOOL(0, "path-walk", &po_args.path_walk,
+ N_("pass --path-walk to git-pack-objects")),
OPT_NEGBIT('n', NULL, &run_update_server_info,
N_("do not run git-update-server-info"), 1),
OPT__QUIET(&po_args.quiet, N_("be quiet")),
diff --git a/builtin/replay.c b/builtin/replay.c
index 225cef0880..6172c8aacc 100644
--- a/builtin/replay.c
+++ b/builtin/replay.c
@@ -84,6 +84,7 @@ static struct commit *create_commit(struct repository *repo,
obj = parse_object(repo, &ret);
out:
+ repo_unuse_commit_buffer(the_repository, based_on, message);
free_commit_extra_headers(extra);
free_commit_list(parents);
strbuf_release(&msg);
diff --git a/builtin/send-pack.c b/builtin/send-pack.c
index c6e0e9d051..28b69d26b4 100644
--- a/builtin/send-pack.c
+++ b/builtin/send-pack.c
@@ -304,9 +304,10 @@ int cmd_send_pack(int argc,
flags |= MATCH_REFS_MIRROR;
/* match them up */
- if (match_push_refs(local_refs, &remote_refs, &rs, flags))
- return -1;
-
+ if (match_push_refs(local_refs, &remote_refs, &rs, flags)) {
+ ret = -1;
+ goto cleanup;
+ }
if (!is_empty_cas(&cas))
apply_push_cas(&cas, remote, remote_refs);
@@ -339,10 +340,12 @@ int cmd_send_pack(int argc,
/* stable plumbing output; do not modify or localize */
fprintf(stderr, "Everything up-to-date\n");
+cleanup:
string_list_clear(&push_options, 0);
free_refs(remote_refs);
free_refs(local_refs);
refspec_clear(&rs);
+ oid_array_clear(&extra_have);
oid_array_clear(&shallow);
clear_cas_option(&cas);
return ret;
diff --git a/builtin/shortlog.c b/builtin/shortlog.c
index 30075b67be..fe15e11497 100644
--- a/builtin/shortlog.c
+++ b/builtin/shortlog.c
@@ -187,7 +187,7 @@ static void insert_records_from_trailers(struct shortlog *log,
ctx->output_encoding);
body = strstr(commit_buffer, "\n\n");
if (!body)
- return;
+ goto out;
trailer_iterator_init(&iter, body);
while (trailer_iterator_advance(&iter)) {
@@ -206,6 +206,7 @@ static void insert_records_from_trailers(struct shortlog *log,
}
trailer_iterator_release(&iter);
+out:
strbuf_release(&ident);
repo_unuse_commit_buffer(the_repository, commit, commit_buffer);
}
diff --git a/builtin/stash.c b/builtin/stash.c
index cfbd92852a..e2f95cc2eb 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -28,7 +28,10 @@
#include "log-tree.h"
#include "diffcore.h"
#include "reflog.h"
+#include "reflog-walk.h"
#include "add-interactive.h"
+#include "oid-array.h"
+#include "commit.h"
#define INCLUDE_ALL_FILES 2
@@ -56,6 +59,10 @@
" [-u | --include-untracked] [-a | --all] [<message>]")
#define BUILTIN_STASH_CREATE_USAGE \
N_("git stash create [<message>]")
+#define BUILTIN_STASH_EXPORT_USAGE \
+ N_("git stash export (--print | --to-ref <ref>) [<stash>...]")
+#define BUILTIN_STASH_IMPORT_USAGE \
+ N_("git stash import <commit>")
#define BUILTIN_STASH_CLEAR_USAGE \
"git stash clear"
@@ -71,6 +78,8 @@ static const char * const git_stash_usage[] = {
BUILTIN_STASH_CLEAR_USAGE,
BUILTIN_STASH_CREATE_USAGE,
BUILTIN_STASH_STORE_USAGE,
+ BUILTIN_STASH_EXPORT_USAGE,
+ BUILTIN_STASH_IMPORT_USAGE,
NULL
};
@@ -124,6 +133,16 @@ static const char * const git_stash_save_usage[] = {
NULL
};
+static const char * const git_stash_export_usage[] = {
+ BUILTIN_STASH_EXPORT_USAGE,
+ NULL
+};
+
+static const char * const git_stash_import_usage[] = {
+ BUILTIN_STASH_IMPORT_USAGE,
+ NULL
+};
+
static const char ref_stash[] = "refs/stash";
static struct strbuf stash_index_path = STRBUF_INIT;
@@ -132,6 +151,7 @@ static struct strbuf stash_index_path = STRBUF_INIT;
* b_commit is set to the base commit
* i_commit is set to the commit containing the index tree
* u_commit is set to the commit containing the untracked files tree
+ * c_commit is set to the first parent (chain commit) when importing and is otherwise unset
* w_tree is set to the working tree
* b_tree is set to the base tree
* i_tree is set to the index tree
@@ -142,6 +162,7 @@ struct stash_info {
struct object_id b_commit;
struct object_id i_commit;
struct object_id u_commit;
+ struct object_id c_commit;
struct object_id w_tree;
struct object_id b_tree;
struct object_id i_tree;
@@ -160,6 +181,33 @@ static void free_stash_info(struct stash_info *info)
strbuf_release(&info->revision);
}
+static int check_stash_topology(struct repository *r, struct commit *stash)
+{
+ struct commit *p1, *p2, *p3 = NULL;
+
+ /* stash must have two or three parents */
+ if (!stash->parents || !stash->parents->next ||
+ (stash->parents->next->next && stash->parents->next->next->next))
+ return -1;
+ p1 = stash->parents->item;
+ p2 = stash->parents->next->item;
+ if (stash->parents->next->next)
+ p3 = stash->parents->next->next->item;
+ if (repo_parse_commit(r, p1) || repo_parse_commit(r, p2) ||
+ (p3 && repo_parse_commit(r, p3)))
+ return -1;
+ /* p2 must have a single parent, p3 must have no parents */
+ if (!p2->parents || p2->parents->next || (p3 && p3->parents))
+ return -1;
+ if (repo_parse_commit(r, p2->parents->item))
+ return -1;
+ /* p2^1 must equal p1 */
+ if (!oideq(&p1->object.oid, &p2->parents->item->object.oid))
+ return -1;
+
+ return 0;
+}
+
static void assert_stash_like(struct stash_info *info, const char *revision)
{
if (get_oidf(&info->b_commit, "%s^1", revision) ||
@@ -169,6 +217,25 @@ static void assert_stash_like(struct stash_info *info, const char *revision)
die(_("'%s' is not a stash-like commit"), revision);
}
+static int parse_stash_revision(struct strbuf *revision, const char *commit, int quiet)
+{
+ strbuf_reset(revision);
+ if (!commit) {
+ if (!refs_ref_exists(get_main_ref_store(the_repository), ref_stash)) {
+ if (!quiet)
+ fprintf_ln(stderr, _("No stash entries found."));
+ return -1;
+ }
+
+ strbuf_addf(revision, "%s@{0}", ref_stash);
+ } else if (strspn(commit, "0123456789") == strlen(commit)) {
+ strbuf_addf(revision, "%s@{%s}", ref_stash, commit);
+ } else {
+ strbuf_addstr(revision, commit);
+ }
+ return 0;
+}
+
static int get_stash_info(struct stash_info *info, int argc, const char **argv)
{
int ret;
@@ -196,17 +263,9 @@ static int get_stash_info(struct stash_info *info, int argc, const char **argv)
if (argc == 1)
commit = argv[0];
- if (!commit) {
- if (!refs_ref_exists(get_main_ref_store(the_repository), ref_stash)) {
- fprintf_ln(stderr, _("No stash entries found."));
- return -1;
- }
-
- strbuf_addf(&info->revision, "%s@{0}", ref_stash);
- } else if (strspn(commit, "0123456789") == strlen(commit)) {
- strbuf_addf(&info->revision, "%s@{%s}", ref_stash, commit);
- } else {
- strbuf_addstr(&info->revision, commit);
+ strbuf_init(&info->revision, 0);
+ if (parse_stash_revision(&info->revision, commit, 0)) {
+ return -1;
}
revision = info->revision.buf;
@@ -1372,6 +1431,7 @@ static int do_create_stash(const struct pathspec *ps, struct strbuf *stash_msg_b
const char *head_short_sha1 = NULL;
const char *branch_ref = NULL;
const char *branch_name = "(no branch)";
+ char *branch_name_buf = NULL;
struct commit *head_commit = NULL;
struct commit_list *parents = NULL;
struct strbuf msg = STRBUF_INIT;
@@ -1404,8 +1464,12 @@ static int do_create_stash(const struct pathspec *ps, struct strbuf *stash_msg_b
branch_ref = refs_resolve_ref_unsafe(get_main_ref_store(the_repository),
"HEAD", 0, NULL, &flags);
- if (flags & REF_ISSYMREF)
- skip_prefix(branch_ref, "refs/heads/", &branch_name);
+
+ if (flags & REF_ISSYMREF) {
+ if (skip_prefix(branch_ref, "refs/heads/", &branch_name))
+ branch_name = branch_name_buf = xstrdup(branch_name);
+ }
+
head_short_sha1 = repo_find_unique_abbrev(the_repository,
&head_commit->object.oid,
DEFAULT_ABBREV);
@@ -1495,6 +1559,7 @@ done:
strbuf_release(&msg);
strbuf_release(&untracked_files);
free_commit_list(parents);
+ free(branch_name_buf);
return ret;
}
@@ -1789,11 +1854,15 @@ static int push_stash(int argc, const char **argv, const char *prefix,
int ret;
if (argc) {
- force_assume = !strcmp(argv[0], "-p");
+ int flags = PARSE_OPT_KEEP_DASHDASH;
+
+ if (push_assumed)
+ flags |= PARSE_OPT_STOP_AT_NON_OPTION;
+
argc = parse_options(argc, argv, prefix, options,
push_assumed ? git_stash_usage :
- git_stash_push_usage,
- PARSE_OPT_KEEP_DASHDASH);
+ git_stash_push_usage, flags);
+ force_assume |= patch_mode;
}
if (argc) {
@@ -1884,6 +1953,383 @@ static int save_stash(int argc, const char **argv, const char *prefix,
return ret;
}
+static int write_commit_with_parents(struct repository *r,
+ struct object_id *out,
+ const struct object_id *oid,
+ struct commit_list *parents)
+{
+ size_t author_len, committer_len;
+ struct commit *this;
+ const char *orig_author, *orig_committer;
+ char *author = NULL, *committer = NULL;
+ const char *buffer;
+ unsigned long bufsize;
+ const char *p;
+ struct strbuf msg = STRBUF_INIT;
+ int ret = 0;
+ struct ident_split id;
+
+ this = lookup_commit_reference(r, oid);
+ buffer = repo_get_commit_buffer(r, this, &bufsize);
+ orig_author = find_commit_header(buffer, "author", &author_len);
+ orig_committer = find_commit_header(buffer, "committer", &committer_len);
+
+ if (!orig_author || !orig_committer) {
+ ret = error(_("cannot parse commit %s"), oid_to_hex(oid));
+ goto out;
+ }
+
+ if (split_ident_line(&id, orig_author, author_len) < 0 ||
+ split_ident_line(&id, orig_committer, committer_len) < 0) {
+ ret = error(_("invalid author or committer for %s"), oid_to_hex(oid));
+ goto out;
+ }
+
+ p = strstr(buffer, "\n\n");
+ strbuf_addstr(&msg, "git stash: ");
+
+ if (p)
+ strbuf_add(&msg, p + 2, bufsize - (p + 2 - buffer));
+ strbuf_complete_line(&msg);
+
+ author = xmemdupz(orig_author, author_len);
+ committer = xmemdupz(orig_committer, committer_len);
+
+ if (commit_tree_extended(msg.buf, msg.len,
+ r->hash_algo->empty_tree, parents,
+ out, author, committer,
+ NULL, NULL)) {
+ ret = error(_("could not write commit"));
+ goto out;
+ }
+out:
+ strbuf_release(&msg);
+ repo_unuse_commit_buffer(r, this, buffer);
+ free(author);
+ free(committer);
+ return ret;
+}
+
+static int do_import_stash(struct repository *r, const char *rev)
+{
+ struct object_id chain;
+ int res = 0;
+ const char *buffer = NULL;
+ unsigned long bufsize;
+ struct commit *this = NULL;
+ struct commit_list *items = NULL, *cur;
+ char *msg = NULL;
+
+ if (repo_get_oid(r, rev, &chain))
+ return error(_("not a valid revision: %s"), rev);
+
+ this = lookup_commit_reference(r, &chain);
+ if (!this)
+ return error(_("not a commit: %s"), rev);
+
+ /*
+ * Walk the commit history, finding each stash entry, and load data into
+ * the array.
+ */
+ for (;;) {
+ const char *author, *committer;
+ size_t author_len, committer_len;
+ const char *p;
+ const char *expected = "git stash <git@stash> 1000684800 +0000";
+ const char *prefix = "git stash: ";
+ struct commit *stash;
+ struct tree *tree = repo_get_commit_tree(r, this);
+
+ if (!tree ||
+ !oideq(&tree->object.oid, r->hash_algo->empty_tree) ||
+ (this->parents &&
+ (!this->parents->next || this->parents->next->next))) {
+ res = error(_("%s is not a valid exported stash commit"),
+ oid_to_hex(&this->object.oid));
+ goto out;
+ }
+
+ buffer = repo_get_commit_buffer(r, this, &bufsize);
+
+ if (!this->parents) {
+ /*
+ * We don't have any parents. Make sure this is our
+ * root commit.
+ */
+ author = find_commit_header(buffer, "author", &author_len);
+ committer = find_commit_header(buffer, "committer", &committer_len);
+
+ if (!author || !committer) {
+ error(_("cannot parse commit %s"), oid_to_hex(&this->object.oid));
+ goto out;
+ }
+
+ if (author_len != strlen(expected) ||
+ committer_len != strlen(expected) ||
+ memcmp(author, expected, author_len) ||
+ memcmp(committer, expected, committer_len)) {
+ res = error(_("found root commit %s with invalid data"), oid_to_hex(&this->object.oid));
+ goto out;
+ }
+ break;
+ }
+
+ p = strstr(buffer, "\n\n");
+ if (!p) {
+ res = error(_("cannot parse commit %s"), oid_to_hex(&this->object.oid));
+ goto out;
+ }
+
+ p += 2;
+ if (((size_t)(bufsize - (p - buffer)) < strlen(prefix)) ||
+ memcmp(prefix, p, strlen(prefix))) {
+ res = error(_("found stash commit %s without expected prefix"), oid_to_hex(&this->object.oid));
+ goto out;
+ }
+
+ stash = this->parents->next->item;
+
+ if (repo_parse_commit(r, this->parents->item) ||
+ repo_parse_commit(r, stash)) {
+ res = error(_("cannot parse parents of commit: %s"),
+ oid_to_hex(&this->object.oid));
+ goto out;
+ }
+
+ if (check_stash_topology(r, stash)) {
+ res = error(_("%s does not look like a stash commit"),
+ oid_to_hex(&stash->object.oid));
+ goto out;
+ }
+
+ repo_unuse_commit_buffer(r, this, buffer);
+ buffer = NULL;
+ items = commit_list_insert(stash, &items);
+ this = this->parents->item;
+ }
+
+ /*
+ * Now, walk each entry, adding it to the stash as a normal stash
+ * commit.
+ */
+ for (cur = items; cur; cur = cur->next) {
+ const char *p;
+ struct object_id *oid;
+
+ this = cur->item;
+ oid = &this->object.oid;
+ buffer = repo_get_commit_buffer(r, this, &bufsize);
+ if (!buffer) {
+ res = error(_("cannot read commit buffer for %s"), oid_to_hex(oid));
+ goto out;
+ }
+
+ p = strstr(buffer, "\n\n");
+ if (!p) {
+ res = error(_("cannot parse commit %s"), oid_to_hex(oid));
+ goto out;
+ }
+
+ p += 2;
+ msg = xmemdupz(p, bufsize - (p - buffer));
+ repo_unuse_commit_buffer(r, this, buffer);
+ buffer = NULL;
+
+ if (do_store_stash(oid, msg, 1)) {
+ res = error(_("cannot save the stash for %s"), oid_to_hex(oid));
+ goto out;
+ }
+ FREE_AND_NULL(msg);
+ }
+out:
+ if (this && buffer)
+ repo_unuse_commit_buffer(r, this, buffer);
+ free_commit_list(items);
+ free(msg);
+
+ return res;
+}
+
+static int import_stash(int argc, const char **argv, const char *prefix,
+ struct repository *repo)
+{
+ struct option options[] = {
+ OPT_END()
+ };
+
+ argc = parse_options(argc, argv, prefix, options,
+ git_stash_import_usage,
+ PARSE_OPT_KEEP_DASHDASH);
+
+ if (argc != 1)
+ usage_msg_opt("a revision is required", git_stash_import_usage, options);
+
+ return do_import_stash(repo, argv[0]);
+}
+
+struct stash_entry_data {
+ struct repository *r;
+ struct commit_list **items;
+ size_t count;
+};
+
+static int collect_stash_entries(struct object_id *old_oid UNUSED,
+ struct object_id *new_oid,
+ const char *committer UNUSED,
+ timestamp_t timestamp UNUSED,
+ int tz UNUSED, const char *msg UNUSED,
+ void *cb_data)
+{
+ struct stash_entry_data *data = cb_data;
+ struct commit *stash;
+
+ data->count++;
+ stash = lookup_commit_reference(data->r, new_oid);
+ if (!stash || check_stash_topology(data->r, stash)) {
+ return error(_("%s does not look like a stash commit"),
+ oid_to_hex(new_oid));
+ }
+ data->items = commit_list_append(stash, data->items);
+ return 0;
+}
+
+static int do_export_stash(struct repository *r,
+ const char *ref,
+ int argc,
+ const char **argv)
+{
+ struct object_id base;
+ struct object_context unused;
+ struct commit *prev;
+ struct commit_list *items = NULL, **iter = &items, *cur;
+ int res = 0;
+ int i;
+ struct strbuf revision = STRBUF_INIT;
+ const char *author, *committer;
+
+ /*
+ * This is an arbitrary, fixed date, specifically the one used by git
+ * format-patch. The goal is merely to produce reproducible output.
+ */
+ prepare_fallback_ident("git stash", "git@stash");
+ author = fmt_ident("git stash", "git@stash", WANT_BLANK_IDENT,
+ "2001-09-17T00:00:00Z", 0);
+ committer = fmt_ident("git stash", "git@stash", WANT_BLANK_IDENT,
+ "2001-09-17T00:00:00Z", 0);
+
+ /* First, we create a single empty commit. */
+ if (commit_tree_extended("", 0, r->hash_algo->empty_tree, NULL,
+ &base, author, committer, NULL, NULL))
+ return error(_("unable to write base commit"));
+
+ prev = lookup_commit_reference(r, &base);
+
+ if (argc) {
+ /*
+ * Find each specified stash, and load data into the array.
+ */
+ for (i = 0; i < argc; i++) {
+ struct object_id oid;
+ struct commit *stash;
+
+ if (parse_stash_revision(&revision, argv[i], 1) ||
+ get_oid_with_context(r, revision.buf,
+ GET_OID_QUIETLY | GET_OID_GENTLY,
+ &oid, &unused)) {
+ res = error(_("unable to find stash entry %s"), argv[i]);
+ goto out;
+ }
+
+ stash = lookup_commit_reference(r, &oid);
+ if (!stash || check_stash_topology(r, stash)) {
+ res = error(_("%s does not look like a stash commit"),
+ revision.buf);
+ goto out;
+ }
+ iter = commit_list_append(stash, iter);
+ }
+ } else {
+ /*
+ * Walk the reflog, finding each stash entry, and load data into the
+ * array.
+ */
+ struct stash_entry_data cb_data = {
+ .r = r, .items = iter,
+ };
+ if (refs_for_each_reflog_ent_reverse(get_main_ref_store(r),
+ "refs/stash",
+ collect_stash_entries,
+ &cb_data) && cb_data.count)
+ goto out;
+ }
+
+ /*
+ * Now, create a set of commits identical to the regular stash commits,
+ * but where their first parents form a chain to our original empty
+ * base commit.
+ */
+ items = reverse_commit_list(items);
+ for (cur = items; cur; cur = cur->next) {
+ struct commit_list *parents = NULL;
+ struct commit_list **next = &parents;
+ struct object_id out;
+ struct commit *stash = cur->item;
+
+ next = commit_list_append(prev, next);
+ next = commit_list_append(stash, next);
+ res = write_commit_with_parents(r, &out, &stash->object.oid, parents);
+ free_commit_list(parents);
+ if (res)
+ goto out;
+ prev = lookup_commit_reference(r, &out);
+ }
+ if (ref)
+ refs_update_ref(get_main_ref_store(r), NULL, ref,
+ &prev->object.oid, NULL, 0, UPDATE_REFS_DIE_ON_ERR);
+ else
+ puts(oid_to_hex(&prev->object.oid));
+out:
+ strbuf_release(&revision);
+ free_commit_list(items);
+
+ return res;
+}
+
+enum export_action {
+ ACTION_NONE,
+ ACTION_PRINT,
+ ACTION_TO_REF,
+};
+
+static int export_stash(int argc,
+ const char **argv,
+ const char *prefix,
+ struct repository *repo)
+{
+ const char *ref = NULL;
+ enum export_action action = ACTION_NONE;
+ struct option options[] = {
+ OPT_CMDMODE(0, "print", &action,
+ N_("print the object ID instead of writing it to a ref"),
+ ACTION_PRINT),
+ OPT_STRING(0, "to-ref", &ref, "ref",
+ N_("save the data to the given ref")),
+ OPT_END()
+ };
+
+ argc = parse_options(argc, argv, prefix, options,
+ git_stash_export_usage,
+ PARSE_OPT_KEEP_DASHDASH);
+
+ if (ref && action == ACTION_NONE)
+ action = ACTION_TO_REF;
+
+ if (action == ACTION_NONE || (ref && action == ACTION_PRINT))
+ return error(_("exactly one of --print and --to-ref is required"));
+
+ return do_export_stash(repo, ref, argc, argv);
+}
+
int cmd_stash(int argc,
const char **argv,
const char *prefix,
@@ -1904,6 +2350,8 @@ int cmd_stash(int argc,
OPT_SUBCOMMAND("store", &fn, store_stash),
OPT_SUBCOMMAND("create", &fn, create_stash),
OPT_SUBCOMMAND("push", &fn, push_stash_unassumed),
+ OPT_SUBCOMMAND("export", &fn, export_stash),
+ OPT_SUBCOMMAND("import", &fn, import_stash),
OPT_SUBCOMMAND_F("save", &fn, save_stash, PARSE_OPT_NOCOMPLETE),
OPT_END()
};
diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index 53da2116dd..c725979201 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -41,61 +41,9 @@
typedef void (*each_submodule_fn)(const struct cache_entry *list_item,
void *cb_data);
-static int repo_get_default_remote(struct repository *repo, char **default_remote)
-{
- char *dest = NULL;
- struct strbuf sb = STRBUF_INIT;
- struct ref_store *store = get_main_ref_store(repo);
- const char *refname = refs_resolve_ref_unsafe(store, "HEAD", 0, NULL,
- NULL);
-
- if (!refname)
- return die_message(_("No such ref: %s"), "HEAD");
-
- /* detached HEAD */
- if (!strcmp(refname, "HEAD")) {
- *default_remote = xstrdup("origin");
- return 0;
- }
-
- if (!skip_prefix(refname, "refs/heads/", &refname))
- return die_message(_("Expecting a full ref name, got %s"),
- refname);
-
- strbuf_addf(&sb, "branch.%s.remote", refname);
- if (repo_config_get_string(repo, sb.buf, &dest))
- *default_remote = xstrdup("origin");
- else
- *default_remote = dest;
-
- strbuf_release(&sb);
- return 0;
-}
-
-static int get_default_remote_submodule(const char *module_path, char **default_remote)
-{
- struct repository subrepo;
- int ret;
-
- if (repo_submodule_init(&subrepo, the_repository, module_path,
- null_oid(the_hash_algo)) < 0)
- return die_message(_("could not get a repository handle for submodule '%s'"),
- module_path);
- ret = repo_get_default_remote(&subrepo, default_remote);
- repo_clear(&subrepo);
-
- return ret;
-}
-
static char *get_default_remote(void)
{
- char *default_remote;
- int code = repo_get_default_remote(the_repository, &default_remote);
-
- if (code)
- exit(code);
-
- return default_remote;
+ return xstrdup(repo_default_remote(the_repository));
}
static char *resolve_relative_url(const char *rel_url, const char *up_path, int quiet)
@@ -122,6 +70,46 @@ static char *resolve_relative_url(const char *rel_url, const char *up_path, int
return resolved_url;
}
+static int get_default_remote_submodule(const char *module_path, char **default_remote)
+{
+ const struct submodule *sub;
+ struct repository subrepo;
+ const char *remote_name = NULL;
+ char *url = NULL;
+
+ sub = submodule_from_path(the_repository, null_oid(the_hash_algo), module_path);
+ if (sub && sub->url) {
+ url = xstrdup(sub->url);
+
+ /* Possibly a url relative to parent */
+ if (starts_with_dot_dot_slash(url) ||
+ starts_with_dot_slash(url)) {
+ char *oldurl = url;
+
+ url = resolve_relative_url(oldurl, NULL, 1);
+ free(oldurl);
+ }
+ }
+
+ if (repo_submodule_init(&subrepo, the_repository, module_path,
+ null_oid(the_hash_algo)) < 0)
+ return die_message(_("could not get a repository handle for submodule '%s'"),
+ module_path);
+
+ /* Look up by URL first */
+ if (url)
+ remote_name = repo_remote_from_url(&subrepo, url);
+ if (!remote_name)
+ remote_name = repo_default_remote(&subrepo);
+
+ *default_remote = xstrdup(remote_name);
+
+ repo_clear(&subrepo);
+ free(url);
+
+ return 0;
+}
+
/* the result should be freed by the caller. */
static char *get_submodule_displaypath(const char *path, const char *prefix,
const char *super_prefix)
@@ -303,7 +291,7 @@ static void runcommand_in_submodule_cb(const struct cache_entry *list_item,
char *displaypath;
if (validate_submodule_path(path) < 0)
- exit(128);
+ die(NULL);
displaypath = get_submodule_displaypath(path, info->prefix,
info->super_prefix);
@@ -438,18 +426,6 @@ cleanup:
return ret;
}
-static int starts_with_dot_slash(const char *const path)
-{
- return path_match_flags(path, PATH_MATCH_STARTS_WITH_DOT_SLASH |
- PATH_MATCH_XPLATFORM);
-}
-
-static int starts_with_dot_dot_slash(const char *const path)
-{
- return path_match_flags(path, PATH_MATCH_STARTS_WITH_DOT_DOT_SLASH |
- PATH_MATCH_XPLATFORM);
-}
-
struct init_cb {
const char *prefix;
const char *super_prefix;
@@ -643,7 +619,7 @@ static void status_submodule(const char *path, const struct object_id *ce_oid,
};
if (validate_submodule_path(path) < 0)
- exit(128);
+ die(NULL);
if (!submodule_from_path(the_repository, null_oid(the_hash_algo), path))
die(_("no submodule mapping found in .gitmodules for path '%s'"),
@@ -1257,7 +1233,7 @@ static void sync_submodule(const char *path, const char *prefix,
return;
if (validate_submodule_path(path) < 0)
- exit(128);
+ die(NULL);
sub = submodule_from_path(the_repository, null_oid(the_hash_algo), path);
@@ -1402,7 +1378,7 @@ static void deinit_submodule(const char *path, const char *prefix,
char *sub_git_dir = xstrfmt("%s/.git", path);
if (validate_submodule_path(path) < 0)
- exit(128);
+ die(NULL);
sub = submodule_from_path(the_repository, null_oid(the_hash_algo), path);
@@ -1724,7 +1700,7 @@ static int clone_submodule(const struct module_clone_data *clone_data,
char *to_free = NULL;
if (validate_submodule_path(clone_data_path) < 0)
- exit(128);
+ die(NULL);
if (!is_absolute_path(clone_data->path))
clone_data_path = to_free = xstrfmt("%s/%s", repo_get_work_tree(the_repository),
@@ -2660,8 +2636,10 @@ static int update_submodule(struct update_data *update_data)
if (code)
return code;
code = remote_submodule_branch(update_data->sm_path, &branch);
- if (code)
+ if (code) {
+ free(remote_name);
return code;
+ }
remote_ref = xstrfmt("refs/remotes/%s/%s", remote_name, branch);
free(remote_name);
@@ -3524,7 +3502,7 @@ static int module_add(int argc, const char **argv, const char *prefix,
strip_dir_trailing_slashes(add_data.sm_path);
if (validate_submodule_path(add_data.sm_path) < 0)
- exit(128);
+ die(NULL);
die_on_index_match(add_data.sm_path, force);
die_on_repo_without_commits(add_data.sm_path);
diff --git a/builtin/update-ref.c b/builtin/update-ref.c
index 2b1e336ba1..1e6131e04a 100644
--- a/builtin/update-ref.c
+++ b/builtin/update-ref.c
@@ -575,30 +575,7 @@ static void print_rejected_refs(const char *refname,
void *cb_data UNUSED)
{
struct strbuf sb = STRBUF_INIT;
- const char *reason = "";
-
- switch (err) {
- case REF_TRANSACTION_ERROR_NAME_CONFLICT:
- reason = "refname conflict";
- break;
- case REF_TRANSACTION_ERROR_CREATE_EXISTS:
- reason = "reference already exists";
- break;
- case REF_TRANSACTION_ERROR_NONEXISTENT_REF:
- reason = "reference does not exist";
- break;
- case REF_TRANSACTION_ERROR_INCORRECT_OLD_VALUE:
- reason = "incorrect old value provided";
- break;
- case REF_TRANSACTION_ERROR_INVALID_NEW_VALUE:
- reason = "invalid new value provided";
- break;
- case REF_TRANSACTION_ERROR_EXPECTED_SYMREF:
- reason = "expected symref but found regular ref";
- break;
- default:
- reason = "unkown failure";
- }
+ const char *reason = ref_transaction_error_msg(err);
strbuf_addf(&sb, "rejected %s %s %s %s\n", refname,
new_oid ? oid_to_hex(new_oid) : new_target,
diff --git a/builtin/worktree.c b/builtin/worktree.c
index 88a36ea9f8..2dceeeed8b 100644
--- a/builtin/worktree.c
+++ b/builtin/worktree.c
@@ -621,7 +621,7 @@ static void print_preparing_worktree_line(int detach,
else {
struct commit *commit = lookup_commit_reference_by_name(branch);
if (!commit)
- BUG(_("unreachable: invalid reference: %s"), branch);
+ BUG("unreachable: invalid reference: %s", branch);
fprintf_ln(stderr, _("Preparing worktree (detached HEAD %s)"),
repo_find_unique_abbrev(the_repository, &commit->object.oid, DEFAULT_ABBREV));
}
diff --git a/bundle-uri.c b/bundle-uri.c
index 9accf157b4..8708d189e3 100644
--- a/bundle-uri.c
+++ b/bundle-uri.c
@@ -122,7 +122,7 @@ void print_bundle_list(FILE *fp, struct bundle_list *list)
int i;
for (i = 0; i < BUNDLE_HEURISTIC__COUNT; i++) {
if (heuristics[i].heuristic == list->heuristic) {
- printf("\theuristic = %s\n",
+ fprintf(fp, "\theuristic = %s\n",
heuristics[list->heuristic].name);
break;
}
@@ -297,6 +297,28 @@ static int download_https_uri_to_file(const char *file, const char *uri)
struct strbuf line = STRBUF_INIT;
int found_get = 0;
+ /*
+ * The protocol we speak with git-remote-https(1) uses a space to
+ * separate between URI and file, so the URI itself must not contain a
+ * space. If it did, an adversary could change the location where the
+ * downloaded file is being written to.
+ *
+ * Similarly, we use newlines to separate commands from one another.
+ * Consequently, neither the URI nor the file must contain a newline or
+ * otherwise an adversary could inject arbitrary commands.
+ *
+ * TODO: Restricting newlines in the target paths may break valid
+ * usecases, even if those are a bit more on the esoteric side.
+ * If this ever becomes a problem we should probably think about
+ * alternatives. One alternative could be to use NUL-delimited
+ * requests in git-remote-http(1). Another alternative could be
+ * to use URL quoting.
+ */
+ if (strpbrk(uri, " \n"))
+ return error("bundle-uri: URI is malformed: '%s'", file);
+ if (strchr(file, '\n'))
+ return error("bundle-uri: filename is malformed: '%s'", file);
+
strvec_pushl(&cp.args, "git-remote-https", uri, NULL);
cp.err = -1;
cp.in = -1;
diff --git a/compat/bswap.h b/compat/bswap.h
index 9e0f98e00b..b34054f2bd 100644
--- a/compat/bswap.h
+++ b/compat/bswap.h
@@ -35,19 +35,7 @@ static inline uint64_t default_bswap64(uint64_t val)
#undef bswap32
#undef bswap64
-/**
- * __has_builtin is available since Clang 10 and GCC 10.
- * Below is a fallback for older compilers.
- */
-#ifndef __has_builtin
- #define __has_builtin(x) 0
-#endif
-
-#if __has_builtin(__builtin_bswap32) && __has_builtin(__builtin_bswap64)
-#define bswap32(x) __builtin_bswap32((x))
-#define bswap64(x) __builtin_bswap64((x))
-
-#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
#define bswap32 git_bswap32
static inline uint32_t git_bswap32(uint32_t x)
diff --git a/compat/posix.h b/compat/posix.h
index f4c71f9427..067a00f33b 100644
--- a/compat/posix.h
+++ b/compat/posix.h
@@ -60,11 +60,11 @@
# else
# define _XOPEN_SOURCE 500
# endif
-#elif !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__USLC__) && \
- !defined(_M_UNIX) && !defined(__sgi) && !defined(__DragonFly__) && \
- !defined(__TANDEM) && !defined(__QNX__) && !defined(__MirBSD__) && \
- !defined(__CYGWIN__)
-#define _XOPEN_SOURCE 600 /* glibc2 and AIX 5.3L need 500, OpenBSD needs 600 for S_ISLNK() */
+#elif !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__NetBSD__) && \
+ !defined(__OpenBSD__) && !defined(__DragonFly__) && !defined(__MirBSD__) && \
+ !defined(__USLC__) && !defined(_M_UNIX) && !defined(__sgi) && \
+ !defined(__TANDEM) && !defined(__QNX__) && !defined(__CYGWIN__)
+#define _XOPEN_SOURCE 600 /* glibc2 and AIX 5.3L need 500 */
#define _XOPEN_SOURCE_EXTENDED 1 /* AIX 5.3L needs this */
#endif
#define _ALL_SOURCE 1
diff --git a/config.c b/config.c
index b18b5617fc..f55508bdc2 100644
--- a/config.c
+++ b/config.c
@@ -1595,11 +1595,6 @@ static int git_default_core_config(const char *var, const char *value,
return 0;
}
- if (!strcmp(var, "core.preloadindex")) {
- core_preload_index = git_config_bool(var, value);
- return 0;
- }
-
if (!strcmp(var, "core.createobject")) {
if (!value)
return config_error_nonbool(var);
@@ -2940,7 +2935,7 @@ static ssize_t write_pair(int fd, const char *key, const char *value,
if (value[0] == ' ')
quote = "\"";
for (i = 0; value[i]; i++)
- if (value[i] == ';' || value[i] == '#')
+ if (value[i] == ';' || value[i] == '#' || value[i] == '\r')
quote = "\"";
if (i && value[i - 1] == ' ')
quote = "\"";
diff --git a/config.mak.uname b/config.mak.uname
index 7fc2c5bf8d..b1c5c4d5e8 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -190,9 +190,6 @@ ifeq ($(uname_S),SunOS)
SHELL_PATH = /bin/bash
SANE_TOOL_PATH = /usr/xpg6/bin:/usr/xpg4/bin
HAVE_ALLOCA_H = YesPlease
- NO_STRCASESTR = YesPlease
- NO_MEMMEM = YesPlease
- NO_MKDTEMP = YesPlease
NO_REGEX = YesPlease
NO_MSGFMT_EXTENDED_OPTIONS = YesPlease
HAVE_DEV_TTY = YesPlease
@@ -202,7 +199,10 @@ ifeq ($(uname_S),SunOS)
NO_IPV6 = YesPlease
NO_SOCKADDR_STORAGE = YesPlease
NO_UNSETENV = YesPlease
+ NO_MKDTEMP = YesPlease
+ NO_MEMMEM = YesPlease
NO_SETENV = YesPlease
+ NO_STRCASESTR = YesPlease
NO_STRLCPY = YesPlease
NO_STRTOUMAX = YesPlease
GIT_TEST_CMP = cmp
@@ -212,23 +212,45 @@ ifeq ($(uname_S),SunOS)
NO_IPV6 = YesPlease
NO_SOCKADDR_STORAGE = YesPlease
NO_UNSETENV = YesPlease
+ NO_MKDTEMP = YesPlease
+ NO_MEMMEM = YesPlease
NO_SETENV = YesPlease
+ NO_STRCASESTR = YesPlease
NO_STRLCPY = YesPlease
NO_STRTOUMAX = YesPlease
GIT_TEST_CMP = cmp
endif
ifeq ($(uname_R),5.8)
NO_UNSETENV = YesPlease
+ NO_MKDTEMP = YesPlease
+ NO_MEMMEM = YesPlease
NO_SETENV = YesPlease
+ NO_STRCASESTR = YesPlease
NO_STRTOUMAX = YesPlease
GIT_TEST_CMP = cmp
endif
ifeq ($(uname_R),5.9)
NO_UNSETENV = YesPlease
+ NO_MKDTEMP = YesPlease
+ NO_MEMMEM = YesPlease
NO_SETENV = YesPlease
+ NO_STRCASESTR = YesPlease
NO_STRTOUMAX = YesPlease
GIT_TEST_CMP = cmp
endif
+ ifeq ($(uname_R),5.10)
+ NO_UNSETENV = YesPlease
+ NO_MKDTEMP = YesPlease
+ NO_MEMMEM = YesPlease
+ NO_SETENV = YesPlease
+ NO_STRCASESTR = YesPlease
+ GIT_TEST_CMP = cmp
+ endif
+ ifeq ($(uname_R),5.11)
+ NO_UNSETENV = YesPlease
+ NO_SETENV = YesPlease
+ GIT_TEST_CMP = cmp
+ endif
INSTALL = /usr/ucb/install
TAR = gtar
BASIC_CFLAGS += -D__EXTENSIONS__ -D__sun__
@@ -301,17 +323,14 @@ ifeq ($(uname_S),FreeBSD)
FILENO_IS_A_MACRO = UnfortunatelyYes
endif
ifeq ($(uname_S),OpenBSD)
- NO_STRCASESTR = YesPlease
- NO_MEMMEM = YesPlease
+ DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
USE_ST_TIMESPEC = YesPlease
NEEDS_LIBICONV = YesPlease
BASIC_CFLAGS += -I/usr/local/include
BASIC_LDFLAGS += -L/usr/local/lib
HAVE_PATHS_H = YesPlease
HAVE_BSD_SYSCTL = YesPlease
- HAVE_BSD_KERN_PROC_SYSCTL = YesPlease
CSPRNG_METHOD = arc4random
- PROCFS_EXECUTABLE_PATH = /proc/curproc/file
FREAD_READS_DIRECTORIES = UnfortunatelyYes
FILENO_IS_A_MACRO = UnfortunatelyYes
endif
diff --git a/contrib/coccinelle/commit.cocci b/contrib/coccinelle/commit.cocci
index af6dd4c20c..c5284604c5 100644
--- a/contrib/coccinelle/commit.cocci
+++ b/contrib/coccinelle/commit.cocci
@@ -25,7 +25,8 @@ expression s;
// functions, then the recommended transformation will be bogus with
// repo_get_commit_tree() on the LHS.
@@
-identifier f !~ "^(repo_get_commit_tree|get_commit_tree_in_graph_one|load_tree_for_commit|set_commit_tree)$";
+identifier f != { repo_get_commit_tree, get_commit_tree_in_graph_one,
+ load_tree_for_commit, set_commit_tree };
expression c;
@@
f(...) {<...
diff --git a/contrib/credential/netrc/meson.build b/contrib/credential/netrc/meson.build
index 3d74547c8a..16fa69e317 100644
--- a/contrib/credential/netrc/meson.build
+++ b/contrib/credential/netrc/meson.build
@@ -17,6 +17,6 @@ if get_option('tests')
workdir: meson.current_source_dir(),
env: credential_netrc_testenv,
depends: test_dependencies + bin_wrappers + [credential_netrc],
- timeout: 0,
+ kwargs: test_kwargs,
)
endif
diff --git a/contrib/credential/wincred/git-credential-wincred.c b/contrib/credential/wincred/git-credential-wincred.c
index 04145b5118..5683846b4b 100644
--- a/contrib/credential/wincred/git-credential-wincred.c
+++ b/contrib/credential/wincred/git-credential-wincred.c
@@ -39,6 +39,14 @@ static void *xmalloc(size_t size)
static WCHAR *wusername, *password, *protocol, *host, *path, target[1024],
*password_expiry_utc, *oauth_refresh_token;
+static void target_append(const WCHAR *src)
+{
+ size_t avail = ARRAY_SIZE(target) - wcslen(target) - 1; /* -1 for NUL */
+ if (avail < wcslen(src))
+ die("target buffer overflow");
+ wcsncat(target, src, avail);
+}
+
static void write_item(const char *what, LPCWSTR wbuf, int wlen)
{
char *buf;
@@ -330,17 +338,17 @@ int main(int argc, char *argv[])
/* prepare 'target', the unique key for the credential */
wcscpy(target, L"git:");
- wcsncat(target, protocol, ARRAY_SIZE(target));
- wcsncat(target, L"://", ARRAY_SIZE(target));
+ target_append(protocol);
+ target_append(L"://");
if (wusername) {
- wcsncat(target, wusername, ARRAY_SIZE(target));
- wcsncat(target, L"@", ARRAY_SIZE(target));
+ target_append(wusername);
+ target_append(L"@");
}
if (host)
- wcsncat(target, host, ARRAY_SIZE(target));
+ target_append(host);
if (path) {
- wcsncat(target, L"/", ARRAY_SIZE(target));
- wcsncat(target, path, ARRAY_SIZE(target));
+ target_append(L"/");
+ target_append(path);
}
if (!strcmp(argv[1], "get"))
diff --git a/contrib/emacs/README b/contrib/emacs/README
deleted file mode 100644
index 977a16f1e3..0000000000
--- a/contrib/emacs/README
+++ /dev/null
@@ -1,33 +0,0 @@
-This directory used to contain various modules for Emacs support.
-
-These were added shortly after Git was first released. Since then
-Emacs's own support for Git got better than what was offered by these
-modes. There are also popular 3rd-party Git modes such as Magit which
-offer replacements for these.
-
-The following modules were available, and can be dug up from the Git
-history:
-
-* git.el:
-
- Wrapper for "git status" that provided access to other git commands.
-
- Modern alternatives to this include Magit, and VC mode that ships
- with Emacs.
-
-* git-blame.el:
-
- A wrapper for "git blame" written before Emacs's own vc-annotate
- mode learned to invoke git-blame, which can be done via C-x v g.
-
-* vc-git.el:
-
- This file used to contain the VC-mode backend for git, but it is no
- longer distributed with git. It is now maintained as part of Emacs
- and included in standard Emacs distributions starting from version
- 22.2.
-
- If you have an earlier Emacs version, upgrading to Emacs 22 is
- recommended, since the VC mode in older Emacs is not generic enough
- to be able to support git in a reasonable manner, and no attempt has
- been made to backport vc-git.el.
diff --git a/contrib/emacs/git-blame.el b/contrib/emacs/git-blame.el
deleted file mode 100644
index 6a8a2b8ff1..0000000000
--- a/contrib/emacs/git-blame.el
+++ /dev/null
@@ -1,6 +0,0 @@
-(error "git-blame.el no longer ships with git. It's recommended
-to replace its use with Emacs's own vc-annotate. See
-contrib/emacs/README in git's
-sources (https://github.com/git/git/blob/master/contrib/emacs/README)
-for more info on suggested alternatives and for why this
-happened.")
diff --git a/contrib/emacs/git.el b/contrib/emacs/git.el
deleted file mode 100644
index 03f926281f..0000000000
--- a/contrib/emacs/git.el
+++ /dev/null
@@ -1,6 +0,0 @@
-(error "git.el no longer ships with git. It's recommended to
-replace its use with Magit, or simply delete references to git.el
-in your initialization file(s). See contrib/emacs/README in git's
-sources (https://github.com/git/git/blob/master/contrib/emacs/README)
-for suggested alternatives and for why this happened. Emacs's own
-VC mode and Magit are viable alternatives.")
diff --git a/contrib/examples/README b/contrib/examples/README
deleted file mode 100644
index 18bc60b021..0000000000
--- a/contrib/examples/README
+++ /dev/null
@@ -1,20 +0,0 @@
-This directory used to contain scripted implementations of builtins
-that have since been rewritten in C.
-
-They have now been removed, but can be retrieved from an older commit
-that removed them from this directory.
-
-They're interesting for their reference value to any aspiring plumbing
-users who want to learn how pieces can be fit together, but in many
-cases have drifted enough from the actual implementations Git uses to
-be instructive.
-
-Other things that can be useful:
-
- * Some commands such as git-gc wrap other commands, and what they're
- doing behind the scenes can be seen by running them under
- GIT_TRACE=1
-
- * Doing `git log` on paths matching '*--helper.c' will show
- incremental effort in the direction of moving existing shell
- scripts to C.
diff --git a/contrib/git-resurrect.sh b/contrib/git-resurrect.sh
deleted file mode 100755
index d843df3afd..0000000000
--- a/contrib/git-resurrect.sh
+++ /dev/null
@@ -1,181 +0,0 @@
-#!/bin/sh
-
-USAGE="[-a] [-r] [-m] [-t] [-n] [-b <newname>] <name>"
-LONG_USAGE="git-resurrect attempts to find traces of a branch tip
-called <name>, and tries to resurrect it. Currently, the reflog is
-searched for checkout messages, and with -r also merge messages. With
--m and -t, the history of all refs is scanned for Merge <name> into
-other/Merge <other> into <name> (respectively) commit subjects, which
-is rather slow but allows you to resurrect other people's topic
-branches."
-
-OPTIONS_KEEPDASHDASH=
-OPTIONS_STUCKLONG=
-OPTIONS_SPEC="\
-git resurrect $USAGE
---
-b,branch= save branch as <newname> instead of <name>
-a,all same as -l -r -m -t
-k,keep-going full rev-list scan (instead of first match)
-l,reflog scan reflog for checkouts (enabled by default)
-r,reflog-merges scan for merges recorded in reflog
-m,merges scan for merges into other branches (slow)
-t,merge-targets scan for merges of other branches into <name>
-n,dry-run don't recreate the branch"
-
-. git-sh-setup
-
-search_reflog () {
- sed -ne 's~^\([^ ]*\) .* checkout: moving from '"$1"' .*~\1~p' \
- < "$GIT_DIR"/logs/HEAD
-}
-
-search_reflog_merges () {
- git rev-parse $(
- sed -ne 's~^[^ ]* \([^ ]*\) .* merge '"$1"':.*~\1^2~p' \
- < "$GIT_DIR"/logs/HEAD
- )
-}
-
-oid_pattern=$(git hash-object --stdin </dev/null | sed -e 's/./[0-9a-f]/g')
-
-search_merges () {
- git rev-list --all --grep="Merge branch '$1'" \
- --pretty=tformat:"%P %s" |
- sed -ne "/^$oid_pattern \($oid_pattern\) Merge .*/ {s//\1/p;$early_exit}"
-}
-
-search_merge_targets () {
- git rev-list --all --grep="Merge branch '[^']*' into $branch\$" \
- --pretty=tformat:"%H %s" --all |
- sed -ne "/^\($oid_pattern\) Merge .*/ {s//\1/p;$early_exit} "
-}
-
-dry_run=
-early_exit=q
-scan_reflog=t
-scan_reflog_merges=
-scan_merges=
-scan_merge_targets=
-new_name=
-
-while test "$#" != 0; do
- case "$1" in
- -b|--branch)
- shift
- new_name="$1"
- ;;
- -n|--dry-run)
- dry_run=t
- ;;
- --no-dry-run)
- dry_run=
- ;;
- -k|--keep-going)
- early_exit=
- ;;
- --no-keep-going)
- early_exit=q
- ;;
- -m|--merges)
- scan_merges=t
- ;;
- --no-merges)
- scan_merges=
- ;;
- -l|--reflog)
- scan_reflog=t
- ;;
- --no-reflog)
- scan_reflog=
- ;;
- -r|--reflog_merges)
- scan_reflog_merges=t
- ;;
- --no-reflog_merges)
- scan_reflog_merges=
- ;;
- -t|--merge-targets)
- scan_merge_targets=t
- ;;
- --no-merge-targets)
- scan_merge_targets=
- ;;
- -a|--all)
- scan_reflog=t
- scan_reflog_merges=t
- scan_merges=t
- scan_merge_targets=t
- ;;
- --)
- shift
- break
- ;;
- *)
- usage
- ;;
- esac
- shift
-done
-
-test "$#" = 1 || usage
-
-all_strategies="$scan_reflog$scan_reflog_merges$scan_merges$scan_merge_targets"
-if test -z "$all_strategies"; then
- die "must enable at least one of -lrmt"
-fi
-
-branch="$1"
-test -z "$new_name" && new_name="$branch"
-
-if test ! -z "$scan_reflog"; then
- if test -r "$GIT_DIR"/logs/HEAD; then
- candidates="$(search_reflog $branch)"
- else
- die 'reflog scanning requested, but' \
- '$GIT_DIR/logs/HEAD not readable'
- fi
-fi
-if test ! -z "$scan_reflog_merges"; then
- if test -r "$GIT_DIR"/logs/HEAD; then
- candidates="$candidates $(search_reflog_merges $branch)"
- else
- die 'reflog scanning requested, but' \
- '$GIT_DIR/logs/HEAD not readable'
- fi
-fi
-if test ! -z "$scan_merges"; then
- candidates="$candidates $(search_merges $branch)"
-fi
-if test ! -z "$scan_merge_targets"; then
- candidates="$candidates $(search_merge_targets $branch)"
-fi
-
-candidates="$(git rev-parse $candidates | sort -u)"
-
-if test -z "$candidates"; then
- hint=
- test "z$all_strategies" != "ztttt" \
- && hint=" (maybe try again with -a)"
- die "no candidates for $branch found$hint"
-fi
-
-echo "** Candidates for $branch **"
-for cmt in $candidates; do
- git --no-pager log --pretty=tformat:"%ct:%h [%cr] %s" --abbrev-commit -1 $cmt
-done \
-| sort -n | cut -d: -f2-
-
-newest="$(git rev-list -1 $candidates)"
-if test ! -z "$dry_run"; then
- printf "** Most recent: "
- git --no-pager log -1 --pretty=tformat:"%h %s" $newest
-elif ! git rev-parse --verify --quiet $new_name >/dev/null; then
- printf "** Restoring $new_name to "
- git --no-pager log -1 --pretty=tformat:"%h %s" $newest
- git branch $new_name $newest
-else
- printf "Most recent: "
- git --no-pager log -1 --pretty=tformat:"%h %s" $newest
- echo "** $new_name already exists, doing nothing"
-fi
diff --git a/contrib/hooks/multimail/README.Git b/contrib/hooks/multimail/README.Git
deleted file mode 100644
index c427efc7bd..0000000000
--- a/contrib/hooks/multimail/README.Git
+++ /dev/null
@@ -1,7 +0,0 @@
-git-multimail is developed as an independent project at the following
-website:
-
- https://github.com/git-multimail/git-multimail
-
-Please refer to that project page for information about how to report
-bugs or contribute to git-multimail.
diff --git a/contrib/hooks/post-receive-email b/contrib/hooks/post-receive-email
deleted file mode 100755
index ff565eb3d8..0000000000
--- a/contrib/hooks/post-receive-email
+++ /dev/null
@@ -1,759 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2007 Andy Parkins
-#
-# An example hook script to mail out commit update information.
-#
-# NOTE: This script is no longer under active development. There
-# is another script, git-multimail, which is more capable and
-# configurable and is largely backwards-compatible with this script;
-# please see "contrib/hooks/multimail/". For instructions on how to
-# migrate from post-receive-email to git-multimail, please see
-# "README.migrate-from-post-receive-email" in that directory.
-#
-# This hook sends emails listing new revisions to the repository
-# introduced by the change being reported. The rule is that (for
-# branch updates) each commit will appear on one email and one email
-# only.
-#
-# This hook is stored in the contrib/hooks directory. Your distribution
-# will have put this somewhere standard. You should make this script
-# executable then link to it in the repository you would like to use it in.
-# For example, on debian the hook is stored in
-# /usr/share/git-core/contrib/hooks/post-receive-email:
-#
-# cd /path/to/your/repository.git
-# ln -sf /usr/share/git-core/contrib/hooks/post-receive-email hooks/post-receive
-#
-# This hook script assumes it is enabled on the central repository of a
-# project, with all users pushing only to it and not between each other. It
-# will still work if you don't operate in that style, but it would become
-# possible for the email to be from someone other than the person doing the
-# push.
-#
-# To help with debugging and use on pre-v1.5.1 git servers, this script will
-# also obey the interface of hooks/update, taking its arguments on the
-# command line. Unfortunately, hooks/update is called once for each ref.
-# To avoid firing one email per ref, this script just prints its output to
-# the screen when used in this mode. The output can then be redirected if
-# wanted.
-#
-# Config
-# ------
-# hooks.mailinglist
-# This is the list that all pushes will go to; leave it blank to not send
-# emails for every ref update.
-# hooks.announcelist
-# This is the list that all pushes of annotated tags will go to. Leave it
-# blank to default to the mailinglist field. The announce emails lists
-# the short log summary of the changes since the last annotated tag.
-# hooks.envelopesender
-# If set then the -f option is passed to sendmail to allow the envelope
-# sender address to be set
-# hooks.emailprefix
-# All emails have their subjects prefixed with this prefix, or "[SCM]"
-# if emailprefix is unset, to aid filtering
-# hooks.showrev
-# The shell command used to format each revision in the email, with
-# "%s" replaced with the commit id. Defaults to "git rev-list -1
-# --pretty %s", displaying the commit id, author, date and log
-# message. To list full patches separated by a blank line, you
-# could set this to "git show -C %s; echo".
-# To list a gitweb/cgit URL *and* a full patch for each change set, use this:
-# "t=%s; printf 'http://.../?id=%%s' \$t; echo;echo; git show -C \$t; echo"
-# Be careful if "..." contains things that will be expanded by shell "eval"
-# or printf.
-# hooks.emailmaxlines
-# The maximum number of lines that should be included in the generated
-# email body. If not specified, there is no limit.
-# Lines beyond the limit are suppressed and counted, and a final
-# line is added indicating the number of suppressed lines.
-# hooks.diffopts
-# Alternate options for the git diff-tree invocation that shows changes.
-# Default is "--stat --summary --find-copies-harder". Add -p to those
-# options to include a unified diff of changes in addition to the usual
-# summary output.
-#
-# Notes
-# -----
-# All emails include the headers "X-Git-Refname", "X-Git-Oldrev",
-# "X-Git-Newrev", and "X-Git-Reftype" to enable fine tuned filtering and
-# give information for debugging.
-#
-
-# ---------------------------- Functions
-
-#
-# Function to prepare for email generation. This decides what type
-# of update this is and whether an email should even be generated.
-#
-prep_for_email()
-{
- # --- Arguments
- oldrev=$(git rev-parse $1)
- newrev=$(git rev-parse $2)
- refname="$3"
-
- # --- Interpret
- # 0000->1234 (create)
- # 1234->2345 (update)
- # 2345->0000 (delete)
- if expr "$oldrev" : '0*$' >/dev/null
- then
- change_type="create"
- else
- if expr "$newrev" : '0*$' >/dev/null
- then
- change_type="delete"
- else
- change_type="update"
- fi
- fi
-
- # --- Get the revision types
- newrev_type=$(git cat-file -t $newrev 2> /dev/null)
- oldrev_type=$(git cat-file -t "$oldrev" 2> /dev/null)
- case "$change_type" in
- create|update)
- rev="$newrev"
- rev_type="$newrev_type"
- ;;
- delete)
- rev="$oldrev"
- rev_type="$oldrev_type"
- ;;
- esac
-
- # The revision type tells us what type the commit is, combined with
- # the location of the ref we can decide between
- # - working branch
- # - tracking branch
- # - unannoted tag
- # - annotated tag
- case "$refname","$rev_type" in
- refs/tags/*,commit)
- # un-annotated tag
- refname_type="tag"
- short_refname=${refname##refs/tags/}
- ;;
- refs/tags/*,tag)
- # annotated tag
- refname_type="annotated tag"
- short_refname=${refname##refs/tags/}
- # change recipients
- if [ -n "$announcerecipients" ]; then
- recipients="$announcerecipients"
- fi
- ;;
- refs/heads/*,commit)
- # branch
- refname_type="branch"
- short_refname=${refname##refs/heads/}
- ;;
- refs/remotes/*,commit)
- # tracking branch
- refname_type="tracking branch"
- short_refname=${refname##refs/remotes/}
- echo >&2 "*** Push-update of tracking branch, $refname"
- echo >&2 "*** - no email generated."
- return 1
- ;;
- *)
- # Anything else (is there anything else?)
- echo >&2 "*** Unknown type of update to $refname ($rev_type)"
- echo >&2 "*** - no email generated"
- return 1
- ;;
- esac
-
- # Check if we've got anyone to send to
- if [ -z "$recipients" ]; then
- case "$refname_type" in
- "annotated tag")
- config_name="hooks.announcelist"
- ;;
- *)
- config_name="hooks.mailinglist"
- ;;
- esac
- echo >&2 "*** $config_name is not set so no email will be sent"
- echo >&2 "*** for $refname update $oldrev->$newrev"
- return 1
- fi
-
- return 0
-}
-
-#
-# Top level email generation function. This calls the appropriate
-# body-generation routine after outputting the common header.
-#
-# Note this function doesn't actually generate any email output, that is
-# taken care of by the functions it calls:
-# - generate_email_header
-# - generate_create_XXXX_email
-# - generate_update_XXXX_email
-# - generate_delete_XXXX_email
-# - generate_email_footer
-#
-# Note also that this function cannot 'exit' from the script; when this
-# function is running (in hook script mode), the send_mail() function
-# is already executing in another process, connected via a pipe, and
-# if this function exits without, whatever has been generated to that
-# point will be sent as an email... even if nothing has been generated.
-#
-generate_email()
-{
- # Email parameters
- # The email subject will contain the best description of the ref
- # that we can build from the parameters
- describe=$(git describe $rev 2>/dev/null)
- if [ -z "$describe" ]; then
- describe=$rev
- fi
-
- generate_email_header
-
- # Call the correct body generation function
- fn_name=general
- case "$refname_type" in
- "tracking branch"|branch)
- fn_name=branch
- ;;
- "annotated tag")
- fn_name=atag
- ;;
- esac
-
- if [ -z "$maxlines" ]; then
- generate_${change_type}_${fn_name}_email
- else
- generate_${change_type}_${fn_name}_email | limit_lines $maxlines
- fi
-
- generate_email_footer
-}
-
-generate_email_header()
-{
- # --- Email (all stdout will be the email)
- # Generate header
- cat <<-EOF
- To: $recipients
- Subject: ${emailprefix}$projectdesc $refname_type $short_refname ${change_type}d. $describe
- MIME-Version: 1.0
- Content-Type: text/plain; charset=utf-8
- Content-Transfer-Encoding: 8bit
- X-Git-Refname: $refname
- X-Git-Reftype: $refname_type
- X-Git-Oldrev: $oldrev
- X-Git-Newrev: $newrev
- Auto-Submitted: auto-generated
-
- This is an automated email from the git hooks/post-receive script. It was
- generated because a ref change was pushed to the repository containing
- the project "$projectdesc".
-
- The $refname_type, $short_refname has been ${change_type}d
- EOF
-}
-
-generate_email_footer()
-{
- SPACE=" "
- cat <<-EOF
-
-
- hooks/post-receive
- --${SPACE}
- $projectdesc
- EOF
-}
-
-# --------------- Branches
-
-#
-# Called for the creation of a branch
-#
-generate_create_branch_email()
-{
- # This is a new branch and so oldrev is not valid
- echo " at $newrev ($newrev_type)"
- echo ""
-
- echo $LOGBEGIN
- show_new_revisions
- echo $LOGEND
-}
-
-#
-# Called for the change of a pre-existing branch
-#
-generate_update_branch_email()
-{
- # Consider this:
- # 1 --- 2 --- O --- X --- 3 --- 4 --- N
- #
- # O is $oldrev for $refname
- # N is $newrev for $refname
- # X is a revision pointed to by some other ref, for which we may
- # assume that an email has already been generated.
- # In this case we want to issue an email containing only revisions
- # 3, 4, and N. Given (almost) by
- #
- # git rev-list N ^O --not --all
- #
- # The reason for the "almost", is that the "--not --all" will take
- # precedence over the "N", and effectively will translate to
- #
- # git rev-list N ^O ^X ^N
- #
- # So, we need to build up the list more carefully. git rev-parse
- # will generate a list of revs that may be fed into git rev-list.
- # We can get it to make the "--not --all" part and then filter out
- # the "^N" with:
- #
- # git rev-parse --not --all | grep -v N
- #
- # Then, using the --stdin switch to git rev-list we have effectively
- # manufactured
- #
- # git rev-list N ^O ^X
- #
- # This leaves a problem when someone else updates the repository
- # while this script is running. Their new value of the ref we're
- # working on would be included in the "--not --all" output; and as
- # our $newrev would be an ancestor of that commit, it would exclude
- # all of our commits. What we really want is to exclude the current
- # value of $refname from the --not list, rather than N itself. So:
- #
- # git rev-parse --not --all | grep -v $(git rev-parse $refname)
- #
- # Gets us to something pretty safe (apart from the small time
- # between refname being read, and git rev-parse running - for that,
- # I give up)
- #
- #
- # Next problem, consider this:
- # * --- B --- * --- O ($oldrev)
- # \
- # * --- X --- * --- N ($newrev)
- #
- # That is to say, there is no guarantee that oldrev is a strict
- # subset of newrev (it would have required a --force, but that's
- # allowed). So, we can't simply say rev-list $oldrev..$newrev.
- # Instead we find the common base of the two revs and list from
- # there.
- #
- # As above, we need to take into account the presence of X; if
- # another branch is already in the repository and points at some of
- # the revisions that we are about to output - we don't want them.
- # The solution is as before: git rev-parse output filtered.
- #
- # Finally, tags: 1 --- 2 --- O --- T --- 3 --- 4 --- N
- #
- # Tags pushed into the repository generate nice shortlog emails that
- # summarise the commits between them and the previous tag. However,
- # those emails don't include the full commit messages that we output
- # for a branch update. Therefore we still want to output revisions
- # that have been output on a tag email.
- #
- # Luckily, git rev-parse includes just the tool. Instead of using
- # "--all" we use "--branches"; this has the added benefit that
- # "remotes/" will be ignored as well.
-
- # List all of the revisions that were removed by this update, in a
- # fast-forward update, this list will be empty, because rev-list O
- # ^N is empty. For a non-fast-forward, O ^N is the list of removed
- # revisions
- fast_forward=""
- rev=""
- for rev in $(git rev-list $newrev..$oldrev)
- do
- revtype=$(git cat-file -t "$rev")
- echo " discards $rev ($revtype)"
- done
- if [ -z "$rev" ]; then
- fast_forward=1
- fi
-
- # List all the revisions from baserev to newrev in a kind of
- # "table-of-contents"; note this list can include revisions that
- # have already had notification emails and is present to show the
- # full detail of the change from rolling back the old revision to
- # the base revision and then forward to the new revision
- for rev in $(git rev-list $oldrev..$newrev)
- do
- revtype=$(git cat-file -t "$rev")
- echo " via $rev ($revtype)"
- done
-
- if [ "$fast_forward" ]; then
- echo " from $oldrev ($oldrev_type)"
- else
- # 1. Existing revisions were removed. In this case newrev
- # is a subset of oldrev - this is the reverse of a
- # fast-forward, a rewind
- # 2. New revisions were added on top of an old revision,
- # this is a rewind and addition.
-
- # (1) certainly happened, (2) possibly. When (2) hasn't
- # happened, we set a flag to indicate that no log printout
- # is required.
-
- echo ""
-
- # Find the common ancestor of the old and new revisions and
- # compare it with newrev
- baserev=$(git merge-base $oldrev $newrev)
- rewind_only=""
- if [ "$baserev" = "$newrev" ]; then
- echo "This update discarded existing revisions and left the branch pointing at"
- echo "a previous point in the repository history."
- echo ""
- echo " * -- * -- N ($newrev)"
- echo " \\"
- echo " O -- O -- O ($oldrev)"
- echo ""
- echo "The removed revisions are not necessarily gone - if another reference"
- echo "still refers to them they will stay in the repository."
- rewind_only=1
- else
- echo "This update added new revisions after undoing existing revisions. That is"
- echo "to say, the old revision is not a strict subset of the new revision. This"
- echo "situation occurs when you --force push a change and generate a repository"
- echo "containing something like this:"
- echo ""
- echo " * -- * -- B -- O -- O -- O ($oldrev)"
- echo " \\"
- echo " N -- N -- N ($newrev)"
- echo ""
- echo "When this happens we assume that you've already had alert emails for all"
- echo "of the O revisions, and so we here report only the revisions in the N"
- echo "branch from the common base, B."
- fi
- fi
-
- echo ""
- if [ -z "$rewind_only" ]; then
- echo "Those revisions listed above that are new to this repository have"
- echo "not appeared on any other notification email; so we list those"
- echo "revisions in full, below."
-
- echo ""
- echo $LOGBEGIN
- show_new_revisions
-
- # XXX: Need a way of detecting whether git rev-list actually
- # outputted anything, so that we can issue a "no new
- # revisions added by this update" message
-
- echo $LOGEND
- else
- echo "No new revisions were added by this update."
- fi
-
- # The diffstat is shown from the old revision to the new revision.
- # This is to show the truth of what happened in this change.
- # There's no point showing the stat from the base to the new
- # revision because the base is effectively a random revision at this
- # point - the user will be interested in what this revision changed
- # - including the undoing of previous revisions in the case of
- # non-fast-forward updates.
- echo ""
- echo "Summary of changes:"
- git diff-tree $diffopts $oldrev..$newrev
-}
-
-#
-# Called for the deletion of a branch
-#
-generate_delete_branch_email()
-{
- echo " was $oldrev"
- echo ""
- echo $LOGBEGIN
- git diff-tree -s --always --encoding=UTF-8 --pretty=oneline $oldrev
- echo $LOGEND
-}
-
-# --------------- Annotated tags
-
-#
-# Called for the creation of an annotated tag
-#
-generate_create_atag_email()
-{
- echo " at $newrev ($newrev_type)"
-
- generate_atag_email
-}
-
-#
-# Called for the update of an annotated tag (this is probably a rare event
-# and may not even be allowed)
-#
-generate_update_atag_email()
-{
- echo " to $newrev ($newrev_type)"
- echo " from $oldrev (which is now obsolete)"
-
- generate_atag_email
-}
-
-#
-# Called when an annotated tag is created or changed
-#
-generate_atag_email()
-{
- # Use git for-each-ref to pull out the individual fields from the
- # tag
- eval $(git for-each-ref --shell --format='
- tagobject=%(*objectname)
- tagtype=%(*objecttype)
- tagger=%(taggername)
- tagged=%(taggerdate)' $refname
- )
-
- echo " tagging $tagobject ($tagtype)"
- case "$tagtype" in
- commit)
-
- # If the tagged object is a commit, then we assume this is a
- # release, and so we calculate which tag this tag is
- # replacing
- prevtag=$(git describe --abbrev=0 $newrev^ 2>/dev/null)
-
- if [ -n "$prevtag" ]; then
- echo " replaces $prevtag"
- fi
- ;;
- *)
- echo " length $(git cat-file -s $tagobject) bytes"
- ;;
- esac
- echo " tagged by $tagger"
- echo " on $tagged"
-
- echo ""
- echo $LOGBEGIN
-
- # Show the content of the tag message; this might contain a change
- # log or release notes so is worth displaying.
- git cat-file tag $newrev | sed -e '1,/^$/d'
-
- echo ""
- case "$tagtype" in
- commit)
- # Only commit tags make sense to have rev-list operations
- # performed on them
- if [ -n "$prevtag" ]; then
- # Show changes since the previous release
- git shortlog "$prevtag..$newrev"
- else
- # No previous tag, show all the changes since time
- # began
- git shortlog $newrev
- fi
- ;;
- *)
- # XXX: Is there anything useful we can do for non-commit
- # objects?
- ;;
- esac
-
- echo $LOGEND
-}
-
-#
-# Called for the deletion of an annotated tag
-#
-generate_delete_atag_email()
-{
- echo " was $oldrev"
- echo ""
- echo $LOGBEGIN
- git diff-tree -s --always --encoding=UTF-8 --pretty=oneline $oldrev
- echo $LOGEND
-}
-
-# --------------- General references
-
-#
-# Called when any other type of reference is created (most likely a
-# non-annotated tag)
-#
-generate_create_general_email()
-{
- echo " at $newrev ($newrev_type)"
-
- generate_general_email
-}
-
-#
-# Called when any other type of reference is updated (most likely a
-# non-annotated tag)
-#
-generate_update_general_email()
-{
- echo " to $newrev ($newrev_type)"
- echo " from $oldrev"
-
- generate_general_email
-}
-
-#
-# Called for creation or update of any other type of reference
-#
-generate_general_email()
-{
- # Unannotated tags are more about marking a point than releasing a
- # version; therefore we don't do the shortlog summary that we do for
- # annotated tags above - we simply show that the point has been
- # marked, and print the log message for the marked point for
- # reference purposes
- #
- # Note this section also catches any other reference type (although
- # there aren't any) and deals with them in the same way.
-
- echo ""
- if [ "$newrev_type" = "commit" ]; then
- echo $LOGBEGIN
- git diff-tree -s --always --encoding=UTF-8 --pretty=medium $newrev
- echo $LOGEND
- else
- # What can we do here? The tag marks an object that is not
- # a commit, so there is no log for us to display. It's
- # probably not wise to output git cat-file as it could be a
- # binary blob. We'll just say how big it is
- echo "$newrev is a $newrev_type, and is $(git cat-file -s $newrev) bytes long."
- fi
-}
-
-#
-# Called for the deletion of any other type of reference
-#
-generate_delete_general_email()
-{
- echo " was $oldrev"
- echo ""
- echo $LOGBEGIN
- git diff-tree -s --always --encoding=UTF-8 --pretty=oneline $oldrev
- echo $LOGEND
-}
-
-
-# --------------- Miscellaneous utilities
-
-#
-# Show new revisions as the user would like to see them in the email.
-#
-show_new_revisions()
-{
- # This shows all log entries that are not already covered by
- # another ref - i.e. commits that are now accessible from this
- # ref that were previously not accessible
- # (see generate_update_branch_email for the explanation of this
- # command)
-
- # Revision range passed to rev-list differs for new vs. updated
- # branches.
- if [ "$change_type" = create ]
- then
- # Show all revisions exclusive to this (new) branch.
- revspec=$newrev
- else
- # Branch update; show revisions not part of $oldrev.
- revspec=$oldrev..$newrev
- fi
-
- other_branches=$(git for-each-ref --format='%(refname)' refs/heads/ |
- grep -F -v $refname)
- git rev-parse --not $other_branches |
- if [ -z "$custom_showrev" ]
- then
- git rev-list --pretty --stdin $revspec
- else
- git rev-list --stdin $revspec |
- while read onerev
- do
- eval $(printf "$custom_showrev" $onerev)
- done
- fi
-}
-
-
-limit_lines()
-{
- lines=0
- skipped=0
- while IFS="" read -r line; do
- lines=$((lines + 1))
- if [ $lines -gt $1 ]; then
- skipped=$((skipped + 1))
- else
- printf "%s\n" "$line"
- fi
- done
- if [ $skipped -ne 0 ]; then
- echo "... $skipped lines suppressed ..."
- fi
-}
-
-
-send_mail()
-{
- if [ -n "$envelopesender" ]; then
- /usr/sbin/sendmail -t -f "$envelopesender"
- else
- /usr/sbin/sendmail -t
- fi
-}
-
-# ---------------------------- main()
-
-# --- Constants
-LOGBEGIN="- Log -----------------------------------------------------------------"
-LOGEND="-----------------------------------------------------------------------"
-
-# --- Config
-# Set GIT_DIR either from the working directory, or from the environment
-# variable.
-GIT_DIR=$(git rev-parse --git-dir 2>/dev/null)
-if [ -z "$GIT_DIR" ]; then
- echo >&2 "fatal: post-receive: GIT_DIR not set"
- exit 1
-fi
-
-projectdesc=$(sed -ne '1p' "$GIT_DIR/description" 2>/dev/null)
-# Check if the description is unchanged from it's default, and shorten it to
-# a more manageable length if it is
-if expr "$projectdesc" : "Unnamed repository.*$" >/dev/null
-then
- projectdesc="UNNAMED PROJECT"
-fi
-
-recipients=$(git config hooks.mailinglist)
-announcerecipients=$(git config hooks.announcelist)
-envelopesender=$(git config hooks.envelopesender)
-emailprefix=$(git config hooks.emailprefix || echo '[SCM] ')
-custom_showrev=$(git config hooks.showrev)
-maxlines=$(git config hooks.emailmaxlines)
-diffopts=$(git config hooks.diffopts)
-: ${diffopts:="--stat --summary --find-copies-harder"}
-
-# --- Main loop
-# Allow dual mode: run from the command line just like the update hook, or
-# if no arguments are given then run as a hook script
-if [ -n "$1" -a -n "$2" -a -n "$3" ]; then
- # Output to the terminal in command line mode - if someone wanted to
- # resend an email; they could redirect the output to sendmail
- # themselves
- prep_for_email $2 $3 $1 && PAGER= generate_email
-else
- while read oldrev newrev refname
- do
- prep_for_email $oldrev $newrev $refname || continue
- generate_email $maxlines | send_mail
- done
-fi
diff --git a/contrib/hooks/pre-auto-gc-battery b/contrib/hooks/pre-auto-gc-battery
deleted file mode 100755
index 7ba78c4dff..0000000000
--- a/contrib/hooks/pre-auto-gc-battery
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/sh
-#
-# An example hook script to verify if you are on battery, in case you
-# are running Linux or OS X. Called by git-gc --auto with no arguments.
-# The hook should exit with non-zero status after issuing an appropriate
-# message if it wants to stop the auto repacking.
-#
-# This hook is stored in the contrib/hooks directory. Your distribution
-# may have put this somewhere else. If you want to use this hook, you
-# should make this script executable then link to it in the repository
-# you would like to use it in.
-#
-# For example, if the hook is stored in
-# /usr/share/git-core/contrib/hooks/pre-auto-gc-battery:
-#
-# cd /path/to/your/repository.git
-# ln -sf /usr/share/git-core/contrib/hooks/pre-auto-gc-battery \
-# hooks/pre-auto-gc
-
-if test -x /sbin/on_ac_power && (/sbin/on_ac_power;test $? -ne 1)
-then
- exit 0
-elif test "$(cat /sys/class/power_supply/AC/online 2>/dev/null)" = 1
-then
- exit 0
-elif grep -q 'on-line' /proc/acpi/ac_adapter/AC/state 2>/dev/null
-then
- exit 0
-elif grep -q '0x01$' /proc/apm 2>/dev/null
-then
- exit 0
-elif grep -q "AC Power \+: 1" /proc/pmu/info 2>/dev/null
-then
- exit 0
-elif test -x /usr/bin/pmset && /usr/bin/pmset -g batt |
- grep -q "drawing from 'AC Power'"
-then
- exit 0
-fi
-
-echo "Auto packing deferred; not on AC"
-exit 1
diff --git a/contrib/hooks/setgitperms.perl b/contrib/hooks/setgitperms.perl
deleted file mode 100755
index 2770a1b1d2..0000000000
--- a/contrib/hooks/setgitperms.perl
+++ /dev/null
@@ -1,214 +0,0 @@
-#!/usr/bin/perl
-#
-# Copyright (c) 2006 Josh England
-#
-# This script can be used to save/restore full permissions and ownership data
-# within a git working tree.
-#
-# To save permissions/ownership data, place this script in your .git/hooks
-# directory and enable a `pre-commit` hook with the following lines:
-# #!/bin/sh
-# SUBDIRECTORY_OK=1 . git-sh-setup
-# $GIT_DIR/hooks/setgitperms.perl -r
-#
-# To restore permissions/ownership data, place this script in your .git/hooks
-# directory and enable a `post-merge` and `post-checkout` hook with the
-# following lines:
-# #!/bin/sh
-# SUBDIRECTORY_OK=1 . git-sh-setup
-# $GIT_DIR/hooks/setgitperms.perl -w
-#
-use strict;
-use Getopt::Long;
-use File::Find;
-use File::Basename;
-
-my $usage =
-"usage: setgitperms.perl [OPTION]... <--read|--write>
-This program uses a file `.gitmeta` to store/restore permissions and uid/gid
-info for all files/dirs tracked by git in the repository.
-
----------------------------------Read Mode-------------------------------------
--r, --read Reads perms/etc from working dir into a .gitmeta file
--s, --stdout Output to stdout instead of .gitmeta
--d, --diff Show unified diff of perms file (XOR with --stdout)
-
----------------------------------Write Mode------------------------------------
--w, --write Modify perms/etc in working dir to match the .gitmeta file
--v, --verbose Be verbose
-
-\n";
-
-my ($stdout, $showdiff, $verbose, $read_mode, $write_mode);
-
-if ((@ARGV < 0) || !GetOptions(
- "stdout", \$stdout,
- "diff", \$showdiff,
- "read", \$read_mode,
- "write", \$write_mode,
- "verbose", \$verbose,
- )) { die $usage; }
-die $usage unless ($read_mode xor $write_mode);
-
-my $topdir = `git rev-parse --show-cdup` or die "\n"; chomp $topdir;
-my $gitdir = $topdir . '.git';
-my $gitmeta = $topdir . '.gitmeta';
-
-if ($write_mode) {
- # Update the working dir permissions/ownership based on data from .gitmeta
- open (IN, "<$gitmeta") or die "Could not open $gitmeta for reading: $!\n";
- while (defined ($_ = <IN>)) {
- chomp;
- if (/^(.*) mode=(\S+)\s+uid=(\d+)\s+gid=(\d+)/) {
- # Compare recorded perms to actual perms in the working dir
- my ($path, $mode, $uid, $gid) = ($1, $2, $3, $4);
- my $fullpath = $topdir . $path;
- my (undef,undef,$wmode,undef,$wuid,$wgid) = lstat($fullpath);
- $wmode = sprintf "%04o", $wmode & 07777;
- if ($mode ne $wmode) {
- $verbose && print "Updating permissions on $path: old=$wmode, new=$mode\n";
- chmod oct($mode), $fullpath;
- }
- if ($uid != $wuid || $gid != $wgid) {
- if ($verbose) {
- # Print out user/group names instead of uid/gid
- my $pwname = getpwuid($uid);
- my $grpname = getgrgid($gid);
- my $wpwname = getpwuid($wuid);
- my $wgrpname = getgrgid($wgid);
- $pwname = $uid if !defined $pwname;
- $grpname = $gid if !defined $grpname;
- $wpwname = $wuid if !defined $wpwname;
- $wgrpname = $wgid if !defined $wgrpname;
-
- print "Updating uid/gid on $path: old=$wpwname/$wgrpname, new=$pwname/$grpname\n";
- }
- chown $uid, $gid, $fullpath;
- }
- }
- else {
- warn "Invalid input format in $gitmeta:\n\t$_\n";
- }
- }
- close IN;
-}
-elsif ($read_mode) {
- # Handle merge conflicts in the .gitperms file
- if (-e "$gitdir/MERGE_MSG") {
- if (`grep ====== $gitmeta`) {
- # Conflict not resolved -- abort the commit
- print "PERMISSIONS/OWNERSHIP CONFLICT\n";
- print " Resolve the conflict in the $gitmeta file and then run\n";
- print " `.git/hooks/setgitperms.perl --write` to reconcile.\n";
- exit 1;
- }
- elsif (`grep $gitmeta $gitdir/MERGE_MSG`) {
- # A conflict in .gitmeta has been manually resolved. Verify that
- # the working dir perms matches the current .gitmeta perms for
- # each file/dir that conflicted.
- # This is here because a `setgitperms.perl --write` was not
- # performed due to a merge conflict, so permissions/ownership
- # may not be consistent with the manually merged .gitmeta file.
- my @conflict_diff = `git show \$(cat $gitdir/MERGE_HEAD)`;
- my @conflict_files;
- my $metadiff = 0;
-
- # Build a list of files that conflicted from the .gitmeta diff
- foreach my $line (@conflict_diff) {
- if ($line =~ m|^diff --git a/$gitmeta b/$gitmeta|) {
- $metadiff = 1;
- }
- elsif ($line =~ /^diff --git/) {
- $metadiff = 0;
- }
- elsif ($metadiff && $line =~ /^\+(.*) mode=/) {
- push @conflict_files, $1;
- }
- }
-
- # Verify that each conflict file now has permissions consistent
- # with the .gitmeta file
- foreach my $file (@conflict_files) {
- my $absfile = $topdir . $file;
- my $gm_entry = `grep "^$file mode=" $gitmeta`;
- if ($gm_entry =~ /mode=(\d+) uid=(\d+) gid=(\d+)/) {
- my ($gm_mode, $gm_uid, $gm_gid) = ($1, $2, $3);
- my (undef,undef,$mode,undef,$uid,$gid) = lstat("$absfile");
- $mode = sprintf("%04o", $mode & 07777);
- if (($gm_mode ne $mode) || ($gm_uid != $uid)
- || ($gm_gid != $gid)) {
- print "PERMISSIONS/OWNERSHIP CONFLICT\n";
- print " Mismatch found for file: $file\n";
- print " Run `.git/hooks/setgitperms.perl --write` to reconcile.\n";
- exit 1;
- }
- }
- else {
- print "Warning! Permissions/ownership no longer being tracked for file: $file\n";
- }
- }
- }
- }
-
- # No merge conflicts -- write out perms/ownership data to .gitmeta file
- unless ($stdout) {
- open (OUT, ">$gitmeta.tmp") or die "Could not open $gitmeta.tmp for writing: $!\n";
- }
-
- my @files = `git ls-files`;
- my %dirs;
-
- foreach my $path (@files) {
- chomp $path;
- # We have to manually add stats for parent directories
- my $parent = dirname($path);
- while (!exists $dirs{$parent}) {
- $dirs{$parent} = 1;
- next if $parent eq '.';
- printstats($parent);
- $parent = dirname($parent);
- }
- # Now the git-tracked file
- printstats($path);
- }
-
- # diff the temporary metadata file to see if anything has changed
- # If no metadata has changed, don't overwrite the real file
- # This is just so `git commit -a` doesn't try to commit a bogus update
- unless ($stdout) {
- if (! -e $gitmeta) {
- rename "$gitmeta.tmp", $gitmeta;
- }
- else {
- my $diff = `diff -U 0 $gitmeta $gitmeta.tmp`;
- if ($diff ne '') {
- rename "$gitmeta.tmp", $gitmeta;
- }
- else {
- unlink "$gitmeta.tmp";
- }
- if ($showdiff) {
- print $diff;
- }
- }
- close OUT;
- }
- # Make sure the .gitmeta file is tracked
- system("git add $gitmeta");
-}
-
-
-sub printstats {
- my $path = $_[0];
- $path =~ s/@/\@/g;
- my (undef,undef,$mode,undef,$uid,$gid) = lstat($path);
- $path =~ s/%/\%/g;
- if ($stdout) {
- print $path;
- printf " mode=%04o uid=$uid gid=$gid\n", $mode & 07777;
- }
- else {
- print OUT $path;
- printf OUT " mode=%04o uid=$uid gid=$gid\n", $mode & 07777;
- }
-}
diff --git a/contrib/hooks/update-paranoid b/contrib/hooks/update-paranoid
deleted file mode 100755
index 0092d67b8a..0000000000
--- a/contrib/hooks/update-paranoid
+++ /dev/null
@@ -1,421 +0,0 @@
-#!/usr/bin/perl
-
-use strict;
-use File::Spec;
-
-$ENV{PATH} = '/opt/git/bin';
-my $acl_git = '/vcs/acls.git';
-my $acl_branch = 'refs/heads/master';
-my $debug = 0;
-
-=doc
-Invoked as: update refname old-sha1 new-sha1
-
-This script is run by git-receive-pack once for each ref that the
-client is trying to modify. If we exit with a non-zero exit value
-then the update for that particular ref is denied, but updates for
-other refs in the same run of receive-pack may still be allowed.
-
-We are run after the objects have been uploaded, but before the
-ref is actually modified. We take advantage of that fact when we
-look for "new" commits and tags (the new objects won't show up in
-`rev-list --all`).
-
-This script loads and parses the content of the config file
-"users/$this_user.acl" from the $acl_branch commit of $acl_git ODB.
-The acl file is a git-config style file, but uses a slightly more
-restricted syntax as the Perl parser contained within this script
-is not nearly as permissive as git-config.
-
-Example:
-
- [user]
- committer = John Doe <john.doe@example.com>
- committer = John R. Doe <john.doe@example.com>
-
- [repository "acls"]
- allow = heads/master
- allow = CDUR for heads/jd/
- allow = C for ^tags/v\\d+$
-
-For all new commit or tag objects the committer (or tagger) line
-within the object must exactly match one of the user.committer
-values listed in the acl file ("HEAD:users/$this_user.acl").
-
-For a branch to be modified an allow line within the matching
-repository section must be matched for both the refname and the
-opcode.
-
-Repository sections are matched on the basename of the repository
-(after removing the .git suffix).
-
-The opcode abbreviations are:
-
- C: create new ref
- D: delete existing ref
- U: fast-forward existing ref (no commit loss)
- R: rewind/rebase existing ref (commit loss)
-
-if no opcodes are listed before the "for" keyword then "U" (for
-fast-forward update only) is assumed as this is the most common
-usage.
-
-Refnames are matched by always assuming a prefix of "refs/".
-This hook forbids pushing or deleting anything not under "refs/".
-
-Refnames that start with ^ are Perl regular expressions, and the ^
-is kept as part of the regexp. \\ is needed to get just one \, so
-\\d expands to \d in Perl. The 3rd allow line above is an example.
-
-Refnames that don't start with ^ but that end with / are prefix
-matches (2nd allow line above); all other refnames are strict
-equality matches (1st allow line).
-
-Anything pushed to "heads/" (ok, really "refs/heads/") must be
-a commit. Tags are not permitted here.
-
-Anything pushed to "tags/" (err, really "refs/tags/") must be an
-annotated tag. Commits, blobs, trees, etc. are not permitted here.
-Annotated tag signatures aren't checked, nor are they required.
-
-The special subrepository of 'info/new-commit-check' can
-be created and used to allow users to push new commits and
-tags from another local repository to this one, even if they
-aren't the committer/tagger of those objects. In a nut shell
-the info/new-commit-check directory is a Git repository whose
-objects/info/alternates file lists this repository and all other
-possible sources, and whose refs subdirectory contains symlinks
-to this repository's refs subdirectory, and to all other possible
-sources refs subdirectories. Yes, this means that you cannot
-use packed-refs in those repositories as they won't be resolved
-correctly.
-
-=cut
-
-my $git_dir = $ENV{GIT_DIR};
-my $new_commit_check = "$git_dir/info/new-commit-check";
-my $ref = $ARGV[0];
-my $old = $ARGV[1];
-my $new = $ARGV[2];
-my $new_type;
-my ($this_user) = getpwuid $<; # REAL_USER_ID
-my $repository_name;
-my %user_committer;
-my @allow_rules;
-my @path_rules;
-my %diff_cache;
-
-sub deny ($) {
- print STDERR "-Deny- $_[0]\n" if $debug;
- print STDERR "\ndenied: $_[0]\n\n";
- exit 1;
-}
-
-sub grant ($) {
- print STDERR "-Grant- $_[0]\n" if $debug;
- exit 0;
-}
-
-sub info ($) {
- print STDERR "-Info- $_[0]\n" if $debug;
-}
-
-sub git_value (@) {
- open(T,'-|','git',@_); local $_ = <T>; chop; close T; $_;
-}
-
-sub match_string ($$) {
- my ($acl_n, $ref) = @_;
- ($acl_n eq $ref)
- || ($acl_n =~ m,/$, && substr($ref,0,length $acl_n) eq $acl_n)
- || ($acl_n =~ m,^\^, && $ref =~ m:$acl_n:);
-}
-
-sub parse_config ($$$$) {
- my $data = shift;
- local $ENV{GIT_DIR} = shift;
- my $br = shift;
- my $fn = shift;
- return unless git_value('rev-list','--max-count=1',$br,'--',$fn);
- info "Loading $br:$fn";
- open(I,'-|','git','cat-file','blob',"$br:$fn");
- my $section = '';
- while (<I>) {
- chomp;
- if (/^\s*$/ || /^\s*#/) {
- } elsif (/^\[([a-z]+)\]$/i) {
- $section = lc $1;
- } elsif (/^\[([a-z]+)\s+"(.*)"\]$/i) {
- $section = join('.',lc $1,$2);
- } elsif (/^\s*([a-z][a-z0-9]+)\s*=\s*(.*?)\s*$/i) {
- push @{$data->{join('.',$section,lc $1)}}, $2;
- } else {
- deny "bad config file line $. in $br:$fn";
- }
- }
- close I;
-}
-
-sub all_new_committers () {
- local $ENV{GIT_DIR} = $git_dir;
- $ENV{GIT_DIR} = $new_commit_check if -d $new_commit_check;
-
- info "Getting committers of new commits.";
- my %used;
- open(T,'-|','git','rev-list','--pretty=raw',$new,'--not','--all');
- while (<T>) {
- next unless s/^committer //;
- chop;
- s/>.*$/>/;
- info "Found $_." unless $used{$_}++;
- }
- close T;
- info "No new commits." unless %used;
- keys %used;
-}
-
-sub all_new_taggers () {
- my %exists;
- open(T,'-|','git','for-each-ref','--format=%(objectname)','refs/tags');
- while (<T>) {
- chop;
- $exists{$_} = 1;
- }
- close T;
-
- info "Getting taggers of new tags.";
- my %used;
- my $obj = $new;
- my $obj_type = $new_type;
- while ($obj_type eq 'tag') {
- last if $exists{$obj};
- $obj_type = '';
- open(T,'-|','git','cat-file','tag',$obj);
- while (<T>) {
- chop;
- if (/^object ([a-z0-9]{40})$/) {
- $obj = $1;
- } elsif (/^type (.+)$/) {
- $obj_type = $1;
- } elsif (s/^tagger //) {
- s/>.*$/>/;
- info "Found $_." unless $used{$_}++;
- last;
- }
- }
- close T;
- }
- info "No new tags." unless %used;
- keys %used;
-}
-
-sub check_committers (@) {
- my @bad;
- foreach (@_) { push @bad, $_ unless $user_committer{$_}; }
- if (@bad) {
- print STDERR "\n";
- print STDERR "You are not $_.\n" foreach (sort @bad);
- deny "You cannot push changes not committed by you.";
- }
-}
-
-sub load_diff ($) {
- my $base = shift;
- my $d = $diff_cache{$base};
- unless ($d) {
- local $/ = "\0";
- my %this_diff;
- if ($base =~ /^0{40}$/) {
- # Don't load the diff at all; we are making the
- # branch and have no base to compare to in this
- # case. A file level ACL makes no sense in this
- # context. Having an empty diff will allow the
- # branch creation.
- #
- } else {
- open(T,'-|','git','diff-tree',
- '-r','--name-status','-z',
- $base,$new) or return undef;
- while (<T>) {
- my $op = $_;
- chop $op;
-
- my $path = <T>;
- chop $path;
-
- $this_diff{$path} = $op;
- }
- close T or return undef;
- }
- $d = \%this_diff;
- $diff_cache{$base} = $d;
- }
- return $d;
-}
-
-deny "No GIT_DIR inherited from caller" unless $git_dir;
-deny "Need a ref name" unless $ref;
-deny "Refusing funny ref $ref" unless $ref =~ s,^refs/,,;
-deny "Bad old value $old" unless $old =~ /^[a-z0-9]{40}$/;
-deny "Bad new value $new" unless $new =~ /^[a-z0-9]{40}$/;
-deny "Cannot determine who you are." unless $this_user;
-grant "No change requested." if $old eq $new;
-
-$repository_name = File::Spec->rel2abs($git_dir);
-$repository_name =~ m,/([^/]+)(?:\.git|/\.git)$,;
-$repository_name = $1;
-info "Updating in '$repository_name'.";
-
-my $op;
-if ($old =~ /^0{40}$/) { $op = 'C'; }
-elsif ($new =~ /^0{40}$/) { $op = 'D'; }
-else { $op = 'R'; }
-
-# This is really an update (fast-forward) if the
-# merge base of $old and $new is $old.
-#
-$op = 'U' if ($op eq 'R'
- && $ref =~ m,^heads/,
- && $old eq git_value('merge-base',$old,$new));
-
-# Load the user's ACL file. Expand groups (user.memberof) one level.
-{
- my %data = ('user.committer' => []);
- parse_config(\%data,$acl_git,$acl_branch,"external/$repository_name.acl");
-
- %data = (
- 'user.committer' => $data{'user.committer'},
- 'user.memberof' => [],
- );
- parse_config(\%data,$acl_git,$acl_branch,"users/$this_user.acl");
-
- %user_committer = map {$_ => $_} @{$data{'user.committer'}};
- my $rule_key = "repository.$repository_name.allow";
- my $rules = $data{$rule_key} || [];
-
- foreach my $group (@{$data{'user.memberof'}}) {
- my %g;
- parse_config(\%g,$acl_git,$acl_branch,"groups/$group.acl");
- my $group_rules = $g{$rule_key};
- push @$rules, @$group_rules if $group_rules;
- }
-
-RULE:
- foreach (@$rules) {
- while (/\${user\.([a-z][a-zA-Z0-9]+)}/) {
- my $k = lc $1;
- my $v = $data{"user.$k"};
- next RULE unless defined $v;
- next RULE if @$v != 1;
- next RULE unless defined $v->[0];
- s/\${user\.$k}/$v->[0]/g;
- }
-
- if (/^([AMD ]+)\s+of\s+([^\s]+)\s+for\s+([^\s]+)\s+diff\s+([^\s]+)$/) {
- my ($ops, $pth, $ref, $bst) = ($1, $2, $3, $4);
- $ops =~ s/ //g;
- $pth =~ s/\\\\/\\/g;
- $ref =~ s/\\\\/\\/g;
- push @path_rules, [$ops, $pth, $ref, $bst];
- } elsif (/^([AMD ]+)\s+of\s+([^\s]+)\s+for\s+([^\s]+)$/) {
- my ($ops, $pth, $ref) = ($1, $2, $3);
- $ops =~ s/ //g;
- $pth =~ s/\\\\/\\/g;
- $ref =~ s/\\\\/\\/g;
- push @path_rules, [$ops, $pth, $ref, $old];
- } elsif (/^([CDRU ]+)\s+for\s+([^\s]+)$/) {
- my $ops = $1;
- my $ref = $2;
- $ops =~ s/ //g;
- $ref =~ s/\\\\/\\/g;
- push @allow_rules, [$ops, $ref];
- } elsif (/^for\s+([^\s]+)$/) {
- # Mentioned, but nothing granted?
- } elsif (/^[^\s]+$/) {
- s/\\\\/\\/g;
- push @allow_rules, ['U', $_];
- }
- }
-}
-
-if ($op ne 'D') {
- $new_type = git_value('cat-file','-t',$new);
-
- if ($ref =~ m,^heads/,) {
- deny "$ref must be a commit." unless $new_type eq 'commit';
- } elsif ($ref =~ m,^tags/,) {
- deny "$ref must be an annotated tag." unless $new_type eq 'tag';
- }
-
- check_committers (all_new_committers);
- check_committers (all_new_taggers) if $new_type eq 'tag';
-}
-
-info "$this_user wants $op for $ref";
-foreach my $acl_entry (@allow_rules) {
- my ($acl_ops, $acl_n) = @$acl_entry;
- next unless $acl_ops =~ /^[CDRU]+$/; # Uhh.... shouldn't happen.
- next unless $acl_n;
- next unless $op =~ /^[$acl_ops]$/;
- next unless match_string $acl_n, $ref;
-
- # Don't test path rules on branch deletes.
- #
- grant "Allowed by: $acl_ops for $acl_n" if $op eq 'D';
-
- # Aggregate matching path rules; allow if there aren't
- # any matching this ref.
- #
- my %pr;
- foreach my $p_entry (@path_rules) {
- my ($p_ops, $p_n, $p_ref, $p_bst) = @$p_entry;
- next unless $p_ref;
- push @{$pr{$p_bst}}, $p_entry if match_string $p_ref, $ref;
- }
- grant "Allowed by: $acl_ops for $acl_n" unless %pr;
-
- # Allow only if all changes against a single base are
- # allowed by file path rules.
- #
- my @bad;
- foreach my $p_bst (keys %pr) {
- my $diff_ref = load_diff $p_bst;
- deny "Cannot difference trees." unless ref $diff_ref;
-
- my %fd = %$diff_ref;
- foreach my $p_entry (@{$pr{$p_bst}}) {
- my ($p_ops, $p_n, $p_ref, $p_bst) = @$p_entry;
- next unless $p_ops =~ /^[AMD]+$/;
- next unless $p_n;
-
- foreach my $f_n (keys %fd) {
- my $f_op = $fd{$f_n};
- next unless $f_op;
- next unless $f_op =~ /^[$p_ops]$/;
- delete $fd{$f_n} if match_string $p_n, $f_n;
- }
- last unless %fd;
- }
-
- if (%fd) {
- push @bad, [$p_bst, \%fd];
- } else {
- # All changes relative to $p_bst were allowed.
- #
- grant "Allowed by: $acl_ops for $acl_n diff $p_bst";
- }
- }
-
- foreach my $bad_ref (@bad) {
- my ($p_bst, $fd) = @$bad_ref;
- print STDERR "\n";
- print STDERR "Not allowed to make the following changes:\n";
- print STDERR "(base: $p_bst)\n";
- foreach my $f_n (sort keys %$fd) {
- print STDERR " $fd->{$f_n} $f_n\n";
- }
- }
- deny "You are not permitted to $op $ref";
-}
-close A;
-deny "You are not permitted to $op $ref";
diff --git a/contrib/mw-to-git/.gitignore b/contrib/mw-to-git/.gitignore
deleted file mode 100644
index ae545b013d..0000000000
--- a/contrib/mw-to-git/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-git-remote-mediawiki
-git-mw
diff --git a/contrib/mw-to-git/.perlcriticrc b/contrib/mw-to-git/.perlcriticrc
deleted file mode 100644
index b7333267ad..0000000000
--- a/contrib/mw-to-git/.perlcriticrc
+++ /dev/null
@@ -1,28 +0,0 @@
-# These 3 rules demand to add the s, m and x flag to *every* regexp. This is
-# overkill and would be harmful for readability.
-[-RegularExpressions::RequireExtendedFormatting]
-[-RegularExpressions::RequireDotMatchAnything]
-[-RegularExpressions::RequireLineBoundaryMatching]
-
-# This rule says that builtin functions should not be called with parentheses
-# e.g.: (taken from CPAN's documentation)
-# open($handle, '>', $filename); #not ok
-# open $handle, '>', $filename; #ok
-# Applying such a rule would mean modifying a huge number of lines for a
-# question of style.
-[-CodeLayout::ProhibitParensWithBuiltins]
-
-# This rule states that each system call should have its return value checked
-# The problem is that it includes the print call. Checking every print call's
-# return value would be harmful to the code readability.
-# This configuration keeps all default function but print.
-[InputOutput::RequireCheckedSyscalls]
-functions = open say close
-
-# This rule demands to add a dependency for the Readonly module. This is not
-# wished.
-[-ValuesAndExpressions::ProhibitConstantPragma]
-
-# This rule is not really useful (rather a question of style) and produces many
-# warnings among the code.
-[-ValuesAndExpressions::ProhibitNoisyQuotes]
diff --git a/contrib/mw-to-git/Git/Mediawiki.pm b/contrib/mw-to-git/Git/Mediawiki.pm
deleted file mode 100644
index 629c0cea44..0000000000
--- a/contrib/mw-to-git/Git/Mediawiki.pm
+++ /dev/null
@@ -1,101 +0,0 @@
-package Git::Mediawiki;
-
-require v5.26;
-use strict;
-use POSIX;
-use Git;
-
-BEGIN {
-
-our ($VERSION, @ISA, @EXPORT, @EXPORT_OK);
-
-# Totally unstable API.
-$VERSION = '0.01';
-
-require Exporter;
-
-@ISA = qw(Exporter);
-
-@EXPORT = ();
-
-# Methods which can be called as standalone functions as well:
-@EXPORT_OK = qw(clean_filename smudge_filename connect_maybe
- EMPTY HTTP_CODE_OK HTTP_CODE_PAGE_NOT_FOUND);
-}
-
-# Mediawiki filenames can contain forward slashes. This variable decides by which pattern they should be replaced
-use constant SLASH_REPLACEMENT => '%2F';
-
-# Used to test for empty strings
-use constant EMPTY => q{};
-
-# HTTP codes
-use constant HTTP_CODE_OK => 200;
-use constant HTTP_CODE_PAGE_NOT_FOUND => 404;
-
-sub clean_filename {
- my $filename = shift;
- $filename =~ s{@{[SLASH_REPLACEMENT]}}{/}g;
- # [, ], |, {, and } are forbidden by MediaWiki, even URL-encoded.
- # Do a variant of URL-encoding, i.e. looks like URL-encoding,
- # but with _ added to prevent MediaWiki from thinking this is
- # an actual special character.
- $filename =~ s/[\[\]\{\}\|]/sprintf("_%%_%x", ord($&))/ge;
- # If we use the uri escape before
- # we should unescape here, before anything
-
- return $filename;
-}
-
-sub smudge_filename {
- my $filename = shift;
- $filename =~ s{/}{@{[SLASH_REPLACEMENT]}}g;
- $filename =~ s/ /_/g;
- # Decode forbidden characters encoded in clean_filename
- $filename =~ s/_%_([0-9a-fA-F][0-9a-fA-F])/sprintf('%c', hex($1))/ge;
- return substr($filename, 0, NAME_MAX-length('.mw'));
-}
-
-sub connect_maybe {
- my $wiki = shift;
- if ($wiki) {
- return $wiki;
- }
-
- my $remote_name = shift;
- my $remote_url = shift;
- my ($wiki_login, $wiki_password, $wiki_domain);
-
- $wiki_login = Git::config("remote.${remote_name}.mwLogin");
- $wiki_password = Git::config("remote.${remote_name}.mwPassword");
- $wiki_domain = Git::config("remote.${remote_name}.mwDomain");
-
- $wiki = MediaWiki::API->new;
- $wiki->{config}->{api_url} = "${remote_url}/api.php";
- if ($wiki_login) {
- my %credential = (
- 'url' => $remote_url,
- 'username' => $wiki_login,
- 'password' => $wiki_password
- );
- Git::credential(\%credential);
- my $request = {lgname => $credential{username},
- lgpassword => $credential{password},
- lgdomain => $wiki_domain};
- if ($wiki->login($request)) {
- Git::credential(\%credential, 'approve');
- print {*STDERR} qq(Logged in mediawiki user "$credential{username}".\n);
- } else {
- print {*STDERR} qq(Failed to log in mediawiki user "$credential{username}" on ${remote_url}\n);
- print {*STDERR} ' (error ' .
- $wiki->{error}->{code} . ': ' .
- $wiki->{error}->{details} . ")\n";
- Git::credential(\%credential, 'reject');
- exit 1;
- }
- }
-
- return $wiki;
-}
-
-1; # Famous last words
diff --git a/contrib/mw-to-git/Makefile b/contrib/mw-to-git/Makefile
deleted file mode 100644
index 497ac434d6..0000000000
--- a/contrib/mw-to-git/Makefile
+++ /dev/null
@@ -1,61 +0,0 @@
-#
-# Copyright (C) 2013
-# Matthieu Moy <Matthieu.Moy@imag.fr>
-#
-# To build and test:
-#
-# make
-# bin-wrapper/git mw preview Some_page.mw
-# bin-wrapper/git clone mediawiki::http://example.com/wiki/
-#
-# To install, run Git's toplevel 'make install' then run:
-#
-# make install
-
-# The default target of this Makefile is...
-all::
-
-GIT_MEDIAWIKI_PM=Git/Mediawiki.pm
-SCRIPT_PERL=git-remote-mediawiki.perl
-SCRIPT_PERL+=git-mw.perl
-GIT_ROOT_DIR=../..
-HERE=contrib/mw-to-git/
-
-INSTALL = install
-
-SCRIPT_PERL_FULL=$(patsubst %,$(HERE)/%,$(SCRIPT_PERL))
-INSTLIBDIR=$(shell $(MAKE) -C $(GIT_ROOT_DIR)/ \
- -s --no-print-directory prefix=$(prefix) \
- perllibdir=$(perllibdir) perllibdir)
-DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
-INSTLIBDIR_SQ = $(subst ','\'',$(INSTLIBDIR))
-
-all:: build
-
-test: all
- $(MAKE) -C t
-
-check: perlcritic test
-
-install_pm:
- $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(INSTLIBDIR_SQ)/Git'
- $(INSTALL) -m 644 $(GIT_MEDIAWIKI_PM) \
- '$(DESTDIR_SQ)$(INSTLIBDIR_SQ)/$(GIT_MEDIAWIKI_PM)'
-
-build:
- $(MAKE) -C $(GIT_ROOT_DIR) SCRIPT_PERL="$(SCRIPT_PERL_FULL)" \
- build-perl-script
-
-install: install_pm
- $(MAKE) -C $(GIT_ROOT_DIR) SCRIPT_PERL="$(SCRIPT_PERL_FULL)" \
- install-perl-script
-
-clean:
- $(MAKE) -C $(GIT_ROOT_DIR) SCRIPT_PERL="$(SCRIPT_PERL_FULL)" \
- clean-perl-script
-
-perlcritic:
- perlcritic -5 $(SCRIPT_PERL)
- -perlcritic -2 $(SCRIPT_PERL)
-
-.PHONY: all test check install_pm install clean perlcritic
diff --git a/contrib/mw-to-git/bin-wrapper/git b/contrib/mw-to-git/bin-wrapper/git
deleted file mode 100755
index 6663ae57e8..0000000000
--- a/contrib/mw-to-git/bin-wrapper/git
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-
-# git executable wrapper script for Git-Mediawiki to run tests without
-# installing all the scripts and perl packages.
-
-GIT_ROOT_DIR=../../..
-GIT_EXEC_PATH=$(cd "$(dirname "$0")" && cd ${GIT_ROOT_DIR} && pwd)
-
-GITPERLLIB="$GIT_EXEC_PATH"'/contrib/mw-to-git'"${GITPERLLIB:+:$GITPERLLIB}"
-PATH="$GIT_EXEC_PATH"'/contrib/mw-to-git:'"$PATH"
-
-export GITPERLLIB PATH
-
-exec "${GIT_EXEC_PATH}/bin-wrappers/git" "$@"
diff --git a/contrib/mw-to-git/git-mw.perl b/contrib/mw-to-git/git-mw.perl
deleted file mode 100755
index eb52a53d32..0000000000
--- a/contrib/mw-to-git/git-mw.perl
+++ /dev/null
@@ -1,368 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2013
-# Benoit Person <benoit.person@ensimag.imag.fr>
-# Celestin Matte <celestin.matte@ensimag.imag.fr>
-# License: GPL v2 or later
-
-# Set of tools for git repo with a mediawiki remote.
-# Documentation & bugtracker: https://github.com/Git-Mediawiki/Git-Mediawiki
-
-use strict;
-use warnings;
-
-use Getopt::Long;
-use URI::URL qw(url);
-use LWP::UserAgent;
-use HTML::TreeBuilder;
-
-use Git;
-use MediaWiki::API;
-use Git::Mediawiki qw(clean_filename connect_maybe
- EMPTY HTTP_CODE_PAGE_NOT_FOUND);
-
-# By default, use UTF-8 to communicate with Git and the user
-binmode STDERR, ':encoding(UTF-8)';
-binmode STDOUT, ':encoding(UTF-8)';
-
-# Global parameters
-my $verbose = 0;
-sub v_print {
- if ($verbose) {
- return print {*STDERR} @_;
- }
- return;
-}
-
-# Preview parameters
-my $file_name = EMPTY;
-my $remote_name = EMPTY;
-my $preview_file_name = EMPTY;
-my $autoload = 0;
-sub file {
- $file_name = shift;
- return $file_name;
-}
-
-my %commands = (
- 'help' =>
- [\&help, {}, \&help],
- 'preview' =>
- [\&preview, {
- '<>' => \&file,
- 'output|o=s' => \$preview_file_name,
- 'remote|r=s' => \$remote_name,
- 'autoload|a' => \$autoload
- }, \&preview_help]
-);
-
-# Search for sub-command
-my $cmd = $commands{'help'};
-for (0..@ARGV-1) {
- if (defined $commands{$ARGV[$_]}) {
- $cmd = $commands{$ARGV[$_]};
- splice @ARGV, $_, 1;
- last;
- }
-};
-GetOptions( %{$cmd->[1]},
- 'help|h' => \&{$cmd->[2]},
- 'verbose|v' => \$verbose);
-
-# Launch command
-&{$cmd->[0]};
-
-############################# Preview Functions ################################
-
-sub preview_help {
- print {*STDOUT} <<'END';
-USAGE: git mw preview [--remote|-r <remote name>] [--autoload|-a]
- [--output|-o <output filename>] [--verbose|-v]
- <blob> | <filename>
-
-DESCRIPTION:
-Preview is an utiliy to preview local content of a mediawiki repo as if it was
-pushed on the remote.
-
-For that, preview searches for the remote name of the current branch's
-upstream if --remote is not set. If that remote is not found or if it
-is not a mediawiki, it lists all mediawiki remotes configured and asks
-you to replay your command with the --remote option set properly.
-
-Then, it searches for a file named 'filename'. If it's not found in
-the current dir, it will assume it's a blob.
-
-The content retrieved in the file (or in the blob) will then be parsed
-by the remote mediawiki and combined with a template retrieved from
-the mediawiki.
-
-Finally, preview will save the HTML result in a file. and autoload it
-in your default web browser if the option --autoload is present.
-
-OPTIONS:
- -r <remote name>, --remote <remote name>
- If the remote is a mediawiki, the template and the parse engine
- used for the preview will be those of that remote.
- If not, a list of valid remotes will be shown.
-
- -a, --autoload
- Try to load the HTML output in a new tab (or new window) of your
- default web browser.
-
- -o <output filename>, --output <output filename>
- Change the HTML output filename. Default filename is based on the
- input filename with its extension replaced by '.html'.
-
- -v, --verbose
- Show more information on what's going on under the hood.
-END
- exit;
-}
-
-sub preview {
- my $wiki;
- my ($remote_url, $wiki_page_name);
- my ($new_content, $template);
- my $file_content;
-
- if ($file_name eq EMPTY) {
- die "Missing file argument, see `git mw help`\n";
- }
-
- v_print("### Selecting remote\n");
- if ($remote_name eq EMPTY) {
- $remote_name = find_upstream_remote_name();
- if ($remote_name) {
- $remote_url = mediawiki_remote_url_maybe($remote_name);
- }
-
- if (! $remote_url) {
- my @valid_remotes = find_mediawiki_remotes();
-
- if ($#valid_remotes == 0) {
- print {*STDERR} "No mediawiki remote in this repo. \n";
- exit 1;
- } else {
- my $remotes_list = join("\n\t", @valid_remotes);
- print {*STDERR} <<"MESSAGE";
-There are multiple mediawiki remotes, which of:
- ${remotes_list}
-do you want ? Use the -r option to specify the remote.
-MESSAGE
- }
-
- exit 1;
- }
- } else {
- if (!is_valid_remote($remote_name)) {
- die "${remote_name} is not a remote\n";
- }
-
- $remote_url = mediawiki_remote_url_maybe($remote_name);
- if (! $remote_url) {
- die "${remote_name} is not a mediawiki remote\n";
- }
- }
- v_print("selected remote:\n\tname: ${remote_name}\n\turl: ${remote_url}\n");
-
- $wiki = connect_maybe($wiki, $remote_name, $remote_url);
-
- # Read file content
- if (! -e $file_name) {
- $file_content = git_cmd_try {
- Git::command('cat-file', 'blob', $file_name); }
- "%s failed w/ code %d";
-
- if ($file_name =~ /(.+):(.+)/) {
- $file_name = $2;
- }
- } else {
- open my $read_fh, "<", $file_name
- or die "could not open ${file_name}: $!\n";
- $file_content = do { local $/ = undef; <$read_fh> };
- close $read_fh
- or die "unable to close: $!\n";
- }
-
- v_print("### Retrieving template\n");
- ($wiki_page_name = clean_filename($file_name)) =~ s/\.[^.]+$//;
- $template = get_template($remote_url, $wiki_page_name);
-
- v_print("### Parsing local content\n");
- $new_content = $wiki->api({
- action => 'parse',
- text => $file_content,
- title => $wiki_page_name
- }, {
- skip_encoding => 1
- }) or die "No response from remote mediawiki\n";
- $new_content = $new_content->{'parse'}->{'text'}->{'*'};
-
- v_print("### Merging contents\n");
- if ($preview_file_name eq EMPTY) {
- ($preview_file_name = $file_name) =~ s/\.[^.]+$/.html/;
- }
- open(my $save_fh, '>:encoding(UTF-8)', $preview_file_name)
- or die "Could not open: $!\n";
- print {$save_fh} merge_contents($template, $new_content, $remote_url);
- close($save_fh)
- or die "Could not close: $!\n";
-
- v_print("### Results\n");
- if ($autoload) {
- v_print("Launching browser w/ file: ${preview_file_name}");
- system('git', 'web--browse', $preview_file_name);
- } else {
- print {*STDERR} "Preview file saved as: ${preview_file_name}\n";
- }
-
- exit;
-}
-
-# uses global scope variable: $remote_name
-sub merge_contents {
- my $template = shift;
- my $content = shift;
- my $remote_url = shift;
- my ($content_tree, $html_tree, $mw_content_text);
- my $template_content_id = 'bodyContent';
-
- $html_tree = HTML::TreeBuilder->new;
- $html_tree->parse($template);
-
- $content_tree = HTML::TreeBuilder->new;
- $content_tree->parse($content);
-
- $template_content_id = Git::config("remote.${remote_name}.mwIDcontent")
- || $template_content_id;
- v_print("Using '${template_content_id}' as the content ID\n");
-
- $mw_content_text = $html_tree->look_down('id', $template_content_id);
- if (!defined $mw_content_text) {
- print {*STDERR} <<"CONFIG";
-Could not combine the new content with the template. You might want to
-configure `mediawiki.IDContent` in your config:
- git config --add remote.${remote_name}.mwIDcontent <id>
-and re-run the command afterward.
-CONFIG
- exit 1;
- }
- $mw_content_text->delete_content();
- $mw_content_text->push_content($content_tree);
-
- make_links_absolute($html_tree, $remote_url);
-
- return $html_tree->as_HTML;
-}
-
-sub make_links_absolute {
- my $html_tree = shift;
- my $remote_url = shift;
- for (@{ $html_tree->extract_links() }) {
- my ($link, $element, $attr) = @{ $_ };
- my $url = url($link)->canonical;
- if ($url !~ /#/) {
- $element->attr($attr, URI->new_abs($url, $remote_url));
- }
- }
- return $html_tree;
-}
-
-sub is_valid_remote {
- my $remote = shift;
- my @remotes = git_cmd_try {
- Git::command('remote') }
- "%s failed w/ code %d";
- my $found_remote = 0;
- foreach my $remote (@remotes) {
- if ($remote eq $remote) {
- $found_remote = 1;
- last;
- }
- }
- return $found_remote;
-}
-
-sub find_mediawiki_remotes {
- my @remotes = git_cmd_try {
- Git::command('remote'); }
- "%s failed w/ code %d";
- my $remote_url;
- my @valid_remotes = ();
- foreach my $remote (@remotes) {
- $remote_url = mediawiki_remote_url_maybe($remote);
- if ($remote_url) {
- push(@valid_remotes, $remote);
- }
- }
- return @valid_remotes;
-}
-
-sub find_upstream_remote_name {
- my $current_branch = git_cmd_try {
- Git::command_oneline('symbolic-ref', '--short', 'HEAD') }
- "%s failed w/ code %d";
- return Git::config("branch.${current_branch}.remote");
-}
-
-sub mediawiki_remote_url_maybe {
- my $remote = shift;
-
- # Find remote url
- my $remote_url = Git::config("remote.${remote}.url");
- if ($remote_url =~ s/mediawiki::(.*)/$1/) {
- return url($remote_url)->canonical;
- }
-
- return;
-}
-
-sub get_template {
- my $url = shift;
- my $page_name = shift;
- my ($req, $res, $code, $url_after);
-
- $req = LWP::UserAgent->new;
- if ($verbose) {
- $req->show_progress(1);
- }
-
- $res = $req->get("${url}/index.php?title=${page_name}");
- if (!$res->is_success) {
- $code = $res->code;
- $url_after = $res->request()->uri(); # resolve all redirections
- if ($code == HTTP_CODE_PAGE_NOT_FOUND) {
- if ($verbose) {
- print {*STDERR} <<"WARNING";
-Warning: Failed to retrieve '$page_name'. Create it on the mediawiki if you want
-all the links to work properly.
-Trying to use the mediawiki homepage as a fallback template ...
-WARNING
- }
-
- # LWP automatically redirects GET request
- $res = $req->get("${url}/index.php");
- if (!$res->is_success) {
- $url_after = $res->request()->uri(); # resolve all redirections
- die "Failed to get homepage @ ${url_after} w/ code ${code}\n";
- }
- } else {
- die "Failed to get '${page_name}' @ ${url_after} w/ code ${code}\n";
- }
- }
-
- return $res->decoded_content;
-}
-
-############################## Help Functions ##################################
-
-sub help {
- print {*STDOUT} <<'END';
-usage: git mw <command> <args>
-
-git mw commands are:
- help Display help information about git mw
- preview Parse and render local file into HTML
-END
- exit;
-}
diff --git a/contrib/mw-to-git/git-remote-mediawiki.perl b/contrib/mw-to-git/git-remote-mediawiki.perl
deleted file mode 100755
index a5624413dc..0000000000
--- a/contrib/mw-to-git/git-remote-mediawiki.perl
+++ /dev/null
@@ -1,1390 +0,0 @@
-#! /usr/bin/perl
-
-# Copyright (C) 2011
-# Jérémie Nikaes <jeremie.nikaes@ensimag.imag.fr>
-# Arnaud Lacurie <arnaud.lacurie@ensimag.imag.fr>
-# Claire Fousse <claire.fousse@ensimag.imag.fr>
-# David Amouyal <david.amouyal@ensimag.imag.fr>
-# Matthieu Moy <matthieu.moy@grenoble-inp.fr>
-# License: GPL v2 or later
-
-# Gateway between Git and MediaWiki.
-# Documentation & bugtracker: https://github.com/Git-Mediawiki/Git-Mediawiki
-
-use strict;
-use MediaWiki::API;
-use Git;
-use Git::Mediawiki qw(clean_filename smudge_filename connect_maybe
- EMPTY HTTP_CODE_OK);
-use DateTime::Format::ISO8601;
-use warnings;
-
-# By default, use UTF-8 to communicate with Git and the user
-binmode STDERR, ':encoding(UTF-8)';
-binmode STDOUT, ':encoding(UTF-8)';
-
-use URI::Escape;
-
-# It's not always possible to delete pages (may require some
-# privileges). Deleted pages are replaced with this content.
-use constant DELETED_CONTENT => "[[Category:Deleted]]\n";
-
-# It's not possible to create empty pages. New empty files in Git are
-# sent with this content instead.
-use constant EMPTY_CONTENT => "<!-- empty page -->\n";
-
-# used to reflect file creation or deletion in diff.
-use constant NULL_SHA1 => '0000000000000000000000000000000000000000';
-
-# Used on Git's side to reflect empty edit messages on the wiki
-use constant EMPTY_MESSAGE => '*Empty MediaWiki Message*';
-
-# Number of pages taken into account at once in submodule get_mw_page_list
-use constant SLICE_SIZE => 50;
-
-# Number of linked mediafile to get at once in get_linked_mediafiles
-# The query is split in small batches because of the MW API limit of
-# the number of links to be returned (500 links max).
-use constant BATCH_SIZE => 10;
-
-if (@ARGV != 2) {
- exit_error_usage();
-}
-
-my $remotename = $ARGV[0];
-my $url = $ARGV[1];
-
-# Accept both space-separated and multiple keys in config file.
-# Spaces should be written as _ anyway because we'll use chomp.
-my @tracked_pages = split(/[ \n]/, run_git_quoted(["config", "--get-all", "remote.${remotename}.pages"]));
-chomp(@tracked_pages);
-
-# Just like @tracked_pages, but for MediaWiki categories.
-my @tracked_categories = split(/[ \n]/, run_git_quoted(["config", "--get-all", "remote.${remotename}.categories"]));
-chomp(@tracked_categories);
-
-# Just like @tracked_categories, but for MediaWiki namespaces.
-my @tracked_namespaces = split(/[ \n]/, run_git_quoted(["config", "--get-all", "remote.${remotename}.namespaces"]));
-for (@tracked_namespaces) { s/_/ /g; }
-chomp(@tracked_namespaces);
-
-# Import media files on pull
-my $import_media = run_git_quoted(["config", "--get", "--bool", "remote.${remotename}.mediaimport"]);
-chomp($import_media);
-$import_media = ($import_media eq 'true');
-
-# Export media files on push
-my $export_media = run_git_quoted(["config", "--get", "--bool", "remote.${remotename}.mediaexport"]);
-chomp($export_media);
-$export_media = !($export_media eq 'false');
-
-my $wiki_login = run_git_quoted(["config", "--get", "remote.${remotename}.mwLogin"]);
-# Note: mwPassword is discouraged. Use the credential system instead.
-my $wiki_passwd = run_git_quoted(["config", "--get", "remote.${remotename}.mwPassword"]);
-my $wiki_domain = run_git_quoted(["config", "--get", "remote.${remotename}.mwDomain"]);
-chomp($wiki_login);
-chomp($wiki_passwd);
-chomp($wiki_domain);
-
-# Import only last revisions (both for clone and fetch)
-my $shallow_import = run_git_quoted(["config", "--get", "--bool", "remote.${remotename}.shallow"]);
-chomp($shallow_import);
-$shallow_import = ($shallow_import eq 'true');
-
-# Fetch (clone and pull) by revisions instead of by pages. This behavior
-# is more efficient when we have a wiki with lots of pages and we fetch
-# the revisions quite often so that they concern only few pages.
-# Possible values:
-# - by_rev: perform one query per new revision on the remote wiki
-# - by_page: query each tracked page for new revision
-my $fetch_strategy = run_git_quoted(["config", "--get", "remote.${remotename}.fetchStrategy"]);
-if (!$fetch_strategy) {
- $fetch_strategy = run_git_quoted(["config", "--get", "mediawiki.fetchStrategy"]);
-}
-chomp($fetch_strategy);
-if (!$fetch_strategy) {
- $fetch_strategy = 'by_page';
-}
-
-# Remember the timestamp corresponding to a revision id.
-my %basetimestamps;
-
-# Dumb push: don't update notes and mediawiki ref to reflect the last push.
-#
-# Configurable with mediawiki.dumbPush, or per-remote with
-# remote.<remotename>.dumbPush.
-#
-# This means the user will have to re-import the just-pushed
-# revisions. On the other hand, this means that the Git revisions
-# corresponding to MediaWiki revisions are all imported from the wiki,
-# regardless of whether they were initially created in Git or from the
-# web interface, hence all users will get the same history (i.e. if
-# the push from Git to MediaWiki loses some information, everybody
-# will get the history with information lost). If the import is
-# deterministic, this means everybody gets the same sha1 for each
-# MediaWiki revision.
-my $dumb_push = run_git_quoted(["config", "--get", "--bool", "remote.${remotename}.dumbPush"]);
-if (!$dumb_push) {
- $dumb_push = run_git_quoted(["config", "--get", "--bool", "mediawiki.dumbPush"]);
-}
-chomp($dumb_push);
-$dumb_push = ($dumb_push eq 'true');
-
-my $wiki_name = $url;
-$wiki_name =~ s{[^/]*://}{};
-# If URL is like http://user:password@example.com/, we clearly don't
-# want the password in $wiki_name. While we're there, also remove user
-# and '@' sign, to avoid author like MWUser@HTTPUser@host.com
-$wiki_name =~ s/^.*@//;
-
-# Commands parser
-while (<STDIN>) {
- chomp;
-
- if (!parse_command($_)) {
- last;
- }
-
- BEGIN { $| = 1 } # flush STDOUT, to make sure the previous
- # command is fully processed.
-}
-
-########################## Functions ##############################
-
-## error handling
-sub exit_error_usage {
- die "ERROR: git-remote-mediawiki module was not called with a correct number of\n" .
- "parameters\n" .
- "You may obtain this error because you attempted to run the git-remote-mediawiki\n" .
- "module directly.\n" .
- "This module can be used the following way:\n" .
- "\tgit clone mediawiki://<address of a mediawiki>\n" .
- "Then, use git commit, push and pull as with every normal git repository.\n";
-}
-
-sub parse_command {
- my ($line) = @_;
- my @cmd = split(/ /, $line);
- if (!defined $cmd[0]) {
- return 0;
- }
- if ($cmd[0] eq 'capabilities') {
- die("Too many arguments for capabilities\n")
- if (defined($cmd[1]));
- mw_capabilities();
- } elsif ($cmd[0] eq 'list') {
- die("Too many arguments for list\n") if (defined($cmd[2]));
- mw_list($cmd[1]);
- } elsif ($cmd[0] eq 'import') {
- die("Invalid argument for import\n")
- if ($cmd[1] eq EMPTY);
- die("Too many arguments for import\n")
- if (defined($cmd[2]));
- mw_import($cmd[1]);
- } elsif ($cmd[0] eq 'option') {
- die("Invalid arguments for option\n")
- if ($cmd[1] eq EMPTY || $cmd[2] eq EMPTY);
- die("Too many arguments for option\n")
- if (defined($cmd[3]));
- mw_option($cmd[1],$cmd[2]);
- } elsif ($cmd[0] eq 'push') {
- mw_push($cmd[1]);
- } else {
- print {*STDERR} "Unknown command. Aborting...\n";
- return 0;
- }
- return 1;
-}
-
-# MediaWiki API instance, created lazily.
-my $mediawiki;
-
-sub fatal_mw_error {
- my $action = shift;
- print STDERR "fatal: could not $action.\n";
- print STDERR "fatal: '$url' does not appear to be a mediawiki\n";
- if ($url =~ /^https/) {
- print STDERR "fatal: make sure '$url/api.php' is a valid page\n";
- print STDERR "fatal: and the SSL certificate is correct.\n";
- } else {
- print STDERR "fatal: make sure '$url/api.php' is a valid page.\n";
- }
- print STDERR "fatal: (error " .
- $mediawiki->{error}->{code} . ': ' .
- $mediawiki->{error}->{details} . ")\n";
- exit 1;
-}
-
-## Functions for listing pages on the remote wiki
-sub get_mw_tracked_pages {
- my $pages = shift;
- get_mw_page_list(\@tracked_pages, $pages);
- return;
-}
-
-sub get_mw_page_list {
- my $page_list = shift;
- my $pages = shift;
- my @some_pages = @{$page_list};
- while (@some_pages) {
- my $last_page = SLICE_SIZE;
- if ($#some_pages < $last_page) {
- $last_page = $#some_pages;
- }
- my @slice = @some_pages[0..$last_page];
- get_mw_first_pages(\@slice, $pages);
- @some_pages = @some_pages[(SLICE_SIZE + 1)..$#some_pages];
- }
- return;
-}
-
-sub get_mw_tracked_categories {
- my $pages = shift;
- foreach my $category (@tracked_categories) {
- if (index($category, ':') < 0) {
- # Mediawiki requires the Category
- # prefix, but let's not force the user
- # to specify it.
- $category = "Category:${category}";
- }
- my $mw_pages = $mediawiki->list( {
- action => 'query',
- list => 'categorymembers',
- cmtitle => $category,
- cmlimit => 'max' } )
- || die $mediawiki->{error}->{code} . ': '
- . $mediawiki->{error}->{details} . "\n";
- foreach my $page (@{$mw_pages}) {
- $pages->{$page->{title}} = $page;
- }
- }
- return;
-}
-
-sub get_mw_tracked_namespaces {
- my $pages = shift;
- foreach my $local_namespace (sort @tracked_namespaces) {
- my $namespace_id;
- if ($local_namespace eq "(Main)") {
- $namespace_id = 0;
- } else {
- $namespace_id = get_mw_namespace_id($local_namespace);
- }
- # virtual namespaces don't support allpages
- next if !defined($namespace_id) || $namespace_id < 0;
- my $mw_pages = $mediawiki->list( {
- action => 'query',
- list => 'allpages',
- apnamespace => $namespace_id,
- aplimit => 'max' } )
- || die $mediawiki->{error}->{code} . ': '
- . $mediawiki->{error}->{details} . "\n";
- print {*STDERR} "$#{$mw_pages} found in namespace $local_namespace ($namespace_id)\n";
- foreach my $page (@{$mw_pages}) {
- $pages->{$page->{title}} = $page;
- }
- }
- return;
-}
-
-sub get_mw_all_pages {
- my $pages = shift;
- # No user-provided list, get the list of pages from the API.
- my $mw_pages = $mediawiki->list({
- action => 'query',
- list => 'allpages',
- aplimit => 'max'
- });
- if (!defined($mw_pages)) {
- fatal_mw_error("get the list of wiki pages");
- }
- foreach my $page (@{$mw_pages}) {
- $pages->{$page->{title}} = $page;
- }
- return;
-}
-
-# queries the wiki for a set of pages. Meant to be used within a loop
-# querying the wiki for slices of page list.
-sub get_mw_first_pages {
- my $some_pages = shift;
- my @some_pages = @{$some_pages};
-
- my $pages = shift;
-
- # pattern 'page1|page2|...' required by the API
- my $titles = join('|', @some_pages);
-
- my $mw_pages = $mediawiki->api({
- action => 'query',
- titles => $titles,
- });
- if (!defined($mw_pages)) {
- fatal_mw_error("query the list of wiki pages");
- }
- while (my ($id, $page) = each(%{$mw_pages->{query}->{pages}})) {
- if ($id < 0) {
- print {*STDERR} "Warning: page $page->{title} not found on wiki\n";
- } else {
- $pages->{$page->{title}} = $page;
- }
- }
- return;
-}
-
-# Get the list of pages to be fetched according to configuration.
-sub get_mw_pages {
- $mediawiki = connect_maybe($mediawiki, $remotename, $url);
-
- print {*STDERR} "Listing pages on remote wiki...\n";
-
- my %pages; # hash on page titles to avoid duplicates
- my $user_defined;
- if (@tracked_pages) {
- $user_defined = 1;
- # The user provided a list of pages titles, but we
- # still need to query the API to get the page IDs.
- get_mw_tracked_pages(\%pages);
- }
- if (@tracked_categories) {
- $user_defined = 1;
- get_mw_tracked_categories(\%pages);
- }
- if (@tracked_namespaces) {
- $user_defined = 1;
- get_mw_tracked_namespaces(\%pages);
- }
- if (!$user_defined) {
- get_mw_all_pages(\%pages);
- }
- if ($import_media) {
- print {*STDERR} "Getting media files for selected pages...\n";
- if ($user_defined) {
- get_linked_mediafiles(\%pages);
- } else {
- get_all_mediafiles(\%pages);
- }
- }
- print {*STDERR} (scalar keys %pages) . " pages found.\n";
- return %pages;
-}
-
-# usage: $out = run_git_quoted(["command", "args", ...]);
-# $out = run_git_quoted(["command", "args", ...], "raw"); # don't interpret output as UTF-8.
-# $out = run_git_quoted_nostderr(["command", "args", ...]); # discard stderr
-# $out = run_git_quoted_nostderr(["command", "args", ...], "raw"); # ditto but raw instead of UTF-8 as above
-sub _run_git {
- my $args = shift;
- my $encoding = (shift || 'encoding(UTF-8)');
- open(my $git, "-|:${encoding}", @$args)
- or die "Unable to fork: $!\n";
- my $res = do {
- local $/ = undef;
- <$git>
- };
- close($git);
-
- return $res;
-}
-
-sub run_git_quoted {
- _run_git(["git", @{$_[0]}], $_[1]);
-}
-
-sub run_git_quoted_nostderr {
- _run_git(['sh', '-c', 'git "$@" 2>/dev/null', '--', @{$_[0]}], $_[1]);
-}
-
-sub get_all_mediafiles {
- my $pages = shift;
- # Attach list of all pages for media files from the API,
- # they are in a different namespace, only one namespace
- # can be queried at the same moment
- my $mw_pages = $mediawiki->list({
- action => 'query',
- list => 'allpages',
- apnamespace => get_mw_namespace_id('File'),
- aplimit => 'max'
- });
- if (!defined($mw_pages)) {
- print {*STDERR} "fatal: could not get the list of pages for media files.\n";
- print {*STDERR} "fatal: '$url' does not appear to be a mediawiki\n";
- print {*STDERR} "fatal: make sure '$url/api.php' is a valid page.\n";
- exit 1;
- }
- foreach my $page (@{$mw_pages}) {
- $pages->{$page->{title}} = $page;
- }
- return;
-}
-
-sub get_linked_mediafiles {
- my $pages = shift;
- my @titles = map { $_->{title} } values(%{$pages});
-
- my $batch = BATCH_SIZE;
- while (@titles) {
- if ($#titles < $batch) {
- $batch = $#titles;
- }
- my @slice = @titles[0..$batch];
-
- # pattern 'page1|page2|...' required by the API
- my $mw_titles = join('|', @slice);
-
- # Media files could be included or linked from
- # a page, get all related
- my $query = {
- action => 'query',
- prop => 'links|images',
- titles => $mw_titles,
- plnamespace => get_mw_namespace_id('File'),
- pllimit => 'max'
- };
- my $result = $mediawiki->api($query);
-
- while (my ($id, $page) = each(%{$result->{query}->{pages}})) {
- my @media_titles;
- if (defined($page->{links})) {
- my @link_titles
- = map { $_->{title} } @{$page->{links}};
- push(@media_titles, @link_titles);
- }
- if (defined($page->{images})) {
- my @image_titles
- = map { $_->{title} } @{$page->{images}};
- push(@media_titles, @image_titles);
- }
- if (@media_titles) {
- get_mw_page_list(\@media_titles, $pages);
- }
- }
-
- @titles = @titles[($batch+1)..$#titles];
- }
- return;
-}
-
-sub get_mw_mediafile_for_page_revision {
- # Name of the file on Wiki, with the prefix.
- my $filename = shift;
- my $timestamp = shift;
- my %mediafile;
-
- # Search if on a media file with given timestamp exists on
- # MediaWiki. In that case download the file.
- my $query = {
- action => 'query',
- prop => 'imageinfo',
- titles => "File:${filename}",
- iistart => $timestamp,
- iiend => $timestamp,
- iiprop => 'timestamp|archivename|url',
- iilimit => 1
- };
- my $result = $mediawiki->api($query);
-
- my ($fileid, $file) = each( %{$result->{query}->{pages}} );
- # If not defined it means there is no revision of the file for
- # given timestamp.
- if (defined($file->{imageinfo})) {
- $mediafile{title} = $filename;
-
- my $fileinfo = pop(@{$file->{imageinfo}});
- $mediafile{timestamp} = $fileinfo->{timestamp};
- # Mediawiki::API's download function doesn't support https URLs
- # and can't download old versions of files.
- print {*STDERR} "\tDownloading file $mediafile{title}, version $mediafile{timestamp}\n";
- $mediafile{content} = download_mw_mediafile($fileinfo->{url});
- }
- return %mediafile;
-}
-
-sub download_mw_mediafile {
- my $download_url = shift;
-
- my $response = $mediawiki->{ua}->get($download_url);
- if ($response->code == HTTP_CODE_OK) {
- # It is tempting to return
- # $response->decoded_content({charset => "none"}), but
- # when doing so, utf8::downgrade($content) fails with
- # "Wide character in subroutine entry".
- $response->decode();
- return $response->content();
- } else {
- print {*STDERR} "Error downloading mediafile from :\n";
- print {*STDERR} "URL: ${download_url}\n";
- print {*STDERR} 'Server response: ' . $response->code . q{ } . $response->message . "\n";
- exit 1;
- }
-}
-
-sub get_last_local_revision {
- # Get note regarding last mediawiki revision.
- my $note = run_git_quoted_nostderr(["notes", "--ref=${remotename}/mediawiki",
- "show", "refs/mediawiki/${remotename}/master"]);
- my @note_info = split(/ /, $note);
-
- my $lastrevision_number;
- if (!(defined($note_info[0]) && $note_info[0] eq 'mediawiki_revision:')) {
- print {*STDERR} 'No previous mediawiki revision found';
- $lastrevision_number = 0;
- } else {
- # Notes are formatted : mediawiki_revision: #number
- $lastrevision_number = $note_info[1];
- chomp($lastrevision_number);
- print {*STDERR} "Last local mediawiki revision found is ${lastrevision_number}";
- }
- return $lastrevision_number;
-}
-
-# Get the last remote revision without taking in account which pages are
-# tracked or not. This function makes a single request to the wiki thus
-# avoid a loop onto all tracked pages. This is useful for the fetch-by-rev
-# option.
-sub get_last_global_remote_rev {
- $mediawiki = connect_maybe($mediawiki, $remotename, $url);
-
- my $query = {
- action => 'query',
- list => 'recentchanges',
- prop => 'revisions',
- rclimit => '1',
- rcdir => 'older',
- };
- my $result = $mediawiki->api($query);
- return $result->{query}->{recentchanges}[0]->{revid};
-}
-
-# Get the last remote revision concerning the tracked pages and the tracked
-# categories.
-sub get_last_remote_revision {
- $mediawiki = connect_maybe($mediawiki, $remotename, $url);
-
- my %pages_hash = get_mw_pages();
- my @pages = values(%pages_hash);
-
- my $max_rev_num = 0;
-
- print {*STDERR} "Getting last revision id on tracked pages...\n";
-
- foreach my $page (@pages) {
- my $id = $page->{pageid};
-
- my $query = {
- action => 'query',
- prop => 'revisions',
- rvprop => 'ids|timestamp',
- pageids => $id,
- };
-
- my $result = $mediawiki->api($query);
-
- my $lastrev = pop(@{$result->{query}->{pages}->{$id}->{revisions}});
-
- $basetimestamps{$lastrev->{revid}} = $lastrev->{timestamp};
-
- $max_rev_num = ($lastrev->{revid} > $max_rev_num ? $lastrev->{revid} : $max_rev_num);
- }
-
- print {*STDERR} "Last remote revision found is $max_rev_num.\n";
- return $max_rev_num;
-}
-
-# Clean content before sending it to MediaWiki
-sub mediawiki_clean {
- my $string = shift;
- my $page_created = shift;
- # Mediawiki does not allow blank space at the end of a page and ends with a single \n.
- # This function right trims a string and adds a \n at the end to follow this rule
- $string =~ s/\s+$//;
- if ($string eq EMPTY && $page_created) {
- # Creating empty pages is forbidden.
- $string = EMPTY_CONTENT;
- }
- return $string."\n";
-}
-
-# Filter applied on MediaWiki data before adding them to Git
-sub mediawiki_smudge {
- my $string = shift;
- if ($string eq EMPTY_CONTENT) {
- $string = EMPTY;
- }
- # This \n is important. This is due to mediawiki's way to handle end of files.
- return "${string}\n";
-}
-
-sub literal_data {
- my ($content) = @_;
- print {*STDOUT} 'data ', bytes::length($content), "\n", $content;
- return;
-}
-
-sub literal_data_raw {
- # Output possibly binary content.
- my ($content) = @_;
- # Avoid confusion between size in bytes and in characters
- utf8::downgrade($content);
- binmode STDOUT, ':raw';
- print {*STDOUT} 'data ', bytes::length($content), "\n", $content;
- binmode STDOUT, ':encoding(UTF-8)';
- return;
-}
-
-sub mw_capabilities {
- # Revisions are imported to the private namespace
- # refs/mediawiki/$remotename/ by the helper and fetched into
- # refs/remotes/$remotename later by fetch.
- print {*STDOUT} "refspec refs/heads/*:refs/mediawiki/${remotename}/*\n";
- print {*STDOUT} "import\n";
- print {*STDOUT} "list\n";
- print {*STDOUT} "push\n";
- if ($dumb_push) {
- print {*STDOUT} "no-private-update\n";
- }
- print {*STDOUT} "\n";
- return;
-}
-
-sub mw_list {
- # MediaWiki do not have branches, we consider one branch arbitrarily
- # called master, and HEAD pointing to it.
- print {*STDOUT} "? refs/heads/master\n";
- print {*STDOUT} "\@refs/heads/master HEAD\n";
- print {*STDOUT} "\n";
- return;
-}
-
-sub mw_option {
- print {*STDERR} "remote-helper command 'option $_[0]' not yet implemented\n";
- print {*STDOUT} "unsupported\n";
- return;
-}
-
-sub fetch_mw_revisions_for_page {
- my $page = shift;
- my $id = shift;
- my $fetch_from = shift;
- my @page_revs = ();
- my $query = {
- action => 'query',
- prop => 'revisions',
- rvprop => 'ids',
- rvdir => 'newer',
- rvstartid => $fetch_from,
- rvlimit => 500,
- pageids => $id,
-
- # Let MediaWiki know that we support the latest API.
- continue => '',
- };
-
- my $revnum = 0;
- # Get 500 revisions at a time due to the mediawiki api limit
- while (1) {
- my $result = $mediawiki->api($query);
-
- # Parse each of those 500 revisions
- foreach my $revision (@{$result->{query}->{pages}->{$id}->{revisions}}) {
- my $page_rev_ids;
- $page_rev_ids->{pageid} = $page->{pageid};
- $page_rev_ids->{revid} = $revision->{revid};
- push(@page_revs, $page_rev_ids);
- $revnum++;
- }
-
- if ($result->{'query-continue'}) { # For legacy APIs
- $query->{rvstartid} = $result->{'query-continue'}->{revisions}->{rvstartid};
- } elsif ($result->{continue}) { # For newer APIs
- $query->{rvstartid} = $result->{continue}->{rvcontinue};
- $query->{continue} = $result->{continue}->{continue};
- } else {
- last;
- }
- }
- if ($shallow_import && @page_revs) {
- print {*STDERR} " Found 1 revision (shallow import).\n";
- @page_revs = sort {$b->{revid} <=> $a->{revid}} (@page_revs);
- return $page_revs[0];
- }
- print {*STDERR} " Found ${revnum} revision(s).\n";
- return @page_revs;
-}
-
-sub fetch_mw_revisions {
- my $pages = shift; my @pages = @{$pages};
- my $fetch_from = shift;
-
- my @revisions = ();
- my $n = 1;
- foreach my $page (@pages) {
- my $id = $page->{pageid};
- print {*STDERR} "page ${n}/", scalar(@pages), ': ', $page->{title}, "\n";
- $n++;
- my @page_revs = fetch_mw_revisions_for_page($page, $id, $fetch_from);
- @revisions = (@page_revs, @revisions);
- }
-
- return ($n, @revisions);
-}
-
-sub fe_escape_path {
- my $path = shift;
- $path =~ s/\\/\\\\/g;
- $path =~ s/"/\\"/g;
- $path =~ s/\n/\\n/g;
- return qq("${path}");
-}
-
-sub import_file_revision {
- my $commit = shift;
- my %commit = %{$commit};
- my $full_import = shift;
- my $n = shift;
- my $mediafile = shift;
- my %mediafile;
- if ($mediafile) {
- %mediafile = %{$mediafile};
- }
-
- my $title = $commit{title};
- my $comment = $commit{comment};
- my $content = $commit{content};
- my $author = $commit{author};
- my $date = $commit{date};
-
- print {*STDOUT} "commit refs/mediawiki/${remotename}/master\n";
- print {*STDOUT} "mark :${n}\n";
- print {*STDOUT} "committer ${author} <${author}\@${wiki_name}> " . $date->epoch . " +0000\n";
- literal_data($comment);
-
- # If it's not a clone, we need to know where to start from
- if (!$full_import && $n == 1) {
- print {*STDOUT} "from refs/mediawiki/${remotename}/master^0\n";
- }
- if ($content ne DELETED_CONTENT) {
- print {*STDOUT} 'M 644 inline ' .
- fe_escape_path("${title}.mw") . "\n";
- literal_data($content);
- if (%mediafile) {
- print {*STDOUT} 'M 644 inline '
- . fe_escape_path($mediafile{title}) . "\n";
- literal_data_raw($mediafile{content});
- }
- print {*STDOUT} "\n\n";
- } else {
- print {*STDOUT} 'D ' . fe_escape_path("${title}.mw") . "\n";
- }
-
- # mediawiki revision number in the git note
- if ($full_import && $n == 1) {
- print {*STDOUT} "reset refs/notes/${remotename}/mediawiki\n";
- }
- print {*STDOUT} "commit refs/notes/${remotename}/mediawiki\n";
- print {*STDOUT} "committer ${author} <${author}\@${wiki_name}> " . $date->epoch . " +0000\n";
- literal_data('Note added by git-mediawiki during import');
- if (!$full_import && $n == 1) {
- print {*STDOUT} "from refs/notes/${remotename}/mediawiki^0\n";
- }
- print {*STDOUT} "N inline :${n}\n";
- literal_data("mediawiki_revision: $commit{mw_revision}");
- print {*STDOUT} "\n\n";
- return;
-}
-
-# parse a sequence of
-# <cmd> <arg1>
-# <cmd> <arg2>
-# \n
-# (like batch sequence of import and sequence of push statements)
-sub get_more_refs {
- my $cmd = shift;
- my @refs;
- while (1) {
- my $line = <STDIN>;
- if ($line =~ /^$cmd (.*)$/) {
- push(@refs, $1);
- } elsif ($line eq "\n") {
- return @refs;
- } else {
- die("Invalid command in a '$cmd' batch: $_\n");
- }
- }
- return;
-}
-
-sub mw_import {
- # multiple import commands can follow each other.
- my @refs = (shift, get_more_refs('import'));
- my $processedRefs;
- foreach my $ref (@refs) {
- next if $processedRefs->{$ref}; # skip duplicates: "import refs/heads/master" being issued twice; TODO: why?
- $processedRefs->{$ref} = 1;
- mw_import_ref($ref);
- }
- print {*STDOUT} "done\n";
- return;
-}
-
-sub mw_import_ref {
- my $ref = shift;
- # The remote helper will call "import HEAD" and
- # "import refs/heads/master".
- # Since HEAD is a symbolic ref to master (by convention,
- # followed by the output of the command "list" that we gave),
- # we don't need to do anything in this case.
- if ($ref eq 'HEAD') {
- return;
- }
-
- $mediawiki = connect_maybe($mediawiki, $remotename, $url);
-
- print {*STDERR} "Searching revisions...\n";
- my $last_local = get_last_local_revision();
- my $fetch_from = $last_local + 1;
- if ($fetch_from == 1) {
- print {*STDERR} ", fetching from beginning.\n";
- } else {
- print {*STDERR} ", fetching from here.\n";
- }
-
- my $n = 0;
- if ($fetch_strategy eq 'by_rev') {
- print {*STDERR} "Fetching & writing export data by revs...\n";
- $n = mw_import_ref_by_revs($fetch_from);
- } elsif ($fetch_strategy eq 'by_page') {
- print {*STDERR} "Fetching & writing export data by pages...\n";
- $n = mw_import_ref_by_pages($fetch_from);
- } else {
- print {*STDERR} qq(fatal: invalid fetch strategy "${fetch_strategy}".\n);
- print {*STDERR} "Check your configuration variables remote.${remotename}.fetchStrategy and mediawiki.fetchStrategy\n";
- exit 1;
- }
-
- if ($fetch_from == 1 && $n == 0) {
- print {*STDERR} "You appear to have cloned an empty MediaWiki.\n";
- # Something has to be done remote-helper side. If nothing is done, an error is
- # thrown saying that HEAD is referring to unknown object 0000000000000000000
- # and the clone fails.
- }
- return;
-}
-
-sub mw_import_ref_by_pages {
-
- my $fetch_from = shift;
- my %pages_hash = get_mw_pages();
- my @pages = values(%pages_hash);
-
- my ($n, @revisions) = fetch_mw_revisions(\@pages, $fetch_from);
-
- @revisions = sort {$a->{revid} <=> $b->{revid}} @revisions;
- my @revision_ids = map { $_->{revid} } @revisions;
-
- return mw_import_revids($fetch_from, \@revision_ids, \%pages_hash);
-}
-
-sub mw_import_ref_by_revs {
-
- my $fetch_from = shift;
- my %pages_hash = get_mw_pages();
-
- my $last_remote = get_last_global_remote_rev();
- my @revision_ids = $fetch_from..$last_remote;
- return mw_import_revids($fetch_from, \@revision_ids, \%pages_hash);
-}
-
-# Import revisions given in second argument (array of integers).
-# Only pages appearing in the third argument (hash indexed by page titles)
-# will be imported.
-sub mw_import_revids {
- my $fetch_from = shift;
- my $revision_ids = shift;
- my $pages = shift;
-
- my $n = 0;
- my $n_actual = 0;
- my $last_timestamp = 0; # Placeholder in case $rev->timestamp is undefined
-
- foreach my $pagerevid (@{$revision_ids}) {
- # Count page even if we skip it, since we display
- # $n/$total and $total includes skipped pages.
- $n++;
-
- # fetch the content of the pages
- my $query = {
- action => 'query',
- prop => 'revisions',
- rvprop => 'content|timestamp|comment|user|ids',
- revids => $pagerevid,
- };
-
- my $result = $mediawiki->api($query);
-
- if (!$result) {
- die "Failed to retrieve modified page for revision $pagerevid\n";
- }
-
- if (defined($result->{query}->{badrevids}->{$pagerevid})) {
- # The revision id does not exist on the remote wiki.
- next;
- }
-
- if (!defined($result->{query}->{pages})) {
- die "Invalid revision ${pagerevid}.\n";
- }
-
- my @result_pages = values(%{$result->{query}->{pages}});
- my $result_page = $result_pages[0];
- my $rev = $result_pages[0]->{revisions}->[0];
-
- my $page_title = $result_page->{title};
-
- if (!exists($pages->{$page_title})) {
- print {*STDERR} "${n}/", scalar(@{$revision_ids}),
- ": Skipping revision #$rev->{revid} of ${page_title}\n";
- next;
- }
-
- $n_actual++;
-
- my %commit;
- $commit{author} = $rev->{user} || 'Anonymous';
- $commit{comment} = $rev->{comment} || EMPTY_MESSAGE;
- $commit{title} = smudge_filename($page_title);
- $commit{mw_revision} = $rev->{revid};
- $commit{content} = mediawiki_smudge($rev->{'*'});
-
- if (!defined($rev->{timestamp})) {
- $last_timestamp++;
- } else {
- $last_timestamp = $rev->{timestamp};
- }
- $commit{date} = DateTime::Format::ISO8601->parse_datetime($last_timestamp);
-
- # Differentiates classic pages and media files.
- my ($namespace, $filename) = $page_title =~ /^([^:]*):(.*)$/;
- my %mediafile;
- if ($namespace) {
- my $id = get_mw_namespace_id($namespace);
- if ($id && $id == get_mw_namespace_id('File')) {
- %mediafile = get_mw_mediafile_for_page_revision($filename, $rev->{timestamp});
- }
- }
- # If this is a revision of the media page for new version
- # of a file do one common commit for both file and media page.
- # Else do commit only for that page.
- print {*STDERR} "${n}/", scalar(@{$revision_ids}), ": Revision #$rev->{revid} of $commit{title}\n";
- import_file_revision(\%commit, ($fetch_from == 1), $n_actual, \%mediafile);
- }
-
- return $n_actual;
-}
-
-sub error_non_fast_forward {
- my $advice = run_git_quoted(["config", "--bool", "advice.pushNonFastForward"]);
- chomp($advice);
- if ($advice ne 'false') {
- # Native git-push would show this after the summary.
- # We can't ask it to display it cleanly, so print it
- # ourselves before.
- print {*STDERR} "To prevent you from losing history, non-fast-forward updates were rejected\n";
- print {*STDERR} "Merge the remote changes (e.g. 'git pull') before pushing again. See the\n";
- print {*STDERR} "'Note about fast-forwards' section of 'git push --help' for details.\n";
- }
- print {*STDOUT} qq(error $_[0] "non-fast-forward"\n);
- return 0;
-}
-
-sub mw_upload_file {
- my $complete_file_name = shift;
- my $new_sha1 = shift;
- my $extension = shift;
- my $file_deleted = shift;
- my $summary = shift;
- my $newrevid;
- my $path = "File:${complete_file_name}";
- my %hashFiles = get_allowed_file_extensions();
- if (!exists($hashFiles{$extension})) {
- print {*STDERR} "${complete_file_name} is not a permitted file on this wiki.\n";
- print {*STDERR} "Check the configuration of file uploads in your mediawiki.\n";
- return $newrevid;
- }
- # Deleting and uploading a file requires a privileged user
- if ($file_deleted) {
- $mediawiki = connect_maybe($mediawiki, $remotename, $url);
- my $query = {
- action => 'delete',
- title => $path,
- reason => $summary
- };
- if (!$mediawiki->edit($query)) {
- print {*STDERR} "Failed to delete file on remote wiki\n";
- print {*STDERR} "Check your permissions on the remote site. Error code:\n";
- print {*STDERR} $mediawiki->{error}->{code} . ':' . $mediawiki->{error}->{details};
- exit 1;
- }
- } else {
- # Don't let perl try to interpret file content as UTF-8 => use "raw"
- my $content = run_git_quoted(["cat-file", "blob", $new_sha1], 'raw');
- if ($content ne EMPTY) {
- $mediawiki = connect_maybe($mediawiki, $remotename, $url);
- $mediawiki->{config}->{upload_url} =
- "${url}/index.php/Special:Upload";
- $mediawiki->edit({
- action => 'upload',
- filename => $complete_file_name,
- comment => $summary,
- file => [undef,
- $complete_file_name,
- Content => $content],
- ignorewarnings => 1,
- }, {
- skip_encoding => 1
- } ) || die $mediawiki->{error}->{code} . ':'
- . $mediawiki->{error}->{details} . "\n";
- my $last_file_page = $mediawiki->get_page({title => $path});
- $newrevid = $last_file_page->{revid};
- print {*STDERR} "Pushed file: ${new_sha1} - ${complete_file_name}.\n";
- } else {
- print {*STDERR} "Empty file ${complete_file_name} not pushed.\n";
- }
- }
- return $newrevid;
-}
-
-sub mw_push_file {
- my $diff_info = shift;
- # $diff_info contains a string in this format:
- # 100644 100644 <sha1_of_blob_before_commit> <sha1_of_blob_now> <status>
- my @diff_info_split = split(/[ \t]/, $diff_info);
-
- # Filename, including .mw extension
- my $complete_file_name = shift;
- # Commit message
- my $summary = shift;
- # MediaWiki revision number. Keep the previous one by default,
- # in case there's no edit to perform.
- my $oldrevid = shift;
- my $newrevid;
-
- if ($summary eq EMPTY_MESSAGE) {
- $summary = EMPTY;
- }
-
- my $new_sha1 = $diff_info_split[3];
- my $old_sha1 = $diff_info_split[2];
- my $page_created = ($old_sha1 eq NULL_SHA1);
- my $page_deleted = ($new_sha1 eq NULL_SHA1);
- $complete_file_name = clean_filename($complete_file_name);
-
- my ($title, $extension) = $complete_file_name =~ /^(.*)\.([^\.]*)$/;
- if (!defined($extension)) {
- $extension = EMPTY;
- }
- if ($extension eq 'mw') {
- my $ns = get_mw_namespace_id_for_page($complete_file_name);
- if ($ns && $ns == get_mw_namespace_id('File') && (!$export_media)) {
- print {*STDERR} "Ignoring media file related page: ${complete_file_name}\n";
- return ($oldrevid, 'ok');
- }
- my $file_content;
- if ($page_deleted) {
- # Deleting a page usually requires
- # special privileges. A common
- # convention is to replace the page
- # with this content instead:
- $file_content = DELETED_CONTENT;
- } else {
- $file_content = run_git_quoted(["cat-file", "blob", $new_sha1]);
- }
-
- $mediawiki = connect_maybe($mediawiki, $remotename, $url);
-
- my $result = $mediawiki->edit( {
- action => 'edit',
- summary => $summary,
- title => $title,
- basetimestamp => $basetimestamps{$oldrevid},
- text => mediawiki_clean($file_content, $page_created),
- }, {
- skip_encoding => 1 # Helps with names with accentuated characters
- });
- if (!$result) {
- if ($mediawiki->{error}->{code} == 3) {
- # edit conflicts, considered as non-fast-forward
- print {*STDERR} 'Warning: Error ' .
- $mediawiki->{error}->{code} .
- ' from mediawiki: ' . $mediawiki->{error}->{details} .
- ".\n";
- return ($oldrevid, 'non-fast-forward');
- } else {
- # Other errors. Shouldn't happen => just die()
- die 'Fatal: Error ' .
- $mediawiki->{error}->{code} .
- ' from mediawiki: ' . $mediawiki->{error}->{details} . "\n";
- }
- }
- $newrevid = $result->{edit}->{newrevid};
- print {*STDERR} "Pushed file: ${new_sha1} - ${title}\n";
- } elsif ($export_media) {
- $newrevid = mw_upload_file($complete_file_name, $new_sha1,
- $extension, $page_deleted,
- $summary);
- } else {
- print {*STDERR} "Ignoring media file ${title}\n";
- }
- $newrevid = ($newrevid or $oldrevid);
- return ($newrevid, 'ok');
-}
-
-sub mw_push {
- # multiple push statements can follow each other
- my @refsspecs = (shift, get_more_refs('push'));
- my $pushed;
- for my $refspec (@refsspecs) {
- my ($force, $local, $remote) = $refspec =~ /^(\+)?([^:]*):([^:]*)$/
- or die("Invalid refspec for push. Expected <src>:<dst> or +<src>:<dst>\n");
- if ($force) {
- print {*STDERR} "Warning: forced push not allowed on a MediaWiki.\n";
- }
- if ($local eq EMPTY) {
- print {*STDERR} "Cannot delete remote branch on a MediaWiki\n";
- print {*STDOUT} "error ${remote} cannot delete\n";
- next;
- }
- if ($remote ne 'refs/heads/master') {
- print {*STDERR} "Only push to the branch 'master' is supported on a MediaWiki\n";
- print {*STDOUT} "error ${remote} only master allowed\n";
- next;
- }
- if (mw_push_revision($local, $remote)) {
- $pushed = 1;
- }
- }
-
- # Notify Git that the push is done
- print {*STDOUT} "\n";
-
- if ($pushed && $dumb_push) {
- print {*STDERR} "Just pushed some revisions to MediaWiki.\n";
- print {*STDERR} "The pushed revisions now have to be re-imported, and your current branch\n";
- print {*STDERR} "needs to be updated with these re-imported commits. You can do this with\n";
- print {*STDERR} "\n";
- print {*STDERR} " git pull --rebase\n";
- print {*STDERR} "\n";
- }
- return;
-}
-
-sub mw_push_revision {
- my $local = shift;
- my $remote = shift; # actually, this has to be "refs/heads/master" at this point.
- my $last_local_revid = get_last_local_revision();
- print {*STDERR} ".\n"; # Finish sentence started by get_last_local_revision()
- my $last_remote_revid = get_last_remote_revision();
- my $mw_revision = $last_remote_revid;
-
- # Get sha1 of commit pointed by local HEAD
- my $HEAD_sha1 = run_git_quoted_nostderr(["rev-parse", $local]);
- chomp($HEAD_sha1);
- # Get sha1 of commit pointed by remotes/$remotename/master
- my $remoteorigin_sha1 = run_git_quoted_nostderr(["rev-parse", "refs/remotes/${remotename}/master"]);
- chomp($remoteorigin_sha1);
-
- if ($last_local_revid > 0 &&
- $last_local_revid < $last_remote_revid) {
- return error_non_fast_forward($remote);
- }
-
- if ($HEAD_sha1 eq $remoteorigin_sha1) {
- # nothing to push
- return 0;
- }
-
- # Get every commit in between HEAD and refs/remotes/origin/master,
- # including HEAD and refs/remotes/origin/master
- my @commit_pairs = ();
- if ($last_local_revid > 0) {
- my $parsed_sha1 = $remoteorigin_sha1;
- # Find a path from last MediaWiki commit to pushed commit
- print {*STDERR} "Computing path from local to remote ...\n";
- my @local_ancestry = split(/\n/, run_git_quoted(["rev-list", "--boundary", "--parents", $local, "^${parsed_sha1}"]));
- my %local_ancestry;
- foreach my $line (@local_ancestry) {
- if (my ($child, $parents) = $line =~ /^-?([a-f0-9]+) ([a-f0-9 ]+)/) {
- foreach my $parent (split(/ /, $parents)) {
- $local_ancestry{$parent} = $child;
- }
- } elsif (!$line =~ /^([a-f0-9]+)/) {
- die "Unexpected output from git rev-list: ${line}\n";
- }
- }
- while ($parsed_sha1 ne $HEAD_sha1) {
- my $child = $local_ancestry{$parsed_sha1};
- if (!$child) {
- print {*STDERR} "Cannot find a path in history from remote commit to last commit\n";
- return error_non_fast_forward($remote);
- }
- push(@commit_pairs, [$parsed_sha1, $child]);
- $parsed_sha1 = $child;
- }
- } else {
- # No remote mediawiki revision. Export the whole
- # history (linearized with --first-parent)
- print {*STDERR} "Warning: no common ancestor, pushing complete history\n";
- my $history = run_git_quoted(["rev-list", "--first-parent", "--children", $local]);
- my @history = split(/\n/, $history);
- @history = @history[1..$#history];
- foreach my $line (reverse @history) {
- my @commit_info_split = split(/[ \n]/, $line);
- push(@commit_pairs, \@commit_info_split);
- }
- }
-
- foreach my $commit_info_split (@commit_pairs) {
- my $sha1_child = @{$commit_info_split}[0];
- my $sha1_commit = @{$commit_info_split}[1];
- my $diff_infos = run_git_quoted(["diff-tree", "-r", "--raw", "-z", $sha1_child, $sha1_commit]);
- # TODO: we could detect rename, and encode them with a #redirect on the wiki.
- # TODO: for now, it's just a delete+add
- my @diff_info_list = split(/\0/, $diff_infos);
- # Keep the subject line of the commit message as mediawiki comment for the revision
- my $commit_msg = run_git_quoted(["log", "--no-walk", '--format="%s"', $sha1_commit]);
- chomp($commit_msg);
- # Push every blob
- while (@diff_info_list) {
- my $status;
- # git diff-tree -z gives an output like
- # <metadata>\0<filename1>\0
- # <metadata>\0<filename2>\0
- # and we've split on \0.
- my $info = shift(@diff_info_list);
- my $file = shift(@diff_info_list);
- ($mw_revision, $status) = mw_push_file($info, $file, $commit_msg, $mw_revision);
- if ($status eq 'non-fast-forward') {
- # we may already have sent part of the
- # commit to MediaWiki, but it's too
- # late to cancel it. Stop the push in
- # the middle, but still give an
- # accurate error message.
- return error_non_fast_forward($remote);
- }
- if ($status ne 'ok') {
- die("Unknown error from mw_push_file()\n");
- }
- }
- if (!$dumb_push) {
- run_git_quoted(["notes", "--ref=${remotename}/mediawiki",
- "add", "-f", "-m",
- "mediawiki_revision: ${mw_revision}",
- $sha1_commit]);
- }
- }
-
- print {*STDOUT} "ok ${remote}\n";
- return 1;
-}
-
-sub get_allowed_file_extensions {
- $mediawiki = connect_maybe($mediawiki, $remotename, $url);
-
- my $query = {
- action => 'query',
- meta => 'siteinfo',
- siprop => 'fileextensions'
- };
- my $result = $mediawiki->api($query);
- my @file_extensions = map { $_->{ext}} @{$result->{query}->{fileextensions}};
- my %hashFile = map { $_ => 1 } @file_extensions;
-
- return %hashFile;
-}
-
-# In memory cache for MediaWiki namespace ids.
-my %namespace_id;
-
-# Namespaces whose id is cached in the configuration file
-# (to avoid duplicates)
-my %cached_mw_namespace_id;
-
-# Return MediaWiki id for a canonical namespace name.
-# Ex.: "File", "Project".
-sub get_mw_namespace_id {
- $mediawiki = connect_maybe($mediawiki, $remotename, $url);
- my $name = shift;
-
- if (!exists $namespace_id{$name}) {
- # Look at configuration file, if the record for that namespace is
- # already cached. Namespaces are stored in form:
- # "Name_of_namespace:Id_namespace", ex.: "File:6".
- my @temp = split(/\n/,
- run_git_quoted(["config", "--get-all", "remote.${remotename}.namespaceCache"]));
- chomp(@temp);
- foreach my $ns (@temp) {
- my ($n, $id) = split(/:/, $ns);
- if ($id eq 'notANameSpace') {
- $namespace_id{$n} = {is_namespace => 0};
- } else {
- $namespace_id{$n} = {is_namespace => 1, id => $id};
- }
- $cached_mw_namespace_id{$n} = 1;
- }
- }
-
- if (!exists $namespace_id{$name}) {
- print {*STDERR} "Namespace ${name} not found in cache, querying the wiki ...\n";
- # NS not found => get namespace id from MW and store it in
- # configuration file.
- my $query = {
- action => 'query',
- meta => 'siteinfo',
- siprop => 'namespaces'
- };
- my $result = $mediawiki->api($query);
-
- while (my ($id, $ns) = each(%{$result->{query}->{namespaces}})) {
- if (defined($ns->{id}) && defined($ns->{canonical})) {
- $namespace_id{$ns->{canonical}} = {is_namespace => 1, id => $ns->{id}};
- if ($ns->{'*'}) {
- # alias (e.g. french Fichier: as alias for canonical File:)
- $namespace_id{$ns->{'*'}} = {is_namespace => 1, id => $ns->{id}};
- }
- }
- }
- }
-
- my $ns = $namespace_id{$name};
- my $id;
-
- if (!defined $ns) {
- my @namespaces = map { s/ /_/g; $_; } sort keys %namespace_id;
- print {*STDERR} "No such namespace ${name} on MediaWiki, known namespaces: @namespaces\n";
- $ns = {is_namespace => 0};
- $namespace_id{$name} = $ns;
- }
-
- if ($ns->{is_namespace}) {
- $id = $ns->{id};
- }
-
- # Store "notANameSpace" as special value for inexisting namespaces
- my $store_id = ($id || 'notANameSpace');
-
- # Store explicitly requested namespaces on disk
- if (!exists $cached_mw_namespace_id{$name}) {
- run_git_quoted(["config", "--add", "remote.${remotename}.namespaceCache", "${name}:${store_id}"]);
- $cached_mw_namespace_id{$name} = 1;
- }
- return $id;
-}
-
-sub get_mw_namespace_id_for_page {
- my $namespace = shift;
- if ($namespace =~ /^([^:]*):/) {
- return get_mw_namespace_id($namespace);
- } else {
- return;
- }
-}
diff --git a/contrib/mw-to-git/git-remote-mediawiki.txt b/contrib/mw-to-git/git-remote-mediawiki.txt
deleted file mode 100644
index 5da825f61e..0000000000
--- a/contrib/mw-to-git/git-remote-mediawiki.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Git-Mediawiki is a project which aims the creation of a gate
-between git and mediawiki, allowing git users to push and pull
-objects from mediawiki just as one would do with a classic git
-repository thanks to remote-helpers.
-
-For more information, visit the wiki at
-https://github.com/Git-Mediawiki/Git-Mediawiki
diff --git a/contrib/mw-to-git/t/.gitignore b/contrib/mw-to-git/t/.gitignore
deleted file mode 100644
index 2b8dc30c6d..0000000000
--- a/contrib/mw-to-git/t/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-WEB/
-mediawiki/
-trash directory.t*/
-test-results/
diff --git a/contrib/mw-to-git/t/Makefile b/contrib/mw-to-git/t/Makefile
deleted file mode 100644
index 6c9f377caa..0000000000
--- a/contrib/mw-to-git/t/Makefile
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# Copyright (C) 2012
-# Charles Roussel <charles.roussel@ensimag.imag.fr>
-# Simon Cathebras <simon.cathebras@ensimag.imag.fr>
-# Julien Khayat <julien.khayat@ensimag.imag.fr>
-# Guillaume Sasdy <guillaume.sasdy@ensimag.imag.fr>
-# Simon Perrat <simon.perrat@ensimag.imag.fr>
-#
-## Test git-remote-mediawiki
-
-# The default target of this Makefile is...
-all:: test
-
--include ../../../config.mak.autogen
--include ../../../config.mak
-
-T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh)
-
-.PHONY: help test clean all
-
-help:
- @echo 'Run "$(MAKE) test" to launch test scripts'
- @echo 'Run "$(MAKE) clean" to remove trash folders'
-
-test:
- @for t in $(T); do \
- echo "$$t"; \
- "./$$t" || exit 1; \
- done
-
-clean:
- $(RM) -r 'trash directory'.*
diff --git a/contrib/mw-to-git/t/README b/contrib/mw-to-git/t/README
deleted file mode 100644
index 72c4889db7..0000000000
--- a/contrib/mw-to-git/t/README
+++ /dev/null
@@ -1,124 +0,0 @@
-Tests for Mediawiki-to-Git
-==========================
-
-Introduction
-------------
-This manual describes how to install the git-remote-mediawiki test
-environment on a machine with git installed on it.
-
-Prerequisite
-------------
-
-In order to run this test environment correctly, you will need to
-install the following packages (Debian/Ubuntu names, may need to be
-adapted for another distribution):
-
-* lighttpd
-* php
-* php-cgi
-* php-cli
-* php-curl
-* php-sqlite
-
-Principles and Technical Choices
---------------------------------
-
-The test environment makes it easy to install and manipulate one or
-several MediaWiki instances. To allow developers to run the testsuite
-easily, the environment does not require root privilege (except to
-install the required packages if needed). It starts a webserver
-instance on the user's account (using lighttpd greatly helps for
-that), and does not need a separate database daemon (thanks to the use
-of sqlite).
-
-Run the test environment
-------------------------
-
-Install a new wiki
-~~~~~~~~~~~~~~~~~~
-
-Once you have all the prerequisite, you need to install a MediaWiki
-instance on your machine. If you already have one, it is still
-strongly recommended to install one with the script provided. Here's
-how to work it:
-
-a. change directory to contrib/mw-to-git/t/
-b. if needed, edit test.config to choose your installation parameters
-c. run `./install-wiki.sh install`
-d. check on your favourite web browser if your wiki is correctly
- installed.
-
-Remove an existing wiki
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Edit the file test.config to fit the wiki you want to delete, and then
-execute the command `./install-wiki.sh delete` from the
-contrib/mw-to-git/t directory.
-
-Run the existing tests
-~~~~~~~~~~~~~~~~~~~~~~
-
-The provided tests are currently in the `contrib/mw-to-git/t` directory.
-The files are all the t936[0-9]-*.sh shell scripts.
-
-a. Run all tests:
-To do so, run "make test" from the contrib/mw-to-git/ directory.
-
-b. Run a specific test:
-To run a given test <test_name>, run ./<test_name> from the
-contrib/mw-to-git/t directory.
-
-How to create new tests
------------------------
-
-Available functions
-~~~~~~~~~~~~~~~~~~~
-
-The test environment of git-remote-mediawiki provides some functions
-useful to test its behaviour. for more details about the functions'
-parameters, please refer to the `test-gitmw-lib.sh` and
-`test-gitmw.pl` files.
-
-** `test_check_wiki_precond`:
-Check if the tests must be skipped or not. Please use this function
-at the beginning of each new test file.
-
-** `wiki_getpage`:
-Fetch a given page from the wiki and puts its content in the
-directory in parameter.
-
-** `wiki_delete_page`:
-Delete a given page from the wiki.
-
-** `wiki_edit_page`:
-Create or modify a given page in the wiki. You can specify several
-parameters like a summary for the page edition, or add the page to a
-given category.
-See test-gitmw.pl for more details.
-
-** `wiki_getallpage`:
-Fetch all pages from the wiki into a given directory. The directory
-is created if it does not exists.
-
-** `test_diff_directories`:
-Compare the content of two directories. The content must be the same.
-Use this function to compare the content of a git directory and a wiki
-one created by wiki_getallpage.
-
-** `test_contains_N_files`:
-Check if the given directory contains a given number of file.
-
-** `wiki_page_exists`:
-Tests if a given page exists on the wiki.
-
-** `wiki_reset`:
-Reset the wiki, i.e. flush the database. Use this function at the
-beginning of each new test, except if the test re-uses the same wiki
-(and history) as the previous test.
-
-How to write a new test
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Please, follow the standards given by git. See git/t/README.
-New file should be named as t936[0-9]-*.sh.
-Be sure to reset your wiki regularly with the function `wiki_reset`.
diff --git a/contrib/mw-to-git/t/install-wiki.sh b/contrib/mw-to-git/t/install-wiki.sh
deleted file mode 100755
index c215213c4b..0000000000
--- a/contrib/mw-to-git/t/install-wiki.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/sh
-
-# This script installs or deletes a MediaWiki on your computer.
-# It requires a web server with PHP and SQLite running. In addition, if you
-# do not have MediaWiki sources on your computer, the option 'install'
-# downloads them for you.
-# Please set the CONFIGURATION VARIABLES in ./test-gitmw-lib.sh
-
-WIKI_TEST_DIR=$(cd "$(dirname "$0")" && pwd)
-
-if test -z "$WIKI_TEST_DIR"
-then
- WIKI_TEST_DIR=.
-fi
-
-. "$WIKI_TEST_DIR"/test-gitmw-lib.sh
-usage () {
- echo "usage: "
- echo " ./install-wiki.sh <install | delete | --help>"
- echo " install | -i : Install a wiki on your computer."
- echo " delete | -d : Delete the wiki and all its pages and "
- echo " content."
- echo " start | -s : Start the previously configured lighttpd daemon"
- echo " stop : Stop lighttpd daemon."
-}
-
-
-# Argument: install, delete, --help | -h
-case "$1" in
- "install" | "-i")
- wiki_install
- exit 0
- ;;
- "delete" | "-d")
- wiki_delete
- exit 0
- ;;
- "start" | "-s")
- start_lighttpd
- exit
- ;;
- "stop")
- stop_lighttpd
- exit
- ;;
- "--help" | "-h")
- usage
- exit 0
- ;;
- *)
- echo "Invalid argument: $1"
- usage
- exit 1
- ;;
-esac
diff --git a/contrib/mw-to-git/t/push-pull-tests.sh b/contrib/mw-to-git/t/push-pull-tests.sh
deleted file mode 100644
index 9da2dc5ff0..0000000000
--- a/contrib/mw-to-git/t/push-pull-tests.sh
+++ /dev/null
@@ -1,144 +0,0 @@
-test_push_pull () {
-
- test_expect_success 'Git pull works after adding a new wiki page' '
- wiki_reset &&
-
- git clone mediawiki::'"$WIKI_URL"' mw_dir_1 &&
- wiki_editpage Foo "page created after the git clone" false &&
-
- (
- cd mw_dir_1 &&
- git pull
- ) &&
-
- wiki_getallpage ref_page_1 &&
- test_diff_directories mw_dir_1 ref_page_1
- '
-
- test_expect_success 'Git pull works after editing a wiki page' '
- wiki_reset &&
-
- wiki_editpage Foo "page created before the git clone" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_2 &&
- wiki_editpage Foo "new line added on the wiki" true &&
-
- (
- cd mw_dir_2 &&
- git pull
- ) &&
-
- wiki_getallpage ref_page_2 &&
- test_diff_directories mw_dir_2 ref_page_2
- '
-
- test_expect_success 'git pull works on conflict handled by auto-merge' '
- wiki_reset &&
-
- wiki_editpage Foo "1 init
-3
-5
- " false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_3 &&
-
- wiki_editpage Foo "1 init
-2 content added on wiki after clone
-3
-5
- " false &&
-
- (
- cd mw_dir_3 &&
- echo "1 init
-3
-4 content added on git after clone
-5
-" >Foo.mw &&
- git commit -am "conflicting change on foo" &&
- git pull &&
- git push
- )
- '
-
- test_expect_success 'Git push works after adding a file .mw' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_4 &&
- wiki_getallpage ref_page_4 &&
- (
- cd mw_dir_4 &&
- test_path_is_missing Foo.mw &&
- touch Foo.mw &&
- echo "hello world" >>Foo.mw &&
- git add Foo.mw &&
- git commit -m "Foo" &&
- git push
- ) &&
- wiki_getallpage ref_page_4 &&
- test_diff_directories mw_dir_4 ref_page_4
- '
-
- test_expect_success 'Git push works after editing a file .mw' '
- wiki_reset &&
- wiki_editpage "Foo" "page created before the git clone" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_5 &&
-
- (
- cd mw_dir_5 &&
- echo "new line added in the file Foo.mw" >>Foo.mw &&
- git commit -am "edit file Foo.mw" &&
- git push
- ) &&
-
- wiki_getallpage ref_page_5 &&
- test_diff_directories mw_dir_5 ref_page_5
- '
-
- test_expect_failure 'Git push works after deleting a file' '
- wiki_reset &&
- wiki_editpage Foo "wiki page added before git clone" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_6 &&
-
- (
- cd mw_dir_6 &&
- git rm Foo.mw &&
- git commit -am "page Foo.mw deleted" &&
- git push
- ) &&
-
- test_must_fail wiki_page_exist Foo
- '
-
- test_expect_success 'Merge conflict expected and solving it' '
- wiki_reset &&
-
- git clone mediawiki::'"$WIKI_URL"' mw_dir_7 &&
- wiki_editpage Foo "1 conflict
-3 wiki
-4" false &&
-
- (
- cd mw_dir_7 &&
- echo "1 conflict
-2 git
-4" >Foo.mw &&
- git add Foo.mw &&
- git commit -m "conflict created" &&
- test_must_fail git pull &&
- "$PERL_PATH" -pi -e "s/[<=>].*//g" Foo.mw &&
- git commit -am "merge conflict solved" &&
- git push
- )
- '
-
- test_expect_failure 'git pull works after deleting a wiki page' '
- wiki_reset &&
- wiki_editpage Foo "wiki page added before the git clone" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_8 &&
-
- wiki_delete_page Foo &&
- (
- cd mw_dir_8 &&
- git pull &&
- test_path_is_missing Foo.mw
- )
- '
-}
diff --git a/contrib/mw-to-git/t/t9360-mw-to-git-clone.sh b/contrib/mw-to-git/t/t9360-mw-to-git-clone.sh
deleted file mode 100755
index f08890d9e7..0000000000
--- a/contrib/mw-to-git/t/t9360-mw-to-git-clone.sh
+++ /dev/null
@@ -1,257 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) 2012
-# Charles Roussel <charles.roussel@ensimag.imag.fr>
-# Simon Cathebras <simon.cathebras@ensimag.imag.fr>
-# Julien Khayat <julien.khayat@ensimag.imag.fr>
-# Guillaume Sasdy <guillaume.sasdy@ensimag.imag.fr>
-# Simon Perrat <simon.perrat@ensimag.imag.fr>
-#
-# License: GPL v2 or later
-
-
-test_description='Test the Git Mediawiki remote helper: git clone'
-
-. ./test-gitmw-lib.sh
-. $TEST_DIRECTORY/test-lib.sh
-
-
-test_check_precond
-
-
-test_expect_success 'Git clone creates the expected git log with one file' '
- wiki_reset &&
- wiki_editpage foo "this is not important" false -c cat -s "this must be the same" &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_1 &&
- (
- cd mw_dir_1 &&
- git log --format=%s HEAD^..HEAD >log.tmp
- ) &&
- echo "this must be the same" >msg.tmp &&
- test_cmp msg.tmp mw_dir_1/log.tmp
-'
-
-
-test_expect_success 'Git clone creates the expected git log with multiple files' '
- wiki_reset &&
- wiki_editpage daddy "this is not important" false -s="this must be the same" &&
- wiki_editpage daddy "neither is this" true -s="this must also be the same" &&
- wiki_editpage daddy "neither is this" true -s="same same same" &&
- wiki_editpage dj "dont care" false -s="identical" &&
- wiki_editpage dj "dont care either" true -s="identical too" &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_2 &&
- (
- cd mw_dir_2 &&
- git log --format=%s Daddy.mw >logDaddy.tmp &&
- git log --format=%s Dj.mw >logDj.tmp
- ) &&
- echo "same same same" >msgDaddy.tmp &&
- echo "this must also be the same" >>msgDaddy.tmp &&
- echo "this must be the same" >>msgDaddy.tmp &&
- echo "identical too" >msgDj.tmp &&
- echo "identical" >>msgDj.tmp &&
- test_cmp msgDaddy.tmp mw_dir_2/logDaddy.tmp &&
- test_cmp msgDj.tmp mw_dir_2/logDj.tmp
-'
-
-
-test_expect_success 'Git clone creates only Main_Page.mw with an empty wiki' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_3 &&
- test_contains_N_files mw_dir_3 1 &&
- test_path_is_file mw_dir_3/Main_Page.mw
-'
-
-test_expect_success 'Git clone does not fetch a deleted page' '
- wiki_reset &&
- wiki_editpage foo "this page must be deleted before the clone" false &&
- wiki_delete_page foo &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_4 &&
- test_contains_N_files mw_dir_4 1 &&
- test_path_is_file mw_dir_4/Main_Page.mw &&
- test_path_is_missing mw_dir_4/Foo.mw
-'
-
-test_expect_success 'Git clone works with page added' '
- wiki_reset &&
- wiki_editpage foo " I will be cloned" false &&
- wiki_editpage bar "I will be cloned" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_5 &&
- wiki_getallpage ref_page_5 &&
- test_diff_directories mw_dir_5 ref_page_5 &&
- wiki_delete_page foo &&
- wiki_delete_page bar
-'
-
-test_expect_success 'Git clone works with an edited page ' '
- wiki_reset &&
- wiki_editpage foo "this page will be edited" \
- false -s "first edition of page foo" &&
- wiki_editpage foo "this page has been edited and must be on the clone " true &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_6 &&
- test_path_is_file mw_dir_6/Foo.mw &&
- test_path_is_file mw_dir_6/Main_Page.mw &&
- wiki_getallpage mw_dir_6/page_ref_6 &&
- test_diff_directories mw_dir_6 mw_dir_6/page_ref_6 &&
- (
- cd mw_dir_6 &&
- git log --format=%s HEAD^ Foo.mw > ../Foo.log
- ) &&
- echo "first edition of page foo" > FooExpect.log &&
- diff FooExpect.log Foo.log
-'
-
-
-test_expect_success 'Git clone works with several pages and some deleted ' '
- wiki_reset &&
- wiki_editpage foo "this page will not be deleted" false &&
- wiki_editpage bar "I must not be erased" false &&
- wiki_editpage namnam "I will not be there at the end" false &&
- wiki_editpage nyancat "nyan nyan nyan delete me" false &&
- wiki_delete_page namnam &&
- wiki_delete_page nyancat &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_7 &&
- test_path_is_file mw_dir_7/Foo.mw &&
- test_path_is_file mw_dir_7/Bar.mw &&
- test_path_is_missing mw_dir_7/Namnam.mw &&
- test_path_is_missing mw_dir_7/Nyancat.mw &&
- wiki_getallpage mw_dir_7/page_ref_7 &&
- test_diff_directories mw_dir_7 mw_dir_7/page_ref_7
-'
-
-
-test_expect_success 'Git clone works with one specific page cloned ' '
- wiki_reset &&
- wiki_editpage foo "I will not be cloned" false &&
- wiki_editpage bar "Do not clone me" false &&
- wiki_editpage namnam "I will be cloned :)" false -s="this log must stay" &&
- wiki_editpage nyancat "nyan nyan nyan you cant clone me" false &&
- git clone -c remote.origin.pages=namnam \
- mediawiki::'"$WIKI_URL"' mw_dir_8 &&
- test_contains_N_files mw_dir_8 1 &&
- test_path_is_file mw_dir_8/Namnam.mw &&
- test_path_is_missing mw_dir_8/Main_Page.mw &&
- (
- cd mw_dir_8 &&
- echo "this log must stay" >msg.tmp &&
- git log --format=%s >log.tmp &&
- test_cmp msg.tmp log.tmp
- ) &&
- wiki_check_content mw_dir_8/Namnam.mw Namnam
-'
-
-test_expect_success 'Git clone works with multiple specific page cloned ' '
- wiki_reset &&
- wiki_editpage foo "I will be there" false &&
- wiki_editpage bar "I will not disappear" false &&
- wiki_editpage namnam "I be erased" false &&
- wiki_editpage nyancat "nyan nyan nyan you will not erase me" false &&
- wiki_delete_page namnam &&
- git clone -c remote.origin.pages="foo bar nyancat namnam" \
- mediawiki::'"$WIKI_URL"' mw_dir_9 &&
- test_contains_N_files mw_dir_9 3 &&
- test_path_is_missing mw_dir_9/Namnam.mw &&
- test_path_is_file mw_dir_9/Foo.mw &&
- test_path_is_file mw_dir_9/Nyancat.mw &&
- test_path_is_file mw_dir_9/Bar.mw &&
- wiki_check_content mw_dir_9/Foo.mw Foo &&
- wiki_check_content mw_dir_9/Bar.mw Bar &&
- wiki_check_content mw_dir_9/Nyancat.mw Nyancat
-'
-
-test_expect_success 'Mediawiki-clone of several specific pages on wiki' '
- wiki_reset &&
- wiki_editpage foo "foo 1" false &&
- wiki_editpage bar "bar 1" false &&
- wiki_editpage dummy "dummy 1" false &&
- wiki_editpage cloned_1 "cloned_1 1" false &&
- wiki_editpage cloned_2 "cloned_2 2" false &&
- wiki_editpage cloned_3 "cloned_3 3" false &&
- mkdir -p ref_page_10 &&
- wiki_getpage cloned_1 ref_page_10 &&
- wiki_getpage cloned_2 ref_page_10 &&
- wiki_getpage cloned_3 ref_page_10 &&
- git clone -c remote.origin.pages="cloned_1 cloned_2 cloned_3" \
- mediawiki::'"$WIKI_URL"' mw_dir_10 &&
- test_diff_directories mw_dir_10 ref_page_10
-'
-
-test_expect_success 'Git clone works with the shallow option' '
- wiki_reset &&
- wiki_editpage foo "1st revision, should be cloned" false &&
- wiki_editpage bar "1st revision, should be cloned" false &&
- wiki_editpage nyan "1st revision, should not be cloned" false &&
- wiki_editpage nyan "2nd revision, should be cloned" false &&
- git -c remote.origin.shallow=true clone \
- mediawiki::'"$WIKI_URL"' mw_dir_11 &&
- test_contains_N_files mw_dir_11 4 &&
- test_path_is_file mw_dir_11/Nyan.mw &&
- test_path_is_file mw_dir_11/Foo.mw &&
- test_path_is_file mw_dir_11/Bar.mw &&
- test_path_is_file mw_dir_11/Main_Page.mw &&
- (
- cd mw_dir_11 &&
- test $(git log --oneline Nyan.mw | wc -l) -eq 1 &&
- test $(git log --oneline Foo.mw | wc -l) -eq 1 &&
- test $(git log --oneline Bar.mw | wc -l) -eq 1 &&
- test $(git log --oneline Main_Page.mw | wc -l ) -eq 1
- ) &&
- wiki_check_content mw_dir_11/Nyan.mw Nyan &&
- wiki_check_content mw_dir_11/Foo.mw Foo &&
- wiki_check_content mw_dir_11/Bar.mw Bar &&
- wiki_check_content mw_dir_11/Main_Page.mw Main_Page
-'
-
-test_expect_success 'Git clone works with the shallow option with a delete page' '
- wiki_reset &&
- wiki_editpage foo "1st revision, will be deleted" false &&
- wiki_editpage bar "1st revision, should be cloned" false &&
- wiki_editpage nyan "1st revision, should not be cloned" false &&
- wiki_editpage nyan "2nd revision, should be cloned" false &&
- wiki_delete_page foo &&
- git -c remote.origin.shallow=true clone \
- mediawiki::'"$WIKI_URL"' mw_dir_12 &&
- test_contains_N_files mw_dir_12 3 &&
- test_path_is_file mw_dir_12/Nyan.mw &&
- test_path_is_missing mw_dir_12/Foo.mw &&
- test_path_is_file mw_dir_12/Bar.mw &&
- test_path_is_file mw_dir_12/Main_Page.mw &&
- (
- cd mw_dir_12 &&
- test $(git log --oneline Nyan.mw | wc -l) -eq 1 &&
- test $(git log --oneline Bar.mw | wc -l) -eq 1 &&
- test $(git log --oneline Main_Page.mw | wc -l ) -eq 1
- ) &&
- wiki_check_content mw_dir_12/Nyan.mw Nyan &&
- wiki_check_content mw_dir_12/Bar.mw Bar &&
- wiki_check_content mw_dir_12/Main_Page.mw Main_Page
-'
-
-test_expect_success 'Test of fetching a category' '
- wiki_reset &&
- wiki_editpage Foo "I will be cloned" false -c=Category &&
- wiki_editpage Bar "Meet me on the repository" false -c=Category &&
- wiki_editpage Dummy "I will not come" false &&
- wiki_editpage BarWrong "I will stay online only" false -c=NotCategory &&
- git clone -c remote.origin.categories="Category" \
- mediawiki::'"$WIKI_URL"' mw_dir_13 &&
- wiki_getallpage ref_page_13 Category &&
- test_diff_directories mw_dir_13 ref_page_13
-'
-
-test_expect_success 'Test of resistance to modification of category on wiki for clone' '
- wiki_reset &&
- wiki_editpage Tobedeleted "this page will be deleted" false -c=Catone &&
- wiki_editpage Tobeedited "this page will be modified" false -c=Catone &&
- wiki_editpage Normalone "this page wont be modified and will be on git" false -c=Catone &&
- wiki_editpage Notconsidered "this page will not appear on local" false &&
- wiki_editpage Othercategory "this page will not appear on local" false -c=Cattwo &&
- wiki_editpage Tobeedited "this page have been modified" true -c=Catone &&
- wiki_delete_page Tobedeleted &&
- git clone -c remote.origin.categories="Catone" \
- mediawiki::'"$WIKI_URL"' mw_dir_14 &&
- wiki_getallpage ref_page_14 Catone &&
- test_diff_directories mw_dir_14 ref_page_14
-'
-
-test_done
diff --git a/contrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh b/contrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh
deleted file mode 100755
index 9ea201459b..0000000000
--- a/contrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) 2012
-# Charles Roussel <charles.roussel@ensimag.imag.fr>
-# Simon Cathebras <simon.cathebras@ensimag.imag.fr>
-# Julien Khayat <julien.khayat@ensimag.imag.fr>
-# Guillaume Sasdy <guillaume.sasdy@ensimag.imag.fr>
-# Simon Perrat <simon.perrat@ensimag.imag.fr>
-#
-# License: GPL v2 or later
-
-# tests for git-remote-mediawiki
-
-test_description='Test the Git Mediawiki remote helper: git push and git pull simple test cases'
-
-. ./test-gitmw-lib.sh
-. ./push-pull-tests.sh
-. $TEST_DIRECTORY/test-lib.sh
-
-test_check_precond
-
-test_push_pull
-
-test_done
diff --git a/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh b/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
deleted file mode 100755
index 526d92850f..0000000000
--- a/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
+++ /dev/null
@@ -1,347 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) 2012
-# Charles Roussel <charles.roussel@ensimag.imag.fr>
-# Simon Cathebras <simon.cathebras@ensimag.imag.fr>
-# Julien Khayat <julien.khayat@ensimag.imag.fr>
-# Guillaume Sasdy <guillaume.sasdy@ensimag.imag.fr>
-# Simon Perrat <simon.perrat@ensimag.imag.fr>
-#
-# License: GPL v2 or later
-
-# tests for git-remote-mediawiki
-
-test_description='Test git-mediawiki with special characters in filenames'
-
-. ./test-gitmw-lib.sh
-. $TEST_DIRECTORY/test-lib.sh
-
-
-test_check_precond
-
-
-test_expect_success 'Git clone works for a wiki with accents in the page names' '
- wiki_reset &&
- wiki_editpage féé "This page must be délétéd before clone" false &&
- wiki_editpage kèè "This page must be deleted before clone" false &&
- wiki_editpage hàà "This page must be deleted before clone" false &&
- wiki_editpage kîî "This page must be deleted before clone" false &&
- wiki_editpage foo "This page must be deleted before clone" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_1 &&
- wiki_getallpage ref_page_1 &&
- test_diff_directories mw_dir_1 ref_page_1
-'
-
-
-test_expect_success 'Git pull works with a wiki with accents in the pages names' '
- wiki_reset &&
- wiki_editpage kîî "this page must be cloned" false &&
- wiki_editpage foo "this page must be cloned" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_2 &&
- wiki_editpage éàîôû "This page must be pulled" false &&
- (
- cd mw_dir_2 &&
- git pull
- ) &&
- wiki_getallpage ref_page_2 &&
- test_diff_directories mw_dir_2 ref_page_2
-'
-
-
-test_expect_success 'Cloning a chosen page works with accents' '
- wiki_reset &&
- wiki_editpage kîî "this page must be cloned" false &&
- git clone -c remote.origin.pages=kîî \
- mediawiki::'"$WIKI_URL"' mw_dir_3 &&
- wiki_check_content mw_dir_3/Kîî.mw Kîî &&
- test_path_is_file mw_dir_3/Kîî.mw &&
- rm -rf mw_dir_3
-'
-
-
-test_expect_success 'The shallow option works with accents' '
- wiki_reset &&
- wiki_editpage néoà "1st revision, should not be cloned" false &&
- wiki_editpage néoà "2nd revision, should be cloned" false &&
- git -c remote.origin.shallow=true clone \
- mediawiki::'"$WIKI_URL"' mw_dir_4 &&
- test_contains_N_files mw_dir_4 2 &&
- test_path_is_file mw_dir_4/Néoà.mw &&
- test_path_is_file mw_dir_4/Main_Page.mw &&
- (
- cd mw_dir_4 &&
- test $(git log --oneline Néoà.mw | wc -l) -eq 1 &&
- test $(git log --oneline Main_Page.mw | wc -l ) -eq 1
- ) &&
- wiki_check_content mw_dir_4/Néoà.mw Néoà &&
- wiki_check_content mw_dir_4/Main_Page.mw Main_Page
-'
-
-
-test_expect_success 'Cloning works when page name first letter has an accent' '
- wiki_reset &&
- wiki_editpage îî "this page must be cloned" false &&
- git clone -c remote.origin.pages=îî \
- mediawiki::'"$WIKI_URL"' mw_dir_5 &&
- test_path_is_file mw_dir_5/Îî.mw &&
- wiki_check_content mw_dir_5/Îî.mw Îî
-'
-
-
-test_expect_success 'Git push works with a wiki with accents' '
- wiki_reset &&
- wiki_editpage féé "lots of accents : éèàÖ" false &&
- wiki_editpage foo "this page must be cloned" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_6 &&
- (
- cd mw_dir_6 &&
- echo "A wild Pîkächû appears on the wiki" >Pîkächû.mw &&
- git add Pîkächû.mw &&
- git commit -m "A new page appears" &&
- git push
- ) &&
- wiki_getallpage ref_page_6 &&
- test_diff_directories mw_dir_6 ref_page_6
-'
-
-test_expect_success 'Git clone works with accentsand spaces' '
- wiki_reset &&
- wiki_editpage "é à î" "this page must be délété before the clone" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_7 &&
- wiki_getallpage ref_page_7 &&
- test_diff_directories mw_dir_7 ref_page_7
-'
-
-test_expect_success 'character $ in page name (mw -> git)' '
- wiki_reset &&
- wiki_editpage file_\$_foo "expect to be called file_$_foo" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_8 &&
- test_path_is_file mw_dir_8/File_\$_foo.mw &&
- wiki_getallpage ref_page_8 &&
- test_diff_directories mw_dir_8 ref_page_8
-'
-
-
-
-test_expect_success 'character $ in file name (git -> mw) ' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_9 &&
- (
- cd mw_dir_9 &&
- echo "this file is called File_\$_foo.mw" >File_\$_foo.mw &&
- git add . &&
- git commit -am "file File_\$_foo.mw" &&
- git pull &&
- git push
- ) &&
- wiki_getallpage ref_page_9 &&
- test_diff_directories mw_dir_9 ref_page_9
-'
-
-
-test_expect_failure 'capital at the beginning of file names' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_10 &&
- (
- cd mw_dir_10 &&
- echo "my new file foo" >foo.mw &&
- echo "my new file Foo... Finger crossed" >Foo.mw &&
- git add . &&
- git commit -am "file foo.mw" &&
- git pull &&
- git push
- ) &&
- wiki_getallpage ref_page_10 &&
- test_diff_directories mw_dir_10 ref_page_10
-'
-
-
-test_expect_failure 'special character at the beginning of file name from mw to git' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_11 &&
- wiki_editpage {char_1 "expect to be renamed {char_1" false &&
- wiki_editpage [char_2 "expect to be renamed [char_2" false &&
- (
- cd mw_dir_11 &&
- git pull
- ) &&
- test_path_is_file mw_dir_11/{char_1 &&
- test_path_is_file mw_dir_11/[char_2
-'
-
-test_expect_success 'Pull page with title containing ":" other than namespace separator' '
- wiki_editpage Foo:Bar content false &&
- (
- cd mw_dir_11 &&
- git pull
- ) &&
- test_path_is_file mw_dir_11/Foo:Bar.mw
-'
-
-test_expect_success 'Push page with title containing ":" other than namespace separator' '
- (
- cd mw_dir_11 &&
- echo content >NotANameSpace:Page.mw &&
- git add NotANameSpace:Page.mw &&
- git commit -m "add page with colon" &&
- git push
- ) &&
- wiki_page_exist NotANameSpace:Page
-'
-
-test_expect_success 'test of correct formatting for file name from mw to git' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_12 &&
- wiki_editpage char_%_7b_1 "expect to be renamed char{_1" false &&
- wiki_editpage char_%_5b_2 "expect to be renamed char{_2" false &&
- (
- cd mw_dir_12 &&
- git pull
- ) &&
- test_path_is_file mw_dir_12/Char\{_1.mw &&
- test_path_is_file mw_dir_12/Char\[_2.mw &&
- wiki_getallpage ref_page_12 &&
- mv ref_page_12/Char_%_7b_1.mw ref_page_12/Char\{_1.mw &&
- mv ref_page_12/Char_%_5b_2.mw ref_page_12/Char\[_2.mw &&
- test_diff_directories mw_dir_12 ref_page_12
-'
-
-
-test_expect_failure 'test of correct formatting for file name beginning with special character' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_13 &&
- (
- cd mw_dir_13 &&
- echo "my new file {char_1" >\{char_1.mw &&
- echo "my new file [char_2" >\[char_2.mw &&
- git add . &&
- git commit -am "committing some exotic file name..." &&
- git push &&
- git pull
- ) &&
- wiki_getallpage ref_page_13 &&
- test_path_is_file ref_page_13/{char_1.mw &&
- test_path_is_file ref_page_13/[char_2.mw &&
- test_diff_directories mw_dir_13 ref_page_13
-'
-
-
-test_expect_success 'test of correct formatting for file name from git to mw' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_14 &&
- (
- cd mw_dir_14 &&
- echo "my new file char{_1" >Char\{_1.mw &&
- echo "my new file char[_2" >Char\[_2.mw &&
- git add . &&
- git commit -m "committing some exotic file name..." &&
- git push
- ) &&
- wiki_getallpage ref_page_14 &&
- mv mw_dir_14/Char\{_1.mw mw_dir_14/Char_%_7b_1.mw &&
- mv mw_dir_14/Char\[_2.mw mw_dir_14/Char_%_5b_2.mw &&
- test_diff_directories mw_dir_14 ref_page_14
-'
-
-
-test_expect_success 'git clone with /' '
- wiki_reset &&
- wiki_editpage \/fo\/o "this is not important" false -c=Deleted &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_15 &&
- test_path_is_file mw_dir_15/%2Ffo%2Fo.mw &&
- wiki_check_content mw_dir_15/%2Ffo%2Fo.mw \/fo\/o
-'
-
-
-test_expect_success 'git push with /' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_16 &&
- echo "I will be on the wiki" >mw_dir_16/%2Ffo%2Fo.mw &&
- (
- cd mw_dir_16 &&
- git add %2Ffo%2Fo.mw &&
- git commit -m " %2Ffo%2Fo added" &&
- git push
- ) &&
- wiki_page_exist \/fo\/o &&
- wiki_check_content mw_dir_16/%2Ffo%2Fo.mw \/fo\/o
-
-'
-
-
-test_expect_success 'git clone with \' '
- wiki_reset &&
- wiki_editpage \\ko\\o "this is not important" false -c=Deleted &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_17 &&
- test_path_is_file mw_dir_17/\\ko\\o.mw &&
- wiki_check_content mw_dir_17/\\ko\\o.mw \\ko\\o
-'
-
-
-test_expect_success 'git push with \' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_18 &&
- echo "I will be on the wiki" >mw_dir_18/\\ko\\o.mw &&
- (
- cd mw_dir_18 &&
- git add \\ko\\o.mw &&
- git commit -m " \\ko\\o added" &&
- git push
- ) &&
- wiki_page_exist \\ko\\o &&
- wiki_check_content mw_dir_18/\\ko\\o.mw \\ko\\o
-
-'
-
-test_expect_success 'git clone with \ in format control' '
- wiki_reset &&
- wiki_editpage \\no\\o "this is not important" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_19 &&
- test_path_is_file mw_dir_19/\\no\\o.mw &&
- wiki_check_content mw_dir_19/\\no\\o.mw \\no\\o
-'
-
-
-test_expect_success 'git push with \ in format control' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_20 &&
- echo "I will be on the wiki" >mw_dir_20/\\fo\\o.mw &&
- (
- cd mw_dir_20 &&
- git add \\fo\\o.mw &&
- git commit -m " \\fo\\o added" &&
- git push
- ) &&
- wiki_page_exist \\fo\\o &&
- wiki_check_content mw_dir_20/\\fo\\o.mw \\fo\\o
-
-'
-
-
-test_expect_success 'fast-import meta-characters in page name (mw -> git)' '
- wiki_reset &&
- wiki_editpage \"file\"_\\_foo "expect to be called \"file\"_\\_foo" false &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_21 &&
- test_path_is_file mw_dir_21/\"file\"_\\_foo.mw &&
- wiki_getallpage ref_page_21 &&
- test_diff_directories mw_dir_21 ref_page_21
-'
-
-
-test_expect_success 'fast-import meta-characters in page name (git -> mw) ' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir_22 &&
- (
- cd mw_dir_22 &&
- echo "this file is called \"file\"_\\_foo.mw" >\"file\"_\\_foo &&
- git add . &&
- git commit -am "file \"file\"_\\_foo" &&
- git pull &&
- git push
- ) &&
- wiki_getallpage ref_page_22 &&
- test_diff_directories mw_dir_22 ref_page_22
-'
-
-
-test_done
diff --git a/contrib/mw-to-git/t/t9363-mw-to-git-export-import.sh b/contrib/mw-to-git/t/t9363-mw-to-git-export-import.sh
deleted file mode 100755
index 7139995a40..0000000000
--- a/contrib/mw-to-git/t/t9363-mw-to-git-export-import.sh
+++ /dev/null
@@ -1,218 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) 2012
-# Charles Roussel <charles.roussel@ensimag.imag.fr>
-# Simon Cathebras <simon.cathebras@ensimag.imag.fr>
-# Julien Khayat <julien.khayat@ensimag.imag.fr>
-# Guillaume Sasdy <guillaume.sasdy@ensimag.imag.fr>
-# Simon Perrat <simon.perrat@ensimag.imag.fr>
-#
-# License: GPL v2 or later
-
-# tests for git-remote-mediawiki
-
-test_description='Test the Git Mediawiki remote helper: git push and git pull simple test cases'
-
-. ./test-gitmw-lib.sh
-. $TEST_DIRECTORY/test-lib.sh
-
-
-test_check_precond
-
-
-test_git_reimport () {
- git -c remote.origin.dumbPush=true push &&
- git -c remote.origin.mediaImport=true pull --rebase
-}
-
-# Don't bother with permissions, be administrator by default
-test_expect_success 'setup config' '
- git config --global remote.origin.mwLogin "$WIKI_ADMIN" &&
- git config --global remote.origin.mwPassword "$WIKI_PASSW" &&
- test_might_fail git config --global --unset remote.origin.mediaImport
-'
-
-test_expect_failure 'git push can upload media (File:) files' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir &&
- (
- cd mw_dir &&
- echo "hello world" >Foo.txt &&
- git add Foo.txt &&
- git commit -m "add a text file" &&
- git push &&
- "$PERL_PATH" -e "print STDOUT \"binary content: \".chr(255);" >Foo.txt &&
- git add Foo.txt &&
- git commit -m "add a text file with binary content" &&
- git push
- )
-'
-
-test_expect_failure 'git clone works on previously created wiki with media files' '
- test_when_finished "rm -rf mw_dir mw_dir_clone" &&
- git clone -c remote.origin.mediaimport=true \
- mediawiki::'"$WIKI_URL"' mw_dir_clone &&
- test_cmp mw_dir_clone/Foo.txt mw_dir/Foo.txt &&
- (cd mw_dir_clone && git checkout HEAD^) &&
- (cd mw_dir && git checkout HEAD^) &&
- test_path_is_file mw_dir_clone/Foo.txt &&
- test_cmp mw_dir_clone/Foo.txt mw_dir/Foo.txt
-'
-
-test_expect_success 'git push can upload media (File:) files containing valid UTF-8' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir &&
- (
- cd mw_dir &&
- "$PERL_PATH" -e "print STDOUT \"UTF-8 content: éèàéê€.\";" >Bar.txt &&
- git add Bar.txt &&
- git commit -m "add a text file with UTF-8 content" &&
- git push
- )
-'
-
-test_expect_success 'git clone works on previously created wiki with media files containing valid UTF-8' '
- test_when_finished "rm -rf mw_dir mw_dir_clone" &&
- git clone -c remote.origin.mediaimport=true \
- mediawiki::'"$WIKI_URL"' mw_dir_clone &&
- test_cmp mw_dir_clone/Bar.txt mw_dir/Bar.txt
-'
-
-test_expect_success 'git push & pull work with locally renamed media files' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir &&
- test_when_finished "rm -fr mw_dir" &&
- (
- cd mw_dir &&
- echo "A File" >Foo.txt &&
- git add Foo.txt &&
- git commit -m "add a file" &&
- git mv Foo.txt Bar.txt &&
- git commit -m "Rename a file" &&
- test_git_reimport &&
- echo "A File" >expect &&
- test_cmp expect Bar.txt &&
- test_path_is_missing Foo.txt
- )
-'
-
-test_expect_success 'git push can propagate local page deletion' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir &&
- test_when_finished "rm -fr mw_dir" &&
- (
- cd mw_dir &&
- test_path_is_missing Foo.mw &&
- echo "hello world" >Foo.mw &&
- git add Foo.mw &&
- git commit -m "Add the page Foo" &&
- git push &&
- rm -f Foo.mw &&
- git commit -am "Delete the page Foo" &&
- test_git_reimport &&
- test_path_is_missing Foo.mw
- )
-'
-
-test_expect_success 'git push can propagate local media file deletion' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir &&
- test_when_finished "rm -fr mw_dir" &&
- (
- cd mw_dir &&
- echo "hello world" >Foo.txt &&
- git add Foo.txt &&
- git commit -m "Add the text file Foo" &&
- git rm Foo.txt &&
- git commit -m "Delete the file Foo" &&
- test_git_reimport &&
- test_path_is_missing Foo.txt
- )
-'
-
-# test failure: the file is correctly uploaded, and then deleted but
-# as no page link to it, the import (which looks at page revisions)
-# doesn't notice the file deletion on the wiki. We fetch the list of
-# files from the wiki, but as the file is deleted, it doesn't appear.
-test_expect_failure 'git pull correctly imports media file deletion when no page link to it' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir &&
- test_when_finished "rm -fr mw_dir" &&
- (
- cd mw_dir &&
- echo "hello world" >Foo.txt &&
- git add Foo.txt &&
- git commit -m "Add the text file Foo" &&
- git push &&
- git rm Foo.txt &&
- git commit -m "Delete the file Foo" &&
- test_git_reimport &&
- test_path_is_missing Foo.txt
- )
-'
-
-test_expect_success 'git push properly warns about insufficient permissions' '
- wiki_reset &&
- git clone mediawiki::'"$WIKI_URL"' mw_dir &&
- test_when_finished "rm -fr mw_dir" &&
- (
- cd mw_dir &&
- echo "A File" >foo.forbidden &&
- git add foo.forbidden &&
- git commit -m "add a file" &&
- git push 2>actual &&
- test_grep "foo.forbidden is not a permitted file" actual
- )
-'
-
-test_expect_success 'setup a repository with media files' '
- wiki_reset &&
- wiki_editpage testpage "I am linking a file [[File:File.txt]]" false &&
- echo "File content" >File.txt &&
- wiki_upload_file File.txt &&
- echo "Another file content" >AnotherFile.txt &&
- wiki_upload_file AnotherFile.txt
-'
-
-test_expect_success 'git clone works with one specific page cloned and mediaimport=true' '
- git clone -c remote.origin.pages=testpage \
- -c remote.origin.mediaimport=true \
- mediawiki::'"$WIKI_URL"' mw_dir_15 &&
- test_when_finished "rm -rf mw_dir_15" &&
- test_contains_N_files mw_dir_15 3 &&
- test_path_is_file mw_dir_15/Testpage.mw &&
- test_path_is_file mw_dir_15/File:File.txt.mw &&
- test_path_is_file mw_dir_15/File.txt &&
- test_path_is_missing mw_dir_15/Main_Page.mw &&
- test_path_is_missing mw_dir_15/File:AnotherFile.txt.mw &&
- test_path_is_missing mw_dir_15/AnothetFile.txt &&
- wiki_check_content mw_dir_15/Testpage.mw Testpage &&
- test_cmp mw_dir_15/File.txt File.txt
-'
-
-test_expect_success 'git clone works with one specific page cloned and mediaimport=false' '
- test_when_finished "rm -rf mw_dir_16" &&
- git clone -c remote.origin.pages=testpage \
- mediawiki::'"$WIKI_URL"' mw_dir_16 &&
- test_contains_N_files mw_dir_16 1 &&
- test_path_is_file mw_dir_16/Testpage.mw &&
- test_path_is_missing mw_dir_16/File:File.txt.mw &&
- test_path_is_missing mw_dir_16/File.txt &&
- test_path_is_missing mw_dir_16/Main_Page.mw &&
- wiki_check_content mw_dir_16/Testpage.mw Testpage
-'
-
-# should behave like mediaimport=false
-test_expect_success 'git clone works with one specific page cloned and mediaimport unset' '
- test_when_finished "rm -fr mw_dir_17" &&
- git clone -c remote.origin.pages=testpage \
- mediawiki::'"$WIKI_URL"' mw_dir_17 &&
- test_contains_N_files mw_dir_17 1 &&
- test_path_is_file mw_dir_17/Testpage.mw &&
- test_path_is_missing mw_dir_17/File:File.txt.mw &&
- test_path_is_missing mw_dir_17/File.txt &&
- test_path_is_missing mw_dir_17/Main_Page.mw &&
- wiki_check_content mw_dir_17/Testpage.mw Testpage
-'
-
-test_done
diff --git a/contrib/mw-to-git/t/t9364-pull-by-rev.sh b/contrib/mw-to-git/t/t9364-pull-by-rev.sh
deleted file mode 100755
index 5c22457a0b..0000000000
--- a/contrib/mw-to-git/t/t9364-pull-by-rev.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-test_description='Test the Git Mediawiki remote helper: git pull by revision'
-
-. ./test-gitmw-lib.sh
-. ./push-pull-tests.sh
-. $TEST_DIRECTORY/test-lib.sh
-
-test_check_precond
-
-test_expect_success 'configuration' '
- git config --global mediawiki.fetchStrategy by_rev
-'
-
-test_push_pull
-
-test_done
diff --git a/contrib/mw-to-git/t/t9365-continuing-queries.sh b/contrib/mw-to-git/t/t9365-continuing-queries.sh
deleted file mode 100755
index d3e7312659..0000000000
--- a/contrib/mw-to-git/t/t9365-continuing-queries.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-test_description='Test the Git Mediawiki remote helper: queries w/ more than 500 results'
-
-. ./test-gitmw-lib.sh
-. $TEST_DIRECTORY/test-lib.sh
-
-test_check_precond
-
-test_expect_success 'creating page w/ >500 revisions' '
- wiki_reset &&
- for i in $(test_seq 501)
- do
- echo "creating revision $i" &&
- wiki_editpage foo "revision $i<br/>" true || return 1
- done
-'
-
-test_expect_success 'cloning page w/ >500 revisions' '
- git clone mediawiki::'"$WIKI_URL"' mw_dir
-'
-
-test_done
diff --git a/contrib/mw-to-git/t/test-gitmw-lib.sh b/contrib/mw-to-git/t/test-gitmw-lib.sh
deleted file mode 100755
index 64e46c1671..0000000000
--- a/contrib/mw-to-git/t/test-gitmw-lib.sh
+++ /dev/null
@@ -1,432 +0,0 @@
-# Copyright (C) 2012
-# Charles Roussel <charles.roussel@ensimag.imag.fr>
-# Simon Cathebras <simon.cathebras@ensimag.imag.fr>
-# Julien Khayat <julien.khayat@ensimag.imag.fr>
-# Guillaume Sasdy <guillaume.sasdy@ensimag.imag.fr>
-# Simon Perrat <simon.perrat@ensimag.imag.fr>
-# License: GPL v2 or later
-
-#
-# CONFIGURATION VARIABLES
-# You might want to change these ones
-#
-
-. ./test.config
-
-WIKI_BASE_URL=http://$SERVER_ADDR:$PORT
-WIKI_URL=$WIKI_BASE_URL/$WIKI_DIR_NAME
-CURR_DIR=$(pwd)
-TEST_OUTPUT_DIRECTORY=$(pwd)
-TEST_DIRECTORY="$CURR_DIR"/../../../t
-
-export TEST_OUTPUT_DIRECTORY TEST_DIRECTORY CURR_DIR
-
-if test "$LIGHTTPD" = "false" ; then
- PORT=80
-else
- WIKI_DIR_INST="$CURR_DIR/$WEB_WWW"
-fi
-
-wiki_upload_file () {
- "$CURR_DIR"/test-gitmw.pl upload_file "$@"
-}
-
-wiki_getpage () {
- "$CURR_DIR"/test-gitmw.pl get_page "$@"
-}
-
-wiki_delete_page () {
- "$CURR_DIR"/test-gitmw.pl delete_page "$@"
-}
-
-wiki_editpage () {
- "$CURR_DIR"/test-gitmw.pl edit_page "$@"
-}
-
-die () {
- die_with_status 1 "$@"
-}
-
-die_with_status () {
- status=$1
- shift
- echo >&2 "$*"
- exit "$status"
-}
-
-
-# Check the preconditions to run git-remote-mediawiki's tests
-test_check_precond () {
- if ! test_have_prereq PERL
- then
- skip_all='skipping gateway git-mw tests, perl not available'
- test_done
- fi
-
- GIT_EXEC_PATH=$(cd "$(dirname "$0")" && cd "../.." && pwd)
- PATH="$GIT_EXEC_PATH"'/bin-wrapper:'"$PATH"
-
- if ! test -d "$WIKI_DIR_INST/$WIKI_DIR_NAME"
- then
- skip_all='skipping gateway git-mw tests, no mediawiki found'
- test_done
- fi
-}
-
-# test_diff_directories <dir_git> <dir_wiki>
-#
-# Compare the contents of directories <dir_git> and <dir_wiki> with diff
-# and errors if they do not match. The program will
-# not look into .git in the process.
-# Warning: the first argument MUST be the directory containing the git data
-test_diff_directories () {
- rm -rf "$1_tmp"
- mkdir -p "$1_tmp"
- cp "$1"/*.mw "$1_tmp"
- diff -r -b "$1_tmp" "$2"
-}
-
-# $1=<dir>
-# $2=<N>
-#
-# Check that <dir> contains exactly <N> files
-test_contains_N_files () {
- if test $(ls -- "$1" | wc -l) -ne "$2"; then
- echo "directory $1 should contain $2 files"
- echo "it contains these files:"
- ls "$1"
- false
- fi
-}
-
-
-# wiki_check_content <file_name> <page_name>
-#
-# Compares the contents of the file <file_name> and the wiki page
-# <page_name> and exits with error 1 if they do not match.
-wiki_check_content () {
- mkdir -p wiki_tmp
- wiki_getpage "$2" wiki_tmp
- # replacement of forbidden character in file name
- page_name=$(printf "%s\n" "$2" | sed -e "s/\//%2F/g")
-
- diff -b "$1" wiki_tmp/"$page_name".mw
- if test $? -ne 0
- then
- rm -rf wiki_tmp
- error "ERROR: file $2 not found on wiki"
- fi
- rm -rf wiki_tmp
-}
-
-# wiki_page_exist <page_name>
-#
-# Check the existence of the page <page_name> on the wiki and exits
-# with error if it is absent from it.
-wiki_page_exist () {
- mkdir -p wiki_tmp
- wiki_getpage "$1" wiki_tmp
- page_name=$(printf "%s\n" "$1" | sed "s/\//%2F/g")
- if test -f wiki_tmp/"$page_name".mw ; then
- rm -rf wiki_tmp
- else
- rm -rf wiki_tmp
- error "test failed: file $1 not found on wiki"
- fi
-}
-
-# wiki_getallpagename
-#
-# Fetch the name of each page on the wiki.
-wiki_getallpagename () {
- "$CURR_DIR"/test-gitmw.pl getallpagename
-}
-
-# wiki_getallpagecategory <category>
-#
-# Fetch the name of each page belonging to <category> on the wiki.
-wiki_getallpagecategory () {
- "$CURR_DIR"/test-gitmw.pl getallpagename "$@"
-}
-
-# wiki_getallpage <dest_dir> [<category>]
-#
-# Fetch all the pages from the wiki and place them in the directory
-# <dest_dir>.
-# If <category> is define, then wiki_getallpage fetch the pages included
-# in <category>.
-wiki_getallpage () {
- if test -z "$2";
- then
- wiki_getallpagename
- else
- wiki_getallpagecategory "$2"
- fi
- mkdir -p "$1"
- while read -r line; do
- wiki_getpage "$line" $1;
- done < all.txt
-}
-
-# ================= Install part =================
-
-error () {
- echo "$@" >&2
- exit 1
-}
-
-# config_lighttpd
-#
-# Create the configuration files and the folders necessary to start lighttpd.
-# Overwrite any existing file.
-config_lighttpd () {
- mkdir -p $WEB
- mkdir -p $WEB_TMP
- mkdir -p $WEB_WWW
- cat > $WEB/lighttpd.conf <<EOF
- server.document-root = "$CURR_DIR/$WEB_WWW"
- server.port = $PORT
- server.pid-file = "$CURR_DIR/$WEB_TMP/pid"
-
- server.modules = (
- "mod_rewrite",
- "mod_redirect",
- "mod_access",
- "mod_accesslog",
- "mod_fastcgi"
- )
-
- index-file.names = ("index.php" , "index.html")
-
- mimetype.assign = (
- ".pdf" => "application/pdf",
- ".sig" => "application/pgp-signature",
- ".spl" => "application/futuresplash",
- ".class" => "application/octet-stream",
- ".ps" => "application/postscript",
- ".torrent" => "application/x-bittorrent",
- ".dvi" => "application/x-dvi",
- ".gz" => "application/x-gzip",
- ".pac" => "application/x-ns-proxy-autoconfig",
- ".swf" => "application/x-shockwave-flash",
- ".tar.gz" => "application/x-tgz",
- ".tgz" => "application/x-tgz",
- ".tar" => "application/x-tar",
- ".zip" => "application/zip",
- ".mp3" => "audio/mpeg",
- ".m3u" => "audio/x-mpegurl",
- ".wma" => "audio/x-ms-wma",
- ".wax" => "audio/x-ms-wax",
- ".ogg" => "application/ogg",
- ".wav" => "audio/x-wav",
- ".gif" => "image/gif",
- ".jpg" => "image/jpeg",
- ".jpeg" => "image/jpeg",
- ".png" => "image/png",
- ".xbm" => "image/x-xbitmap",
- ".xpm" => "image/x-xpixmap",
- ".xwd" => "image/x-xwindowdump",
- ".css" => "text/css",
- ".html" => "text/html",
- ".htm" => "text/html",
- ".js" => "text/javascript",
- ".asc" => "text/plain",
- ".c" => "text/plain",
- ".cpp" => "text/plain",
- ".log" => "text/plain",
- ".conf" => "text/plain",
- ".text" => "text/plain",
- ".txt" => "text/plain",
- ".dtd" => "text/xml",
- ".xml" => "text/xml",
- ".mpeg" => "video/mpeg",
- ".mpg" => "video/mpeg",
- ".mov" => "video/quicktime",
- ".qt" => "video/quicktime",
- ".avi" => "video/x-msvideo",
- ".asf" => "video/x-ms-asf",
- ".asx" => "video/x-ms-asf",
- ".wmv" => "video/x-ms-wmv",
- ".bz2" => "application/x-bzip",
- ".tbz" => "application/x-bzip-compressed-tar",
- ".tar.bz2" => "application/x-bzip-compressed-tar",
- "" => "text/plain"
- )
-
- fastcgi.server = ( ".php" =>
- ("localhost" =>
- ( "socket" => "$CURR_DIR/$WEB_TMP/php.socket",
- "bin-path" => "$PHP_DIR/php-cgi -c $CURR_DIR/$WEB/php.ini"
-
- )
- )
- )
-EOF
-
- cat > $WEB/php.ini <<EOF
- session.save_path ='$CURR_DIR/$WEB_TMP'
-EOF
-}
-
-# start_lighttpd
-#
-# Start or restart daemon lighttpd. If restart, rewrite configuration files.
-start_lighttpd () {
- if test -f "$WEB_TMP/pid"; then
- echo "Instance already running. Restarting..."
- stop_lighttpd
- fi
- config_lighttpd
- "$LIGHTTPD_DIR"/lighttpd -f "$WEB"/lighttpd.conf
-
- if test $? -ne 0 ; then
- echo "Could not execute http daemon lighttpd"
- exit 1
- fi
-}
-
-# stop_lighttpd
-#
-# Kill daemon lighttpd and removes files and folders associated.
-stop_lighttpd () {
- test -f "$WEB_TMP/pid" && kill $(cat "$WEB_TMP/pid")
-}
-
-wiki_delete_db () {
- rm -rf \
- "$FILES_FOLDER_DB"/* || error "Couldn't delete $FILES_FOLDER_DB/"
-}
-
-wiki_delete_db_backup () {
- rm -rf \
- "$FILES_FOLDER_POST_INSTALL_DB"/* || error "Couldn't delete $FILES_FOLDER_POST_INSTALL_DB/"
-}
-
-# Install MediaWiki using its install.php script. If the database file
-# already exists, it will be deleted.
-install_mediawiki () {
-
- localsettings="$WIKI_DIR_INST/$WIKI_DIR_NAME/LocalSettings.php"
- if test -f "$localsettings"
- then
- error "We already installed the wiki, since $localsettings exists" \
- "perhaps you wanted to run 'delete' first?"
- fi
-
- wiki_delete_db
- wiki_delete_db_backup
- mkdir \
- "$FILES_FOLDER_DB/" \
- "$FILES_FOLDER_POST_INSTALL_DB/"
-
- install_script="$WIKI_DIR_INST/$WIKI_DIR_NAME/maintenance/install.php"
- echo "Installing MediaWiki using $install_script. This may take some time ..."
-
- php "$WIKI_DIR_INST/$WIKI_DIR_NAME/maintenance/install.php" \
- --server $WIKI_BASE_URL \
- --scriptpath /wiki \
- --lang en \
- --dbtype sqlite \
- --dbpath $PWD/$FILES_FOLDER_DB/ \
- --pass "$WIKI_PASSW" \
- Git-MediaWiki-Test \
- "$WIKI_ADMIN" ||
- error "Couldn't run $install_script, see errors above. Try to run ./install-wiki.sh delete first."
- cat <<-'EOF' >>$localsettings
-# Custom settings added by test-gitmw-lib.sh
-#
-# Uploading text files is needed for
-# t9363-mw-to-git-export-import.sh
-$wgEnableUploads = true;
-$wgFileExtensions[] = 'txt';
-EOF
-
- # Copy the initially generated database file into our backup
- # folder
- cp -R "$FILES_FOLDER_DB/"* "$FILES_FOLDER_POST_INSTALL_DB/" ||
- error "Unable to copy $FILES_FOLDER_DB/* to $FILES_FOLDER_POST_INSTALL_DB/*"
-}
-
-# Install a wiki in your web server directory.
-wiki_install () {
- if test $LIGHTTPD = "true" ; then
- start_lighttpd
- fi
-
- # In this part, we change directory to $TMP in order to download,
- # unpack and copy the files of MediaWiki
- (
- mkdir -p "$WIKI_DIR_INST/$WIKI_DIR_NAME"
- if ! test -d "$WIKI_DIR_INST/$WIKI_DIR_NAME"
- then
- error "Folder $WIKI_DIR_INST/$WIKI_DIR_NAME doesn't exist.
- Please create it and launch the script again."
- fi
-
- # Fetch MediaWiki's archive if not already present in the
- # download directory
- mkdir -p "$FILES_FOLDER_DOWNLOAD"
- MW_FILENAME="mediawiki-$MW_VERSION_MAJOR.$MW_VERSION_MINOR.tar.gz"
- cd "$FILES_FOLDER_DOWNLOAD"
- if ! test -f $MW_FILENAME
- then
- echo "Downloading $MW_VERSION_MAJOR.$MW_VERSION_MINOR sources ..."
- wget "http://download.wikimedia.org/mediawiki/$MW_VERSION_MAJOR/$MW_FILENAME" ||
- error "Unable to download "\
- "http://download.wikimedia.org/mediawiki/$MW_VERSION_MAJOR/"\
- "$MW_FILENAME. "\
- "Please fix your connection and launch the script again."
- echo "$MW_FILENAME downloaded in $(pwd)/;" \
- "you can delete it later if you want."
- else
- echo "Reusing existing $MW_FILENAME downloaded in $(pwd)/"
- fi
- archive_abs_path=$(pwd)/$MW_FILENAME
- cd "$WIKI_DIR_INST/$WIKI_DIR_NAME/" ||
- error "can't cd to $WIKI_DIR_INST/$WIKI_DIR_NAME/"
- tar xzf "$archive_abs_path" --strip-components=1 ||
- error "Unable to extract WikiMedia's files from $archive_abs_path to "\
- "$WIKI_DIR_INST/$WIKI_DIR_NAME"
- ) || exit 1
- echo Extracted in "$WIKI_DIR_INST/$WIKI_DIR_NAME"
-
- install_mediawiki
-
- echo "Your wiki has been installed. You can check it at
- $WIKI_URL"
-}
-
-# Reset the database of the wiki and the password of the admin
-#
-# Warning: This function must be called only in a subdirectory of t/ directory
-wiki_reset () {
- # Copy initial database of the wiki
- if ! test -d "../$FILES_FOLDER_DB"
- then
- error "No wiki database at ../$FILES_FOLDER_DB, not installed yet?"
- fi
- if ! test -d "../$FILES_FOLDER_POST_INSTALL_DB"
- then
- error "No wiki backup database at ../$FILES_FOLDER_POST_INSTALL_DB, failed installation?"
- fi
- wiki_delete_db
- cp -R "../$FILES_FOLDER_POST_INSTALL_DB/"* "../$FILES_FOLDER_DB/" ||
- error "Can't copy ../$FILES_FOLDER_POST_INSTALL_DB/* to ../$FILES_FOLDER_DB/*"
- echo "File $FILES_FOLDER_DB/* has been reset"
-}
-
-# Delete the wiki created in the web server's directory and all its content
-# saved in the database.
-wiki_delete () {
- if test $LIGHTTPD = "true"; then
- stop_lighttpd
- rm -fr "$WEB"
- else
- # Delete the wiki's directory.
- rm -rf "$WIKI_DIR_INST/$WIKI_DIR_NAME" ||
- error "Wiki's directory $WIKI_DIR_INST/" \
- "$WIKI_DIR_NAME could not be deleted"
- fi
- wiki_delete_db
- wiki_delete_db_backup
-}
diff --git a/contrib/mw-to-git/t/test-gitmw.pl b/contrib/mw-to-git/t/test-gitmw.pl
deleted file mode 100755
index c5d687f078..0000000000
--- a/contrib/mw-to-git/t/test-gitmw.pl
+++ /dev/null
@@ -1,223 +0,0 @@
-#!/usr/bin/perl -w -s
-# Copyright (C) 2012
-# Charles Roussel <charles.roussel@ensimag.imag.fr>
-# Simon Cathebras <simon.cathebras@ensimag.imag.fr>
-# Julien Khayat <julien.khayat@ensimag.imag.fr>
-# Guillaume Sasdy <guillaume.sasdy@ensimag.imag.fr>
-# Simon Perrat <simon.perrat@ensimag.imag.fr>
-# License: GPL v2 or later
-
-# Usage:
-# ./test-gitmw.pl <command> [argument]*
-# Execute in terminal using the name of the function to call as first
-# parameter, and the function's arguments as following parameters
-#
-# Example:
-# ./test-gitmw.pl "get_page" foo .
-# will call <wiki_getpage> with arguments <foo> and <.>
-#
-# Available functions are:
-# "get_page"
-# "delete_page"
-# "edit_page"
-# "getallpagename"
-
-use MediaWiki::API;
-use Getopt::Long;
-use DateTime::Format::ISO8601;
-use constant SLASH_REPLACEMENT => "%2F";
-
-#Parsing of the config file
-
-my $configfile = "$ENV{'CURR_DIR'}/test.config";
-my %config;
-open my $CONFIG, "<", $configfile or die "can't open $configfile: $!";
-while (<$CONFIG>)
-{
- chomp;
- s/#.*//;
- s/^\s+//;
- s/\s+$//;
- next unless length;
- my ($key, $value) = split (/\s*=\s*/,$_, 2);
- $config{$key} = $value;
- last if ($key eq 'LIGHTTPD' and $value eq 'false');
- last if ($key eq 'PORT');
-}
-close $CONFIG or die "can't close $configfile: $!";
-
-my $wiki_address = "http://$config{'SERVER_ADDR'}".":"."$config{'PORT'}";
-my $wiki_url = "$wiki_address/$config{'WIKI_DIR_NAME'}/api.php";
-my $wiki_admin = "$config{'WIKI_ADMIN'}";
-my $wiki_admin_pass = "$config{'WIKI_PASSW'}";
-my $mw = MediaWiki::API->new;
-$mw->{config}->{api_url} = $wiki_url;
-
-
-# wiki_login <name> <password>
-#
-# Logs the user with <name> and <password> in the global variable
-# of the mediawiki $mw
-sub wiki_login {
- $mw->login( { lgname => "$_[0]",lgpassword => "$_[1]" } )
- || die "getpage: login failed";
-}
-
-# wiki_getpage <wiki_page> <dest_path>
-#
-# fetch a page <wiki_page> from the wiki referenced in the global variable
-# $mw and copies its content in directory dest_path
-sub wiki_getpage {
- my $pagename = $_[0];
- my $destdir = $_[1];
-
- my $page = $mw->get_page( { title => $pagename } );
- if (!defined($page)) {
- die "getpage: wiki does not exist";
- }
-
- my $content = $page->{'*'};
- if (!defined($content)) {
- die "getpage: page does not exist";
- }
-
- $pagename=$page->{'title'};
- # Replace spaces by underscore in the page name
- $pagename =~ s/ /_/g;
- $pagename =~ s/\//%2F/g;
- open(my $file, ">:encoding(UTF-8)", "$destdir/$pagename.mw");
- print $file "$content";
- close ($file);
-
-}
-
-# wiki_delete_page <page_name>
-#
-# delete the page with name <page_name> from the wiki referenced
-# in the global variable $mw
-sub wiki_delete_page {
- my $pagename = $_[0];
-
- my $exist=$mw->get_page({title => $pagename});
-
- if (defined($exist->{'*'})){
- $mw->edit({ action => 'delete',
- title => $pagename})
- || die $mw->{error}->{code} . ": " . $mw->{error}->{details};
- } else {
- die "no page with such name found: $pagename\n";
- }
-}
-
-# wiki_editpage <wiki_page> <wiki_content> <wiki_append> [-c=<category>] [-s=<summary>]
-#
-# Edit a page named <wiki_page> with content <wiki_content> on the wiki
-# referenced with the global variable $mw
-# If <wiki_append> == true : append <wiki_content> at the end of the actual
-# content of the page <wiki_page>
-# If <wik_page> doesn't exist, that page is created with the <wiki_content>
-sub wiki_editpage {
- my $wiki_page = $_[0];
- my $wiki_content = $_[1];
- my $wiki_append = $_[2];
- my $summary = "";
- my ($summ, $cat) = ();
- GetOptions('s=s' => \$summ, 'c=s' => \$cat);
-
- my $append = 0;
- if (defined($wiki_append) && $wiki_append eq 'true') {
- $append=1;
- }
-
- my $previous_text ="";
-
- if ($append) {
- my $ref = $mw->get_page( { title => $wiki_page } );
- $previous_text = $ref->{'*'};
- }
-
- my $text = $wiki_content;
- if (defined($previous_text)) {
- $text="$previous_text$text";
- }
-
- # Eventually, add this page to a category.
- if (defined($cat)) {
- my $category_name="[[Category:$cat]]";
- $text="$text\n $category_name";
- }
- if(defined($summ)){
- $summary=$summ;
- }
-
- $mw->edit( { action => 'edit', title => $wiki_page, summary => $summary, text => "$text"} );
-}
-
-# wiki_getallpagename [<category>]
-#
-# Fetch all pages of the wiki referenced by the global variable $mw
-# and print the names of each one in the file all.txt with a new line
-# ("\n") between these.
-# If the argument <category> is defined, then this function get only the pages
-# belonging to <category>.
-sub wiki_getallpagename {
- # fetch the pages of the wiki
- if (defined($_[0])) {
- my $mw_pages = $mw->list ( { action => 'query',
- list => 'categorymembers',
- cmtitle => "Category:$_[0]",
- cmnamespace => 0,
- cmlimit => 500 },
- )
- || die $mw->{error}->{code}.": ".$mw->{error}->{details};
- open(my $file, ">:encoding(UTF-8)", "all.txt");
- foreach my $page (@{$mw_pages}) {
- print $file "$page->{title}\n";
- }
- close ($file);
-
- } else {
- my $mw_pages = $mw->list({
- action => 'query',
- list => 'allpages',
- aplimit => 500,
- })
- || die $mw->{error}->{code}.": ".$mw->{error}->{details};
- open(my $file, ">:encoding(UTF-8)", "all.txt");
- foreach my $page (@{$mw_pages}) {
- print $file "$page->{title}\n";
- }
- close ($file);
- }
-}
-
-sub wiki_upload_file {
- my $file_name = $_[0];
- my $resultat = $mw->edit ( {
- action => 'upload',
- filename => $file_name,
- comment => 'upload a file',
- file => [ $file_name ],
- ignorewarnings=>1,
- }, {
- skip_encoding => 1
- } ) || die $mw->{error}->{code} . ' : ' . $mw->{error}->{details};
-}
-
-
-
-# Main part of this script: parse the command line arguments
-# and select which function to execute
-my $fct_to_call = shift;
-
-wiki_login($wiki_admin, $wiki_admin_pass);
-
-my %functions_to_call = (
- upload_file => \&wiki_upload_file,
- get_page => \&wiki_getpage,
- delete_page => \&wiki_delete_page,
- edit_page => \&wiki_editpage,
- getallpagename => \&wiki_getallpagename,
-);
-die "$0 ERROR: wrong argument" unless exists $functions_to_call{$fct_to_call};
-$functions_to_call{$fct_to_call}->(map { utf8::decode($_); $_ } @ARGV);
diff --git a/contrib/mw-to-git/t/test.config b/contrib/mw-to-git/t/test.config
deleted file mode 100644
index ed10b3e4a4..0000000000
--- a/contrib/mw-to-git/t/test.config
+++ /dev/null
@@ -1,40 +0,0 @@
-# Name of the web server's directory dedicated to the wiki is WIKI_DIR_NAME
-WIKI_DIR_NAME=wiki
-
-# Login and password of the wiki's admin
-WIKI_ADMIN=WikiAdmin
-WIKI_PASSW=AdminPass1
-
-# Address of the web server
-SERVER_ADDR=localhost
-
-# If LIGHTTPD is not set to true, the script will use the default
-# web server running in WIKI_DIR_INST.
-WIKI_DIR_INST=/var/www
-
-# If LIGHTTPD is set to true, the script will use Lighttpd to run
-# the wiki.
-LIGHTTPD=true
-
-# The variables below are useful only if LIGHTTPD is set to true.
-PORT=1234
-PHP_DIR=/usr/bin
-LIGHTTPD_DIR=/usr/sbin
-WEB=WEB
-WEB_TMP=$WEB/tmp
-WEB_WWW=$WEB/www
-
-# Where our configuration for the wiki is located
-FILES_FOLDER=mediawiki
-FILES_FOLDER_DOWNLOAD=$FILES_FOLDER/download
-FILES_FOLDER_DB=$FILES_FOLDER/db
-FILES_FOLDER_POST_INSTALL_DB=$FILES_FOLDER/post-install-db
-
-# The variables below are used by the script to install a wiki.
-# You should not modify these unless you are modifying the script itself.
-# tested versions: 1.19.X -> 1.21.1 -> 1.34.2
-#
-# See https://www.mediawiki.org/wiki/Download for what the latest
-# version is.
-MW_VERSION_MAJOR=1.34
-MW_VERSION_MINOR=2
diff --git a/contrib/persistent-https/LICENSE b/contrib/persistent-https/LICENSE
deleted file mode 100644
index d645695673..0000000000
--- a/contrib/persistent-https/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/contrib/persistent-https/Makefile b/contrib/persistent-https/Makefile
deleted file mode 100644
index 691737e76b..0000000000
--- a/contrib/persistent-https/Makefile
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2012 Google Inc. All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# The default target of this Makefile is...
-all::
-
-BUILD_LABEL=$(shell cut -d" " -f3 ../../GIT-VERSION-FILE)
-TAR_OUT=$(shell go env GOOS)_$(shell go env GOARCH).tar.gz
-
-all:: git-remote-persistent-https git-remote-persistent-https--proxy \
- git-remote-persistent-http
-
-git-remote-persistent-https--proxy: git-remote-persistent-https
- ln -f -s git-remote-persistent-https git-remote-persistent-https--proxy
-
-git-remote-persistent-http: git-remote-persistent-https
- ln -f -s git-remote-persistent-https git-remote-persistent-http
-
-git-remote-persistent-https:
- case $$(go version) in \
- "go version go"1.[0-5].*) EQ=" " ;; *) EQ="=" ;; esac && \
- go build -o git-remote-persistent-https \
- -ldflags "-X main._BUILD_EMBED_LABEL$${EQ}$(BUILD_LABEL)"
-
-clean:
- rm -f git-remote-persistent-http* *.tar.gz
-
-tar: clean all
- @chmod 555 git-remote-persistent-https
- @tar -czf $(TAR_OUT) git-remote-persistent-http* README LICENSE
- @echo
- @echo "Created $(TAR_OUT)"
diff --git a/contrib/persistent-https/README b/contrib/persistent-https/README
deleted file mode 100644
index 7c4cd8d257..0000000000
--- a/contrib/persistent-https/README
+++ /dev/null
@@ -1,72 +0,0 @@
-git-remote-persistent-https
-
-The git-remote-persistent-https binary speeds up SSL operations
-by running a daemon job (git-remote-persistent-https--proxy) that
-keeps a connection open to a server.
-
-
-PRE-BUILT BINARIES
-
-Darwin amd64:
-https://commondatastorage.googleapis.com/git-remote-persistent-https/darwin_amd64.tar.gz
-
-Linux amd64:
-https://commondatastorage.googleapis.com/git-remote-persistent-https/linux_amd64.tar.gz
-
-
-INSTALLING
-
-Move all of the git-remote-persistent-http* binaries to a directory
-in PATH.
-
-
-USAGE
-
-HTTPS requests can be delegated to the proxy by using the
-"persistent-https" scheme, e.g.
-
-git clone persistent-https://kernel.googlesource.com/pub/scm/git/git
-
-Likewise, .gitconfig can be updated as follows to rewrite https urls
-to use persistent-https:
-
-[url "persistent-https"]
- insteadof = https
-[url "persistent-http"]
- insteadof = http
-
-You may also want to allow the use of the persistent-https helper for
-submodule URLs (since any https URLs pointing to submodules will be
-rewritten, and Git's out-of-the-box defaults forbid submodules from
-using unknown remote helpers):
-
-[protocol "persistent-https"]
- allow = always
-[protocol "persistent-http"]
- allow = always
-
-
-#####################################################################
-# BUILDING FROM SOURCE
-#####################################################################
-
-LOCATION
-
-The source is available in the contrib/persistent-https directory of
-the Git source repository. The Git source repository is available at
-git://git.kernel.org/pub/scm/git/git.git/
-https://kernel.googlesource.com/pub/scm/git/git
-
-
-PREREQUISITES
-
-The code is written in Go (http://golang.org/) and the Go compiler is
-required. Currently, the compiler must be built and installed from tip
-of source, in order to include a fix in the reverse http proxy:
-http://code.google.com/p/go/source/detail?r=a615b796570a2cd8591884767a7d67ede74f6648
-
-
-BUILDING
-
-Run "make" to build the binaries. See the section on
-INSTALLING above.
diff --git a/contrib/persistent-https/client.go b/contrib/persistent-https/client.go
deleted file mode 100644
index 71125b5832..0000000000
--- a/contrib/persistent-https/client.go
+++ /dev/null
@@ -1,189 +0,0 @@
-// Copyright 2012 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package main
-
-import (
- "bufio"
- "errors"
- "fmt"
- "net"
- "net/url"
- "os"
- "os/exec"
- "strings"
- "syscall"
- "time"
-)
-
-type Client struct {
- ProxyBin string
- Args []string
-
- insecure bool
-}
-
-func (c *Client) Run() error {
- if err := c.resolveArgs(); err != nil {
- return fmt.Errorf("resolveArgs() got error: %v", err)
- }
-
- // Connect to the proxy.
- uconn, hconn, addr, err := c.connect()
- if err != nil {
- return fmt.Errorf("connect() got error: %v", err)
- }
- // Keep the unix socket connection open for the duration of the request.
- defer uconn.Close()
- // Keep a connection to the HTTP server open, so no other user can
- // bind on the same address so long as the process is running.
- defer hconn.Close()
-
- // Start the git-remote-http subprocess.
- cargs := []string{"-c", fmt.Sprintf("http.proxy=%v", addr), "remote-http"}
- cargs = append(cargs, c.Args...)
- cmd := exec.Command("git", cargs...)
-
- for _, v := range os.Environ() {
- if !strings.HasPrefix(v, "GIT_PERSISTENT_HTTPS_SECURE=") {
- cmd.Env = append(cmd.Env, v)
- }
- }
- // Set the GIT_PERSISTENT_HTTPS_SECURE environment variable when
- // the proxy is using a SSL connection. This allows credential helpers
- // to identify secure proxy connections, despite being passed an HTTP
- // scheme.
- if !c.insecure {
- cmd.Env = append(cmd.Env, "GIT_PERSISTENT_HTTPS_SECURE=1")
- }
-
- cmd.Stdin = os.Stdin
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- if err := cmd.Run(); err != nil {
- if eerr, ok := err.(*exec.ExitError); ok {
- if stat, ok := eerr.ProcessState.Sys().(syscall.WaitStatus); ok && stat.ExitStatus() != 0 {
- os.Exit(stat.ExitStatus())
- }
- }
- return fmt.Errorf("git-remote-http subprocess got error: %v", err)
- }
- return nil
-}
-
-func (c *Client) connect() (uconn net.Conn, hconn net.Conn, addr string, err error) {
- uconn, err = DefaultSocket.Dial()
- if err != nil {
- if e, ok := err.(*net.OpError); ok && (os.IsNotExist(e.Err) || e.Err == syscall.ECONNREFUSED) {
- if err = c.startProxy(); err == nil {
- uconn, err = DefaultSocket.Dial()
- }
- }
- if err != nil {
- return
- }
- }
-
- if addr, err = c.readAddr(uconn); err != nil {
- return
- }
-
- // Open a tcp connection to the proxy.
- if hconn, err = net.Dial("tcp", addr); err != nil {
- return
- }
-
- // Verify the address hasn't changed ownership.
- var addr2 string
- if addr2, err = c.readAddr(uconn); err != nil {
- return
- } else if addr != addr2 {
- err = fmt.Errorf("address changed after connect. got %q, want %q", addr2, addr)
- return
- }
- return
-}
-
-func (c *Client) readAddr(conn net.Conn) (string, error) {
- conn.SetDeadline(time.Now().Add(5 * time.Second))
- data := make([]byte, 100)
- n, err := conn.Read(data)
- if err != nil {
- return "", fmt.Errorf("error reading unix socket: %v", err)
- } else if n == 0 {
- return "", errors.New("empty data response")
- }
- conn.Write([]byte{1}) // Ack
-
- var addr string
- if addrs := strings.Split(string(data[:n]), "\n"); len(addrs) != 2 {
- return "", fmt.Errorf("got %q, wanted 2 addresses", data[:n])
- } else if c.insecure {
- addr = addrs[1]
- } else {
- addr = addrs[0]
- }
- return addr, nil
-}
-
-func (c *Client) startProxy() error {
- cmd := exec.Command(c.ProxyBin)
- cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
- stdout, err := cmd.StdoutPipe()
- if err != nil {
- return err
- }
- defer stdout.Close()
- if err := cmd.Start(); err != nil {
- return err
- }
- result := make(chan error)
- go func() {
- bytes, _, err := bufio.NewReader(stdout).ReadLine()
- if line := string(bytes); err == nil && line != "OK" {
- err = fmt.Errorf("proxy returned %q, want \"OK\"", line)
- }
- result <- err
- }()
- select {
- case err := <-result:
- return err
- case <-time.After(5 * time.Second):
- return errors.New("timeout waiting for proxy to start")
- }
- panic("not reachable")
-}
-
-func (c *Client) resolveArgs() error {
- if nargs := len(c.Args); nargs == 0 {
- return errors.New("remote needed")
- } else if nargs > 2 {
- return fmt.Errorf("want at most 2 args, got %v", c.Args)
- }
-
- // Rewrite the url scheme to be http.
- idx := len(c.Args) - 1
- rawurl := c.Args[idx]
- rurl, err := url.Parse(rawurl)
- if err != nil {
- return fmt.Errorf("invalid remote: %v", err)
- }
- c.insecure = rurl.Scheme == "persistent-http"
- rurl.Scheme = "http"
- c.Args[idx] = rurl.String()
- if idx != 0 && c.Args[0] == rawurl {
- c.Args[0] = c.Args[idx]
- }
- return nil
-}
diff --git a/contrib/persistent-https/main.go b/contrib/persistent-https/main.go
deleted file mode 100644
index fd1b107743..0000000000
--- a/contrib/persistent-https/main.go
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2012 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// The git-remote-persistent-https binary speeds up SSL operations by running
-// a daemon job that keeps a connection open to a Git server. This ensures the
-// git-remote-persistent-https--proxy is running and delegating execution
-// to the git-remote-http binary with the http_proxy set to the daemon job.
-// A unix socket is used to authenticate the proxy and discover the
-// HTTP address. Note, both the client and proxy are included in the same
-// binary.
-package main
-
-import (
- "flag"
- "fmt"
- "log"
- "os"
- "strings"
- "time"
-)
-
-var (
- forceProxy = flag.Bool("proxy", false, "Whether to start the binary in proxy mode")
- proxyBin = flag.String("proxy_bin", "git-remote-persistent-https--proxy", "Path to the proxy binary")
- printLabel = flag.Bool("print_label", false, "Prints the build label for the binary")
-
- // Variable that should be defined through the -X linker flag.
- _BUILD_EMBED_LABEL string
-)
-
-const (
- defaultMaxIdleDuration = 24 * time.Hour
- defaultPollUpdateInterval = 15 * time.Minute
-)
-
-func main() {
- flag.Parse()
- if *printLabel {
- // Short circuit execution to print the build label
- fmt.Println(buildLabel())
- return
- }
-
- var err error
- if *forceProxy || strings.HasSuffix(os.Args[0], "--proxy") {
- log.SetPrefix("git-remote-persistent-https--proxy: ")
- proxy := &Proxy{
- BuildLabel: buildLabel(),
- MaxIdleDuration: defaultMaxIdleDuration,
- PollUpdateInterval: defaultPollUpdateInterval,
- }
- err = proxy.Run()
- } else {
- log.SetPrefix("git-remote-persistent-https: ")
- client := &Client{
- ProxyBin: *proxyBin,
- Args: flag.Args(),
- }
- err = client.Run()
- }
- if err != nil {
- log.Fatalln(err)
- }
-}
-
-func buildLabel() string {
- if _BUILD_EMBED_LABEL == "" {
- log.Println(`unlabeled build; build with "make" to label`)
- }
- return _BUILD_EMBED_LABEL
-}
diff --git a/contrib/persistent-https/proxy.go b/contrib/persistent-https/proxy.go
deleted file mode 100644
index bb0cdba386..0000000000
--- a/contrib/persistent-https/proxy.go
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright 2012 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package main
-
-import (
- "fmt"
- "log"
- "net"
- "net/http"
- "net/http/httputil"
- "os"
- "os/exec"
- "os/signal"
- "sync"
- "syscall"
- "time"
-)
-
-type Proxy struct {
- BuildLabel string
- MaxIdleDuration time.Duration
- PollUpdateInterval time.Duration
-
- ul net.Listener
- httpAddr string
- httpsAddr string
-}
-
-func (p *Proxy) Run() error {
- hl, err := net.Listen("tcp", "127.0.0.1:0")
- if err != nil {
- return fmt.Errorf("http listen failed: %v", err)
- }
- defer hl.Close()
-
- hsl, err := net.Listen("tcp", "127.0.0.1:0")
- if err != nil {
- return fmt.Errorf("https listen failed: %v", err)
- }
- defer hsl.Close()
-
- p.ul, err = DefaultSocket.Listen()
- if err != nil {
- c, derr := DefaultSocket.Dial()
- if derr == nil {
- c.Close()
- fmt.Println("OK\nA proxy is already running... exiting")
- return nil
- } else if e, ok := derr.(*net.OpError); ok && e.Err == syscall.ECONNREFUSED {
- // Nothing is listening on the socket, unlink it and try again.
- syscall.Unlink(DefaultSocket.Path())
- p.ul, err = DefaultSocket.Listen()
- }
- if err != nil {
- return fmt.Errorf("unix listen failed on %v: %v", DefaultSocket.Path(), err)
- }
- }
- defer p.ul.Close()
- go p.closeOnSignal()
- go p.closeOnUpdate()
-
- p.httpAddr = hl.Addr().String()
- p.httpsAddr = hsl.Addr().String()
- fmt.Printf("OK\nListening on unix socket=%v http=%v https=%v\n",
- p.ul.Addr(), p.httpAddr, p.httpsAddr)
-
- result := make(chan error, 2)
- go p.serveUnix(result)
- go func() {
- result <- http.Serve(hl, &httputil.ReverseProxy{
- FlushInterval: 500 * time.Millisecond,
- Director: func(r *http.Request) {},
- })
- }()
- go func() {
- result <- http.Serve(hsl, &httputil.ReverseProxy{
- FlushInterval: 500 * time.Millisecond,
- Director: func(r *http.Request) {
- r.URL.Scheme = "https"
- },
- })
- }()
- return <-result
-}
-
-type socketContext struct {
- sync.WaitGroup
- mutex sync.Mutex
- last time.Time
-}
-
-func (sc *socketContext) Done() {
- sc.mutex.Lock()
- defer sc.mutex.Unlock()
- sc.last = time.Now()
- sc.WaitGroup.Done()
-}
-
-func (p *Proxy) serveUnix(result chan<- error) {
- sockCtx := &socketContext{}
- go p.closeOnIdle(sockCtx)
-
- var err error
- for {
- var uconn net.Conn
- uconn, err = p.ul.Accept()
- if err != nil {
- err = fmt.Errorf("accept failed: %v", err)
- break
- }
- sockCtx.Add(1)
- go p.handleUnixConn(sockCtx, uconn)
- }
- sockCtx.Wait()
- result <- err
-}
-
-func (p *Proxy) handleUnixConn(sockCtx *socketContext, uconn net.Conn) {
- defer sockCtx.Done()
- defer uconn.Close()
- data := []byte(fmt.Sprintf("%v\n%v", p.httpsAddr, p.httpAddr))
- uconn.SetDeadline(time.Now().Add(5 * time.Second))
- for i := 0; i < 2; i++ {
- if n, err := uconn.Write(data); err != nil {
- log.Printf("error sending http addresses: %+v\n", err)
- return
- } else if n != len(data) {
- log.Printf("sent %d data bytes, wanted %d\n", n, len(data))
- return
- }
- if _, err := uconn.Read([]byte{0, 0, 0, 0}); err != nil {
- log.Printf("error waiting for Ack: %+v\n", err)
- return
- }
- }
- // Wait without a deadline for the client to finish via EOF
- uconn.SetDeadline(time.Time{})
- uconn.Read([]byte{0, 0, 0, 0})
-}
-
-func (p *Proxy) closeOnIdle(sockCtx *socketContext) {
- for d := p.MaxIdleDuration; d > 0; {
- time.Sleep(d)
- sockCtx.Wait()
- sockCtx.mutex.Lock()
- if d = sockCtx.last.Add(p.MaxIdleDuration).Sub(time.Now()); d <= 0 {
- log.Println("graceful shutdown from idle timeout")
- p.ul.Close()
- }
- sockCtx.mutex.Unlock()
- }
-}
-
-func (p *Proxy) closeOnUpdate() {
- for {
- time.Sleep(p.PollUpdateInterval)
- if out, err := exec.Command(os.Args[0], "--print_label").Output(); err != nil {
- log.Printf("error polling for updated binary: %v\n", err)
- } else if s := string(out[:len(out)-1]); p.BuildLabel != s {
- log.Printf("graceful shutdown from updated binary: %q --> %q\n", p.BuildLabel, s)
- p.ul.Close()
- break
- }
- }
-}
-
-func (p *Proxy) closeOnSignal() {
- ch := make(chan os.Signal, 10)
- signal.Notify(ch, os.Interrupt, os.Kill, os.Signal(syscall.SIGTERM), os.Signal(syscall.SIGHUP))
- sig := <-ch
- p.ul.Close()
- switch sig {
- case os.Signal(syscall.SIGHUP):
- log.Printf("graceful shutdown from signal: %v\n", sig)
- default:
- log.Fatalf("exiting from signal: %v\n", sig)
- }
-}
diff --git a/contrib/persistent-https/socket.go b/contrib/persistent-https/socket.go
deleted file mode 100644
index 193b911dd1..0000000000
--- a/contrib/persistent-https/socket.go
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2012 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package main
-
-import (
- "fmt"
- "log"
- "net"
- "os"
- "path/filepath"
- "syscall"
-)
-
-// A Socket is a wrapper around a Unix socket that verifies directory
-// permissions.
-type Socket struct {
- Dir string
-}
-
-func defaultDir() string {
- sockPath := ".git-credential-cache"
- if home := os.Getenv("HOME"); home != "" {
- return filepath.Join(home, sockPath)
- }
- log.Printf("socket: cannot find HOME path. using relative directory %q for socket", sockPath)
- return sockPath
-}
-
-// DefaultSocket is a Socket in the $HOME/.git-credential-cache directory.
-var DefaultSocket = Socket{Dir: defaultDir()}
-
-// Listen announces the local network address of the unix socket. The
-// permissions on the socket directory are verified before attempting
-// the actual listen.
-func (s Socket) Listen() (net.Listener, error) {
- network, addr := "unix", s.Path()
- if err := s.mkdir(); err != nil {
- return nil, &net.OpError{Op: "listen", Net: network, Addr: &net.UnixAddr{Name: addr, Net: network}, Err: err}
- }
- return net.Listen(network, addr)
-}
-
-// Dial connects to the unix socket. The permissions on the socket directory
-// are verified before attempting the actual dial.
-func (s Socket) Dial() (net.Conn, error) {
- network, addr := "unix", s.Path()
- if err := s.checkPermissions(); err != nil {
- return nil, &net.OpError{Op: "dial", Net: network, Addr: &net.UnixAddr{Name: addr, Net: network}, Err: err}
- }
- return net.Dial(network, addr)
-}
-
-// Path returns the fully specified file name of the unix socket.
-func (s Socket) Path() string {
- return filepath.Join(s.Dir, "persistent-https-proxy-socket")
-}
-
-func (s Socket) mkdir() error {
- if err := s.checkPermissions(); err == nil {
- return nil
- } else if !os.IsNotExist(err) {
- return err
- }
- if err := os.MkdirAll(s.Dir, 0700); err != nil {
- return err
- }
- return s.checkPermissions()
-}
-
-func (s Socket) checkPermissions() error {
- fi, err := os.Stat(s.Dir)
- if err != nil {
- return err
- }
- if !fi.IsDir() {
- return fmt.Errorf("socket: got file, want directory for %q", s.Dir)
- }
- if fi.Mode().Perm() != 0700 {
- return fmt.Errorf("socket: got perm %o, want 700 for %q", fi.Mode().Perm(), s.Dir)
- }
- if st := fi.Sys().(*syscall.Stat_t); int(st.Uid) != os.Getuid() {
- return fmt.Errorf("socket: got uid %d, want %d for %q", st.Uid, os.Getuid(), s.Dir)
- }
- return nil
-}
diff --git a/contrib/remote-helpers/README b/contrib/remote-helpers/README
deleted file mode 100644
index ac72332517..0000000000
--- a/contrib/remote-helpers/README
+++ /dev/null
@@ -1,15 +0,0 @@
-The remote-helper bridges to access data stored in Mercurial and
-Bazaar are maintained outside the git.git tree in the repositories
-of their primary author:
-
- https://github.com/felipec/git-remote-hg (for Mercurial)
- https://github.com/felipec/git-remote-bzr (for Bazaar)
-
-You can pick a directory on your $PATH and download them from these
-repositories, e.g.:
-
- $ wget -O $HOME/bin/git-remote-hg \
- https://raw.github.com/felipec/git-remote-hg/master/git-remote-hg
- $ wget -O $HOME/bin/git-remote-bzr \
- https://raw.github.com/felipec/git-remote-bzr/master/git-remote-bzr
- $ chmod +x $HOME/bin/git-remote-hg $HOME/bin/git-remote-bzr
diff --git a/contrib/remote-helpers/git-remote-bzr b/contrib/remote-helpers/git-remote-bzr
deleted file mode 100755
index 1c3d87f861..0000000000
--- a/contrib/remote-helpers/git-remote-bzr
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-cat >&2 <<'EOT'
-WARNING: git-remote-bzr is now maintained independently.
-WARNING: For more information visit https://github.com/felipec/git-remote-bzr
-WARNING:
-WARNING: You can pick a directory on your $PATH and download it, e.g.:
-WARNING: $ wget -O $HOME/bin/git-remote-bzr \
-WARNING: https://raw.github.com/felipec/git-remote-bzr/master/git-remote-bzr
-WARNING: $ chmod +x $HOME/bin/git-remote-bzr
-EOT
diff --git a/contrib/remote-helpers/git-remote-hg b/contrib/remote-helpers/git-remote-hg
deleted file mode 100755
index 8e9188364c..0000000000
--- a/contrib/remote-helpers/git-remote-hg
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-cat >&2 <<'EOT'
-WARNING: git-remote-hg is now maintained independently.
-WARNING: For more information visit https://github.com/felipec/git-remote-hg
-WARNING:
-WARNING: You can pick a directory on your $PATH and download it, e.g.:
-WARNING: $ wget -O $HOME/bin/git-remote-hg \
-WARNING: https://raw.github.com/felipec/git-remote-hg/master/git-remote-hg
-WARNING: $ chmod +x $HOME/bin/git-remote-hg
-EOT
diff --git a/contrib/remotes2config.sh b/contrib/remotes2config.sh
deleted file mode 100755
index 1cda19f66a..0000000000
--- a/contrib/remotes2config.sh
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-# Use this tool to rewrite your .git/remotes/ files into the config.
-
-. git-sh-setup
-
-if [ -d "$GIT_DIR"/remotes ]; then
- echo "Rewriting $GIT_DIR/remotes" >&2
- error=0
- # rewrite into config
- {
- cd "$GIT_DIR"/remotes
- ls | while read f; do
- name=$(printf "$f" | tr -c "A-Za-z0-9-" ".")
- sed -n \
- -e "s/^URL:[ ]*\(.*\)$/remote.$name.url \1 ./p" \
- -e "s/^Pull:[ ]*\(.*\)$/remote.$name.fetch \1 ^$ /p" \
- -e "s/^Push:[ ]*\(.*\)$/remote.$name.push \1 ^$ /p" \
- < "$f"
- done
- echo done
- } | while read key value regex; do
- case $key in
- done)
- if [ $error = 0 ]; then
- mv "$GIT_DIR"/remotes "$GIT_DIR"/remotes.old
- fi ;;
- *)
- echo "git config $key "$value" $regex"
- git config $key "$value" $regex || error=1 ;;
- esac
- done
-fi
diff --git a/contrib/stats/git-common-hash b/contrib/stats/git-common-hash
deleted file mode 100755
index e27fd088be..0000000000
--- a/contrib/stats/git-common-hash
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-
-# This script displays the distribution of longest common hash prefixes.
-# This can be used to determine the minimum prefix length to use
-# for object names to be unique.
-
-git rev-list --objects --all | sort | perl -lne '
- substr($_, 40) = "";
- # uncomment next line for a distribution of bits instead of hex chars
- # $_ = unpack("B*",pack("H*",$_));
- if (defined $p) {
- ($p ^ $_) =~ /^(\0*)/;
- $common = length $1;
- if (defined $pcommon) {
- $count[$pcommon > $common ? $pcommon : $common]++;
- } else {
- $count[$common]++; # first item
- }
- }
- $p = $_;
- $pcommon = $common;
- END {
- $count[$common]++; # last item
- print "$_: $count[$_]" for 0..$#count;
- }
-'
diff --git a/contrib/stats/mailmap.pl b/contrib/stats/mailmap.pl
deleted file mode 100755
index 9513f5e35b..0000000000
--- a/contrib/stats/mailmap.pl
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/perl
-
-use warnings 'all';
-use strict;
-use Getopt::Long;
-
-my $match_emails;
-my $match_names;
-my $order_by = 'count';
-Getopt::Long::Configure(qw(bundling));
-GetOptions(
- 'emails|e!' => \$match_emails,
- 'names|n!' => \$match_names,
- 'count|c' => sub { $order_by = 'count' },
- 'time|t' => sub { $order_by = 'stamp' },
-) or exit 1;
-$match_emails = 1 unless $match_names;
-
-my $email = {};
-my $name = {};
-
-open(my $fh, '-|', "git log --format='%at <%aE> %aN'");
-while(<$fh>) {
- my ($t, $e, $n) = /(\S+) <(\S+)> (.*)/;
- mark($email, $e, $n, $t);
- mark($name, $n, $e, $t);
-}
-close($fh);
-
-if ($match_emails) {
- foreach my $e (dups($email)) {
- foreach my $n (vals($email->{$e})) {
- show($n, $e, $email->{$e}->{$n});
- }
- print "\n";
- }
-}
-if ($match_names) {
- foreach my $n (dups($name)) {
- foreach my $e (vals($name->{$n})) {
- show($n, $e, $name->{$n}->{$e});
- }
- print "\n";
- }
-}
-exit 0;
-
-sub mark {
- my ($h, $k, $v, $t) = @_;
- my $e = $h->{$k}->{$v} ||= { count => 0, stamp => 0 };
- $e->{count}++;
- $e->{stamp} = $t unless $t < $e->{stamp};
-}
-
-sub dups {
- my $h = shift;
- return grep { keys($h->{$_}) > 1 } keys($h);
-}
-
-sub vals {
- my $h = shift;
- return sort {
- $h->{$b}->{$order_by} <=> $h->{$a}->{$order_by}
- } keys($h);
-}
-
-sub show {
- my ($n, $e, $h) = @_;
- print "$n <$e> ($h->{$order_by})\n";
-}
diff --git a/contrib/subtree/README b/contrib/subtree/README
index c686b4a69b..65d167b678 100644
--- a/contrib/subtree/README
+++ b/contrib/subtree/README
@@ -1,5 +1,5 @@
-Please read git-subtree.txt for documentation.
+Please read git-subtree.adoc for documentation.
Please don't contact me using github mail; it's slow, ugly, and worst of
all, redundant. Email me instead at apenwarr@gmail.com and I'll be happy to
diff --git a/contrib/subtree/git-subtree.adoc b/contrib/subtree/git-subtree.adoc
index 004abf415b..b2bcbcad0d 100644
--- a/contrib/subtree/git-subtree.adoc
+++ b/contrib/subtree/git-subtree.adoc
@@ -9,14 +9,14 @@ git-subtree - Merge subtrees together and split repository into subtrees
SYNOPSIS
--------
[verse]
-'git subtree' [<options>] -P <prefix> add <local-commit>
-'git subtree' [<options>] -P <prefix> add <repository> <remote-ref>
-'git subtree' [<options>] -P <prefix> merge <local-commit> [<repository>]
-'git subtree' [<options>] -P <prefix> split [<local-commit>]
+'git subtree' [<options>] -P <prefix> [-S[<keyid>]] add <local-commit>
+'git subtree' [<options>] -P <prefix> [-S[<keyid>]] add <repository> <remote-ref>
+'git subtree' [<options>] -P <prefix> [-S[<keyid>]] merge <local-commit> [<repository>]
+'git subtree' [<options>] -P <prefix> [-S[<keyid>]] split [<local-commit>]
[verse]
-'git subtree' [<options>] -P <prefix> pull <repository> <remote-ref>
-'git subtree' [<options>] -P <prefix> push <repository> <refspec>
+'git subtree' [<options>] -P <prefix> [-S[<keyid>]] pull <repository> <remote-ref>
+'git subtree' [<options>] -P <prefix> [-S[<keyid>]] push <repository> <refspec>
DESCRIPTION
-----------
@@ -149,6 +149,13 @@ OPTIONS FOR ALL COMMANDS
want to manipulate. This option is mandatory
for all commands.
+-S[<keyid>]::
+--gpg-sign[=<keyid>]::
+--no-gpg-sign::
+ GPG-sign commits. The `keyid` argument is optional and
+ defaults to the committer identity; `--no-gpg-sign` is useful to
+ countermand a `--gpg-sign` option given earlier on the command line.
+
OPTIONS FOR 'add' AND 'merge' (ALSO: 'pull', 'split --rejoin', AND 'push --rejoin')
-----------------------------------------------------------------------------------
These options for 'add' and 'merge' may also be given to 'pull' (which
diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 15ae86db1b..3fddba797c 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -26,12 +26,12 @@ then
fi
OPTS_SPEC="\
-git subtree add --prefix=<prefix> <commit>
-git subtree add --prefix=<prefix> <repository> <ref>
-git subtree merge --prefix=<prefix> <commit>
-git subtree split --prefix=<prefix> [<commit>]
-git subtree pull --prefix=<prefix> <repository> <ref>
-git subtree push --prefix=<prefix> <repository> <refspec>
+git subtree add --prefix=<prefix> [-S[=<key-id>]] <commit>
+git subtree add --prefix=<prefix> [-S[=<key-id>]] <repository> <ref>
+git subtree merge --prefix=<prefix> [-S[=<key-id>]] <commit>
+git subtree split --prefix=<prefix> [-S[=<key-id>]] [<commit>]
+git subtree pull --prefix=<prefix> [-S[=<key-id>]] <repository> <ref>
+git subtree push --prefix=<prefix> [-S[=<key-id>]] <repository> <refspec>
--
h,help! show the help
q,quiet! quiet
@@ -46,6 +46,7 @@ rejoin merge the new branch back into HEAD
options for 'add' and 'merge' (also: 'pull', 'split --rejoin', and 'push --rejoin')
squash merge subtree changes as a single commit
m,message!= use the given message as the commit message for the merge commit
+S,gpg-sign?key-id GPG-sign commits. The keyid argument is optional and defaults to the committer identity
"
indent=0
@@ -115,7 +116,7 @@ main () {
then
set -- -h
fi
- set_args="$(echo "$OPTS_SPEC" | git rev-parse --parseopt -- "$@" || echo exit $?)"
+ set_args="$(echo "$OPTS_SPEC" | git rev-parse --parseopt --stuck-long -- "$@" || echo exit $?)"
eval "$set_args"
. git-sh-setup
require_work_tree
@@ -131,9 +132,6 @@ main () {
opt="$1"
shift
case "$opt" in
- --annotate|-b|-P|-m|--onto)
- shift
- ;;
--rejoin)
arg_split_rejoin=1
;;
@@ -171,48 +169,44 @@ main () {
arg_split_annotate=
arg_addmerge_squash=
arg_addmerge_message=
+ arg_gpg_sign=
while test $# -gt 0
do
opt="$1"
shift
case "$opt" in
- -q)
+ --quiet)
arg_quiet=1
;;
- -d)
+ --debug)
arg_debug=1
;;
- --annotate)
+ --annotate=*)
test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command"
- arg_split_annotate="$1"
- shift
+ arg_split_annotate="${opt#*=}"
;;
--no-annotate)
test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command"
arg_split_annotate=
;;
- -b)
+ --branch=*)
test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command"
- arg_split_branch="$1"
- shift
+ arg_split_branch="${opt#*=}"
;;
- -P)
- arg_prefix="${1%/}"
- shift
+ --prefix=*)
+ arg_prefix="${opt#*=}"
;;
- -m)
+ --message=*)
test -n "$allow_addmerge" || die_incompatible_opt "$opt" "$arg_command"
- arg_addmerge_message="$1"
- shift
+ arg_addmerge_message="${opt#*=}"
;;
--no-prefix)
arg_prefix=
;;
- --onto)
+ --onto=*)
test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command"
- arg_split_onto="$1"
- shift
+ arg_split_onto="${opt#*=}"
;;
--no-onto)
test -n "$allow_split" || die_incompatible_opt "$opt" "$arg_command"
@@ -240,6 +234,9 @@ main () {
test -n "$allow_addmerge" || die_incompatible_opt "$opt" "$arg_command"
arg_addmerge_squash=
;;
+ --gpg-sign=* | --gpg-sign | --no-gpg-sign)
+ arg_gpg_sign="$opt"
+ ;;
--)
break
;;
@@ -272,6 +269,7 @@ main () {
debug "quiet: {$arg_quiet}"
debug "dir: {$dir}"
debug "opts: {$*}"
+ debug "gpg-sign: {$arg_gpg_sign}"
debug
"cmd_$arg_command" "$@"
@@ -537,7 +535,7 @@ copy_commit () {
printf "%s" "$arg_split_annotate"
cat
) |
- git commit-tree "$2" $3 # reads the rest of stdin
+ git commit-tree $arg_gpg_sign "$2" $3 # reads the rest of stdin
) || die "fatal: can't copy commit $1"
}
@@ -683,10 +681,10 @@ new_squash_commit () {
if test -n "$old"
then
squash_msg "$dir" "$oldsub" "$newsub" |
- git commit-tree "$tree" -p "$old" || exit $?
+ git commit-tree $arg_gpg_sign "$tree" -p "$old" || exit $?
else
squash_msg "$dir" "" "$newsub" |
- git commit-tree "$tree" || exit $?
+ git commit-tree $arg_gpg_sign "$tree" || exit $?
fi
}
@@ -925,11 +923,11 @@ cmd_add_commit () {
then
rev=$(new_squash_commit "" "" "$rev") || exit $?
commit=$(add_squashed_msg "$rev" "$dir" |
- git commit-tree "$tree" $headp -p "$rev") || exit $?
+ git commit-tree $arg_gpg_sign "$tree" $headp -p "$rev") || exit $?
else
revp=$(peel_committish "$rev") || exit $?
commit=$(add_msg "$dir" $headrev "$rev" |
- git commit-tree "$tree" $headp -p "$revp") || exit $?
+ git commit-tree $arg_gpg_sign "$tree" $headp -p "$revp") || exit $?
fi
git reset "$commit" || exit $?
@@ -1080,9 +1078,9 @@ cmd_merge () {
if test -n "$arg_addmerge_message"
then
git merge --no-ff -Xsubtree="$arg_prefix" \
- --message="$arg_addmerge_message" "$rev"
+ --message="$arg_addmerge_message" $arg_gpg_sign "$rev"
else
- git merge --no-ff -Xsubtree="$arg_prefix" $rev
+ git merge --no-ff -Xsubtree="$arg_prefix" $arg_gpg_sign $rev
fi
}
diff --git a/contrib/subtree/meson.build b/contrib/subtree/meson.build
index 63714166a6..98dd8e0c8e 100644
--- a/contrib/subtree/meson.build
+++ b/contrib/subtree/meson.build
@@ -21,7 +21,7 @@ if get_option('tests')
env: subtree_test_environment,
workdir: meson.current_source_dir() / 't',
depends: test_dependencies + bin_wrappers + [ git_subtree ],
- timeout: 0,
+ kwargs: test_kwargs,
)
endif
diff --git a/contrib/subtree/t/t7900-subtree.sh b/contrib/subtree/t/t7900-subtree.sh
index 3c6103f6d2..3edbb33af4 100755
--- a/contrib/subtree/t/t7900-subtree.sh
+++ b/contrib/subtree/t/t7900-subtree.sh
@@ -11,6 +11,7 @@ and push subcommands of git subtree.
TEST_DIRECTORY=$(pwd)/../../../t
. "$TEST_DIRECTORY"/test-lib.sh
+. "$TEST_DIRECTORY"/lib-gpg.sh
# Use our own wrapper around test-lib.sh's test_create_repo, in order
# to set log.date=relative. `git subtree` parses the output of `git
@@ -1563,4 +1564,116 @@ test_expect_success 'subtree descendant check' '
)
'
+test_expect_success GPG 'add subproj with GPG signing using -S flag' '
+ subtree_test_create_repo "$test_count" &&
+ subtree_test_create_repo "$test_count/sub proj" &&
+ test_create_commit "$test_count" main1 &&
+ test_create_commit "$test_count/sub proj" sub1 &&
+ (
+ cd "$test_count" &&
+ git fetch ./"sub proj" HEAD &&
+ git subtree add --prefix="sub dir" -S FETCH_HEAD &&
+ git verify-commit HEAD &&
+ test "$(last_commit_subject)" = "Add '\''sub dir/'\'' from commit '\''$(git rev-parse FETCH_HEAD)'\''"
+ )
+'
+
+test_expect_success GPG 'add subproj with GPG signing using --gpg-sign flag' '
+ subtree_test_create_repo "$test_count" &&
+ subtree_test_create_repo "$test_count/sub proj" &&
+ test_create_commit "$test_count" main1 &&
+ test_create_commit "$test_count/sub proj" sub1 &&
+ (
+ cd "$test_count" &&
+ git fetch ./"sub proj" HEAD &&
+ git subtree add --prefix="sub dir" --gpg-sign FETCH_HEAD &&
+ git verify-commit HEAD &&
+ test "$(last_commit_subject)" = "Add '\''sub dir/'\'' from commit '\''$(git rev-parse FETCH_HEAD)'\''"
+ )
+'
+
+test_expect_success GPG 'add subproj with GPG signing using specific key ID' '
+ subtree_test_create_repo "$test_count" &&
+ subtree_test_create_repo "$test_count/sub proj" &&
+ test_create_commit "$test_count" main1 &&
+ test_create_commit "$test_count/sub proj" sub1 &&
+ (
+ cd "$test_count" &&
+ git fetch ./"sub proj" HEAD &&
+ git subtree add --prefix="sub dir" -S"$GIT_COMMITTER_EMAIL" FETCH_HEAD &&
+ git verify-commit HEAD &&
+ test "$(last_commit_subject)" = "Add '\''sub dir/'\'' from commit '\''$(git rev-parse FETCH_HEAD)'\''"
+ )
+'
+
+test_expect_success GPG 'merge with GPG signing' '
+ subtree_test_create_repo "$test_count" &&
+ subtree_test_create_repo "$test_count/sub proj" &&
+ test_create_commit "$test_count" main1 &&
+ test_create_commit "$test_count/sub proj" sub1 &&
+ (
+ cd "$test_count" &&
+ git fetch ./"sub proj" HEAD &&
+ git subtree add --prefix="sub dir" FETCH_HEAD
+ ) &&
+ test_create_commit "$test_count/sub proj" sub2 &&
+ (
+ cd "$test_count" &&
+ git fetch ./"sub proj" HEAD &&
+ git subtree merge --prefix="sub dir" -S FETCH_HEAD &&
+ git verify-commit HEAD
+ )
+'
+
+test_expect_success GPG 'split with GPG signing and --rejoin' '
+ subtree_test_create_repo "$test_count" &&
+ subtree_test_create_repo "$test_count/sub proj" &&
+ test_create_commit "$test_count" main1 &&
+ test_create_commit "$test_count/sub proj" sub1 &&
+ (
+ cd "$test_count" &&
+ git fetch ./"sub proj" HEAD &&
+ git subtree add --prefix="sub dir" FETCH_HEAD
+ ) &&
+ test_create_commit "$test_count" "sub dir/main-sub1" &&
+ (
+ cd "$test_count" &&
+ git subtree split --prefix="sub dir" --rejoin -S &&
+ git verify-commit HEAD
+ )
+'
+
+test_expect_success GPG 'add with --squash and GPG signing' '
+ subtree_test_create_repo "$test_count" &&
+ subtree_test_create_repo "$test_count/sub proj" &&
+ test_create_commit "$test_count" main1 &&
+ test_create_commit "$test_count/sub proj" sub1 &&
+ (
+ cd "$test_count" &&
+ git fetch ./"sub proj" HEAD &&
+ git subtree add --prefix="sub dir" --squash -S FETCH_HEAD &&
+ git verify-commit HEAD &&
+ # With --squash, the commit subject should reference the squash commit (first parent of merge)
+ squash_commit=$(git rev-parse HEAD^2) &&
+ test "$(last_commit_subject)" = "Merge commit '\''$squash_commit'\'' as '\''sub dir'\''"
+ )
+'
+
+test_expect_success GPG 'pull with GPG signing' '
+ subtree_test_create_repo "$test_count" &&
+ subtree_test_create_repo "$test_count/sub proj" &&
+ test_create_commit "$test_count" main1 &&
+ test_create_commit "$test_count/sub proj" sub1 &&
+ (
+ cd "$test_count" &&
+ git subtree add --prefix="sub dir" ./"sub proj" HEAD
+ ) &&
+ test_create_commit "$test_count/sub proj" sub2 &&
+ (
+ cd "$test_count" &&
+ git subtree pull --prefix="sub dir" -S ./"sub proj" HEAD &&
+ git verify-commit HEAD
+ )
+'
+
test_done
diff --git a/contrib/thunderbird-patch-inline/README b/contrib/thunderbird-patch-inline/README
deleted file mode 100644
index 000147bbe4..0000000000
--- a/contrib/thunderbird-patch-inline/README
+++ /dev/null
@@ -1,20 +0,0 @@
-appp.sh is a script that is supposed to be used together with ExternalEditor
-for Mozilla Thunderbird. It will let you include patches inline in e-mails
-in an easy way.
-
-Usage:
-- Generate the patch with git format-patch.
-- Start writing a new e-mail in Thunderbird.
-- Press the external editor button (or Ctrl-E) to run appp.sh
-- Select the previously generated patch file.
-- Finish editing the e-mail.
-
-Any text that is entered into the message editor before appp.sh is called
-will be moved to the section between the --- and the diffstat.
-
-All S-O-B:s and Cc:s in the patch will be added to the CC list.
-
-To set it up, just install External Editor and tell it to use appp.sh as the
-editor.
-
-Zenity is a required dependency.
diff --git a/contrib/thunderbird-patch-inline/appp.sh b/contrib/thunderbird-patch-inline/appp.sh
deleted file mode 100755
index fdcc948352..0000000000
--- a/contrib/thunderbird-patch-inline/appp.sh
+++ /dev/null
@@ -1,55 +0,0 @@
-#!/bin/sh
-# Copyright 2008 Lukas Sandström <luksan@gmail.com>
-#
-# AppendPatch - A script to be used together with ExternalEditor
-# for Mozilla Thunderbird to properly include patches inline in e-mails.
-
-# ExternalEditor can be downloaded at http://globs.org/articles.php?lng=en&pg=2
-
-CONFFILE=~/.appprc
-
-SEP="-=-=-=-=-=-=-=-=-=# Don't remove this line #=-=-=-=-=-=-=-=-=-"
-if [ -e "$CONFFILE" ] ; then
- LAST_DIR=$(grep -m 1 "^LAST_DIR=" "${CONFFILE}"|sed -e 's/^LAST_DIR=//')
- cd "${LAST_DIR}"
-else
- cd > /dev/null
-fi
-
-PATCH=$(zenity --file-selection)
-
-if [ "$?" != "0" ] ; then
- #zenity --error --text "No patchfile given."
- exit 1
-fi
-
-cd - > /dev/null
-
-SUBJECT=$(sed -n -e '/^Subject: /p' "${PATCH}")
-HEADERS=$(sed -e '/^'"${SEP}"'$/,$d' $1)
-BODY=$(sed -e "1,/${SEP}/d" $1)
-CMT_MSG=$(sed -e '1,/^$/d' -e '/^---$/,$d' "${PATCH}")
-DIFF=$(sed -e '1,/^---$/d' "${PATCH}")
-
-CCS=$(printf '%s\n%s\n' "$CMT_MSG" "$HEADERS" | sed -n -e 's/^Cc: \(.*\)$/\1,/gp' \
- -e 's/^Signed-off-by: \(.*\)/\1,/gp')
-
-echo "$SUBJECT" > $1
-echo "Cc: $CCS" >> $1
-echo "$HEADERS" | sed -e '/^Subject: /d' -e '/^Cc: /d' >> $1
-echo "$SEP" >> $1
-
-echo "$CMT_MSG" >> $1
-echo "---" >> $1
-if [ "x${BODY}x" != "xx" ] ; then
- echo >> $1
- echo "$BODY" >> $1
- echo >> $1
-fi
-echo "$DIFF" >> $1
-
-LAST_DIR=$(dirname "${PATCH}")
-
-grep -v "^LAST_DIR=" "${CONFFILE}" > "${CONFFILE}_"
-echo "LAST_DIR=${LAST_DIR}" >> "${CONFFILE}_"
-mv "${CONFFILE}_" "${CONFFILE}"
diff --git a/contrib/workdir/.gitattributes b/contrib/workdir/.gitattributes
deleted file mode 100644
index 1f78c5d1bd..0000000000
--- a/contrib/workdir/.gitattributes
+++ /dev/null
@@ -1 +0,0 @@
-/git-new-workdir eol=lf
diff --git a/contrib/workdir/git-new-workdir b/contrib/workdir/git-new-workdir
deleted file mode 100755
index 989197aace..0000000000
--- a/contrib/workdir/git-new-workdir
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/bin/sh
-
-usage () {
- echo "usage:" $@
- exit 127
-}
-
-die () {
- echo $@
- exit 128
-}
-
-failed () {
- die "unable to create new workdir '$new_workdir'!"
-}
-
-if test $# -lt 2 || test $# -gt 3
-then
- usage "$0 <repository> <new_workdir> [<branch>]"
-fi
-
-orig_git=$1
-new_workdir=$2
-branch=$3
-
-# want to make sure that what is pointed to has a .git directory ...
-git_dir=$(cd "$orig_git" 2>/dev/null &&
- git rev-parse --git-dir 2>/dev/null) ||
- die "Not a git repository: \"$orig_git\""
-
-case "$git_dir" in
-.git)
- git_dir="$orig_git/.git"
- ;;
-.)
- git_dir=$orig_git
- ;;
-esac
-
-# don't link to a configured bare repository
-isbare=$(git --git-dir="$git_dir" config --bool --get core.bare)
-if test ztrue = "z$isbare"
-then
- die "\"$git_dir\" has core.bare set to true," \
- " remove from \"$git_dir/config\" to use $0"
-fi
-
-# don't link to a workdir
-if test -h "$git_dir/config"
-then
- die "\"$orig_git\" is a working directory only, please specify" \
- "a complete repository."
-fi
-
-# make sure the links in the workdir have full paths to the original repo
-git_dir=$(cd "$git_dir" && pwd) || exit 1
-
-# don't recreate a workdir over an existing directory, unless it's empty
-if test -d "$new_workdir"
-then
- if test $(ls -a1 "$new_workdir/." | wc -l) -ne 2
- then
- die "destination directory '$new_workdir' is not empty."
- fi
- cleandir="$new_workdir/.git"
-else
- cleandir="$new_workdir"
-fi
-
-mkdir -p "$new_workdir/.git" || failed
-cleandir=$(cd "$cleandir" && pwd) || failed
-
-cleanup () {
- rm -rf "$cleandir"
-}
-siglist="0 1 2 15"
-trap cleanup $siglist
-
-# create the links to the original repo. explicitly exclude index, HEAD and
-# logs/HEAD from the list since they are purely related to the current working
-# directory, and should not be shared.
-for x in config refs logs/refs objects info hooks packed-refs remotes rr-cache svn reftable
-do
- # create a containing directory if needed
- case $x in
- */*)
- mkdir -p "$new_workdir/.git/${x%/*}"
- ;;
- esac
-
- ln -s "$git_dir/$x" "$new_workdir/.git/$x" || failed
-done
-
-# commands below this are run in the context of the new workdir
-cd "$new_workdir" || failed
-
-# copy the HEAD from the original repository as a default branch
-cp "$git_dir/HEAD" .git/HEAD || failed
-
-# the workdir is set up. if the checkout fails, the user can fix it.
-trap - $siglist
-
-# checkout the branch (either the same as HEAD from the original repository,
-# or the one that was asked for)
-git checkout -f $branch
diff --git a/daemon.c b/daemon.c
index d1be61fd57..61cd50f720 100644
--- a/daemon.c
+++ b/daemon.c
@@ -990,11 +990,6 @@ static int setup_named_sock(char *listen_addr, int listen_port, struct socketlis
sockfd = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
if (sockfd < 0)
continue;
- if (sockfd >= FD_SETSIZE) {
- logerror("Socket descriptor too large");
- close(sockfd);
- continue;
- }
#ifdef IPV6_V6ONLY
if (ai->ai_family == AF_INET6) {
@@ -1153,11 +1148,19 @@ static int service_loop(struct socketlist *socklist)
#endif
} ss;
socklen_t sslen = sizeof(ss);
- int incoming = accept(pfd[i].fd, &ss.sa, &sslen);
+ int incoming;
+ int retry = 3;
+
+ redo:
+ incoming = accept(pfd[i].fd, &ss.sa, &sslen);
if (incoming < 0) {
switch (errno) {
- case EAGAIN:
case EINTR:
+ if (--retry)
+ goto redo;
+
+ /* fallthrough */
+ case EAGAIN:
case ECONNABORTED:
continue;
default:
diff --git a/diff-no-index.c b/diff-no-index.c
index 9739b2b268..88ae4cee56 100644
--- a/diff-no-index.c
+++ b/diff-no-index.c
@@ -15,20 +15,57 @@
#include "gettext.h"
#include "revision.h"
#include "parse-options.h"
+#include "pathspec.h"
#include "string-list.h"
#include "dir.h"
-static int read_directory_contents(const char *path, struct string_list *list)
+static int read_directory_contents(const char *path, struct string_list *list,
+ const struct pathspec *pathspec,
+ int skip)
{
+ struct strbuf match = STRBUF_INIT;
+ int len;
DIR *dir;
struct dirent *e;
if (!(dir = opendir(path)))
return error("Could not open directory %s", path);
- while ((e = readdir_skip_dot_and_dotdot(dir)))
+ if (pathspec) {
+ strbuf_addstr(&match, path);
+ strbuf_complete(&match, '/');
+ strbuf_remove(&match, 0, skip);
+
+ len = match.len;
+ }
+
+ while ((e = readdir_skip_dot_and_dotdot(dir))) {
+ if (pathspec) {
+ int is_dir = 0;
+
+ strbuf_setlen(&match, len);
+ strbuf_addstr(&match, e->d_name);
+ if (NOT_CONSTANT(DTYPE(e)) != DT_UNKNOWN) {
+ is_dir = (DTYPE(e) == DT_DIR);
+ } else {
+ struct strbuf pathbuf = STRBUF_INIT;
+
+ strbuf_addstr(&pathbuf, path);
+ strbuf_complete(&pathbuf, '/');
+ is_dir = get_dtype(e, &pathbuf, 0) == DT_DIR;
+ strbuf_release(&pathbuf);
+ }
+
+ if (!match_leading_pathspec(NULL, pathspec,
+ match.buf, match.len,
+ 0, NULL, is_dir))
+ continue;
+ }
+
string_list_insert(list, e->d_name);
+ }
+ strbuf_release(&match);
closedir(dir);
return 0;
}
@@ -131,7 +168,8 @@ static struct diff_filespec *noindex_filespec(const struct git_hash_algo *algop,
}
static int queue_diff(struct diff_options *o, const struct git_hash_algo *algop,
- const char *name1, const char *name2, int recursing)
+ const char *name1, const char *name2, int recursing,
+ const struct pathspec *ps, int skip1, int skip2)
{
int mode1 = 0, mode2 = 0;
enum special special1 = SPECIAL_NONE, special2 = SPECIAL_NONE;
@@ -171,9 +209,9 @@ static int queue_diff(struct diff_options *o, const struct git_hash_algo *algop,
int i1, i2, ret = 0;
size_t len1 = 0, len2 = 0;
- if (name1 && read_directory_contents(name1, &p1))
+ if (name1 && read_directory_contents(name1, &p1, ps, skip1))
return -1;
- if (name2 && read_directory_contents(name2, &p2)) {
+ if (name2 && read_directory_contents(name2, &p2, ps, skip2)) {
string_list_clear(&p1, 0);
return -1;
}
@@ -218,7 +256,7 @@ static int queue_diff(struct diff_options *o, const struct git_hash_algo *algop,
n2 = buffer2.buf;
}
- ret = queue_diff(o, algop, n1, n2, 1);
+ ret = queue_diff(o, algop, n1, n2, 1, ps, skip1, skip2);
}
string_list_clear(&p1, 0);
string_list_clear(&p2, 0);
@@ -258,8 +296,10 @@ static void append_basename(struct strbuf *path, const char *dir, const char *fi
* DWIM "diff D F" into "diff D/F F" and "diff F D" into "diff F D/F"
* Note that we append the basename of F to D/, so "diff a/b/file D"
* becomes "diff a/b/file D/file", not "diff a/b/file D/a/b/file".
+ *
+ * Return 1 if both paths are directories, 0 otherwise.
*/
-static void fixup_paths(const char **path, struct strbuf *replacement)
+static int fixup_paths(const char **path, struct strbuf *replacement)
{
struct stat st;
unsigned int isdir0 = 0, isdir1 = 0;
@@ -282,26 +322,31 @@ static void fixup_paths(const char **path, struct strbuf *replacement)
if ((isdir0 && ispipe1) || (ispipe0 && isdir1))
die(_("cannot compare a named pipe to a directory"));
- if (isdir0 == isdir1)
- return;
+ /* if both paths are directories, we will enable pathspecs */
+ if (isdir0 && isdir1)
+ return 1;
+
if (isdir0) {
append_basename(replacement, path[0], path[1]);
path[0] = replacement->buf;
- } else {
+ } else if (isdir1) {
append_basename(replacement, path[1], path[0]);
path[1] = replacement->buf;
}
+
+ return 0;
}
static const char * const diff_no_index_usage[] = {
- N_("git diff --no-index [<options>] <path> <path>"),
+ N_("git diff --no-index [<options>] <path> <path> [<pathspec>...]"),
NULL
};
int diff_no_index(struct rev_info *revs, const struct git_hash_algo *algop,
int implicit_no_index, int argc, const char **argv)
{
- int i, no_index;
+ struct pathspec pathspec, *ps = NULL;
+ int i, no_index, skip1 = 0, skip2 = 0;
int ret = 1;
const char *paths[2];
char *to_free[ARRAY_SIZE(paths)] = { 0 };
@@ -317,13 +362,12 @@ int diff_no_index(struct rev_info *revs, const struct git_hash_algo *algop,
options = add_diff_options(no_index_options, &revs->diffopt);
argc = parse_options(argc, argv, revs->prefix, options,
diff_no_index_usage, 0);
- if (argc != 2) {
+ if (argc < 2) {
if (implicit_no_index)
warning(_("Not a git repository. Use --no-index to "
"compare two paths outside a working tree"));
usage_with_options(diff_no_index_usage, options);
}
- FREE_AND_NULL(options);
for (i = 0; i < 2; i++) {
const char *p = argv[i];
if (!strcmp(p, "-"))
@@ -337,7 +381,23 @@ int diff_no_index(struct rev_info *revs, const struct git_hash_algo *algop,
paths[i] = p;
}
- fixup_paths(paths, &replacement);
+ if (fixup_paths(paths, &replacement)) {
+ parse_pathspec(&pathspec, PATHSPEC_FROMTOP | PATHSPEC_ATTR,
+ PATHSPEC_PREFER_FULL | PATHSPEC_NO_REPOSITORY,
+ NULL, &argv[2]);
+ if (pathspec.nr)
+ ps = &pathspec;
+
+ skip1 = strlen(paths[0]);
+ skip1 += paths[0][skip1] == '/' ? 0 : 1;
+ skip2 = strlen(paths[1]);
+ skip2 += paths[1][skip2] == '/' ? 0 : 1;
+ } else if (argc > 2) {
+ warning(_("Limiting comparison with pathspecs is only "
+ "supported if both paths are directories."));
+ usage_with_options(diff_no_index_usage, options);
+ }
+ FREE_AND_NULL(options);
revs->diffopt.skip_stat_unmatch = 1;
if (!revs->diffopt.output_format)
@@ -354,7 +414,8 @@ int diff_no_index(struct rev_info *revs, const struct git_hash_algo *algop,
setup_diff_pager(&revs->diffopt);
revs->diffopt.flags.exit_with_status = 1;
- if (queue_diff(&revs->diffopt, algop, paths[0], paths[1], 0))
+ if (queue_diff(&revs->diffopt, algop, paths[0], paths[1], 0, ps,
+ skip1, skip2))
goto out;
diff_set_mnemonic_prefix(&revs->diffopt, "1/", "2/");
diffcore_std(&revs->diffopt);
@@ -370,5 +431,7 @@ out:
for (i = 0; i < ARRAY_SIZE(to_free); i++)
free(to_free[i]);
strbuf_release(&replacement);
+ if (ps)
+ clear_pathspec(ps);
return ret;
}
diff --git a/dir.c b/dir.c
index a374972b62..c8c869faed 100644
--- a/dir.c
+++ b/dir.c
@@ -397,9 +397,12 @@ static int match_pathspec_item(struct index_state *istate,
strncmp(item->match, name - prefix, item->prefix))
return 0;
- if (item->attr_match_nr &&
- !match_pathspec_attrs(istate, name - prefix, namelen + prefix, item))
- return 0;
+ if (item->attr_match_nr) {
+ if (!istate)
+ BUG("magic PATHSPEC_ATTR requires an index");
+ if (!match_pathspec_attrs(istate, name - prefix, namelen + prefix, item))
+ return 0;
+ }
/* If the match was just the prefix, we matched */
if (!*match)
@@ -577,6 +580,16 @@ int match_pathspec(struct index_state *istate,
prefix, seen, flags);
}
+int match_leading_pathspec(struct index_state *istate,
+ const struct pathspec *ps,
+ const char *name, int namelen,
+ int prefix, char *seen, int is_dir)
+{
+ unsigned flags = is_dir ? DO_MATCH_DIRECTORY | DO_MATCH_LEADING_PATHSPEC : 0;
+ return match_pathspec_with_flags(istate, ps, name, namelen,
+ prefix, seen, flags);
+}
+
/**
* Check if a submodule is a superset of the pathspec
*/
diff --git a/dir.h b/dir.h
index d7e71aa8da..fc9be7b427 100644
--- a/dir.h
+++ b/dir.h
@@ -676,4 +676,27 @@ static inline int starts_with_dot_dot_slash_native(const char *const path)
return path_match_flags(path, what | PATH_MATCH_NATIVE);
}
+/**
+ * starts_with_dot_slash: convenience wrapper for
+ * patch_match_flags() with PATH_MATCH_STARTS_WITH_DOT_SLASH and
+ * PATH_MATCH_XPLATFORM.
+ */
+static inline int starts_with_dot_slash(const char *const path)
+{
+ const enum path_match_flags what = PATH_MATCH_STARTS_WITH_DOT_SLASH;
+
+ return path_match_flags(path, what | PATH_MATCH_XPLATFORM);
+}
+
+/**
+ * starts_with_dot_dot_slash: convenience wrapper for
+ * patch_match_flags() with PATH_MATCH_STARTS_WITH_DOT_DOT_SLASH and
+ * PATH_MATCH_XPLATFORM.
+ */
+static inline int starts_with_dot_dot_slash(const char *const path)
+{
+ const enum path_match_flags what = PATH_MATCH_STARTS_WITH_DOT_DOT_SLASH;
+
+ return path_match_flags(path, what | PATH_MATCH_XPLATFORM);
+}
#endif
diff --git a/environment.c b/environment.c
index c61d773e7e..7bf0390a33 100644
--- a/environment.c
+++ b/environment.c
@@ -113,9 +113,6 @@ const char *comment_line_str = "#";
char *comment_line_str_to_free;
int auto_comment_line_char;
-/* Parallel index stat data preload? */
-int core_preload_index = 1;
-
/* This is set by setup_git_directory_gently() and/or git_default_config() */
char *git_work_tree_cfg;
diff --git a/environment.h b/environment.h
index 3d98461a06..9a3d05d414 100644
--- a/environment.h
+++ b/environment.h
@@ -155,7 +155,6 @@ extern int pack_compression_level;
extern unsigned long pack_size_limit_cfg;
extern int max_allowed_tree_depth;
-extern int core_preload_index;
extern int precomposed_unicode;
extern int protect_hfs;
extern int protect_ntfs;
diff --git a/generate-configlist.sh b/generate-configlist.sh
index b06da53c89..75c39ade20 100755
--- a/generate-configlist.sh
+++ b/generate-configlist.sh
@@ -13,17 +13,16 @@ print_config_list () {
cat <<EOF
static const char *config_name_list[] = {
EOF
- sed -E '
-/^`?[a-zA-Z].*\..*`?::$/ {
+ sed -e '
+ /^`*[a-zA-Z].*\..*`*::$/ {
/deprecated/d;
s/::$//;
s/`//g;
s/^.*$/ "&",/;
- s/, */",\n "/g;
p;};
-d' \
+ d' \
"$SOURCE_DIR"/Documentation/*config.adoc \
- "$SOURCE_DIR"/Documentation/config/*.adoc|
+ "$SOURCE_DIR"/Documentation/config/*.adoc |
sort
cat <<EOF
NULL,
diff --git a/git-compat-util.h b/git-compat-util.h
index 4678e21c4c..5bd69ec040 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -460,6 +460,8 @@ void warning_errno(const char *err, ...) __attribute__((format (printf, 1, 2)));
void show_usage_if_asked(int ac, const char **av, const char *err);
+NORETURN void you_still_use_that(const char *command_name);
+
#ifndef NO_OPENSSL
#ifdef APPLE_COMMON_CRYPTO
#include "compat/apple-common-crypto.h"
diff --git a/git-gui/generate-tclindex.sh b/git-gui/generate-tclindex.sh
index 36e3a0bd90..0b031d8339 100755
--- a/git-gui/generate-tclindex.sh
+++ b/git-gui/generate-tclindex.sh
@@ -23,7 +23,7 @@ then
: ok
else
echo >&2 " * $TCL_PATH failed; using unoptimized loading"
- rm -f $@
+ rm -f lib/tclIndex
echo '# Autogenerated by git-gui Makefile' >lib/tclIndex
echo >>lib/tclIndex
echo "class.tcl" >>lib/tclIndex
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 28572c889c..c77c05edde 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -77,99 +77,178 @@ proc is_Cygwin {} {
######################################################################
##
-## PATH lookup
+## PATH lookup. Sanitize $PATH, assure exec/open use only that
+
+if {[is_Windows]} {
+ set _path_sep {;}
+ set _search_exe .exe
+} else {
+ set _path_sep {:}
+ set _search_exe {}
+}
+
+if {[is_Windows]} {
+ set gitguidir [file dirname [info script]]
+ regsub -all ";" $gitguidir "\\;" gitguidir
+ set env(PATH) "$gitguidir;$env(PATH)"
+}
set _search_path {}
-proc _which {what args} {
- global env _search_exe _search_path
+set _path_seen [dict create]
+foreach p [split $env(PATH) $_path_sep] {
+ # Keep only absolute paths, getting rid of ., empty, etc.
+ if {[file pathtype $p] ne {absolute}} {
+ continue
+ }
+ # Keep only the first occurence of any duplicates.
+ set norm_p [file normalize $p]
+ if {[dict exists $_path_seen $norm_p]} {
+ continue
+ }
+ dict set _path_seen $norm_p 1
+ lappend _search_path $norm_p
+}
+unset _path_seen
- if {$_search_path eq {}} {
- if {[is_Windows]} {
- set gitguidir [file dirname [info script]]
- regsub -all ";" $gitguidir "\\;" gitguidir
- set env(PATH) "$gitguidir;$env(PATH)"
- set _search_path [split $env(PATH) {;}]
- # Skip empty `PATH` elements
- set _search_path [lsearch -all -inline -not -exact \
- $_search_path ""]
- set _search_exe .exe
+set env(PATH) [join $_search_path $_path_sep]
+
+if {[is_Windows]} {
+ proc _which {what args} {
+ global _search_exe _search_path
+
+ if {[lsearch -exact $args -script] >= 0} {
+ set suffix {}
+ } elseif {[string match *$_search_exe [string tolower $what]]} {
+ # The search string already has the file extension
+ set suffix {}
} else {
- set _search_path [split $env(PATH) :]
- set _search_exe {}
+ set suffix $_search_exe
}
- }
- if {[is_Windows] && [lsearch -exact $args -script] >= 0} {
- set suffix {}
- } else {
- set suffix $_search_exe
- }
-
- foreach p $_search_path {
- set p [file join $p $what$suffix]
- if {[file exists $p]} {
- return [file normalize $p]
+ foreach p $_search_path {
+ set p [file join $p $what$suffix]
+ if {[file exists $p]} {
+ return [file normalize $p]
+ }
}
+ return {}
}
- return {}
-}
-proc sanitize_command_line {command_line from_index} {
- set i $from_index
- while {$i < [llength $command_line]} {
- set cmd [lindex $command_line $i]
- if {[llength [file split $cmd]] < 2} {
- set fullpath [_which $cmd]
- if {$fullpath eq ""} {
- throw {NOT-FOUND} "$cmd not found in PATH"
+ proc sanitize_command_line {command_line from_index} {
+ set i $from_index
+ while {$i < [llength $command_line]} {
+ set cmd [lindex $command_line $i]
+ if {[llength [file split $cmd]] < 2} {
+ set fullpath [_which $cmd]
+ if {$fullpath eq ""} {
+ throw {NOT-FOUND} "$cmd not found in PATH"
+ }
+ lset command_line $i $fullpath
+ }
+
+ # handle piped commands, e.g. `exec A | B`
+ for {incr i} {$i < [llength $command_line]} {incr i} {
+ if {[lindex $command_line $i] eq "|"} {
+ incr i
+ break
+ }
}
- lset command_line $i $fullpath
}
+ return $command_line
+ }
+
+ # Override `exec` to avoid unsafe PATH lookup
+
+ rename exec real_exec
- # handle piped commands, e.g. `exec A | B`
- for {incr i} {$i < [llength $command_line]} {incr i} {
- if {[lindex $command_line $i] eq "|"} {
+ proc exec {args} {
+ # skip options
+ for {set i 0} {$i < [llength $args]} {incr i} {
+ set arg [lindex $args $i]
+ if {$arg eq "--"} {
incr i
break
}
+ if {[string range $arg 0 0] ne "-"} {
+ break
+ }
}
+ set args [sanitize_command_line $args $i]
+ uplevel 1 real_exec $args
}
- return $command_line
-}
-# Override `exec` to avoid unsafe PATH lookup
+ # Override `open` to avoid unsafe PATH lookup
-rename exec real_exec
+ rename open real_open
-proc exec {args} {
- # skip options
- for {set i 0} {$i < [llength $args]} {incr i} {
- set arg [lindex $args $i]
- if {$arg eq "--"} {
- incr i
- break
- }
- if {[string range $arg 0 0] ne "-"} {
- break
+ proc open {args} {
+ set arg0 [lindex $args 0]
+ if {[string range $arg0 0 0] eq "|"} {
+ set command_line [string trim [string range $arg0 1 end]]
+ lset args 0 "| [sanitize_command_line $command_line 0]"
}
+ uplevel 1 real_open $args
+ }
+
+} else {
+ # On non-Windows platforms, auto_execok, exec, and open are safe, and will
+ # use the sanitized search path. But, we need _which for these.
+
+ proc _which {what args} {
+ return [lindex [auto_execok $what] 0]
}
- set args [sanitize_command_line $args $i]
- uplevel 1 real_exec $args
}
-# Override `open` to avoid unsafe PATH lookup
+# Wrap exec/open to sanitize arguments
-rename open real_open
+# unsafe arguments begin with redirections or the pipe or background operators
+proc is_arg_unsafe {arg} {
+ regexp {^([<|>&]|2>)} $arg
+}
-proc open {args} {
- set arg0 [lindex $args 0]
- if {[string range $arg0 0 0] eq "|"} {
- set command_line [string trim [string range $arg0 1 end]]
- lset args 0 "| [sanitize_command_line $command_line 0]"
+proc make_arg_safe {arg} {
+ if {[is_arg_unsafe $arg]} {
+ set arg [file join . $arg]
}
- uplevel 1 real_open $args
+ return $arg
}
+proc make_arglist_safe {arglist} {
+ set res {}
+ foreach arg $arglist {
+ lappend res [make_arg_safe $arg]
+ }
+ return $res
+}
+
+# executes one command
+# no redirections or pipelines are possible
+# cmd is a list that specifies the command and its arguments
+# calls `exec` and returns its value
+proc safe_exec {cmd} {
+ eval exec [make_arglist_safe $cmd]
+}
+
+# executes one command in the background
+# no redirections or pipelines are possible
+# cmd is a list that specifies the command and its arguments
+# calls `exec` and returns its value
+proc safe_exec_bg {cmd} {
+ eval exec [make_arglist_safe $cmd] &
+}
+
+proc safe_open_file {filename flags} {
+ # a file name starting with "|" would attempt to run a process
+ # but such a file name must be treated as a relative path
+ # hide the "|" behind "./"
+ if {[string index $filename 0] eq "|"} {
+ set filename [file join . $filename]
+ }
+ open $filename $flags
+}
+
+# End exec/open wrappers
+
######################################################################
##
## locate our library
@@ -270,11 +349,11 @@ unset oguimsg
if {[tk windowingsystem] eq "aqua"} {
catch {
- exec osascript -e [format {
+ safe_exec [list osascript -e [format {
tell application "System Events"
set frontmost of processes whose unix id is %d to true
end tell
- } [pid]]
+ } [pid]]]
}
}
@@ -304,15 +383,37 @@ if {$_trace >= 0} {
# branches).
set _last_merged_branch {}
-proc shellpath {} {
- global _shellpath env
- if {[string match @@* $_shellpath]} {
- if {[info exists env(SHELL)]} {
- return $env(SHELL)
- } else {
- return /bin/sh
- }
+# for testing, allow unconfigured _shellpath
+if {[string match @@* $_shellpath]} {
+ if {[info exists env(SHELL)]} {
+ set _shellpath $env(SHELL)
+ } else {
+ set _shellpath /bin/sh
}
+}
+
+if {[is_Windows]} {
+ set _shellpath [safe_exec [list cygpath -m $_shellpath]]
+}
+
+if {![file executable $_shellpath] || \
+ !([file pathtype $_shellpath] eq {absolute})} {
+ set errmsg "The defined shell ('$_shellpath') is not usable, \
+ it must be an absolute path to an executable."
+ puts stderr $errmsg
+
+ catch {wm withdraw .}
+ tk_messageBox \
+ -icon error \
+ -type ok \
+ -title "git-gui: configuration error" \
+ -message $errmsg
+ exit 1
+}
+
+
+proc shellpath {} {
+ global _shellpath
return $_shellpath
}
@@ -494,7 +595,7 @@ proc _git_cmd {name} {
# Tcl on Windows doesn't know it.
#
set p [gitexec git-$name]
- set f [open $p r]
+ set f [safe_open_file $p r]
set s [gets $f]
close $f
@@ -524,32 +625,14 @@ proc _git_cmd {name} {
return $v
}
-# Test a file for a hashbang to identify executable scripts on Windows.
-proc is_shellscript {filename} {
- if {![file exists $filename]} {return 0}
- set f [open $filename r]
- fconfigure $f -encoding binary
- set magic [read $f 2]
- close $f
- return [expr {$magic eq "#!"}]
-}
-
-# Run a command connected via pipes on stdout.
+# Run a shell command connected via pipes on stdout.
# This is for use with textconv filters and uses sh -c "..." to allow it to
-# contain a command with arguments. On windows we must check for shell
-# scripts specifically otherwise just call the filter command.
+# contain a command with arguments. We presume this
+# to be a shellscript that the configured shell (/bin/sh by default) knows
+# how to run.
proc open_cmd_pipe {cmd path} {
- global env
- if {![file executable [shellpath]]} {
- set exe [auto_execok [lindex $cmd 0]]
- if {[is_shellscript [lindex $exe 0]]} {
- set run [linsert [auto_execok sh] end -c "$cmd \"\$0\"" $path]
- } else {
- set run [concat $exe [lrange $cmd 1 end] $path]
- }
- } else {
- set run [list [shellpath] -c "$cmd \"\$0\"" $path]
- }
+ set run [list [shellpath] -c "$cmd \"\$0\"" $path]
+ set run [make_arglist_safe $run]
return [open |$run r]
}
@@ -559,7 +642,7 @@ proc _lappend_nice {cmd_var} {
if {![info exists _nice]} {
set _nice [_which nice]
- if {[catch {exec $_nice git version}]} {
+ if {[catch {safe_exec [list $_nice git version]}]} {
set _nice {}
} elseif {[is_Windows] && [file dirname $_nice] ne [file dirname $::_git]} {
set _nice {}
@@ -571,7 +654,11 @@ proc _lappend_nice {cmd_var} {
}
proc git {args} {
- set fd [eval [list git_read] $args]
+ git_redir $args {}
+}
+
+proc git_redir {cmd redir} {
+ set fd [git_read $cmd $redir]
fconfigure $fd -translation binary -encoding utf-8
set result [string trimright [read $fd] "\n"]
close $fd
@@ -581,88 +668,47 @@ proc git {args} {
return $result
}
-proc _open_stdout_stderr {cmd} {
- _trace_exec $cmd
+proc safe_open_command {cmd {redir {}}} {
+ set cmd [make_arglist_safe $cmd]
+ _trace_exec [concat $cmd $redir]
if {[catch {
- set fd [open [concat [list | ] $cmd] r]
- } err]} {
- if { [lindex $cmd end] eq {2>@1}
- && $err eq {can not find channel named "1"}
- } {
- # Older versions of Tcl 8.4 don't have this 2>@1 IO
- # redirect operator. Fallback to |& cat for those.
- # The command was not actually started, so its safe
- # to try to start it a second time.
- #
- set fd [open [concat \
- [list | ] \
- [lrange $cmd 0 end-1] \
- [list |& cat] \
- ] r]
- } else {
- error $err
- }
+ set fd [open [concat [list | ] $cmd $redir] r]
+ } err]} {
+ error $err
}
fconfigure $fd -eofchar {}
return $fd
}
-proc git_read {args} {
- set opt [list]
-
- while {1} {
- switch -- [lindex $args 0] {
- --nice {
- _lappend_nice opt
- }
-
- --stderr {
- lappend args 2>@1
- }
-
- default {
- break
- }
-
- }
-
- set args [lrange $args 1 end]
- }
+proc git_read {cmd {redir {}}} {
+ set cmdp [_git_cmd [lindex $cmd 0]]
+ set cmd [lrange $cmd 1 end]
- set cmdp [_git_cmd [lindex $args 0]]
- set args [lrange $args 1 end]
-
- return [_open_stdout_stderr [concat $opt $cmdp $args]]
+ return [safe_open_command [concat $cmdp $cmd] $redir]
}
-proc git_write {args} {
+proc git_read_nice {cmd} {
set opt [list]
- while {1} {
- switch -- [lindex $args 0] {
- --nice {
- _lappend_nice opt
- }
+ _lappend_nice opt
- default {
- break
- }
-
- }
+ set cmdp [_git_cmd [lindex $cmd 0]]
+ set cmd [lrange $cmd 1 end]
- set args [lrange $args 1 end]
- }
+ return [safe_open_command [concat $opt $cmdp $cmd]]
+}
- set cmdp [_git_cmd [lindex $args 0]]
- set args [lrange $args 1 end]
+proc git_write {cmd} {
+ set cmd [make_arglist_safe $cmd]
+ set cmdp [_git_cmd [lindex $cmd 0]]
+ set cmd [lrange $cmd 1 end]
- _trace_exec [concat $opt $cmdp $args]
- return [open [concat [list | ] $opt $cmdp $args] w]
+ _trace_exec [concat $cmdp $cmd]
+ return [open [concat [list | ] $cmdp $cmd] w]
}
proc githook_read {hook_name args} {
- set cmd [concat git hook run --ignore-missing $hook_name -- $args 2>@1]
- return [_open_stdout_stderr $cmd]
+ git_read [concat [list hook run --ignore-missing $hook_name --] $args] [list 2>@1]
}
proc kill_file_process {fd} {
@@ -670,9 +716,9 @@ proc kill_file_process {fd} {
catch {
if {[is_Windows]} {
- exec taskkill /pid $process
+ safe_exec [list taskkill /pid $process]
} else {
- exec kill $process
+ safe_exec [list kill $process]
}
}
}
@@ -698,7 +744,7 @@ proc sq {value} {
proc load_current_branch {} {
global current_branch is_detached
- set fd [open [gitdir HEAD] r]
+ set fd [safe_open_file [gitdir HEAD] r]
fconfigure $fd -translation binary -encoding utf-8
if {[gets $fd ref] < 1} {
set ref {}
@@ -1068,7 +1114,7 @@ You are using [git-version]:
## configure our library
set idx [file join $oguilib tclIndex]
-if {[catch {set fd [open $idx r]} err]} {
+if {[catch {set fd [safe_open_file $idx r]} err]} {
catch {wm withdraw .}
tk_messageBox \
-icon error \
@@ -1106,53 +1152,30 @@ unset -nocomplain idx fd
##
## config file parsing
-git-version proc _parse_config {arr_name args} {
- >= 1.5.3 {
- upvar $arr_name arr
- array unset arr
- set buf {}
- catch {
- set fd_rc [eval \
- [list git_read config] \
- $args \
- [list --null --list]]
- fconfigure $fd_rc -translation binary -encoding utf-8
- set buf [read $fd_rc]
- close $fd_rc
- }
- foreach line [split $buf "\0"] {
- if {[regexp {^([^\n]+)\n(.*)$} $line line name value]} {
- if {[is_many_config $name]} {
- lappend arr($name) $value
- } else {
- set arr($name) $value
- }
- } elseif {[regexp {^([^\n]+)$} $line line name]} {
- # no value given, but interpreting them as
- # boolean will be handled as true
- set arr($name) {}
- }
- }
- }
- default {
- upvar $arr_name arr
- array unset arr
- catch {
- set fd_rc [eval [list git_read config --list] $args]
- while {[gets $fd_rc line] >= 0} {
- if {[regexp {^([^=]+)=(.*)$} $line line name value]} {
- if {[is_many_config $name]} {
- lappend arr($name) $value
- } else {
- set arr($name) $value
- }
- } elseif {[regexp {^([^=]+)$} $line line name]} {
- # no value given, but interpreting them as
- # boolean will be handled as true
- set arr($name) {}
- }
+proc _parse_config {arr_name args} {
+ upvar $arr_name arr
+ array unset arr
+ set buf {}
+ catch {
+ set fd_rc [git_read \
+ [concat config \
+ $args \
+ --null --list]]
+ fconfigure $fd_rc -translation binary -encoding utf-8
+ set buf [read $fd_rc]
+ close $fd_rc
+ }
+ foreach line [split $buf "\0"] {
+ if {[regexp {^([^\n]+)\n(.*)$} $line line name value]} {
+ if {[is_many_config $name]} {
+ lappend arr($name) $value
+ } else {
+ set arr($name) $value
}
- close $fd_rc
+ } elseif {[regexp {^([^\n]+)$} $line line name]} {
+ # no value given, but interpreting them as
+ # boolean will be handled as true
+ set arr($name) {}
}
}
}
@@ -1427,7 +1450,7 @@ proc repository_state {ctvar hdvar mhvar} {
set merge_head [gitdir MERGE_HEAD]
if {[file exists $merge_head]} {
set ct merge
- set fd_mh [open $merge_head r]
+ set fd_mh [safe_open_file $merge_head r]
while {[gets $fd_mh line] >= 0} {
lappend mh $line
}
@@ -1446,7 +1469,7 @@ proc PARENT {} {
return $p
}
if {$empty_tree eq {}} {
- set empty_tree [git mktree << {}]
+ set empty_tree [git_redir [list mktree] [list << {}]]
}
return $empty_tree
}
@@ -1505,12 +1528,12 @@ proc rescan {after {honor_trustmtime 1}} {
} else {
set rescan_active 1
ui_status [mc "Refreshing file status..."]
- set fd_rf [git_read update-index \
+ set fd_rf [git_read [list update-index \
-q \
--unmerged \
--ignore-missing \
--refresh \
- ]
+ ]]
fconfigure $fd_rf -blocking 0 -translation binary
fileevent $fd_rf readable \
[list rescan_stage2 $fd_rf $after]
@@ -1550,11 +1573,11 @@ proc rescan_stage2 {fd after} {
set rescan_active 2
ui_status [mc "Scanning for modified files ..."]
if {[git-version >= "1.7.2"]} {
- set fd_di [git_read diff-index --cached --ignore-submodules=dirty -z [PARENT]]
+ set fd_di [git_read [list diff-index --cached --ignore-submodules=dirty -z [PARENT]]]
} else {
- set fd_di [git_read diff-index --cached -z [PARENT]]
+ set fd_di [git_read [list diff-index --cached -z [PARENT]]]
}
- set fd_df [git_read diff-files -z]
+ set fd_df [git_read [list diff-files -z]]
fconfigure $fd_di -blocking 0 -translation binary -encoding binary
fconfigure $fd_df -blocking 0 -translation binary -encoding binary
@@ -1563,7 +1586,7 @@ proc rescan_stage2 {fd after} {
fileevent $fd_df readable [list read_diff_files $fd_df $after]
if {[is_config_true gui.displayuntracked]} {
- set fd_lo [eval git_read ls-files --others -z $ls_others]
+ set fd_lo [git_read [concat ls-files --others -z $ls_others]]
fconfigure $fd_lo -blocking 0 -translation binary -encoding binary
fileevent $fd_lo readable [list read_ls_others $fd_lo $after]
incr rescan_active
@@ -1575,7 +1598,7 @@ proc load_message {file {encoding {}}} {
set f [gitdir $file]
if {[file isfile $f]} {
- if {[catch {set fd [open $f r]}]} {
+ if {[catch {set fd [safe_open_file $f r]}]} {
return 0
}
fconfigure $fd -eofchar {}
@@ -1599,23 +1622,23 @@ proc run_prepare_commit_msg_hook {} {
# it will be .git/MERGE_MSG (merge), .git/SQUASH_MSG (squash), or an
# empty file but existent file.
- set fd_pcm [open [gitdir PREPARE_COMMIT_MSG] a]
+ set fd_pcm [safe_open_file [gitdir PREPARE_COMMIT_MSG] a]
if {[file isfile [gitdir MERGE_MSG]]} {
set pcm_source "merge"
- set fd_mm [open [gitdir MERGE_MSG] r]
+ set fd_mm [safe_open_file [gitdir MERGE_MSG] r]
fconfigure $fd_mm -encoding utf-8
puts -nonewline $fd_pcm [read $fd_mm]
close $fd_mm
} elseif {[file isfile [gitdir SQUASH_MSG]]} {
set pcm_source "squash"
- set fd_sm [open [gitdir SQUASH_MSG] r]
+ set fd_sm [safe_open_file [gitdir SQUASH_MSG] r]
fconfigure $fd_sm -encoding utf-8
puts -nonewline $fd_pcm [read $fd_sm]
close $fd_sm
} elseif {[file isfile [get_config commit.template]]} {
set pcm_source "template"
- set fd_sm [open [get_config commit.template] r]
+ set fd_sm [safe_open_file [get_config commit.template] r]
fconfigure $fd_sm -encoding utf-8
puts -nonewline $fd_pcm [read $fd_sm]
close $fd_sm
@@ -2205,7 +2228,7 @@ proc do_gitk {revs {is_submodule false}} {
unset env(GIT_DIR)
unset env(GIT_WORK_TREE)
}
- eval exec $cmd $revs "--" "--" &
+ safe_exec_bg [concat $cmd $revs "--" "--"]
set env(GIT_DIR) $_gitdir
set env(GIT_WORK_TREE) $_gitworktree
@@ -2242,7 +2265,7 @@ proc do_git_gui {} {
set pwd [pwd]
cd $current_diff_path
- eval exec $exe gui &
+ safe_exec_bg [concat $exe gui]
set env(GIT_DIR) $_gitdir
set env(GIT_WORK_TREE) $_gitworktree
@@ -2273,16 +2296,18 @@ proc get_explorer {} {
proc do_explore {} {
global _gitworktree
- set explorer [get_explorer]
- eval exec $explorer [list [file nativename $_gitworktree]] &
+ set cmd [get_explorer]
+ lappend cmd [file nativename $_gitworktree]
+ safe_exec_bg $cmd
}
# Open file relative to the working tree by the default associated app.
proc do_file_open {file} {
global _gitworktree
- set explorer [get_explorer]
+ set cmd [get_explorer]
set full_file_path [file join $_gitworktree $file]
- exec $explorer [file nativename $full_file_path] &
+ lappend cmd [file nativename $full_file_path]
+ safe_exec_bg $cmd
}
set is_quitting 0
@@ -2316,7 +2341,7 @@ proc do_quit {{rc {1}}} {
if {![string match amend* $commit_type]
&& $msg ne {}} {
catch {
- set fd [open $save w]
+ set fd [safe_open_file $save w]
fconfigure $fd -encoding utf-8
puts -nonewline $fd $msg
close $fd
@@ -2760,17 +2785,16 @@ if {![is_bare]} {
if {[is_Windows]} {
# Use /git-bash.exe if available
- set normalized [file normalize $::argv0]
- regsub "/mingw../libexec/git-core/git-gui$" \
- $normalized "/git-bash.exe" cmdLine
- if {$cmdLine != $normalized && [file exists $cmdLine]} {
- set cmdLine [list "Git Bash" $cmdLine &]
+ set _git_bash [safe_exec [list cygpath -m /git-bash.exe]]
+ if {[file executable $_git_bash]} {
+ set _bash_cmdline [list "Git Bash" $_git_bash]
} else {
- set cmdLine [list "Git Bash" bash --login -l &]
+ set _bash_cmdline [list "Git Bash" bash --login -l]
}
.mbar.repository add command \
-label [mc "Git Bash"] \
- -command {eval exec [auto_execok start] $cmdLine}
+ -command {safe_exec_bg [concat [list [_which cmd] /c start] $_bash_cmdline]}
+ unset _git_bash
}
if {[is_Windows] || ![is_bare]} {
@@ -4079,7 +4103,7 @@ if {[winfo exists $ui_comm]} {
}
} elseif {$m} {
catch {
- set fd [open [gitdir GITGUI_BCK] w]
+ set fd [safe_open_file [gitdir GITGUI_BCK] w]
fconfigure $fd -encoding utf-8
puts -nonewline $fd $msg
close $fd
diff --git a/git-gui/lib/blame.tcl b/git-gui/lib/blame.tcl
index 8441e109be..d6fd8bea91 100644
--- a/git-gui/lib/blame.tcl
+++ b/git-gui/lib/blame.tcl
@@ -481,14 +481,14 @@ method _load {jump} {
if {$do_textconv ne 0} {
set fd [open_cmd_pipe $textconv $path]
} else {
- set fd [open $path r]
+ set fd [safe_open_file $path r]
}
fconfigure $fd -eofchar {}
} else {
if {$do_textconv ne 0} {
- set fd [git_read cat-file --textconv "$commit:$path"]
+ set fd [git_read [list cat-file --textconv "$commit:$path"]]
} else {
- set fd [git_read cat-file blob "$commit:$path"]
+ set fd [git_read [list cat-file blob "$commit:$path"]]
}
}
fconfigure $fd \
@@ -617,7 +617,7 @@ method _exec_blame {cur_w cur_d options cur_s} {
}
lappend options -- $path
- set fd [eval git_read --nice blame $options]
+ set fd [git_read_nice [concat blame $options]]
fconfigure $fd -blocking 0 -translation lf -encoding utf-8
fileevent $fd readable [cb _read_blame $fd $cur_w $cur_d]
set current_fd $fd
@@ -986,7 +986,7 @@ method _showcommit {cur_w lno} {
if {[catch {set msg $header($cmit,message)}]} {
set msg {}
catch {
- set fd [git_read cat-file commit $cmit]
+ set fd [git_read [list cat-file commit $cmit]]
fconfigure $fd -encoding binary -translation lf
# By default commits are assumed to be in utf-8
set enc utf-8
@@ -1134,7 +1134,7 @@ method _blameparent {} {
} else {
set diffcmd [list diff-tree --unified=0 $cparent $cmit -- $new_path]
}
- if {[catch {set fd [eval git_read $diffcmd]} err]} {
+ if {[catch {set fd [git_read $diffcmd]} err]} {
$status_operation stop [mc "Unable to display parent"]
error_popup [strcat [mc "Error loading diff:"] "\n\n$err"]
return
diff --git a/git-gui/lib/branch.tcl b/git-gui/lib/branch.tcl
index 8b0c485889..39e0f2dc98 100644
--- a/git-gui/lib/branch.tcl
+++ b/git-gui/lib/branch.tcl
@@ -7,7 +7,7 @@ proc load_all_heads {} {
set rh refs/heads
set rh_len [expr {[string length $rh] + 1}]
set all_heads [list]
- set fd [git_read for-each-ref --format=%(refname) $rh]
+ set fd [git_read [list for-each-ref --format=%(refname) $rh]]
fconfigure $fd -translation binary -encoding utf-8
while {[gets $fd line] > 0} {
if {!$some_heads_tracking || ![is_tracking_branch $line]} {
@@ -21,10 +21,10 @@ proc load_all_heads {} {
proc load_all_tags {} {
set all_tags [list]
- set fd [git_read for-each-ref \
+ set fd [git_read [list for-each-ref \
--sort=-taggerdate \
--format=%(refname) \
- refs/tags]
+ refs/tags]]
fconfigure $fd -translation binary -encoding utf-8
while {[gets $fd line] > 0} {
if {![regsub ^refs/tags/ $line {} name]} continue
diff --git a/git-gui/lib/browser.tcl b/git-gui/lib/browser.tcl
index a982983667..6fc8d4d637 100644
--- a/git-gui/lib/browser.tcl
+++ b/git-gui/lib/browser.tcl
@@ -196,7 +196,7 @@ method _ls {tree_id {name {}}} {
lappend browser_stack [list $tree_id $name]
$w conf -state disabled
- set fd [git_read ls-tree -z $tree_id]
+ set fd [git_read [list ls-tree -z $tree_id]]
fconfigure $fd -blocking 0 -translation binary -encoding utf-8
fileevent $fd readable [cb _read $fd]
}
diff --git a/git-gui/lib/checkout_op.tcl b/git-gui/lib/checkout_op.tcl
index 21ea768d80..87ed0b4858 100644
--- a/git-gui/lib/checkout_op.tcl
+++ b/git-gui/lib/checkout_op.tcl
@@ -304,12 +304,12 @@ The rescan will be automatically started now.
_readtree $this
} else {
ui_status [mc "Refreshing file status..."]
- set fd [git_read update-index \
+ set fd [git_read [list update-index \
-q \
--unmerged \
--ignore-missing \
--refresh \
- ]
+ ]]
fconfigure $fd -blocking 0 -translation binary
fileevent $fd readable [cb _refresh_wait $fd]
}
@@ -345,14 +345,15 @@ method _readtree {} {
[mc "Updating working directory to '%s'..." [_name $this]] \
[mc "files checked out"]]
- set fd [git_read --stderr read-tree \
+ set fd [git_read [list read-tree \
-m \
-u \
-v \
--exclude-per-directory=.gitignore \
$HEAD \
$new_hash \
- ]
+ ] \
+ [list 2>@1]]
fconfigure $fd -blocking 0 -translation binary
fileevent $fd readable [cb _readtree_wait $fd $status_bar_operation]
}
@@ -510,18 +511,8 @@ method _update_repo_state {} {
delete_this
}
-git-version proc _detach_HEAD {log new} {
- >= 1.5.3 {
- git update-ref --no-deref -m $log HEAD $new
- }
- default {
- set p [gitdir HEAD]
- file delete $p
- set fd [open $p w]
- fconfigure $fd -translation lf -encoding utf-8
- puts $fd $new
- close $fd
- }
+proc _detach_HEAD {log new} {
+ git update-ref --no-deref -m $log HEAD $new
}
method _confirm_reset {cur} {
@@ -582,7 +573,7 @@ method _confirm_reset {cur} {
pack $w.buttons.cancel -side right -padx 5
pack $w.buttons -side bottom -fill x -pady 10 -padx 10
- set fd [git_read rev-list --pretty=oneline $cur ^$new_hash]
+ set fd [git_read [list rev-list --pretty=oneline $cur ^$new_hash]]
while {[gets $fd line] > 0} {
set abbr [string range $line 0 7]
set subj [string range $line 41 end]
diff --git a/git-gui/lib/choose_repository.tcl b/git-gui/lib/choose_repository.tcl
index d23abedcb3..5b361cc424 100644
--- a/git-gui/lib/choose_repository.tcl
+++ b/git-gui/lib/choose_repository.tcl
@@ -641,8 +641,8 @@ method _do_clone2 {} {
set pwd [pwd]
if {[catch {
file mkdir [gitdir objects info]
- set f_in [open [file join $objdir info alternates] r]
- set f_cp [open [gitdir objects info alternates] w]
+ set f_in [safe_open_file [file join $objdir info alternates] r]
+ set f_cp [safe_open_file [gitdir objects info alternates] w]
fconfigure $f_in -translation binary -encoding binary
fconfigure $f_cp -translation binary -encoding binary
cd $objdir
@@ -727,7 +727,7 @@ method _do_clone2 {} {
[cb _do_clone_tags]
}
shared {
- set fd [open [gitdir objects info alternates] w]
+ set fd [safe_open_file [gitdir objects info alternates] w]
fconfigure $fd -translation binary
puts $fd $objdir
close $fd
@@ -760,8 +760,8 @@ method _copy_files {objdir tocopy} {
}
foreach p $tocopy {
if {[catch {
- set f_in [open [file join $objdir $p] r]
- set f_cp [open [file join .git objects $p] w]
+ set f_in [safe_open_file [file join $objdir $p] r]
+ set f_cp [safe_open_file [file join .git objects $p] w]
fconfigure $f_in -translation binary -encoding binary
fconfigure $f_cp -translation binary -encoding binary
@@ -818,12 +818,12 @@ method _clone_refs {} {
error_popup [mc "Not a Git repository: %s" [file tail $origin_url]]
return 0
}
- set fd_in [git_read for-each-ref \
+ set fd_in [git_read [list for-each-ref \
--tcl \
- {--format=list %(refname) %(objectname) %(*objectname)}]
+ {--format=list %(refname) %(objectname) %(*objectname)}]]
cd $pwd
- set fd [open [gitdir packed-refs] w]
+ set fd [safe_open_file [gitdir packed-refs] w]
fconfigure $fd -translation binary
puts $fd "# pack-refs with: peeled"
while {[gets $fd_in line] >= 0} {
@@ -877,7 +877,7 @@ method _do_clone_full_end {ok} {
set HEAD {}
if {[file exists [gitdir FETCH_HEAD]]} {
- set fd [open [gitdir FETCH_HEAD] r]
+ set fd [safe_open_file [gitdir FETCH_HEAD] r]
while {[gets $fd line] >= 0} {
if {[regexp "^(.{40})\t\t" $line line HEAD]} {
break
@@ -953,13 +953,14 @@ method _do_clone_checkout {HEAD} {
[mc "files"]]
set readtree_err {}
- set fd [git_read --stderr read-tree \
+ set fd [git_read [list read-tree \
-m \
-u \
-v \
HEAD \
HEAD \
- ]
+ ] \
+ [list 2>@1]]
fconfigure $fd -blocking 0 -translation binary
fileevent $fd readable [cb _readtree_wait $fd]
}
diff --git a/git-gui/lib/choose_rev.tcl b/git-gui/lib/choose_rev.tcl
index 6dae7937d5..8ae7e8a5c4 100644
--- a/git-gui/lib/choose_rev.tcl
+++ b/git-gui/lib/choose_rev.tcl
@@ -146,14 +146,14 @@ constructor _new {path unmerged_only title} {
append fmt { %(*subject)}
append fmt {]}
set all_refn [list]
- set fr_fd [git_read for-each-ref \
+ set fr_fd [git_read [list for-each-ref \
--tcl \
--sort=-taggerdate \
--format=$fmt \
refs/heads \
refs/remotes \
refs/tags \
- ]
+ ]]
fconfigure $fr_fd -translation lf -encoding utf-8
while {[gets $fr_fd line] > 0} {
set line [eval $line]
@@ -176,7 +176,7 @@ constructor _new {path unmerged_only title} {
close $fr_fd
if {$unmerged_only} {
- set fr_fd [git_read rev-list --all ^$::HEAD]
+ set fr_fd [git_read [list rev-list --all ^$::HEAD]]
while {[gets $fr_fd sha1] > 0} {
if {[catch {set rlst $cmt_refn($sha1)}]} continue
foreach refn $rlst {
@@ -579,7 +579,7 @@ method _reflog_last {name} {
set last {}
if {[catch {set last [file mtime [gitdir $name]]}]
- && ![catch {set g [open [gitdir logs $name] r]}]} {
+ && ![catch {set g [safe_open_file [gitdir logs $name] r]}]} {
fconfigure $g -translation binary
while {[gets $g line] >= 0} {
if {[regexp {> ([1-9][0-9]*) } $line line when]} {
diff --git a/git-gui/lib/commit.tcl b/git-gui/lib/commit.tcl
index a570f9cdc6..60d66172a1 100644
--- a/git-gui/lib/commit.tcl
+++ b/git-gui/lib/commit.tcl
@@ -27,7 +27,7 @@ You are currently in the middle of a merge that has not been fully completed. Y
if {[catch {
set name ""
set email ""
- set fd [git_read cat-file commit $curHEAD]
+ set fd [git_read [list cat-file commit $curHEAD]]
fconfigure $fd -encoding binary -translation lf
# By default commits are assumed to be in utf-8
set enc utf-8
@@ -236,7 +236,7 @@ A good commit message has the following format:
# -- Build the message file.
#
set msg_p [gitdir GITGUI_EDITMSG]
- set msg_wt [open $msg_p w]
+ set msg_wt [safe_open_file $msg_p w]
fconfigure $msg_wt -translation lf
setup_commit_encoding $msg_wt
puts $msg_wt $msg
@@ -336,7 +336,7 @@ proc commit_commitmsg_wait {fd_ph curHEAD msg_p} {
proc commit_writetree {curHEAD msg_p} {
ui_status [mc "Committing changes..."]
- set fd_wt [git_read write-tree]
+ set fd_wt [git_read [list write-tree]]
fileevent $fd_wt readable \
[list commit_committree $fd_wt $curHEAD $msg_p]
}
@@ -361,7 +361,7 @@ proc commit_committree {fd_wt curHEAD msg_p} {
# -- Verify this wasn't an empty change.
#
if {$commit_type eq {normal}} {
- set fd_ot [git_read cat-file commit $PARENT]
+ set fd_ot [git_read [list cat-file commit $PARENT]]
fconfigure $fd_ot -encoding binary -translation lf
set old_tree [gets $fd_ot]
close $fd_ot
@@ -399,8 +399,8 @@ A rescan will be automatically started now.
foreach p [concat $PARENT $MERGE_HEAD] {
lappend cmd -p $p
}
- lappend cmd <$msg_p
- if {[catch {set cmt_id [eval git $cmd]} err]} {
+ set msgtxt [list <$msg_p]
+ if {[catch {set cmt_id [git_redir $cmd $msgtxt]} err]} {
catch {file delete $msg_p}
error_popup [strcat [mc "commit-tree failed:"] "\n\n$err"]
ui_status [mc "Commit failed."]
@@ -420,7 +420,7 @@ A rescan will be automatically started now.
if {$commit_type ne {normal}} {
append reflogm " ($commit_type)"
}
- set msg_fd [open $msg_p r]
+ set msg_fd [safe_open_file $msg_p r]
setup_commit_encoding $msg_fd 1
gets $msg_fd subject
close $msg_fd
diff --git a/git-gui/lib/console.tcl b/git-gui/lib/console.tcl
index fafafb81f1..a017cfeadd 100644
--- a/git-gui/lib/console.tcl
+++ b/git-gui/lib/console.tcl
@@ -92,10 +92,9 @@ method _init {} {
method exec {cmd {after {}}} {
if {[lindex $cmd 0] eq {git}} {
- set fd_f [eval git_read --stderr [lrange $cmd 1 end]]
+ set fd_f [git_read [lrange $cmd 1 end] [list 2>@1]]
} else {
- lappend cmd 2>@1
- set fd_f [_open_stdout_stderr $cmd]
+ set fd_f [safe_open_command $cmd [list 2>@1]]
}
fconfigure $fd_f -blocking 0 -translation binary -encoding [encoding system]
fileevent $fd_f readable [cb _read $fd_f $after]
diff --git a/git-gui/lib/database.tcl b/git-gui/lib/database.tcl
index 85783081e0..1fc0ea00b3 100644
--- a/git-gui/lib/database.tcl
+++ b/git-gui/lib/database.tcl
@@ -3,7 +3,7 @@
proc do_stats {} {
global use_ttk NS
- set fd [git_read count-objects -v]
+ set fd [git_read [list count-objects -v]]
while {[gets $fd line] > 0} {
if {[regexp {^([^:]+): (\d+)$} $line _ name value]} {
set stats($name) $value
diff --git a/git-gui/lib/diff.tcl b/git-gui/lib/diff.tcl
index d657bfec05..84f0468c7c 100644
--- a/git-gui/lib/diff.tcl
+++ b/git-gui/lib/diff.tcl
@@ -191,7 +191,7 @@ proc show_other_diff {path w m cont_info} {
set sz [string length $content]
}
file {
- set fd [open $path r]
+ set fd [safe_open_file $path r]
fconfigure $fd \
-eofchar {} \
-encoding [get_path_encoding $path]
@@ -215,7 +215,7 @@ proc show_other_diff {path w m cont_info} {
$ui_diff insert end \
"* [mc "Git Repository (subproject)"]\n" \
d_info
- } elseif {![catch {set type [exec file $path]}]} {
+ } elseif {![catch {set type [safe_exec [list file $path]]}]} {
set n [string length $path]
if {[string equal -length $n $path $type]} {
set type [string range $type $n end]
@@ -327,7 +327,7 @@ proc start_show_diff {cont_info {add_opts {}}} {
}
}
- if {[catch {set fd [eval git_read --nice $cmd]} err]} {
+ if {[catch {set fd [git_read_nice $cmd]} err]} {
set diff_active 0
unlock_index
ui_status [mc "Unable to display %s" [escape_path $path]]
@@ -603,7 +603,7 @@ proc apply_or_revert_hunk {x y revert} {
if {[catch {
set enc [get_path_encoding $current_diff_path]
- set p [eval git_write $apply_cmd]
+ set p [git_write $apply_cmd]
fconfigure $p -translation binary -encoding $enc
puts -nonewline $p $wholepatch
close $p} err]} {
@@ -839,7 +839,7 @@ proc apply_or_revert_range_or_line {x y revert} {
if {[catch {
set enc [get_path_encoding $current_diff_path]
- set p [eval git_write $apply_cmd]
+ set p [git_write $apply_cmd]
fconfigure $p -translation binary -encoding $enc
puts -nonewline $p $current_diff_header
puts -nonewline $p $wholepatch
@@ -876,7 +876,7 @@ proc undo_last_revert {} {
if {[catch {
set enc $last_revert_enc
- set p [eval git_write $apply_cmd]
+ set p [git_write $apply_cmd]
fconfigure $p -translation binary -encoding $enc
puts -nonewline $p $last_revert
close $p} err]} {
diff --git a/git-gui/lib/index.tcl b/git-gui/lib/index.tcl
index d2ec24bd80..857864ff2b 100644
--- a/git-gui/lib/index.tcl
+++ b/git-gui/lib/index.tcl
@@ -75,7 +75,7 @@ proc update_indexinfo {msg path_list after} {
if {$batch > 25} {set batch 25}
set status_bar_operation [$::main_status start $msg [mc "files"]]
- set fd [git_write update-index -z --index-info]
+ set fd [git_write [list update-index -z --index-info]]
fconfigure $fd \
-blocking 0 \
-buffering full \
@@ -144,7 +144,7 @@ proc update_index {msg path_list after} {
if {$batch > 25} {set batch 25}
set status_bar_operation [$::main_status start $msg [mc "files"]]
- set fd [git_write update-index --add --remove -z --stdin]
+ set fd [git_write [list update-index --add --remove -z --stdin]]
fconfigure $fd \
-blocking 0 \
-buffering full \
@@ -218,13 +218,13 @@ proc checkout_index {msg path_list after capture_error} {
if {$batch > 25} {set batch 25}
set status_bar_operation [$::main_status start $msg [mc "files"]]
- set fd [git_write checkout-index \
+ set fd [git_write [list checkout-index \
--index \
--quiet \
--force \
-z \
--stdin \
- ]
+ ]]
fconfigure $fd \
-blocking 0 \
-buffering full \
diff --git a/git-gui/lib/merge.tcl b/git-gui/lib/merge.tcl
index 664803cf3f..44c3f93584 100644
--- a/git-gui/lib/merge.tcl
+++ b/git-gui/lib/merge.tcl
@@ -93,7 +93,7 @@ method _start {} {
set spec [$w_rev get_tracking_branch]
set cmit [$w_rev get_commit]
- set fh [open [gitdir FETCH_HEAD] w]
+ set fh [safe_open_file [gitdir FETCH_HEAD] w]
fconfigure $fh -translation lf
if {$spec eq {}} {
set remote .
@@ -118,7 +118,7 @@ method _start {} {
set cmd [list git]
lappend cmd merge
lappend cmd --strategy=recursive
- lappend cmd [git fmt-merge-msg <[gitdir FETCH_HEAD]]
+ lappend cmd [git_redir [list fmt-merge-msg] [list <[gitdir FETCH_HEAD]]]
lappend cmd HEAD
lappend cmd $name
}
@@ -239,7 +239,7 @@ Continue with resetting the current changes?"]
}
if {[ask_popup $op_question] eq {yes}} {
- set fd [git_read --stderr read-tree --reset -u -v HEAD]
+ set fd [git_read [list read-tree --reset -u -v HEAD] [list 2>@1]]
fconfigure $fd -blocking 0 -translation binary
set status_bar_operation [$::main_status \
start \
diff --git a/git-gui/lib/mergetool.tcl b/git-gui/lib/mergetool.tcl
index 8b8c16b1d6..2c9bb3af40 100644
--- a/git-gui/lib/mergetool.tcl
+++ b/git-gui/lib/mergetool.tcl
@@ -88,7 +88,7 @@ proc merge_load_stages {path cont} {
set merge_stages(3) {}
set merge_stages_buf {}
- set merge_stages_fd [eval git_read ls-files -u -z -- {$path}]
+ set merge_stages_fd [git_read [list ls-files -u -z -- $path]]
fconfigure $merge_stages_fd -blocking 0 -translation binary -encoding binary
fileevent $merge_stages_fd readable [list read_merge_stages $merge_stages_fd $cont]
@@ -310,7 +310,7 @@ proc merge_tool_get_stages {target stages} {
foreach fname $stages {
if {$merge_stages($i) eq {}} {
file delete $fname
- catch { close [open $fname w] }
+ catch { close [safe_open_file $fname w] }
} else {
# A hack to support autocrlf properly
git checkout-index -f --stage=$i -- $target
@@ -360,9 +360,9 @@ proc merge_tool_start {cmdline target backup stages} {
# Force redirection to avoid interpreting output on stderr
# as an error, and launch the tool
- lappend cmdline {2>@1}
+ set redir [list {2>@1}]
- if {[catch { set mtool_fd [_open_stdout_stderr $cmdline] } err]} {
+ if {[catch { set mtool_fd [safe_open_command $cmdline $redir] } err]} {
delete_temp_files $mtool_tmpfiles
error_popup [mc "Could not start the merge tool:\n\n%s" $err]
return
diff --git a/git-gui/lib/remote.tcl b/git-gui/lib/remote.tcl
index ef77ed7399..cf796d1601 100644
--- a/git-gui/lib/remote.tcl
+++ b/git-gui/lib/remote.tcl
@@ -32,7 +32,7 @@ proc all_tracking_branches {} {
}
if {$pat ne {}} {
- set fd [eval git_read for-each-ref --format=%(refname) $cmd]
+ set fd [git_read [concat for-each-ref --format=%(refname) $cmd]]
while {[gets $fd n] > 0} {
foreach spec $pat {
set dst [string range [lindex $spec 0] 0 end-2]
@@ -75,7 +75,7 @@ proc load_all_remotes {} {
foreach name $all_remotes {
catch {
- set fd [open [file join $rm_dir $name] r]
+ set fd [safe_open_file [file join $rm_dir $name] r]
while {[gets $fd line] >= 0} {
if {[regexp {^URL:[ ]*(.+)$} $line line url]} {
set remote_url($name) $url
@@ -145,7 +145,7 @@ proc add_fetch_entry {r} {
}
} else {
catch {
- set fd [open [gitdir remotes $r] r]
+ set fd [safe_open_file [gitdir remotes $r] r]
while {[gets $fd n] >= 0} {
if {[regexp {^Pull:[ \t]*([^:]+):} $n]} {
set enable 1
@@ -182,7 +182,7 @@ proc add_push_entry {r} {
}
} else {
catch {
- set fd [open [gitdir remotes $r] r]
+ set fd [safe_open_file [gitdir remotes $r] r]
while {[gets $fd n] >= 0} {
if {[regexp {^Push:[ \t]*([^:]+):} $n]} {
set enable 1
diff --git a/git-gui/lib/remote_branch_delete.tcl b/git-gui/lib/remote_branch_delete.tcl
index 5ba9fcadd1..c8c99b17a8 100644
--- a/git-gui/lib/remote_branch_delete.tcl
+++ b/git-gui/lib/remote_branch_delete.tcl
@@ -308,7 +308,7 @@ method _load {cache uri} {
set full_list [list]
set head_cache($cache) [list]
set full_cache($cache) [list]
- set active_ls [git_read ls-remote $uri]
+ set active_ls [git_read [list ls-remote $uri]]
fconfigure $active_ls \
-blocking 0 \
-translation lf \
diff --git a/git-gui/lib/shortcut.tcl b/git-gui/lib/shortcut.tcl
index 674a41f5e0..1d01d9cbfa 100644
--- a/git-gui/lib/shortcut.tcl
+++ b/git-gui/lib/shortcut.tcl
@@ -12,7 +12,7 @@ proc do_windows_shortcut {} {
set fn ${fn}.lnk
}
# Use git-gui.exe if available (ie: git-for-windows)
- set cmdLine [auto_execok git-gui.exe]
+ set cmdLine [list [_which git-gui]]
if {$cmdLine eq {}} {
set cmdLine [list [info nameofexecutable] \
[file normalize $::argv0]]
@@ -30,8 +30,8 @@ proc do_cygwin_shortcut {} {
global argv0 _gitworktree oguilib
if {[catch {
- set desktop [exec cygpath \
- --desktop]
+ set desktop [safe_exec [list cygpath \
+ --desktop]]
}]} {
set desktop .
}
@@ -50,14 +50,14 @@ proc do_cygwin_shortcut {} {
"CHERE_INVOKING=1 \
source /etc/profile; \
git gui"}
- exec /bin/mkshortcut.exe \
+ safe_exec [list /bin/mkshortcut.exe \
--arguments $shargs \
--desc "git-gui on $repodir" \
--icon $oguilib/git-gui.ico \
--name $fn \
--show min \
--workingdir $repodir \
- /bin/sh.exe
+ /bin/sh.exe]
} err]} {
error_popup [strcat [mc "Cannot write shortcut:"] "\n\n$err"]
}
@@ -83,7 +83,7 @@ proc do_macosx_app {} {
file mkdir $MacOS
- set fd [open [file join $Contents Info.plist] w]
+ set fd [safe_open_file [file join $Contents Info.plist] w]
puts $fd {<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
@@ -108,7 +108,7 @@ proc do_macosx_app {} {
</plist>}
close $fd
- set fd [open $exe w]
+ set fd [safe_open_file $exe w]
puts $fd "#!/bin/sh"
foreach name [lsort [array names env]] {
set value $env($name)
diff --git a/git-gui/lib/sshkey.tcl b/git-gui/lib/sshkey.tcl
index 589ff8f78a..c3e681b899 100644
--- a/git-gui/lib/sshkey.tcl
+++ b/git-gui/lib/sshkey.tcl
@@ -7,7 +7,7 @@ proc find_ssh_key {} {
~/.ssh/id_rsa.pub ~/.ssh/identity.pub
} {
if {[file exists $name]} {
- set fh [open $name r]
+ set fh [safe_open_file $name r]
set cont [read $fh]
close $fh
return [list $name $cont]
@@ -83,9 +83,10 @@ proc make_ssh_key {w} {
set sshkey_title [mc "Generating..."]
$w.header.gen configure -state disabled
- set cmdline [list sh -c {echo | ssh-keygen -q -t rsa -f ~/.ssh/id_rsa 2>&1}]
+ set cmdline [list [shellpath] -c \
+ {echo | ssh-keygen -q -t rsa -f ~/.ssh/id_rsa 2>&1}]
- if {[catch { set sshkey_fd [_open_stdout_stderr $cmdline] } err]} {
+ if {[catch { set sshkey_fd [safe_open_command $cmdline] } err]} {
error_popup [mc "Could not start ssh-keygen:\n\n%s" $err]
return
}
diff --git a/git-gui/lib/tools.tcl b/git-gui/lib/tools.tcl
index 413f1a1700..48fddfd814 100644
--- a/git-gui/lib/tools.tcl
+++ b/git-gui/lib/tools.tcl
@@ -110,14 +110,14 @@ proc tools_exec {fullname} {
set cmdline $repo_config(guitool.$fullname.cmd)
if {[is_config_true "guitool.$fullname.noconsole"]} {
- tools_run_silent [list sh -c $cmdline] \
+ tools_run_silent [list [shellpath] -c $cmdline] \
[list tools_complete $fullname {}]
} else {
regsub {/} $fullname { / } title
set w [console::new \
[mc "Tool: %s" $title] \
[mc "Running: %s" $cmdline]]
- console::exec $w [list sh -c $cmdline] \
+ console::exec $w [list [shellpath] -c $cmdline] \
[list tools_complete $fullname $w]
}
@@ -130,8 +130,7 @@ proc tools_exec {fullname} {
}
proc tools_run_silent {cmd after} {
- lappend cmd 2>@1
- set fd [_open_stdout_stderr $cmd]
+ set fd [safe_open_command $cmd [list 2>@1]]
fconfigure $fd -blocking 0 -translation binary
fileevent $fd readable [list tools_consume_input $fd $after]
diff --git a/git-gui/lib/win32.tcl b/git-gui/lib/win32.tcl
index db91ab84a5..3aedae2f13 100644
--- a/git-gui/lib/win32.tcl
+++ b/git-gui/lib/win32.tcl
@@ -2,11 +2,11 @@
# Copyright (C) 2007 Shawn Pearce
proc win32_read_lnk {lnk_path} {
- return [exec cscript.exe \
+ return [safe_exec [list cscript.exe \
/E:jscript \
/nologo \
[file join $::oguilib win32_shortcut.js] \
- $lnk_path]
+ $lnk_path]]
}
proc win32_create_lnk {lnk_path lnk_exec lnk_dir} {
@@ -15,12 +15,13 @@ proc win32_create_lnk {lnk_path lnk_exec lnk_dir} {
set lnk_args [lrange $lnk_exec 1 end]
set lnk_exec [lindex $lnk_exec 0]
- eval [list exec wscript.exe \
+ set cmd [list wscript.exe \
/E:jscript \
/nologo \
[file nativename [file join $oguilib win32_shortcut.js]] \
$lnk_path \
[file nativename [file join $oguilib git-gui.ico]] \
$lnk_dir \
- $lnk_exec] $lnk_args
+ $lnk_exec]
+ safe_exec [concat $cmd $lnk_args]
}
diff --git a/git-send-email.perl b/git-send-email.perl
index 659e6c588b..cb6dca2500 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -1653,8 +1653,18 @@ EOF
default => $ask_default);
die __("Send this email reply required") unless defined $_;
if (/^n/i) {
+ # If we are skipping a message, we should make sure that
+ # the next message is treated as the successor to the
+ # previously sent message, and not the skipped message.
+ $message_num--;
return 0;
} elsif (/^e/i) {
+ # Since the same message will be sent again, we need to
+ # decrement the message number to the previous message.
+ # Otherwise, the edited message will be treated as a
+ # different message sent after the original non-edited
+ # message.
+ $message_num--;
return -1;
} elsif (/^q/i) {
cleanup_compose_files();
@@ -1778,7 +1788,8 @@ EOF
if (is_outlook($smtp_server)) {
if ($smtp->message =~ /<([^>]+)>/) {
$message_id = "<$1>";
- printf __("Outlook reassigned Message-ID to: %s\n"), $message_id;
+ $header =~ s/^(Message-ID:\s*).*\n/${1}$message_id\n/m;
+ printf __("Outlook reassigned Message-ID to: %s\n"), $message_id if $smtp->debug;
} else {
warn __("Warning: Could not retrieve Message-ID from server response.\n");
}
diff --git a/git.c b/git.c
index 77c4359522..07a5fe39fb 100644
--- a/git.c
+++ b/git.c
@@ -462,12 +462,12 @@ static int run_builtin(struct cmd_struct *p, int argc, const char **argv, struct
precompose_argv_prefix(argc, argv, NULL);
if (use_pager == -1 && run_setup &&
!(p->option & DELAY_PAGER_CONFIG))
- use_pager = check_pager_config(the_repository, p->cmd);
+ use_pager = check_pager_config(repo, p->cmd);
if (use_pager == -1 && p->option & USE_PAGER)
use_pager = 1;
if (run_setup && startup_info->have_repository)
/* get_git_dir() may set up repo, avoid that */
- trace_repo_setup(the_repository);
+ trace_repo_setup(repo);
commit_pager_choice();
if (!help && p->option & NEED_WORK_TREE)
@@ -646,7 +646,9 @@ static struct cmd_struct commands[] = {
{ "verify-pack", cmd_verify_pack },
{ "verify-tag", cmd_verify_tag, RUN_SETUP },
{ "version", cmd_version },
+#ifndef WITH_BREAKING_CHANGES
{ "whatchanged", cmd_whatchanged, RUN_SETUP },
+#endif
{ "worktree", cmd_worktree, RUN_SETUP },
{ "write-tree", cmd_write_tree, RUN_SETUP },
};
diff --git a/gitk-git/gitk b/gitk-git/gitk
index 19689765cd..5be8b2aeb0 100755
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -113,6 +113,91 @@ if {[is_Windows]} {
# End of safe PATH lookup stuff
+# Wrap exec/open to sanitize arguments
+
+# unsafe arguments begin with redirections or the pipe or background operators
+proc is_arg_unsafe {arg} {
+ regexp {^([<|>&]|2>)} $arg
+}
+
+proc make_arg_safe {arg} {
+ if {[is_arg_unsafe $arg]} {
+ set arg [file join . $arg]
+ }
+ return $arg
+}
+
+proc make_arglist_safe {arglist} {
+ set res {}
+ foreach arg $arglist {
+ lappend res [make_arg_safe $arg]
+ }
+ return $res
+}
+
+# executes one command
+# no redirections or pipelines are possible
+# cmd is a list that specifies the command and its arguments
+# calls `exec` and returns its value
+proc safe_exec {cmd} {
+ eval exec [make_arglist_safe $cmd]
+}
+
+# executes one command with redirections
+# no pipelines are possible
+# cmd is a list that specifies the command and its arguments
+# redir is a list that specifies redirections (output, background, constant(!) commands)
+# calls `exec` and returns its value
+proc safe_exec_redirect {cmd redir} {
+ eval exec [make_arglist_safe $cmd] $redir
+}
+
+proc safe_open_file {filename flags} {
+ # a file name starting with "|" would attempt to run a process
+ # but such a file name must be treated as a relative path
+ # hide the "|" behind "./"
+ if {[string index $filename 0] eq "|"} {
+ set filename [file join . $filename]
+ }
+ open $filename $flags
+}
+
+# opens a command pipeline for reading
+# cmd is a list that specifies the command and its arguments
+# calls `open` and returns the file id
+proc safe_open_command {cmd} {
+ open |[make_arglist_safe $cmd] r
+}
+
+# opens a command pipeline for reading and writing
+# cmd is a list that specifies the command and its arguments
+# calls `open` and returns the file id
+proc safe_open_command_rw {cmd} {
+ open |[make_arglist_safe $cmd] r+
+}
+
+# opens a command pipeline for reading with redirections
+# cmd is a list that specifies the command and its arguments
+# redir is a list that specifies redirections
+# calls `open` and returns the file id
+proc safe_open_command_redirect {cmd redir} {
+ set cmd [make_arglist_safe $cmd]
+ open |[concat $cmd $redir] r
+}
+
+# opens a pipeline with several commands for reading
+# cmds is a list of lists, each of which specifies a command and its arguments
+# calls `open` and returns the file id
+proc safe_open_pipeline {cmds} {
+ set cmd {}
+ foreach subcmd $cmds {
+ set cmd [concat $cmd | [make_arglist_safe $subcmd]]
+ }
+ open $cmd r
+}
+
+# End exec/open wrappers
+
proc hasworktree {} {
return [expr {[exec git rev-parse --is-bare-repository] == "false" &&
[exec git rev-parse --is-inside-git-dir] == "false"}]
@@ -238,7 +323,7 @@ proc unmerged_files {files} {
set mlist {}
set nr_unmerged 0
if {[catch {
- set fd [open "| git ls-files -u" r]
+ set fd [safe_open_command {git ls-files -u}]
} err]} {
show_error {} . "[mc "Couldn't get list of unmerged files:"] $err"
exit 1
@@ -400,7 +485,7 @@ proc parseviewrevs {view revs} {
} elseif {[lsearch -exact $revs --all] >= 0} {
lappend revs HEAD
}
- if {[catch {set ids [eval exec git rev-parse $revs]} err]} {
+ if {[catch {set ids [safe_exec [concat git rev-parse $revs]]} err]} {
# we get stdout followed by stderr in $err
# for an unknown rev, git rev-parse echoes it and then errors out
set errlines [split $err "\n"]
@@ -457,16 +542,6 @@ proc parseviewrevs {view revs} {
return $ret
}
-# Escapes a list of filter paths to be passed to git log via stdin. Note that
-# paths must not be quoted.
-proc escape_filter_paths {paths} {
- set escaped [list]
- foreach path $paths {
- lappend escaped [string map {\\ \\\\ "\ " "\\\ "} $path]
- }
- return $escaped
-}
-
# Start off a git log process and arrange to read its output
proc start_rev_list {view} {
global startmsecs commitidx viewcomplete curview
@@ -488,7 +563,7 @@ proc start_rev_list {view} {
set args $viewargs($view)
if {$viewargscmd($view) ne {}} {
if {[catch {
- set str [exec sh -c $viewargscmd($view)]
+ set str [safe_exec [list sh -c $viewargscmd($view)]]
} err]} {
error_popup "[mc "Error executing --argscmd command:"] $err"
return 0
@@ -526,10 +601,9 @@ proc start_rev_list {view} {
}
if {[catch {
- set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \
- --parents --boundary $args --stdin \
- "<<[join [concat $revs "--" \
- [escape_filter_paths $files]] "\\n"]"] r]
+ set fd [safe_open_command_redirect [concat git log --no-color -z --pretty=raw $show_notes \
+ --parents --boundary $args --stdin] \
+ [list "<<[join [concat $revs "--" $files] "\n"]"]]
} err]} {
error_popup "[mc "Error executing git log:"] $err"
return 0
@@ -563,9 +637,9 @@ proc stop_instance {inst} {
set pid [pid $fd]
if {$::tcl_platform(platform) eq {windows}} {
- exec taskkill /pid $pid
+ safe_exec [list taskkill /pid $pid]
} else {
- exec kill $pid
+ safe_exec [list kill $pid]
}
}
catch {close $fd}
@@ -680,11 +754,9 @@ proc updatecommits {} {
set args $vorigargs($view)
}
if {[catch {
- set fd [open [concat | git log --no-color -z --pretty=raw $show_notes \
- --parents --boundary $args --stdin \
- "<<[join [concat $revs "--" \
- [escape_filter_paths \
- $vfilelimit($view)]] "\\n"]"] r]
+ set fd [safe_open_command_redirect [concat git log --no-color -z --pretty=raw $show_notes \
+ --parents --boundary $args --stdin] \
+ [list "<<[join [concat $revs "--" $vfilelimit($view)] "\n"]"]]
} err]} {
error_popup "[mc "Error executing git log:"] $err"
return
@@ -1651,8 +1723,8 @@ proc getcommitlines {fd inst view updating} {
# and if we already know about it, using the rewritten
# parent as a substitute parent for $id's children.
if {![catch {
- set rwid [exec git rev-list --first-parent --max-count=1 \
- $id -- $vfilelimit($view)]
+ set rwid [safe_exec [list git rev-list --first-parent --max-count=1 \
+ $id -- $vfilelimit($view)]]
}]} {
if {$rwid ne {} && [info exists varcid($view,$rwid)]} {
# use $rwid in place of $id
@@ -1772,7 +1844,7 @@ proc do_readcommit {id} {
global tclencoding
# Invoke git-log to handle automatic encoding conversion
- set fd [open [concat | git log --no-color --pretty=raw -1 $id] r]
+ set fd [safe_open_command [concat git log --no-color --pretty=raw -1 $id]]
# Read the results using i18n.logoutputencoding
fconfigure $fd -translation lf -eofchar {}
if {$tclencoding != {}} {
@@ -1908,7 +1980,7 @@ proc readrefs {} {
foreach v {tagids idtags headids idheads otherrefids idotherrefs} {
unset -nocomplain $v
}
- set refd [open [list | git show-ref -d] r]
+ set refd [safe_open_command [list git show-ref -d]]
if {$tclencoding != {}} {
fconfigure $refd -encoding $tclencoding
}
@@ -1956,7 +2028,7 @@ proc readrefs {} {
set selectheadid {}
if {$selecthead ne {}} {
catch {
- set selectheadid [exec git rev-parse --verify $selecthead]
+ set selectheadid [safe_exec [list git rev-parse --verify $selecthead]]
}
}
}
@@ -2220,7 +2292,7 @@ proc makewindow {} {
{mc "Reread re&ferences" command rereadrefs}
{mc "&List references" command showrefs -accelerator F2}
{xx "" separator}
- {mc "Start git &gui" command {exec git gui &}}
+ {mc "Start git &gui" command {safe_exec_redirect [list git gui] [list &]}}
{xx "" separator}
{mc "&Quit" command doquit -accelerator Meta1-Q}
}}
@@ -3007,7 +3079,7 @@ proc savestuff {w} {
set remove_tmp 0
if {[catch {
set try_count 0
- while {[catch {set f [open $config_file_tmp {WRONLY CREAT EXCL}]}]} {
+ while {[catch {set f [safe_open_file $config_file_tmp {WRONLY CREAT EXCL}]}]} {
if {[incr try_count] > 50} {
error "Unable to write config file: $config_file_tmp exists"
}
@@ -3723,7 +3795,7 @@ proc gitknewtmpdir {} {
set tmpdir $gitdir
}
set gitktmpformat [file join $tmpdir ".gitk-tmp.XXXXXX"]
- if {[catch {set gitktmpdir [exec mktemp -d $gitktmpformat]}]} {
+ if {[catch {set gitktmpdir [safe_exec [list mktemp -d $gitktmpformat]]}]} {
set gitktmpdir [file join $gitdir [format ".gitk-tmp.%s" [pid]]]
}
if {[catch {file mkdir $gitktmpdir} err]} {
@@ -3745,7 +3817,7 @@ proc gitknewtmpdir {} {
proc save_file_from_commit {filename output what} {
global nullfile
- if {[catch {exec git show $filename -- > $output} err]} {
+ if {[catch {safe_exec_redirect [list git show $filename --] [list > $output]} err]} {
if {[string match "fatal: bad revision *" $err]} {
return $nullfile
}
@@ -3810,7 +3882,7 @@ proc external_diff {} {
if {$difffromfile ne {} && $difftofile ne {}} {
set cmd [list [shellsplit $extdifftool] $difffromfile $difftofile]
- if {[catch {set fl [open |$cmd r]} err]} {
+ if {[catch {set fl [safe_open_command $cmd]} err]} {
file delete -force $diffdir
error_popup "$extdifftool: [mc "command failed:"] $err"
} else {
@@ -3914,7 +3986,7 @@ proc external_blame_diff {} {
# Find the SHA1 ID of the blob for file $fname in the index
# at stage 0 or 2
proc index_sha1 {fname} {
- set f [open [list | git ls-files -s $fname] r]
+ set f [safe_open_command [list git ls-files -s $fname]]
while {[gets $f line] >= 0} {
set info [lindex [split $line "\t"] 0]
set stage [lindex $info 2]
@@ -3974,7 +4046,7 @@ proc external_blame {parent_idx {line {}}} {
# being given an absolute path...
set f [make_relative $f]
lappend cmdline $base_commit $f
- if {[catch {eval exec $cmdline &} err]} {
+ if {[catch {safe_exec_redirect $cmdline [list &]} err]} {
error_popup "[mc "git gui blame: command failed:"] $err"
}
}
@@ -4002,7 +4074,7 @@ proc show_line_source {} {
# must be a merge in progress...
if {[catch {
# get the last line from .git/MERGE_HEAD
- set f [open [file join $gitdir MERGE_HEAD] r]
+ set f [safe_open_file [file join $gitdir MERGE_HEAD] r]
set id [lindex [split [read $f] "\n"] end-1]
close $f
} err]} {
@@ -4025,19 +4097,17 @@ proc show_line_source {} {
}
set line [lindex $h 1]
}
- set blameargs {}
- if {$from_index ne {}} {
- lappend blameargs | git cat-file blob $from_index
- }
- lappend blameargs | git blame -p -L$line,+1
+ set blamefile [file join $cdup $flist_menu_file]
if {$from_index ne {}} {
- lappend blameargs --contents -
+ set blameargs [list \
+ [list git cat-file blob $from_index] \
+ [list git blame -p -L$line,+1 --contents - -- $blamefile]]
} else {
- lappend blameargs $id
+ set blameargs [list \
+ [list git blame -p -L$line,+1 $id -- $blamefile]]
}
- lappend blameargs -- [file join $cdup $flist_menu_file]
if {[catch {
- set f [open $blameargs r]
+ set f [safe_open_pipeline $blameargs]
} err]} {
error_popup [mc "Couldn't start git blame: %s" $err]
return
@@ -4962,8 +5032,8 @@ proc do_file_hl {serial} {
# must be "containing:", i.e. we're searching commit info
return
}
- set cmd [concat | git diff-tree -r -s --stdin $gdtargs]
- set filehighlight [open $cmd r+]
+ set cmd [concat git diff-tree -r -s --stdin $gdtargs]
+ set filehighlight [safe_open_command_rw $cmd]
fconfigure $filehighlight -blocking 0
filerun $filehighlight readfhighlight
set fhl_list {}
@@ -5392,8 +5462,8 @@ proc get_viewmainhead {view} {
global viewmainheadid vfilelimit viewinstances mainheadid
catch {
- set rfd [open [concat | git rev-list -1 $mainheadid \
- -- $vfilelimit($view)] r]
+ set rfd [safe_open_command [concat git rev-list -1 $mainheadid \
+ -- $vfilelimit($view)]]
set j [reg_instance $rfd]
lappend viewinstances($view) $j
fconfigure $rfd -blocking 0
@@ -5458,14 +5528,14 @@ proc dodiffindex {} {
if {!$showlocalchanges || !$hasworktree} return
incr lserial
if {[package vcompare $git_version "1.7.2"] >= 0} {
- set cmd "|git diff-index --cached --ignore-submodules=dirty HEAD"
+ set cmd "git diff-index --cached --ignore-submodules=dirty HEAD"
} else {
- set cmd "|git diff-index --cached HEAD"
+ set cmd "git diff-index --cached HEAD"
}
if {$vfilelimit($curview) ne {}} {
set cmd [concat $cmd -- $vfilelimit($curview)]
}
- set fd [open $cmd r]
+ set fd [safe_open_command $cmd]
fconfigure $fd -blocking 0
set i [reg_instance $fd]
filerun $fd [list readdiffindex $fd $lserial $i]
@@ -5490,11 +5560,11 @@ proc readdiffindex {fd serial inst} {
}
# now see if there are any local changes not checked in to the index
- set cmd "|git diff-files"
+ set cmd "git diff-files"
if {$vfilelimit($curview) ne {}} {
set cmd [concat $cmd -- $vfilelimit($curview)]
}
- set fd [open $cmd r]
+ set fd [safe_open_command $cmd]
fconfigure $fd -blocking 0
set i [reg_instance $fd]
filerun $fd [list readdifffiles $fd $serial $i]
@@ -7283,8 +7353,8 @@ proc browseweb {url} {
global web_browser
if {$web_browser eq {}} return
- # Use eval here in case $web_browser is a command plus some arguments
- if {[catch {eval exec $web_browser [list $url] &} err]} {
+ # Use concat here in case $web_browser is a command plus some arguments
+ if {[catch {safe_exec_redirect [concat $web_browser [list $url]] [list &]} err]} {
error_popup "[mc "Error starting web browser:"] $err"
}
}
@@ -7790,13 +7860,13 @@ proc gettree {id} {
if {![info exists treefilelist($id)]} {
if {![info exists treepending]} {
if {$id eq $nullid} {
- set cmd [list | git ls-files]
+ set cmd [list git ls-files]
} elseif {$id eq $nullid2} {
- set cmd [list | git ls-files --stage -t]
+ set cmd [list git ls-files --stage -t]
} else {
- set cmd [list | git ls-tree -r $id]
+ set cmd [list git ls-tree -r $id]
}
- if {[catch {set gtf [open $cmd r]}]} {
+ if {[catch {set gtf [safe_open_command $cmd]}]} {
return
}
set treepending $id
@@ -7860,13 +7930,13 @@ proc showfile {f} {
return
}
if {$diffids eq $nullid} {
- if {[catch {set bf [open $f r]} err]} {
+ if {[catch {set bf [safe_open_file $f r]} err]} {
puts "oops, can't read $f: $err"
return
}
} else {
set blob [lindex $treeidlist($diffids) $i]
- if {[catch {set bf [open [concat | git cat-file blob $blob] r]} err]} {
+ if {[catch {set bf [safe_open_command [concat git cat-file blob $blob]]} err]} {
puts "oops, error reading blob $blob: $err"
return
}
@@ -8016,7 +8086,7 @@ proc diffcmd {ids flags} {
if {$i >= 0} {
if {[llength $ids] > 1 && $j < 0} {
# comparing working directory with some specific revision
- set cmd [concat | git diff-index $flags]
+ set cmd [concat git diff-index $flags]
if {$i == 0} {
lappend cmd -R [lindex $ids 1]
} else {
@@ -8024,7 +8094,7 @@ proc diffcmd {ids flags} {
}
} else {
# comparing working directory with index
- set cmd [concat | git diff-files $flags]
+ set cmd [concat git diff-files $flags]
if {$j == 1} {
lappend cmd -R
}
@@ -8033,7 +8103,7 @@ proc diffcmd {ids flags} {
if {[package vcompare $git_version "1.7.2"] >= 0} {
set flags "$flags --ignore-submodules=dirty"
}
- set cmd [concat | git diff-index --cached $flags]
+ set cmd [concat git diff-index --cached $flags]
if {[llength $ids] > 1} {
# comparing index with specific revision
if {$j == 0} {
@@ -8049,7 +8119,7 @@ proc diffcmd {ids flags} {
if {$log_showroot} {
lappend flags --root
}
- set cmd [concat | git diff-tree -r $flags $ids]
+ set cmd [concat git diff-tree -r $flags $ids]
}
return $cmd
}
@@ -8061,7 +8131,7 @@ proc gettreediffs {ids} {
if {$limitdiffs && $vfilelimit($curview) ne {}} {
set cmd [concat $cmd -- $vfilelimit($curview)]
}
- if {[catch {set gdtf [open $cmd r]}]} return
+ if {[catch {set gdtf [safe_open_command $cmd]}]} return
set treepending $ids
set treediff {}
@@ -8181,7 +8251,7 @@ proc getblobdiffs {ids} {
if {$limitdiffs && $vfilelimit($curview) ne {}} {
set cmd [concat $cmd -- $vfilelimit($curview)]
}
- if {[catch {set bdf [open $cmd r]} err]} {
+ if {[catch {set bdf [safe_open_command $cmd]} err]} {
error_popup [mc "Error getting diffs: %s" $err]
return
}
@@ -8899,7 +8969,7 @@ proc gotocommit {} {
set id [lindex $matches 0]
}
} else {
- if {[catch {set id [exec git rev-parse --verify $sha1string]}]} {
+ if {[catch {set id [safe_exec [list git rev-parse --verify $sha1string]]}]} {
error_popup [mc "Revision %s is not known" $sha1string]
return
}
@@ -9205,10 +9275,8 @@ proc getpatchid {id} {
if {![info exists patchids($id)]} {
set cmd [diffcmd [list $id] {-p --root}]
- # trim off the initial "|"
- set cmd [lrange $cmd 1 end]
if {[catch {
- set x [eval exec $cmd | git patch-id]
+ set x [safe_exec_redirect $cmd [list | git patch-id]]
set patchids($id) [lindex $x 0]
}]} {
set patchids($id) "error"
@@ -9304,14 +9372,14 @@ proc diffcommits {a b} {
set fna [file join $tmpdir "commit-[string range $a 0 7]"]
set fnb [file join $tmpdir "commit-[string range $b 0 7]"]
if {[catch {
- exec git diff-tree -p --pretty $a >$fna
- exec git diff-tree -p --pretty $b >$fnb
+ safe_exec_redirect [list git diff-tree -p --pretty $a] [list >$fna]
+ safe_exec_redirect [list git diff-tree -p --pretty $b] [list >$fnb]
} err]} {
error_popup [mc "Error writing commit to file: %s" $err]
return
}
if {[catch {
- set fd [open "| diff -U$diffcontext $fna $fnb" r]
+ set fd [safe_open_command "diff -U$diffcontext $fna $fnb"]
} err]} {
error_popup [mc "Error diffing commits: %s" $err]
return
@@ -9451,10 +9519,7 @@ proc mkpatchgo {} {
set newid [$patchtop.tosha1 get]
set fname [$patchtop.fname get]
set cmd [diffcmd [list $oldid $newid] -p]
- # trim off the initial "|"
- set cmd [lrange $cmd 1 end]
- lappend cmd >$fname &
- if {[catch {eval exec $cmd} err]} {
+ if {[catch {safe_exec_redirect $cmd [list >$fname &]} err]} {
error_popup "[mc "Error creating patch:"] $err" $patchtop
}
catch {destroy $patchtop}
@@ -9523,9 +9588,9 @@ proc domktag {} {
}
if {[catch {
if {$msg != {}} {
- exec git tag -a -m $msg $tag $id
+ safe_exec [list git tag -a -m $msg $tag $id]
} else {
- exec git tag $tag $id
+ safe_exec [list git tag $tag $id]
}
} err]} {
error_popup "[mc "Error creating tag:"] $err" $mktagtop
@@ -9593,7 +9658,7 @@ proc copyreference {} {
if {$autosellen < 40} {
lappend cmd --abbrev=$autosellen
}
- set reference [eval exec $cmd $rowmenuid]
+ set reference [safe_exec [concat $cmd $rowmenuid]]
clipboard clear
clipboard append $reference
@@ -9643,7 +9708,7 @@ proc wrcomgo {} {
set id [$wrcomtop.sha1 get]
set cmd "echo $id | [$wrcomtop.cmd get]"
set fname [$wrcomtop.fname get]
- if {[catch {exec sh -c $cmd >$fname &} err]} {
+ if {[catch {safe_exec_redirect [list sh -c $cmd] [list >$fname &]} err]} {
error_popup "[mc "Error writing commit:"] $err" $wrcomtop
}
catch {destroy $wrcomtop}
@@ -9747,7 +9812,7 @@ proc mkbrgo {top} {
nowbusy newbranch
update
if {[catch {
- eval exec git branch $cmdargs
+ safe_exec [concat git branch $cmdargs]
} err]} {
notbusy newbranch
error_popup $err
@@ -9788,7 +9853,7 @@ proc mvbrgo {top prevname} {
nowbusy renamebranch
update
if {[catch {
- eval exec git branch $cmdargs
+ safe_exec [concat git branch $cmdargs]
} err]} {
notbusy renamebranch
error_popup $err
@@ -9829,7 +9894,7 @@ proc exec_citool {tool_args {baseid {}}} {
}
}
- eval exec git citool $tool_args &
+ safe_exec_redirect [concat git citool $tool_args] [list &]
array unset env GIT_AUTHOR_*
array set env $save_env
@@ -9852,7 +9917,7 @@ proc cherrypick {} {
update
# Unfortunately git-cherry-pick writes stuff to stderr even when
# no error occurs, and exec takes that as an indication of error...
- if {[catch {exec sh -c "git cherry-pick -r $rowmenuid 2>&1"} err]} {
+ if {[catch {safe_exec [list sh -c "git cherry-pick -r $rowmenuid 2>&1"]} err]} {
notbusy cherrypick
if {[regexp -line \
{Entry '(.*)' (would be overwritten by merge|not uptodate)} \
@@ -9914,7 +9979,7 @@ proc revert {} {
nowbusy revert [mc "Reverting"]
update
- if [catch {exec git revert --no-edit $rowmenuid} err] {
+ if [catch {safe_exec [list git revert --no-edit $rowmenuid]} err] {
notbusy revert
if [regexp {files would be overwritten by merge:(\n(( |\t)+[^\n]+\n)+)}\
$err match files] {
@@ -9990,8 +10055,8 @@ proc resethead {} {
bind $w <Visibility> "grab $w; focus $w"
tkwait window $w
if {!$confirm_ok} return
- if {[catch {set fd [open \
- [list | git reset --$resettype $rowmenuid 2>@1] r]} err]} {
+ if {[catch {set fd [safe_open_command_redirect \
+ [list git reset --$resettype $rowmenuid] [list 2>@1]]} err]} {
error_popup $err
} else {
dohidelocalchanges
@@ -10062,7 +10127,7 @@ proc cobranch {} {
# check the tree is clean first??
set newhead $headmenuhead
- set command [list | git checkout]
+ set command [list git checkout]
if {[string match "remotes/*" $newhead]} {
set remote $newhead
set newhead [string range $newhead [expr [string last / $newhead] + 1] end]
@@ -10076,12 +10141,11 @@ proc cobranch {} {
} else {
lappend command $newhead
}
- lappend command 2>@1
nowbusy checkout [mc "Checking out"]
update
dohidelocalchanges
if {[catch {
- set fd [open $command r]
+ set fd [safe_open_command_redirect $command [list 2>@1]]
} err]} {
notbusy checkout
error_popup $err
@@ -10147,7 +10211,7 @@ proc rmbranch {} {
}
nowbusy rmbranch
update
- if {[catch {exec git branch -D $head} err]} {
+ if {[catch {safe_exec [list git branch -D $head]} err]} {
notbusy rmbranch
error_popup $err
return
@@ -10338,7 +10402,7 @@ proc getallcommits {} {
set cachedarcs 0
set allccache [file join $gitdir "gitk.cache"]
if {![catch {
- set f [open $allccache r]
+ set f [safe_open_file $allccache r]
set allcwait 1
getcache $f
}]} return
@@ -10347,7 +10411,7 @@ proc getallcommits {} {
if {$allcwait} {
return
}
- set cmd [list | git rev-list --parents]
+ set cmd [list git rev-list --parents]
set allcupdate [expr {$seeds ne {}}]
if {!$allcupdate} {
set ids "--all"
@@ -10375,10 +10439,11 @@ proc getallcommits {} {
if {$ids ne {}} {
if {$ids eq "--all"} {
set cmd [concat $cmd "--all"]
+ set fd [safe_open_command $cmd]
} else {
- set cmd [concat $cmd --stdin "<<[join $ids "\\n"]"]
+ set cmd [concat $cmd --stdin]
+ set fd [safe_open_command_redirect $cmd [list "<<[join $ids "\n"]"]]
}
- set fd [open $cmd r]
fconfigure $fd -blocking 0
incr allcommits
nowbusy allcommits
@@ -10768,7 +10833,7 @@ proc savecache {} {
set cachearc 0
set cachedarcs $nextarc
catch {
- set f [open $allccache w]
+ set f [safe_open_file $allccache w]
puts $f [list 1 $cachedarcs]
run writecache $f
}
@@ -11471,7 +11536,7 @@ proc add_tag_ctext {tag} {
if {![info exists cached_tagcontent($tag)]} {
catch {
- set cached_tagcontent($tag) [exec git cat-file -p $tag]
+ set cached_tagcontent($tag) [safe_exec [list git cat-file -p $tag]]
}
}
$ctext insert end "[mc "Tag"]: $tag\n" bold
@@ -12382,7 +12447,7 @@ proc gitattr {path attr default} {
set r $path_attr_cache($attr,$path)
} else {
set r "unspecified"
- if {![catch {set line [exec git check-attr $attr -- $path]}]} {
+ if {![catch {set line [safe_exec [list git check-attr $attr -- $path]]}]} {
regexp "(.*): $attr: (.*)" $line m f r
}
set path_attr_cache($attr,$path) $r
@@ -12409,7 +12474,7 @@ proc cache_gitattr {attr pathlist} {
while {$newlist ne {}} {
set head [lrange $newlist 0 [expr {$lim - 1}]]
set newlist [lrange $newlist $lim end]
- if {![catch {set rlist [eval exec git check-attr $attr -- $head]}]} {
+ if {![catch {set rlist [safe_exec [concat git check-attr $attr -- $head]]}]} {
foreach row [split $rlist "\n"] {
if {[regexp "(.*): $attr: (.*)" $row m path value]} {
if {[string index $path 0] eq "\""} {
@@ -12461,11 +12526,11 @@ if {[catch {package require Tk 8.4} err]} {
# on OSX bring the current Wish process window to front
if {[tk windowingsystem] eq "aqua"} {
- exec osascript -e [format {
+ safe_exec [list osascript -e [format {
tell application "System Events"
set frontmost of processes whose unix id is %d to true
end tell
- } [pid] ]
+ } [pid] ]]
}
# Unset GIT_TRACE var if set
@@ -12713,7 +12778,7 @@ if {$selecthead eq "HEAD"} {
if {$i >= [llength $argv] && $revtreeargs ne {}} {
# no -- on command line, but some arguments (other than --argscmd)
if {[catch {
- set f [eval exec git rev-parse --no-revs --no-flags $revtreeargs]
+ set f [safe_exec [concat git rev-parse --no-revs --no-flags $revtreeargs]]
set cmdline_files [split $f "\n"]
set n [llength $cmdline_files]
set revtreeargs [lrange $revtreeargs 0 end-$n]
diff --git a/hash.h b/hash.h
index d6422ddf45..ec594c63a6 100644
--- a/hash.h
+++ b/hash.h
@@ -216,6 +216,7 @@ struct object_id {
#define GET_OID_REQUIRE_PATH 010000
#define GET_OID_HASH_ANY 020000
#define GET_OID_SKIP_AMBIGUITY_CHECK 040000
+#define GET_OID_GENTLY 0100000
#define GET_OID_DISAMBIGUATORS \
(GET_OID_COMMIT | GET_OID_COMMITTISH | \
diff --git a/http-push.c b/http-push.c
index f9e67cabd4..f5a92529a8 100644
--- a/http-push.c
+++ b/http-push.c
@@ -195,7 +195,7 @@ static char *xml_entities(const char *s)
static void curl_setup_http_get(CURL *curl, const char *url,
const char *custom_req)
{
- curl_easy_setopt(curl, CURLOPT_HTTPGET, 1);
+ curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, custom_req);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite_null);
@@ -205,7 +205,7 @@ static void curl_setup_http(CURL *curl, const char *url,
const char *custom_req, struct buffer *buffer,
curl_write_callback write_fn)
{
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
+ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_INFILE, buffer);
curl_easy_setopt(curl, CURLOPT_INFILESIZE, buffer->buf.len);
@@ -213,9 +213,9 @@ static void curl_setup_http(CURL *curl, const char *url,
curl_easy_setopt(curl, CURLOPT_SEEKFUNCTION, seek_buffer);
curl_easy_setopt(curl, CURLOPT_SEEKDATA, buffer);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_fn);
- curl_easy_setopt(curl, CURLOPT_NOBODY, 0);
+ curl_easy_setopt(curl, CURLOPT_NOBODY, 0L);
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, custom_req);
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1);
+ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
}
static struct curl_slist *get_dav_token_headers(struct remote_lock *lock, enum dav_header_flag options)
diff --git a/http.c b/http.c
index 3c029cf894..d88e79fbde 100644
--- a/http.c
+++ b/http.c
@@ -1019,13 +1019,13 @@ static CURL *get_curl_handle(void)
die("curl_easy_init failed");
if (!curl_ssl_verify) {
- curl_easy_setopt(result, CURLOPT_SSL_VERIFYPEER, 0);
- curl_easy_setopt(result, CURLOPT_SSL_VERIFYHOST, 0);
+ curl_easy_setopt(result, CURLOPT_SSL_VERIFYPEER, 0L);
+ curl_easy_setopt(result, CURLOPT_SSL_VERIFYHOST, 0L);
} else {
/* Verify authenticity of the peer's certificate */
- curl_easy_setopt(result, CURLOPT_SSL_VERIFYPEER, 1);
+ curl_easy_setopt(result, CURLOPT_SSL_VERIFYPEER, 1L);
/* The name in the cert must match whom we tried to connect */
- curl_easy_setopt(result, CURLOPT_SSL_VERIFYHOST, 2);
+ curl_easy_setopt(result, CURLOPT_SSL_VERIFYHOST, 2L);
}
if (curl_http_version) {
@@ -1057,7 +1057,7 @@ static CURL *get_curl_handle(void)
if (http_ssl_backend && !strcmp("schannel", http_ssl_backend) &&
!http_schannel_check_revoke) {
- curl_easy_setopt(result, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NO_REVOKE);
+ curl_easy_setopt(result, CURLOPT_SSL_OPTIONS, (long)CURLSSLOPT_NO_REVOKE);
}
if (http_proactive_auth != PROACTIVE_AUTH_NONE)
@@ -1117,8 +1117,8 @@ static CURL *get_curl_handle(void)
curl_low_speed_time);
}
- curl_easy_setopt(result, CURLOPT_MAXREDIRS, 20);
- curl_easy_setopt(result, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
+ curl_easy_setopt(result, CURLOPT_MAXREDIRS, 20L);
+ curl_easy_setopt(result, CURLOPT_POSTREDIR, (long)CURL_REDIR_POST_ALL);
#ifdef GIT_CURL_HAVE_CURLOPT_PROTOCOLS_STR
{
@@ -1151,7 +1151,7 @@ static CURL *get_curl_handle(void)
user_agent ? user_agent : git_user_agent());
if (curl_ftp_no_epsv)
- curl_easy_setopt(result, CURLOPT_FTP_USE_EPSV, 0);
+ curl_easy_setopt(result, CURLOPT_FTP_USE_EPSV, 0L);
if (curl_ssl_try)
curl_easy_setopt(result, CURLOPT_USE_SSL, CURLUSESSL_TRY);
@@ -1193,18 +1193,18 @@ static CURL *get_curl_handle(void)
if (starts_with(curl_http_proxy, "socks5h"))
curl_easy_setopt(result,
- CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
+ CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS5_HOSTNAME);
else if (starts_with(curl_http_proxy, "socks5"))
curl_easy_setopt(result,
- CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
+ CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS5);
else if (starts_with(curl_http_proxy, "socks4a"))
curl_easy_setopt(result,
- CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4A);
+ CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS4A);
else if (starts_with(curl_http_proxy, "socks"))
curl_easy_setopt(result,
- CURLOPT_PROXYTYPE, CURLPROXY_SOCKS4);
+ CURLOPT_PROXYTYPE, (long)CURLPROXY_SOCKS4);
else if (starts_with(curl_http_proxy, "https")) {
- curl_easy_setopt(result, CURLOPT_PROXYTYPE, CURLPROXY_HTTPS);
+ curl_easy_setopt(result, CURLOPT_PROXYTYPE, (long)CURLPROXY_HTTPS);
if (http_proxy_ssl_cert)
curl_easy_setopt(result, CURLOPT_PROXY_SSLCERT, http_proxy_ssl_cert);
@@ -1254,7 +1254,7 @@ static CURL *get_curl_handle(void)
}
init_curl_proxy_auth(result);
- curl_easy_setopt(result, CURLOPT_TCP_KEEPALIVE, 1);
+ curl_easy_setopt(result, CURLOPT_TCP_KEEPALIVE, 1L);
if (curl_tcp_keepidle > -1)
curl_easy_setopt(result, CURLOPT_TCP_KEEPIDLE,
@@ -1540,9 +1540,9 @@ struct active_request_slot *get_active_slot(void)
curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, NULL);
curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDS, NULL);
curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDSIZE, -1L);
- curl_easy_setopt(slot->curl, CURLOPT_UPLOAD, 0);
- curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1);
- curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 1);
+ curl_easy_setopt(slot->curl, CURLOPT_UPLOAD, 0L);
+ curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1L);
+ curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 1L);
curl_easy_setopt(slot->curl, CURLOPT_RANGE, NULL);
/*
@@ -1551,9 +1551,9 @@ struct active_request_slot *get_active_slot(void)
* HTTP_FOLLOW_* cases themselves.
*/
if (http_follow_config == HTTP_FOLLOW_ALWAYS)
- curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1);
+ curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1L);
else
- curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 0);
+ curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 0L);
curl_easy_setopt(slot->curl, CURLOPT_IPRESOLVE, git_curl_ipresolve);
curl_easy_setopt(slot->curl, CURLOPT_HTTPAUTH, http_auth_methods);
@@ -2120,12 +2120,12 @@ static int http_request(const char *url,
int ret;
slot = get_active_slot();
- curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1);
+ curl_easy_setopt(slot->curl, CURLOPT_HTTPGET, 1L);
if (!result) {
- curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 1);
+ curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 1L);
} else {
- curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
+ curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0L);
curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, result);
if (target == HTTP_REQUEST_FILE) {
@@ -2151,7 +2151,7 @@ static int http_request(const char *url,
strbuf_addstr(&buf, " no-cache");
if (options && options->initial_request &&
http_follow_config == HTTP_FOLLOW_INITIAL)
- curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1);
+ curl_easy_setopt(slot->curl, CURLOPT_FOLLOWLOCATION, 1L);
headers = curl_slist_append(headers, buf.buf);
@@ -2170,7 +2170,7 @@ static int http_request(const char *url,
curl_easy_setopt(slot->curl, CURLOPT_URL, url);
curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");
- curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0);
+ curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0L);
ret = run_one_slot(slot, &results);
@@ -2750,7 +2750,7 @@ struct http_object_request *new_http_object_request(const char *base_url,
freq->headers = object_request_headers();
curl_easy_setopt(freq->slot->curl, CURLOPT_WRITEDATA, freq);
- curl_easy_setopt(freq->slot->curl, CURLOPT_FAILONERROR, 0);
+ curl_easy_setopt(freq->slot->curl, CURLOPT_FAILONERROR, 0L);
curl_easy_setopt(freq->slot->curl, CURLOPT_WRITEFUNCTION, fwrite_sha1_file);
curl_easy_setopt(freq->slot->curl, CURLOPT_ERRORBUFFER, freq->errorstr);
curl_easy_setopt(freq->slot->curl, CURLOPT_URL, freq->url);
diff --git a/ident.c b/ident.c
index 967895d885..281e830573 100644
--- a/ident.c
+++ b/ident.c
@@ -412,6 +412,10 @@ void apply_mailmap_to_header(struct strbuf *buf, const char **header,
found_header = 1;
buf_offset += endp - line;
buf_offset += rewrite_ident_line(person, endp - person, buf, mailmap);
+ /* Recompute endp after potential buffer reallocation */
+ endp = buf->buf + buf_offset;
+ if (*endp == '\n')
+ buf_offset++;
break;
}
diff --git a/imap-send.c b/imap-send.c
index 27dc033c7f..f5a656ac71 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -25,6 +25,7 @@
#define DISABLE_SIGN_COMPARE_WARNINGS
#include "git-compat-util.h"
+#include "advice.h"
#include "config.h"
#include "credential.h"
#include "gettext.h"
@@ -45,13 +46,21 @@
#endif
static int verbosity;
+static int list_folders;
static int use_curl = USE_CURL_DEFAULT;
+static char *opt_folder;
-static const char * const imap_send_usage[] = { "git imap-send [-v] [-q] [--[no-]curl] < <mbox>", NULL };
+static char const * const imap_send_usage[] = {
+ N_("git imap-send [-v] [-q] [--[no-]curl] [(--folder|-f) <folder>] < <mbox>"),
+ "git imap-send --list",
+ NULL
+};
static struct option imap_send_options[] = {
OPT__VERBOSITY(&verbosity),
OPT_BOOL(0, "curl", &use_curl, "use libcurl to communicate with the IMAP server"),
+ OPT_STRING('f', "folder", &opt_folder, "folder", "specify the IMAP folder"),
+ OPT_BOOL(0, "list", &list_folders, "list all folders on the IMAP server"),
OPT_END()
};
@@ -139,7 +148,10 @@ enum CAPABILITY {
LITERALPLUS,
NAMESPACE,
STARTTLS,
- AUTH_CRAM_MD5
+ AUTH_PLAIN,
+ AUTH_CRAM_MD5,
+ AUTH_OAUTHBEARER,
+ AUTH_XOAUTH2,
};
static const char *cap_list[] = {
@@ -148,7 +160,10 @@ static const char *cap_list[] = {
"LITERAL+",
"NAMESPACE",
"STARTTLS",
+ "AUTH=PLAIN",
"AUTH=CRAM-MD5",
+ "AUTH=OAUTHBEARER",
+ "AUTH=XOAUTH2",
};
#define RESP_OK 0
@@ -197,7 +212,7 @@ static int ssl_socket_connect(struct imap_socket *sock UNUSED,
const struct imap_server_conf *cfg UNUSED,
int use_tls_only UNUSED)
{
- fprintf(stderr, "SSL requested but SSL support not compiled in\n");
+ fprintf(stderr, "SSL requested, but SSL support is not compiled in\n");
return -1;
}
@@ -421,7 +436,7 @@ static int buffer_gets(struct imap_buffer *b, char **s)
if (b->buf[b->offset + 1] == '\n') {
b->buf[b->offset] = 0; /* terminate the string */
b->offset += 2; /* next line */
- if (0 < verbosity)
+ if ((0 < verbosity) || (list_folders && strstr(*s, "* LIST")))
puts(*s);
return 0;
}
@@ -847,6 +862,38 @@ static char hexchar(unsigned int b)
}
#define ENCODED_SIZE(n) (4 * DIV_ROUND_UP((n), 3))
+static char *plain_base64(const char *user, const char *pass)
+{
+ struct strbuf raw = STRBUF_INIT;
+ int b64_len;
+ char *b64;
+
+ /*
+ * Compose the PLAIN string
+ *
+ * The username and password are combined to one string and base64 encoded.
+ * "\0user\0pass"
+ *
+ * The method has been described in RFC4616.
+ *
+ * https://datatracker.ietf.org/doc/html/rfc4616
+ */
+ strbuf_addch(&raw, '\0');
+ strbuf_addstr(&raw, user);
+ strbuf_addch(&raw, '\0');
+ strbuf_addstr(&raw, pass);
+
+ b64 = xmallocz(ENCODED_SIZE(raw.len));
+ b64_len = EVP_EncodeBlock((unsigned char *)b64, (unsigned char *)raw.buf, raw.len);
+ strbuf_release(&raw);
+
+ if (b64_len < 0) {
+ free(b64);
+ return NULL;
+ }
+ return b64;
+}
+
static char *cram(const char *challenge_64, const char *user, const char *pass)
{
int i, resp_len, encoded_len, decoded_len;
@@ -885,17 +932,83 @@ static char *cram(const char *challenge_64, const char *user, const char *pass)
return (char *)response_64;
}
-#else
+static char *oauthbearer_base64(const char *user, const char *access_token)
+{
+ int b64_len;
+ char *raw, *b64;
-static char *cram(const char *challenge_64 UNUSED,
- const char *user UNUSED,
- const char *pass UNUSED)
+ /*
+ * Compose the OAUTHBEARER string
+ *
+ * "n,a=" {User} ",^Ahost=" {Host} "^Aport=" {Port} "^Aauth=Bearer " {Access Token} "^A^A
+ *
+ * The first part `n,a=" {User} ",` is the gs2 header described in RFC5801.
+ * * gs2-cb-flag `n` -> client does not support CB
+ * * gs2-authzid `a=" {User} "`
+ *
+ * The second part are key value pairs containing host, port and auth as
+ * described in RFC7628.
+ *
+ * https://datatracker.ietf.org/doc/html/rfc5801
+ * https://datatracker.ietf.org/doc/html/rfc7628
+ */
+ raw = xstrfmt("n,a=%s,\001auth=Bearer %s\001\001", user, access_token);
+
+ /* Base64 encode */
+ b64 = xmallocz(ENCODED_SIZE(strlen(raw)));
+ b64_len = EVP_EncodeBlock((unsigned char *)b64, (unsigned char *)raw, strlen(raw));
+ free(raw);
+
+ if (b64_len < 0) {
+ free(b64);
+ return NULL;
+ }
+ return b64;
+}
+
+static char *xoauth2_base64(const char *user, const char *access_token)
{
- die("If you want to use CRAM-MD5 authenticate method, "
- "you have to build git-imap-send with OpenSSL library.");
+ int b64_len;
+ char *raw, *b64;
+
+ /*
+ * Compose the XOAUTH2 string
+ * "user=" {User} "^Aauth=Bearer " {Access Token} "^A^A"
+ * https://developers.google.com/workspace/gmail/imap/xoauth2-protocol#initial_client_response
+ */
+ raw = xstrfmt("user=%s\001auth=Bearer %s\001\001", user, access_token);
+
+ /* Base64 encode */
+ b64 = xmallocz(ENCODED_SIZE(strlen(raw)));
+ b64_len = EVP_EncodeBlock((unsigned char *)b64, (unsigned char *)raw, strlen(raw));
+ free(raw);
+
+ if (b64_len < 0) {
+ free(b64);
+ return NULL;
+ }
+ return b64;
}
-#endif
+static int auth_plain(struct imap_store *ctx, const char *prompt UNUSED)
+{
+ int ret;
+ char *b64;
+
+ b64 = plain_base64(ctx->cfg->user, ctx->cfg->pass);
+ if (!b64)
+ return error("PLAIN: base64 encoding failed");
+
+ /* Send the base64-encoded response */
+ ret = socket_write(&ctx->imap->buf.sock, b64, strlen(b64));
+ if (ret != (int)strlen(b64)) {
+ free(b64);
+ return error("IMAP error: sending PLAIN response failed");
+ }
+
+ free(b64);
+ return 0;
+}
static int auth_cram_md5(struct imap_store *ctx, const char *prompt)
{
@@ -905,21 +1018,72 @@ static int auth_cram_md5(struct imap_store *ctx, const char *prompt)
response = cram(prompt, ctx->cfg->user, ctx->cfg->pass);
ret = socket_write(&ctx->imap->buf.sock, response, strlen(response));
- if (ret != strlen(response))
- return error("IMAP error: sending response failed");
+ if (ret != strlen(response)) {
+ free(response);
+ return error("IMAP error: sending CRAM-MD5 response failed");
+ }
free(response);
return 0;
}
+static int auth_oauthbearer(struct imap_store *ctx, const char *prompt UNUSED)
+{
+ int ret;
+ char *b64;
+
+ b64 = oauthbearer_base64(ctx->cfg->user, ctx->cfg->pass);
+ if (!b64)
+ return error("OAUTHBEARER: base64 encoding failed");
+
+ /* Send the base64-encoded response */
+ ret = socket_write(&ctx->imap->buf.sock, b64, strlen(b64));
+ if (ret != (int)strlen(b64)) {
+ free(b64);
+ return error("IMAP error: sending OAUTHBEARER response failed");
+ }
+
+ free(b64);
+ return 0;
+}
+
+static int auth_xoauth2(struct imap_store *ctx, const char *prompt UNUSED)
+{
+ int ret;
+ char *b64;
+
+ b64 = xoauth2_base64(ctx->cfg->user, ctx->cfg->pass);
+ if (!b64)
+ return error("XOAUTH2: base64 encoding failed");
+
+ /* Send the base64-encoded response */
+ ret = socket_write(&ctx->imap->buf.sock, b64, strlen(b64));
+ if (ret != (int)strlen(b64)) {
+ free(b64);
+ return error("IMAP error: sending XOAUTH2 response failed");
+ }
+
+ free(b64);
+ return 0;
+}
+
+#else
+
+#define auth_plain NULL
+#define auth_cram_md5 NULL
+#define auth_oauthbearer NULL
+#define auth_xoauth2 NULL
+
+#endif
+
static void server_fill_credential(struct imap_server_conf *srvc, struct credential *cred)
{
if (srvc->user && srvc->pass)
return;
cred->protocol = xstrdup(srvc->use_ssl ? "imaps" : "imap");
- cred->host = xstrdup(srvc->host);
+ cred->host = xstrfmt("%s:%d", srvc->host, srvc->port);
cred->username = xstrdup_or_null(srvc->user);
cred->password = xstrdup_or_null(srvc->pass);
@@ -932,6 +1096,38 @@ static void server_fill_credential(struct imap_server_conf *srvc, struct credent
srvc->pass = xstrdup(cred->password);
}
+static int try_auth_method(struct imap_server_conf *srvc,
+ struct imap_store *ctx,
+ struct imap *imap,
+ const char *auth_method,
+ enum CAPABILITY cap,
+ int (*fn)(struct imap_store *, const char *))
+{
+ struct imap_cmd_cb cb = {0};
+
+ if (!CAP(cap)) {
+ fprintf(stderr, "You specified "
+ "%s as authentication method, "
+ "but %s doesn't support it.\n",
+ auth_method, srvc->host);
+ return -1;
+ }
+ cb.cont = fn;
+
+ if (NOT_CONSTANT(!cb.cont)) {
+ fprintf(stderr, "If you want to use %s authentication mechanism, "
+ "you have to build git-imap-send with OpenSSL library.",
+ auth_method);
+ return -1;
+ }
+ if (imap_exec(ctx, &cb, "AUTHENTICATE %s", auth_method) != RESP_OK) {
+ fprintf(stderr, "IMAP error: AUTHENTICATE %s failed\n",
+ auth_method);
+ return -1;
+ }
+ return 0;
+}
+
static struct imap_store *imap_open_store(struct imap_server_conf *srvc, const char *folder)
{
struct credential cred = CREDENTIAL_INIT;
@@ -964,7 +1160,7 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc, const c
imap->buf.sock.fd[0] = tunnel.out;
imap->buf.sock.fd[1] = tunnel.in;
- imap_info("ok\n");
+ imap_info("OK\n");
} else {
#ifndef NO_IPV6
struct addrinfo hints, *ai0, *ai;
@@ -983,7 +1179,7 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc, const c
fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(gai));
goto bail;
}
- imap_info("ok\n");
+ imap_info("OK\n");
for (ai0 = ai; ai; ai = ai->ai_next) {
char addr[NI_MAXHOST];
@@ -1021,7 +1217,7 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc, const c
perror("gethostbyname");
goto bail;
}
- imap_info("ok\n");
+ imap_info("OK\n");
addr.sin_addr.s_addr = *((int *) he->h_addr_list[0]);
@@ -1035,7 +1231,7 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc, const c
}
#endif
if (s < 0) {
- fputs("Error: unable to connect to server.\n", stderr);
+ fputs("error: unable to connect to server\n", stderr);
goto bail;
}
@@ -1047,7 +1243,7 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc, const c
close(s);
goto bail;
}
- imap_info("ok\n");
+ imap_info("OK\n");
}
/* read the greeting string */
@@ -1087,30 +1283,25 @@ static struct imap_store *imap_open_store(struct imap_server_conf *srvc, const c
server_fill_credential(srvc, &cred);
if (srvc->auth_method) {
- struct imap_cmd_cb cb;
-
- if (!strcmp(srvc->auth_method, "CRAM-MD5")) {
- if (!CAP(AUTH_CRAM_MD5)) {
- fprintf(stderr, "You specified "
- "CRAM-MD5 as authentication method, "
- "but %s doesn't support it.\n", srvc->host);
+ if (!strcmp(srvc->auth_method, "PLAIN")) {
+ if (try_auth_method(srvc, ctx, imap, "PLAIN", AUTH_PLAIN, auth_plain))
goto bail;
- }
- /* CRAM-MD5 */
-
- memset(&cb, 0, sizeof(cb));
- cb.cont = auth_cram_md5;
- if (imap_exec(ctx, &cb, "AUTHENTICATE CRAM-MD5") != RESP_OK) {
- fprintf(stderr, "IMAP error: AUTHENTICATE CRAM-MD5 failed\n");
+ } else if (!strcmp(srvc->auth_method, "CRAM-MD5")) {
+ if (try_auth_method(srvc, ctx, imap, "CRAM-MD5", AUTH_CRAM_MD5, auth_cram_md5))
+ goto bail;
+ } else if (!strcmp(srvc->auth_method, "OAUTHBEARER")) {
+ if (try_auth_method(srvc, ctx, imap, "OAUTHBEARER", AUTH_OAUTHBEARER, auth_oauthbearer))
+ goto bail;
+ } else if (!strcmp(srvc->auth_method, "XOAUTH2")) {
+ if (try_auth_method(srvc, ctx, imap, "XOAUTH2", AUTH_XOAUTH2, auth_xoauth2))
goto bail;
- }
} else {
- fprintf(stderr, "Unknown authentication method:%s\n", srvc->host);
+ fprintf(stderr, "unknown authentication mechanism: %s\n", srvc->auth_method);
goto bail;
}
} else {
if (CAP(NOLOGIN)) {
- fprintf(stderr, "Skipping account %s@%s, server forbids LOGIN\n",
+ fprintf(stderr, "skipping account %s@%s, server forbids LOGIN\n",
srvc->user, srvc->host);
goto bail;
}
@@ -1316,16 +1507,16 @@ static int git_imap_config(const char *var, const char *val,
FREE_AND_NULL(cfg->folder);
return git_config_string(&cfg->folder, var, val);
} else if (!strcmp("imap.user", var)) {
- FREE_AND_NULL(cfg->folder);
+ FREE_AND_NULL(cfg->user);
return git_config_string(&cfg->user, var, val);
} else if (!strcmp("imap.pass", var)) {
- FREE_AND_NULL(cfg->folder);
+ FREE_AND_NULL(cfg->pass);
return git_config_string(&cfg->pass, var, val);
} else if (!strcmp("imap.tunnel", var)) {
- FREE_AND_NULL(cfg->folder);
+ FREE_AND_NULL(cfg->tunnel);
return git_config_string(&cfg->tunnel, var, val);
} else if (!strcmp("imap.authmethod", var)) {
- FREE_AND_NULL(cfg->folder);
+ FREE_AND_NULL(cfg->auth_method);
return git_config_string(&cfg->auth_method, var, val);
} else if (!strcmp("imap.port", var)) {
cfg->port = git_config_int(var, val, ctx->kvi);
@@ -1366,7 +1557,8 @@ static int append_msgs_to_imap(struct imap_server_conf *server,
}
ctx->name = server->folder;
- fprintf(stderr, "sending %d message%s\n", total, (total != 1) ? "s" : "");
+ fprintf(stderr, "Sending %d message%s to %s folder...\n",
+ total, (total != 1) ? "s" : "", server->folder);
while (1) {
unsigned percent = n * 100 / total;
@@ -1388,6 +1580,26 @@ static int append_msgs_to_imap(struct imap_server_conf *server,
return 0;
}
+static int list_imap_folders(struct imap_server_conf *server)
+{
+ struct imap_store *ctx = imap_open_store(server, "INBOX");
+ if (!ctx) {
+ fprintf(stderr, "failed to connect to IMAP server\n");
+ return 1;
+ }
+
+ fprintf(stderr, "Fetching the list of available folders...\n");
+ /* Issue the LIST command and print the results */
+ if (imap_exec(ctx, NULL, "LIST \"\" \"*\"") != RESP_OK) {
+ fprintf(stderr, "failed to list folders\n");
+ imap_close_store(ctx);
+ return 1;
+ }
+
+ imap_close_store(ctx);
+ return 0;
+}
+
#ifdef USE_CURL_FOR_IMAP_SEND
static CURL *setup_curl(struct imap_server_conf *srvc, struct credential *cred)
{
@@ -1405,40 +1617,58 @@ static CURL *setup_curl(struct imap_server_conf *srvc, struct credential *cred)
server_fill_credential(srvc, cred);
curl_easy_setopt(curl, CURLOPT_USERNAME, srvc->user);
- curl_easy_setopt(curl, CURLOPT_PASSWORD, srvc->pass);
+
+ /*
+ * Use CURLOPT_PASSWORD irrespective of whether there is
+ * an auth method specified or not, unless it's OAuth2.0,
+ * where we use CURLOPT_XOAUTH2_BEARER.
+ */
+ if (!srvc->auth_method ||
+ (strcmp(srvc->auth_method, "XOAUTH2") &&
+ strcmp(srvc->auth_method, "OAUTHBEARER")))
+ curl_easy_setopt(curl, CURLOPT_PASSWORD, srvc->pass);
strbuf_addstr(&path, srvc->use_ssl ? "imaps://" : "imap://");
strbuf_addstr(&path, srvc->host);
if (!path.len || path.buf[path.len - 1] != '/')
strbuf_addch(&path, '/');
- uri_encoded_folder = curl_easy_escape(curl, srvc->folder, 0);
- if (!uri_encoded_folder)
- die("failed to encode server folder");
- strbuf_addstr(&path, uri_encoded_folder);
- curl_free(uri_encoded_folder);
+ if (!list_folders) {
+ uri_encoded_folder = curl_easy_escape(curl, srvc->folder, 0);
+ if (!uri_encoded_folder)
+ die("failed to encode server folder");
+ strbuf_addstr(&path, uri_encoded_folder);
+ curl_free(uri_encoded_folder);
+ }
curl_easy_setopt(curl, CURLOPT_URL, path.buf);
strbuf_release(&path);
- curl_easy_setopt(curl, CURLOPT_PORT, srvc->port);
+ curl_easy_setopt(curl, CURLOPT_PORT, (long)srvc->port);
if (srvc->auth_method) {
- struct strbuf auth = STRBUF_INIT;
- strbuf_addstr(&auth, "AUTH=");
- strbuf_addstr(&auth, srvc->auth_method);
- curl_easy_setopt(curl, CURLOPT_LOGIN_OPTIONS, auth.buf);
- strbuf_release(&auth);
+ if (!strcmp(srvc->auth_method, "XOAUTH2") ||
+ !strcmp(srvc->auth_method, "OAUTHBEARER")) {
+
+ /*
+ * While CURLOPT_XOAUTH2_BEARER looks as if it only supports XOAUTH2,
+ * upon debugging, it has been found that it is capable of detecting
+ * the best option out of OAUTHBEARER and XOAUTH2.
+ */
+ curl_easy_setopt(curl, CURLOPT_XOAUTH2_BEARER, srvc->pass);
+ } else {
+ struct strbuf auth = STRBUF_INIT;
+ strbuf_addstr(&auth, "AUTH=");
+ strbuf_addstr(&auth, srvc->auth_method);
+ curl_easy_setopt(curl, CURLOPT_LOGIN_OPTIONS, auth.buf);
+ strbuf_release(&auth);
+ }
}
if (!srvc->use_ssl)
curl_easy_setopt(curl, CURLOPT_USE_SSL, (long)CURLUSESSL_TRY);
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, srvc->ssl_verify);
- curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, srvc->ssl_verify);
-
- curl_easy_setopt(curl, CURLOPT_READFUNCTION, fread_buffer);
-
- curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, (long)srvc->ssl_verify);
+ curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, (long)srvc->ssl_verify);
if (0 < verbosity || getenv("GIT_CURL_VERBOSE"))
http_trace_curl_no_data();
@@ -1458,9 +1688,14 @@ static int curl_append_msgs_to_imap(struct imap_server_conf *server,
struct credential cred = CREDENTIAL_INIT;
curl = setup_curl(server, &cred);
+
+ curl_easy_setopt(curl, CURLOPT_READFUNCTION, fread_buffer);
+ curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
+
curl_easy_setopt(curl, CURLOPT_READDATA, &msgbuf);
- fprintf(stderr, "sending %d message%s\n", total, (total != 1) ? "s" : "");
+ fprintf(stderr, "Sending %d message%s to %s folder...\n",
+ total, (total != 1) ? "s" : "", server->folder);
while (1) {
unsigned percent = n * 100 / total;
int prev_len;
@@ -1503,6 +1738,31 @@ static int curl_append_msgs_to_imap(struct imap_server_conf *server,
return res != CURLE_OK;
}
+
+static int curl_list_imap_folders(struct imap_server_conf *server)
+{
+ CURL *curl;
+ CURLcode res = CURLE_OK;
+ struct credential cred = CREDENTIAL_INIT;
+
+ fprintf(stderr, "Fetching the list of available folders...\n");
+ curl = setup_curl(server, &cred);
+ res = curl_easy_perform(curl);
+
+ curl_easy_cleanup(curl);
+ curl_global_cleanup();
+
+ if (cred.username) {
+ if (res == CURLE_OK)
+ credential_approve(the_repository, &cred);
+ else if (res == CURLE_LOGIN_DENIED)
+ credential_reject(the_repository, &cred);
+ }
+
+ credential_clear(&cred);
+
+ return res != CURLE_OK;
+}
#endif
int cmd_main(int argc, const char **argv)
@@ -1520,6 +1780,11 @@ int cmd_main(int argc, const char **argv)
argc = parse_options(argc, (const char **)argv, "", imap_send_options, imap_send_usage, 0);
+ if (opt_folder) {
+ free(server.folder);
+ server.folder = xstrdup(opt_folder);
+ }
+
if (argc)
usage_with_options(imap_send_usage, imap_send_options);
@@ -1538,20 +1803,37 @@ int cmd_main(int argc, const char **argv)
if (!server.port)
server.port = server.use_ssl ? 993 : 143;
- if (!server.folder) {
- fprintf(stderr, "no imap store specified\n");
- ret = 1;
- goto out;
- }
if (!server.host) {
if (!server.tunnel) {
- fprintf(stderr, "no imap host specified\n");
+ error(_("no IMAP host specified"));
+ advise(_("set the IMAP host with 'git config imap.host <host>'.\n"
+ "(e.g., 'git config imap.host imaps://imap.example.com')"));
ret = 1;
goto out;
}
server.host = xstrdup("tunnel");
}
+ if (list_folders) {
+ if (server.tunnel)
+ ret = list_imap_folders(&server);
+#ifdef USE_CURL_FOR_IMAP_SEND
+ else if (use_curl)
+ ret = curl_list_imap_folders(&server);
+#endif
+ else
+ ret = list_imap_folders(&server);
+ goto out;
+ }
+
+ if (!server.folder) {
+ error(_("no IMAP folder specified"));
+ advise(_("set the target folder with 'git config imap.folder <folder>'.\n"
+ "(e.g., 'git config imap.folder Drafts')"));
+ ret = 1;
+ goto out;
+ }
+
/* read the messages */
if (strbuf_read(&all_msgs, 0, 0) < 0) {
error_errno(_("could not read from stdin"));
@@ -1567,7 +1849,7 @@ int cmd_main(int argc, const char **argv)
total = count_messages(&all_msgs);
if (!total) {
- fprintf(stderr, "no messages to send\n");
+ fprintf(stderr, "no messages found to send\n");
ret = 1;
goto out;
}
diff --git a/mailinfo.c b/mailinfo.c
index ee4597da6b..b4e815b2d8 100644
--- a/mailinfo.c
+++ b/mailinfo.c
@@ -266,6 +266,8 @@ static void handle_content_type(struct mailinfo *mi, struct strbuf *line)
error("Too many boundaries to handle");
mi->input_error = -1;
mi->content_top = &mi->content[MAX_BOUNDARIES] - 1;
+ strbuf_release(boundary);
+ free(boundary);
return;
}
*(mi->content_top) = boundary;
diff --git a/mergetools/vimdiff b/mergetools/vimdiff
index 78710858e8..fca1044f65 100644
--- a/mergetools/vimdiff
+++ b/mergetools/vimdiff
@@ -274,8 +274,8 @@ gen_cmd () {
# definition.
#
# The syntax of the "layout definitions" is explained in "Documentation/
- # mergetools/vimdiff.txt" but you can already intuitively understand how
- # it works by knowing that...
+ # mergetools/vimdiff.adoc" but you can already intuitively understand
+ # how it works by knowing that...
#
# * "+" means "a new vim tab"
# * "/" means "a new vim horizontal split"
diff --git a/meson.build b/meson.build
index 596f5ac711..7fea4a34d6 100644
--- a/meson.build
+++ b/meson.build
@@ -2054,6 +2054,18 @@ subdir('templates')
# can properly set up test dependencies. The bin-wrappers themselves are set up
# at configuration time, so these are fine.
if get_option('tests')
+ test_kwargs = {
+ 'timeout': 0,
+ }
+
+ # The TAP protocol was already understood by previous versions of Meson, but
+ # it was incompatible with the `meson test --interactive` flag.
+ if meson.version().version_compare('>=1.8.0')
+ test_kwargs += {
+ 'protocol': 'tap',
+ }
+ endif
+
subdir('t')
endif
diff --git a/object-name.c b/object-name.c
index 9288b2dd24..851858975f 100644
--- a/object-name.c
+++ b/object-name.c
@@ -1081,13 +1081,17 @@ static int get_oid_basic(struct repository *r, const char *str, int len,
* still fill in the oid with the "old" value,
* which we can use.
*/
- } else {
+ } else if (!(flags & GET_OID_GENTLY)) {
if (flags & GET_OID_QUIETLY) {
exit(128);
}
die(_("log for '%.*s' only has %d entries"),
len, str, co_cnt);
}
+ if (flags & GET_OID_GENTLY) {
+ free(real_ref);
+ return -1;
+ }
}
}
diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c
index 7f400ee012..56960e6ad7 100644
--- a/pack-bitmap-write.c
+++ b/pack-bitmap-write.c
@@ -1087,7 +1087,7 @@ void bitmap_writer_finish(struct bitmap_writer *writer,
oid_access);
if (commit_pos < 0)
- BUG(_("trying to write commit not in index"));
+ BUG("trying to write commit not in index");
stored->commit_pos = commit_pos + base_objects;
}
diff --git a/pack-bitmap.c b/pack-bitmap.c
index ac6d62b980..8727f316de 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -1363,8 +1363,8 @@ static struct bitmap *find_boundary_objects(struct bitmap_index *bitmap_git,
bitmap_set(roots_bitmap, pos);
}
- if (!cascade_pseudo_merges_1(bitmap_git, cb.base, roots_bitmap))
- bitmap_free(roots_bitmap);
+ cascade_pseudo_merges_1(bitmap_git, cb.base, roots_bitmap);
+ bitmap_free(roots_bitmap);
}
/*
diff --git a/pack-objects.h b/pack-objects.h
index 475a2d67ce..b1c3e702f4 100644
--- a/pack-objects.h
+++ b/pack-objects.h
@@ -120,11 +120,23 @@ struct object_entry {
unsigned ext_base:1; /* delta_idx points outside packlist */
};
+/**
+ * A packing region is a section of the packing_data.objects array
+ * as given by a starting index and a number of elements.
+ */
+struct packing_region {
+ size_t start;
+ size_t nr;
+};
+
struct packing_data {
struct repository *repo;
struct object_entry *objects;
uint32_t nr_objects, nr_alloc;
+ struct packing_region *regions;
+ size_t nr_regions, nr_regions_alloc;
+
int32_t *index;
uint32_t index_size;
diff --git a/path-walk.c b/path-walk.c
index 341bdd2ba4..2d4ddbadd5 100644
--- a/path-walk.c
+++ b/path-walk.c
@@ -503,7 +503,11 @@ int walk_objects_by_path(struct path_walk_info *info)
if (prepare_revision_walk(info->revs))
die(_("failed to setup revision walk"));
- /* Walk trees to mark them as UNINTERESTING. */
+ /*
+ * Walk trees to mark them as UNINTERESTING.
+ * This is particularly important when 'edge_aggressive' is set.
+ */
+ info->revs->edge_hint_aggressive = info->edge_aggressive;
edge_repo = info->revs->repo;
edge_tree_list = root_tree_list;
mark_edges_uninteresting(info->revs, show_edge,
diff --git a/path-walk.h b/path-walk.h
index 473ee9d361..5ef5a8440e 100644
--- a/path-walk.h
+++ b/path-walk.h
@@ -51,6 +51,13 @@ struct path_walk_info {
int prune_all_uninteresting;
/**
+ * When 'edge_aggressive' is set, then the revision walk will use
+ * the '--object-edge-aggressive' option to mark even more objects
+ * as uninteresting.
+ */
+ int edge_aggressive;
+
+ /**
* Specify a sparse-checkout definition to match our paths to. Do not
* walk outside of this sparse definition. If the patterns are in
* cone mode, then the search may prune directories that are outside
diff --git a/pathspec.c b/pathspec.c
index 2b4e434bc0..a3ddd701c7 100644
--- a/pathspec.c
+++ b/pathspec.c
@@ -492,7 +492,7 @@ static void init_pathspec_item(struct pathspec_item *item, unsigned flags,
if (!match) {
const char *hint_path;
- if (!have_git_dir())
+ if ((flags & PATHSPEC_NO_REPOSITORY) || !have_git_dir())
die(_("'%s' is outside the directory tree"),
copyfrom);
hint_path = repo_get_work_tree(the_repository);
@@ -614,6 +614,10 @@ void parse_pathspec(struct pathspec *pathspec,
(flags & PATHSPEC_PREFER_FULL))
BUG("PATHSPEC_PREFER_CWD and PATHSPEC_PREFER_FULL are incompatible");
+ if ((flags & PATHSPEC_NO_REPOSITORY) &&
+ (~magic_mask & (PATHSPEC_ATTR | PATHSPEC_FROMTOP)))
+ BUG("PATHSPEC_NO_REPOSITORY is incompatible with PATHSPEC_ATTR and PATHSPEC_FROMTOP");
+
/* No arguments with prefix -> prefix pathspec */
if (!entry) {
if (flags & PATHSPEC_PREFER_FULL)
diff --git a/pathspec.h b/pathspec.h
index de537cff3c..5e3a6f1fe7 100644
--- a/pathspec.h
+++ b/pathspec.h
@@ -76,6 +76,11 @@ struct pathspec {
* allowed, then it will automatically set for every pathspec.
*/
#define PATHSPEC_LITERAL_PATH (1<<6)
+/*
+ * For git diff --no-index, indicate that we are operating without
+ * a repository or index.
+ */
+#define PATHSPEC_NO_REPOSITORY (1<<7)
/**
* Given command line arguments and a prefix, convert the input to
@@ -184,6 +189,12 @@ int match_pathspec(struct index_state *istate,
const char *name, int namelen,
int prefix, char *seen, int is_dir);
+/* Set both DO_MATCH_DIRECTORY and DO_MATCH_LEADING_PATHSPEC if is_dir true */
+int match_leading_pathspec(struct index_state *istate,
+ const struct pathspec *ps,
+ const char *name, int namelen,
+ int prefix, char *seen, int is_dir);
+
/*
* Determine whether a pathspec will match only entire index entries (non-sparse
* files and/or entire sparse directories). If the pathspec has the potential to
diff --git a/po/TEAMS b/po/TEAMS
index 9a6a15cd9a..647a107a7a 100644
--- a/po/TEAMS
+++ b/po/TEAMS
@@ -29,6 +29,10 @@ Repository: https://github.com/jnavila/git
Leader: Jean-Noël Avila <jn.avila@free.fr>
Members: Sébastien Helleu <flashcode@flashtux.org>
+Language: ga (Irish)
+Repository: https://github.com/aindriu80/git-po
+Members: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
+
Language: id (Indonesian)
Repository: https://github.com/bagasme/git-po
Leader: Bagas Sanjaya <bagasdotme@gmail.com>
diff --git a/po/bg.po b/po/bg.po
index 37d127faac..a6410662c3 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -234,6 +234,10 @@
# acquire lock придобивам ключалка
# detached отделѐн, несвързан
# revision walk обхождане на версиите
+# exit code изходен код
+# score оценка за съвпадение
+# raw необработен
+#
#
# ------------------------
# „$var“ - може да не сработва за shell има gettext и eval_gettext - проверка - намират се лесно по „$
@@ -262,8 +266,8 @@ msgid ""
msgstr ""
"Project-Id-Version: git 2.48\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2025-03-05 22:57+0000\n"
-"PO-Revision-Date: 2025-03-06 09:15+0100\n"
+"POT-Creation-Date: 2025-05-29 13:50+0200\n"
+"PO-Revision-Date: 2025-05-29 20:25+0200\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@fsa-bg.org>\n"
"Language: bg\n"
@@ -1807,7 +1811,7 @@ msgstr "„stat“ не може да се изпълни върху „%s“"
#, c-format
msgid "unable to read %s"
-msgstr "обектът „%s“ не може да бъде прочетен"
+msgstr "обектът „%s“ не може да се прочете"
#, c-format
msgid "Badly quoted content in file '%s': %s"
@@ -2163,7 +2167,7 @@ msgid "update tracked files"
msgstr "обновяване на следените файлове"
msgid "renormalize EOL of tracked files (implies -u)"
-msgstr "уеднаквяване на знаците за край на файл (включва опцията „-u“)"
+msgstr "уеднаквяване на знаците за край на ред (включва опцията „-u“)"
msgid "record only the fact that the path will be added later"
msgstr "отбелязване само на факта, че пътят ще се добави по-късно"
@@ -2739,11 +2743,11 @@ msgstr "Неправилен аргумент на функцията „bisect_
#, c-format
msgid "couldn't get the oid of the rev '%s'"
-msgstr "идентификаторът на обект на версия „%s“ не може да бъде получен"
+msgstr "идентификаторът на обект на версия „%s“ не може да се получи"
#, c-format
msgid "couldn't open the file '%s'"
-msgstr "файлът „%s“ не може да бъде отворен"
+msgstr "файлът „%s“ не може да се отвори"
#, c-format
msgid "Invalid command: you're currently in a %s/%s bisect"
@@ -2879,8 +2883,7 @@ msgstr ""
#, c-format
msgid "cannot read file '%s' for replaying"
msgstr ""
-"файлът „%s“ не може да бъде прочетен, за да се изпълнят командите от него "
-"наново"
+"файлът „%s“ не може да се прочете, за да се изпълнят командите от него наново"
#, c-format
msgid "running %s\n"
@@ -2905,7 +2908,7 @@ msgstr ""
#, c-format
msgid "cannot open file '%s' for writing"
-msgstr "файлът „%s“ не може да бъде отворен за запис"
+msgstr "файлът „%s“ не може да се отвори за запис"
msgid "bisect run cannot continue any more"
msgstr "двоичното търсене не може да продължи"
@@ -2964,7 +2967,7 @@ msgstr "трябва да завършва с цвят"
#, c-format
msgid "cannot find revision %s to ignore"
-msgstr "версията за прескачане „%s“ не може да бъде открита"
+msgstr "версията за прескачане „%s“ липсва"
msgid "show blame entries as we find them, incrementally"
msgstr "извеждане на авторството с намирането му, последователно"
@@ -2986,7 +2989,7 @@ msgid "force progress reporting"
msgstr "извеждане на напредъка"
msgid "show output score for blame entries"
-msgstr "извеждане на допълнителна информация за определянето на авторството"
+msgstr "извеждане на оценка за съвпадение при определяне на авторството"
msgid "show original filename (Default: auto)"
msgstr ""
@@ -3054,7 +3057,7 @@ msgid "use <file>'s contents as the final image"
msgstr "използване на съдържанието на ФАЙЛа като крайно положение"
msgid "score"
-msgstr "напасване на редовете"
+msgstr "оценка за съвпадение"
msgid "find line copies within and across files"
msgstr ""
@@ -3175,7 +3178,7 @@ msgid ""
"branch '%s' not found.\n"
"Did you forget --remote?"
msgstr ""
-"клонът „%s“ не може да бъде открит.\n"
+"клонът „%s“ липсва.\n"
"Пробвахте ли опцията „--remote“?"
#, c-format
@@ -3191,7 +3194,7 @@ msgid "Deleted branch %s (was %s).\n"
msgstr "Изтрит клон „%s“ (той сочеше към „%s“).\n"
msgid "unable to parse format string"
-msgstr "форматиращият низ не може да бъде анализиран: %s"
+msgstr "форматиращият низ не може да се анализира: %s"
msgid "could not resolve HEAD"
msgstr "подаването, сочено от указателя „HEAD“, не може да се установи"
@@ -3596,7 +3599,7 @@ msgstr "Разпакетиране на пратки от обекти"
#, c-format
msgid "cannot read object %s '%s'"
-msgstr "обектът „%s“ (%s) не може да бъде прочетен"
+msgstr "обектът „%s“ (%s) не може да се прочете"
msgid "flush is only for --buffer mode"
msgstr "изчистването на буферите (flush) се ползва само за „--buffer“"
@@ -3622,11 +3625,8 @@ msgstr "може да укажете само една пакетна опция
msgid "git cat-file <type> <object>"
msgstr "git cat-file ВИД ОБЕКТ"
-msgid "git cat-file (-e | -p) <object>"
-msgstr "git cat-file (-e|-p) ОБЕКТ"
-
-msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
-msgstr "git cat-file (-t|-s) [--allow-unknown-type] ОБЕКТ"
+msgid "git cat-file (-e | -p | -t | -s) <object>"
+msgstr "git cat-file (-e|-p|-t|-s) ОБЕКТ"
msgid ""
"git cat-file (--textconv | --filters)\n"
@@ -3665,9 +3665,6 @@ msgstr ""
msgid "show object size"
msgstr "извеждане на размера на обект"
-msgid "allow -s and -t to work with broken/corrupt objects"
-msgstr "позволяване на опциите „-s“ и „-t“ да работят с повредени обекти"
-
msgid "use mail map file"
msgstr ""
"използване на файл за съответствията на имената и адресите на е-поща "
@@ -3730,6 +3727,13 @@ msgid "use a <path> for (--textconv | --filters); Not with 'batch'"
msgstr ""
"опциите „--textconv“/„--filters“ изискват ПЪТ, а пакетният режим (batch) не"
+msgid "objects filter only supported in batch mode"
+msgstr "филтрирането на обекти е възможно само в пакетен режим"
+
+#, c-format
+msgid "objects filter not supported: '%s'"
+msgstr "филтрирането на обекти не се поддържа: „%s“"
+
#, c-format
msgid "'%s=<%s>' needs '%s' or '%s'"
msgstr "„%s=<%s>“ изисква „%s“ или „%s“"
@@ -3911,11 +3915,11 @@ msgstr "някоя от необходимите версии липсва в п
#, c-format
msgid "path '%s': cannot merge"
-msgstr "пътят „%s“ не може да бъде слян"
+msgstr "пътят „%s“ не може да се слее"
#, c-format
msgid "Unable to add merge result for '%s'"
-msgstr "Резултатът за „%s“ не може да бъде слян"
+msgstr "Резултатът за „%s“ не може да се слее"
#, c-format
msgid "Recreated %d merge conflict"
@@ -3966,7 +3970,7 @@ msgstr "пътят „%s“ не е слят"
#, c-format
msgid "unable to read tree (%s)"
-msgstr "дървото не може да бъде прочетено (%s)"
+msgstr "дървото не може да се прочете (%s)"
msgid "you need to resolve your current index first"
msgstr "първо трябва да коригирате индекса си"
@@ -3988,7 +3992,7 @@ msgid "HEAD is now at"
msgstr "Указателят „HEAD“ в момента сочи към"
msgid "unable to update HEAD"
-msgstr "Указателят „HEAD“ не може да бъде обновен"
+msgstr "Указателят „HEAD“ не може да се обнови"
#, c-format
msgid "Reset branch '%s'\n"
@@ -4262,7 +4266,7 @@ msgstr "липсва име на клон, използвайте опцията
#, c-format
msgid "could not resolve %s"
-msgstr "„%s“ не може да бъде проследен"
+msgstr "„%s“ не може да се проследи"
msgid "invalid path specification"
msgstr "указан е неправилен път"
@@ -4345,7 +4349,7 @@ msgstr "Изтриване на „%s“\n"
#, c-format
msgid "Would remove %s\n"
-msgstr "Файлът „%s“ ще бъде изтрит\n"
+msgstr "Файлът „%s“ ще се изтрие\n"
#, c-format
msgid "Skipping repository %s\n"
@@ -4353,21 +4357,21 @@ msgstr "Прескачане на хранилището „%s“\n"
#, c-format
msgid "Would skip repository %s\n"
-msgstr "Хранилището „%s“ ще бъде прескочено\n"
+msgstr "Хранилището „%s“ ще се прескочи\n"
#, c-format
msgid "failed to remove %s"
-msgstr "файлът „%s“ не може да бъде изтрит"
+msgstr "файлът „%s“ не може да се изтрие"
#, c-format
msgid "could not lstat %s\n"
msgstr "не може да се получи информация чрез „lstat“ за „%s“\n"
msgid "Refusing to remove current working directory\n"
-msgstr "Текущата работна директория няма да бъде изтрита\n"
+msgstr "Текущата работна директория няма да се изтрие\n"
msgid "Would refuse to remove current working directory\n"
-msgstr "Текущата работна директория няма да бъде изтрита\n"
+msgstr "Текущата работна директория няма да се изтрие\n"
#, c-format
msgid ""
@@ -4440,8 +4444,8 @@ msgstr ""
msgid "Would remove the following item:"
msgid_plural "Would remove the following items:"
-msgstr[0] "Следният обект ще бъде изтрит:"
-msgstr[1] "Следните обекти ще бъдат изтрити:"
+msgstr[0] "Следният обект ще се изтрие:"
+msgstr[1] "Следните обекти ще се изтрият:"
msgid "No more files to clean, exiting."
msgstr "Файловете за изчистване свършиха. Изход от програмата."
@@ -4482,7 +4486,7 @@ msgstr ""
#, c-format
msgid "failed to stat '%s'"
-msgstr "не може да бъде получена информация чрез „stat“ за „%s“"
+msgstr "не може да се получи информация чрез „stat“ за „%s“"
#, c-format
msgid "%s exists and is not a directory"
@@ -4515,11 +4519,11 @@ msgstr "твърдата връзка е различна от източник�
#, c-format
msgid "failed to create link '%s'"
-msgstr "връзката „%s“ не може да бъде създадена"
+msgstr "връзката „%s“ не може да се създаде"
#, c-format
msgid "failed to copy file to '%s'"
-msgstr "файлът не може да бъде копиран като „%s“"
+msgstr "файлът не може да се копира като „%s“"
#, c-format
msgid "failed to iterate over '%s'"
@@ -4546,7 +4550,7 @@ msgstr "отдалеченото хранилище не изпрати всич
#, c-format
msgid "unable to update %s"
-msgstr "обектът „%s“ не може да бъде обновен"
+msgstr "обектът „%s“ не може да се обнови"
msgid "failed to initialize sparse-checkout"
msgstr "частичното изтегляне не може да се инициализира"
@@ -4557,7 +4561,7 @@ msgstr ""
"съществува. Изтегляне не може да се извърши"
msgid "unable to checkout working tree"
-msgstr "работното дърво не може да бъде подготвено"
+msgstr "работното дърво не може да се подготви"
msgid "unable to write parameters to config file"
msgstr "настройките не може да бъдат записани в конфигурационния файл"
@@ -4566,7 +4570,7 @@ msgid "cannot repack to clean up"
msgstr "не може да се извърши пакетиране за изчистване на файловете"
msgid "cannot unlink temporary alternates file"
-msgstr "временният файл за алтернативни обекти не може да бъде изтрит"
+msgstr "временният файл за алтернативни обекти не може да се изтрие"
msgid "don't clone shallow repository"
msgstr "без клониране на плитко хранилище"
@@ -4730,7 +4734,7 @@ msgstr "родителските директории на „%s“ не мож�
#, c-format
msgid "could not create work tree dir '%s'"
-msgstr "работното дърво в „%s“ не може да бъде създадено."
+msgstr "работното дърво в „%s“ не може да се създаде."
#, c-format
msgid "Cloning into bare repository '%s'...\n"
@@ -5070,22 +5074,22 @@ msgid "updating files failed"
msgstr "неуспешно обновяване на файловете"
msgid "failed to unpack HEAD tree object"
-msgstr "върховото дърво (HEAD tree object) не може да бъде извадено от пакет"
+msgstr "върховото дърво (HEAD tree object) не може да се извади от пакет"
msgid "No paths with --include/--only does not make sense."
msgstr "опциите „--include“ и „--only“ изискват аргументи."
msgid "unable to create temporary index"
-msgstr "временният индекс не може да бъде създаден"
+msgstr "временният индекс не може да се създаде"
msgid "interactive add failed"
msgstr "неуспешно интерактивно добавяне"
msgid "unable to update temporary index"
-msgstr "временният индекс не може да бъде обновен"
+msgstr "временният индекс не може да се обнови"
msgid "Failed to update main cache tree"
-msgstr "Кешът за обектите-дървета не може да бъде обновен"
+msgstr "Кешът за обектите-дървета не може да се обнови"
msgid "cannot do a partial commit during a merge."
msgstr "по време на сливане не може да се извърши частично подаване."
@@ -5097,10 +5101,10 @@ msgid "cannot do a partial commit during a rebase."
msgstr "по време на пребазиране не може да се извърши частично подаване."
msgid "cannot read the index"
-msgstr "индексът не може да бъде прочетен"
+msgstr "индексът не може да се прочете"
msgid "unable to write temporary index file"
-msgstr "временният индекс не може да бъде записан"
+msgstr "временният индекс не може да се запише"
#, c-format
msgid "commit '%s' lacks author header"
@@ -5126,7 +5130,7 @@ msgstr ""
#, c-format
msgid "could not lookup commit '%s'"
-msgstr "следното подаване не може да бъде открито: %s"
+msgstr "следното подаване липсва: %s"
#, c-format
msgid "(reading log message from standard input)\n"
@@ -5137,24 +5141,24 @@ msgstr "съобщението за подаване не бе прочетен�
#, c-format
msgid "could not read log file '%s'"
-msgstr "файлът със съобщението за подаване „%s“ не може да бъде прочетен"
+msgstr "файлът със съобщението за подаване „%s“ не може да се прочете"
#, c-format
msgid "options '%s' and '%s:%s' cannot be used together"
msgstr "опциите „--%s“ и „--%s:%s“ са несъвместими"
msgid "could not read SQUASH_MSG"
-msgstr "съобщението за вкарване SQUASH_MSG не може да бъде прочетено"
+msgstr "съобщението за вкарване SQUASH_MSG не може да се прочете"
msgid "could not read MERGE_MSG"
-msgstr "съобщението за сливане MERGE_MSG не може да бъде прочетено"
+msgstr "съобщението за сливане MERGE_MSG не може да се прочете"
#, c-format
msgid "could not open '%s'"
msgstr "„%s“ не може да се отвори"
msgid "could not write commit template"
-msgstr "шаблонът за подаване не може да бъде запазен"
+msgstr "шаблонът за подаване не може да се запази"
#, c-format
msgid ""
@@ -5231,7 +5235,7 @@ msgid "%sCommitter: %.*s <%.*s>"
msgstr "%sПодаващ: %.*s <%.*s>"
msgid "Cannot read index"
-msgstr "Индексът не може да бъде прочетен"
+msgstr "Индексът не може да се прочете"
msgid "unable to pass trailers to --trailers"
msgstr "епилогът не може да се подаде на „--trailers“"
@@ -5275,7 +5279,7 @@ msgid "reword option of '%s' and '%s' cannot be used together"
msgstr "опциите „%s“ и „%s“ са несъвместими"
msgid "You have nothing to amend."
-msgstr "Няма какво да бъде поправено."
+msgstr "Няма какво да се поправи."
msgid "You are in the middle of a merge -- cannot amend."
msgstr "В момента се извършва сливане, не може да поправяте."
@@ -5471,18 +5475,18 @@ msgid "ok to record a change with an empty message"
msgstr "позволяване на подавания с празни съобщения"
msgid "could not parse HEAD commit"
-msgstr "върховото подаване „HEAD“ не може да бъде прочетено"
+msgstr "върховото подаване „HEAD“ не може да се прочете"
#, c-format
msgid "Corrupt MERGE_HEAD file (%s)"
msgstr "Повреден файл за върха за сливането „MERGE_HEAD“ (%s)"
msgid "could not read MERGE_MODE"
-msgstr "режимът на сливане „MERGE_MODE“ не може да бъде прочетен"
+msgstr "режимът на сливане „MERGE_MODE“ не може да се прочете"
#, c-format
msgid "could not read commit message: %s"
-msgstr "съобщението за подаване не може да бъде прочетено: %s"
+msgstr "съобщението за подаване не може да се прочете: %s"
#, c-format
msgid "Aborting commit due to empty commit message.\n"
@@ -5723,7 +5727,7 @@ msgstr "при търсене да се уважат и директивите �
#, c-format
msgid "unable to read config file '%s'"
-msgstr "конфигурационният файл „%s“ не може да бъде прочетен"
+msgstr "конфигурационният файл „%s“ не може да се прочете"
msgid "error processing config file(s)"
msgstr "грешка при обработката на конфигурационен файл"
@@ -5804,7 +5808,7 @@ msgstr "не се поддържа редактиране на обекти-BLOB
#, c-format
msgid "cannot create configuration file %s"
-msgstr "конфигурационният файл „%s“ не може да бъде създаден"
+msgstr "конфигурационният файл „%s“ не може да се създаде"
msgid "Action"
msgstr "Действие"
@@ -6042,7 +6046,7 @@ msgstr ""
"добавяне на такъв МАРКЕР на счупеното работно дърво (стандартно е „-broken“)"
msgid "No names found, cannot describe anything."
-msgstr "Не са открити имена — нищо не може да бъде описано."
+msgstr "Не са открити имена — нищо не може да се опише."
#, c-format
msgid "option '%s' and commit-ishes cannot be used together"
@@ -6064,6 +6068,51 @@ msgstr "укажете суфикса на файла във формат за �
msgid "specify the content of the diagnostic archive"
msgstr "указване на съдържанието на диагностичния архив"
+#, c-format
+msgid "unable to parse mode: %s"
+msgstr "режимът не може да се анализира: %s"
+
+#, c-format
+msgid "unable to parse object id: %s"
+msgstr "идентификаторът на обекта не може да се анализира: %s"
+
+msgid "git diff-pairs -z [<diff-options>]"
+msgstr "git diff-pairs -z [ОПЦИЯ_ЗА_РАЗЛИКИ…]"
+
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "непознат аргумент: %s"
+
+msgid "working without -z is not supported"
+msgstr "опцията „-z“ е задължителна"
+
+msgid "pathspec arguments not supported"
+msgstr "не се поддържат опции за пътища"
+
+msgid "revision arguments not allowed"
+msgstr "не се поддържат опции за версии"
+
+msgid "invalid raw diff input"
+msgstr "неправилен необработен вход за разлики"
+
+msgid "tree objects not supported"
+msgstr "не се поддържат обекти-дървета"
+
+msgid "got EOF while reading path"
+msgstr "край на файл (EOF) при изчитане на път"
+
+msgid "got EOF while reading destination path"
+msgstr "край на файл (EOF) при изчитане на целевия път"
+
+#, c-format
+msgid "unable to parse rename/copy score: %s"
+msgstr ""
+"оценката за съвпадение при преименуване/копиране не може да се анализира: %s"
+
+#, c-format
+msgid "unknown diff status: %c"
+msgstr "непознато състояние на разлика: %c"
+
msgid "--merge-base only works with two commits"
msgstr "опцията „--merge-base“ изисква точно две подавания"
@@ -6106,15 +6155,15 @@ msgstr "git difftool [ОПЦИЯ…] [ПОДАВАНЕ [ПОДАВАНЕ]] [[--]
#, c-format
msgid "could not read symlink %s"
-msgstr "символната връзка „%s“ не може да бъде прочетена"
+msgstr "символната връзка „%s“ не може да се прочете"
#, c-format
msgid "could not read symlink file %s"
-msgstr "файлът, сочен от символната връзка „%s“, не може да бъде прочетен"
+msgstr "файлът, сочен от символната връзка „%s“, не може да се прочете"
#, c-format
msgid "could not read object %s for symlink %s"
-msgstr "обектът „%s“ за символната връзка „%s“ не може да бъде прочетен"
+msgstr "обектът „%s“ за символната връзка „%s“ не може да се прочете"
msgid ""
"combined diff formats ('-c' and '--cc') are not supported in\n"
@@ -6206,8 +6255,11 @@ msgstr "Съобщение за напредъка на всеки такъв Б
msgid "select handling of signed tags"
msgstr "Как да се обработват подписаните етикети"
+msgid "select handling of signed commits"
+msgstr "как да се обработват подписаните подавания"
+
msgid "select handling of tags that tag filtered objects"
-msgstr "Как да се обработват етикетите на филтрираните обекти"
+msgstr "как да се обработват етикетите на филтрираните обекти"
msgid "select handling of commit messages in an alternate encoding"
msgstr ""
@@ -6304,7 +6356,7 @@ msgid "fetch.parallel cannot be negative"
msgstr "опцията „fetch.parallel“ трябва да е неотрицателна"
msgid "couldn't find remote ref HEAD"
-msgstr "указателят „HEAD“ в отдалеченото хранилище не може да бъде открит"
+msgstr "указателят „HEAD“ в отдалеченото хранилище липсва"
#, c-format
msgid "From %.*s\n"
@@ -6327,10 +6379,10 @@ msgid "[tag update]"
msgstr "[обновяване на етикетите]"
msgid "unable to update local ref"
-msgstr "локален указател не може да бъде обновен"
+msgstr "локален указател не може да се обнови"
msgid "would clobber existing tag"
-msgstr "съществуващ етикет ще бъде презаписан"
+msgstr "ще се презапише съществуващ етикет"
msgid "[new tag]"
msgstr "[нов етикет]"
@@ -6349,7 +6401,7 @@ msgstr "същинско сливане"
#, c-format
msgid "cannot open '%s'"
-msgstr "„%s“ не може да бъде отворен"
+msgstr "„%s“ не може да се отвори"
msgid ""
"fetch normally indicates which branches had a forced update,\n"
@@ -6531,7 +6583,7 @@ msgstr "брой подмодули доставени паралелно"
msgid "modify the refspec to place all refs within refs/prefetch/"
msgstr ""
-"промяна на указателя, така че и той, както останалите, да бъде в „refs/"
+"промяна на указателя, така че и той, както останалите, да е в „refs/"
"prefetch/“"
msgid "prune remote-tracking branches no longer on remote"
@@ -6866,10 +6918,6 @@ msgid "%s: object corrupt or missing: %s"
msgstr "%s: развален или липсващ обект: %s"
#, c-format
-msgid "%s: object is of unknown type '%s': %s"
-msgstr "%s: обектът е непознат вид „%s“: %s"
-
-#, c-format
msgid "%s: object could not be parsed: %s"
msgstr "„%s“: не може да се анализира: „%s“"
@@ -6920,22 +6968,25 @@ msgstr "„%s“: неправилен указател за отмяна на �
#, c-format
msgid "unable to load rev-index for pack '%s'"
-msgstr "обратният индекс на пакета „%s“ не може да бъде зареден"
+msgstr "обратният индекс на пакета „%s“ не може да се зареди"
#, c-format
msgid "invalid rev-index for pack '%s'"
msgstr "неправилен обратен индекс за пакета „%s“"
+msgid "Checking ref database"
+msgstr "Проверка на базата от данни с указателите"
+
msgid ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<object>...]"
+" [--[no-]name-objects] [--[no-]references] [<object>...]"
msgstr ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [ОБЕКТ…]"
+" [--[no-]name-objects] [--[no-]references] [ОБЕКТ…]"
msgid "show unreachable objects"
msgstr "показване на недостижимите обекти"
@@ -6973,6 +7024,9 @@ msgstr "показване на напредъка"
msgid "show verbose names for reachable objects"
msgstr "показване на подробни имена на достижимите обекти"
+msgid "check reference database consistency"
+msgstr "проверка на валидността на базата от данни с указатели"
+
msgid "Checking objects"
msgstr "Проверка на обектите"
@@ -7008,7 +7062,7 @@ msgstr "fsmonitor-daemon не наблюдава „%s“\n"
#, c-format
msgid "could not create fsmonitor cookie '%s'"
-msgstr "бисквитката за fsmonitor „%s“ не може да бъде създадена"
+msgstr "бисквитката за fsmonitor „%s“ не може да се създаде"
#, c-format
msgid "fsmonitor: cookie_result '%d' != SEEN"
@@ -7187,19 +7241,19 @@ msgid "unrecognized --schedule argument '%s'"
msgstr "непознат аргумент към „--schedule“: %s"
msgid "failed to write commit-graph"
-msgstr "графът с подаванията не може да бъде записан"
+msgstr "графът с подаванията не може да се запише"
msgid "failed to prefetch remotes"
msgstr "неуспешно предварително доставяне на отдалечените клони"
msgid "failed to start 'git pack-objects' process"
-msgstr "процесът за командата „git pack-objects“ не може да бъде стартиран"
+msgstr "процесът за командата „git pack-objects“ не може да се стартира"
msgid "failed to finish 'git pack-objects' process"
msgstr "процесът за командата „git pack-objects“ не може да завърши"
msgid "failed to write multi-pack-index"
-msgstr "индексът за множество пакети не може да бъде записан"
+msgstr "индексът за множество пакети не може да се запише"
msgid "'git multi-pack-index expire' failed"
msgstr "неуспешно изпълнение на „git multi-pack-index expire“"
@@ -7258,7 +7312,7 @@ msgid "unable to add '%s' value of '%s'"
msgstr "неуспешно добавяне на стойност на „%s“ за „%s“"
msgid "return success even if repository was not registered"
-msgstr "успешно завършване, дори ако хранилището не бъде регистрирано"
+msgstr "успешно завършване, дори ако хранилището не се регистрира"
#, c-format
msgid "unable to unset '%s' value of '%s'"
@@ -7341,7 +7395,7 @@ msgid ""
"then try again. If it still fails, a git-maintenance(1) process may have\n"
"crashed in this repository earlier: remove the file manually to continue."
msgstr ""
-"Файлът-ключалка „%s.lock“ не може да бъде създаден: %s\n"
+"Файлът-ключалка „%s.lock“ не може да се създаде: %s\n"
"\n"
"Изглежда, че и друг процес на git-maintenance(1) е пуснат в това\n"
"хранилище. Уверете се, че всички подобни процеси са спрени и опитайте\n"
@@ -7392,7 +7446,7 @@ msgstr "липсва поддръжка за нишки. „%s“ ще се п�
#, c-format
msgid "unable to read tree %s"
-msgstr "дървото не може да бъде прочетено: %s"
+msgstr "дървото не може да се прочете: %s"
#, c-format
msgid "unable to grep from object of type %s"
@@ -7562,7 +7616,7 @@ msgstr "опциите „--no-index“ и „--untracked“ са несъвме
#, c-format
msgid "unable to resolve revision: %s"
-msgstr "версията „%s“ не може бъде открита"
+msgstr "версията „%s“ не може се открие"
msgid "--untracked not supported with --recurse-submodules"
msgstr "опциите „--untracked“ и „--recurse-submodules“ са несъвместими"
@@ -7758,7 +7812,7 @@ msgstr[0] "не може да се запълни %d байт"
msgstr[1] "не може да се запълнят %d байта"
msgid "early EOF"
-msgstr "неочакван край на файл"
+msgstr "неочакван край на файл (EOF)"
msgid "read error on input"
msgstr "грешка при четене на входните данни"
@@ -7799,7 +7853,7 @@ msgid "unknown object type %d"
msgstr "непознат вид обект %d"
msgid "cannot pread pack file"
-msgstr "пакетният файл не може да бъде прочетен"
+msgstr "пакетният файл не може да се прочете"
#, c-format
msgid "premature end of pack file, %<PRIuMAX> byte missing"
@@ -7817,11 +7871,11 @@ msgstr ""
#, c-format
msgid "cannot read existing object info %s"
-msgstr "съществуващият обект в „%s“ не може да бъде прочетен"
+msgstr "съществуващият обект в „%s“ не може да се прочете"
#, c-format
msgid "cannot read existing object %s"
-msgstr "съществуващият обект „%s“ не може да бъде прочетен"
+msgstr "съществуващият обект „%s“ не може да се прочете"
#, c-format
msgid "invalid blob object %s"
@@ -7835,7 +7889,7 @@ msgid "Not all child objects of %s are reachable"
msgstr "Някои обекти, наследници на „%s“, не може да бъдат достигнати"
msgid "failed to apply delta"
-msgstr "разликата не може да бъде приложена"
+msgstr "разликата не може да се приложи"
msgid "Receiving objects"
msgstr "Получаване на обекти"
@@ -7916,11 +7970,11 @@ msgstr "неправилна стойност: „pack.indexVersion=%<PRIu32>“
#, c-format
msgid "Cannot open existing pack file '%s'"
-msgstr "Съществуващият пакетен файл „%s“ не може да бъде отворен"
+msgstr "Съществуващият пакетен файл „%s“ не може да се отвори"
#, c-format
msgid "Cannot open existing pack idx file for '%s'"
-msgstr "Съществуващият индекс за пакетния файл „%s“ не може да бъде отворен"
+msgstr "Съществуващият индекс за пакетния файл „%s“ не може да се отвори"
#, c-format
msgid "non delta: %d object"
@@ -7996,8 +8050,7 @@ msgstr "права̀"
msgid "specify that the git repository is to be shared amongst several users"
msgstr ""
-"указване, че хранилището на Git ще бъде споделено от повече от един "
-"потребител"
+"указване, че хранилището на Git ще се споделя от повече от един потребител"
msgid "override the name of the initial branch"
msgstr "задаване на името на първоначалния клон"
@@ -8010,7 +8063,7 @@ msgstr "указване на алгоритъм за контролна сум�
#, c-format
msgid "cannot mkdir %s"
-msgstr "директорията „%s“ не може да бъде създадена"
+msgstr "директорията „%s“ не може да се създаде"
#, c-format
msgid "cannot chdir to %s"
@@ -8057,7 +8110,7 @@ msgstr "временният файл не може да се отвори"
#, c-format
msgid "could not read input file '%s'"
-msgstr "входният файл „%s“ не може да бъде прочетен"
+msgstr "входният файл „%s“ не може да се прочете"
msgid "could not read from stdin"
msgstr "от стандартния вход не може да се чете"
@@ -8145,10 +8198,6 @@ msgstr ""
"проследяване на еволюцията на диапазона от редове НАЧАЛО,КРАЙ или :ФУНКЦИЯта "
"във ФАЙЛа"
-#, c-format
-msgid "unrecognized argument: %s"
-msgstr "непознат аргумент: %s"
-
msgid "-L<range>:<file> cannot be used with pathspec"
msgstr "опцията „-LДИАПАЗОН:ФАЙЛ“ не може да се ползва с път"
@@ -8162,7 +8211,7 @@ msgstr "git show %s: повреден файл"
#, c-format
msgid "could not read object %s"
-msgstr "обектът не може да бъде прочетен: %s"
+msgstr "обектът не може да се прочете: %s"
#, c-format
msgid "unknown type: %d"
@@ -8177,7 +8226,7 @@ msgstr "не е зададена стойност на „format.headers“"
#, c-format
msgid "cannot open patch file %s"
-msgstr "файлът-кръпка „%s“ не може да бъде отворен"
+msgstr "файлът-кръпка „%s“ не може да се отвори"
msgid "need exactly one range"
msgstr "трябва да зададете точно един диапазон"
@@ -8187,7 +8236,7 @@ msgstr "не е диапазон"
#, c-format
msgid "unable to read branch description file '%s'"
-msgstr "файлът с описанието на клона „%s“ не може да бъде прочетен"
+msgstr "файлът с описанието на клона „%s“ не може да се прочете"
msgid "cover letter needs email format"
msgstr "придружаващото писмо трябва да е форматирано като е-писмо"
@@ -8214,20 +8263,20 @@ msgid "failed to resolve '%s' as a valid ref"
msgstr "„%s“ не е указател или не сочи към нищо"
msgid "could not find exact merge base"
-msgstr "точната база за сливане не може да бъде открита"
+msgstr "точната база за сливане не може да се открие"
msgid ""
"failed to get upstream, if you want to record base commit automatically,\n"
"please use git branch --set-upstream-to to track a remote branch.\n"
"Or you could specify base commit by --base=<base-commit-id> manually"
msgstr ""
-"следеният клон не може да бъде установен. Ако искате ръчно да го\n"
+"следеният клон не може да се установи. Ако искате ръчно да го\n"
"зададете, използвайте „git branch --set-upstream-to“.\n"
"Може ръчно да зададете базово подаване чрез „--"
"base=<ИДЕНТИФИКАТОР_НА_БАЗОВО_ПОДАВАНЕ>“."
msgid "failed to find exact merge base"
-msgstr "точната база при сливане не може да бъде открита"
+msgstr "точната база при сливане не може да се определи"
msgid "base commit should be the ancestor of revision list"
msgstr "базовото подаване трябва да е предшественикът на списъка с версиите"
@@ -8236,7 +8285,7 @@ msgid "base commit shouldn't be in revision list"
msgstr "базовото подаване не може да е в списъка с версиите"
msgid "cannot get patch id"
-msgstr "идентификаторът на кръпката не може да бъде получен"
+msgstr "идентификаторът на кръпката не може да се получи"
msgid "failed to infer range-diff origin of current series"
msgstr ""
@@ -8424,7 +8473,7 @@ msgstr "опцията „--remerge-diff“ е несъвместима с ге�
#, c-format
msgid "could not create directory '%s'"
-msgstr "Директорията „%s“ не може да бъде създадена"
+msgstr "Директорията „%s“ не може да се създаде"
msgid "--interdiff requires --cover-letter or single patch"
msgstr ""
@@ -8450,7 +8499,7 @@ msgstr "Диапазонна разлика спрямо v%d:"
#, c-format
msgid "unable to read signature file '%s'"
-msgstr "файлът „%s“ с подпис не може да бъде прочетен"
+msgstr "файлът „%s“ с подпис не може да се прочете"
msgid "Generating patches"
msgstr "Създаване на кръпки"
@@ -8787,7 +8836,7 @@ msgstr "поддържа се само сливане на точно две и�
#, c-format
msgid "could not resolve ref '%s'"
-msgstr "указателят „%s“ не може да бъде проследен"
+msgstr "указателят „%s“ не може да се проследи"
#, c-format
msgid "Merging %s with %s\n"
@@ -8821,6 +8870,9 @@ msgstr "само тривиално сливане"
msgid "also show informational/conflict messages"
msgstr "показване и информационните съобщения, и тези при конфликт"
+msgid "suppress all output; only exit status wanted"
+msgstr "без извеждане на информация, получаване само на изходен код"
+
msgid "list filenames without modes/oids/stages"
msgstr ""
"извеждане на имената на файлове без режими/идентификатори на обекти/етапи"
@@ -8952,12 +9004,11 @@ msgstr "Вече е обновено."
#, c-format
msgid "Squash commit -- not updating HEAD\n"
-msgstr "Вкарано подаване — указателят „HEAD“ няма да бъде обновен\n"
+msgstr "Вкарано подаване — указателят „HEAD“ няма да се обнови\n"
#, c-format
msgid "No merge message -- not updating HEAD\n"
-msgstr ""
-"Липсва съобщение при подаване — указателят „HEAD“ няма да бъде обновен\n"
+msgstr "Липсва съобщение при подаване — указателят „HEAD“ няма да се обнови\n"
#, c-format
msgid "'%s' does not point to a commit"
@@ -8968,14 +9019,14 @@ msgid "Bad branch.%s.mergeoptions string: %s"
msgstr "Неправилен низ за настройката „branch.%s.mergeoptions“: „%s“"
msgid "Unable to write index."
-msgstr "Индексът не може да бъде прочетен"
+msgstr "Индексът не може да се прочете"
msgid "Not handling anything other than two heads merge."
msgstr "Поддържа се само сливане на точно две истории."
#, c-format
msgid "unable to write %s"
-msgstr "„%s“ не може да бъде записан"
+msgstr "„%s“ не може да се запише"
#, c-format
msgid "Could not read from '%s'"
@@ -8984,8 +9035,8 @@ msgstr "От „%s“ не може да се чете"
#, c-format
msgid "Not committing merge; use 'git commit' to complete the merge.\n"
msgstr ""
-"Сливането няма да бъде подадено. За завършването му и подаването му "
-"използвайте командата „git commit“.\n"
+"Сливането няма да се подаде. За завършването му и подаването му използвайте "
+"командата „git commit“.\n"
msgid ""
"Please enter a commit message to explain why this merge is necessary,\n"
@@ -9163,7 +9214,7 @@ msgstr "%d (FSCK_IGNORE?) никога не трябва да задейства
#, c-format
msgid "could not read tagged object '%s'"
-msgstr "обектът с етикет не може да бъде прочетен: %s"
+msgstr "обектът с етикет не може да се прочете: %s"
#, c-format
msgid "object '%s' tagged as '%s', but is a '%s' type"
@@ -9176,7 +9227,7 @@ msgid "tag on stdin did not refer to a valid object"
msgstr "етикетът на стандартния вход не сочи към правилен обект"
msgid "unable to write tag file"
-msgstr "файлът за етикета не може да бъде запазен"
+msgstr "файлът за етикета не може да се запази"
msgid "input is NUL terminated"
msgstr "входните записи са разделени с нулевия знак „NUL“"
@@ -9239,8 +9290,11 @@ msgstr ""
"при препакетиране пакетните файлове, които са с по-малък от този размер, да "
"се обединяват в пакети с по-голям от този размер"
-msgid "git mv [<options>] <source>... <destination>"
-msgstr "git mv [ОПЦИЯ…] ОБЕКТ… ЦЕЛ"
+msgid "git mv [-v] [-f] [-n] [-k] <source> <destination>"
+msgstr "git mv [-v] [-f] [-n] [-k] ОБЕКТ… ЦЕЛ"
+
+msgid "git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>"
+msgstr "git mv [-v] [-f] [-n] [-k] ОБЕКТ… ЦЕЛЕВА_ДИРЕКТОРИЯ"
#, c-format
msgid "Directory %s is in index and no submodule?"
@@ -9311,6 +9365,12 @@ msgid "%s, source=%s, destination=%s"
msgstr "%s, обект: „%s“, цел: „%s“"
#, c-format
+msgid "cannot move both '%s' and its parent directory '%s'"
+msgstr ""
+"невъзможно е да се преместят едновременно и „%s“, и родителската директория "
+"„%s“"
+
+#, c-format
msgid "Renaming %s to %s\n"
msgstr "Преименуване на „%s“ на „%s“\n"
@@ -9455,7 +9515,7 @@ msgid "please supply the note contents using either -m or -F option"
msgstr "задайте съдържанието на бележката с някоя от опциите „-m“ или „-F“"
msgid "unable to write note object"
-msgstr "обектът-бележка не може да бъде записан"
+msgstr "обектът-бележка не може да се запише"
#, c-format
msgid "the note contents have been left in %s"
@@ -9463,7 +9523,7 @@ msgstr "съдържанието на бележката е във файла �
#, c-format
msgid "could not open or read '%s'"
-msgstr "файлът „%s“ не може да бъде отворен или прочетен"
+msgstr "файлът „%s“ не може да се отвори или прочете"
#, c-format
msgid "failed to resolve '%s' as a valid ref."
@@ -9471,7 +9531,7 @@ msgstr "не може да се открие към какво сочи „%s“
#, c-format
msgid "failed to read object '%s'."
-msgstr "обектът „%s“ не може да бъде прочетен."
+msgstr "обектът „%s“ не може да се прочете."
#, c-format
msgid "cannot read note data from non-blob object '%s'."
@@ -9575,16 +9635,16 @@ msgstr ""
"C“.\n"
msgid "failed to delete ref NOTES_MERGE_PARTIAL"
-msgstr "указателят „NOTES_MERGE_PARTIAL“ не може да бъде изтрит"
+msgstr "указателят „NOTES_MERGE_PARTIAL“ не може да се изтрие"
msgid "failed to delete ref NOTES_MERGE_REF"
-msgstr "указателят „NOTES_MERGE_REF“ не може да бъде изтрит"
+msgstr "указателят „NOTES_MERGE_REF“ не може да се изтрие"
msgid "failed to remove 'git notes merge' worktree"
-msgstr "работната директория на „git notes merge“ не може да бъде изтрита"
+msgstr "работната директория на „git notes merge“ не може да се изтрие"
msgid "failed to read ref NOTES_MERGE_PARTIAL"
-msgstr "указателят „NOTES_MERGE_PARTIAL“ не може да бъде прочетен"
+msgstr "указателят „NOTES_MERGE_PARTIAL“ не може да се прочете"
msgid "could not find commit from NOTES_MERGE_PARTIAL."
msgstr "подаването от „NOTES_MERGE_PARTIAL“ не може да се открие."
@@ -9741,7 +9801,7 @@ msgstr "Записване на обектите"
#, c-format
msgid "failed to stat %s"
-msgstr "не може да бъде получена информация чрез „stat“ за „%s“"
+msgstr "не може да се получи информация чрез „stat“ за „%s“"
#, c-format
msgid "failed utime() on %s"
@@ -9772,11 +9832,11 @@ msgstr "Преброяване на обектите"
#, c-format
msgid "unable to get size of %s"
-msgstr "размерът на „%s“ не може да бъде получен"
+msgstr "размерът на „%s“ не може да се получи"
#, c-format
msgid "unable to parse object header of %s"
-msgstr "заглавната част на „%s“ не може да бъде анализирана"
+msgstr "заглавната част на „%s“ не може да се анализира"
#, c-format
msgid "object %s cannot be read"
@@ -9801,7 +9861,7 @@ msgstr ""
#, c-format
msgid "unable to get type of object %s"
-msgstr "видът на обекта „%s“ не може да бъде определен"
+msgstr "видът на обекта „%s“ не може да се определи"
msgid "Compressing objects"
msgstr "Компресиране на обектите"
@@ -9831,7 +9891,7 @@ msgstr ""
#, c-format
msgid "could not get type of object %s in pack %s"
-msgstr "видът на обекта „%s“ в пакет „%s“ не може да бъде определен"
+msgstr "видът на обекта „%s“ в пакет „%s“ не може да се определи"
#, c-format
msgid "could not find pack '%s'"
@@ -9839,7 +9899,7 @@ msgstr "пакетът „%s“ не може да се открие"
#, c-format
msgid "packfile %s cannot be accessed"
-msgstr "пакетният файл „%s“ не може да бъде достъпен"
+msgstr "пакетният файл „%s“ не може да се достъпи"
msgid "Enumerating cruft objects"
msgstr "Изброяване на ненужните обекти"
@@ -9872,14 +9932,14 @@ msgstr ""
"заредят"
msgid "cannot open pack index"
-msgstr "индексът на пакетния файл не може да бъде отворен"
+msgstr "индексът на пакетния файл не може да се отвори"
#, c-format
msgid "loose object at %s could not be examined"
-msgstr "непакетираният обект в „%s“ не може да бъде анализиран"
+msgstr "непакетираният обект в „%s“ не може да се анализира"
msgid "unable to force loose object"
-msgstr "оставането на обекта непакетиран не може да бъде наложено"
+msgstr "оставането на обекта непакетиран не може да се наложи"
#, c-format
msgid "not a rev '%s'"
@@ -10272,6 +10332,10 @@ msgstr ""
msgid "unable to access commit %s"
msgstr "недостъпно подаване: %s"
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "неправилен указател: „%s“"
+
msgid "ignoring --verify-signatures for rebase"
msgstr "без „--verify-signatures“ при пребазиране"
@@ -10330,7 +10394,7 @@ msgid ""
"$ git reset --hard\n"
"to recover."
msgstr ""
-"Работното ви копие не може да бъде превъртяно.\n"
+"Работното ви копие не може да се превърти.\n"
"След като запазите всичко необходимо посочено от командата:\n"
" git diff %s\n"
"изпълнете:\n"
@@ -10806,7 +10870,7 @@ msgstr "неправилната стойност на „allow_rerere_autoupdat
#, c-format
msgid "could not remove '%s'"
-msgstr "„%s“ не може да бъде изтрит"
+msgstr "„%s“ не може да се изтрие"
#, c-format
msgid ""
@@ -11047,7 +11111,7 @@ msgstr ""
"Опцията „--edit-todo“ е достъпна само по време на интерактивно пребазиране."
msgid "Cannot read HEAD"
-msgstr "Указателят „HEAD“ не може да бъде прочетен"
+msgstr "Указателят „HEAD“ не може да се прочете"
msgid ""
"You must edit all merge conflicts and then\n"
@@ -11125,7 +11189,7 @@ msgid "No such ref: %s"
msgstr "Такъв указател няма: %s"
msgid "Could not resolve HEAD to a commit"
-msgstr "Подаването, сочено от указателя „HEAD“, не може да бъде открито"
+msgstr "Липсва подаването, сочено от указателя „HEAD“"
#, c-format
msgid "'%s': need exactly one merge base with branch"
@@ -11265,6 +11329,9 @@ msgstr ""
msgid "git reflog exists <ref>"
msgstr "git reflog exists УКАЗАТЕЛ"
+msgid "git reflog drop [--all [--single-worktree] | <refs>...]"
+msgstr "git reflog drop [--all [--single-worktree]|УКАЗАТЕЛ…]"
+
#, c-format
msgid "invalid timestamp '%s' given to '--%s'"
msgstr "неправилно времево клеймо „%s“ подадено към „--%s“"
@@ -11318,8 +11385,8 @@ msgid "Marking reachable objects..."
msgstr "Отбелязване на достижимите обекти…"
#, c-format
-msgid "%s points nowhere!"
-msgstr "„%s“ не сочи наникъде!"
+msgid "reflog could not be found: '%s'"
+msgstr "журналът с указатели липсва: „%s“"
msgid "no reflog specified to delete"
msgstr "не е указан журнал с подавания за изтриване"
@@ -11328,6 +11395,15 @@ msgstr "не е указан журнал с подавания за изтри�
msgid "invalid ref format: %s"
msgstr "неправилен формат на указател: %s"
+msgid "drop the reflogs of all references"
+msgstr "изтриване на всички журнали с указатели"
+
+msgid "drop reflogs from the current worktree only"
+msgstr "изтриване на журнала с указатели само в текущото работно дърво"
+
+msgid "references specified along with --all"
+msgstr "указателите се задават с опцията „--all“"
+
msgid "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
msgstr "git refs migrate --ref-format=ФОРМАТ [--no-reflog] [--dry-run]"
@@ -11470,7 +11546,7 @@ msgstr "вече съществува отдалечено хранилище с
#, c-format
msgid "Could not setup master '%s'"
-msgstr "Основният клон „%s“ не може да бъде настроен"
+msgstr "Основният клон „%s“ не може да се настрои"
#, c-format
msgid "more than one %s"
@@ -11514,7 +11590,7 @@ msgstr "Няма отдалечено хранилище на име „%s“"
#, c-format
msgid "Could not rename config section '%s' to '%s'"
-msgstr "Разделът „%s“ в настройките не може да бъде преименуван на „%s“"
+msgstr "Разделът „%s“ в настройките не може да се преименува на „%s“"
#, c-format
msgid ""
@@ -11552,7 +11628,7 @@ msgstr[1] ""
#, c-format
msgid "Could not remove config section '%s'"
-msgstr "Разделът „%s“ в настройките не може да бъде изтрит"
+msgstr "Разделът „%s“ в настройките не може да се изтрие"
#, c-format
msgid " new (next fetch will store in remotes/%s)"
@@ -11734,7 +11810,7 @@ msgstr ""
#, c-format
msgid "Could not delete %s"
-msgstr "„%s“ не може да бъде изтрит"
+msgstr "„%s“ не може да се изтрие"
#, c-format
msgid "Not a valid ref: %s"
@@ -11762,7 +11838,7 @@ msgstr "адрес: %s"
#, c-format
msgid " * [would prune] %s"
-msgstr " ● [ще бъде окастрено] %s"
+msgstr " ● [ще се окастри] %s"
#, c-format
msgid " * [pruned] %s"
@@ -11863,7 +11939,7 @@ msgstr "пакет „%s“ е твърде голям за свиване"
#, c-format
msgid "could not open tempfile %s for writing"
-msgstr "временният файл „%s“ не може да бъде отворен за запис"
+msgstr "временният файл „%s“ не може да се отвори за запис"
msgid "could not close refs snapshot tempfile"
msgstr "временният файл със снимка на указателите не може да се затвори"
@@ -11896,6 +11972,11 @@ msgid "with --cruft, expire objects older than this"
msgstr ""
"с опцията „--cruft“: обявяване на обектите по-стари от това ВРЕМЕ за остарели"
+msgid "with --cruft, only repack cruft packs smaller than this"
+msgstr ""
+"с опцията „--cruft“: препакетиране само на пакетите за ненужни обекти, които "
+"са с размер под този"
+
msgid "remove redundant packs, and run git-prune-packed"
msgstr ""
"премахване на ненужните пакетирани файлове и изпълнение на командата „git-"
@@ -12015,7 +12096,7 @@ msgstr ""
#, c-format
msgid "replace ref '%s' not found"
-msgstr "указателят за замяна „%s“ не може да бъде открит"
+msgstr "указателят за замяна „%s“ липсва"
#, c-format
msgid "Deleted replace ref '%s'"
@@ -12041,14 +12122,14 @@ msgstr ""
#, c-format
msgid "unable to open %s for writing"
-msgstr "„%s“ не може да бъде отворен за запис"
+msgstr "„%s“ не може да се отвори за запис"
msgid "cat-file reported failure"
msgstr "изпълнението на „cat-file“ завърши с грешка"
#, c-format
msgid "unable to open %s for reading"
-msgstr "„%s“ не може да бъде отворен за четене"
+msgstr "„%s“ не може да се отвори за четене"
msgid "unable to spawn mktree"
msgstr "не може да се създаде процес за „mktree“"
@@ -12067,7 +12148,7 @@ msgid "unable to fstat %s"
msgstr "„fstat“ не може да се изпълни върху „%s“"
msgid "unable to write object to database"
-msgstr "обектът не може да бъде записан в базата от данни"
+msgstr "обектът не може да се запише в базата от данни"
#, c-format
msgid "unable to get object type for %s"
@@ -12105,11 +12186,11 @@ msgid "the original commit '%s' has a gpg signature"
msgstr "първоначалното подаване „%s“ е с подпис на GPG"
msgid "the signature will be removed in the replacement commit!"
-msgstr "Подписът ще бъде премахнат в заменящото подаване!"
+msgstr "Подписът ще се премахне в заменящото подаване!"
#, c-format
msgid "could not write replacement commit for: '%s'"
-msgstr "заменящото подаване за „%s“ не може да бъде записано"
+msgstr "заменящото подаване за „%s“ не може да се запише"
#, c-format
msgid "graft for '%s' unnecessary"
@@ -12294,11 +12375,11 @@ msgid "You do not have a valid HEAD."
msgstr "Указателят „HEAD“ е повреден."
msgid "Failed to find tree of HEAD."
-msgstr "Дървото, сочено от указателя „HEAD“, не може да бъде открито."
+msgstr "Дървото, сочено от указателя „HEAD“, не може да се открие."
#, c-format
msgid "Failed to find tree of %s."
-msgstr "Дървото, сочено от „%s“, не може да бъде открито."
+msgstr "Дървото, сочено от „%s“, не може да се открие."
#, c-format
msgid "HEAD is now at %s"
@@ -12364,19 +12445,22 @@ msgstr ""
#, c-format
msgid "Could not reset index file to revision '%s'."
-msgstr "Индексът не може да бъде занулен към версия „%s“."
+msgstr "Индексът не може да се занули към версия „%s“."
msgid "Could not write new index file."
-msgstr "Новият индекс не може да бъде записан."
+msgstr "Новият индекс не може да се запише."
#, c-format
msgid "unable to get disk usage of %s"
-msgstr "използваното място за „%s“ не може да бъде получено"
+msgstr "използваното място за „%s“ не може да се получи"
#, c-format
msgid "invalid value for '%s': '%s', the only allowed format is '%s'"
msgstr "неправилна стойност за „%s“: „%s“, единственият позволен формат е „%s“"
+msgid "-z option used with unsupported option"
+msgstr "неподдържана комбинация с опцията „-z“"
+
msgid "rev-list does not support display of notes"
msgstr "командата „rev-list“ не поддържа извеждането на бележки"
@@ -12463,7 +12547,7 @@ msgid "this operation must be run in a work tree"
msgstr "тази команда трябва да се изпълни в работно дърво"
msgid "Could not read the index"
-msgstr "Индексът не може да бъде прочетен"
+msgstr "Индексът не може да се прочете"
#, c-format
msgid "unknown mode for --show-object-format: %s"
@@ -12787,8 +12871,8 @@ msgstr "опцията „--reflog“ изисква точно едно име
#, c-format
msgid "only %d entry can be shown at one time."
msgid_plural "only %d entries can be shown at one time."
-msgstr[0] "само %d запис може да бъде показан наведнъж."
-msgstr[1] "само %d записа може да бъде показани наведнъж."
+msgstr[0] "само %d запис може да се покаже наведнъж."
+msgstr[1] "само %d записа може да се покажат наведнъж."
#, c-format
msgid "no such ref %s"
@@ -12898,14 +12982,14 @@ msgstr ""
#, c-format
msgid "failed to remove directory '%s'"
-msgstr "директорията „%s“ не може да бъде изтрита"
+msgstr "директорията „%s“ не може да се изтрие"
msgid "failed to create directory for sparse-checkout file"
-msgstr "директорията за частично изтегляне „%s“ не може да бъде създадена"
+msgstr "директорията за частично изтегляне „%s“ не може да се създаде"
#, c-format
msgid "unable to fdopen %s"
-msgstr "обектът „%s“ не може да бъде отворен с „fdopen“"
+msgstr "обектът „%s“ не може да се отвори с „fdopen“"
msgid "failed to initialize worktree config"
msgstr "настройките на работното дърво не може да се инициализират"
@@ -12933,7 +13017,7 @@ msgstr "пътят „%s“ не може да се нормализира"
#, c-format
msgid "unable to unquote C-style string '%s'"
-msgstr "цитирането на низ, форматиран за C — „%s“ не може да бъде изчистено"
+msgstr "цитирането на низ, форматиран за C — „%s“ не може да се изчисти"
msgid "unable to load existing sparse-checkout patterns"
msgstr "шаблоните за частично изтегляне не може да се заредят"
@@ -13119,7 +13203,7 @@ msgstr ""
"index“."
msgid "could not save index tree"
-msgstr "дървото сочено от индекса не може да бъде запазено"
+msgstr "дървото сочено от индекса не може да се запази"
#, c-format
msgid "Merging %s with %s"
@@ -13140,7 +13224,7 @@ msgstr "Изтрито: „%s“ (%s)"
#, c-format
msgid "%s: Could not drop stash entry"
-msgstr "Скатаното „%s“ не може да бъде изтрито"
+msgstr "Скатаното „%s“ не може да се изтрие"
#, c-format
msgid "'%s' is not a stash reference"
@@ -13153,10 +13237,10 @@ msgid "No branch name specified"
msgstr "Не е указано име на клон"
msgid "failed to parse tree"
-msgstr "дървото не може да бъде анализирано"
+msgstr "дървото не може да се анализира"
msgid "failed to unpack trees"
-msgstr "дървото не може да бъде разпакетирано"
+msgstr "дървото не може да се разпакетира"
msgid "include untracked files in the stash"
msgstr "скатаване и на неследените файлове"
@@ -13166,7 +13250,7 @@ msgstr "извеждане само на неследените файлове �
#, c-format
msgid "Cannot update %s with %s"
-msgstr "Указателят „%s“ не може да бъде обновен да сочи към „%s“"
+msgstr "Указателят „%s“ не може да се обнови да сочи към „%s“"
msgid "stash message"
msgstr "съобщение при скатаване"
@@ -13184,19 +13268,19 @@ msgid "You do not have the initial commit yet"
msgstr "Все още липсва първоначално подаване"
msgid "Cannot save the current index state"
-msgstr "Състоянието на текущия индекс не може да бъде запазено"
+msgstr "Състоянието на текущия индекс не може да се запази"
msgid "Cannot save the untracked files"
msgstr "Неследените файлове не може да се запазят"
msgid "Cannot save the current worktree state"
-msgstr "Състоянието на работното дърво не може да бъде запазено"
+msgstr "Състоянието на работното дърво не може да се запази"
msgid "Cannot save the current staged state"
-msgstr "Състоянието на текущия индекс не може да бъде запазено"
+msgstr "Състоянието на текущия индекс не може да се запази"
msgid "Cannot record working tree state"
-msgstr "Състоянието на работното дърво не може да бъде запазено"
+msgstr "Състоянието на работното дърво не може да се запази"
msgid "Can't use --patch and --include-untracked or --all at the same time"
msgstr "опцията „--patch“ е несъвместима с „--include-untracked“ и „--all“"
@@ -13216,7 +13300,7 @@ msgid "Cannot initialize stash"
msgstr "Скатаването не може да стартира"
msgid "Cannot save the current status"
-msgstr "Текущото състояние не може да бъде запазено"
+msgstr "Текущото състояние не може да се запази"
#, c-format
msgid "Saved working directory and index state %s"
@@ -13329,7 +13413,7 @@ msgstr "Във файла „.gitmodules“ липсва информация з
#, c-format
msgid "could not resolve HEAD ref inside the submodule '%s'"
-msgstr "указателят сочен от „HEAD“ в подмодула „%s“ не може да бъде открит"
+msgstr "указателят сочен от „HEAD“ в подмодула „%s“ липсва"
#, c-format
msgid "failed to recurse into submodule '%s'"
@@ -13400,7 +13484,7 @@ msgstr "неуспешно регистриране на адрес за път�
#, c-format
msgid "failed to update remote for submodule '%s'"
-msgstr "отдалеченият адрес на подмодула „%s“ не може да бъде променен"
+msgstr "отдалеченият адрес на подмодула „%s“ не може да се промени"
msgid "suppress output of synchronizing submodule url"
msgstr "без извеждане на информация при синхронизирането на подмодул"
@@ -13432,11 +13516,11 @@ msgstr "Директорията „%s“ е изчистена\n"
#, c-format
msgid "Could not remove submodule work tree '%s'\n"
msgstr ""
-"Директорията към работното дърво на подмодула „%s“ не може да бъде изтрита\n"
+"Директорията към работното дърво на подмодула „%s“ не може да се изтрие\n"
#, c-format
msgid "could not create empty submodule directory %s"
-msgstr "празната директория за подмодула „%s“ не може да бъде създадена"
+msgstr "празната директория за подмодула „%s“ не може да се създаде"
#, c-format
msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
@@ -13501,7 +13585,7 @@ msgstr "Неуспешно клониране на адреса „%s“ в пъ
#, c-format
msgid "could not get submodule directory for '%s'"
-msgstr "директорията на подмодула „%s“ не може да бъде получена"
+msgstr "директорията на подмодула „%s“ не може да се получи"
msgid "alternative anchor for relative paths"
msgstr "директория за определянето на относителните пътища"
@@ -13726,7 +13810,7 @@ msgid "force creation"
msgstr "принудително създаване"
msgid "show whether the branch would be created"
-msgstr "извеждане дали клонът ще бъде създаден"
+msgstr "извеждане дали клонът ще се създаде"
msgid ""
"git submodule--helper create-branch [-f|--force] [--create-reflog] [-q|--"
@@ -13775,7 +13859,7 @@ msgstr "Активиране на локалното хранилище за п�
#, c-format
msgid "unable to checkout submodule '%s'"
-msgstr "Подмодулът „%s“ не може да бъде изтеглен"
+msgstr "Подмодулът „%s“ не може да се изтегли"
msgid "please make sure that the .gitmodules file is in the working tree"
msgstr "файлът „.gitmodules“ трябва да е в работното дърво"
@@ -13924,7 +14008,7 @@ msgstr ""
"изтриете вие.\n"
msgid "unable to sign the tag"
-msgstr "етикетът не може да бъде подписан"
+msgstr "етикетът не може да се подпише"
#, c-format
msgid ""
@@ -14047,15 +14131,15 @@ msgstr "Разпакетиране на обектите"
#, c-format
msgid "failed to create directory %s"
-msgstr "директорията „%s“ не може да бъде създадена"
+msgstr "директорията „%s“ не може да се създаде"
#, c-format
msgid "failed to delete file %s"
-msgstr "файлът „%s“ не може да бъде изтрит"
+msgstr "файлът „%s“ не може да се изтрие"
#, c-format
msgid "failed to delete directory %s"
-msgstr "директорията „%s“ не може да бъде изтрита"
+msgstr "директорията „%s“ не може да се изтрие"
#, c-format
msgid "Testing mtime in '%s' "
@@ -14098,8 +14182,7 @@ msgid "git update-index [<options>] [--] [<file>...]"
msgstr "git update-index [ОПЦИЯ…] [--] [ФАЙЛ…]"
msgid "continue refresh even when index needs update"
-msgstr ""
-"продължаване с обновяването, дори когато индексът трябва да бъде обновен"
+msgstr "продължаване с обновяването, дори когато индексът трябва да се обнови"
msgid "refresh: ignore submodules"
msgstr "подмодулите да се игнорират при обновяването"
@@ -14283,8 +14366,8 @@ msgstr ""
"git update-ref [ОПЦИЯ…] ИМЕ_НА_УКАЗАТЕЛ НОВ_ИДЕНТИФИКАТОР_НА_ОБЕКТ "
"[СТАР_ИДЕНТИФИКАТОР_НА_ОБЕКТ]"
-msgid "git update-ref [<options>] --stdin [-z]"
-msgstr "git update-ref [ОПЦИЯ…] --stdin [-z]"
+msgid "git update-ref [<options>] --stdin [-z] [--batch-updates]"
+msgstr "git update-ref [ОПЦИЯ…] --stdin [-z] [--batch-updates]"
msgid "delete the reference"
msgstr "изтриване на указателя"
@@ -14300,6 +14383,9 @@ msgstr ""
msgid "read updates from stdin"
msgstr "изчитане на указателите от стандартния вход"
+msgid "batch reference updates"
+msgstr "пакетно обновяване на указатели"
+
msgid "update the info files from scratch"
msgstr "обновяване на информационните файлове от нулата"
@@ -14458,7 +14544,7 @@ msgstr "„%s“ не може да се изчисти в „%s“"
#, c-format
msgid "could not create directory of '%s'"
-msgstr "директорията „%s“ не може да бъде създадена"
+msgstr "директорията „%s“ не може да се създаде"
msgid "initializing"
msgstr "инициализация"
@@ -14616,8 +14702,7 @@ msgstr ""
#, c-format
msgid "validation failed, cannot move working tree: %s"
-msgstr ""
-"проверките са неуспешни, работното дърво не може да бъде преместено: %s"
+msgstr "проверките са неуспешни, работното дърво не може да се премести: %s"
#, c-format
msgid "failed to move '%s' to '%s'"
@@ -14659,7 +14744,7 @@ msgstr ""
#, c-format
msgid "validation failed, cannot remove working tree: %s"
-msgstr "проверките са неуспешни, работното дърво не може да бъде изтрито: %s"
+msgstr "проверките са неуспешни, работното дърво не може да се изтрие: %s"
#, c-format
msgid "repair: %s: %s"
@@ -14792,7 +14877,7 @@ msgid "unable to dup bundle descriptor"
msgstr "неуспешно дублиране на дескриптора на пратката с „dup“"
msgid "Could not spawn pack-objects"
-msgstr "Командата „git pack-objects“ не може да бъде стартирана"
+msgstr "Командата „git pack-objects“ не може да се стартира"
msgid "pack-objects died"
msgstr "Командата „git pack-objects“ не завърши успешно"
@@ -14815,7 +14900,7 @@ msgstr "Създаването на празна пратка е невъзмо�
#, c-format
msgid "cannot create '%s'"
-msgstr "файлът „%s“ не може да бъде създаден"
+msgstr "файлът „%s“ не може да се създаде"
msgid "index-pack died"
msgstr "командата „git index-pack“ не завърши успешно"
@@ -15001,6 +15086,9 @@ msgstr "Сравняване на файлове от работното дър�
msgid "Compare a tree to the working tree or index"
msgstr "Сравняване на обекти-дърво с работното дърво и индекса"
+msgid "Compare the content and mode of provided blob pairs"
+msgstr "Сравняване на съдържанието и режимите на двойките обекти-BLOB"
+
msgid "Compares the content and mode of blobs found via two tree objects"
msgstr ""
"Сравняване на съдържанието и права̀та за достъп на обектите-BLOB чрез два "
@@ -15543,7 +15631,7 @@ msgstr ""
#, c-format
msgid "could not find commit %s"
-msgstr "подаването „%s“ не може да бъде открито"
+msgstr "подаването „%s“ липсва"
msgid "commit-graph requires overflow generation data but has none"
msgstr ""
@@ -15603,7 +15691,7 @@ msgstr ""
"правилният брой на идентификаторите в основния граф не може да се запише"
msgid "unable to create temporary graph layer"
-msgstr "не може да бъде създаден временен слой за гра̀фа с подаванията"
+msgstr "не може да се създаде временен слой за гра̀фа с подаванията"
#, c-format
msgid "unable to adjust shared permissions for '%s'"
@@ -15619,10 +15707,10 @@ msgid "unable to open commit-graph chain file"
msgstr "файлът с веригата на гра̀фа с подаванията не може да се отвори"
msgid "failed to rename base commit-graph file"
-msgstr "основният файл на гра̀фа с подаванията не може да бъде преименуван"
+msgstr "основният файл на гра̀фа с подаванията не може да се преименува"
msgid "failed to rename temporary commit-graph file"
-msgstr "временният файл на гра̀фа с подаванията не може да бъде преименуван"
+msgstr "временният файл на гра̀фа с подаванията не може да се преименува"
#, c-format
msgid "cannot merge graphs with %<PRIuMAX>, %<PRIuMAX> commits"
@@ -15723,7 +15811,7 @@ msgstr "Проверка на подаванията в гра̀фа"
#, c-format
msgid "could not parse commit %s"
-msgstr "подаването „%s“ не може да бъде анализирано"
+msgstr "подаването „%s“ не може да се анализира"
#, c-format
msgid "%s %s is not a commit!"
@@ -15892,7 +15980,7 @@ msgstr "неуспешно изпълнение на closedir(„%s“)"
#, c-format
msgid "[GLE %ld] unable to open for read '%ls'"
msgstr ""
-"файлът „%2$ls“ не може да бъде отворен за четене [последна грешка в нишката: "
+"файлът „%2$ls“ не може да се отвори за четене [последна грешка в нишката: "
"GLE=%1$ld]"
#, c-format
@@ -15903,11 +15991,11 @@ msgstr ""
#, c-format
msgid "failed to copy SID (%ld)"
-msgstr "идентификаторът за сигурност (SID=%ld) не може да бъде копиран"
+msgstr "идентификаторът за сигурност (SID=%ld) не може да се копира"
#, c-format
msgid "failed to get owner for '%s' (%ld)"
-msgstr "притежателят на „%s“ (%ld) не може да бъде получен"
+msgstr "притежателят на „%s“ (%ld) не може да се получи"
msgid "memory exhausted"
msgstr "паметта е изчерпана"
@@ -15967,10 +16055,10 @@ msgid "No previous regular expression"
msgstr "Няма предхождащ регулярен израз"
msgid "could not send IPC command"
-msgstr "командата за комуникация между процеси не може да бъде пратена"
+msgstr "командата за комуникация между процеси не може да се прати"
msgid "could not read IPC response"
-msgstr "отговорът за комуникацията между процеси не може да бъде прочетен"
+msgstr "отговорът за комуникацията между процеси не може да се прочете"
#, c-format
msgid "could not start accept_thread '%s'"
@@ -16021,7 +16109,7 @@ msgstr ""
#, c-format
msgid "could not expand include path '%s'"
-msgstr "пътят за вмъкване „%s“не може да бъде разширен"
+msgstr "пътят за вмъкване „%s“ не може да се разшири"
msgid "relative config includes must come from files"
msgstr "относителните вмъквания на конфигурации трябва да идват от файлове"
@@ -16163,7 +16251,7 @@ msgstr "неправилна булева стойност „%s“ за „%s�
#, c-format
msgid "failed to expand user dir in: '%s'"
-msgstr "домашната папка на потребителя не може да бъде открита: „%s“"
+msgstr "домашната папка на потребителя липсва: „%s“"
#, c-format
msgid "'%s' for '%s' is not a valid timestamp"
@@ -16222,7 +16310,7 @@ msgstr "указателят „%s“ не сочи към обект-BLOB"
#, c-format
msgid "unable to resolve config blob '%s'"
-msgstr "обектът-BLOB „%s“ с конфигурации не може да бъде открит"
+msgstr "обектът-BLOB „%s“ с конфигурации липсва"
msgid "unable to parse command-line config"
msgstr "неправилни настройки от командния ред"
@@ -16258,7 +16346,7 @@ msgstr "зададени са няколко стойности за „%s“"
#, c-format
msgid "failed to write new configuration file %s"
-msgstr "новият конфигурационен файл „%s“ не може да бъде запазен"
+msgstr "новият конфигурационен файл „%s“ не може да се запази"
#, c-format
msgid "no multi-line comment allowed: '%s'"
@@ -16266,7 +16354,7 @@ msgstr "коментари на повече от един ред не са по
#, c-format
msgid "could not lock config file %s"
-msgstr "конфигурационният файл „%s“ не може да бъде заключен"
+msgstr "конфигурационният файл „%s“ не може да се заключи"
#, c-format
msgid "opening %s"
@@ -16290,7 +16378,7 @@ msgstr "неуспешна смяна на права̀ с „chmod“ върх�
#, c-format
msgid "could not write config file %s"
-msgstr "конфигурационният файл „%s“ не може да бъде записан"
+msgstr "конфигурационният файл „%s“ не може да се запише"
#, c-format
msgid "could not set '%s' to '%s'"
@@ -16462,13 +16550,13 @@ msgid "unable to fork"
msgstr "неуспешно създаване на процес"
msgid "Could not run 'git rev-list'"
-msgstr "Командата „git rev-list“ не може да бъде изпълнена."
+msgstr "Командата „git rev-list“ не може да се изпълни."
msgid "failed write to rev-list"
msgstr "неуспешен запис на списъка с версиите"
msgid "failed to close rev-list's stdin"
-msgstr "стандартният вход на списъка с версиите не може да бъде затворен"
+msgstr "стандартният вход на списъка с версиите не може да се затвори"
#, c-format
msgid "illegal crlf_action %d"
@@ -16542,7 +16630,7 @@ msgstr "неуспешно създаване на процес за външе�
#, c-format
msgid "cannot feed the input to external filter '%s'"
-msgstr "входът не може да бъде подаден на външния филтър „%s“"
+msgstr "входът не може да се подаде на външния филтър „%s“"
#, c-format
msgid "external filter '%s' failed %d"
@@ -16689,7 +16777,7 @@ msgstr "неправилен обект-дърво: %s"
#, c-format
msgid "failed to load island regex for '%s': %s"
-msgstr "регулярният израз на групата за „%s“, не може да бъде зареден: „%s“"
+msgstr "регулярният израз на групата за „%s“, не може да се зареди: „%s“"
#, c-format
msgid "island regex from config has too many capture groups (max=%d)"
@@ -16711,7 +16799,7 @@ msgstr "директорията „%s“ липсва и не може да с�
#, c-format
msgid "could not open directory '%s'"
-msgstr "директорията „%s“ не може да бъде отворена"
+msgstr "директорията „%s“ не може да се отвори"
#, c-format
msgid "skipping '%s', which is neither file nor directory"
@@ -16722,7 +16810,7 @@ msgstr "стандартният изход не може да се дублир
#, c-format
msgid "could not add directory '%s' to archiver"
-msgstr "директорията „%s“ не може да бъде добавена към архива"
+msgstr "директорията „%s“ не може да се добави към архива"
msgid "failed to write archive"
msgstr "неуспешен запис на архива"
@@ -16731,7 +16819,7 @@ msgid "--merge-base does not work with ranges"
msgstr "опцията „--merge-base“ не работи с диапазони"
msgid "unable to get HEAD"
-msgstr "Указателят „HEAD“ не може да бъде получен"
+msgstr "Указателят „HEAD“ не може да се получи"
msgid "no merge base found"
msgstr "липсва база за сливане"
@@ -16914,7 +17002,7 @@ msgid "generate diffs with <n> lines context"
msgstr "файловете с разлики да са с контекст с такъв БРОЙ редове"
msgid "generate the diff in raw format"
-msgstr "файловете с разлики да са в суров формат"
+msgstr "файловете с разлики да са в необработен формат"
msgid "synonym for '-p --raw'"
msgstr "псевдоним на „-p --raw“"
@@ -17266,7 +17354,7 @@ msgstr "задайте променливата „%s“ да е поне %d и
#, c-format
msgid "failed to read orderfile '%s'"
-msgstr "файлът с подредбата на съответствията „%s“ не може да бъде прочетен"
+msgstr "файлът с подредбата на съответствията „%s“ не може да се прочете"
msgid "Performing inexact rename detection"
msgstr "Търсене на преименувания на обекти съчетани с промѐни"
@@ -17311,7 +17399,7 @@ msgid ""
"No directory name could be guessed.\n"
"Please specify a directory on the command line"
msgstr ""
-"Името на директорията не може да бъде отгатнато.\n"
+"Името на директорията не може да се отгатне.\n"
"Задайте директорията изрично на командния ред"
#, c-format
@@ -17523,7 +17611,7 @@ msgstr "грешка при обработка на потвържденията
#.
#, c-format
msgid "expected packfile to be sent after '%s'"
-msgstr "очаква се пакетният файл да бъде изпратен след „%s“"
+msgstr "очаква се пакетният файл да се изпрати след „%s“"
#. TRANSLATORS: The parameter will be 'ready', a protocol
#. keyword.
@@ -17552,7 +17640,7 @@ msgid "git fetch-pack: expected response end packet"
msgstr "git fetch-pack: очаква се пакет за край на отговора"
msgid "no matching remote head"
-msgstr "не може да бъде открит подходящ връх от отдалеченото хранилище"
+msgstr "липсва подходящ връх от отдалеченото хранилище"
msgid "unexpected 'ready' from remote"
msgstr "неочаквано състояние за готовност от отдалечено хранилище"
@@ -17754,7 +17842,7 @@ msgstr "лош/несъвместим подпис „%s“"
#, c-format
msgid "failed to get the ssh fingerprint for key '%s'"
-msgstr "отпечатъкът по ssh на ключа „%s“ не може да бъде получен"
+msgstr "отпечатъкът по ssh на ключа „%s“ не може да се получи"
msgid ""
"either user.signingkey or gpg.ssh.defaultKeyCommand needs to be configured"
@@ -17818,7 +17906,7 @@ msgstr ""
#, c-format
msgid "'%s': unable to read %s"
-msgstr "„%s“: файлът сочен от „%s“ не може да бъде прочетен"
+msgstr "„%s“: файлът сочен от „%s“ не може да се прочете"
#, c-format
msgid "'%s': short read"
@@ -17903,7 +17991,7 @@ msgid ""
"able to execute it. Maybe git-%s is broken?"
msgstr ""
"Изглежда, че „%s“ е команда на git, но тя не може да\n"
-"бъде изпълнена. Вероятно пакетът „git-%s“ е повреден."
+"се изпълни. Вероятно пакетът „git-%s“ е повреден."
#, c-format
msgid "git: '%s' is not a git command. See 'git --help'."
@@ -17995,6 +18083,10 @@ msgid "Unknown value for http.proactiveauth"
msgstr "Непозната стойност за „http.proactiveauth“"
#, c-format
+msgid "failed to parse %s"
+msgstr "„%s“ не може да се анализира"
+
+#, c-format
msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
msgstr "Неподдържана реализация на SSL „%s“. Поддържат се:"
@@ -18064,15 +18156,14 @@ msgstr "липсва адрес за е-поща, а автоматичното
#, c-format
msgid "unable to auto-detect email address (got '%s')"
msgstr ""
-"адресът за е-поща не може да бъде отгатнат (най-доброто предположение бе "
-"„%s“)"
+"адресът за е-поща не може да се отгатне (най-доброто предположение бе „%s“)"
msgid "no name was given and auto-detection is disabled"
msgstr "липсва име, а автоматичното отгатване е изключено"
#, c-format
msgid "unable to auto-detect name (got '%s')"
-msgstr "името не може да бъде отгатнато (най-доброто предположение бе „%s“)"
+msgstr "името не може да се отгатне (най-доброто предположение бе „%s“)"
#, c-format
msgid "empty ident name (for <%s>) not allowed"
@@ -18148,7 +18239,7 @@ msgid ""
"may have crashed in this repository earlier:\n"
"remove the file manually to continue."
msgstr ""
-"Файлът-ключалка „%s.lock“ не може да бъде създаден: %s\n"
+"Файлът-ключалка „%s.lock“ не може да се създаде: %s\n"
"\n"
"Изглежда, че и друг процес на git е пуснат в това хранилище, напр.\n"
"редактор, стартиран с „git commit“. Уверете се, че всички подобни\n"
@@ -18158,10 +18249,10 @@ msgstr ""
#, c-format
msgid "Unable to create '%s.lock': %s"
-msgstr "Файлът-ключалка „%s.lock“ не може да бъде създаден: %s"
+msgstr "Файлът-ключалка „%s.lock“ не може да се създаде: %s"
msgid "unable to create temporary object directory"
-msgstr "не може да бъде създадена директория за временни обекти"
+msgstr "не може да се създаде директория за временни обекти"
#, c-format
msgid "could not write loose object index %s"
@@ -18190,6 +18281,10 @@ msgid "invalid marker-size '%s', expecting an integer"
msgstr "неправилен размер на маркер: „%s“, изисква се цяло число"
#, c-format
+msgid "Could not parse object '%s'"
+msgstr "Неуспешен анализ на обекта „%s“"
+
+#, c-format
msgid "Failed to merge submodule %s (not checked out)"
msgstr "Неуспешно сливане на подмодула „%s“ (не е изтеглен)"
@@ -18208,7 +18303,7 @@ msgstr "ГРЕШКА: неуспешно сливане на подмодула
#, c-format
msgid "Failed to merge submodule %s (commits don't follow merge-base)"
msgstr ""
-"Подмодулът „%s“ не може да бъде слят (базата за сливане не предшества "
+"Подмодулът „%s“ не може да се слее (базата за сливане не предшества "
"подаванията)"
#, c-format
@@ -18433,292 +18528,23 @@ msgstr ""
msgid "collecting merge info failed for trees %s, %s, %s"
msgstr "неуспешно събиране на информацията за сливането на „%s“, „%s“ и „%s“"
-msgid "(bad commit)\n"
-msgstr "(лошо подаване)\n"
-
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr ""
-"неуспешно изпълнение на „add_cacheinfo“ за пътя „%s“. Сливането е "
-"преустановено."
-
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr ""
-"неуспешно изпълнение на „add_cacheinfo“ за обновяването на пътя „%s“. "
-"Сливането е преустановено."
-
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "грешка при създаването на пътя „%s“%s"
-
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "Изтриване на „%s“, за да се освободи място за поддиректория\n"
-
-msgid ": perhaps a D/F conflict?"
-msgstr ": възможно е да има конфликт директория/файл."
-
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr ""
-"преустановяване на действието, за да не се изтрие неследеният файл „%s“"
-
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "обектът „%s“ (%s) се очакваше да е BLOB, а не е"
-
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "„%s“ не може да се отвори: %s"
-
-#, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "неуспешно създаване на символната връзка „%s“: %s"
-
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr ""
-"не е ясно какво да се прави с обекта „%2$s“ (%3$s) с права̀ за достъп „%1$06o“"
-
-#, c-format
-msgid "Failed to merge submodule %s (repository corrupt)"
-msgstr "Неуспешно сливане на подмодула „%s“ (хранилището е с грешки)"
-
-#, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "Превъртане на подмодула „%s“ до следното подаване:"
-
-#, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Превъртане на подмодула „%s“"
-
-#, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr ""
-"Неуспешно сливане на подмодула „%s“ (липсва сливането, което се предшества "
-"от подаванията)"
-
-#, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "Неуспешно сливане на подмодула „%s“ (не е превъртане)"
-
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr ""
-"Открито е сливане, което може да решава проблема със сливането на "
-"подмодула:\n"
-
-#, c-format
-msgid ""
-"If this is correct simply add it to the index for example\n"
-"by using:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"which will accept this suggestion.\n"
-msgstr ""
-"Ако това е така, добавете го към индекса с команда като следната:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"Това приема предложеното.\n"
-
-#, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "Неуспешно сливане на подмодула „%s“ (открити са множество сливания)"
-
-msgid "failed to execute internal merge"
-msgstr "неуспешно вътрешно сливане"
-
-#, c-format
-msgid "unable to add %s to database"
-msgstr "„%s“ не може да се добави в базата от данни"
-
-#, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr "Грешка: за да не се изтрие неследеният файл „%s“, се записва в „%s“."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
-msgstr ""
-"КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ в %s. Версия %s на „%s“ "
-"е оставена в дървото."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
-msgstr ""
-"КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ е преименуван на „%s“ в "
-"%s. Версия %s на „%s“ е оставена в дървото."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
-msgstr ""
-"КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ в %s. Версия %s на „%s“ "
-"е оставена в дървото: %s."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree at %s."
-msgstr ""
-"КОНФЛИКТ (%s/изтриване): „%s“ е изтрит в %s, а „%s“ е преименуван на „%s“ в "
-"%s. Версия %s на „%s“ е оставена в дървото: %s."
-
-msgid "rename"
-msgstr "преименуване"
-
-msgid "renamed"
-msgstr "преименуван"
-
-#, c-format
-msgid "Refusing to lose dirty file at %s"
-msgstr "Преустановяване на действието, за да не се изгуби промененият „%s“"
-
-#, c-format
-msgid "Refusing to lose untracked file at %s, even though it's in the way."
-msgstr ""
-"Отказ да се загуби неследеният файл „%s“, защото е на място, където пречи."
-
-#, c-format
-msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
-msgstr ""
-"КОНФЛИКТ (преименуване/добавяне): „%s“ е преименуван на „%s“ в клон „%s“, а "
-"„%s“ е добавен в „%s“"
-
-#, c-format
-msgid "%s is a directory in %s adding as %s instead"
-msgstr "„%s“ е директория в „%s“, затова се добавя като „%s“"
-
-#, c-format
-msgid "Refusing to lose untracked file at %s; adding as %s instead"
-msgstr ""
-"Преустановяване на действието, за да не се изгуби неследеният файл „%s“. "
-"Вместо него се добавя „%s“"
-
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
-"\"%s\"->\"%s\" in \"%s\"%s"
-msgstr ""
-"КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
-"„%s“, а „%s“ е преименуван на „%s“ в „%s“/%s."
-
-msgid " (left unresolved)"
-msgstr " (некоригиран конфликт)"
-
-#, c-format
-msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
-msgstr ""
-"КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
-"„%s“, а „%s“ е преименуван на „%s“ в „%s“"
-
-#, c-format
-msgid ""
-"CONFLICT (directory rename split): Unclear where to place %s because "
-"directory %s was renamed to multiple other directories, with no destination "
-"getting a majority of the files."
-msgstr ""
-"КОНФЛИКТ (раздвояване при преименуване на директория): Не е ясно къде да се "
-"постави „%s“, защото няколко нови директории поделят съдържанието на "
-"директория „%s“, като никоя не съдържа мнозинство от файловете ѝ."
-
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
-">%s in %s"
-msgstr ""
-"КОНФЛИКТ (преименуване/преименуване): „%s“ е преименуван на „%s“ в клон "
-"„%s“, а „%s“ е преименуван на „%s“ в „%s“"
-
-#, c-format
-msgid "cannot read object %s"
-msgstr "обектът „%s“ не може да се прочете"
-
-#, c-format
-msgid "object %s is not a blob"
-msgstr "обектът „%s“ не е BLOB"
-
-msgid "modify"
-msgstr "промяна"
-
-msgid "modified"
-msgstr "променен"
-
-#, c-format
-msgid "Skipped %s (merged same as existing)"
-msgstr "Прескачане на „%s“ (слетият резултат е идентичен със сегашния)"
-
-#, c-format
-msgid "Adding as %s instead"
-msgstr "Добавяне като „%s“"
-
-#, c-format
-msgid "Removing %s"
-msgstr "Изтриване на „%s“"
-
-msgid "file/directory"
-msgstr "файл/директория"
-
-msgid "directory/file"
-msgstr "директория/файл"
-
-#, c-format
-msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
-msgstr ""
-"КОНФЛИКТ (%s): Съществува директория на име „%s“ в „%s“. Добавяне на „%s“ "
-"като „%s“"
-
-#, c-format
-msgid "Adding %s"
-msgstr "Добавяне на „%s“"
-
-#, c-format
-msgid "CONFLICT (add/add): Merge conflict in %s"
-msgstr "КОНФЛИКТ (добавяне/добавяне): Конфликт при сливане на „%s“"
-
-#, c-format
-msgid "merging of trees %s and %s failed"
-msgstr "неуспешно сливане на дърветата „%s“ и „%s“"
-
-msgid "Merging:"
-msgstr "Сливане:"
-
-#, c-format
-msgid "found %u common ancestor:"
-msgid_plural "found %u common ancestors:"
-msgstr[0] "открит е %u общ предшественик:"
-msgstr[1] "открити са %u общи предшественици:"
-
-msgid "merge returned no commit"
-msgstr "сливането не върна подаване"
-
-#, c-format
-msgid "Could not parse object '%s'"
-msgstr "Неуспешен анализ на обекта „%s“"
-
msgid "failed to read the cache"
-msgstr "кешът не може да бъде прочетен"
+msgstr "кешът не може да се прочете"
#, c-format
msgid "failed to add packfile '%s'"
-msgstr "пакетният файл „%s“ не може да бъде добавен"
+msgstr "пакетният файл „%s“ не може да се добави"
#, c-format
msgid "failed to open pack-index '%s'"
-msgstr "индексът за пакети „%s“ не може да бъде отворен"
+msgstr "индексът за пакети „%s“ не може да се отвори"
#, c-format
msgid "failed to locate object %d in packfile"
msgstr "обект %d в пакетния файл липсва"
msgid "cannot store reverse index file"
-msgstr "файлът за индекса не може да бъде съхранен"
+msgstr "файлът за индекса не може да се съхрани"
#, c-format
msgid "could not parse line: %s"
@@ -18741,17 +18567,17 @@ msgstr "не може да се създаде връзка „%s“, която
#, c-format
msgid "failed to clear multi-pack-index at %s"
-msgstr "индексът за множество пакети не може да бъде изчистен при „%s“"
-
-msgid "cannot write incremental MIDX with bitmap"
-msgstr ""
-"нарастващият индекс за множество пакети с битова маска не може да се запише"
+msgstr "индексът за множество пакети не може да се изчисти при „%s“"
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr ""
"индексът за множество пакети се прескача, защото сумата за проверка не "
"съвпада"
+#, c-format
+msgid "could not load reverse index for MIDX %s"
+msgstr "файлът с обратния индекс за множество пакети „%s“ не може да се зареди"
+
msgid "Adding packfiles to multi-pack-index"
msgstr "Добавяне на пакетни файлове към индекс за множество пакети"
@@ -18776,14 +18602,13 @@ msgid "no pack files to index."
msgstr "няма пакетни файлове за индексиране"
msgid "refusing to write multi-pack .bitmap without any objects"
-msgstr ""
-"многопакетната битова маска без никакви обекти не може да бъде запазена"
+msgstr "многопакетната битова маска без никакви обекти не може да се запази"
msgid "unable to create temporary MIDX layer"
msgstr "не може да се създаде временен слой за индекса за множество пакети"
msgid "could not write multi-pack bitmap"
-msgstr "многопакетната битова маска не може да бъде запазена"
+msgstr "многопакетната битова маска не може да се запази"
msgid "unable to open multi-pack-index chain file"
msgstr "файлът с веригата на гра̀фа с подаванията не може да се отвори"
@@ -18809,10 +18634,10 @@ msgid "cannot repack an incremental multi-pack-index"
msgstr "нарастващият индекс за множество пакети не може да се препакетира"
msgid "could not start pack-objects"
-msgstr "командата „pack-objects“ не може да бъде стартирана"
+msgstr "командата „pack-objects“ не може да се стартира"
msgid "could not finish pack-objects"
-msgstr "командата „pack-objects“ не може да бъде завършена"
+msgstr "командата „pack-objects“ не може да завърши"
msgid "multi-pack-index OID fanout is of the wrong size"
msgstr ""
@@ -18929,8 +18754,7 @@ msgstr ""
msgid "multi-pack-index file exists, but failed to parse"
msgstr ""
-"файлът с индекса за множество пакети съществува, но не може да бъде "
-"анализиран"
+"файлът с индекса за множество пакети съществува, но не може да се анализира"
msgid "incorrect checksum"
msgstr "неправилна сума за проверка"
@@ -18959,11 +18783,11 @@ msgstr "Проверка на отместването на обекти"
#, c-format
msgid "failed to load pack entry for oid[%d] = %s"
-msgstr "записът в пакета за обекта oid[%d] = %s не може да бъде зареден"
+msgstr "записът в пакета за обекта oid[%d] = %s не може да се зареди"
#, c-format
msgid "failed to load pack-index for packfile %s"
-msgstr "индексът на пакета „%s“ не може да бъде зареден"
+msgstr "индексът на пакета „%s“ не може да се зареди"
#, c-format
msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
@@ -19004,7 +18828,7 @@ msgstr ""
msgid "Cannot commit uninitialized/unreferenced notes tree"
msgstr ""
-"Неинициализирано или нереферирано дърво за бележки не може да бъде подадено"
+"Неинициализирано или нереферирано дърво за бележки не може да се подаде"
#, c-format
msgid "Bad notes.rewriteMode value: '%s'"
@@ -19043,68 +18867,6 @@ msgid "Failed to convert object from %s to %s"
msgstr "Неуспешно преобразуване на „%s“ към „%s“"
#, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr ""
-"директорията за обекти „%s“ не съществува, проверете „.git/objects/info/"
-"alternates“"
-
-#, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "алтернативният път към обекти не може да бъде нормализиран: „%s“"
-
-#, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr ""
-"%s: алтернативните хранилища за обекти се пренебрегват поради прекалено "
-"дълбоко влагане"
-
-msgid "unable to fdopen alternates lockfile"
-msgstr "заключващият файл за алтернативите не може да се отвори с „fdopen“"
-
-msgid "unable to read alternates file"
-msgstr "файлът с алтернативите не може да бъде прочетен"
-
-msgid "unable to move new alternates file into place"
-msgstr "новият файл с алтернативите не може да бъде преместен на мястото му"
-
-#, c-format
-msgid "path '%s' does not exist"
-msgstr "пътят „%s“ не съществува."
-
-#, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr "все още не се поддържа еталонно хранилище „%s“ като свързано."
-
-#, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "еталонното хранилище „%s“ не е локално"
-
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "еталонното хранилище „%s“ е плитко"
-
-#, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "еталонното хранилище „%s“ е с присаждане"
-
-#, c-format
-msgid "could not find object directory matching %s"
-msgstr "директорията с обекти, която отговаря на „%s“, не може да бъде открита"
-
-#, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "неправилен ред при анализа на алтернативните указатели: „%s“"
-
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr ""
-"неуспешен опит за „mmap“ %<PRIuMAX>, което е над позволеното %<PRIuMAX>"
-
-#, c-format
-msgid "mmap failed%s"
-msgstr "неуспешно изпълнение на „mmap“%s"
-
-#, c-format
msgid "object file %s is empty"
msgstr "файлът с обектите „%s“ е празен"
@@ -19122,14 +18884,14 @@ msgstr "непакетираният обект „%s“ не може да се
#, c-format
msgid "unable to parse %s header"
-msgstr "заглавната част на „%s“ не може да бъде анализирана"
+msgstr "заглавната част на „%s“ не може да се анализира"
msgid "invalid object type"
msgstr "неправилен вид обект"
#, c-format
msgid "unable to unpack %s header"
-msgstr "заглавната част на „%s“ не може да бъде разпакетирана"
+msgstr "заглавната част на „%s“ не може да се разпакетира"
#, c-format
msgid "header for %s too long, exceeds %d bytes"
@@ -19140,20 +18902,8 @@ msgid "loose object %s (stored in %s) is corrupt"
msgstr "непакетираният обект „%s“ (в „%s“) е повреден"
#, c-format
-msgid "replacement %s not found for %s"
-msgstr "заместителят „%s“ на „%s“ не може да бъде открит"
-
-#, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "пакетираният обект „%s“ (в „%s“) е повреден"
-
-#, c-format
-msgid "missing mapping of %s to %s"
-msgstr "липсва съответствие на „%s“ към „%s“"
-
-#, c-format
msgid "unable to open %s"
-msgstr "обектът „%s“ не може да бъде отворен"
+msgstr "обектът „%s“ не може да се отвори"
#, c-format
msgid "files '%s' and '%s' differ in contents"
@@ -19161,11 +18911,11 @@ msgstr "съдържанието на файловете „%s“ и „%s“ е
#, c-format
msgid "unable to write file %s"
-msgstr "файлът „%s“ не може да бъде записан"
+msgstr "файлът „%s“ не може да се запише"
#, c-format
msgid "unable to write repeatedly vanishing file %s"
-msgstr "смаляващият се файл „%s“ не може да бъде записван"
+msgstr "смаляващият се файл „%s“ не може да се запише"
#, c-format
msgid "unable to set permission to '%s'"
@@ -19180,7 +18930,7 @@ msgstr ""
"няма права̀ за добавяне на обект към базата от данни на хранилището „%s“"
msgid "unable to create temporary file"
-msgstr "не може да бъде създаден временен файл"
+msgstr "не може да се създаде временен файл"
msgid "unable to write loose object file"
msgstr "грешка при записа на файла с непакетиран обект"
@@ -19211,7 +18961,7 @@ msgstr "неуспешно изпълнение на „deflateEnd“ върху
#, c-format
msgid "unable to create directory %s"
-msgstr "директорията „%s“ не може да бъде създадена"
+msgstr "директорията „%s“ не може да се създаде"
#, c-format
msgid "cannot read object for %s"
@@ -19245,10 +18995,6 @@ msgid "%s: unsupported file type"
msgstr "неподдържан вид файл: „%s“"
#, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "„%s“ е неправилен обект от вид „%s“"
-
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "неправилна контролна сума за „%s“ (трябва да е %s)"
@@ -19258,15 +19004,20 @@ msgstr "неуспешно изпълнение на „mmap“ върху „%s
#, c-format
msgid "unable to unpack header of %s"
-msgstr "заглавната част на „%s“ не може да бъде разпакетирана"
+msgstr "заглавната част на „%s“ не може да се разпакетира"
#, c-format
msgid "unable to parse header of %s"
-msgstr "заглавната част на „%s“ не може да бъде анализирана"
+msgstr "заглавната част на „%s“ не може да се анализира"
+
+#, c-format
+msgid "unable to parse type from header '%s' of %s"
+msgstr ""
+"заглавната част „%s“ на %s не може да се анализира, за да се определи видът"
#, c-format
msgid "unable to unpack contents of %s"
-msgstr "съдържанието на „%s“ не може да бъде разпакетирано"
+msgstr "съдържанието не може да се разпакетира: „%s“"
#. TRANSLATORS: This is a line of ambiguous object
#. output shown when we cannot look up or parse the
@@ -19423,6 +19174,75 @@ msgid "invalid object name '%.*s'."
msgstr "неправилно име на обект: „%.*s“"
#, c-format
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr ""
+"директорията за обекти „%s“ не съществува, проверете „.git/objects/info/"
+"alternates“"
+
+#, c-format
+msgid "unable to normalize alternate object path: %s"
+msgstr "алтернативният път към обекти не може да се нормализира: „%s“"
+
+#, c-format
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr ""
+"%s: алтернативните хранилища за обекти се пренебрегват поради прекалено "
+"дълбоко влагане"
+
+msgid "unable to fdopen alternates lockfile"
+msgstr "заключващият файл за алтернативите не може да се отвори с „fdopen“"
+
+msgid "unable to read alternates file"
+msgstr "файлът с алтернативите не може да се прочете"
+
+msgid "unable to move new alternates file into place"
+msgstr "новият файл с алтернативите не може да се премести на мястото си"
+
+#, c-format
+msgid "path '%s' does not exist"
+msgstr "пътят „%s“ не съществува."
+
+#, c-format
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr "все още не се поддържа еталонно хранилище „%s“ като свързано."
+
+#, c-format
+msgid "reference repository '%s' is not a local repository."
+msgstr "еталонното хранилище „%s“ не е локално"
+
+#, c-format
+msgid "reference repository '%s' is shallow"
+msgstr "еталонното хранилище „%s“ е плитко"
+
+#, c-format
+msgid "reference repository '%s' is grafted"
+msgstr "еталонното хранилище „%s“ е с присаждане"
+
+#, c-format
+msgid "could not find object directory matching %s"
+msgstr "директорията с обекти, която отговаря на „%s“, не може да се открие"
+
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "неправилен ред при анализа на алтернативните указатели: „%s“"
+
+#, c-format
+msgid "replacement %s not found for %s"
+msgstr "заместителят „%s“ на „%s“ липсва"
+
+#, c-format
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "пакетираният обект „%s“ (в „%s“) е повреден"
+
+#, c-format
+msgid "missing mapping of %s to %s"
+msgstr "липсва съответствие на „%s“ към „%s“"
+
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "„%s“ е неправилен обект от вид „%s“"
+
+#, c-format
msgid "invalid object type \"%s\""
msgstr "неправилен вид обект: „%s“"
@@ -19436,7 +19256,7 @@ msgstr "обектът „%s“ е непознат вид: %d"
#, c-format
msgid "unable to parse object: %s"
-msgstr "обектът „%s“ не може да бъде анализиран"
+msgstr "обектът „%s“ не може да се анализира"
#, c-format
msgid "hash mismatch %s"
@@ -19603,7 +19423,7 @@ msgstr "„%s“ липсва в пакет „%s“ при отместване
#, c-format
msgid "unable to get disk usage of '%s'"
-msgstr "използваното място за съхранение на „%s“ не може да бъде получено"
+msgstr "използваното място за съхранение на „%s“ не може да се получи"
#, c-format
msgid "bitmap file '%s' has invalid checksum"
@@ -19736,6 +19556,14 @@ msgid "%s isn't available"
msgstr "опцията „%s“ не е налична"
#, c-format
+msgid "value %s for %s not in range [%<PRIdMAX>,%<PRIdMAX>]"
+msgstr "стойността %s за „%s“ е извън диапазона [%<PRIdMAX>,%<PRIdMAX>]"
+
+#, c-format
+msgid "%s expects an integer value with an optional k/m/g suffix"
+msgstr "„%s“ очаква цяло число, евентуално със суфикс „k“/„m“/„g“"
+
+#, c-format
msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
msgstr ""
"„%s“ очаква неотрицателно цяло число, евентуално със суфикс „k“/„m“/„g“"
@@ -19896,10 +19724,6 @@ msgid "bad boolean environment value '%s' for '%s'"
msgstr "неправилна булева стойност „%s“ за „%s“"
#, c-format
-msgid "failed to parse %s"
-msgstr "„%s“ не може да бъде анализиран"
-
-#, c-format
msgid "failed to walk children of tree %s: not found"
msgstr "неуспешно обхождане на дъщерните елементи на дървото „%s“: то липсва"
@@ -20064,8 +19888,12 @@ msgid "could not fetch %s from promisor remote"
msgstr "„%s“ не може да се достави от гарантиращото хранилище"
#, c-format
-msgid "known remote named '%s' but with url '%s' instead of '%s'"
-msgstr "има хранилище с име „%s“, но адресът му сочи към „%s“, а не към „%s“"
+msgid "no or empty URL advertised for remote '%s'"
+msgstr "липсващ или празен адрес за отдалечено хранилище „%s“"
+
+#, c-format
+msgid "known remote named '%s' but with URL '%s' instead of '%s'"
+msgstr "има хранилище с име „%s“, но адресът му е „%s“, а не „%s“"
#, c-format
msgid "unknown '%s' value for '%s' config option"
@@ -20088,7 +19916,7 @@ msgstr "Изтриване на повтарящите се обекти"
#, c-format
msgid "failed to load pseudo-merge regex for %s: '%s'"
msgstr ""
-"регулярният израз за псевдо сливания за „%s“, не може да бъде зареден: „%s“"
+"регулярният израз за псевдо сливания за „%s“, не може да се зареди: „%s“"
#, c-format
msgid "%s must be non-negative, using default"
@@ -20154,7 +19982,7 @@ msgstr ""
#, c-format
msgid "could not parse commit '%s'"
-msgstr "подаването „%s“ не може да бъде анализирано"
+msgstr "подаването „%s“ не може да се анализира"
#, c-format
msgid ""
@@ -20173,7 +20001,7 @@ msgstr "неуспешно търсене на разлика"
#, c-format
msgid "could not parse log for '%s'"
-msgstr "журналът с подаванията на „%s“ не може да бъде анализиран"
+msgstr "журналът с подаванията на „%s“ не може да се анализира"
#, c-format
msgid "invalid extra cruft tip: '%s'"
@@ -20185,7 +20013,7 @@ msgstr "допълнителните скорошни обекти не може
#, c-format
msgid "will not add file alias '%s' ('%s' already exists in index)"
msgstr ""
-"няма да бъде добавен псевдоним за файл „%s“ („%s“ вече съществува в индекса)"
+"няма да се добави псевдоним за файл „%s“ („%s“ вече съществува в индекса)"
msgid "cannot create an empty blob in the object database"
msgstr "в базата от данни за обектите не може да се създаде празен обект-BLOB"
@@ -20198,7 +20026,7 @@ msgstr ""
#, c-format
msgid "unable to index file '%s'"
-msgstr "файлът „%s“ не може да бъде индексиран"
+msgstr "файлът „%s“ не може да се индексира"
#, c-format
msgid "unable to add '%s' to index"
@@ -20319,7 +20147,7 @@ msgid "cannot write split index for a sparse index"
msgstr "не може да се запише разделѐн, частичен индекс"
msgid "failed to convert to a sparse-index"
-msgstr "индексът не може да бъде превърнат в частичен"
+msgstr "индексът не може да се превърне в частичен"
#, c-format
msgid "unable to open git dir: %s"
@@ -20438,7 +20266,7 @@ msgid ""
"If you remove a line here THAT COMMIT WILL BE LOST.\n"
msgstr ""
"\n"
-"Ако изтриете ред, съответстващото му подаване ще бъде ИЗТРИТО.\n"
+"Ако изтриете ред, съответстващото му подаване ще се ИЗТРИЕ.\n"
msgid ""
"\n"
@@ -20460,7 +20288,7 @@ msgid ""
"\n"
msgstr ""
"\n"
-"Ако изтриете всичко, пребазирането ще бъде преустановено.\n"
+"Ако изтриете всичко, пребазирането ще се преустанови.\n"
"\n"
#, c-format
@@ -20745,7 +20573,7 @@ msgstr ""
#, c-format
msgid "could not retrieve `%s`"
-msgstr "„%s“ не може да бъде получен"
+msgstr "„%s“ не може да се получи"
#, c-format
msgid "invalid branch name: %s = %s"
@@ -20812,7 +20640,7 @@ msgstr "невъзможно е едновременно да се обрабо�
#, c-format
msgid "could not delete reference %s: %s"
-msgstr "Указателят „%s“ не може да бъде изтрит: %s"
+msgstr "Указателят „%s“ не може да се изтрие: %s"
#, c-format
msgid "could not delete references: %s"
@@ -20843,12 +20671,16 @@ msgstr "файлът с указател „%s“ не може да се про
#, c-format
msgid "cannot open directory %s"
-msgstr "директорията „%s“ не може да бъде отворена"
+msgstr "директорията „%s“ не може да се отвори"
msgid "Checking references consistency"
msgstr "Проверка на валидността на указателите"
#, c-format
+msgid "unable to open '%s'"
+msgstr "„%s“ не може да се отвори"
+
+#, c-format
msgid "refname is dangerous: %s"
msgstr "опасно име на указател: %s"
@@ -20914,17 +20746,13 @@ msgstr "стекът не може да се свие: %s"
#, c-format
msgid "refname %s not found"
-msgstr "името на указателя „%s“ не може да бъде открито"
+msgstr "името на указателя „%s“ не може да се открие"
#, c-format
msgid "refname %s is a symbolic ref, copying it is not supported"
msgstr "името на указател „%s“ е символен указател, не може да се копира"
#, c-format
-msgid "invalid refspec '%s'"
-msgstr "неправилен указател: „%s“"
-
-#, c-format
msgid "pattern '%s' has no '*'"
msgstr "шаблонът „%s“ не съдържа „*“"
@@ -21003,13 +20831,12 @@ msgstr "толкова големи изтласквания не може да
#, c-format
msgid "cannot deflate request; zlib deflate error %d"
msgstr ""
-"заявката не може да бъде декомпресирана, грешка от „zlib“ при "
-"декомпресиране: %d"
+"заявката не може да се декомпресира, грешка от „zlib“ при декомпресиране: %d"
#, c-format
msgid "cannot deflate request; zlib end error %d"
msgstr ""
-"заявката не може да бъде декомпресирана; грешка от „zlib“ при завършване: %d<"
+"заявката не може да се декомпресира; грешка от „zlib“ при завършване: %d"
#, c-format
msgid "%d bytes of length header were received"
@@ -21071,8 +20898,7 @@ msgid ""
"If you cannot, please let us know why you still need to use it by\n"
"sending an e-mail to <git@vger.kernel.org>."
msgstr ""
-"изчитането на отдалеченото хранилище от „%s/%s“ предстои да бъде "
-"премахнато.\n"
+"изчитането на отдалеченото хранилище от „%s/%s“ предстои да се премахне.\n"
"Ако все още ползвате директорията „remotes/“, препоръчваме да я мигрирате\n"
"към следящи директории на база настройки чрез командата:\n"
"\n"
@@ -21244,7 +21070,7 @@ msgstr "простото (simple) изтласкване не съответст
#, c-format
msgid "couldn't find remote ref %s"
-msgstr "отдалеченият указател „%s“ не може да бъде открит"
+msgstr "отдалеченият указател „%s“ липсва"
#, c-format
msgid "* Ignoring funny ref '%s' locally"
@@ -21282,8 +21108,8 @@ msgstr " (публикувайте локалните промѐни чрез
msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
msgid_plural ""
"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
-msgstr[0] "Клонът ви е с %2$d подаване зад „%1$s“ и може да бъде превъртян.\n"
-msgstr[1] "Клонът ви е с %2$d подавания зад „%1$s“ и може да бъде превъртян.\n"
+msgstr[0] "Клонът ви е с %2$d подаване зад „%1$s“ и може да се превърти.\n"
+msgstr[1] "Клонът ви е с %2$d подавания зад „%1$s“ и може да се превърти.\n"
msgid " (use \"git pull\" to update your local branch)\n"
msgstr " (обновете локалния си клон чрез „git pull“)\n"
@@ -21308,7 +21134,7 @@ msgstr " (слейте отдалечения клон в локалния чр
#, c-format
msgid "cannot parse expected object name '%s'"
-msgstr "очакваното име на обект „%s“ не може да бъде анализирано"
+msgstr "очакваното име на обект „%s“ не може да се анализира"
#, c-format
msgid "cannot strip one component off url '%s'"
@@ -21330,7 +21156,7 @@ msgid "corrupt MERGE_RR"
msgstr "повреден „MERGE_RR“ (запис за коригиране на конфликт)"
msgid "unable to write rerere record"
-msgstr "приложеното коригиране на конфликт не може да бъде записано"
+msgstr "приложеното коригиране на конфликт не може да се запише"
#, c-format
msgid "there were errors while writing '%s' (%s)"
@@ -21400,7 +21226,7 @@ msgstr "не може да се определи към какво да сочи
#, c-format
msgid "failed to find tree of %s"
-msgstr "дървото, сочено от „%s“, не може да бъде открито"
+msgstr "дървото, сочено от „%s“, не може да се открие"
#, c-format
msgid "unsupported section for hidden refs: %s"
@@ -21428,7 +21254,7 @@ msgstr ""
#, c-format
msgid "could not get commit for --ancestry-path argument %s"
-msgstr "подаването „%s“ към опцията „--ancestry-path“ не може да бъде получено"
+msgstr "подаването „%s“ към опцията „--ancestry-path“ не може да се получи"
msgid "--unpacked=<packfile> no longer supported"
msgstr "опцията „--unpacked=ПАКЕТЕН_ФАЙЛ“ вече не се поддържа"
@@ -21483,11 +21309,11 @@ msgstr "директория не може да се зачисли"
msgid "could not set recommended config"
msgstr "препоръчаните настройки не може да се зададат"
-msgid "could not turn on maintenance"
-msgstr "задачите по поддръжка не може да се включат"
+msgid "could not toggle maintenance"
+msgstr "режимът на задачите по поддръжка не може да се превключи"
msgid "could not start the FSMonitor daemon"
-msgstr "фоновият процес на FSMonitor не може да бъде спрян"
+msgstr "фоновият процес на FSMonitor не може да се спре"
msgid "could not turn off maintenance"
msgstr "задачите по поддръжка не може да се изключат"
@@ -21508,13 +21334,13 @@ msgid "failed to get default branch name"
msgstr "неуспешно получаване на името на стандартния клон"
msgid "failed to unregister repository"
-msgstr "хранилището не може да бъде отчислено"
+msgstr "хранилището не може да се отчисли"
msgid "failed to stop the FSMonitor daemon"
-msgstr "фоновият процес FSMonitor не може да бъде спрян"
+msgstr "фоновият процес FSMonitor не може да се спре"
msgid "failed to delete enlistment directory"
-msgstr "зачислената директория не може да бъде изтрита"
+msgstr "зачислената директория не може да се изтрие"
msgid "branch to checkout after clone"
msgstr "към кой клон да се премине след клониране"
@@ -21531,12 +21357,16 @@ msgstr "създаване на хранилище в директория „sr
msgid "specify if tags should be fetched during clone"
msgstr "указва дали етикетите да се доставят при клониране"
+msgid "specify if background maintenance should be enabled"
+msgstr "дали на заден фон да се изпълняват задачи за поддръжката"
+
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch ОСНОВЕН_КЛОН] [--full-clone]\n"
-" [--[no-]src] [--[no-]tags] АДРЕС [ЗАЧИСЛЕНА_ДИРЕКТОРИЯ]"
+" [--[no-]src] [--[no-]tags] [--[no-]maintenance] АДРЕС "
+"[ЗАЧИСЛЕНА_ДИРЕКТОРИЯ]"
#, c-format
msgid "cannot deduce worktree name from '%s'"
@@ -21548,7 +21378,7 @@ msgstr "директорията „%s“ вече съществува"
#, c-format
msgid "failed to get default branch for '%s'"
-msgstr "основният клон на „%s“ не може да бъде получен"
+msgstr "основният клон на „%s“ не може да се получи"
#, c-format
msgid "could not configure remote in '%s'"
@@ -21574,19 +21404,33 @@ msgstr "scalar diagnose [ЗАЧИСЛЕНА_ДИРЕКТОРИЯ]"
msgid "`scalar list` does not take arguments"
msgstr "„scalar list“ не приема аргументи"
-msgid "scalar register [<enlistment>]"
-msgstr "scalar register [ЗАЧИСЛЕНА_ДИРЕКТОРИЯ]"
+msgid "scalar register [--[no-]maintenance] [<enlistment>]"
+msgstr "scalar register [--[no-]maintenance] [ЗАЧИСЛЕНА_ДИРЕКТОРИЯ]"
msgid "reconfigure all registered enlistments"
msgstr "пренастройване на всички зачислени директории"
-msgid "scalar reconfigure [--all | <enlistment>]"
-msgstr "scalar reconfigure [--all|ЗАЧИСЛЕНА_ДИРЕКТОРИЯ]"
+msgid "(enable|disable|keep)"
+msgstr "(enable=включване|disable=изключване|keep=запазване)"
+
+msgid "signal how to adjust background maintenance"
+msgstr "как да се промени поддръжката на заден фон"
+
+msgid ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enlistment>]"
+msgstr ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all|"
+"ЗАЧИСЛЕНА_ДИРЕКТОРИЯ]"
msgid "--all or <enlistment>, but not both"
msgstr "опцията „--all“ и указването на зачислена директория не са съвместими"
#, c-format
+msgid "unknown mode for --maintenance option: %s"
+msgstr "непознат режим за „--maintenance“: „%s“"
+
+#, c-format
msgid "could not remove stale scalar.repo '%s'"
msgstr "остарялото скаларно хранилище (scalar.repo) „%s“ не може да се изтрие"
@@ -21633,7 +21477,7 @@ msgid "scalar delete <enlistment>"
msgstr "scalar delete ЗАЧИСЛЕНА_ДИРЕКТОРИЯ"
msgid "refusing to delete current working directory"
-msgstr "текущата работна директория няма да бъде изтрита"
+msgstr "текущата работна директория няма да се изтрие"
msgid "include Git version"
msgstr "включване и на версията на git"
@@ -21670,15 +21514,14 @@ msgstr ""
#, c-format
msgid "unable to parse remote unpack status: %s"
-msgstr ""
-"състоянието от отдалеченото разпакетиране не може да бъде анализирано: %s"
+msgstr "състоянието от отдалеченото разпакетиране не може да се анализира: %s"
#, c-format
msgid "remote unpack failed: %s"
msgstr "неуспешно отдалечено разпакетиране: %s"
msgid "failed to sign the push certificate"
-msgstr "сертификатът за изтласкване не може да бъде подписан"
+msgstr "сертификатът за изтласкване не може да се подпише"
msgid "send-pack: unable to fork off fetch subprocess"
msgstr "send-pack: неуспешно създаване на процес"
@@ -21712,7 +21555,7 @@ msgstr "несъществуващ режим на изчистване „%s“
#, c-format
msgid "could not delete '%s'"
-msgstr "„%s“ не може да бъде изтрит"
+msgstr "„%s“ не може да се изтрие"
msgid "revert"
msgstr "отмяна"
@@ -21826,13 +21669,13 @@ msgstr "подайте или скатайте промѐните, за да �
#.
#, c-format
msgid "%s: Unable to write new index file"
-msgstr "%s: новият индекс не може да бъде запазен"
+msgstr "%s: новият индекс не може да се запази"
msgid "unable to update cache tree"
-msgstr "кешът на обектите-дървета не може да бъде обновен"
+msgstr "кешът на обектите-дървета не може да се обнови"
msgid "could not resolve HEAD commit"
-msgstr "подаването, сочено от указателя „HEAD“, не може да бъде открито"
+msgstr "подаването, сочено от указателя „HEAD“, липсва"
#, c-format
msgid "no key present in '%.*s'"
@@ -21840,7 +21683,7 @@ msgstr "в „%.*s“ няма ключове"
#, c-format
msgid "unable to dequote value of '%s'"
-msgstr "цитирането на стойността на „%s“ не може да бъде изчистено"
+msgstr "цитирането на стойността на „%s“ не може да се изчисти"
msgid "'GIT_AUTHOR_NAME' already given"
msgstr "настройката за автор „GIT_AUTHOR_NAME“ вече е зададена"
@@ -21949,15 +21792,13 @@ msgstr ""
" git commit --amend --reset-author\n"
msgid "couldn't look up newly created commit"
-msgstr "току що създаденото подаване не може да бъде открито"
+msgstr "току що създаденото подаване липсва"
msgid "could not parse newly created commit"
-msgstr "току що създаденото подаване не може да бъде анализирано"
+msgstr "току що създаденото подаване не може да се анализира"
msgid "unable to resolve HEAD after creating commit"
-msgstr ""
-"състоянието сочено от указателя „HEAD“ не може да бъде открито след "
-"подаването"
+msgstr "състоянието сочено от указателя „HEAD“ липсва след подаването"
msgid "detached HEAD"
msgstr "несвързан връх „HEAD“"
@@ -21966,18 +21807,18 @@ msgid " (root-commit)"
msgstr " (начално подаване)"
msgid "could not parse HEAD"
-msgstr "указателят „HEAD“ не може да бъде анализиран"
+msgstr "указателят „HEAD“ не може да се анализира"
#, c-format
msgid "HEAD %s is not a commit!"
msgstr "указателят „HEAD“ „%s“ сочи към нещо, което не е подаване!"
msgid "unable to parse commit author"
-msgstr "авторът на подаването не може да бъде анализиран"
+msgstr "авторът на подаването не може да се анализира"
#, c-format
msgid "unable to read commit message from '%s'"
-msgstr "съобщението за подаване не може да бъде прочетено от „%s“"
+msgstr "съобщението за подаване не може да се прочете от „%s“"
#, c-format
msgid "invalid author identity '%s'"
@@ -21992,7 +21833,7 @@ msgstr "„%s“ не може да се обнови"
#, c-format
msgid "could not parse parent commit %s"
-msgstr "родителското подаване „%s“ не може да бъде анализирано"
+msgstr "родителското подаване „%s“ не може да се анализира"
#, c-format
msgid "unknown command: %d"
@@ -22006,11 +21847,11 @@ msgid "This is the commit message #%d:"
msgstr "Това е съобщение при подаване №%d:"
msgid "The 1st commit message will be skipped:"
-msgstr "Съобщението при подаване №1 ще бъде прескочено:"
+msgstr "Съобщението при подаване №1 ще се прескочи:"
#, c-format
msgid "The commit message #%d will be skipped:"
-msgstr "Съобщението при подаване №%d ще бъде прескочено:"
+msgstr "Съобщението при подаване №%d ще се прескочи:"
#, c-format
msgid "This is a combination of %d commits."
@@ -22027,12 +21868,11 @@ msgid "could not read HEAD"
msgstr "указателят „HEAD“ не може да се прочете"
msgid "could not read HEAD's commit message"
-msgstr ""
-"съобщението за подаване към указателя „HEAD“ не може да бъде прочетено: %s"
+msgstr "съобщението за подаване към указателя „HEAD“ не може да се прочете: %s"
#, c-format
msgid "could not read commit message of %s"
-msgstr "съобщението за подаване към „%s“ не може да бъде прочетено"
+msgstr "съобщението за подаване към „%s“ не може да се прочете"
msgid "your index file is unmerged."
msgstr "индексът не е слят."
@@ -22060,11 +21900,11 @@ msgstr "%s: неразпозната стойност за родителско�
#, c-format
msgid "could not revert %s... %s"
-msgstr "подаването „%s“… не може да бъде отменено: „%s“"
+msgstr "подаването „%s“… не може да се отменени: „%s“"
#, c-format
msgid "could not apply %s... %s"
-msgstr "подаването „%s“… не може да бъде приложено: „%s“"
+msgstr "подаването „%s“… не може да се приложи: „%s“"
#, c-format
msgid "dropping %s %s -- patch contents already upstream\n"
@@ -22211,24 +22051,23 @@ msgstr "използвайте „git cherry-pick (--continue|%s--abort|--quit)�
#, c-format
msgid "could not create sequencer directory '%s'"
msgstr ""
-"директорията за определянето на последователността „%s“ не може да бъде "
-"създадена"
+"директорията за определянето на последователността „%s“ не може да се създаде"
msgid "no cherry-pick or revert in progress"
msgstr ""
"в момента не се извършва отбиране на подавания или пребазиране на клона"
msgid "cannot resolve HEAD"
-msgstr "Подаването сочено от указателя „HEAD“ не може да бъде открито"
+msgstr "Подаването сочено от указателя „HEAD“ липсва"
msgid "cannot abort from a branch yet to be born"
msgstr ""
-"действието не може да бъде преустановено, когато сте на клон, който тепърва "
-"предстои да бъде създаден"
+"действието не може да се преустанови, когато сте на клон, който тепърва "
+"предстои да се създаде"
#, c-format
msgid "cannot read '%s': %s"
-msgstr "„%s“ не може да бъде прочетен: %s"
+msgstr "„%s“ не може да се прочете: %s"
msgid "unexpected end of file"
msgstr "неочакван край на файл"
@@ -22266,10 +22105,10 @@ msgstr ""
" git %s --continue"
msgid "cannot read HEAD"
-msgstr "указателят „HEAD“ не може да бъде прочетен"
+msgstr "указателят „HEAD“ не може да се прочете"
msgid "could not write commit message file"
-msgstr "файлът със съобщението за подаване не може да бъде записан"
+msgstr "файлът със съобщението за подаване не може да се запише"
#, c-format
msgid ""
@@ -22291,7 +22130,7 @@ msgstr ""
#, c-format
msgid "Could not apply %s... %.*s"
-msgstr "Подаването „%s“… не може да бъде приложено: „%.*s“"
+msgstr "Подаването „%s“… не може да се приложи: „%.*s“"
#, c-format
msgid "Could not merge %.*s"
@@ -22340,7 +22179,7 @@ msgstr "неправилно име на етикет: „%.*s“"
#, c-format
msgid "could not resolve '%s'"
-msgstr "„%s“ не може да бъде открит"
+msgstr "„%s“ липсва"
msgid "writing fake root commit"
msgstr "запазване на фалшиво начално подаване"
@@ -22364,14 +22203,14 @@ msgstr "върху начално подаване не може да се из�
#, c-format
msgid "could not get commit message of '%s'"
-msgstr "съобщението за подаване към „%s“ не може да бъде получено"
+msgstr "съобщението за подаване към „%s“ не може да се получи"
#, c-format
msgid "could not even attempt to merge '%.*s'"
msgstr "сливането на „%.*s“ не може даже да започне"
msgid "merge: Unable to write new index file"
-msgstr "сливане: новият индекс не може да бъде запазен"
+msgstr "сливане: новият индекс не може да се запази"
#, c-format
msgid ""
@@ -22405,7 +22244,7 @@ msgstr "Неочакван резултат при скатаване: „%s“"
#, c-format
msgid "Could not create directory for '%s'"
-msgstr "Директорията за „%s“ не може да бъде създадена"
+msgstr "Директорията за „%s“ не може да се създаде"
#, c-format
msgid "Created autostash: %s\n"
@@ -22420,7 +22259,7 @@ msgstr "Автоматично скатаното е приложено.\n"
#, c-format
msgid "cannot store %s"
-msgstr "„%s“ не може да бъде запазен"
+msgstr "„%s“ не може да се запази"
#, c-format
msgid ""
@@ -22464,7 +22303,7 @@ msgid ""
" git rebase --edit-todo\n"
" git rebase --continue\n"
msgstr ""
-"Следната запланувана команда не може да бъде изпълнена:\n"
+"Следната запланувана команда не може да се изпълни:\n"
"\n"
" %.*s\n"
"\n"
@@ -22495,7 +22334,7 @@ msgstr "указателят за „onto“ не може да се проче�
#, c-format
msgid "could not update HEAD to %s"
-msgstr "„HEAD“ не може да бъде обновен до „%s“"
+msgstr "„HEAD“ не може да се обнови до „%s“"
#, c-format
msgid "Successfully rebased and updated %s.\n"
@@ -22526,10 +22365,10 @@ msgstr ""
#, c-format
msgid "could not write file: '%s'"
-msgstr "файлът „%s“ не може да бъде записан"
+msgstr "файлът „%s“ не може да се запише"
msgid "could not remove CHERRY_PICK_HEAD"
-msgstr "указателят „CHERRY_PICK_HEAD“ не може да бъде изтрит"
+msgstr "указателят „CHERRY_PICK_HEAD“ не може да се изтрие"
msgid "could not commit staged changes."
msgstr "промѐните в индекса не може да бъдат подадени."
@@ -22543,7 +22382,7 @@ msgid "%s: bad revision"
msgstr "%s: неправилна версия"
msgid "can't revert as initial commit"
-msgstr "първоначалното подаване не може да бъде отменено"
+msgstr "първоначалното подаване не може да се отмени"
#, c-format
msgid "skipped previously applied commit %s"
@@ -22676,7 +22515,7 @@ msgstr "процесът не може да се върне към предиш�
#, c-format
msgid "failed to stat '%*s%s%s'"
-msgstr "не може да бъде получена информация чрез „stat“ за „%*s%s%s“"
+msgstr "не може да се получи информация чрез „stat“ за „%*s%s%s“"
#, c-format
msgid "safe.directory '%s' not absolute"
@@ -22695,7 +22534,7 @@ msgstr ""
" git config --global --add safe.directory %s"
msgid "Unable to read current working directory"
-msgstr "Текущата работна директория не може да бъде прочетена"
+msgstr "Текущата работна директория не може да се прочете"
#, c-format
msgid "cannot change to '%s'"
@@ -22743,11 +22582,11 @@ msgstr "не може да се получи информация чрез „st
#, c-format
msgid "cannot opendir '%s'"
-msgstr "директорията „%s“ не може да бъде отворена"
+msgstr "директорията „%s“ не може да се отвори"
#, c-format
msgid "cannot readlink '%s'"
-msgstr "връзката „%s“ не може да бъде прочетена"
+msgstr "връзката „%s“ не може да се прочете"
#, c-format
msgid "cannot symlink '%s' '%s'"
@@ -22897,7 +22736,7 @@ msgstr ""
#, c-format
msgid "Could not update .gitmodules entry %s"
-msgstr "Записът „%s“ във файла „.gitmodules“ не може да бъде променен"
+msgstr "Записът „%s“ във файла „.gitmodules“ не може да се промени"
msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
msgstr ""
@@ -22910,7 +22749,7 @@ msgstr "Във файла „.gitmodules“ липсва раздел за ди�
#, c-format
msgid "Could not remove .gitmodules entry for %s"
-msgstr "Записът „%s“ във файла „.gitmodules“ не може да бъде изтрит"
+msgstr "Записът „%s“ във файла „.gitmodules“ не може да се изтрие"
msgid "staging updated .gitmodules failed"
msgstr "неуспешно добавяне на променения файл „.gitmodules“ в индекса"
@@ -22957,7 +22796,7 @@ msgstr "Изтласкване на подмодула „%s“\n"
#, c-format
msgid "Unable to push submodule '%s'\n"
-msgstr "Подмодулът „%s“ не може да бъде изтласкан\n"
+msgstr "Подмодулът „%s“ не може да се изтласка\n"
#, c-format
msgid "Fetching submodule %s%s\n"
@@ -22965,11 +22804,11 @@ msgstr "Доставяне на подмодула „%s%s“\n"
#, c-format
msgid "Could not access submodule '%s'\n"
-msgstr "Подмодулът „%s“ не може да бъде достъпен\n"
+msgstr "Подмодулът „%s“ не може да се достъпи\n"
#, c-format
msgid "Could not access submodule '%s' at commit %s\n"
-msgstr "Подмодулът „%s“ не може да бъде достъпен при подаване %s\n"
+msgstr "Подмодулът „%s“ не може да се достъпи при подаване %s\n"
#, c-format
msgid "Fetching submodule %s%s at commit %s\n"
@@ -23045,7 +22884,7 @@ msgstr ""
#, c-format
msgid "could not lookup name for submodule '%s'"
-msgstr "името на подмодула „%s“ не може да бъде намерено"
+msgstr "името на подмодула „%s“ не може да се намери"
#, c-format
msgid "refusing to move '%s' into an existing git dir"
@@ -23070,7 +22909,7 @@ msgstr "„ls-tree“ завърши с неочакван изходен код
#, c-format
msgid "failed to lstat '%s'"
-msgstr "не може да бъде получена информация чрез „lstat“ за „%s“"
+msgstr "не може да се получи информация чрез „lstat“ за „%s“"
msgid "no remote configured to get bundle URIs from"
msgstr "не е настроено отдалечено хранилище за списъците с адреси на пратки"
@@ -23089,6 +22928,9 @@ msgstr ""
"какъв брой записи в кеша на обектите-дървета да се отбележат като невалидни "
"(стандартно е 0)"
+msgid "the number of objects to write"
+msgstr "брой записани обекти"
+
msgid "test-tool path-walk <options> -- <revision-options>"
msgstr "test-tool path-walk ОПЦИЯ… -- ОПЦИЯ_ЗА_ВЕРСИИ…"
@@ -23219,7 +23061,7 @@ msgstr "неуспешен пълен запис към насрещната п�
#, c-format
msgid "unable to find remote helper for '%s'"
-msgstr "насрещната помощна програма за „%s“ не може да бъде открита"
+msgstr "насрещната помощна програма за „%s“ липсва"
msgid "can't dup helper output fd"
msgstr ""
@@ -23332,7 +23174,7 @@ msgid ""
"Perhaps you should specify a branch.\n"
msgstr ""
"Няма общи указатели, не са указани никакви указатели —\n"
-"нищо няма да бъде направено. Пробвайте да укажете клон.\n"
+"нищо няма да се направи. Пробвайте да укажете клон.\n"
#, c-format
msgid "unsupported object format '%s'"
@@ -23379,7 +23221,7 @@ msgstr "Клонът „%s“ ще следи „%s“ от „%s“\n"
#, c-format
msgid "could not read bundle '%s'"
-msgstr "пратката на git „%s“ не може да бъде прочетена"
+msgstr "пратката на git „%s“ не може да се прочете"
#, c-format
msgid "transport: invalid depth option '%s'"
@@ -23530,7 +23372,7 @@ msgid ""
"Refusing to remove the current working directory:\n"
"%s"
msgstr ""
-"Текущата работна директория няма да бъде изтрита:\n"
+"Текущата работна директория няма да се изтрие:\n"
"%s"
#, c-format
@@ -23640,7 +23482,7 @@ msgid ""
"Cannot update submodule:\n"
"%s"
msgstr ""
-"Подмодулът не може да бъде обновен:\n"
+"Подмодулът не може да се обнови:\n"
"„%s“"
#, c-format
@@ -23815,7 +23657,7 @@ msgstr "файлът „gitdir“ не съществува"
#, c-format
msgid "unable to read gitdir file (%s)"
-msgstr "файлът „gitdir“ не може да бъде прочетен (%s)"
+msgstr "файлът „gitdir“ не може да се прочете (%s)"
#, c-format
msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
@@ -23854,11 +23696,11 @@ msgstr "променливата на средата „%s“ не може да
#, c-format
msgid "unable to create '%s'"
-msgstr "пакетният файл „%s“ не може да бъде създаден"
+msgstr "пакетният файл „%s“ не може да се създаде"
#, c-format
msgid "could not open '%s' for reading and writing"
-msgstr "„%s“ не може да бъде отворен и за четене, и за запис"
+msgstr "„%s“ не може да се отвори и за четене, и за запис"
#, c-format
msgid "unable to access '%s'"
@@ -23870,6 +23712,15 @@ msgstr "текущата работна директория е недостъп
msgid "unable to get random bytes"
msgstr "не може да се получат случайни байтове"
+#, c-format
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr ""
+"неуспешен опит за „mmap“ %<PRIuMAX>, което е над позволеното %<PRIuMAX>"
+
+#, c-format
+msgid "mmap failed%s"
+msgstr "неуспешно изпълнение на „mmap“%s"
+
msgid "Unmerged paths:"
msgstr "Неслети пътища:"
@@ -24001,7 +23852,7 @@ msgid ""
"Everything below it will be ignored."
msgstr ""
"Не променяйте и не изтривайте горния ред.\n"
-"Всичко отдолу ще бъде изтрито."
+"Всичко отдолу ще се изтрие."
#, c-format
msgid ""
@@ -24639,8 +24490,15 @@ msgstr ""
"използвайте опцията: „--smtp-debug“."
#, perl-format
+msgid "Outlook reassigned Message-ID to: %s\n"
+msgstr "Outlook промени „Message-ID“ да е: %s\n"
+
+msgid "Warning: Could not retrieve Message-ID from server response.\n"
+msgstr "ПРЕДУПРЕЖДЕНИЕ: в отговора на сървъра липсва „Message-ID“.\n"
+
+#, perl-format
msgid "Failed to send %s\n"
-msgstr "„%s“ не може да бъде изпратен\n"
+msgstr "„%s“ не може да се изпрати\n"
#, perl-format
msgid "Dry-Sent %s"
@@ -24664,7 +24522,7 @@ msgstr "Резултат: успех"
#, perl-format
msgid "can't open file %s"
-msgstr "файлът „%s“ не може да бъде отворен"
+msgstr "файлът „%s“ не може да се отвори"
#, perl-format
msgid "(mbox) Adding cc: %s from line '%s'\n"
@@ -24684,7 +24542,7 @@ msgstr "(тяло) Добавяне на „як: %s“ от ред „%s“\n"
#, perl-format
msgid "(%s) Could not execute '%s'"
-msgstr "(%s) Не може да бъде се изпълни „%s“"
+msgstr "(%s) Не може да се изпълни „%s“"
#, perl-format
msgid "(%s) Malformed output from '%s'"
diff --git a/po/de.po b/po/de.po
index 4d9c46fb19..6b65bb6180 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2025-03-06 18:29+0100\n"
-"PO-Revision-Date: 2025-03-07 17:28+0100\n"
+"POT-Creation-Date: 2025-05-27 22:57+0000\n"
+"PO-Revision-Date: 2025-05-31 18:38+0200\n"
"Last-Translator: Ralf Thielow <ralf.thielow@gmail.com>\n"
"Language-Team: German\n"
"Language: de\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"X-Generator: Poedit 3.4.4\n"
+"X-Generator: Poedit 3.6\n"
#, c-format
msgid "Huh (%s)?"
@@ -379,8 +379,8 @@ msgstr "Ergänzung im Index und Arbeitsverzeichnis verwerfen [y,n,q,a,d%s,?]? "
#, c-format
msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
msgstr ""
-"Diesen Patch-Block im Index und Arbeitsverzeichnis verwerfen [y,n,q,a,"
-"d%s,?]? "
+"Diesen Patch-Block im Index und Arbeitsverzeichnis verwerfen "
+"[y,n,q,a,d%s,?]? "
msgid ""
"y - discard this hunk from index and worktree\n"
@@ -411,8 +411,8 @@ msgstr "Ergänzung auf Index und Arbeitsverzeichnis anwenden [y,n,q,a,d%s,?]? "
#, c-format
msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
msgstr ""
-"Diesen Patch-Block auf Index und Arbeitsverzeichnis anwenden [y,n,q,a,"
-"d%s,?]? "
+"Diesen Patch-Block auf Index und Arbeitsverzeichnis anwenden "
+"[y,n,q,a,d%s,?]? "
msgid ""
"y - apply this hunk to index and worktree\n"
@@ -1746,10 +1746,12 @@ msgstr ""
msgid "not tracking: ambiguous information for ref '%s'"
msgstr "kein Tracking: mehrdeutige Informationen für Referenz '%s'"
+#. #-#-#-#-# branch.c.po #-#-#-#-#
#. TRANSLATORS: This is a line listing a remote with duplicate
#. refspecs in the advice message below. For RTL languages you'll
#. probably want to swap the "%s" and leading " " space around.
#.
+#. #-#-#-#-# object-name.c.po #-#-#-#-#
#. TRANSLATORS: This is line item of ambiguous object output
#. from describe_ambiguous_object() above. For RTL languages
#. you'll probably want to swap the "%s" and leading " " space
@@ -3096,11 +3098,11 @@ msgid "HEAD not found below refs/heads!"
msgstr "HEAD wurde nicht unter \"refs/heads\" gefunden!"
msgid ""
-"branch with --recurse-submodules can only be used if submodule."
-"propagateBranches is enabled"
+"branch with --recurse-submodules can only be used if "
+"submodule.propagateBranches is enabled"
msgstr ""
-"Branch mit --recurse-submodules kann nur genutzt werden, wenn submodule."
-"propagateBranches aktiviert ist"
+"Branch mit --recurse-submodules kann nur genutzt werden, wenn "
+"submodule.propagateBranches aktiviert ist"
msgid "--recurse-submodules can only be used to create branches"
msgstr "--recurse-submodules kann nur genutzt werden, um Branches zu erstellen"
@@ -3355,11 +3357,8 @@ msgstr "Nur eine Batch-Option erlaubt."
msgid "git cat-file <type> <object>"
msgstr "git cat-file <Typ> <Objekt>"
-msgid "git cat-file (-e | -p) <object>"
-msgstr "git cat-file (-e | -p) <Objekt>"
-
-msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
-msgstr "git cat-file (-t | -s) [--allow-unknown-type] <Objekt>"
+msgid "git cat-file (-e | -p | -t | -s) <object>"
+msgstr "git cat-file (-e | -p | -t | -s) <Objekt>"
msgid ""
"git cat-file (--textconv | --filters)\n"
@@ -3398,9 +3397,6 @@ msgstr "zeige Objekt-Typ (eines von 'blob', 'tree', 'commit', 'tag', ...)"
msgid "show object size"
msgstr "Objektgröße anzeigen"
-msgid "allow -s and -t to work with broken/corrupt objects"
-msgstr "-s und -t mit beschädigten Objekten erlauben"
-
msgid "use mail map file"
msgstr "\"mailmap\"-Datei verwenden"
@@ -3460,6 +3456,13 @@ msgid "use a <path> for (--textconv | --filters); Not with 'batch'"
msgstr ""
"nutzen Sie einen <Pfad> für (--textconv | --filters); Nicht mit 'batch'"
+msgid "objects filter only supported in batch mode"
+msgstr "Objektfilter werden nur im Batch-Modus unterstützt"
+
+#, c-format
+msgid "objects filter not supported: '%s'"
+msgstr "Objektfilter nicht unterstützt: '%s'"
+
#, c-format
msgid "'%s=<%s>' needs '%s' or '%s'"
msgstr "'%s=<%s>' benötigt '%s' oder '%s'"
@@ -5785,6 +5788,50 @@ msgstr "Dateiendung im strftime-Format für den Dateinamen angeben"
msgid "specify the content of the diagnostic archive"
msgstr "den Inhalt des Diagnosearchivs angeben"
+#, c-format
+msgid "unable to parse mode: %s"
+msgstr "Konnte Modus '%s' nicht parsen."
+
+#, c-format
+msgid "unable to parse object id: %s"
+msgstr "Konnte Objekt-ID '%s' nicht parsen."
+
+msgid "git diff-pairs -z [<diff-options>]"
+msgstr "git diff-pairs -z [<Diff-Optionen>]"
+
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "nicht erkanntes Argument: %s"
+
+msgid "working without -z is not supported"
+msgstr "Arbeiten ohne -z wird nicht unterstützt"
+
+msgid "pathspec arguments not supported"
+msgstr "Pfadspezifikationen als Argumente werden nicht unterstützt"
+
+msgid "revision arguments not allowed"
+msgstr "Commits als Argumente werden nicht unterstützt"
+
+msgid "invalid raw diff input"
+msgstr "ungültige Raw-Diff-Eingabe"
+
+msgid "tree objects not supported"
+msgstr "Tree-Objekte werden nicht unterstützt"
+
+msgid "got EOF while reading path"
+msgstr "EOF beim Lesen des Pfads"
+
+msgid "got EOF while reading destination path"
+msgstr "EOF beim Lesen des Zielpfads"
+
+#, c-format
+msgid "unable to parse rename/copy score: %s"
+msgstr "Konnte Umbenennen/Kopieren-Punktzahl nicht parsen: %s"
+
+#, c-format
+msgid "unknown diff status: %c"
+msgstr "unbekannter Diff-Status: %c"
+
msgid "--merge-base only works with two commits"
msgstr "--merge-base funktioniert nur mit zwei Commits"
@@ -5927,6 +5974,9 @@ msgstr "Fortschritt nach <n> Objekten anzeigen"
msgid "select handling of signed tags"
msgstr "Behandlung von signierten Tags wählen"
+msgid "select handling of signed commits"
+msgstr "Behandlung von signierten Commits wählen"
+
msgid "select handling of tags that tag filtered objects"
msgstr "Behandlung von Tags wählen, die gefilterte Objekte markieren"
@@ -6367,8 +6417,8 @@ msgid "protocol does not support --negotiate-only, exiting"
msgstr "Protokoll unterstützt --negotiate-only nicht, beende"
msgid ""
-"--filter can only be used with the remote configured in extensions."
-"partialclone"
+"--filter can only be used with the remote configured in "
+"extensions.partialclone"
msgstr ""
"--filter kann nur mit den Remote-Repositories verwendet werden,\n"
"die in extensions.partialclone konfiguriert sind"
@@ -6589,10 +6639,6 @@ msgid "%s: object corrupt or missing: %s"
msgstr "%s: Objekt fehlerhaft oder nicht vorhanden: %s"
#, c-format
-msgid "%s: object is of unknown type '%s': %s"
-msgstr "%s: Objekt hat einen unbekannten Typ '%s': %s"
-
-#, c-format
msgid "%s: object could not be parsed: %s"
msgstr "%s: Objekt konnte nicht geparst werden: %s"
@@ -6649,16 +6695,19 @@ msgstr "rev-Index für Pack-Datei '%s' kann nicht geladen werden"
msgid "invalid rev-index for pack '%s'"
msgstr "ungültiger Rev-Index für Pack-Datei '%s'"
+msgid "Checking ref database"
+msgstr "Referenzdatenbank überprüfen"
+
msgid ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<object>...]"
+" [--[no-]name-objects] [--[no-]references] [<object>...]"
msgstr ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<Objekt>...]"
+" [--[no-]name-objects] [--[no-]references] [<Objekt>...]"
msgid "show unreachable objects"
msgstr "unerreichbare Objekte anzeigen"
@@ -6696,6 +6745,9 @@ msgstr "Fortschrittsanzeige anzeigen"
msgid "show verbose names for reachable objects"
msgstr "ausführliche Namen für erreichbare Objekte anzeigen"
+msgid "check reference database consistency"
+msgstr "Konsistenz der Referenzdatenbank überprüfen"
+
msgid "Checking objects"
msgstr "Prüfe Objekte"
@@ -7104,6 +7156,7 @@ msgstr "grep: Fehler beim Erzeugen eines Thread: %s"
msgid "invalid number of threads specified (%d) for %s"
msgstr "ungültige Anzahl von Threads (%d) für %s angegeben"
+#. #-#-#-#-# grep.c.po #-#-#-#-#
#. TRANSLATORS: %s is the configuration
#. variable for tweaking threads, currently
#. grep.threads
@@ -7861,10 +7914,6 @@ msgstr ""
"Entwicklung der Zeilen vom Bereich <Start>,<Ende> oder Funktion :"
"<Funktionsname> in <Datei> verfolgen"
-#, c-format
-msgid "unrecognized argument: %s"
-msgstr "nicht erkanntes Argument: %s"
-
msgid "-L<range>:<file> cannot be used with pathspec"
msgstr "-L<Bereich>:<Datei> kann nicht mit Pfadspezifikation verwendet werden"
@@ -8527,6 +8576,9 @@ msgstr "nur einen trivialen Merge durchführen"
msgid "also show informational/conflict messages"
msgstr "auch Informations-/Konfliktmeldungen anzeigen"
+msgid "suppress all output; only exit status wanted"
+msgstr "alle Ausgaben unterdrücken; nur Exit-Status verwenden"
+
msgid "list filenames without modes/oids/stages"
msgstr "Dateinamen ohne Modi/Oids/Stufen auflisten"
@@ -8941,8 +8993,11 @@ msgstr ""
"während des Umpackens, sammle Paket-Dateien von geringerer Größe in einen "
"Stapel, welcher größer ist als diese Größe"
-msgid "git mv [<options>] <source>... <destination>"
-msgstr "git mv [<Optionen>] <Quelle>... <Ziel>"
+msgid "git mv [-v] [-f] [-n] [-k] <source> <destination>"
+msgstr "git mv [-v] [-f] [-n] [-k] <Quelle> <Ziel>"
+
+msgid "git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>"
+msgstr "git mv [-v] [-f] [-n] [-k] <Quelle>... <Zielverzeichnis>"
#, c-format
msgid "Directory %s is in index and no submodule?"
@@ -9014,6 +9069,12 @@ msgid "%s, source=%s, destination=%s"
msgstr "%s, Quelle=%s, Ziel=%s"
#, c-format
+msgid "cannot move both '%s' and its parent directory '%s'"
+msgstr ""
+"kann nicht sowohl '%s' als auch das übergeordnete Verzeichnis '%s' "
+"verschieben"
+
+#, c-format
msgid "Renaming %s to %s\n"
msgstr "Benenne %s nach %s um\n"
@@ -9971,6 +10032,10 @@ msgstr ""
msgid "unable to access commit %s"
msgstr "Konnte nicht auf Commit '%s' zugreifen."
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "ungültige Refspec '%s'"
+
msgid "ignoring --verify-signatures for rebase"
msgstr "Ignoriere --verify-signatures für Rebase"
@@ -10971,6 +11036,9 @@ msgstr ""
msgid "git reflog exists <ref>"
msgstr "git reflog exists <Referenz>"
+msgid "git reflog drop [--all [--single-worktree] | <refs>...]"
+msgstr "git reflog drop [--all [--single-worktree] | <Referenzen>...]"
+
#, c-format
msgid "invalid timestamp '%s' given to '--%s'"
msgstr "ungültiger Zeitstempel '%s' für '--%s'"
@@ -11022,8 +11090,8 @@ msgid "Marking reachable objects..."
msgstr "Markiere nicht erreichbare Objekte..."
#, c-format
-msgid "%s points nowhere!"
-msgstr "%s zeigt auf nichts!"
+msgid "reflog could not be found: '%s'"
+msgstr "Reflog konnte nicht gefunden werden: '%s'"
msgid "no reflog specified to delete"
msgstr "Kein Reflog zum Löschen angegeben."
@@ -11032,6 +11100,15 @@ msgstr "Kein Reflog zum Löschen angegeben."
msgid "invalid ref format: %s"
msgstr "Ungültiges Format für Referenzen: %s"
+msgid "drop the reflogs of all references"
+msgstr "die Reflogs aller Referenzen löschen"
+
+msgid "drop reflogs from the current worktree only"
+msgstr "nur Reflogs aus dem aktuellen Arbeitsverzeichnis löschen"
+
+msgid "references specified along with --all"
+msgstr "Referenzen, die zusammen mit --all angegeben werden"
+
msgid "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
msgstr "git refs migrate --ref-format=<Format> [--no-reflog] [--dry-run]"
@@ -11594,6 +11671,10 @@ msgstr "Datumsangabe"
msgid "with --cruft, expire objects older than this"
msgstr "mit --cruft, Objekte verfallen lassen, die älter sind als das"
+msgid "with --cruft, only repack cruft packs smaller than this"
+msgstr ""
+"mit --cruft, nur Cruft-Pakete umpacken, die kleiner als dieser Wert sind"
+
msgid "remove redundant packs, and run git-prune-packed"
msgstr "redundante Pakete entfernen und \"git-prune-packed\" ausführen"
@@ -12077,6 +12158,9 @@ msgstr "konnte Festplattennutzung von %s nicht bekommen"
msgid "invalid value for '%s': '%s', the only allowed format is '%s'"
msgstr "ungültiger Wert für '%s': '%s', das einzig zulässige Format ist '%s'"
+msgid "-z option used with unsupported option"
+msgstr "Die Option -z wird mit nicht unterstützter Option verwendet."
+
msgid "rev-list does not support display of notes"
msgstr "rev-list unterstützt keine Anzeige von Notizen"
@@ -13995,8 +14079,8 @@ msgstr "git update-ref [<Optionen>] -d <Referenzname> [<alte-oid>]"
msgid "git update-ref [<options>] <refname> <new-oid> [<old-oid>]"
msgstr "git update-ref [<Optionen>] <Referenzname> <neue-oid> [<alte-oid>]"
-msgid "git update-ref [<options>] --stdin [-z]"
-msgstr "git update-ref [<Optionen>] --stdin [-z]"
+msgid "git update-ref [<options>] --stdin [-z] [--batch-updates]"
+msgstr "git update-ref [<Optionen>] --stdin [-z] [--batch-updates]"
msgid "delete the reference"
msgstr "diese Referenz löschen"
@@ -14010,6 +14094,9 @@ msgstr "Standard-Eingabe hat durch NUL-Zeichen abgeschlossene Argumente"
msgid "read updates from stdin"
msgstr "Aktualisierungen von der Standard-Eingabe lesen"
+msgid "batch reference updates"
+msgstr "Batch-Referenz-Updates"
+
msgid "update the info files from scratch"
msgstr "die Informationsdateien von Grund auf aktualisieren"
@@ -14724,6 +14811,9 @@ msgstr "Dateien von dem Arbeitsverzeichnis und dem Index vergleichen"
msgid "Compare a tree to the working tree or index"
msgstr "ein Verzeichnis von dem Arbeitsverzeichnis und dem Index vergleichen"
+msgid "Compare the content and mode of provided blob pairs"
+msgstr "Inhalt und Modus der bereitgestellten Blobpaare vergleichen"
+
msgid "Compares the content and mode of blobs found via two tree objects"
msgstr ""
"den Inhalt und Modus von Blobs aus zwei Verzeichnisobjekten vergleichen"
@@ -15380,8 +15470,8 @@ msgid ""
"attempting to write a commit-graph, but 'commitGraph.changedPathsVersion' "
"(%d) is not supported"
msgstr ""
-"versuche, einen Commit-Graphen zu schreiben, aber 'commitGraph."
-"changedPathsVersion' (%d) wird nicht unterstützt"
+"versuche, einen Commit-Graphen zu schreiben, aber "
+"'commitGraph.changedPathsVersion' (%d) wird nicht unterstützt"
msgid "too many commits to write graph"
msgstr "zu viele Commits zum Schreiben des Graphen"
@@ -17682,6 +17772,10 @@ msgid "Unknown value for http.proactiveauth"
msgstr "Unbekannter Wert für http.proactiveauth"
#, c-format
+msgid "failed to parse %s"
+msgstr "Fehler beim Parsen von %s."
+
+#, c-format
msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
msgstr "Nicht unterstütztes SSL-Backend '%s'. Unterstützte SSL-Backends:"
@@ -17872,6 +17966,10 @@ msgid "invalid marker-size '%s', expecting an integer"
msgstr "ungültige marker-size '%s', ganze Zahl erwartet"
#, c-format
+msgid "Could not parse object '%s'"
+msgstr "Konnte Objekt '%s' nicht parsen."
+
+#, c-format
msgid "Failed to merge submodule %s (not checked out)"
msgstr "Fehler beim Merge von Submodul %s (nicht ausgecheckt)."
@@ -18124,276 +18222,6 @@ msgid "collecting merge info failed for trees %s, %s, %s"
msgstr ""
"Sammeln von Merge-Informationen für die Referenzen %s, %s, %s fehlgeschlagen"
-msgid "(bad commit)\n"
-msgstr "(ungültiger Commit)\n"
-
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "add_cacheinfo für Pfad '%s' fehlgeschlagen; Merge wird abgebrochen."
-
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr ""
-"add_cacheinfo zur Aktualisierung für Pfad '%s' fehlgeschlagen;\n"
-"Merge wird abgebrochen."
-
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "Fehler beim Erstellen des Pfades '%s'%s"
-
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "Entferne %s, um Platz für Unterverzeichnis zu schaffen\n"
-
-msgid ": perhaps a D/F conflict?"
-msgstr ": vielleicht ein Verzeichnis/Datei-Konflikt?"
-
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "verweigere, da unversionierte Dateien in '%s' verloren gehen würden"
-
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "Blob erwartet für %s '%s'"
-
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "Fehler beim Öffnen von '%s': %s"
-
-#, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "Fehler beim Erstellen einer symbolischen Verknüpfung für '%s': %s"
-
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "weiß nicht was mit %06o %s '%s' zu machen ist"
-
-#, c-format
-msgid "Failed to merge submodule %s (repository corrupt)"
-msgstr ""
-"Submodul %s konnte nicht zusammengeführt werden (Repository beschädigt)"
-
-#, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "Spule Submodul %s zu dem folgenden Commit vor:"
-
-#, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Spule Submodul %s vor"
-
-#, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr ""
-"Fehler beim Merge von Submodule %s (dem Merge nachfolgende Commits nicht "
-"gefunden)"
-
-#, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "Fehler beim Merge von Submodul %s (kein Vorspulen)"
-
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "Mögliche Auflösung des Merges für Submodul gefunden:\n"
-
-#, c-format
-msgid ""
-"If this is correct simply add it to the index for example\n"
-"by using:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"which will accept this suggestion.\n"
-msgstr ""
-"Falls das korrekt ist, fügen Sie es einfach der Staging-Area, zum Beispiel "
-"mit:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"hinzu, um diesen Vorschlag zu akzeptieren.\n"
-
-#, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "Fehler beim Merge von Submodul %s (mehrere Merges gefunden)"
-
-msgid "failed to execute internal merge"
-msgstr "Fehler bei Ausführung des internen Merges"
-
-#, c-format
-msgid "unable to add %s to database"
-msgstr "konnte %s nicht zur Datenbank hinzufügen"
-
-#, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr ""
-"Fehler: Verweigere unversionierte Datei bei %s zu verlieren;\n"
-"schreibe stattdessen nach %s."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
-msgstr ""
-"KONFLIKT (%s/löschen): %s gelöscht in %s und %s in %s. Stand %s von %s wurde "
-"im Arbeitsbereich gelassen."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
-msgstr ""
-"KONFLIKT (%s/löschen): %s gelöscht in %s und %s nach %s in %s. Stand %s von "
-"%s wurde im Arbeitsbereich gelassen."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
-msgstr ""
-"KONFLIKT (%s/löschen): %s gelöscht in %s und %s in %s. Stand %s von %s wurde "
-"im Arbeitsbereich bei %s gelassen."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree at %s."
-msgstr ""
-"KONFLIKT (%s/löschen): %s gelöscht in %s und %s nach %s in %s. Stand %s von "
-"%s wurde im Arbeitsbereich bei %s gelassen."
-
-msgid "rename"
-msgstr "umbenennen"
-
-msgid "renamed"
-msgstr "umbenannt"
-
-#, c-format
-msgid "Refusing to lose dirty file at %s"
-msgstr "Verweigere geänderte Datei bei %s zu verlieren."
-
-#, c-format
-msgid "Refusing to lose untracked file at %s, even though it's in the way."
-msgstr ""
-"Verweigere unversionierte Datei bei %s zu verlieren, auch wenn diese im Weg "
-"ist."
-
-#, c-format
-msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
-msgstr ""
-"KONFLIKT (umbenennen/hinzufügen): Benenne um %s->%s in %s. %s hinzugefügt in "
-"%s"
-
-#, c-format
-msgid "%s is a directory in %s adding as %s instead"
-msgstr "%s ist ein Verzeichnis in %s, füge es stattdessen als %s hinzu"
-
-#, c-format
-msgid "Refusing to lose untracked file at %s; adding as %s instead"
-msgstr ""
-"Verweigere unversionierte Datei bei %s zu verlieren; füge stattdessen %s "
-"hinzu"
-
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
-"\"%s\"->\"%s\" in \"%s\"%s"
-msgstr ""
-"KONFLIKT (umbenennen/umbenennen): Benenne um \"%s\"->\"%s\" in Branch \"%s\" "
-"und \"%s\"->\"%s\" in Branch \"%s\"%s"
-
-msgid " (left unresolved)"
-msgstr " (bleibt unaufgelöst)"
-
-#, c-format
-msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
-msgstr ""
-"KONFLIKT (umbenennen/umbenennen): Benenne um %s->%s in %s. Benenne um %s->%s "
-"in %s"
-
-#, c-format
-msgid ""
-"CONFLICT (directory rename split): Unclear where to place %s because "
-"directory %s was renamed to multiple other directories, with no destination "
-"getting a majority of the files."
-msgstr ""
-"KONFLIKT (Aufteilung Verzeichnisumbenennung): Unklar, wo %s zu platzieren "
-"ist,\n"
-"weil Verzeichnis %s zu mehreren anderen Verzeichnissen umbenannt wurde, "
-"wobei\n"
-"keines dieser Ziele die Mehrheit der Dateien erhielt."
-
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
-">%s in %s"
-msgstr ""
-"KONFLIKT (umbenennen/umbenennen): Benenne Verzeichnis um %s->%s in %s.\n"
-"Benenne Verzeichnis um %s->%s in %s"
-
-#, c-format
-msgid "cannot read object %s"
-msgstr "kann Objekt %s nicht lesen"
-
-#, c-format
-msgid "object %s is not a blob"
-msgstr "Objekt %s ist kein Blob"
-
-msgid "modify"
-msgstr "ändern"
-
-msgid "modified"
-msgstr "geändert"
-
-#, c-format
-msgid "Skipped %s (merged same as existing)"
-msgstr "%s ausgelassen (Ergebnis des Merges existiert bereits)"
-
-#, c-format
-msgid "Adding as %s instead"
-msgstr "Füge stattdessen als %s hinzu"
-
-#, c-format
-msgid "Removing %s"
-msgstr "Entferne %s"
-
-msgid "file/directory"
-msgstr "Datei/Verzeichnis"
-
-msgid "directory/file"
-msgstr "Verzeichnis/Datei"
-
-#, c-format
-msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
-msgstr ""
-"KONFLIKT (%s): Es existiert bereits ein Verzeichnis %s in %s. Füge %s als %s "
-"hinzu."
-
-#, c-format
-msgid "Adding %s"
-msgstr "Füge %s hinzu"
-
-#, c-format
-msgid "CONFLICT (add/add): Merge conflict in %s"
-msgstr "KONFLIKT (hinzufügen/hinzufügen): Merge-Konflikt in %s"
-
-#, c-format
-msgid "merging of trees %s and %s failed"
-msgstr "Zusammenführen der \"Tree\"-Objekte %s und %s fehlgeschlagen"
-
-msgid "Merging:"
-msgstr "Merge:"
-
-#, c-format
-msgid "found %u common ancestor:"
-msgid_plural "found %u common ancestors:"
-msgstr[0] "%u gemeinsamen Vorgänger-Commit gefunden"
-msgstr[1] "%u gemeinsame Vorgänger-Commits gefunden"
-
-msgid "merge returned no commit"
-msgstr "Merge hat keinen Commit zurückgegeben"
-
-#, c-format
-msgid "Could not parse object '%s'"
-msgstr "Konnte Objekt '%s' nicht parsen."
-
msgid "failed to read the cache"
msgstr "Lesen des Zwischenspeichers fehlgeschlagen"
@@ -18435,13 +18263,14 @@ msgstr "kann '%s' nicht mit '%s' verknüpfen"
msgid "failed to clear multi-pack-index at %s"
msgstr "Fehler beim Löschen des Multi-Pack-Index bei %s"
-msgid "cannot write incremental MIDX with bitmap"
-msgstr "kann kein inkrementelles MIDX mit Bitmap schreiben"
-
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr ""
"ignoriere existierenden Multi-Pack-Index; Prüfsumme stimmt nicht überein"
+#, c-format
+msgid "could not load reverse index for MIDX %s"
+msgstr "konnte den umgekehrten Index für MIDX %s nicht laden"
+
msgid "Adding packfiles to multi-pack-index"
msgstr "Packdateien zum Multi-Pack-Index hinzufügen"
@@ -18704,69 +18533,6 @@ msgid "Failed to convert object from %s to %s"
msgstr "Objekt konnte nicht von %s nach %s konvertiert werden"
#, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr ""
-"Objektverzeichnis %s existiert nicht; prüfe .git/objects/info/alternates"
-
-#, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "Konnte alternativen Objektpfad '%s' nicht normalisieren."
-
-#, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s: ignoriere alternative Objektspeicher - Verschachtelung zu tief"
-
-msgid "unable to fdopen alternates lockfile"
-msgstr "Konnte fdopen nicht auf Lock-Datei für \"alternates\" aufrufen."
-
-msgid "unable to read alternates file"
-msgstr "Konnte \"alternates\"-Datei nicht lesen."
-
-msgid "unable to move new alternates file into place"
-msgstr "Konnte neue \"alternates\"-Datei nicht übernehmen."
-
-#, c-format
-msgid "path '%s' does not exist"
-msgstr "Pfad '%s' existiert nicht"
-
-#, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr ""
-"Referenziertes Repository '%s' wird noch nicht als verknüpftes\n"
-"Arbeitsverzeichnis unterstützt."
-
-#, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "Referenziertes Repository '%s' ist kein lokales Repository."
-
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr ""
-"Referenziertes Repository '%s' hat eine unvollständige Historie (shallow)."
-
-#, c-format
-msgid "reference repository '%s' is grafted"
-msgstr ""
-"Referenziertes Repository '%s' ist mit künstlichen Vorgängern (\"grafts\") "
-"eingehängt."
-
-#, c-format
-msgid "could not find object directory matching %s"
-msgstr "konnte Objekt-Verzeichnis nicht finden, dass '%s' entsprechen soll"
-
-#, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "Ungültige Zeile beim Parsen alternativer Referenzen: %s"
-
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "Versuche mmap %<PRIuMAX> über Limit %<PRIuMAX>."
-
-#, c-format
-msgid "mmap failed%s"
-msgstr "mmap fehlgeschlagen%s"
-
-#, c-format
msgid "object file %s is empty"
msgstr "Objektdatei %s ist leer."
@@ -18802,18 +18568,6 @@ msgid "loose object %s (stored in %s) is corrupt"
msgstr "Loses Objekt %s (gespeichert in %s) ist beschädigt."
#, c-format
-msgid "replacement %s not found for %s"
-msgstr "Ersetzung %s für %s nicht gefunden."
-
-#, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "Gepacktes Objekt %s (gespeichert in %s) ist beschädigt."
-
-#, c-format
-msgid "missing mapping of %s to %s"
-msgstr "fehlende Abbildung von %s auf %s"
-
-#, c-format
msgid "unable to open %s"
msgstr "kann %s nicht öffnen"
@@ -18908,10 +18662,6 @@ msgid "%s: unsupported file type"
msgstr "%s: nicht unterstützte Dateiart"
#, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s ist kein gültiges '%s' Objekt"
-
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "Hash für %s stimmt nicht überein (%s erwartet)."
@@ -18928,6 +18678,10 @@ msgid "unable to parse header of %s"
msgstr "Konnte Kopfbereich von %s nicht parsen."
#, c-format
+msgid "unable to parse type from header '%s' of %s"
+msgstr "Konnte den Typ aus der Kopfzeile '%s' von %s nicht parsen."
+
+#, c-format
msgid "unable to unpack contents of %s"
msgstr "Konnte Inhalt von %s nicht entpacken."
@@ -19088,6 +18842,77 @@ msgid "invalid object name '%.*s'."
msgstr "ungültiger Objektname '%.*s'."
#, c-format
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr ""
+"Objektverzeichnis %s existiert nicht; prüfe .git/objects/info/alternates"
+
+#, c-format
+msgid "unable to normalize alternate object path: %s"
+msgstr "Konnte alternativen Objektpfad '%s' nicht normalisieren."
+
+#, c-format
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s: ignoriere alternative Objektspeicher - Verschachtelung zu tief"
+
+msgid "unable to fdopen alternates lockfile"
+msgstr "Konnte fdopen nicht auf Lock-Datei für \"alternates\" aufrufen."
+
+msgid "unable to read alternates file"
+msgstr "Konnte \"alternates\"-Datei nicht lesen."
+
+msgid "unable to move new alternates file into place"
+msgstr "Konnte neue \"alternates\"-Datei nicht übernehmen."
+
+#, c-format
+msgid "path '%s' does not exist"
+msgstr "Pfad '%s' existiert nicht"
+
+#, c-format
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr ""
+"Referenziertes Repository '%s' wird noch nicht als verknüpftes\n"
+"Arbeitsverzeichnis unterstützt."
+
+#, c-format
+msgid "reference repository '%s' is not a local repository."
+msgstr "Referenziertes Repository '%s' ist kein lokales Repository."
+
+#, c-format
+msgid "reference repository '%s' is shallow"
+msgstr ""
+"Referenziertes Repository '%s' hat eine unvollständige Historie (shallow)."
+
+#, c-format
+msgid "reference repository '%s' is grafted"
+msgstr ""
+"Referenziertes Repository '%s' ist mit künstlichen Vorgängern (\"grafts\") "
+"eingehängt."
+
+#, c-format
+msgid "could not find object directory matching %s"
+msgstr "konnte Objekt-Verzeichnis nicht finden, dass '%s' entsprechen soll"
+
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "Ungültige Zeile beim Parsen alternativer Referenzen: %s"
+
+#, c-format
+msgid "replacement %s not found for %s"
+msgstr "Ersetzung %s für %s nicht gefunden."
+
+#, c-format
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "Gepacktes Objekt %s (gespeichert in %s) ist beschädigt."
+
+#, c-format
+msgid "missing mapping of %s to %s"
+msgstr "fehlende Abbildung von %s auf %s"
+
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s ist kein gültiges '%s' Objekt"
+
+#, c-format
msgid "invalid object type \"%s\""
msgstr "Ungültiger Objekttyp \"%s\""
@@ -19371,6 +19196,14 @@ msgid "%s isn't available"
msgstr "%s ist nicht verfügbar."
#, c-format
+msgid "value %s for %s not in range [%<PRIdMAX>,%<PRIdMAX>]"
+msgstr "Wert %s für %s nicht im Bereich [%<PRIdMAX>,%<PRIdMAX>]"
+
+#, c-format
+msgid "%s expects an integer value with an optional k/m/g suffix"
+msgstr "%s erwartet einen ganzzahligen Wert mit einem optionalen k/m/g-Suffix"
+
+#, c-format
msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
msgstr ""
"%s erwartet einen nicht-negativen Integer-Wert mit einem optionalen k/m/g "
@@ -19532,10 +19365,6 @@ msgid "bad boolean environment value '%s' for '%s'"
msgstr "falscher boolescher Wert von Umgebungsvariable '%s' für '%s'"
#, c-format
-msgid "failed to parse %s"
-msgstr "Fehler beim Parsen von %s."
-
-#, c-format
msgid "failed to walk children of tree %s: not found"
msgstr "Fehlen beim Durchlaufen der Kinder von Baum %s: nicht gefunden"
@@ -19701,7 +19530,11 @@ msgid "could not fetch %s from promisor remote"
msgstr "konnte %s nicht von Promisor-Remote abrufen"
#, c-format
-msgid "known remote named '%s' but with url '%s' instead of '%s'"
+msgid "no or empty URL advertised for remote '%s'"
+msgstr "keine oder leere URL für Remote-Repository '%s' angegeben"
+
+#, c-format
+msgid "known remote named '%s' but with URL '%s' instead of '%s'"
msgstr ""
"bekanntes Remote-Repository mit dem Namen '%s', aber mit der URL '%s' statt "
"'%s'"
@@ -20482,6 +20315,10 @@ msgid "Checking references consistency"
msgstr "Überprüfung der Konsistenz der Referenzen"
#, c-format
+msgid "unable to open '%s'"
+msgstr "konnte '%s' nicht öffnen"
+
+#, c-format
msgid "refname is dangerous: %s"
msgstr "Referenzname ist gefährlich: %s"
@@ -20552,10 +20389,6 @@ msgstr ""
"unterstützt"
#, c-format
-msgid "invalid refspec '%s'"
-msgstr "ungültige Refspec '%s'"
-
-#, c-format
msgid "pattern '%s' has no '*'"
msgstr "Muster '%s' hat keinen '*'"
@@ -21108,8 +20941,8 @@ msgstr "konnte keine Eintragung hinzufügen"
msgid "could not set recommended config"
msgstr "konnte die empfohlene Konfiguration nicht setzen"
-msgid "could not turn on maintenance"
-msgstr "konnte die Wartung nicht einschalten"
+msgid "could not toggle maintenance"
+msgstr "konnte die Wartung nicht umschalten"
msgid "could not start the FSMonitor daemon"
msgstr "konnte den FSMonitor-Daemon nicht starten"
@@ -21156,12 +20989,15 @@ msgstr "Repository im Verzeichnis 'src' erstellen"
msgid "specify if tags should be fetched during clone"
msgstr "Angabe, ob Tags während des Klonens abgerufen werden sollen"
+msgid "specify if background maintenance should be enabled"
+msgstr "angeben, ob die Hintergrundwartung aktiviert werden soll"
+
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <Haupt-Branch>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <URL> [<Eintragung>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <URL> [<Eintragung>]"
#, c-format
msgid "cannot deduce worktree name from '%s'"
@@ -21199,19 +21035,33 @@ msgstr "scalar diagnose [<Eintragung>]"
msgid "`scalar list` does not take arguments"
msgstr "`scalar list` akzeptiert keine Argumente"
-msgid "scalar register [<enlistment>]"
-msgstr "scalar register [<Eintragung>]"
+msgid "scalar register [--[no-]maintenance] [<enlistment>]"
+msgstr "scalar register [--[no-]maintenance] [<Eintragung>]"
msgid "reconfigure all registered enlistments"
msgstr "alle registrierten Eintragungen neu konfigurieren"
-msgid "scalar reconfigure [--all | <enlistment>]"
-msgstr "scalar reconfigure [--all | <Eintragung>]"
+msgid "(enable|disable|keep)"
+msgstr "(enable|disable|keep)"
+
+msgid "signal how to adjust background maintenance"
+msgstr "Angabe, wie die Hintergrundwartung einzustellen ist"
+
+msgid ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enlistment>]"
+msgstr ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<Eintragung>]"
msgid "--all or <enlistment>, but not both"
msgstr "--all oder <Eintragung>, aber nicht beides"
#, c-format
+msgid "unknown mode for --maintenance option: %s"
+msgstr "unbekannter Modus für die Option --maintenance: %s"
+
+#, c-format
msgid "could not remove stale scalar.repo '%s'"
msgstr "konnte veraltetes scalar.repo '%s' nicht entfernen"
@@ -22669,6 +22519,9 @@ msgstr ""
"Anzahl der Einträge im Cache-Verzeichnis, die ungültig gemacht werden sollen "
"(Standardwert 0)"
+msgid "the number of objects to write"
+msgstr "die Anzahl der zu schreibenden Objekte"
+
msgid "test-tool path-walk <options> -- <revision-options>"
msgstr "test-tool path-walk <Optionen> -- <Commit-Optionen>"
@@ -23460,6 +23313,14 @@ msgstr "konnte aktuelles Arbeitsverzeichnis nicht bekommen"
msgid "unable to get random bytes"
msgstr "konnte keine Zufallsbytes abrufen"
+#, c-format
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "Versuche mmap %<PRIuMAX> über Limit %<PRIuMAX>."
+
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap fehlgeschlagen%s"
+
msgid "Unmerged paths:"
msgstr "Nicht zusammengeführte Pfade:"
@@ -24270,6 +24131,14 @@ msgstr ""
"und benutzen Sie --smtp-debug."
#, perl-format
+msgid "Outlook reassigned Message-ID to: %s\n"
+msgstr "Outlook hat die Message-ID neu zugewiesen: %s\n"
+
+msgid "Warning: Could not retrieve Message-ID from server response.\n"
+msgstr ""
+"Warnung: Message-ID konnte nicht aus der Serverantwort abgerufen werden.\n"
+
+#, perl-format
msgid "Failed to send %s\n"
msgstr "Fehler beim Senden %s\n"
diff --git a/po/fr.po b/po/fr.po
index 8e33390307..7b5cc9bbc5 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -87,8 +87,8 @@ msgid ""
msgstr ""
"Project-Id-Version: git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2025-03-05 22:57+0000\n"
-"PO-Revision-Date: 2025-03-06 16:46+0100\n"
+"POT-Creation-Date: 2025-05-27 22:57+0000\n"
+"PO-Revision-Date: 2025-05-29 12:54+0200\n"
"Last-Translator: Cédric Malard <c.malard-git@valdun.net>\n"
"Language-Team: Jean-Noël Avila <jn.avila@free.fr>\n"
"Language: fr\n"
@@ -3405,11 +3405,8 @@ msgstr "une seule option de traitement ne peut être spécifiée à la fois"
msgid "git cat-file <type> <object>"
msgstr "git cat-file <type> <objet>"
-msgid "git cat-file (-e | -p) <object>"
-msgstr "git cat-file (-e | -p) <objet>"
-
-msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
-msgstr "git cat-file (-t | -s) [--allow-unknown-type] <objet>"
+msgid "git cat-file (-e | -p | -t | -s) <object>"
+msgstr "git cat-file (-e | -p | -t | -s) <objet>"
msgid ""
"git cat-file (--textconv | --filters)\n"
@@ -3447,9 +3444,6 @@ msgstr "montrer le type de l'objet (parmi 'blob', 'tree', 'commit', 'tag' ...)"
msgid "show object size"
msgstr "afficher la taille de l'objet"
-msgid "allow -s and -t to work with broken/corrupt objects"
-msgstr "autoriser -s et -t à travailler sur des objets cassés/corrompus"
-
msgid "use mail map file"
msgstr "utiliser le fichier de correspondance de mail"
@@ -3508,6 +3502,13 @@ msgstr ""
"utiliser un <chemin> spécifique pour (--textconv | --filters); pas pour les "
"lots"
+msgid "objects filter only supported in batch mode"
+msgstr "le filtre d'objets n'est pris en charge qu'en mode par lots"
+
+#, c-format
+msgid "objects filter not supported: '%s'"
+msgstr "filtre d'objets non pris en charge : '%s'"
+
#, c-format
msgid "'%s=<%s>' needs '%s' or '%s'"
msgstr "'%s=<%s>' a besoin de '%s' ou '%s'"
@@ -5811,6 +5812,50 @@ msgstr "spécifier une suffixe au format strftime pour le nom de fichier"
msgid "specify the content of the diagnostic archive"
msgstr "spécifier le contenu de l'archive de diagnostique"
+#, c-format
+msgid "unable to parse mode: %s"
+msgstr "impossible d'analyser le mode : %s"
+
+#, c-format
+msgid "unable to parse object id: %s"
+msgstr "impossible d'analyser l'id de l'objet : %s"
+
+msgid "git diff-pairs -z [<diff-options>]"
+msgstr "git diff-pairs -z [<options-de-diff>]"
+
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "argument non reconnu : %s"
+
+msgid "working without -z is not supported"
+msgstr "l'invocation sans -z n'est pas supportée"
+
+msgid "pathspec arguments not supported"
+msgstr "les arguments de spécificateurs de chemin ne sont pas pris en charge"
+
+msgid "revision arguments not allowed"
+msgstr "les arguments de type révision ne sont pas pris en charge"
+
+msgid "invalid raw diff input"
+msgstr "entrée de diff brut invalide"
+
+msgid "tree objects not supported"
+msgstr "les objets arbres ne sont pas supportés"
+
+msgid "got EOF while reading path"
+msgstr "EOF rencontré lors de la lecture du chemin"
+
+msgid "got EOF while reading destination path"
+msgstr "EOF rencontré lors de la lecture du chemin destination"
+
+#, c-format
+msgid "unable to parse rename/copy score: %s"
+msgstr "impossible d'analyser le score de renommage/copie : %s"
+
+#, c-format
+msgid "unknown diff status: %c"
+msgstr "statut de diff inconnu : %c"
+
msgid "--merge-base only works with two commits"
msgstr "--merge-base ne fonctionne qu'avec deux commits"
@@ -5952,6 +5997,9 @@ msgstr "afficher la progression après <n> objets"
msgid "select handling of signed tags"
msgstr "sélectionner la gestion des étiquettes signées"
+msgid "select handling of signed commits"
+msgstr "sélectionner la gestion des commits signés"
+
msgid "select handling of tags that tag filtered objects"
msgstr ""
"sélectionner la gestion des étiquettes qui pointent sur des objets filtrés"
@@ -6605,10 +6653,6 @@ msgid "%s: object corrupt or missing: %s"
msgstr "%s : objet corrompu ou manquant : %s"
#, c-format
-msgid "%s: object is of unknown type '%s': %s"
-msgstr "%s : l'objet a un type '%s' inconnu : %s"
-
-#, c-format
msgid "%s: object could not be parsed: %s"
msgstr "%s : impossible d'analyser : %s"
@@ -6665,16 +6709,19 @@ msgstr "impossible de charger le rev-index pour le paquet '%s'"
msgid "invalid rev-index for pack '%s'"
msgstr "rev-index invalide pour le paquet '%s'"
+msgid "Checking ref database"
+msgstr "Vérification de la base de données des réferences"
+
msgid ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<object>...]"
+" [--[no-]name-objects] [--[no-]references] [<object>...]"
msgstr ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<objec>...]"
+" [--[no-]name-objects] [--[no-]references] [<objet>...]"
msgid "show unreachable objects"
msgstr "afficher les objets inaccessibles"
@@ -6713,6 +6760,9 @@ msgstr "afficher la progression"
msgid "show verbose names for reachable objects"
msgstr "afficher les noms étendus pour les objets inaccessibles"
+msgid "check reference database consistency"
+msgstr "vérifier la cohérence de la base de données des références"
+
msgid "Checking objects"
msgstr "Vérification des objets"
@@ -7877,10 +7927,6 @@ msgstr ""
"tracer l'évolution d'une plage <début>,<fin> ou d'une fonction <nom-de-"
"fonction> dans <fichier>"
-#, c-format
-msgid "unrecognized argument: %s"
-msgstr "argument non reconnu : %s"
-
msgid "-L<range>:<file> cannot be used with pathspec"
msgstr ""
"-L<plage>:<fichier> ne peut pas être utilisé avec une spécificateur de chemin"
@@ -8550,6 +8596,9 @@ msgstr "faire seulement une fusion triviale"
msgid "also show informational/conflict messages"
msgstr "afficher aussi les messages d'information/de conflit"
+msgid "suppress all output; only exit status wanted"
+msgstr "supprimer toutes les sorties ; seul le statut de sortie est rendu"
+
msgid "list filenames without modes/oids/stages"
msgstr "lister les noms de fichier sans modes/oids/indexation"
@@ -8961,8 +9010,11 @@ msgstr ""
"pendant le repaquetage, collecter les fichiers paquet de plus petite taille "
"dans un lot plus grand que cette taille"
-msgid "git mv [<options>] <source>... <destination>"
-msgstr "git mv [<options>] <source>... <destination>"
+msgid "git mv [-v] [-f] [-n] [-k] <source> <destination>"
+msgstr "git mv [-v] [-f] [-n] [-k] <source> <destination>"
+
+msgid "git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>"
+msgstr "git mv [-v] [-f] [-n] [-k] <source>... <répertoire-de-destination>"
#, c-format
msgid "Directory %s is in index and no submodule?"
@@ -9033,6 +9085,10 @@ msgid "%s, source=%s, destination=%s"
msgstr "%s, source=%s, destination=%s"
#, c-format
+msgid "cannot move both '%s' and its parent directory '%s'"
+msgstr "Impossible de déplacer à la fois '%s' et son répertoire parent '%s'"
+
+#, c-format
msgid "Renaming %s to %s\n"
msgstr "Renommage de %s en %s\n"
@@ -9975,6 +10031,10 @@ msgstr ""
msgid "unable to access commit %s"
msgstr "impossible d'accéder le commit %s"
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "spécificateur de réference invalide : '%s'"
+
msgid "ignoring --verify-signatures for rebase"
msgstr "--verify-signatures est ignoré pour un rebasage"
@@ -10957,6 +11017,9 @@ msgstr ""
msgid "git reflog exists <ref>"
msgstr "git reflog exists <référence>"
+msgid "git reflog drop [--all [--single-worktree] | <refs>...]"
+msgstr "git reflog drop [--all [--single-worktree] | <réf>...]"
+
#, c-format
msgid "invalid timestamp '%s' given to '--%s'"
msgstr "horodatage invalide '%s' fourni à '--%s'"
@@ -11008,8 +11071,8 @@ msgid "Marking reachable objects..."
msgstr "Marquage des objets inaccessibles..."
#, c-format
-msgid "%s points nowhere!"
-msgstr "%s ne pointe nulle part !"
+msgid "reflog could not be found: '%s'"
+msgstr "impossible de trouver le journal de références : '%s'"
msgid "no reflog specified to delete"
msgstr "pas de journal de références à supprimer spécifié"
@@ -11018,6 +11081,15 @@ msgstr "pas de journal de références à supprimer spécifié"
msgid "invalid ref format: %s"
msgstr "format de référence invalide : %s"
+msgid "drop the reflogs of all references"
+msgstr "abandonner les reflogs de toutes les références"
+
+msgid "drop reflogs from the current worktree only"
+msgstr "abandonner les reflogs de l'arbre-de-travail actuel uniquement"
+
+msgid "references specified along with --all"
+msgstr "références spécifiées en même temps que --all"
+
msgid "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
msgstr "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
@@ -11581,7 +11653,10 @@ msgid "approxidate"
msgstr "date approximative"
msgid "with --cruft, expire objects older than this"
-msgstr "avec --cruft, faire expirer les objets plus vieux que celui-ci"
+msgstr "avec --cruft, faire expirer les objets plus vieux que ceci"
+
+msgid "with --cruft, only repack cruft packs smaller than this"
+msgstr "avec --cruft, ne réempaqueter que les objets plus petits que ceci"
msgid "remove redundant packs, and run git-prune-packed"
msgstr "supprimer les paquets redondants et lancer git-prune-packed"
@@ -12064,6 +12139,9 @@ msgstr "impossible de récupérer l'utilisation du disque de %s"
msgid "invalid value for '%s': '%s', the only allowed format is '%s'"
msgstr "valeur invalide pour '%s' : '%s', le seul format permis est '%s'"
+msgid "-z option used with unsupported option"
+msgstr "option -z utilisée avec une option non supportée"
+
msgid "rev-list does not support display of notes"
msgstr "rev-list ne supporte l'affichage des notes"
@@ -13970,8 +14048,8 @@ msgid "git update-ref [<options>] <refname> <new-oid> [<old-oid>]"
msgstr ""
"git update-ref [<options>] <nom-référence> <nouvel-oid> [<ancien-oid>]"
-msgid "git update-ref [<options>] --stdin [-z]"
-msgstr "git update-ref [<options>] --stdin [-z]"
+msgid "git update-ref [<options>] --stdin [-z] [--batch-updates]"
+msgstr "git update-ref [<options>] --stdin [-z] [--batch-updates]"
msgid "delete the reference"
msgstr "supprimer la référence"
@@ -13985,6 +14063,9 @@ msgstr "l'entrée standard a des arguments qui se terminent par NUL"
msgid "read updates from stdin"
msgstr "lire les mises à jour depuis l'entrée standard"
+msgid "batch reference updates"
+msgstr "traiter les mises à jour par lot"
+
msgid "update the info files from scratch"
msgstr "mettre à jour les fichiers d'information à partir de zéro"
@@ -14690,6 +14771,9 @@ msgstr "Compare des fichiers de l'arbre de travail et de l'index"
msgid "Compare a tree to the working tree or index"
msgstr "Comparer un arbre avec l'arbre de travail ou l'index"
+msgid "Compare the content and mode of provided blob pairs"
+msgstr "Compare le contenu et le mode des paires de blobs fournies"
+
msgid "Compares the content and mode of blobs found via two tree objects"
msgstr "Compare le contenu et le mode des blobs trouvés via deux objets arbre"
@@ -17679,6 +17763,10 @@ msgid "Unknown value for http.proactiveauth"
msgstr "valeur inconnue pour http.proactiveauth"
#, c-format
+msgid "failed to parse %s"
+msgstr "échec de l'analyse de %s"
+
+#, c-format
msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
msgstr "Dorsale SSL '%s' non supportée. Dorsales SSL supportées :"
@@ -17871,6 +17959,10 @@ msgid "invalid marker-size '%s', expecting an integer"
msgstr "taille de marqueur invalide '%s', entier attendu"
#, c-format
+msgid "Could not parse object '%s'"
+msgstr "Impossible d'analyser l'objet '%s'"
+
+#, c-format
msgid "Failed to merge submodule %s (not checked out)"
msgstr "Échec de la fusion du sous-module %s (non extrait)"
@@ -18119,264 +18211,6 @@ msgstr ""
msgid "collecting merge info failed for trees %s, %s, %s"
msgstr "échec de collecte l'information de fusion pour les arbres %s, %s, %s"
-msgid "(bad commit)\n"
-msgstr "(mauvais commit)\n"
-
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "échec de add_cacheinfo pour le chemin '%s' ; abandon de la fusion."
-
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "échec de add_cacheinfo pour le chemin '%s' ; abandon de la fusion."
-
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "impossible de créer le chemin '%s' %s"
-
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "Suppression de %s pour faire de la place pour le sous-répertoire\n"
-
-msgid ": perhaps a D/F conflict?"
-msgstr ": peut-être un conflit D/F ?"
-
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "refus de perdre le fichier non suivi '%s'"
-
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "blob attendu pour %s '%s'"
-
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "échec à l'ouverture de '%s' : %s"
-
-#, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "échec à la création du lien symbolique '%s' : %s"
-
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "ne sait pas traiter %06o %s '%s'"
-
-#, c-format
-msgid "Failed to merge submodule %s (repository corrupt)"
-msgstr "Échec de la fusion du sous-module %s (dépôt corrompu)"
-
-#, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "Avance rapide du sous-module %s au commit suivant :"
-
-#, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Avance rapide du sous-module %s"
-
-#, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr ""
-"Échec de fusion du sous-module %s (fusion suivant les commits non trouvée)"
-
-#, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "Échec de fusion du sous-module %s (pas en avance rapide)"
-
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "Résolution possible de fusion trouvée pour le sous-module :\n"
-
-#, c-format
-msgid ""
-"If this is correct simply add it to the index for example\n"
-"by using:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"which will accept this suggestion.\n"
-msgstr ""
-"Si c'est correct, ajoutez le simplement à l'index\n"
-"en utilisant par exemple :\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"qui acceptera cette suggestion.\n"
-
-#, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "Échec de fusion du sous-module %s (plusieurs fusions trouvées)"
-
-msgid "failed to execute internal merge"
-msgstr "échec à l'exécution de la fusion interne"
-
-#, c-format
-msgid "unable to add %s to database"
-msgstr "impossible d'ajouter %s à la base de données"
-
-#, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr ""
-"Erreur : refus de perdre le fichier non suivi %s ; écriture dans %s à la "
-"place."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
-msgstr ""
-"CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s de "
-"%s laissée dans l'arbre."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
-msgstr ""
-"CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version "
-"%s de %s laissée dans l'arbre."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
-msgstr ""
-"CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s de "
-"%s laissée dans l'arbre dans le fichier %s."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree at %s."
-msgstr ""
-"CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. Version "
-"%s de %s laissée dans l'arbre dans le fichier %s."
-
-msgid "rename"
-msgstr "renommage"
-
-msgid "renamed"
-msgstr "renommé"
-
-#, c-format
-msgid "Refusing to lose dirty file at %s"
-msgstr "Refus de perdre le fichier modifié %s"
-
-#, c-format
-msgid "Refusing to lose untracked file at %s, even though it's in the way."
-msgstr "Refus de perdre le fichier non suivi %s, même s'il gêne."
-
-#, c-format
-msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
-msgstr ""
-"CONFLIT (renommage/ajout) : Renommage de %s->%s dans %s. %s ajouté dans %s"
-
-#, c-format
-msgid "%s is a directory in %s adding as %s instead"
-msgstr "%s est un répertoire dans %s ajouté plutôt comme %s"
-
-#, c-format
-msgid "Refusing to lose untracked file at %s; adding as %s instead"
-msgstr "Refus de perdre le fichier non suivi %s ; ajout comme %s à la place"
-
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
-"\"%s\"->\"%s\" in \"%s\"%s"
-msgstr ""
-"CONFLIT (renommage/renommage) : Renommage de \"%s\"->\"%s\" dans la branche "
-"\"%s\" et renommage \"%s\"->\"%s\" dans \"%s\"%s"
-
-msgid " (left unresolved)"
-msgstr " (laissé non résolu)"
-
-#, c-format
-msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
-msgstr ""
-"CONFLIT (renommage/renommage) : renommage '%s'->'%s' dans %s. Renommage '%s'-"
-">'%s' dans %s"
-
-#, c-format
-msgid ""
-"CONFLICT (directory rename split): Unclear where to place %s because "
-"directory %s was renamed to multiple other directories, with no destination "
-"getting a majority of the files."
-msgstr ""
-"CONFLIT (renommage de répertoire coupé) : la place de %s n'est pas claire "
-"parce que le répertoire %s a été renommé en plusieurs autres répertoires, "
-"sans aucune destination récupérant la majorité des fichiers."
-
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
-">%s in %s"
-msgstr ""
-"CONFLIT (renommage/renommage) : renommage du répertoire %s->%s dans %s. "
-"Renommage de répertoire %s->%s dans %s"
-
-#, c-format
-msgid "cannot read object %s"
-msgstr "impossible de lire l'objet %s"
-
-#, c-format
-msgid "object %s is not a blob"
-msgstr "l'objet %s n'est pas un blob"
-
-msgid "modify"
-msgstr "modification"
-
-msgid "modified"
-msgstr "modifié"
-
-#, c-format
-msgid "Skipped %s (merged same as existing)"
-msgstr "%s sauté (fusion identique à l'existant)"
-
-#, c-format
-msgid "Adding as %s instead"
-msgstr "Ajout plutôt comme %s"
-
-#, c-format
-msgid "Removing %s"
-msgstr "Suppression de %s"
-
-msgid "file/directory"
-msgstr "fichier/répertoire"
-
-msgid "directory/file"
-msgstr "répertoire/fichier"
-
-#, c-format
-msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
-msgstr ""
-"CONFLIT (%s) : Il y a un répertoire nommé %s dans %s. Ajout de %s comme %s"
-
-#, c-format
-msgid "Adding %s"
-msgstr "Ajout de %s"
-
-#, c-format
-msgid "CONFLICT (add/add): Merge conflict in %s"
-msgstr "CONFLIT (ajout/ajout) : Conflit de fusion dans %s"
-
-#, c-format
-msgid "merging of trees %s and %s failed"
-msgstr "échec de fusion des arbres %s et %s"
-
-msgid "Merging:"
-msgstr "Fusion :"
-
-#, c-format
-msgid "found %u common ancestor:"
-msgid_plural "found %u common ancestors:"
-msgstr[0] "%u ancêtre commun trouvé :"
-msgstr[1] "%u ancêtres communs trouvés :"
-
-msgid "merge returned no commit"
-msgstr "la fusion n'a pas retourné de commit"
-
-#, c-format
-msgid "Could not parse object '%s'"
-msgstr "Impossible d'analyser l'objet '%s'"
-
msgid "failed to read the cache"
msgstr "impossible de lire le cache"
@@ -18418,13 +18252,14 @@ msgstr "impossible de lier '%s' à '%s'"
msgid "failed to clear multi-pack-index at %s"
msgstr "échec du nettoyage de l'index de multi-paquet à %s"
-msgid "cannot write incremental MIDX with bitmap"
-msgstr "impossible d'écrire un MIDX incrémental avec des bitmap"
-
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr ""
"index multi-paquet existant ignoré ; non-concordance de la somme de contrôle"
+#, c-format
+msgid "could not load reverse index for MIDX %s"
+msgstr "impossible de charger l'index inversé pour le MIDX %s"
+
msgid "Adding packfiles to multi-pack-index"
msgstr "Ajout de fichiers paquet à un index multi-paquet"
@@ -18692,66 +18527,6 @@ msgid "Failed to convert object from %s to %s"
msgstr "Échec de conversion de l'objet de %s vers %s"
#, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr ""
-"le répertoire objet %s n'existe pas ; vérifiez .git/objects/info/alternates"
-
-#, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "impossible de normaliser le chemin d'objet alternatif : %s"
-
-#, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s : magasins d'objets alternatifs ignorés, récursion trop profonde"
-
-msgid "unable to fdopen alternates lockfile"
-msgstr "impossible d'ouvrir (fdopen) le fichier verrou des alternatives"
-
-msgid "unable to read alternates file"
-msgstr "lecture du fichier d'alternatives impossible"
-
-msgid "unable to move new alternates file into place"
-msgstr "impossible de déplacer le nouveau fichier d'alternative"
-
-#, c-format
-msgid "path '%s' does not exist"
-msgstr "le chemin '%s' n'existe pas"
-
-#, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr ""
-"extraire le dépôt de référence '%s' comme une extraction liée n'est pas "
-"encore supporté."
-
-#, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "le dépôt de référence '%s' n'est pas un dépôt local."
-
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "le dépôt de référence '%s' est superficiel"
-
-#, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "le dépôt de référence '%s' est greffé"
-
-#, c-format
-msgid "could not find object directory matching %s"
-msgstr "impossible de trouver le répertoire objet correspondant à %s"
-
-#, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "ligne invalide pendant l'analyse des refs alternatives : %s"
-
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "essai de mmap %<PRIuMAX> au delà de la limite %<PRIuMAX>"
-
-#, c-format
-msgid "mmap failed%s"
-msgstr "échec de mmap%s"
-
-#, c-format
msgid "object file %s is empty"
msgstr "le fichier objet %s est vide"
@@ -18787,18 +18562,6 @@ msgid "loose object %s (stored in %s) is corrupt"
msgstr "l'objet libre %s (stocké dans %s) est corrompu"
#, c-format
-msgid "replacement %s not found for %s"
-msgstr "remplacement %s non trouvé pour %s"
-
-#, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "l'objet empaqueté %s (stocké dans %s) est corrompu"
-
-#, c-format
-msgid "missing mapping of %s to %s"
-msgstr "correspondance manquante entre %s et %s"
-
-#, c-format
msgid "unable to open %s"
msgstr "impossible d'ouvrir %s"
@@ -18892,10 +18655,6 @@ msgid "%s: unsupported file type"
msgstr "%s : type de fichier non supporté"
#, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s n'est pas un objet '%s' valide"
-
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "incohérence de hachage pour %s (%s attendu)"
@@ -18912,6 +18671,10 @@ msgid "unable to parse header of %s"
msgstr "impossible d'analyser l'entête de %s"
#, c-format
+msgid "unable to parse type from header '%s' of %s"
+msgstr "impossible d'analyser le type depuis l'entête '%s' de '%s'"
+
+#, c-format
msgid "unable to unpack contents of %s"
msgstr "impossible de dépaqueter le contenu de %s"
@@ -19072,6 +18835,74 @@ msgid "invalid object name '%.*s'."
msgstr "nom d'objet invalide : '%.*s'."
#, c-format
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr ""
+"le répertoire objet %s n'existe pas ; vérifiez .git/objects/info/alternates"
+
+#, c-format
+msgid "unable to normalize alternate object path: %s"
+msgstr "impossible de normaliser le chemin d'objet alternatif : %s"
+
+#, c-format
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s : magasins d'objets alternatifs ignorés, récursion trop profonde"
+
+msgid "unable to fdopen alternates lockfile"
+msgstr "impossible d'ouvrir (fdopen) le fichier verrou des alternatives"
+
+msgid "unable to read alternates file"
+msgstr "lecture du fichier d'alternatives impossible"
+
+msgid "unable to move new alternates file into place"
+msgstr "impossible de déplacer le nouveau fichier d'alternative"
+
+#, c-format
+msgid "path '%s' does not exist"
+msgstr "le chemin '%s' n'existe pas"
+
+#, c-format
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr ""
+"extraire le dépôt de référence '%s' comme une extraction liée n'est pas "
+"encore supporté."
+
+#, c-format
+msgid "reference repository '%s' is not a local repository."
+msgstr "le dépôt de référence '%s' n'est pas un dépôt local."
+
+#, c-format
+msgid "reference repository '%s' is shallow"
+msgstr "le dépôt de référence '%s' est superficiel"
+
+#, c-format
+msgid "reference repository '%s' is grafted"
+msgstr "le dépôt de référence '%s' est greffé"
+
+#, c-format
+msgid "could not find object directory matching %s"
+msgstr "impossible de trouver le répertoire objet correspondant à %s"
+
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "ligne invalide pendant l'analyse des refs alternatives : %s"
+
+#, c-format
+msgid "replacement %s not found for %s"
+msgstr "remplacement %s non trouvé pour %s"
+
+#, c-format
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "l'objet empaqueté %s (stocké dans %s) est corrompu"
+
+#, c-format
+msgid "missing mapping of %s to %s"
+msgstr "correspondance manquante entre %s et %s"
+
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s n'est pas un objet '%s' valide"
+
+#, c-format
msgid "invalid object type \"%s\""
msgstr "type d'objet invalide \"%s\""
@@ -19356,8 +19187,17 @@ msgid "%s isn't available"
msgstr "%s n'est pas disponible"
#, c-format
+msgid "value %s for %s not in range [%<PRIdMAX>,%<PRIdMAX>]"
+msgstr "valeur %s pour %s pas dans la plage [%<PRIdMAX>,%<PRIdMAX>]"
+
+#, c-format
+msgid "%s expects an integer value with an optional k/m/g suffix"
+msgstr "%s attend une valeur entière avec un suffixe k/m/g optionnel"
+
+#, c-format
msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
-msgstr "%s attend une valeur entière non négative avec une suffixe k/m/g"
+msgstr ""
+"%s attend une valeur entière non négative avec un suffixe k/m/g optionnel"
#, c-format
msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
@@ -19515,10 +19355,6 @@ msgid "bad boolean environment value '%s' for '%s'"
msgstr "valeur booléenne d'environnement invalide '%s' pour '%s'"
#, c-format
-msgid "failed to parse %s"
-msgstr "échec de l'analyse de %s"
-
-#, c-format
msgid "failed to walk children of tree %s: not found"
msgstr "échec de parcours des enfants de l'arbre %s : non trouvé"
@@ -19691,8 +19527,12 @@ msgid "could not fetch %s from promisor remote"
msgstr "impossible de récupérer %s depuis le distant de prometteur"
#, c-format
-msgid "known remote named '%s' but with url '%s' instead of '%s'"
-msgstr "distant connu nommé '%s' mais avec l'url '%s' au lieu de '%s'"
+msgid "no or empty URL advertised for remote '%s'"
+msgstr "URL manquante ou vide annoncée pour le distant '%s'"
+
+#, c-format
+msgid "known remote named '%s' but with URL '%s' instead of '%s'"
+msgstr "distant connu nommé '%s' mais avec l'URL '%s' au lieu de '%s'"
#, c-format
msgid "unknown '%s' value for '%s' config option"
@@ -20466,6 +20306,10 @@ msgid "Checking references consistency"
msgstr "Vérification de la cohérence des références"
#, c-format
+msgid "unable to open '%s'"
+msgstr "impossible d'ouvrir '%s'"
+
+#, c-format
msgid "refname is dangerous: %s"
msgstr "le nom de réference est dangereux : %s"
@@ -20539,10 +20383,6 @@ msgstr ""
"le nom de réf %s est une réf symbolique, la copie n'est pas prise en charge"
#, c-format
-msgid "invalid refspec '%s'"
-msgstr "spécificateur de réference invalide : '%s'"
-
-#, c-format
msgid "pattern '%s' has no '*'"
msgstr "la valeur '%s' du motif n'a pas de '*'"
@@ -21097,7 +20937,7 @@ msgstr "impossible d'ajouter l'enrôlement"
msgid "could not set recommended config"
msgstr "impossible de réglér la configuration recommandée"
-msgid "could not turn on maintenance"
+msgid "could not toggle maintenance"
msgstr "impossible d'activer la maintenance"
msgid "could not start the FSMonitor daemon"
@@ -21146,13 +20986,16 @@ msgid "specify if tags should be fetched during clone"
msgstr ""
"spécifier si les étiquettes devraient être récupérées pendant le clonage"
+msgid "specify if background maintenance should be enabled"
+msgstr "spécifier si la maintenance en tâche de fond doit être activée"
+
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <branche-principale>] [--full-"
"clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<enrôlement>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enrôlement>]"
#, c-format
msgid "cannot deduce worktree name from '%s'"
@@ -21190,19 +21033,33 @@ msgstr "scalar diagnose [<enrôlement>]"
msgid "`scalar list` does not take arguments"
msgstr "`scalar list` n'accepte pas d'argument"
-msgid "scalar register [<enlistment>]"
-msgstr "scalar register [<enrôlement>]"
+msgid "scalar register [--[no-]maintenance] [<enlistment>]"
+msgstr "scalar register [--[no-]maintenance] [<enrôlement>]"
msgid "reconfigure all registered enlistments"
msgstr "reconfigurer tous les enrôlements enregistrés"
-msgid "scalar reconfigure [--all | <enlistment>]"
-msgstr "scala reconfigure [--all|<enrôlement>]"
+msgid "(enable|disable|keep)"
+msgstr "(enable|disable|keep)"
+
+msgid "signal how to adjust background maintenance"
+msgstr "signaler comment ajuster la maintenance en tâche de fond"
+
+msgid ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enlistment>]"
+msgstr ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enrôlement>]"
msgid "--all or <enlistment>, but not both"
msgstr "--all ou <enrôlement>, mais pas les deux"
#, c-format
+msgid "unknown mode for --maintenance option: %s"
+msgstr "mode inconnu pour l'option --maintenance : %s"
+
+#, c-format
msgid "could not remove stale scalar.repo '%s'"
msgstr "impossible de supprimé le scalar.repo obsolète '%s'"
@@ -22652,6 +22509,9 @@ msgstr "effacer l'arbre de cache avant chaque itération"
msgid "number of entries in the cache tree to invalidate (default 0)"
msgstr "nombre d'entrées dans l'arbre de cache à invalider (par défaut, 0)"
+msgid "the number of objects to write"
+msgstr "le nombre d'objets à écrire"
+
msgid "test-tool path-walk <options> -- <revision-options>"
msgstr "test-tool path-walk <options> -- <options-de-révision>"
@@ -23445,6 +23305,14 @@ msgstr "impossible d'accéder au répertoire de travail courant"
msgid "unable to get random bytes"
msgstr "impossible d'acquérir des octets aléatoires"
+#, c-format
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "essai de mmap %<PRIuMAX> au delà de la limite %<PRIuMAX>"
+
+#, c-format
+msgid "mmap failed%s"
+msgstr "échec de mmap%s"
+
msgid "Unmerged paths:"
msgstr "Chemins non fusionnés :"
@@ -24203,6 +24071,15 @@ msgstr ""
"debug."
#, perl-format
+msgid "Outlook reassigned Message-ID to: %s\n"
+msgstr "Outlook a réassigné le Message-ID à : %s\n"
+
+msgid "Warning: Could not retrieve Message-ID from server response.\n"
+msgstr ""
+"Avertissement : Impossible de récupérer le Message-ID dans la réponse du "
+"serveur.\n"
+
+#, perl-format
msgid "Failed to send %s\n"
msgstr "Échec de l'envoi de %s\n"
@@ -24299,6 +24176,278 @@ msgstr "%s sauté avec un suffix de sauvegarde '%s'.\n"
msgid "Do you really want to send %s? [y|N]: "
msgstr "Souhaitez-vous réellement envoyer %s ?[y|N] : "
+#~ msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
+#~ msgstr "git cat-file (-t | -s) [--allow-unknown-type] <objet>"
+
+#~ msgid "allow -s and -t to work with broken/corrupt objects"
+#~ msgstr "autoriser -s et -t à travailler sur des objets cassés/corrompus"
+
+#, c-format
+#~ msgid "%s: object is of unknown type '%s': %s"
+#~ msgstr "%s : l'objet a un type '%s' inconnu : %s"
+
+#, c-format
+#~ msgid "%s points nowhere!"
+#~ msgstr "%s ne pointe nulle part !"
+
+#~ msgid "(bad commit)\n"
+#~ msgstr "(mauvais commit)\n"
+
+#, c-format
+#~ msgid "add_cacheinfo failed for path '%s'; merge aborting."
+#~ msgstr "échec de add_cacheinfo pour le chemin '%s' ; abandon de la fusion."
+
+#, c-format
+#~ msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+#~ msgstr "échec de add_cacheinfo pour le chemin '%s' ; abandon de la fusion."
+
+#, c-format
+#~ msgid "failed to create path '%s'%s"
+#~ msgstr "impossible de créer le chemin '%s' %s"
+
+#, c-format
+#~ msgid "Removing %s to make room for subdirectory\n"
+#~ msgstr "Suppression de %s pour faire de la place pour le sous-répertoire\n"
+
+#~ msgid ": perhaps a D/F conflict?"
+#~ msgstr ": peut-être un conflit D/F ?"
+
+#, c-format
+#~ msgid "refusing to lose untracked file at '%s'"
+#~ msgstr "refus de perdre le fichier non suivi '%s'"
+
+#, c-format
+#~ msgid "blob expected for %s '%s'"
+#~ msgstr "blob attendu pour %s '%s'"
+
+#, c-format
+#~ msgid "failed to open '%s': %s"
+#~ msgstr "échec à l'ouverture de '%s' : %s"
+
+#, c-format
+#~ msgid "failed to symlink '%s': %s"
+#~ msgstr "échec à la création du lien symbolique '%s' : %s"
+
+#, c-format
+#~ msgid "do not know what to do with %06o %s '%s'"
+#~ msgstr "ne sait pas traiter %06o %s '%s'"
+
+#, c-format
+#~ msgid "Failed to merge submodule %s (repository corrupt)"
+#~ msgstr "Échec de la fusion du sous-module %s (dépôt corrompu)"
+
+#, c-format
+#~ msgid "Fast-forwarding submodule %s to the following commit:"
+#~ msgstr "Avance rapide du sous-module %s au commit suivant :"
+
+#, c-format
+#~ msgid "Fast-forwarding submodule %s"
+#~ msgstr "Avance rapide du sous-module %s"
+
+#, c-format
+#~ msgid "Failed to merge submodule %s (merge following commits not found)"
+#~ msgstr ""
+#~ "Échec de fusion du sous-module %s (fusion suivant les commits non trouvée)"
+
+#, c-format
+#~ msgid "Failed to merge submodule %s (not fast-forward)"
+#~ msgstr "Échec de fusion du sous-module %s (pas en avance rapide)"
+
+#~ msgid "Found a possible merge resolution for the submodule:\n"
+#~ msgstr "Résolution possible de fusion trouvée pour le sous-module :\n"
+
+#, c-format
+#~ msgid ""
+#~ "If this is correct simply add it to the index for example\n"
+#~ "by using:\n"
+#~ "\n"
+#~ " git update-index --cacheinfo 160000 %s \"%s\"\n"
+#~ "\n"
+#~ "which will accept this suggestion.\n"
+#~ msgstr ""
+#~ "Si c'est correct, ajoutez le simplement à l'index\n"
+#~ "en utilisant par exemple :\n"
+#~ "\n"
+#~ " git update-index --cacheinfo 160000 %s \"%s\"\n"
+#~ "\n"
+#~ "qui acceptera cette suggestion.\n"
+
+#, c-format
+#~ msgid "Failed to merge submodule %s (multiple merges found)"
+#~ msgstr "Échec de fusion du sous-module %s (plusieurs fusions trouvées)"
+
+#~ msgid "failed to execute internal merge"
+#~ msgstr "échec à l'exécution de la fusion interne"
+
+#, c-format
+#~ msgid "unable to add %s to database"
+#~ msgstr "impossible d'ajouter %s à la base de données"
+
+#, c-format
+#~ msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+#~ msgstr ""
+#~ "Erreur : refus de perdre le fichier non suivi %s ; écriture dans %s à la "
+#~ "place."
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s "
+#~ "left in tree."
+#~ msgstr ""
+#~ "CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s "
+#~ "de %s laissée dans l'arbre."
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of "
+#~ "%s left in tree."
+#~ msgstr ""
+#~ "CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. "
+#~ "Version %s de %s laissée dans l'arbre."
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s "
+#~ "left in tree at %s."
+#~ msgstr ""
+#~ "CONFLIT (%s/suppression) : %s supprimé dans %s et %s dans %s. Version %s "
+#~ "de %s laissée dans l'arbre dans le fichier %s."
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of "
+#~ "%s left in tree at %s."
+#~ msgstr ""
+#~ "CONFLIT (%s/suppression) : %s supprimé dans %s et %s à %s dans %s. "
+#~ "Version %s de %s laissée dans l'arbre dans le fichier %s."
+
+#~ msgid "rename"
+#~ msgstr "renommage"
+
+#~ msgid "renamed"
+#~ msgstr "renommé"
+
+#, c-format
+#~ msgid "Refusing to lose dirty file at %s"
+#~ msgstr "Refus de perdre le fichier modifié %s"
+
+#, c-format
+#~ msgid "Refusing to lose untracked file at %s, even though it's in the way."
+#~ msgstr "Refus de perdre le fichier non suivi %s, même s'il gêne."
+
+#, c-format
+#~ msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
+#~ msgstr ""
+#~ "CONFLIT (renommage/ajout) : Renommage de %s->%s dans %s. %s ajouté dans %s"
+
+#, c-format
+#~ msgid "%s is a directory in %s adding as %s instead"
+#~ msgstr "%s est un répertoire dans %s ajouté plutôt comme %s"
+
+#, c-format
+#~ msgid "Refusing to lose untracked file at %s; adding as %s instead"
+#~ msgstr "Refus de perdre le fichier non suivi %s ; ajout comme %s à la place"
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
+#~ "\"%s\"->\"%s\" in \"%s\"%s"
+#~ msgstr ""
+#~ "CONFLIT (renommage/renommage) : Renommage de \"%s\"->\"%s\" dans la "
+#~ "branche \"%s\" et renommage \"%s\"->\"%s\" dans \"%s\"%s"
+
+#~ msgid " (left unresolved)"
+#~ msgstr " (laissé non résolu)"
+
+#, c-format
+#~ msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
+#~ msgstr ""
+#~ "CONFLIT (renommage/renommage) : renommage '%s'->'%s' dans %s. Renommage "
+#~ "'%s'->'%s' dans %s"
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (directory rename split): Unclear where to place %s because "
+#~ "directory %s was renamed to multiple other directories, with no "
+#~ "destination getting a majority of the files."
+#~ msgstr ""
+#~ "CONFLIT (renommage de répertoire coupé) : la place de %s n'est pas claire "
+#~ "parce que le répertoire %s a été renommé en plusieurs autres répertoires, "
+#~ "sans aucune destination récupérant la majorité des fichiers."
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory "
+#~ "%s->%s in %s"
+#~ msgstr ""
+#~ "CONFLIT (renommage/renommage) : renommage du répertoire %s->%s dans %s. "
+#~ "Renommage de répertoire %s->%s dans %s"
+
+#, c-format
+#~ msgid "cannot read object %s"
+#~ msgstr "impossible de lire l'objet %s"
+
+#, c-format
+#~ msgid "object %s is not a blob"
+#~ msgstr "l'objet %s n'est pas un blob"
+
+#~ msgid "modify"
+#~ msgstr "modification"
+
+#~ msgid "modified"
+#~ msgstr "modifié"
+
+#, c-format
+#~ msgid "Skipped %s (merged same as existing)"
+#~ msgstr "%s sauté (fusion identique à l'existant)"
+
+#, c-format
+#~ msgid "Adding as %s instead"
+#~ msgstr "Ajout plutôt comme %s"
+
+#, c-format
+#~ msgid "Removing %s"
+#~ msgstr "Suppression de %s"
+
+#~ msgid "file/directory"
+#~ msgstr "fichier/répertoire"
+
+#~ msgid "directory/file"
+#~ msgstr "répertoire/fichier"
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
+#~ msgstr ""
+#~ "CONFLIT (%s) : Il y a un répertoire nommé %s dans %s. Ajout de %s comme %s"
+
+#, c-format
+#~ msgid "Adding %s"
+#~ msgstr "Ajout de %s"
+
+#, c-format
+#~ msgid "CONFLICT (add/add): Merge conflict in %s"
+#~ msgstr "CONFLIT (ajout/ajout) : Conflit de fusion dans %s"
+
+#, c-format
+#~ msgid "merging of trees %s and %s failed"
+#~ msgstr "échec de fusion des arbres %s et %s"
+
+#~ msgid "Merging:"
+#~ msgstr "Fusion :"
+
+#, c-format
+#~ msgid "found %u common ancestor:"
+#~ msgid_plural "found %u common ancestors:"
+#~ msgstr[0] "%u ancêtre commun trouvé :"
+#~ msgstr[1] "%u ancêtres communs trouvés :"
+
+#~ msgid "merge returned no commit"
+#~ msgstr "la fusion n'a pas retourné de commit"
+
+#~ msgid "cannot write incremental MIDX with bitmap"
+#~ msgstr "impossible d'écrire un MIDX incrémental avec des bitmap"
+
#, c-format
#~ msgid "Could not find remote branch %s to clone."
#~ msgstr "Impossible de trouver la branche distante '%s' à cloner."
@@ -24307,9 +24456,6 @@ msgstr "Souhaitez-vous réellement envoyer %s ?[y|N] : "
#~ msgid "merging cannot continue; got unclean result of %d"
#~ msgstr "la fusion ne peut pas continuer ; résultat non propre retourné %d"
-#~ msgid "git repack [<options>]"
-#~ msgstr "git repack [<options>]"
-
#~ msgid "--onto and --advance are incompatible"
#~ msgstr "--onto et --advance sont incompatibles"
diff --git a/po/ga.po b/po/ga.po
new file mode 100644
index 0000000000..c03f63756e
--- /dev/null
+++ b/po/ga.po
@@ -0,0 +1,29758 @@
+# Irish translations for Git package.
+# Copyright (C) 2025 THE Git'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the Git package.
+# Automatically generated, 2025.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Git\n"
+"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
+"POT-Creation-Date: 2025-05-29 09:16+0100\n"
+"PO-Revision-Date: 2025-05-29 10:10+0100\n"
+"Last-Translator: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>\n"
+"Language-Team: none\n"
+"Language: ga\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;\n"
+"X-Generator: Poedit 3.4.4\n"
+
+#: add-interactive.c
+#, c-format
+msgid "Huh (%s)?"
+msgstr "Huh (%s)?"
+
+#: add-interactive.c builtin/merge.c builtin/rebase.c reset.c sequencer.c
+msgid "could not read index"
+msgstr "ní raibh in ann innéacs a léamh"
+
+#: add-interactive.c
+msgid "binary"
+msgstr "dénártha"
+
+#: add-interactive.c
+msgid "nothing"
+msgstr "rud ar bith"
+
+#: add-interactive.c
+msgid "unchanged"
+msgstr "gan athrú"
+
+#: add-interactive.c
+msgid "Update"
+msgstr "Nuashonraigh"
+
+#: add-interactive.c
+#, c-format
+msgid "could not stage '%s'"
+msgstr "ní fhéadfaí '%s' a chéim"
+
+#: add-interactive.c builtin/stash.c reset.c sequencer.c
+msgid "could not write index"
+msgstr "ní fhéadfadh innéacs a scríobh"
+
+#: add-interactive.c
+#, c-format
+msgid "updated %d path\n"
+msgid_plural "updated %d paths\n"
+msgstr[0] "nuashonraithe %d cosán\n"
+msgstr[1] "nuashonraíodh %d cosán\n"
+msgstr[2] "nuashonraíodh %d cosán\n"
+
+#: add-interactive.c
+#, c-format
+msgid "note: %s is untracked now.\n"
+msgstr "nótaí: Tá %s dírianaithe anois.\n"
+
+#: add-interactive.c apply.c builtin/checkout.c builtin/reset.c
+#, c-format
+msgid "make_cache_entry failed for path '%s'"
+msgstr "theip ar make_cache_entry le haghaidh cosán '%s'"
+
+#: add-interactive.c
+msgid "Revert"
+msgstr "Aisghabháil"
+
+#: add-interactive.c
+msgid "Could not parse HEAD^{tree}"
+msgstr "Ní raibh sé in ann HEAD ^ {tree} a pharsáil"
+
+#: add-interactive.c
+#, c-format
+msgid "reverted %d path\n"
+msgid_plural "reverted %d paths\n"
+msgstr[0] "cosán %d aisiompaithe\n"
+msgstr[1] "%d cosán aisiompaithe\n"
+msgstr[2] "%d cosán aisiompaithe\n"
+
+#: add-interactive.c
+#, c-format
+msgid "No untracked files.\n"
+msgstr "Gan aon chomhaid neamhrianaithe.\n"
+
+#: add-interactive.c
+msgid "Add untracked"
+msgstr "Cuir neamh-rianaithe leis"
+
+#: add-interactive.c
+#, c-format
+msgid "added %d path\n"
+msgid_plural "added %d paths\n"
+msgstr[0] "cuireadh %d cosán leis\n"
+msgstr[1] "%d cosán curtha leis\n"
+msgstr[2] "%d cosán curtha leis\n"
+
+#: add-interactive.c
+#, c-format
+msgid "ignoring unmerged: %s"
+msgstr "ag neamhaird a dhéanamh de neamhchumasctha: %s"
+
+#: add-interactive.c
+#, c-format
+msgid "Only binary files changed.\n"
+msgstr "Níor athraigh ach comhaid dénártha.\n"
+
+#: add-interactive.c
+#, c-format
+msgid "No changes.\n"
+msgstr "Gan aon athruithe.\n"
+
+#: add-interactive.c
+msgid "Patch update"
+msgstr "Nuashonrú paiste"
+
+#: add-interactive.c
+msgid "Review diff"
+msgstr "Athbhreithniú diff"
+
+#: add-interactive.c
+msgid "show paths with changes"
+msgstr "taispeáin cosáin le hathruithe"
+
+#: add-interactive.c
+msgid "add working tree state to the staged set of changes"
+msgstr "cuir stát crann oibre leis an tsraith athruithe céimeádta"
+
+#: add-interactive.c
+msgid "revert staged set of changes back to the HEAD version"
+msgstr "tacar athruithe céime a chur ar ais chuig an leagan HEAD"
+
+#: add-interactive.c
+msgid "pick hunks and update selectively"
+msgstr "roghnaigh hunks agus nuashonraigh go roghnach"
+
+#: add-interactive.c
+msgid "view diff between HEAD and index"
+msgstr "féach ar an difríocht idir HEAD agus innéacs"
+
+#: add-interactive.c
+msgid "add contents of untracked files to the staged set of changes"
+msgstr "cuir ábhar comhaid neamhrianaithe leis an tacar athruithe céimeádta"
+
+#: add-interactive.c
+msgid "Prompt help:"
+msgstr "Cabhair pras:"
+
+#: add-interactive.c
+msgid "select a single item"
+msgstr "roghnaigh mír amháin"
+
+#: add-interactive.c
+msgid "select a range of items"
+msgstr "roghnaigh raon earraí"
+
+#: add-interactive.c
+msgid "select multiple ranges"
+msgstr "roghnaigh raonta iomadúla"
+
+#: add-interactive.c
+msgid "select item based on unique prefix"
+msgstr "roghnaigh mír bunaithe ar réimír uathúil"
+
+#: add-interactive.c
+msgid "unselect specified items"
+msgstr "míreanna sonraithe díroghnaigh"
+
+#: add-interactive.c
+msgid "choose all items"
+msgstr "roghnaigh gach earra"
+
+#: add-interactive.c
+msgid "(empty) finish selecting"
+msgstr "(folamh) críochnaigh a roghnú"
+
+#: add-interactive.c
+msgid "select a numbered item"
+msgstr "roghnaigh mír uimhrithe"
+
+#: add-interactive.c
+msgid "(empty) select nothing"
+msgstr "(folamh) roghnaigh aon rud"
+
+#: add-interactive.c builtin/clean.c
+msgid "*** Commands ***"
+msgstr "*** Orduithe ***"
+
+#: add-interactive.c builtin/clean.c
+msgid "What now"
+msgstr "Cad anois"
+
+#: add-interactive.c
+msgid "staged"
+msgstr "stáitse"
+
+#: add-interactive.c
+msgid "unstaged"
+msgstr "gan stáitse"
+
+#: add-interactive.c apply.c builtin/am.c builtin/bugreport.c builtin/clone.c
+#: builtin/diagnose.c builtin/fetch.c builtin/hook.c builtin/merge.c
+#: builtin/pull.c builtin/submodule--helper.c
+msgid "path"
+msgstr "cosán"
+
+#: add-interactive.c
+msgid "could not refresh index"
+msgstr "ní fhéadfadh innéacs a athnuachan"
+
+#: add-interactive.c builtin/clean.c
+#, c-format
+msgid "Bye.\n"
+msgstr "Slán..\n"
+
+#: add-patch.c
+#, c-format
+msgid "Stage mode change [y,n,q,a,d%s,?]? "
+msgstr "Athrú modh stáitse [y, n, q, a, d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Stage deletion [y,n,q,a,d%s,?]? "
+msgstr "Scriosadh céime [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Stage addition [y,n,q,a,d%s,?]? "
+msgstr "Breiseán céime [y, n, q, a, d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Stage this hunk [y,n,q,a,d%s,?]? "
+msgstr "Cuir an píosa seo ar stáitse [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"staging."
+msgstr ""
+"Má chuireann an paiste i bhfeidhm go glan, déanfar an hunk eagarthóireachta "
+"a mharcáil láithreach le haghaidh stáitsithe."
+
+#: add-patch.c
+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 - céim an hunk seo\n"
+"n - ná déan an hunk seo a chéile\n"
+"q - scor; ná déan an hunk seo ná aon cheann de na cinn atá fágtha a chéile\n"
+"a - céim an hunk seo agus gach hunc ina dhiaidh sin sa chomhad\n"
+"d - ná déan an hunk seo ná aon cheann de na hunks níos déanaí sa chomhad a "
+"chéile\n"
+
+#: add-patch.c
+#, c-format
+msgid "Stash mode change [y,n,q,a,d%s,?]? "
+msgstr "Athrú modh stash [y, n, q, a, d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Stash deletion [y,n,q,a,d%s,?]? "
+msgstr "Scriosadh staise [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Stash addition [y,n,q,a,d%s,?]? "
+msgstr "Breiseán stash [y, n, q, a, d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Stash this hunk [y,n,q,a,d%s,?]? "
+msgstr "An bhfuil an carachtar seo [y,n,q,a,d%s,?] i bhfolach? "
+
+#: add-patch.c
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"stashing."
+msgstr ""
+"Má chuireann an paiste i bhfeidhm go glan, déanfar an hunk eagarthóireachta "
+"a mharcáil láithreach le haghaidh stórála."
+
+#: add-patch.c
+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 - stash an hunk seo\n"
+"n - ná déan an hunk seo a stóráil\n"
+"q - scor; ná déan an hunk seo ná aon cheann de na cinn atá fágtha a stóráil\n"
+"a - stóráil an hunk seo agus gach hunk ina dhiaidh sin sa chomhad\n"
+"d - ná déan an hunk seo ná aon cheann de na hunks níos déanaí sa chomhad a "
+"stóráil\n"
+
+#: add-patch.c
+#, c-format
+msgid "Unstage mode change [y,n,q,a,d%s,?]? "
+msgstr "Athrú ar mhodh gan stáitse [y, n, q, a, d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Unstage deletion [y,n,q,a,d%s,?]? "
+msgstr "Scriosadh gan stáitse [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Unstage addition [y,n,q,a,d%s,?]? "
+msgstr "Breiseán gan stáitse [y, n, q, a, d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Unstage this hunk [y,n,q,a,d%s,?]? "
+msgstr "Dí-stáitseáil an píosa beag seo den stáitse [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"unstaging."
+msgstr ""
+"Má chuireann an paiste i bhfeidhm go glan, déanfar an hunk eagarthóireachta "
+"a mharcáil láithreach le haghaidh dístáisithe."
+
+#: add-patch.c
+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 - déan an hunk seo a dhíchur\n"
+"n - ná déan an hunk seo a dhíchur\n"
+"q - scor; ná déan an hunk seo nó aon cheann de na cinn atá fágtha a dhíchur\n"
+"a - déan an hunk seo a dhíchur agus gach hunk ina dhiaidh sin sa chomhad\n"
+"d - ná déan an hunk seo nó aon cheann de na huncanna níos déanaí sa chomhad "
+"a dhíchur\n"
+
+#: add-patch.c
+#, c-format
+msgid "Apply mode change to index [y,n,q,a,d%s,?]? "
+msgstr "Cuir athrú mód i bhfeidhm ar innéacs [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Apply deletion to index [y,n,q,a,d%s,?]? "
+msgstr "Cuir scriosadh i bhfeidhm ar innéacs [y, n, q, a, d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Apply addition to index [y,n,q,a,d%s,?]? "
+msgstr "Cuir an breiseán i bhfeidhm ar innéacs [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Apply this hunk to index [y,n,q,a,d%s,?]? "
+msgstr "Cuir an píosa seo i bhfeidhm ar innéacs [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"applying."
+msgstr ""
+"Má chuireann an paiste i bhfeidhm go glan, déanfar an hunk eagarthóireachta "
+"a mharcáil láithreach le haghaidh iarratas a dhéanamh."
+
+#: add-patch.c
+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 - cuir an hunk seo i bhfeidhm ar innéacs\n"
+"n - ná cuir an hunk seo i bhfeidhm ar innéacs\n"
+"q - scor; ná cuir an hunk seo ná aon cheann de na cinn atá fágtha i "
+"bhfeidhm\n"
+"a - cuir an hunk seo agus gach hunk níos déanaí i bhfeidhm sa chomhad\n"
+"d - ná cuir an hunk seo ná aon cheann de na hunks níos déanaí sa chomhad i "
+"bhfeidhm\n"
+
+#: add-patch.c
+#, c-format
+msgid "Discard mode change from worktree [y,n,q,a,d%s,?]? "
+msgstr "Athrú modh a dhiúscairt ó chrann oibre [y, n, q, a, d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Discard deletion from worktree [y,n,q,a,d%s,?]? "
+msgstr "An scriosadh ón gcrann oibre [y,n,q,a,d%s,?] a sheachaint? "
+
+#: add-patch.c
+#, c-format
+msgid "Discard addition from worktree [y,n,q,a,d%s,?]? "
+msgstr "Scrios an breiseán ón gcrann oibre [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Discard this hunk from worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"An bhfuil an píosa beag seo le fáil réidh ón gcrann oibre [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+msgid ""
+"If the patch applies cleanly, the edited hunk will immediately be marked for "
+"discarding."
+msgstr ""
+"Má chuireann an paiste i bhfeidhm go glan, déanfar an hunk eagarthóireachta "
+"a mharcáil láithreach lena dhiúscairt."
+
+#: add-patch.c
+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 - caitheamh an bonc seo ón gcrann oibre\n"
+"n - ná caitheamh an hunk seo ón gcrann oibre\n"
+"q - scor; ná caith an hunk seo ná aon cheann de na cinn atá fágtha\n"
+"a - caith an hunk seo agus gach hunc ina dhiaidh sin sa chomhad\n"
+"d - ná caith an hunk seo ná aon cheann de na huncanna níos déanaí sa "
+"chomhad\n"
+
+#: add-patch.c
+#, c-format
+msgid "Discard mode change from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Athrú modh a dhiúscairt ó innéacs agus crann oibre [y, n, q, a, d %s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Discard deletion from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"An scriosadh ón innéacs agus ón gcrann oibre [y,n,q,a,d%s,?] a dhíbirt? "
+
+#: add-patch.c
+#, c-format
+msgid "Discard addition from index and worktree [y,n,q,a,d%s,?]? "
+msgstr "Caitheamh breisiú ó innéacs agus crann oibre [y, n, q, a, d %s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Discard this hunk from index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"An bhfuil an píosa beag seo le fáil réidh ón innéacs agus ón gcrann oibre "
+"[y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+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 - caitheamh an hunk seo ón innéacs agus ón gcrann oibre\n"
+"n - ná caith an hunk seo ón innéacs agus ón gcrann oibre\n"
+"q - scor; ná caith an hunk seo ná aon cheann de na cinn atá fágtha\n"
+"a - caith an hunk seo agus gach hunc ina dhiaidh sin sa chomhad\n"
+"d - ná caith an hunk seo ná aon cheann de na huncanna níos déanaí sa "
+"chomhad\n"
+
+#: add-patch.c
+#, c-format
+msgid "Apply mode change to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Cuir athrú mód i bhfeidhm ar an innéacs agus ar an gcrann oibre "
+"[y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Apply deletion to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Cuir scriosadh i bhfeidhm ar innéacs agus crann oibre [y, n, q, a, d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Apply addition to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Cuir an breiseán i bhfeidhm ar an innéacs agus ar an gcrann oibre "
+"[y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Apply this hunk to index and worktree [y,n,q,a,d%s,?]? "
+msgstr ""
+"Cuir an píosa seo i bhfeidhm ar an innéacs agus ar an gcrann oibre "
+"[y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+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 - cuir an hunk seo i bhfeidhm ar innéacs agus ar chrann oibre\n"
+"n - ná cuir an hunk seo i bhfeidhm ar innéacs agus crann oibre\n"
+"q - scor; ná cuir an hunk seo ná aon cheann de na cinn atá fágtha i "
+"bhfeidhm\n"
+"a - cuir an hunk seo agus gach hunk níos déanaí i bhfeidhm sa chomhad\n"
+"d - ná cuir an hunk seo ná aon cheann de na hunks níos déanaí sa chomhad i "
+"bhfeidhm\n"
+
+#: add-patch.c
+#, c-format
+msgid "Apply mode change to worktree [y,n,q,a,d%s,?]? "
+msgstr "Cuir athrú mód i bhfeidhm ar an gcrann oibre [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Apply deletion to worktree [y,n,q,a,d%s,?]? "
+msgstr "Cuir scriosadh i bhfeidhm ar chrann oibre [y, n, q, a, d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Apply addition to worktree [y,n,q,a,d%s,?]? "
+msgstr "Cuir an breiseán i bhfeidhm ar an gcrann oibre [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+#, c-format
+msgid "Apply this hunk to worktree [y,n,q,a,d%s,?]? "
+msgstr "Cuir an píosa seo i bhfeidhm ar an gcrann oibre [y,n,q,a,d%s,?]? "
+
+#: add-patch.c
+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 - cuir an hunk seo i bhfeidhm ar chrann oibre\n"
+"n - ná cuir an hunk seo i bhfeidhm ar chrann oibre\n"
+"q - scor; ná cuir an hunk seo ná aon cheann de na cinn atá fágtha i "
+"bhfeidhm\n"
+"a - cuir an hunk seo agus gach hunk níos déanaí i bhfeidhm sa chomhad\n"
+"d - ná cuir an hunk seo ná aon cheann de na hunks níos déanaí sa chomhad i "
+"bhfeidhm\n"
+
+#: add-patch.c
+#, c-format
+msgid "could not parse hunk header '%.*s'"
+msgstr "níorbh fhéidir ceanntásc an bhlúire '%.*s' a pharsáil"
+
+#: add-patch.c
+msgid "could not parse diff"
+msgstr "ní raibh sé in ann difríocht a pharsáil"
+
+#: add-patch.c
+msgid "could not parse colored diff"
+msgstr "ní raibh sé in ann difríocht daite a pháirseáil"
+
+#: add-patch.c
+#, c-format
+msgid "failed to run '%s'"
+msgstr "theip ar '%s' a reáchtáil"
+
+#: add-patch.c
+msgid "mismatched output from interactive.diffFilter"
+msgstr "aschur mí-mheaitseáilte ó interactive.diffFilter"
+
+#: add-patch.c
+msgid ""
+"Your filter must maintain a one-to-one correspondence\n"
+"between its input and output lines."
+msgstr ""
+"Caithfidh do scagaire comhfhreagras duine le duine a choinneáil\n"
+"idir a línte ionchuir agus aschuir."
+
+#: add-patch.c
+#, c-format
+msgid ""
+"expected context line #%d in\n"
+"%.*s"
+msgstr ""
+"líne comhthéacs a bhfuil súil leo #%d i\n"
+"%.*s"
+
+#: add-patch.c
+#, c-format
+msgid ""
+"hunks do not overlap:\n"
+"%.*s\n"
+"\tdoes not end with:\n"
+"%.*s"
+msgstr ""
+"ní fhorluíonn hunks:\n"
+"%.*s\n"
+" ní chríochnaíonn sé le:\n"
+"%.*s"
+
+#: add-patch.c
+msgid "Manual hunk edit mode -- see bottom for a quick guide.\n"
+msgstr ""
+"Modh eagarthóireachta hunk láimhe - féach an bun le haghaidh treoir thapa.\n"
+
+#: add-patch.c
+#, c-format
+msgid ""
+"---\n"
+"To remove '%c' lines, make them ' ' lines (context).\n"
+"To remove '%c' lines, delete them.\n"
+"Lines starting with %s will be removed.\n"
+msgstr ""
+"---\n"
+"Chun línte '%c' a bhaint, déan línte '' iad (comhthéacs).\n"
+"Chun línte '%c' a bhaint, scrios iad.\n"
+"Bainfear línte a thosaíonn le %s.\n"
+
+#: add-patch.c
+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"
+"aborted and the hunk is left unchanged.\n"
+msgstr ""
+"Mura bhfuil feidhm aige go glan, tabharfar deis duit\n"
+"cuir in eagar arís. Má bhaintear gach líne den hunk, ansin is é an t-"
+"eagarthóireacht\n"
+"cuireadh isteach agus fágtar an hunk gan athrú.\n"
+
+#: add-patch.c
+msgid "could not parse hunk header"
+msgstr "ní fhéadfaí ceanntásc hunk a pháirseáil"
+
+#: add-patch.c
+msgid "'git apply --cached' failed"
+msgstr "Theip ar 'git apply --cached'"
+
+#. TRANSLATORS: do not translate [y/n]
+#. The program will only accept that input at this point.
+#. Consider translating (saying "no" discards!) as
+#. (saying "n" for "no" discards!) if the translation
+#. of the word "no" does not start with n.
+#.
+#: add-patch.c
+msgid ""
+"Your edited hunk does not apply. Edit again (saying \"no\" discards!) [y/n]? "
+msgstr ""
+"Ní bhaineann do chuid eagraithe. Cuir in eagar arís (ag rá \"níl\" cuirtear "
+"i leataobh é!) [y/n]? "
+
+#: add-patch.c
+msgid "The selected hunks do not apply to the index!"
+msgstr "Ní bhaineann na hunks roghnaithe leis an innéacs!"
+
+#: add-patch.c
+msgid "Apply them to the worktree anyway? "
+msgstr "An gcuirfidh tú i bhfeidhm iad ar an gcrann oibre ar aon nós? "
+
+#: add-patch.c
+msgid "Nothing was applied.\n"
+msgstr "Ní chuirtear aon rud i bhfeidhm.\n"
+
+#: add-patch.c
+msgid ""
+"j - leave this hunk undecided, see next undecided hunk\n"
+"J - leave this hunk undecided, see next hunk\n"
+"k - leave this hunk undecided, see previous undecided hunk\n"
+"K - leave this hunk undecided, see previous hunk\n"
+"g - select a hunk to go to\n"
+"/ - search for a hunk matching the given regex\n"
+"s - split the current hunk into smaller hunks\n"
+"e - manually edit the current hunk\n"
+"p - print the current hunk, 'P' to use the pager\n"
+"? - print help\n"
+msgstr ""
+"j - fág an hunk seo gan chinneadh, féach an chéad hunk neamhchinnte eile\n"
+"J - fág an hunk seo gan chinneadh, féach an chéad hunk eile\n"
+"k - fág an hunk seo gan chinneadh, féach an hunk neamhchinnte roimhe seo\n"
+"K - fág an hunk seo gan chinneadh, féach an hunk roimhe seo\n"
+"g - roghnaigh hunk le dul chuig\n"
+"/- cuardaigh hunk a mheaitseann leis an regex a thugtar\n"
+"s - roinn an hunk reatha ina huncanna níos lú\n"
+"e - cuir an hunk reatha in eagar de láimh\n"
+"p - priontáil an hunk reatha, 'P' chun an pager a úsáid\n"
+"? - cabhair priontála\n"
+
+#: add-patch.c
+#, c-format
+msgid "Only one letter is expected, got '%s'"
+msgstr "Níl súil leis ach litir amháin, fuair '%s'"
+
+#: add-patch.c
+msgid "No previous hunk"
+msgstr "Níl aon hunk roimhe seo"
+
+#: add-patch.c
+msgid "No next hunk"
+msgstr "Níl aon chéad hunk eile"
+
+#: add-patch.c
+msgid "No other hunks to goto"
+msgstr "Níl aon ghuncanna eile le dul"
+
+#: add-patch.c
+msgid "go to which hunk (<ret> to see more)? "
+msgstr "téigh chuig cén hunk (<ret> le tuilleadh a fheiceáil)? "
+
+#: add-patch.c
+msgid "go to which hunk? "
+msgstr "téigh chuig cén hunk? "
+
+#: add-patch.c
+#, c-format
+msgid "Invalid number: '%s'"
+msgstr "Uimhir neamhbhailí: '%s'"
+
+#: add-patch.c
+#, c-format
+msgid "Sorry, only %d hunk available."
+msgid_plural "Sorry, only %d hunks available."
+msgstr[0] "Tá brón orm, níl ach %d píosa ar fáil."
+msgstr[1] "Tá brón orm, níl ach %d hunks ar fáil."
+msgstr[2] "Tá brón orm, níl ach %d hunks ar fáil."
+
+#: add-patch.c
+msgid "No other hunks to search"
+msgstr "Níl aon ghuncanna eile le cuardach"
+
+#: add-patch.c
+msgid "search for regex? "
+msgstr "cuardach a dhéanamh ar regex? "
+
+#: add-patch.c
+#, c-format
+msgid "Malformed search regexp %s: %s"
+msgstr "Regexp cuardaigh mífheidhmithe %s: %s"
+
+#: add-patch.c
+msgid "No hunk matches the given pattern"
+msgstr "Níl aon hunk ag teacht leis an bpatrún tugtha"
+
+#: add-patch.c
+msgid "Sorry, cannot split this hunk"
+msgstr "Tá brón orainn, ní féidir an hunk seo a roinnt"
+
+#: add-patch.c
+#, c-format
+msgid "Split into %d hunks."
+msgstr "Roinn ina %d hunks."
+
+#: add-patch.c
+msgid "Sorry, cannot edit this hunk"
+msgstr "Tá brón orainn, ní féidir an hunk seo a chur in eagar"
+
+#: add-patch.c
+#, c-format
+msgid "Unknown command '%s' (use '?' for help)"
+msgstr "Ordú anaithnid '%s' (bain úsáid as '?' le haghaidh cabhair)"
+
+#: add-patch.c
+msgid "'git apply' failed"
+msgstr "Theip ar 'git apply'"
+
+#: add-patch.c
+msgid "No changes."
+msgstr "Gan aon athruithe."
+
+#: add-patch.c
+msgid "Only binary files changed."
+msgstr "Níor athraigh ach comhaid dénártha."
+
+#: advice.c
+#, c-format
+msgid ""
+"\n"
+"Disable this message with \"git config set advice.%s false\""
+msgstr ""
+"\n"
+"Díchumasaigh an teachtaireacht seo le \"git config set advice.%s false\""
+
+#: advice.c
+#, c-format
+msgid "%shint:%s%.*s%s\n"
+msgstr "%sleid:%s%.*s%s\n"
+
+#: advice.c
+msgid "Cherry-picking is not possible because you have unmerged files."
+msgstr ""
+"Ní féidir piocadh silíní toisc go bhfuil comhaid neamh-chumasaithe agat."
+
+#: advice.c
+msgid "Committing is not possible because you have unmerged files."
+msgstr ""
+"Ní féidir tiomantas a dhéanamh toisc go bhfuil comhaid neamh-"
+"chomhcheangailte agat."
+
+#: advice.c
+msgid "Merging is not possible because you have unmerged files."
+msgstr ""
+"Ní féidir cumasc a dhéanamh toisc go bhfuil comhaid neamh-chumasaithe agat."
+
+#: advice.c
+msgid "Pulling is not possible because you have unmerged files."
+msgstr ""
+"Ní féidir tarraingt a tharraingt toisc go bhfuil comhaid neamh-chumasaithe "
+"agat."
+
+#: advice.c
+msgid "Reverting is not possible because you have unmerged files."
+msgstr ""
+"Ní féidir aisiompú toisc go bhfuil comhaid neamh-chomhcheangailte agat."
+
+#: advice.c
+msgid "Rebasing is not possible because you have unmerged files."
+msgstr ""
+"Ní féidir athbhunú a dhéanamh toisc go bhfuil comhaid neamh-chumasaithe agat."
+
+#: advice.c
+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."
+msgstr ""
+"<file>Socraigh iad sa chrann oibre, agus ansin bain úsáid as 'git add/rm '\n"
+"de réir mar is cuí chun réiteach a mharcáil agus tiomantas a dhéanamh."
+
+#: advice.c
+msgid "Exiting because of an unresolved conflict."
+msgstr "Ag imeacht mar gheall ar choimhlint neamhréitithe."
+
+#: advice.c builtin/merge.c
+msgid "You have not concluded your merge (MERGE_HEAD exists)."
+msgstr "Níor thug tú do chumasc i gcrích (MERGE_HEAD ann)."
+
+#: advice.c
+msgid "Please, commit your changes before merging."
+msgstr "Déan d'athruithe a dhéanamh le do thoil sula ndéanann tú cumasc."
+
+#: advice.c
+msgid "Exiting because of unfinished merge."
+msgstr "Ag imeacht mar gheall ar chumasc críochnaithe."
+
+#: advice.c
+msgid ""
+"Diverging branches can't be fast-forwarded, you need to either:\n"
+"\n"
+"\tgit merge --no-ff\n"
+"\n"
+"or:\n"
+"\n"
+"\tgit rebase\n"
+msgstr ""
+"Ní féidir brainsí éagsúla a chur ar aghaidh go tapa, ní mór duit:\n"
+"\n"
+" git merge --no-ff\n"
+"\n"
+"nó:\n"
+"\n"
+" git rebase\n"
+
+#: advice.c
+msgid "Not possible to fast-forward, aborting."
+msgstr "Ní féidir dul ar aghaidh go tapa, ag cur isteach."
+
+#: advice.c
+#, c-format
+msgid ""
+"The following paths and/or pathspecs matched paths that exist\n"
+"outside of your sparse-checkout definition, so will not be\n"
+"updated in the index:\n"
+msgstr ""
+"Meaitseáil na cosáin agus/nó na cosáin seo a leanas cosáin ann\n"
+"lasmuigh de do shainmhíniú seiceála neamhchoitianta, mar sin ní bheidh\n"
+"nuashonraithe san innéacs:\n"
+
+#: advice.c
+msgid ""
+"If you intend to update such entries, try one of the following:\n"
+"* Use the --sparse option.\n"
+"* Disable or modify the sparsity rules."
+msgstr ""
+"Má tá sé ar intinn agat iontrálacha den sórt sin a nuashonrú, bain triail as "
+"ceann amháin de\n"
+"* Úsáid an rogha --sparse.\n"
+"* Díchumasaigh nó modhnaigh na rialacha neamhghnách."
+
+#: advice.c
+#, c-format
+msgid ""
+"Note: switching to '%s'.\n"
+"\n"
+"You are in 'detached HEAD' state. You can look around, make experimental\n"
+"changes and commit them, and you can discard any commits you make in this\n"
+"state without impacting any branches by switching back to a branch.\n"
+"\n"
+"If you want to create a new branch to retain commits you create, you may\n"
+"do so (now or later) by using -c with the switch command. Example:\n"
+"\n"
+" git switch -c <new-branch-name>\n"
+"\n"
+"Or undo this operation with:\n"
+"\n"
+" git switch -\n"
+"\n"
+"Turn off this advice by setting config variable advice.detachedHead to "
+"false\n"
+"\n"
+msgstr ""
+"Nóta: ag aistriú go '%s'.\n"
+"\n"
+"Tá tú i stát 'CEANN scoite'. Is féidir leat breathnú timpeall, turgnamhach a "
+"dhéanamh\n"
+"athruithe agus iad a dhéanamh, agus féadfaidh tú aon gealltanais a dhéanann "
+"tú san áireamh a dhiúscairt\n"
+"stáit gan dul i bhfeidhm ar aon bhrainsí trí aistriú ar ais chuig brainse.\n"
+"\n"
+"Más mian leat brainse nua a chruthú chun gealltanais a chruthaíonn tú a "
+"choinneáil, féadfaidh tú\n"
+"déan amhlaidh (anois nó níos déanaí) trí úsáid a bhaint as -c leis an ordú "
+"lasc. Sampla:\n"
+"\n"
+" git switch -c <new-branch-name>\n"
+"\n"
+"Nó cealaigh an oibríocht seo le:\n"
+"\n"
+" git switch -c <new-branch-name>\n"
+"\n"
+"Múch an chomhairle seo trí chomhairle athróg advice.detachedHead a shocrú go "
+"false\n"
+"\n"
+
+#: advice.c
+#, c-format
+msgid ""
+"The following paths have been moved outside the\n"
+"sparse-checkout definition but are not sparse due to local\n"
+"modifications.\n"
+msgstr ""
+"Tá na cosáin seo a leanas bogadh taobh amuigh den\n"
+"sainmhíniú seiceála neamhchoitianta ach níl siad neamhchoitiúil mar gheall "
+"ar an\n"
+"modhnuithe.\n"
+
+#: advice.c
+msgid ""
+"To correct the sparsity of these paths, do the following:\n"
+"* Use \"git add --sparse <paths>\" to update the index\n"
+"* Use \"git sparse-checkout reapply\" to apply the sparsity rules"
+msgstr ""
+"Chun neamhghnáth na gcosáin seo a cheartú, déan an méid seo a leanas:\n"
+"* Úsáid “git add --sparse<paths>\" chun an t-innéacs a nuashonrú\n"
+"* Úsáid “git sparse-checkout reapply” chun na rialacha neamhchoitianta a "
+"chur i bhfeidhm"
+
+#: alias.c
+msgid "cmdline ends with \\"
+msgstr "críochnaíonn cmdline le \\"
+
+#: alias.c
+msgid "unclosed quote"
+msgstr "luachan neamhdhúnadh"
+
+#: alias.c builtin/cat-file.c builtin/notes.c builtin/prune-packed.c
+#: builtin/receive-pack.c builtin/refs.c builtin/tag.c t/helper/test-pkt-line.c
+msgid "too many arguments"
+msgstr "an iomarca argóintí"
+
+#: apply.c
+#, c-format
+msgid "unrecognized whitespace option '%s'"
+msgstr "rogha spás bán gan aithint '%s'"
+
+#: apply.c
+#, c-format
+msgid "unrecognized whitespace ignore option '%s'"
+msgstr "neamhaird ar spás bán gan aithint neamhaird ar rogha '%s'"
+
+#: apply.c archive.c builtin/add.c builtin/branch.c builtin/checkout-index.c
+#: builtin/checkout.c builtin/clean.c builtin/clone.c builtin/commit.c
+#: builtin/describe.c builtin/diff-tree.c builtin/difftool.c
+#: builtin/fast-export.c builtin/fetch.c builtin/help.c builtin/index-pack.c
+#: builtin/init-db.c builtin/log.c builtin/ls-files.c builtin/merge-base.c
+#: builtin/merge-tree.c builtin/merge.c builtin/pack-objects.c builtin/rebase.c
+#: builtin/repack.c builtin/replay.c builtin/reset.c builtin/rev-parse.c
+#: builtin/show-branch.c builtin/stash.c builtin/submodule--helper.c
+#: builtin/tag.c builtin/worktree.c parse-options.c range-diff.c revision.c
+#, c-format
+msgid "options '%s' and '%s' cannot be used together"
+msgstr "ní féidir roghanna '%s' agus '%s' a úsáid le chéile"
+
+#: apply.c
+#, c-format
+msgid "'%s' outside a repository"
+msgstr "'%s' lasmuigh de stór"
+
+#: apply.c
+msgid "failed to read patch"
+msgstr "theip ar phaiste a léamh"
+
+#: apply.c
+msgid "patch too large"
+msgstr "paiste ró-mhór"
+
+#: apply.c
+#, c-format
+msgid "Cannot prepare timestamp regexp %s"
+msgstr "Ní féidir regexp %s aimstampa a ullmhú"
+
+#: apply.c
+#, c-format
+msgid "regexec returned %d for input: %s"
+msgstr "d'fhill regexec %d le haghaidh ionchur: %s"
+
+#: apply.c
+#, c-format
+msgid "unable to find filename in patch at line %d"
+msgstr "ní féidir ainm comhaid a aimsiú i bpaiste ag an líne %d"
+
+#: apply.c
+#, c-format
+msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
+msgstr "git apply: bad git-diff - ag súil le /dev/null, fuair %s ar líne %d"
+
+#: apply.c
+#, c-format
+msgid "git apply: bad git-diff - inconsistent new filename on line %d"
+msgstr ""
+"git apply: bad git-diff - ainm comhaid nua neamhchomhsheasmhach ar líne %d"
+
+#: apply.c
+#, c-format
+msgid "git apply: bad git-diff - inconsistent old filename on line %d"
+msgstr "git apply: bad git-diff - sean-ainm comhaid neamhréireach ar líne %d"
+
+#: apply.c
+#, c-format
+msgid "git apply: bad git-diff - expected /dev/null on line %d"
+msgstr "git apply: bad git-diff - súil leis /dev/null ar líne %d"
+
+#: apply.c
+#, c-format
+msgid "invalid mode on line %d: %s"
+msgstr "modh neamhbhailí ar líne %d: %s"
+
+#: apply.c
+#, c-format
+msgid "inconsistent header lines %d and %d"
+msgstr "línte ceanntásc neamhchomhsheasmhach %d agus %d"
+
+#: apply.c
+#, c-format
+msgid ""
+"git diff header lacks filename information when removing %d leading pathname "
+"component (line %d)"
+msgid_plural ""
+"git diff header lacks filename information when removing %d leading pathname "
+"components (line %d)"
+msgstr[0] ""
+"tá easpa eolais ainm comhaid ar cheanntásc git diff nuair a bhaintear %d "
+"comhpháirt ainm cosáin tosaigh (líne %d)"
+msgstr[1] ""
+"tá easpa eolais ainm comhaid ar cheanntásc git diff agus %d comhpháirteanna "
+"ainm cosáin tosaigh á mbaint (líne %d)"
+msgstr[2] ""
+"tá easpa eolais ainm comhaid ar cheanntásc git diff agus %d comhpháirteanna "
+"ainm cosáin tosaigh á mbaint (líne %d)"
+
+#: apply.c
+#, c-format
+msgid "git diff header lacks filename information (line %d)"
+msgstr "tá easpa eolais ainm comhaid ar cheanntásc git diff (líne %d)"
+
+#: apply.c
+#, c-format
+msgid "recount: unexpected line: %.*s"
+msgstr "atháireamh: líne gan choinne: %.*s"
+
+#: apply.c
+#, c-format
+msgid "patch fragment without header at line %d: %.*s"
+msgstr "blúirt paiste gan ceanntásc ag an líne %d: %.*s"
+
+#: apply.c
+msgid "new file depends on old contents"
+msgstr "braitheann comhad nua ar shean-ábhar"
+
+#: apply.c
+msgid "deleted file still has contents"
+msgstr "tá ábhar fós ag comhad scriosta"
+
+#: apply.c
+#, c-format
+msgid "corrupt patch at line %d"
+msgstr "paiste truaillithe ag líne %d"
+
+#: apply.c
+#, c-format
+msgid "new file %s depends on old contents"
+msgstr "braitheann an comhad nua %s ar an seanábhar"
+
+#: apply.c
+#, c-format
+msgid "deleted file %s still has contents"
+msgstr "tá ábhar fós ag comhad scriosta %s"
+
+#: apply.c
+#, c-format
+msgid "** warning: file %s becomes empty but is not deleted"
+msgstr "** rabhadh: éiríonn comhad %s folamh ach ní scriostar é"
+
+#: apply.c
+#, c-format
+msgid "corrupt binary patch at line %d: %.*s"
+msgstr "paiste dénártha truaillithe ag líne %d: %.*s"
+
+#: apply.c
+#, c-format
+msgid "unrecognized binary patch at line %d"
+msgstr "paiste dénártha gan aithint ag an líne %d"
+
+#: apply.c
+#, c-format
+msgid "patch with only garbage at line %d"
+msgstr "paiste gan ach truflais ag an líne %d"
+
+#: apply.c
+#, c-format
+msgid "unable to read symlink %s"
+msgstr "nach féidir nasc simtéarach %s a léamh"
+
+#: apply.c
+#, c-format
+msgid "unable to open or read %s"
+msgstr "nach féidir %s a oscailt nó a léamh"
+
+#: apply.c
+#, c-format
+msgid "invalid start of line: '%c'"
+msgstr "tús neamhbhailí na líne: '%c'"
+
+#: apply.c
+#, c-format
+msgid "Hunk #%d succeeded at %d (offset %d line)."
+msgid_plural "Hunk #%d succeeded at %d (offset %d lines)."
+msgstr[0] "D'éirigh le hunk #%d ag %d (líne fhritháireamh %d)."
+msgstr[1] "D'éirigh le hunk #%d ag %d (%d líne curtha as feidhm)."
+msgstr[2] "D'éirigh le hunk #%d ag %d (%d líne curtha as feidhm)."
+
+#: apply.c
+#, c-format
+msgid "Context reduced to (%ld/%ld) to apply fragment at %d"
+msgstr "Laghdaithe comhthéacs go (%ld/%ld) chun blúire a chur i bhfeidhm ag %d"
+
+#: apply.c
+#, c-format
+msgid ""
+"while searching for:\n"
+"%.*s"
+msgstr ""
+"agus tú ag cuardach:\n"
+"%.*s"
+
+#: apply.c
+#, c-format
+msgid "missing binary patch data for '%s'"
+msgstr "sonraí paiste dénártha in easnamh do '%s'"
+
+#: apply.c
+#, c-format
+msgid "cannot reverse-apply a binary patch without the reverse hunk to '%s'"
+msgstr ""
+"ní féidir paiste dénártha a chur i bhfeidhm ar ais gan an hunk droim ar ais "
+"chuig '%s'"
+
+#: apply.c
+#, c-format
+msgid "cannot apply binary patch to '%s' without full index line"
+msgstr ""
+"ní féidir paiste dénártha a chur i bhfeidhm ar '%s' gan líne innéacs iomlán"
+
+#: apply.c
+#, c-format
+msgid ""
+"the patch applies to '%s' (%s), which does not match the current contents."
+msgstr ""
+"baineann an paiste le '%s' (%s), nach bhfuil comhoiriúnach leis an ábhar "
+"reatha."
+
+#: apply.c
+#, c-format
+msgid "the patch applies to an empty '%s' but it is not empty"
+msgstr "baineann an paiste le '%s' folamh ach níl sé folamh"
+
+#: apply.c
+#, c-format
+msgid "the necessary postimage %s for '%s' cannot be read"
+msgstr "ní féidir an post riachtanach %s le haghaidh '%s' a léamh"
+
+#: apply.c
+#, c-format
+msgid "binary patch does not apply to '%s'"
+msgstr "ní bhaineann paiste dénártha le '%s'"
+
+#: apply.c
+#, c-format
+msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
+msgstr ""
+"cruthaíonn paiste dénártha chuig '%s' toradh mícheart (ag súil le %s, fuair "
+"%s)"
+
+#: apply.c
+#, c-format
+msgid "patch failed: %s:%ld"
+msgstr "theip ar phaiste: %s: %ld"
+
+#: apply.c builtin/mv.c
+#, c-format
+msgid "cannot checkout %s"
+msgstr "ní féidir %s a sheiceáil"
+
+#: apply.c midx.c pack-mtimes.c pack-revindex.c setup.c
+#, c-format
+msgid "failed to read %s"
+msgstr "theip ar %s a léamh"
+
+#: apply.c
+#, c-format
+msgid "reading from '%s' beyond a symbolic link"
+msgstr "léamh ó '%s' níos faide ná nasc siombalach"
+
+#: apply.c
+#, c-format
+msgid "path %s has been renamed/deleted"
+msgstr "tá conair %s athainmnithe/scriosta"
+
+#: apply.c
+#, c-format
+msgid "%s: does not exist in index"
+msgstr "%s: níl ann san innéacs"
+
+#: apply.c
+#, c-format
+msgid "%s: does not match index"
+msgstr "%s: ní mheaitseálann innéacs"
+
+#: apply.c
+msgid "repository lacks the necessary blob to perform 3-way merge."
+msgstr "níl an blob riachtanach ag stór chun cumasc trí bhealach a dhéanamh."
+
+#: apply.c
+#, c-format
+msgid "Performing three-way merge...\n"
+msgstr "Cumaisc trí bhealach a dhéanamh...\n"
+
+#: apply.c
+#, c-format
+msgid "cannot read the current contents of '%s'"
+msgstr "ní féidir ábhar reatha '%s' a léamh"
+
+#: apply.c
+#, c-format
+msgid "Failed to perform three-way merge...\n"
+msgstr "Theip ar chumasc trí bhealach a dhéanamh...\n"
+
+#: apply.c
+#, c-format
+msgid "Applied patch to '%s' with conflicts.\n"
+msgstr "Paiste cuireadh i bhfeidhm ar '%s' le coinbhleachtaí.\n"
+
+#: apply.c
+#, c-format
+msgid "Applied patch to '%s' cleanly.\n"
+msgstr "Cuireadh paiste i bhfeidhm go '%s' go glan.\n"
+
+#: apply.c
+#, c-format
+msgid "Falling back to direct application...\n"
+msgstr "Ag titim ar ais chuig feidhmchlár díreach...\n"
+
+#: apply.c
+msgid "removal patch leaves file contents"
+msgstr "fágann paiste bainte ábhar an chomhaid"
+
+#: apply.c
+#, c-format
+msgid "%s: wrong type"
+msgstr "%s: cineál mícheart"
+
+#: apply.c
+#, c-format
+msgid "%s has type %o, expected %o"
+msgstr "%s tá cineál %o air, ach bhíothas ag súil le %o"
+
+#: apply.c read-cache.c
+#, c-format
+msgid "invalid path '%s'"
+msgstr "cosán neamhbhailí '%s'"
+
+#: apply.c
+#, c-format
+msgid "%s: already exists in index"
+msgstr "%s: ann cheana féin san innéacs"
+
+#: apply.c
+#, c-format
+msgid "%s: already exists in working directory"
+msgstr "%s: ann cheana féin san eolaire oibre"
+
+#: apply.c
+#, c-format
+msgid "new mode (%o) of %s does not match old mode (%o)"
+msgstr "ní mheaitseálann modh nua (%o) de %s sean-mhodh (%o)"
+
+#: apply.c
+#, c-format
+msgid "new mode (%o) of %s does not match old mode (%o) of %s"
+msgstr "ní mheaitseálann modh nua (%o) de %s sean-mhodh (%o) de %s"
+
+#: apply.c
+#, c-format
+msgid "affected file '%s' is beyond a symbolic link"
+msgstr "tá an comhad tionchair '%s' níos faide ná nasc siombalach"
+
+#: apply.c
+#, c-format
+msgid "%s: patch does not apply"
+msgstr "%s: níl paiste i bhfeidhm"
+
+#: apply.c
+#, c-format
+msgid "Checking patch %s..."
+msgstr "Seiceáil paiste %s..."
+
+#: apply.c
+#, c-format
+msgid "sha1 information is lacking or useless for submodule %s"
+msgstr "tá faisnéis sha1 easpa nó gan úsáid le haghaidh fo-mhodúl %s"
+
+#: apply.c
+#, c-format
+msgid "mode change for %s, which is not in current HEAD"
+msgstr "athrú modh do %s, nach bhfuil i HEAD reatha"
+
+#: apply.c
+#, c-format
+msgid "sha1 information is lacking or useless (%s)."
+msgstr "tá faisnéis sha1 easpa nó gan úsáid (%s)."
+
+#: apply.c
+#, c-format
+msgid "could not add %s to temporary index"
+msgstr "ní fhéadfaí %s a chur le hinnéacs sealadach"
+
+#: apply.c
+#, c-format
+msgid "could not write temporary index to %s"
+msgstr "ní fhéadfaí innéacs sealadach a scríobh chuig %s"
+
+#: apply.c
+#, c-format
+msgid "unable to remove %s from index"
+msgstr "nach féidir %s a bhaint as innéacs"
+
+#: apply.c
+#, c-format
+msgid "corrupt patch for submodule %s"
+msgstr "paiste truaillithe do fho-mhodúl %s"
+
+#: apply.c
+#, c-format
+msgid "unable to stat newly created file '%s'"
+msgstr "nach féidir an comhad nua-chruthaithe '%s' a stáil"
+
+#: apply.c
+#, c-format
+msgid "unable to create backing store for newly created file %s"
+msgstr "nach féidir stór tacaíochta a chruthú do chomhad nua-chruthaithe %s"
+
+#: apply.c
+#, c-format
+msgid "unable to add cache entry for %s"
+msgstr "nach féidir iontráil taisce a chur le haghaidh %s"
+
+#: apply.c builtin/bisect.c builtin/gc.c
+#, c-format
+msgid "failed to write to '%s'"
+msgstr "theip ar scríobh chuig '%s'"
+
+#: apply.c
+#, c-format
+msgid "closing file '%s'"
+msgstr "comhad dúnadh '%s'"
+
+#: apply.c
+#, c-format
+msgid "unable to write file '%s' mode %o"
+msgstr "ní féidir an comhad '%s' modh %o a scríobh"
+
+#: apply.c
+#, c-format
+msgid "Applied patch %s cleanly."
+msgstr "Cuireadh paiste %s i bhfeidhm go glan."
+
+#: apply.c
+msgid "internal error"
+msgstr "earráid inmheánach"
+
+#: apply.c
+#, c-format
+msgid "Applying patch %%s with %d reject..."
+msgid_plural "Applying patch %%s with %d rejects..."
+msgstr[0] "Ag cur paiste %%s i bhfeidhm le %d diúltú..."
+msgstr[1] "Ag cur paiste %%s i bhfeidhm le %d diúltuithe..."
+msgstr[2] "Ag cur paiste %%s i bhfeidhm le %d diúltuithe..."
+
+#: apply.c
+#, c-format
+msgid "cannot open %s"
+msgstr "ní féidir %s a oscailt"
+
+#: apply.c rerere.c
+#, c-format
+msgid "cannot unlink '%s'"
+msgstr "ní féidir '%s' a dhínascadh"
+
+#: apply.c
+#, c-format
+msgid "Hunk #%d applied cleanly."
+msgstr "Cuireadh Hunk #%d i bhfeidhm go glan."
+
+#: apply.c
+#, c-format
+msgid "Rejected hunk #%d."
+msgstr "Hunk diúltaithe #%d."
+
+#: apply.c
+#, c-format
+msgid "Skipped patch '%s'."
+msgstr "Paiste scipeáilte '%s'."
+
+#: apply.c
+msgid "No valid patches in input (allow with \"--allow-empty\")"
+msgstr "Níl aon paistí bailí san ionchur (cead le “--allow-empty”)"
+
+#: apply.c t/helper/test-cache-tree.c
+msgid "unable to read index file"
+msgstr "in ann comhad innéacs a léamh"
+
+#: apply.c
+#, c-format
+msgid "can't open patch '%s': %s"
+msgstr "ní féidir paiste '%s' a oscailt: %s"
+
+#: apply.c
+#, c-format
+msgid "squelched %d whitespace error"
+msgid_plural "squelched %d whitespace errors"
+msgstr[0] "earráid spás bán %d múchta"
+msgstr[1] "%d earráid spás bán múchta"
+msgstr[2] "%d earráid spás bán múchta"
+
+#: apply.c
+#, c-format
+msgid "%d line adds whitespace errors."
+msgid_plural "%d lines add whitespace errors."
+msgstr[0] "Cuireann %d líne earráidí spás bán leis."
+msgstr[1] "Cuireann %d líne earráidí spás bán leis."
+msgstr[2] "Cuireann %d líne earráidí spás bán leis."
+
+#: apply.c
+#, c-format
+msgid "%d line applied after fixing whitespace errors."
+msgid_plural "%d lines applied after fixing whitespace errors."
+msgstr[0] "%d líne curtha i bhfeidhm tar éis earráidí spás bán a shocrú."
+msgstr[1] "%d líne curtha i bhfeidhm tar éis earráidí spás bán a shocrú."
+msgstr[2] "%d líne curtha i bhfeidhm tar éis earráidí spás bán a shocrú."
+
+#: apply.c builtin/mv.c builtin/rm.c
+msgid "Unable to write new index file"
+msgstr "Ní féidir comhad innéacs nua a scríobh"
+
+#: apply.c
+msgid "don't apply changes matching the given path"
+msgstr "ná cuir athruithe a mheaitseáil leis an gcosán tugtha"
+
+#: apply.c
+msgid "apply changes matching the given path"
+msgstr "athruithe a chur i bhfeidhm a mheaitseálann"
+
+#: apply.c builtin/am.c
+msgid "num"
+msgstr "uimhir"
+
+#: apply.c
+msgid "remove <num> leading slashes from traditional diff paths"
+msgstr "bain <num>slascanna ceannródaíocha ó chosáin difriúla traidisiúnta"
+
+#: apply.c
+msgid "ignore additions made by the patch"
+msgstr "neamhaird a dhéanamh ar bhreiseanna a dhéanann an"
+
+#: apply.c
+msgid "instead of applying the patch, output diffstat for the input"
+msgstr "in ionad an paiste a chur i bhfeidhm, diffstat aschuir don ionchur"
+
+#: apply.c
+msgid "show number of added and deleted lines in decimal notation"
+msgstr "líon na línte breise agus scriosta a thaispeáint i nótaí deachúil"
+
+#: apply.c
+msgid "instead of applying the patch, output a summary for the input"
+msgstr "in ionad an paiste a chur i bhfeidhm, aschur achoimre don ionchur"
+
+#: apply.c
+msgid "instead of applying the patch, see if the patch is applicable"
+msgstr ""
+"in ionad an paiste a chur i bhfeidhm, féach an bhfuil an paiste infheidhme"
+
+#: apply.c
+msgid "make sure the patch is applicable to the current index"
+msgstr ""
+"déan cinnte go bhfuil an paiste infheidhme maidir leis an innéacs reatha"
+
+#: apply.c
+msgid "mark new files with `git add --intent-to-add`"
+msgstr "comhad nua a mharcáil le `git add --intent-to-add`"
+
+#: apply.c
+msgid "apply a patch without touching the working tree"
+msgstr "cuir paiste i bhfeidhm gan teagmháil leis an gcrann oibre"
+
+#: apply.c
+msgid "accept a patch that touches outside the working area"
+msgstr "glacadh le paiste a théann lasmuigh den limistéar oibre"
+
+#: apply.c
+msgid "also apply the patch (use with --stat/--summary/--check)"
+msgstr ""
+"cuir an paiste i bhfeidhm freisin (bain úsáid le --stat/--summary/--check)"
+
+#: apply.c
+msgid "attempt three-way merge, fall back on normal patch if that fails"
+msgstr ""
+"iarracht a dhéanamh cumasc trí bhealach, titim ar ais ar ghnáthphaiste má "
+"theipeann"
+
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use our version"
+msgstr "le haghaidh coimhlintí, bain úsáid as ár leagan"
+
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use their version"
+msgstr "le haghaidh coimhlintí, bain úsáid as a leagan"
+
+#: apply.c builtin/merge-file.c
+msgid "for conflicts, use a union version"
+msgstr "le haghaidh coimhlintí, bain úsáid as leagan aontais"
+
+#: apply.c
+msgid "build a temporary index based on embedded index information"
+msgstr "innéacs sealadach a thógáil bunaithe ar eolas innéacs leabaithe"
+
+#: apply.c builtin/checkout-index.c
+msgid "paths are separated with NUL character"
+msgstr "tá cosáin scartha le carachtar NUL"
+
+#: apply.c
+msgid "ensure at least <n> lines of context match"
+msgstr "a chinntiú go mbe <n>adh línte comhthéacsa"
+
+#: apply.c builtin/am.c builtin/interpret-trailers.c builtin/pack-objects.c
+#: builtin/rebase.c
+msgid "action"
+msgstr "gníomh"
+
+#: apply.c
+msgid "detect new or modified lines that have whitespace errors"
+msgstr "línte nua nó modhnaithe a bhrath a bhfuil earráidí spás bán acu"
+
+#: apply.c
+msgid "ignore changes in whitespace when finding context"
+msgstr "neamhaird a dhéanamh ar athruithe ar spás bán agus comhthéacs á"
+
+#: apply.c
+msgid "apply the patch in reverse"
+msgstr "cuir an paiste i bhfeidhm ar ais"
+
+#: apply.c
+msgid "don't expect at least one line of context"
+msgstr "ná bí ag súil le líne comhthéacs amháin ar a laghad"
+
+#: apply.c
+msgid "leave the rejected hunks in corresponding *.rej files"
+msgstr "fág na hunks diúltaithe i gcomhaide*.rej comhfhreagracha"
+
+#: apply.c
+msgid "allow overlapping hunks"
+msgstr "cead a cheadú do na huncanna"
+
+#: apply.c
+msgid "tolerate incorrectly detected missing new-line at the end of file"
+msgstr ""
+"glacadh le líne nua atá in easnamh a bhraitear go mícheart ag deireadh an "
+"chomhaid"
+
+#: apply.c
+msgid "do not trust the line counts in the hunk headers"
+msgstr "ná bíodh muinín agat as na comhaireamh líne sna ceanntásca hunk"
+
+#: apply.c builtin/am.c
+msgid "root"
+msgstr "fréamh"
+
+#: apply.c
+msgid "prepend <root> to all filenames"
+msgstr "cuireadh <root>i bhfeidhm ar gach ainm comhaid"
+
+#: apply.c
+msgid "don't return error for empty patches"
+msgstr "ná tabhair earráid ar ais le haghaidh paistí folamh"
+
+#: apply.c
+msgid "--ours, --theirs, and --union require --3way"
+msgstr "Éilíonn --ours, --theirs, agus --union --3way"
+
+#: archive-tar.c archive-zip.c
+#, c-format
+msgid "cannot stream blob %s"
+msgstr "ní féidir le blob %s a shruthlú"
+
+#: archive-tar.c archive-zip.c
+#, c-format
+msgid "unsupported file mode: 0%o (SHA1: %s)"
+msgstr "modh comhad gan tacaíocht: 0%o (SHA1: %s)"
+
+#: archive-tar.c archive-zip.c builtin/pack-objects.c
+#, c-format
+msgid "deflate error (%d)"
+msgstr "earráid dífhabhtaithe (%d)"
+
+#: archive-tar.c
+#, c-format
+msgid "unable to start '%s' filter"
+msgstr "nach féidir scagaire '%s' a thosú"
+
+#: archive-tar.c
+msgid "unable to redirect descriptor"
+msgstr "nach féidir tuairiscí a atreorú"
+
+#: archive-tar.c
+#, c-format
+msgid "'%s' filter reported error"
+msgstr "Earráid a thuairiscigh scagaire '%s'"
+
+#: archive-zip.c
+#, c-format
+msgid "path is not valid UTF-8: %s"
+msgstr "níl cosán bailí UTF-8: %s"
+
+#: archive-zip.c
+#, c-format
+msgid "path too long (%d chars, SHA1: %s): %s"
+msgstr "cosán rófhada (%d chars, SHA1: %s): %s"
+
+#: archive-zip.c
+#, c-format
+msgid "timestamp too large for this system: %<PRIuMAX>"
+msgstr "stampa ama ró-mhór don chóras seo:%<PRIuMAX>"
+
+#: archive.c
+msgid "git archive [<options>] <tree-ish> [<path>...]"
+msgstr "git cartlan <options>n [] <tree-ish>[<path>...]"
+
+#: archive.c
+msgid ""
+"git archive --remote <repo> [--exec <cmd>] [<options>] <tree-ish> [<path>...]"
+msgstr ""
+"<tree-ish><path>git archive --remote <repo>[--exec<cmd>] [] [...<options>]"
+
+#: archive.c
+msgid "git archive --remote <repo> [--exec <cmd>] --list"
+msgstr "<cmd>git archive --remote <repo>[--exec] --list"
+
+#: archive.c builtin/gc.c builtin/notes.c builtin/tag.c
+#, c-format
+msgid "cannot read '%s'"
+msgstr "ní féidir '%s' a léamh"
+
+#: archive.c
+#, c-format
+msgid "pathspec '%s' matches files outside the current directory"
+msgstr "meaitseálann pathspec '%s' comhaid lasmuigh den eolaire reatha"
+
+#: archive.c builtin/add.c builtin/rm.c
+#, c-format
+msgid "pathspec '%s' did not match any files"
+msgstr "níor mheaitseáil pathspec '%s' aon chomhaid"
+
+#: archive.c
+#, c-format
+msgid "no such ref: %.*s"
+msgstr "gan aon tagairt den sórt sin: %.*s"
+
+#: archive.c
+#, c-format
+msgid "not a valid object name: %s"
+msgstr "ní ainm réad bailí: %s"
+
+#: archive.c t/helper/test-cache-tree.c
+#, c-format
+msgid "not a tree object: %s"
+msgstr "ní réad crann: %s"
+
+#: archive.c
+#, c-format
+msgid "failed to unpack tree object %s"
+msgstr "theip ar réad crann %s a dhíphacáil"
+
+#: archive.c
+#, c-format
+msgid "File not found: %s"
+msgstr "Níor aimsíodh an comhad: %s"
+
+#: archive.c
+#, c-format
+msgid "Not a regular file: %s"
+msgstr "Ní comhad rialta: %s"
+
+#: archive.c
+#, c-format
+msgid "unclosed quote: '%s'"
+msgstr "luachan neamhdhúnadh: '%s'"
+
+#: archive.c
+#, c-format
+msgid "missing colon: '%s'"
+msgstr "colon in easnamh: '%s'"
+
+#: archive.c
+#, c-format
+msgid "empty file name: '%s'"
+msgstr "ainm comhaid folamh: '%s'"
+
+#: archive.c
+msgid "fmt"
+msgstr "fmt"
+
+#: archive.c
+msgid "archive format"
+msgstr "formáid cartlann"
+
+#: archive.c builtin/log.c parse-options.h
+msgid "prefix"
+msgstr "réimír"
+
+#: archive.c
+msgid "prepend prefix to each pathname in the archive"
+msgstr "réimír a pholadh chuig gach ainm cosán sa chartlann"
+
+#: archive.c builtin/blame.c builtin/commit-tree.c builtin/config.c
+#: builtin/fast-export.c builtin/gc.c builtin/grep.c builtin/hash-object.c
+#: builtin/ls-files.c builtin/notes.c builtin/read-tree.c parse-options.h
+msgid "file"
+msgstr "comhad"
+
+#: archive.c
+msgid "add untracked file to archive"
+msgstr "cuir comhad neamhrianaithe leis an gcartlann"
+
+#: archive.c
+msgid "path:content"
+msgstr "bealach:ábhar"
+
+#: archive.c builtin/archive.c
+msgid "write the archive to this file"
+msgstr "scríobh an cartlann chuig an gcomhad seo"
+
+#: archive.c
+msgid "read .gitattributes in working directory"
+msgstr "léite.gitattributs san eolaire oibre"
+
+#: archive.c
+msgid "report archived files on stderr"
+msgstr "tuairisciú comhaid cartlainne ar stderr"
+
+#: archive.c builtin/clone.c builtin/fetch.c builtin/pack-objects.c
+#: builtin/pull.c
+msgid "time"
+msgstr "am"
+
+#: archive.c
+msgid "set modification time of archive entries"
+msgstr "socraigh am modhnaithe iontrálacha cartlainne"
+
+#: archive.c
+msgid "set compression level"
+msgstr "leibhéal comhbhrú a shocrú"
+
+#: archive.c
+msgid "list supported archive formats"
+msgstr "liosta formáidí cartlainne tacaíochta"
+
+#: archive.c builtin/archive.c builtin/clone.c builtin/submodule--helper.c
+msgid "repo"
+msgstr "stóras"
+
+#: archive.c builtin/archive.c
+msgid "retrieve the archive from remote repository <repo>"
+msgstr "aisghabháil an cartlann ó stór iargúlta <repo>"
+
+#: archive.c builtin/archive.c builtin/difftool.c builtin/notes.c
+msgid "command"
+msgstr "ordú"
+
+#: archive.c builtin/archive.c
+msgid "path to the remote git-upload-archive command"
+msgstr "cosán chuig an ordú iargúlta git-upload-archive"
+
+#: archive.c
+msgid "Unexpected option --remote"
+msgstr "Rogha gan choinne --remote"
+
+#: archive.c builtin/add.c builtin/checkout.c builtin/clone.c builtin/commit.c
+#: builtin/fast-export.c builtin/index-pack.c builtin/log.c builtin/reset.c
+#: builtin/rm.c builtin/stash.c builtin/worktree.c fetch-pack.c http-fetch.c
+#: revision.c
+#, c-format
+msgid "the option '%s' requires '%s'"
+msgstr "tá %s ag teastáil don rogha '%s'"
+
+#: archive.c
+msgid "Unexpected option --output"
+msgstr "Rogha gan choinne --output"
+
+#: archive.c t/unit-tests/unit-test.c
+#, c-format
+msgid "extra command line parameter '%s'"
+msgstr "paraiméadar líne ordaithe breise '%s'"
+
+#: archive.c
+#, c-format
+msgid "Unknown archive format '%s'"
+msgstr "Formáid cartlainne anaithnid '%s'"
+
+#: archive.c
+#, c-format
+msgid "Argument not supported for format '%s': -%d"
+msgstr "Argóint nach dtacaítear le haghaidh formáid '%s': -%d"
+
+#: attr.c
+#, c-format
+msgid "%.*s is not a valid attribute name"
+msgstr "%.*s ní ainm tréith bailí é"
+
+#: attr.c
+msgid "unable to add additional attribute"
+msgstr "in ann tréith bhreise a chur leis"
+
+#: attr.c
+#, c-format
+msgid "ignoring overly long attributes line %d"
+msgstr "neamhaird a dhéanamh ar líne tréithe ró-fhada %d"
+
+#: attr.c
+#, c-format
+msgid "%s not allowed: %s:%d"
+msgstr "%s ní cheadaítear %s:%d"
+
+#: attr.c
+msgid ""
+"Negative patterns are ignored in git attributes\n"
+"Use '\\!' for literal leading exclamation."
+msgstr ""
+"Déantar neamhaird ar phatrúin dhiúltacha i d\n"
+"Úsáid '\\!' le haghaidh brú ceannródaíoch litriúil."
+
+#: attr.c
+#, c-format
+msgid "cannot fstat gitattributes file '%s'"
+msgstr "ní féidir an comhad gitattributeanna '%s' fstat"
+
+#: attr.c
+#, c-format
+msgid "ignoring overly large gitattributes file '%s'"
+msgstr "neamhaird a dhéanamh ar chomhad gitattributs ró-mhór '%s'"
+
+#: attr.c
+#, c-format
+msgid "ignoring overly large gitattributes blob '%s'"
+msgstr "neamhaird a dhéanamh ar ghitattributs ró-mhór blob '%s'"
+
+#: attr.c
+msgid "cannot use --attr-source or GIT_ATTR_SOURCE without repo"
+msgstr "ní féidir --attr-source nó GIT_ATTR_SOURCE a úsáid gan repo"
+
+#: attr.c
+msgid "bad --attr-source or GIT_ATTR_SOURCE"
+msgstr "olc --attr-source nó GIT_ATTR_SOURCE"
+
+#: attr.c read-cache.c refs/packed-backend.c
+#, c-format
+msgid "unable to stat '%s'"
+msgstr "ní féidir '%s' a shástáil"
+
+#: bisect.c builtin/cat-file.c builtin/index-pack.c builtin/notes.c
+#: builtin/pack-objects.c combine-diff.c object-file.c rerere.c
+#, c-format
+msgid "unable to read %s"
+msgstr "nach féidir %s a léamh"
+
+#: bisect.c
+#, c-format
+msgid "Badly quoted content in file '%s': %s"
+msgstr "Ábhar a luaitear go dona sa chomhad '%s': %s"
+
+#: bisect.c
+#, c-format
+msgid "We cannot bisect more!\n"
+msgstr "Ní féidir linn níos mó a dhícheangal!\n"
+
+#: bisect.c
+#, c-format
+msgid "Not a valid commit name %s"
+msgstr "Ní ainm tiomanta bailí %s"
+
+#: bisect.c
+#, c-format
+msgid ""
+"The merge base %s is bad.\n"
+"This means the bug has been fixed between %s and [%s].\n"
+msgstr ""
+"Tá an bonn cumaisc %s go dona.\n"
+"Ciallaíonn sé seo go bhfuil an fabht socraithe idir %s agus [%s].\n"
+
+#: bisect.c
+#, c-format
+msgid ""
+"The merge base %s is new.\n"
+"The property has changed between %s and [%s].\n"
+msgstr ""
+"Tá an bonn cumaisc %s nua.\n"
+"Tá athrú tagtha ar an maoin idir %s agus [%s].\n"
+
+#: bisect.c
+#, c-format
+msgid ""
+"The merge base %s is %s.\n"
+"This means the first '%s' commit is between %s and [%s].\n"
+msgstr ""
+"Is é an bonn cumaisc %s ná %s.\n"
+"Ciallaíonn sé seo go bhfuil an chéad thiomantas '%s' idir %s agus [%s].\n"
+
+#: bisect.c
+#, c-format
+msgid ""
+"Some %s revs are not ancestors of the %s rev.\n"
+"git bisect cannot work properly in this case.\n"
+"Maybe you mistook %s and %s revs?\n"
+msgstr ""
+"Ní sinsear an %s rev iad roinnt revs %s\n"
+"Ní féidir le git bisect oibriú i gceart sa chás seo.\n"
+"B'fhéidir gur mheas tú %s agus %s revs?\n"
+
+#: bisect.c
+#, c-format
+msgid ""
+"the merge base between %s and [%s] must be skipped.\n"
+"So we cannot be sure the first %s commit is between %s and %s.\n"
+"We continue anyway."
+msgstr ""
+"caithfear an bonn cumaisc idir %s agus [%s] a scipeáil.\n"
+"Mar sin ní féidir linn a bheith cinnte go bhfuil an chéad thiomantas %s idir "
+"%s agus %s.\n"
+"Leanaimid orainn ar aon nós."
+
+#: bisect.c
+#, c-format
+msgid "Bisecting: a merge base must be tested\n"
+msgstr "Déroinnt: ní mór bonn cumaisc a thástáil\n"
+
+#: bisect.c
+#, c-format
+msgid "a %s revision is needed"
+msgstr "tá athbhreithniú %s ag teastáil"
+
+#: bisect.c
+#, c-format
+msgid "could not create file '%s'"
+msgstr "ní fhéadfaí comhad '%s' a chruthú"
+
+#: bisect.c builtin/notes.c
+#, c-format
+msgid "unable to start 'show' for object '%s'"
+msgstr "ní féidir 'show' a thosú le haghaidh réad '%s'"
+
+#: bisect.c builtin/merge.c
+#, c-format
+msgid "could not read file '%s'"
+msgstr "ní raibh in ann comhad '%s' a léamh"
+
+#: bisect.c
+msgid "reading bisect refs failed"
+msgstr "theip ar athbhreithnithe bisect a léamh"
+
+#: bisect.c
+#, c-format
+msgid "%s was both %s and %s\n"
+msgstr "Bhí %s %s agus %s araon\n"
+
+#: bisect.c
+#, c-format
+msgid ""
+"No testable commit found.\n"
+"Maybe you started with bad path arguments?\n"
+msgstr ""
+"Níor aimsíodh aon tiomantas intástála.\n"
+"B'fhéidir gur thosaigh tú le droch-argóintí cosáin?\n"
+
+#: bisect.c
+#, c-format
+msgid "(roughly %d step)"
+msgid_plural "(roughly %d steps)"
+msgstr[0] "(thart ar %d céim)"
+msgstr[1] "(thart ar %d céim)"
+msgstr[2] "(thart ar %d céim)"
+
+#. TRANSLATORS: the last %s will be replaced with "(roughly %d
+#. steps)" translation.
+#.
+#: bisect.c
+#, c-format
+msgid "Bisecting: %d revision left to test after this %s\n"
+msgid_plural "Bisecting: %d revisions left to test after this %s\n"
+msgstr[0] "Ag trasnú: %d athbhreithniú fágtha le tástáil tar éis an %s seo\n"
+msgstr[1] ""
+"Ag roinnt ina dhá leath: %d athbhreithniú fágtha le tástáil tar éis an %s "
+"seo\n"
+msgstr[2] ""
+"Ag roinnt ina dhá leath: %d athbhreithniú fágtha le tástáil tar éis an %s "
+"seo\n"
+
+#: blame.c
+msgid "--contents and --reverse do not blend well."
+msgstr "Ní chumasc --contents agus --reverse go maith."
+
+#: blame.c
+msgid "--reverse and --first-parent together require specified latest commit"
+msgstr ""
+"Éilíonn --reverse agus --first-parent le chéile an tiomantas sonraithe is "
+"déanaí"
+
+#: blame.c builtin/bisect.c builtin/commit.c builtin/log.c builtin/merge.c
+#: builtin/pack-objects.c builtin/shortlog.c midx-write.c pack-bitmap.c
+#: remote.c sequencer.c submodule.c
+msgid "revision walk setup failed"
+msgstr "theip ar socrú siúlóid ath"
+
+#: blame.c
+msgid ""
+"--reverse --first-parent together require range along first-parent chain"
+msgstr ""
+"--reverse --first-parent le chéile, teastaíonn raon feadh an tslabhra first-"
+"parent"
+
+#: blame.c
+#, c-format
+msgid "no such path %s in %s"
+msgstr "níl aon chosán den sórt sin %s i %s"
+
+#: blame.c
+#, c-format
+msgid "cannot read blob %s for path %s"
+msgstr "ní féidir le blob %s a léamh le haghaidh cosán %s"
+
+#: branch.c
+msgid ""
+"cannot inherit upstream tracking configuration of multiple refs when "
+"rebasing is requested"
+msgstr ""
+"ní féidir cumraíocht rianaithe suas srutha iolracha a oidhreacht nuair a "
+"iarrtar athbhunú"
+
+#: branch.c
+#, c-format
+msgid "not setting branch '%s' as its own upstream"
+msgstr "gan brainse '%s' a shocrú mar a thuas an sruth féin"
+
+#: branch.c
+#, c-format
+msgid "branch '%s' set up to track '%s' by rebasing."
+msgstr "bunaíodh brainse '%s' chun '%s' a rianú trí athbhunú."
+
+#: branch.c
+#, c-format
+msgid "branch '%s' set up to track '%s'."
+msgstr "bunaíodh brainse '%s' chun '%s' a rianú."
+
+#: branch.c
+#, c-format
+msgid "branch '%s' set up to track:"
+msgstr "bunaíodh brainse '%s' chun rianú:"
+
+#: branch.c
+msgid "unable to write upstream branch configuration"
+msgstr "in ann cumraíocht brainse suas srutha a scríobh"
+
+#: branch.c
+msgid ""
+"\n"
+"After fixing the error cause you may try to fix up\n"
+"the remote tracking information by invoking:"
+msgstr ""
+"\n"
+"Tar éis an chúis earráide a shocrú féadfaidh tú iarracht a dhéanamh socrú\n"
+"an fhaisnéis cianrianaithe trí ghairm a dhéanamh ar:"
+
+#: branch.c
+#, c-format
+msgid "asked to inherit tracking from '%s', but no remote is set"
+msgstr "iarradh ar rianú oidhreachta ó '%s', ach níl aon iargúlta socraithe"
+
+#: branch.c
+#, c-format
+msgid "asked to inherit tracking from '%s', but no merge configuration is set"
+msgstr ""
+"iarrtar ar rianú oidhreachta ó '%s', ach níl aon chumraíocht cumaisc "
+"socraithe"
+
+#: branch.c
+#, c-format
+msgid "not tracking: ambiguous information for ref '%s'"
+msgstr "gan rianú: faisnéis dhébhríoch le haghaidh tagairt '%s'"
+
+#. TRANSLATORS: This is a line listing a remote with duplicate
+#. refspecs in the advice message below. For RTL languages you'll
+#. probably want to swap the "%s" and leading " " space around.
+#.
+#. TRANSLATORS: This is line item of ambiguous object output
+#. from describe_ambiguous_object() above. For RTL languages
+#. you'll probably want to swap the "%s" and leading " " space
+#. around.
+#.
+#: branch.c object-name.c
+#, c-format
+msgid " %s\n"
+msgstr " %s\n"
+
+#. TRANSLATORS: The second argument is a \n-delimited list of
+#. duplicate refspecs, composed above.
+#.
+#: branch.c
+#, c-format
+msgid ""
+"There are multiple remotes whose fetch refspecs map to the remote\n"
+"tracking ref '%s':\n"
+"%s\n"
+"This is typically a configuration error.\n"
+"\n"
+"To support setting up tracking branches, ensure that\n"
+"different remotes' fetch refspecs map into different\n"
+"tracking namespaces."
+msgstr ""
+"Tá iomadúla iargúlta ann a bhfuil a léarscáil athfheidhmithe a fháil chuig "
+"an iargúlta\n"
+"tagairt rianaithe '%s':\n"
+"%s\n"
+"De ghnáth is earráid chumraíochta é seo.\n"
+"\n"
+"Chun tacú le brainsí rianaithe a bhunú, cinntigh go\n"
+"faigheann ciananna éagsúla léarscáil speisiúcháin go difriúil\n"
+"spaisí ainmneacha a rianú."
+
+#: branch.c
+#, c-format
+msgid "'%s' is not a valid branch name"
+msgstr "Ní ainm brainse bailí é '%s'"
+
+#: branch.c builtin/branch.c
+msgid "See `man git check-ref-format`"
+msgstr "Féach `man git check-ref-format`"
+
+#: branch.c
+#, c-format
+msgid "a branch named '%s' already exists"
+msgstr "tá brainse darb ainm '%s' ann cheana"
+
+#: branch.c
+#, c-format
+msgid "cannot force update the branch '%s' used by worktree at '%s'"
+msgstr ""
+"ní féidir an brainse '%s' a úsáideann crann oibre a nuashonrú a chur i "
+"bhfeidhm ag '%s'"
+
+#: branch.c
+#, c-format
+msgid "cannot set up tracking information; starting point '%s' is not a branch"
+msgstr ""
+"ní féidir faisnéis rianaithe a chur ar bun; ní brainse é pointe tosaigh '%s'"
+
+#: branch.c
+#, c-format
+msgid "the requested upstream branch '%s' does not exist"
+msgstr "níl an brainse suas srutha iarrtha '%s' ann"
+
+#: branch.c
+msgid ""
+"\n"
+"If you are planning on basing your work on an upstream\n"
+"branch that already exists at the remote, you may need to\n"
+"run \"git fetch\" to retrieve it.\n"
+"\n"
+"If you are planning to push out a new local branch that\n"
+"will track its remote counterpart, you may want to use\n"
+"\"git push -u\" to set the upstream config as you push."
+msgstr ""
+"\n"
+"Má tá tú ag pleanáil do chuid oibre a bhunú ar an suas sruth\n"
+"brainse atá ann cheana féin ag an iargúlta, b'fhéidir go mbeidh ort\n"
+"reáchtáil “git fetch” chun é a aisghabháil.\n"
+"\n"
+"Má tá tú ag pleanáil brainse áitiúil nua a bhrú amach\n"
+"rianóidh sé a mhacasamhail iargúlta, b'fhéidir gur mhaith leat a úsáid\n"
+"“git push -u” chun an cumraíocht suas sruth a shocrú agus tú ag brú."
+
+#: branch.c builtin/replace.c
+#, c-format
+msgid "not a valid object name: '%s'"
+msgstr "ní ainm réad bailí: '%s'"
+
+#: branch.c
+#, c-format
+msgid "ambiguous object name: '%s'"
+msgstr "ainm réad débhríoch: '%s'"
+
+#: branch.c
+#, c-format
+msgid "not a valid branch point: '%s'"
+msgstr "ní pointe brainse bailí: '%s'"
+
+#: branch.c
+#, c-format
+msgid "submodule '%s': unable to find submodule"
+msgstr "fo-mhodúl '%s': in ann fo-mhodúl a aimsiú"
+
+#: branch.c
+#, c-format
+msgid ""
+"You may try updating the submodules using 'git checkout --no-recurse-"
+"submodules %s && git submodule update --init'"
+msgstr ""
+"Is féidir leat triail a bhaint as na fo-mhodúil a nuashonrú ag baint úsáide "
+"as 'git checkout --no-recurse-submodules %s && git submodule update --init'"
+
+#: branch.c
+#, c-format
+msgid "submodule '%s': cannot create branch '%s'"
+msgstr "fo-mhodúl '%s': ní féidir brainse '%s' a chruthú"
+
+#: branch.c
+#, c-format
+msgid "'%s' is already used by worktree at '%s'"
+msgstr "Úsáidtear '%s' cheana féin ag an gcrann oibre ag '%s'"
+
+#: builtin/add.c
+msgid "git add [<options>] [--] <pathspec>..."
+msgstr "git add [<options>] [--]<pathspec>..."
+
+#: builtin/add.c
+#, c-format
+msgid "cannot chmod %cx '%s'"
+msgstr "ní féidir chmod %cx '%s'"
+
+#: builtin/add.c
+msgid "Unstaged changes after refreshing the index:"
+msgstr "Athruithe gan stáitse tar éis an t-innéacs a athnuachan:"
+
+#: builtin/add.c
+msgid "could not read the index"
+msgstr "ní raibh in ann an t-innéacs a léamh"
+
+#: builtin/add.c
+msgid "editing patch failed"
+msgstr "theip ar paiste eagarthóire"
+
+#: builtin/add.c read-cache.c
+#, c-format
+msgid "could not stat '%s'"
+msgstr "ní fhéadfaí '%s' a stát"
+
+#: builtin/add.c
+msgid "empty patch. aborted"
+msgstr "paiste folam. a ghabhrú"
+
+#: builtin/add.c
+#, c-format
+msgid "could not apply '%s'"
+msgstr "ní fhéadfaí '%s' a chur i bhfeidhm"
+
+#: builtin/add.c
+msgid "The following paths are ignored by one of your .gitignore files:\n"
+msgstr ""
+"Déanann ceann de do chomhaid .gitignore neamhaird ar na cosáin seo a "
+"leanas:\n"
+
+#: builtin/add.c builtin/clean.c builtin/fetch.c builtin/mv.c
+#: builtin/prune-packed.c builtin/pull.c builtin/push.c builtin/remote.c
+#: builtin/rm.c builtin/send-pack.c
+msgid "dry run"
+msgstr "rith tirim"
+
+#: builtin/add.c builtin/check-ignore.c builtin/commit.c
+#: builtin/count-objects.c builtin/fsck.c builtin/log.c builtin/mv.c
+#: builtin/read-tree.c builtin/refs.c
+msgid "be verbose"
+msgstr "a bheith inearálta"
+
+#: builtin/add.c
+msgid "interactive picking"
+msgstr "piocadh idirghní"
+
+#: builtin/add.c builtin/checkout.c builtin/reset.c
+msgid "select hunks interactively"
+msgstr "roghnaigh hunks idirghníomhach"
+
+#: builtin/add.c
+msgid "edit current diff and apply"
+msgstr "athraigh an dif reatha agus cuir i bhfeidhm"
+
+#: builtin/add.c
+msgid "allow adding otherwise ignored files"
+msgstr "ligean comhaid a neamhaird a chur leis"
+
+#: builtin/add.c
+msgid "update tracked files"
+msgstr "comhaid rianaithe a nuashonrú"
+
+#: builtin/add.c
+msgid "renormalize EOL of tracked files (implies -u)"
+msgstr ""
+"athormalú a dhéanamh ar EOL na gcomhaid rianaithe (tugann le tuiscint -u)"
+
+#: builtin/add.c
+msgid "record only the fact that the path will be added later"
+msgstr "ní thaifeadadh ach an fíric go gcuirfear an cosán leis níos déanaí"
+
+#: builtin/add.c
+msgid "add changes from all tracked and untracked files"
+msgstr "cuir athruithe ó gach comhad rianaithe agus neamhrianaithe"
+
+#: builtin/add.c
+msgid "ignore paths removed in the working tree (same as --no-all)"
+msgstr ""
+"neamhaird a dhéanamh ar chosáin a bhaintear sa chrann oibre (mar an gcéanna "
+"le --no-all)"
+
+#: builtin/add.c
+msgid "don't add, only refresh the index"
+msgstr "ná cuir leis, ach an t-innéacs a athnuachan"
+
+#: builtin/add.c
+msgid "just skip files which cannot be added because of errors"
+msgstr ""
+"ní gá ach comhaid a scipeáil nach féidir a chur leis mar gheall ar earráidí"
+
+#: builtin/add.c
+msgid "check if - even missing - files are ignored in dry run"
+msgstr ""
+"seiceáil an ndéantar neamhaird ar chomhaid - fiú ar iarraidh - ar iarraidh"
+
+#: builtin/add.c builtin/mv.c builtin/rm.c
+msgid "allow updating entries outside of the sparse-checkout cone"
+msgstr "ligean iontrálacha a nuashonrú lasmuigh den chón seiceála neamh"
+
+#: builtin/add.c builtin/update-index.c
+msgid "override the executable bit of the listed files"
+msgstr "an giotán infhorghníomhaithe de na comhaid liostaithe a sháraigh"
+
+#: builtin/add.c
+msgid "warn when adding an embedded repository"
+msgstr "rabhadh agus stór leabaithe á chur leis"
+
+#: builtin/add.c
+#, c-format
+msgid ""
+"You've added another git repository inside your current repository.\n"
+"Clones of the outer repository will not contain the contents of\n"
+"the embedded repository and will not know how to obtain it.\n"
+"If you meant to add a submodule, use:\n"
+"\n"
+"\tgit submodule add <url> %s\n"
+"\n"
+"If you added this path by mistake, you can remove it from the\n"
+"index with:\n"
+"\n"
+"\tgit rm --cached %s\n"
+"\n"
+"See \"git help submodule\" for more information."
+msgstr ""
+"Chuir tú stór git eile leis taobh istigh de do stór reatha.\n"
+"Ní bheidh ábhar i gclóin an stór seachtrach\n"
+"an stór leabaithe agus ní bheidh a fhios acu conas é a fháil.\n"
+"Má bhí sé i gceist agat fo-mhodúl a chur leis, bain úsáid as:\n"
+"\n"
+" <url>Cuir submodule git %s\n"
+"\n"
+"Má chuir tú an cosán seo le botún, is féidir leat é a bhaint as an\n"
+"innéacs le:\n"
+"\n"
+"\tgit rm --cached %s\n"
+"\n"
+"Féach “git help submodule” le haghaidh tuilleadh faisnéise."
+
+#: builtin/add.c
+#, c-format
+msgid "adding embedded git repository: %s"
+msgstr "stór git leabaithe a chur leis: %s"
+
+#: builtin/add.c
+msgid "Use -f if you really want to add them."
+msgstr "Úsáid -f más mian leat iad a chur leis i ndáiríre."
+
+#: builtin/add.c
+msgid "adding files failed"
+msgstr "theip ar chomhaid a chur leis"
+
+#: builtin/add.c
+#, c-format
+msgid "--chmod param '%s' must be either -x or +x"
+msgstr "Caithfidh --chmod param '%s' a bheith -x nó +x"
+
+#: builtin/add.c builtin/checkout.c builtin/commit.c builtin/reset.c
+#: builtin/rm.c builtin/stash.c
+#, c-format
+msgid "'%s' and pathspec arguments cannot be used together"
+msgstr "Ní féidir argóintí '%s' agus pathspec a úsáid le chéile"
+
+#: builtin/add.c
+#, c-format
+msgid "Nothing specified, nothing added.\n"
+msgstr "Níl aon rud sonraithe, ní chuir aon rud leis.\n"
+
+#: builtin/add.c
+msgid "Maybe you wanted to say 'git add .'?"
+msgstr "B'fhéidir gur mhaith leat a rá 'git add. '?"
+
+#: builtin/add.c builtin/check-ignore.c builtin/checkout.c builtin/clean.c
+#: builtin/commit.c builtin/diff-tree.c builtin/grep.c builtin/mv.c
+#: builtin/reset.c builtin/rm.c builtin/submodule--helper.c read-cache.c
+#: rerere.c submodule.c
+msgid "index file corrupt"
+msgstr "comhad innéacs truaillithe"
+
+#: builtin/add.c builtin/am.c builtin/checkout.c builtin/clone.c
+#: builtin/commit.c builtin/stash.c merge.c rerere.c
+msgid "unable to write new index file"
+msgstr "in ann comhad innéacs nua a scríobh"
+
+#: builtin/am.c builtin/mailinfo.c mailinfo.c
+#, c-format
+msgid "bad action '%s' for '%s'"
+msgstr "droch-ghníomh '%s' le haghaidh '%s'"
+
+#: builtin/am.c builtin/blame.c builtin/fetch.c builtin/pack-objects.c
+#: builtin/pull.c builtin/revert.c config.c diff-merges.c gpg-interface.c
+#: ls-refs.c parallel-checkout.c sequencer.c setup.c
+#, c-format
+msgid "invalid value for '%s': '%s'"
+msgstr "luach neamhbhailí do '%s': '%s'"
+
+#: builtin/am.c builtin/commit.c builtin/merge.c sequencer.c
+#, c-format
+msgid "could not read '%s'"
+msgstr "ní raibh in ann '%s' a léamh"
+
+#: builtin/am.c
+msgid "could not parse author script"
+msgstr "ní raibh sé in ann script údair a pharsáil"
+
+#: builtin/am.c builtin/replace.c commit.c sequencer.c
+#, c-format
+msgid "could not parse %s"
+msgstr "ní fhéadfaí %s a pháirseáil"
+
+#: builtin/am.c
+#, c-format
+msgid "'%s' was deleted by the applypatch-msg hook"
+msgstr "Scriosadh '%s' ag an crúca applypatch-msg"
+
+#: builtin/am.c
+#, c-format
+msgid "Malformed input line: '%s'."
+msgstr "Líne ionchuir mífhoirmithe: '%s'."
+
+#: builtin/am.c
+#, c-format
+msgid "Failed to copy notes from '%s' to '%s'"
+msgstr "Theip ar nótaí a chóipeáil ó '%s' go '%s'"
+
+#: builtin/am.c
+msgid "fseek failed"
+msgstr "theip ar fseek"
+
+#: builtin/am.c builtin/rebase.c sequencer.c wrapper.c
+#, c-format
+msgid "could not open '%s' for reading"
+msgstr "ní fhéadfaí '%s' a oscailt le haghaidh léamh"
+
+#: builtin/am.c builtin/rebase.c editor.c sequencer.c wrapper.c
+#, c-format
+msgid "could not open '%s' for writing"
+msgstr "ní féidir '%s' a oscailt le haghaidh scríbhneoireachta"
+
+#: builtin/am.c
+#, c-format
+msgid "could not parse patch '%s'"
+msgstr "ní raibh sé in ann paiste '%s' a pháirseáil"
+
+#: builtin/am.c
+msgid "Only one StGIT patch series can be applied at once"
+msgstr ""
+"Ní féidir ach sraith paiste STGit amháin a chur i bhfeidhm ag an am céanna"
+
+#: builtin/am.c
+msgid "invalid timestamp"
+msgstr "stampa ama neamhbhailí"
+
+#: builtin/am.c
+msgid "invalid Date line"
+msgstr "líne dáta neamhbhailí"
+
+#: builtin/am.c
+msgid "invalid timezone offset"
+msgstr "fhritháireamh crios ama neamh"
+
+#: builtin/am.c
+msgid "Patch format detection failed."
+msgstr "Theip ar bhrath formáid paiste."
+
+#: builtin/am.c builtin/clone.c
+#, c-format
+msgid "failed to create directory '%s'"
+msgstr "theip ar eolaire '%s' a chruthú"
+
+#: builtin/am.c
+msgid "Failed to split patches."
+msgstr "Theip ar phaistí a roinnt."
+
+#: builtin/am.c
+#, c-format
+msgid "When you have resolved this problem, run \"%s --continue\".\n"
+msgstr ""
+"Nuair a bheidh an fhadhb seo réitithe agat, reáchtáil “%s --continue”.\n"
+
+#: builtin/am.c
+#, c-format
+msgid "If you prefer to skip this patch, run \"%s --skip\" instead.\n"
+msgstr ""
+"Más fearr leat an paiste seo a scipeáil, reáchtáil “%s --skip” ina ionad.\n"
+
+#: builtin/am.c
+#, c-format
+msgid ""
+"To record the empty patch as an empty commit, run \"%s --allow-empty\".\n"
+msgstr ""
+"Chun an paiste folamh a thaifeadadh mar thiomantas folamh, reáchtáil “%s --"
+"allow-empty”.\n"
+
+#: builtin/am.c
+#, c-format
+msgid "To restore the original branch and stop patching, run \"%s --abort\"."
+msgstr ""
+"Chun an brainse bunaidh a chur ar ais agus stopadh le patáil, reáchtáil “%s "
+"--abort”."
+
+#: builtin/am.c
+msgid "Patch sent with format=flowed; space at the end of lines might be lost."
+msgstr ""
+"Seoladh paiste le formáid = sreabhadh; d'fhéadfaí spás ag deireadh na línte "
+"a chailleadh."
+
+#: builtin/am.c
+#, c-format
+msgid "missing author line in commit %s"
+msgstr "líne údair ar iarraidh i dtiomantas %s"
+
+#: builtin/am.c
+#, c-format
+msgid "invalid ident line: %.*s"
+msgstr "líne aitheantais neamhbhailí: %.*s"
+
+#: builtin/am.c builtin/checkout.c builtin/clone.c commit-graph.c
+#, c-format
+msgid "unable to parse commit %s"
+msgstr "nach féidir le tiomantas %s a pharsáil"
+
+#: builtin/am.c
+msgid "Repository lacks necessary blobs to fall back on 3-way merge."
+msgstr ""
+"Níl na blobanna riachtanacha ag an stór chun titim siar ar chumasc trí "
+"bhealach."
+
+#: builtin/am.c
+msgid "Using index info to reconstruct a base tree..."
+msgstr "Eolas innéacs a úsáid chun bonn crann a athchóiriú..."
+
+#: builtin/am.c
+msgid ""
+"Did you hand edit your patch?\n"
+"It does not apply to blobs recorded in its index."
+msgstr ""
+"Ar chuir tú do phaiste in eagar de láimh?\n"
+"Ní bhaineann sé le blobs a taifeadtar ina innéacs."
+
+#: builtin/am.c
+msgid "Falling back to patching base and 3-way merge..."
+msgstr "Ag titim ar ais go bonn paiste agus cumasc trí bhealach..."
+
+#: builtin/am.c
+msgid "Failed to merge in the changes."
+msgstr "Theip ar na hathruithe a chumasc."
+
+#: builtin/am.c builtin/merge.c sequencer.c
+msgid "git write-tree failed to write a tree"
+msgstr "theip ar git write-tree crann a scríobh"
+
+#: builtin/am.c
+msgid "applying to an empty history"
+msgstr "iarratas a dhéanamh ar stair folamh"
+
+#: builtin/am.c builtin/commit.c builtin/merge.c builtin/replay.c sequencer.c
+msgid "failed to write commit object"
+msgstr "theip ar réad tiomanta a scríobh"
+
+#: builtin/am.c
+#, c-format
+msgid "cannot resume: %s does not exist."
+msgstr "ní féidir atosú: níl %s ann."
+
+#: builtin/am.c
+msgid "Commit Body is:"
+msgstr "Is é an Comhlacht Tiomanta:"
+
+#. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
+#. in your translation. The program will only accept English
+#. input at this point.
+#.
+#: builtin/am.c
+#, c-format
+msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: "
+msgstr ""
+"Cuir i bhfeidhm?[y]es/[n]o/[e]dit/[v]iew patch/[a]glacadh le gach rud: "
+
+#: builtin/am.c builtin/commit.c
+msgid "unable to write index file"
+msgstr "in ann comhad innéacs a scríobh"
+
+#: builtin/am.c
+#, c-format
+msgid "Dirty index: cannot apply patches (dirty: %s)"
+msgstr "Innéacs salach: ní féidir paistí a chur i bhfeidhm (salach: %s)"
+
+#: builtin/am.c
+#, c-format
+msgid "Skipping: %.*s"
+msgstr "Scipeáil: %.*s"
+
+#: builtin/am.c
+#, c-format
+msgid "Creating an empty commit: %.*s"
+msgstr "Tiomantas folamh a chruthú: %.*s"
+
+#: builtin/am.c
+msgid "Patch is empty."
+msgstr "Tá paiste folamh."
+
+#: builtin/am.c
+#, c-format
+msgid "Applying: %.*s"
+msgstr "Iarratas a dhéanamh: %.*s"
+
+#: builtin/am.c
+msgid "No changes -- Patch already applied."
+msgstr "Gan aon athruithe - paiste curtha i bhfeidhm cheana féin."
+
+#: builtin/am.c
+#, c-format
+msgid "Patch failed at %s %.*s"
+msgstr "Theip ar phaiste ag %s%.*s"
+
+#: builtin/am.c
+msgid "Use 'git am --show-current-patch=diff' to see the failed patch"
+msgstr ""
+"Úsáid 'git am --show-current-patch=diff' chun an paiste theip a fheiceáil"
+
+#: builtin/am.c
+msgid "No changes - recorded it as an empty commit."
+msgstr "Gan aon athruithe - taifeadadh é mar thiomantas folamh."
+
+#: builtin/am.c
+msgid ""
+"No changes - did you forget to use 'git add'?\n"
+"If there is nothing left to stage, chances are that something else\n"
+"already introduced the same changes; you might want to skip this patch."
+msgstr ""
+"Gan aon athruithe - ar ndearna tú dearmad 'git add' a úsáid?\n"
+"Mura bhfuil aon rud fágtha chun na céime, tá seans ann go bhfuil rud éigin "
+"eile\n"
+"tugadh na hathruithe céanna isteach cheana féin; b'fhéidir gur mhaith leat "
+"an paiste seo a scipeáil."
+
+#: builtin/am.c
+msgid ""
+"You still have unmerged paths in your index.\n"
+"You should 'git add' each file with resolved conflicts to mark them as "
+"such.\n"
+"You might run `git rm` on a file to accept \"deleted by them\" for it."
+msgstr ""
+"Tá cosáin neamh-chumasaithe agat fós i d'innéacs.\n"
+"Ba chóir duit gach comhad a 'chur leis 'git' le coinbhleachtaí réitithe chun "
+"iad a mharcáil mar sin.\n"
+"D'fhéadfá `git rm` a reáchtáil ar chomhad chun glacadh le “scriosta ag siad” "
+"dó."
+
+#: builtin/am.c builtin/reset.c
+#, c-format
+msgid "Could not parse object '%s'."
+msgstr "Ní fhéadfaí réad '%s' a pháirseáil."
+
+#: builtin/am.c
+msgid "failed to clean index"
+msgstr "theip ar innéacs a ghlanadh"
+
+#: builtin/am.c
+msgid ""
+"You seem to have moved HEAD since the last 'am' failure.\n"
+"Not rewinding to ORIG_HEAD"
+msgstr ""
+"Is cosúil gur bhogadh tú HEAD ón teip 'am' deireanach.\n"
+"Gan athfhillte chuig ORIG_HEAD"
+
+#: builtin/am.c builtin/bisect.c builtin/tag.c worktree.c
+#, c-format
+msgid "failed to read '%s'"
+msgstr "theip ar '%s' a léamh"
+
+#: builtin/am.c
+msgid "git am [<options>] [(<mbox> | <Maildir>)...]"
+msgstr "git am [<options>] [(<mbox> | <Maildir>)...]"
+
+#: builtin/am.c
+msgid "git am [<options>] (--continue | --skip | --abort)"
+msgstr "git am [<options>] (--continue | --skip | --abort)"
+
+#: builtin/am.c
+msgid "run interactively"
+msgstr "rith idirghníomhach"
+
+#: builtin/am.c
+msgid "bypass pre-applypatch and applypatch-msg hooks"
+msgstr "seachbhóthar crúcaí réamh-applypatch agus applypatch-msg"
+
+#: builtin/am.c builtin/cat-file.c
+msgid "historical option -- no-op"
+msgstr "rogha stairiúil -- no-op"
+
+#: builtin/am.c
+msgid "allow fall back on 3way merging if needed"
+msgstr "ligean titim siar ar chumasc 3bhealach más gá"
+
+#: builtin/am.c builtin/init-db.c builtin/prune-packed.c builtin/repack.c
+#: builtin/stash.c
+msgid "be quiet"
+msgstr "a bheith ciúin"
+
+#: builtin/am.c
+msgid "add a Signed-off-by trailer to the commit message"
+msgstr "cuir leantóir sínithe amach leis an teachtaireacht tiomanta"
+
+#: builtin/am.c
+msgid "recode into utf8 (default)"
+msgstr "athchóiriú isteach i utf8 (réamhshocraithe)"
+
+#: builtin/am.c
+msgid "pass -k flag to git-mailinfo"
+msgstr "pas bratach -k chuig git-mailinfo"
+
+#: builtin/am.c
+msgid "pass -b flag to git-mailinfo"
+msgstr "pas bratach -b chuig git-mailinfo"
+
+#: builtin/am.c
+msgid "pass -m flag to git-mailinfo"
+msgstr "pas bratach -m chuig git-mailinfo"
+
+#: builtin/am.c
+msgid "pass --keep-cr flag to git-mailsplit for mbox format"
+msgstr "pas bratach --keep-cr go git-mailsplit le haghaidh formáid mbox"
+
+#: builtin/am.c
+msgid "strip everything before a scissors line"
+msgstr "gach rud a tharraingt roimh líne siosúr"
+
+#: builtin/am.c
+msgid "pass it through git-mailinfo"
+msgstr "cuir ar aghaidh trí git-mailinfo"
+
+#: builtin/am.c
+msgid "pass it through git-apply"
+msgstr "cuir isteach é trí git-apply"
+
+#: builtin/am.c builtin/commit.c builtin/fmt-merge-msg.c builtin/grep.c
+#: builtin/merge.c builtin/pull.c builtin/rebase.c builtin/repack.c
+#: builtin/show-branch.c builtin/show-ref.c builtin/tag.c parse-options.h
+msgid "n"
+msgstr "n"
+
+#: builtin/am.c builtin/branch.c builtin/bugreport.c builtin/cat-file.c
+#: builtin/clone.c builtin/diagnose.c builtin/for-each-ref.c builtin/init-db.c
+#: builtin/ls-files.c builtin/ls-tree.c builtin/refs.c builtin/replace.c
+#: builtin/submodule--helper.c builtin/tag.c builtin/verify-tag.c
+msgid "format"
+msgstr "formáid"
+
+#: builtin/am.c
+msgid "format the patch(es) are in"
+msgstr "formáid atá na paistea/na paiste iontu"
+
+#: builtin/am.c
+msgid "override error message when patch failure occurs"
+msgstr "teachtaireacht earráide a shárú nuair a tharlaíonn teip"
+
+#: builtin/am.c
+msgid "continue applying patches after resolving a conflict"
+msgstr "leanúint ar aghaidh ag cur paistí a chur i bhfeidhm tar"
+
+#: builtin/am.c
+msgid "synonyms for --continue"
+msgstr "comhchiallaigh do --continue"
+
+#: builtin/am.c
+msgid "skip the current patch"
+msgstr "scipeáil an paiste reatha"
+
+#: builtin/am.c
+msgid "restore the original branch and abort the patching operation"
+msgstr ""
+"an bhrainse bunaidh a chur ar ais agus cuir deireadh leis an oibríocht paiste"
+
+#: builtin/am.c
+msgid "abort the patching operation but keep HEAD where it is"
+msgstr ""
+"déan deireadh leis an oibríocht paisteála ach coinnigh CEAD san áit a bhfuil "
+"sé"
+
+#: builtin/am.c
+msgid "show the patch being applied"
+msgstr "taispeáin an paiste atá á chur i bhfeidhm"
+
+#: builtin/am.c
+msgid "try to apply current patch again"
+msgstr "déan iarracht paiste reatha a chur i bhfeidhm"
+
+#: builtin/am.c
+msgid "record the empty patch as an empty commit"
+msgstr "taifeadadh an paiste folamh mar thiomantas folamh"
+
+#: builtin/am.c
+msgid "lie about committer date"
+msgstr "bréag faoi dháta an choimisiúnaithe"
+
+#: builtin/am.c
+msgid "use current timestamp for author date"
+msgstr "bain úsáid as stampa ama reatha le haghaidh dáta an údair"
+
+#: builtin/am.c builtin/commit-tree.c builtin/commit.c builtin/merge.c
+#: builtin/pull.c builtin/rebase.c builtin/revert.c builtin/tag.c
+msgid "key-id"
+msgstr "id eochair"
+
+#: builtin/am.c builtin/rebase.c
+msgid "GPG-sign commits"
+msgstr "Tiomanta comhartha GPG-Comhartha"
+
+#: builtin/am.c
+msgid "how to handle empty patches"
+msgstr "conas paistí folamh a láimhseáil"
+
+#: builtin/am.c
+msgid "(internal use for git-rebase)"
+msgstr "(úsáid inmheánach le haghaidh git-rebase)"
+
+#: builtin/am.c
+msgid ""
+"The -b/--binary option has been a no-op for long time, and\n"
+"it will be removed. Please do not use it anymore."
+msgstr ""
+"Tá an rogha -b/--binary neamh-op le fada an lá, agus\n"
+"bainfear é. Ná húsáid é níos mó le do thoil."
+
+#: builtin/am.c
+msgid "failed to read the index"
+msgstr "theip ar an t-innéacs a léamh"
+
+#: builtin/am.c
+#, c-format
+msgid "previous rebase directory %s still exists but mbox given."
+msgstr "eolaire rebase roimhe seo %s ann fós ach tugadh mbox."
+
+#: builtin/am.c
+#, c-format
+msgid ""
+"Stray %s directory found.\n"
+"Use \"git am --abort\" to remove it."
+msgstr ""
+"Fuarthas eolaire %s stray.\n"
+"Úsáid “git am --abort” chun é a bhaint."
+
+#: builtin/am.c
+msgid "Resolve operation not in progress, we are not resuming."
+msgstr "Réiteach oibríocht nach bhfuil ar siúl, níl muid ag atosú."
+
+#: builtin/am.c
+msgid "interactive mode requires patches on the command line"
+msgstr "éilíonn modh idirghníomhach paistí ar an líne ordaithe"
+
+#: builtin/apply.c
+msgid "git apply [<options>] [<patch>...]"
+msgstr "git feidhm [<options>] [<patch>...]"
+
+#: builtin/archive.c diagnose.c
+msgid "could not redirect output"
+msgstr "ní fhéadfaí aschur a atreorú"
+
+#: builtin/archive.c
+msgid "git archive: expected ACK/NAK, got a flush packet"
+msgstr "cartlann git: ag súil le ACK/NAK, fuair sé paicéad sruthán"
+
+#: builtin/archive.c
+#, c-format
+msgid "git archive: NACK %s"
+msgstr "git archive: NACK %s"
+
+#: builtin/archive.c
+msgid "git archive: protocol error"
+msgstr "git cartlann: earráid prótacal"
+
+#: builtin/archive.c
+msgid "git archive: expected a flush"
+msgstr "git archive: bhíothas ag súil le sruthlú"
+
+#: builtin/backfill.c
+msgid "git backfill [--min-batch-size=<n>] [--[no-]sparse]"
+msgstr "git backfill [--min-batch-size=<n>] [-- [no-] neart]"
+
+#: builtin/backfill.c
+msgid "problem loading sparse-checkout"
+msgstr "fadhb ag luchtú seiceáil neamhchoiti"
+
+#: builtin/backfill.c
+msgid "Minimum number of objects to request at a time"
+msgstr "Líon íosta rudaí le iarraidh ag an am"
+
+#: builtin/backfill.c
+msgid "Restrict the missing objects to the current sparse-checkout"
+msgstr "Cuir srian ar na rudaí atá in easnamh don tseiceáil neamhchoitianta"
+
+#: builtin/bisect.c
+msgid ""
+"git bisect start [--term-(new|bad)=<term> --term-(old|good)=<term>] [--no-"
+"checkout] [--first-parent] [<bad> [<good>...]] [--] [<pathspec>...]"
+msgstr ""
+"git bisect start [--term-(new|bad)=<term> --term-(old|good)=<term>] [--no-"
+"checkout] [--first-parent] [<bad> [<good>...]] [--] [<pathspec>...]"
+
+#: builtin/bisect.c
+msgid "git bisect (good|bad) [<rev>...]"
+msgstr "<rev>git bisect (maith|olc) [...]"
+
+#: builtin/bisect.c
+msgid "git bisect skip [(<rev>|<range>)...]"
+msgstr "git bisect skip [(<rev>|<range>)...]"
+
+#: builtin/bisect.c
+msgid "git bisect reset [<commit>]"
+msgstr "<commit>athshocrú git bisect []"
+
+#: builtin/bisect.c
+msgid "git bisect replay <logfile>"
+msgstr "athsheinm git bisect <logfile>"
+
+#: builtin/bisect.c
+msgid "git bisect run <cmd> [<arg>...]"
+msgstr "git bisect a rith <cmd>[<arg>...]"
+
+#: builtin/bisect.c
+#, c-format
+msgid "cannot open file '%s' in mode '%s'"
+msgstr "ní féidir comhad '%s' a oscailt sa mhodh '%s'"
+
+#: builtin/bisect.c
+#, c-format
+msgid "could not write to file '%s'"
+msgstr "ní fhéadfaí scríobh chuig comhad '%s'"
+
+#: builtin/bisect.c
+#, c-format
+msgid "cannot open file '%s' for reading"
+msgstr "ní féidir comhad '%s' a oscailt le haghaidh léamh"
+
+#: builtin/bisect.c
+#, c-format
+msgid "'%s' is not a valid term"
+msgstr "Ní téarma bailí é '%s'"
+
+#: builtin/bisect.c
+#, c-format
+msgid "can't use the builtin command '%s' as a term"
+msgstr "ní féidir an t-ordú bunaithe '%s' a úsáid mar théarma"
+
+#: builtin/bisect.c
+#, c-format
+msgid "can't change the meaning of the term '%s'"
+msgstr "ní féidir le brí an téarma '%s' a athrú"
+
+#: builtin/bisect.c
+msgid "please use two different terms"
+msgstr "bain úsáid as dhá théarma éagsúla"
+
+#: builtin/bisect.c
+#, c-format
+msgid "We are not bisecting.\n"
+msgstr "Nílimid ag déileáil.\n"
+
+#: builtin/bisect.c
+#, c-format
+msgid "'%s' is not a valid commit"
+msgstr "Ní gealltanas bailí é '%s'"
+
+#: builtin/bisect.c
+#, c-format
+msgid ""
+"could not check out original HEAD '%s'. Try 'git bisect reset <commit>'."
+msgstr ""
+"ní fhéadfaí an HEAD bunaidh '%s' a sheiceáil. <commit>Bain triail as 'git "
+"bisect reset '."
+
+#: builtin/bisect.c
+#, c-format
+msgid "Bad bisect_write argument: %s"
+msgstr "Droch-argóint bisect_write: %s"
+
+#: builtin/bisect.c
+#, c-format
+msgid "couldn't get the oid of the rev '%s'"
+msgstr "ní raibh in ann oid an rev '%s' a fháil"
+
+#: builtin/bisect.c
+#, c-format
+msgid "couldn't open the file '%s'"
+msgstr "ní raibh in ann an comhad '%s' a oscailt"
+
+#: builtin/bisect.c
+#, c-format
+msgid "Invalid command: you're currently in a %s/%s bisect"
+msgstr "Ordú neamhbhailí: tá tú i mbeagán %s/%s faoi láthair"
+
+#: builtin/bisect.c
+#, c-format
+msgid ""
+"You need to give me at least one %s and %s revision.\n"
+"You can use \"git bisect %s\" and \"git bisect %s\" for that."
+msgstr ""
+"Ní mór duit athbhreithniú %s agus %s amháin ar a laghad a thabhairt dom.\n"
+"Is féidir leat “git bisect %s” agus “git bisect %s” a úsáid chuige sin."
+
+#: builtin/bisect.c
+#, c-format
+msgid ""
+"You need to start by \"git bisect start\".\n"
+"You then need to give me at least one %s and %s revision.\n"
+"You can use \"git bisect %s\" and \"git bisect %s\" for that."
+msgstr ""
+"Ní mór duit tosú ag “git bisect start”.\n"
+"Ansin ní mór duit athbhreithniú %s agus %s amháin ar a laghad a thabhairt "
+"dom.\n"
+"Is féidir leat “git bisect %s” agus “git bisect %s” a úsáid chuige sin."
+
+#: builtin/bisect.c
+#, c-format
+msgid "bisecting only with a %s commit"
+msgstr "ag déileáil ach amháin le tiomantas %s"
+
+#. TRANSLATORS: Make sure to include [Y] and [n] in your
+#. translation. The program will only accept English input
+#. at this point.
+#.
+#: builtin/bisect.c
+msgid "Are you sure [Y/n]? "
+msgstr "An bhfuil tú cinnte [Y/n]? "
+
+#: builtin/bisect.c
+msgid "status: waiting for both good and bad commits\n"
+msgstr "stádas: ag fanacht le tiomáintí mhaith agus tiomáintí dona\n"
+
+#: builtin/bisect.c
+#, c-format
+msgid "status: waiting for bad commit, %d good commit known\n"
+msgid_plural "status: waiting for bad commit, %d good commits known\n"
+msgstr[0] "stádas: ag fanacht le droch-thiomnadh, %d dea-thiomnadh ar eolas\n"
+msgstr[1] ""
+"stádas: ag fanacht le droch-thiomantas, %d dea-thiomantas ar eolas\n"
+msgstr[2] ""
+"stádas: ag fanacht le droch-thiomantas, %d dea-thiomantas ar eolas\n"
+
+#: builtin/bisect.c
+msgid "status: waiting for good commit(s), bad commit known\n"
+msgstr "stádas: ag fanacht le tiomáintí maith, droch-tiomantas ar eolas\n"
+
+#: builtin/bisect.c
+msgid "no terms defined"
+msgstr "aon téarmaí sainmhínithe"
+
+#: builtin/bisect.c
+#, c-format
+msgid ""
+"Your current terms are %s for the old state\n"
+"and %s for the new state.\n"
+msgstr ""
+"Is iad na téarmaí reatha %s don seanstát\n"
+"agus %s don stát nua.\n"
+
+#: builtin/bisect.c
+#, c-format
+msgid ""
+"invalid argument %s for 'git bisect terms'.\n"
+"Supported options are: --term-good|--term-old and --term-bad|--term-new."
+msgstr ""
+"argóint neamhbhailí %s le haghaidh 'git bisect terms'.\n"
+"Is iad na roghanna tacaithe ná: --term-good|--term-old agus --term-bad|--"
+"term-new."
+
+#: builtin/bisect.c
+#, c-format
+msgid "could not open '%s' for appending"
+msgstr "ní fhéadfaí '%s' a oscailt le haghaidh cur isteach"
+
+#: builtin/bisect.c
+msgid "'' is not a valid term"
+msgstr "'' ní téarma bailí é"
+
+#: builtin/bisect.c
+#, c-format
+msgid "unrecognized option: '%s'"
+msgstr "rogha gan aithint: '%s'"
+
+#: builtin/bisect.c
+#, c-format
+msgid "'%s' does not appear to be a valid revision"
+msgstr "Ní cosúil gur athbhreithniú bailí é '%s'"
+
+#: builtin/bisect.c
+msgid "bad HEAD - I need a HEAD"
+msgstr "droch HEAD - Teastaíonn HEAD uaim"
+
+#: builtin/bisect.c
+#, c-format
+msgid "checking out '%s' failed. Try 'git bisect start <valid-branch>'."
+msgstr ""
+"theip ar '%s' a sheiceáil. <valid-branch>Bain triail as 'git bisect start '."
+
+#: builtin/bisect.c
+msgid "bad HEAD - strange symbolic ref"
+msgstr "bad HEAD - tagairt siombalach aisteach"
+
+#: builtin/bisect.c
+#, c-format
+msgid "invalid ref: '%s'"
+msgstr "tagairt neamhbhailí: '%s'"
+
+#: builtin/bisect.c
+msgid "You need to start by \"git bisect start\"\n"
+msgstr "Ní mór duit tosú ag “git bisect start”\n"
+
+#. TRANSLATORS: Make sure to include [Y] and [n] in your
+#. translation. The program will only accept English input
+#. at this point.
+#.
+#: builtin/bisect.c
+msgid "Do you want me to do it for you [Y/n]? "
+msgstr "An dteastaíonn uait go ndéanfaidh mé é duit [Y/n]? "
+
+#: builtin/bisect.c
+msgid "Please call `--bisect-state` with at least one argument"
+msgstr "Glaoigh ar `--bisect-state` le do thoil le argóint amháin ar a laghad"
+
+#: builtin/bisect.c
+#, c-format
+msgid "'git bisect %s' can take only one argument."
+msgstr "Ní féidir le 'git bisect %s' ach argóint amháin a ghlacadh."
+
+#: builtin/bisect.c
+#, c-format
+msgid "Bad rev input: %s"
+msgstr "Droch-ionchur rev: %s"
+
+#: builtin/bisect.c
+#, c-format
+msgid "Bad rev input (not a commit): %s"
+msgstr "Droch-ionchur rev (ní tiomantas): %s"
+
+#: builtin/bisect.c
+msgid "We are not bisecting."
+msgstr "Nílimid ag déileáil."
+
+#: builtin/bisect.c
+#, c-format
+msgid "'%s'?? what are you talking about?"
+msgstr "'%s'?? cad atá tú ag caint faoi?"
+
+#: builtin/bisect.c
+#, c-format
+msgid "cannot read file '%s' for replaying"
+msgstr "ní féidir comhad '%s' a léamh le haghaidh athsheinm"
+
+#: builtin/bisect.c
+#, c-format
+msgid "running %s\n"
+msgstr "ag rith %s\n"
+
+#: builtin/bisect.c
+msgid "bisect run failed: no command provided."
+msgstr "theip ar rith bioctha: níl aon ordú curtha ar fáil."
+
+#: builtin/bisect.c
+#, c-format
+msgid "unable to verify %s on good revision"
+msgstr "nach féidir %s a fhíorú ar athbhreithniú maith"
+
+#: builtin/bisect.c
+#, c-format
+msgid "bogus exit code %d for good revision"
+msgstr "cód imeachta bréagach %d le haghaidh athbhreithniú maith"
+
+#: builtin/bisect.c
+#, c-format
+msgid "bisect run failed: exit code %d from %s is < 0 or >= 128"
+msgstr "< 0 or >Theip ar rith bioctha: is é an cód imeachta %d ó %s = 128"
+
+#: builtin/bisect.c
+#, c-format
+msgid "cannot open file '%s' for writing"
+msgstr "ní féidir comhad '%s' a oscailt le haghaidh scríobh"
+
+#: builtin/bisect.c
+msgid "bisect run cannot continue any more"
+msgstr "ní féidir le rith bisect leanúint ar aghaidh níos mó"
+
+#: builtin/bisect.c
+msgid "bisect run success"
+msgstr "rath reatha dhéagsúil"
+
+#: builtin/bisect.c
+msgid "bisect found first bad commit"
+msgstr "fuarthas bisect an chéad droch-thiomantas"
+
+#: builtin/bisect.c
+#, c-format
+msgid "bisect run failed: 'git bisect %s' exited with error code %d"
+msgstr "theip ar rith bisect: D'éirigh 'git bisect %s' le cód earráide %d"
+
+#: builtin/bisect.c
+#, c-format
+msgid "'%s' requires either no argument or a commit"
+msgstr "Ní éilíonn '%s' aon argóint ná tiomantas"
+
+#: builtin/bisect.c
+#, c-format
+msgid "'%s' requires 0 or 1 argument"
+msgstr "Éilíonn '%s' argóint 0 nó 1"
+
+#: builtin/bisect.c
+#, c-format
+msgid "'%s' requires 0 arguments"
+msgstr "Éilíonn '%s' 0 argóint"
+
+#: builtin/bisect.c
+msgid "no logfile given"
+msgstr "níl aon logfile tugtha"
+
+#: builtin/bisect.c
+#, c-format
+msgid "'%s' failed: no command provided."
+msgstr "Theip ar '%s': níl aon ordú curtha ar fáil."
+
+#: builtin/bisect.c
+msgid "need a command"
+msgstr "teastaíonn ordú"
+
+#: builtin/bisect.c builtin/cat-file.c
+#, c-format
+msgid "unknown command: '%s'"
+msgstr "ordú anaithnid: '%s'"
+
+#: builtin/blame.c
+msgid "git blame [<options>] [<rev-opts>] [<rev>] [--] <file>"
+msgstr "git an mille <options>án [<rev-opts>] [<rev>] [] [--] <file>"
+
+#: builtin/blame.c
+msgid "git annotate [<options>] [<rev-opts>] [<rev>] [--] <file>"
+msgstr "git annotate [<options>] [] [<rev-opts><rev>] [--] <file>"
+
+#: builtin/blame.c
+msgid "<rev-opts> are documented in git-rev-list(1)"
+msgstr "<rev-opts>iad doiciméadaithe i git-rev-list (1)"
+
+#: builtin/blame.c
+#, c-format
+msgid "expecting a color: %s"
+msgstr "ag súil le dath: %s"
+
+#: builtin/blame.c
+msgid "must end with a color"
+msgstr "caithfidh deireadh a chur le dath"
+
+#: builtin/blame.c
+#, c-format
+msgid "cannot find revision %s to ignore"
+msgstr "ní féidir athbhreithniú %s a fháil le neamhair"
+
+#: builtin/blame.c
+msgid "show blame entries as we find them, incrementally"
+msgstr "taispeáint iontrálacha milleán de réir mar a aimsímid iad, go chéile"
+
+#: builtin/blame.c
+msgid "do not show object names of boundary commits (Default: off)"
+msgstr ""
+"ná taispeáin ainmneacha réada na ngealltanais teorann (Réamhshocraithe: as)"
+
+#: builtin/blame.c
+msgid "do not treat root commits as boundaries (Default: off)"
+msgstr ""
+"ná déileáil le gealltanais fréimhe mar theorainneacha (Réamhshocraithe: as)"
+
+#: builtin/blame.c
+msgid "show work cost statistics"
+msgstr "taispeáin staitisticí costas oibre"
+
+#: builtin/blame.c builtin/checkout.c builtin/clone.c builtin/commit-graph.c
+#: builtin/fetch.c builtin/merge.c builtin/multi-pack-index.c builtin/pull.c
+#: builtin/push.c builtin/remote.c builtin/send-pack.c
+msgid "force progress reporting"
+msgstr "tuairisciú dul chun cinn"
+
+#: builtin/blame.c
+msgid "show output score for blame entries"
+msgstr "taispeáin scór aschuir d'iontrálacha mille"
+
+#: builtin/blame.c
+msgid "show original filename (Default: auto)"
+msgstr "taispeáin ainm comhaid bunaidh (Réamhshocraithe: auto)"
+
+#: builtin/blame.c
+msgid "show original linenumber (Default: off)"
+msgstr "taispeáin uimhir líne bunaidh (Réamhshocraithe: as)"
+
+#: builtin/blame.c
+msgid "show in a format designed for machine consumption"
+msgstr "taispeáint i bhformáid atá deartha le haghaidh tomhaltas meaisín"
+
+#: builtin/blame.c
+msgid "show porcelain format with per-line commit information"
+msgstr "formáid poircealláin a thaispeáint le faisnéis tiomanta"
+
+#: builtin/blame.c
+msgid "use the same output mode as git-annotate (Default: off)"
+msgstr ""
+"bain úsáid as an modh aschuir céanna le git-annotate (Réamhshocraithe: as)"
+
+#: builtin/blame.c
+msgid "show raw timestamp (Default: off)"
+msgstr "taispeáin ama amh (Réamhshocraithe: as)"
+
+#: builtin/blame.c
+msgid "show long commit SHA1 (Default: off)"
+msgstr "taispeáin tiomantas fada SHA1 (Réamhshocraithe: as)"
+
+#: builtin/blame.c
+msgid "suppress author name and timestamp (Default: off)"
+msgstr "ainm an údair agus stampa ama a chur faoi chois (Réamhshocraithe: as)"
+
+#: builtin/blame.c
+msgid "show author email instead of name (Default: off)"
+msgstr "taispeáin ríomhphost an údair in ionad ainm (Réamhshocraithe: as)"
+
+#: builtin/blame.c
+msgid "ignore whitespace differences"
+msgstr "neamhaird a dhéanamh ar dhifríochtaí spás b"
+
+#: builtin/blame.c builtin/clone.c builtin/log.c
+msgid "rev"
+msgstr "rev"
+
+#: builtin/blame.c
+msgid "ignore <rev> when blaming"
+msgstr "neamhaird a <rev>dhéanamh agus an milleán"
+
+#: builtin/blame.c
+msgid "ignore revisions from <file>"
+msgstr "neamhaird ar athbhreithnithe <file>"
+
+#: builtin/blame.c
+msgid "color redundant metadata from previous line differently"
+msgstr "meiteashonraí iomarcach dath ó líne roimhe seo ar bheal"
+
+#: builtin/blame.c
+msgid "color lines by age"
+msgstr "línte datha de réir aois"
+
+#: builtin/blame.c
+msgid "spend extra cycles to find better match"
+msgstr "timthriallta breise a chaitheamh chun meaitseáil níos fearr"
+
+#: builtin/blame.c
+msgid "use revisions from <file> instead of calling git-rev-list"
+msgstr "athbhreithnithe a úsáid as in <file>ionad glaoch ar git-rev-list"
+
+#: builtin/blame.c
+msgid "use <file>'s contents as the final image"
+msgstr "úsáid <file>ábhar mar an íomhá deiridh"
+
+#: builtin/blame.c
+msgid "score"
+msgstr "scór"
+
+#: builtin/blame.c
+msgid "find line copies within and across files"
+msgstr "faigh cóipeanna líne laistigh de chomhaid agus trasna"
+
+#: builtin/blame.c
+msgid "find line movements within and across files"
+msgstr "faigh gluaiseachtaí líne laistigh de chomhaid agus trasna"
+
+#: builtin/blame.c
+msgid "range"
+msgstr "raon"
+
+#: builtin/blame.c
+msgid "process only line range <start>,<end> or function :<funcname>"
+msgstr "ach raon líne, nó feidh <start>m a <end>phróiseáil: <funcname>"
+
+#: builtin/blame.c
+msgid "--progress can't be used with --incremental or porcelain formats"
+msgstr "Ní féidir --progress a úsáid le formáidí --incremental nó poircealláin"
+
+#. TRANSLATORS: This string is used to tell us the
+#. maximum display width for a relative timestamp in
+#. "git blame" output. For C locale, "4 years, 11
+#. months ago", which takes 22 places, is the longest
+#. among various forms of relative timestamps, but
+#. your language may need more or fewer display
+#. columns.
+#.
+#: builtin/blame.c
+msgid "4 years, 11 months ago"
+msgstr "4 bliana, 11 mhí ó shin"
+
+#: builtin/blame.c
+#, c-format
+msgid "file %s has only %lu line"
+msgid_plural "file %s has only %lu lines"
+msgstr[0] "comhad %s níl ach %lu líne"
+msgstr[1] "comhad %s níl ach %lu línte"
+msgstr[2] "comhad %s níl ach %lu línte"
+
+#: builtin/blame.c
+msgid "Blaming lines"
+msgstr "An milleán ar línte"
+
+#: builtin/branch.c
+msgid "git branch [<options>] [-r | -a] [--merged] [--no-merged]"
+msgstr "git branch [<options>] [-r | -a] [--merged] [--no-merged]"
+
+#: builtin/branch.c
+msgid ""
+"git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-"
+"point>]"
+msgstr ""
+"git branch [<options>] [-f] [--recurse-submodules] <branch-name> [<start-"
+"point>]"
+
+#: builtin/branch.c
+msgid "git branch [<options>] [-l] [<pattern>...]"
+msgstr "git branch [<options>] [-l] [<pattern>...]"
+
+#: builtin/branch.c
+msgid "git branch [<options>] [-r] (-d | -D) <branch-name>..."
+msgstr "git branch [<options>] [-r] (-d | -D) <branch-name>..."
+
+#: builtin/branch.c
+msgid "git branch [<options>] (-m | -M) [<old-branch>] <new-branch>"
+msgstr "git branch [<options>] (-m | -M) [<old-branch>] <new-branch>"
+
+#: builtin/branch.c
+msgid "git branch [<options>] (-c | -C) [<old-branch>] <new-branch>"
+msgstr "git branch [<options>] (-c | -C) [<old-branch>] <new-branch>"
+
+#: builtin/branch.c
+msgid "git branch [<options>] [-r | -a] [--points-at]"
+msgstr "git branch [<options>] [-r | -a] [--points-at]"
+
+#: builtin/branch.c
+msgid "git branch [<options>] [-r | -a] [--format]"
+msgstr "git branch [<options>] [-r | -a] [--format]"
+
+#: builtin/branch.c
+#, c-format
+msgid ""
+"deleting branch '%s' that has been merged to\n"
+" '%s', but not yet merged to HEAD"
+msgstr ""
+"brainse '%s' a bhfuil cumasc orthu a scriosadh\n"
+" '%s', ach níor chumasc le HEAD go fóill"
+
+#: builtin/branch.c
+#, c-format
+msgid ""
+"not deleting branch '%s' that is not yet merged to\n"
+" '%s', even though it is merged to HEAD"
+msgstr ""
+"gan brainse '%s' a scriosadh nach bhfuil cumasc fós leis\n"
+" '%s', cé go ndéantar é a chumasc le HEAD"
+
+#: builtin/branch.c
+#, c-format
+msgid "couldn't look up commit object for '%s'"
+msgstr "ní raibh in ann réad tiomanta a lorg suas le haghaidh '%s'"
+
+#: builtin/branch.c
+#, c-format
+msgid "the branch '%s' is not fully merged"
+msgstr "níl an brainse '%s' cumaisc go hiomlán"
+
+#: builtin/branch.c
+#, c-format
+msgid "If you are sure you want to delete it, run 'git branch -D %s'"
+msgstr ""
+"Má tá tú cinnte gur mhaith leat é a scriosadh, reáchtáil 'git branch -D %s'"
+
+#: builtin/branch.c
+msgid "update of config-file failed"
+msgstr "theip ar nuashonrú comhad config-file"
+
+#: builtin/branch.c
+msgid "cannot use -a with -d"
+msgstr "ní féidir -a a úsáid le -d"
+
+#: builtin/branch.c
+#, c-format
+msgid "cannot delete branch '%s' used by worktree at '%s'"
+msgstr "ní féidir brainse '%s' a úsáideann crann oibre ag '%s' a scriosadh"
+
+#: builtin/branch.c
+#, c-format
+msgid "remote-tracking branch '%s' not found"
+msgstr "níor aimsíodh brainse cianrianaithe '%s'"
+
+#: builtin/branch.c
+#, c-format
+msgid ""
+"branch '%s' not found.\n"
+"Did you forget --remote?"
+msgstr ""
+"níor aimsíodh brainse '%s'.\n"
+"Ar ndearna tú dearmad ar --remote?"
+
+#: builtin/branch.c
+#, c-format
+msgid "branch '%s' not found"
+msgstr "níor aimsíodh brainse '%s'"
+
+#: builtin/branch.c
+#, c-format
+msgid "Deleted remote-tracking branch %s (was %s).\n"
+msgstr "Brainse cianrianaithe scriosta %s (bhí %s).\n"
+
+#: builtin/branch.c
+#, c-format
+msgid "Deleted branch %s (was %s).\n"
+msgstr "Brainse %s scriosta (%s ba é).\n"
+
+#: builtin/branch.c builtin/tag.c
+msgid "unable to parse format string"
+msgstr "in ann teaghrán formáide a pháirseáil"
+
+#: builtin/branch.c
+msgid "could not resolve HEAD"
+msgstr "ní fhéadfaí HEAD a réiteach"
+
+#: builtin/branch.c
+#, c-format
+msgid "HEAD (%s) points outside of refs/heads/"
+msgstr "Pointí HEAD (%s) lasmuigh de refs/heads/"
+
+#: builtin/branch.c
+#, c-format
+msgid "branch %s is being rebased at %s"
+msgstr "tá brainse %s á athbhunú ag %s"
+
+#: builtin/branch.c
+#, c-format
+msgid "branch %s is being bisected at %s"
+msgstr "tá brainse %s á dhíscaoileadh ag %s"
+
+#: builtin/branch.c
+#, c-format
+msgid "HEAD of working tree %s is not updated"
+msgstr "Níl CEANN an chrainn oibre %s nuashonraithe"
+
+#: builtin/branch.c
+#, c-format
+msgid "invalid branch name: '%s'"
+msgstr "ainm brainse neamhbhailí: '%s'"
+
+#: builtin/branch.c
+#, c-format
+msgid "no commit on branch '%s' yet"
+msgstr "níl aon gealltanas ar bhrainse '%s' go fóill"
+
+#: builtin/branch.c
+#, c-format
+msgid "no branch named '%s'"
+msgstr "níl aon bhrainse darb ainm '%s'"
+
+#: builtin/branch.c
+msgid "branch rename failed"
+msgstr "theip ar athainmniú brainse"
+
+#: builtin/branch.c
+msgid "branch copy failed"
+msgstr "theip ar chóip brainse"
+
+#: builtin/branch.c
+#, c-format
+msgid "created a copy of a misnamed branch '%s'"
+msgstr "chruthaigh cóip de bhrainse mí-ainmnithe '%s'"
+
+#: builtin/branch.c
+#, c-format
+msgid "renamed a misnamed branch '%s' away"
+msgstr "athainmnigh brainse mí-ainmnithe '%s' ar shiúl"
+
+#: builtin/branch.c
+#, c-format
+msgid "branch renamed to %s, but HEAD is not updated"
+msgstr "athainmníodh brainse go %s, ach níl HEAD nuashonraithe"
+
+#: builtin/branch.c
+msgid "branch is renamed, but update of config-file failed"
+msgstr "athainmnítear brainse, ach theip ar nuashonrú ar chomhad config-file"
+
+#: builtin/branch.c
+msgid "branch is copied, but update of config-file failed"
+msgstr "cóipeáiltear brainse, ach theip ar nuashonrú comhad config-file"
+
+#: builtin/branch.c
+#, c-format
+msgid ""
+"Please edit the description for the branch\n"
+" %s\n"
+"Lines starting with '%s' will be stripped.\n"
+msgstr ""
+"Cuir an tuairisc don bhrainse in eagar\n"
+" %s\n"
+"Déanfar línte a thosaíonn le '%s' a scriosadh.\n"
+
+#: builtin/branch.c
+msgid "Generic options"
+msgstr "Roghanna cineálacha"
+
+#: builtin/branch.c
+msgid "show hash and subject, give twice for upstream branch"
+msgstr "taispeáin hash agus ábhar, tabhair faoi dhó don bhrainse suas srutha"
+
+#: builtin/branch.c
+msgid "suppress informational messages"
+msgstr "teachtaireachtaí faisnéise a chur"
+
+#: builtin/branch.c builtin/checkout.c builtin/submodule--helper.c
+msgid "set branch tracking configuration"
+msgstr "cumraíocht rianaithe brainse a shoc"
+
+#: builtin/branch.c
+msgid "do not use"
+msgstr "ná húsáid"
+
+#: builtin/branch.c
+msgid "upstream"
+msgstr "suas sruth"
+
+#: builtin/branch.c
+msgid "change the upstream info"
+msgstr "athraigh an fhaisnéis suas sruth"
+
+#: builtin/branch.c
+msgid "unset the upstream info"
+msgstr "díshocraigh an fhaisnéis suas sruth"
+
+#: builtin/branch.c
+msgid "use colored output"
+msgstr "úsáid aschur daite"
+
+#: builtin/branch.c
+msgid "act on remote-tracking branches"
+msgstr "gníomhú ar bhrainsí cianrianaithe"
+
+#: builtin/branch.c
+msgid "print only branches that contain the commit"
+msgstr "ach brainsí a phriontáil ina bhfuil an tiomantas"
+
+#: builtin/branch.c
+msgid "print only branches that don't contain the commit"
+msgstr "ach brainsí a phriontáil nach bhfuil an tiomantas"
+
+#: builtin/branch.c
+msgid "Specific git-branch actions:"
+msgstr "Gníomhartha sonracha git-branch:"
+
+#: builtin/branch.c
+msgid "list both remote-tracking and local branches"
+msgstr "liostáil brainsí cianrianaithe agus áitiúla araon"
+
+#: builtin/branch.c
+msgid "delete fully merged branch"
+msgstr "scrios brainse lánchumaisc"
+
+#: builtin/branch.c
+msgid "delete branch (even if not merged)"
+msgstr "brainse a scriosadh (fiú mura bhfuil sé cumasaithe)"
+
+#: builtin/branch.c
+msgid "move/rename a branch and its reflog"
+msgstr "brainse a bhogadh/athainmniú agus a athainmniú"
+
+#: builtin/branch.c
+msgid "move/rename a branch, even if target exists"
+msgstr "brainse a bhogadh/athainmniú, fiú má tá sprioc ann"
+
+#: builtin/branch.c builtin/for-each-ref.c builtin/tag.c
+msgid "do not output a newline after empty formatted refs"
+msgstr "ná aschur líne nua tar éis aifeanna formáidithe folamh"
+
+#: builtin/branch.c
+msgid "copy a branch and its reflog"
+msgstr "cóipeáil brainse agus a reflog"
+
+#: builtin/branch.c
+msgid "copy a branch, even if target exists"
+msgstr "cóipeáil brainse, fiú má tá sprioc ann"
+
+#: builtin/branch.c
+msgid "list branch names"
+msgstr "liosta ainmneacha brainse"
+
+#: builtin/branch.c
+msgid "show current branch name"
+msgstr "taispeáin ainm brainse reatha"
+
+#: builtin/branch.c builtin/submodule--helper.c
+msgid "create the branch's reflog"
+msgstr "athbhreithniú na brainse a chruthú"
+
+#: builtin/branch.c
+msgid "edit the description for the branch"
+msgstr "cuir an tuairisc don bhrainse a chur in eagar"
+
+#: builtin/branch.c
+msgid "force creation, move/rename, deletion"
+msgstr "cruthú fórsa, gluaise/athainmniú, scriosadh"
+
+#: builtin/branch.c
+msgid "print only branches that are merged"
+msgstr "ach brainsí a chumasc a phriontáil"
+
+#: builtin/branch.c
+msgid "print only branches that are not merged"
+msgstr "ach brainsí nach ndéantar cumasc a phriontáil"
+
+#: builtin/branch.c
+msgid "list branches in columns"
+msgstr "liostáil brainsí i gcolúin"
+
+#: builtin/branch.c builtin/for-each-ref.c builtin/notes.c builtin/tag.c
+msgid "object"
+msgstr "réad"
+
+#: builtin/branch.c
+msgid "print only branches of the object"
+msgstr "ach brainsí den réad a phriontáil"
+
+#: builtin/branch.c builtin/for-each-ref.c builtin/tag.c
+msgid "sorting and filtering are case insensitive"
+msgstr "tá sórtáil agus scagadh neamh-íogair ó thaobh cásanna de"
+
+#: builtin/branch.c builtin/ls-files.c
+msgid "recurse through submodules"
+msgstr "athshlánú trí fho-mhodúil"
+
+#: builtin/branch.c builtin/for-each-ref.c builtin/ls-files.c builtin/ls-tree.c
+#: builtin/tag.c builtin/verify-tag.c
+msgid "format to use for the output"
+msgstr "formáid le húsáid don aschur"
+
+#: builtin/branch.c
+msgid "failed to resolve HEAD as a valid ref"
+msgstr "theip ar HEAD a réiteach mar thagartha bailí"
+
+#: builtin/branch.c builtin/clone.c
+msgid "HEAD not found below refs/heads!"
+msgstr "Ní fhaightear CEAD thíos na refs/heads!"
+
+#: builtin/branch.c
+msgid ""
+"branch with --recurse-submodules can only be used if "
+"submodule.propagateBranches is enabled"
+msgstr ""
+"ní féidir brainse le --recurse-submodules a úsáid ach amháin má tá "
+"submodule.propagateBranches cumasaithe"
+
+#: builtin/branch.c
+msgid "--recurse-submodules can only be used to create branches"
+msgstr "Ní féidir --recurse-submodules a úsáid ach chun brainsí a chruthú"
+
+#: builtin/branch.c
+msgid "branch name required"
+msgstr "ainm brainse ag teastáil"
+
+#: builtin/branch.c
+msgid "cannot give description to detached HEAD"
+msgstr "ní féidir cur síos a thabhairt ar HEAD scoite"
+
+#: builtin/branch.c
+msgid "cannot edit description of more than one branch"
+msgstr "ní féidir cur síos ar níos mó ná brainse amháin a chur in eagar"
+
+#: builtin/branch.c
+msgid "cannot copy the current branch while not on any"
+msgstr "ní féidir leis an mbrainse reatha a chóipeáil cé nach bhfuil ar aon"
+
+#: builtin/branch.c
+msgid "cannot rename the current branch while not on any"
+msgstr "ní féidir leis an mbrainse reatha a athainmniú cé nach bhfuil ar aon"
+
+#: builtin/branch.c
+msgid "too many branches for a copy operation"
+msgstr "an iomarca brainsí le haghaidh oibríocht cóipeála"
+
+#: builtin/branch.c
+msgid "too many arguments for a rename operation"
+msgstr "an iomarca argóintí maidir le hoibríocht athainmnithe"
+
+#: builtin/branch.c
+msgid "too many arguments to set new upstream"
+msgstr "an iomarca argóintí chun suas an sruth nua a shocrú"
+
+#: builtin/branch.c
+#, c-format
+msgid ""
+"could not set upstream of HEAD to %s when it does not point to any branch"
+msgstr ""
+"ní fhéadfaí suas sruth de HEAD a shocrú go %s nuair nach dtugann sé in iúl "
+"go dtí aon bhrainse"
+
+#: builtin/branch.c
+#, c-format
+msgid "no such branch '%s'"
+msgstr "níl brainse den sórt sin '%s'"
+
+#: builtin/branch.c
+#, c-format
+msgid "branch '%s' does not exist"
+msgstr "níl brainse '%s' ann"
+
+#: builtin/branch.c
+msgid "too many arguments to unset upstream"
+msgstr "an iomarca argóintí le díshocrú suas an sruth"
+
+#: builtin/branch.c
+msgid "could not unset upstream of HEAD when it does not point to any branch"
+msgstr ""
+"ní fhéadfaí a dhíshuiteáil suas an sruth den HEAD nuair nach dtugann sé in "
+"iúl d'aon bhrainse"
+
+#: builtin/branch.c
+#, c-format
+msgid "branch '%s' has no upstream information"
+msgstr "níl aon fhaisnéis suas sruth ag brainse '%s'"
+
+#: builtin/branch.c
+msgid ""
+"the -a, and -r, options to 'git branch' do not take a branch name.\n"
+"Did you mean to use: -a|-r --list <pattern>?"
+msgstr ""
+"ní ghlacann na roghanna -a, agus -r, le 'git branch' ainm brainse.\n"
+"<pattern>An raibh sé i gceist agat úsáid a bhaint as: -a|-r --list?"
+
+#: builtin/branch.c
+msgid ""
+"the '--set-upstream' option is no longer supported. Please use '--track' or "
+"'--set-upstream-to' instead"
+msgstr ""
+"ní thacaítear leis an rogha '--set-upstream' a thuilleadh. Úsáid '--track' "
+"nó '--set-upstream-to' ina ionad"
+
+#: builtin/bugreport.c
+msgid "git version:\n"
+msgstr "leagan git:\n"
+
+#: builtin/bugreport.c
+msgid "compiler info: "
+msgstr "eolas tiomsaitheora: "
+
+#: builtin/bugreport.c
+msgid "libc info: "
+msgstr "eolas libc: "
+
+#: builtin/bugreport.c
+msgid "not run from a git repository - no hooks to show\n"
+msgstr "gan rith ó stór git - gan aon chrúcaí le taispeáint\n"
+
+#: builtin/bugreport.c
+msgid ""
+"git bugreport [(-o | --output-directory) <path>]\n"
+" [(-s | --suffix) <format> | --no-suffix]\n"
+" [--diagnose[=<mode>]]"
+msgstr ""
+"<path>git bugreport [(-o | --output-directory)]\n"
+" <format>[(-s | --iarmhír) | --no-iarmhír]\n"
+" [--diagnóis [=<mode>]]"
+
+#: builtin/bugreport.c
+msgid ""
+"Thank you for filling out a Git bug report!\n"
+"Please answer the following questions to help us understand your issue.\n"
+"\n"
+"What did you do before the bug happened? (Steps to reproduce your issue)\n"
+"\n"
+"What did you expect to happen? (Expected behavior)\n"
+"\n"
+"What happened instead? (Actual behavior)\n"
+"\n"
+"What's different between what you expected and what actually happened?\n"
+"\n"
+"Anything else you want to add:\n"
+"\n"
+"Please review the rest of the bug report below.\n"
+"You can delete any lines you don't wish to share.\n"
+msgstr ""
+"Go raibh maith agat as tuarascáil fabht Git a líonadh!\n"
+"Freagair na ceisteanna seo a leanas le do thoil chun cabhrú linn do cheist a "
+"thuiscint\n"
+"\n"
+"Cad a rinne tú sular tharla an fabht? (Céimeanna chun d'eisiúint a "
+"atáirgeadh)\n"
+"\n"
+"Cad a bhí tú ag súil go dtarlódh? (Iompar ag súil leis)\n"
+"\n"
+"Cad a tharla ina ionad sin? (Iompar iarbhír)\n"
+"\n"
+"Cad atá difriúil idir an méid a bhí súil agat leis agus cad a tharla i "
+"ndáiríre\n"
+"\n"
+"Aon rud eile a theastaíonn uait a chur leis:\n"
+"\n"
+"Déan athbhreithniú ar an chuid eile den tuarascáil fabht thíos.\n"
+"Is féidir leat aon línte nach dteastaíonn uait a roinnt a scriosadh.\n"
+
+#: builtin/bugreport.c builtin/commit.c builtin/fast-export.c builtin/rebase.c
+#: parse-options.h
+msgid "mode"
+msgstr "mód"
+
+#: builtin/bugreport.c
+msgid ""
+"create an additional zip archive of detailed diagnostics (default 'stats')"
+msgstr ""
+"cruthú cartlann zip breise de dhiagnóiseach mionsonraithe ('stats' "
+"réamhshocraithe)"
+
+#: builtin/bugreport.c
+msgid "specify a destination for the bugreport file(s)"
+msgstr "sonraigh ceann scríbe don chomhad (í) bugreport"
+
+#: builtin/bugreport.c
+msgid "specify a strftime format suffix for the filename(s)"
+msgstr "sonraigh iarmhír formáid strftime don ainm (í) comhaid"
+
+#: builtin/bugreport.c
+#, c-format
+msgid "unknown argument `%s'"
+msgstr "argóint anaithnid `%s'"
+
+#: builtin/bugreport.c builtin/diagnose.c
+#, c-format
+msgid "could not create leading directories for '%s'"
+msgstr "ní fhéadfaí eolairí tosaigh a chruthú do '%s'"
+
+#: builtin/bugreport.c builtin/diagnose.c
+#, c-format
+msgid "unable to create diagnostics archive %s"
+msgstr "nach féidir cartlann diagnóiseach %s a chruthú"
+
+#: builtin/bugreport.c
+msgid "System Info"
+msgstr "Eolas Córais"
+
+#: builtin/bugreport.c
+msgid "Enabled Hooks"
+msgstr "Crúcaí Cumasaithe"
+
+#: builtin/bugreport.c
+#, c-format
+msgid "unable to write to %s"
+msgstr "nach féidir a scríobh chuig %s"
+
+#: builtin/bugreport.c
+#, c-format
+msgid "Created new report at '%s'.\n"
+msgstr "Cruthaíodh tuarascáil nua ag '%s'.\n"
+
+#: builtin/bundle.c
+msgid ""
+"git bundle create [-q | --quiet | --progress]\n"
+" [--version=<version>] <file> <git-rev-list-args>"
+msgstr ""
+"cruthaigh bonn git [-q | --quiet | --progress]\n"
+" <version>[--leagan =] <file><git-rev-list-args>"
+
+#: builtin/bundle.c
+msgid "git bundle verify [-q | --quiet] <file>"
+msgstr "fíorú beartán git [-q | --quiet] <file>"
+
+#: builtin/bundle.c
+msgid "git bundle list-heads <file> [<refname>...]"
+msgstr "<refname>ceannairí liosta bonn git <file>[...]"
+
+#: builtin/bundle.c
+msgid "git bundle unbundle [--progress] <file> [<refname>...]"
+msgstr "<refname>díbhuntáil bonn git [--progress] <file>[...]"
+
+#: builtin/bundle.c
+msgid "need a <file> argument"
+msgstr "teastaíonn ar <file>góint"
+
+#: builtin/bundle.c builtin/pack-objects.c
+msgid "do not show progress meter"
+msgstr "ná taispeáin méadar dul chun cinn"
+
+#: builtin/bundle.c builtin/pack-objects.c
+msgid "show progress meter"
+msgstr "taispeáin méadar dul chun cinn"
+
+#: builtin/bundle.c
+msgid "historical; same as --progress"
+msgstr "stairiúil; mar an gcéanna le --progress"
+
+#: builtin/bundle.c
+msgid "historical; does nothing"
+msgstr "stairiúil; ní dhéanann aon rud"
+
+#: builtin/bundle.c
+msgid "specify bundle format version"
+msgstr "leagan formáid beartán a shonrú"
+
+#: builtin/bundle.c
+msgid "Need a repository to create a bundle."
+msgstr "Teastaíonn stór chun beartán a chruthú."
+
+#: builtin/bundle.c
+msgid "do not show bundle details"
+msgstr "ná taispeáin sonraí beartán"
+
+#: builtin/bundle.c bundle.c
+msgid "need a repository to verify a bundle"
+msgstr "teastaíonn stór chun beartán a fhíorú"
+
+#: builtin/bundle.c
+#, c-format
+msgid "%s is okay\n"
+msgstr "%s ceart go leor\n"
+
+#: builtin/bundle.c
+msgid "Need a repository to unbundle."
+msgstr "Teastaíonn stór chun dícheangail a dhícheangal."
+
+#: builtin/bundle.c
+msgid "Unbundling objects"
+msgstr "Rudaí a dhícheangal"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "cannot read object %s '%s'"
+msgstr "ní féidir réad %s '%s' a léamh"
+
+#: builtin/cat-file.c
+msgid "flush is only for --buffer mode"
+msgstr "níl sruth ach le haghaidh mód --buffer"
+
+#: builtin/cat-file.c
+msgid "empty command in input"
+msgstr "ordú folamh san ionchur"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "whitespace before command: '%s'"
+msgstr "spás bán roimh an ordú: '%s'"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "%s requires arguments"
+msgstr "Teastaíonn argóintí %s"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "%s takes no arguments"
+msgstr "Ní ghlacann %s aon argóintí"
+
+#: builtin/cat-file.c
+msgid "only one batch option may be specified"
+msgstr "ní féidir ach rogha baisc amháin a shonrú"
+
+#: builtin/cat-file.c
+msgid "git cat-file <type> <object>"
+msgstr "git cat-file <type> <object>"
+
+#: builtin/cat-file.c
+msgid "git cat-file (-e | -p | -t | -s) <object>"
+msgstr "git cat-file (-e | -p | -t | -s) <réad>"
+
+#: builtin/cat-file.c
+msgid ""
+"git cat-file (--textconv | --filters)\n"
+" [<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]"
+msgstr ""
+"git cat-file (--textconv | --filters)\n"
+" [<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]"
+
+#: builtin/cat-file.c
+msgid ""
+"git cat-file (--batch | --batch-check | --batch-command) [--batch-all-"
+"objects]\n"
+" [--buffer] [--follow-symlinks] [--unordered]\n"
+" [--textconv | --filters] [-Z]"
+msgstr ""
+"git cat-file (--batch | --batch-check | --batch-command) [--batch-all-"
+"objects]\n"
+" [--buffer] [--follow-symlinks] [--unordered]\n"
+" [--textconv | --filters] [-Z]"
+
+#: builtin/cat-file.c
+msgid "Check object existence or emit object contents"
+msgstr "Seiceáil go bhfuil réad ann nó astaigh ábhar réad"
+
+#: builtin/cat-file.c
+msgid "check if <object> exists"
+msgstr "seiceáil an bhfuil <object> ann"
+
+#: builtin/cat-file.c
+msgid "pretty-print <object> content"
+msgstr "<object> ábhar priontáil álainn"
+
+#: builtin/cat-file.c
+msgid "Emit [broken] object attributes"
+msgstr "Easaigh tréithe réada [briste]"
+
+#: builtin/cat-file.c
+msgid "show object type (one of 'blob', 'tree', 'commit', 'tag', ...)"
+msgstr ""
+"taispeáint cineál réad (ceann de 'blob', 'crann', 'tiomantas', 'tag',...)"
+
+#: builtin/cat-file.c
+msgid "show object size"
+msgstr "taispeáin méid an réad"
+
+#: builtin/cat-file.c builtin/log.c
+msgid "use mail map file"
+msgstr "úsáid comhad léarscáil ríomhphoist"
+
+#: builtin/cat-file.c
+msgid "Batch objects requested on stdin (or --batch-all-objects)"
+msgstr "Baisc rudaí a iarrtar ar stdin (nó --batch-all-objects)"
+
+#: builtin/cat-file.c
+msgid "show full <object> or <rev> contents"
+msgstr "taispeáin iomlán <object>nó á <rev>bhar"
+
+#: builtin/cat-file.c
+msgid "like --batch, but don't emit <contents>"
+msgstr "cosúil le --batch, ach ná astaíonn <contents>"
+
+#: builtin/cat-file.c
+msgid "stdin is NUL-terminated"
+msgstr "tá stdin foirceanta ag NUL"
+
+#: builtin/cat-file.c
+msgid "stdin and stdout is NUL-terminated"
+msgstr "tá stdin agus stdout foirceannta NUL"
+
+#: builtin/cat-file.c
+msgid "read commands from stdin"
+msgstr "léigh orduithe ó stdin"
+
+#: builtin/cat-file.c
+msgid "with --batch[-check]: ignores stdin, batches all known objects"
+msgstr ""
+"le --batch [-check]: déanann neamhaird ar stdin, déanann baisceanna gach rud "
+"aitheanta"
+
+#: builtin/cat-file.c
+msgid "Change or optimize batch output"
+msgstr "Athraigh nó barrfheabhsú aschur baisc"
+
+#: builtin/cat-file.c
+msgid "buffer --batch output"
+msgstr "maolán --batch baisc"
+
+#: builtin/cat-file.c
+msgid "follow in-tree symlinks"
+msgstr "lean naisc shiombailí in-chrann"
+
+#: builtin/cat-file.c
+msgid "do not order objects before emitting them"
+msgstr "ná ordaigh rudaí sula n-astaíonn tú iad"
+
+#: builtin/cat-file.c
+msgid ""
+"Emit object (blob or tree) with conversion or filter (stand-alone, or with "
+"batch)"
+msgstr ""
+"Rud a astaíonn (blob nó crann) le comhshó nó scagaire (neamhspleách, nó le "
+"baisc)"
+
+#: builtin/cat-file.c
+msgid "run textconv on object's content"
+msgstr "reáchtáil textconv ar ábhar an réad"
+
+#: builtin/cat-file.c
+msgid "run filters on object's content"
+msgstr "reáchtáil scagairí ar ábhar an rud"
+
+#: builtin/cat-file.c
+msgid "blob|tree"
+msgstr "blob | crann"
+
+#: builtin/cat-file.c
+msgid "use a <path> for (--textconv | --filters); Not with 'batch'"
+msgstr "úsáid a le <path>haghaidh (--textconv | --filters); Ní le 'baisc'"
+
+#: builtin/cat-file.c
+msgid "objects filter only supported in batch mode"
+msgstr "ní thacaítear scagaire rudaí ach i mód baisc"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "objects filter not supported: '%s'"
+msgstr "ní thacaítear le scagaire réadanna: '%s'"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "'%s=<%s>' needs '%s' or '%s'"
+msgstr "'%s=<%s>' teastaíonn '%s' nó '%s'"
+
+#: builtin/cat-file.c
+msgid "path|tree-ish"
+msgstr "cosán | crann-ish"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "'%s' requires a batch mode"
+msgstr "Éilíonn '%s' modh baisc"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "'-%c' is incompatible with batch mode"
+msgstr "Níl '-%c' comhoiriúnach le mód baisc"
+
+#: builtin/cat-file.c
+msgid "batch modes take no arguments"
+msgstr "ní ghlacann modhanna baisc aon argóintí"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "<rev> required with '%s'"
+msgstr "<rev>ag teastáil le '%s'"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "<object> required with '-%c'"
+msgstr "<object>ag teastáil le '-%c'"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "only two arguments allowed in <type> <object> mode, not %d"
+msgstr "ní cheadaítear ach dhá argóint <type><object>sa mhodh, ní %d"
+
+#: builtin/check-attr.c
+msgid ""
+"git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] "
+"<pathname>..."
+msgstr ""
+"git check-attr [--source <tree-ish>] [-a | --all | <attr>...] [--] "
+"<pathname>..."
+
+#: builtin/check-attr.c
+msgid ""
+"git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]"
+msgstr ""
+"git check-attr --stdin [-z] [--source <tree-ish>] [-a | --all | <attr>...]"
+
+#: builtin/check-attr.c
+msgid "report all attributes set on file"
+msgstr "tuairisc a thabhairt ar gach tréithe atá leagtha síos"
+
+#: builtin/check-attr.c
+msgid "use .gitattributes only from the index"
+msgstr "bain úsáid as .gitattributs ach ón innéacs"
+
+#: builtin/check-attr.c builtin/check-ignore.c builtin/hash-object.c
+msgid "read file names from stdin"
+msgstr "léigh ainmneacha comhaid ó stdin"
+
+#: builtin/check-attr.c builtin/check-ignore.c
+msgid "terminate input and output records by a NUL character"
+msgstr "taifid ionchuir agus aschuir a fhoirceannadh le carachtar NUL"
+
+#: builtin/check-attr.c
+msgid "<tree-ish>"
+msgstr "<tree-ish>"
+
+#: builtin/check-attr.c
+msgid "which tree-ish to check attributes at"
+msgstr "cén crainn le tréithe a sheiceáil ag"
+
+#: builtin/check-ignore.c builtin/checkout.c builtin/gc.c builtin/worktree.c
+msgid "suppress progress reporting"
+msgstr "cur chun cinn tuairiscithe"
+
+#: builtin/check-ignore.c
+msgid "show non-matching input paths"
+msgstr "cosáin ionchuir neamh-mheaitseála"
+
+#: builtin/check-ignore.c
+msgid "ignore index when checking"
+msgstr "neamhaird a dhéanamh ar innéacs agus"
+
+#: builtin/check-ignore.c
+msgid "cannot specify pathnames with --stdin"
+msgstr "ní féidir ainmneacha cosáin a shonrú le --stdin"
+
+#: builtin/check-ignore.c
+msgid "-z only makes sense with --stdin"
+msgstr "Ní dhéanann -z ciall ach le --stdin"
+
+#: builtin/check-ignore.c
+msgid "no path specified"
+msgstr "níl aon chosán sonraithe"
+
+#: builtin/check-ignore.c
+msgid "--quiet is only valid with a single pathname"
+msgstr "Níl --quiet bailí ach le ainm cosán amháin"
+
+#: builtin/check-ignore.c
+msgid "cannot have both --quiet and --verbose"
+msgstr "ní féidir --quiet agus --verbose araon a bheith agat"
+
+#: builtin/check-ignore.c
+msgid "--non-matching is only valid with --verbose"
+msgstr "Níl --non-matching bailí ach le --verbose"
+
+#: builtin/check-mailmap.c
+msgid "git check-mailmap [<options>] <contact>..."
+msgstr "git check-mailmap [<options>] <contact>..."
+
+#: builtin/check-mailmap.c
+msgid "also read contacts from stdin"
+msgstr "léigh teagmhálacha ó stdin freisin"
+
+#: builtin/check-mailmap.c
+msgid "read additional mailmap entries from file"
+msgstr "léigh iontrálacha ríomhphoist breise ón gcomhad"
+
+#: builtin/check-mailmap.c
+msgid "blob"
+msgstr "blob"
+
+#: builtin/check-mailmap.c
+msgid "read additional mailmap entries from blob"
+msgstr "léigh iontrálacha ríomhphoist breise ó blob"
+
+#: builtin/check-mailmap.c
+msgid "no contacts specified"
+msgstr "aon teagmhálacha sonraithe"
+
+#: builtin/checkout--worker.c
+msgid "git checkout--worker [<options>]"
+msgstr "git checkout--worker [<options>]"
+
+#: builtin/checkout--worker.c builtin/checkout-index.c builtin/column.c
+#: builtin/submodule--helper.c builtin/worktree.c
+msgid "string"
+msgstr "teaghrán"
+
+#: builtin/checkout--worker.c builtin/checkout-index.c
+msgid "when creating files, prepend <string>"
+msgstr "agus comhaid á gcruthú agat, déan iarracht <string>"
+
+#: builtin/checkout-index.c
+msgid "git checkout-index [<options>] [--] [<file>...]"
+msgstr "git checkout-index [<options>] [--] [<file>...]"
+
+#: builtin/checkout-index.c
+msgid "stage should be between 1 and 3 or all"
+msgstr "ba chóir go mbeadh an chéim idir 1 agus 3 nó gach ceann"
+
+#: builtin/checkout-index.c
+msgid "check out all files in the index"
+msgstr "seiceáil gach comhad san innéacs"
+
+#: builtin/checkout-index.c
+msgid "do not skip files with skip-worktree set"
+msgstr "ná scipeáil comhaid le tacar scip-work tree"
+
+#: builtin/checkout-index.c
+msgid "force overwrite of existing files"
+msgstr "athscríobh fórsa na gcomhaid atá ann cheana"
+
+#: builtin/checkout-index.c
+msgid "no warning for existing files and files not in index"
+msgstr ""
+"gan aon rabhadh maidir le comhaid agus comhaid atá ann cheana nach bhfuil "
+"san innéacs"
+
+#: builtin/checkout-index.c
+msgid "don't checkout new files"
+msgstr "ná seiceáil comhaid nua"
+
+#: builtin/checkout-index.c
+msgid "update stat information in the index file"
+msgstr "faisnéis stat a nuashonrú sa chomhad innéacs"
+
+#: builtin/checkout-index.c
+msgid "read list of paths from the standard input"
+msgstr "léigh liosta na gcosáin ón ionchur caighdeánach"
+
+#: builtin/checkout-index.c
+msgid "write the content to temporary files"
+msgstr "scríobh an t-ábhar chuig comhaid sealadacha"
+
+#: builtin/checkout-index.c
+msgid "copy out the files from named stage"
+msgstr "cóipeáil amach na comhaid ón gcéim ainmnithe"
+
+#: builtin/checkout.c
+msgid "git checkout [<options>] <branch>"
+msgstr "git checkout [<roghanna>] <brainse>"
+
+#: builtin/checkout.c
+msgid "git checkout [<options>] [<branch>] -- <file>..."
+msgstr "git checkout [<roghanna>] [<brainse>] --<comhad>..."
+
+#: builtin/checkout.c
+msgid "git switch [<options>] [<branch>]"
+msgstr "git switch [<roghanna>] [<brainse>]"
+
+#: builtin/checkout.c
+msgid "git restore [<options>] [--source=<branch>] <file>..."
+msgstr "git restore [<roghanna>] [--source=<brainse>] <comhad>..."
+
+#: builtin/checkout.c
+#, c-format
+msgid "path '%s' does not have our version"
+msgstr "níl ár leagan ag cosán '%s'"
+
+#: builtin/checkout.c
+#, c-format
+msgid "path '%s' does not have their version"
+msgstr "níl a leagan ag cosán '%s'"
+
+#: builtin/checkout.c
+#, c-format
+msgid "path '%s' does not have all necessary versions"
+msgstr "níl gach leagan riachtanach ag cosán '%s'"
+
+#: builtin/checkout.c
+#, c-format
+msgid "path '%s' does not have necessary versions"
+msgstr "níl leaganacha riachtanacha ag cosán '%s'"
+
+#: builtin/checkout.c
+#, c-format
+msgid "path '%s': cannot merge"
+msgstr "cosán '%s': ní féidir a chumasc"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Unable to add merge result for '%s'"
+msgstr "Ní féidir toradh cumaisc a chur le haghaidh '%s'"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Recreated %d merge conflict"
+msgid_plural "Recreated %d merge conflicts"
+msgstr[0] "Athchruthaíodh %d coimhlint chumasc"
+msgstr[1] "Athchruthaíodh %d coinbhleachtaí chumaisc"
+msgstr[2] "Athchruthaíodh %d coinbhleachtaí chumaisc"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Updated %d path from %s"
+msgid_plural "Updated %d paths from %s"
+msgstr[0] "Nuashonraíodh %d cosán ó %s"
+msgstr[1] "Nuashonraíodh %d cosán ó %s"
+msgstr[2] "Nuashonraíodh %d cosán ó %s"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Updated %d path from the index"
+msgid_plural "Updated %d paths from the index"
+msgstr[0] "Nuashonraíodh %d cosán ón innéacs"
+msgstr[1] "Nuashonraíodh %d cosán ón innéacs"
+msgstr[2] "Nuashonraíodh %d cosán ón innéacs"
+
+#: builtin/checkout.c
+#, c-format
+msgid "'%s' cannot be used with updating paths"
+msgstr "Ní féidir '%s' a úsáid le cosáin a nuashonrú"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Cannot update paths and switch to branch '%s' at the same time."
+msgstr ""
+"Ní féidir cosáin a nuashonrú agus aistriú go brainse '%s' ag an am céanna."
+
+#: builtin/checkout.c
+#, c-format
+msgid "neither '%s' or '%s' is specified"
+msgstr "níl '%s' ná '%s' sonraithe"
+
+#: builtin/checkout.c
+#, c-format
+msgid "'%s' must be used when '%s' is not specified"
+msgstr "Ní mór '%s' a úsáid nuair nach sonraítear '%s'"
+
+#: builtin/checkout.c
+#, c-format
+msgid "'%s' or '%s' cannot be used with %s"
+msgstr "Ní féidir '%s' nó '%s' a úsáid le %s"
+
+#: builtin/checkout.c
+#, c-format
+msgid "'%s', '%s', or '%s' cannot be used when checking out of a tree"
+msgstr ""
+"Ní féidir '%s', '%s', nó '%s' a úsáid agus tú ag seiceáil amach as crann"
+
+#: builtin/checkout.c
+#, c-format
+msgid "path '%s' is unmerged"
+msgstr "tá cosán '%s' neamh-chomhcheangailte"
+
+#: builtin/checkout.c builtin/grep.c builtin/merge-tree.c builtin/reset.c
+#: merge-ort.c reset.c sequencer.c tree-walk.c
+#, c-format
+msgid "unable to read tree (%s)"
+msgstr "nach féidir crann a léamh (%s)"
+
+#: builtin/checkout.c
+msgid "you need to resolve your current index first"
+msgstr "ní mór duit d'innéacs reatha a réiteach ar dtús"
+
+#: builtin/checkout.c
+#, c-format
+msgid ""
+"cannot continue with staged changes in the following files:\n"
+"%s"
+msgstr ""
+"ní féidir leanúint ar aghaidh le hathruithe céime sna comhaid seo a leanas:\n"
+"%s"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Can not do reflog for '%s': %s\n"
+msgstr "Ní féidir athbhreithniú a dhéanamh le haghaidh '%s': %s\n"
+
+#: builtin/checkout.c
+msgid "HEAD is now at"
+msgstr "Tá HEAD anois ag"
+
+#: builtin/checkout.c builtin/clone.c
+msgid "unable to update HEAD"
+msgstr "in ann HEAD a nuashonrú"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Reset branch '%s'\n"
+msgstr "Athshocraigh brainse '%s'\n"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Already on '%s'\n"
+msgstr "Ar '%s' cheana féin\n"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Switched to and reset branch '%s'\n"
+msgstr "Aistrigh agus athshocraigh brainse '%s'\n"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Switched to a new branch '%s'\n"
+msgstr "Aistrithe go brainse nua '%s'\n"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Switched to branch '%s'\n"
+msgstr "Aistrithe go brainse '%s'\n"
+
+#: builtin/checkout.c
+#, c-format
+msgid " ... and %d more.\n"
+msgstr " ... agus %d níos mó.\n"
+
+#: builtin/checkout.c
+#, c-format
+msgid ""
+"Warning: you are leaving %d commit behind, not connected to\n"
+"any of your branches:\n"
+"\n"
+"%s\n"
+msgid_plural ""
+"Warning: you are leaving %d commits behind, not connected to\n"
+"any of your branches:\n"
+"\n"
+"%s\n"
+msgstr[0] ""
+"Rabhadh: tá %d tiomantas á fhágáil agat, gan cheangal le haon cheann de do "
+"bhrainsí:\n"
+"\n"
+"%s\n"
+msgstr[1] ""
+"Rabhadh: tá %d tiomantas á bhfágáil agat i do dhiaidh, gan aon cheangal le "
+"haon cheann de do bhrainsí:\n"
+"\n"
+"%s\n"
+msgstr[2] ""
+"Rabhadh: tá %d tiomantas á bhfágáil agat i do dhiaidh, gan aon cheangal le "
+"haon cheann de do bhrainsí:\n"
+"\n"
+"%s\n"
+
+#: builtin/checkout.c
+#, c-format
+msgid ""
+"If you want to keep it by creating a new branch, this may be a good time\n"
+"to do so with:\n"
+"\n"
+" git branch <new-branch-name> %s\n"
+"\n"
+msgid_plural ""
+"If you want to keep them by creating a new branch, this may be a good time\n"
+"to do so with:\n"
+"\n"
+" git branch <new-branch-name> %s\n"
+"\n"
+msgstr[0] ""
+"Más mian leat é a choinneáil trí bhrainse nua a chruthú, b'fhéidir gur dea-"
+"am é seo chun é sin a dhéanamh le:\n"
+"\n"
+"git branch <ainm-brainse-nua> %s\n"
+msgstr[1] ""
+"Más mian leat iad a choinneáil trí bhrainse nua a chruthú, b'fhéidir gur dea-"
+"am é seo chun é sin a dhéanamh le:\n"
+"\n"
+"git branch <ainm-brainse-nua> %s\n"
+msgstr[2] ""
+"Más mian leat iad a choinneáil trí bhrainse nua a chruthú, b'fhéidir gur dea-"
+"am é seo chun é sin a dhéanamh le:\n"
+"\n"
+"git branch <ainm-brainse-nua> %s\n"
+
+#: builtin/checkout.c
+msgid "internal error in revision walk"
+msgstr "earráid inmheánach i dsiúlóid"
+
+#: builtin/checkout.c
+msgid "Previous HEAD position was"
+msgstr "Bhí post CEAD roimhe seo"
+
+#: builtin/checkout.c
+msgid "You are on a branch yet to be born"
+msgstr "Tá tú ar bhrainse nach rugadh fós"
+
+#: builtin/checkout.c
+#, c-format
+msgid ""
+"'%s' could be both a local file and a tracking branch.\n"
+"Please use -- (and optionally --no-guess) to disambiguate"
+msgstr ""
+"D'fhéadfadh '%s' a bheith ina chomhad áitiúil agus ina bhrainse rianaithe "
+"araon.\n"
+"Úsáid le do thoil -- (agus go roghnach --no-guess) chun a dhíbhriú"
+
+#: builtin/checkout.c
+msgid ""
+"If you meant to check out a remote tracking branch on, e.g. 'origin',\n"
+"you can do so by fully qualifying the name with the --track option:\n"
+"\n"
+" git checkout --track origin/<name>\n"
+"\n"
+"If you'd like to always have checkouts of an ambiguous <name> prefer\n"
+"one remote, e.g. the 'origin' remote, consider setting\n"
+"checkout.defaultRemote=origin in your config."
+msgstr ""
+"Má bhí sé i gceist agat brainse cianrianaithe a sheiceáil ar, e.g. "
+"'origin',\n"
+"is féidir leat é sin a dhéanamh tríd an ainm a cháiliú go hiomlán leis an "
+"rogha --track:\n"
+"\n"
+" git checkout --track origin/<name>\n"
+"\n"
+"<name>Más mian leat seiceálacha débhríoch a bheith agat i gcónaí is fearr "
+"leat\n"
+"iargúlta amháin, e.g. an iargúlta 'origin', smaoinigh ar shocrú\n"
+"checkout.defaultRemote=origin i do chumraíocht."
+
+#: builtin/checkout.c
+#, c-format
+msgid "'%s' matched multiple (%d) remote tracking branches"
+msgstr "Mheaitseáil '%s' roinnt (%d) brainsí rianaithe iargúlta"
+
+#: builtin/checkout.c
+msgid "only one reference expected"
+msgstr "níl ach tagairt amháin ag súil leis"
+
+#: builtin/checkout.c
+#, c-format
+msgid "only one reference expected, %d given."
+msgstr "níl ach tagairt amháin ag súil leis, %d tugtha."
+
+#: builtin/checkout.c builtin/worktree.c
+#, c-format
+msgid "invalid reference: %s"
+msgstr "tagairt neamhbhailí: %s"
+
+#: builtin/checkout.c
+#, c-format
+msgid "reference is not a tree: %s"
+msgstr "ní crann é tagairt: %s"
+
+#: builtin/checkout.c
+#, c-format
+msgid "a branch is expected, got tag '%s'"
+msgstr "táthar ag súil le brainse, faightear tag '%s'"
+
+#: builtin/checkout.c
+#, c-format
+msgid "a branch is expected, got remote branch '%s'"
+msgstr "táthar ag súil le brainse, fuair brainse iargúlta '%s'"
+
+#: builtin/checkout.c
+#, c-format
+msgid "a branch is expected, got '%s'"
+msgstr "táthar ag súil le brainse, fuair '%s'"
+
+#: builtin/checkout.c
+#, c-format
+msgid "a branch is expected, got commit '%s'"
+msgstr "táthar ag súil le brainse, fuair sé tiomantas '%s'"
+
+#: builtin/checkout.c
+msgid ""
+"If you want to detach HEAD at the commit, try again with the --detach option."
+msgstr ""
+"Más mian leat HEAD a dhícheangal ag an tiomantas, déan iarracht arís leis an "
+"rogha --detach."
+
+#: builtin/checkout.c
+msgid ""
+"cannot switch branch while merging\n"
+"Consider \"git merge --quit\" or \"git worktree add\"."
+msgstr ""
+"ní féidir brainse a athrú agus cumasc á dhéanamh\n"
+"Smaoinigh ar \"git merge --quit\" nó \"git worktree add\"."
+
+#: builtin/checkout.c
+msgid ""
+"cannot switch branch in the middle of an am session\n"
+"Consider \"git am --quit\" or \"git worktree add\"."
+msgstr ""
+"ní féidir brainse a athrú i lár seisiún am\n"
+"Smaoinigh ar \"git am --quit\" nó \"git worktree add\"."
+
+#: builtin/checkout.c
+msgid ""
+"cannot switch branch while rebasing\n"
+"Consider \"git rebase --quit\" or \"git worktree add\"."
+msgstr ""
+"ní féidir brainse a athrú agus athbhunú á dhéanamh\n"
+"Smaoinigh ar \"git rebase --quit\" nó \"git worktree add\"."
+
+#: builtin/checkout.c
+msgid ""
+"cannot switch branch while cherry-picking\n"
+"Consider \"git cherry-pick --quit\" or \"git worktree add\"."
+msgstr ""
+"ní féidir brainse a athrú agus tú ag cherry-picking\n"
+"Smaoinigh ar \"git cherry-pick --quit\" nó \"git worktree add\"."
+
+#: builtin/checkout.c
+msgid ""
+"cannot switch branch while reverting\n"
+"Consider \"git revert --quit\" or \"git worktree add\"."
+msgstr ""
+"ní féidir brainse a athrú agus aisiompú á dhéanamh\n"
+"Smaoinigh ar \"git revert --quit\" nó \"git worktree add\"."
+
+#: builtin/checkout.c
+msgid "you are switching branch while bisecting"
+msgstr "tá tú ag athrú brainse agus tú ag déileáil"
+
+#: builtin/checkout.c
+msgid "paths cannot be used with switching branches"
+msgstr "ní féidir cosáin a úsáid le brainsí a athrú"
+
+#: builtin/checkout.c
+#, c-format
+msgid "'%s' cannot be used with switching branches"
+msgstr "Ní féidir '%s' a úsáid le brainsí a athrú"
+
+#: builtin/checkout.c
+#, c-format
+msgid "'%s' needs the paths to check out"
+msgstr "Teastaíonn '%s' na cosáin chun seiceáil"
+
+#: builtin/checkout.c
+#, c-format
+msgid "'%s' cannot be used with '%s'"
+msgstr "Ní féidir '%s' a úsáid le '%s'"
+
+#: builtin/checkout.c
+#, c-format
+msgid "'%s' cannot take <start-point>"
+msgstr "Ní féidir '%s' a ghlacadh <start-point>"
+
+#: builtin/checkout.c
+#, c-format
+msgid "Cannot switch branch to a non-commit '%s'"
+msgstr "Ní féidir brainse a aistriú go '%s' neamh-thiomanta"
+
+#: builtin/checkout.c
+msgid "missing branch or commit argument"
+msgstr "brainse ar iarraidh nó argóint a dhéanamh"
+
+#: builtin/checkout.c
+#, c-format
+msgid "unknown conflict style '%s'"
+msgstr "stíl choimhlinte anaithnid '%s'"
+
+#: builtin/checkout.c
+msgid "perform a 3-way merge with the new branch"
+msgstr "cumasc 3 bhealach a dhéanamh leis an mbrainse nua"
+
+#: builtin/checkout.c builtin/log.c builtin/range-diff.c parse-options.h
+msgid "style"
+msgstr "stíl"
+
+#: builtin/checkout.c
+msgid "conflict style (merge, diff3, or zdiff3)"
+msgstr "stíl choimhlinte (cumaisc, diff3, nó zdiff3)"
+
+#: builtin/checkout.c builtin/worktree.c
+msgid "detach HEAD at named commit"
+msgstr "dícheangail HEAD ag an tiomnú ainmnithe"
+
+#: builtin/checkout.c
+msgid "force checkout (throw away local modifications)"
+msgstr "seiceáil fórsa (caith modhnuithe áitiúla)"
+
+#: builtin/checkout.c
+msgid "new-branch"
+msgstr "brainse-nua"
+
+#: builtin/checkout.c
+msgid "new unborn branch"
+msgstr "brainse nua gan breith"
+
+#: builtin/checkout.c builtin/merge.c
+msgid "update ignored files (default)"
+msgstr "nuashonrú comhaid a dhéantar neamhaird orthu"
+
+#: builtin/checkout.c
+msgid "do not check if another worktree is using this branch"
+msgstr ""
+"ná seiceáil an bhfuil crann oibre eile á úsáid ag baint úsáide as an "
+"mbrainse seo"
+
+#: builtin/checkout.c
+msgid "checkout our version for unmerged files"
+msgstr "seiceáil ár leagan le haghaidh comhaid neamh-chumasaithe"
+
+#: builtin/checkout.c
+msgid "checkout their version for unmerged files"
+msgstr "seiceáil a leagan le haghaidh comhaid neamh-chumasaithe"
+
+#: builtin/checkout.c
+msgid "do not limit pathspecs to sparse entries only"
+msgstr "ná teorainn le speisiúintí cosáin le hiontrálacha neamhchoitianta"
+
+#: builtin/checkout.c
+#, c-format
+msgid "options '-%c', '-%c', and '%s' cannot be used together"
+msgstr "ní féidir na roghanna '-%c', '-%c', agus '%s' a úsáid le chéile"
+
+#: builtin/checkout.c
+msgid "--track needs a branch name"
+msgstr "--track tá ainm brainse ag teastáil"
+
+#: builtin/checkout.c
+#, c-format
+msgid "missing branch name; try -%c"
+msgstr "ainm brainse ar iarraidh; iarracht -%c"
+
+#: builtin/checkout.c
+#, c-format
+msgid "could not resolve %s"
+msgstr "ní fhéadfaí %s a réiteach"
+
+#: builtin/checkout.c
+msgid "invalid path specification"
+msgstr "sonraíocht cosáin nebhail"
+
+#: builtin/checkout.c
+#, c-format
+msgid "'%s' is not a commit and a branch '%s' cannot be created from it"
+msgstr "Ní tiomantas é '%s' agus ní féidir brainse '%s' a chruthú uaidh"
+
+#: builtin/checkout.c
+#, c-format
+msgid "git checkout: --detach does not take a path argument '%s'"
+msgstr "git checkout: --detach ní ghlacann argóint cosáin '%s'"
+
+#: builtin/checkout.c
+msgid ""
+"git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
+"checking out of the index."
+msgstr ""
+"git checkout: --ours/--theirs, --force agus --merge neamhoiriúnach nuair\n"
+"seiceáil amach as an innéacs."
+
+#: builtin/checkout.c
+msgid "you must specify path(s) to restore"
+msgstr "ní mór duit cosáin(í) a shonrú chun athchóiriú"
+
+#: builtin/checkout.c builtin/clone.c builtin/remote.c builtin/replay.c
+#: builtin/submodule--helper.c builtin/worktree.c
+msgid "branch"
+msgstr "brainse"
+
+#: builtin/checkout.c
+msgid "create and checkout a new branch"
+msgstr "brainse nua a chruthú agus a sheiceáil"
+
+#: builtin/checkout.c
+msgid "create/reset and checkout a branch"
+msgstr "cruthaigh/athshocraigh agus seiceáil amach brainse"
+
+#: builtin/checkout.c
+msgid "create reflog for new branch"
+msgstr "cruthú reflog do bhrainse nua"
+
+#: builtin/checkout.c
+msgid "second guess 'git checkout <no-such-branch>' (default)"
+msgstr "an dara tuairim 'git check <no-such-branch>'(réamhshocraithe)"
+
+#: builtin/checkout.c
+msgid "use overlay mode (default)"
+msgstr "úsáid modh forleagtha (réamhshocraithe)"
+
+#: builtin/checkout.c
+msgid "create and switch to a new branch"
+msgstr "cruthú agus aistrigh go brainse nua"
+
+#: builtin/checkout.c
+msgid "create/reset and switch to a branch"
+msgstr "cruthú/athshocraigh agus aistrigh go brainse"
+
+#: builtin/checkout.c
+msgid "second guess 'git switch <no-such-branch>'"
+msgstr "buille faoi thuairim eile 'git switch <gan-bhrainse-den-sórt-sin>'"
+
+#: builtin/checkout.c
+msgid "throw away local modifications"
+msgstr "modhnuithe áitiúla a chaitheamh"
+
+#: builtin/checkout.c
+msgid "which tree-ish to checkout from"
+msgstr "cén crainn le seiceáil uaidh"
+
+#: builtin/checkout.c
+msgid "restore the index"
+msgstr "an t-innéacs a chur ar ais"
+
+#: builtin/checkout.c
+msgid "restore the working tree (default)"
+msgstr "an crann oibre a chur ar ais (réamhshocraithe)"
+
+#: builtin/checkout.c
+msgid "ignore unmerged entries"
+msgstr "neamhaird a dhéanamh ar iontrálacha"
+
+#: builtin/checkout.c
+msgid "use overlay mode"
+msgstr "úsáid modh forleagtha"
+
+#: builtin/clean.c
+msgid ""
+"git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] "
+"[<pathspec>...]"
+msgstr ""
+"<pathspec>git glan [-d] [-f] [-i] [-n] [-q] [-e] [- <pattern>x | -X] [--] "
+"[...]"
+
+#: builtin/clean.c
+#, c-format
+msgid "Removing %s\n"
+msgstr "Ag baint %s\n"
+
+#: builtin/clean.c
+#, c-format
+msgid "Would remove %s\n"
+msgstr "Bainfeadh %s\n"
+
+#: builtin/clean.c
+#, c-format
+msgid "Skipping repository %s\n"
+msgstr "Ag scipeáil an stóras %s\n"
+
+#: builtin/clean.c
+#, c-format
+msgid "Would skip repository %s\n"
+msgstr "Scaipfeadh stóras %s\n"
+
+#: builtin/clean.c midx.c
+#, c-format
+msgid "failed to remove %s"
+msgstr "theip ar %s a bhaint"
+
+#: builtin/clean.c
+#, c-format
+msgid "could not lstat %s\n"
+msgstr "ní fhéadfaí lstat %s\n"
+
+#: builtin/clean.c
+msgid "Refusing to remove current working directory\n"
+msgstr "Ag diúltú an t-eolaire oibre reatha a bhaint\n"
+
+#: builtin/clean.c
+msgid "Would refuse to remove current working directory\n"
+msgstr "Dhiúltódh sé/sí an t-eolaire oibre reatha a bhaint\n"
+
+#: builtin/clean.c
+#, c-format
+msgid ""
+"Prompt help:\n"
+"1 - select a numbered item\n"
+"foo - select item based on unique prefix\n"
+" - (empty) select nothing\n"
+msgstr ""
+"Cabhair pras:\n"
+"1 - roghnaigh mír uimhrithe\n"
+"foo - roghnaigh mír bunaithe ar réimír uathúil\n"
+" - (folamh) roghnaigh aon rud\n"
+
+#: builtin/clean.c
+#, c-format
+msgid ""
+"Prompt help:\n"
+"1 - select a single item\n"
+"3-5 - select a range of items\n"
+"2-3,6-9 - select multiple ranges\n"
+"foo - select item based on unique prefix\n"
+"-... - unselect specified items\n"
+"* - choose all items\n"
+" - (empty) finish selecting\n"
+msgstr ""
+"Cabhair pras:\n"
+"1 - roghnaigh mír amháin\n"
+"3-5 - roghnaigh raon earraí\n"
+"2-3,6-9 - roghnaigh raonta iolracha\n"
+"foo - roghnaigh mír bunaithe ar réimír uathúil\n"
+"-... - míreanna sonraithe a dhíroghnú\n"
+"* - roghnaigh gach earra\n"
+" - (folamh) bailchríoch a roghnú\n"
+
+#: builtin/clean.c
+#, c-format
+msgid "Huh (%s)?\n"
+msgstr "Huh (%s)?\n"
+
+#: builtin/clean.c
+#, c-format
+msgid "Input ignore patterns>> "
+msgstr "Patrúin neamhaird ionchuir >> "
+
+#: builtin/clean.c
+#, c-format
+msgid "WARNING: Cannot find items matched by: %s"
+msgstr "RABHADH: Ní féidir míreanna a mheaitseáil le: %s a aimsiú"
+
+#: builtin/clean.c
+msgid "Select items to delete"
+msgstr "Roghnaigh míreanna le scriosadh"
+
+#. TRANSLATORS: Make sure to keep [y/N] as is
+#: builtin/clean.c
+#, c-format
+msgid "Remove %s [y/N]? "
+msgstr "Bain %s [y/N]? "
+
+#: builtin/clean.c
+msgid ""
+"clean - start cleaning\n"
+"filter by pattern - exclude items from deletion\n"
+"select by numbers - select items to be deleted by numbers\n"
+"ask each - confirm each deletion (like \"rm -i\")\n"
+"quit - stop cleaning\n"
+"help - this screen\n"
+"? - help for prompt selection"
+msgstr ""
+"glan - tosú ag glanadh\n"
+"scagadh de réir patrún - eisiamh míreanna ó scriosadh\n"
+"roghnaigh de réir uimhreacha - roghnaigh míreanna atá le scriosadh de réir\n"
+"fiafraigh gach ceann - deimhnigh gach scriosadh (cosúil le “rm -i”)\n"
+"scor - stop glanadh\n"
+"cabhair - an scáileán seo\n"
+"? - cabhair le haghaidh roghnú pras"
+
+#: builtin/clean.c
+msgid "Would remove the following item:"
+msgid_plural "Would remove the following items:"
+msgstr[0] "Bhainfeadh sé an mhír seo a leanas:"
+msgstr[1] "Bainfí na míreanna seo a leanas:"
+msgstr[2] "Bainfí na míreanna seo a leanas:"
+
+#: builtin/clean.c
+msgid "No more files to clean, exiting."
+msgstr "Níl aon níos mó comhaid le glanadh, ag imeacht amach."
+
+#: builtin/clean.c
+msgid "do not print names of files removed"
+msgstr "ná priontáil ainmneacha na gcomhaid a bhaintear"
+
+#: builtin/clean.c
+msgid "force"
+msgstr "fórsa"
+
+#: builtin/clean.c
+msgid "interactive cleaning"
+msgstr "glanadh idirghní"
+
+#: builtin/clean.c
+msgid "remove whole directories"
+msgstr "bain eolairí iomlána"
+
+#: builtin/clean.c builtin/config.c builtin/describe.c builtin/grep.c
+#: builtin/log.c builtin/ls-files.c builtin/name-rev.c builtin/pack-refs.c
+#: builtin/show-ref.c ref-filter.h
+msgid "pattern"
+msgstr "patrún"
+
+#: builtin/clean.c
+msgid "add <pattern> to ignore rules"
+msgstr "cuir leis <pattern>na rialacha a neamhaird"
+
+#: builtin/clean.c
+msgid "remove ignored files, too"
+msgstr "bain comhaid a neamhaird orthu, freisin"
+
+#: builtin/clean.c
+msgid "remove only ignored files"
+msgstr "bain ach comhaid a neamhaird orthu"
+
+#: builtin/clean.c
+msgid "clean.requireForce is true and -f not given: refusing to clean"
+msgstr "tá clean.requireForce fíor agus ní thugtar -f: diúltú glanadh"
+
+#: builtin/clone.c
+#, c-format
+msgid "info: Could not add alternate for '%s': %s\n"
+msgstr "eolas: Ní féidir malartach a chur le haghaidh '%s': %s\n"
+
+#: builtin/clone.c builtin/diff.c builtin/rm.c grep.c setup.c
+#, c-format
+msgid "failed to stat '%s'"
+msgstr "theip ar '%s' a stáil"
+
+#: builtin/clone.c
+#, c-format
+msgid "%s exists and is not a directory"
+msgstr "Tá %s ann agus ní eolaire é"
+
+#: builtin/clone.c
+#, c-format
+msgid "'%s' is a symlink, refusing to clone with --local"
+msgstr "Is nasc comhsheasmhach é '%s', ag diúltú clónú le --local"
+
+#: builtin/clone.c
+#, c-format
+msgid "failed to start iterator over '%s'"
+msgstr "theip ar an iterator a thosú thar '%s'"
+
+#: builtin/clone.c
+#, c-format
+msgid "symlink '%s' exists, refusing to clone with --local"
+msgstr "tá nasc symlink '%s' ann, ag diúltú clónú le --local"
+
+#: builtin/clone.c compat/precompose_utf8.c
+#, c-format
+msgid "failed to unlink '%s'"
+msgstr "theip ar '%s' a dhínascadh"
+
+#: builtin/clone.c
+#, c-format
+msgid "hardlink cannot be checked at '%s'"
+msgstr "ní féidir crua-nasc a sheiceáil ag '%s'"
+
+#: builtin/clone.c
+#, c-format
+msgid "hardlink different from source at '%s'"
+msgstr "crua-nasc difriúil ó fhoinse ag '%s'"
+
+#: builtin/clone.c
+#, c-format
+msgid "failed to create link '%s'"
+msgstr "theip ar nasc '%s' a chruthú"
+
+#: builtin/clone.c
+#, c-format
+msgid "failed to copy file to '%s'"
+msgstr "theip ar chomhad a chóipeáil chuig '%s'"
+
+#: builtin/clone.c refs/files-backend.c
+#, c-format
+msgid "failed to iterate over '%s'"
+msgstr "theip ar athrá thar '%s'"
+
+#: builtin/clone.c
+#, c-format
+msgid "done.\n"
+msgstr "déanta.\n"
+
+#: builtin/clone.c
+msgid ""
+"Clone succeeded, but checkout failed.\n"
+"You can inspect what was checked out with 'git status'\n"
+"and retry with 'git restore --source=HEAD :/'\n"
+msgstr ""
+"D'éirigh le clón, ach theip ar an tseiceáil.\n"
+"Is féidir leat iniúchadh a dhéanamh ar an méid a sheiceáladh le 'git "
+"status'\n"
+"agus déan iarracht arís le 'git restore --source=HEAD : /'\n"
+
+#: builtin/clone.c fetch-pack.c
+msgid "remote did not send all necessary objects"
+msgstr "níor sheol iargúlta gach rud riachtanach"
+
+#: builtin/clone.c
+#, c-format
+msgid "unable to update %s"
+msgstr "nach féidir %s a nuashonrú"
+
+#: builtin/clone.c
+msgid "failed to initialize sparse-checkout"
+msgstr "theip ar sheiceáil éagsúil a thosú"
+
+#: builtin/clone.c
+msgid "remote HEAD refers to nonexistent ref, unable to checkout"
+msgstr ""
+"tagraíonn iargúlta HEAD do thagartha nach bhfuil ann, nach féidir a sheiceáil"
+
+#: builtin/clone.c
+msgid "unable to checkout working tree"
+msgstr "in ann crann oibre a sheiceáil"
+
+#: builtin/clone.c
+msgid "unable to write parameters to config file"
+msgstr "in ann paraiméadair a scríobh chuig comhad cumraithe"
+
+#: builtin/clone.c
+msgid "cannot repack to clean up"
+msgstr "ní féidir athphacáil chun glanadh"
+
+#: builtin/clone.c
+msgid "cannot unlink temporary alternates file"
+msgstr "ní féidir le comhad malartacha sealadacha a dhínascadh"
+
+#: builtin/clone.c
+msgid "don't clone shallow repository"
+msgstr "ná clóin stór éadomhain"
+
+#: builtin/clone.c
+msgid "don't create a checkout"
+msgstr "ná cruthaigh seiceáil"
+
+#: builtin/clone.c builtin/init-db.c
+msgid "create a bare repository"
+msgstr "stóras lom a chruthú"
+
+#: builtin/clone.c
+msgid "create a mirror repository (implies --bare)"
+msgstr "stóras scátháin a chruthú (tugann le tuiscint --bare)"
+
+#: builtin/clone.c
+msgid "to clone from a local repository"
+msgstr "a chlónú ó stór áitiúil"
+
+#: builtin/clone.c
+msgid "don't use local hardlinks, always copy"
+msgstr "ná húsáid crua-naisc áitiúla, cóipeáil i gcónaí"
+
+#: builtin/clone.c
+msgid "setup as shared repository"
+msgstr "socrú mar stór roinnte"
+
+#: builtin/clone.c
+msgid "pathspec"
+msgstr "sonraíocht chosáin"
+
+#: builtin/clone.c
+msgid "initialize submodules in the clone"
+msgstr "fo-mhodúil a thionscnamh sa chlón"
+
+#: builtin/clone.c
+msgid "number of submodules cloned in parallel"
+msgstr "líon na bhfo-mhodúil atá clónaithe go comhthreomhar"
+
+#: builtin/clone.c builtin/init-db.c
+msgid "template-directory"
+msgstr "eolaire teimpléad"
+
+#: builtin/clone.c builtin/init-db.c
+msgid "directory from which templates will be used"
+msgstr "eolaire as a n-úsáidfear teimpléid"
+
+#: builtin/clone.c builtin/submodule--helper.c
+msgid "reference repository"
+msgstr "stór tagartha"
+
+#: builtin/clone.c builtin/submodule--helper.c
+msgid "use --reference only while cloning"
+msgstr "bain úsáid as --reference amháin agus tú ag clónú"
+
+#: builtin/clone.c builtin/column.c builtin/fmt-merge-msg.c builtin/init-db.c
+#: builtin/merge-file.c builtin/merge.c builtin/pack-objects.c builtin/repack.c
+#: builtin/submodule--helper.c t/helper/test-simple-ipc.c
+msgid "name"
+msgstr "ainm"
+
+#: builtin/clone.c
+msgid "use <name> instead of 'origin' to track upstream"
+msgstr "úsáid in <name> ionad 'origin' chun suas an sruth a rianú"
+
+#: builtin/clone.c
+msgid "checkout <branch> instead of the remote's HEAD"
+msgstr "seiceáil <brainse> in ionad CEAD an iargúlta"
+
+#: builtin/clone.c
+msgid "clone single revision <rev> and check out"
+msgstr "clónáil athbhreithniú aonair <rev> agus seiceáil amach"
+
+#: builtin/clone.c
+msgid "path to git-upload-pack on the remote"
+msgstr "cosán chuig git-upload-pack ar an gcianrialtán"
+
+#: builtin/clone.c builtin/fetch.c builtin/pull.c
+msgid "depth"
+msgstr "doimhneacht"
+
+#: builtin/clone.c
+msgid "create a shallow clone of that depth"
+msgstr "clón éadomhain den doimhneacht sin a chruthú"
+
+#: builtin/clone.c
+msgid "create a shallow clone since a specific time"
+msgstr "clón éadrom a chruthú ó am ar leith"
+
+#: builtin/clone.c builtin/fetch.c builtin/pull.c
+msgid "ref"
+msgstr "tagairt"
+
+#: builtin/clone.c builtin/fetch.c builtin/pull.c
+msgid "deepen history of shallow clone, excluding ref"
+msgstr "stair an chlóin éadomhain a dhoimhniú, gan tagairt"
+
+#: builtin/clone.c builtin/submodule--helper.c
+msgid "clone only one branch, HEAD or --branch"
+msgstr "clóin ach brainse amháin, HEAD nó --branch"
+
+#: builtin/clone.c
+msgid "clone tags, and make later fetches not to follow them"
+msgstr "clibeanna clóin, agus tógáil níos déanaí a dhéanamh gan iad a leanúint"
+
+#: builtin/clone.c
+msgid "any cloned submodules will be shallow"
+msgstr "beidh aon fho-mhodúil clónaithe éadrom"
+
+#: builtin/clone.c builtin/init-db.c
+msgid "gitdir"
+msgstr "gitdir"
+
+#: builtin/clone.c builtin/init-db.c
+msgid "separate git dir from working tree"
+msgstr "git dir ar leithligh ó chrann oibre"
+
+#: builtin/clone.c builtin/init-db.c builtin/submodule--helper.c
+msgid "specify the reference format to use"
+msgstr "sonraigh an fhormáid tagartha le húsáid"
+
+#: builtin/clone.c
+msgid "key=value"
+msgstr "eochair=luach"
+
+#: builtin/clone.c
+msgid "set config inside the new repository"
+msgstr "socraigh cumraíocht taobh istigh den stór nua"
+
+#: builtin/clone.c builtin/fetch.c builtin/ls-remote.c builtin/pull.c
+#: builtin/push.c builtin/send-pack.c
+msgid "server-specific"
+msgstr "freastalaí-shonrach"
+
+#: builtin/clone.c builtin/fetch.c builtin/ls-remote.c builtin/pull.c
+#: builtin/push.c builtin/send-pack.c
+msgid "option to transmit"
+msgstr "rogha a tharchur"
+
+#: builtin/clone.c
+msgid "apply partial clone filters to submodules"
+msgstr "cuir scagairí clóin páirteacha i bhfeidhm"
+
+#: builtin/clone.c
+msgid "any cloned submodules will use their remote-tracking branch"
+msgstr "úsáidfidh aon fho-mhodúil clónaithe a mbrainse cianrianaithe"
+
+#: builtin/clone.c
+msgid "initialize sparse-checkout file to include only files at root"
+msgstr ""
+"comhad seiceála neamhchoitianta a thosú chun comhaid amháin a áireamh ag "
+"fréamh"
+
+#: builtin/clone.c
+msgid "uri"
+msgstr "uri"
+
+#: builtin/clone.c
+msgid "a URI for downloading bundles before fetching from origin remote"
+msgstr ""
+"a URI chun cuachtaí a íoslódáil sula n-iarrtar iad ó chianchéim tionscnaimh"
+
+#: builtin/clone.c
+msgid "git clone [<options>] [--] <repo> [<dir>]"
+msgstr "git clone [<roghanna>] [--] <stóras>[<eolaire>]"
+
+#: builtin/clone.c
+msgid "Too many arguments."
+msgstr "An iomarca argóintí."
+
+#: builtin/clone.c scalar.c
+msgid "You must specify a repository to clone."
+msgstr "Ní mór duit stór a shonrú le clónú."
+
+#: builtin/clone.c builtin/init-db.c builtin/refs.c builtin/submodule--helper.c
+#: setup.c
+#, c-format
+msgid "unknown ref storage format '%s'"
+msgstr "formáid stórála tagartha anaithnid '%s'"
+
+#: builtin/clone.c
+#, c-format
+msgid "repository '%s' does not exist"
+msgstr "níl an stóras '%s' ann"
+
+#: builtin/clone.c builtin/fetch.c
+#, c-format
+msgid "depth %s is not a positive number"
+msgstr "ní uimhir dhearfach é doimhneacht %s"
+
+#: builtin/clone.c
+#, c-format
+msgid "destination path '%s' already exists and is not an empty directory."
+msgstr "tá cosán ceann scríbe '%s' ann cheana féin agus ní eolaire folamh é."
+
+#: builtin/clone.c
+#, c-format
+msgid "repository path '%s' already exists and is not an empty directory."
+msgstr "tá cosán stórais '%s' ann cheana féin agus ní eolaire folamh é."
+
+#: builtin/clone.c
+#, c-format
+msgid "working tree '%s' already exists."
+msgstr "tá crann oibre '%s' ann cheana féin."
+
+#: builtin/clone.c builtin/difftool.c builtin/log.c builtin/worktree.c
+#, c-format
+msgid "could not create leading directories of '%s'"
+msgstr "ní fhéadfaí eolairí tosaigh de '%s' a chruthú"
+
+#: builtin/clone.c
+#, c-format
+msgid "could not create work tree dir '%s'"
+msgstr "ní fhéadfaí crann oibre a chruthú dir '%s'"
+
+#: builtin/clone.c
+#, c-format
+msgid "Cloning into bare repository '%s'...\n"
+msgstr "Clónáil isteach i stóras lom '%s'...\n"
+
+#: builtin/clone.c
+#, c-format
+msgid "Cloning into '%s'...\n"
+msgstr "Clónáil isteach '%s'...\n"
+
+#: builtin/clone.c
+msgid ""
+"clone --recursive is not compatible with both --reference and --reference-if-"
+"able"
+msgstr ""
+"níl clón --recursive comhoiriúnach le --reference agus --reference-if-able"
+
+#: builtin/clone.c builtin/remote.c
+#, c-format
+msgid "'%s' is not a valid remote name"
+msgstr "Ní ainm iargúlta bailí é '%s'"
+
+#: builtin/clone.c
+msgid "--depth is ignored in local clones; use file:// instead."
+msgstr ""
+"--depth déantar neamhaird de i gclóin áitiúla; bain úsáid as comhad:// ina "
+"ionad."
+
+#: builtin/clone.c
+msgid "--shallow-since is ignored in local clones; use file:// instead."
+msgstr ""
+"--shallow-since déantar neamhaird de i gclóin áitiúla; bain úsáid as file:// "
+"ina ionad."
+
+#: builtin/clone.c
+msgid "--shallow-exclude is ignored in local clones; use file:// instead."
+msgstr ""
+"--shallow-exclude déantar neamhaird de i gclóin áitiúla; bain úsáid as "
+"file:// ina ionad."
+
+#: builtin/clone.c
+msgid "--filter is ignored in local clones; use file:// instead."
+msgstr ""
+"--filter déantar neamhaird de i gclóin áitiúla; bain úsáid as file:// ina "
+"ionad."
+
+#: builtin/clone.c fetch-pack.c
+msgid "source repository is shallow, reject to clone."
+msgstr "tá stóras foinse éadrom, diúltaigh clóin."
+
+#: builtin/clone.c
+msgid "source repository is shallow, ignoring --local"
+msgstr "tá stóras foinse éadrom, ag neamhaird a dhéanamh ar --local"
+
+#: builtin/clone.c
+msgid "--local is ignored"
+msgstr "--local déantar neamhaird de"
+
+#: builtin/clone.c
+msgid "cannot clone from filtered bundle"
+msgstr "ní féidir clónú ó bhearta scagtha"
+
+#: builtin/clone.c
+msgid "failed to initialize the repo, skipping bundle URI"
+msgstr "theip ar an repo a thionscnamh, ag scipeáil URI beartán"
+
+#: builtin/clone.c
+#, c-format
+msgid "failed to fetch objects from bundle URI '%s'"
+msgstr "theip ar rudaí a fháil ó URI '%s'"
+
+#: builtin/clone.c
+msgid "failed to fetch advertised bundles"
+msgstr "theip orthu beartáin fógraithe a fháil"
+
+#: builtin/clone.c
+msgid "remote transport reported error"
+msgstr "earráid tuairiscithe ar iompar"
+
+#: builtin/clone.c
+#, c-format
+msgid "Remote branch %s not found in upstream %s"
+msgstr "Níor aimsíodh brainse iargúlta %s i suas sruth %s"
+
+#: builtin/clone.c
+#, c-format
+msgid "Remote revision %s not found in upstream %s"
+msgstr "Ní aimsíodh athbhreithniú iargúlta %s i suas sruth %s"
+
+#: builtin/clone.c
+msgid "You appear to have cloned an empty repository."
+msgstr "Is cosúil gur chlónaigh tú stór folamh."
+
+#: builtin/column.c
+msgid "git column [<options>]"
+msgstr "colún git [<options>]"
+
+#: builtin/column.c
+msgid "lookup config vars"
+msgstr "earraí cumraíochta cuardaigh"
+
+#: builtin/column.c
+msgid "layout to use"
+msgstr "leagan amach le húsáid"
+
+#: builtin/column.c
+msgid "maximum width"
+msgstr "leithead uasta"
+
+#: builtin/column.c
+msgid "padding space on left border"
+msgstr "spás padding ar an teorainn chlé"
+
+#: builtin/column.c
+msgid "padding space on right border"
+msgstr "spás padding ar an teorainn dheis"
+
+#: builtin/column.c
+msgid "padding space between columns"
+msgstr "spás padding idir colúin"
+
+#: builtin/column.c
+#, c-format
+msgid "%s must be non-negative"
+msgstr "Caithfidh %s a bheith neamh-diúltach"
+
+#: builtin/column.c
+msgid "--command must be the first argument"
+msgstr "Ní mór gurb é --command an chéad argóint"
+
+#: builtin/commit-graph.c
+msgid ""
+"git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]"
+msgstr ""
+"git commit-graph verify [--object-dir <dir>] [--shallow] [--[no-]progress]"
+
+#: builtin/commit-graph.c
+msgid ""
+"git commit-graph write [--object-dir <dir>] [--append]\n"
+" [--split[=<strategy>]] [--reachable | --stdin-packs | "
+"--stdin-commits]\n"
+" [--changed-paths] [--[no-]max-new-filters <n>] [--"
+"[no-]progress]\n"
+" <split-options>"
+msgstr ""
+"git commit-graph write [--object-dir <dir>] [--append]\n"
+" [--split[=<strategy>]] [--reachable | --stdin-packs | "
+"--stdin-commits]\n"
+" [--changed-paths] [--[no-]max-new-filters <n>] [--"
+"[no-]progress]\n"
+" <split-options>"
+
+#: builtin/commit-graph.c builtin/fetch.c builtin/gc.c builtin/log.c
+#: builtin/repack.c
+msgid "dir"
+msgstr "redir"
+
+#: builtin/commit-graph.c
+msgid "the object directory to store the graph"
+msgstr "an eolaire réada chun an graf a stóráil"
+
+#: builtin/commit-graph.c
+msgid "if the commit-graph is split, only verify the tip file"
+msgstr "má tá an graf coimite scoilte, ní fhíoraigh ach an comhad leid"
+
+#: builtin/commit-graph.c
+#, c-format
+msgid "Could not open commit-graph '%s'"
+msgstr "Níor féidir graf coimisiúnaithe '%s' a oscailt"
+
+#: builtin/commit-graph.c
+#, c-format
+msgid "could not open commit-graph chain '%s'"
+msgstr "ní fhéadfaí slabhra coimisi-graf '%s' a oscailt"
+
+#: builtin/commit-graph.c
+#, c-format
+msgid "unrecognized --split argument, %s"
+msgstr "argóint --split gan aithint, %s"
+
+#: builtin/commit-graph.c
+#, c-format
+msgid "unexpected non-hex object ID: %s"
+msgstr "id réada neamh-heicsidheachúlach gan choinne: %s"
+
+#: builtin/commit-graph.c
+#, c-format
+msgid "invalid object: %s"
+msgstr "réad neamhbhailí: %s"
+
+#: builtin/commit-graph.c parse-options-cb.c
+#, c-format
+msgid "option `%s' expects a numerical value"
+msgstr "tá rogha `%s' ag súil le luach uimhriúil"
+
+#: builtin/commit-graph.c
+msgid "start walk at all refs"
+msgstr "tosú ag siúl ag gach ceann"
+
+#: builtin/commit-graph.c
+msgid "scan pack-indexes listed by stdin for commits"
+msgstr ""
+"scanadh innéacsanna pacáiste atá liostaithe ag stdin le haghaidh gealltanais"
+
+#: builtin/commit-graph.c
+msgid "start walk at commits listed by stdin"
+msgstr "tosú ag siúl ag gealltanais atá liostaithe ag stdin"
+
+#: builtin/commit-graph.c
+msgid "include all commits already in the commit-graph file"
+msgstr ""
+"áireamh na gealltanais go léir cheana féin sa chomhad gráf coimisiúnaithe"
+
+#: builtin/commit-graph.c
+msgid "enable computation for changed paths"
+msgstr "ríomh a chumasú le haghaidh cosáin athraithe"
+
+#: builtin/commit-graph.c
+msgid "allow writing an incremental commit-graph file"
+msgstr "ligean comhad gráf choimisiúnaithe a scríobh"
+
+#: builtin/commit-graph.c
+msgid "maximum number of commits in a non-base split commit-graph"
+msgstr "uaslíon na ngealltanais i ngráf coiste scoilte neamh-bhonn"
+
+#: builtin/commit-graph.c
+msgid "maximum ratio between two levels of a split commit-graph"
+msgstr "cóimheas uasta idir dhá leibhéal de ghraf coimiste scoilte"
+
+#: builtin/commit-graph.c
+msgid "only expire files older than a given date-time"
+msgstr "ní rachaidh in éag ach comhaid níos sine ná dáta-am ar leith"
+
+#: builtin/commit-graph.c
+msgid "maximum number of changed-path Bloom filters to compute"
+msgstr "líon uasta scagairí Bloom cosáin athraithe le ríomh"
+
+#: builtin/commit-graph.c
+msgid "use at most one of --reachable, --stdin-commits, or --stdin-packs"
+msgstr ""
+"bain úsáid as ceann de --reachable, --stdin-commits, nó --stdin-packs ar a "
+"mhéad"
+
+#: builtin/commit-graph.c
+msgid "Collecting commits from input"
+msgstr "Gealltanais a bhailiú ó ionchur"
+
+#: builtin/commit-tree.c
+msgid "git commit-tree <tree> [(-p <parent>)...]"
+msgstr "<parent>git commit-tree <tree>[(-p)...]"
+
+#: builtin/commit-tree.c
+msgid ""
+"git commit-tree [(-p <parent>)...] [-S[<keyid>]] [(-m <message>)...]\n"
+" [(-F <file>)...] <tree>"
+msgstr ""
+"<parent>git commit-tree [(-p)...] [-S [<keyid>]] [(-m<message>)...]\n"
+" [(-F<file>)...] <tree>"
+
+#: builtin/commit-tree.c
+#, c-format
+msgid "duplicate parent %s ignored"
+msgstr "neamhaird déanta ar thuismitheoir dúblach %s"
+
+#: builtin/commit-tree.c builtin/log.c
+#, c-format
+msgid "not a valid object name %s"
+msgstr "ní ainm réad bailí %s"
+
+#: builtin/commit-tree.c
+#, c-format
+msgid "git commit-tree: failed to read '%s'"
+msgstr "git commit-tree: theip ar '%s' a léamh"
+
+#: builtin/commit-tree.c
+#, c-format
+msgid "git commit-tree: failed to close '%s'"
+msgstr "git commit-tree: theip ar '%s' a dhúnadh"
+
+#: builtin/commit-tree.c
+msgid "parent"
+msgstr "tuismitheoir"
+
+#: builtin/commit-tree.c
+msgid "id of a parent commit object"
+msgstr "id réad tiomanta tuismitheora"
+
+#: builtin/commit-tree.c builtin/commit.c builtin/merge.c builtin/notes.c
+#: builtin/stash.c builtin/tag.c
+msgid "message"
+msgstr "teachtaireacht"
+
+#: builtin/commit-tree.c builtin/commit.c
+msgid "commit message"
+msgstr "teachtaireacht a thabhairt"
+
+#: builtin/commit-tree.c
+msgid "read commit log message from file"
+msgstr "léigh teachtaireacht logála tiomanta ón gcomhad"
+
+#: builtin/commit-tree.c builtin/commit.c builtin/merge.c builtin/pull.c
+#: builtin/revert.c
+msgid "GPG sign commit"
+msgstr "Tiomantas comhartha GPG"
+
+#: builtin/commit-tree.c
+msgid "must give exactly one tree"
+msgstr "caithfidh crann amháin a thabhairt go díreach"
+
+#: builtin/commit-tree.c
+msgid "git commit-tree: failed to read"
+msgstr "git commit-tree: theip ar léamh"
+
+#: builtin/commit.c
+msgid ""
+"git commit [-a | --interactive | --patch] [-s] [-v] [-u[<mode>]] [--amend]\n"
+" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
+"reword):]<commit>]\n"
+" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
+" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
+" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
+" [-i | -o] [--pathspec-from-file=<file> [--pathspec-file-nul]]\n"
+" [(--trailer <token>[(=|:)<value>])...] [-S[<keyid>]]\n"
+" [--] [<pathspec>...]"
+msgstr ""
+"git commit [-a | --interactive | --patch] [-s] [-v] [-u[<mode>]] [--amend]\n"
+" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
+"reword):]<commit>]\n"
+" [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
+" [--allow-empty-message] [--no-verify] [-e] [--author=<author>]\n"
+" [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
+" [-i | -o] [--pathspec-from-file=<file> [--pathspec-file-nul]]\n"
+" [(--trailer <token>[(=|:)<value>])...] [-S[<keyid>]]\n"
+" [--] [<pathspec>...]"
+
+#: builtin/commit.c
+msgid "git status [<options>] [--] [<pathspec>...]"
+msgstr "stádas git [<options>] [--] [<pathspec>...]"
+
+#: builtin/commit.c
+msgid ""
+"You asked to amend the most recent commit, but doing so would make\n"
+"it empty. You can repeat your command with --allow-empty, or you can\n"
+"remove the commit entirely with \"git reset HEAD^\".\n"
+msgstr ""
+"D'iarr tú an gealltanas is déanaí a leasú, ach déanfaí amhlaidh a dhéanamh\n"
+"folamh é. Is féidir leat d'ordú a athdhéanamh le --allow-empty, nó is féidir "
+"leat\n"
+"bain an tiomantas go hiomlán le “git reset HEAD^”.\n"
+
+#: builtin/commit.c
+msgid ""
+"The previous cherry-pick is now empty, possibly due to conflict resolution.\n"
+"If you wish to commit it anyway, use:\n"
+"\n"
+" git commit --allow-empty\n"
+"\n"
+msgstr ""
+"Tá an pioc silíní roimhe seo folamh anois, b'fhéidir mar gheall ar réiteach "
+"coinbhleachta.\n"
+"Más mian leat é a dhéanamh ar aon nós, bain úsáid as:\n"
+"\n"
+" git commit --allow-empty\n"
+"\n"
+
+#: builtin/commit.c
+msgid "Otherwise, please use 'git rebase --skip'\n"
+msgstr "Seachas sin, bain úsáid as 'git rebase --skip'\n"
+
+#: builtin/commit.c
+msgid "Otherwise, please use 'git cherry-pick --skip'\n"
+msgstr "Seachas sin, bain úsáid as 'git cherry-pick --skip'\n"
+
+#: builtin/commit.c
+msgid ""
+"and then use:\n"
+"\n"
+" git cherry-pick --continue\n"
+"\n"
+"to resume cherry-picking the remaining commits.\n"
+"If you wish to skip this commit, use:\n"
+"\n"
+" git cherry-pick --skip\n"
+"\n"
+msgstr ""
+"agus ansin bain úsáid as:\n"
+"\n"
+" git cherry-pick --continue\n"
+"\n"
+"chun na gealltanais atá fágtha a atosú ag piocadh silíní.\n"
+"Más mian leat an tiomantas seo a scipeáil, bain úsáid as:\n"
+"\n"
+" git cherry-pick --skip\n"
+
+#: builtin/commit.c read-cache.c
+msgid "updating files failed"
+msgstr "theip ar nuashonrú comhaid"
+
+#: builtin/commit.c
+msgid "failed to unpack HEAD tree object"
+msgstr "theip orthu réad crann HEAD a dhíphacáil"
+
+#: builtin/commit.c
+msgid "No paths with --include/--only does not make sense."
+msgstr "Níl ciall ag aon chosáin le --include/--only."
+
+#: builtin/commit.c
+msgid "unable to create temporary index"
+msgstr "in ann innéacs sealadach a chruthú"
+
+#: builtin/commit.c
+msgid "interactive add failed"
+msgstr "theip ar chur idirghníomh"
+
+#: builtin/commit.c
+msgid "unable to update temporary index"
+msgstr "in ann innéacs sealadach a nuashonrú"
+
+#: builtin/commit.c
+msgid "Failed to update main cache tree"
+msgstr "Theip ar phríomhchrann taisce a nuashonrú"
+
+#: builtin/commit.c
+msgid "cannot do a partial commit during a merge."
+msgstr "ní féidir le tiomantas páirteach a dhéanamh le linn cumaisc."
+
+#: builtin/commit.c
+msgid "cannot do a partial commit during a cherry-pick."
+msgstr "ní féidir le tiomantas páirteach a dhéanamh le linn pioc silíní."
+
+#: builtin/commit.c
+msgid "cannot do a partial commit during a rebase."
+msgstr "ní féidir le tiomantas páirteach a dhéanamh le linn athbhunaithe."
+
+#: builtin/commit.c
+msgid "cannot read the index"
+msgstr "ní féidir leis an innéacs a léamh"
+
+#: builtin/commit.c
+msgid "unable to write temporary index file"
+msgstr "in ann comhad innéacs sealadach a scríobh"
+
+#: builtin/commit.c
+#, c-format
+msgid "commit '%s' lacks author header"
+msgstr "níl ceannteideal údair ag comhoiriú '%s'"
+
+#: builtin/commit.c
+#, c-format
+msgid "commit '%s' has malformed author line"
+msgstr "comtal tá líne údair mífhoirmithe ag '%s'"
+
+#: builtin/commit.c
+msgid "malformed --author parameter"
+msgstr "paraiméadar --author mífhoirmithe"
+
+#: builtin/commit.c ident.c
+#, c-format
+msgid "invalid date format: %s"
+msgstr "formáid dáta neamhbhailí: %s"
+
+#: builtin/commit.c
+msgid ""
+"unable to select a comment character that is not used\n"
+"in the current commit message"
+msgstr ""
+"nach féidir carachtar tráchta a roghnú nach n-úsáidtear\n"
+"sa teachtaireacht tiomanta reatha"
+
+#: builtin/commit.c
+#, c-format
+msgid "could not lookup commit '%s'"
+msgstr "ní fhéadfaí cuardach a dhéanamh ar '%s'"
+
+#: builtin/commit.c builtin/shortlog.c
+#, c-format
+msgid "(reading log message from standard input)\n"
+msgstr "(teachtaireacht log a léamh ó ionchur caighdeánach)\n"
+
+#: builtin/commit.c
+msgid "could not read log from standard input"
+msgstr "ní raibh in ann log a léamh ó ionchur caighdeánach"
+
+#: builtin/commit.c
+#, c-format
+msgid "could not read log file '%s'"
+msgstr "ní raibh in ann comhad logála '%s' a léamh"
+
+#: builtin/commit.c
+#, c-format
+msgid "options '%s' and '%s:%s' cannot be used together"
+msgstr "ní féidir roghanna '%s' agus '%s: %s' a úsáid le chéile"
+
+#: builtin/commit.c
+msgid "could not read SQUASH_MSG"
+msgstr "ní raibh in ann SQUASH_MSG a léamh"
+
+#: builtin/commit.c
+msgid "could not read MERGE_MSG"
+msgstr "ní raibh in ann MERGE_MSG a léamh"
+
+#: builtin/commit.c bundle.c rerere.c sequencer.c
+#, c-format
+msgid "could not open '%s'"
+msgstr "ní fhéadfaí '%s' a oscailt"
+
+#: builtin/commit.c
+msgid "could not write commit template"
+msgstr "ní raibh sé in ann teimpléad tiomanta a"
+
+#: builtin/commit.c
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%s' will be ignored.\n"
+msgstr ""
+"Cuir isteach an teachtaireacht tiomanta le haghaidh d'athruithe. Línte ag "
+"tosú\n"
+"déanfar neamhaird le '%s'.\n"
+
+#: builtin/commit.c
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%s' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+"Cuir isteach an teachtaireacht tiomanta le haghaidh d'athruithe. Línte ag "
+"tosú\n"
+"déanfar neamhaird le '%s', agus déanfar teachtaireacht folamh deireadh leis "
+"an tiomantas.\n"
+
+#: builtin/commit.c
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%s' will be kept; you may remove them yourself if you want to.\n"
+msgstr ""
+"Cuir isteach an teachtaireacht tiomanta le haghaidh d'athruithe. Línte ag "
+"tosú\n"
+"coimeádfar le '%s'; féadfaidh tú iad a bhaint féin más mian leat.\n"
+
+#: builtin/commit.c
+#, c-format
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '%s' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+"Cuir isteach an teachtaireacht tiomanta le haghaidh d'athruithe. Línte ag "
+"tosú\n"
+"coimeádfar le '%s'; féadfaidh tú iad a bhaint féin más mian leat.\n"
+"Déanann teachtaireacht folamh deireadh leis an tiomantas.\n"
+
+#: builtin/commit.c
+msgid ""
+"\n"
+"It looks like you may be committing a merge.\n"
+"If this is not correct, please run\n"
+"\tgit update-ref -d MERGE_HEAD\n"
+"and try again.\n"
+msgstr ""
+"\n"
+"Is cosúil go bhfuil tú ag déanamh cumasc.\n"
+"Mura bhfuil sé seo ceart, rith\n"
+"git update-ref -d MERGE_HEAD\n"
+"agus déan iarracht arís.\n"
+
+#: builtin/commit.c
+msgid ""
+"\n"
+"It looks like you may be committing a cherry-pick.\n"
+"If this is not correct, please run\n"
+"\tgit update-ref -d CHERRY_PICK_HEAD\n"
+"and try again.\n"
+msgstr ""
+"\n"
+"Is cosúil go bhfuil tú ag déanamh rogha neamhghnách.\n"
+"Mura bhfuil sé seo ceart, rith\n"
+"\tgit update-ref -d CHERRY_PICK_HEAD\n"
+"agus déan iarracht arís.\n"
+
+#: builtin/commit.c
+#, c-format
+msgid "%sAuthor: %.*s <%.*s>"
+msgstr "%sÚdar: %.*s <%.*s>"
+
+#: builtin/commit.c
+#, c-format
+msgid "%sDate: %s"
+msgstr "%sDáta: %s"
+
+#: builtin/commit.c
+#, c-format
+msgid "%sCommitter: %.*s <%.*s>"
+msgstr "%sCeannasaí: %.*s <%.*s>"
+
+#: builtin/commit.c
+msgid "Cannot read index"
+msgstr "Ní féidir innéacs a léamh"
+
+#: builtin/commit.c builtin/tag.c
+msgid "unable to pass trailers to --trailers"
+msgstr "nach féidir leantóirí a chur chuig --trailers"
+
+#: builtin/commit.c
+msgid "Error building trees"
+msgstr "Earráid ag tógáil crainn"
+
+#: builtin/commit.c builtin/tag.c
+#, c-format
+msgid "Please supply the message using either -m or -F option.\n"
+msgstr ""
+"Soláthair an teachtaireacht le do thoil ag baint úsáide as rogha -m nó -F.\n"
+
+#: builtin/commit.c
+#, c-format
+msgid "--author '%s' is not 'Name <email>' and matches no existing author"
+msgstr ""
+"Ní 'Ainm' é --author '%s' agus ní mheaitseálann <email>aon údar atá ann "
+"cheana"
+
+#: builtin/commit.c
+#, c-format
+msgid "Invalid ignored mode '%s'"
+msgstr "Modh neamhbhailí neamhaird '%s'"
+
+#: builtin/commit.c
+#, c-format
+msgid "Invalid untracked files mode '%s'"
+msgstr "Modh comhaid neamhrianaithe neamhbhailí '%s'"
+
+#: builtin/commit.c
+msgid "You are in the middle of a merge -- cannot reword."
+msgstr "Tá tú i lár cumaisc - ní féidir athfhocal a athfhocal."
+
+#: builtin/commit.c
+msgid "You are in the middle of a cherry-pick -- cannot reword."
+msgstr "Tá tú i lár pioc silíní - ní féidir athfhocal a athfhocal."
+
+#: builtin/commit.c
+#, c-format
+msgid "reword option of '%s' and path '%s' cannot be used together"
+msgstr "ní féidir rogha athfhocal de '%s' agus cosán '%s' a úsáid le chéile"
+
+#: builtin/commit.c
+#, c-format
+msgid "reword option of '%s' and '%s' cannot be used together"
+msgstr "ní féidir rogha athfhocal de '%s' agus '%s' a úsáid le chéile"
+
+#: builtin/commit.c
+msgid "You have nothing to amend."
+msgstr "Níl aon rud le leasú agat."
+
+#: builtin/commit.c
+msgid "You are in the middle of a merge -- cannot amend."
+msgstr "Tá tú i lár cumaisc - ní féidir leat leasú."
+
+#: builtin/commit.c
+msgid "You are in the middle of a cherry-pick -- cannot amend."
+msgstr "Tá tú i lár rogha silíní - ní féidir leat leasú."
+
+#: builtin/commit.c
+msgid "You are in the middle of a rebase -- cannot amend."
+msgstr "Tá tú i lár athbhunaithe - ní féidir leat leasú."
+
+#: builtin/commit.c
+msgid "--reset-author can be used only with -C, -c or --amend."
+msgstr "Ní féidir --reset-author a úsáid ach le -C, -c nó --amend."
+
+#: builtin/commit.c
+#, c-format
+msgid "unknown option: --fixup=%s:%s"
+msgstr "rogha anaithnid: --fixup=%s:%s"
+
+#: builtin/commit.c
+#, c-format
+msgid "paths '%s ...' with -a does not make sense"
+msgstr "ní chiallaíonn cosáin '%s... 'le -a"
+
+#: builtin/commit.c
+msgid "show status concisely"
+msgstr "taispeáin stádas go hachomair"
+
+#: builtin/commit.c
+msgid "show branch information"
+msgstr "taispeáin faisnéis bhrainse"
+
+#: builtin/commit.c
+msgid "show stash information"
+msgstr "taispeáin faisnéis stash"
+
+#: builtin/commit.c
+msgid "compute full ahead/behind values"
+msgstr "luachanna iomlána/taobh thiar de na luachanna a ríomh"
+
+#: builtin/commit.c
+msgid "version"
+msgstr "leagan"
+
+#: builtin/commit.c builtin/fetch.c builtin/push.c builtin/worktree.c
+msgid "machine-readable output"
+msgstr "aschur inléite meaisín"
+
+#: builtin/commit.c
+msgid "show status in long format (default)"
+msgstr "stádas taispeáint i bhformáid fhada (réamhshocraithe)"
+
+#: builtin/commit.c
+msgid "terminate entries with NUL"
+msgstr "foirceannadh na hiontrálacha"
+
+#: builtin/commit.c
+msgid "show untracked files, optional modes: all, normal, no. (Default: all)"
+msgstr ""
+"taispeáin comhaid neamhrianaithe, modhanna roghnacha: gach, gnáth, níl. "
+"(Réamhshocraithe: gach)"
+
+#: builtin/commit.c
+msgid ""
+"show ignored files, optional modes: traditional, matching, no. (Default: "
+"traditional)"
+msgstr ""
+"taispeáint comhaid neamhaird orthu, modhanna roghnacha: traidisiúnta, "
+"meaitseáil, (Réamhshocraithe: traidisiúnta)"
+
+#: builtin/commit.c parse-options.h
+msgid "when"
+msgstr "nuair a"
+
+#: builtin/commit.c
+msgid ""
+"ignore changes to submodules, optional when: all, dirty, untracked. "
+"(Default: all)"
+msgstr ""
+"neamhaird a dhéanamh ar athruithe ar fho-mhodúil, roghnach nuair a bhíonn: "
+"gach, salach, gan rianú. (Réamhshocraithe: gach)"
+
+#: builtin/commit.c
+msgid "list untracked files in columns"
+msgstr "liostáil comhaid neamhrianaithe i gcolúin"
+
+#: builtin/commit.c
+msgid "do not detect renames"
+msgstr "ná athainmneacha a bhrath"
+
+#: builtin/commit.c
+msgid "detect renames, optionally set similarity index"
+msgstr "athainmneacha a bhrath, innéacs cosúlachta a shocrú go ro"
+
+#: builtin/commit.c
+msgid "Unsupported combination of ignored and untracked-files arguments"
+msgstr "Teaglaim gan tacaíocht d'argóintí comhaid a neamhaird agus gan rianú"
+
+#: builtin/commit.c
+msgid "suppress summary after successful commit"
+msgstr "achoimre a chur faoi chois tar éis tiomantas"
+
+#: builtin/commit.c
+msgid "show diff in commit message template"
+msgstr "taispeáin diff i teimpléad teachtaireachta tiomanta"
+
+#: builtin/commit.c
+msgid "Commit message options"
+msgstr "Tiomanta roghanna teachtaire"
+
+#: builtin/commit.c builtin/merge.c builtin/tag.c
+msgid "read message from file"
+msgstr "léigh teachtaireacht ón gcomhad"
+
+#: builtin/commit.c
+msgid "author"
+msgstr "údar"
+
+#: builtin/commit.c
+msgid "override author for commit"
+msgstr "an t-údar a shárú le haghaidh tiomantas"
+
+#: builtin/commit.c builtin/gc.c
+msgid "date"
+msgstr "dáta"
+
+#: builtin/commit.c
+msgid "override date for commit"
+msgstr "dáta athsháraithe le haghaidh tiomanta"
+
+#: builtin/commit.c parse-options.h ref-filter.h
+msgid "commit"
+msgstr "tiomantas"
+
+#: builtin/commit.c
+msgid "reuse and edit message from specified commit"
+msgstr "teachtaireacht a athúsáid agus a chur in eagar ó thiomantas"
+
+#: builtin/commit.c
+msgid "reuse message from specified commit"
+msgstr "teachtaireacht athúsáid ó thiomantas sonraithe"
+
+#. TRANSLATORS: Leave "[(amend|reword):]" as-is,
+#. and only translate <commit>.
+#.
+#: builtin/commit.c
+msgid "[(amend|reword):]commit"
+msgstr "[(leaso|athfhocal):] comhartha"
+
+#: builtin/commit.c
+msgid ""
+"use autosquash formatted message to fixup or amend/reword specified commit"
+msgstr ""
+"úsáid teachtaireacht fhormáidithe autosquash chun gealltanas sonraithe a "
+"shocrú nó a leasú/athfhocal"
+
+#: builtin/commit.c
+msgid "use autosquash formatted message to squash specified commit"
+msgstr ""
+"úsáid teachtaireacht fhormáidithe autosquash chun tiomantas sonraithe squash"
+
+#: builtin/commit.c
+msgid "the commit is authored by me now (used with -C/-c/--amend)"
+msgstr "tá an gealltanas údar agam anois (úsáidtear le -C/-c/--amend)"
+
+#: builtin/commit.c builtin/interpret-trailers.c builtin/tag.c
+msgid "trailer"
+msgstr "leantóir"
+
+#: builtin/commit.c builtin/tag.c
+msgid "add custom trailer(s)"
+msgstr "cuir leantóir (í) saincheaptha"
+
+#: builtin/commit.c builtin/log.c builtin/merge.c builtin/pull.c
+#: builtin/revert.c
+msgid "add a Signed-off-by trailer"
+msgstr "cuir leantóir sínithe as"
+
+#: builtin/commit.c
+msgid "use specified template file"
+msgstr "úsáid comhad teimpléad sonraithe"
+
+#: builtin/commit.c
+msgid "force edit of commit"
+msgstr "eagarthóireacht fórsa ar thiomantas"
+
+#: builtin/commit.c
+msgid "include status in commit message template"
+msgstr "áireamh stádas i dteimpléad teachtaireachta"
+
+#: builtin/commit.c
+msgid "Commit contents options"
+msgstr "Tiomnaigh roghanna ábhair"
+
+#: builtin/commit.c
+msgid "commit all changed files"
+msgstr "gach comhad athraithe a thiomnú"
+
+#: builtin/commit.c
+msgid "add specified files to index for commit"
+msgstr "cuir comhaid sonraithe leis an innéacs le haghaidh tiomanta"
+
+#: builtin/commit.c
+msgid "interactively add files"
+msgstr "cuir comhaid idirghníomhach"
+
+#: builtin/commit.c
+msgid "interactively add changes"
+msgstr "cuir athruithe idirghníomhach"
+
+#: builtin/commit.c
+msgid "commit only specified files"
+msgstr "ach comhaid shonraithe a dhéanamh"
+
+#: builtin/commit.c
+msgid "bypass pre-commit and commit-msg hooks"
+msgstr "seachbhóthar crúcaí réamh-thiomanta agus comh-msg"
+
+#: builtin/commit.c
+msgid "show what would be committed"
+msgstr "taispeáint cad a bheadh tiomanta"
+
+#: builtin/commit.c
+msgid "amend previous commit"
+msgstr "leasú a leasú"
+
+#: builtin/commit.c
+msgid "bypass post-rewrite hook"
+msgstr "seachbhóthar crúca iar-athsc"
+
+#: builtin/commit.c
+msgid "ok to record an empty change"
+msgstr "ceart go leor chun athrú folamh a thaifeadadh"
+
+#: builtin/commit.c
+msgid "ok to record a change with an empty message"
+msgstr "ceart go leor chun athrú a thaifeadadh le teachtaireacht folamh"
+
+#: builtin/commit.c sequencer.c
+msgid "could not parse HEAD commit"
+msgstr "ní fhéadfadh sé gealltanas HEAD a pharsáil"
+
+#: builtin/commit.c
+#, c-format
+msgid "Corrupt MERGE_HEAD file (%s)"
+msgstr "Comhad truaillithe MERGE_HEAD (%s)"
+
+#: builtin/commit.c
+msgid "could not read MERGE_MODE"
+msgstr "ní raibh in ann MERGE_MODE a léamh"
+
+#: builtin/commit.c
+#, c-format
+msgid "could not read commit message: %s"
+msgstr "ní féidir teachtaireacht tiomanta a léamh: %s"
+
+#: builtin/commit.c
+#, c-format
+msgid "Aborting commit due to empty commit message.\n"
+msgstr "Tiomantas a ghabháil mar gheall ar theachtaireacht tiomanta folamh\n"
+
+#: builtin/commit.c
+#, c-format
+msgid "Aborting commit; you did not edit the message.\n"
+msgstr "Tiomantas a ghearradh; níor chuir tú an teachtaireacht in eagar.\n"
+
+#: builtin/commit.c
+#, c-format
+msgid "Aborting commit due to empty commit message body.\n"
+msgstr ""
+"Tiomantas a ghabháil mar gheall ar chorp teachtaireachta tiomanta folamh.\n"
+
+#: builtin/commit.c
+msgid ""
+"repository has been updated, but unable to write\n"
+"new index file. Check that disk is not full and quota is\n"
+"not exceeded, and then \"git restore --staged :/\" to recover."
+msgstr ""
+"nuashonraíodh an stór, ach ní féidir scríobh\n"
+"comhad innéacs nua. Seiceáil nach bhfuil an diosca \n"
+"lán agus nach bhfuil an cuóta sáraithe, agus ansin \"git restore --staged :/"
+"\" chun é a aisghabháil."
+
+#: builtin/config.c
+msgid "git config list [<file-option>] [<display-option>] [--includes]"
+msgstr "liosta config git [<file-option>] [<display-option>] [--include]"
+
+#: builtin/config.c
+msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp] [--value=<value>] [--fixed-value] [--default=<default>] <name>"
+msgstr ""
+"<value><default>git config a fháil [<file-option>] [] [--include<display-"
+"option>] [--all] [--regexp] [--value=] [--luach seasta] [--default=] <name>"
+
+#: builtin/config.c
+msgid ""
+"git config set [<file-option>] [--type=<type>] [--all] [--value=<value>] [--"
+"fixed-value] <name> <value>"
+msgstr ""
+"<value>git config set [<file-option>] [--type =] [--all] [--value=<type>] [--"
+"luach seasta] <name><value>"
+
+#: builtin/config.c
+msgid ""
+"git config unset [<file-option>] [--all] [--value=<value>] [--fixed-value] "
+"<name>"
+msgstr ""
+"<value>git config gan socrú [] [--gach<file-option>] [--value=] [--luach "
+"seasta] <name>"
+
+#: builtin/config.c
+msgid "git config rename-section [<file-option>] <old-name> <new-name>"
+msgstr "<file-option>roinn athainmnithe git config [] <old-name><new-name>"
+
+#: builtin/config.c
+msgid "git config remove-section [<file-option>] <name>"
+msgstr "<file-option>roinn aistrithe git config [] <name>"
+
+#: builtin/config.c
+msgid "git config edit [<file-option>]"
+msgstr "<file-option>Eagarthóireacht config git []"
+
+#: builtin/config.c
+msgid "git config [<file-option>] --get-colorbool <name> [<stdout-is-tty>]"
+msgstr "<name><stdout-is-tty>git config [<file-option>] --get-colorbool []"
+
+#: builtin/config.c
+msgid ""
+"git config get [<file-option>] [<display-option>] [--includes] [--all] [--"
+"regexp=<regexp>] [--value=<value>] [--fixed-value] [--default=<default>] "
+"<name>"
+msgstr ""
+"<value><default>git config a fháil [<file-option>] [] [--include<display-"
+"option>] [--all] [--regexp=] [-- <regexp>value=] [--luach seasta] [--"
+"default=] <name>"
+
+#: builtin/config.c
+msgid ""
+"git config set [<file-option>] [--type=<type>] [--comment=<message>] [--all] "
+"[--value=<value>] [--fixed-value] <name> <value>"
+msgstr ""
+"<value>git config set [<file-option>] [--type =] [--comment =<type>] [--all] "
+"[--value=<message>] [--luach seasta] <name><value>"
+
+#: builtin/config.c
+msgid "Config file location"
+msgstr "Suíomh comhad Config"
+
+#: builtin/config.c
+msgid "use global config file"
+msgstr "bain úsáid as comhad cumraíochta domhanda"
+
+#: builtin/config.c
+msgid "use system config file"
+msgstr "bain úsáid as comhad cumraíochta córais"
+
+#: builtin/config.c
+msgid "use repository config file"
+msgstr "bain úsáid as comhad cumraíochta stórais"
+
+#: builtin/config.c
+msgid "use per-worktree config file"
+msgstr "bain úsáid as comhad cumraíochta in aghaidh an chrann oibre"
+
+#: builtin/config.c builtin/gc.c
+msgid "use given config file"
+msgstr "bain úsáid as comhad cumraíochta tugtha"
+
+#: builtin/config.c
+msgid "blob-id"
+msgstr "blob-id"
+
+#: builtin/config.c
+msgid "read config from given blob object"
+msgstr "léigh cumraíocht ó réad blob a thugtar"
+
+#: builtin/config.c
+msgid "Type"
+msgstr "Cineál"
+
+#: builtin/config.c builtin/hash-object.c
+msgid "type"
+msgstr "cineál"
+
+#: builtin/config.c
+msgid "value is given this type"
+msgstr "tugtar luach an cineál seo"
+
+#: builtin/config.c
+msgid "value is \"true\" or \"false\""
+msgstr "tá luach “fíor” nó “bréagach”"
+
+#: builtin/config.c
+msgid "value is decimal number"
+msgstr "is é luach uimhir deachúil"
+
+#: builtin/config.c
+msgid "value is --bool or --int"
+msgstr "is é luach --bool nó --int"
+
+#: builtin/config.c
+msgid "value is --bool or string"
+msgstr "is é luach --bool nó teaghrán"
+
+#: builtin/config.c
+msgid "value is a path (file or directory name)"
+msgstr "is cosán é luach (ainm comhad nó eolaire)"
+
+#: builtin/config.c
+msgid "value is an expiry date"
+msgstr "is dáta éaga é luach"
+
+#: builtin/config.c
+msgid "Display options"
+msgstr "Roghanna taispeána"
+
+#: builtin/config.c
+msgid "terminate values with NUL byte"
+msgstr "foirceannadh luachanna le nóta NUL"
+
+#: builtin/config.c
+msgid "show variable names only"
+msgstr "taispeáin ainmneacha athróg amháin"
+
+#: builtin/config.c
+msgid "show origin of config (file, standard input, blob, command line)"
+msgstr ""
+"taispeáint bunús an chumraíochta (comhad, ionchur caighdeánach, blob, líne "
+"ordaithe)"
+
+#: builtin/config.c
+msgid "show scope of config (worktree, local, global, system, command)"
+msgstr ""
+"taispeáin raon feidhme an chumraíochta (crann oibre, áitiúil, domhanda, "
+"córas, ordú)"
+
+#: builtin/config.c
+msgid "show config keys in addition to their values"
+msgstr "taispeáin eochracha cumraithe i dteannta lena luachanna"
+
+#: builtin/config.c
+#, c-format
+msgid "unrecognized --type argument, %s"
+msgstr "argóint --type gan aithint, %s"
+
+#: builtin/config.c
+msgid "only one type at a time"
+msgstr "ach cineál amháin ag an am"
+
+#: builtin/config.c
+#, c-format
+msgid "wrong number of arguments, should be %d"
+msgstr "líon mícheart na n-argóintí, ba chóir go mbeadh %d"
+
+#: builtin/config.c
+#, c-format
+msgid "wrong number of arguments, should be from %d to %d"
+msgstr "ba chóir go mbeadh líon mícheart na n-argóintí ó %d go %d"
+
+#: builtin/config.c
+#, c-format
+msgid "invalid key pattern: %s"
+msgstr "patrún eochair neamhbhailí: %s"
+
+#: builtin/config.c config.c
+#, c-format
+msgid "invalid pattern: %s"
+msgstr "patrún neamhbhailí: %s"
+
+#: builtin/config.c
+#, c-format
+msgid "failed to format default config value: %s"
+msgstr "theip ar luach cumraíochta réamhshocraithe a fhormáidiú: %s"
+
+#: builtin/config.c
+#, c-format
+msgid "cannot parse color '%s'"
+msgstr "ní féidir dath '%s' a pháirseáil"
+
+#: builtin/config.c
+msgid "unable to parse default color value"
+msgstr "in ann luach dath réamhshocraithe a pharsáil"
+
+#: builtin/config.c
+msgid "not in a git directory"
+msgstr "nach bhfuil i eolaire git"
+
+#: builtin/config.c
+msgid "writing to stdin is not supported"
+msgstr "ní thacaítear le scríobh chuig stdin"
+
+#: builtin/config.c
+msgid "writing config blobs is not supported"
+msgstr "ní thacaítear le blobs cumraíochta a scríobh"
+
+#: builtin/config.c
+#, c-format
+msgid ""
+"# This is Git's per-user configuration file.\n"
+"[user]\n"
+"# Please adapt and uncomment the following lines:\n"
+"#\tname = %s\n"
+"#\temail = %s\n"
+msgstr ""
+"# Seo comhad cumraíochta Git in aghaidh an úsáideora.\n"
+"[úsáideoir]\n"
+"# Oiriúnaigh agus bain trácht de na línte seo a leanas le do thoil:\n"
+"#\tainm = %s\n"
+"#\tríomhphost = %s\n"
+
+#: builtin/config.c
+msgid "only one config file at a time"
+msgstr "ach comhad cumraithe amháin ag an am"
+
+#: builtin/config.c
+msgid "--local can only be used inside a git repository"
+msgstr "Ní féidir --local a úsáid ach taobh istigh de stór git"
+
+#: builtin/config.c
+msgid "--blob can only be used inside a git repository"
+msgstr "Ní féidir --blob a úsáid ach taobh istigh de stór git"
+
+#: builtin/config.c
+msgid "--worktree can only be used inside a git repository"
+msgstr "Ní féidir --worktree a úsáid ach taobh istigh de stór git"
+
+#: builtin/config.c builtin/gc.c
+msgid "$HOME not set"
+msgstr "Níl $HOME socraithe"
+
+#: builtin/config.c
+msgid ""
+"--worktree cannot be used with multiple working trees unless the config\n"
+"extension worktreeConfig is enabled. Please read \"CONFIGURATION FILE\"\n"
+"section in \"git help worktree\" for details"
+msgstr ""
+"Ní féidir --worktree a úsáid le crainn oibre iolracha mura bhfuil an "
+"cumraíocht\n"
+"Tá síneadh WorkTreeConfig cumasaithe. Léigh “COMHAD CUMRAÍOCHTA”\n"
+"roinn i “git help worktree” le haghaidh sonraí"
+
+#: builtin/config.c
+msgid "Other"
+msgstr "Eile"
+
+#: builtin/config.c
+msgid "respect include directives on lookup"
+msgstr "meas lena n-áirítear treoracha maidir le cuardach"
+
+#: builtin/config.c
+#, c-format
+msgid "unable to read config file '%s'"
+msgstr "nach féidir an comhad cumraithe '%s' a léamh"
+
+#: builtin/config.c
+msgid "error processing config file(s)"
+msgstr "comhad (í) cumraíochta próiseála earráide"
+
+#: builtin/config.c
+msgid "Filter options"
+msgstr "Roghanna scagaire"
+
+#: builtin/config.c
+msgid "return all values for multi-valued config options"
+msgstr ""
+"gach luach a thabhairt ar ais le haghaidh roghanna cumraithe illuachmhara"
+
+#: builtin/config.c
+msgid "interpret the name as a regular expression"
+msgstr "léirmhíniú an t-ainm mar abairt rialta"
+
+#: builtin/config.c
+msgid "show config with values matching the pattern"
+msgstr "taispeáin cumraíocht le luachanna a mheaitseann an phatrún"
+
+#: builtin/config.c
+msgid "use string equality when comparing values to value pattern"
+msgstr "bain úsáid as comhionannas sreangán agus luachanna á gcomparáid"
+
+#: builtin/config.c
+msgid "URL"
+msgstr "URL"
+
+#: builtin/config.c
+msgid "show config matching the given URL"
+msgstr "taispeáin configí a mheaitseáil leis an URL tugtha"
+
+#: builtin/config.c
+msgid "value"
+msgstr "luach"
+
+#: builtin/config.c
+msgid "use default value when missing entry"
+msgstr "bain úsáid as luach réamhshocraithe agus iontráil"
+
+#: builtin/config.c
+msgid "--fixed-value only applies with 'value-pattern'"
+msgstr "Ní bhaineann --fixed-value ach le 'patrún luacha'"
+
+#: builtin/config.c
+msgid "--default= cannot be used with --all or --url="
+msgstr "Ní féidir --default= a úsáid le --all nó --url ="
+
+#: builtin/config.c
+msgid "--url= cannot be used with --all, --regexp or --value"
+msgstr "Ní féidir --url = a úsáid le --all, --regexp nó --value"
+
+#: builtin/config.c
+msgid "Filter"
+msgstr "Scagaire"
+
+#: builtin/config.c
+msgid "replace multi-valued config option with new value"
+msgstr "luach nua a chur in ionad rogha cumraíochta illuachmhara"
+
+#: builtin/config.c
+msgid "human-readable comment string (# will be prepended as needed)"
+msgstr ""
+"teaghrán tráchtaireachta inléite don duine (déanfar # a ullmhú de réir mar "
+"is gá)"
+
+#: builtin/config.c
+msgid "add a new line without altering any existing values"
+msgstr "líne nua a chur leis gan aon luachanna atá ann cheana a athrú"
+
+#: builtin/config.c
+msgid "--fixed-value only applies with --value=<pattern>"
+msgstr "ní bhaineann --fixed-value ach le --value=<pattern>"
+
+#: builtin/config.c
+msgid "--append cannot be used with --value=<pattern>"
+msgstr "Ní féidir --append a úsáid le --value=<pattern>"
+
+#: builtin/config.c
+#, c-format
+msgid ""
+"cannot overwrite multiple values with a single value\n"
+" Use a regexp, --add or --replace-all to change %s."
+msgstr ""
+"ní féidir luachanna iolracha a fhorscríobh le luach amháin\n"
+" Úsáid regexp, --add nó --replace-all chun %s a athrú."
+
+#: builtin/config.c
+#, c-format
+msgid "no such section: %s"
+msgstr "gan aon chuid den sórt sin: %s"
+
+#: builtin/config.c
+msgid "editing stdin is not supported"
+msgstr "ní thacaítear le stdin eagarthóireachta"
+
+#: builtin/config.c
+msgid "editing blobs is not supported"
+msgstr "ní thacaítear le blobs eagarthóireachta"
+
+#: builtin/config.c
+#, c-format
+msgid "cannot create configuration file %s"
+msgstr "ní féidir comhad cumraíochta %s a chruthú"
+
+#: builtin/config.c
+msgid "Action"
+msgstr "Gníomhaíocht"
+
+#: builtin/config.c
+msgid "get value: name [<value-pattern>]"
+msgstr "luach a fháil: ainm [<value-pattern>]"
+
+#: builtin/config.c
+msgid "get all values: key [<value-pattern>]"
+msgstr "faigh na luachanna go léir: eochair [<value-pattern>]"
+
+#: builtin/config.c
+msgid "get values for regexp: name-regex [<value-pattern>]"
+msgstr "<value-pattern>luachanna a fháil do regexp: ainm-regex []"
+
+#: builtin/config.c
+msgid "get value specific for the URL: section[.var] URL"
+msgstr "faigh luach sonrach don URL: rannán [.var] URL"
+
+#: builtin/config.c
+msgid "replace all matching variables: name value [<value-pattern>]"
+msgstr "athróg meaitseála go léir in ionad: luach ainm [<value-pattern>]"
+
+#: builtin/config.c
+msgid "add a new variable: name value"
+msgstr "cuir athróg nua leis: luach ainm"
+
+#: builtin/config.c
+msgid "remove a variable: name [<value-pattern>]"
+msgstr "bhaint athróg: ainm [<value-pattern>]"
+
+#: builtin/config.c
+msgid "remove all matches: name [<value-pattern>]"
+msgstr "bhaint gach cluiche: ainm [<value-pattern>]"
+
+#: builtin/config.c
+msgid "rename section: old-name new-name"
+msgstr "athainmnigh an chuid: sean-ainm nua-ainm"
+
+#: builtin/config.c
+msgid "remove a section: name"
+msgstr "cuid a bhaint: ainm"
+
+#: builtin/config.c
+msgid "list all"
+msgstr "liostáil go léir"
+
+#: builtin/config.c
+msgid "open an editor"
+msgstr "eagarthóir a oscailt"
+
+#: builtin/config.c
+msgid "find the color configured: slot [<default>]"
+msgstr "faigh an dath cumraithe: sliotán [<default>]"
+
+#: builtin/config.c
+msgid "find the color setting: slot [<stdout-is-tty>]"
+msgstr "faigh an socrú dath: sliotán [<stdout-is-tty>]"
+
+#: builtin/config.c
+msgid "with --get, use default value when missing entry"
+msgstr "le --get, bain úsáid as luach réamhshocraithe agus iontráil in easnamh"
+
+#: builtin/config.c
+msgid "--get-color and variable type are incoherent"
+msgstr "Tá --get-color agus cineál athraitheach neamhchomhtháite"
+
+#: builtin/config.c
+msgid "no action specified"
+msgstr "aon ghníomh sonraithe"
+
+#: builtin/config.c
+msgid "--name-only is only applicable to --list or --get-regexp"
+msgstr "Níl --name-only infheidhme ach le --list nó --get-regexp"
+
+#: builtin/config.c
+msgid ""
+"--show-origin is only applicable to --get, --get-all, --get-regexp, and --"
+"list"
+msgstr ""
+"Níl --show-origin infheidhme ach le --get, --get-all, --get-regexp, agus --"
+"list"
+
+#: builtin/config.c
+msgid "--default is only applicable to --get"
+msgstr "Níl --default infheidhme ach le --get"
+
+#: builtin/config.c
+msgid "--comment is only applicable to add/set/replace operations"
+msgstr ""
+"Níl --comment infheidhme ach le hoibríochtaí a chur leis /socraí/athsholáthar"
+
+#: builtin/count-objects.c
+msgid "print sizes in human readable format"
+msgstr "méideanna priontála i bhformáid inléite don duine"
+
+#: builtin/credential-cache--daemon.c
+#, c-format
+msgid ""
+"The permissions on your socket directory are too loose; other\n"
+"users may be able to read your cached credentials. Consider running:\n"
+"\n"
+"\tchmod 0700 %s"
+msgstr ""
+"Tá na ceadanna ar d'eolaire soicéad ró-scaoilte; eile\n"
+"b'fhéidir go mbeidh úsáideoirí in ann do dhintiúir taiscéadaithe a léamh. "
+"Smaoinigh ar rith:\n"
+"\n"
+" chmod 0700 %s"
+
+#: builtin/credential-cache--daemon.c
+msgid "print debugging messages to stderr"
+msgstr "teachtaireachtaí dífhabhtaithe a phriontáil chuig stderr"
+
+#: builtin/credential-cache--daemon.c
+msgid "credential-cache--daemon unavailable; no unix socket support"
+msgstr "credential-cache--daemon ar fáil; gan aon tacaíocht soicéad unix"
+
+#: builtin/credential-cache.c
+msgid "credential-cache unavailable; no unix socket support"
+msgstr "taisce creidiúnaithe ar fáil; gan aon tacaíocht soicéad unix"
+
+#: builtin/credential-store.c
+#, c-format
+msgid "unable to get credential storage lock in %d ms"
+msgstr "in ann glas stórála creidiúnaithe a fháil in %d ms"
+
+#: builtin/describe.c
+msgid ""
+"git describe [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>...]"
+msgstr ""
+"git describe [--all] [--tags] [--contains] [--abbrev=<n>] [<commit-ish>...]"
+
+#: builtin/describe.c
+msgid ""
+"git describe [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]"
+msgstr ""
+"git describe [--all] [--tags] [--contains] [--abbrev=<n>] --dirty[=<mark>]"
+
+#: builtin/describe.c
+msgid "git describe <blob>"
+msgstr "git cur síos <blob>"
+
+#: builtin/describe.c
+msgid "head"
+msgstr "ceann"
+
+#: builtin/describe.c
+msgid "lightweight"
+msgstr "éadrom"
+
+#: builtin/describe.c
+msgid "annotated"
+msgstr "anótáilte"
+
+#: builtin/describe.c
+#, c-format
+msgid "annotated tag %s not available"
+msgstr "níl clib anótáilte %s ar fáil"
+
+#: builtin/describe.c
+#, c-format
+msgid "tag '%s' is externally known as '%s'"
+msgstr "tugtar '%s' ar an gclib '%s' go seachtrach"
+
+#: builtin/describe.c
+#, c-format
+msgid "no tag exactly matches '%s'"
+msgstr "níl aon chlib ag teacht go díreach le '%s'"
+
+#: builtin/describe.c
+#, c-format
+msgid "No exact match on refs or tags, searching to describe\n"
+msgstr ""
+"Níl aon mheaitseáil cruinn ar thaifeanna nó clibeanna, ag cuardach chun cur "
+"síos\n"
+
+#: builtin/describe.c
+#, c-format
+msgid "finished search at %s\n"
+msgstr "cuardach críochnaithe ag %s\n"
+
+#: builtin/describe.c
+#, c-format
+msgid ""
+"No annotated tags can describe '%s'.\n"
+"However, there were unannotated tags: try --tags."
+msgstr ""
+"Ní féidir le haon chlibeanna anótaithe cur síos a dhéanamh ar '%s'.\n"
+"Mar sin féin, bhí clibeanna gan anótáil ann: triail as --tags."
+
+#: builtin/describe.c
+#, c-format
+msgid ""
+"No tags can describe '%s'.\n"
+"Try --always, or create some tags."
+msgstr ""
+"Ní féidir le clibeanna cur síos a dhéanamh ar '%s'.\n"
+"Bain triail as --always, nó cruthaigh roinnt clibeanna."
+
+#: builtin/describe.c
+#, c-format
+msgid "traversed %lu commits\n"
+msgstr "gealltanais %lu a thrasnaíodh\n"
+
+#: builtin/describe.c
+#, c-format
+msgid "found %i tags; gave up search at %s\n"
+msgstr "fuarthas %i clibeanna; thréig an cuardach ag %s\n"
+
+#: builtin/describe.c
+#, c-format
+msgid "describe %s\n"
+msgstr "déan cur síos ar %s\n"
+
+#: builtin/describe.c
+#, c-format
+msgid "Not a valid object name %s"
+msgstr "Ní ainm réad bailí %s"
+
+#: builtin/describe.c
+#, c-format
+msgid "%s is neither a commit nor blob"
+msgstr "Ní gealltanas ná blob é %s"
+
+#: builtin/describe.c
+msgid "find the tag that comes after the commit"
+msgstr "faigh an chlib a thagann tar éis an tiomanta"
+
+#: builtin/describe.c
+msgid "debug search strategy on stderr"
+msgstr "straitéis cuardaigh dífhabhtú ar stderr"
+
+#: builtin/describe.c
+msgid "use any ref"
+msgstr "bain úsáid as aon tagairt"
+
+#: builtin/describe.c
+msgid "use any tag, even unannotated"
+msgstr "úsáid aon chlib, fiú gan anótáil"
+
+#: builtin/describe.c
+msgid "always use long format"
+msgstr "úsáid formáid fada i gcónaí"
+
+#: builtin/describe.c
+msgid "only follow first parent"
+msgstr "lean ach an chéad thuismitheoir"
+
+#: builtin/describe.c
+msgid "only output exact matches"
+msgstr "ach cluichí cruinne aschuir"
+
+#: builtin/describe.c
+msgid "consider <n> most recent tags (default: 10)"
+msgstr "machnamh <n>ar na clibeanna is déanaí (réamhshocraithe: 10)"
+
+#: builtin/describe.c
+msgid "only consider tags matching <pattern>"
+msgstr "ní mheas ach meaitseáil clibeanna <pattern>"
+
+#: builtin/describe.c
+msgid "do not consider tags matching <pattern>"
+msgstr "ná smaoinigh ar mheaitseáil clibeanna <pattern>"
+
+#: builtin/describe.c builtin/name-rev.c
+msgid "show abbreviated commit object as fallback"
+msgstr "taispeáint réad tiomanta giorraithe mar fhilleadh"
+
+#: builtin/describe.c
+msgid "mark"
+msgstr "marc"
+
+#: builtin/describe.c
+msgid "append <mark> on dirty working tree (default: \"-dirty\")"
+msgstr "cuir isteach <mark>ar chrann oibre salach (réamhshocraithe: “-salach”)"
+
+#: builtin/describe.c
+msgid "append <mark> on broken working tree (default: \"-broken\")"
+msgstr "cuir isteach <mark>ar chrann oibre briste (réamhshocraithe: “-broken”)"
+
+#: builtin/describe.c
+msgid "No names found, cannot describe anything."
+msgstr ""
+"Níor aimsíodh aon ainmneacha, ní féidir cur síos a dhéanamh ar aon rud."
+
+#: builtin/describe.c
+#, c-format
+msgid "option '%s' and commit-ishes cannot be used together"
+msgstr "ní féidir rogha '%s' agus coimistí a úsáid le chéile"
+
+#: builtin/diagnose.c
+msgid ""
+"git diagnose [(-o | --output-directory) <path>] [(-s | --suffix) <format>]\n"
+" [--mode=<mode>]"
+msgstr ""
+"<format>git diagnosis [(-o | --output-directory)] [(-s | -- <path>suffix)]\n"
+" <mode>[--mód =]"
+
+#: builtin/diagnose.c
+msgid "specify a destination for the diagnostics archive"
+msgstr "sonraigh ceann scríbe don chartlann diagnóisic"
+
+#: builtin/diagnose.c
+msgid "specify a strftime format suffix for the filename"
+msgstr "sonraigh iarmhír formáid strftime don ainm comhaid"
+
+#: builtin/diagnose.c
+msgid "specify the content of the diagnostic archive"
+msgstr "sonraigh ábhar an chartlann dhiagnóiseach"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse mode: %s"
+msgstr "nach féidir modh a pháirseáil: %s"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse object id: %s"
+msgstr "nach féidir id réad a pháirseáil: %s"
+
+#: builtin/diff-pairs.c
+msgid "git diff-pairs -z [<diff-options>]"
+msgstr "git diff-pairs -z [<diff-options>]"
+
+#: builtin/diff-pairs.c builtin/log.c builtin/replay.c builtin/shortlog.c
+#: bundle.c
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "argóint gan aithint: %s"
+
+#: builtin/diff-pairs.c
+msgid "working without -z is not supported"
+msgstr "ní thacaítear le bheith ag obair gan -z"
+
+#: builtin/diff-pairs.c
+msgid "pathspec arguments not supported"
+msgstr "argóintí pathspec nach dtacaítear leis"
+
+#: builtin/diff-pairs.c
+msgid "revision arguments not allowed"
+msgstr "argóintí athbhreithnithe nach"
+
+#: builtin/diff-pairs.c
+msgid "invalid raw diff input"
+msgstr "ionchur diff amh neamhbhailí"
+
+#: builtin/diff-pairs.c
+msgid "tree objects not supported"
+msgstr "rudaí crann nach dtacaítear leis"
+
+#: builtin/diff-pairs.c
+msgid "got EOF while reading path"
+msgstr "fuair EOF agus tú ag léamh cosán"
+
+#: builtin/diff-pairs.c
+msgid "got EOF while reading destination path"
+msgstr "fuair EOF agus tú ag léamh cosán ceann scríbe"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse rename/copy score: %s"
+msgstr "nach féidir scór athainmniú/cóipeáil a pháirseáil: %s"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unknown diff status: %c"
+msgstr "stádas diff anaithnid: %c"
+
+#: builtin/diff-tree.c
+msgid "--merge-base only works with two commits"
+msgstr "Ní oibríonn --merge-base ach le dhá thiomantas"
+
+#: builtin/diff.c
+#, c-format
+msgid "'%s': not a regular file or symlink"
+msgstr "'%s': ní comhad rialta nó comhnasc"
+
+#: builtin/diff.c
+msgid "no merge given, only parents."
+msgstr "ní thugtar aon chumasc, tuismitheoirí amháin."
+
+#: builtin/diff.c
+#, c-format
+msgid "invalid option: %s"
+msgstr "rogha neamhbhailí: %s"
+
+#: builtin/diff.c
+#, c-format
+msgid "%s...%s: no merge base"
+msgstr "%s... %s: gan aon bhonn cumaisc"
+
+#: builtin/diff.c
+msgid "Not a git repository"
+msgstr "Ní stór git"
+
+#: builtin/diff.c builtin/grep.c
+#, c-format
+msgid "invalid object '%s' given."
+msgstr "réad neamhbhailí '%s' tugtha."
+
+#: builtin/diff.c
+#, c-format
+msgid "more than two blobs given: '%s'"
+msgstr "níos mó ná dhá bhlob a thugtar: '%s'"
+
+#: builtin/diff.c
+#, c-format
+msgid "unhandled object '%s' given."
+msgstr "réad neamh-láimhseáilte '%s' tugtha."
+
+#: builtin/diff.c
+#, c-format
+msgid "%s...%s: multiple merge bases, using %s"
+msgstr "%s... %s: bonn cumaisc iolracha, ag baint úsáide as %s"
+
+#: builtin/difftool.c
+msgid "git difftool [<options>] [<commit> [<commit>]] [--] [<path>...]"
+msgstr "git difftool [[<options>]] <commit>[[<commit>]] [--] [<path>...]"
+
+#: builtin/difftool.c
+#, c-format
+msgid "could not read symlink %s"
+msgstr "ní fhéadfaí nasc simtéarach %s a léamh"
+
+#: builtin/difftool.c
+#, c-format
+msgid "could not read symlink file %s"
+msgstr "ní raibh in ann comhad simnasc %s a léamh"
+
+#: builtin/difftool.c
+#, c-format
+msgid "could not read object %s for symlink %s"
+msgstr "ní raibh in ann réad %s a léamh le haghaidh nasc simtéarach %s"
+
+#: builtin/difftool.c
+msgid ""
+"combined diff formats ('-c' and '--cc') are not supported in\n"
+"directory diff mode ('-d' and '--dir-diff')."
+msgstr ""
+"ní thacaítear le formáidí diff comhcheangailte ('-c' agus '--cc') i\n"
+"modh diff eolaire ('-d' agus '--dir-diff')."
+
+#: builtin/difftool.c
+#, c-format
+msgid "both files modified: '%s' and '%s'."
+msgstr "modhnaigh an dá chomhad: '%s' agus '%s'."
+
+#: builtin/difftool.c
+msgid "working tree file has been left."
+msgstr "tá comhad crann oibre fágtha."
+
+#: builtin/difftool.c sequencer.c
+#, c-format
+msgid "could not copy '%s' to '%s'"
+msgstr "ní fhéadfaí '%s' a chóipeáil chuig '%s'"
+
+#: builtin/difftool.c
+#, c-format
+msgid "temporary files exist in '%s'."
+msgstr "tá comhaid shealadacha ann i '%s'."
+
+#: builtin/difftool.c
+msgid "you may want to cleanup or recover these."
+msgstr "b'fhéidir gur mhaith leat iad seo a ghlanadh nó a aisghabháil."
+
+#: builtin/difftool.c
+#, c-format
+msgid "failed: %d"
+msgstr "theip ar: %d"
+
+#: builtin/difftool.c
+msgid "use `diff.guitool` instead of `diff.tool`"
+msgstr "bain úsáid as `diff.guitool` in ionad `diff.tool`"
+
+#: builtin/difftool.c
+msgid "perform a full-directory diff"
+msgstr "éagsúlacht eolaire lán-eolaire a dhéanamh"
+
+#: builtin/difftool.c
+msgid "do not prompt before launching a diff tool"
+msgstr "ná spreag sula seolann tú uirlis diff"
+
+#: builtin/difftool.c
+msgid "use symlinks in dir-diff mode"
+msgstr "bain úsáid as naisc siombailte i mód dir-diff"
+
+#: builtin/difftool.c
+msgid "tool"
+msgstr "uirlis"
+
+#: builtin/difftool.c
+msgid "use the specified diff tool"
+msgstr "bain úsáid as an uirlis diff sonraithe"
+
+#: builtin/difftool.c
+msgid "print a list of diff tools that may be used with `--tool`"
+msgstr "liosta d'uirlisí diff is féidir a úsáid le `--tool` a phriontáil"
+
+#: builtin/difftool.c
+msgid ""
+"make 'git-difftool' exit when an invoked diff tool returns a non-zero exit "
+"code"
+msgstr ""
+"imeacht 'git-difftool' a dhéanamh nuair a fhilleann uirlis diff a ghairmtear "
+"cód imeachta neamh-nialasach"
+
+#: builtin/difftool.c
+msgid "specify a custom command for viewing diffs"
+msgstr "sonraigh ordú saincheaptha chun féachaint ar dhifríochtaí"
+
+#: builtin/difftool.c
+msgid "passed to `diff`"
+msgstr "cuireadh chuig `diff`"
+
+#: builtin/difftool.c
+msgid "difftool requires worktree or --no-index"
+msgstr "éilíonn difftool crann oibre nó --no-index"
+
+#: builtin/difftool.c
+msgid "no <tool> given for --tool=<tool>"
+msgstr "níl aon tu <tool> gadh le haghaidh --tool=<tool>"
+
+#: builtin/difftool.c
+msgid "no <cmd> given for --extcmd=<cmd>"
+msgstr "níl <cmd> tugtha do --extcmd=<cmd>"
+
+#: builtin/fast-export.c
+msgid "git fast-export [<rev-list-opts>]"
+msgstr "git fast-export [<rev-list-opts>]"
+
+#: builtin/fast-export.c
+msgid "Error: Cannot export nested tags unless --mark-tags is specified."
+msgstr ""
+"Earráid: Ní féidir clibeanna neadaithe a onnmhairiú mura sonraítear --mark-"
+"tags."
+
+#: builtin/fast-export.c
+msgid "--anonymize-map token cannot be empty"
+msgstr "Ní féidir le comhartha --anonymize-map a bheith folamh"
+
+#: builtin/fast-export.c
+msgid "show progress after <n> objects"
+msgstr "dhul chun cinn a thaispe <n>áint"
+
+#: builtin/fast-export.c
+msgid "select handling of signed tags"
+msgstr "roghnaigh láimhseáil na clibeanna"
+
+#: builtin/fast-export.c
+msgid "select handling of signed commits"
+msgstr "roghnaigh láimhseáil tiomantas sínithe"
+
+#: builtin/fast-export.c
+msgid "select handling of tags that tag filtered objects"
+msgstr "roghnaigh láimhseáil clibeanna a ligeann rudaí"
+
+#: builtin/fast-export.c
+msgid "select handling of commit messages in an alternate encoding"
+msgstr "roghnaigh láimhseáil teachtaireachtaí tiomanta i ionchódú"
+
+#: builtin/fast-export.c
+msgid "dump marks to this file"
+msgstr "marcanna dumpáil chuig an gcomhad seo"
+
+#: builtin/fast-export.c
+msgid "import marks from this file"
+msgstr "marcanna iompórtáil ón gcomhad seo"
+
+#: builtin/fast-export.c
+msgid "import marks from this file if it exists"
+msgstr "marcanna a iompórtáil ón gcomhad seo má tá sé ann"
+
+#: builtin/fast-export.c
+msgid "fake a tagger when tags lack one"
+msgstr "clibeoir bréige nuair nach bhfuil ceann ag clibeanna"
+
+#: builtin/fast-export.c
+msgid "output full tree for each commit"
+msgstr "aschur crann iomlán do gach tiomantas"
+
+#: builtin/fast-export.c
+msgid "use the done feature to terminate the stream"
+msgstr "úsáid an ghné déanta chun an sruth a fhoirceannadh"
+
+#: builtin/fast-export.c
+msgid "skip output of blob data"
+msgstr "scipeáil aschur sonraí blob"
+
+#: builtin/fast-export.c builtin/log.c
+msgid "refspec"
+msgstr "refspec"
+
+#: builtin/fast-export.c
+msgid "apply refspec to exported refs"
+msgstr "refspec a chur i bhfeidhm ar thaifeanna onnmhair"
+
+#: builtin/fast-export.c
+msgid "anonymize output"
+msgstr "aschur gan ainm"
+
+#: builtin/fast-export.c
+msgid "from:to"
+msgstr "ó:go"
+
+#: builtin/fast-export.c
+msgid "convert <from> to <to> in anonymized output"
+msgstr "tiontaigh <from>go <to>in aschur gan ainm"
+
+#: builtin/fast-export.c
+msgid "reference parents which are not in fast-export stream by object id"
+msgstr ""
+"tuismitheoirí tagartha nach bhfuil i sruth tapa onnmhairithe de réir id réad"
+
+#: builtin/fast-export.c
+msgid "show original object ids of blobs/commits"
+msgstr "taispeáin id réad bunaidh de bhlobanna/gealltanna"
+
+#: builtin/fast-export.c
+msgid "label tags with mark ids"
+msgstr "clibeanna lipéad le id marc"
+
+#: builtin/fast-import.c
+#, c-format
+msgid "Missing from marks for submodule '%s'"
+msgstr "Ar iarraidh ó mharcanna don fho-mhodúl '%s'"
+
+#: builtin/fast-import.c
+#, c-format
+msgid "Missing to marks for submodule '%s'"
+msgstr "Ar iarraidh marcanna don fho-mhodúl '%s'"
+
+#: builtin/fast-import.c
+#, c-format
+msgid "Expected 'mark' command, got %s"
+msgstr "Táthar ag súil leis an ordú 'marc', fuair %s"
+
+#: builtin/fast-import.c
+#, c-format
+msgid "Expected 'to' command, got %s"
+msgstr "Táthar ag súil leis an ordú 'to', fuair %s"
+
+#: builtin/fast-import.c
+msgid "Expected format name:filename for submodule rewrite option"
+msgstr ""
+"Ainm formáid a bhfuil súil leis ainm comhaid don rogha athscríobh fo-mhodúil"
+
+#: builtin/fast-import.c
+#, c-format
+msgid "feature '%s' forbidden in input without --allow-unsafe-features"
+msgstr "feature '%s' forbidden in input without --allow-unsafe-features"
+
+#: builtin/fetch-pack.c
+#, c-format
+msgid "Lockfile created but not reported: %s"
+msgstr "Cruthaíodh comhad Lockfile ach nár tuairiscigh: %s"
+
+#: builtin/fetch.c
+msgid "git fetch [<options>] [<repository> [<refspec>...]]"
+msgstr "git fetch [<options>] [<repository> [<refspec>...]]"
+
+#: builtin/fetch.c
+msgid "git fetch [<options>] <group>"
+msgstr "git fetch [<options>] <group>"
+
+#: builtin/fetch.c
+msgid "git fetch --multiple [<options>] [(<repository> | <group>)...]"
+msgstr "git fetch --multiple [<options>] [(<repository> | <group>)...]"
+
+#: builtin/fetch.c
+msgid "git fetch --all [<options>]"
+msgstr "git fetch --all [<options>]"
+
+#: builtin/fetch.c
+msgid "fetch.parallel cannot be negative"
+msgstr "ní féidir fetch.parallel a bheith diúltach"
+
+#: builtin/fetch.c
+msgid "couldn't find remote ref HEAD"
+msgstr "ní raibh in ann ciantagartha HEAD a fháil"
+
+#: builtin/fetch.c
+#, c-format
+msgid "From %.*s\n"
+msgstr "Ó %.*s\n"
+
+#: builtin/fetch.c
+#, c-format
+msgid "object %s not found"
+msgstr "níor aimsíodh réad %s"
+
+#: builtin/fetch.c
+msgid "[up to date]"
+msgstr "[cothrom le dáta]"
+
+#: builtin/fetch.c
+msgid "[rejected]"
+msgstr "[diúltaithe]"
+
+#: builtin/fetch.c
+msgid "can't fetch into checked-out branch"
+msgstr "ní féidir teacht isteach i mbrainse seiceáilte"
+
+#: builtin/fetch.c
+msgid "[tag update]"
+msgstr "[Nuashonrú tag]"
+
+#: builtin/fetch.c
+msgid "unable to update local ref"
+msgstr "in ann tagairt áitiúil a nuashonrú"
+
+#: builtin/fetch.c
+msgid "would clobber existing tag"
+msgstr "chuirfeadh an chlib atá ann cheana"
+
+#: builtin/fetch.c
+msgid "[new tag]"
+msgstr "[tag nua]"
+
+#: builtin/fetch.c
+msgid "[new branch]"
+msgstr "[brainse nua]"
+
+#: builtin/fetch.c
+msgid "[new ref]"
+msgstr "[tagartha nua]"
+
+#: builtin/fetch.c
+msgid "forced update"
+msgstr "nuashonrú éigeant"
+
+#: builtin/fetch.c
+msgid "non-fast-forward"
+msgstr "neamh-tapa ar aghaidh"
+
+#: builtin/fetch.c builtin/grep.c sequencer.c
+#, c-format
+msgid "cannot open '%s'"
+msgstr "ní féidir '%s' a oscailt"
+
+#: builtin/fetch.c
+msgid ""
+"fetch normally indicates which branches had a forced update,\n"
+"but that check has been disabled; to re-enable, use '--show-forced-updates'\n"
+"flag or run 'git config fetch.showForcedUpdates true'"
+msgstr ""
+"is gnách go léiríonn teacht na brainsí a raibh nuashonrú éigeantach orthu,\n"
+"ach tá an seiceáil sin díchumasaithe; chun athchumasú, bain úsáid as '--show-"
+"forced-updates'\n"
+"bratach nó rith 'git config fetch.showForcedUpdates true'"
+
+#: builtin/fetch.c
+#, c-format
+msgid ""
+"it took %.2f seconds to check forced updates; you can use\n"
+"'--no-show-forced-updates' or run 'git config fetch.showForcedUpdates "
+"false'\n"
+"to avoid this check\n"
+msgstr ""
+"thóg sé %.2f soicind chun nuashonruithe éigeantacha a sheiceáil; is féidir "
+"leat úsáid\n"
+"'--no-show-forced-updates 'nó rith 'git config fetch.showForcedUpdates "
+"bréaga'\n"
+"chun an seiceáil seo a sheachaint\n"
+
+#: builtin/fetch.c
+#, c-format
+msgid "%s did not send all necessary objects"
+msgstr "Níor sheol %s na rudaí riachtanacha go léir"
+
+#: builtin/fetch.c
+#, c-format
+msgid "rejected %s because shallow roots are not allowed to be updated"
+msgstr "dhiúltaigh %s toisc nach gceadaítear fréamhacha éadmhara a nuashonrú"
+
+#: builtin/fetch.c
+#, c-format
+msgid ""
+"some local refs could not be updated; try running\n"
+" 'git remote prune %s' to remove any old, conflicting branches"
+msgstr ""
+"ní fhéadfaí roinnt fios áitiúla a nuashonrú; déan iarracht rith\n"
+" 'git remote prune%s' chun aon bhrainsí sean-fhrithsheasmhach a bhaint"
+
+#: builtin/fetch.c
+#, c-format
+msgid " (%s will become dangling)"
+msgstr " (beidh %s ag crochadh)"
+
+#: builtin/fetch.c
+#, c-format
+msgid " (%s has become dangling)"
+msgstr " (%s has become dangling)"
+
+#: builtin/fetch.c
+msgid "[deleted]"
+msgstr "[scriosta]"
+
+#: builtin/fetch.c builtin/remote.c
+msgid "(none)"
+msgstr "(níl aon)"
+
+#: builtin/fetch.c
+#, c-format
+msgid "refusing to fetch into branch '%s' checked out at '%s'"
+msgstr "ag diúltú teacht isteach i mbrainse '%s' a sheiceáil amach ag '%s'"
+
+#: builtin/fetch.c
+#, c-format
+msgid "option \"%s\" value \"%s\" is not valid for %s"
+msgstr "níl an rogha “%s” luach “%s” bailí do %s"
+
+#: builtin/fetch.c
+#, c-format
+msgid "option \"%s\" is ignored for %s"
+msgstr "déantar neamhaird ar rogha “%s” do %s"
+
+#: builtin/fetch.c object-store.c
+#, c-format
+msgid "%s is not a valid object"
+msgstr "Ní réad bailí é %s"
+
+#: builtin/fetch.c
+#, c-format
+msgid "the object %s does not exist"
+msgstr "níl an réad %s ann"
+
+#: builtin/fetch.c
+#, c-format
+msgid ""
+"Run 'git remote set-head %s %s' to follow the change, or set\n"
+"'remote.%s.followRemoteHEAD' configuration option to a different value\n"
+"if you do not want to see this message. Specifically running\n"
+"'git config set remote.%s.followRemoteHEAD warn-if-not-branch-%s'\n"
+"will disable the warning until the remote changes HEAD to something else."
+msgstr ""
+"Rith 'git remote set-head %s %s' chun an t-athrú a leanúint, nó socraigh\n"
+"rogha cumraíochta 'remote.%s.followRemoteHEAD' go luach difriúil\n"
+"mura mian leat an teachtaireacht seo a fheiceáil. Go sonrach, má ritheann "
+"tú\n"
+"'git config set remote.%s.followRemoteHEAD warn-if-not-branch-%s'\n"
+"díchumasófar an rabhadh go dtí go n-athraíonn an cianda HEAD go rud éigin "
+"eile."
+
+#: builtin/fetch.c
+msgid "multiple branches detected, incompatible with --set-upstream"
+msgstr "brainsí iolracha brainsí braite, gan oiriúint le --set-upstream"
+
+#: builtin/fetch.c
+#, c-format
+msgid ""
+"could not set upstream of HEAD to '%s' from '%s' when it does not point to "
+"any branch."
+msgstr ""
+"ní fhéadfaí suas sruth de HEAD a shocrú go '%s' ó '%s' nuair nach dtugann sé "
+"in iúl go dtí aon bhrainse."
+
+#: builtin/fetch.c
+msgid "not setting upstream for a remote remote-tracking branch"
+msgstr "gan socrú suas sruth do bhrainse cianrianaithe"
+
+#: builtin/fetch.c
+msgid "not setting upstream for a remote tag"
+msgstr "gan a shocrú suas sruth le haghaidh clib iargúlta"
+
+#: builtin/fetch.c
+msgid "unknown branch type"
+msgstr "cineál brainse anaithnid"
+
+#: builtin/fetch.c
+msgid ""
+"no source branch found;\n"
+"you need to specify exactly one branch with the --set-upstream option"
+msgstr ""
+"ní bhfuarthas aon bhrainse foinse;\n"
+"ní mór duit brainse amháin a shonrú go díreach leis an rogha --set-upstream"
+
+#: builtin/fetch.c
+#, c-format
+msgid "Fetching %s\n"
+msgstr "Ag tarraingt %s\n"
+
+#: builtin/fetch.c
+#, c-format
+msgid "could not fetch %s"
+msgstr "ní fhéadfaí %s a fháil"
+
+#: builtin/fetch.c
+#, c-format
+msgid "could not fetch '%s' (exit code: %d)\n"
+msgstr "níorbh fhéidir '%s' a fháil (cód scoir: %d)\n"
+
+#: builtin/fetch.c
+msgid ""
+"no remote repository specified; please specify either a URL or a\n"
+"remote name from which new revisions should be fetched"
+msgstr ""
+"níl aon stór iargúlta sonraithe; sonraigh URL nó a\n"
+"ainm iargúlta ar chóir athbhreithnithe nua a fháil"
+
+#: builtin/fetch.c
+msgid "you need to specify a tag name"
+msgstr "ní mór duit ainm clib a shonrú"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "fetch from all remotes"
+msgstr "faigh ó gach iargúlta"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "set upstream for git pull/fetch"
+msgstr "socraigh suas sruth le haghaidh git pull/fetch"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "append to .git/FETCH_HEAD instead of overwriting"
+msgstr "cuir chuig .git/FETCH_HEAD in ionad athscríobh"
+
+#: builtin/fetch.c
+msgid "use atomic transaction to update references"
+msgstr "úsáid idirbheart adamach chun tagairtí a nuashonrú"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "path to upload pack on remote end"
+msgstr "cosán chun pacáiste a uaslódáil ar iargúlta"
+
+#: builtin/fetch.c
+msgid "force overwrite of local reference"
+msgstr "tagairt áitiúil a fhorscríobh"
+
+#: builtin/fetch.c
+msgid "fetch from multiple remotes"
+msgstr "a fháil ó iomadúla iargúlta"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "fetch all tags and associated objects"
+msgstr "gach clib agus rudaí gaolmhara a fháil"
+
+#: builtin/fetch.c
+msgid "do not fetch all tags (--no-tags)"
+msgstr "ná faigh gach clib (--no-tags)"
+
+#: builtin/fetch.c
+msgid "number of submodules fetched in parallel"
+msgstr "líon na bhfo-mhodúil a fuarthas go comhthreomhar"
+
+#: builtin/fetch.c
+msgid "modify the refspec to place all refs within refs/prefetch/"
+msgstr "an refspec a mhodhnú chun gach refs a chur laistigh de refs/prefetch/"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "prune remote-tracking branches no longer on remote"
+msgstr "brainsí cianrianaithe a ghearradh nach bhfuil ar iargúlta a"
+
+#: builtin/fetch.c
+msgid "prune local tags no longer on remote and clobber changed tags"
+msgstr ""
+"clibeanna áitiúla a ghearradh nach bhfuil ar chlibeanna iargúlta agus "
+"athraithe clobber"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "on-demand"
+msgstr "ar éileamh"
+
+#: builtin/fetch.c
+msgid "control recursive fetching of submodules"
+msgstr "tógáil athfhillteach fo-mhodúil a rialú"
+
+#: builtin/fetch.c
+msgid "write fetched references to the FETCH_HEAD file"
+msgstr "scríobh tagairtí faighte don chomhad FETCH_HEAD"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "keep downloaded pack"
+msgstr "pacáiste íoslódáilte"
+
+#: builtin/fetch.c
+msgid "allow updating of HEAD ref"
+msgstr "cead a thabhairt do nuashonrú HEAD ref"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "deepen history of shallow clone"
+msgstr "stair clón éadomhain a dhoimhniú"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "deepen history of shallow repository based on time"
+msgstr "stair stór éadomhain a dhoimhniú bunaithe ar am"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "convert to a complete repository"
+msgstr "tiontaigh go stór iomlán"
+
+#: builtin/fetch.c
+msgid "re-fetch without negotiating common commits"
+msgstr "athghabháil gan gealltanais choiteanna a chaibidliú"
+
+#: builtin/fetch.c
+msgid "prepend this to submodule path output"
+msgstr "é seo a chur ar aghaidh chuig aschur cosán fo-mhodúil"
+
+#: builtin/fetch.c
+msgid ""
+"default for recursive fetching of submodules (lower priority than config "
+"files)"
+msgstr ""
+"réamhshocraithe maidir le fo-mhodúil a fháil athshlánach (tosaíocht níos "
+"ísle ná comhaid chumraithe)"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "accept refs that update .git/shallow"
+msgstr "glacadh le hiarrachtaí a nuashonraíonn .git/shalach"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "refmap"
+msgstr "athléarscáil"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "specify fetch refmap"
+msgstr "sonraigh refmap a fháil"
+
+#: builtin/fetch.c builtin/pull.c builtin/rebase.c builtin/replay.c
+msgid "revision"
+msgstr "athbhreithiú"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "report that we have only objects reachable from this object"
+msgstr "tuairisciú nach bhfuil ach rudaí inrochtana againn ón réad seo"
+
+#: builtin/fetch.c
+msgid "do not fetch a packfile; instead, print ancestors of negotiation tips"
+msgstr ""
+"ná faigh comhad pacáiste; ina ionad sin, priontáil sinsear leideanna "
+"idirbheartaíochta"
+
+#: builtin/fetch.c
+msgid "run 'maintenance --auto' after fetching"
+msgstr "reáchtáil 'cothabháil --auto' tar éis a fháil"
+
+#: builtin/fetch.c builtin/pull.c
+msgid "check for forced-updates on all updated branches"
+msgstr "seiceáil ar nuashonruithe éigeantacha ar gach brainse nuashonraithe"
+
+#: builtin/fetch.c
+msgid "write the commit-graph after fetching"
+msgstr "scríobh an graf coimisiúnaithe tar éis a fháil"
+
+#: builtin/fetch.c
+msgid "accept refspecs from stdin"
+msgstr "glacadh le refspecs ó stdin"
+
+#: builtin/fetch.c
+msgid "--negotiate-only needs one or more --negotiation-tip=*"
+msgstr ""
+"--negotiate-only teastaíonn ceann amháin nó níos mó --negotiation-tip=*"
+
+#: builtin/fetch.c
+msgid "negative depth in --deepen is not supported"
+msgstr "ní thacaítear le doimhneacht dhiúltach i --deepen"
+
+#: builtin/fetch.c
+msgid "--unshallow on a complete repository does not make sense"
+msgstr "níl ciall le --unshallow ar stórlann iomlán"
+
+#: builtin/fetch.c
+#, c-format
+msgid "failed to fetch bundles from '%s'"
+msgstr "theip ar bhaclaí a fháil ó '%s'"
+
+#: builtin/fetch.c
+msgid "fetch --all does not take a repository argument"
+msgstr "ní ghlacann fetch --all argóint stór"
+
+#: builtin/fetch.c
+msgid "fetch --all does not make sense with refspecs"
+msgstr "ní bhíonn ciall ag teacht --all le refspecs"
+
+#: builtin/fetch.c
+#, c-format
+msgid "no such remote or remote group: %s"
+msgstr "gan aon ghrúpa iargúlta nó cianda den sórt sin: %s"
+
+#: builtin/fetch.c
+msgid "fetching a group and specifying refspecs does not make sense"
+msgstr "níl ciall grúpa a fháil agus refspecs a shonrú"
+
+#: builtin/fetch.c
+msgid "must supply remote when using --negotiate-only"
+msgstr "ní mór iargúlta a sholáthar agus tú ag úsáid --negotiate-only"
+
+#: builtin/fetch.c
+msgid "protocol does not support --negotiate-only, exiting"
+msgstr "ní thacaíonn an prótacal le --negotiate-only, ag scoir"
+
+#: builtin/fetch.c
+msgid ""
+"--filter can only be used with the remote configured in "
+"extensions.partialclone"
+msgstr ""
+"--filter Ní féidir ach an scagaire a úsáid ach leis an iargúlta cumraithe in "
+"extensions.partialclone"
+
+#: builtin/fetch.c
+msgid "--atomic can only be used when fetching from one remote"
+msgstr ""
+"--atomic ní féidir ach adamhach a úsáid ach amháin nuair a bhíonn sé á fháil "
+"ó chianrialtán amháin"
+
+#: builtin/fetch.c
+msgid "--stdin can only be used when fetching from one remote"
+msgstr ""
+"Ní féidir --stdin a úsáid ach amháin nuair a bhfaightear é ó iargúlta amháin"
+
+#: builtin/fmt-merge-msg.c
+msgid ""
+"git fmt-merge-msg [-m <message>] [--log[=<n>] | --no-log] [--file <file>]"
+msgstr ""
+"<n><file>git fmt-merge-msg [-m<message>] [--log [=] | --no-log] [--comhad]"
+
+#: builtin/fmt-merge-msg.c
+msgid "populate log with at most <n> entries from shortlog"
+msgstr "logáil a chomhlánú le hiontrálacha is mó <n>ó ghearrlog"
+
+#: builtin/fmt-merge-msg.c
+msgid "alias for --log (deprecated)"
+msgstr "alias le haghaidh --log (mísheasmhach)"
+
+#: builtin/fmt-merge-msg.c
+msgid "text"
+msgstr "téacs"
+
+#: builtin/fmt-merge-msg.c
+msgid "use <text> as start of message"
+msgstr "úsáid <text> mar thús na teachtaireachta"
+
+#: builtin/fmt-merge-msg.c
+msgid "use <name> instead of the real target branch"
+msgstr "úsáid in <name> ionad na fíor-spriocbhrainse"
+
+#: builtin/fmt-merge-msg.c
+msgid "file to read from"
+msgstr "comhad le léamh ó"
+
+#: builtin/for-each-ref.c
+msgid "git for-each-ref [<options>] [<pattern>]"
+msgstr "git for-each-ref [<options>] [<pattern>]"
+
+#: builtin/for-each-ref.c
+msgid "git for-each-ref [--points-at <object>]"
+msgstr "git for-each-ref [--points-at <object>]"
+
+#: builtin/for-each-ref.c
+msgid "git for-each-ref [--merged [<commit>]] [--no-merged [<commit>]]"
+msgstr "git for-each-ref [--merged [<commit>]] [--no-merged [<commit>]]"
+
+#: builtin/for-each-ref.c
+msgid "git for-each-ref [--contains [<commit>]] [--no-contains [<commit>]]"
+msgstr "git for-each-ref [--contains [<commit>]] [--no-contains [<commit>]]"
+
+#: builtin/for-each-ref.c
+msgid "quote placeholders suitably for shells"
+msgstr "sealbhóirí áiteanna a luachan go oiriúnach do"
+
+#: builtin/for-each-ref.c
+msgid "quote placeholders suitably for perl"
+msgstr "sealbhóirí áiteanna a luachan go oiriúnach do perl"
+
+#: builtin/for-each-ref.c
+msgid "quote placeholders suitably for python"
+msgstr "sealbhóirí áiteanna a luaigh go oiriúnach do python"
+
+#: builtin/for-each-ref.c
+msgid "quote placeholders suitably for Tcl"
+msgstr "sealbhóirí áiteanna a luachan go oiriúnach do Tcl"
+
+#: builtin/for-each-ref.c
+msgid "show only <n> matched refs"
+msgstr "taispeáin ach sonraí com <n>hoiriúnaithe"
+
+#: builtin/for-each-ref.c builtin/tag.c
+msgid "respect format colors"
+msgstr "meas dathanna formáid"
+
+#: builtin/for-each-ref.c
+msgid "print only refs which points at the given object"
+msgstr "ní phriontáil ach téacsanna a phointíonn ar an réad a thugtar"
+
+#: builtin/for-each-ref.c
+msgid "print only refs that are merged"
+msgstr "ní phriontáil ach scríbhneoireachtaí atá cumasaithe"
+
+#: builtin/for-each-ref.c
+msgid "print only refs that are not merged"
+msgstr "priontáil ach scríbhinní nach bhfuil cumasc"
+
+#: builtin/for-each-ref.c
+msgid "print only refs which contain the commit"
+msgstr "ní phriontáil ach téifeanna ina bhfuil an tiomantas"
+
+#: builtin/for-each-ref.c
+msgid "print only refs which don't contain the commit"
+msgstr "ní phriontáil ach scríbhneoirí nach bhfuil an tiomantas"
+
+#: builtin/for-each-ref.c
+msgid "read reference patterns from stdin"
+msgstr "léigh patrúin tagartha ó stdin"
+
+#: builtin/for-each-ref.c
+msgid "also include HEAD ref and pseudorefs"
+msgstr "san áireamh freisin HEAD ref agus pseudorefs"
+
+#: builtin/for-each-ref.c
+msgid "unknown arguments supplied with --stdin"
+msgstr "argóintí anaithnid a sholáthraítear le --stdin"
+
+#: builtin/for-each-repo.c
+msgid "git for-each-repo --config=<config> [--] <arguments>"
+msgstr "git for-each-repo --config=<config> [--] <arguments>"
+
+#: builtin/for-each-repo.c
+msgid "config"
+msgstr "cumraíocht"
+
+#: builtin/for-each-repo.c
+msgid "config key storing a list of repository paths"
+msgstr "eochair chumraithe a stóráil liosta de chosáin stórais"
+
+#: builtin/for-each-repo.c
+msgid "keep going even if command fails in a repository"
+msgstr "coinnigh ort fiú má theipeann an t-ordú i stóras"
+
+#: builtin/for-each-repo.c
+msgid "missing --config=<config>"
+msgstr "ar iarraidh --config=<config>"
+
+#: builtin/for-each-repo.c
+#, c-format
+msgid "got bad config --config=%s"
+msgstr "fuair go dona cumraíocht --config=%s"
+
+#: builtin/fsck.c
+msgid "unknown"
+msgstr "anaithnid"
+
+#. TRANSLATORS: e.g. error in tree 01bfda: <more explanation>
+#: builtin/fsck.c
+#, c-format
+msgid "error in %s %s: %s"
+msgstr "earráid i %s %s: %s"
+
+#. TRANSLATORS: e.g. warning in tree 01bfda: <more explanation>
+#: builtin/fsck.c
+#, c-format
+msgid "warning in %s %s: %s"
+msgstr "rabhadh i %s %s: %s"
+
+#: builtin/fsck.c
+#, c-format
+msgid "broken link from %7s %s"
+msgstr "nasc briste ó %7s %s"
+
+#: builtin/fsck.c
+msgid "wrong object type in link"
+msgstr "cineál réad mícheart i nasc"
+
+#: builtin/fsck.c
+#, c-format
+msgid ""
+"broken link from %7s %s\n"
+" to %7s %s"
+msgstr ""
+"nasc briste ó %7s %s\n"
+" chuig %7s %s"
+
+#: builtin/fsck.c builtin/prune.c connected.c
+msgid "Checking connectivity"
+msgstr "Nascacht a sheiceáil"
+
+#: builtin/fsck.c
+#, c-format
+msgid "missing %s %s"
+msgstr "%s %s ar iarraidh"
+
+#: builtin/fsck.c
+#, c-format
+msgid "unreachable %s %s"
+msgstr "%s %s neamh-inrochtana"
+
+#: builtin/fsck.c
+#, c-format
+msgid "dangling %s %s"
+msgstr "ag crochadh %s %s"
+
+#: builtin/fsck.c
+msgid "could not create lost-found"
+msgstr "ní fhéadfaí a chruthú a aimsíodh caillte"
+
+#: builtin/fsck.c builtin/gc.c builtin/rebase.c rebase-interactive.c rerere.c
+#: sequencer.c
+#, c-format
+msgid "could not write '%s'"
+msgstr "ní fhéadfaí '%s' a scríobh"
+
+#: builtin/fsck.c
+#, c-format
+msgid "could not finish '%s'"
+msgstr "ní raibh '%s' in ann a chríochnú"
+
+#: builtin/fsck.c
+#, c-format
+msgid "Checking %s"
+msgstr "Seiceáil %s"
+
+#: builtin/fsck.c
+#, c-format
+msgid "Checking connectivity (%d objects)"
+msgstr "Ag seiceáil nascachta (%d réad)"
+
+#: builtin/fsck.c
+#, c-format
+msgid "Checking %s %s"
+msgstr "Seiceáil %s %s"
+
+#: builtin/fsck.c
+msgid "broken links"
+msgstr "naisc briste"
+
+#: builtin/fsck.c
+#, c-format
+msgid "root %s"
+msgstr "fréamh %s"
+
+#: builtin/fsck.c
+#, c-format
+msgid "tagged %s %s (%s) in %s"
+msgstr "clib %s %s (%s) i %s"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s: object corrupt or missing"
+msgstr "%s: réad truaillithe nó ar iarraidh"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s: invalid reflog entry %s"
+msgstr "%s: iontráil reflog neamhbhailí %s"
+
+#: builtin/fsck.c
+#, c-format
+msgid "Checking reflog %s->%s"
+msgstr "Seiceáil reflog %s->%s"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s: invalid sha1 pointer %s"
+msgstr "%s: pointeoir sha1 neamhbhailí %s"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s: not a commit"
+msgstr "%s: ní gealltanas"
+
+#: builtin/fsck.c
+msgid "notice: No default references"
+msgstr "fógra: Gan aon tagairtí réamhshocraithe"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s: hash-path mismatch, found at: %s"
+msgstr "%s: míchomhoiriúnú hash-path, le fáil ag: %s"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s: object corrupt or missing: %s"
+msgstr "%s: réad truaillithe nó ar iarraidh: %s"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s: object could not be parsed: %s"
+msgstr "%s: ní fhéadfaí réad a pháirseáil: %s"
+
+#: builtin/fsck.c
+#, c-format
+msgid "bad sha1 file: %s"
+msgstr "comhad sha1 olc: %s"
+
+#: builtin/fsck.c
+msgid "Checking object directory"
+msgstr "Seiceáil eolaire réada"
+
+#: builtin/fsck.c
+msgid "Checking object directories"
+msgstr "Seiceáil eolairí réada"
+
+#: builtin/fsck.c
+#, c-format
+msgid "Checking %s link"
+msgstr "Nasc %s a sheiceáil"
+
+#: builtin/fsck.c builtin/index-pack.c
+#, c-format
+msgid "invalid %s"
+msgstr "%s neamhbhailí"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s points to something strange (%s)"
+msgstr "Léiríonn %s rud éigin aisteach (%s)"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s: detached HEAD points at nothing"
+msgstr "%s: pointí HEAD scoite ag aon rud"
+
+#: builtin/fsck.c
+#, c-format
+msgid "notice: %s points to an unborn branch (%s)"
+msgstr "fógra: Díríonn %s chuig brainse neamhbhreithe (%s)"
+
+#: builtin/fsck.c
+#, c-format
+msgid "Checking cache tree of %s"
+msgstr "Crann taisce de %s a sheiceáil"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s: invalid sha1 pointer in cache-tree of %s"
+msgstr "%s: pointeoir sha1 neamhbhailí i gcrann cache-%s"
+
+#: builtin/fsck.c
+msgid "non-tree in cache-tree"
+msgstr "neamh-chrann i gcrann cache-"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s: invalid sha1 pointer in resolve-undo of %s"
+msgstr "%s: pointeoir sha1 neamhbhailí i réiteach a chealú de %s"
+
+#: builtin/fsck.c
+#, c-format
+msgid "unable to load rev-index for pack '%s'"
+msgstr "in ann innéacs rev-innéacs a luchtú do phacáiste '%s'"
+
+#: builtin/fsck.c
+#, c-format
+msgid "invalid rev-index for pack '%s'"
+msgstr "innéacs rev-neamhbhailí do phacáiste '%s'"
+
+#: builtin/fsck.c
+msgid "Checking ref database"
+msgstr "Seiceáil bunachar sonraí tagairt"
+
+#: builtin/fsck.c
+msgid ""
+"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
+" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
+" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
+" [--[no-]name-objects] [--[no-]references] [<object>...]"
+msgstr ""
+"git fsck [--tags] [--root] [--inrochtana] [--cache] [--no-reflogs]\n"
+" [-- [no-] iomlán] [--dian] [--verbose] [--caillte]\n"
+" [-- [gan-] ag crochadh] [-- [gan-] dul chun cinn] [--nascacht amháin]\n"
+" <object>[-- [no-] ainm-rudaí] [-- [aon-] tagairtí] [...]"
+
+#: builtin/fsck.c
+msgid "show unreachable objects"
+msgstr "taispeáint rudaí dochreidte"
+
+#: builtin/fsck.c
+msgid "show dangling objects"
+msgstr "taispeáin rudaí crochtanacha"
+
+#: builtin/fsck.c
+msgid "report tags"
+msgstr "clibeanna tuarascála"
+
+#: builtin/fsck.c
+msgid "report root nodes"
+msgstr "nóid fréimhe a thuairisc"
+
+#: builtin/fsck.c
+msgid "make index objects head nodes"
+msgstr "nóid ceann rudaí innéacs a dhéanamh"
+
+#: builtin/fsck.c
+msgid "make reflogs head nodes (default)"
+msgstr "nóid ceann reflogs a dhéanamh (réamhshocraithe)"
+
+#: builtin/fsck.c
+msgid "also consider packs and alternate objects"
+msgstr "smaoinigh freisin ar phacáistí agus rudaí"
+
+#: builtin/fsck.c
+msgid "check only connectivity"
+msgstr "seiceáil ach nascacht"
+
+#: builtin/fsck.c builtin/mktag.c
+msgid "enable more strict checking"
+msgstr "cumasú seiceáil níos docht"
+
+#: builtin/fsck.c
+msgid "write dangling objects in .git/lost-found"
+msgstr "scríobh rudaí crochta in .git/lost-found"
+
+#: builtin/fsck.c builtin/prune.c
+msgid "show progress"
+msgstr "taispeáin dul chun cinn"
+
+#: builtin/fsck.c
+msgid "show verbose names for reachable objects"
+msgstr "taispeáint ainmneacha fabhracha do rudaí inrochtana"
+
+#: builtin/fsck.c
+msgid "check reference database consistency"
+msgstr "seiceáil comhsheasmhacht bunachair"
+
+#: builtin/fsck.c builtin/index-pack.c
+msgid "Checking objects"
+msgstr "Rud a sheiceáil"
+
+#: builtin/fsck.c
+#, c-format
+msgid "%s: object missing"
+msgstr "%s: réad ar iarraidh"
+
+#: builtin/fsck.c
+#, c-format
+msgid "invalid parameter: expected sha1, got '%s'"
+msgstr "paraiméadar neamhbhailí: súil le sha1, fuair '%s'"
+
+#: builtin/fsmonitor--daemon.c
+msgid "git fsmonitor--daemon start [<options>]"
+msgstr "git fsmonitor--daemon start [<options>]"
+
+#: builtin/fsmonitor--daemon.c
+msgid "git fsmonitor--daemon run [<options>]"
+msgstr "git fsmonitor--daemon run [<options>]"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "value of '%s' out of range: %d"
+msgstr "luach '%s' lasmuigh den raon: %d"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "value of '%s' not bool or int: %d"
+msgstr "luach '%s' gan bool nó int: %d"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "fsmonitor-daemon is watching '%s'\n"
+msgstr "tá fsmonitor-daemon ag féachaint ar '%s'\n"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "fsmonitor-daemon is not watching '%s'\n"
+msgstr "níl fsmonitor-daemon ag féachaint ar '%s'\n"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "could not create fsmonitor cookie '%s'"
+msgstr "ní fhéadfaí fianán fsmonitor '%s' a chruthú"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "fsmonitor: cookie_result '%d' != SEEN"
+msgstr "fsmonitor: cookie_result '%d' != SEEN"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "could not start IPC thread pool on '%s'"
+msgstr "ní fhéadfaí linn snáithe IPC a thosú ar '%s'"
+
+#: builtin/fsmonitor--daemon.c
+msgid "could not start fsmonitor listener thread"
+msgstr "ní fhéadfaí snáithe éisteora fsmonitor a thosú"
+
+#: builtin/fsmonitor--daemon.c
+msgid "could not start fsmonitor health thread"
+msgstr "ní fhéadfaí snáithe sláinte fsmonitor a thosú"
+
+#: builtin/fsmonitor--daemon.c
+msgid "could not initialize listener thread"
+msgstr "ní fhéadfadh snáithe éisteora a thionscnamh"
+
+#: builtin/fsmonitor--daemon.c
+msgid "could not initialize health thread"
+msgstr "ní fhéadfaí snáithe sláinte a thionscnamh"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "could not cd home '%s'"
+msgstr "ní fhéadfaí cd baile '%s'"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "fsmonitor--daemon is already running '%s'"
+msgstr "tá fsmonitor--daemon ag rith '%s' cheana féin"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "running fsmonitor-daemon in '%s'\n"
+msgstr "ag rith fsmonitor-daemon i '%s'\n"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "starting fsmonitor-daemon in '%s'\n"
+msgstr "ag tosú fsmonitor-daemon i '%s'\n"
+
+#: builtin/fsmonitor--daemon.c
+msgid "daemon failed to start"
+msgstr "theip ar daemon a thosú"
+
+#: builtin/fsmonitor--daemon.c
+msgid "daemon not online yet"
+msgstr "daemon nach bhfuil ar líne fós"
+
+#: builtin/fsmonitor--daemon.c
+msgid "daemon terminated"
+msgstr "deireadh le déemon"
+
+#: builtin/fsmonitor--daemon.c
+msgid "detach from console"
+msgstr "dícheangal ón gconsól"
+
+#: builtin/fsmonitor--daemon.c
+msgid "use <n> ipc worker threads"
+msgstr "úsáid snái <n>theanna oibrithe ipc"
+
+#: builtin/fsmonitor--daemon.c
+msgid "max seconds to wait for background daemon startup"
+msgstr "soicind uasta chun fanacht le tosú daemon cúlra"
+
+#: builtin/fsmonitor--daemon.c
+#, c-format
+msgid "invalid 'ipc-threads' value (%d)"
+msgstr "luach 'ipc-snáitheanna' neamhbhailí (%d)"
+
+#: builtin/fsmonitor--daemon.c t/helper/test-cache-tree.c
+#, c-format
+msgid "Unhandled subcommand '%s'"
+msgstr "Foordú neamh-láimhseáilte '%s'"
+
+#: builtin/fsmonitor--daemon.c
+msgid "fsmonitor--daemon not supported on this platform"
+msgstr "fsmonitor--daemon nach dtacaíonn sé ar an ardán seo"
+
+#: builtin/gc.c
+msgid "git gc [<options>]"
+msgstr "git gc [<options>]"
+
+#: builtin/gc.c
+#, c-format
+msgid "Failed to fstat %s: %s"
+msgstr "Theip ar fstat %s: %s"
+
+#: builtin/gc.c
+#, c-format
+msgid "failed to parse '%s' value '%s'"
+msgstr "theip ar luach '%s' a pharsáil '%s'"
+
+#: builtin/gc.c setup.c
+#, c-format
+msgid "cannot stat '%s'"
+msgstr "ní féidir '%s' a stát"
+
+#: builtin/gc.c
+#, c-format
+msgid ""
+"The last gc run reported the following. Please correct the root cause\n"
+"and remove %s\n"
+"Automatic cleanup will not be performed until the file is removed.\n"
+"\n"
+"%s"
+msgstr ""
+"Tuairiscigh an rith gc deireanach an méid seo a leanas Ceartaigh an bunchúis "
+"le do thoil\n"
+"agus bain %s\n"
+"Ní dhéanfar glantachán uathoibríoch go dtí go mbainfear an comhad.\n"
+"\n"
+"%s"
+
+#: builtin/gc.c
+msgid "prune unreferenced objects"
+msgstr "rudaí gan tagairt a ghearradh"
+
+#: builtin/gc.c
+msgid "pack unreferenced objects separately"
+msgstr "rudaí gan tagairt a phacáil ar leithligh"
+
+#: builtin/gc.c builtin/repack.c
+msgid "with --cruft, limit the size of new cruft packs"
+msgstr "le --cruft, teorainn le méid pacáistí cruft nua"
+
+#: builtin/gc.c
+msgid "be more thorough (increased runtime)"
+msgstr "a bheith níos críochnúla (tréimhse méadaithe)"
+
+#: builtin/gc.c
+msgid "enable auto-gc mode"
+msgstr "mód auto-gc a chumasú"
+
+#: builtin/gc.c
+msgid "perform garbage collection in the background"
+msgstr "bailiú truflais a dhéanamh sa chúlra"
+
+#: builtin/gc.c
+msgid "force running gc even if there may be another gc running"
+msgstr "fórsa ag rith gc fiú má d'fhéadfadh gc eile a bheith ag rith"
+
+#: builtin/gc.c
+msgid "repack all other packs except the largest pack"
+msgstr "gach pacáiste eile a athphacáil ach amháin an pacáiste is mó"
+
+#: builtin/gc.c builtin/repack.c
+msgid "pack prefix to store a pack containing pruned objects"
+msgstr "réimír pacáiste chun pacáiste ina bhfuil rudaí gearrtha a stóráil"
+
+#: builtin/gc.c
+#, c-format
+msgid "failed to parse gc.logExpiry value %s"
+msgstr "theip ar luach gc.logExpiry %s a pháirseáil"
+
+#: builtin/gc.c
+#, c-format
+msgid "failed to parse prune expiry value %s"
+msgstr "theip ar luach éaga brúite %s a pharsáil"
+
+#: builtin/gc.c
+#, c-format
+msgid "Auto packing the repository in background for optimum performance.\n"
+msgstr "Pacáil uathoibríoch an stór sa chúlra chun an fheidhmíocht is fearr\n"
+
+#: builtin/gc.c
+#, c-format
+msgid "Auto packing the repository for optimum performance.\n"
+msgstr "Pacáil uathoibríoch an stór chun an fheidhmíocht is fearr\n"
+
+#: builtin/gc.c
+#, c-format
+msgid "See \"git help gc\" for manual housekeeping.\n"
+msgstr "Féach \"git help gc\" le haghaidh obair tí láimhe.\n"
+
+#: builtin/gc.c
+#, c-format
+msgid ""
+"gc is already running on machine '%s' pid %<PRIuMAX> (use --force if not)"
+msgstr ""
+"tá gc ag rith cheana féin ar mheaisín '%s' pid%<PRIuMAX>(bain úsáid as --"
+"force mura bhfuil)"
+
+#: builtin/gc.c
+msgid ""
+"There are too many unreachable loose objects; run 'git prune' to remove them."
+msgstr ""
+"Tá an iomarca rudaí scaoilte neamh-inrochtana ann; reáchtáil 'git prune' "
+"chun iad a bhaint."
+
+#: builtin/gc.c
+msgid ""
+"git maintenance run [--auto] [--[no-]quiet] [--task=<task>] [--schedule]"
+msgstr ""
+"<task>rith cothabhála git [--auto] [-- [no-] ciúin] [--task=] [--schedule]"
+
+#: builtin/gc.c
+msgid "--no-schedule is not allowed"
+msgstr "Ní cheadaítear --no-schedule"
+
+#: builtin/gc.c
+#, c-format
+msgid "unrecognized --schedule argument '%s'"
+msgstr "argóint --schedule gan aithint '%s'"
+
+#: builtin/gc.c
+msgid "failed to write commit-graph"
+msgstr "theip orthu graf coimisiúnaithe a scríobh"
+
+#: builtin/gc.c
+msgid "failed to prefetch remotes"
+msgstr "theip ar iargúlta iargúlta a réamhghabháil"
+
+#: builtin/gc.c
+msgid "failed to start 'git pack-objects' process"
+msgstr "theip ar phróiseas 'git pack-objects' a thosú"
+
+#: builtin/gc.c
+msgid "failed to finish 'git pack-objects' process"
+msgstr "theip ar phróiseas 'git pack-objects' a chríochnú"
+
+#: builtin/gc.c
+msgid "failed to write multi-pack-index"
+msgstr "theip ar innéacs il-phacáiste a scríobh"
+
+#: builtin/gc.c
+msgid "'git multi-pack-index expire' failed"
+msgstr "Theip ar 'git multi-pack-index in éag'"
+
+#: builtin/gc.c
+msgid "'git multi-pack-index repack' failed"
+msgstr "Theip ar 'git multi-pack-index repack'"
+
+#: builtin/gc.c
+msgid ""
+"skipping incremental-repack task because core.multiPackIndex is disabled"
+msgstr ""
+"tasc athphacáil fáis a scipeáil toisc go bhfuil core.multiPackIndex "
+"díchumasaithe"
+
+#: builtin/gc.c
+#, c-format
+msgid "lock file '%s' exists, skipping maintenance"
+msgstr "tá comhad glasála '%s' ann, ag scipeáil cothabháil"
+
+#: builtin/gc.c
+#, c-format
+msgid "task '%s' failed"
+msgstr "theip ar thasc '%s'"
+
+#: builtin/gc.c
+#, c-format
+msgid "'%s' is not a valid task"
+msgstr "Ní tasc bailí é '%s'"
+
+#: builtin/gc.c
+#, c-format
+msgid "task '%s' cannot be selected multiple times"
+msgstr "ní féidir tasc '%s' a roghnú arís agus arís eile"
+
+#: builtin/gc.c
+msgid "run tasks based on the state of the repository"
+msgstr "tascanna a reáchtáil bunaithe ar staid an stór"
+
+#: builtin/gc.c
+msgid "perform maintenance in the background"
+msgstr "cothabháil a dhéanamh sa chúlra"
+
+#: builtin/gc.c
+msgid "frequency"
+msgstr "minicíocht"
+
+#: builtin/gc.c
+msgid "run tasks based on frequency"
+msgstr "tascanna a rith bunaithe ar mhinicíocht"
+
+#: builtin/gc.c
+msgid "do not report progress or other information over stderr"
+msgstr "ná tuairiscigh dul chun cinn nó faisnéis eile faoi stderr"
+
+#: builtin/gc.c
+msgid "task"
+msgstr "tasc"
+
+#: builtin/gc.c
+msgid "run a specific task"
+msgstr "tasc ar leith a reáchtáil"
+
+#: builtin/gc.c
+msgid "use at most one of --auto and --schedule=<frequency>"
+msgstr "bain úsáid as --auto agus --schedule=<frequency> ar a mhéad"
+
+#: builtin/gc.c
+#, c-format
+msgid "unable to add '%s' value of '%s'"
+msgstr "nach féidir luach '%s' de '%s' a chur leis"
+
+#: builtin/gc.c
+msgid "return success even if repository was not registered"
+msgstr "rath ar ais fiú mura raibh stór cláraithe"
+
+#: builtin/gc.c
+#, c-format
+msgid "unable to unset '%s' value of '%s'"
+msgstr "nach féidir luach '%s' de '%s' a dhíshocrú"
+
+#: builtin/gc.c
+#, c-format
+msgid "repository '%s' is not registered"
+msgstr "níl stór '%s' cláraithe"
+
+#: builtin/gc.c
+#, c-format
+msgid "failed to expand path '%s'"
+msgstr "theip ar an gcosán '%s' a leathnú"
+
+#: builtin/gc.c
+msgid "failed to start launchctl"
+msgstr "theip ar launchctl a thosú"
+
+#: builtin/gc.c
+#, c-format
+msgid "failed to create directories for '%s'"
+msgstr "theip ar eolairí a chruthú do '%s'"
+
+#: builtin/gc.c
+#, c-format
+msgid "failed to bootstrap service %s"
+msgstr "theip ar sheirbhís bootstrap %s"
+
+#: builtin/gc.c
+msgid "failed to create temp xml file"
+msgstr "theip ar chomhad xml temp a chruthú"
+
+#: builtin/gc.c
+msgid "failed to start schtasks"
+msgstr "theip ar schasks a thosú"
+
+#: builtin/gc.c
+msgid "failed to run 'crontab -l'; your system might not support 'cron'"
+msgstr ""
+"theip ar 'crontab -l' a reáchtáil; b'fhéidir nach dtacaíonn do chóras le "
+"'cron'"
+
+#: builtin/gc.c
+msgid "failed to create crontab temporary file"
+msgstr "theip ar chomhad sealadach crontab a chruthú"
+
+#: builtin/gc.c
+msgid "failed to open temporary file"
+msgstr "theip ar chomhad sealadach a oscailt"
+
+#: builtin/gc.c
+msgid "failed to run 'crontab'; your system might not support 'cron'"
+msgstr ""
+"theip ar 'crontab' a reáchtáil; b'fhéidir nach dtacaíonn do chóras le 'cron'"
+
+#: builtin/gc.c
+msgid "'crontab' died"
+msgstr "Fuair 'crontab' bás"
+
+#: builtin/gc.c builtin/worktree.c
+#, c-format
+msgid "failed to delete '%s'"
+msgstr "theip ar '%s' a scriosadh"
+
+#: builtin/gc.c rerere.c
+#, c-format
+msgid "failed to flush '%s'"
+msgstr "theip ar '%s' a shruthlú"
+
+#: builtin/gc.c
+msgid "failed to start systemctl"
+msgstr "theip ar systemctl a thosú"
+
+#: builtin/gc.c
+msgid "failed to run systemctl"
+msgstr "theip ar systemctl a reáchtáil"
+
+#: builtin/gc.c
+#, c-format
+msgid "unrecognized --scheduler argument '%s'"
+msgstr "argóint --scheduler gan aithint '%s'"
+
+#: builtin/gc.c
+msgid "neither systemd timers nor crontab are available"
+msgstr "níl uaireoirí systemd ná crontab ar fáil"
+
+#: builtin/gc.c
+#, c-format
+msgid "%s scheduler is not available"
+msgstr "Níl sceidealóir %s ar fáil"
+
+#: builtin/gc.c
+#, c-format
+msgid ""
+"unable to create '%s.lock': %s.\n"
+"\n"
+"Another scheduled git-maintenance(1) process seems to be running in this\n"
+"repository. Please make sure no other maintenance processes are running and\n"
+"then try again. If it still fails, a git-maintenance(1) process may have\n"
+"crashed in this repository earlier: remove the file manually to continue."
+msgstr ""
+"nach féidir '%s.lock' a chruthú: %s.\n"
+"\n"
+"Is cosúil go bhfuil próiseas sceidealaithe eile git-maintenance(1) ag rith "
+"sa\n"
+"stórlann seo\n"
+"Déan cinnte go bhfuil aon phróisis chothabhála eile ag rith agus\n"
+"ansin déan iarracht arís. Má theipeann air fós, d'fhéadfadh go mbeadh "
+"próiseas cothabhála git-maintenance (1)\n"
+"tháinig isteach sa stór seo níos luaithe: bain an comhad de láimh chun "
+"leanúint ar aghaidh."
+
+#: builtin/gc.c
+msgid "cannot acquire lock for scheduled background maintenance"
+msgstr "ní féidir glas a fháil le haghaidh cothabháil sceidealta cúlra"
+
+#: builtin/gc.c
+msgid "git maintenance start [--scheduler=<scheduler>]"
+msgstr "<scheduler>tús cothabhála git [--scheduler=]"
+
+#: builtin/gc.c
+msgid "scheduler"
+msgstr "sceidealóir"
+
+#: builtin/gc.c
+msgid "scheduler to trigger git maintenance run"
+msgstr "sceidealóir chun rith cothabhála git a spreagadh"
+
+#: builtin/gc.c
+msgid "failed to set up maintenance schedule"
+msgstr "theip ar sceideal cothabhála a chur ar bun"
+
+#: builtin/gc.c
+msgid "failed to add repo to global config"
+msgstr "theip ar repo a chur le cumraíocht domhanda"
+
+#: builtin/gc.c
+msgid "git maintenance <subcommand> [<options>]"
+msgstr "cothabháil git <subcommand>[<options>]"
+
+#: builtin/grep.c
+msgid "git grep [<options>] [-e] <pattern> [<rev>...] [[--] <path>...]"
+msgstr "git grep [<options>] [-e] <pattern>[<rev>...] [[--]<path>...]"
+
+#: builtin/grep.c
+#, c-format
+msgid "grep: failed to create thread: %s"
+msgstr "grep: theip ar shnáithe a chruthú: %s"
+
+#: builtin/grep.c
+#, c-format
+msgid "invalid number of threads specified (%d) for %s"
+msgstr "líon neamhbhailí na snáitheanna a shonraítear (%d) do %s"
+
+#. TRANSLATORS: %s is the configuration
+#. variable for tweaking threads, currently
+#. grep.threads
+#.
+#: builtin/grep.c builtin/index-pack.c builtin/pack-objects.c
+#, c-format
+msgid "no threads support, ignoring %s"
+msgstr "gan tacaíocht do shnáitheanna, ag déanamh neamhaird ar %s"
+
+#: builtin/grep.c
+#, c-format
+msgid "unable to read tree %s"
+msgstr "nach féidir crann %s a léamh"
+
+#: builtin/grep.c
+#, c-format
+msgid "unable to grep from object of type %s"
+msgstr "in ann grep ó réad de chineál %s"
+
+#: builtin/grep.c
+#, c-format
+msgid "switch `%c' expects a numerical value"
+msgstr "tá an lasc `%c' ag súil le luach uimhriúil"
+
+#: builtin/grep.c
+msgid "search in index instead of in the work tree"
+msgstr "cuardaigh san innéacs in ionad sa chrann oibre"
+
+#: builtin/grep.c
+msgid "find in contents not managed by git"
+msgstr "aimsigh in ábhar nach mbainistíonn git"
+
+#: builtin/grep.c
+msgid "search in both tracked and untracked files"
+msgstr "cuardach i gcomhaid rianaithe agus neamhrianaithe araon"
+
+#: builtin/grep.c
+msgid "ignore files specified via '.gitignore'"
+msgstr "neamhaird a dhéanamh ar chomhaid a shonraítear trí '.gitignore'"
+
+#: builtin/grep.c
+msgid "recursively search in each submodule"
+msgstr "cuardach athshlánach i ngach fo-mhodúl"
+
+#: builtin/grep.c
+msgid "show non-matching lines"
+msgstr "línte neamh-mheaitseála a"
+
+#: builtin/grep.c
+msgid "case insensitive matching"
+msgstr "meaitseáil cás neamhíogair"
+
+#: builtin/grep.c
+msgid "match patterns only at word boundaries"
+msgstr "patrúin a mheaitseáil ach ag teorainneacha focal"
+
+#: builtin/grep.c
+msgid "process binary files as text"
+msgstr "comhaid dénártha a phróiseáil mar th"
+
+#: builtin/grep.c
+msgid "don't match patterns in binary files"
+msgstr "ná meaitseáil patrúin i gcomhaid dénártha"
+
+#: builtin/grep.c
+msgid "process binary files with textconv filters"
+msgstr "comhaid dénártha a phróiseáil le scagairí textconv"
+
+#: builtin/grep.c
+msgid "search in subdirectories (default)"
+msgstr "cuardaigh i bhfo-eolairí (réamhshocrú)"
+
+#: builtin/grep.c
+msgid "descend at most <n> levels"
+msgstr "síos ag an bhformhór na <n>leibh"
+
+#: builtin/grep.c
+msgid "use extended POSIX regular expressions"
+msgstr "bain úsáid as nathanna rialta POSIX leathnaithe"
+
+#: builtin/grep.c
+msgid "use basic POSIX regular expressions (default)"
+msgstr "úsáid abairtí rialta bunúsacha POSIX (réamhshocraithe)"
+
+#: builtin/grep.c
+msgid "interpret patterns as fixed strings"
+msgstr "patrúin a léiriú mar teaghráin seasta"
+
+#: builtin/grep.c
+msgid "use Perl-compatible regular expressions"
+msgstr "úsáid abairtí rialta atá comhoiriúnach le PERL"
+
+#: builtin/grep.c
+msgid "show line numbers"
+msgstr "taispeáin uimhreacha líne"
+
+#: builtin/grep.c
+msgid "show column number of first match"
+msgstr "taispeáin uimhir cholún an chéad chluiche"
+
+#: builtin/grep.c
+msgid "don't show filenames"
+msgstr "ná taispeáin ainmneacha comhaid"
+
+#: builtin/grep.c
+msgid "show filenames"
+msgstr "taispeáin ainmneacha comhaid"
+
+#: builtin/grep.c
+msgid "show filenames relative to top directory"
+msgstr "ainmneacha comhaid a thaispeáint i gcoibhneas"
+
+#: builtin/grep.c
+msgid "show only filenames instead of matching lines"
+msgstr "taispeáint ach ainmneacha comhaid in ionad línte meaitseála"
+
+#: builtin/grep.c
+msgid "synonym for --files-with-matches"
+msgstr "comhchiallach do --files-with-matches"
+
+#: builtin/grep.c
+msgid "show only the names of files without match"
+msgstr "taispeáint ach ainmneacha na gcomhaid gan meaitseáil"
+
+#: builtin/grep.c
+msgid "print NUL after filenames"
+msgstr "priontáil NUL tar éis ainmneacha comhaid"
+
+#: builtin/grep.c
+msgid "show only matching parts of a line"
+msgstr "taispeáin ach codanna de líne a mheaitseáil"
+
+#: builtin/grep.c
+msgid "show the number of matches instead of matching lines"
+msgstr "taispeáint líon na gcluichí in ionad línte meaitseála"
+
+#: builtin/grep.c
+msgid "highlight matches"
+msgstr "cluichí aibhsithe"
+
+#: builtin/grep.c
+msgid "print empty line between matches from different files"
+msgstr "priontáil líne folamh idir cluichí ó chomhaid éagsúla"
+
+#: builtin/grep.c
+msgid "show filename only once above matches from same file"
+msgstr ""
+"taispeáin ainm comhaid ach uair amháin thuas na cluichí ón gcomhad céanna"
+
+#: builtin/grep.c
+msgid "show <n> context lines before and after matches"
+msgstr "<n>línte comhthéacs a thaispeáint roimh agus tar"
+
+#: builtin/grep.c
+msgid "show <n> context lines before matches"
+msgstr "<n>línte comhthéacs a thaispeáint"
+
+#: builtin/grep.c
+msgid "show <n> context lines after matches"
+msgstr "<n>línte comhthéacs a thaispeáint"
+
+#: builtin/grep.c
+msgid "use <n> worker threads"
+msgstr "úsáid sná <n>itheanna oibrithe"
+
+#: builtin/grep.c
+msgid "shortcut for -C NUM"
+msgstr "aicearra le haghaidh -C NUM"
+
+#: builtin/grep.c
+msgid "show a line with the function name before matches"
+msgstr "taispeáint líne leis an ainm feidhme roimh mheaitseálacha"
+
+#: builtin/grep.c
+msgid "show the surrounding function"
+msgstr "taispeáin an fheidhm máguaird"
+
+#: builtin/grep.c
+msgid "read patterns from file"
+msgstr "patrúin a léamh ón gcomhad"
+
+#: builtin/grep.c
+msgid "match <pattern>"
+msgstr "comhoiriúnú <pattern>"
+
+#: builtin/grep.c
+msgid "combine patterns specified with -e"
+msgstr "comhcheangal patrúin a shonraítear le -e"
+
+#: builtin/grep.c
+msgid "indicate hit with exit status without output"
+msgstr "léirigh bualadh le stádas imeachta gan aschur"
+
+#: builtin/grep.c
+msgid "show only matches from files that match all patterns"
+msgstr "taispeáin ach cluichí ó chomhaid a mheaitseálann gach patrún"
+
+#: builtin/grep.c
+msgid "pager"
+msgstr "pager"
+
+#: builtin/grep.c
+msgid "show matching files in the pager"
+msgstr "taispeáint comhaid mheaitseála sa pager"
+
+#: builtin/grep.c
+msgid "allow calling of grep(1) (ignored by this build)"
+msgstr "cead a ghlaoch grep (1) (neamhaird ag an tógáil seo)"
+
+#: builtin/grep.c
+msgid "maximum number of results per file"
+msgstr "líon uasta na dtorthaí in aghaidh an chomhad"
+
+#: builtin/grep.c
+msgid "no pattern given"
+msgstr "aon phatrún a thugtar"
+
+#: builtin/grep.c
+msgid "--no-index or --untracked cannot be used with revs"
+msgstr "Ní féidir --no-index nó --untracked a úsáid le hathairí"
+
+#: builtin/grep.c
+#, c-format
+msgid "unable to resolve revision: %s"
+msgstr "nach féidir athbhreithniú a réiteach: %s"
+
+#: builtin/grep.c
+msgid "--untracked not supported with --recurse-submodules"
+msgstr "--untracked nach dtacaítear le --recurse-submodules"
+
+#: builtin/grep.c
+msgid "invalid option combination, ignoring --threads"
+msgstr "teaglaim roghanna neamhbhailí, ag neamhaird --threads"
+
+#: builtin/grep.c builtin/pack-objects.c
+msgid "no threads support, ignoring --threads"
+msgstr "níl aon tacaíocht do shnáitheanna, ag déanamh neamhaird ar --threads"
+
+#: builtin/grep.c builtin/index-pack.c builtin/pack-objects.c
+#, c-format
+msgid "invalid number of threads specified (%d)"
+msgstr "líon neamhbhailí na snáitheanna sonraithe (%d)"
+
+#: builtin/grep.c
+msgid "--open-files-in-pager only works on the worktree"
+msgstr "Ní oibríonn --open-files-in-pager ach ar an gcrann oibre"
+
+#: builtin/grep.c
+msgid "--[no-]exclude-standard cannot be used for tracked contents"
+msgstr ""
+"- ní féidir caighdeán eisiach [no-] a úsáid le haghaidh ábhar rianaithe"
+
+#: builtin/grep.c
+msgid "both --cached and trees are given"
+msgstr "tugtar --cached agus crainn araon"
+
+#: builtin/hash-object.c
+msgid ""
+"git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]\n"
+" [--stdin [--literally]] [--] <file>..."
+msgstr ""
+"git hash-object [-t <type>] [-w] [--path=<file> | --no-filters]\n"
+" [--stdin [--literally]] [--] <file>..."
+
+#: builtin/hash-object.c
+msgid "git hash-object [-t <type>] [-w] --stdin-paths [--no-filters]"
+msgstr "git hash-object [-t <type>] [-w] --stdin-paths [--no-filters]"
+
+#: builtin/hash-object.c
+msgid "object type"
+msgstr "cineál réad"
+
+#: builtin/hash-object.c
+msgid "write the object into the object database"
+msgstr "scríobh an réad isteach sa bhunachar sonraí réad"
+
+#: builtin/hash-object.c
+msgid "read the object from stdin"
+msgstr "léigh an réad ó stdin"
+
+#: builtin/hash-object.c
+msgid "store file as is without filters"
+msgstr "comhad a stóráil mar atá gan scagairí"
+
+#: builtin/hash-object.c
+msgid ""
+"just hash any random garbage to create corrupt objects for debugging Git"
+msgstr ""
+"ní gá ach aon truflais randamach a chur chun rudaí truaillithe a chruthú le "
+"haghaidh dífhab"
+
+#: builtin/hash-object.c
+msgid "process file as it were from this path"
+msgstr "comhad próiseála mar a bhí sé ón gcosán seo"
+
+#: builtin/help.c
+msgid "print all available commands"
+msgstr "gach ordú atá ar fáil a phriontáil"
+
+#: builtin/help.c
+msgid "show external commands in --all"
+msgstr "taispeáint orduithe seachtracha i --all"
+
+#: builtin/help.c
+msgid "show aliases in --all"
+msgstr "taispeáin ainmneacha in --all"
+
+#: builtin/help.c
+msgid "exclude guides"
+msgstr "treoracha a eisiamh"
+
+#: builtin/help.c
+msgid "show man page"
+msgstr "taispeáin leathanach fear"
+
+#: builtin/help.c
+msgid "show manual in web browser"
+msgstr "taispeáin lámhleabhar sa bhrabhsála"
+
+#: builtin/help.c
+msgid "show info page"
+msgstr "taispeáin leathanach faisnéise"
+
+#: builtin/help.c
+msgid "print command description"
+msgstr "cur síos ordaithe priontála"
+
+#: builtin/help.c
+msgid "print list of useful guides"
+msgstr "liosta priontáil de threoracha úsáideacha"
+
+#: builtin/help.c
+msgid "print list of user-facing repository, command and file interfaces"
+msgstr ""
+"liosta priontála de stór, comhéadain ordaithe agus comhad atá os comhair "
+"úsáideora"
+
+#: builtin/help.c
+msgid "print list of file formats, protocols and other developer interfaces"
+msgstr ""
+"liosta priontála formáidí comhaid, prótacail agus comhéadain forbróra eile"
+
+#: builtin/help.c
+msgid "print all configuration variable names"
+msgstr "priontáil gach ainm athróg cumraíochta"
+
+#: builtin/help.c
+msgid "git help [[-i|--info] [-m|--man] [-w|--web]] [<command>|<doc>]"
+msgstr "<command><doc>git help [[-i|--eolas] [-m|--fear] [-w|--gréasáin]] [|]"
+
+#: builtin/help.c
+#, c-format
+msgid "unrecognized help format '%s'"
+msgstr "formáid cabhrach gan aithint '%s'"
+
+#: builtin/help.c
+msgid "Failed to start emacsclient."
+msgstr "Theip ar emacsclient a thosú."
+
+#: builtin/help.c
+msgid "Failed to parse emacsclient version."
+msgstr "Theip ar leagan emacsclient a pháirseáil."
+
+#: builtin/help.c
+#, c-format
+msgid "emacsclient version '%d' too old (< 22)."
+msgstr "leagan imacsclient '%d' ró-sean (< 22)."
+
+#: builtin/help.c
+#, c-format
+msgid "failed to exec '%s'"
+msgstr "theip ar '%s' a fheidhmiú"
+
+#: builtin/help.c
+#, c-format
+msgid ""
+"'%s': path for unsupported man viewer.\n"
+"Please consider using 'man.<tool>.cmd' instead."
+msgstr ""
+"'%s': cosán do lucht féachana fear gan tacaíocht.\n"
+"Smaoinigh ar 'fear a úsáid le do thoil. <tool>.cmd' ina ionad."
+
+#: builtin/help.c
+#, c-format
+msgid ""
+"'%s': cmd for supported man viewer.\n"
+"Please consider using 'man.<tool>.path' instead."
+msgstr ""
+"'%s': cmd do lucht féachana fear tacaithe.\n"
+"Smaoinigh ar 'fear a úsáid le do thoil. <tool>.path' ina ionad sin."
+
+#: builtin/help.c
+#, c-format
+msgid "'%s': unknown man viewer."
+msgstr "'%s': féachtóir fear anaithnid."
+
+#: builtin/help.c
+msgid "no man viewer handled the request"
+msgstr "níl aon fhéachtóir fear ar an iarraidh"
+
+#: builtin/help.c
+msgid "no info viewer handled the request"
+msgstr "níl aon fhéachtóir faisnéise ag láimhseáil"
+
+#: builtin/help.c git.c
+#, c-format
+msgid "'%s' is aliased to '%s'"
+msgstr "Tá '%s' aistrithe go '%s'"
+
+#: builtin/help.c git.c
+#, c-format
+msgid "bad alias.%s string: %s"
+msgstr "droch-ainm. Teagán %s: %s"
+
+#: builtin/help.c
+#, c-format
+msgid "the '%s' option doesn't take any non-option arguments"
+msgstr "ní ghlacann an rogha '%s' aon argóintí neamh-rogha"
+
+#: builtin/help.c
+msgid ""
+"the '--no-[external-commands|aliases]' options can only be used with '--all'"
+msgstr ""
+"ní féidir na roghanna '--no- [external-commands|aliases] 'a úsáid ach le' --"
+"all '"
+
+#: builtin/help.c
+#, c-format
+msgid "usage: %s%s"
+msgstr "úsáid: %s%s"
+
+#: builtin/help.c
+msgid "'git help config' for more information"
+msgstr "'git help config' le haghaidh tuilleadh faisnéise"
+
+#: builtin/hook.c
+msgid ""
+"git hook run [--ignore-missing] [--to-stdin=<path>] <hook-name> [-- <hook-"
+"args>]"
+msgstr ""
+"<path><hook-name><hook-args>git hook run [--ignore-missing] [--to-stdin =] "
+"[--]"
+
+#: builtin/hook.c
+msgid "silently ignore missing requested <hook-name>"
+msgstr "neamhaird go ciúin a iarrtar ar <hook-name>"
+
+#: builtin/hook.c
+msgid "file to read into hooks' stdin"
+msgstr "comhad le léamh isteach i stdin na hracaí"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "object type mismatch at %s"
+msgstr "mímheaitseáil cineál réad ag %s"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "did not receive expected object %s"
+msgstr "nár bhfuair sé réad ag súil leis %s"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "object %s: expected type %s, found %s"
+msgstr "réad %s: súil leis an gcineál %s, aimsíodh %s"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "cannot fill %d byte"
+msgid_plural "cannot fill %d bytes"
+msgstr[0] "ní féidir %d beart a líonadh"
+msgstr[1] "ní féidir %d beart a líonadh"
+msgstr[2] "ní féidir %d beart a líonadh"
+
+#: builtin/index-pack.c
+msgid "early EOF"
+msgstr "luath EOF"
+
+#: builtin/index-pack.c
+msgid "read error on input"
+msgstr "earráid léigh ar ionchur"
+
+#: builtin/index-pack.c
+msgid "used more bytes than were available"
+msgstr "úsáideadh níos mó bytes ná mar a bhí ar fáil"
+
+#: builtin/index-pack.c builtin/pack-objects.c
+msgid "pack too large for current definition of off_t"
+msgstr "pacáiste ró-mhór le haghaidh sainmhíniú reatha ar off_t"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "pack exceeds maximum allowed size (%s)"
+msgstr "sáraíonn an pacáiste an méid uasta ceadaithe (%s)"
+
+#: builtin/index-pack.c
+msgid "pack signature mismatch"
+msgstr "mímheaitseáil sínithe pacáiste"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "pack version %<PRIu32> unsupported"
+msgstr "leagan pacáiste %<PRIu32> gan tacaíocht"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "pack has bad object at offset %<PRIuMAX>: %s"
+msgstr "tá réad lochtach sa phacáiste ag an bhfritháireamh %<PRIuMAX>: %s"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "inflate returned %d"
+msgstr "infleáil ar ais %d"
+
+#: builtin/index-pack.c
+msgid "offset value overflow for delta base object"
+msgstr "ró-shreabhadh luacha a fhritháireamh do réad"
+
+#: builtin/index-pack.c
+msgid "delta base offset is out of bound"
+msgstr "tá fhritháireamh bonn delta as ceangailte"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "unknown object type %d"
+msgstr "cineál réad anaithnid %d"
+
+#: builtin/index-pack.c
+msgid "cannot pread pack file"
+msgstr "ní féidir comhad pacáiste a roghnú"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "premature end of pack file, %<PRIuMAX> byte missing"
+msgid_plural "premature end of pack file, %<PRIuMAX> bytes missing"
+msgstr[0] "deireadh roimh am comhaid phacáiste, %<PRIuMAX> beart ar iarraidh"
+msgstr[1] "deireadh roimh am comhaid phacáiste, %<PRIuMAX> beart ar iarraidh"
+msgstr[2] "deireadh roimh am comhaid phacáiste, %<PRIuMAX> beart ar iarraidh"
+
+#: builtin/index-pack.c
+msgid "serious inflate inconsistency"
+msgstr "neamhchomhsheasmhacht tromchúiseach"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "SHA1 COLLISION FOUND WITH %s !"
+msgstr "FUARTHAS IMBHALL SHA1 LE %s!"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "cannot read existing object info %s"
+msgstr "ní féidir faisnéis réad atá ann cheana %s a léamh"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "cannot read existing object %s"
+msgstr "ní féidir réad %s atá ann cheana a léamh"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "invalid blob object %s"
+msgstr "réad blob neamhbhailí %s"
+
+#: builtin/index-pack.c
+msgid "fsck error in packed object"
+msgstr "earráid fsck i réad pacáilte"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "Not all child objects of %s are reachable"
+msgstr "Níl gach réad leanbh de %s inrochtana"
+
+#: builtin/index-pack.c
+msgid "failed to apply delta"
+msgstr "theip ar delta a chur i bhfeidhm"
+
+#: builtin/index-pack.c
+msgid "Receiving objects"
+msgstr "Rudaí a fháil"
+
+#: builtin/index-pack.c
+msgid "Indexing objects"
+msgstr "Rudaí innéacsála"
+
+#: builtin/index-pack.c
+msgid "pack is corrupted (SHA1 mismatch)"
+msgstr "tá an pacáiste truaillithe (neamhoiriúnú SHA1)"
+
+#: builtin/index-pack.c
+msgid "cannot fstat packfile"
+msgstr "ní féidir le pacáiste fstat"
+
+#: builtin/index-pack.c
+msgid "pack has junk at the end"
+msgstr "tá bruscar ag an bpacáiste ag an deireadh"
+
+#: builtin/index-pack.c
+msgid "confusion beyond insanity in parse_pack_objects()"
+msgstr "mearbhall níos faide ná imní i parse_pack_objects()"
+
+#: builtin/index-pack.c
+msgid "Resolving deltas"
+msgstr "Deltas a réiteach"
+
+#: builtin/index-pack.c builtin/pack-objects.c
+#, c-format
+msgid "unable to create thread: %s"
+msgstr "nach féidir snáithe a chruthú: %s"
+
+#: builtin/index-pack.c
+msgid "confusion beyond insanity"
+msgstr "mearbhall níos faide ná mar gheall"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "completed with %d local object"
+msgid_plural "completed with %d local objects"
+msgstr[0] "críochnaithe le %d réad áitiúil"
+msgstr[1] "críochnaithe le %d réad áitiúil"
+msgstr[2] "críochnaithe le %d réad áitiúil"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "Unexpected tail checksum for %s (disk corruption?)"
+msgstr "Seicsum eireaball gan choinne do %s (éilliú diosca?)"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "pack has %d unresolved delta"
+msgid_plural "pack has %d unresolved deltas"
+msgstr[0] "tá %d delta gan réiteach sa phacáiste"
+msgstr[1] "tá %d deiltí gan réiteach sa phacáiste"
+msgstr[2] "tá %d deiltí gan réiteach sa phacáiste"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "unable to deflate appended object (%d)"
+msgstr "nach féidir réad cuibheangailte a dhíscaoileadh (%d)"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "local object %s is corrupt"
+msgstr "tá réad áitiúil %s truaillithe"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "packfile name '%s' does not end with '.%s'"
+msgstr "ní chríochnaíonn ainm pacáiste '%s' le '.%s'"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "cannot write %s file '%s'"
+msgstr "ní féidir comhad %s '%s' a scríobh"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "cannot close written %s file '%s'"
+msgstr "ní féidir comhad %s scríofa '%s' a dhúnadh"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "unable to rename temporary '*.%s' file to '%s'"
+msgstr "in ann athainmniú sealadach '*.%s' comhad chuig '%s'"
+
+#: builtin/index-pack.c
+msgid "error while closing pack file"
+msgstr "earráid agus comhad pacáiste á dúnadh"
+
+#: builtin/index-pack.c builtin/pack-objects.c
+#, c-format
+msgid "bad pack.indexVersion=%<PRIu32>"
+msgstr "droch-pack.indexVersion=%<PRIu32>"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "Cannot open existing pack file '%s'"
+msgstr "Ní féidir comhad pacáiste atá ann cheana '%s' a oscailt"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "Cannot open existing pack idx file for '%s'"
+msgstr "Ní féidir comhad idx pacáiste atá ann cheana a oscailt do '%s'"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "non delta: %d object"
+msgid_plural "non delta: %d objects"
+msgstr[0] "neamh-delta: %d réad"
+msgstr[1] "neamh-delta: %d réad"
+msgstr[2] "neamh-delta: %d réad"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "chain length = %d: %lu object"
+msgid_plural "chain length = %d: %lu objects"
+msgstr[0] "fad slabhra = %d: %lu réad"
+msgstr[1] "fad slabhra = %d: %lu réada"
+msgstr[2] "fad slabhra = %d: %lu réada"
+
+#: builtin/index-pack.c
+msgid "could not start pack-objects to repack local links"
+msgstr "ní fhéadfaí pacáiste-earraí a thosú chun naisc áitiúla a athphacáil"
+
+#: builtin/index-pack.c
+msgid "failed to feed local object to pack-objects"
+msgstr "theip ar réad áitiúil a bheathú ar rudaí pacáiste"
+
+#: builtin/index-pack.c
+msgid "index-pack: Expecting full hex object ID lines only from pack-objects."
+msgstr ""
+"index-pack: Ag súil le línte aitheantais réada heicsidheachúlach iomlán ó "
+"pack-objects amháin."
+
+#: builtin/index-pack.c
+msgid "could not finish pack-objects to repack local links"
+msgstr "ní fhéadfaí pacáistí a chríochnú chun naisc áitiúla a athphacáil"
+
+#: builtin/index-pack.c
+msgid "Cannot come back to cwd"
+msgstr "Ní féidir teacht ar ais chuig cwd"
+
+#: builtin/index-pack.c builtin/unpack-objects.c
+#, c-format
+msgid "bad --pack_header: %s"
+msgstr "droch --pack_header: %s"
+
+#: builtin/index-pack.c
+#, c-format
+msgid "bad %s"
+msgstr "droch %s"
+
+#: builtin/index-pack.c builtin/init-db.c setup.c
+#, c-format
+msgid "unknown hash algorithm '%s'"
+msgstr "algartam hais anaithnid '%s'"
+
+#: builtin/index-pack.c
+msgid "--promisor cannot be used with a pack name"
+msgstr "--promisor ní féidir é a úsáid le hainm pacáiste"
+
+#: builtin/index-pack.c
+msgid "--stdin requires a git repository"
+msgstr "--stdin teastaíonn stórlann git"
+
+#: builtin/index-pack.c
+msgid "--verify with no packfile name given"
+msgstr "--verify gan ainm comhaid pacáiste tugtha"
+
+#: builtin/index-pack.c builtin/unpack-objects.c
+msgid "fsck error in pack objects"
+msgstr "fsck earráid i rudaí pacáiste"
+
+#: builtin/init-db.c
+msgid ""
+"git init [-q | --quiet] [--bare] [--template=<template-directory>]\n"
+" [--separate-git-dir <git-dir>] [--object-format=<format>]\n"
+" [--ref-format=<format>]\n"
+" [-b <branch-name> | --initial-branch=<branch-name>]\n"
+" [--shared[=<permissions>]] [<directory>]"
+msgstr ""
+"git init [-q | --quiet] [--bare] [--template=<template-directory>]\n"
+" [--separate-git-dir <git-dir>] [--object-format=<format>]\n"
+" [--ref-format=<format>]\n"
+" [-b <branch-name> | --initial-branch=<branch-name>]\n"
+" [--shared[=<permissions>]] [<directory>]"
+
+#: builtin/init-db.c
+msgid "permissions"
+msgstr "ceadanna"
+
+#: builtin/init-db.c
+msgid "specify that the git repository is to be shared amongst several users"
+msgstr "sonraigh go bhfuil an stór git le roinnt i measc roinnt úsáideoirí"
+
+#: builtin/init-db.c
+msgid "override the name of the initial branch"
+msgstr "ainm na brainse tosaigh a shárú"
+
+#: builtin/init-db.c builtin/verify-pack.c
+msgid "hash"
+msgstr "hash"
+
+#: builtin/init-db.c builtin/show-index.c builtin/verify-pack.c
+msgid "specify the hash algorithm to use"
+msgstr "sonraigh an algartam hash le húsáid"
+
+#: builtin/init-db.c
+#, c-format
+msgid "cannot mkdir %s"
+msgstr "ní féidir teacht ar %s"
+
+#: builtin/init-db.c
+#, c-format
+msgid "cannot chdir to %s"
+msgstr "ní féidir teacht chuig %s"
+
+#: builtin/init-db.c
+#, c-format
+msgid ""
+"%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
+"dir=<directory>)"
+msgstr ""
+"%s (or --work-tree=<directory>) ní cheadaítear gan sonrú %s (or --git-"
+"dir=<directory>)"
+
+#: builtin/init-db.c
+#, c-format
+msgid "Cannot access work tree '%s'"
+msgstr "Ní féidir rochtain a fháil ar chrann oibre '%s'"
+
+#: builtin/init-db.c
+msgid "--separate-git-dir incompatible with bare repository"
+msgstr "--separate-git-dir neamhoiriúnach le stór lom"
+
+#: builtin/interpret-trailers.c
+msgid ""
+"git interpret-trailers [--in-place] [--trim-empty]\n"
+" [(--trailer (<key>|<key-alias>)[(=|:)<value>])...]\n"
+" [--parse] [<file>...]"
+msgstr ""
+"git interpret-trailers [--in-place] [--trim-empty]\n"
+" [(--trailer (<key>|<key-alias>)[(=|:)<value>])...]\n"
+" [--parse] [<file>...]"
+
+#: builtin/interpret-trailers.c wrapper.c
+#, c-format
+msgid "could not stat %s"
+msgstr "ní raibh ann %s a shástáil"
+
+#: builtin/interpret-trailers.c
+#, c-format
+msgid "file %s is not a regular file"
+msgstr "ní comhad rialta é comhad %s"
+
+#: builtin/interpret-trailers.c
+#, c-format
+msgid "file %s is not writable by user"
+msgstr "ní féidir an t-úsáideoir comhad %s a scríobh"
+
+#: builtin/interpret-trailers.c
+msgid "could not open temporary file"
+msgstr "ní fhéadfadh comhad sealadach a oscailt"
+
+#: builtin/interpret-trailers.c
+#, c-format
+msgid "could not read input file '%s'"
+msgstr "ní raibh in ann comhad ionchuir '%s' a léamh"
+
+#: builtin/interpret-trailers.c builtin/mktag.c imap-send.c
+msgid "could not read from stdin"
+msgstr "ní fhéadfaí léamh ó stdin"
+
+#: builtin/interpret-trailers.c
+#, c-format
+msgid "could not rename temporary file to %s"
+msgstr "ní fhéadfaí comhad sealadach a athainmniú go %s"
+
+#: builtin/interpret-trailers.c
+msgid "edit files in place"
+msgstr "comhaid in áit a chur in eagar"
+
+#: builtin/interpret-trailers.c
+msgid "trim empty trailers"
+msgstr "leantóirí folamh a ghear"
+
+#: builtin/interpret-trailers.c
+msgid "placement"
+msgstr "socrúcháin"
+
+#: builtin/interpret-trailers.c
+msgid "where to place the new trailer"
+msgstr "cá háit a chuirfear an leantóir nua"
+
+#: builtin/interpret-trailers.c
+msgid "action if trailer already exists"
+msgstr "gníomh má tá leantóir ann cheana féin"
+
+#: builtin/interpret-trailers.c
+msgid "action if trailer is missing"
+msgstr "gníomh má tá leantóir ar iarraidh"
+
+#: builtin/interpret-trailers.c
+msgid "output only the trailers"
+msgstr "aschur ach na leantóirí"
+
+#: builtin/interpret-trailers.c
+msgid "do not apply trailer.* configuration variables"
+msgstr "ná cuir leantóir i bhfeidhm.* athróga cumraíochta"
+
+#: builtin/interpret-trailers.c
+msgid "reformat multiline trailer values as single-line values"
+msgstr "luachanna leantóra illíne a athfhormáidiú mar luachanna aon-líne"
+
+#: builtin/interpret-trailers.c
+msgid "alias for --only-trailers --only-input --unfold"
+msgstr "ainm le haghaidh --only-trailers --only-input --unfold"
+
+#: builtin/interpret-trailers.c
+msgid "do not treat \"---\" as the end of input"
+msgstr "ná déileáil le “---” mar dheireadh an ionchuir"
+
+#: builtin/interpret-trailers.c
+msgid "trailer(s) to add"
+msgstr "leantóir (í) le cur leis"
+
+#: builtin/interpret-trailers.c
+msgid "--trailer with --only-input does not make sense"
+msgstr "níl ciall le --trailer le --only-input"
+
+#: builtin/interpret-trailers.c
+msgid "no input file given for in-place editing"
+msgstr "níl aon chomhad ionchuir a thugtar le haghaidh eagarthóireachta"
+
+#: builtin/log.c
+msgid "git log [<options>] [<revision-range>] [[--] <path>...]"
+msgstr "logáil git [<options>] [<revision-range>] [[--]<path>...]"
+
+#: builtin/log.c
+msgid "git show [<options>] <object>..."
+msgstr "git show [<options>]<object>..."
+
+#: builtin/log.c
+#, c-format
+msgid "invalid --decorate option: %s"
+msgstr "rogha neamhbhailí --decorate: %s"
+
+#: builtin/log.c diff.c
+msgid "suppress diff output"
+msgstr "aschur diff a chur faoi chois"
+
+#: builtin/log.c
+msgid "show source"
+msgstr "foinse taispeáin"
+
+#: builtin/log.c
+msgid "clear all previously-defined decoration filters"
+msgstr "glan na scagairí maisiúcháin atá sainmhínithe roimhe seo"
+
+#: builtin/log.c
+msgid "only decorate refs that match <pattern>"
+msgstr "ní mhaisigh ach na cinn a mheaitseálann <pattern>"
+
+#: builtin/log.c
+msgid "do not decorate refs that match <pattern>"
+msgstr "ná maisigh na cinn a mheaitseálann <pattern>"
+
+#: builtin/log.c
+msgid "decorate options"
+msgstr "roghanna maisiú"
+
+#: builtin/log.c
+msgid ""
+"trace the evolution of line range <start>,<end> or function :<funcname> in "
+"<file>"
+msgstr "éabhlóid raon líne<start>, <end>nó feidhm <funcname>a rianú: i <file>"
+
+#: builtin/log.c
+msgid "-L<range>:<file> cannot be used with pathspec"
+msgstr "-L<range>: ní <file>féidir é a úsáid le pathspec"
+
+#: builtin/log.c
+#, c-format
+msgid "Final output: %d %s\n"
+msgstr "Aschur deiridh: %d %s\n"
+
+#: builtin/log.c
+#, c-format
+msgid "git show %s: bad file"
+msgstr "git show %s: droch-chomhad"
+
+#: builtin/log.c
+#, c-format
+msgid "could not read object %s"
+msgstr "ní raibh in ann réad %s a léamh"
+
+#: builtin/log.c
+#, c-format
+msgid "unknown type: %d"
+msgstr "cineál anaithnid: %d"
+
+#: builtin/log.c
+#, c-format
+msgid "%s: invalid cover from description mode"
+msgstr "%s: clúdach neamhbhailí ó mhodh tuairisc"
+
+#: builtin/log.c
+msgid "format.headers without value"
+msgstr "format.headers gan luach"
+
+#: builtin/log.c
+#, c-format
+msgid "cannot open patch file %s"
+msgstr "ní féidir comhad paiste %s a oscailt"
+
+#: builtin/log.c
+msgid "need exactly one range"
+msgstr "teastaíonn raon amháin díreach"
+
+#: builtin/log.c
+msgid "not a range"
+msgstr "ní raon"
+
+#: builtin/log.c
+#, c-format
+msgid "unable to read branch description file '%s'"
+msgstr "nach féidir an comhad tuairisc brainse '%s' a léamh"
+
+#: builtin/log.c
+msgid "cover letter needs email format"
+msgstr "teastaíonn formáid ríomhphoist ó litir"
+
+#: builtin/log.c
+msgid "failed to create cover-letter file"
+msgstr "theip ar chomhad litir chlúdaigh a chruthú"
+
+#: builtin/log.c
+#, c-format
+msgid "insane in-reply-to: %s"
+msgstr "in-fhreagairt daingniúil: %s"
+
+#: builtin/log.c
+msgid "git format-patch [<options>] [<since> | <revision-range>]"
+msgstr "git format-patch [<roghanna>] [<ó> | <raon-athbhreithnithe>]"
+
+#: builtin/log.c
+msgid "two output directories?"
+msgstr "dhá eolaire aschuir?"
+
+#: builtin/log.c
+#, c-format
+msgid "unknown commit %s"
+msgstr "tiomantas anaithnid %s"
+
+#: builtin/log.c builtin/replace.c
+#, c-format
+msgid "failed to resolve '%s' as a valid ref"
+msgstr "theip ar '%s' a réiteach mar thagartha bailí"
+
+#: builtin/log.c
+msgid "could not find exact merge base"
+msgstr "ní fhéadfaí bonn cumaisc cruinn a fháil"
+
+#: builtin/log.c
+msgid ""
+"failed to get upstream, if you want to record base commit automatically,\n"
+"please use git branch --set-upstream-to to track a remote branch.\n"
+"Or you could specify base commit by --base=<base-commit-id> manually"
+msgstr ""
+"theip ar an dul suas sruth, más mian leat an gealltanas bonn a thaifeadadh "
+"go huathoibríoch,\n"
+"bain úsáid as git branch --set-upstream-to chun brainse iargúlta a rianú.\n"
+"Nó d'fhéadfá an gealltanas bonn a shonrú trí --base=<base-commit-id> de láimh"
+
+#: builtin/log.c
+msgid "failed to find exact merge base"
+msgstr "theip orthu bonn cumaisc cruinn a fháil"
+
+#: builtin/log.c
+msgid "base commit should be the ancestor of revision list"
+msgstr "ba cheart gurb é bonn tiomantas ina sinsear an liosta athbhrei"
+
+#: builtin/log.c
+msgid "base commit shouldn't be in revision list"
+msgstr "níor cheart go mbeadh tiomantas bonn sa liosta athbhrei"
+
+#: builtin/log.c
+msgid "cannot get patch id"
+msgstr "ní féidir id paiste a fháil"
+
+#: builtin/log.c
+msgid "failed to infer range-diff origin of current series"
+msgstr "theip ar thionscnamh raon difriúil na sraithe reatha a thabhairt amach"
+
+#: builtin/log.c
+#, c-format
+msgid "using '%s' as range-diff origin of current series"
+msgstr "ag baint úsáide as '%s' mar bhunús diff raon na sraithe reatha"
+
+#: builtin/log.c
+msgid "use [PATCH n/m] even with a single patch"
+msgstr "bain úsáid as [PATCH n/m] fiú le paiste amháin"
+
+#: builtin/log.c
+msgid "use [PATCH] even with multiple patches"
+msgstr "bain úsáid as [PATCH] fiú le paistí iolracha"
+
+#: builtin/log.c
+msgid "print patches to standard out"
+msgstr "paistí a phriontáil chun caighdeánach"
+
+#: builtin/log.c
+msgid "generate a cover letter"
+msgstr "litir chlúdaigh a ghiniúint"
+
+#: builtin/log.c
+msgid "use simple number sequence for output file names"
+msgstr "úsáid seicheamh uimhreacha simplí d'ainmneacha comhaid aschu"
+
+#: builtin/log.c
+msgid "sfx"
+msgstr "sfx"
+
+#: builtin/log.c
+msgid "use <sfx> instead of '.patch'"
+msgstr "úsáid <sfx>in ionad '.patch'"
+
+#: builtin/log.c
+msgid "start numbering patches at <n> instead of 1"
+msgstr "tosú ag uimhriú paistí ag <n>seachas 1"
+
+#: builtin/log.c
+msgid "reroll-count"
+msgstr "comhaireamh ath-rollta"
+
+#: builtin/log.c
+msgid "mark the series as Nth re-roll"
+msgstr "marcáil an tsraith mar Nú ath-rolla"
+
+#: builtin/log.c
+msgid "max length of output filename"
+msgstr "fad uasta ainm an chomhaid aschuir"
+
+#: builtin/log.c
+msgid "rfc"
+msgstr "rfc"
+
+#: builtin/log.c
+msgid "add <rfc> (default 'RFC') before 'PATCH'"
+msgstr "cuir <rfc>(réamhshocraithe 'RFC') roimh 'PATCH'"
+
+#: builtin/log.c
+msgid "cover-from-description-mode"
+msgstr "modh clúdaigh ó-tuairiscríbhinní"
+
+#: builtin/log.c
+msgid "generate parts of a cover letter based on a branch's description"
+msgstr "codanna de litir chlúdaigh a ghiniúint bunaithe ar thuairisc brainse"
+
+#: builtin/log.c
+msgid "use branch description from file"
+msgstr "úsáid cur síos brainse ón gcomhad"
+
+#: builtin/log.c
+msgid "use [<prefix>] instead of [PATCH]"
+msgstr "úsáid [<prefix>] in ionad [PATCH]"
+
+#: builtin/log.c
+msgid "store resulting files in <dir>"
+msgstr "comhaid mar thoradh air a stóráil i <dir>"
+
+#: builtin/log.c
+msgid "don't strip/add [PATCH]"
+msgstr "ná stiall/cuir [PATCH] leis"
+
+#: builtin/log.c
+msgid "don't output binary diffs"
+msgstr "ná aschur difríochtaí dénártha"
+
+#: builtin/log.c
+msgid "output all-zero hash in From header"
+msgstr "aschur hash uile-nialas i Ó cheanntásc"
+
+#: builtin/log.c
+msgid "don't include a patch matching a commit upstream"
+msgstr "ná cuir paiste a mheaitseann le tiomantas suas an sruth"
+
+#: builtin/log.c
+msgid "show patch format instead of default (patch + stat)"
+msgstr "taispeáin formáid paiste in ionad réamhshocraithe (paiste + stat)"
+
+#: builtin/log.c
+msgid "Messaging"
+msgstr "Teachtaireachtaí"
+
+#: builtin/log.c
+msgid "header"
+msgstr "ceanntásc"
+
+#: builtin/log.c
+msgid "add email header"
+msgstr "ceanntásc ríomhphoist leis"
+
+#: builtin/log.c
+msgid "email"
+msgstr "ríomhphost"
+
+#: builtin/log.c
+msgid "add To: header"
+msgstr "cuir Le: ceanntásc"
+
+#: builtin/log.c
+msgid "add Cc: header"
+msgstr "cuir Cc leis: ceanntásc"
+
+#: builtin/log.c
+msgid "ident"
+msgstr "idirghníomhaire"
+
+#: builtin/log.c
+msgid "set From address to <ident> (or committer ident if absent)"
+msgstr ""
+"socraigh Ó sheoladh go dtí <ident>(nó aitheantas an tiomantais mura bhfuil "
+"sé ann)"
+
+#: builtin/log.c
+msgid "message-id"
+msgstr "id teachtaireachta"
+
+#: builtin/log.c
+msgid "make first mail a reply to <message-id>"
+msgstr "déan freagra ar an gcéad phost <message-id>"
+
+#: builtin/log.c
+msgid "boundary"
+msgstr "teorainn"
+
+#: builtin/log.c
+msgid "attach the patch"
+msgstr "ceangail an paiste"
+
+#: builtin/log.c
+msgid "inline the patch"
+msgstr "inlíne an paiste"
+
+#: builtin/log.c
+msgid "enable message threading, styles: shallow, deep"
+msgstr "cumasú snáithe teachtaireachta, stíleanna: éadomhain, domhain"
+
+#: builtin/log.c
+msgid "signature"
+msgstr "síniú"
+
+#: builtin/log.c
+msgid "add a signature"
+msgstr "cuir síniú"
+
+#: builtin/log.c
+msgid "base-commit"
+msgstr "bun-tiomantas"
+
+#: builtin/log.c
+msgid "add prerequisite tree info to the patch series"
+msgstr "cuir faisnéis rainn réamhriachtanais leis an tsraith paiste"
+
+#: builtin/log.c
+msgid "add a signature from a file"
+msgstr "cuir síniú ó chomhad"
+
+#: builtin/log.c
+msgid "don't print the patch filenames"
+msgstr "ná priontáil na hainmneacha comhaid paiste"
+
+#: builtin/log.c
+msgid "show progress while generating patches"
+msgstr "dul chun cinn a thaispeáint agus paistí"
+
+#: builtin/log.c
+msgid "show changes against <rev> in cover letter or single patch"
+msgstr "athruithe a thaispeá <rev>int i gcoinne i litir chlúdaigh nó"
+
+#: builtin/log.c
+msgid "show changes against <refspec> in cover letter or single patch"
+msgstr "athruithe a thaispeá <refspec>int i gcoinne i litir chlúdaigh nó"
+
+#: builtin/log.c builtin/range-diff.c
+msgid "percentage by which creation is weighted"
+msgstr "céatadán faoina n-ualaítear an cruthú"
+
+#: builtin/log.c
+msgid "show in-body From: even if identical to the e-mail header"
+msgstr ""
+"taispeáin in-chorp Ó: fiú más comhionann leis an gceannteideal ríomhphoist"
+
+#: builtin/log.c
+#, c-format
+msgid "invalid ident line: %s"
+msgstr "líne aitheantais neamhbhailí: %s"
+
+#: builtin/log.c
+msgid "--name-only does not make sense"
+msgstr "Ní bhíonn ciall ag --name-only"
+
+#: builtin/log.c
+msgid "--name-status does not make sense"
+msgstr "Ní bhíonn ciall ag --name-status"
+
+#: builtin/log.c
+msgid "--check does not make sense"
+msgstr "Ní bhíonn ciall ag --check"
+
+#: builtin/log.c
+msgid "--remerge-diff does not make sense"
+msgstr "Ní bhíonn ciall ag --remerge-diff"
+
+#: builtin/log.c builtin/submodule--helper.c rerere.c submodule.c
+#, c-format
+msgid "could not create directory '%s'"
+msgstr "ní fhéadfaí eolaire '%s' a chruthú"
+
+#: builtin/log.c
+msgid "--interdiff requires --cover-letter or single patch"
+msgstr "éilíonn --interdiff --cover-letter nó paiste singil"
+
+#: builtin/log.c
+msgid "Interdiff:"
+msgstr "Interdiff:"
+
+#: builtin/log.c
+#, c-format
+msgid "Interdiff against v%d:"
+msgstr "Interdiff i gcoinne v%d:"
+
+#: builtin/log.c
+msgid "--range-diff requires --cover-letter or single patch"
+msgstr "Éilíonn --range-diff --cover-letter nó paiste aonair"
+
+#: builtin/log.c
+msgid "Range-diff:"
+msgstr "Difríocht raon:"
+
+#: builtin/log.c
+#, c-format
+msgid "Range-diff against v%d:"
+msgstr "Difríocht raon i gcoinne v%d:"
+
+#: builtin/log.c
+#, c-format
+msgid "unable to read signature file '%s'"
+msgstr "nach féidir an comhad sínithe '%s' a léamh"
+
+#: builtin/log.c
+msgid "Generating patches"
+msgstr "Giniúint paistí"
+
+#: builtin/log.c
+msgid "failed to create output files"
+msgstr "theip ar chomhaid aschuir a chruthú"
+
+#: builtin/log.c
+msgid "git cherry [-v] [<upstream> [<head> [<limit>]]]"
+msgstr "git cherry [-v] [<upstream> [<head> [<limit>]]]"
+
+#: builtin/log.c
+#, c-format
+msgid ""
+"Could not find a tracked remote branch, please specify <upstream> manually.\n"
+msgstr ""
+"Níor féidir brainse iargúlta rianaithe a fháil, sonraigh de láimh le do th "
+"<upstream>oil.\n"
+
+#: builtin/ls-files.c builtin/ls-tree.c
+#, c-format
+msgid "could not get object info about '%s'"
+msgstr "ní fhéadfaí faisnéis réada a fháil faoi '%s'"
+
+#: builtin/ls-files.c
+msgid "git ls-files [<options>] [<file>...]"
+msgstr "git ls-files [<options>] [<file>...]"
+
+#: builtin/ls-files.c builtin/merge-tree.c
+msgid "separate paths with the NUL character"
+msgstr "cosáin ar leithligh leis an carachtar NUL"
+
+#: builtin/ls-files.c
+msgid "identify the file status with tags"
+msgstr "stádas an chomhaid a aithint le clibeanna"
+
+#: builtin/ls-files.c
+msgid "use lowercase letters for 'assume unchanged' files"
+msgstr ""
+"bain úsáid as litreacha beaga le haghaidh comhaid 'glacadh leis gan "
+"athraithe'"
+
+#: builtin/ls-files.c
+msgid "use lowercase letters for 'fsmonitor clean' files"
+msgstr "bain úsáid as litreacha beaga le haghaidh comhaid 'fsmonitor clean'"
+
+#: builtin/ls-files.c
+msgid "show cached files in the output (default)"
+msgstr "taispeáint comhaid taispeána san aschur (réamhshocraithe)"
+
+#: builtin/ls-files.c
+msgid "show deleted files in the output"
+msgstr "taispeáint comhaid scriosta san aschur"
+
+#: builtin/ls-files.c
+msgid "show modified files in the output"
+msgstr "taispeáint comhaid modhnaithe san aschur"
+
+#: builtin/ls-files.c
+msgid "show other files in the output"
+msgstr "taispeáint comhaid eile san aschur"
+
+#: builtin/ls-files.c
+msgid "show ignored files in the output"
+msgstr "taispeáint comhaid a neamhaird san aschur"
+
+#: builtin/ls-files.c
+msgid "show staged contents' object name in the output"
+msgstr "taispeáin ainm réad ábhair stáitseáilte san aschur"
+
+#: builtin/ls-files.c
+msgid "show files on the filesystem that need to be removed"
+msgstr "taispeáint comhaid ar an gcóras comhaid is gá a bhaint"
+
+#: builtin/ls-files.c
+msgid "show 'other' directories' names only"
+msgstr "taispeáin ainmneacha 'eile' amháin"
+
+#: builtin/ls-files.c
+msgid "show line endings of files"
+msgstr "taispeáint deireadh líne na gcomhaid"
+
+#: builtin/ls-files.c
+msgid "don't show empty directories"
+msgstr "ná taispeáin eolairí folamh"
+
+#: builtin/ls-files.c
+msgid "show unmerged files in the output"
+msgstr "taispeáint comhaid neamh-chumhdaithe san aschur"
+
+#: builtin/ls-files.c
+msgid "show resolve-undo information"
+msgstr "taispeáin faisnéis réitigh a chealú"
+
+#: builtin/ls-files.c
+msgid "skip files matching pattern"
+msgstr "patrún meaitseála comhaid scipeála"
+
+#: builtin/ls-files.c
+msgid "read exclude patterns from <file>"
+msgstr "léigh patrúin eisiamh ó <file>"
+
+#: builtin/ls-files.c
+msgid "read additional per-directory exclude patterns in <file>"
+msgstr "léigh patrúin breise in aghaidh eolaire a eisiamh i <file>"
+
+#: builtin/ls-files.c
+msgid "add the standard git exclusions"
+msgstr "cuir na heisiaimh caighdeánacha git"
+
+#: builtin/ls-files.c
+msgid "make the output relative to the project top directory"
+msgstr "déan an t-aschur i gcoibhneas le barr-eolaire an tion"
+
+#: builtin/ls-files.c
+msgid "if any <file> is not in the index, treat this as an error"
+msgstr ""
+"mura <file>bhfuil aon cheann san innéacs, déileáil leis seo mar earráid"
+
+#: builtin/ls-files.c builtin/merge-tree.c
+msgid "tree-ish"
+msgstr "crainn"
+
+#: builtin/ls-files.c
+msgid "pretend that paths removed since <tree-ish> are still present"
+msgstr "ligean go bhfuil cosáin a bhain <tree-ish>tear ó shin fós i láthair"
+
+#: builtin/ls-files.c
+msgid "show debugging data"
+msgstr "taispeáin sonraí dífhabhtaithe"
+
+#: builtin/ls-files.c
+msgid "suppress duplicate entries"
+msgstr "iontrálacha dúbailte a chur"
+
+#: builtin/ls-files.c
+msgid "show sparse directories in the presence of a sparse index"
+msgstr "taispeáint eolairí neamhchoitianta i láthair innéacs neamhchoitianta"
+
+#: builtin/ls-files.c
+msgid ""
+"--format cannot be used with -s, -o, -k, -t, --resolve-undo, --deduplicate, "
+"--eol"
+msgstr ""
+"Ní féidir --format a úsáid le -s, -o, -k, -t, --resolve-undo, --deduplicate, "
+"--eol"
+
+#: builtin/ls-remote.c
+msgid ""
+"git ls-remote [--branches] [--tags] [--refs] [--upload-pack=<exec>]\n"
+" [-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]\n"
+" [--symref] [<repository> [<patterns>...]]"
+msgstr ""
+"git ls-remote [--branches] [--tags] [--refs] [--upload-pack=<exec>]\n"
+" [-q | --quiet] [--exit-code] [--get-url] [--sort=<key>]\n"
+" [--symref] [<repository> [<patterns>...]]"
+
+#: builtin/ls-remote.c
+msgid "do not print remote URL"
+msgstr "ná priontáil URL iargúlta"
+
+#: builtin/ls-remote.c builtin/rebase.c
+msgid "exec"
+msgstr "feidhmiúcháin"
+
+#: builtin/ls-remote.c
+msgid "path of git-upload-pack on the remote host"
+msgstr "cosán git-upload-pack ar an óstach cianda"
+
+#: builtin/ls-remote.c
+msgid "limit to tags"
+msgstr "teorainn le clibeanna"
+
+#: builtin/ls-remote.c
+msgid "limit to branches"
+msgstr "teorainn le brainsí"
+
+#: builtin/ls-remote.c builtin/show-ref.c
+msgid "deprecated synonym for --branches"
+msgstr "comhchiallach scoite do --branches"
+
+#: builtin/ls-remote.c
+msgid "do not show peeled tags"
+msgstr "ná taispeáin clibeanna scáilte"
+
+#: builtin/ls-remote.c
+msgid "take url.<base>.insteadOf into account"
+msgstr "glacadh url. <base>.insteadOf san áireamh"
+
+#: builtin/ls-remote.c
+msgid "exit with exit code 2 if no matching refs are found"
+msgstr "imeacht le cód imeachta 2 mura bhfaightear aon aifeanna meaitseála"
+
+#: builtin/ls-remote.c
+msgid "show underlying ref in addition to the object pointed by it"
+msgstr "taispeáint an tagairt bhunúsach i dteannta leis an réad a thug sé"
+
+#: builtin/ls-tree.c
+msgid "git ls-tree [<options>] <tree-ish> [<path>...]"
+msgstr "<path>git ls-tree [<options>] [...<tree-ish>]"
+
+#: builtin/ls-tree.c
+msgid "only show trees"
+msgstr "ach crainn a thaispeáint"
+
+#: builtin/ls-tree.c
+msgid "recurse into subtrees"
+msgstr "athshlánú isteach i bhfo-chrainn"
+
+#: builtin/ls-tree.c
+msgid "show trees when recursing"
+msgstr "crainn a thaispeáint agus tú ag athf"
+
+#: builtin/ls-tree.c
+msgid "terminate entries with NUL byte"
+msgstr "foirceannadh iontrálacha le bait NUL"
+
+#: builtin/ls-tree.c
+msgid "include object size"
+msgstr "méid an rud san áireamh"
+
+#: builtin/ls-tree.c
+msgid "list only filenames"
+msgstr "ainmneacha comhaid amháin a liostáil"
+
+#: builtin/ls-tree.c
+msgid "list only objects"
+msgstr "rudaí amháin a liostáil"
+
+#: builtin/ls-tree.c
+msgid "use full path names"
+msgstr "úsáid ainmneacha cosáin iomlána"
+
+#: builtin/ls-tree.c
+msgid "list entire tree; not just current directory (implies --full-name)"
+msgstr ""
+"liostáil crann iomlán; ní hamháin eolaire reatha (tugann le tuiscint --full-"
+"name)"
+
+#: builtin/ls-tree.c
+msgid "--format can't be combined with other format-altering options"
+msgstr ""
+"Ní féidir --format a chomhcheangal le roghanna eile a athraíonn formáidí"
+
+#. TRANSLATORS: keep <> in "<" mail ">" info.
+#: builtin/mailinfo.c
+msgid "git mailinfo [<options>] <msg> <patch> < mail >info"
+msgstr "git mailinfo [<options>] <msg> <patch> < mail >info"
+
+#: builtin/mailinfo.c
+msgid "keep subject"
+msgstr "coinnigh ábhar"
+
+#: builtin/mailinfo.c
+msgid "keep non patch brackets in subject"
+msgstr "coinnigh lúibíní gan paiste san ábhar"
+
+#: builtin/mailinfo.c
+msgid "copy Message-ID to the end of commit message"
+msgstr ""
+"cóipeáil ID teachtaireachtaí go dtí deireadh na teachtaireachta tiomanta"
+
+#: builtin/mailinfo.c
+msgid "re-code metadata to i18n.commitEncoding"
+msgstr "meiteashonraí a athchódú chuig i18N.CommitEncoding"
+
+#: builtin/mailinfo.c
+msgid "disable charset re-coding of metadata"
+msgstr "díchumasú ath-chódú charset meiteashonraí"
+
+#: builtin/mailinfo.c
+msgid "encoding"
+msgstr "ionchódú"
+
+#: builtin/mailinfo.c
+msgid "re-code metadata to this encoding"
+msgstr "athchódú meiteashonraí don ionchódú seo"
+
+#: builtin/mailinfo.c
+msgid "use scissors"
+msgstr "siosúr a úsáid"
+
+#: builtin/mailinfo.c
+msgid "<action>"
+msgstr "<action>"
+
+#: builtin/mailinfo.c
+msgid "action when quoted CR is found"
+msgstr "gníomh nuair a aimsítear CR a luaitear"
+
+#: builtin/mailinfo.c
+msgid "use headers in message's body"
+msgstr "ceanntásca a úsáid i gcorp na teachtaireachta"
+
+#: builtin/mailsplit.c
+msgid "reading patches from stdin/tty..."
+msgstr "paistí a léamh ó stdin/tty..."
+
+#: builtin/mailsplit.c
+#, c-format
+msgid "empty mbox: '%s'"
+msgstr "mbox folamh: '%s'"
+
+#: builtin/merge-base.c
+msgid "git merge-base [-a | --all] <commit> <commit>..."
+msgstr "git merge-base [-a | --all] <commit> <commit>..."
+
+#: builtin/merge-base.c
+msgid "git merge-base [-a | --all] --octopus <commit>..."
+msgstr "git merge-base [-a | --all] --octopus <commit>..."
+
+#: builtin/merge-base.c
+msgid "git merge-base --is-ancestor <commit> <commit>"
+msgstr "git merge-base --is-ancestor <commit> <commit>"
+
+#: builtin/merge-base.c
+msgid "git merge-base --independent <commit>..."
+msgstr "git merge-base --independent <commit>..."
+
+#: builtin/merge-base.c
+msgid "git merge-base --fork-point <ref> [<commit>]"
+msgstr "git merge-base --fork-point <ref> [<commit>]"
+
+#: builtin/merge-base.c
+msgid "output all common ancestors"
+msgstr "aschur gach sinsear coitianta"
+
+#: builtin/merge-base.c
+msgid "find ancestors for a single n-way merge"
+msgstr "aimsigh sinsear le haghaidh cumasc n-bhealach amháin"
+
+#: builtin/merge-base.c
+msgid "list revs not reachable from others"
+msgstr "liosta revs nach féidir teacht ó dhaoine eile"
+
+#: builtin/merge-base.c
+msgid "is the first one ancestor of the other?"
+msgstr "an é an chéad sinsear amháin den duine eile?"
+
+#: builtin/merge-base.c
+msgid "find where <commit> forked from reflog of <ref>"
+msgstr "faigh cén áit a <commit> bhforcáladh ó athbhreithniú <ref>"
+
+#: builtin/merge-file.c
+msgid ""
+"git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> "
+"<orig-file> <file2>"
+msgstr ""
+"git merge-file [<options>] [-L <name1> [-L <orig> [-L <name2>]]] <file1> "
+"<orig-file> <file2>"
+
+#: builtin/merge-file.c diff.c
+msgid ""
+"option diff-algorithm accepts \"myers\", \"minimal\", \"patience\" and "
+"\"histogram\""
+msgstr ""
+"glacann difr-algartam rogha le “myers”, “íosta”, “foighne” agus “histogram”"
+
+#: builtin/merge-file.c
+msgid "send results to standard output"
+msgstr "torthaí a sheoladh chuig aschur caigh"
+
+#: builtin/merge-file.c
+msgid "use object IDs instead of filenames"
+msgstr "úsáid ID réad in ionad ainmneacha comhaid"
+
+#: builtin/merge-file.c
+msgid "use a diff3 based merge"
+msgstr "bain úsáid as cumaisc atá bunaithe ar diff3"
+
+#: builtin/merge-file.c
+msgid "use a zealous diff3 based merge"
+msgstr "bain úsáid as cumaisc díograiseach bunaithe ar diff3"
+
+#: builtin/merge-file.c diff.c
+msgid "<algorithm>"
+msgstr "<algorithm>"
+
+#: builtin/merge-file.c diff.c
+msgid "choose a diff algorithm"
+msgstr "roghnaigh algartam diff"
+
+#: builtin/merge-file.c
+msgid "for conflicts, use this marker size"
+msgstr "le haghaidh coinbhleachtaí, bain úsáid as an méid marcóra"
+
+#: builtin/merge-file.c
+msgid "do not warn about conflicts"
+msgstr "ná tabhair rabhadh faoi choimhlintí"
+
+#: builtin/merge-file.c
+msgid "set labels for file1/orig-file/file2"
+msgstr "lipéid a shocrú le haghaidh comhad1/orig-file/file2"
+
+#: builtin/merge-file.c
+#, c-format
+msgid "object '%s' does not exist"
+msgstr "níl réad '%s' ann"
+
+#: builtin/merge-file.c
+msgid "Could not write object file"
+msgstr "Ní fhéadfaí comhad réad a scríobh"
+
+#: builtin/merge-recursive.c
+#, c-format
+msgid "unknown option %s"
+msgstr "rogha anaithnid %s"
+
+#: builtin/merge-recursive.c
+#, c-format
+msgid "could not parse object '%s'"
+msgstr "ní fhéadfaí réad '%s' a pháirseáil"
+
+#: builtin/merge-recursive.c
+#, c-format
+msgid "cannot handle more than %d base. Ignoring %s."
+msgid_plural "cannot handle more than %d bases. Ignoring %s."
+msgstr[0] "ní féidir níos mó ná %d bonn a láimhseáil. Ag neamhaird de %s."
+msgstr[1] "ní féidir níos mó ná %d bonn a láimhseáil. Ag neamhaird de %s."
+msgstr[2] "ní féidir níos mó ná %d bonn a láimhseáil. Ag neamhaird de %s."
+
+#: builtin/merge-recursive.c
+msgid "not handling anything other than two heads merge."
+msgstr "gan láimhseáil aon rud seachas dhá cheann a chumasc."
+
+#: builtin/merge-recursive.c
+#, c-format
+msgid "could not resolve ref '%s'"
+msgstr "ní fhéadfaí tagairt '%s' a réiteach"
+
+#: builtin/merge-recursive.c
+#, c-format
+msgid "Merging %s with %s\n"
+msgstr "Cumasc %s le %s\n"
+
+#: builtin/merge-tree.c
+#, c-format
+msgid "could not parse as tree '%s'"
+msgstr "ní fhéadfaí parsáil mar chrann '%s'"
+
+#: builtin/merge-tree.c builtin/merge.c
+msgid "not something we can merge"
+msgstr "ní rud is féidir linn a chumasc"
+
+#: builtin/merge-tree.c builtin/merge.c
+msgid "refusing to merge unrelated histories"
+msgstr "diúltú stair neamhghaolmhara a chumasc"
+
+#: builtin/merge-tree.c
+msgid "failure to merge"
+msgstr "teip a chumasc"
+
+#: builtin/merge-tree.c
+msgid "git merge-tree [--write-tree] [<options>] <branch1> <branch2>"
+msgstr "git merge-tree [--write-tree] [<options>] <branch1> <branch2>"
+
+#: builtin/merge-tree.c
+msgid "git merge-tree [--trivial-merge] <base-tree> <branch1> <branch2>"
+msgstr "git merge-tree [--trivial-cumaisc] <base-tree><branch1><branch2>"
+
+#: builtin/merge-tree.c
+msgid "do a real merge instead of a trivial merge"
+msgstr "déan fíor-chumasc in ionad cumaisc triobháideach"
+
+#: builtin/merge-tree.c
+msgid "do a trivial merge only"
+msgstr "déan cumaisc thréimhseach amháin"
+
+#: builtin/merge-tree.c
+msgid "also show informational/conflict messages"
+msgstr "taispeáin teachtaireachtaí faisnéis/coinbhleachta freisin"
+
+#: builtin/merge-tree.c
+msgid "suppress all output; only exit status wanted"
+msgstr "cosc a chur ar an aschur go léir; níl uaim ach stádas scoir"
+
+#: builtin/merge-tree.c
+msgid "list filenames without modes/oids/stages"
+msgstr "ainmneacha comhaid a liostáil gan modhair/oids/céimeanna"
+
+#: builtin/merge-tree.c builtin/merge.c builtin/pull.c
+msgid "allow merging unrelated histories"
+msgstr "ligean stair neamhghaolmhara a chumasc"
+
+#: builtin/merge-tree.c
+msgid "perform multiple merges, one per line of input"
+msgstr "cumaisc iolracha a dhéanamh, ceann in aghaidh an líne ionchuir"
+
+#: builtin/merge-tree.c
+msgid "specify a merge-base for the merge"
+msgstr "sonraigh bonn cumaisc don chumasc"
+
+#: builtin/merge-tree.c builtin/merge.c builtin/pull.c
+msgid "option=value"
+msgstr "rogha = luach"
+
+#: builtin/merge-tree.c builtin/merge.c builtin/pull.c
+msgid "option for selected merge strategy"
+msgstr "rogha do straitéis cumaisc roghnaithe"
+
+#: builtin/merge-tree.c
+msgid "--trivial-merge is incompatible with all other options"
+msgstr "Tá --trivial-merge neamhoiriúnach le gach rogha eile"
+
+#: builtin/merge-tree.c builtin/merge.c
+#, c-format
+msgid "unknown strategy option: -X%s"
+msgstr "rogha straitéise anaithnid: -X%s"
+
+#: builtin/merge-tree.c builtin/notes.c
+#, c-format
+msgid "malformed input line: '%s'."
+msgstr "líne ionchuir mífhoirmithe: '%s'."
+
+#: builtin/merge.c
+msgid "git merge [<options>] [<commit>...]"
+msgstr "git cumaisc [<options>] [<commit>...]"
+
+#: builtin/merge.c
+msgid "switch `m' requires a value"
+msgstr "teastaíonn luach ag lasc `m'"
+
+#: builtin/merge.c
+#, c-format
+msgid "option `%s' requires a value"
+msgstr "teastaíonn luach ag rogha `%s'"
+
+#: builtin/merge.c
+#, c-format
+msgid "Could not find merge strategy '%s'.\n"
+msgstr "Níorbh fhéidir straitéis cumaisc '%s' a fháil.\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "Available strategies are:"
+msgstr "Is iad straitéisí atá ar fáil:"
+
+#: builtin/merge.c
+#, c-format
+msgid "Available custom strategies are:"
+msgstr "Is iad seo a leanas na straitéisí saincheaptha atá ar fáil:"
+
+#: builtin/merge.c builtin/pull.c
+msgid "do not show a diffstat at the end of the merge"
+msgstr "ná taispeáin diffstat ag deireadh an chumaisc"
+
+#: builtin/merge.c builtin/pull.c
+msgid "show a diffstat at the end of the merge"
+msgstr "taispeáin diffstat ag deireadh an chumaisc"
+
+#: builtin/merge.c builtin/pull.c
+msgid "(synonym to --stat)"
+msgstr "(Comhchiallach le --stat)"
+
+#: builtin/merge.c builtin/pull.c
+msgid "add (at most <n>) entries from shortlog to merge commit message"
+msgstr ""
+"cuir iontrálacha (ar a mh <n>éad) ó gearrlog chun teachtaireacht tiomanta a "
+"chumasc"
+
+#: builtin/merge.c builtin/pull.c
+msgid "create a single commit instead of doing a merge"
+msgstr "tiomantas amháin a chruthú in ionad cumaisc a dhéanamh"
+
+#: builtin/merge.c builtin/pull.c
+msgid "perform a commit if the merge succeeds (default)"
+msgstr "tiomantas a dhéanamh má éireoidh leis an gcumasc (réamhshocraithe)"
+
+#: builtin/merge.c builtin/pull.c
+msgid "edit message before committing"
+msgstr "teachtaireacht in eagar sula ndéanann"
+
+#: builtin/merge.c
+msgid "allow fast-forward (default)"
+msgstr "ligean go tapa ar aghaidh (réamhshocraithe)"
+
+#: builtin/merge.c builtin/pull.c
+msgid "abort if fast-forward is not possible"
+msgstr "déan deireadh a chur ar aghaidh mura féidir go tapa ar aghaidh"
+
+#: builtin/merge.c builtin/pull.c
+msgid "verify that the named commit has a valid GPG signature"
+msgstr "fíorú go bhfuil síniú bailí GPG ag an tiomantas ainmnithe"
+
+#: builtin/merge.c builtin/notes.c builtin/pull.c builtin/rebase.c
+#: builtin/revert.c
+msgid "strategy"
+msgstr "straitéis"
+
+#: builtin/merge.c builtin/pull.c
+msgid "merge strategy to use"
+msgstr "straitéis a chumasc le húsáid"
+
+#: builtin/merge.c
+msgid "merge commit message (for a non-fast-forward merge)"
+msgstr ""
+"teachtaireacht tiomanta a chumasc (le haghaidh cumaisc neamh-tapa ar aghaidh)"
+
+#: builtin/merge.c
+msgid "use <name> instead of the real target"
+msgstr "úsáid in <name>ionad an sprioc fíor"
+
+#: builtin/merge.c
+msgid "abort the current in-progress merge"
+msgstr "deireadh a chur leis an gcumasc reatha atá ar siúl"
+
+#: builtin/merge.c
+msgid "--abort but leave index and working tree alone"
+msgstr "--abort ach fág an t-innéacs agus an crann oibre ina n-aonar"
+
+#: builtin/merge.c
+msgid "continue the current in-progress merge"
+msgstr "leanúint leis an gcumasc atá ar siúl reatha"
+
+#: builtin/merge.c
+msgid "bypass pre-merge-commit and commit-msg hooks"
+msgstr "seachbhóthar crúcaí réamh-chumaisc-tiomantas agus comh-msg"
+
+#: builtin/merge.c
+msgid "could not run stash."
+msgstr "ní fhéadfadh stash a reáchtáil."
+
+#: builtin/merge.c
+msgid "stash failed"
+msgstr "theip ar stash"
+
+#: builtin/merge.c
+#, c-format
+msgid "not a valid object: %s"
+msgstr "ní réad bailí: %s"
+
+#: builtin/merge.c
+msgid "read-tree failed"
+msgstr "theip ar chrann léitheoireachta"
+
+#: builtin/merge.c
+msgid "Already up to date. (nothing to squash)"
+msgstr "Cothrom le dáta cheana féin. (rud ar bith le squash)"
+
+#: builtin/merge.c merge-ort-wrappers.c
+msgid "Already up to date."
+msgstr "Cothrom le dáta cheana féin."
+
+#: builtin/merge.c
+#, c-format
+msgid "Squash commit -- not updating HEAD\n"
+msgstr "Tiomantas Squash - gan HEAD a nuashonrú\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "No merge message -- not updating HEAD\n"
+msgstr "Gan aon teachtaireacht cumaisc - gan HEAD a nuashonrú\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "'%s' does not point to a commit"
+msgstr "Ní thugann '%s' in iúl do thiomantas"
+
+#: builtin/merge.c
+#, c-format
+msgid "Bad branch.%s.mergeoptions string: %s"
+msgstr "Drochbhrainse. %s.mergeoptions teaghrán: %s"
+
+#: builtin/merge.c merge-ort-wrappers.c
+msgid "Unable to write index."
+msgstr "Ní féidir innéacs a scríobh."
+
+#: builtin/merge.c
+msgid "Not handling anything other than two heads merge."
+msgstr "Gan aon rud a láimhseáil seachas dhá cheann cumasc."
+
+#: builtin/merge.c builtin/sparse-checkout.c
+#, c-format
+msgid "unable to write %s"
+msgstr "nach féidir %s a scríobh"
+
+#: builtin/merge.c
+#, c-format
+msgid "Could not read from '%s'"
+msgstr "Ní féidir léamh ó '%s'"
+
+#: builtin/merge.c
+#, c-format
+msgid "Not committing merge; use 'git commit' to complete the merge.\n"
+msgstr ""
+"Gan cumasc a dhéanamh; bain úsáid as 'git commit' chun an cumaisc a chur i "
+"gcrích.\n"
+
+#: builtin/merge.c
+msgid ""
+"Please enter a commit message to explain why this merge is necessary,\n"
+"especially if it merges an updated upstream into a topic branch.\n"
+"\n"
+msgstr ""
+"Cuir isteach teachtaireacht tiomanta le do thoil chun a mhíniú cén fáth go "
+"bhfuil gá leis\n"
+"go háirithe má chomhcheanglaíonn sé nuashonraithe suas sruth i mbrainse "
+"ábhair.\n"
+
+#: builtin/merge.c
+msgid "An empty message aborts the commit.\n"
+msgstr "Cuireann teachtaireacht fholamh deireadh leis an tiomantas.\n"
+
+#: builtin/merge.c
+#, c-format
+msgid ""
+"Lines starting with '%s' will be ignored, and an empty message aborts\n"
+"the commit.\n"
+msgstr ""
+"Déanfar neamhaird ar línte a thosaíonn le '%s', \n"
+"agus cuirfidh teachtaireacht fholamh deireadh leis an tiomantas.\n"
+
+#: builtin/merge.c
+msgid "Empty commit message."
+msgstr "Teachtaireacht tiomanta folamh."
+
+#: builtin/merge.c
+#, c-format
+msgid "Wonderful.\n"
+msgstr "Iontach.\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
+msgstr ""
+"Theip ar chumasc uathoibríoch; coimhlintí a shocrú agus ansin an toradh\n"
+
+#: builtin/merge.c
+msgid "No current branch."
+msgstr "Níl aon bhrainse reatha."
+
+#: builtin/merge.c
+msgid "No remote for the current branch."
+msgstr "Níl aon iargúlta don bhrainse reatha."
+
+#: builtin/merge.c
+msgid "No default upstream defined for the current branch."
+msgstr "Níl aon réamhshocraithe suas sruth sainithe don bhrainse reatha."
+
+#: builtin/merge.c
+#, c-format
+msgid "No remote-tracking branch for %s from %s"
+msgstr "Gan aon bhrainse cianrianaithe do %s ó %s"
+
+#: builtin/merge.c
+#, c-format
+msgid "Bad value '%s' in environment '%s'"
+msgstr "Drochluach '%s' sa timpeallacht '%s'"
+
+#: builtin/merge.c editor.c read-cache.c wrapper.c
+#, c-format
+msgid "could not close '%s'"
+msgstr "ní fhéadfaí '%s' a dhúnadh"
+
+#: builtin/merge.c
+#, c-format
+msgid "not something we can merge in %s: %s"
+msgstr "ní rud is féidir linn a chumasc i %s: %s"
+
+#: builtin/merge.c
+msgid "--abort expects no arguments"
+msgstr "--abort ag súil nach bhfuil aon argóintí"
+
+#: builtin/merge.c
+msgid "There is no merge to abort (MERGE_HEAD missing)."
+msgstr "Níl aon chumasc ann chun deireadh a chur (MERGE_HEAD ar iarraidh)."
+
+#: builtin/merge.c
+msgid "--quit expects no arguments"
+msgstr "Tá --quit ag súil nach bhfuil aon argóintí"
+
+#: builtin/merge.c
+msgid "--continue expects no arguments"
+msgstr "--continue gan aon argóintí ag súil leo"
+
+#: builtin/merge.c
+msgid "There is no merge in progress (MERGE_HEAD missing)."
+msgstr "Níl aon chumasc ar siúl (MERGE_HEAD ar iarraidh)."
+
+#: builtin/merge.c
+msgid ""
+"You have not concluded your merge (MERGE_HEAD exists).\n"
+"Please, commit your changes before you merge."
+msgstr ""
+"Níor thug tú do chumasc i gcrích (MERGE_HEAD ann).\n"
+"Déan do chuid athruithe a dhéanamh sula ndéanann tú cumasc."
+
+#: builtin/merge.c
+msgid ""
+"You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
+"Please, commit your changes before you merge."
+msgstr ""
+"Níor thug tú do phiocadh silíní i gcrích (CHERRY_PICK_HEAD ann).\n"
+"Déan do chuid athruithe a dhéanamh sula ndéanann tú cumasc."
+
+#: builtin/merge.c
+msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
+msgstr "Níor thug tú do phiocadh silíní i gcrích (CHERRY_PICK_HEAD ann)."
+
+#: builtin/merge.c
+msgid "No commit specified and merge.defaultToUpstream not set."
+msgstr ""
+"Níl aon tiomantas sonraithe agus níl merge.defaultToUpstream socraithe."
+
+#: builtin/merge.c
+msgid "Squash commit into empty head not supported yet"
+msgstr "Tiomann squash isteach i gceann folamh nach dtacaítear go fóill"
+
+#: builtin/merge.c
+msgid "Non-fast-forward commit does not make sense into an empty head"
+msgstr "Níl ciall ar thiomantas neamh-thapa ar aghaidh i gceann folamh"
+
+#: builtin/merge.c
+#, c-format
+msgid "%s - not something we can merge"
+msgstr "%s - ní rud is féidir linn a chumasc"
+
+#: builtin/merge.c
+msgid "Can merge only exactly one commit into empty head"
+msgstr "Ní féidir ach tiomantas amháin a chumasc i gceann folamh"
+
+#: builtin/merge.c
+#, c-format
+msgid "Updating %s..%s\n"
+msgstr "Ag nuashonrú %s..%s\n"
+
+#: builtin/merge.c merge-ort-wrappers.c
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+" %s"
+msgstr ""
+"Déanfaí d'athruithe áitiúla ar na comhaid seo a leanas a fhorscríobh trí "
+"chumasc:\n"
+" %s"
+
+#: builtin/merge.c
+#, c-format
+msgid "Trying really trivial in-index merge...\n"
+msgstr "Ag triail a dhéanamh cumasc in-innéacs fíor-thrá\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "Nope.\n"
+msgstr "Ní hea..\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "Rewinding the tree to pristine...\n"
+msgstr "Ag athchasadh an chrainn go dtí go mbeidh sé foirfe...\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "Trying merge strategy %s...\n"
+msgstr "Ag iarraidh straitéis cumaisc %s...\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "No merge strategy handled the merge.\n"
+msgstr "Níor láimhseáil aon straitéis chumaisc an cumasc.\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "Merge with strategy %s failed.\n"
+msgstr "Theip ar chumasc le straitéis %s.\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "Using the %s strategy to prepare resolving by hand.\n"
+msgstr "Ag baint úsáide as straitéis %s chun réiteach a ullmhú de láimh.\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "Automatic merge went well; stopped before committing as requested\n"
+msgstr "Chuaigh cumaisc uathoibríoch go maith; stad sula ndearna sé tiomanta\n"
+
+#: builtin/merge.c
+#, c-format
+msgid "When finished, apply stashed changes with `git stash pop`\n"
+msgstr ""
+"Nuair a bheidh críochnaithe, cuir athruithe stashed i bhfeidhm le `git stash "
+"pop`\n"
+
+#: builtin/mktag.c
+#, c-format
+msgid "warning: tag input does not pass fsck: %s"
+msgstr "rabhadh: ní théann ionchur clib ar fsck: %s"
+
+#: builtin/mktag.c
+#, c-format
+msgid "error: tag input does not pass fsck: %s"
+msgstr "earráid: ní théann ionchur clib ar fsck: %s"
+
+#: builtin/mktag.c
+#, c-format
+msgid "%d (FSCK_IGNORE?) should never trigger this callback"
+msgstr "%d (FSCK_IGNORE?) níor cheart go spreagfadh an t-aisghlaoch seo"
+
+#: builtin/mktag.c
+#, c-format
+msgid "could not read tagged object '%s'"
+msgstr "ní fhéadfaí réad clibeáilte '%s' a léamh"
+
+#: builtin/mktag.c
+#, c-format
+msgid "object '%s' tagged as '%s', but is a '%s' type"
+msgstr "réad '%s' clibeáilte mar '%s', ach is cineál '%s' é"
+
+#: builtin/mktag.c
+msgid "tag on stdin did not pass our strict fsck check"
+msgstr "níor rith tag ar stdin ár seiceáil dhian fsck"
+
+#: builtin/mktag.c
+msgid "tag on stdin did not refer to a valid object"
+msgstr "níor thagraigh an chlib ar stdin do réad bailí"
+
+#: builtin/mktag.c builtin/tag.c
+msgid "unable to write tag file"
+msgstr "in ann comhad clib a scríobh"
+
+#: builtin/mktree.c
+msgid "input is NUL terminated"
+msgstr "cuirtear deireadh le hionchur NUL"
+
+#: builtin/mktree.c builtin/write-tree.c
+msgid "allow missing objects"
+msgstr "cead a cheadú rudaí"
+
+#: builtin/mktree.c
+msgid "allow creation of more than one tree"
+msgstr "cead níos mó ná crann amháin a chruthú"
+
+#: builtin/multi-pack-index.c
+msgid ""
+"git multi-pack-index [<options>] write [--preferred-pack=<pack>][--refs-"
+"snapshot=<path>]"
+msgstr ""
+"git multi-pack-index [<options>] write [--preferred-pack=<pack>][--refs-"
+"snapshot=<path>]"
+
+#: builtin/multi-pack-index.c
+msgid "git multi-pack-index [<options>] verify"
+msgstr "git multi-pack-index [<options>] verify"
+
+#: builtin/multi-pack-index.c
+msgid "git multi-pack-index [<options>] expire"
+msgstr "git multi-pack-index [<options>] expire"
+
+#: builtin/multi-pack-index.c
+msgid "git multi-pack-index [<options>] repack [--batch-size=<size>]"
+msgstr "git multi-pack-index [<options>] repack [--batch-size=<size>]"
+
+#: builtin/multi-pack-index.c
+msgid "directory"
+msgstr "eolaire"
+
+#: builtin/multi-pack-index.c
+msgid "object directory containing set of packfile and pack-index pairs"
+msgstr ""
+"eolaire réada ina bhfuil tacar de phéirí pacáiste agus innéacs pacáiste"
+
+#: builtin/multi-pack-index.c
+msgid "preferred-pack"
+msgstr "pacáiste is fearr leat"
+
+#: builtin/multi-pack-index.c
+msgid "pack for reuse when computing a multi-pack bitmap"
+msgstr "pacáiste le húsáid agus bitmap il-phacáiste á ríomh"
+
+#: builtin/multi-pack-index.c
+msgid "write multi-pack bitmap"
+msgstr "scríobh bitmap il-phacáiste"
+
+#: builtin/multi-pack-index.c
+msgid "write a new incremental MIDX"
+msgstr "scríobh MIDX incrementach nua"
+
+#: builtin/multi-pack-index.c
+msgid "write multi-pack index containing only given indexes"
+msgstr "scríobh innéacs il-phacáiste nach bhfuil ach innéacsanna ar leith"
+
+#: builtin/multi-pack-index.c
+msgid "refs snapshot for selecting bitmap commits"
+msgstr "léargas refs chun gealltanais bitmap a roghnú"
+
+#: builtin/multi-pack-index.c
+msgid ""
+"during repack, collect pack-files of smaller size into a batch that is "
+"larger than this size"
+msgstr ""
+"le linn athphacáil, bailigh comhaid pacáiste de mhéid níos lú i mbaisc atá "
+"níos mó ná an méid seo"
+
+#: builtin/mv.c
+msgid "git mv [-v] [-f] [-n] [-k] <source> <destination>"
+msgstr "git mv [-v] [-f] [-n] [-k] <source><destination>"
+
+#: builtin/mv.c
+msgid "git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>"
+msgstr "<source>git mv [-v] [-f] [-n] [-k]... <destination-directory>"
+
+#: builtin/mv.c
+#, c-format
+msgid "Directory %s is in index and no submodule?"
+msgstr "Tá eolaire %s in innéacs agus níl aon fho-mhodúl ann?"
+
+#: builtin/mv.c
+msgid "Please stage your changes to .gitmodules or stash them to proceed"
+msgstr ""
+"Cuir do chuid athruithe ar .gitmodules nó iad a stóráil chun dul ar aghaidh"
+
+#: builtin/mv.c
+#, c-format
+msgid "%.*s is in index"
+msgstr "%.*s atá san innéacs"
+
+#: builtin/mv.c
+msgid "force move/rename even if target exists"
+msgstr "aistriúin/athainmniú a fhorbairt fiú má tá sprioc ann"
+
+#: builtin/mv.c
+msgid "skip move/rename errors"
+msgstr "scipeáil earráidí a bhogadh/athainmniú"
+
+#: builtin/mv.c
+#, c-format
+msgid "destination '%s' is not a directory"
+msgstr "ní eolaire é ceann scríbe '%s'"
+
+#: builtin/mv.c
+#, c-format
+msgid "Checking rename of '%s' to '%s'\n"
+msgstr "Seiceáil athainmniú '%s' go '%s'\n"
+
+#: builtin/mv.c
+msgid "bad source"
+msgstr "droch-fhoinse"
+
+#: builtin/mv.c
+msgid "destination exists"
+msgstr "ceann scríbe ann"
+
+#: builtin/mv.c
+msgid "can not move directory into itself"
+msgstr "ní féidir eolaire a bhogadh isteach ina féin"
+
+#: builtin/mv.c
+msgid "destination already exists"
+msgstr "ceann scríbe ann cheana féin"
+
+#: builtin/mv.c
+msgid "source directory is empty"
+msgstr "tá eolaire foinse folamh"
+
+#: builtin/mv.c
+msgid "not under version control"
+msgstr "nach bhfuil faoi rialú leagan"
+
+#: builtin/mv.c
+msgid "conflicted"
+msgstr "coimhlinneach"
+
+#: builtin/mv.c
+#, c-format
+msgid "overwriting '%s'"
+msgstr "athscríobh '%s'"
+
+#: builtin/mv.c
+msgid "Cannot overwrite"
+msgstr "Ní féidir athscríobh"
+
+#: builtin/mv.c
+msgid "multiple sources for the same target"
+msgstr "foinsí iolracha don sprioc chéanna"
+
+#: builtin/mv.c
+msgid "destination directory does not exist"
+msgstr "níl eolaire ceann scríbe ann"
+
+#: builtin/mv.c
+msgid "destination exists in the index"
+msgstr "ceann scríbe ann san innéacs"
+
+#: builtin/mv.c
+#, c-format
+msgid "%s, source=%s, destination=%s"
+msgstr "%s, foinse = %s, ceann scríbe = %s"
+
+#: builtin/mv.c
+#, c-format
+msgid "cannot move both '%s' and its parent directory '%s'"
+msgstr "ní féidir '%s' agus a eolaire tuismitheora '%s' a bhogadh"
+
+#: builtin/mv.c
+#, c-format
+msgid "Renaming %s to %s\n"
+msgstr "Athainmniú %s go %s\n"
+
+#: builtin/mv.c builtin/remote.c
+#, c-format
+msgid "renaming '%s' failed"
+msgstr "theip ar athainmniú '%s'"
+
+#: builtin/name-rev.c
+msgid "git name-rev [<options>] <commit>..."
+msgstr "git name-rev [<options>] <commit>..."
+
+#: builtin/name-rev.c
+msgid "git name-rev [<options>] --all"
+msgstr "git name-rev [<options>] --all"
+
+#: builtin/name-rev.c
+msgid "git name-rev [<options>] --annotate-stdin"
+msgstr "git name-rev [<options>] --annotate-stdin"
+
+#: builtin/name-rev.c
+msgid "print only ref-based names (no object names)"
+msgstr "ainmneacha ref-bhunaithe amháin a phriontáil (gan ainmneacha réada)"
+
+#: builtin/name-rev.c
+msgid "only use tags to name the commits"
+msgstr "ní húsáid ach clibeanna chun na gealltanais a ainmniú"
+
+#: builtin/name-rev.c
+msgid "only use refs matching <pattern>"
+msgstr "ní úsáideann ach meaitseáil refs <pattern>"
+
+#: builtin/name-rev.c
+msgid "ignore refs matching <pattern>"
+msgstr "neamhaird a dhéanamh ar mheaitseáil <pattern>"
+
+#: builtin/name-rev.c
+msgid "list all commits reachable from all refs"
+msgstr "liostáil na gealltanais go léir atá inrochtana ó gach ceann"
+
+#: builtin/name-rev.c
+msgid "deprecated: use --annotate-stdin instead"
+msgstr "díscríofa: bain úsáid as --annotate-stdin ina ionad"
+
+#: builtin/name-rev.c
+msgid "annotate text from stdin"
+msgstr "téacs a anótáil ó stdin"
+
+#: builtin/name-rev.c
+msgid "allow to print `undefined` names (default)"
+msgstr ""
+"cead a thabhairt d'ainmneacha “neamhshainithe” a phriontáil (réamhshocrú"
+
+#: builtin/name-rev.c
+msgid "dereference tags in the input (internal use)"
+msgstr "clibeanna dereference san ionchur (úsáid inmheánach)"
+
+#: builtin/notes.c
+msgid "git notes [--ref <notes-ref>] [list [<object>]]"
+msgstr "git notes [--ref <notes-ref>] [list [<object>]]"
+
+#: builtin/notes.c
+msgid ""
+"git notes [--ref <notes-ref>] add [-f] [--allow-empty] [--[no-]separator|--"
+"separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c "
+"| -C) <object>] [<object>] [-e]"
+msgstr ""
+"git notes [--ref <notes-ref>] add [-f] [--allow-empty] [--[no-]separator|--"
+"separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c "
+"| -C) <object>] [<object>] [-e]"
+
+#: builtin/notes.c
+msgid "git notes [--ref <notes-ref>] copy [-f] <from-object> <to-object>"
+msgstr "git notes [--ref<notes-ref>] cóipeáil [-f] <from-object><to-object>"
+
+#: builtin/notes.c
+msgid ""
+"git notes [--ref <notes-ref>] append [--allow-empty] [--[no-]separator|--"
+"separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c "
+"| -C) <object>] [<object>] [-e]"
+msgstr ""
+"git notes [--ref <notes-ref>] append [--allow-empty] [--[no-]separator|--"
+"separator=<paragraph-break>] [--[no-]stripspace] [-m <msg> | -F <file> | (-c "
+"| -C) <object>] [<object>] [-e]"
+
+#: builtin/notes.c
+msgid "git notes [--ref <notes-ref>] edit [--allow-empty] [<object>]"
+msgstr "git notes [--ref <notes-ref>] edit [--allow-empty] [<object>]"
+
+#: builtin/notes.c
+msgid "git notes [--ref <notes-ref>] show [<object>]"
+msgstr "git notes [--ref <notes-ref>] show [<object>]"
+
+#: builtin/notes.c
+msgid ""
+"git notes [--ref <notes-ref>] merge [-v | -q] [-s <strategy>] <notes-ref>"
+msgstr ""
+"git notes [--ref <notes-ref>] merge [-v | -q] [-s <strategy>] <notes-ref>"
+
+#: builtin/notes.c
+msgid "git notes [--ref <notes-ref>] remove [<object>...]"
+msgstr "git notes [--ref <notes-ref>] remove [<object>...]"
+
+#: builtin/notes.c
+msgid "git notes [--ref <notes-ref>] prune [-n] [-v]"
+msgstr "git notes [--ref <notes-ref>] prune [-n] [-v]"
+
+#: builtin/notes.c
+msgid "git notes [--ref <notes-ref>] get-ref"
+msgstr "git notes [--ref <notes-ref>] get-ref"
+
+#: builtin/notes.c
+msgid "git notes [list [<object>]]"
+msgstr "git notes [list [<object>]]"
+
+#: builtin/notes.c
+msgid "git notes add [<options>] [<object>]"
+msgstr "git notes add [<options>] [<object>]"
+
+#: builtin/notes.c
+msgid "git notes copy [<options>] <from-object> <to-object>"
+msgstr "git notes copy [<options>] <from-object> <to-object>"
+
+#: builtin/notes.c
+msgid "git notes copy --stdin [<from-object> <to-object>]..."
+msgstr "git notes copy --stdin [<from-object> <to-object>]..."
+
+#: builtin/notes.c
+msgid "git notes append [<options>] [<object>]"
+msgstr "git notes append [<options>] [<object>]"
+
+#: builtin/notes.c
+msgid "git notes edit [<object>]"
+msgstr "nótaí git a chur in eagar [<object>]"
+
+#: builtin/notes.c
+msgid "git notes show [<object>]"
+msgstr "taispeánann nótaí git [<object>]"
+
+#: builtin/notes.c
+msgid "git notes merge [<options>] <notes-ref>"
+msgstr "cumaisc nótaí git [<options>] <notes-ref>"
+
+#: builtin/notes.c
+msgid "git notes merge --commit [<options>]"
+msgstr "git notes merge --commit [<options>]"
+
+#: builtin/notes.c
+msgid "git notes merge --abort [<options>]"
+msgstr "git notes merge --abort [<options>]"
+
+#: builtin/notes.c
+msgid "git notes remove [<object>]"
+msgstr "git notes remove [<object>]"
+
+#: builtin/notes.c
+msgid "git notes prune [<options>]"
+msgstr "git notes prune [<options>]"
+
+#: builtin/notes.c
+msgid "Write/edit the notes for the following object:"
+msgstr "Scríobh/cuir in eagar na nótaí don réad seo a leanas:"
+
+#: builtin/notes.c
+msgid "could not read 'show' output"
+msgstr "ní raibh in ann aschur 'taispeáin' a léamh"
+
+#: builtin/notes.c
+#, c-format
+msgid "failed to finish 'show' for object '%s'"
+msgstr "theip ar 'show' a chríochnú le haghaidh réad '%s'"
+
+#: builtin/notes.c
+msgid "please supply the note contents using either -m or -F option"
+msgstr "soláthar ábhar an nóta le do thoil ag baint úsáide as rogha -m nó -F"
+
+#: builtin/notes.c
+msgid "unable to write note object"
+msgstr "in ann réad nótaí a scríobh"
+
+#: builtin/notes.c
+#, c-format
+msgid "the note contents have been left in %s"
+msgstr "tá ábhar an nóta fágtha i %s"
+
+#: builtin/notes.c builtin/tag.c
+#, c-format
+msgid "could not open or read '%s'"
+msgstr "ní fhéadfaí '%s' a oscailt nó a léamh"
+
+#: builtin/notes.c
+#, c-format
+msgid "failed to resolve '%s' as a valid ref."
+msgstr "theip ar '%s' a réiteach mar thagartha bailí."
+
+#: builtin/notes.c
+#, c-format
+msgid "failed to read object '%s'."
+msgstr "theip ar réad '%s' a léamh."
+
+#: builtin/notes.c
+#, c-format
+msgid "cannot read note data from non-blob object '%s'."
+msgstr "ní féidir sonraí nótaí a léamh ó réad neamh-blob '%s'."
+
+#: builtin/notes.c
+#, c-format
+msgid "failed to copy notes from '%s' to '%s'"
+msgstr "theip ar nótaí a chóipeáil ó '%s' go '%s'"
+
+#. TRANSLATORS: the first %s will be replaced by a git
+#. notes command: 'add', 'merge', 'remove', etc.
+#.
+#: builtin/notes.c
+#, c-format
+msgid "refusing to %s notes in %s (outside of refs/notes/)"
+msgstr "diúltú do %s nótaí i %s (lasmuigh de refs/notes/)"
+
+#: builtin/notes.c
+#, c-format
+msgid "no note found for object %s."
+msgstr "ní bhfuarthas aon nóta do réad %s."
+
+#: builtin/notes.c
+msgid "note contents as a string"
+msgstr "tabhair faoi deara ábhar mar shreang"
+
+#: builtin/notes.c
+msgid "note contents in a file"
+msgstr "tabhair faoi deara ábhar i gcomhad"
+
+#: builtin/notes.c
+msgid "reuse and edit specified note object"
+msgstr "réad nóta sonraithe a úsáid agus a chur in eagar"
+
+#: builtin/notes.c
+msgid "edit note message in editor"
+msgstr "teachtaireacht nóta in eagar san eagarthóir"
+
+#: builtin/notes.c
+msgid "reuse specified note object"
+msgstr "réad nóta sonraithe a athúsáid"
+
+#: builtin/notes.c
+msgid "allow storing empty note"
+msgstr "ligean nóta folamh a stóráil"
+
+#: builtin/notes.c
+msgid "replace existing notes"
+msgstr "nótaí atá ann cheana in ionad"
+
+#: builtin/notes.c
+msgid "<paragraph-break>"
+msgstr "<paragraph-break>"
+
+#: builtin/notes.c
+msgid "insert <paragraph-break> between paragraphs"
+msgstr "cuir isteach <paragraph-break>idir míreanna"
+
+#: builtin/notes.c
+msgid "remove unnecessary whitespace"
+msgstr "bain spás bán neamhriachtanach"
+
+#: builtin/notes.c
+#, c-format
+msgid ""
+"Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr ""
+"Ní féidir nótaí a chur leis. Fuarthas nótaí atá ann cheana don réad %s. "
+"Úsáid '-f' chun nótaí atá ann cheana a fhorscríobh"
+
+#: builtin/notes.c
+#, c-format
+msgid "Overwriting existing notes for object %s\n"
+msgstr "Athscríobh nótaí atá ann cheana don réad %s\n"
+
+#: builtin/notes.c
+#, c-format
+msgid "Removing note for object %s\n"
+msgstr "Nóta a bhaint le haghaidh réad %s\n"
+
+#: builtin/notes.c
+msgid "read objects from stdin"
+msgstr "léigh rudaí ó stdin"
+
+#: builtin/notes.c
+msgid "load rewriting config for <command> (implies --stdin)"
+msgstr ""
+"cumraíocht athscríbhneoireachta ualaigh le haghaidh <command>(tugann le "
+"tuiscint --stdin)"
+
+#: builtin/notes.c
+msgid "too few arguments"
+msgstr "ró-bheag argóintí"
+
+#: builtin/notes.c
+#, c-format
+msgid ""
+"Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr ""
+"Ní féidir nótaí a chóipeáil. Fuarthas nótaí atá ann cheana don réad %s. "
+"Úsáid '-f' chun nótaí atá ann cheana a fhorscríobh"
+
+#: builtin/notes.c
+#, c-format
+msgid "missing notes on source object %s. Cannot copy."
+msgstr "nótaí in easnamh ar réad foinse %s. Ní féidir cóipeáil."
+
+#: builtin/notes.c
+#, c-format
+msgid ""
+"The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n"
+"Please use 'git notes add -f -m/-F/-c/-C' instead.\n"
+msgstr ""
+"Tá na roghanna -M/-f/-c/-c curtha as an bhfo-ordú 'eagarthóireach'.\n"
+"Úsáid le do thoil 'git notes add -f -m/-f/-c/-C' ina ionad.\n"
+
+#: builtin/notes.c
+msgid "failed to delete ref NOTES_MERGE_PARTIAL"
+msgstr "theip ar an tagairt NOTES_MERGE_PARTIAL a scriosadh"
+
+#: builtin/notes.c
+msgid "failed to delete ref NOTES_MERGE_REF"
+msgstr "theip ar an ref a scriosadh NOTES_MERGE_REF"
+
+#: builtin/notes.c
+msgid "failed to remove 'git notes merge' worktree"
+msgstr "theip ar chrann oibre 'git notes merge' a bhaint"
+
+#: builtin/notes.c
+msgid "failed to read ref NOTES_MERGE_PARTIAL"
+msgstr "theip ar an tagairt NOTES_MERGE_PARTIAL a léamh"
+
+#: builtin/notes.c
+msgid "could not find commit from NOTES_MERGE_PARTIAL."
+msgstr "ní raibh sé in ann tiomantas a fháil ó NOTES_MERGE_PARTIAL."
+
+#: builtin/notes.c
+msgid "could not parse commit from NOTES_MERGE_PARTIAL."
+msgstr "ní raibh sé in ann tiomantas a pharsáil ó NOTES_MERGE_PARTIAL."
+
+#: builtin/notes.c
+msgid "failed to resolve NOTES_MERGE_REF"
+msgstr "theip orthu NOTES_MERGE_REF a réiteach"
+
+#: builtin/notes.c
+msgid "failed to finalize notes merge"
+msgstr "theip orthu nótaí a chumasc a chur i gcrích"
+
+#: builtin/notes.c
+#, c-format
+msgid "unknown notes merge strategy %s"
+msgstr "straitéis cumaisc nótaí anaithnid %s"
+
+#: builtin/notes.c
+msgid "General options"
+msgstr "Roghanna ginearálta"
+
+#: builtin/notes.c
+msgid "Merge options"
+msgstr "Roghanna cumaisc"
+
+#: builtin/notes.c
+msgid ""
+"resolve notes conflicts using the given strategy (manual/ours/theirs/union/"
+"cat_sort_uniq)"
+msgstr ""
+"coimhlintí nótaí a réiteach ag baint úsáide as an straitéis a thugtar "
+"(lámhleabhair/innir/a nd/union/cat_sort_uniq)"
+
+#: builtin/notes.c
+msgid "Committing unmerged notes"
+msgstr "Nótaí neamh-mheánaithe a dhéanamh"
+
+#: builtin/notes.c
+msgid "finalize notes merge by committing unmerged notes"
+msgstr "cumasc nótaí a chríochnú trí nótaí neamh-chumasaithe a dhéanamh"
+
+#: builtin/notes.c
+msgid "Aborting notes merge resolution"
+msgstr "Rún cumasc le nótaí a ghearradh"
+
+#: builtin/notes.c
+msgid "abort notes merge"
+msgstr "cumaisc nótaí abort"
+
+#: builtin/notes.c
+msgid "cannot mix --commit, --abort or -s/--strategy"
+msgstr "ní féidir --commit, --abort nó -s/--strategy a mheascadh"
+
+#: builtin/notes.c
+msgid "must specify a notes ref to merge"
+msgstr "ní mór tagairt nótaí a shonrú chun cumasc"
+
+#: builtin/notes.c
+#, c-format
+msgid "unknown -s/--strategy: %s"
+msgstr "anaithnid -s/--strategy: %s"
+
+#: builtin/notes.c
+#, c-format
+msgid "a notes merge into %s is already in-progress at %s"
+msgstr "tá nótaí a chumasc i %s ar siúl cheana féin ag %s"
+
+#: builtin/notes.c
+#, c-format
+msgid "failed to store link to current notes ref (%s)"
+msgstr "theip ar nasc a stóráil le nótaí reatha tagairt (%s)"
+
+#: builtin/notes.c
+#, c-format
+msgid ""
+"Automatic notes merge failed. Fix conflicts in %s and commit the result with "
+"'git notes merge --commit', or abort the merge with 'git notes merge --"
+"abort'.\n"
+msgstr ""
+"Theip ar chumasc nótaí uathoibríoch Socraigh coinbhleachtaí i %s agus déan "
+"an toradh a dhéanamh le 'git notes merge --commit', nó cuir deireadh leis an "
+"cumasc le 'git notes merge --abort'.\n"
+
+#: builtin/notes.c builtin/tag.c
+#, c-format
+msgid "Failed to resolve '%s' as a valid ref."
+msgstr "Theip ar '%s' a réiteach mar thagartha bailí."
+
+#: builtin/notes.c
+#, c-format
+msgid "Object %s has no note\n"
+msgstr "Níl aon nóta ag réad %s\n"
+
+#: builtin/notes.c
+msgid "attempt to remove non-existent note is not an error"
+msgstr "ní earráid é iarracht nóta nach bhfuil ann a bhaint"
+
+#: builtin/notes.c
+msgid "read object names from the standard input"
+msgstr "léigh ainmneacha réada ón ionchur caighdeánach"
+
+#: builtin/notes.c builtin/prune.c builtin/worktree.c
+msgid "do not remove, show only"
+msgstr "ná bain, taispeáin amháin"
+
+#: builtin/notes.c
+msgid "report pruned notes"
+msgstr "nótaí gearrtha a thuairisciú"
+
+#: builtin/notes.c
+msgid "notes-ref"
+msgstr "nótairea-tagairt"
+
+#: builtin/notes.c
+msgid "use notes from <notes-ref>"
+msgstr "úsáid nótaí ó <notes-ref>"
+
+#: builtin/notes.c builtin/remote.c parse-options.c
+#, c-format
+msgid "unknown subcommand: `%s'"
+msgstr "fo-ordú anaithnid: `%s'"
+
+#: builtin/pack-objects.c
+msgid "git pack-objects --stdout [<options>] [< <ref-list> | < <object-list>]"
+msgstr "git pack-objects --stdout [<options>] [< <ref-list> | < <object-list>]"
+
+#: builtin/pack-objects.c
+msgid ""
+"git pack-objects [<options>] <base-name> [< <ref-list> | < <object-list>]"
+msgstr ""
+"git pack-objects [<options>] <base-name> [< <ref-list> | < <object-list>]"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "invalid --name-hash-version option: %d"
+msgstr "rogha neamhbhailí --name-hash-version: %d"
+
+#: builtin/pack-objects.c
+msgid "currently, --write-bitmap-index requires --name-hash-version=1"
+msgstr "faoi láthair, teastaíonn --write-bitmap-index --name-hash-version=1"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid ""
+"write_reuse_object: could not locate %s, expected at offset %<PRIuMAX> in "
+"pack %s"
+msgstr ""
+"write_reuse_object: níorbh fhéidir %s a aimsiú, bhíothas ag súil leis ag an "
+"bhfritháireamh %<PRIuMAX> sa phacáiste %s"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "bad packed object CRC for %s"
+msgstr "réad pacáilte dona CRC le haghaidh %s"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "corrupt packed object for %s"
+msgstr "réad pacáilte truaillithe do %s"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "recursive delta detected for object %s"
+msgstr "braithíodh delta athfhillteach do réad %s"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "ordered %u objects, expected %<PRIu32>"
+msgstr "rudaí %u ordaithe, súil leis% <PRIu32>"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "expected object at offset %<PRIuMAX> in pack %s"
+msgstr ""
+"réad a bhíothas ag súil leis ag an bhfritháireamh %<PRIuMAX> sa phacáiste %s"
+
+#: builtin/pack-objects.c
+msgid "disabling bitmap writing, packs are split due to pack.packSizeLimit"
+msgstr ""
+"scríobh bitmap a dhíchumasú, roinntear pacáistí mar gheall ar "
+"pack.packSizeLimit"
+
+#: builtin/pack-objects.c
+msgid "Writing objects"
+msgstr "Rudaí a scríobh"
+
+#: builtin/pack-objects.c builtin/update-index.c
+#, c-format
+msgid "failed to stat %s"
+msgstr "theip ar stát %s"
+
+#: builtin/pack-objects.c object-file.c
+#, c-format
+msgid "failed utime() on %s"
+msgstr "theip ar utime () ar %s"
+
+#: builtin/pack-objects.c
+msgid "failed to write bitmap index"
+msgstr "theip ar innéacs bitmap a scríobh"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "wrote %<PRIu32> objects while expecting %<PRIu32>"
+msgstr "scríobh %<PRIu32> rudaí agus iad ag súil leis %<PRIu32>"
+
+#: builtin/pack-objects.c builtin/repack.c
+msgid "disabling bitmap writing, as some objects are not being packed"
+msgstr "scríobh bitmap a dhíchumasú, toisc nach bhfuil roinnt rudaí á phacáil"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "delta base offset overflow in pack for %s"
+msgstr "forsreabhadh fhritháireamh bonn delta i bpacáiste do %s"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "delta base offset out of bound for %s"
+msgstr "bonn delta a fhritháireamh as ceangailte do %s"
+
+#: builtin/pack-objects.c
+msgid "Counting objects"
+msgstr "Rud a chomhaireamh"
+
+#: builtin/pack-objects.c pack-bitmap.c
+#, c-format
+msgid "unable to get size of %s"
+msgstr "nach féidir méid %s a fháil"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "unable to parse object header of %s"
+msgstr "nach féidir ceanntásc réad %s a pháirseáil"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "object %s cannot be read"
+msgstr "ní féidir réad %s a léamh"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "object %s inconsistent object length (%<PRIuMAX> vs %<PRIuMAX>)"
+msgstr "fad réada neamhréireach réad %s (%<PRIuMAX> vs %<PRIuMAX>)"
+
+#: builtin/pack-objects.c
+msgid "suboptimal pack - out of memory"
+msgstr "pacáiste suboptimal - as cuimhne"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "Delta compression using up to %d threads"
+msgstr "Comhbhrú Delta ag úsáid suas le snáitheanna %d"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "unable to pack objects reachable from tag %s"
+msgstr "nach féidir rudaí a phacáil inrochtana ó chlib %s"
+
+#: builtin/pack-objects.c commit-graph.c
+#, c-format
+msgid "unable to get type of object %s"
+msgstr "nach féidir cineál réada %s a fháil"
+
+#: builtin/pack-objects.c
+msgid "Compressing objects"
+msgstr "Rudaí comhbhrúite"
+
+#: builtin/pack-objects.c
+msgid "inconsistency with delta count"
+msgstr "neamhréireacht le comhaireamh delta"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "invalid pack.allowPackReuse value: '%s'"
+msgstr "luach pack.allowPackReuse neamhbhailí: '%s'"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid ""
+"value of uploadpack.blobpackfileuri must be of the form '<object-hash> <pack-"
+"hash> <uri>' (got '%s')"
+msgstr ""
+"<object-hash><pack-hash><uri>caithfidh luach uploadpack.blobpackfileuri a "
+"bheith den fhoirm '' (fuair '%s')"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid ""
+"object already configured in another uploadpack.blobpackfileuri (got '%s')"
+msgstr ""
+"réad cumraithe cheana féin i uploadpack.blobpackfileuri eile (fuair '%s')"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "could not get type of object %s in pack %s"
+msgstr "ní fhéadfaí cineál réada %s a fháil i bpacáiste %s"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "could not find pack '%s'"
+msgstr "ní raibh an pacáiste '%s' in ann a aimsiú"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "packfile %s cannot be accessed"
+msgstr "ní féidir teacht ar chomhad pacáiste %s"
+
+#: builtin/pack-objects.c
+msgid "Enumerating cruft objects"
+msgstr "Ag áireamh rudaí cruft"
+
+#: builtin/pack-objects.c
+msgid "unable to add cruft objects"
+msgstr "in ann rudaí cruft a chur leis"
+
+#: builtin/pack-objects.c
+msgid "Traversing cruft objects"
+msgstr "Ag trasnú ar rudaí cruth"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid ""
+"expected edge object ID, got garbage:\n"
+" %s"
+msgstr ""
+"ag súil le haitheantas réada imeall, fuarthas bruscar:\n"
+"%s"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid ""
+"expected object ID, got garbage:\n"
+" %s"
+msgstr ""
+"aitheantas réada a bhfuil súil leis, fuair truflais:\n"
+" %s"
+
+#: builtin/pack-objects.c reachable.c
+msgid "could not load cruft pack .mtimes"
+msgstr "ní fhéadfaí pacáiste cruft a luchtú .mtimes"
+
+#: builtin/pack-objects.c
+msgid "cannot open pack index"
+msgstr "ní féidir innéacs pacáiste a osc"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "loose object at %s could not be examined"
+msgstr "ní fhéadfaí réad scaoilte ag %s a scrúdú"
+
+#: builtin/pack-objects.c
+msgid "unable to force loose object"
+msgstr "in ann rud scaoilte a chur i bhfeidhm"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "not a rev '%s'"
+msgstr "ní rev '%s'"
+
+#: builtin/pack-objects.c builtin/rev-parse.c
+#, c-format
+msgid "bad revision '%s'"
+msgstr "droch-athbhreithniú '%s'"
+
+#: builtin/pack-objects.c
+msgid "unable to add recent objects"
+msgstr "in ann rudaí le déanaí a chur leis"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "unsupported index version %s"
+msgstr "leagan innéacs neamhthacaithe %s"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "bad index version '%s'"
+msgstr "droch-leagan innéacs '%s'"
+
+#: builtin/pack-objects.c
+msgid "show progress meter during object writing phase"
+msgstr "méadar dul chun cinn a thaispeáint le linn céim sc"
+
+#: builtin/pack-objects.c
+msgid "similar to --all-progress when progress meter is shown"
+msgstr "cosúil le --all-progress nuair a thaispeántar méadar dul chun cinn"
+
+#: builtin/pack-objects.c
+msgid "<version>[,<offset>]"
+msgstr "<version>[,<offset>]"
+
+#: builtin/pack-objects.c
+msgid "write the pack index file in the specified idx format version"
+msgstr "scríobh an comhad innéacs pacáiste sa leagan formáid idx sonraithe"
+
+#: builtin/pack-objects.c
+msgid "maximum size of each output pack file"
+msgstr "uasmhéid gach comhad pacáiste aschuir"
+
+#: builtin/pack-objects.c
+msgid "ignore borrowed objects from alternate object store"
+msgstr "neamhaird a dhéanamh ar rudaí atá ar iasacht ó stór"
+
+#: builtin/pack-objects.c
+msgid "ignore packed objects"
+msgstr "neamhaird a dhéanamh ar earraí"
+
+#: builtin/pack-objects.c
+msgid "limit pack window by objects"
+msgstr "teorainn fuinneog pacáiste de réir rudaí"
+
+#: builtin/pack-objects.c
+msgid "limit pack window by memory in addition to object limit"
+msgstr "teorainn le fuinneog pacáiste de réir chuimhne i dteannta le teorainn"
+
+#: builtin/pack-objects.c
+msgid "maximum length of delta chain allowed in the resulting pack"
+msgstr "fad uasta an slabhra delta a cheadaítear sa phacáiste mar thoradh air"
+
+#: builtin/pack-objects.c
+msgid "reuse existing deltas"
+msgstr "déltaí atá ann cheana a athúsáid"
+
+#: builtin/pack-objects.c
+msgid "reuse existing objects"
+msgstr "athúsáid rudaí atá ann cheana"
+
+#: builtin/pack-objects.c
+msgid "use OFS_DELTA objects"
+msgstr "bain úsáid as rudaí OFS_DELTA"
+
+#: builtin/pack-objects.c
+msgid "use threads when searching for best delta matches"
+msgstr "úsáid snáitheanna agus tú ag cuardach na cluichí delta is fearr"
+
+#: builtin/pack-objects.c
+msgid "do not create an empty pack output"
+msgstr "ná cruthaigh aschur pacáiste folamh"
+
+#: builtin/pack-objects.c
+msgid "read revision arguments from standard input"
+msgstr "léigh argóintí athbhreithnithe ó ionchur"
+
+#: builtin/pack-objects.c
+msgid "limit the objects to those that are not yet packed"
+msgstr "teorainn leis na rudaí dóibh siúd nach bhfuil pacáilte fós"
+
+#: builtin/pack-objects.c
+msgid "include objects reachable from any reference"
+msgstr "áireamh rudaí atá inrochtana ó aon tagairt"
+
+#: builtin/pack-objects.c
+msgid "include objects referred by reflog entries"
+msgstr "áireamh rudaí a dtagraítear ag iontrálacha reflog"
+
+#: builtin/pack-objects.c
+msgid "include objects referred to by the index"
+msgstr "áireamh rudaí dá dtagraíonn an t-innéacs"
+
+#: builtin/pack-objects.c
+msgid "read packs from stdin"
+msgstr "léigh pacáistí ó stdin"
+
+#: builtin/pack-objects.c
+msgid "output pack to stdout"
+msgstr "pacáiste aschuir go stdout"
+
+#: builtin/pack-objects.c
+msgid "include tag objects that refer to objects to be packed"
+msgstr "áireamh rudaí clibeanna a thagraíonn do rudaí atá le pacáil"
+
+#: builtin/pack-objects.c
+msgid "keep unreachable objects"
+msgstr "rudaí nach féidir a choinneáil"
+
+#: builtin/pack-objects.c
+msgid "pack loose unreachable objects"
+msgstr "rudaí scaoilte nach féidir a phacáil"
+
+#: builtin/pack-objects.c
+msgid "unpack unreachable objects newer than <time>"
+msgstr "rudaí nach féidir a dhíphacáil níos nuaí ná <time>"
+
+#: builtin/pack-objects.c
+msgid "create a cruft pack"
+msgstr "cruthaigh pacáiste cruft"
+
+#: builtin/pack-objects.c
+msgid "expire cruft objects older than <time>"
+msgstr "dul in éag rudaí cruft níos sine ná <time>"
+
+#: builtin/pack-objects.c
+msgid "use the sparse reachability algorithm"
+msgstr "úsáid an algartam inrochtaineachta neamhchoitianta"
+
+#: builtin/pack-objects.c
+msgid "create thin packs"
+msgstr "cruthaigh pacáistí tanaí"
+
+#: builtin/pack-objects.c
+msgid "create packs suitable for shallow fetches"
+msgstr "pacáistí a chruthú atá oiriúnach le haghaidh tógá"
+
+#: builtin/pack-objects.c
+msgid "ignore packs that have companion .keep file"
+msgstr "neamhaird a dhéanamh ar phacáistí a bhfuil comhad compánach"
+
+#: builtin/pack-objects.c
+msgid "ignore this pack"
+msgstr "neamhaird a dhéanamh ar an b"
+
+#: builtin/pack-objects.c
+msgid "pack compression level"
+msgstr "leibhéal comhbhrú pacáiste"
+
+#: builtin/pack-objects.c
+msgid "do not hide commits by grafts"
+msgstr "ná déan gealltanais ag grafts i bhfolach"
+
+#: builtin/pack-objects.c
+msgid "use a bitmap index if available to speed up counting objects"
+msgstr ""
+"úsáid innéacs bitmap má tá sé ar fáil chun rudaí a chomhaireamh a bhrostú"
+
+#: builtin/pack-objects.c
+msgid "write a bitmap index together with the pack index"
+msgstr "scríobh innéacs bitmap in éineacht leis an innéacs pacáiste"
+
+#: builtin/pack-objects.c
+msgid "write a bitmap index if possible"
+msgstr "scríobh innéacs bitmap más féidir"
+
+#: builtin/pack-objects.c
+msgid "handling for missing objects"
+msgstr "láimhseáil le haghaidh rudaí atá"
+
+#: builtin/pack-objects.c
+msgid "do not pack objects in promisor packfiles"
+msgstr "ná pacáil rudaí i gcomhaid pacáiste gealltanais"
+
+#: builtin/pack-objects.c
+msgid "implies --missing=allow-any"
+msgstr "tugann le tuiscint --missing=allow-any"
+
+#: builtin/pack-objects.c
+msgid "respect islands during delta compression"
+msgstr "meas ar oileáin le linn comhbhrúite delta"
+
+#: builtin/pack-objects.c
+msgid "protocol"
+msgstr "prótacal"
+
+#: builtin/pack-objects.c
+msgid "exclude any configured uploadpack.blobpackfileuri with this protocol"
+msgstr "eisiamh aon uploadpack.blobpackfileuri cumraithe leis an bprótacal seo"
+
+#: builtin/pack-objects.c
+msgid "use the specified name-hash function to group similar objects"
+msgstr ""
+"bain úsáid as an bhfeidhm sonraithe ainm-hash chun rudaí den chineál céanna a"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "delta chain depth %d is too deep, forcing %d"
+msgstr ""
+"tá doimhneacht slabhra delta %d ró-dhomhain, rud a chuireann iallach ar %d"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid "pack.deltaCacheLimit is too high, forcing %d"
+msgstr "pack.deltaCacheLimit ró-ard, ag cur %d i bhfeidhm"
+
+#: builtin/pack-objects.c config.c
+#, c-format
+msgid "bad pack compression level %d"
+msgstr "leibhéal comhbhrúite droch-phacáiste %d"
+
+#: builtin/pack-objects.c
+msgid "--max-pack-size cannot be used to build a pack for transfer"
+msgstr "Ní féidir --max-pack-size a úsáid chun pacáiste a thógáil le haistriú"
+
+#: builtin/pack-objects.c
+msgid "minimum pack size limit is 1 MiB"
+msgstr "is é teorainn íosta méid an phacáiste ná 1 MiB"
+
+#: builtin/pack-objects.c
+msgid "--thin cannot be used to build an indexable pack"
+msgstr "Ní féidir --thin a úsáid chun pacáiste innéacsaithe a thógáil"
+
+#: builtin/pack-objects.c
+msgid "cannot use --filter with --stdin-packs"
+msgstr "ní féidir --filter a úsáid le --stdin-packs"
+
+#: builtin/pack-objects.c
+msgid "cannot use internal rev list with --stdin-packs"
+msgstr "ní féidir liosta rev inmheánach a úsáid le --stdin-packs"
+
+#: builtin/pack-objects.c
+msgid "cannot use internal rev list with --cruft"
+msgstr "ní féidir liosta rev inmheánach a úsáid le --cruft"
+
+#: builtin/pack-objects.c
+msgid "cannot use --stdin-packs with --cruft"
+msgstr "ní féidir --stdin-packs a úsáid le --cruft"
+
+#: builtin/pack-objects.c
+msgid "Enumerating objects"
+msgstr "Rudaí a chur san áireamh"
+
+#: builtin/pack-objects.c
+#, c-format
+msgid ""
+"Total %<PRIu32> (delta %<PRIu32>), reused %<PRIu32> (delta %<PRIu32>), pack-"
+"reused %<PRIu32> (from %<PRIuMAX>)"
+msgstr ""
+"%<PRIu32> iomlán (delta %<PRIu32>), %<PRIu32> athúsáidte (delta %<PRIu32>), "
+"%<PRIu32> athúsáidte sa phacáiste (ó %<PRIuMAX>)"
+
+#: builtin/pack-redundant.c
+msgid ""
+"'git pack-redundant' is nominated for removal.\n"
+"If you still use this command, please add an extra\n"
+"option, '--i-still-use-this', on the command line\n"
+"and let us know you still use it by sending an e-mail\n"
+"to <git@vger.kernel.org>. Thanks.\n"
+msgstr ""
+"Tá 'git pack-redundant' ainmnithe le baint.\n"
+"Má úsáideann tú an t-ordú seo fós, cuir rogha b\n"
+"hreise, '--i-still-use-this', leis an líne ordaithe \n"
+"agus cuir in iúl dúinn go n-úsáideann tú fós é trí ríomhphost \n"
+"a sheoladh chuig <git@vger.kernel.org>. Go raibh maith agat.\n"
+
+#: builtin/pack-redundant.c
+msgid "refusing to run without --i-still-use-this"
+msgstr "ag diúltú rith gan --i-still-use-this fós"
+
+#: builtin/pack-refs.c
+msgid ""
+"git pack-refs [--all] [--no-prune] [--auto] [--include <pattern>] [--exclude "
+"<pattern>]"
+msgstr ""
+"<pattern><pattern>git pack-refs [--all] [--no-prunes] [--auto] [--include] "
+"[--eisiamh]"
+
+#: builtin/pack-refs.c
+msgid "pack everything"
+msgstr "pacáil gach rud"
+
+#: builtin/pack-refs.c
+msgid "prune loose refs (default)"
+msgstr "briseadh scaoilte (réamhshocraithe)"
+
+#: builtin/pack-refs.c
+msgid "auto-pack refs as needed"
+msgstr "tuairiscintí uathoibríoch pacáiste"
+
+#: builtin/pack-refs.c
+msgid "references to include"
+msgstr "tagairtí lena n-áirítear"
+
+#: builtin/pack-refs.c
+msgid "references to exclude"
+msgstr "tagairtí chun eisiamh"
+
+#: builtin/patch-id.c
+msgid "git patch-id [--stable | --unstable | --verbatim]"
+msgstr "git patch-id [--seasmhach | --éagobhsaí | --verbatim]"
+
+#: builtin/patch-id.c
+msgid "use the unstable patch-id algorithm"
+msgstr "bain úsáid as an algartam paith-id éagobhsaí"
+
+#: builtin/patch-id.c
+msgid "use the stable patch-id algorithm"
+msgstr "bain úsáid as an algartam paith-id cobhsaí"
+
+#: builtin/patch-id.c
+msgid "don't strip whitespace from the patch"
+msgstr "ná tarraingt spás bán ón bpaiste"
+
+#: builtin/prune.c
+msgid "git prune [-n] [-v] [--progress] [--expire <time>] [--] [<head>...]"
+msgstr "<head>git plum [-n] [-v] [--progress] [--dul in éag] [<time>--] [...]"
+
+#: builtin/prune.c
+msgid "report pruned objects"
+msgstr "tuairisciú rudaí gearrtha"
+
+#: builtin/prune.c
+msgid "expire objects older than <time>"
+msgstr "dul in éag rudaí níos sine ná <time>"
+
+#: builtin/prune.c
+msgid "limit traversal to objects outside promisor packfiles"
+msgstr "teorainn a chur ar thrasú le rudaí lasmuigh de phacáiste gealltan"
+
+#: builtin/prune.c
+msgid "cannot prune in a precious-objects repo"
+msgstr "ní féidir le bearradh i repo rudaí luachmhara"
+
+#: builtin/pull.c
+msgid "git pull [<options>] [<repository> [<refspec>...]]"
+msgstr "git pull [<options>] [<repository>[<refspec>...]]"
+
+#: builtin/pull.c
+msgid "control for recursive fetching of submodules"
+msgstr "rialú maidir le fo-mhodúil a fháil athshlánach"
+
+#: builtin/pull.c
+msgid "Options related to merging"
+msgstr "Roghanna a bhaineann le cumasc"
+
+#: builtin/pull.c
+msgid "incorporate changes by rebasing rather than merging"
+msgstr "athruithe a ionchorprú trí athbhunú seachas cumasc"
+
+#: builtin/pull.c builtin/revert.c
+msgid "allow fast-forward"
+msgstr "ligean go tapa ar aghaidh"
+
+#: builtin/pull.c
+msgid "control use of pre-merge-commit and commit-msg hooks"
+msgstr "úsáid crúcaí réamh-chumaisc agus comh-msg a rialú"
+
+#: builtin/pull.c parse-options.h
+msgid "automatically stash/stash pop before and after"
+msgstr "pop a stash/stash go huathoibríoch roimh agus tar éis"
+
+#: builtin/pull.c
+msgid "Options related to fetching"
+msgstr "Roghanna a bhaineann le tarraingt"
+
+#: builtin/pull.c
+msgid "force overwrite of local branch"
+msgstr "forscríobh fórsa ar bhrainse áitiúil"
+
+#: builtin/pull.c
+msgid "number of submodules pulled in parallel"
+msgstr "líon na bhfo-mhodúil tarraingthe go comhthreom"
+
+#: builtin/pull.c parse-options.h
+msgid "use IPv4 addresses only"
+msgstr "bain úsáid as seoltaí IPv4 amháin"
+
+#: builtin/pull.c parse-options.h
+msgid "use IPv6 addresses only"
+msgstr "bain úsáid as seoltaí IPv6 amháin"
+
+#: builtin/pull.c
+msgid ""
+"There is no candidate for rebasing against among the refs that you just "
+"fetched."
+msgstr ""
+"Níl aon iarrthóir ann chun athbhreithniú i measc na n-airíonna a fuair tú "
+"díreach."
+
+#: builtin/pull.c
+msgid ""
+"There are no candidates for merging among the refs that you just fetched."
+msgstr ""
+"Níl aon iarrthóirí ann chun cumasc i measc na gcomharthaí a fuair tú díreach."
+
+#: builtin/pull.c
+msgid ""
+"Generally this means that you provided a wildcard refspec which had no\n"
+"matches on the remote end."
+msgstr ""
+"Go ginearálta ciallaíonn sé seo gur sholáthraíonn tú refspec cárta fiáin "
+"nach raibh aon\n"
+"cluichí ar an gceann iargúlta."
+
+#: builtin/pull.c
+#, c-format
+msgid ""
+"You asked to pull from the remote '%s', but did not specify\n"
+"a branch. Because this is not the default configured remote\n"
+"for your current branch, you must specify a branch on the command line."
+msgstr ""
+"D'iarr tú tarraingt ón iargúlta '%s', ach níor shonraigh tú\n"
+"brainse. Toisc nach é seo an cianda cumraithe réamhshocraithe\n"
+"do bhrainse reatha, ní mór duit brainse a shonrú ar an líne ordaithe."
+
+#: builtin/pull.c builtin/rebase.c
+msgid "You are not currently on a branch."
+msgstr "Níl tú ar bhrainse faoi láthair."
+
+#: builtin/pull.c
+msgid "Please specify which branch you want to rebase against."
+msgstr "Sonraigh le do thoil cén brainse is mian leat a athbhunú ina choinne."
+
+#: builtin/pull.c
+msgid "Please specify which branch you want to merge with."
+msgstr "Sonraigh le do thoil cén brainse is mian leat a chumasc leis."
+
+#: builtin/pull.c
+msgid "See git-pull(1) for details."
+msgstr "Féach git-pull (1) le haghaidh sonraí."
+
+#: builtin/pull.c builtin/rebase.c
+msgid "<remote>"
+msgstr "<remote>"
+
+#: builtin/pull.c scalar.c
+msgid "<branch>"
+msgstr "<branch>"
+
+#: builtin/pull.c builtin/rebase.c
+msgid "There is no tracking information for the current branch."
+msgstr "Níl aon fhaisnéis rianaithe don bhrainse reatha."
+
+#: builtin/pull.c
+msgid ""
+"If you wish to set tracking information for this branch you can do so with:"
+msgstr ""
+"Más mian leat faisnéis rianaithe a shocrú don bhrainse seo is féidir leat é "
+"sin a dhéanamh le:"
+
+#: builtin/pull.c
+#, c-format
+msgid ""
+"Your configuration specifies to merge with the ref '%s'\n"
+"from the remote, but no such ref was fetched."
+msgstr ""
+"Sonraíonn do chumraíocht a chumasc leis an tagairt '%s'\n"
+"ón iargúlta, ach níor faightear aon tagairt den sórt sin."
+
+#: builtin/pull.c
+#, c-format
+msgid "unable to access commit %s"
+msgstr "nach féidir teacht ar thiomantas %s"
+
+#: builtin/pull.c refspec.c
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "refspec neamhbhailí '%s'"
+
+#: builtin/pull.c
+msgid "ignoring --verify-signatures for rebase"
+msgstr "ag neamhaird --verify-signatures le haghaidh athbhunú"
+
+#: builtin/pull.c
+msgid ""
+"You have divergent branches and need to specify how to reconcile them.\n"
+"You can do so by running one of the following commands sometime before\n"
+"your next pull:\n"
+"\n"
+" git config pull.rebase false # merge\n"
+" git config pull.rebase true # rebase\n"
+" git config pull.ff only # fast-forward only\n"
+"\n"
+"You can replace \"git config\" with \"git config --global\" to set a "
+"default\n"
+"preference for all repositories. You can also pass --rebase, --no-rebase,\n"
+"or --ff-only on the command line to override the configured default per\n"
+"invocation.\n"
+msgstr ""
+"Tá brainsí éagsúla agat agus ní mór duit a shonrú conas iad a réiteach.\n"
+"Is féidir leat é sin a dhéanamh trí cheann de na horduithe seo a leanas a "
+"reáchtáil rud éigin\n"
+"do chéad tarraingt eile:\n"
+"\n"
+" git config pull.rebase false # cumaisc\n"
+" git config pull.rebase true # rebase\n"
+" git config pull.ff only # tapa ar aghaidh amháin\n"
+"\n"
+"Is féidir leat “git config --global” a chur in ionad “git config” chun "
+"réamhshocrú a shocrú\n"
+"rogha do gach stórais. Is féidir leat pas a chur freisin --rebase, --no-"
+"rebase,\n"
+"nó --ff-only ar an líne ordaithe chun an réamhshocrú cumraithe in aghaidh a "
+"shárú\n"
+"ionghairm.\n"
+
+#: builtin/pull.c
+msgid "Updating an unborn branch with changes added to the index."
+msgstr "Brainse breithe a nuashonrú le hathruithe curtha leis an innéacs."
+
+#: builtin/pull.c
+msgid "pull with rebase"
+msgstr "tarraing le rebase"
+
+#: builtin/pull.c builtin/rebase.c
+msgid "Please commit or stash them."
+msgstr "Déan iad a thiomantas nó a stóráil le do thoil."
+
+#: builtin/pull.c
+#, c-format
+msgid ""
+"fetch updated the current branch head.\n"
+"fast-forwarding your working tree from\n"
+"commit %s."
+msgstr ""
+"nuashonraigh teacht ceann an bhrainse reatha.\n"
+"do chrann oibre a chur ar aghaidh go tapa ó\n"
+"tiomantas %s."
+
+#: builtin/pull.c
+#, c-format
+msgid ""
+"Cannot fast-forward your working tree.\n"
+"After making sure that you saved anything precious from\n"
+"$ git diff %s\n"
+"output, run\n"
+"$ git reset --hard\n"
+"to recover."
+msgstr ""
+"Ní féidir do chrann oibre a chur ar aghaidh a thosú.\n"
+"Tar éis duit a chinntiú gur shábháil tú aon rud luachmhar ó\n"
+"$ git diff %s\n"
+"aschur, rith\n"
+"$ git reset --hard\n"
+"chun aisghabháil."
+
+#: builtin/pull.c
+msgid "Cannot merge multiple branches into empty head."
+msgstr "Ní féidir brainsí iomadúla a chumasc i gceann folamh."
+
+#: builtin/pull.c
+msgid "Cannot rebase onto multiple branches."
+msgstr "Ní féidir athbhunú ar iliomad brainsí."
+
+#: builtin/pull.c
+msgid "Cannot fast-forward to multiple branches."
+msgstr "Ní féidir dul ar aghaidh go tapa go brainsí iolracha."
+
+#: builtin/pull.c
+msgid "Need to specify how to reconcile divergent branches."
+msgstr "Ní mór a shonrú conas brainsí éagsúla a réiteach."
+
+#: builtin/pull.c
+msgid "cannot rebase with locally recorded submodule modifications"
+msgstr "ní féidir athbhunú le modhnuithe fo-mhodúil atá taifeadta"
+
+#: builtin/push.c
+msgid "git push [<options>] [<repository> [<refspec>...]]"
+msgstr "git push [<roghanna>] [<stóras> [<refspec>...]]"
+
+#: builtin/push.c
+msgid "tag shorthand without <tag>"
+msgstr "gearrthand clib gan <tag>"
+
+#: builtin/push.c
+msgid "--delete only accepts plain target ref names"
+msgstr "--delete ní ghlacann sé ach le hainmneacha tagartha sprice simplí"
+
+#: builtin/push.c
+msgid ""
+"\n"
+"To choose either option permanently, see push.default in 'git help config'.\n"
+msgstr ""
+"\n"
+"Chun ceachtar rogha a roghnú go buan, féach push.default i 'git help "
+"config'.\n"
+
+#: builtin/push.c
+msgid ""
+"\n"
+"To avoid automatically configuring an upstream branch when its name\n"
+"won't match the local branch, see option 'simple' of branch.autoSetupMerge\n"
+"in 'git help config'.\n"
+msgstr ""
+"\n"
+"Chun brainse suas srutha a chumrú go huathoibríoch a sheachaint nuair a\n"
+"ní mheaitseoidh sé leis an mbrainse áitiúil, féach an rogha 'simplí' de "
+"branch.autoSetupMerge\n"
+"i 'git help config'.\n"
+
+#: builtin/push.c
+#, c-format
+msgid ""
+"The upstream branch of your current branch does not match\n"
+"the name of your current branch. To push to the upstream branch\n"
+"on the remote, use\n"
+"\n"
+" git push %s HEAD:%s\n"
+"\n"
+"To push to the branch of the same name on the remote, use\n"
+"\n"
+" git push %s HEAD\n"
+"%s%s"
+msgstr ""
+"Ní mheaitseálann an brainse suas srutha de do bhrainse reatha\n"
+"ainm do bhrainse reatha. Chun brú go dtí an bhrainse suas srutha\n"
+"ar an iargúlta, bain úsáid as\n"
+"\n"
+" git push %s HEAD:%s\n"
+"\n"
+"Chun brú chuig an mbrainse den ainm céanna ar an iargúlta, bain úsáid as\n"
+"\n"
+" git push %s HEAD\n"
+"%s%s"
+
+#: builtin/push.c
+#, c-format
+msgid ""
+"You are not currently on a branch.\n"
+"To push the history leading to the current (detached HEAD)\n"
+"state now, use\n"
+"\n"
+" git push %s HEAD:<name-of-remote-branch>\n"
+msgstr ""
+"Níl tú ar bhrainse faoi láthair.\n"
+"Chun an stair a bhrú mar thoradh ar an gceann reatha (CEAD scoite)\n"
+"stát anois, bain úsáid as\n"
+"\n"
+" git push %s HEAD:<ainm-na-brainse-cianda>\n"
+
+#: builtin/push.c
+msgid ""
+"\n"
+"To have this happen automatically for branches without a tracking\n"
+"upstream, see 'push.autoSetupRemote' in 'git help config'.\n"
+msgstr ""
+"\n"
+"Chun é seo a tharlóidh go huathoibríoch do bhrainsí gan rianú\n"
+"suas sruth, féach 'push.autoSetupRemote' i 'git help config'.\n"
+
+#: builtin/push.c
+#, c-format
+msgid ""
+"The current branch %s has no upstream branch.\n"
+"To push the current branch and set the remote as upstream, use\n"
+"\n"
+" git push --set-upstream %s %s\n"
+"%s"
+msgstr ""
+"Níl brainse suas srutha ag an mbrainse reatha %s.\n"
+"Chun an brainse reatha a bhrú agus an iargúlta a shocrú mar thuas an sruth, "
+"bain úsáid as\n"
+"\n"
+" git push --set-upstream %s %s\n"
+"%s"
+
+#: builtin/push.c
+#, c-format
+msgid "The current branch %s has multiple upstream branches, refusing to push."
+msgstr ""
+"Tá brainsí iolracha suas srutha ag an mbrainse reatha %s, ag diúltú brú."
+
+#: builtin/push.c
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+"Níor shonraigh tú aon refspec le brú, agus is é push.default “rud ar bith”."
+
+#: builtin/push.c
+#, c-format
+msgid ""
+"You are pushing to remote '%s', which is not the upstream of\n"
+"your current branch '%s', without telling me what to push\n"
+"to update which remote branch."
+msgstr ""
+"Tá tú ag brú chuig '%s' iargúlta, nach bhfuil suas sruth\n"
+"do bhrainse reatha '%s', gan insint liom cad ba cheart a bhrú\n"
+"chun an brainse iargúlta a nuashonrú."
+
+#: builtin/push.c
+msgid ""
+"Updates were rejected because the tip of your current branch is behind\n"
+"its remote counterpart. If you want to integrate the remote changes,\n"
+"use 'git pull' before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+"Diúltaíodh nuashonruithe toisc go bhfuil barr do bhrainse reatha taobh thiar "
+"de\n"
+"a mhacasamhail iargúlta. Más mian leat na hathruithe iargúlta a "
+"chomhtháthú,\n"
+"bain úsáid as 'git pull' sula mbrú arís.\n"
+"Féach an 'Nóta faoi fast-forward 'i 'git push --help' le haghaidh sonraí."
+
+#: builtin/push.c
+msgid ""
+"Updates were rejected because a pushed branch tip is behind its remote\n"
+"counterpart. If you want to integrate the remote changes, use 'git pull'\n"
+"before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+"Diúltaíodh nuashonruithe toisc go bhfuil barr brainse brúite taobh thiar dá\n"
+"comhghleacaí. Más mian leat na hathruithe iargúlta a chomhtháthú, bain úsáid "
+"as 'git pull'\n"
+"sula ndéantar é a bhrú arís.\n"
+"Féach an 'Nóta faoi fast-forward 'i 'git push --help' le haghaidh sonraí."
+
+#: builtin/push.c
+msgid ""
+"Updates were rejected because the remote contains work that you do not\n"
+"have locally. This is usually caused by another repository pushing to\n"
+"the same ref. If you want to integrate the remote changes, use\n"
+"'git pull' before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+"Diúltaíodh nuashonruithe toisc go bhfuil obair nach ndéanann tú san "
+"iargúlta\n"
+"a bheith agat go háitiúil. De ghnáth bíonn stór eile ag brú chuig seo\n"
+"an tagairt chéanna. Más mian leat na hathruithe iargúlta a chomhtháthú, bain "
+"úsáid as\n"
+"'git tarraing' sula ndéantar é a bhrú arís.\n"
+"Féach an 'Nóta faoi fast-forward 'i 'git push --help' le haghaidh sonraí."
+
+#: builtin/push.c
+msgid "Updates were rejected because the tag already exists in the remote."
+msgstr ""
+"Diúltaíodh nuashonruithe toisc go bhfuil an clib ann cheana féin sa iargúlta."
+
+#: builtin/push.c
+msgid ""
+"You cannot update a remote ref that points at a non-commit object,\n"
+"or update a remote ref to make it point at a non-commit object,\n"
+"without using the '--force' option.\n"
+msgstr ""
+"Ní féidir leat tagairt iargúlta a nuashonrú a chuireann in iúl ar réad neamh-"
+"thiomanta,\n"
+"nó tagairt iargúlta a nuashonrú chun é a chur in iúl ar réad neamh-"
+"thiomanta,\n"
+"gan an rogha '--force' a úsáid.\n"
+
+#: builtin/push.c
+msgid ""
+"Updates were rejected because the tip of the remote-tracking branch has\n"
+"been updated since the last checkout. If you want to integrate the\n"
+"remote changes, use 'git pull' before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+"Diúltaíodh nuashonruithe toisc go bhfuil barr na brainse cianrianaithe\n"
+"nuashonraíodh ón tseiceáil deireanach. Más mian leat an\n"
+"athruithe iargúlta, bain úsáid as 'git pull' sula mbrú arís.\n"
+"Féach an 'Nóta faoi fast-forward 'i 'git push --help' le haghaidh sonraí."
+
+#: builtin/push.c
+#, c-format
+msgid "Pushing to %s\n"
+msgstr "Ag brú chuig %s\n"
+
+#: builtin/push.c
+#, c-format
+msgid "failed to push some refs to '%s'"
+msgstr "theip ar roinnt réimsí a bhrú chuig '%s'"
+
+#: builtin/push.c
+msgid ""
+"recursing into submodule with push.recurseSubmodules=only; using on-demand "
+"instead"
+msgstr ""
+"athfhillteach isteach i bhfo-mhodúl le push.recurseSubmodules=only; ag baint "
+"úsáide as ar-éileamh ina ionad"
+
+#: builtin/push.c builtin/send-pack.c submodule-config.c
+#, c-format
+msgid "invalid value for '%s'"
+msgstr "luach neamhbhailí do '%s'"
+
+#: builtin/push.c builtin/submodule--helper.c
+msgid "repository"
+msgstr "stóras"
+
+#: builtin/push.c
+msgid "push all branches"
+msgstr "brúigh gach brainse"
+
+#: builtin/push.c builtin/send-pack.c
+msgid "mirror all refs"
+msgstr "scáthán gach ceann"
+
+#: builtin/push.c
+msgid "delete refs"
+msgstr "scrios réimsí"
+
+#: builtin/push.c
+msgid "push tags (can't be used with --all or --branches or --mirror)"
+msgstr ""
+"clibeanna brú (ní féidir iad a úsáid le --all nó --branches nó --mirror)"
+
+#: builtin/push.c builtin/send-pack.c
+msgid "force updates"
+msgstr "nuashonruithe fórsa"
+
+#: builtin/push.c builtin/send-pack.c
+msgid "<refname>:<expect>"
+msgstr "<refname>:<expect>"
+
+#: builtin/push.c builtin/send-pack.c
+msgid "require old value of ref to be at this value"
+msgstr "a cheangal go mbeadh seanluach an tagartha ag an luach seo"
+
+#: builtin/push.c builtin/send-pack.c
+msgid "require remote updates to be integrated locally"
+msgstr "éilíonn go ndéanfaí nuashonruithe iargúlta"
+
+#: builtin/push.c
+msgid "control recursive pushing of submodules"
+msgstr "brú athfhillteach ar fho-mhodúil a rialú"
+
+#: builtin/push.c builtin/send-pack.c
+msgid "use thin pack"
+msgstr "bain úsáid as pacáiste tanaí"
+
+#: builtin/push.c builtin/send-pack.c
+msgid "receive pack program"
+msgstr "clár pacáiste a fháil"
+
+#: builtin/push.c
+msgid "set upstream for git pull/status"
+msgstr "socraigh suas sruth le haghaidh tarraing/stádas git"
+
+#: builtin/push.c
+msgid "prune locally removed refs"
+msgstr "gearradh a bhaintear go háitiúil"
+
+#: builtin/push.c
+msgid "bypass pre-push hook"
+msgstr "seachbhóthar crúca réamh"
+
+#: builtin/push.c
+msgid "push missing but relevant tags"
+msgstr "clibeanna atá ar iarraidh ach ábhartha a"
+
+#: builtin/push.c builtin/send-pack.c
+msgid "GPG sign the push"
+msgstr "Síníonn GPG an brú"
+
+#: builtin/push.c builtin/send-pack.c
+msgid "request atomic transaction on remote side"
+msgstr "iarraidh idirbheart adamach ar an taobh iargúl"
+
+#: builtin/push.c
+msgid "--delete doesn't make sense without any refs"
+msgstr "--delete níl ciall leis gan aon réiteoirí"
+
+#: builtin/push.c t/helper/test-bundle-uri.c
+#, c-format
+msgid "bad repository '%s'"
+msgstr "droch-stóras '%s'"
+
+#: builtin/push.c
+msgid ""
+"No configured push destination.\n"
+"Either specify the URL from the command-line or configure a remote "
+"repository using\n"
+"\n"
+" git remote add <name> <url>\n"
+"\n"
+"and then push using the remote name\n"
+"\n"
+" git push <name>\n"
+msgstr ""
+"Gan aon cheann scríbe brúite cumraithe.\n"
+"Sonraigh an URL ón líne ordaithe nó cumraigh stór iargúlta ag baint úsáide "
+"as\n"
+"\n"
+" git remote add <name> <url>\n"
+"\n"
+"agus ansin brúigh ag úsáid an ainm iargúlta\n"
+"\n"
+" git push <ainm>\n"
+
+#: builtin/push.c
+msgid "--all can't be combined with refspecs"
+msgstr "--all ní féidir é a chomhcheangal le refspecs"
+
+#: builtin/push.c
+msgid "--mirror can't be combined with refspecs"
+msgstr "--mirror ní féidir é a chomhcheangal le refspecs"
+
+#: builtin/push.c
+msgid "push options must not have new line characters"
+msgstr "ní chóir go mbeadh carachtair líne nua ag roghanna brú"
+
+#: builtin/range-diff.c
+msgid "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
+msgstr "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
+
+#: builtin/range-diff.c
+msgid "git range-diff [<options>] <old-tip>...<new-tip>"
+msgstr "git range-diff [<options>] <old-base>..<old-tip> <new-base>..<new-tip>"
+
+#: builtin/range-diff.c
+msgid "git range-diff [<options>] <base> <old-tip> <new-tip>"
+msgstr "git range-diff [<options>] <base> <old-tip> <new-tip>"
+
+#: builtin/range-diff.c
+msgid "use simple diff colors"
+msgstr "bain úsáid as dathanna diff simplí"
+
+#: builtin/range-diff.c
+msgid "notes"
+msgstr "nótaí"
+
+#: builtin/range-diff.c
+msgid "passed to 'git log'"
+msgstr "cuireadh chuig 'git log'"
+
+#: builtin/range-diff.c
+msgid "only emit output related to the first range"
+msgstr "ní scaoileann ach aschur a bhaineann leis an gcéad raon"
+
+#: builtin/range-diff.c
+msgid "only emit output related to the second range"
+msgstr "ní scaoileann ach aschur a bhaineann leis an dara raon"
+
+#: builtin/range-diff.c
+#, c-format
+msgid "not a revision: '%s'"
+msgstr "ní athbhreithniú: '%s'"
+
+#: builtin/range-diff.c
+#, c-format
+msgid "not a commit range: '%s'"
+msgstr "ní raon tiomanta: '%s'"
+
+#: builtin/range-diff.c
+#, c-format
+msgid "not a symmetric range: '%s'"
+msgstr "ní raon siméadrach: '%s'"
+
+#: builtin/range-diff.c
+msgid "need two commit ranges"
+msgstr "dhá raon tiomanta ag teastáil"
+
+#: builtin/read-tree.c
+msgid ""
+"git read-tree [(-m [--trivial] [--aggressive] | --reset | --"
+"prefix=<prefix>)\n"
+" [-u | -i]] [--index-output=<file>] [--no-sparse-checkout]\n"
+" (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])"
+msgstr ""
+"git read-tree [(-m [--trivial] [--aggressive] | --reset | --"
+"prefix=<prefix>)\n"
+" [-u | -i]] [--index-output=<file>] [--no-sparse-checkout]\n"
+" (--empty | <tree-ish1> [<tree-ish2> [<tree-ish3>]])"
+
+#: builtin/read-tree.c
+msgid "write resulting index to <file>"
+msgstr "scríobh innéacs mar thoradh air go <file>"
+
+#: builtin/read-tree.c
+msgid "only empty the index"
+msgstr "ach an t-innéacs a fholmhú"
+
+#: builtin/read-tree.c
+msgid "Merging"
+msgstr "Cumaisc"
+
+#: builtin/read-tree.c
+msgid "perform a merge in addition to a read"
+msgstr "cumaisc a dhéanamh i dteannta le léamh"
+
+#: builtin/read-tree.c
+msgid "3-way merge if no file level merging required"
+msgstr "Cumaisc trí bhealach mura gá cumasc leibhéal comhaid"
+
+#: builtin/read-tree.c
+msgid "3-way merge in presence of adds and removes"
+msgstr "Cumaisc 3 bhealach i láthair breiseanna agus bainteanna"
+
+#: builtin/read-tree.c
+msgid "same as -m, but discard unmerged entries"
+msgstr "mar an gcéanna le -m, ach caith iontrálacha neamh-chumhdaithe"
+
+#: builtin/read-tree.c
+msgid "<subdirectory>/"
+msgstr "<subdirectory>/"
+
+#: builtin/read-tree.c
+msgid "read the tree into the index under <subdirectory>/"
+msgstr "léigh an crann isteach san innéacs faoi<subdirectory>/"
+
+#: builtin/read-tree.c
+msgid "update working tree with merge result"
+msgstr "crann oibre a nuashonrú le toradh cumaisc"
+
+#: builtin/read-tree.c
+msgid "gitignore"
+msgstr "gignor"
+
+#: builtin/read-tree.c
+msgid "allow explicitly ignored files to be overwritten"
+msgstr "ligean do chomhaid a dhéantar neamhaird air go sainrá"
+
+#: builtin/read-tree.c
+msgid "don't check the working tree after merging"
+msgstr "ná seiceáil an crann oibre tar éis a chumasc"
+
+#: builtin/read-tree.c
+msgid "don't update the index or the work tree"
+msgstr "ná nuashonraigh an t-innéacs nó an crann oibre"
+
+#: builtin/read-tree.c
+msgid "skip applying sparse checkout filter"
+msgstr "scipeáil scagaire seiceála neamhchoitianta a"
+
+#: builtin/read-tree.c
+msgid "debug unpack-trees"
+msgstr "crainn díphacáilte a dhífhabhtú"
+
+#: builtin/read-tree.c
+msgid "suppress feedback messages"
+msgstr "teachtaireachtaí aiseolais"
+
+#: builtin/read-tree.c
+msgid "You need to resolve your current index first"
+msgstr "Ní mór duit d'innéacs reatha a réiteach ar dtús"
+
+#: builtin/rebase.c
+msgid ""
+"git rebase [-i] [options] [--exec <cmd>] [--onto <newbase> | --keep-base] "
+"[<upstream> [<branch>]]"
+msgstr ""
+"<upstream><branch>git rebase [-i] [roghanna] [--exec<cmd>] [--onto "
+"<newbase>| --keep-base] [[]]"
+
+#: builtin/rebase.c
+msgid ""
+"git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] --root [<branch>]"
+msgstr ""
+"<newbase><branch>git rebase [-i] [roghanna] [--exec] [-- <cmd>onto] --root []"
+
+#: builtin/rebase.c sequencer.c
+#, c-format
+msgid "could not read '%s'."
+msgstr "ní raibh '%s' in ann a léamh."
+
+#: builtin/rebase.c
+#, c-format
+msgid "could not create temporary %s"
+msgstr "ní fhéadfaí %s sealadach a chruthú"
+
+#: builtin/rebase.c
+msgid "could not mark as interactive"
+msgstr "ní fhéadfaí marcáil mar idirghníomh"
+
+#: builtin/rebase.c
+msgid "could not generate todo list"
+msgstr "ní raibh in ann liosta todo a ghiniúint"
+
+#: builtin/rebase.c
+msgid "a base commit must be provided with --upstream or --onto"
+msgstr "caithfear gealltanas bonn a sholáthar le --upstream nó --onto"
+
+#: builtin/rebase.c
+#, c-format
+msgid "%s requires the merge backend"
+msgstr "Teastaíonn %s an cúltaca cumaisc"
+
+#: builtin/rebase.c
+#, c-format
+msgid "invalid onto: '%s'"
+msgstr "neamhbhailí ar: '%s'"
+
+#: builtin/rebase.c
+#, c-format
+msgid "invalid orig-head: '%s'"
+msgstr "orig-head neamhbhailí: '%s'"
+
+#: builtin/rebase.c
+#, c-format
+msgid "ignoring invalid allow_rerere_autoupdate: '%s'"
+msgstr "neamhaird a dhéanamh de allow_rerere_autoupdate neamhbhailí: '%s'"
+
+#: builtin/rebase.c builtin/rm.c sequencer.c
+#, c-format
+msgid "could not remove '%s'"
+msgstr "ní fhéadfaí '%s' a bhaint"
+
+#: builtin/rebase.c
+#, c-format
+msgid ""
+"\n"
+"git encountered an error while preparing the patches to replay\n"
+"these revisions:\n"
+"\n"
+" %s\n"
+"\n"
+"As a result, git cannot rebase them."
+msgstr ""
+"\n"
+"Bhí earráid ag git agus é ag ullmhú na paistí chun athsheinm\n"
+"na hathbhreithnithe seo:\n"
+"\n"
+" %s\n"
+"\n"
+"Mar thoradh air sin, ní féidir le git iad a athbhunú."
+
+#: builtin/rebase.c
+#, c-format
+msgid "Unknown rebase-merges mode: %s"
+msgstr "Modh rebase-chumaisc anaithnid: %s"
+
+#: builtin/rebase.c
+#, c-format
+msgid "could not switch to %s"
+msgstr "ní fhéadfaí aistriú go %s"
+
+#: builtin/rebase.c
+msgid "apply options and merge options cannot be used together"
+msgstr "roghanna i bhfeidhm agus ní féidir roghanna cumaisc a úsáid le chéile"
+
+#: builtin/rebase.c
+msgid "--empty=ask is deprecated; use '--empty=stop' instead."
+msgstr "Tá --empty=ask díscríofa; bain úsáid as '--empty=stop' ina ionad."
+
+#: builtin/rebase.c
+#, c-format
+msgid ""
+"unrecognized empty type '%s'; valid values are \"drop\", \"keep\", and "
+"\"stop\"."
+msgstr ""
+"cineál folamh gan aithint '%s'; is iad na luachanna bailí ná “drop”, “keep”, "
+"agus “stop”."
+
+#: builtin/rebase.c
+msgid ""
+"--rebase-merges with an empty string argument is deprecated and will stop "
+"working in a future version of Git. Use --rebase-merges without an argument "
+"instead, which does the same thing."
+msgstr ""
+"Tá --rebase-merges le argóint teaghrán folamh míshuanta agus stopfaidh sé ag "
+"obair i leagan amach anseo de Git. Úsáid --rebase-merges gan argóint ina "
+"ionad sin, a dhéanann an rud céanna."
+
+#: builtin/rebase.c
+#, c-format
+msgid ""
+"%s\n"
+"Please specify which branch you want to rebase against.\n"
+"See git-rebase(1) for details.\n"
+"\n"
+" git rebase '<branch>'\n"
+"\n"
+msgstr ""
+"%s\n"
+"Sonraigh le do thoil cén brainse ar mhaith leat athbhunú ina choinne.\n"
+"Féach git-rebase(1) le haghaidh sonraí.\n"
+"\n"
+"git rebase '<brainse>'\n"
+"\n"
+
+#: builtin/rebase.c
+#, c-format
+msgid ""
+"If you wish to set tracking information for this branch you can do so with:\n"
+"\n"
+" git branch --set-upstream-to=%s/<branch> %s\n"
+"\n"
+msgstr ""
+"Más mian leat faisnéis rianaithe a shocrú don bhrainse seo is féidir leat é "
+"sin a dhéanamh le:\n"
+"\n"
+" git branch --set-upstream-to=%s/<branch> %s\n"
+"\n"
+
+#: builtin/rebase.c
+msgid "exec commands cannot contain newlines"
+msgstr "ní féidir línte nua a bheith ag orduithe exec"
+
+#: builtin/rebase.c
+msgid "empty exec command"
+msgstr "ordú exec folamh"
+
+#: builtin/rebase.c
+msgid "rebase onto given branch instead of upstream"
+msgstr "athbhunú ar an mbrainse ar leith in ionad suas an sruth"
+
+#: builtin/rebase.c
+msgid "use the merge-base of upstream and branch as the current base"
+msgstr "bain úsáid as bonn cumaisc suas sruth agus brainse mar an bonn reatha"
+
+#: builtin/rebase.c
+msgid "allow pre-rebase hook to run"
+msgstr "ligean do chrúca réamh-athbhunaithe rith"
+
+#: builtin/rebase.c
+msgid "be quiet. implies --no-stat"
+msgstr "a bheith ciúin. tugann le tuiscint --no-stat"
+
+#: builtin/rebase.c
+msgid "display a diffstat of what changed upstream"
+msgstr "taispeáint diffstat den rud a d'athraigh suas an sruth"
+
+#: builtin/rebase.c
+msgid "do not show diffstat of what changed upstream"
+msgstr "ná taispeáin diffstat den mhéid a d'athraigh suas an sruth"
+
+#: builtin/rebase.c
+msgid "add a Signed-off-by trailer to each commit"
+msgstr "cuir leantóir sínithe le gach tiomantas"
+
+#: builtin/rebase.c
+msgid "make committer date match author date"
+msgstr "dáta an údair comhoiriúnaithe dáta a dhéanamh"
+
+#: builtin/rebase.c
+msgid "ignore author date and use current date"
+msgstr "neamhaird a dhéanamh ar dháta údair agus bain úsáid as"
+
+#: builtin/rebase.c
+msgid "synonym of --reset-author-date"
+msgstr "comhchiallach de --reset-author-date"
+
+#: builtin/rebase.c
+msgid "passed to 'git apply'"
+msgstr "cuireadh chuig 'git apply'"
+
+#: builtin/rebase.c
+msgid "ignore changes in whitespace"
+msgstr "neamhaird a dhéanamh ar athruithe i spás bán"
+
+#: builtin/rebase.c
+msgid "cherry-pick all commits, even if unchanged"
+msgstr "roghnaigh silíní gach gealltanas, fiú mura bhfuil gan athrú"
+
+#: builtin/rebase.c
+msgid "continue"
+msgstr "leanúint"
+
+#: builtin/rebase.c
+msgid "skip current patch and continue"
+msgstr "scipeáil an paiste reatha agus lean ar aghaidh"
+
+#: builtin/rebase.c
+msgid "abort and check out the original branch"
+msgstr "déan deireadh a chur agus seiceáil ar an mbrainse bunaidh"
+
+#: builtin/rebase.c
+msgid "abort but keep HEAD where it is"
+msgstr "déan deireadh ach coinnigh CEAD san áit a bhfuil sé"
+
+#: builtin/rebase.c
+msgid "edit the todo list during an interactive rebase"
+msgstr "cuir an liosta todo in eagar le linn athbhunú idirghníomhach"
+
+#: builtin/rebase.c
+msgid "show the patch file being applied or merged"
+msgstr "taispeáin an comhad paiste atá á chur i bhfeidhm nó á chumas"
+
+#: builtin/rebase.c
+msgid "use apply strategies to rebase"
+msgstr "úsáid straitéisí i bhfeidhm chun athbhunú"
+
+#: builtin/rebase.c
+msgid "use merging strategies to rebase"
+msgstr "straitéisí cumaisc a úsáid chun athbhunú"
+
+#: builtin/rebase.c
+msgid "let the user edit the list of commits to rebase"
+msgstr "lig don úsáideoir liosta na dtiomantas a athbhunú a chur in eagar"
+
+#: builtin/rebase.c
+msgid "(REMOVED) was: try to recreate merges instead of ignoring them"
+msgstr ""
+"(Bainte) a bhí: déan iarracht cumaisc a athchruthú in ionad neamhaird a "
+"dhéanamh orthu"
+
+#: builtin/rebase.c builtin/revert.c
+msgid "how to handle commits that become empty"
+msgstr "conas gealltanais a éiríonn folamh a láimhseáil"
+
+#: builtin/rebase.c
+msgid "keep commits which start empty"
+msgstr "coinnigh gealltanais a thosaíonn folamh"
+
+#: builtin/rebase.c
+msgid "move commits that begin with squash!/fixup! under -i"
+msgstr "gealltanna gluaiseachta a thosaíonn le squash! /socrú! faoi -i"
+
+#: builtin/rebase.c
+msgid "update branches that point to commits that are being rebased"
+msgstr "brainsí a nuashonrú a thugann in iúl do ghealltanais atá á athbhunú"
+
+#: builtin/rebase.c
+msgid "add exec lines after each commit of the editable list"
+msgstr ""
+"línte exec a chur leis tar éis gach tiomantas den liosta in-eagarthóireachta"
+
+#: builtin/rebase.c
+msgid "allow rebasing commits with empty messages"
+msgstr "ligean do thiomantas a athbhunú le teachtaireachtaí folamh"
+
+#: builtin/rebase.c
+msgid "try to rebase merges instead of skipping them"
+msgstr "déan iarracht cumaisc a athbhunú in ionad iad a scipeáil"
+
+#: builtin/rebase.c
+msgid "use 'merge-base --fork-point' to refine upstream"
+msgstr "bain úsáid as 'merge-base --fork-point' chun suas an sruth a bheachtú"
+
+#: builtin/rebase.c
+msgid "use the given merge strategy"
+msgstr "bain úsáid as an straitéis cumaisc tugtha"
+
+#: builtin/rebase.c builtin/revert.c
+msgid "option"
+msgstr "rogha"
+
+#: builtin/rebase.c
+msgid "pass the argument through to the merge strategy"
+msgstr "an argóint a chur ar aghaidh chuig an straitéis cumaisc"
+
+#: builtin/rebase.c
+msgid "rebase all reachable commits up to the root(s)"
+msgstr ""
+"athbhunú gach gealltanas inrochtana suas go dtí an fhréamh/na fréamhacha"
+
+#: builtin/rebase.c
+msgid "automatically re-schedule any `exec` that fails"
+msgstr "athsceidealú go huathoibríoch aon `executaithe' a the"
+
+#: builtin/rebase.c
+msgid "apply all changes, even those already present upstream"
+msgstr "gach athrú a chur i bhfeidhm, fiú iad siúd atá i láthair suas an"
+
+#: builtin/rebase.c
+msgid "It looks like 'git am' is in progress. Cannot rebase."
+msgstr "Is cosúil go bhfuil 'git am' ar siúl. Ní féidir athbhunú."
+
+#: builtin/rebase.c
+msgid ""
+"`rebase --preserve-merges` (-p) is no longer supported.\n"
+"Use `git rebase --abort` to terminate current rebase.\n"
+"Or downgrade to v2.33, or earlier, to complete the rebase."
+msgstr ""
+"Ní thacaítear le `rebase --preserve-merges` (-p) a thuilleadh.\n"
+"Úsáid `git rebase --abort` chun rebase reatha a fhoirceannadh.\n"
+"Nó íosghrádú go v2.33, nó níos luaithe, chun an athbhunú a chur i gcrích."
+
+#: builtin/rebase.c
+msgid ""
+"--preserve-merges was replaced by --rebase-merges\n"
+"Note: Your `pull.rebase` configuration may also be set to 'preserve',\n"
+"which is no longer supported; use 'merges' instead"
+msgstr ""
+"Cuireadh --preserve-merges in ionad --rebase-merges\n"
+"Nóta: Féadfar do chumraíocht `pull.rebase` a shocrú chun 'caomhnú' freisin,\n"
+"nach dtacaítear leis a thuilleadh; bain úsáid as 'cumaisc' ina ionad"
+
+#: builtin/rebase.c
+msgid "no rebase in progress"
+msgstr "níl aon athbhunú ar siúl"
+
+#: builtin/rebase.c
+msgid "The --edit-todo action can only be used during interactive rebase."
+msgstr ""
+"Ní féidir an gníomh --edit-todo a úsáid ach le linn athbhunú idirghníomhach."
+
+#: builtin/rebase.c
+msgid "Cannot read HEAD"
+msgstr "Ní féidir HEAD a léamh"
+
+#: builtin/rebase.c
+msgid ""
+"You must edit all merge conflicts and then\n"
+"mark them as resolved using git add"
+msgstr ""
+"Ní mór duit gach coinbhleacht cumaisc a chur in eagar agus ansin\n"
+"iad a mharcáil mar réitigh ag úsáid git add"
+
+#: builtin/rebase.c
+msgid "could not discard worktree changes"
+msgstr "ní fhéadfadh athruithe crann oibre a dhiúscairt"
+
+#: builtin/rebase.c
+#, c-format
+msgid "could not move back to %s"
+msgstr "ní fhéadfaí bogadh ar ais chuig %s"
+
+#: builtin/rebase.c
+#, c-format
+msgid ""
+"It seems that there is already a %s directory, and\n"
+"I wonder if you are in the middle of another rebase. If that is the\n"
+"case, please try\n"
+"\t%s\n"
+"If that is not the case, please\n"
+"\t%s\n"
+"and run me again. I am stopping in case you still have something\n"
+"valuable there.\n"
+msgstr ""
+"Dealraíonn sé go bhfuil eolaire %s ann cheana féin, agus\n"
+"N'fheadar an bhfuil tú i lár athbhunaithe eile. Más é sin an\n"
+"cás, déan iarracht\n"
+" %s\n"
+"Mura bhfuil sé sin an cás, le do thoil\n"
+" %s\n"
+"agus rith mé arís. Táim ag stopadh i gcás go bhfuil rud éigin agat fós\n"
+"luachmhar ansin.\n"
+
+#: builtin/rebase.c
+msgid "switch `C' expects a numerical value"
+msgstr "tá an lasc `C' ag súil le luach uimhriúil"
+
+#: builtin/rebase.c
+msgid ""
+"apply options are incompatible with rebase.rebaseMerges. Consider adding --"
+"no-rebase-merges"
+msgstr ""
+"tá roghanna cur i bhfeidhm neamhoiriúnach le rebase.rebaseMerges. Smaoinigh "
+"ar --no-rebase-merges a chur leis"
+
+#: builtin/rebase.c
+msgid ""
+"apply options are incompatible with rebase.updateRefs. Consider adding --no-"
+"update-refs"
+msgstr ""
+"tá roghanna cur i bhfeidhm neamhoiriúnach le rebase.updateRefs. Smaoinigh ar "
+"--no-update-refs a chur leis"
+
+#: builtin/rebase.c
+#, c-format
+msgid "Unknown rebase backend: %s"
+msgstr "Cúltaca athbhunaithe anaithnid: %s"
+
+#: builtin/rebase.c
+msgid "--reschedule-failed-exec requires --exec or --interactive"
+msgstr "Éilíonn --reschedule-failed-exec --exec nó --interactive"
+
+#: builtin/rebase.c
+#, c-format
+msgid "invalid upstream '%s'"
+msgstr "neamhbhailí suas sruth '%s'"
+
+#: builtin/rebase.c
+msgid "Could not create new root commit"
+msgstr "Ní fhéadfaí tiomantas fréimhe nua a chruthú"
+
+#: builtin/rebase.c
+#, c-format
+msgid "no such branch/commit '%s'"
+msgstr "gan aon bhrainse/tiomantas '%s' den sórt sin"
+
+#: builtin/rebase.c builtin/submodule--helper.c
+#, c-format
+msgid "No such ref: %s"
+msgstr "Níl aon tagairt den sórt sin: %s"
+
+#: builtin/rebase.c
+msgid "Could not resolve HEAD to a commit"
+msgstr "Ní fhéadfaí HEAD a réiteach le tiomantas"
+
+#: builtin/rebase.c
+#, c-format
+msgid "'%s': need exactly one merge base with branch"
+msgstr "'%s': teastaíonn bonn cumaisc amháin díreach le brainse"
+
+#: builtin/rebase.c
+#, c-format
+msgid "'%s': need exactly one merge base"
+msgstr "'%s': teastaíonn bonn cumaisc amháin díreach"
+
+#: builtin/rebase.c
+#, c-format
+msgid "Does not point to a valid commit '%s'"
+msgstr "Ní thugann sé in iúl do thiomantas bailí '%s'"
+
+#: builtin/rebase.c
+msgid "HEAD is up to date."
+msgstr "Tá HEAD cothrom le dáta."
+
+#: builtin/rebase.c
+#, c-format
+msgid "Current branch %s is up to date.\n"
+msgstr "Tá an brainse reatha %s cothrom le dáta.\n"
+
+#: builtin/rebase.c
+msgid "HEAD is up to date, rebase forced."
+msgstr "Tá HEAD cothrom le dáta, athbhunú éigeantach."
+
+#: builtin/rebase.c
+#, c-format
+msgid "Current branch %s is up to date, rebase forced.\n"
+msgstr "Tá an brainse reatha %s cothrom le dáta, athbhunú éigeantach.\n"
+
+#: builtin/rebase.c
+msgid "The pre-rebase hook refused to rebase."
+msgstr "Dhiúltaigh an crúca réamh-athbhunú a athbhunú."
+
+#: builtin/rebase.c
+#, c-format
+msgid "Changes to %s:\n"
+msgstr "Athruithe ar %s:\n"
+
+#: builtin/rebase.c
+#, c-format
+msgid "Changes from %s to %s:\n"
+msgstr "Athruithe ó %s go %s:\n"
+
+#: builtin/rebase.c
+#, c-format
+msgid "First, rewinding head to replay your work on top of it...\n"
+msgstr ""
+"Ar dtús, téann athfhillte chun do chuid oibre a athsheinm ar a bharr...\n"
+
+#: builtin/rebase.c
+msgid "Could not detach HEAD"
+msgstr "Ní fhéadfaí CEAD a dhícheangal"
+
+#: builtin/rebase.c
+#, c-format
+msgid "Fast-forwarded %s to %s.\n"
+msgstr "Cuireadh %s ar aghaidh go tapa chuig %s.\n"
+
+#: builtin/receive-pack.c
+msgid "git receive-pack <git-dir>"
+msgstr "git receive-pack <git-dir>"
+
+#: builtin/receive-pack.c
+msgid ""
+"By default, updating the current branch in a non-bare repository\n"
+"is denied, because it will make the index and work tree inconsistent\n"
+"with what you pushed, and will require 'git reset --hard' to match\n"
+"the work tree to HEAD.\n"
+"\n"
+"You can set the 'receive.denyCurrentBranch' configuration variable\n"
+"to 'ignore' or 'warn' in the remote repository to allow pushing into\n"
+"its current branch; however, this is not recommended unless you\n"
+"arranged to update its work tree to match what you pushed in some\n"
+"other way.\n"
+"\n"
+"To squelch this message and still keep the default behaviour, set\n"
+"'receive.denyCurrentBranch' configuration variable to 'refuse'."
+msgstr ""
+"De réir réamhshocraithe, nuashonrú an bhrainse reatha i stóras neamh-lom\n"
+"diúltaítear, toisc go ndéanfaidh sé an t-innéacs agus an crann oibre "
+"neamhréireach\n"
+"leis an méid a bhrúigh tú, agus beidh 'git reset --hard' ag teastáil uait "
+"chun a mheaitseáil\n"
+"an crann oibre go HEAD.\n"
+"\n"
+"Is féidir leat an t-athróg cumraíochta 'receive.denyCurrentBranch' a shocrú\n"
+"chun 'neamhaird' nó 'rabhadh' sa stór iargúlta chun ligean a bhrú isteach\n"
+"a bhrainse reatha; áfach, ní mholtar é seo mura bhfuil tú\n"
+"socraithe chun a chrann oibre a nuashonrú chun a mheaitseáil ar an méid a "
+"bhrú tú isteach\n"
+"bealach eile.\n"
+"\n"
+"Chun an teachtaireacht seo a bhrú agus an t-iompar réamhshocraithe a "
+"choinneáil fós, socraigh\n"
+"Athróg cumraíochta 'receive.denyCurrentBranch' go 'refuse'."
+
+#: builtin/receive-pack.c
+msgid ""
+"By default, deleting the current branch is denied, because the next\n"
+"'git clone' won't result in any file checked out, causing confusion.\n"
+"\n"
+"You can set 'receive.denyDeleteCurrent' configuration variable to\n"
+"'warn' or 'ignore' in the remote repository to allow deleting the\n"
+"current branch, with or without a warning message.\n"
+"\n"
+"To squelch this message, you can set it to 'refuse'."
+msgstr ""
+"De réir réamhshocraithe, diúltaítear an bhrainse reatha a scriosadh, mar an "
+"chéad chéad\n"
+"Ní bheidh aon chomhad seiceáilte amach mar thoradh ar 'git clone', rud a "
+"chruthaíonn mearbhall.\n"
+"\n"
+"Is féidir leat athróg cumraíochta 'receive.denyDeleteCurrent' a shocrú go\n"
+"'rabhadh 'nó' neamhaird 'sa stór iargúlta chun cead a scriosadh an\n"
+"brainse reatha, le teachtaireacht rabhaidh nó gan é.\n"
+"\n"
+"Chun an teachtaireacht seo a ghearradh, is féidir leat é a shocrú go 'diúlt'."
+
+#: builtin/receive-pack.c
+msgid "quiet"
+msgstr "ciúin"
+
+#: builtin/receive-pack.c
+msgid "you must specify a directory"
+msgstr "ní mór duit eolaire a shonrú"
+
+#: builtin/reflog.c
+msgid "git reflog [show] [<log-options>] [<ref>]"
+msgstr "<ref>git reflog [taispeáin] [] [<log-options>]"
+
+#: builtin/reflog.c
+msgid "git reflog list"
+msgstr "git reflog liosta"
+
+#: builtin/reflog.c
+msgid ""
+"git reflog expire [--expire=<time>] [--expire-unreachable=<time>]\n"
+" [--rewrite] [--updateref] [--stale-fix]\n"
+" [--dry-run | -n] [--verbose] [--all [--single-worktree] | "
+"<refs>...]"
+msgstr ""
+"<time><time>git reflog in éag [--expire=] [--expire-unreachable=]\n"
+" [--athscríobh] [--updateref] [--stale-fix]\n"
+" <refs>[--dry-run | -n] [--verbose] [--all [--one-worktree] |...]"
+
+#: builtin/reflog.c
+msgid ""
+"git reflog delete [--rewrite] [--updateref]\n"
+" [--dry-run | -n] [--verbose] <ref>@{<specifier>}..."
+msgstr ""
+"git reflog scrios [--athscríobh] [--updateref]\n"
+" <ref><specifier>[--driy-run | -n] [--verbose] @ {}..."
+
+#: builtin/reflog.c
+msgid "git reflog exists <ref>"
+msgstr "git reflog ann <ref>"
+
+#: builtin/reflog.c
+msgid "git reflog drop [--all [--single-worktree] | <refs>...]"
+msgstr "<refs>git reflog titim [--all [--one-worktree] |...]"
+
+#: builtin/reflog.c
+#, c-format
+msgid "invalid timestamp '%s' given to '--%s'"
+msgstr "stampa ama neamhbhailí '%s' a thugtar do '--%s'"
+
+#: builtin/reflog.c sequencer.c
+#, c-format
+msgid "%s does not accept arguments: '%s'"
+msgstr "Ní ghlacann %s le hargóintí: '%s'"
+
+#: builtin/reflog.c
+msgid "do not actually prune any entries"
+msgstr "ná déan aon iontrálacha a ghearradh"
+
+#: builtin/reflog.c
+msgid ""
+"rewrite the old SHA1 with the new SHA1 of the entry that now precedes it"
+msgstr ""
+"athscríobh an sean-SHA1 leis an SHA1 nua den iontráil atá roimh ré anois"
+
+#: builtin/reflog.c
+msgid "update the reference to the value of the top reflog entry"
+msgstr "an tagairt do luach an iontráil reflog barr a nuashonrú"
+
+#: builtin/reflog.c
+msgid "print extra information on screen"
+msgstr "faisnéis bhreise a phriontáil ar an sc"
+
+#: builtin/reflog.c
+msgid "timestamp"
+msgstr "stampa ama"
+
+#: builtin/reflog.c
+msgid "prune entries older than the specified time"
+msgstr "iontrálacha brónta níos sine ná an t-am sonraithe"
+
+#: builtin/reflog.c
+msgid ""
+"prune entries older than <time> that are not reachable from the current tip "
+"of the branch"
+msgstr ""
+"ní féidir iontrálacha br <time>ónta níos sine ná sin a bhaint amach ó bharr "
+"reatha na brainse"
+
+#: builtin/reflog.c
+msgid "prune any reflog entries that point to broken commits"
+msgstr ""
+"aon iontrálacha reflog a ghearradh a chuireann in iúl do thiomantas briste"
+
+#: builtin/reflog.c
+msgid "process the reflogs of all references"
+msgstr "athfhillteacha na dtagairtí go léir a phróiseáil"
+
+#: builtin/reflog.c
+msgid "limits processing to reflogs from the current worktree only"
+msgstr ""
+"teorann sé leis an bpróiseáil do athfhillteacha ón gcrann oibre reatha amháin"
+
+#: builtin/reflog.c
+#, c-format
+msgid "Marking reachable objects..."
+msgstr "Rudaí inrochtana a mharcáil..."
+
+#: builtin/reflog.c
+#, c-format
+msgid "reflog could not be found: '%s'"
+msgstr "ní fhéadfaí reflog a fháil: '%s'"
+
+#: builtin/reflog.c
+msgid "no reflog specified to delete"
+msgstr "níl aon reflog sonraithe le scriosadh"
+
+#: builtin/reflog.c
+#, c-format
+msgid "invalid ref format: %s"
+msgstr "formáid tagartha neamhbhailí: %s"
+
+#: builtin/reflog.c
+msgid "drop the reflogs of all references"
+msgstr "scaoil athbhreithniú na dtagairtí go léir"
+
+#: builtin/reflog.c
+msgid "drop reflogs from the current worktree only"
+msgstr "scaoil reflogs ón gcrann oibre reatha amháin"
+
+#: builtin/reflog.c
+msgid "references specified along with --all"
+msgstr "tagairtí sonraithe in éineacht le --all"
+
+#: builtin/refs.c
+msgid "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
+msgstr "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
+
+#: builtin/refs.c
+msgid "git refs verify [--strict] [--verbose]"
+msgstr "fíoraíonn git refs [--strong] [--verbose]"
+
+#: builtin/refs.c
+msgid "specify the reference format to convert to"
+msgstr "sonraigh an fhormáid tagartha le tiontú"
+
+#: builtin/refs.c
+msgid "perform a non-destructive dry-run"
+msgstr "rith tirim neamh-millteach a dhéanamh"
+
+#: builtin/refs.c
+msgid "drop reflogs entirely during the migration"
+msgstr "titim athfhóga go hiomlán le linn na himirce"
+
+#: builtin/refs.c
+msgid "missing --ref-format=<format>"
+msgstr "ar iarraidh --ref-format=<format>"
+
+#: builtin/refs.c
+#, c-format
+msgid "repository already uses '%s' format"
+msgstr "úsáideann stór formáid '%s' cheana féin"
+
+#: builtin/refs.c
+msgid "enable strict checking"
+msgstr "cumasú seiceáil docht"
+
+#: builtin/refs.c
+msgid "'git refs verify' takes no arguments"
+msgstr "Ní ghlacann 'git refs verify' aon argóintí"
+
+#: builtin/remote.c
+msgid ""
+"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
+"mirror=<fetch|push>] <name> <url>"
+msgstr ""
+"git remote add [-t <branch>] [-m <master>] [-f] [--tags | --no-tags] [--"
+"mirror=<fetch|push>] <name> <url>"
+
+#: builtin/remote.c
+msgid "git remote rename [--[no-]progress] <old> <new>"
+msgstr "git remote rename [--[no-]progress] <old> <new>"
+
+#: builtin/remote.c
+msgid "git remote remove <name>"
+msgstr "git remote remove <name>"
+
+#: builtin/remote.c
+msgid "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
+msgstr "git remote set-head <name> (-a | --auto | -d | --delete | <branch>)"
+
+#: builtin/remote.c
+msgid "git remote [-v | --verbose] show [-n] <name>"
+msgstr "git remote [-v | --verbose] show [-n] <name>"
+
+#: builtin/remote.c
+msgid "git remote prune [-n | --dry-run] <name>"
+msgstr "git remote prune [-n | --dry-run] <name>"
+
+#: builtin/remote.c
+msgid ""
+"git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
+msgstr ""
+"git remote [-v | --verbose] update [-p | --prune] [(<group> | <remote>)...]"
+
+#: builtin/remote.c
+msgid "git remote set-branches [--add] <name> <branch>..."
+msgstr "git remote set-branches [--add] <name> <branch>..."
+
+#: builtin/remote.c
+msgid "git remote get-url [--push] [--all] <name>"
+msgstr "git remote get-url [--push] [--all] <name>"
+
+#: builtin/remote.c
+msgid "git remote set-url [--push] <name> <newurl> [<oldurl>]"
+msgstr "git remote set-url [--push] <name> <newurl> [<oldurl>]"
+
+#: builtin/remote.c
+msgid "git remote set-url --add <name> <newurl>"
+msgstr "git iargúlta set-url --add <name><newurl>"
+
+#: builtin/remote.c
+msgid "git remote set-url --delete <name> <url>"
+msgstr "git iargúlta set-url --delete <name><url>"
+
+#: builtin/remote.c
+msgid "git remote add [<options>] <name> <url>"
+msgstr "git remote add [<options>] <name> <url>"
+
+#: builtin/remote.c
+msgid "git remote set-branches <name> <branch>..."
+msgstr "git remote set-branches <name> <branch>..."
+
+#: builtin/remote.c
+msgid "git remote set-branches --add <name> <branch>..."
+msgstr "git remote set-branches --add <name> <branch>..."
+
+#: builtin/remote.c
+msgid "git remote show [<options>] <name>"
+msgstr "git remote show [<options>] <name>"
+
+#: builtin/remote.c
+msgid "git remote prune [<options>] <name>"
+msgstr "git remote prune [<options>] <name>"
+
+#: builtin/remote.c
+msgid "git remote update [<options>] [<group> | <remote>]..."
+msgstr "git remote update [<options>] [<group> | <remote>]..."
+
+#: builtin/remote.c
+#, c-format
+msgid "Updating %s"
+msgstr "Nuashonrú %s"
+
+#: builtin/remote.c
+#, c-format
+msgid "Could not fetch %s"
+msgstr "Níorbh fhéidir %s a fháil"
+
+#: builtin/remote.c
+msgid ""
+"--mirror is dangerous and deprecated; please\n"
+"\t use --mirror=fetch or --mirror=push instead"
+msgstr ""
+"--mirror tá scáthán contúirteach agus míchuir; le do thoil\n"
+" bain úsáid as --mirror=fetch nó --mirror=push ina ionad"
+
+#: builtin/remote.c
+#, c-format
+msgid "unknown --mirror argument: %s"
+msgstr "argóint --mirror anaithnid: %s"
+
+#: builtin/remote.c
+msgid "fetch the remote branches"
+msgstr "faigh na brainsí iargúlta"
+
+#: builtin/remote.c
+msgid ""
+"import all tags and associated objects when fetching\n"
+"or do not fetch any tag at all (--no-tags)"
+msgstr ""
+"iompórtáil gach clib agus rudaí gaolmhara agus tú ag tabhairt\n"
+"nó ná faigh aon chlib ar chor ar bith (--no-tags)"
+
+#: builtin/remote.c
+msgid "branch(es) to track"
+msgstr "brainse (í) chun rianú"
+
+#: builtin/remote.c
+msgid "master branch"
+msgstr "máistirbhrainse"
+
+#: builtin/remote.c
+msgid "set up remote as a mirror to push to or fetch from"
+msgstr "cuir iargúlta ar bun mar scáthán chun brú chuig nó a fháil uaidh"
+
+#: builtin/remote.c
+msgid "specifying a master branch makes no sense with --mirror"
+msgstr "níl aon chiall ar mháistirbhrainse a shonrú le --mirror"
+
+#: builtin/remote.c
+msgid "specifying branches to track makes sense only with fetch mirrors"
+msgstr "nííl ciall le brainsí a shonrú le rianú ach le scátháin faighte"
+
+#: builtin/remote.c
+#, c-format
+msgid "remote %s already exists."
+msgstr "iargúlta %s ann cheana féin."
+
+#: builtin/remote.c
+#, c-format
+msgid "Could not setup master '%s'"
+msgstr "Ní raibh an máistir '%s' a shocrú"
+
+#: builtin/remote.c trailer.c
+#, c-format
+msgid "more than one %s"
+msgstr "níos mó ná %s amháin"
+
+#: builtin/remote.c
+#, c-format
+msgid "unhandled branch.%s.rebase=%s; assuming 'true'"
+msgstr "brainse gan láimhseáil. %s.rebase=%s; ag glacadh leis 'fíor'"
+
+#: builtin/remote.c
+#, c-format
+msgid "Could not get fetch map for refspec %s"
+msgstr "Níorbh fhéidir léarscáil a fháil do refspec %s"
+
+#: builtin/remote.c
+msgid "(matching)"
+msgstr "(meaitseáil)"
+
+#: builtin/remote.c
+msgid "(delete)"
+msgstr "(scrios)"
+
+#: builtin/remote.c
+#, c-format
+msgid "could not set '%s'"
+msgstr "ní fhéadfaí '%s' a shocrú"
+
+#: builtin/remote.c config.c
+#, c-format
+msgid "could not unset '%s'"
+msgstr "ní fhéadfaí '%s' a dhíshocrú"
+
+#: builtin/remote.c
+#, c-format
+msgid ""
+"The %s configuration remote.pushDefault in:\n"
+"\t%s:%d\n"
+"now names the non-existent remote '%s'"
+msgstr ""
+"An cumraíocht %s remote.pushDefault i:\n"
+" %s: %d\n"
+"ainmníonn anois an iargúlta nach bhfuil ann '%s'"
+
+#: builtin/remote.c
+#, c-format
+msgid "No such remote: '%s'"
+msgstr "Níl aon iargúlta den sórt sin: '%s'"
+
+#: builtin/remote.c
+#, c-format
+msgid "Could not rename config section '%s' to '%s'"
+msgstr "Ní fhéadfaí an chuid cumraithe '%s' a athainmniú go '%s'"
+
+#: builtin/remote.c
+#, c-format
+msgid ""
+"Not updating non-default fetch refspec\n"
+"\t%s\n"
+"\tPlease update the configuration manually if necessary."
+msgstr ""
+"Gan teacht refspec neamh-réamhshocraithe a nuashonrú\n"
+" %s\n"
+" Nuashonraigh an chumraíocht de láimh más gá."
+
+#: builtin/remote.c
+msgid "Renaming remote references"
+msgstr "Tagairtí cianda a athainmniú"
+
+#: builtin/remote.c
+#, c-format
+msgid "deleting '%s' failed"
+msgstr "theip ar '%s' a scriosadh"
+
+#: builtin/remote.c
+#, c-format
+msgid "creating '%s' failed"
+msgstr "theip ar chruthú '%s'"
+
+#: builtin/remote.c
+msgid ""
+"Note: A branch outside the refs/remotes/ hierarchy was not removed;\n"
+"to delete it, use:"
+msgid_plural ""
+"Note: Some branches outside the refs/remotes/ hierarchy were not removed;\n"
+"to delete them, use:"
+msgstr[0] ""
+"Nóta: Níor baineadh brainse lasmuigh den ordlathas refs/remotes/;\n"
+"chun é a scriosadh, bain úsáid as:"
+msgstr[1] ""
+"Nóta: Níor baineadh roinnt brainsí lasmuigh den ordlathas refs/remotes/;\n"
+"chun iad a scriosadh, bain úsáid as:"
+msgstr[2] ""
+"Nóta: Níor baineadh roinnt brainsí lasmuigh den ordlathas refs/remotes/;\n"
+"chun iad a scriosadh, bain úsáid as:"
+
+#: builtin/remote.c
+#, c-format
+msgid "Could not remove config section '%s'"
+msgstr "Ní raibh an chuid cumraithe '%s' in ann a bhaint"
+
+#: builtin/remote.c
+#, c-format
+msgid " new (next fetch will store in remotes/%s)"
+msgstr " nua (stóráilfidh an chéad fhaighteacht eile i iargúlta/%s)"
+
+#: builtin/remote.c
+msgid " tracked"
+msgstr " rianaithe"
+
+#: builtin/remote.c
+msgid " skipped"
+msgstr " scipeáilte"
+
+#: builtin/remote.c
+msgid " stale (use 'git remote prune' to remove)"
+msgstr " seasta (bain úsáid as 'git remote prune' chun a bhaint)"
+
+#: builtin/remote.c
+msgid " ???"
+msgstr " ???"
+
+#: builtin/remote.c
+#, c-format
+msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
+msgstr "brainse neamhbhailí. %s.merge; ní féidir athbhunú ar> 1 bhrainse"
+
+#: builtin/remote.c
+#, c-format
+msgid "rebases interactively onto remote %s"
+msgstr "athbhunú go hidirghníomhach ar iargúlta %s"
+
+#: builtin/remote.c
+#, c-format
+msgid "rebases interactively (with merges) onto remote %s"
+msgstr "athbhunú idirghníomhach (le cumaisc) ar iargúlta %s"
+
+#: builtin/remote.c
+#, c-format
+msgid "rebases onto remote %s"
+msgstr "athbhunú ar iargúlta %s"
+
+#: builtin/remote.c
+#, c-format
+msgid " merges with remote %s"
+msgstr " merges with remote %s"
+
+#: builtin/remote.c
+#, c-format
+msgid "merges with remote %s"
+msgstr "cumasc le iargúlta %s"
+
+#: builtin/remote.c
+#, c-format
+msgid "%-*s and with remote %s\n"
+msgstr "%-*s agus le iargúlta %s\n"
+
+#: builtin/remote.c
+msgid "create"
+msgstr "cruthú"
+
+#: builtin/remote.c
+msgid "delete"
+msgstr "scriosadh"
+
+#: builtin/remote.c
+msgid "up to date"
+msgstr "cothrom le dáta"
+
+#: builtin/remote.c
+msgid "fast-forwardable"
+msgstr "tapa a sheoladh"
+
+#: builtin/remote.c
+msgid "local out of date"
+msgstr "áitiúil as dáta"
+
+#: builtin/remote.c
+#, c-format
+msgid " %-*s forces to %-*s (%s)"
+msgstr " fórsaí %-*s go %-*s (%s)"
+
+#: builtin/remote.c
+#, c-format
+msgid " %-*s pushes to %-*s (%s)"
+msgstr " %-*s ag brú go %-*s (%s)"
+
+#: builtin/remote.c
+#, c-format
+msgid " %-*s forces to %s"
+msgstr " feidhmíonn %-*s chuig %s"
+
+#: builtin/remote.c
+#, c-format
+msgid " %-*s pushes to %s"
+msgstr " %-*s ag brú chuig %s"
+
+#: builtin/remote.c
+msgid "do not query remotes"
+msgstr "ná fiosraigh iargúlta"
+
+#: builtin/remote.c
+#, c-format
+msgid "* remote %s"
+msgstr "* iargúlta %s"
+
+#: builtin/remote.c
+#, c-format
+msgid " Fetch URL: %s"
+msgstr " Faigh URL: %s"
+
+#. TRANSLATORS: the colon ':' should align
+#. with the one in " Fetch URL: %s"
+#. translation.
+#.
+#: builtin/remote.c
+#, c-format
+msgid " Push URL: %s"
+msgstr " Brúigh URL: %s"
+
+#: builtin/remote.c
+msgid "(no URL)"
+msgstr "(gan URL)"
+
+#: builtin/remote.c
+#, c-format
+msgid " HEAD branch: %s"
+msgstr " Brainse CEANN: %s"
+
+#: builtin/remote.c
+msgid "(not queried)"
+msgstr "(gan iarraidh)"
+
+#: builtin/remote.c
+msgid "(unknown)"
+msgstr "(anaithnid)"
+
+#: builtin/remote.c
+#, c-format
+msgid ""
+" HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
+msgstr ""
+" Brainse HEAD (tá CEAD iargúlta débhríoch, d'fhéadfadh a bheith ar cheann "
+"de na nithe seo a leanas)\n"
+
+#: builtin/remote.c
+#, c-format
+msgid " Remote branch:%s"
+msgid_plural " Remote branches:%s"
+msgstr[0] " Brainse iargúlta: %s"
+msgstr[1] " Brainsí iargúlta:%s"
+msgstr[2] " Brainsí iargúlta:%s"
+
+#: builtin/remote.c
+msgid " (status not queried)"
+msgstr " (níor fiosraíodh an stádas)"
+
+#: builtin/remote.c
+msgid " Local branch configured for 'git pull':"
+msgid_plural " Local branches configured for 'git pull':"
+msgstr[0] " Brainse áitiúil cumraithe le haghaidh 'git pull':"
+msgstr[1] " Craobhacha áitiúla cumraithe le haghaidh 'git pull':"
+msgstr[2] " Craobhacha áitiúla cumraithe le haghaidh 'git pull':"
+
+#: builtin/remote.c
+msgid " Local refs will be mirrored by 'git push'"
+msgstr " Déanfar tagairtí áitiúla a léiriú le 'git push'"
+
+#: builtin/remote.c
+#, c-format
+msgid " Local ref configured for 'git push'%s:"
+msgid_plural " Local refs configured for 'git push'%s:"
+msgstr[0] " Tagairt áitiúil cumraithe le haghaidh 'git push'%s:"
+msgstr[1] " Tagairtí áitiúla cumraithe le haghaidh 'git push'%s:"
+msgstr[2] " Tagairtí áitiúla cumraithe le haghaidh 'git push'%s:"
+
+#: builtin/remote.c
+#, c-format
+msgid "'%s/HEAD' is unchanged and points to '%s'\n"
+msgstr "Níl '%s/head' gan athrú agus díríonn sé chuig '%s'\n"
+
+#: builtin/remote.c
+#, c-format
+msgid "'%s/HEAD' has changed from '%s' and now points to '%s'\n"
+msgstr "Tá '%s/head' athraithe ó '%s' agus léiríonn sé anois chuig '%s'\n"
+
+#: builtin/remote.c
+#, c-format
+msgid "'%s/HEAD' is now created and points to '%s'\n"
+msgstr "Cruthaítear '%s/head' anois agus léiríonn sé chuig '%s'\n"
+
+#: builtin/remote.c
+#, c-format
+msgid "'%s/HEAD' was detached at '%s' and now points to '%s'\n"
+msgstr "Bhí '%s/head' scoite ag '%s' agus díríonn sé anois chuig '%s'\n"
+
+#: builtin/remote.c
+#, c-format
+msgid ""
+"'%s/HEAD' used to point to '%s' (which is not a remote branch), but now "
+"points to '%s'\n"
+msgstr ""
+"Úsáidtear '%s/head' chun díriú chuig '%s' (nach brainse iargúlta é), ach "
+"léiríonn sé anois chuig '%s'\n"
+
+#: builtin/remote.c
+msgid "set refs/remotes/<name>/HEAD according to remote"
+msgstr "socraigh refs/remotes/<name>/HEAD de réir an chianrialtáin"
+
+#: builtin/remote.c
+msgid "delete refs/remotes/<name>/HEAD"
+msgstr "scrios refs/remotes/<name>/HEAD"
+
+#: builtin/remote.c
+msgid "Cannot determine remote HEAD"
+msgstr "Ní féidir CEAD cianda a chinneadh"
+
+#: builtin/remote.c
+msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
+msgstr ""
+"Brainsí iomadúla HEAD iargúlta. Roghnaigh ceann go sainráite le do thoil:"
+
+#: builtin/remote.c
+#, c-format
+msgid "Could not delete %s"
+msgstr "Ní fhéadfaí %s a scriosadh"
+
+#: builtin/remote.c
+#, c-format
+msgid "Not a valid ref: %s"
+msgstr "Ní tagairt bailí: %s"
+
+#: builtin/remote.c
+#, c-format
+msgid "Could not set up %s"
+msgstr "Níor féidir %s a chur ar bun"
+
+#: builtin/remote.c
+#, c-format
+msgid " %s will become dangling!"
+msgstr " Beidh %s ag crochadh!"
+
+#: builtin/remote.c
+#, c-format
+msgid " %s has become dangling!"
+msgstr " tá %s ag crochadh!"
+
+#: builtin/remote.c
+#, c-format
+msgid "Pruning %s"
+msgstr "Bearradh %s"
+
+#: builtin/remote.c
+#, c-format
+msgid "URL: %s"
+msgstr "URL: %s"
+
+#: builtin/remote.c
+#, c-format
+msgid " * [would prune] %s"
+msgstr " * [bhearna] %s"
+
+#: builtin/remote.c
+#, c-format
+msgid " * [pruned] %s"
+msgstr " * [gearrtha] %s"
+
+#: builtin/remote.c
+msgid "prune remotes after fetching"
+msgstr "iomadáin brónta tar éis a fháil"
+
+#: builtin/remote.c
+#, c-format
+msgid "No such remote '%s'"
+msgstr "Níl aon iargúlta '%s' den sórt sin"
+
+#: builtin/remote.c
+msgid "add branch"
+msgstr "cuir brainse"
+
+#: builtin/remote.c
+msgid "no remote specified"
+msgstr "gan aon iargúlta sonraithe"
+
+#: builtin/remote.c
+msgid "query push URLs rather than fetch URLs"
+msgstr "cuir fiosrúcháin ar URLanna brú seachas URLanna aisghabhála"
+
+#: builtin/remote.c
+msgid "return all URLs"
+msgstr "gach URL a thabhairt ar ais"
+
+#: builtin/remote.c
+msgid "manipulate push URLs"
+msgstr "ionramháil URLanna bhrú"
+
+#: builtin/remote.c
+msgid "add URL"
+msgstr "cuir URL leis"
+
+#: builtin/remote.c
+msgid "delete URLs"
+msgstr "scrios URLanna"
+
+#: builtin/remote.c
+msgid "--add --delete doesn't make sense"
+msgstr "Níl ciall ag --add --delete"
+
+#: builtin/remote.c
+#, c-format
+msgid "Invalid old URL pattern: %s"
+msgstr "Sean-phatrún URL neamhbhailí: %s"
+
+#: builtin/remote.c
+#, c-format
+msgid "No such URL found: %s"
+msgstr "Níor aimsíodh aon URL den sórt sin: %s"
+
+#: builtin/remote.c
+msgid "Will not delete all non-push URLs"
+msgstr "Ní scriosfaidh sé gach URL neamh-bhrú"
+
+#: builtin/remote.c
+msgid "be verbose; must be placed before a subcommand"
+msgstr "a bheith inearálta; caithfear é a chur os comhair fo-ordú"
+
+#: builtin/repack.c
+msgid ""
+"git repack [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m]\n"
+"[--window=<n>] [--depth=<n>] [--threads=<n>] [--keep-pack=<pack-name>]\n"
+"[--write-midx] [--name-hash-version=<n>]"
+msgstr ""
+"git athphacáil [-a] [-A] [-d] [-f] [-F] [-l] [-n] [-q] [-b] [-m]\n"
+"<n><pack-name>[--fuinneog =] [-- <n>depth=] [--threads=] [--keep- <n>pack "
+"=]\n"
+"<n>[--write-midx] [--ainm-hash-leagan =]"
+
+#: builtin/repack.c
+msgid ""
+"Incremental repacks are incompatible with bitmap indexes. Use\n"
+"--no-write-bitmap-index or disable the pack.writeBitmaps configuration."
+msgstr ""
+"Níl ath-phacáistí incréideacha comhoiriúnach le hinnéacsanna bitmap. Úsáid\n"
+"--no-write-bitmap-index nó díchumraíocht an pack.writeBitmaps a dhíchumasú."
+
+#: builtin/repack.c
+msgid "could not start pack-objects to repack promisor objects"
+msgstr "ní fhéadfaí rudaí pacáiste a thosú chun rudaí gealltanna a athphacáil"
+
+#: builtin/repack.c
+msgid "failed to feed promisor objects to pack-objects"
+msgstr "theip ar rudaí gealltanna a bheathú ar rudaí pacáiste"
+
+#: builtin/repack.c
+msgid "repack: Expecting full hex object ID lines only from pack-objects."
+msgstr ""
+"athphacáil: Ag súil le línte aitheantais réad heicseach iomlána ach ó "
+"phacáistí."
+
+#: builtin/repack.c
+msgid "could not finish pack-objects to repack promisor objects"
+msgstr ""
+"ní fhéadfadh sé rudaí pacáiste a chríochnú chun rudaí geallta a athphacáil"
+
+#: builtin/repack.c
+#, c-format
+msgid "cannot open index for %s"
+msgstr "ní féidir innéacs a oscailt do %s"
+
+#: builtin/repack.c
+#, c-format
+msgid "pack %s too large to consider in geometric progression"
+msgstr "pacáiste %s ró-mhór le breithniú i ddul chun cinn geo"
+
+#: builtin/repack.c
+#, c-format
+msgid "pack %s too large to roll up"
+msgstr "pacáiste %s ró-mhór le rolladh suas"
+
+#: builtin/repack.c
+#, c-format
+msgid "could not open tempfile %s for writing"
+msgstr "ní fhéadfaí teachtaireacht %s a oscailt le haghaidh scríobh"
+
+#: builtin/repack.c
+msgid "could not close refs snapshot tempfile"
+msgstr "ní raibh in ann tempfile snapshot refs a dhúnadh"
+
+#: builtin/repack.c
+#, c-format
+msgid "could not remove stale bitmap: %s"
+msgstr "ní fhéadfaí bitmap seasta a bhaint: %s"
+
+#: builtin/repack.c
+#, c-format
+msgid "pack prefix %s does not begin with objdir %s"
+msgstr "ní thosaíonn réimír pacáiste %s le objdir %s"
+
+#: builtin/repack.c
+msgid "pack everything in a single pack"
+msgstr "pacáil gach rud i bpacáiste amháin"
+
+#: builtin/repack.c
+msgid "same as -a, and turn unreachable objects loose"
+msgstr ""
+"mar an gcéanna le -a, agus casadh rudaí nach féidir inrochtana scaoilte"
+
+#: builtin/repack.c
+msgid "same as -a, pack unreachable cruft objects separately"
+msgstr "mar an gcéanna le -a, pacáil rudaí cruft neamh-inrochtana ar leithligh"
+
+#: builtin/repack.c
+msgid "approxidate"
+msgstr "approxidate"
+
+#: builtin/repack.c
+msgid "with --cruft, expire objects older than this"
+msgstr "le --cruft, rachadh in éag rudaí níos sine ná seo"
+
+#: builtin/repack.c
+msgid "with --cruft, only repack cruft packs smaller than this"
+msgstr "le --cruft, ní athphacáil ach pacáistí cruft níos lú ná seo"
+
+#: builtin/repack.c
+msgid "remove redundant packs, and run git-prune-packed"
+msgstr "bain pacáistí iomarcacha, agus rith git-prune-packed"
+
+#: builtin/repack.c
+msgid "pass --no-reuse-delta to git-pack-objects"
+msgstr "pas --no-reuse-delta chuig git-pack-objects"
+
+#: builtin/repack.c
+msgid "pass --no-reuse-object to git-pack-objects"
+msgstr "pas --no-reuse-object chuig git-pack-objects"
+
+#: builtin/repack.c
+msgid ""
+"specify the name hash version to use for grouping similar objects by path"
+msgstr ""
+"sonraigh an leagan hash ainm atá le húsáid chun rudaí den chineál céanna a "
+"ghrúpáil"
+
+#: builtin/repack.c
+msgid "do not run git-update-server-info"
+msgstr "ná reáchtáil git-update-server-info"
+
+#: builtin/repack.c
+msgid "pass --local to git-pack-objects"
+msgstr "pas --local go git-pack-objects"
+
+#: builtin/repack.c
+msgid "write bitmap index"
+msgstr "scríobh innéacs bitmap"
+
+#: builtin/repack.c
+msgid "pass --delta-islands to git-pack-objects"
+msgstr "pas --delta-islands chuig git-pack-objects"
+
+#: builtin/repack.c
+msgid "with -A, do not loosen objects older than this"
+msgstr "le -A, ná scaoil rudaí níos sine ná seo"
+
+#: builtin/repack.c
+msgid "with -a, repack unreachable objects"
+msgstr "le -a, athphacáil rudaí neamh-inrochtana"
+
+#: builtin/repack.c
+msgid "size of the window used for delta compression"
+msgstr "méid na fuinneoga a úsáidtear le haghaidh comhbhrú delta"
+
+#: builtin/repack.c
+msgid "bytes"
+msgstr "beart"
+
+#: builtin/repack.c
+msgid "same as the above, but limit memory size instead of entries count"
+msgstr ""
+"mar an gcéanna leis an méid thuas, ach teorainn le méid cuimhne in ionad "
+"iontrálacha"
+
+#: builtin/repack.c
+msgid "limits the maximum delta depth"
+msgstr "teorann sé leis an doimhneacht delta uasta"
+
+#: builtin/repack.c
+msgid "limits the maximum number of threads"
+msgstr "teorainn leis an líon uasta na snáitheanna"
+
+#: builtin/repack.c
+msgid "maximum size of each packfile"
+msgstr "uasmhéid gach pacáiste"
+
+#: builtin/repack.c
+msgid "repack objects in packs marked with .keep"
+msgstr "athphacáil rudaí i bpacáistí atá marcáilte le .keep"
+
+#: builtin/repack.c
+msgid "do not repack this pack"
+msgstr "ná déan an pacáiste seo a athphacáil"
+
+#: builtin/repack.c
+msgid "find a geometric progression with factor <N>"
+msgstr "faigh dul chun cinn geoiméadrach le fachtóir <N>"
+
+#: builtin/repack.c
+msgid "write a multi-pack index of the resulting packs"
+msgstr "scríobh innéacs il-phacáiste de na pacáistí mar thoradh air"
+
+#: builtin/repack.c
+msgid "pack prefix to store a pack containing filtered out objects"
+msgstr "réimír pacáiste chun pacáiste ina bhfuil rudaí scagtha amach a stóráil"
+
+#: builtin/repack.c
+msgid "cannot delete packs in a precious-objects repo"
+msgstr "ní féidir pacáistí a scriosadh i repo rudaí luachmhara"
+
+#: builtin/repack.c
+#, c-format
+msgid "option '%s' can only be used along with '%s'"
+msgstr "ní féidir rogha '%s' a úsáid ach amháin in éineacht le '%s'"
+
+#: builtin/repack.c
+msgid "Nothing new to pack."
+msgstr "Níl aon rud nua le pacáil."
+
+#: builtin/repack.c
+#, c-format
+msgid "renaming pack to '%s' failed"
+msgstr "theip ar phacáiste a athainmniú go '%s'"
+
+#: builtin/repack.c
+#, c-format
+msgid "pack-objects did not write a '%s' file for pack %s-%s"
+msgstr "níor scríobh pack-objects comhad '%s' do phacáiste %s-%s"
+
+#: builtin/repack.c sequencer.c
+#, c-format
+msgid "could not unlink: %s"
+msgstr "ní fhéadfaí dícheangal: %s"
+
+#: builtin/replace.c
+msgid "git replace [-f] <object> <replacement>"
+msgstr "git athsholáthair [-f] <object><replacement>"
+
+#: builtin/replace.c
+msgid "git replace [-f] --edit <object>"
+msgstr "git athsholáthair [-f] --edit <object>"
+
+#: builtin/replace.c
+msgid "git replace [-f] --graft <commit> [<parent>...]"
+msgstr "<commit><parent>git athsholáthair [-f] --graft [...]"
+
+#: builtin/replace.c
+msgid "git replace -d <object>..."
+msgstr "<object>git athsholáthair -d..."
+
+#: builtin/replace.c
+msgid "git replace [--format=<format>] [-l [<pattern>]]"
+msgstr "<pattern>git in ionad [--format =<format>] [-l []]"
+
+#: builtin/replace.c
+#, c-format
+msgid ""
+"invalid replace format '%s'\n"
+"valid formats are 'short', 'medium' and 'long'"
+msgstr ""
+"formáid athsholáthair neamhbhailí '%s'\n"
+"is iad formáidí bailí ná 'gearr', 'meánach' agus 'fada'"
+
+#: builtin/replace.c
+#, c-format
+msgid "replace ref '%s' not found"
+msgstr "athsholáthair nach bhfuarthas tagairt '%s'"
+
+#: builtin/replace.c
+#, c-format
+msgid "Deleted replace ref '%s'"
+msgstr "Scriosta in ionad tagairt '%s'"
+
+#: builtin/replace.c
+#, c-format
+msgid "'%s' is not a valid ref name"
+msgstr "Ní ainm tagartha bailí é '%s'"
+
+#: builtin/replace.c
+#, c-format
+msgid "replace ref '%s' already exists"
+msgstr "athsholáthar tagairt '%s' atá ann cheana féin"
+
+#: builtin/replace.c
+#, c-format
+msgid ""
+"Objects must be of the same type.\n"
+"'%s' points to a replaced object of type '%s'\n"
+"while '%s' points to a replacement object of type '%s'."
+msgstr ""
+"Caithfidh rudaí a bheith den chineál céanna.\n"
+"Tugann '%s' in iúl do réad athsholáthair de chineál '%s'\n"
+"agus díríonn '%s' ar réad athsholáthair de chineál '%s'."
+
+#: builtin/replace.c
+#, c-format
+msgid "unable to open %s for writing"
+msgstr "nach féidir %s a oscailt le haghaidh scríobh"
+
+#: builtin/replace.c
+msgid "cat-file reported failure"
+msgstr "teip tuairiscithe ar chomhad cat"
+
+#: builtin/replace.c
+#, c-format
+msgid "unable to open %s for reading"
+msgstr "nach féidir %s a oscailt le haghaidh léamh"
+
+#: builtin/replace.c
+msgid "unable to spawn mktree"
+msgstr "in ann mktree a shannadh"
+
+#: builtin/replace.c
+msgid "unable to read from mktree"
+msgstr "in ann léamh ó mktree"
+
+#: builtin/replace.c
+msgid "mktree reported failure"
+msgstr "thuairiscigh mktree teip"
+
+#: builtin/replace.c
+msgid "mktree did not return an object name"
+msgstr "níor thug mktree ainm réad ar ais"
+
+#: builtin/replace.c
+#, c-format
+msgid "unable to fstat %s"
+msgstr "ní féidir le fstat %s"
+
+#: builtin/replace.c
+msgid "unable to write object to database"
+msgstr "in ann réad a scríobh chuig bunachar sonraí"
+
+#: builtin/replace.c
+#, c-format
+msgid "unable to get object type for %s"
+msgstr "nach féidir cineál réad a fháil do %s"
+
+#: builtin/replace.c
+msgid "editing object file failed"
+msgstr "theip ar eagarthóireacht ar chomhad"
+
+#: builtin/replace.c
+#, c-format
+msgid "new object is the same as the old one: '%s'"
+msgstr "tá réad nua mar an gcéanna leis an sean-réad: '%s'"
+
+#: builtin/replace.c
+#, c-format
+msgid "could not parse %s as a commit"
+msgstr "ní fhéadfaí %s a pharsáil mar thiomantas"
+
+#: builtin/replace.c
+#, c-format
+msgid "bad mergetag in commit '%s'"
+msgstr "cliciú neamhchuspóir i gcomhad '%s'"
+
+#: builtin/replace.c
+#, c-format
+msgid "malformed mergetag in commit '%s'"
+msgstr "comharthaí mífhoirmithe i dtiomantas '%s'"
+
+#: builtin/replace.c
+#, c-format
+msgid ""
+"original commit '%s' contains mergetag '%s' that is discarded; use --edit "
+"instead of --graft"
+msgstr ""
+"tá mergetag '%s' a dhíscaoiltear as '%s' bunaidh; bain úsáid as --edit in "
+"ionad --graft"
+
+#: builtin/replace.c
+#, c-format
+msgid "the original commit '%s' has a gpg signature"
+msgstr "tá síniú gpg ag an tiomantas bunaidh '%s'"
+
+#: builtin/replace.c
+msgid "the signature will be removed in the replacement commit!"
+msgstr "bainfear an síniú sa tiomantas athsholáthair!"
+
+#: builtin/replace.c
+#, c-format
+msgid "could not write replacement commit for: '%s'"
+msgstr "ní fhéadfaí gealltanas athsholáthair a scríobh do: '%s'"
+
+#: builtin/replace.c
+#, c-format
+msgid "graft for '%s' unnecessary"
+msgstr "graft le haghaidh '%s' gan ghá"
+
+#: builtin/replace.c
+#, c-format
+msgid "new commit is the same as the old one: '%s'"
+msgstr "tá tiomantas nua mar an gcéanna leis an seancheann: '%s'"
+
+#: builtin/replace.c
+#, c-format
+msgid ""
+"could not convert the following graft(s):\n"
+"%s"
+msgstr ""
+"ní raibh sé in ann an graft (í) seo a leanas a thiontú:\n"
+"%s"
+
+#: builtin/replace.c
+msgid "list replace refs"
+msgstr "liosta athsholáthair refs"
+
+#: builtin/replace.c
+msgid "delete replace refs"
+msgstr "scrios athsholáthair refs"
+
+#: builtin/replace.c
+msgid "edit existing object"
+msgstr "réad atá ann cheana in eagar"
+
+#: builtin/replace.c
+msgid "change a commit's parents"
+msgstr "tuismitheoirí tiomanta a athrú"
+
+#: builtin/replace.c
+msgid "convert existing graft file"
+msgstr "tiontaigh an comhad graft atá ann cheana"
+
+#: builtin/replace.c
+msgid "replace the ref if it exists"
+msgstr "athsholáthar an tagartha má tá sé ann"
+
+#: builtin/replace.c
+msgid "do not pretty-print contents for --edit"
+msgstr "ná déan ábhar álainn a phriontáil le haghaidh --edit"
+
+#: builtin/replace.c
+msgid "use this format"
+msgstr "bain úsáid as an bhformáid seo"
+
+#: builtin/replace.c
+msgid "--format cannot be used when not listing"
+msgstr "Ní féidir --format a úsáid nuair nach bhfuil sé liostaithe"
+
+#: builtin/replace.c
+msgid "-f only makes sense when writing a replacement"
+msgstr "Ní dhéanann -f ciall ach nuair a bhíonn athsholáthar á scríobh"
+
+#: builtin/replace.c
+msgid "--raw only makes sense with --edit"
+msgstr "Ní dhéanann --raw ciall ach le --edit"
+
+#: builtin/replace.c
+msgid "-d needs at least one argument"
+msgstr "-d teastaíonn argóint amháin ar a laghad"
+
+#: builtin/replace.c
+msgid "bad number of arguments"
+msgstr "droch-líon na n-argóintí"
+
+#: builtin/replace.c
+msgid "-e needs exactly one argument"
+msgstr "Teastaíonn argóint amháin díreach ó -e"
+
+#: builtin/replace.c
+msgid "-g needs at least one argument"
+msgstr "Teastaíonn argóint amháin ar a laghad ó -g"
+
+#: builtin/replace.c
+msgid "--convert-graft-file takes no argument"
+msgstr "Ní ghlacann --convert-graft-file aon argóint"
+
+#: builtin/replace.c
+msgid "only one pattern can be given with -l"
+msgstr "ní féidir ach patrún amháin a thabhairt le -l"
+
+#: builtin/replay.c
+msgid "need some commits to replay"
+msgstr "teastaíonn roinnt gealltanais chun athsheinm"
+
+#: builtin/replay.c
+msgid "all positive revisions given must be references"
+msgstr "caithfidh gach athbhreithniú dearfach a thugtar a bheith ina"
+
+#: builtin/replay.c
+msgid "argument to --advance must be a reference"
+msgstr "caithfidh argóint chuig --advance a bheith ina thagairt"
+
+#: builtin/replay.c
+msgid ""
+"cannot advance target with multiple sources because ordering would be ill-"
+"defined"
+msgstr ""
+"ní féidir leis an sprioc a chur chun cinn le foinsí iolracha toisc go mbeadh "
+"ordú"
+
+#: builtin/replay.c
+msgid ""
+"cannot implicitly determine whether this is an --advance or --onto operation"
+msgstr ""
+"ní féidir a chinneadh go hinneach an oibríocht --advance nó --onto é seo"
+
+#: builtin/replay.c
+msgid ""
+"cannot advance target with multiple source branches because ordering would "
+"be ill-defined"
+msgstr ""
+"ní féidir leis an sprioc a chur chun cinn le brainsí foinse iolracha mar go "
+"mbeadh ordú"
+
+#: builtin/replay.c
+msgid "cannot implicitly determine correct base for --onto"
+msgstr "ní féidir leis an mbonn ceart do --onto a chinneadh go hinneach"
+
+#: builtin/replay.c
+msgid ""
+"(EXPERIMENTAL!) git replay ([--contained] --onto <newbase> | --advance "
+"<branch>) <revision-range>..."
+msgstr ""
+"(TURGNAMHACH!) git replay ([--contained] --onto <newbase> | --advance "
+"<branch>) <revision-range>..."
+
+#: builtin/replay.c
+msgid "make replay advance given branch"
+msgstr "athsheoladh a dhéanamh roimh ré brainse ar leith"
+
+#: builtin/replay.c
+msgid "replay onto given commit"
+msgstr "athsheoladh ar thiomantas a thugtar"
+
+#: builtin/replay.c
+msgid "advance all branches contained in revision-range"
+msgstr "gach brainse atá sa raon athbhreithnithe a chur chun cinn"
+
+#: builtin/replay.c
+msgid "option --onto or --advance is mandatory"
+msgstr "tá rogha --onto nó --advance éigeantach"
+
+#: builtin/replay.c
+#, c-format
+msgid ""
+"some rev walking options will be overridden as '%s' bit in 'struct rev_info' "
+"will be forced"
+msgstr ""
+"cuirfear roinnt roghanna siúil rev a athshealbhú mar go gcuirfear giotán "
+"'%s' i 'struct rev_info' iallach"
+
+#: builtin/replay.c
+msgid "error preparing revisions"
+msgstr "earráid ag ullmhú athbhreith"
+
+#: builtin/replay.c
+msgid "replaying down to root commit is not supported yet!"
+msgstr "ní thacaítear le athsheinm síos go dtí tiomantas fréimhe fós!"
+
+#: builtin/replay.c
+msgid "replaying merge commits is not supported yet!"
+msgstr "ní thacaítear le gealltanna cumaisc athsheinm fós!"
+
+#: builtin/rerere.c
+msgid ""
+"git rerere [clear | forget <pathspec>... | diff | status | remaining | gc]"
+msgstr ""
+"git rerere [glan | déan dearmad<pathspec>... | diff | stádas | fágtha | gc]"
+
+#: builtin/rerere.c
+msgid "register clean resolutions in index"
+msgstr "rúin glan a chlárú san innéacs"
+
+#: builtin/rerere.c
+msgid "'git rerere forget' without paths is deprecated"
+msgstr "Tá 'git rerere dearmad' gan cosáin scothaithe"
+
+#: builtin/rerere.c
+#, c-format
+msgid "unable to generate diff for '%s'"
+msgstr "nach féidir éagsúlacht a ghiniúint do '%s'"
+
+#: builtin/reset.c
+msgid ""
+"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
+msgstr ""
+"git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]"
+
+#: builtin/reset.c
+msgid "git reset [-q] [<tree-ish>] [--] <pathspec>..."
+msgstr "git reset [-q] [<tree-ish>] [--] <pathspec>..."
+
+#: builtin/reset.c
+msgid ""
+"git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]"
+msgstr ""
+"git reset [-q] [--pathspec-from-file [--pathspec-file-nul]] [<tree-ish>]"
+
+#: builtin/reset.c
+msgid "git reset --patch [<tree-ish>] [--] [<pathspec>...]"
+msgstr "git reset --patch [<tree-ish>] [--] [<pathspec>...]"
+
+#: builtin/reset.c
+msgid "mixed"
+msgstr "measctha"
+
+#: builtin/reset.c
+msgid "soft"
+msgstr "bog"
+
+#: builtin/reset.c
+msgid "hard"
+msgstr "crua"
+
+#: builtin/reset.c
+msgid "merge"
+msgstr "cumaisc"
+
+#: builtin/reset.c
+msgid "keep"
+msgstr "coinnigh"
+
+#: builtin/reset.c
+msgid "You do not have a valid HEAD."
+msgstr "Níl CEANN bailí agat."
+
+#: builtin/reset.c
+msgid "Failed to find tree of HEAD."
+msgstr "Theip ar chrann HEAD a aimsiú."
+
+#: builtin/reset.c
+#, c-format
+msgid "Failed to find tree of %s."
+msgstr "Theip ar chrann %s a aimsiú."
+
+#: builtin/reset.c
+#, c-format
+msgid "HEAD is now at %s"
+msgstr "Tá HEAD anois ag %s"
+
+#: builtin/reset.c
+#, c-format
+msgid "Cannot do a %s reset in the middle of a merge."
+msgstr "Ní féidir athshocrú %s a dhéanamh i lár cumaisc."
+
+#: builtin/reset.c builtin/stash.c
+msgid "be quiet, only report errors"
+msgstr "bí ciúin, ní thuairiscigh ach earráidí"
+
+#: builtin/reset.c
+msgid "skip refreshing the index after reset"
+msgstr "scipeáil an t-innéacs a athnuachan tar éis"
+
+#: builtin/reset.c
+msgid "reset HEAD and index"
+msgstr "athshocraigh HEAD agus innéacs"
+
+#: builtin/reset.c
+msgid "reset only HEAD"
+msgstr "athshocraigh CEAD amháin"
+
+#: builtin/reset.c
+msgid "reset HEAD, index and working tree"
+msgstr "athshocraigh HEAD, innéacs agus crann oibre"
+
+#: builtin/reset.c
+msgid "reset HEAD but keep local changes"
+msgstr "athshocraigh HEAD ach coinnigh athruithe áiti"
+
+#: builtin/reset.c
+msgid "record only the fact that removed paths will be added later"
+msgstr ""
+"ní thaifeadadh ach an fíric go gcuirfear cosáin bainte leis níos déanaí"
+
+#: builtin/reset.c
+#, c-format
+msgid "Failed to resolve '%s' as a valid revision."
+msgstr "Theip ar '%s' a réiteach mar athbhreithniú bailí."
+
+#: builtin/reset.c
+#, c-format
+msgid "Failed to resolve '%s' as a valid tree."
+msgstr "Theip ar '%s' a réiteach mar chrann bailí."
+
+#: builtin/reset.c
+msgid "--mixed with paths is deprecated; use 'git reset -- <paths>' instead."
+msgstr ""
+"--mixed le cosáin imithe i léig; bain úsáid as 'git reset -- <cosáin>' ina "
+"ionad."
+
+#: builtin/reset.c
+#, c-format
+msgid "Cannot do %s reset with paths."
+msgstr "Ní féidir %s a athshocrú le cosáin."
+
+#: builtin/reset.c
+#, c-format
+msgid "%s reset is not allowed in a bare repository"
+msgstr "Ní cheadaítear athshocrú %s i stóras lom"
+
+#: builtin/reset.c
+msgid "Unstaged changes after reset:"
+msgstr "Athruithe gan stáitse tar éis athshocrú:"
+
+#: builtin/reset.c
+#, c-format
+msgid ""
+"It took %.2f seconds to refresh the index after reset. You can use\n"
+"'--no-refresh' to avoid this."
+msgstr ""
+"Thóg sé %.2f soicind an t-innéacs a athnuachan tar éis athshocrú. Is féidir "
+"leat úsáid a bhaint as\n"
+"'--no-refresh' chun é seo a sheachaint."
+
+#: builtin/reset.c
+#, c-format
+msgid "Could not reset index file to revision '%s'."
+msgstr "Ní fhéadfaí comhad innéacs a athshocrú chun athbhreithniú '%s'."
+
+#: builtin/reset.c
+msgid "Could not write new index file."
+msgstr "Ní fhéadfaí comhad innéacs nua a scríobh."
+
+#: builtin/rev-list.c
+#, c-format
+msgid "unable to get disk usage of %s"
+msgstr "nach féidir úsáid diosca de %s a fháil"
+
+#: builtin/rev-list.c
+#, c-format
+msgid "invalid value for '%s': '%s', the only allowed format is '%s'"
+msgstr "luach neamhbhailí do '%s': '%s', is é '%s' an t-aon fhormáid ceadaithe"
+
+#: builtin/rev-list.c
+msgid "-z option used with unsupported option"
+msgstr "-z rogha a úsáidtear le rogha gan tacaíocht"
+
+#: builtin/rev-list.c
+msgid "rev-list does not support display of notes"
+msgstr "ní thacaíonn rev-list le taispeáint nótaí"
+
+#: builtin/rev-list.c
+#, c-format
+msgid "marked counting and '%s' cannot be used together"
+msgstr "comhaireamh marcáilte agus ní féidir '%s' a úsáid le chéile"
+
+#: builtin/rev-parse.c
+msgid "git rev-parse --parseopt [<options>] -- [<args>...]"
+msgstr "git rev-parse --parseopt [<options>] -- [<args>...]"
+
+#: builtin/rev-parse.c
+msgid "keep the `--` passed as an arg"
+msgstr "coinnigh an `--` a rith mar arg"
+
+#: builtin/rev-parse.c
+msgid "stop parsing after the first non-option argument"
+msgstr "stop a pháirseáil tar éis an chéad argóint neamh-rogha"
+
+#: builtin/rev-parse.c
+msgid "output in stuck long form"
+msgstr "aschur i bhfoirm fhada greamaithe"
+
+#: builtin/rev-parse.c
+msgid "premature end of input"
+msgstr "deireadh roimh ré an ionchuir"
+
+#: builtin/rev-parse.c
+msgid "no usage string given before the `--' separator"
+msgstr "gan aon teaghrán úsáide a thugtar roimh an deighilteoir `--'"
+
+#: builtin/rev-parse.c
+msgid "missing opt-spec before option flags"
+msgstr "sonraíocht rogha in easnamh roimh bhratacha roghanna"
+
+#: builtin/rev-parse.c
+msgid "Needed a single revision"
+msgstr "Teastaíonn athbhreithniú amháin"
+
+#: builtin/rev-parse.c
+msgid ""
+"git rev-parse --parseopt [<options>] -- [<args>...]\n"
+" or: git rev-parse --sq-quote [<arg>...]\n"
+" or: git rev-parse [<options>] [<arg>...]\n"
+"\n"
+"Run \"git rev-parse --parseopt -h\" for more information on the first usage."
+msgstr ""
+"git rev-parse --parseopt [<options>] -- [<args>...]\n"
+" or: git rev-parse --sq-quote [<arg>...]\n"
+" or: git rev-parse [<options>] [<arg>...]\n"
+"\n"
+"Rith “git rev-parse --parseopt -h” le haghaidh tuilleadh faisnéise ar an "
+"gcéad úsáid."
+
+#: builtin/rev-parse.c
+msgid "--resolve-git-dir requires an argument"
+msgstr "Teastaíonn argóint ag teastáil ó --resolve-git-dir"
+
+#: builtin/rev-parse.c
+#, c-format
+msgid "not a gitdir '%s'"
+msgstr "ní ghearr '%s'"
+
+#: builtin/rev-parse.c
+msgid "--git-path requires an argument"
+msgstr "Teastaíonn argóint ag teastáil ó --git-path"
+
+#: builtin/rev-parse.c
+msgid "-n requires an argument"
+msgstr "Éilíonn -n argóint"
+
+#: builtin/rev-parse.c
+msgid "--path-format requires an argument"
+msgstr "Éilíonn --path-format argóint"
+
+#: builtin/rev-parse.c
+#, c-format
+msgid "unknown argument to --path-format: %s"
+msgstr "argóint anaithnid chuig --path-format: %s"
+
+#: builtin/rev-parse.c
+msgid "--default requires an argument"
+msgstr "Teastaíonn argóint ar --default"
+
+#: builtin/rev-parse.c
+msgid "--prefix requires an argument"
+msgstr "Teastaíonn argóint ar --prefix"
+
+#: builtin/rev-parse.c
+msgid "no object format specified"
+msgstr "aon fhormáid réada a shonra"
+
+#: builtin/rev-parse.c
+#, c-format
+msgid "unsupported object format: %s"
+msgstr "formáid réad gan tacaíocht: %s"
+
+#: builtin/rev-parse.c
+#, c-format
+msgid "unknown mode for --abbrev-ref: %s"
+msgstr "modh anaithnid do --abbrev-ref: %s"
+
+#: builtin/rev-parse.c setup.c
+msgid "this operation must be run in a work tree"
+msgstr "caithfear an oibríocht seo a reáchtáil i gcrann oibre"
+
+#: builtin/rev-parse.c
+msgid "Could not read the index"
+msgstr "Ní fhéadfaí an t-innéacs a léamh"
+
+#: builtin/rev-parse.c
+#, c-format
+msgid "unknown mode for --show-object-format: %s"
+msgstr "modh anaithnid do --show-object-format: %s"
+
+#: builtin/revert.c
+msgid ""
+"git revert [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] "
+"<commit>..."
+msgstr ""
+"git revert [--[no-]edit] [-n] [-m <parent-number>] [-s] [-S[<keyid>]] "
+"<commit>..."
+
+#: builtin/revert.c
+msgid "git revert (--continue | --skip | --abort | --quit)"
+msgstr "git revert (--continue | --skip | --abort | --quit)"
+
+#: builtin/revert.c
+msgid ""
+"git cherry-pick [--edit] [-n] [-m <parent-number>] [-s] [-x] [--ff]\n"
+" [-S[<keyid>]] <commit>..."
+msgstr ""
+"git cherry-pick [--edit] [-n] [-m <parent-number>] [-s] [-x] [--ff]\n"
+" [-S[<keyid>]] <commit>..."
+
+#: builtin/revert.c
+msgid "git cherry-pick (--continue | --skip | --abort | --quit)"
+msgstr "git cherry-pick (--continue | --skip | --abort | --quit)"
+
+#: builtin/revert.c
+#, c-format
+msgid "option `%s' expects a number greater than zero"
+msgstr "tá rogha `%s' ag súil go mbeidh uimhir níos mó ná nialas"
+
+#: builtin/revert.c
+#, c-format
+msgid "%s: %s cannot be used with %s"
+msgstr "%s: Ní féidir %s a úsáid le %s"
+
+#: builtin/revert.c
+msgid "end revert or cherry-pick sequence"
+msgstr "aisiompú deiridh nó seicheamh piocadh silíní"
+
+#: builtin/revert.c
+msgid "resume revert or cherry-pick sequence"
+msgstr "athosú ar ais nó seicheamh a phiocadh silíní"
+
+#: builtin/revert.c
+msgid "cancel revert or cherry-pick sequence"
+msgstr "seicheamh aisiompthe nó silíní a roghnú a chealú"
+
+#: builtin/revert.c
+msgid "skip current commit and continue"
+msgstr "scipeáil tiomantas reatha agus lean ar aghaidh"
+
+#: builtin/revert.c
+msgid "don't automatically commit"
+msgstr "ná tiomantas go huathoibríoch"
+
+#: builtin/revert.c
+msgid "edit the commit message"
+msgstr "athraigh an teachtaireacht tiomanta"
+
+#: builtin/revert.c
+msgid "parent-number"
+msgstr "uimhir tuismitheora"
+
+#: builtin/revert.c
+msgid "select mainline parent"
+msgstr "roghnaigh tuismitheoir príomh"
+
+#: builtin/revert.c
+msgid "merge strategy"
+msgstr "straitéis cumaisc"
+
+#: builtin/revert.c
+msgid "option for merge strategy"
+msgstr "rogha le haghaidh straitéis cumaisc"
+
+#: builtin/revert.c
+msgid "append commit name"
+msgstr "ainm tiomanta a chur leis"
+
+#: builtin/revert.c
+msgid "preserve initially empty commits"
+msgstr "gealltanais folamh a chaomhnú ar dt"
+
+#: builtin/revert.c
+msgid "allow commits with empty messages"
+msgstr "gealltanna a cheadú le teachtaireachtaí folamh"
+
+#: builtin/revert.c
+msgid "deprecated: use --empty=keep instead"
+msgstr "díscríofa: bain úsáid as --empty=keep ina ionad"
+
+#: builtin/revert.c
+msgid "use the 'reference' format to refer to commits"
+msgstr ""
+"bain úsáid as an bhformáid 'tagartha' chun tagairt a dhéanamh do ghealltanais"
+
+#: builtin/revert.c
+msgid "revert failed"
+msgstr "theip ar ais"
+
+#: builtin/revert.c
+msgid "cherry-pick failed"
+msgstr "theip ar an rogha silíní"
+
+#: builtin/rm.c
+msgid ""
+"git rm [-f | --force] [-n] [-r] [--cached] [--ignore-unmatch]\n"
+" [--quiet] [--pathspec-from-file=<file> [--pathspec-file-nul]]\n"
+" [--] [<pathspec>...]"
+msgstr ""
+"git rm [-f | --force] [-n] [-r] [--cached] [--neamh-mheaitseáilte]\n"
+" <file>[--quiet] [--pathspec-ó-comhad = [--pathspec-comhad-nul]]\n"
+" [--] [<pathspec>...]"
+
+#: builtin/rm.c
+msgid ""
+"the following file has staged content different from both the\n"
+"file and the HEAD:"
+msgid_plural ""
+"the following files have staged content different from both the\n"
+"file and the HEAD:"
+msgstr[0] ""
+"tá ábhar stáitse ag an gcomhad seo a leanas difriúil ón araon\n"
+"comhad agus an CEAD:"
+msgstr[1] ""
+"tá ábhar stáitseáilte difriúil idir an comhad agus\n"
+"an CEAD sna comhaid seo a leanas:"
+msgstr[2] ""
+"tá ábhar stáitseáilte difriúil idir an comhad agus \n"
+"an CEAD sna comhaid seo a leanas:"
+
+#: builtin/rm.c
+msgid ""
+"\n"
+"(use -f to force removal)"
+msgstr ""
+"\n"
+"(bain úsáid as -f chun a chur i bhfeidhm)"
+
+#: builtin/rm.c
+msgid "the following file has changes staged in the index:"
+msgid_plural "the following files have changes staged in the index:"
+msgstr[0] "tá athruithe céime san innéacs ag an gcomhad seo a leanas:"
+msgstr[1] "tá athruithe céimnithe san innéacs sna comhaid seo a leanas:"
+msgstr[2] "tá athruithe céimnithe san innéacs sna comhaid seo a leanas:"
+
+#: builtin/rm.c
+msgid ""
+"\n"
+"(use --cached to keep the file, or -f to force removal)"
+msgstr ""
+"\n"
+"(bain úsáid as --cached chun an comhad a choinneáil, nó -f chun a bhaint a "
+"chur i bhfeidhm)"
+
+#: builtin/rm.c
+msgid "the following file has local modifications:"
+msgid_plural "the following files have local modifications:"
+msgstr[0] "tá modhnuithe áitiúla sa chomhad seo a leanas:"
+msgstr[1] "tá modhnuithe áitiúla ar na comhaid seo a leanas:"
+msgstr[2] "tá modhnuithe áitiúla ar na comhaid seo a leanas:"
+
+#: builtin/rm.c
+msgid "do not list removed files"
+msgstr "ná liostáil comhaid a bhaintear"
+
+#: builtin/rm.c
+msgid "only remove from the index"
+msgstr "ach a bhaint as an innéacs"
+
+#: builtin/rm.c
+msgid "override the up-to-date check"
+msgstr "an seiceáil cothrom le dáta a chur ar"
+
+#: builtin/rm.c
+msgid "allow recursive removal"
+msgstr "cead a bhaint athfhillteach"
+
+#: builtin/rm.c
+msgid "exit with a zero status even if nothing matched"
+msgstr "imeacht le stádas nialasach fiú mura bhfuil aon rud comhoiriúnach"
+
+#: builtin/rm.c
+msgid "No pathspec was given. Which files should I remove?"
+msgstr "Níor tugadh aon bhealach. Cé na comhaid ba chóir dom a bhaint?"
+
+#: builtin/rm.c
+msgid "please stage your changes to .gitmodules or stash them to proceed"
+msgstr ""
+"cuir do chuid athruithe ar .gitmodules nó iad a stóráil chun dul ar aghaidh"
+
+#: builtin/rm.c
+#, c-format
+msgid "not removing '%s' recursively without -r"
+msgstr "gan '%s' a bhaint go athshlánach gan -r"
+
+#: builtin/rm.c
+#, c-format
+msgid "git rm: unable to remove %s"
+msgstr "git rm: ní féidir %s a bhaint"
+
+#: builtin/send-pack.c
+msgid ""
+"git send-pack [--mirror] [--dry-run] [--force]\n"
+" [--receive-pack=<git-receive-pack>]\n"
+" [--verbose] [--thin] [--atomic]\n"
+" [--[no-]signed | --signed=(true|false|if-asked)]\n"
+" [<host>:]<directory> (--all | <ref>...)"
+msgstr ""
+"git send-pack [--mirror] [--dry-run] [--force]\n"
+" [--receive-pack=<git-receive-pack>]\n"
+" [--verbose] [--thin] [--atomic]\n"
+" [--[no-]signed | --signed=(true|false|if-asked)]\n"
+" [<host>:]<directory> (--all | <ref>...)"
+
+#: builtin/send-pack.c
+msgid "remote name"
+msgstr "ainm iargúlta"
+
+#: builtin/send-pack.c
+msgid "push all refs"
+msgstr "brúigh gach ceann"
+
+#: builtin/send-pack.c
+msgid "use stateless RPC protocol"
+msgstr "prótacal RPC gan stáit a úsáid"
+
+#: builtin/send-pack.c
+msgid "read refs from stdin"
+msgstr "léigh refs ó stdin"
+
+#: builtin/send-pack.c
+msgid "print status from remote helper"
+msgstr "stádas priontála ó chúntóir cianda"
+
+#: builtin/shortlog.c
+msgid "git shortlog [<options>] [<revision-range>] [[--] <path>...]"
+msgstr "git shortlog [<options>] [<revision-range>] [[--]<path>...]"
+
+#: builtin/shortlog.c
+msgid "git log --pretty=short | git shortlog [<options>]"
+msgstr "git log --pretty=short | git shortlog [<options>]"
+
+#: builtin/shortlog.c
+msgid "using multiple --group options with stdin is not supported"
+msgstr "ní thacaítear le roghanna iolracha --group le stdin a úsáid"
+
+#: builtin/shortlog.c
+#, c-format
+msgid "using %s with stdin is not supported"
+msgstr "ní thacaítear le baint úsáide as %s le stdin"
+
+#: builtin/shortlog.c
+#, c-format
+msgid "unknown group type: %s"
+msgstr "cineál grúpa anaithnid: %s"
+
+#: builtin/shortlog.c
+msgid "group by committer rather than author"
+msgstr "grúpa de réir coimiteora seachas údar"
+
+#: builtin/shortlog.c
+msgid "sort output according to the number of commits per author"
+msgstr "aschur a shórtáil de réir líon na ngealltanais in aghaidh an údair"
+
+#: builtin/shortlog.c
+msgid "suppress commit descriptions, only provides commit count"
+msgstr "tuairiscí tiomanta a chur faoi chois, ní sholáthraíonn"
+
+#: builtin/shortlog.c
+msgid "show the email address of each author"
+msgstr "taispeáin seoladh ríomhphoist gach údair"
+
+#: builtin/shortlog.c
+msgid "<w>[,<i1>[,<i2>]]"
+msgstr "<w>[, <i1>[,<i2>]]"
+
+#: builtin/shortlog.c
+msgid "linewrap output"
+msgstr "aschur linewrap"
+
+#: builtin/shortlog.c
+msgid "field"
+msgstr "réimse"
+
+#: builtin/shortlog.c
+msgid "group by field"
+msgstr "grúpa de réir réimse"
+
+#: builtin/shortlog.c
+msgid "too many arguments given outside repository"
+msgstr "an iomarca argóintí a thugtar stóráil"
+
+#: builtin/show-branch.c
+msgid ""
+"git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
+" [--current] [--color[=<when>] | --no-color] [--sparse]\n"
+" [--more=<n> | --list | --independent | --merge-base]\n"
+" [--no-name | --sha1-name] [--topics]\n"
+" [(<rev> | <glob>)...]"
+msgstr ""
+"git show-branch [-a | --all] [-r | --remotes] [--topo-order | --date-order]\n"
+" [--current] [--color[=<when>] | --no-color] [--sparse]\n"
+" [--more=<n> | --list | --independent | --merge-base]\n"
+" [--no-name | --sha1-name] [--topics]\n"
+" [(<rev> | <glob>)...]"
+
+#: builtin/show-branch.c
+msgid "git show-branch (-g | --reflog)[=<n>[,<base>]] [--list] [<ref>]"
+msgstr "<ref>git show-branch (-g | --reflog) [= [<n>,]] [--liosta] [<base>]"
+
+#: builtin/show-branch.c
+#, c-format
+msgid "ignoring %s; cannot handle more than %d ref"
+msgid_plural "ignoring %s; cannot handle more than %d refs"
+msgstr[0] ""
+"ag déanamh neamhaird de %s; ní féidir níos mó ná %d tagairt a láimhseáil"
+msgstr[1] ""
+"ag déanamh neamhaird de %s; ní féidir níos mó ná %d tagairtí a láimhseáil"
+msgstr[2] ""
+"ag déanamh neamhaird de %s; ní féidir níos mó ná %d tagairtí a láimhseáil"
+
+#: builtin/show-branch.c
+#, c-format
+msgid "no matching refs with %s"
+msgstr "gan aon fhreagraí a mheaitseáil le %s"
+
+#: builtin/show-branch.c
+msgid "show remote-tracking and local branches"
+msgstr "taispeáint cianrianú agus brainsí áitiúla"
+
+#: builtin/show-branch.c
+msgid "show remote-tracking branches"
+msgstr "taispeáin brainsí cianrianaithe"
+
+#: builtin/show-branch.c
+msgid "color '*!+-' corresponding to the branch"
+msgstr "dath '*! +-' a fhreagraíonn don bhrainse"
+
+#: builtin/show-branch.c
+msgid "show <n> more commits after the common ancestor"
+msgstr "taispeáint <n>níos mó gealltanais tar éis an sinsear coiteann"
+
+#: builtin/show-branch.c
+msgid "synonym to more=-1"
+msgstr "comhchiallach le níos mó = -1"
+
+#: builtin/show-branch.c
+msgid "suppress naming strings"
+msgstr "teaghráin ainmniúcháin"
+
+#: builtin/show-branch.c
+msgid "include the current branch"
+msgstr "san áireamh an bhrainse reatha"
+
+#: builtin/show-branch.c
+msgid "name commits with their object names"
+msgstr "geallann ainm lena n-ainmneacha réad"
+
+#: builtin/show-branch.c
+msgid "show possible merge bases"
+msgstr "taispeáin bonn cumaisc féidear"
+
+#: builtin/show-branch.c
+msgid "show refs unreachable from any other ref"
+msgstr "taispeántais neamh-inrochtana ó aon tagairt eile"
+
+#: builtin/show-branch.c
+msgid "show commits in topological order"
+msgstr "gealltanna seó in ord topolaíoch"
+
+#: builtin/show-branch.c
+msgid "show only commits not on the first branch"
+msgstr "seó ní geallann ach ar an gcéad bhrainse"
+
+#: builtin/show-branch.c
+msgid "show merges reachable from only one tip"
+msgstr "cumaisc seó inrochtana ó chomhairle amháin"
+
+#: builtin/show-branch.c
+msgid "topologically sort, maintaining date order where possible"
+msgstr "a shórtáil topaiceach, ag coinneáil ord dáta nuair is féidir"
+
+#: builtin/show-branch.c
+msgid "<n>[,<base>]"
+msgstr "<n>[,<base>]"
+
+#: builtin/show-branch.c
+msgid "show <n> most recent ref-log entries starting at base"
+msgstr "taispeáin ion <n>trálacha ref-log is déanaí ag tosú ag an mbonn"
+
+#: builtin/show-branch.c
+msgid "no branches given, and HEAD is not valid"
+msgstr "aon bhrainsí a thugtar, agus níl HEAD bailí"
+
+#: builtin/show-branch.c
+msgid "--reflog option needs one branch name"
+msgstr "Teastaíonn ainm brainse amháin ag teastáil ó rogha --reflog"
+
+#: builtin/show-branch.c
+#, c-format
+msgid "only %d entry can be shown at one time."
+msgid_plural "only %d entries can be shown at one time."
+msgstr[0] "ní féidir ach %d iontráil a thaispeáint ag an am céanna."
+msgstr[1] "ní féidir ach %d iontráil a thaispeáint ag an am céanna."
+msgstr[2] "ní féidir ach %d iontráil a thaispeáint ag an am céanna."
+
+#: builtin/show-branch.c
+#, c-format
+msgid "no such ref %s"
+msgstr "aon tagairt den sórt sin %s"
+
+#: builtin/show-branch.c
+#, c-format
+msgid "cannot handle more than %d rev."
+msgid_plural "cannot handle more than %d revs."
+msgstr[0] "ní féidir níos mó ná %d luasghéarú a láimhseáil."
+msgstr[1] "ní féidir níos mó ná %d luasghéarú a láimhseáil."
+msgstr[2] "ní féidir níos mó ná %d luasghéarú a láimhseáil."
+
+#: builtin/show-branch.c
+#, c-format
+msgid "'%s' is not a valid ref."
+msgstr "Ní tagairt bailí é '%s'."
+
+#: builtin/show-branch.c
+#, c-format
+msgid "cannot find commit %s (%s)"
+msgstr "ní féidir teacht ar thiomantas %s (%s)"
+
+#: builtin/show-index.c
+msgid "hash-algorithm"
+msgstr "hais-algartam"
+
+#: builtin/show-index.c
+msgid "Unknown hash algorithm"
+msgstr "Algartam hash anaithnid"
+
+#: builtin/show-ref.c
+msgid ""
+"git show-ref [--head] [-d | --dereference]\n"
+" [-s | --hash[=<n>]] [--abbrev[=<n>]] [--branches] [--tags]\n"
+" [--] [<pattern>...]"
+msgstr ""
+"git show-ref [--head] [-d | --dereference]\n"
+" [-s | --hash[=<n>]] [--abbrev[=<n>]] [--branches] [--tags]\n"
+" [--] [<pattern>...]"
+
+#: builtin/show-ref.c
+msgid ""
+"git show-ref --verify [-q | --quiet] [-d | --dereference]\n"
+" [-s | --hash[=<n>]] [--abbrev[=<n>]]\n"
+" [--] [<ref>...]"
+msgstr ""
+"git show-ref --verify [-q | --quiet] [-d | --dereference]\n"
+" [-s | --hash[=<n>]] [--abbrev[=<n>]]\n"
+" [--] [<ref>...]"
+
+#: builtin/show-ref.c
+msgid "git show-ref --exclude-existing[=<pattern>]"
+msgstr "git show-ref --exclude-existing[=<pattern>]"
+
+#: builtin/show-ref.c
+msgid "git show-ref --exists <ref>"
+msgstr "git show-ref --exists <ref>"
+
+#: builtin/show-ref.c
+msgid "reference does not exist"
+msgstr "níl tagairt ann"
+
+#: builtin/show-ref.c
+msgid "failed to look up reference"
+msgstr "theip ort tagairt a lorg suas"
+
+#: builtin/show-ref.c
+msgid "only show tags (can be combined with --branches)"
+msgstr ""
+"taispeáin clibeanna amháin (is féidir iad a chomhcheangal le --branches)"
+
+#: builtin/show-ref.c
+msgid "only show branches (can be combined with --tags)"
+msgstr "ní thaispeáin ach brainsí (is féidir iad a chomhcheangal le --tags)"
+
+#: builtin/show-ref.c
+msgid "check for reference existence without resolving"
+msgstr "seiceáil chun tagartha a bheith ann gan réiteach"
+
+#: builtin/show-ref.c
+msgid "stricter reference checking, requires exact ref path"
+msgstr "seiceáil tagartha níos doichte, teastaíonn cosán tagartha"
+
+#: builtin/show-ref.c
+msgid "show the HEAD reference, even if it would be filtered out"
+msgstr "taispeáin tagairt HEAD, fiú dá ndéanfaí é a scagadh amach"
+
+#: builtin/show-ref.c
+msgid "dereference tags into object IDs"
+msgstr "clibeanna a dhíthreorú isteach in IDanna réad"
+
+#: builtin/show-ref.c
+msgid "only show SHA1 hash using <n> digits"
+msgstr "ní thaispeáin ach hais SHA1 ag úsáid <n> dhigit"
+
+#: builtin/show-ref.c
+msgid "do not print results to stdout (useful with --verify)"
+msgstr "ná priontáil torthaí chuig stdout (úsáideach le --verify)"
+
+#: builtin/show-ref.c
+msgid "show refs from stdin that aren't in local repository"
+msgstr "taispeáin airgeanna ó stdin nach bhfuil i stóras áitiúil"
+
+#: builtin/sparse-checkout.c
+msgid ""
+"git sparse-checkout (init | list | set | add | reapply | disable | check-"
+"rules) [<options>]"
+msgstr ""
+"git sparse-checkout (init | list | set | add | reapply | disable | check-"
+"rules) [<options>]"
+
+#: builtin/sparse-checkout.c
+msgid "this worktree is not sparse"
+msgstr "níl an crann oibre seo neamhchoitianta"
+
+#: builtin/sparse-checkout.c
+msgid "this worktree is not sparse (sparse-checkout file may not exist)"
+msgstr ""
+"níl an crann oibre seo neamhchoitianta (b'fhéidir nach bhfuil comhad "
+"seiceála neamhchoitianta ann)"
+
+#: builtin/sparse-checkout.c
+#, c-format
+msgid ""
+"directory '%s' contains untracked files, but is not in the sparse-checkout "
+"cone"
+msgstr ""
+"tá comhaid neamhrianaithe ag eolaire '%s', ach níl sé sa chón seiceála "
+"neamhchoitianta"
+
+#: builtin/sparse-checkout.c
+#, c-format
+msgid "failed to remove directory '%s'"
+msgstr "theip ar eolaire '%s' a bhaint"
+
+#: builtin/sparse-checkout.c
+msgid "failed to create directory for sparse-checkout file"
+msgstr "theip ar eolaire a chruthú do chomhad seiceála neamhchoitianta"
+
+#: builtin/sparse-checkout.c
+#, c-format
+msgid "unable to fdopen %s"
+msgstr "nach féidir %s a fdophríomhachtú"
+
+#: builtin/sparse-checkout.c
+msgid "failed to initialize worktree config"
+msgstr "theip orthu cumraíocht crann oibre a thionscnamh"
+
+#: builtin/sparse-checkout.c
+msgid "failed to modify sparse-index config"
+msgstr "theip orthu cumraíocht innéacs neamhchoitianta a mhodhnú"
+
+#: builtin/sparse-checkout.c
+msgid "initialize the sparse-checkout in cone mode"
+msgstr "an tseiceáil neamhchoitianta a thosú i mód cón"
+
+#: builtin/sparse-checkout.c
+msgid "toggle the use of a sparse index"
+msgstr "athsholáthar úsáid innéacs neamhchoitianta"
+
+#: builtin/sparse-checkout.c commit-graph.c midx-write.c sequencer.c
+#, c-format
+msgid "unable to create leading directories of %s"
+msgstr "nach féidir eolairí tosaigh de %s a chruthú"
+
+#: builtin/sparse-checkout.c
+#, c-format
+msgid "failed to open '%s'"
+msgstr "theip ar '%s' a oscailt"
+
+#: builtin/sparse-checkout.c
+#, c-format
+msgid "could not normalize path %s"
+msgstr "ní fhéadfaí cosán %s a normalú"
+
+#: builtin/sparse-checkout.c
+#, c-format
+msgid "unable to unquote C-style string '%s'"
+msgstr "nach féidir teaghrán '%s' i stíl C a dhíluachan"
+
+#: builtin/sparse-checkout.c
+msgid "unable to load existing sparse-checkout patterns"
+msgstr "in ann patrúin seiceála neamhchoitianta atá ann a luchtú"
+
+#: builtin/sparse-checkout.c
+msgid "existing sparse-checkout patterns do not use cone mode"
+msgstr "ní úsáideann patrúin seiceála neamhchoitianta atá ann cheana modh cón"
+
+#: builtin/sparse-checkout.c
+msgid "please run from the toplevel directory in non-cone mode"
+msgstr "rith ón eolaire topevel le do thoil i mód neamh-chón"
+
+#: builtin/sparse-checkout.c
+msgid "specify directories rather than patterns (no leading slash)"
+msgstr "eolairí a shonrú seachas patrúin (gan aon slash tosaigh)"
+
+#: builtin/sparse-checkout.c
+msgid ""
+"specify directories rather than patterns. If your directory starts with a "
+"'!', pass --skip-checks"
+msgstr ""
+"eolairí a shonrú seachas patrúin. Má thosaíonn d'eolaire le '!', pas --skip-"
+"checks"
+
+#: builtin/sparse-checkout.c
+msgid ""
+"specify directories rather than patterns. If your directory really has any "
+"of '*?[]\\' in it, pass --skip-checks"
+msgstr ""
+"eolairí a shonrú seachas patrúin. Má tá aon cheann de '* ag d'eolaire i "
+"ndáiríre? []\\ 'ann, pas --skip-checks"
+
+#: builtin/sparse-checkout.c
+#, c-format
+msgid ""
+"'%s' is not a directory; to treat it as a directory anyway, rerun with --"
+"skip-checks"
+msgstr ""
+"Ní eolaire é '%s'; chun é a chóireáil mar eolaire ar aon nós, athrith le --"
+"skip-checks"
+
+#: builtin/sparse-checkout.c
+#, c-format
+msgid ""
+"pass a leading slash before paths such as '%s' if you want a single file "
+"(see NON-CONE PROBLEMS in the git-sparse-checkout manual)."
+msgstr ""
+"téigh slasc tosaigh roimh chosáin mar '%s' más mian leat comhad amháin "
+"(féach FADHBANNA NEAMH-CONE sa lámhleabhar seiceála git-sparse-checkout)."
+
+#: builtin/sparse-checkout.c
+msgid "git sparse-checkout add [--skip-checks] (--stdin | <patterns>)"
+msgstr "git sparse-checkout add [--skip-checks] (--stdin | <patterns>)"
+
+#: builtin/sparse-checkout.c
+msgid ""
+"skip some sanity checks on the given paths that might give false positives"
+msgstr ""
+"scipeáil roinnt seiceálacha sláinte ar na cosáin a thugtar a d'fhéadfadh "
+"dearfacha bréagacha a"
+
+#: builtin/sparse-checkout.c
+msgid "read patterns from standard in"
+msgstr "léigh patrúin ó chaighdeán i"
+
+#: builtin/sparse-checkout.c
+msgid "no sparse-checkout to add to"
+msgstr "gan aon seiceáil neamhchoitianta le cur leis"
+
+#: builtin/sparse-checkout.c
+msgid ""
+"git sparse-checkout set [--[no-]cone] [--[no-]sparse-index] [--skip-checks] "
+"(--stdin | <patterns>)"
+msgstr ""
+"git sparse-checkout set [--[no-]cone] [--[no-]sparse-index] [--skip-checks] "
+"(--stdin | <patterns>)"
+
+#: builtin/sparse-checkout.c
+msgid "must be in a sparse-checkout to reapply sparsity patterns"
+msgstr ""
+"caithfidh sé a bheith i seiceáil neamhchoitianta chun patrúin éagsúla a "
+"athchur i bhfeidh"
+
+#: builtin/sparse-checkout.c
+msgid "error while refreshing working directory"
+msgstr "earráid agus tú ag athnuachan eolaire"
+
+#: builtin/sparse-checkout.c
+msgid ""
+"git sparse-checkout check-rules [-z] [--skip-checks][--[no-]cone] [--rules-"
+"file <file>]"
+msgstr ""
+"git sparse-checkout check-rules [-z] [--skip-checks][--[no-]cone] [--rules-"
+"file <file>]"
+
+#: builtin/sparse-checkout.c
+msgid "terminate input and output files by a NUL character"
+msgstr "comhaid ionchuir agus aschuir a fhoirceannadh le carachtar NUL"
+
+#: builtin/sparse-checkout.c
+msgid "when used with --rules-file interpret patterns as cone mode patterns"
+msgstr ""
+"nuair a úsáidtear é le --rules-file patrúin a léirmhíniú mar phatrúin mód"
+
+#: builtin/sparse-checkout.c
+msgid "use patterns in <file> instead of the current ones."
+msgstr "úsáid patrúin in <file>ionad na cinn reatha."
+
+#: builtin/stash.c
+msgid "git stash list [<log-options>]"
+msgstr "<log-options>liosta git stash []"
+
+#: builtin/stash.c
+msgid ""
+"git stash show [-u | --include-untracked | --only-untracked] [<diff-"
+"options>] [<stash>]"
+msgstr ""
+"git stash show [-u | --include-untracked | --only-untracked] [<diff-"
+"options>] [<stash>]"
+
+#: builtin/stash.c
+msgid "git stash drop [-q | --quiet] [<stash>]"
+msgstr "git stash drop [-q | --quiet] [<stash>]"
+
+#: builtin/stash.c
+msgid "git stash pop [--index] [-q | --quiet] [<stash>]"
+msgstr "git stash pop [--index] [-q | --quiet] [<stash>]"
+
+#: builtin/stash.c
+msgid "git stash apply [--index] [-q | --quiet] [<stash>]"
+msgstr "git stash apply [--index] [-q | --quiet] [<stash>]"
+
+#: builtin/stash.c
+msgid "git stash branch <branchname> [<stash>]"
+msgstr "git stash branch <branchname> [<stash>]"
+
+#: builtin/stash.c
+msgid "git stash store [(-m | --message) <message>] [-q | --quiet] <commit>"
+msgstr ""
+"git stash store [(-m | --teachtaireacht)<message>] [-q | --ciúin] <commit>"
+
+#: builtin/stash.c
+msgid ""
+"git stash [push [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q "
+"| --quiet]\n"
+" [-u | --include-untracked] [-a | --all] [(-m | --message) "
+"<message>]\n"
+" [--pathspec-from-file=<file> [--pathspec-file-nul]]\n"
+" [--] [<pathspec>...]]"
+msgstr ""
+"git stash [bhrú [-p | --patch] [-S | --stage] [-k | -- [no-] coinneáil "
+"innéacs] [-q | --ciúin]\n"
+" <message>[-u | --include-untracked] [-a | --all] [(-m | --teachtaireacht)]\n"
+" <file>[--pathspec-ó-comhad = [--pathspec-comhad-nul]]\n"
+" [--] [<pathspec>...]]"
+
+#: builtin/stash.c
+msgid ""
+"git stash save [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | "
+"--quiet]\n"
+" [-u | --include-untracked] [-a | --all] [<message>]"
+msgstr ""
+"git stash save [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | "
+"--quiet]\n"
+" [-u | --include-untracked] [-a | --all] [<message>]"
+
+#: builtin/stash.c
+msgid "git stash create [<message>]"
+msgstr "<message>git stash cruthaigh []"
+
+#: builtin/stash.c
+#, c-format
+msgid "'%s' is not a stash-like commit"
+msgstr "Ní gealltanas cosúil le stash é '%s'"
+
+#: builtin/stash.c
+#, c-format
+msgid "Too many revisions specified:%s"
+msgstr "Sonraítear an iomarca athbhreithnithe: %s"
+
+#: builtin/stash.c
+msgid "No stash entries found."
+msgstr "Níor aimsíodh aon iontrálacha stash."
+
+#: builtin/stash.c
+#, c-format
+msgid "%s is not a valid reference"
+msgstr "Ní tagairt bailí é %s"
+
+#: builtin/stash.c
+msgid "git stash clear with arguments is unimplemented"
+msgstr "níl git stash clear le hargóintí neamh-chur i bhfeidhm"
+
+#: builtin/stash.c
+#, c-format
+msgid ""
+"WARNING: Untracked file in way of tracked file! Renaming\n"
+" %s -> %s\n"
+" to make room.\n"
+msgstr ""
+"RABHADH: Comhad neamhrianaithe ar bhealach comhad rianaithe! Athainmniú\n"
+" %s -> %s\n"
+" chun seomra a dhéanamh.\n"
+
+#: builtin/stash.c
+msgid "cannot apply a stash in the middle of a merge"
+msgstr "ní féidir stash a chur i bhfeidhm i lár cumaisc"
+
+#: builtin/stash.c
+#, c-format
+msgid "could not generate diff %s^!."
+msgstr "ní fhéadfaí diff %s^ a ghiniúint!."
+
+#: builtin/stash.c
+msgid "conflicts in index. Try without --index."
+msgstr "coinbhleachtaí in innéacs. Bain triail as gan --index."
+
+#: builtin/stash.c
+msgid "could not save index tree"
+msgstr "ní fhéadfadh crann innéacs a shábháil"
+
+#: builtin/stash.c
+#, c-format
+msgid "Merging %s with %s"
+msgstr "Cumasc %s le %s"
+
+#: builtin/stash.c
+msgid "Index was not unstashed."
+msgstr "Ní raibh an t-innéacs gan stashed."
+
+#: builtin/stash.c
+msgid "could not restore untracked files from stash"
+msgstr "ní raibh in ann comhaid neamhrianaithe a chur ar ais ó stash"
+
+#: builtin/stash.c
+msgid "attempt to recreate the index"
+msgstr "iarracht an t-innéacs a athchruthú"
+
+#: builtin/stash.c
+#, c-format
+msgid "Dropped %s (%s)"
+msgstr "Scaoil %s (%s)"
+
+#: builtin/stash.c
+#, c-format
+msgid "%s: Could not drop stash entry"
+msgstr "%s: Ní fhéadfaí iontráil stash a scaoileadh"
+
+#: builtin/stash.c
+#, c-format
+msgid "'%s' is not a stash reference"
+msgstr "Ní tagairt stash é '%s'"
+
+#: builtin/stash.c
+msgid "The stash entry is kept in case you need it again."
+msgstr "Coinnítear an iontráil stash ar eagla go dteastaíonn sé uait arís."
+
+#: builtin/stash.c
+msgid "No branch name specified"
+msgstr "Níl aon ainm brainse sonraithe"
+
+#: builtin/stash.c
+msgid "failed to parse tree"
+msgstr "theip ar chrann a pháirseáil"
+
+#: builtin/stash.c
+msgid "failed to unpack trees"
+msgstr "theip ar chrainn a dhíphacáil"
+
+#: builtin/stash.c
+msgid "include untracked files in the stash"
+msgstr "comhaid neamhrianaithe san áireamh sa stash"
+
+#: builtin/stash.c
+msgid "only show untracked files in the stash"
+msgstr "ní thaispeánann ach comhaid neamhrianaithe sa stash"
+
+#: builtin/stash.c
+#, c-format
+msgid "Cannot update %s with %s"
+msgstr "Ní féidir %s a nuashonrú le %s"
+
+#: builtin/stash.c
+msgid "stash message"
+msgstr "teachtaireacht stash"
+
+#: builtin/stash.c
+msgid "\"git stash store\" requires one <commit> argument"
+msgstr "<commit>Éilíonn “git stash store” argóint amháin"
+
+#: builtin/stash.c
+msgid "No staged changes"
+msgstr "Gan aon athruithe céime"
+
+#: builtin/stash.c
+msgid "No changes selected"
+msgstr "Gan aon athruithe roghnaithe"
+
+#: builtin/stash.c
+msgid "You do not have the initial commit yet"
+msgstr "Níl an tiomantas tosaigh agat fós"
+
+#: builtin/stash.c
+msgid "Cannot save the current index state"
+msgstr "Ní féidir an staid innéacs reatha a shábháil"
+
+#: builtin/stash.c
+msgid "Cannot save the untracked files"
+msgstr "Ní féidir na comhaid neamhrianaithe a shábháil"
+
+#: builtin/stash.c
+msgid "Cannot save the current worktree state"
+msgstr "Ní féidir an stát crainn oibre reatha a shábháil"
+
+#: builtin/stash.c
+msgid "Cannot save the current staged state"
+msgstr "Ní féidir an stát stáitse reatha a shábháil"
+
+#: builtin/stash.c
+msgid "Cannot record working tree state"
+msgstr "Ní féidir stát crann oibre a thaifead"
+
+#: builtin/stash.c
+msgid "Can't use --patch and --include-untracked or --all at the same time"
+msgstr ""
+"Ní féidir --patch agus --include-untracked nó --all a úsáid ag an am céanna"
+
+#: builtin/stash.c
+msgid "Can't use --staged and --include-untracked or --all at the same time"
+msgstr ""
+"Ní féidir --staged agus --include-untracked nó --all a úsáid ag an am céanna"
+
+#: builtin/stash.c
+msgid "Did you forget to 'git add'?"
+msgstr "Ar ndearna tú dearmad 'git add'?"
+
+#: builtin/stash.c
+msgid "No local changes to save"
+msgstr "Níl aon athruithe áitiúla le sábháil"
+
+#: builtin/stash.c
+msgid "Cannot initialize stash"
+msgstr "Ní féidir stash a thionscnamh"
+
+#: builtin/stash.c
+msgid "Cannot save the current status"
+msgstr "Ní féidir an stádas reatha a shábháil"
+
+#: builtin/stash.c
+#, c-format
+msgid "Saved working directory and index state %s"
+msgstr "Eolaire oibre shábháilte agus staid innéacs %s"
+
+#: builtin/stash.c
+msgid "Cannot remove worktree changes"
+msgstr "Ní féidir athruithe crann oibre a bhaint"
+
+#: builtin/stash.c
+msgid "keep index"
+msgstr "coinnigh innéacs"
+
+#: builtin/stash.c
+msgid "stash staged changes only"
+msgstr "athruithe céimeádta stash amháin"
+
+#: builtin/stash.c
+msgid "stash in patch mode"
+msgstr "stash i mód paiste"
+
+#: builtin/stash.c
+msgid "quiet mode"
+msgstr "modh ciúin"
+
+#: builtin/stash.c
+msgid "include untracked files in stash"
+msgstr "comhaid neamhrianaithe a chur san áireamh i stash"
+
+#: builtin/stash.c
+msgid "include ignore files"
+msgstr "áireamh neamhaird a dhéanamh"
+
+#: builtin/stripspace.c
+msgid "skip and remove all lines starting with comment character"
+msgstr "scipeáil agus bain gach líne ag tosú le carachtar trácht"
+
+#: builtin/stripspace.c
+msgid "prepend comment character and space to each line"
+msgstr "carachtar tráchta agus spás a chur ar fáil chuig gach líne"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Expecting a full ref name, got %s"
+msgstr "Ag súil le hainm tagartha iomlán, fuair %s"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "could not get a repository handle for submodule '%s'"
+msgstr "ní fhéadfaí láimhseáil stór a fháil do fho-mhodúl '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid ""
+"could not look up configuration '%s'. Assuming this repository is its own "
+"authoritative upstream."
+msgstr ""
+"ní fhéadfaí cumraíocht '%s' a fheiceáil suas. Ag glacadh leis gurb é an stór "
+"seo a údarásach suas sruth féin."
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "No url found for submodule path '%s' in .gitmodules"
+msgstr "Níl aon url le haghaidh cosán fo-mhodúil '%s' i .gitmodules"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Entering '%s'\n"
+msgstr "Ag iontráil '%s'\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid ""
+"run_command returned non-zero status for %s\n"
+"."
+msgstr ""
+"thug run_command stádas neamh-nialas ar ais do %s.\n"
+"."
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid ""
+"run_command returned non-zero status while recursing in the nested "
+"submodules of %s\n"
+"."
+msgstr ""
+"d'fhill run_command stádas neamh-nialasach agus é ag athshlánú sna fo-"
+"mhodúil neadaithe de %s\n"
+"."
+
+#: builtin/submodule--helper.c
+msgid "suppress output of entering each submodule command"
+msgstr "cosc a chur ar aschur gach ordú fo-mhodúil a chur isteach"
+
+#: builtin/submodule--helper.c
+msgid "recurse into nested submodules"
+msgstr "athshlánú isteach i bhfo-mhodúil neadaithe"
+
+#: builtin/submodule--helper.c
+msgid "git submodule foreach [--quiet] [--recursive] [--] <command>"
+msgstr "git submodule foreach [--quiet] [--recursive] [--] <command>"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Failed to register url for submodule path '%s'"
+msgstr "Theip ar url a chlárú le haghaidh cosán fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Submodule '%s' (%s) registered for path '%s'\n"
+msgstr "Fo-mhodúl '%s' (%s) cláraithe le haghaidh cosán '%s'\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "warning: command update mode suggested for submodule '%s'\n"
+msgstr "rabhadh: modh nuashonraithe ordaithe a mholtar don fho-mhodúl '%s'\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Failed to register update mode for submodule path '%s'"
+msgstr "Theip ar mhodh nuashonraithe a chlárú do chonair fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+msgid "suppress output for initializing a submodule"
+msgstr "aschur a chur faoi chois chun fo-mhodúl a thosú"
+
+#: builtin/submodule--helper.c
+msgid "git submodule init [<options>] [<path>]"
+msgstr "git submodule init [<options>] [<path>]"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "no submodule mapping found in .gitmodules for path '%s'"
+msgstr ""
+"níl aon mhapáil fo-mhodúil le fáil i .gitmodules le haghaidh cosán '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "could not resolve HEAD ref inside the submodule '%s'"
+msgstr "ní fhéadfaí tagairt HEAD a réiteach taobh istigh den fho-mhodúl '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "failed to recurse into submodule '%s'"
+msgstr "theip ar athshlánú isteach i bhfo-mhodúl '%s'"
+
+#: builtin/submodule--helper.c
+msgid "suppress submodule status output"
+msgstr "aschur stádas fo-mhodúil a chur faoi cho"
+
+#: builtin/submodule--helper.c
+msgid ""
+"use commit stored in the index instead of the one stored in the submodule "
+"HEAD"
+msgstr ""
+"bain úsáid as tiomantas atá stóráilte san innéacs in ionad an ceann atá "
+"stóráilte sa fho-mhodúl HEAD"
+
+#: builtin/submodule--helper.c
+msgid "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
+msgstr "git submodule status [--quiet] [--cached] [--recursive] [<path>...]"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "* %s %s(blob)->%s(submodule)"
+msgstr "* %s %s (blob) -> %s (fo-mhodúl)"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "* %s %s(submodule)->%s(blob)"
+msgstr "* %s %s (fo-mhodúl) -> %s (blob)"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "%s"
+msgstr "%s"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "couldn't hash object from '%s'"
+msgstr "ní fhéadfaí réad hash ó '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "unexpected mode %o"
+msgstr "modh gan choinne %o"
+
+#: builtin/submodule--helper.c
+msgid "use the commit stored in the index instead of the submodule HEAD"
+msgstr ""
+"bain úsáid as an gealltanas atá stóráilte san innéacs in ionad an fho-mhodúl "
+"HEAD"
+
+#: builtin/submodule--helper.c
+msgid "compare the commit in the index with that in the submodule HEAD"
+msgstr ""
+"comparáid a dhéanamh idir an tiomantas san innéacs leis an bhfo-mhodúl HEAD"
+
+#: builtin/submodule--helper.c
+msgid "skip submodules with 'ignore_config' value set to 'all'"
+msgstr "scipeáil fo-mhodúil le luach 'ignore_config' socraithe go 'go léir'"
+
+#: builtin/submodule--helper.c
+msgid "limit the summary size"
+msgstr "teorainn a chur leis an méid achoimre"
+
+#: builtin/submodule--helper.c
+msgid "git submodule summary [<options>] [<commit>] [--] [<path>]"
+msgstr "git achoimre fo-mhodúil [<options>] [<commit>] [--] [<path>]"
+
+#: builtin/submodule--helper.c
+msgid "could not fetch a revision for HEAD"
+msgstr "ní fhéadfaí athbhreithniú a fháil do HEAD"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Synchronizing submodule url for '%s'\n"
+msgstr "Url fo-mhodúil a shioncrónú do '%s'\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "failed to register url for submodule path '%s'"
+msgstr "theip ar url a chlárú le haghaidh cosán fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "failed to update remote for submodule '%s'"
+msgstr "theip ar iargúlta a nuashonrú do fho-mhodúl '%s'"
+
+#: builtin/submodule--helper.c
+msgid "suppress output of synchronizing submodule url"
+msgstr "aschur url fo-mhodúil sioncrónaithe a chur faoi chois"
+
+#: builtin/submodule--helper.c
+msgid "git submodule sync [--quiet] [--recursive] [<path>]"
+msgstr "git sioncrónú fo-mhodúil [--quiet] [--recursive] [<path>]"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid ""
+"Submodule work tree '%s' contains a .git directory. This will be replaced "
+"with a .git file by using absorbgitdirs."
+msgstr ""
+"Tá eolair .git i gcrann oibre fo-mhodúil '%s'. Cuirfear comhad .git in ionad "
+"seo trí absorbgitdirs a úsáid."
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid ""
+"Submodule work tree '%s' contains local modifications; use '-f' to discard "
+"them"
+msgstr ""
+"Tá modhnuithe áitiúla i gcrann oibre fo-mhodúil '%s'; bain úsáid as '-f' "
+"chun iad a dhiúscairt"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Cleared directory '%s'\n"
+msgstr "Glanadh an eolaire '%s'\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Could not remove submodule work tree '%s'\n"
+msgstr "Níor féidir crann oibre fo-mhodúil '%s' a bhaint\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "could not create empty submodule directory %s"
+msgstr "ní fhéadfaí eolaire fo-mhodúil folamh %s a chruthú"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Submodule '%s' (%s) unregistered for path '%s'\n"
+msgstr "Fo-mhodúl '%s' (%s) neamhchláraithe le haghaidh cosán '%s'\n"
+
+#: builtin/submodule--helper.c
+msgid "remove submodule working trees even if they contain local changes"
+msgstr "crainn oibre fo-mhodúil a bhaint fiú má tá athruithe áitiúla iontu"
+
+#: builtin/submodule--helper.c
+msgid "unregister all submodules"
+msgstr "gach fo-mhodúl a dhíchlárú"
+
+#: builtin/submodule--helper.c
+msgid ""
+"git submodule deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
+msgstr ""
+"git fo-mhodúil deinit [--quiet] [-f | --force] [--all | [--] [<path>...]]"
+
+#: builtin/submodule--helper.c
+msgid "Use '--all' if you really want to deinitialize all submodules"
+msgstr "Úsáid '--all' más mian leat gach fo-mhodúl a dhíthionsú i ndáiríre"
+
+#: builtin/submodule--helper.c
+msgid ""
+"An alternate computed from a superproject's alternate is invalid.\n"
+"To allow Git to clone without an alternate in such a case, set\n"
+"submodule.alternateErrorStrategy to 'info' or, equivalently, clone with\n"
+"'--reference-if-able' instead of '--reference'."
+msgstr ""
+"Tá malartach arna ríomh ó mhalartach sárthionscadail neamhbhailí.\n"
+"Chun ligean Git a chlónú gan malartach i gcás den sórt sin, socraigh\n"
+"submodule.alternateErrorStrategy chun 'faisnéis' nó, go coibhéiseach, clónú "
+"le\n"
+"'--reference-if-able' in ionad '--reference'."
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "could not get a repository handle for gitdir '%s'"
+msgstr "ní fhéadfaí láimhseáil stór a fháil do gitdir '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "submodule '%s' cannot add alternate: %s"
+msgstr "ní féidir le fo-mhodúl '%s' malartach a chur leis: %s"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Value '%s' for submodule.alternateErrorStrategy is not recognized"
+msgstr "Luach '%s' le haghaidh submodule.alternateErrorStrategy ní aithnítear"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Value '%s' for submodule.alternateLocation is not recognized"
+msgstr "Luach '%s' le haghaidh submodule.alternateLocation ní aithnítear"
+
+#: builtin/submodule--helper.c submodule.c
+#, c-format
+msgid "refusing to create/use '%s' in another submodule's git dir"
+msgstr "diúltú '%s' a chruthú/úsáid i git dir fo-mhodúil eile"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "directory not empty: '%s'"
+msgstr "eolaire nach folamh: '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "clone of '%s' into submodule path '%s' failed"
+msgstr "theip ar chlón '%s' isteach i gcosán fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "could not get submodule directory for '%s'"
+msgstr "ní fhéadfaí eolaire fo-mhodúil a fháil do '%s'"
+
+#: builtin/submodule--helper.c
+msgid "alternative anchor for relative paths"
+msgstr "ancaire malartach do chonair choibhneasta"
+
+#: builtin/submodule--helper.c
+msgid "where the new submodule will be cloned to"
+msgstr "áit a gclónófar an fo-mhodúl nua"
+
+#: builtin/submodule--helper.c
+msgid "name of the new submodule"
+msgstr "ainm an fho-mhodúil nua"
+
+#: builtin/submodule--helper.c
+msgid "url where to clone the submodule from"
+msgstr "url cá háit ar féidir an fo-mhodúl a chlónáil"
+
+#: builtin/submodule--helper.c
+msgid "depth for shallow clones"
+msgstr "doimhneacht do chlóin éadomhain"
+
+#: builtin/submodule--helper.c
+msgid "force cloning progress"
+msgstr "dul chun cinn clónaithe fórsa"
+
+#: builtin/submodule--helper.c
+msgid "disallow cloning into non-empty directory"
+msgstr "clónú a dhícheadú isteach i eolaire neamh-folamh"
+
+#: builtin/submodule--helper.c
+msgid ""
+"git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
+"<repository>] [--name <name>] [--depth <depth>] [--single-branch] [--filter "
+"<filter-spec>] --url <url> --path <path>"
+msgstr ""
+"git submodule--helper clone [--prefix=<path>] [--quiet] [--reference "
+"<repository>] [--name <name>] [--depth <depth>] [--single-branch] [--filter "
+"<filter-spec>] --url <url> --path <path>"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Invalid update mode '%s' configured for submodule path '%s'"
+msgstr ""
+"Modh nuashonraithe neamhbhailí '%s' cumraithe le haghaidh cosán fo-mhodúil "
+"'%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Submodule path '%s' not initialized"
+msgstr "Níor thosaigh cosán fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+msgid "Maybe you want to use 'update --init'?"
+msgstr "B'fhéidir gur mhaith leat 'update --init' a úsáid?"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Skipping unmerged submodule %s"
+msgstr "Fo-mhodúl neamh-mheánaithe %s a scipeáil"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Skipping submodule '%s'"
+msgstr "Fo-mhodúl '%s' a scipeáil"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "cannot clone submodule '%s' without a URL"
+msgstr "ní féidir le fo-mhodúl '%s' a chlónú gan URL"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Failed to clone '%s'. Retry scheduled"
+msgstr "Theip ar chlónáil '%s'. Déan iarracht sceidealta"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Failed to clone '%s' a second time, aborting"
+msgstr "Theip ar chlónáil '%s' an dara huair, ag cur isteach"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Unable to checkout '%s' in submodule path '%s'"
+msgstr "Ní féidir '%s' a sheiceáil i gcosán fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Unable to rebase '%s' in submodule path '%s'"
+msgstr "Ní féidir '%s' a athbhunú i gcosán fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Unable to merge '%s' in submodule path '%s'"
+msgstr "Ní féidir '%s' a chumasc i gcosán fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Execution of '%s %s' failed in submodule path '%s'"
+msgstr "Theip ar fhorghníomhú '%s %s' i gcosán fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Submodule path '%s': checked out '%s'\n"
+msgstr "Conair fo-mhodúil '%s': seiceáil amach '%s'\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Submodule path '%s': rebased into '%s'\n"
+msgstr "Conair fo-mhodúil '%s': athbhunaithe go '%s'\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Submodule path '%s': merged in '%s'\n"
+msgstr "Conair fo-mhodúil '%s': cumasc i '%s'\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Submodule path '%s': '%s %s'\n"
+msgstr "Conair fo-mhodúil '%s': '%s %s'\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Unable to fetch in submodule path '%s'; trying to directly fetch %s:"
+msgstr ""
+"Ní féidir cosán fo-mhodúil '%s' a fháil; ag iarraidh %s a fháil go díreach:"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid ""
+"Fetched in submodule path '%s', but it did not contain %s. Direct fetching "
+"of that commit failed."
+msgstr ""
+"Faightear i gcosán fo-mhodúil '%s', ach ní raibh %s ann. Theip ar an "
+"tiomantas sin a thógáil go díreach."
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "could not initialize submodule at path '%s'"
+msgstr "ní fhéadfaí fo-mhodúl a thosú ag cosán '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid ""
+"Submodule (%s) branch configured to inherit branch from superproject, but "
+"the superproject is not on any branch"
+msgstr ""
+"Brainse fo-mhodúil (%s) atá cumraithe chun brainse a oidhreacht ó "
+"sárthionscadal, ach níl an sárthionscadal ar aon bhrainse"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Unable to find current revision in submodule path '%s'"
+msgstr "Ní féidir an t-athbhreithniú reatha a fháil i gcosán fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Unable to fetch in submodule path '%s'"
+msgstr "Ní féidir le cosán fo-mhodúil '%s' a fháil"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Unable to find %s revision in submodule path '%s'"
+msgstr "Ní féidir athbhreithniú %s a aimsiú i gcosán fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Failed to recurse into submodule path '%s'"
+msgstr "Theip ar athshlánú isteach i gcosán fo-mhodúil '%s'"
+
+#: builtin/submodule--helper.c
+msgid "force checkout updates"
+msgstr "nuashonruithe seiceála de"
+
+#: builtin/submodule--helper.c
+msgid "initialize uninitialized submodules before update"
+msgstr "fo-mhodúil neamhthosaithe a thosú roimh an nuashonrú"
+
+#: builtin/submodule--helper.c
+msgid "use SHA-1 of submodule's remote tracking branch"
+msgstr "úsáid SHA-1 de bhrainse cianrianaithe an fho-mhodúil"
+
+#: builtin/submodule--helper.c
+msgid "traverse submodules recursively"
+msgstr "fo-mhodúil a thrasú go athshlánach"
+
+#: builtin/submodule--helper.c
+msgid "don't fetch new objects from the remote site"
+msgstr "ná faigh rudaí nua ón suíomh iargúlta"
+
+#: builtin/submodule--helper.c
+msgid "use the 'checkout' update strategy (default)"
+msgstr "úsáid an straitéis nuashonraithe 'tseiceáil' (réamhshocraithe)"
+
+#: builtin/submodule--helper.c
+msgid "use the 'merge' update strategy"
+msgstr "úsáid an straitéis nuashonraithe 'cumaisc'"
+
+#: builtin/submodule--helper.c
+msgid "use the 'rebase' update strategy"
+msgstr "bain úsáid as an straitéis nuashonraithe 'rebase'"
+
+#: builtin/submodule--helper.c
+msgid "create a shallow clone truncated to the specified number of revisions"
+msgstr ""
+"clón éadomhain a chruthú a ghearrtar go dtí an líon sonraithe athbhreithnithe"
+
+#: builtin/submodule--helper.c
+msgid "parallel jobs"
+msgstr "poist chomhthreomhara"
+
+#: builtin/submodule--helper.c
+msgid "whether the initial clone should follow the shallow recommendation"
+msgstr "cibé an chóir don chlón tosaigh an moladh éadrom a leanú"
+
+#: builtin/submodule--helper.c
+msgid "don't print cloning progress"
+msgstr "ná déan dul chun cinn clónaithe a phriontáil"
+
+#: builtin/submodule--helper.c
+msgid "disallow cloning into non-empty directory, implies --init"
+msgstr ""
+"clónú a dhícheadú isteach i eolaire neamh-folamh, tugann le tuiscint --init"
+
+#: builtin/submodule--helper.c
+msgid ""
+"git submodule [--quiet] update [--init [--filter=<filter-spec>]] [--remote] "
+"[-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-"
+"shallow] [--reference <repository>] [--recursive] [--[no-]single-branch] "
+"[--] [<path>...]"
+msgstr ""
+"git submodule [--quiet] update [--init [--filter=<filter-spec>]] [--remote] "
+"[-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-"
+"shallow] [--reference <repository>] [--recursive] [--[no-]single-branch] "
+"[--] [<path>...]"
+
+#: builtin/submodule--helper.c submodule.c
+msgid "Failed to resolve HEAD as a valid ref."
+msgstr "Theip ar HEAD a réiteach mar thagartha bailí."
+
+#: builtin/submodule--helper.c
+msgid "git submodule absorbgitdirs [<options>] [<path>...]"
+msgstr "git submodule absorbgitdirs [<options>] [<path>...]"
+
+#: builtin/submodule--helper.c
+msgid "suppress output for setting url of a submodule"
+msgstr "aschur a chur faoi chois chun url fo-mhodúil a shocrú"
+
+#: builtin/submodule--helper.c
+msgid "git submodule set-url [--quiet] <path> <newurl>"
+msgstr "git submodule set-url [--quiet] <path> <newurl>"
+
+#: builtin/submodule--helper.c
+msgid "set the default tracking branch to master"
+msgstr "socraigh an mbrainse rianaithe réamhshocraithe chun"
+
+#: builtin/submodule--helper.c
+msgid "set the default tracking branch"
+msgstr "socraigh an brainse rianaithe réamhshoc"
+
+#: builtin/submodule--helper.c
+msgid "git submodule set-branch [-q|--quiet] (-d|--default) <path>"
+msgstr "git submodule set-branch [-q|--quiet] (-d|--default) <path>"
+
+#: builtin/submodule--helper.c
+msgid "git submodule set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
+msgstr "git submodule set-branch [-q|--quiet] (-b|--branch) <branch> <path>"
+
+#: builtin/submodule--helper.c
+msgid "--branch or --default required"
+msgstr "--branch nó --default ag teastáil"
+
+#: builtin/submodule--helper.c
+msgid "print only error messages"
+msgstr "teachtaireachtaí earráide amháin a phrion"
+
+#: builtin/submodule--helper.c
+msgid "force creation"
+msgstr "cruthú fórsa"
+
+#: builtin/submodule--helper.c
+msgid "show whether the branch would be created"
+msgstr "taispeáint an cruthófaí an mbrainse"
+
+#: builtin/submodule--helper.c
+msgid ""
+"git submodule--helper create-branch [-f|--force] [--create-reflog] [-q|--"
+"quiet] [-t|--track] [-n|--dry-run] <name> <start-oid> <start-name>"
+msgstr ""
+"git submodule--helper create-branch [-f|--force] [--create-reflog] [-q|--"
+"quiet] [-t|--track] [-n|--dry-run] <name> <start-oid> <start-name>"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "creating branch '%s'"
+msgstr "ag cruthú brainse '%s'"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Adding existing repo at '%s' to the index\n"
+msgstr "Ag cur repo atá ann cheana ag '%s' leis an innéacs\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "'%s' already exists and is not a valid git repo"
+msgstr "Tá '%s' ann cheana féin agus ní repo git bailí é"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "A git directory for '%s' is found locally with remote(s):\n"
+msgstr "Faightear eolaire git le haghaidh '%s' go háitiúil le cianda(í):\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid ""
+"If you want to reuse this local git directory instead of cloning again from\n"
+" %s\n"
+"use the '--force' option. If the local git directory is not the correct "
+"repo\n"
+"or you are unsure what this means choose another name with the '--name' "
+"option."
+msgstr ""
+"Más mian leat an eolaire git áitiúil seo a athúsáid in ionad clónú arís ó\n"
+" %s\n"
+"bain úsáid as an rogha '--force'. Mura bhfuil an t-eolaire git áitiúil an "
+"repo ceart\n"
+"nó níl tú cinnte cad a chiallaíonn sé seo roghnaigh ainm eile leis an rogha "
+"'--name'."
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Reactivating local git directory for submodule '%s'\n"
+msgstr "Eolaire git áitiúil a athghníomhachtú do fho-mhodúl '%s'\n"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "unable to checkout submodule '%s'"
+msgstr "ní féidir le fo-mhodúl '%s' a sheiceáil"
+
+#: builtin/submodule--helper.c
+msgid "please make sure that the .gitmodules file is in the working tree"
+msgstr "déan cinnte go bhfuil an comhad .gitmodules sa chrann oibre"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Failed to add submodule '%s'"
+msgstr "Theip ar fho-mhodúl '%s' a chur leis"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "Failed to register submodule '%s'"
+msgstr "Theip ar fho-mhodúl '%s' a chlárú"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "'%s' already exists in the index"
+msgstr "Tá '%s' ann cheana féin san innéacs"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "'%s' already exists in the index and is not a submodule"
+msgstr "Tá '%s' ann cheana féin san innéacs agus ní fo-mhodúl é"
+
+#: builtin/submodule--helper.c read-cache.c
+#, c-format
+msgid "'%s' does not have a commit checked out"
+msgstr "Níl tiomantas seiceáilte ag '%s'"
+
+#: builtin/submodule--helper.c
+msgid "branch of repository to add as submodule"
+msgstr "brainse an stór le cur mar fho-mhodúl"
+
+#: builtin/submodule--helper.c
+msgid "allow adding an otherwise ignored submodule path"
+msgstr "ligean cosán fo-mhodúil a neamhaird a chur leis"
+
+#: builtin/submodule--helper.c
+msgid "borrow the objects from reference repositories"
+msgstr "iasacht na rudaí ó stórais tagartha"
+
+#: builtin/submodule--helper.c
+msgid ""
+"sets the submodule's name to the given string instead of defaulting to its "
+"path"
+msgstr ""
+"socraíonn ainm an fho-mhodúil don teaghrán a thugtar in ionad réamhshocrú ar "
+"a chosán"
+
+#: builtin/submodule--helper.c
+msgid "git submodule add [<options>] [--] <repository> [<path>]"
+msgstr "git submodule add [<options>] [--] <repository> [<path>]"
+
+#: builtin/submodule--helper.c
+msgid "Relative path can only be used from the toplevel of the working tree"
+msgstr "Ní féidir cosán coibhneasta a úsáid ach ó bharr an chrainn oibre"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "repo URL: '%s' must be absolute or begin with ./|../"
+msgstr "repo URL: caithfidh '%s' a bheith iomlán nó tosú leis. /| .. /"
+
+#: builtin/submodule--helper.c
+#, c-format
+msgid "'%s' is not a valid submodule name"
+msgstr "Ní ainm bailí fo-mhodúil é '%s'"
+
+#: builtin/submodule--helper.c
+msgid "git submodule--helper <command>"
+msgstr "git submodule--helper <command>"
+
+#: builtin/symbolic-ref.c
+msgid "git symbolic-ref [-m <reason>] <name> <ref>"
+msgstr "git symbolic-ref [-m <reason>] <name> <ref>"
+
+#: builtin/symbolic-ref.c
+msgid "git symbolic-ref [-q] [--short] [--no-recurse] <name>"
+msgstr "git symbolic-ref [-q] [--short] [--no-recurse] <name>"
+
+#: builtin/symbolic-ref.c
+msgid "git symbolic-ref --delete [-q] <name>"
+msgstr "git symbolic-ref --delete [-q] <name>"
+
+#: builtin/symbolic-ref.c
+msgid "suppress error message for non-symbolic (detached) refs"
+msgstr ""
+"teachtaireacht earráide a chur faoi chois le haghaidh tuairimí neamh-"
+"shiombalacha"
+
+#: builtin/symbolic-ref.c
+msgid "delete symbolic ref"
+msgstr "scrios tagairt siombalach"
+
+#: builtin/symbolic-ref.c
+msgid "shorten ref output"
+msgstr "aschur tagairt a ghiorrú"
+
+#: builtin/symbolic-ref.c
+msgid "recursively dereference (default)"
+msgstr "dereference athshlánach (réamhshocraithe)"
+
+#: builtin/symbolic-ref.c builtin/update-ref.c
+msgid "reason"
+msgstr "cúis"
+
+#: builtin/symbolic-ref.c builtin/update-ref.c
+msgid "reason of the update"
+msgstr "cúis an nuashonraithe"
+
+#: builtin/tag.c
+msgid ""
+"git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] [-e]\n"
+" [(--trailer <token>[(=|:)<value>])...]\n"
+" <tagname> [<commit> | <object>]"
+msgstr ""
+"git tag [-a | -s | -u <key-id>] [-f] [-m <msg> | -F <file>] [-e]\n"
+" [(--trailer <token>[(=|:)<value>])...]\n"
+" <tagname> [<commit> | <object>]"
+
+#: builtin/tag.c
+msgid "git tag -d <tagname>..."
+msgstr "git tag -d <tagname>..."
+
+#: builtin/tag.c
+msgid ""
+"git tag [-n[<num>]] -l [--contains <commit>] [--no-contains <commit>]\n"
+" [--points-at <object>] [--column[=<options>] | --no-column]\n"
+" [--create-reflog] [--sort=<key>] [--format=<format>]\n"
+" [--merged <commit>] [--no-merged <commit>] [<pattern>...]"
+msgstr ""
+"<commit>tag git [-n [<num>]] -l [--conté] [--no-conté<commit>]\n"
+" <options>[--points-ag<object>] [--column [=] | --no-column]\n"
+" <key><format>[--create-reflog] [--sort=] [--format =]\n"
+" <pattern>[--cumaisc<commit>] [--no-cumaisc] [...<commit>]"
+
+#: builtin/tag.c
+msgid "git tag -v [--format=<format>] <tagname>..."
+msgstr "<format><tagname>tag git -v [--format =]..."
+
+#: builtin/tag.c
+#, c-format
+msgid "tag '%s' not found."
+msgstr "níor aimsíodh tag '%s'."
+
+#: builtin/tag.c
+#, c-format
+msgid "Deleted tag '%s' (was %s)\n"
+msgstr "Clib scriosta '%s' (bhí %s)\n"
+
+#: builtin/tag.c
+#, c-format
+msgid ""
+"\n"
+"Write a message for tag:\n"
+" %s\n"
+"Lines starting with '%s' will be ignored.\n"
+msgstr ""
+"\n"
+"Scríobh teachtaireacht don chlib:\n"
+" %s\n"
+"Déanfar neamhaird ar línte a thosaíonn le '%s'.\n"
+
+#: builtin/tag.c
+#, c-format
+msgid ""
+"\n"
+"Write a message for tag:\n"
+" %s\n"
+"Lines starting with '%s' will be kept; you may remove them yourself if you "
+"want to.\n"
+msgstr ""
+"\n"
+"Scríobh teachtaireacht don chlib:\n"
+" %s\n"
+"Coinneofar línte a thosaíonn le '%s'; féadfaidh tú iad a bhaint féin más "
+"mian leat.\n"
+
+#: builtin/tag.c
+msgid "unable to sign the tag"
+msgstr "in ann an chlib a shíniú"
+
+#: builtin/tag.c
+#, c-format
+msgid ""
+"You have created a nested tag. The object referred to by your new tag is\n"
+"already a tag. If you meant to tag the object that it points to, use:\n"
+"\n"
+"\tgit tag -f %s %s^{}"
+msgstr ""
+"Tá clib neadaithe cruthaithe agat. Is é an réad dá dtagraíonn do chlib nua\n"
+"clib cheana féin. Má bhí sé i gceist agat an réad a thugann sé in iúl dó a "
+"chlibeáil, bain úsáid as:\n"
+"\n"
+" clib git -f %s %s^ {}"
+
+#: builtin/tag.c
+msgid "bad object type."
+msgstr "droch-chineál réad."
+
+#: builtin/tag.c
+msgid "no tag message?"
+msgstr "gan aon teachtaireacht clib?"
+
+#: builtin/tag.c
+#, c-format
+msgid "The tag message has been left in %s\n"
+msgstr "Tá an teachtaireacht clib fágtha i %s\n"
+
+#: builtin/tag.c
+msgid "list tag names"
+msgstr "ainmneacha clibeanna liosta"
+
+#: builtin/tag.c
+msgid "print <n> lines of each tag message"
+msgstr "<n>línte priontála de gach teachtaireacht clib"
+
+#: builtin/tag.c
+msgid "delete tags"
+msgstr "clibeanna a scriosadh"
+
+#: builtin/tag.c
+msgid "verify tags"
+msgstr "clibeanna a fíorú"
+
+#: builtin/tag.c
+msgid "Tag creation options"
+msgstr "Roghanna cruthaithe clibeanna"
+
+#: builtin/tag.c
+msgid "annotated tag, needs a message"
+msgstr "clib anótáilte, teastaíonn teachtaireacht"
+
+#: builtin/tag.c
+msgid "tag message"
+msgstr "teachtaireacht tag"
+
+#: builtin/tag.c
+msgid "force edit of tag message"
+msgstr "eagarthóireacht fórsa ar theachtaireacht"
+
+#: builtin/tag.c
+msgid "annotated and GPG-signed tag"
+msgstr "clib anótáilte agus sínithe GPS"
+
+#: builtin/tag.c
+msgid "use another key to sign the tag"
+msgstr "bain úsáid as eochair eile chun an chlib a shíniú"
+
+#: builtin/tag.c
+msgid "replace the tag if exists"
+msgstr "athsholáthar an chlib má tá sé ann"
+
+#: builtin/tag.c builtin/update-ref.c
+msgid "create a reflog"
+msgstr "cruthaigh reflog"
+
+#: builtin/tag.c
+msgid "Tag listing options"
+msgstr "Roghanna liostaithe clibeanna"
+
+#: builtin/tag.c
+msgid "show tag list in columns"
+msgstr "taispeáin liosta clibeanna i gcolúin"
+
+#: builtin/tag.c
+msgid "print only tags that contain the commit"
+msgstr "clibeanna a phriontáil ach ina bhfuil an tiomantas"
+
+#: builtin/tag.c
+msgid "print only tags that don't contain the commit"
+msgstr "clibeanna nach bhfuil an tiomantas a phriontáil ach amháin"
+
+#: builtin/tag.c
+msgid "print only tags that are merged"
+msgstr "clibeanna a chumasc amháin a phriontáil"
+
+#: builtin/tag.c
+msgid "print only tags that are not merged"
+msgstr "clibeanna nach ndéantar cumaisc a phriontáil ach amháin"
+
+#: builtin/tag.c
+msgid "print only tags of the object"
+msgstr "clibeanna den réad amháin a phriontáil"
+
+#: builtin/tag.c
+msgid "could not start 'git column'"
+msgstr "ní fhéadfaí 'git column' a thosú"
+
+#: builtin/tag.c
+#, c-format
+msgid "the '%s' option is only allowed in list mode"
+msgstr "ní cheadaítear an rogha '%s' ach i mód liosta"
+
+#: builtin/tag.c
+#, c-format
+msgid "'%s' is not a valid tag name."
+msgstr "Ní ainm bailí clibeanna é '%s'."
+
+#: builtin/tag.c
+#, c-format
+msgid "tag '%s' already exists"
+msgstr "tá clib '%s' ann cheana féin"
+
+#: builtin/tag.c sequencer.c
+#, c-format
+msgid "Invalid cleanup mode %s"
+msgstr "Modh glantacháin neamhbhailí %s"
+
+#: builtin/tag.c
+#, c-format
+msgid "Updated tag '%s' (was %s)\n"
+msgstr "Clib nuashonraithe '%s' (bhí %s)\n"
+
+#: builtin/unpack-objects.c
+msgid "pack exceeds maximum allowed size"
+msgstr "sáraíonn an pacáiste an méid uasta a"
+
+#: builtin/unpack-objects.c
+msgid "failed to write object in stream"
+msgstr "theip ar réad a scríobh sa sruth"
+
+#: builtin/unpack-objects.c
+#, c-format
+msgid "inflate returned (%d)"
+msgstr "inflate ar ais (%d)"
+
+#: builtin/unpack-objects.c
+msgid "invalid blob object from stream"
+msgstr "réad blob neamhbhailí ón sruth"
+
+#: builtin/unpack-objects.c
+msgid "Unpacking objects"
+msgstr "Rudaí a dhíphacáil"
+
+#: builtin/update-index.c
+#, c-format
+msgid "failed to create directory %s"
+msgstr "theip ar eolaire %s a chruthú"
+
+#: builtin/update-index.c
+#, c-format
+msgid "failed to delete file %s"
+msgstr "theip ar chomhad %s a scriosadh"
+
+#: builtin/update-index.c
+#, c-format
+msgid "failed to delete directory %s"
+msgstr "theip ar eolaire %s a scriosadh"
+
+#: builtin/update-index.c
+#, c-format
+msgid "Testing mtime in '%s' "
+msgstr "Tástáil mtime i '%s' "
+
+#: builtin/update-index.c
+msgid "directory stat info does not change after adding a new file"
+msgstr "ní athraíonn eolas stat eolaire tar éis comhad nua a chur leis"
+
+#: builtin/update-index.c
+msgid "directory stat info does not change after adding a new directory"
+msgstr "ní athraíonn eolas stat eolaire tar éis eolaire nua a chur leis"
+
+#: builtin/update-index.c
+msgid "directory stat info changes after updating a file"
+msgstr "athraíonn faisnéis eolaire stat tar éis comhad a nuashonrú"
+
+#: builtin/update-index.c
+msgid "directory stat info changes after adding a file inside subdirectory"
+msgstr ""
+"athraíonn eolas stat eolaire tar éis comhad a chur taobh istigh den fho-"
+"eolaire"
+
+#: builtin/update-index.c
+msgid "directory stat info does not change after deleting a file"
+msgstr "ní athraíonn eolas stat eolaire tar éis comhad a scriosadh"
+
+#: builtin/update-index.c
+msgid "directory stat info does not change after deleting a directory"
+msgstr "ní athraíonn eolas stat eolaire tar éis eolaire a scriosadh"
+
+#: builtin/update-index.c
+msgid " OK"
+msgstr " CEART GO LEOR"
+
+#: builtin/update-index.c
+msgid "git update-index [<options>] [--] [<file>...]"
+msgstr "<file>git update-index [<options>] [--] [...]"
+
+#: builtin/update-index.c
+msgid "continue refresh even when index needs update"
+msgstr "leanúint ar aghaidh ar aghaidh ag athnuachan fiú nu"
+
+#: builtin/update-index.c
+msgid "refresh: ignore submodules"
+msgstr "athnuachan: neamhaird a dhéanamh ar fho"
+
+#: builtin/update-index.c
+msgid "do not ignore new files"
+msgstr "ná déan neamhaird de chomhaid nua"
+
+#: builtin/update-index.c
+msgid "let files replace directories and vice-versa"
+msgstr "lig do chomhaid eolairí in ionad agus a mhalairt"
+
+#: builtin/update-index.c
+msgid "notice files missing from worktree"
+msgstr "fógra comhaid atá ar iarraidh ón gcrann oibre"
+
+#: builtin/update-index.c
+msgid "refresh even if index contains unmerged entries"
+msgstr "athnuachan fiú má tá iontrálacha neamh-iontrálacha"
+
+#: builtin/update-index.c
+msgid "refresh stat information"
+msgstr "faisnéis stáit a athnuachan"
+
+#: builtin/update-index.c
+msgid "like --refresh, but ignore assume-unchanged setting"
+msgstr "cosúil le --refresh, ach déan neamhaird de shuíomh gan athrú"
+
+#: builtin/update-index.c
+msgid "<mode>,<object>,<path>"
+msgstr "<mode>,<object>, <path>"
+
+#: builtin/update-index.c
+msgid "add the specified entry to the index"
+msgstr "cuir an iontráil sonraithe leis an innéacs"
+
+#: builtin/update-index.c
+msgid "mark files as \"not changing\""
+msgstr "comhad a mharcáil mar “gan athrú”"
+
+#: builtin/update-index.c
+msgid "clear assumed-unchanged bit"
+msgstr "giotán soiléir glactha gan athrú"
+
+#: builtin/update-index.c
+msgid "mark files as \"index-only\""
+msgstr "comhad a mharcáil mar “innéacs amháin”"
+
+#: builtin/update-index.c
+msgid "clear skip-worktree bit"
+msgstr "giotán crainn oibre scipeála soiléir"
+
+#: builtin/update-index.c
+msgid "do not touch index-only entries"
+msgstr "ná déan teagmháil le iontrálacha innéacs amháin"
+
+#: builtin/update-index.c
+msgid "add to index only; do not add content to object database"
+msgstr "cuir le hinnéacs amháin; ná cuir ábhar le bunachar sonraí réada"
+
+#: builtin/update-index.c
+msgid "remove named paths even if present in worktree"
+msgstr "bain cosáin ainmnithe fiú má tá sé i gcrann oibre"
+
+#: builtin/update-index.c
+msgid "with --stdin: input lines are terminated by null bytes"
+msgstr "le --stdin: cuirtear deireadh le línte ionchuir le bytes null"
+
+#: builtin/update-index.c
+msgid "read list of paths to be updated from standard input"
+msgstr "léigh liosta na gcosáin atá le nuashonrú ó ionchur caighdeánach"
+
+#: builtin/update-index.c
+msgid "add entries from standard input to the index"
+msgstr "cuir iontrálacha ón ionchur caighdeánach leis an innéacs"
+
+#: builtin/update-index.c
+msgid "repopulate stages #2 and #3 for the listed paths"
+msgstr "céimeanna #2 agus #3 a athdhíonrú do na cosáin liostaithe"
+
+#: builtin/update-index.c
+msgid "only update entries that differ from HEAD"
+msgstr "ach iontrálacha a nuashonrú atá difriúil ó HEAD"
+
+#: builtin/update-index.c
+msgid "ignore files missing from worktree"
+msgstr "neamhaird a dhéanamh ar chomhaid atá in easnamh"
+
+#: builtin/update-index.c
+msgid "report actions to standard output"
+msgstr "gníomhartha a thuairisciú go dtí"
+
+#: builtin/update-index.c
+msgid "(for porcelains) forget saved unresolved conflicts"
+msgstr "(le haghaidh poircealláin) déan dearmad ar choimhlintí gan réiteach"
+
+#: builtin/update-index.c
+msgid "write index in this format"
+msgstr "scríobh innéacs san fhormáid seo"
+
+#: builtin/update-index.c
+msgid "report on-disk index format version"
+msgstr "leagan formáid innéacs ar dhiosca tuairisc"
+
+#: builtin/update-index.c
+msgid "enable or disable split index"
+msgstr "innéacs scoilte a chumasú nó a dh"
+
+#: builtin/update-index.c
+msgid "enable/disable untracked cache"
+msgstr "taisce neamhrianaithe a chumasú/a dhíchumasú"
+
+#: builtin/update-index.c
+msgid "test if the filesystem supports untracked cache"
+msgstr "tástáil an dtacaíonn an córas comhaid le taisce neamhrianaithe"
+
+#: builtin/update-index.c
+msgid "enable untracked cache without testing the filesystem"
+msgstr "taisce neamhrianaithe a chumasú gan an córas comhaid a thástáil"
+
+#: builtin/update-index.c
+msgid "write out the index even if is not flagged as changed"
+msgstr ""
+"scríobh amach an t-innéacs fiú mura bhfuil sé brataithe mar a athraítear"
+
+#: builtin/update-index.c
+msgid "enable or disable file system monitor"
+msgstr "monatóireacht chórais chomhaid a chumasú"
+
+#: builtin/update-index.c
+msgid "mark files as fsmonitor valid"
+msgstr "comhad a mharcáil mar fsmonitor bailí"
+
+#: builtin/update-index.c
+msgid "clear fsmonitor valid bit"
+msgstr "giotán bailí fsmonitor soiléir"
+
+#: builtin/update-index.c
+#, c-format
+msgid "%d\n"
+msgstr "%d\n"
+
+#: builtin/update-index.c
+#, c-format
+msgid "index-version: was %d, set to %d"
+msgstr "leagan innéacs: bhí %d, socraithe go %d"
+
+#: builtin/update-index.c
+msgid ""
+"core.splitIndex is set to false; remove or change it, if you really want to "
+"enable split index"
+msgstr ""
+"tá core.splitIndex socraithe go bréagach; bain nó athraigh é, más mian leat "
+"innéacs scoilte a chumasú i ndáiríre"
+
+#: builtin/update-index.c
+msgid ""
+"core.splitIndex is set to true; remove or change it, if you really want to "
+"disable split index"
+msgstr ""
+"tá core.splitIndex socraithe go fíor; bain nó athraigh é, más mian leat "
+"innéacs scoilte a dhíchumasú"
+
+#: builtin/update-index.c
+msgid ""
+"core.untrackedCache is set to true; remove or change it, if you really want "
+"to disable the untracked cache"
+msgstr ""
+"tá core.untrackedCache go fíor; bain nó athraigh é, más mian leat an taisce "
+"neamhrianaithe a dhíchumasú"
+
+#: builtin/update-index.c
+msgid "Untracked cache disabled"
+msgstr "Taisce neamhrianaithe míchumasaithe"
+
+#: builtin/update-index.c
+msgid ""
+"core.untrackedCache is set to false; remove or change it, if you really want "
+"to enable the untracked cache"
+msgstr ""
+"tá core.untrackedCache socraithe go bréagach; bain nó athraigh é, más mian "
+"leat an taisce neamhrianaithe a chumasú"
+
+#: builtin/update-index.c
+#, c-format
+msgid "Untracked cache enabled for '%s'"
+msgstr "Cumasaíodh taisce neamhrianaithe do '%s'"
+
+#: builtin/update-index.c
+msgid "core.fsmonitor is unset; set it if you really want to enable fsmonitor"
+msgstr ""
+"tá core.fsmonitor díshocraithe; socraigh é más mian leat fsmonitor a chumasú "
+"i ndáiríre"
+
+#: builtin/update-index.c
+msgid "fsmonitor enabled"
+msgstr "fsmonitor cumasaithe"
+
+#: builtin/update-index.c
+msgid ""
+"core.fsmonitor is set; remove it if you really want to disable fsmonitor"
+msgstr ""
+"tá core.fsmonitor socraithe; bain é más mian leat fsmonitor a dhíchumasú i "
+"ndáiríre"
+
+#: builtin/update-index.c
+msgid "fsmonitor disabled"
+msgstr "fsmonitor míchumasaithe"
+
+#: builtin/update-ref.c
+msgid "git update-ref [<options>] -d <refname> [<old-oid>]"
+msgstr "<refname><old-oid>git update-ref [<options>] -d []"
+
+#: builtin/update-ref.c
+msgid "git update-ref [<options>] <refname> <new-oid> [<old-oid>]"
+msgstr "<refname><new-oid><old-oid>git update-ref [<options>] []"
+
+#: builtin/update-ref.c
+msgid "git update-ref [<options>] --stdin [-z] [--batch-updates]"
+msgstr "git update-ref [<options>] --stdin [-z] [--batch-updates]"
+
+#: builtin/update-ref.c
+msgid "delete the reference"
+msgstr "scrios an tagairt"
+
+#: builtin/update-ref.c
+msgid "update <refname> not the one it points to"
+msgstr "nuashon <refname>raigh ní an ceann a thugann sé in iúl"
+
+#: builtin/update-ref.c
+msgid "stdin has NUL-terminated arguments"
+msgstr "tá argóintí ag foirceannadh NUL ag stdin"
+
+#: builtin/update-ref.c
+msgid "read updates from stdin"
+msgstr "léigh nuashonruithe ó stdin"
+
+#: builtin/update-ref.c
+msgid "batch reference updates"
+msgstr "nuashonruithe tagairt baisc"
+
+#: builtin/update-server-info.c
+msgid "update the info files from scratch"
+msgstr "nuashonraigh na comhaid faisnéise ón tús"
+
+#: builtin/upload-pack.c
+msgid ""
+"git-upload-pack [--[no-]strict] [--timeout=<n>] [--stateless-rpc]\n"
+" [--advertise-refs] <directory>"
+msgstr ""
+"git-upload-pack [--[no-]strict] [--timeout=<n>] [--stateless-rpc]\n"
+" [--advertise-refs] <directory>"
+
+#: builtin/upload-pack.c t/helper/test-serve-v2.c
+msgid "quit after a single request/response exchange"
+msgstr "scor tar éis iarrata/malartú freagartha amháin"
+
+#: builtin/upload-pack.c
+msgid "serve up the info/refs for git-http-backend"
+msgstr "freastal suas ar na faisnéise/réimsí le haghaidh git-http-backend"
+
+#: builtin/upload-pack.c
+msgid "do not try <directory>/.git/ if <directory> is no Git directory"
+msgstr ""
+"ná déan iarracht <directory>/.git/ mura bhfuil aon eolaire G <directory> it "
+"ann"
+
+#: builtin/upload-pack.c
+msgid "interrupt transfer after <n> seconds of inactivity"
+msgstr "cur isteach ar aistriú tar éis so <n>icind neamhghníomhach"
+
+#: builtin/verify-commit.c
+msgid "git verify-commit [-v | --verbose] [--raw] <commit>..."
+msgstr "git verify-commit [-v | --verbose] [--raw] <commit>..."
+
+#: builtin/verify-commit.c
+msgid "print commit contents"
+msgstr "ábhair tiomanta priontála"
+
+#: builtin/verify-commit.c builtin/verify-tag.c
+msgid "print raw gpg status output"
+msgstr "aschur stádas amh-gpg a phriontáil"
+
+#: builtin/verify-pack.c
+msgid "git verify-pack [-v | --verbose] [-s | --stat-only] [--] <pack>.idx..."
+msgstr "git verify-pack [-v | --verbose] [-s | --stat-only] [--] <pack>.idx..."
+
+#: builtin/verify-pack.c
+msgid "verbose"
+msgstr "eolach"
+
+#: builtin/verify-pack.c
+msgid "show statistics only"
+msgstr "taispeáin staitisticí amháin"
+
+#: builtin/verify-tag.c
+msgid "git verify-tag [-v | --verbose] [--format=<format>] [--raw] <tag>..."
+msgstr "<format><tag>git verify-tag [-v | --verbose] [--format =] [--raw]..."
+
+#: builtin/verify-tag.c
+msgid "print tag contents"
+msgstr "ábhar clib priontáil"
+
+#: builtin/worktree.c
+msgid ""
+"git worktree add [-f] [--detach] [--checkout] [--lock [--reason <string>]]\n"
+" [--orphan] [(-b | -B) <new-branch>] <path> [<commit-ish>]"
+msgstr ""
+"git worktree add [-f] [--detach] [--checkout] [--lock [--reason <string>]]\n"
+" [--orphan] [(-b | -B) <new-branch>] <path> [<commit-ish>]"
+
+#: builtin/worktree.c
+msgid "git worktree list [-v | --porcelain [-z]]"
+msgstr "liosta crann oibre git [-v | --poirceallán [-z]]"
+
+#: builtin/worktree.c
+msgid "git worktree lock [--reason <string>] <worktree>"
+msgstr "<string>glas crann oibre git [--reason] <worktree>"
+
+#: builtin/worktree.c
+msgid "git worktree move <worktree> <new-path>"
+msgstr "gluaiseacht sraith oibre git <worktree><new-path>"
+
+#: builtin/worktree.c
+msgid "git worktree prune [-n] [-v] [--expire <expire>]"
+msgstr "<expire>git worktree prun [-n] [-v] [--dul in éag]"
+
+#: builtin/worktree.c
+msgid "git worktree remove [-f] <worktree>"
+msgstr "git worktree a bhaint [-f] <worktree>"
+
+#: builtin/worktree.c
+msgid "git worktree repair [<path>...]"
+msgstr "deisiú crainn oibre git [<path>...]"
+
+#: builtin/worktree.c
+msgid "git worktree unlock <worktree>"
+msgstr "díghlasáil git worktree <worktree>"
+
+#: builtin/worktree.c
+msgid "No possible source branch, inferring '--orphan'"
+msgstr "Níl aon bhrainse foinse féideartha, ag tabhairt faoi deara '--orphan'"
+
+#: builtin/worktree.c
+#, c-format
+msgid ""
+"If you meant to create a worktree containing a new unborn branch\n"
+"(branch with no commits) for this repository, you can do so\n"
+"using the --orphan flag:\n"
+"\n"
+" git worktree add --orphan -b %s %s\n"
+msgstr ""
+"Má bhí i gceist agat crann oibre a chruthú ina bhfuil brainse nua gan "
+"breith\n"
+"(brainse gan aon ghealltanais) don stór seo, is féidir leat é sin a "
+"dhéanamh\n"
+"ag baint úsáide as an bhratach --díllí:\n"
+"\n"
+" git worktree add --orphan -b %s %s\n"
+
+#: builtin/worktree.c
+#, c-format
+msgid ""
+"If you meant to create a worktree containing a new unborn branch\n"
+"(branch with no commits) for this repository, you can do so\n"
+"using the --orphan flag:\n"
+"\n"
+" git worktree add --orphan %s\n"
+msgstr ""
+"Má bhí i gceist agat crann oibre a chruthú ina bhfuil brainse nua gan "
+"breith\n"
+"(brainse gan aon ghealltanais) don stór seo, is féidir leat é sin a "
+"dhéanamh\n"
+"ag baint úsáide as an --orphan flag:\n"
+"\n"
+" git worktree add --orphan %s\n"
+
+#: builtin/worktree.c
+#, c-format
+msgid "Removing %s/%s: %s"
+msgstr "Ag baint %s/%s: %s"
+
+#: builtin/worktree.c
+msgid "report pruned working trees"
+msgstr "crainn oibre gearrtha a thuairisciú"
+
+#: builtin/worktree.c
+msgid "expire working trees older than <time>"
+msgstr "dul in éag crainn oibre níos sine ná <time>"
+
+#: builtin/worktree.c
+#, c-format
+msgid "'%s' already exists"
+msgstr "Tá '%s' ann cheana féin"
+
+#: builtin/worktree.c
+#, c-format
+msgid "unusable worktree destination '%s'"
+msgstr "ceann scríbe crainn oibre neamhúsáidte '%s'"
+
+#: builtin/worktree.c
+#, c-format
+msgid ""
+"'%s' is a missing but locked worktree;\n"
+"use '%s -f -f' to override, or 'unlock' and 'prune' or 'remove' to clear"
+msgstr ""
+"Is crann oibre atá ar iarraidh ach faoi ghlas é '%s';\n"
+"bain úsáid as '%s -f 'chun athshealbhú, nó' díghlasáil 'agus' bearradh 'nó' "
+"bhaint 'chun a ghlanadh"
+
+#: builtin/worktree.c
+#, c-format
+msgid ""
+"'%s' is a missing but already registered worktree;\n"
+"use '%s -f' to override, or 'prune' or 'remove' to clear"
+msgstr ""
+"Is crann oibre atá ar iarraidh ach cláraithe cheana féin é '%s';\n"
+"bain úsáid as '%s -f' chun athshlánú, nó 'bearradh' nó 'bhaint' chun a "
+"ghlanadh"
+
+#: builtin/worktree.c
+#, c-format
+msgid "failed to copy '%s' to '%s'; sparse-checkout may not work correctly"
+msgstr ""
+"theip ar '%s' a chóipeáil go '%s'; b'fhéidir nach n-oibreoidh an tseiceáil "
+"neamhchoitianta i gceart"
+
+#: builtin/worktree.c
+#, c-format
+msgid "failed to copy worktree config from '%s' to '%s'"
+msgstr "theip ar chumraíocht crann oibre a chóipeáil ó '%s' go '%s'"
+
+#: builtin/worktree.c
+#, c-format
+msgid "failed to unset '%s' in '%s'"
+msgstr "theip ar '%s' a dhíshocrú i '%s'"
+
+#: builtin/worktree.c
+#, c-format
+msgid "could not create directory of '%s'"
+msgstr "ní raibh in ann eolaire de '%s' a chruthú"
+
+#: builtin/worktree.c
+msgid "initializing"
+msgstr "a thionscnamh"
+
+#: builtin/worktree.c
+#, c-format
+msgid "could not find created worktree '%s'"
+msgstr "ní raibh an crann oibre cruthaithe '%s' a aimsiú"
+
+#: builtin/worktree.c
+#, c-format
+msgid "Preparing worktree (new branch '%s')"
+msgstr "Crann oibre a ullmhú (brainse nua '%s')"
+
+#: builtin/worktree.c
+#, c-format
+msgid "Preparing worktree (resetting branch '%s'; was at %s)"
+msgstr "Ullmhú crann oibre (athshocrú brainse '%s'; bhí ag %s)"
+
+#: builtin/worktree.c
+#, c-format
+msgid "Preparing worktree (checking out '%s')"
+msgstr "Crann oibre a ullmhú (seiceáil '%s')"
+
+#: builtin/worktree.c
+#, c-format
+msgid "unreachable: invalid reference: %s"
+msgstr "unrochtana: tagairt neamhbhailí: %s"
+
+#: builtin/worktree.c
+#, c-format
+msgid "Preparing worktree (detached HEAD %s)"
+msgstr "Crann oibre a ullmhú (CEAD scoite %s)"
+
+#: builtin/worktree.c
+#, c-format
+msgid ""
+"HEAD points to an invalid (or orphaned) reference.\n"
+"HEAD path: '%s'\n"
+"HEAD contents: '%s'"
+msgstr ""
+"Tugann HEAD in iúl do thagairt neamhbhailí (nó dílleachta).\n"
+"Conair CEAD: '%s'\n"
+"Ábhar CEAD: '%s'"
+
+#: builtin/worktree.c
+msgid ""
+"No local or remote refs exist despite at least one remote\n"
+"present, stopping; use 'add -f' to override or fetch a remote first"
+msgstr ""
+"Níl aon réimsí áitiúla ná iargúlta ann in ainneoin cianda amháin ar a "
+"laghad\n"
+"láthair, ag stopadh; bain úsáid as 'add -f' chun iargúlta a shárú nó a fháil "
+"ar dtús"
+
+#: builtin/worktree.c
+msgid "checkout <branch> even if already checked out in other worktree"
+msgstr ""
+"seiceáil <branch>fiú má tá sé seiceáilte cheana féin i gcrann oibre eile"
+
+#: builtin/worktree.c
+msgid "create a new branch"
+msgstr "brainse nua a chruthú"
+
+#: builtin/worktree.c
+msgid "create or reset a branch"
+msgstr "brainse a chruthú nó a athshocrú"
+
+#: builtin/worktree.c
+msgid "create unborn branch"
+msgstr "cruthú brainse gan breith"
+
+#: builtin/worktree.c
+msgid "populate the new working tree"
+msgstr "an crann oibre nua a dhaonrú"
+
+#: builtin/worktree.c
+msgid "keep the new working tree locked"
+msgstr "coinnigh an crann oibre nua faoi ghlas"
+
+#: builtin/worktree.c
+msgid "reason for locking"
+msgstr "cúis le glasáil"
+
+#: builtin/worktree.c
+msgid "set up tracking mode (see git-branch(1))"
+msgstr "modh rianaithe a bhunú (féach git-branch (1))"
+
+#: builtin/worktree.c
+msgid "try to match the new branch name with a remote-tracking branch"
+msgstr ""
+"déan iarracht ainm nua na brainse a mheaitseáil le brainse cianrianaithe"
+
+#: builtin/worktree.c
+msgid "use relative paths for worktrees"
+msgstr "úsáid cosáin choibhneasta do chrainn oibre"
+
+#: builtin/worktree.c diff.c parse-options.c
+#, c-format
+msgid "options '%s', '%s', and '%s' cannot be used together"
+msgstr "ní féidir roghanna '%s', '%s', agus '%s' a úsáid le chéile"
+
+#: builtin/worktree.c
+#, c-format
+msgid "option '%s' and commit-ish cannot be used together"
+msgstr "ní féidir rogha '%s' agus comm-ish a úsáid le chéile"
+
+#: builtin/worktree.c
+msgid "added with --lock"
+msgstr "cuireadh leis le --lock"
+
+#: builtin/worktree.c
+msgid "--[no-]track can only be used if a new branch is created"
+msgstr "Ní féidir --[no-]rian a úsáid ach amháin má chruthaítear brainse nua"
+
+#: builtin/worktree.c
+msgid "show extended annotations and reasons, if available"
+msgstr "anótaí agus cúiseanna leathnaithe a thaispeáint, má tá sé ar fáil"
+
+#: builtin/worktree.c
+msgid "add 'prunable' annotation to worktrees older than <time>"
+msgstr "cuir anótáil 'prunable' le crainn oibre níos sine ná <time>"
+
+#: builtin/worktree.c
+msgid "terminate records with a NUL character"
+msgstr "deireadh a chur le taifid le carachtar NUL"
+
+#: builtin/worktree.c
+#, c-format
+msgid "'%s' is not a working tree"
+msgstr "Ní crann oibre é '%s'"
+
+#: builtin/worktree.c
+msgid "The main working tree cannot be locked or unlocked"
+msgstr "Ní féidir an príomhchrann oibre a ghlasáil nó a dhíghlasáil"
+
+#: builtin/worktree.c
+#, c-format
+msgid "'%s' is already locked, reason: %s"
+msgstr "Tá '%s' faoi ghlas cheana féin, cúis: %s"
+
+#: builtin/worktree.c
+#, c-format
+msgid "'%s' is already locked"
+msgstr "Tá '%s' faoi ghlas cheana féin"
+
+#: builtin/worktree.c
+#, c-format
+msgid "'%s' is not locked"
+msgstr "Níl '%s' faoi ghlas"
+
+#: builtin/worktree.c
+msgid "working trees containing submodules cannot be moved or removed"
+msgstr "ní féidir crainn oibre ina bhfuil fo-mhodúil a bhogadh ná a bhaint"
+
+#: builtin/worktree.c
+msgid "force move even if worktree is dirty or locked"
+msgstr "bogadh fórsa fiú má tá crann oibre salach nó faoi ghlas"
+
+#: builtin/worktree.c
+#, c-format
+msgid "'%s' is a main working tree"
+msgstr "Is príomhchrann oibre é '%s'"
+
+#: builtin/worktree.c
+#, c-format
+msgid "could not figure out destination name from '%s'"
+msgstr "ní fhéadfaí ainm ceann scríbe a fháil amach ó '%s'"
+
+#: builtin/worktree.c
+#, c-format
+msgid ""
+"cannot move a locked working tree, lock reason: %s\n"
+"use 'move -f -f' to override or unlock first"
+msgstr ""
+"ní féidir crann oibre faoi ghlas a bhogadh, cúis ghlasála: %s\n"
+"bain úsáid as 'move -f -f' chun athshárú nó a dhíghlasáil ar dtús"
+
+#: builtin/worktree.c
+msgid ""
+"cannot move a locked working tree;\n"
+"use 'move -f -f' to override or unlock first"
+msgstr ""
+"ní féidir le crann oibre faoi ghlas a bhogadh;\n"
+"bain úsáid as 'move -f -f' chun athshárú nó a dhíghlasáil ar dtús"
+
+#: builtin/worktree.c
+#, c-format
+msgid "validation failed, cannot move working tree: %s"
+msgstr "theip ar bhailíochtú, ní féidir crann oibre a bhogadh: %s"
+
+#: builtin/worktree.c
+#, c-format
+msgid "failed to move '%s' to '%s'"
+msgstr "theip ar '%s' a bhogadh go '%s'"
+
+#: builtin/worktree.c
+#, c-format
+msgid "failed to run 'git status' on '%s'"
+msgstr "theip ar 'git status' a reáchtáil ar '%s'"
+
+#: builtin/worktree.c
+#, c-format
+msgid "'%s' contains modified or untracked files, use --force to delete it"
+msgstr ""
+"Tá comhaid modhnaithe nó neamhrianaithe i '%s', bain úsáid as --force chun é "
+"a scriosadh"
+
+#: builtin/worktree.c
+#, c-format
+msgid "failed to run 'git status' on '%s', code %d"
+msgstr "theip ar 'git status' a reáchtáil ar '%s', cód %d"
+
+#: builtin/worktree.c
+msgid "force removal even if worktree is dirty or locked"
+msgstr "bhaint fórsa fiú má tá crann oibre salach nó faoi ghlas"
+
+#: builtin/worktree.c
+#, c-format
+msgid ""
+"cannot remove a locked working tree, lock reason: %s\n"
+"use 'remove -f -f' to override or unlock first"
+msgstr ""
+"ní féidir crann oibre faoi ghlas a bhaint, cúis ghlasála: %s\n"
+"bain úsáid as 'remove -f -f' chun athshárú nó a dhíghlasáil ar dtús"
+
+#: builtin/worktree.c
+msgid ""
+"cannot remove a locked working tree;\n"
+"use 'remove -f -f' to override or unlock first"
+msgstr ""
+"ní féidir crann oibre faoi ghlas a bhaint;\n"
+"bain úsáid as 'remove -f -f' chun athshárú nó a dhíghlasáil ar dtús"
+
+#: builtin/worktree.c
+#, c-format
+msgid "validation failed, cannot remove working tree: %s"
+msgstr "theip ar bhailíochtú, ní féidir crann oibre a bhaint: %s"
+
+#: builtin/worktree.c
+#, c-format
+msgid "repair: %s: %s"
+msgstr "deisiú: %s: %s"
+
+#: builtin/worktree.c
+#, c-format
+msgid "error: %s: %s"
+msgstr "earráid: %s: %s"
+
+#: builtin/write-tree.c
+msgid "git write-tree [--missing-ok] [--prefix=<prefix>/]"
+msgstr "git write-tree [--missing-ok] [--prefix=<prefix>/]"
+
+#: builtin/write-tree.c
+msgid "<prefix>/"
+msgstr "<prefix>/"
+
+#: builtin/write-tree.c
+msgid "write tree object for a subdirectory <prefix>"
+msgstr "scríobh réad crann le haghaidh fo-eolaire <prefix>"
+
+#: builtin/write-tree.c
+msgid "only useful for debugging"
+msgstr "ach úsáideach le haghaidh dífhabhtú"
+
+#: bulk-checkin.c
+msgid "core.fsyncMethod = batch is unsupported on this platform"
+msgstr "core.fsyncMethod = ní thacaítear leis an bhaisc ar an ardán seo"
+
+#: bundle-uri.c
+#, c-format
+msgid "could not parse bundle list key %s with value '%s'"
+msgstr "ní fhéadfaí eochair liosta beartán %s a pháirseáil le luach '%s'"
+
+#: bundle-uri.c
+#, c-format
+msgid "bundle list at '%s' has no mode"
+msgstr "níl aon mhodh ag liosta beartán ag '%s'"
+
+#: bundle-uri.c
+msgid "failed to create temporary file"
+msgstr "theip ar chomhad sealadach a chruthú"
+
+#: bundle-uri.c
+msgid "insufficient capabilities"
+msgstr "cumais neamhleor"
+
+#: bundle-uri.c
+#, c-format
+msgid "file downloaded from '%s' is not a bundle"
+msgstr "ní beartán é an comhad a íoslódáladh ó '%s'"
+
+#: bundle-uri.c
+msgid "failed to store maximum creation token"
+msgstr "theip ar an comhartha cruthaithe uasta a stórá"
+
+#: bundle-uri.c
+#, c-format
+msgid "unrecognized bundle mode from URI '%s'"
+msgstr "modh beartán neamhaithnithe ó URI '%s'"
+
+#: bundle-uri.c
+#, c-format
+msgid "exceeded bundle URI recursion limit (%d)"
+msgstr "sháraigh teorainn athshlánaithe URI beartán (%d)"
+
+#: bundle-uri.c
+#, c-format
+msgid "failed to download bundle from URI '%s'"
+msgstr "theip ar an mbeartán a íoslódáil ó URI '%s'"
+
+#: bundle-uri.c
+#, c-format
+msgid "file at URI '%s' is not a bundle or bundle list"
+msgstr "comhad ag URI ní beacán nó liosta beartán é '%s'"
+
+#: bundle-uri.c
+#, c-format
+msgid "bundle-uri: unexpected argument: '%s'"
+msgstr "bundle-uri: argóint gan choinne: '%s'"
+
+#: bundle-uri.c
+msgid "bundle-uri: expected flush after arguments"
+msgstr "bundle-uri: súil le sruth tar éis argóintí"
+
+#: bundle-uri.c
+msgid "bundle-uri: got an empty line"
+msgstr "bundle-uri: got an líne folamh"
+
+#: bundle-uri.c
+msgid "bundle-uri: line is not of the form 'key=value'"
+msgstr "bundle-uri: níl an líne den fhoirm 'key=value'"
+
+#: bundle-uri.c
+msgid "bundle-uri: line has empty key or value"
+msgstr "bundle-uri: tá eochair nó luach folamh ag líne"
+
+#: bundle.c
+#, c-format
+msgid "unrecognized bundle hash algorithm: %s"
+msgstr "algartam hash beartán gan aithint: %s"
+
+#: bundle.c
+#, c-format
+msgid "unknown capability '%s'"
+msgstr "cumas anaithnid '%s'"
+
+#: bundle.c
+#, c-format
+msgid "'%s' does not look like a v2 or v3 bundle file"
+msgstr "Níl cuma '%s' cosúil le comhad beartán v2 nó v3"
+
+#: bundle.c
+#, c-format
+msgid "unrecognized header: %s%s (%d)"
+msgstr "ceanntásc gan aithint: %s%s (%d)"
+
+#: bundle.c
+msgid "Repository lacks these prerequisite commits:"
+msgstr "Níl na tiomantas réamhriachtanais seo ag an stór:"
+
+#: bundle.c
+msgid ""
+"some prerequisite commits exist in the object store, but are not connected "
+"to the repository's history"
+msgstr ""
+"tá roinnt gealltanais réamhriachtanais ann sa stór réada, ach níl siad "
+"ceangailte le stair an stór"
+
+#: bundle.c
+#, c-format
+msgid "The bundle contains this ref:"
+msgid_plural "The bundle contains these %<PRIuMAX> refs:"
+msgstr[0] "Tá an tagairt seo sa phacáiste:"
+msgstr[1] "Tá na tagairtí %<PRIuMAX> seo sa phacáiste:"
+msgstr[2] "Tá na tagairtí %<PRIuMAX> seo sa phacáiste:"
+
+#: bundle.c
+msgid "The bundle records a complete history."
+msgstr "Taifeadann an beartán stair iomlán."
+
+#: bundle.c
+#, c-format
+msgid "The bundle requires this ref:"
+msgid_plural "The bundle requires these %<PRIuMAX> refs:"
+msgstr[0] "Éilíonn an pacáiste seo an tagairt:"
+msgstr[1] "Éilíonn an pacáiste seo na tagairtí %<PRIuMAX> seo:"
+msgstr[2] "Éilíonn an pacáiste seo na tagairtí %<PRIuMAX> seo:"
+
+#: bundle.c
+#, c-format
+msgid "The bundle uses this hash algorithm: %s"
+msgstr "Úsáideann an beartán an algartam hash seo: %s"
+
+#: bundle.c
+#, c-format
+msgid "The bundle uses this filter: %s"
+msgstr "Úsáideann an beartán an scagaire seo: %s"
+
+#: bundle.c
+msgid "unable to dup bundle descriptor"
+msgstr "nach féidir tuairiscí a chur ar bhearnadh"
+
+#: bundle.c
+msgid "Could not spawn pack-objects"
+msgstr "Ní fhéadfaí rudaí pacáiste a shannadh"
+
+#: bundle.c
+msgid "pack-objects died"
+msgstr "rudaí pacáiste fuair bás"
+
+#: bundle.c
+#, c-format
+msgid "ref '%s' is excluded by the rev-list options"
+msgstr "tá ref '%s' eisiata ag na roghanna rev-list"
+
+#: bundle.c
+#, c-format
+msgid "unsupported bundle version %d"
+msgstr "leagan beartán gan tacaíocht %d"
+
+#: bundle.c
+#, c-format
+msgid "cannot write bundle version %d with algorithm %s"
+msgstr "ní féidir leagan beartán %d a scríobh le algartam %s"
+
+#: bundle.c
+msgid "Refusing to create empty bundle."
+msgstr "Diúltú beartán folamh a chruthú."
+
+#: bundle.c
+#, c-format
+msgid "cannot create '%s'"
+msgstr "ní féidir '%s' a chruthú"
+
+#: bundle.c
+msgid "index-pack died"
+msgstr "fuair an pacáiste innéacs"
+
+#: cache-tree.c
+#, c-format
+msgid "directory '%s' is present in index, but not sparse"
+msgstr "tá eolaire '%s' i láthair in innéacs, ach níl sé neamhchoitianta"
+
+#: cache-tree.c unpack-trees.c
+msgid "corrupted cache-tree has entries not present in index"
+msgstr ""
+"tá iontrálacha nach bhfuil i láthair san innéacs ag crann cache-crainn "
+"truaillte"
+
+#: cache-tree.c
+#, c-format
+msgid "%s with flags 0x%x should not be in cache-tree"
+msgstr "Níor chóir go mbeadh %s le bratacha 0x%x i gcrann cache-tree"
+
+#: cache-tree.c
+#, c-format
+msgid "bad subtree '%.*s'"
+msgstr "droch-fho-chrann '%.*s'"
+
+#: cache-tree.c
+#, c-format
+msgid "cache-tree for path %.*s does not match. Expected %s got %s"
+msgstr ""
+"ní hionann crann-taisce don chonair %.*s. Bhíothas ag súil le %s, ach fuair "
+"%s"
+
+#: chunk-format.c
+msgid "terminating chunk id appears earlier than expected"
+msgstr "is cosúil le feiceáil id cúince a fhoirceannadh níos luaithe"
+
+#: chunk-format.c
+#, c-format
+msgid "chunk id %<PRIx32> not %d-byte aligned"
+msgstr "id chosc% <PRIx32>nach bhfuil %d-byte ailínithe"
+
+#: chunk-format.c
+#, c-format
+msgid "improper chunk offset(s) %<PRIx64> and %<PRIx64>"
+msgstr "fritháireamh píosa míchuí (í)% <PRIx64>agus% <PRIx64>"
+
+#: chunk-format.c
+#, c-format
+msgid "duplicate chunk ID %<PRIx32> found"
+msgstr "aimsíodh ID smután dúblach %<PRIx32>"
+
+#: chunk-format.c
+#, c-format
+msgid "final chunk has non-zero id %<PRIx32>"
+msgstr "tá id neamh-nialasach ag an gcuid deiridh% <PRIx32>"
+
+#: chunk-format.c
+msgid "invalid hash version"
+msgstr "leagan hash neamhbhailí"
+
+#: color.c
+#, c-format
+msgid "invalid color value: %.*s"
+msgstr "luach dath neamhbhailí: %.*s"
+
+#: command-list.h
+msgid "Add file contents to the index"
+msgstr "Cuir ábhar an chomhaid leis an innéacs"
+
+#: command-list.h
+msgid "Apply a series of patches from a mailbox"
+msgstr "Cuir sraith paistí i bhfeidhm ó bhosca poist"
+
+#: command-list.h
+msgid "Annotate file lines with commit information"
+msgstr "Línte comhaid a anótáil le faisnéis tiomanta"
+
+#: command-list.h
+msgid "Apply a patch to files and/or to the index"
+msgstr "Cuir paiste i bhfeidhm ar chomhaid agus/nó ar an innéacs"
+
+#: command-list.h
+msgid "Import a GNU Arch repository into Git"
+msgstr "Iompórtáil stór GNU Arch isteach i Git"
+
+#: command-list.h
+msgid "Create an archive of files from a named tree"
+msgstr "Cruthaigh cartlann comhaid ó chrann ainmnithe"
+
+#: command-list.h
+msgid "Download missing objects in a partial clone"
+msgstr "Íoslódáil rudaí atá in easnamh i gclón pá"
+
+#: command-list.h
+msgid "Use binary search to find the commit that introduced a bug"
+msgstr ""
+"Úsáid cuardach dénártha chun an gealltanas a thug isteach fabht a fháil"
+
+#: command-list.h
+msgid "Show what revision and author last modified each line of a file"
+msgstr ""
+"Taispeáin an t-athbhreithniú agus an t-údar a mhodhnaigh gach líne de chomhad"
+
+#: command-list.h
+msgid "List, create, or delete branches"
+msgstr "Brainsí a liostáil, a chruthú nó a scriosadh"
+
+#: command-list.h
+msgid "Collect information for user to file a bug report"
+msgstr "Bailigh faisnéis don úsáideoir chun tuarascáil fabht a chomhdú"
+
+#: command-list.h
+msgid "Move objects and refs by archive"
+msgstr "Bogadh rudaí agus scríbhinní de réir cartlann"
+
+#: command-list.h
+msgid "Provide contents or details of repository objects"
+msgstr "Ábhar nó sonraí rudaí stórais a sholáthar"
+
+#: command-list.h
+msgid "Display gitattributes information"
+msgstr "Taispeáin faisnéis gitattributs"
+
+#: command-list.h
+msgid "Debug gitignore / exclude files"
+msgstr "Dífhabhtú gitignore/eisiamh comhaid"
+
+#: command-list.h
+msgid "Show canonical names and email addresses of contacts"
+msgstr "Taispeáin ainmneacha canónach agus seoltaí ríomhphoist teagmhál"
+
+#: command-list.h
+msgid "Ensures that a reference name is well formed"
+msgstr "Cinntíonn sé go bhfuil ainm tagartha foirmithe go maith"
+
+#: command-list.h
+msgid "Switch branches or restore working tree files"
+msgstr "Athraigh brainsí nó cuir comhaid crainn oibre ar ais"
+
+#: command-list.h
+msgid "Copy files from the index to the working tree"
+msgstr "Cóipeáil comhaid ón innéacs go dtí an crann oibre"
+
+#: command-list.h
+msgid "Find commits yet to be applied to upstream"
+msgstr "Faigh gealltanais nach ndéanfar cur i bhfeidhm fós ar an sruth"
+
+#: command-list.h
+msgid "Apply the changes introduced by some existing commits"
+msgstr ""
+"Cuir isteach na hathruithe a thug isteach ag roinnt gealltanais atá ann"
+
+#: command-list.h
+msgid "Graphical alternative to git-commit"
+msgstr "Rogha eile grafach seachas git-commit"
+
+#: command-list.h
+msgid "Remove untracked files from the working tree"
+msgstr "Bain comhaid neamhrianaithe ón gcrann oibre"
+
+#: command-list.h
+msgid "Clone a repository into a new directory"
+msgstr "Clóin stór isteach i eolaire nua"
+
+#: command-list.h
+msgid "Display data in columns"
+msgstr "Taispeáin sonraí i gcolúin"
+
+#: command-list.h
+msgid "Record changes to the repository"
+msgstr "Taifeadadh athruithe ar an stór"
+
+#: command-list.h
+msgid "Write and verify Git commit-graph files"
+msgstr "Scríobh agus fíoraigh comhaid choimisi-graf Git"
+
+#: command-list.h
+msgid "Create a new commit object"
+msgstr "Cruthaigh réad tiomanta nua"
+
+#: command-list.h
+msgid "Get and set repository or global options"
+msgstr "Faigh agus socraigh stór nó roghanna domhanda"
+
+#: command-list.h
+msgid "Count unpacked number of objects and their disk consumption"
+msgstr "Líon rudaí neamhphacáilte a chomhaireamh agus a dtomhaltas"
+
+#: command-list.h
+msgid "Retrieve and store user credentials"
+msgstr "Dintiúir úsáideora a aisghabháil agus"
+
+#: command-list.h
+msgid "Helper to temporarily store passwords in memory"
+msgstr "Cúntóir chun pasfhocail a stóráil i gcuimhne"
+
+#: command-list.h
+msgid "Helper to store credentials on disk"
+msgstr "Cúntóir chun dintiúir a stóráil ar dhios"
+
+#: command-list.h
+msgid "Export a single commit to a CVS checkout"
+msgstr "Easpórtáil tiomantas amháin chuig seiceáil CVS"
+
+#: command-list.h
+msgid "Salvage your data out of another SCM people love to hate"
+msgstr ""
+"Sábháil do chuid sonraí as SCM eile is breá le daoine fuath a thabhairt"
+
+#: command-list.h
+msgid "A CVS server emulator for Git"
+msgstr "Aithritheoir freastalaí CVS do Git"
+
+#: command-list.h
+msgid "A really simple server for Git repositories"
+msgstr "Freastalaí an-simplí do stórais Git"
+
+#: command-list.h
+msgid "Give an object a human readable name based on an available ref"
+msgstr "Tabhair ainm inléite daonna do réad bunaithe ar thagartha atá ar fáil"
+
+#: command-list.h
+msgid "Generate a zip archive of diagnostic information"
+msgstr "Cruthaigh cartlann zip faisnéise diagnóiseach"
+
+#: command-list.h
+msgid "Show changes between commits, commit and working tree, etc"
+msgstr "Taispeáin athruithe idir gealltanais, tiomantas agus crann oibre, srl"
+
+#: command-list.h
+msgid "Compares files in the working tree and the index"
+msgstr "Déanann comparáid idir comhaid sa chrann oibre agus san innéacs"
+
+#: command-list.h
+msgid "Compare a tree to the working tree or index"
+msgstr "Déan comparáid idir crann leis an gcrann oibre nó leis an innéacs"
+
+#: command-list.h
+msgid "Compare the content and mode of provided blob pairs"
+msgstr "Déan comparáid idir ábhar agus modh na bpéirí blob atá curtha ar fáil"
+
+#: command-list.h
+msgid "Compares the content and mode of blobs found via two tree objects"
+msgstr ""
+"Déanann comparáid idir ábhar agus modh blobs a fhaightear trí dhá rud crann"
+
+#: command-list.h
+msgid "Show changes using common diff tools"
+msgstr "Taispeáin athruithe ag úsáid uirlisí coitianta diff"
+
+#: command-list.h
+msgid "Git data exporter"
+msgstr "Easpórtóir sonraí Git"
+
+#: command-list.h
+msgid "Backend for fast Git data importers"
+msgstr "Backend d'allmhaireoirí sonraí tapa Git"
+
+#: command-list.h
+msgid "Download objects and refs from another repository"
+msgstr "Íoslódáil rudaí agus réimsí ó stór eile"
+
+#: command-list.h
+msgid "Receive missing objects from another repository"
+msgstr "Faigh rudaí atá in easnamh ó stór eile"
+
+#: command-list.h
+msgid "Rewrite branches"
+msgstr "Brainsí a athscríobh"
+
+#: command-list.h
+msgid "Produce a merge commit message"
+msgstr "Teachtaireacht tiomanta cumaisc a chur"
+
+#: command-list.h
+msgid "Output information on each ref"
+msgstr "Eolas aschuir ar gach tagairt"
+
+#: command-list.h
+msgid "Run a Git command on a list of repositories"
+msgstr "Rith ordú Git ar liosta stórais"
+
+#: command-list.h
+msgid "Prepare patches for e-mail submission"
+msgstr "Ullmhaigh paistí le haghaidh aighneachta"
+
+#: command-list.h
+msgid "Verifies the connectivity and validity of the objects in the database"
+msgstr "Fíoraíonn sé nascacht agus bailíocht na rudaí sa bhunachar sonraí"
+
+#: command-list.h
+msgid "Cleanup unnecessary files and optimize the local repository"
+msgstr "Glan comhaid gan ghá agus an stór áitiúil a bharrfheabhsú"
+
+#: command-list.h
+msgid "Extract commit ID from an archive created using git-archive"
+msgstr ""
+"Bain ID tiomanta as cartlann a cruthaíodh ag baint úsáide as git-archive"
+
+#: command-list.h
+msgid "Print lines matching a pattern"
+msgstr "Línte priontála a mheaitseálann"
+
+#: command-list.h
+msgid "A portable graphical interface to Git"
+msgstr "Comhéadan grafach iniompartha chuig Git"
+
+#: command-list.h
+msgid "Compute object ID and optionally create an object from a file"
+msgstr "Ríomh ID réad agus cruthaigh réad ó chomhad go roghnach"
+
+#: command-list.h
+msgid "Display help information about Git"
+msgstr "Taispeáin faisnéis chabhrach faoi Git"
+
+#: command-list.h
+msgid "Run git hooks"
+msgstr "Rith crúcaí git"
+
+#: command-list.h
+msgid "Server side implementation of Git over HTTP"
+msgstr "Cur i bhfeidhm taobh freastalaí Git thar HTTP"
+
+#: command-list.h
+msgid "Download from a remote Git repository via HTTP"
+msgstr "Íoslódáil ó stór iargúlta Git trí HTTP"
+
+#: command-list.h
+msgid "Push objects over HTTP/DAV to another repository"
+msgstr "Brúigh rudaí thar HTTP/DAV chuig stór eile"
+
+#: command-list.h
+msgid "Send a collection of patches from stdin to an IMAP folder"
+msgstr "Seol bailiúchán paistí ó stdin chuig fillteán IMAP"
+
+#: command-list.h
+msgid "Build pack index file for an existing packed archive"
+msgstr "Tóg comhad innéacs pacáiste do chartlann pacáilte atá ann"
+
+#: command-list.h
+msgid "Create an empty Git repository or reinitialize an existing one"
+msgstr "Cruthaigh stór Git folamh nó déan ceann atá ann cheana a athionsú"
+
+#: command-list.h
+msgid "Instantly browse your working repository in gitweb"
+msgstr "Brabhsáil láithreach do stór oibre i gitweb"
+
+#: command-list.h
+msgid "Add or parse structured information in commit messages"
+msgstr "Cuir nó déan faisnéis struchtúrtha i dteachtaireachtaí tiomanta"
+
+#: command-list.h
+msgid "Show commit logs"
+msgstr "Taispeáin logaí tiomanta"
+
+#: command-list.h
+msgid "Show information about files in the index and the working tree"
+msgstr "Taispeáin faisnéis faoi chomhaid san innéacs agus sa chrann oibre"
+
+#: command-list.h
+msgid "List references in a remote repository"
+msgstr "Liostaigh tagairtí i stór iargúlta"
+
+#: command-list.h
+msgid "List the contents of a tree object"
+msgstr "Liostaigh ábhar réad crann"
+
+#: command-list.h
+msgid "Extracts patch and authorship from a single e-mail message"
+msgstr "Baineann paiste agus údaracht as teachtaireacht ríomhphoist amháin"
+
+#: command-list.h
+msgid "Simple UNIX mbox splitter program"
+msgstr "Clár scoilteora mbox UNIX simplí"
+
+#: command-list.h
+msgid "Run tasks to optimize Git repository data"
+msgstr "Rith tascanna chun sonraí stór Git a bharrfheabhsú"
+
+#: command-list.h
+msgid "Join two or more development histories together"
+msgstr "Bí le dhá stair forbartha nó níos mó le chéile"
+
+#: command-list.h
+msgid "Find as good common ancestors as possible for a merge"
+msgstr "Faigh sinsear choiteann chomh maith agus is féidir le cumasc"
+
+#: command-list.h
+msgid "Run a three-way file merge"
+msgstr "Rith cumasc comhad trí bhealach"
+
+#: command-list.h
+msgid "Run a merge for files needing merging"
+msgstr "Reáchtáil cumaisc le haghaidh comhaid a bhfuil gá le cumasc orthu"
+
+#: command-list.h
+msgid "The standard helper program to use with git-merge-index"
+msgstr "An clár cúntóra caighdeánach le húsáid le git-merge-index"
+
+#: command-list.h
+msgid "Perform merge without touching index or working tree"
+msgstr "Déan cumasc gan teagmháil a dhéanamh le hInnéacs nó crann"
+
+#: command-list.h
+msgid "Run merge conflict resolution tools to resolve merge conflicts"
+msgstr "Rith uirlisí réitigh coinbhleachtaí cumaisc chun coinbhleachtaí"
+
+#: command-list.h
+msgid "Creates a tag object with extra validation"
+msgstr "Cruthaíonn sé réad clibeanna le bailíochtú breise"
+
+#: command-list.h
+msgid "Build a tree-object from ls-tree formatted text"
+msgstr "Tóg réad crann ó théacs formáidithe ls-tree"
+
+#: command-list.h
+msgid "Write and verify multi-pack-indexes"
+msgstr "Innéacsanna il-phacáiste a scríobh agus a fhíorú"
+
+#: command-list.h
+msgid "Move or rename a file, a directory, or a symlink"
+msgstr "Bogadh nó athainmnigh comhad, eolaire, nó nasc comhsheasmhach"
+
+#: command-list.h
+msgid "Find symbolic names for given revs"
+msgstr "Faigh ainmneacha siombalacha do thiomhartha tugtha"
+
+#: command-list.h
+msgid "Add or inspect object notes"
+msgstr "Cuir nó iniúchadh nótaí réad"
+
+#: command-list.h
+msgid "Import from and submit to Perforce repositories"
+msgstr "Iompórtáil ó stórais Perforce agus cuir isteach chuig"
+
+#: command-list.h
+msgid "Create a packed archive of objects"
+msgstr "Cruthaigh cartlann pacáilte rudaí"
+
+#: command-list.h
+msgid "Find redundant pack files"
+msgstr "Faigh comhaid pacáiste iomarcacha"
+
+#: command-list.h
+msgid "Pack heads and tags for efficient repository access"
+msgstr "Ceannanna agus clibeanna pacála le haghaidh rochtain éifeachtach"
+
+#: command-list.h
+msgid "Compute unique ID for a patch"
+msgstr "Ríomh ID uathúil le haghaidh paiste"
+
+#: command-list.h
+msgid "Prune all unreachable objects from the object database"
+msgstr ""
+"Déan gach rud nach féidir inrochtana a ghearradh ón mbunachar sonraí réad"
+
+#: command-list.h
+msgid "Remove extra objects that are already in pack files"
+msgstr "Bain rudaí breise atá i gcomhaid pacáiste cheana féin"
+
+#: command-list.h
+msgid "Fetch from and integrate with another repository or a local branch"
+msgstr "Faigh ó stór eile nó brainse áitiúil agus comhtháthú leis"
+
+#: command-list.h
+msgid "Update remote refs along with associated objects"
+msgstr "Nuashonraigh iargúlta mar aon le rudaí gaolmhara"
+
+#: command-list.h
+msgid "Applies a quilt patchset onto the current branch"
+msgstr "Cuireann paistset cuilte i bhfeidhm ar an mbrainse reatha"
+
+#: command-list.h
+msgid "Compare two commit ranges (e.g. two versions of a branch)"
+msgstr "Déan comparáid idir dhá raon tiomanta (e.g. dhá leagan de bhrainse)"
+
+#: command-list.h
+msgid "Reads tree information into the index"
+msgstr "Léann faisnéis crainn isteach san innéacs"
+
+#: command-list.h
+msgid "Reapply commits on top of another base tip"
+msgstr "Déan gealltanna a athchur i bhfeidhm ar bharr leid bonn eile"
+
+#: command-list.h
+msgid "Receive what is pushed into the repository"
+msgstr "Faigh an méid a bhrúitear isteach sa stór"
+
+#: command-list.h
+msgid "Manage reflog information"
+msgstr "Bainistigh faisnéis reflog"
+
+#: command-list.h
+msgid "Low-level access to refs"
+msgstr "Rochtain ar leibhéal íseal ar réimsí"
+
+#: command-list.h
+msgid "Manage set of tracked repositories"
+msgstr "Bainistigh sraith stórais rianaithe"
+
+#: command-list.h
+msgid "Pack unpacked objects in a repository"
+msgstr "Pacáil rudaí neamhphacáilte i stóras"
+
+#: command-list.h
+msgid "Create, list, delete refs to replace objects"
+msgstr "Cruthaigh, liostáil, scrios scríobh chun rudaí a athsholáthar"
+
+#: command-list.h
+msgid "EXPERIMENTAL: Replay commits on a new base, works with bare repos too"
+msgstr ""
+"TURGNAMHACH: Tiomann athsheoladh ar bhonn nua, oibríonn sé le repos lom "
+"freisin"
+
+#: command-list.h
+msgid "Generates a summary of pending changes"
+msgstr "Gineann achoimre ar athruithe ar feitheamh"
+
+#: command-list.h
+msgid "Reuse recorded resolution of conflicted merges"
+msgstr "Réiteach taifeadta ar chumaisc coinbhleachta a athúsáid"
+
+#: command-list.h
+msgid "Reset current HEAD to the specified state"
+msgstr "Athshocraigh HEAD reatha go dtí an stát sonraithe"
+
+#: command-list.h
+msgid "Restore working tree files"
+msgstr "Athchóirigh comhaid crann oibre"
+
+#: command-list.h
+msgid "Lists commit objects in reverse chronological order"
+msgstr "Tiomann liostaí rudaí in ord croineolaíoch droim"
+
+#: command-list.h
+msgid "Pick out and massage parameters"
+msgstr "Paraiméadair a roghnú agus massage"
+
+#: command-list.h
+msgid "Revert some existing commits"
+msgstr "Cuir roinnt gealltanais atá ann cheana ar ais"
+
+#: command-list.h
+msgid "Remove files from the working tree and from the index"
+msgstr "Bain comhaid ón gcrann oibre agus ón innéacs"
+
+#: command-list.h
+msgid "Send a collection of patches as emails"
+msgstr "Seol bailiúchán paistí mar ríomhphoist"
+
+#: command-list.h
+msgid "Push objects over Git protocol to another repository"
+msgstr "Brúigh rudaí thar phrótacal Git chuig stór eile"
+
+#: command-list.h
+msgid "Git's i18n setup code for shell scripts"
+msgstr "Cód socraithe i18n Git le haghaidh scripteanna blaosc"
+
+#: command-list.h
+msgid "Common Git shell script setup code"
+msgstr "Cód socraithe script bhlaosc Git coitianta"
+
+#: command-list.h
+msgid "Restricted login shell for Git-only SSH access"
+msgstr "Blaosc logála isteach srianta le haghaidh rochtain SSH GIT amháin"
+
+#: command-list.h
+msgid "Summarize 'git log' output"
+msgstr "Achoimre ar aschur 'git log'"
+
+#: command-list.h
+msgid "Show various types of objects"
+msgstr "Taispeáin cineálacha éagsúla rudaí"
+
+#: command-list.h
+msgid "Show branches and their commits"
+msgstr "Taispeáin brainsí agus a ngealltanais"
+
+#: command-list.h
+msgid "Show packed archive index"
+msgstr "Taispeáin an t-innéacs cartlainne"
+
+#: command-list.h
+msgid "List references in a local repository"
+msgstr "Liostaigh tagairtí i stóras áitiúil"
+
+#: command-list.h
+msgid "Reduce your working tree to a subset of tracked files"
+msgstr "Laghdaigh do chrann oibre go fo-thacar de chomhaid rianaithe"
+
+#: command-list.h
+msgid "Add file contents to the staging area"
+msgstr "Cuir ábhar an chomhaid leis an limistéar stáitse"
+
+#: command-list.h
+msgid "Stash the changes in a dirty working directory away"
+msgstr "Stóráil na hathruithe in eolaire oibre salach ar shiúl"
+
+#: command-list.h
+msgid "Show the working tree status"
+msgstr "Taispeáin stádas an chrann oibre"
+
+#: command-list.h
+msgid "Remove unnecessary whitespace"
+msgstr "Bain spás bán gan ghá"
+
+#: command-list.h
+msgid "Initialize, update or inspect submodules"
+msgstr "Fo-mhodúil a thionscnamh, a nuashonrú nó a"
+
+#: command-list.h
+msgid "Bidirectional operation between a Subversion repository and Git"
+msgstr "Oibriú déthreorach idir stór Subversion agus Git"
+
+#: command-list.h
+msgid "Switch branches"
+msgstr "Athraigh brainsí"
+
+#: command-list.h
+msgid "Read, modify and delete symbolic refs"
+msgstr "Léigh, modhnaigh agus scriosadh taiscéalaí siombalacha"
+
+#: command-list.h
+msgid "Create, list, delete or verify a tag object signed with GPG"
+msgstr "Cruthaigh, liostáil, scrios nó fíorú réad clibeanna sínithe le GPG"
+
+#: command-list.h
+msgid "Creates a temporary file with a blob's contents"
+msgstr "Cruthaíonn sé comhad sealadach le hábhar blob"
+
+#: command-list.h
+msgid "Unpack objects from a packed archive"
+msgstr "Díphacáil rudaí ó chartlann pacáilte"
+
+#: command-list.h
+msgid "Register file contents in the working tree to the index"
+msgstr "Cláraigh ábhar an chomhaid sa chrann oibre chuig an innéacs"
+
+#: command-list.h
+msgid "Update the object name stored in a ref safely"
+msgstr "Nuashonraigh ainm an réad atá stóráilte i dtagairt go sá"
+
+#: command-list.h
+msgid "Update auxiliary info file to help dumb servers"
+msgstr "Nuashonraigh comhad faisnéise cúnta chun cabhrú le freastalaithe"
+
+#: command-list.h
+msgid "Send archive back to git-archive"
+msgstr "Seol cartlann ar ais chuig git-archive"
+
+#: command-list.h
+msgid "Send objects packed back to git-fetch-pack"
+msgstr "Seol rudaí pacáilte ar ais chuig git-fetch-pack"
+
+#: command-list.h
+msgid "Show a Git logical variable"
+msgstr "Taispeáin athróg loighciúil Git"
+
+#: command-list.h
+msgid "Check the GPG signature of commits"
+msgstr "Seiceáil síniú GPG na ngealltanais"
+
+#: command-list.h
+msgid "Validate packed Git archive files"
+msgstr "Bailíochtú comhaid cartlainne Git pacáilte"
+
+#: command-list.h
+msgid "Check the GPG signature of tags"
+msgstr "Seiceáil síniú GPG na gclibeanna"
+
+#: command-list.h
+msgid "Display version information about Git"
+msgstr "Taispeáin faisnéis leagan faoi Git"
+
+#: command-list.h
+msgid "Show logs with differences each commit introduces"
+msgstr "Taispeáin logaí le difríochtaí a thugann gach tiomantas"
+
+#: command-list.h
+msgid "Manage multiple working trees"
+msgstr "Bainistigh iliomad crainn oibre"
+
+#: command-list.h
+msgid "Create a tree object from the current index"
+msgstr "Cruthaigh réad crann ón innéacs reatha"
+
+#: command-list.h
+msgid "Defining attributes per path"
+msgstr "Sainmhíniú tréithe in aghaidh an"
+
+#: command-list.h
+msgid "Git command-line interface and conventions"
+msgstr "Comhéadan agus coinbhinsiúin líne ordaithe Git"
+
+#: command-list.h
+msgid "A Git core tutorial for developers"
+msgstr "Teagaisc lárnach Git d'fhorbróirí"
+
+#: command-list.h
+msgid "Providing usernames and passwords to Git"
+msgstr "Ainmneacha úsáideora agus pasfhocail a sholáthar do"
+
+#: command-list.h
+msgid "Git for CVS users"
+msgstr "Git d'úsáideoirí CVS"
+
+#: command-list.h
+msgid "Tweaking diff output"
+msgstr "Aschur difriúil a athrú"
+
+#: command-list.h
+msgid "A useful minimum set of commands for Everyday Git"
+msgstr "Sraith íosta úsáideach orduithe do Everyday Git"
+
+#: command-list.h
+msgid "Frequently asked questions about using Git"
+msgstr "Ceisteanna coitianta faoi úsáid Git"
+
+#: command-list.h
+msgid "The bundle file format"
+msgstr "An formáid comhaid beartán"
+
+#: command-list.h
+msgid "Chunk-based file formats"
+msgstr "Formáidí comhaid bunaithe ar bhunús"
+
+#: command-list.h
+msgid "Git commit-graph format"
+msgstr "Formáid comh-graph Git"
+
+#: command-list.h
+msgid "Git index format"
+msgstr "Formáid innéacs Git"
+
+#: command-list.h
+msgid "Git pack format"
+msgstr "Formáid pacáiste Git"
+
+#: command-list.h
+msgid "Git cryptographic signature formats"
+msgstr "Formáidí sínithe cripteagrafach Git"
+
+#: command-list.h
+msgid "A Git Glossary"
+msgstr "Gloclóir Git"
+
+#: command-list.h
+msgid "Hooks used by Git"
+msgstr "Crúcaí a úsáideann Git"
+
+#: command-list.h
+msgid "Specifies intentionally untracked files to ignore"
+msgstr "Sonraíonn sé comhaid neamhrianaithe de ghnó le neamhaird"
+
+#: command-list.h
+msgid "The Git repository browser"
+msgstr "Brabhsálaí stór Git"
+
+#: command-list.h
+msgid "Map author/committer names and/or E-Mail addresses"
+msgstr "Léarscáil ainmneacha údar/coistí agus/nó seoltaí rí"
+
+#: command-list.h
+msgid "Defining submodule properties"
+msgstr "Airíonna fomhodúil a shainiú"
+
+#: command-list.h
+msgid "Git namespaces"
+msgstr "Spásanna ainmneacha Git"
+
+#: command-list.h
+msgid "Protocol v0 and v1 capabilities"
+msgstr "Cumais Prótacal v0 agus v1"
+
+#: command-list.h
+msgid "Things common to various protocols"
+msgstr "Rudaí coitianta le prótacail éagsúla"
+
+#: command-list.h
+msgid "Git HTTP-based protocols"
+msgstr "Prótacail Git HTTP bunaithe"
+
+#: command-list.h
+msgid "How packs are transferred over-the-wire"
+msgstr "Conas a aistrítear pacáistí thar an sreang"
+
+#: command-list.h
+msgid "Git Wire Protocol, Version 2"
+msgstr "Prótacal Wire Git, Leagan 2"
+
+#: command-list.h
+msgid "Helper programs to interact with remote repositories"
+msgstr "Cláir chúntóirí chun idirghníomhú le stórálaí"
+
+#: command-list.h
+msgid "Git Repository Layout"
+msgstr "Leagan Amach Stórála Git"
+
+#: command-list.h
+msgid "Specifying revisions and ranges for Git"
+msgstr "Athbhreithnithe agus raonta a shonrú do Git"
+
+#: command-list.h
+msgid "Mounting one repository inside another"
+msgstr "Stóra amháin a chur isteach taobh istigh de cheann"
+
+#: command-list.h
+msgid "A tutorial introduction to Git"
+msgstr "Réamhrá teagaisc ar Git"
+
+#: command-list.h
+msgid "A tutorial introduction to Git: part two"
+msgstr "Réamhrá teagaisc ar Git: cuid a dara"
+
+#: command-list.h
+msgid "Git web interface (web frontend to Git repositories)"
+msgstr "Comhéadan gréasáin Git (tosaigh gréasáin chuig stórais Git)"
+
+#: command-list.h
+msgid "An overview of recommended workflows with Git"
+msgstr "Forbhreathnú ar shreafaí oibre a mholtar le Git"
+
+#: command-list.h
+msgid "A tool for managing large Git repositories"
+msgstr "Uirlis chun stórtha móra Git a bhainistiú"
+
+#: commit-graph.c
+msgid "commit-graph file is too small"
+msgstr "tá comhad coimit-graph ró-bheag"
+
+#: commit-graph.c
+msgid "commit-graph oid fanout chunk is wrong size"
+msgstr "tá an méid mícheart ar an smután fanout oid commit-graph"
+
+#: commit-graph.c
+msgid "commit-graph fanout values out of order"
+msgstr "luachanna fanout choimisi-graph as ord"
+
+#: commit-graph.c
+msgid "commit-graph OID lookup chunk is the wrong size"
+msgstr "tá an méid mícheart ar an smután cuardaigh OID commit-graph"
+
+#: commit-graph.c
+msgid "commit-graph commit data chunk is wrong size"
+msgstr "tá méid mícheart ar an smután sonraí commit commit-graph"
+
+#: commit-graph.c
+msgid "commit-graph generations chunk is wrong size"
+msgstr "is méid mícheart é an píosa glúine ghlúin chomhghraif"
+
+#: commit-graph.c
+msgid "commit-graph changed-path index chunk is too small"
+msgstr "tá píosa innéacs cosáin athraithe coimisithe ró-bheag"
+
+#: commit-graph.c
+#, c-format
+msgid ""
+"ignoring too-small changed-path chunk (%<PRIuMAX> < %<PRIuMAX>) in commit-"
+"graph file"
+msgstr ""
+"ag neamhaird a dhéanamh den smután róbheag den chonair athraithe (%<PRIuMAX> "
+"< %<PRIuMAX>) i gcomhad commit-graph"
+
+#: commit-graph.c
+#, c-format
+msgid "commit-graph signature %X does not match signature %X"
+msgstr "ní mheaitseálann síniú gráf coimiteach %X síniú %X"
+
+#: commit-graph.c
+#, c-format
+msgid "commit-graph version %X does not match version %X"
+msgstr "ní hionann leagan %X den commit-graph agus leagan %X"
+
+#: commit-graph.c
+#, c-format
+msgid "commit-graph hash version %X does not match version %X"
+msgstr "ní hionann leagan %X den hais commit-graph agus leagan %X"
+
+#: commit-graph.c
+#, c-format
+msgid "commit-graph file is too small to hold %u chunks"
+msgstr "tá comhad comh-graph ró-bheag chun codanna %u a choinneáil"
+
+#: commit-graph.c
+msgid "commit-graph required OID fanout chunk missing or corrupted"
+msgstr "teastaíonn gráf coimisiúnaithe OID ar iarraidh nó truaillithe"
+
+#: commit-graph.c
+msgid "commit-graph required OID lookup chunk missing or corrupted"
+msgstr "teastaíonn píosa cuardaigh OID atá ar iarraidh nó truaillithe"
+
+#: commit-graph.c
+msgid "commit-graph required commit data chunk missing or corrupted"
+msgstr ""
+"gráf choimisiúnaithe riachtanach a thabhairt do chuid sonraí atá ar iarraidh "
+"nó"
+
+#: commit-graph.c
+#, c-format
+msgid ""
+"disabling Bloom filters for commit-graph layer '%s' due to incompatible "
+"settings"
+msgstr ""
+"scagairí Bloom a dhíchumasú le haghaidh ciseal coimit-graf '%s' mar gheall "
+"ar shuíomhanna neamh-chomho"
+
+#: commit-graph.c
+msgid "commit-graph has no base graphs chunk"
+msgstr "níl aon phíosa graif bunghraif ag commit-graph"
+
+#: commit-graph.c
+msgid "commit-graph base graphs chunk is too small"
+msgstr "tá an píosa graif bonn coimisi-graf ró-bheag"
+
+#: commit-graph.c
+msgid "commit-graph chain does not match"
+msgstr "ní mheaitseálann slabhra graf coimisiúnaithe"
+
+#: commit-graph.c
+#, c-format
+msgid "commit count in base graph too high: %<PRIuMAX>"
+msgstr "líon tiomanta i mbonngraf ró-ard:%<PRIuMAX>"
+
+#: commit-graph.c
+msgid "commit-graph chain file too small"
+msgstr "comhad slabhra commit-graph ró-bheag"
+
+#: commit-graph.c
+#, c-format
+msgid "invalid commit-graph chain: line '%s' not a hash"
+msgstr "slabhra coimit-graf neamhbhailí: ní hash é líne '%s'"
+
+#: commit-graph.c
+msgid "unable to find all commit-graph files"
+msgstr "nach féidir gach comhad gráf coimisiúnaithe a fháil"
+
+#: commit-graph.c
+msgid "invalid commit position. commit-graph is likely corrupt"
+msgstr "post tiomanta neamhbhailí. Is dócha go bhfuil graf coimite truaillithe"
+
+#: commit-graph.c
+#, c-format
+msgid "could not find commit %s"
+msgstr "ní raibh sé in ann teacht ar thiomantas %s"
+
+#: commit-graph.c
+msgid "commit-graph requires overflow generation data but has none"
+msgstr "teastaíonn sonraí giniúna ró-shreabhadh ach níl aon cheann acu"
+
+#: commit-graph.c
+msgid "commit-graph overflow generation data is too small"
+msgstr "tá sonraí giniúna ró-shreabha tiomnaithe-graif róbheag"
+
+#: commit-graph.c
+msgid "commit-graph extra-edges pointer out of bounds"
+msgstr "léiríonn imill shrea-ghraif choimisiúin amach as teorainneacha"
+
+#: commit-graph.c
+msgid "Loading known commits in commit graph"
+msgstr "Gealltanna aitheanta a luchtú i ngraf tiomanta"
+
+#: commit-graph.c
+msgid "Expanding reachable commits in commit graph"
+msgstr "Gealltanais inrochtana a leathnú sa ghraf tiomanta"
+
+#: commit-graph.c
+msgid "Clearing commit marks in commit graph"
+msgstr "Marcanna tiomanta a ghlanadh sa ghraf tiom"
+
+#: commit-graph.c
+msgid "Computing commit graph topological levels"
+msgstr "Tiomann ríomhaireacht leibhéil topaic"
+
+#: commit-graph.c
+msgid "Computing commit graph generation numbers"
+msgstr "Tiomann an ríomhaireacht uimhreacha"
+
+#: commit-graph.c
+msgid "Computing commit changed paths Bloom filters"
+msgstr "Déanann ríomhaireacht cosáin athraithe a"
+
+#: commit-graph.c
+msgid "Collecting referenced commits"
+msgstr "Gealltanna tagartha a bhailiú"
+
+#: commit-graph.c
+#, c-format
+msgid "Finding commits for commit graph in %<PRIuMAX> pack"
+msgid_plural "Finding commits for commit graph in %<PRIuMAX> packs"
+msgstr[0] "Ag aimsiú tiomantais don ghraf tiomantais sa phacáiste %<PRIuMAX>"
+msgstr[1] "Ag aimsiú tiomantais don ghraf tiomantais i bpacáistí %<PRIuMAX>"
+msgstr[2] "Ag aimsiú tiomantais don ghraf tiomantais i bpacáistí %<PRIuMAX>"
+
+#: commit-graph.c
+#, c-format
+msgid "error adding pack %s"
+msgstr "earráid ag cur pacáiste %s"
+
+#: commit-graph.c
+#, c-format
+msgid "error opening index for %s"
+msgstr "innéacs oscailte earráide do %s"
+
+#: commit-graph.c
+msgid "Finding commits for commit graph among packed objects"
+msgstr "Tiomantas a aimsiú maidir le graf tiomanta i measc rudaí pacá"
+
+#: commit-graph.c
+msgid "Finding extra edges in commit graph"
+msgstr "Imill bhreise a aimsiú i ngraf tiomanta"
+
+#: commit-graph.c
+msgid "failed to write correct number of base graph ids"
+msgstr "theip orthu líon ceart na n-idí graif bonn a scríobh"
+
+#: commit-graph.c
+msgid "unable to create temporary graph layer"
+msgstr "in ann ciseal graf sealadach a chruthú"
+
+#: commit-graph.c midx-write.c
+#, c-format
+msgid "unable to adjust shared permissions for '%s'"
+msgstr "nach féidir ceadanna roinnte a choigeartú do '%s'"
+
+#: commit-graph.c
+#, c-format
+msgid "Writing out commit graph in %d pass"
+msgid_plural "Writing out commit graph in %d passes"
+msgstr[0] "Ag scríobh amach graf tiomantais i %d pas"
+msgstr[1] "Ag scríobh amach graf tiomantais i %d pas"
+msgstr[2] "Ag scríobh amach graf tiomantais i %d pas"
+
+#: commit-graph.c
+msgid "unable to open commit-graph chain file"
+msgstr "nach féidir comhad slabhra coimis-graf a oscailt"
+
+#: commit-graph.c
+msgid "failed to rename base commit-graph file"
+msgstr "theip ar an gcomhad gráf bunchoiste a athainmniú"
+
+#: commit-graph.c
+msgid "failed to rename temporary commit-graph file"
+msgstr "theip ar chomhad gráf choiste sealadach a athainmniú"
+
+#: commit-graph.c
+#, c-format
+msgid "cannot merge graphs with %<PRIuMAX>, %<PRIuMAX> commits"
+msgstr "ní féidir graif a chumasc le %<PRIuMAX>, %<PRIuMAX> tiomantais"
+
+#: commit-graph.c
+#, c-format
+msgid "cannot merge graph %s, too many commits: %<PRIuMAX>"
+msgstr "ní féidir graf %s a chumasc, an iomarca tiomantais: %<PRIuMAX>"
+
+#: commit-graph.c
+msgid "Scanning merged commits"
+msgstr "Tiomanta cumaisc ag scanadh"
+
+#: commit-graph.c
+msgid "Merging commit-graph"
+msgstr "Graf coiste a chumasc"
+
+#: commit-graph.c
+msgid "attempting to write a commit-graph, but 'core.commitGraph' is disabled"
+msgstr ""
+"ag iarraidh graf coimite a scríobh, ach tá 'core.commitGraph' díchumasaithe"
+
+#: commit-graph.c
+#, c-format
+msgid ""
+"attempting to write a commit-graph, but 'commitGraph.changedPathsVersion' "
+"(%d) is not supported"
+msgstr ""
+"ag iarraidh commit-graph a scríobh, ach tá 'commitGraph.changedPathsVersion' "
+"(%d) ní thacaítear leis"
+
+#: commit-graph.c
+msgid "too many commits to write graph"
+msgstr "an iomarca gealltanais graf a scríobh"
+
+#: commit-graph.c
+msgid "the commit-graph file has incorrect checksum and is likely corrupt"
+msgstr ""
+"tá seicsum mícheart ag an gcomhad graf coimite agus is dócha go bhfuil sé "
+"truaillithe"
+
+#: commit-graph.c
+#, c-format
+msgid "commit-graph has incorrect OID order: %s then %s"
+msgstr "tá ordú OID mícheart ag commit-graph: %s ansin %s"
+
+#: commit-graph.c
+#, c-format
+msgid "commit-graph has incorrect fanout value: fanout[%d] = %u != %u"
+msgstr "tá luach fanout mícheart ag commit-graph: fanout [%d] = %u! = %u"
+
+#: commit-graph.c
+#, c-format
+msgid "failed to parse commit %s from commit-graph"
+msgstr "theip ar thiomantas %s a pharsáil ó ghraif choimisiúnaithe"
+
+#: commit-graph.c
+#, c-format
+msgid "failed to parse commit %s from object database for commit-graph"
+msgstr ""
+"theip ar thiomantas %s a pharsáil ó bhunachar sonraí réad le haghaidh graf "
+"coimite"
+
+#: commit-graph.c
+#, c-format
+msgid "root tree OID for commit %s in commit-graph is %s != %s"
+msgstr ""
+"crann fréimhe Is é OID do thiomantas %s sa ghraf tiomantais ná %s != %s"
+
+#: commit-graph.c
+#, c-format
+msgid "commit-graph parent list for commit %s is too long"
+msgstr "tá liosta tuismitheoirí comh-graph do thiomantas %s rófhada"
+
+#: commit-graph.c
+#, c-format
+msgid "commit-graph parent for %s is %s != %s"
+msgstr "is é an tuismitheoir comh-graph do %s ná %s! = %s"
+
+#: commit-graph.c
+#, c-format
+msgid "commit-graph parent list for commit %s terminates early"
+msgstr ""
+"foirceannann liosta tuismitheora commit-graph le haghaidh commit %s go luath"
+
+#: commit-graph.c
+#, c-format
+msgid "commit-graph generation for commit %s is %<PRIuMAX> < %<PRIuMAX>"
+msgstr ""
+"is é giniúint commit-graph le haghaidh commit %s %<PRIuMAX> < %<PRIuMAX>"
+
+#: commit-graph.c
+#, c-format
+msgid "commit date for commit %s in commit-graph is %<PRIuMAX> != %<PRIuMAX>"
+msgstr ""
+"is é dáta tiomantais don tiomantas %s i commit-graph %<PRIuMAX> != %<PRIuMAX>"
+
+#: commit-graph.c
+#, c-format
+msgid ""
+"commit-graph has both zero and non-zero generations (e.g., commits '%s' and "
+"'%s')"
+msgstr ""
+"tá glúine nialasach agus neamh-nialasach ag comh-graph (e.g., geallann sé "
+"'%s' agus '%s')"
+
+#: commit-graph.c
+msgid "Verifying commits in commit graph"
+msgstr "Gealltanna a fhíorú i ngraf tiomanta"
+
+#: commit-reach.c sequencer.c
+#, c-format
+msgid "could not parse commit %s"
+msgstr "ní fhéadfaí a pharsáil a dhéanamh ar thiomantas %s"
+
+#: commit.c
+#, c-format
+msgid "%s %s is not a commit!"
+msgstr "Ní gealltanas é %s %s!"
+
+#: commit.c
+msgid ""
+"Support for <GIT_DIR>/info/grafts is deprecated\n"
+"and will be removed in a future Git version.\n"
+"\n"
+"Please use \"git replace --convert-graft-file\"\n"
+"to convert the grafts into replace refs.\n"
+"\n"
+"Turn this message off by running\n"
+"\"git config set advice.graftFileDeprecated false\""
+msgstr ""
+"Tá tacaíocht d' <GIT_DIR>/info/grafts imithe\n"
+"agus bainfear é i leagan Git amach anseo.\n"
+"\n"
+"Úsáid le do thoil “git replace --convert-graft-file”\n"
+"chun na grafts a thiontú ina ionad refs.\n"
+"\n"
+"Cas an teachtaireacht seo as trí rith\n"
+"“git config socraigh advice.graftFileDeprecated bréagach”"
+
+#: commit.c
+#, c-format
+msgid "commit %s exists in commit-graph but not in the object database"
+msgstr "tá comhad %s ann sa choimit-graph ach níl sa bhunachar sonraí réad"
+
+#: commit.c
+#, c-format
+msgid "Commit %s has an untrusted GPG signature, allegedly by %s."
+msgstr "Tá síniú GPG neamhiontaofa ag Commit %s, a líomhnaítear ag %s."
+
+#: commit.c
+#, c-format
+msgid "Commit %s has a bad GPG signature allegedly by %s."
+msgstr "Tá droch-shíniú GPG ag Commit %s a líomhnaítear ag %s."
+
+#: commit.c
+#, c-format
+msgid "Commit %s does not have a GPG signature."
+msgstr "Níl síniú GPG ag Teacht %s."
+
+#: commit.c
+#, c-format
+msgid "Commit %s has a good GPG signature by %s\n"
+msgstr "Tá síniú maith GPG ag Teacht %s le %s\n"
+
+#: commit.c
+msgid ""
+"Warning: commit message did not conform to UTF-8.\n"
+"You may want to amend it after fixing the message, or set the config\n"
+"variable i18n.commitEncoding to the encoding your project uses.\n"
+msgstr ""
+"Rabhadh: níor chomhlíon teachtaireacht tiomanta le UTF-8.\n"
+"B'fhéidir gur mhaith leat é a leasú tar éis an teachtaireacht a shocrú, nó "
+"an cumraíocht a shocrú\n"
+"athróg i18N.CommitEncoding don ionchódú a úsáideann do thionscadal.\n"
+
+#: compat/compiler.h
+msgid "no compiler information available\n"
+msgstr "níl aon fhaisnéis tiomsaitheora ar fáil\n"
+
+#: compat/compiler.h
+msgid "no libc information available\n"
+msgstr "níl aon fhaisnéis libc ar fáil\n"
+
+#: compat/disk.h
+#, c-format
+msgid "could not determine free disk size for '%s'"
+msgstr "ní fhéadfaí méid diosca saor in aisce a chinneadh do '%s'"
+
+#: compat/disk.h
+#, c-format
+msgid "could not get info for '%s'"
+msgstr "ní fhéadfaí faisnéis a fháil do '%s'"
+
+#: compat/fsmonitor/fsm-health-win32.c
+#, c-format
+msgid "[GLE %ld] health thread could not open '%ls'"
+msgstr "[GLE %ld] ní fhéadfadh snáithe sláinte '%ls' a oscailt"
+
+#: compat/fsmonitor/fsm-health-win32.c
+#, c-format
+msgid "[GLE %ld] health thread getting BHFI for '%ls'"
+msgstr "[GLE %ld] snáithe sláinte ag fáil BHFI do '%ls'"
+
+#: compat/fsmonitor/fsm-health-win32.c compat/fsmonitor/fsm-listen-win32.c
+#, c-format
+msgid "could not convert to wide characters: '%s'"
+msgstr "ní raibh sé in ann tiontú go carachtair leathan: '%s'"
+
+#: compat/fsmonitor/fsm-health-win32.c
+#, c-format
+msgid "BHFI changed '%ls'"
+msgstr "Athraigh BHFI '%ls'"
+
+#: compat/fsmonitor/fsm-health-win32.c
+#, c-format
+msgid "unhandled case in 'has_worktree_moved': %d"
+msgstr "cás neamh-láimhseáilte i 'has_worktree_moved': %d"
+
+#: compat/fsmonitor/fsm-health-win32.c
+#, c-format
+msgid "health thread wait failed [GLE %ld]"
+msgstr "theip ar fanacht snáithe sláinte [GLE %ld]"
+
+#: compat/fsmonitor/fsm-ipc-darwin.c
+#, c-format
+msgid "Invalid path: %s"
+msgstr "Conair neamhbhailí: %s"
+
+#: compat/fsmonitor/fsm-listen-darwin.c
+msgid "Unable to create FSEventStream."
+msgstr "Ní féidir FSeventStream a chruthú."
+
+#: compat/fsmonitor/fsm-listen-darwin.c
+msgid "Failed to start the FSEventStream"
+msgstr "Theip ar an FSevenStream a thosú"
+
+#: compat/fsmonitor/fsm-listen-win32.c
+#, c-format
+msgid "[GLE %ld] could not convert path to UTF-8: '%.*ls'"
+msgstr "[GLE %ld] níorbh fhéidir an cosán a thiontú go UTF-8: '%.*ls'"
+
+#: compat/fsmonitor/fsm-listen-win32.c
+#, c-format
+msgid "[GLE %ld] could not watch '%s'"
+msgstr "Ní raibh [GLE %ld] in ann féachaint ar '%s'"
+
+#: compat/fsmonitor/fsm-listen-win32.c
+#, c-format
+msgid "[GLE %ld] could not get longname of '%s'"
+msgstr "Ní raibh [GLE %ld] in ann ainm fadainm '%s' a fháil"
+
+#: compat/fsmonitor/fsm-listen-win32.c
+#, c-format
+msgid "ReadDirectoryChangedW failed on '%s' [GLE %ld]"
+msgstr "Theip ar ReadDirectoryChangedW ar '%s' [GLE %ld]"
+
+#: compat/fsmonitor/fsm-listen-win32.c
+#, c-format
+msgid "GetOverlappedResult failed on '%s' [GLE %ld]"
+msgstr "Theip ar getOverlappedResult ar '%s' [GLE %ld]"
+
+#: compat/fsmonitor/fsm-listen-win32.c
+#, c-format
+msgid "could not read directory changes [GLE %ld]"
+msgstr "ní fhéadfaí athruithe eolaire a léamh [GLE %ld]"
+
+#: compat/fsmonitor/fsm-path-utils-darwin.c
+#, c-format
+msgid "opendir('%s') failed"
+msgstr "theip ar opendir ('%s')"
+
+#: compat/fsmonitor/fsm-path-utils-darwin.c
+#, c-format
+msgid "lstat('%s') failed"
+msgstr "theip ar lstat ('%s')"
+
+#: compat/fsmonitor/fsm-path-utils-darwin.c
+#, c-format
+msgid "strbuf_readlink('%s') failed"
+msgstr "theip ar strbuf_readlink ('%s')"
+
+#: compat/fsmonitor/fsm-path-utils-darwin.c
+#, c-format
+msgid "closedir('%s') failed"
+msgstr "theip ar closedir ('%s')"
+
+#: compat/fsmonitor/fsm-path-utils-win32.c
+#, c-format
+msgid "[GLE %ld] unable to open for read '%ls'"
+msgstr "[GLE %ld] nach féidir é a oscailt le haghaidh léamh '%ls'"
+
+#: compat/fsmonitor/fsm-path-utils-win32.c
+#, c-format
+msgid "[GLE %ld] unable to get protocol information for '%ls'"
+msgstr "[GLE %ld] in ann faisnéis phrótacail a fháil do '%ls'"
+
+#: compat/mingw.c
+#, c-format
+msgid "failed to copy SID (%ld)"
+msgstr "theip ar SID (%ld) a chóipeáil"
+
+#: compat/mingw.c
+#, c-format
+msgid "failed to get owner for '%s' (%ld)"
+msgstr "theip ar úinéir a fháil do '%s' (%ld)"
+
+#: compat/obstack.c
+msgid "memory exhausted"
+msgstr "cuimhne ídithe"
+
+#: compat/regex/regcomp.c
+msgid "Success"
+msgstr "Rath"
+
+#: compat/regex/regcomp.c
+msgid "No match"
+msgstr "Gan aon mheaitseáil"
+
+#: compat/regex/regcomp.c
+msgid "Invalid regular expression"
+msgstr "Léiriú rialta nebhailí"
+
+#: compat/regex/regcomp.c
+msgid "Invalid collation character"
+msgstr "Carachtar comparáide neamhbhailí"
+
+#: compat/regex/regcomp.c
+msgid "Invalid character class name"
+msgstr "Ainm ranga carachtar neamhbhailí"
+
+#: compat/regex/regcomp.c
+msgid "Trailing backslash"
+msgstr "Cúlbhraith rianaithe"
+
+#: compat/regex/regcomp.c
+msgid "Invalid back reference"
+msgstr "Tagairt cúil neamhbhailí"
+
+#: compat/regex/regcomp.c
+msgid "Unmatched [ or [^"
+msgstr "Gan chomhoiriúnú [nó [^"
+
+#: compat/regex/regcomp.c
+msgid "Unmatched ( or \\("
+msgstr "Gan chomhoiriúnú (nó\\ ("
+
+#: compat/regex/regcomp.c
+msgid "Unmatched \\{"
+msgstr "Gan comhoiriúnú\\ {"
+
+#: compat/regex/regcomp.c
+msgid "Invalid content of \\{\\}"
+msgstr "Ábhar neamhbhailí de\\ {\\}"
+
+#: compat/regex/regcomp.c
+msgid "Invalid range end"
+msgstr "Deireadh raon neamhbhailí"
+
+#: compat/regex/regcomp.c
+msgid "Memory exhausted"
+msgstr "Cuimhne ídithe"
+
+#: compat/regex/regcomp.c
+msgid "Invalid preceding regular expression"
+msgstr "Léiriú rialta neamhbhailí"
+
+#: compat/regex/regcomp.c
+msgid "Premature end of regular expression"
+msgstr "Deireadh roimh am an léirithe rialta"
+
+#: compat/regex/regcomp.c
+msgid "Regular expression too big"
+msgstr "Léiriú rialta ró-mhór"
+
+#: compat/regex/regcomp.c
+msgid "Unmatched ) or \\)"
+msgstr "Gan chomhoiriúnú) nó\\)"
+
+#: compat/regex/regcomp.c
+msgid "No previous regular expression"
+msgstr "Gan aon léiriú rialta roimhe seo"
+
+#: compat/simple-ipc/ipc-unix-socket.c compat/simple-ipc/ipc-win32.c
+msgid "could not send IPC command"
+msgstr "ní fhéadfaí ordú IPC a sheoladh"
+
+#: compat/simple-ipc/ipc-unix-socket.c compat/simple-ipc/ipc-win32.c
+msgid "could not read IPC response"
+msgstr "ní raibh sé in ann freagra IPC a léamh"
+
+#: compat/simple-ipc/ipc-unix-socket.c
+#, c-format
+msgid "could not start accept_thread '%s'"
+msgstr "ní fhéadfaí tosú accept_thread '%s'"
+
+#: compat/simple-ipc/ipc-unix-socket.c
+#, c-format
+msgid "could not start worker[0] for '%s'"
+msgstr "ní fhéadfaí oibrí [0] a thosú le haghaidh '%s'"
+
+#: compat/simple-ipc/ipc-win32.c
+#, c-format
+msgid "ConnectNamedPipe failed for '%s' (%lu)"
+msgstr "Theip ar ConnectNamedPipe le haghaidh '%s' (%lu)"
+
+#: compat/simple-ipc/ipc-win32.c
+#, c-format
+msgid "could not create fd from pipe for '%s'"
+msgstr "ní fhéadfaí fd a chruthú ó phíopa do '%s'"
+
+#: compat/simple-ipc/ipc-win32.c
+#, c-format
+msgid "could not start thread[0] for '%s'"
+msgstr "ní fhéadfaí snáithe [0] a thosú le haghaidh '%s'"
+
+#: compat/simple-ipc/ipc-win32.c
+#, c-format
+msgid "wait for hEvent failed for '%s'"
+msgstr "fanacht go dtí Theip ar feadh '%s'"
+
+#: compat/terminal.c
+msgid "cannot resume in the background, please use 'fg' to resume"
+msgstr "ní féidir atosú sa chúlra, bain úsáid as 'fg' le do thoil chun atosú"
+
+#: compat/terminal.c
+msgid "cannot restore terminal settings"
+msgstr "ní féidir le socruithe teirminéil"
+
+#: config.c
+#, c-format
+msgid ""
+"exceeded maximum include depth (%d) while including\n"
+"\t%s\n"
+"from\n"
+"\t%s\n"
+"This might be due to circular includes."
+msgstr ""
+"sháraigh an uasmhéid san áireamh doimhneacht (%d) agus\n"
+" %s\n"
+"ó\n"
+" %s\n"
+"D'fhéadfadh sé seo a bheith mar gheall ar áireamh ciorclach."
+
+#: config.c
+#, c-format
+msgid "could not expand include path '%s'"
+msgstr "ní fhéadfaí leathnú san áireamh cosán '%s'"
+
+#: config.c
+msgid "relative config includes must come from files"
+msgstr "folaíonn cumraíocht choibhneasta caithfidh teacht ó chomh"
+
+#: config.c
+msgid "relative config include conditionals must come from files"
+msgstr "ní mór coinníollacha a theacht ó chomhaid i gcumraíocht choibhneasta"
+
+#: config.c
+msgid ""
+"remote URLs cannot be configured in file directly or indirectly included by "
+"includeIf.hasconfig:remote.*.url"
+msgstr ""
+"ní féidir URLanna iargúlta a chumrú i gcomhad san áireamh go díreach nó go "
+"hindíreach ag includeIf.hasconfig:remote.*.url"
+
+#: config.c
+#, c-format
+msgid "invalid config format: %s"
+msgstr "formáid cumraíochta neamhbhailí: %s"
+
+#: config.c
+#, c-format
+msgid "missing environment variable name for configuration '%.*s'"
+msgstr "ainm athróg comhshaoil atá in easnamh do chumraíocht '%.*s'"
+
+#: config.c
+#, c-format
+msgid "missing environment variable '%s' for configuration '%.*s'"
+msgstr "athróg comhshaoil in easnamh '%s' le haghaidh cumraíocht '%.*s'"
+
+#: config.c
+#, c-format
+msgid "key does not contain a section: %s"
+msgstr "níl rannán ag eochair: %s"
+
+#: config.c
+#, c-format
+msgid "key does not contain variable name: %s"
+msgstr "níl ainm athraitheach sa eochair: %s"
+
+#: config.c sequencer.c
+#, c-format
+msgid "invalid key: %s"
+msgstr "eochair neamhbhailí: %s"
+
+#: config.c
+#, c-format
+msgid "invalid key (newline): %s"
+msgstr "eochair neamhbhailí (líne nua): %s"
+
+#: config.c
+msgid "empty config key"
+msgstr "eochair cumraíochta folamh"
+
+#: config.c
+#, c-format
+msgid "bogus config parameter: %s"
+msgstr "paraiméadar cumraíochta bréagach: %s"
+
+#: config.c
+#, c-format
+msgid "bogus format in %s"
+msgstr "formáid bhréagach i %s"
+
+#: config.c
+#, c-format
+msgid "bogus count in %s"
+msgstr "comhaireamh bréagach i %s"
+
+#: config.c
+#, c-format
+msgid "too many entries in %s"
+msgstr "an iomarca iontrálacha i %s"
+
+#: config.c
+#, c-format
+msgid "missing config key %s"
+msgstr "eochair chumraithe %s in easnamh"
+
+#: config.c
+#, c-format
+msgid "missing config value %s"
+msgstr "luach cumraíochta %s ar iarraidh"
+
+#: config.c
+#, c-format
+msgid "bad config line %d in blob %s"
+msgstr "droch-líne cumraíochta %d i mblob %s"
+
+#: config.c
+#, c-format
+msgid "bad config line %d in file %s"
+msgstr "droch-líne cumraíochta %d i gcomhad %s"
+
+#: config.c
+#, c-format
+msgid "bad config line %d in standard input"
+msgstr "droch-líne cumraíochta %d i ionchur caighdeánach"
+
+#: config.c
+#, c-format
+msgid "bad config line %d in submodule-blob %s"
+msgstr "droch-líne cumraíochta %d i bhfo-modul-blob %s"
+
+#: config.c
+#, c-format
+msgid "bad config line %d in command line %s"
+msgstr "droch-líne cumraíochta %d i líne ordaithe %s"
+
+#: config.c
+#, c-format
+msgid "bad config line %d in %s"
+msgstr "droch-líne cumraíochta %d i %s"
+
+#: config.c
+msgid "out of range"
+msgstr "lasmuigh den raon"
+
+#: config.c
+msgid "invalid unit"
+msgstr "aonad neamhbhailí"
+
+#: config.c
+#, c-format
+msgid "bad numeric config value '%s' for '%s': %s"
+msgstr "droch-luach cumraíochta uimhriúil '%s' do '%s': %s"
+
+#: config.c
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
+msgstr "droch-luach cumraíochta uimhriúil '%s' do '%s' i mblob %s: %s"
+
+#: config.c
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in file %s: %s"
+msgstr "droch-luach cumraíochta uimhriúil '%s' do '%s' i gcomhad %s: %s"
+
+#: config.c
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in standard input: %s"
+msgstr ""
+"droch-luach cumraíochta uimhriúil '%s' do '%s' in ionchur caighdeánach: %s"
+
+#: config.c
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
+msgstr "droch-luach cumraíochta uimhriúil '%s' do '%s' i bhfo-mhodúl %s: %s"
+
+#: config.c
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
+msgstr "droch-luach cumraíochta uimhriúil '%s' do '%s' i líne ordaithe %s: %s"
+
+#: config.c
+#, c-format
+msgid "bad numeric config value '%s' for '%s' in %s: %s"
+msgstr "droch-luach cumraíochta uimhriúil '%s' do '%s' i %s: %s"
+
+#: config.c
+#, c-format
+msgid "invalid value for variable %s"
+msgstr "luach neamhbhailí don athróg %s"
+
+#: config.c
+#, c-format
+msgid "ignoring unknown core.fsync component '%s'"
+msgstr "neamhaird a dhéanamh ar chomhpháirt core.fsync anaithnid '%s'"
+
+#: config.c
+#, c-format
+msgid "bad boolean config value '%s' for '%s'"
+msgstr "droch-luach cumraíochta boolean '%s' do '%s'"
+
+#: config.c
+#, c-format
+msgid "failed to expand user dir in: '%s'"
+msgstr "theip ar dir an úsáideora a leathnú i: '%s'"
+
+#: config.c
+#, c-format
+msgid "'%s' for '%s' is not a valid timestamp"
+msgstr "Ní stampa ama bailí é '%s' do '%s'"
+
+#: config.c
+#, c-format
+msgid "abbrev length out of range: %d"
+msgstr "fad a ghiorrú lasmuigh den raon: %d"
+
+#: config.c
+#, c-format
+msgid "bad zlib compression level %d"
+msgstr "droch-leibhéal comhbhrúite zlib %d"
+
+#: config.c
+#, c-format
+msgid "%s cannot contain newline"
+msgstr "Ní féidir le líne nua a bheith ag %s"
+
+#: config.c
+#, c-format
+msgid "%s must have at least one character"
+msgstr "Ní mór carachtar amháin ar a laghad a bheith ag %s"
+
+#: config.c
+#, c-format
+msgid "ignoring unknown core.fsyncMethod value '%s'"
+msgstr "neamhaird a dhéanamh ar luach core.fsyncMethod anaithnid '%s'"
+
+#: config.c
+msgid "core.fsyncObjectFiles is deprecated; use core.fsync instead"
+msgstr ""
+"tá core.fsyncObjectFiles díscothaithe; bain úsáid as core.fsync ina ionad"
+
+#: config.c
+#, c-format
+msgid "invalid mode for object creation: %s"
+msgstr "modh neamhbhailí chun réad a chruthú: %s"
+
+#: config.c
+#, c-format
+msgid "malformed value for %s"
+msgstr "luach mífhoirmithe do %s"
+
+#: config.c
+#, c-format
+msgid "malformed value for %s: %s"
+msgstr "luach mífhoirmithe do %s: %s"
+
+#: config.c
+msgid "must be one of nothing, matching, simple, upstream or current"
+msgstr ""
+"caithfidh sé a bheith ar cheann de rud ar bith, meaitseálach, simplí, suas "
+"srutha nó reatha"
+
+#: config.c
+#, c-format
+msgid "unable to load config blob object '%s'"
+msgstr "nach féidir réad blob cumraithe '%s' a luchtú"
+
+#: config.c
+#, c-format
+msgid "reference '%s' does not point to a blob"
+msgstr "ní thugann tagairt '%s' in iúl do bhlob"
+
+#: config.c
+#, c-format
+msgid "unable to resolve config blob '%s'"
+msgstr "in ann clob config '%s' a réiteach"
+
+#: config.c
+msgid "unable to parse command-line config"
+msgstr "nach féidir cumraíocht líne ordaithe a pháirseáil"
+
+#: config.c
+msgid "unknown error occurred while reading the configuration files"
+msgstr "tharla earráid anaithnid agus na comhaid cumraíochta á léamh"
+
+#: config.c
+#, c-format
+msgid "Invalid %s: '%s'"
+msgstr "%s neamhbhailí: '%s'"
+
+#: config.c
+#, c-format
+msgid "splitIndex.maxPercentChange value '%d' should be between 0 and 100"
+msgstr "splitIndex.maxPercentChange value '%d' bheith idir 0 agus 100"
+
+#: config.c
+#, c-format
+msgid "unable to parse '%s' from command-line config"
+msgstr "ní féidir '%s' a pháirseáil ó chumraíocht líne ordaithe"
+
+#: config.c
+#, c-format
+msgid "bad config variable '%s' in file '%s' at line %d"
+msgstr "droch-athróg cumraithe '%s' sa chomhad '%s' ag líne %d"
+
+#: config.c
+#, c-format
+msgid "invalid section name '%s'"
+msgstr "ainm rannán neamhbhailí '%s'"
+
+#: config.c
+#, c-format
+msgid "%s has multiple values"
+msgstr "Tá luachanna iolracha ag %s"
+
+#: config.c
+#, c-format
+msgid "failed to write new configuration file %s"
+msgstr "theip ar chomhad cumraíochta nua %s a scríobh"
+
+#: config.c
+#, c-format
+msgid "no multi-line comment allowed: '%s'"
+msgstr "níl aon trácht illíne ceadaithe: '%s'"
+
+#: config.c
+#, c-format
+msgid "could not lock config file %s"
+msgstr "ní fhéadfaí comhad cumraíochta %s a ghlasáil"
+
+#: config.c
+#, c-format
+msgid "opening %s"
+msgstr "oscailt %s"
+
+#: config.c
+#, c-format
+msgid "invalid config file %s"
+msgstr "comhad cumraithe neamhbhailí %s"
+
+#: config.c
+#, c-format
+msgid "fstat on %s failed"
+msgstr "theip ar fstat ar %s"
+
+#: config.c
+#, c-format
+msgid "unable to mmap '%s'%s"
+msgstr "ní féidir le '%s'%s a mmapáil"
+
+#: config.c
+#, c-format
+msgid "chmod on %s failed"
+msgstr "theip ar chmod ar %s"
+
+#: config.c
+#, c-format
+msgid "could not write config file %s"
+msgstr "ní fhéadfaí comhad cumraithe %s a scríobh"
+
+#: config.c
+#, c-format
+msgid "could not set '%s' to '%s'"
+msgstr "ní fhéadfaí '%s' a shocrú go '%s'"
+
+#: config.c
+#, c-format
+msgid "invalid section name: %s"
+msgstr "ainm rannán neamhbhailí: %s"
+
+#: config.c
+#, c-format
+msgid "refusing to work with overly long line in '%s' on line %<PRIuMAX>"
+msgstr "diúltú oibriú le líne rófhada i '%s' ar líne%<PRIuMAX>"
+
+#: config.c
+#, c-format
+msgid "missing value for '%s'"
+msgstr "luach ar iarraidh do '%s'"
+
+#: connect.c
+msgid "the remote end hung up upon initial contact"
+msgstr "crochadh an deireadh iargúlta ar an teagmháil tosaigh"
+
+#: connect.c
+msgid ""
+"Could not read from remote repository.\n"
+"\n"
+"Please make sure you have the correct access rights\n"
+"and the repository exists."
+msgstr ""
+"Ní fhéadfaí léamh ó stór iargúlta.\n"
+"\n"
+"Déan cinnte go bhfuil na cearta rochtana cearta agat\n"
+"agus tá an stór ann."
+
+#: connect.c
+#, c-format
+msgid "server doesn't support '%s'"
+msgstr "ní thacaíonn freastalaí le '%s'"
+
+#: connect.c
+#, c-format
+msgid "server doesn't support feature '%s'"
+msgstr "ní thacaíonn freastalaí le gné '%s'"
+
+#: connect.c
+msgid "expected flush after capabilities"
+msgstr "súil le sruth tar éis cumais"
+
+#: connect.c
+#, c-format
+msgid "ignoring capabilities after first line '%s'"
+msgstr "neamhaird a dhéanamh ar chumais tar éis an chéad líne '%s'"
+
+#: connect.c
+msgid "protocol error: unexpected capabilities^{}"
+msgstr "earráid prótacal: cumais gan choinne ^ {}"
+
+#: connect.c
+#, c-format
+msgid "protocol error: expected shallow sha-1, got '%s'"
+msgstr "earráid prótacal: táthar ag súil le sha-1 éadrom, fuair '%s'"
+
+#: connect.c
+msgid "repository on the other end cannot be shallow"
+msgstr "ní féidir stór ar an gceann eile a bheith éadrom"
+
+#: connect.c
+msgid "invalid packet"
+msgstr "pacáiste neamhbhail"
+
+#: connect.c
+#, c-format
+msgid "protocol error: unexpected '%s'"
+msgstr "earráid prótacal: '%s' gan choinne"
+
+#: connect.c
+#, c-format
+msgid "unknown object format '%s' specified by server"
+msgstr "formáid réad anaithnid '%s' arna shonrú ag freastalaí"
+
+#: connect.c
+#, c-format
+msgid "error on bundle-uri response line %d: %s"
+msgstr "earráid ar líne freagartha cumhachta %d: %s"
+
+#: connect.c
+msgid "expected flush after bundle-uri listing"
+msgstr "súil le sruth tar éis liostú bundle-uri"
+
+#: connect.c
+msgid "expected response end packet after ref listing"
+msgstr "pacáiste deiridh freagartha a bhfuiltear ag súil leis"
+
+#: connect.c
+#, c-format
+msgid "invalid ls-refs response: %s"
+msgstr "freagra neamhbhailí ls-refs: %s"
+
+#: connect.c
+msgid "expected flush after ref listing"
+msgstr "súil le sruth tar éis liostú tagartha"
+
+#: connect.c
+#, c-format
+msgid "protocol '%s' is not supported"
+msgstr "ní thacaítear le prótacal '%s'"
+
+#: connect.c
+msgid "unable to set SO_KEEPALIVE on socket"
+msgstr "in ann SO_KEEPALIVE a shocrú ar an soicéad"
+
+#: connect.c
+#, c-format
+msgid "Looking up %s ... "
+msgstr "Ag féachaint suas %s... "
+
+#: connect.c
+#, c-format
+msgid "unable to look up %s (port %s) (%s)"
+msgstr "nach féidir a lorg suas %s (port %s) (%s)"
+
+#. TRANSLATORS: this is the end of "Looking up %s ... "
+#: connect.c
+#, c-format
+msgid ""
+"done.\n"
+"Connecting to %s (port %s) ... "
+msgstr ""
+"déanta.\n"
+"Ag nascadh le %s (port %s)... "
+
+#: connect.c
+#, c-format
+msgid ""
+"unable to connect to %s:\n"
+"%s"
+msgstr ""
+"ní féidir a nascadh le %s:\n"
+"%s"
+
+#. TRANSLATORS: this is the end of "Connecting to %s (port %s) ... "
+#: connect.c
+msgid "done."
+msgstr "déanta."
+
+#: connect.c
+#, c-format
+msgid "unable to look up %s (%s)"
+msgstr "nach féidir a lorg suas %s (%s)"
+
+#: connect.c
+#, c-format
+msgid "unknown port %s"
+msgstr "port anaithnid %s"
+
+#: connect.c
+#, c-format
+msgid "strange hostname '%s' blocked"
+msgstr "ainm óstach aisteach '%s' blocáilte"
+
+#: connect.c
+#, c-format
+msgid "strange port '%s' blocked"
+msgstr "cosc ar chalafort aisteach '%s'"
+
+#: connect.c
+#, c-format
+msgid "cannot start proxy %s"
+msgstr "ní féidir le seachfhreastalaí %s"
+
+#: connect.c
+msgid "no path specified; see 'git help pull' for valid url syntax"
+msgstr ""
+"níl aon chosán sonraithe; féach 'git help pull' le haghaidh comhréireachta "
+"bailí url"
+
+#: connect.c
+msgid "newline is forbidden in git:// hosts and repo paths"
+msgstr "tá cosc ​​ar líne nua in óstaigh git:// agus cosáin stórais"
+
+#: connect.c
+msgid "ssh variant 'simple' does not support -4"
+msgstr "ní thacaíonn leagan ssh 'simplí' le -4"
+
+#: connect.c
+msgid "ssh variant 'simple' does not support -6"
+msgstr "ní thacaíonn leagan ssh 'simplí' le -6"
+
+#: connect.c
+msgid "ssh variant 'simple' does not support setting port"
+msgstr "ní thacaíonn leagan ssh 'simplí' le port socrú"
+
+#: connect.c
+#, c-format
+msgid "strange pathname '%s' blocked"
+msgstr "cosc ar ainm cosán aisteach '%s'"
+
+#: connect.c
+msgid "unable to fork"
+msgstr "in ann a fhorc"
+
+#: connected.c
+msgid "Could not run 'git rev-list'"
+msgstr "Ní fhéadfaí 'git rev-list' a reáchtáil"
+
+#: connected.c
+msgid "failed write to rev-list"
+msgstr "theip ar scríobh chuig rev-list"
+
+#: connected.c
+msgid "failed to close rev-list's stdin"
+msgstr "theip orthu stdin rev-list a dhúnadh"
+
+#: convert.c
+#, c-format
+msgid "illegal crlf_action %d"
+msgstr "crlf_action mídhleathach %d"
+
+#: convert.c
+#, c-format
+msgid "CRLF would be replaced by LF in %s"
+msgstr "Bheadh LF in ionad CRLF i %s"
+
+#: convert.c
+#, c-format
+msgid ""
+"in the working copy of '%s', CRLF will be replaced by LF the next time Git "
+"touches it"
+msgstr ""
+"sa chóip oibre de '%s', cuirfear LF in ionad CRLF an chéad uair eile a "
+"théann Git leis"
+
+#: convert.c
+#, c-format
+msgid "LF would be replaced by CRLF in %s"
+msgstr "Bheadh CRLF in ionad LF i %s"
+
+#: convert.c
+#, c-format
+msgid ""
+"in the working copy of '%s', LF will be replaced by CRLF the next time Git "
+"touches it"
+msgstr ""
+"sa chóip oibre de '%s', cuirfear CRLF in ionad LF an chéad uair eile a "
+"théann Git leis"
+
+#: convert.c
+#, c-format
+msgid "BOM is prohibited in '%s' if encoded as %s"
+msgstr "Tá cosc ar BOM i '%s' má tá sé ionchódaithe mar %s"
+
+#: convert.c
+#, c-format
+msgid ""
+"The file '%s' contains a byte order mark (BOM). Please use UTF-%.*s as "
+"working-tree-encoding."
+msgstr ""
+"Tá marc ordaithe beart (BOM) sa chomhad '%s'. Bain úsáid as UTF-%.*s mar "
+"ionchódú crann oibre le do thoil."
+
+#: convert.c
+#, c-format
+msgid "BOM is required in '%s' if encoded as %s"
+msgstr "Tá BOM ag teastáil i '%s' má tá sé ionchódaithe mar %s"
+
+#: convert.c
+#, c-format
+msgid ""
+"The file '%s' is missing a byte order mark (BOM). Please use UTF-%sBE or UTF-"
+"%sLE (depending on the byte order) as working-tree-encoding."
+msgstr ""
+"Tá marc ordaithe beart (BOM) ar iarraidh sa chomhad '%s'. Bain úsáid as UTF-"
+"%sBE nó UTF-%sLE (ag brath ar ord na mbeart) mar ionchódú crann oibre."
+
+#: convert.c
+#, c-format
+msgid "failed to encode '%s' from %s to %s"
+msgstr "theip ar '%s' a ionchódú ó %s go %s"
+
+#: convert.c
+#, c-format
+msgid "encoding '%s' from %s to %s and back is not the same"
+msgstr "ionchódú '%s' ó %s go %s agus níl sé mar an gcéanna ar ais"
+
+#: convert.c
+#, c-format
+msgid "cannot fork to run external filter '%s'"
+msgstr "ní féidir forc chun scagaire seachtrach '%s' a reáchtáil"
+
+#: convert.c
+#, c-format
+msgid "cannot feed the input to external filter '%s'"
+msgstr "ní féidir leis an ionchur a bheathú chuig scagaire seachtrach '%s'"
+
+#: convert.c
+#, c-format
+msgid "external filter '%s' failed %d"
+msgstr "theip ar scagaire seachtrach '%s' %d"
+
+#: convert.c
+#, c-format
+msgid "read from external filter '%s' failed"
+msgstr "theip ar léamh ó scagaire seachtrach '%s'"
+
+#: convert.c
+#, c-format
+msgid "external filter '%s' failed"
+msgstr "theip ar scagaire seachtrach '%s'"
+
+#: convert.c
+msgid "unexpected filter type"
+msgstr "cineál scagaire gan choinne"
+
+#: convert.c
+msgid "path name too long for external filter"
+msgstr "ainm cosáin rófhada le haghaidh scagaire seachtrach"
+
+#: convert.c
+#, c-format
+msgid ""
+"external filter '%s' is not available anymore although not all paths have "
+"been filtered"
+msgstr ""
+"níl an scagaire seachtrach '%s' ar fáil a thuilleadh cé nach bhfuil na "
+"cosáin uile scagtha"
+
+#: convert.c
+msgid "true/false are no valid working-tree-encodings"
+msgstr "níl aon ionchódaithe bailí crainn oibre fíor-bhréagach"
+
+#: convert.c
+#, c-format
+msgid "%s: clean filter '%s' failed"
+msgstr "%s: theip ar scagaire glan '%s'"
+
+#: convert.c
+#, c-format
+msgid "%s: smudge filter %s failed"
+msgstr "%s: theip ar scagaire smudge %s"
+
+#: credential.c
+#, c-format
+msgid "skipping credential lookup for key: credential.%s"
+msgstr "cuardach creidiúnaithe a scipeáil le haghaidh eochair: creidiúnas. %s"
+
+#: credential.c
+msgid "refusing to work with credential missing host field"
+msgstr "diúltú oibriú le réimse óstach creidiúnaithe atá ar"
+
+#: credential.c
+msgid "refusing to work with credential missing protocol field"
+msgstr "diúltú oibriú le réimse prótacal ar iarraidh creidiú"
+
+#: credential.c
+#, c-format
+msgid "url contains a newline in its %s component: %s"
+msgstr "tá líne nua ina chomhpháirt %s ag url: %s"
+
+#: credential.c
+#, c-format
+msgid "url has no scheme: %s"
+msgstr "níl aon scéim ag url: %s"
+
+#: credential.c
+#, c-format
+msgid "credential url cannot be parsed: %s"
+msgstr "ní féidir url creidiúnaithe a pháirseáil: %s"
+
+#: daemon.c
+#, c-format
+msgid "invalid timeout '%s', expecting a non-negative integer"
+msgstr "ama neamhbhailí '%s', ag súil le sláimhir neamh-dhiúltach"
+
+#: daemon.c
+#, c-format
+msgid "invalid init-timeout '%s', expecting a non-negative integer"
+msgstr "ama init-time '%s' neamhbhailí, ag súil le sláimhir neamh-dhiúltach"
+
+#: daemon.c
+#, c-format
+msgid "invalid max-connections '%s', expecting an integer"
+msgstr "naisc uasta neamhbhailí '%s', ag súil le sláimhir"
+
+#: date.c
+msgid "in the future"
+msgstr "sa todhchaí"
+
+#: date.c
+#, c-format
+msgid "%<PRIuMAX> second ago"
+msgid_plural "%<PRIuMAX> seconds ago"
+msgstr[0] "%<PRIuMAX> soicind ó shin"
+msgstr[1] "%<PRIuMAX> soicind ó shin"
+msgstr[2] "%<PRIuMAX> soicind ó shin"
+
+#: date.c
+#, c-format
+msgid "%<PRIuMAX> minute ago"
+msgid_plural "%<PRIuMAX> minutes ago"
+msgstr[0] "%<PRIuMAX> nóiméad ó shin"
+msgstr[1] "%<PRIuMAX> nóiméad ó shin"
+msgstr[2] "%<PRIuMAX> nóiméad ó shin"
+
+#: date.c
+#, c-format
+msgid "%<PRIuMAX> hour ago"
+msgid_plural "%<PRIuMAX> hours ago"
+msgstr[0] "%<PRIuMAX> uair an chloig ó shin"
+msgstr[1] "%<PRIuMAX> uair an chloig ó shin"
+msgstr[2] "%<PRIuMAX> uair an chloig ó shin"
+
+#: date.c
+#, c-format
+msgid "%<PRIuMAX> day ago"
+msgid_plural "%<PRIuMAX> days ago"
+msgstr[0] "%<PRIuMAX> lá ó shin"
+msgstr[1] "%<PRIuMAX> lá ó shin"
+msgstr[2] "%<PRIuMAX> lá ó shin"
+
+#: date.c
+#, c-format
+msgid "%<PRIuMAX> week ago"
+msgid_plural "%<PRIuMAX> weeks ago"
+msgstr[0] "%<PRIuMAX> seachtain ó shin"
+msgstr[1] "%<PRIuMAX> seachtain ó shin"
+msgstr[2] "%<PRIuMAX> seachtain ó shin"
+
+#: date.c
+#, c-format
+msgid "%<PRIuMAX> month ago"
+msgid_plural "%<PRIuMAX> months ago"
+msgstr[0] "%<PRIuMAX> mí ó shin"
+msgstr[1] "%<PRIuMAX> mí ó shin"
+msgstr[2] "%<PRIuMAX> mí ó shin"
+
+#: date.c
+#, c-format
+msgid "%<PRIuMAX> year"
+msgid_plural "%<PRIuMAX> years"
+msgstr[0] "%<PRIuMAX> bliain"
+msgstr[1] "%<PRIuMAX> bliain"
+msgstr[2] "%<PRIuMAX> bliain"
+
+#. TRANSLATORS: "%s" is "<n> years"
+#: date.c
+#, c-format
+msgid "%s, %<PRIuMAX> month ago"
+msgid_plural "%s, %<PRIuMAX> months ago"
+msgstr[0] "%s, %<PRIuMAX> mí ó shin"
+msgstr[1] "%s, %<PRIuMAX> mí ó shin"
+msgstr[2] "%s, %<PRIuMAX> mí ó shin"
+
+#: date.c
+#, c-format
+msgid "%<PRIuMAX> year ago"
+msgid_plural "%<PRIuMAX> years ago"
+msgstr[0] "%<PRIuMAX> bliain ó shin"
+msgstr[1] "%<PRIuMAX> bliain ó shin"
+msgstr[2] "%<PRIuMAX> bliain ó shin"
+
+#: delta-islands.c
+msgid "Propagating island marks"
+msgstr "Marcanna oileáin a iomadú"
+
+#: delta-islands.c
+#, c-format
+msgid "bad tree object %s"
+msgstr "réad droch-chrann %s"
+
+#: delta-islands.c
+#, c-format
+msgid "failed to load island regex for '%s': %s"
+msgstr "theip ar an oileán regex a luchtú do '%s': %s"
+
+#: delta-islands.c
+#, c-format
+msgid "island regex from config has too many capture groups (max=%d)"
+msgstr "tá an iomarca grúpaí gabhála ag an oileán regex ó config (max = %d)"
+
+#: delta-islands.c
+#, c-format
+msgid "Marked %d islands, done.\n"
+msgstr "Oileáin %d marcáilte, déanta.\n"
+
+#: diagnose.c
+#, c-format
+msgid "invalid --%s value '%s'"
+msgstr "neamhbhailí --%s luach '%s'"
+
+#: diagnose.c
+#, c-format
+msgid "could not archive missing directory '%s'"
+msgstr "ní fhéadfaí eolaire '%s' in easnamh a chartlannú"
+
+#: diagnose.c dir.c
+#, c-format
+msgid "could not open directory '%s'"
+msgstr "ní raibh in ann eolaire '%s' a oscailt"
+
+#: diagnose.c
+#, c-format
+msgid "skipping '%s', which is neither file nor directory"
+msgstr "ag scipeáil '%s', nach comhad ná eolaire"
+
+#: diagnose.c
+msgid "could not duplicate stdout"
+msgstr "ní fhéadfaí stdout a dhúbailt"
+
+#: diagnose.c
+#, c-format
+msgid "could not add directory '%s' to archiver"
+msgstr "ní fhéadfaí eolaire '%s' a chur leis an gcartlann"
+
+#: diagnose.c
+msgid "failed to write archive"
+msgstr "theip ar chartlann a scríobh"
+
+#: diff-lib.c
+msgid "--merge-base does not work with ranges"
+msgstr "ní oibríonn --merge-base le raonta"
+
+#: diff-lib.c
+msgid "unable to get HEAD"
+msgstr "in ann HEAD a fháil"
+
+#: diff-lib.c
+msgid "no merge base found"
+msgstr "níl aon bhonn cumaisc le fáil"
+
+#: diff-lib.c
+msgid "multiple merge bases found"
+msgstr "fuarthas bonn cumaisc iolr"
+
+#: diff-no-index.c
+msgid "cannot compare stdin to a directory"
+msgstr "ní féidir stdin a chur i gcomparáid le eolaire"
+
+#: diff-no-index.c
+msgid "cannot compare a named pipe to a directory"
+msgstr "ní féidir píopa ainmnithe a chur i gcomparáid le eolaire"
+
+#: diff-no-index.c
+msgid "git diff --no-index [<options>] <path> <path>"
+msgstr "git diff --no-index [<options>] <path> <path>"
+
+#: diff-no-index.c
+msgid ""
+"Not a git repository. Use --no-index to compare two paths outside a working "
+"tree"
+msgstr ""
+"Ní stór git. Úsáid --no-index chun dhá chosán a chur i gcomparáid lasmuigh "
+"de chrann oibre"
+
+#: diff.c
+#, c-format
+msgid " Failed to parse dirstat cut-off percentage '%s'\n"
+msgstr " Theip ar chéatadán scoir dirstat '%s' a pharsáil\n"
+
+#: diff.c
+#, c-format
+msgid " Unknown dirstat parameter '%s'\n"
+msgstr " Paraiméadar dirstat anaithnid '%s'\n"
+
+#: diff.c
+msgid ""
+"color moved setting must be one of 'no', 'default', 'blocks', 'zebra', "
+"'dimmed-zebra', 'plain'"
+msgstr ""
+"caithfidh socrú dath a bhogadh a bheith ar cheann de 'níl', "
+"'réamhshocraithe', 'bloic', 'zebra', 'dimmed-zebra', 'simplí'"
+
+#: diff.c
+#, c-format
+msgid ""
+"unknown color-moved-ws mode '%s', possible values are 'ignore-space-change', "
+"'ignore-space-at-eol', 'ignore-all-space', 'allow-indentation-change'"
+msgstr ""
+"modh dath-gluaisea-ws anaithnid '%s', is iad na luachanna féideartha "
+"'neamhaird-spas-athrú', 'neamhaird a dhéanamh ar spás-at-eol', 'neamhaird a "
+"dhéanamh ar uile-spás', 'ligead-indentation-change'"
+
+#: diff.c
+msgid ""
+"color-moved-ws: allow-indentation-change cannot be combined with other "
+"whitespace modes"
+msgstr ""
+"dath-moved-ws: ní féidir athrú ligead-ionchur a chomhcheangal le modhanna "
+"spás bán eile"
+
+#: diff.c
+#, c-format
+msgid "Unknown value for 'diff.submodule' config variable: '%s'"
+msgstr "Luach anaithnid d'athróg cumraithe 'diff.submodule': '%s'"
+
+#: diff.c merge-ort.c transport.c
+#, c-format
+msgid "unknown value for config '%s': %s"
+msgstr "luach anaithnid do chumraíocht '%s': %s"
+
+#: diff.c
+#, c-format
+msgid ""
+"Found errors in 'diff.dirstat' config variable:\n"
+"%s"
+msgstr ""
+"Earráidí aimsithe in athróg config 'diff.dirstat':\n"
+"%s"
+
+#: diff.c
+#, c-format
+msgid "external diff died, stopping at %s"
+msgstr "fuair diff seachtrach bás, ag stopadh ag %s"
+
+#: diff.c
+msgid "--follow requires exactly one pathspec"
+msgstr "Teastaíonn --follow go díreach cosán amháin"
+
+#: diff.c
+#, c-format
+msgid "pathspec magic not supported by --follow: %s"
+msgstr "draíocht pathspec nach dtacaíonn --follow: %s"
+
+#: diff.c parse-options.c
+#, c-format
+msgid "options '%s', '%s', '%s', and '%s' cannot be used together"
+msgstr "ní féidir roghanna '%s', '%s', '%s', agus '%s' a úsáid le chéile"
+
+#: diff.c
+#, c-format
+msgid "options '%s' and '%s' cannot be used together, use '%s' with '%s'"
+msgstr ""
+"ní féidir roghanna '%s' agus '%s' a úsáid le chéile, bain úsáid as '%s' le "
+"'%s'"
+
+#: diff.c
+#, c-format
+msgid ""
+"options '%s' and '%s' cannot be used together, use '%s' with '%s' and '%s'"
+msgstr ""
+"ní féidir roghanna '%s' agus '%s' a úsáid le chéile, bain úsáid as '%s' le "
+"'%s' agus '%s'"
+
+#: diff.c
+#, c-format
+msgid "invalid --stat value: %s"
+msgstr "luach --stat neamhbhailí: %s"
+
+#: diff.c parse-options.c
+#, c-format
+msgid "%s expects a numerical value"
+msgstr "Tá %s ag súil le luach uimhriúil"
+
+#: diff.c
+#, c-format
+msgid ""
+"Failed to parse --dirstat/-X option parameter:\n"
+"%s"
+msgstr ""
+"Theip ar pharaiméadar rogha --dirstat/-X a pháirseáil:\n"
+"%s"
+
+#: diff.c
+#, c-format
+msgid "unknown change class '%c' in --diff-filter=%s"
+msgstr "aicme athraithe anaithnid '%c' i --diff-filter=%s"
+
+#: diff.c
+#, c-format
+msgid "unknown value after ws-error-highlight=%.*s"
+msgstr "luach anaithnid tar éis ws-error-highlight =%.*s"
+
+#: diff.c
+#, c-format
+msgid "unable to resolve '%s'"
+msgstr "nach féidir '%s' a réiteach"
+
+#: diff.c
+#, c-format
+msgid "%s expects <n>/<m> form"
+msgstr "Tá %s ag súil le<n>/fo <m>irm"
+
+#: diff.c
+#, c-format
+msgid "%s expects a character, got '%s'"
+msgstr "Tá %s ag súil le carachtar, fuair '%s'"
+
+#: diff.c
+#, c-format
+msgid "bad --color-moved argument: %s"
+msgstr "argóint lochtach --color-moved: %s"
+
+#: diff.c
+#, c-format
+msgid "invalid mode '%s' in --color-moved-ws"
+msgstr "modh neamhbhailí '%s' i --color-moved-ws"
+
+#: diff.c
+#, c-format
+msgid "invalid argument to %s"
+msgstr "argóint neamhbhailí chuig %s"
+
+#: diff.c
+#, c-format
+msgid "invalid regex given to -I: '%s'"
+msgstr "regex neamhbhailí a thugtar do -I: '%s'"
+
+#: diff.c
+msgid "-G requires a non-empty argument"
+msgstr "Éilíonn -G argóint neamh-folamh"
+
+#: diff.c
+msgid "-S requires a non-empty argument"
+msgstr "Éilíonn -S argóint neamh-folamh"
+
+#: diff.c
+#, c-format
+msgid "failed to parse --submodule option parameter: '%s'"
+msgstr "theip ar pharaiméadar rogha --submodule a pháirseáil: '%s'"
+
+#: diff.c
+#, c-format
+msgid "bad --word-diff argument: %s"
+msgstr "argóint olc --word-diff: %s"
+
+#: diff.c
+msgid "Diff output format options"
+msgstr "Roghanna formáid aschuir diff"
+
+#: diff.c
+msgid "generate patch"
+msgstr "paiste a ghiniúint"
+
+#: diff.c
+msgid "<n>"
+msgstr "<n>"
+
+#: diff.c
+msgid "generate diffs with <n> lines context"
+msgstr "difríochtaí a ghiniúint le comhthéacs <n>lín"
+
+#: diff.c
+msgid "generate the diff in raw format"
+msgstr "giniúint an diff i bhformáid amh"
+
+#: diff.c
+msgid "synonym for '-p --raw'"
+msgstr "comhchiallach do '-p --raw'"
+
+#: diff.c
+msgid "synonym for '-p --stat'"
+msgstr "comhchiallach do '-p --stat'"
+
+#: diff.c
+msgid "machine friendly --stat"
+msgstr "cairdiúil le meaisín --stat"
+
+#: diff.c
+msgid "output only the last line of --stat"
+msgstr "aschur ach an líne dheireanach de --stat"
+
+#: diff.c
+msgid "<param1>,<param2>..."
+msgstr "<param1>,<param2>..."
+
+#: diff.c
+msgid ""
+"output the distribution of relative amount of changes for each sub-directory"
+msgstr "aschur dáileadh méid coibhneasta na n-athruithe do gach fo-eolaire"
+
+#: diff.c
+msgid "synonym for --dirstat=cumulative"
+msgstr "comhchiallach do --dirstat=cumulative"
+
+#: diff.c
+msgid "synonym for --dirstat=files,<param1>,<param2>..."
+msgstr "comhchiallaigh le haghaidh --dirstat=files,<param1>,<param2>..."
+
+#: diff.c
+msgid "warn if changes introduce conflict markers or whitespace errors"
+msgstr ""
+"rabhadh má thugann athruithe marcóirí coinbhleachta nó earráidí spás bán "
+"isteach"
+
+#: diff.c
+msgid "condensed summary such as creations, renames and mode changes"
+msgstr ""
+"achoimre chomhdhlúite mar chruthúcháin, athainmneacha agus athruithe mó"
+
+#: diff.c
+msgid "show only names of changed files"
+msgstr "taispeáint ach ainmneacha comhaid athraithe"
+
+#: diff.c
+msgid "show only names and status of changed files"
+msgstr "taispeáint ach ainmneacha agus stádas na gcomhaid athraithe"
+
+#: diff.c
+msgid "<width>[,<name-width>[,<count>]]"
+msgstr "<width>[, <name-width>[,<count>]]"
+
+#: diff.c
+msgid "generate diffstat"
+msgstr "diffstat a ghiniúint"
+
+#: diff.c
+msgid "<width>"
+msgstr "<width>"
+
+#: diff.c
+msgid "generate diffstat with a given width"
+msgstr "diffstat a ghiniúint le leithead ar leith"
+
+#: diff.c
+msgid "generate diffstat with a given name width"
+msgstr "diffstat a ghiniúint le leithead ainm ar leith"
+
+#: diff.c
+msgid "generate diffstat with a given graph width"
+msgstr "diffstat a ghiniúint le leithead graf ar leith"
+
+#: diff.c
+msgid "<count>"
+msgstr "<count>"
+
+#: diff.c
+msgid "generate diffstat with limited lines"
+msgstr "diffstat a ghiniúint le línte teoranta"
+
+#: diff.c
+msgid "generate compact summary in diffstat"
+msgstr "achoimre dlúth a ghiniúint i diffstat"
+
+#: diff.c
+msgid "output a binary diff that can be applied"
+msgstr "aschur diff dénártha is féidir a chur i bhfeidhm"
+
+#: diff.c
+msgid "show full pre- and post-image object names on the \"index\" lines"
+msgstr ""
+"taispeáint ainmneacha réad réad réamh-íomhá iomlána ar na línte “innéacs”"
+
+#: diff.c
+msgid "show colored diff"
+msgstr "taispeáin éagsúlacht daite"
+
+#: diff.c
+msgid "<kind>"
+msgstr "<kind>"
+
+#: diff.c
+msgid ""
+"highlight whitespace errors in the 'context', 'old' or 'new' lines in the "
+"diff"
+msgstr ""
+"aird a tharraingt ar earráidí spás bán sna línte 'comhthéacs', 'sean' nó "
+"'nua' sa diff"
+
+#: diff.c
+msgid ""
+"do not munge pathnames and use NULs as output field terminators in --raw or "
+"--numstat"
+msgstr ""
+"ná cuir ainmneacha cosáin agus bain úsáid as NULanna mar chríochnóirí réimse "
+"aschuir i --raw nó --numstat"
+
+#: diff.c
+msgid "<prefix>"
+msgstr "<prefix>"
+
+#: diff.c
+msgid "show the given source prefix instead of \"a/\""
+msgstr "taispeáint an réimír foinse a thugtar in ionad “a/”"
+
+#: diff.c
+msgid "show the given destination prefix instead of \"b/\""
+msgstr "taispeáin an réimír ceann scríbe tugtha in ionad “b/”"
+
+#: diff.c
+msgid "prepend an additional prefix to every line of output"
+msgstr "réimír bhreise a chur ar fáil do gach líne aschuir"
+
+#: diff.c
+msgid "do not show any source or destination prefix"
+msgstr "ná taispeáin aon réimír foinse nó ceann scríbe"
+
+#: diff.c
+msgid "use default prefixes a/ and b/"
+msgstr "bain úsáid as réamhshocraithe a/ agus b/"
+
+#: diff.c
+msgid "show context between diff hunks up to the specified number of lines"
+msgstr ""
+"comhthéacs a thaispeáint idir diff hunks suas go dtí an líon sonraithe línte"
+
+#: diff.c
+msgid "<char>"
+msgstr "<char>"
+
+#: diff.c
+msgid "specify the character to indicate a new line instead of '+'"
+msgstr "sonraigh an carachtar chun líne nua a léiriú in ionad '+'"
+
+#: diff.c
+msgid "specify the character to indicate an old line instead of '-'"
+msgstr "sonraigh an carachtar chun sean-líne a chur in iúl in ionad '-'"
+
+#: diff.c
+msgid "specify the character to indicate a context instead of ' '"
+msgstr "sonraigh an carachtar chun comhthéacs in ionad '' a chur in iúl"
+
+#: diff.c
+msgid "Diff rename options"
+msgstr "Roghanna athainmnithe Diff"
+
+#: diff.c
+msgid "<n>[/<m>]"
+msgstr "<n>[/<m>]"
+
+#: diff.c
+msgid "break complete rewrite changes into pairs of delete and create"
+msgstr ""
+"athruithe iomlána athscríobh a bhriseadh i bpéirí scrios agus cruthaigh"
+
+#: diff.c
+msgid "detect renames"
+msgstr "athainmneacha a bhrath"
+
+#: diff.c
+msgid "omit the preimage for deletes"
+msgstr "fág an réamhíomhá le haghaidh scriosadh"
+
+#: diff.c
+msgid "detect copies"
+msgstr "cóipí a bhrath"
+
+#: diff.c
+msgid "use unmodified files as source to find copies"
+msgstr "úsáid comhaid neamh-mhodhnaithe mar fhoinse chun cóipeanna a fháil"
+
+#: diff.c
+msgid "disable rename detection"
+msgstr "díchumasaigh braite athainmnithe"
+
+#: diff.c
+msgid "use empty blobs as rename source"
+msgstr "bain úsáid as blobs folamh mar fhoinse athainmnithe"
+
+#: diff.c
+msgid "continue listing the history of a file beyond renames"
+msgstr "leanúint ar aghaidh ag liostáil stair chomhaid thar athainmneacha"
+
+#: diff.c
+msgid ""
+"prevent rename/copy detection if the number of rename/copy targets exceeds "
+"given limit"
+msgstr ""
+"cosc a chur ar athainmniú/braite cóipeála má sháraíonn líon na spriocanna "
+"athainmniúcháin/cóipeála"
+
+#: diff.c
+msgid "Diff algorithm options"
+msgstr "Roghanna algartam Diff"
+
+#: diff.c
+msgid "produce the smallest possible diff"
+msgstr "an difríocht is lú is féidir a tháirgeadh"
+
+#: diff.c
+msgid "ignore whitespace when comparing lines"
+msgstr "neamhaird a dhéanamh ar spás bán agus tú ag comparáid"
+
+#: diff.c
+msgid "ignore changes in amount of whitespace"
+msgstr "neamhaird a dhéanamh ar athruithe i méid an spás bán"
+
+#: diff.c
+msgid "ignore changes in whitespace at EOL"
+msgstr "neamhaird a dhéanamh ar athruithe i spás bán ag EOL"
+
+#: diff.c
+msgid "ignore carrier-return at the end of line"
+msgstr "neamhaird a dhéanamh ar thuairisceán iompróra ag deireadh na líne"
+
+#: diff.c
+msgid "ignore changes whose lines are all blank"
+msgstr "neamhaird a dhéanamh ar athruithe atá a línte bán"
+
+#: diff.c
+msgid "<regex>"
+msgstr "<regex>"
+
+#: diff.c
+msgid "ignore changes whose all lines match <regex>"
+msgstr "neamhaird a dhéanamh ar athruithe a mheaitseann <regex>"
+
+#: diff.c
+msgid "heuristic to shift diff hunk boundaries for easy reading"
+msgstr "heuristic chun teorainneacha éagsúla a aistriú le haghaidh léamh éasca"
+
+#: diff.c
+msgid "generate diff using the \"patience diff\" algorithm"
+msgstr "diff a ghiniúint ag baint úsáide as an algartam “diff foighne”"
+
+#: diff.c
+msgid "generate diff using the \"histogram diff\" algorithm"
+msgstr "diff a ghiniúint ag baint úsáide as an algartam “diff histogram”"
+
+#: diff.c
+msgid "<text>"
+msgstr "<text>"
+
+#: diff.c
+msgid "generate diff using the \"anchored diff\" algorithm"
+msgstr "diff a ghiniúint ag baint úsáide as an algartam “diff ancáraithe”"
+
+#: diff.c
+msgid "<mode>"
+msgstr "<mode>"
+
+#: diff.c
+msgid "show word diff, using <mode> to delimit changed words"
+msgstr ""
+"taispeáint diff focal, ag baint úsáide as focail <mode>athraithe a theorannú"
+
+#: diff.c
+msgid "use <regex> to decide what a word is"
+msgstr "bain úsáid <regex>as chun cinneadh a dhéanamh cad é focal"
+
+#: diff.c
+msgid "equivalent to --word-diff=color --word-diff-regex=<regex>"
+msgstr "coibhéiseach le --word-diff=color --word-diff-regex=<regex>"
+
+#: diff.c
+msgid "moved lines of code are colored differently"
+msgstr "tá línte cóid bogadh daite difriúil"
+
+#: diff.c
+msgid "how white spaces are ignored in --color-moved"
+msgstr "conas a dhéantar neamhaird de spásanna bána i --color-moved"
+
+#: diff.c
+msgid "Other diff options"
+msgstr "Roghanna diff eile"
+
+#: diff.c
+msgid "when run from subdir, exclude changes outside and show relative paths"
+msgstr ""
+"nuair a bheidh á rith ó subdir, eisiamh athruithe lasmuigh agus taispeáin "
+"coibhneasta"
+
+#: diff.c
+msgid "treat all files as text"
+msgstr "déileáil le gach comhad mar théacs"
+
+#: diff.c
+msgid "swap two inputs, reverse the diff"
+msgstr "dhá ionchur a mhalartú, an diff a aisiompú"
+
+#: diff.c
+msgid "exit with 1 if there were differences, 0 otherwise"
+msgstr "imeacht le 1 má bhí difríochtaí ann, 0 ar shlí eile"
+
+#: diff.c
+msgid "disable all output of the program"
+msgstr "díchumasú gach aschur an chláir"
+
+#: diff.c
+msgid "allow an external diff helper to be executed"
+msgstr "ligean do chúntóir diff seachtrach a fhorghníomhú"
+
+#: diff.c
+msgid "run external text conversion filters when comparing binary files"
+msgstr "reáchtáil scagairí tiontaithe téacs seachtracha agus comhaid"
+
+#: diff.c
+msgid "<when>"
+msgstr "<when>"
+
+#: diff.c
+msgid "ignore changes to submodules in the diff generation"
+msgstr "neamhaird a dhéanamh ar athruithe ar fho-mhodúil sa ghiniúint diff"
+
+#: diff.c
+msgid "<format>"
+msgstr "<format>"
+
+#: diff.c
+msgid "specify how differences in submodules are shown"
+msgstr "sonraigh conas a thaispeántar na difríochtaí i bhfo-"
+
+#: diff.c
+msgid "hide 'git add -N' entries from the index"
+msgstr "folaigh iontrálacha 'git add -N' ón innéacs"
+
+#: diff.c
+msgid "treat 'git add -N' entries as real in the index"
+msgstr "déileáil le hiontrálacha 'git add -N' mar atá fíor san innéacs"
+
+#: diff.c
+msgid "<string>"
+msgstr "<string>"
+
+#: diff.c
+msgid ""
+"look for differences that change the number of occurrences of the specified "
+"string"
+msgstr ""
+"cuardaigh difríochtaí a athraíonn líon na n-imeachtaí sa sreang sonraithe"
+
+#: diff.c
+msgid ""
+"look for differences that change the number of occurrences of the specified "
+"regex"
+msgstr ""
+"cuardaigh difríochtaí a athraíonn líon na n-imeachtaí sa regex sonraithe"
+
+#: diff.c
+msgid "show all changes in the changeset with -S or -G"
+msgstr "taispeáint na hathruithe go léir sa tacar athraithe le -S nó -G"
+
+#: diff.c
+msgid "treat <string> in -S as extended POSIX regular expression"
+msgstr "caitheamh <string>le -S mar léiriú rialta POSIX leathnaithe"
+
+#: diff.c
+msgid "control the order in which files appear in the output"
+msgstr "rialú an t-ord ina bhfuil comhaid le feiceáil san aschur"
+
+#: diff.c
+msgid "<path>"
+msgstr "<path>"
+
+#: diff.c
+msgid "show the change in the specified path first"
+msgstr "taispeáin an t-athrú ar an gcosán sonraithe ar dtús"
+
+#: diff.c
+msgid "skip the output to the specified path"
+msgstr "scipeáil an t-aschur chuig an gcosán sonraithe"
+
+#: diff.c
+msgid "<object-id>"
+msgstr "<object-id>"
+
+#: diff.c
+msgid ""
+"look for differences that change the number of occurrences of the specified "
+"object"
+msgstr "cuardaigh difríochtaí a athraíonn líon na n-earraí den réad sonraithe"
+
+#: diff.c
+msgid "[(A|C|D|M|R|T|U|X|B)...[*]]"
+msgstr "[(A|C|D|M|R|T|U|X|B)... [*]]"
+
+#: diff.c
+msgid "select files by diff type"
+msgstr "roghnaigh comhaid de réir cineál diff"
+
+#: diff.c
+msgid "<file>"
+msgstr "<file>"
+
+#: diff.c
+msgid "output to a specific file"
+msgstr "aschur chuig comhad ar leith"
+
+#: diff.c
+msgid "exhaustive rename detection was skipped due to too many files."
+msgstr ""
+"scipeánadh braite athainmnithe uileghabhálach mar gheall ar an iomarca "
+"comhaid."
+
+#: diff.c
+msgid "only found copies from modified paths due to too many files."
+msgstr ""
+"ní bhfuarthas ach cóipeanna ó chosáin modhnaithe mar gheall ar an iomarca "
+"comhaid."
+
+#: diff.c
+#, c-format
+msgid ""
+"you may want to set your %s variable to at least %d and retry the command."
+msgstr ""
+"b'fhéidir gur mhaith leat d'athróg %s a shocrú go %d ar a laghad agus "
+"iarracht a dhéanamh arís ar an ordú."
+
+#: diffcore-order.c
+#, c-format
+msgid "failed to read orderfile '%s'"
+msgstr "theip ar chomhad ordaithe '%s' a léamh"
+
+#: diffcore-rename.c
+msgid "Performing inexact rename detection"
+msgstr "Braite athainmnithe míchruinn a dhéanamh"
+
+#: diffcore-rotate.c
+#, c-format
+msgid "No such path '%s' in the diff"
+msgstr "Níl aon chosán den sórt sin '%s' sa diff"
+
+#: dir.c
+#, c-format
+msgid "pathspec '%s' did not match any file(s) known to git"
+msgstr "níor mheaitseáil pathspec '%s' aon chomhad (í) ar eolas ag git"
+
+#: dir.c
+#, c-format
+msgid "unrecognized pattern: '%s'"
+msgstr "patrún gan aithint: '%s'"
+
+#: dir.c
+#, c-format
+msgid "unrecognized negative pattern: '%s'"
+msgstr "patrún diúltach gan aithint: '%s'"
+
+#: dir.c
+#, c-format
+msgid "your sparse-checkout file may have issues: pattern '%s' is repeated"
+msgstr ""
+"d'fhéadfadh fadhbanna a bheith ag do chomhad seiceála neamhchoitianta: "
+"déantar patrún '%s' arís eile"
+
+#: dir.c
+msgid "disabling cone pattern matching"
+msgstr "meaitseáil patrún cón a dhíchumas"
+
+#: dir.c
+#, c-format
+msgid "cannot use %s as an exclude file"
+msgstr "ní féidir %s a úsáid mar chomhad eisiata"
+
+#: dir.c
+msgid "failed to get kernel name and information"
+msgstr "theip ar ainm eithne agus faisnéis a fháil"
+
+#: dir.c
+msgid "untracked cache is disabled on this system or location"
+msgstr ""
+"tá taisce neamhrianaithe díchumasaithe ar an gcóras nó ar an suíomh seo"
+
+#: dir.c
+msgid ""
+"No directory name could be guessed.\n"
+"Please specify a directory on the command line"
+msgstr ""
+"Ní fhéadfaí aon ainm eolaire a thuairim.\n"
+"Sonraigh eolaire ar an líne ordaithe le do thoil"
+
+#: dir.c
+#, c-format
+msgid "index file corrupt in repo %s"
+msgstr "comhad innéacs truaillithe i repo %s"
+
+#: dir.c
+#, c-format
+msgid "could not create directories for %s"
+msgstr "ní fhéadfaí eolairí a chruthú do %s"
+
+#: dir.c
+#, c-format
+msgid "could not migrate git directory from '%s' to '%s'"
+msgstr "ní fhéadfaí eolaire git a aistriú ó '%s' go '%s'"
+
+#: editor.c
+#, c-format
+msgid "hint: Waiting for your editor to close the file...%c"
+msgstr "leid: Ag fanacht go ndúnfaidh d'eagarthóir an comhad... %c"
+
+#: editor.c sequencer.c wrapper.c
+#, c-format
+msgid "could not write to '%s'"
+msgstr "ní fhéadfaí scríobh chuig '%s'"
+
+#: editor.c
+#, c-format
+msgid "could not edit '%s'"
+msgstr "ní fhéadfaí '%s' a chur in eagar"
+
+#: entry.c
+msgid "Filtering content"
+msgstr "Ábhar scagadh"
+
+#: entry.c
+#, c-format
+msgid "could not stat file '%s'"
+msgstr "ní fhéadfaí an comhad '%s' a statú"
+
+#: environment.c
+#, c-format
+msgid "bad git namespace path \"%s\""
+msgstr "cosán spás ainmneacha git go dona “%s”"
+
+#: exec-cmd.c
+#, c-format
+msgid "too many args to run %s"
+msgstr "an iomarca args chun %s a rith"
+
+#: fetch-pack.c
+#, c-format
+msgid ""
+"You are attempting to fetch %s, which is in the commit graph file but not in "
+"the object database.\n"
+"This is probably due to repo corruption.\n"
+"If you are attempting to repair this repo corruption by refetching the "
+"missing object, use 'git fetch --refetch' with the missing object."
+msgstr ""
+"Tá tú ag iarraidh %s a fháil, atá sa chomhad graf tiomanta ach nach bhfuil "
+"sa bhunachar sonraí réada.\n"
+"Is dócha go bhfuil sé seo mar gheall ar éilliú repo.\n"
+"Má tá tú ag iarraidh an éilliú repo seo a dheisiú tríd an réad atá in "
+"easnamh a athghabháil, bain úsáid as 'git fetch --refetch' leis an réad atá "
+"ar iarraidh."
+
+#: fetch-pack.c
+msgid "git fetch-pack: expected shallow list"
+msgstr "git fetch-pack: liosta éadomhain a bhfuiltear ag súil leis"
+
+#: fetch-pack.c
+msgid "git fetch-pack: expected a flush packet after shallow list"
+msgstr ""
+"git fetch-pack: bhíothas ag súil le paicéad sruthán tar éis liosta éadrom"
+
+#: fetch-pack.c
+msgid "git fetch-pack: expected ACK/NAK, got a flush packet"
+msgstr "git fetch-pack: ag súil le ACK/NAK, fuair sé paicéad sruthán"
+
+#: fetch-pack.c
+#, c-format
+msgid "git fetch-pack: expected ACK/NAK, got '%s'"
+msgstr "git fetch-pack: ag súil le ACK/NAK, fuair '%s'"
+
+#: fetch-pack.c
+msgid "unable to write to remote"
+msgstr "in ann scríobh chuig iargúlta"
+
+#: fetch-pack.c
+msgid "Server supports filter"
+msgstr "Tacaíonn freastalaí le sc"
+
+#: fetch-pack.c
+#, c-format
+msgid "invalid shallow line: %s"
+msgstr "líne éadomhain neamhbhailí: %s"
+
+#: fetch-pack.c
+#, c-format
+msgid "invalid unshallow line: %s"
+msgstr "líne neamhéadrom neamhbhailí: %s"
+
+#: fetch-pack.c
+#, c-format
+msgid "object not found: %s"
+msgstr "níor aimsíodh réad: %s"
+
+#: fetch-pack.c
+#, c-format
+msgid "error in object: %s"
+msgstr "earráid i réad: %s"
+
+#: fetch-pack.c
+#, c-format
+msgid "no shallow found: %s"
+msgstr "níl aon éadrom aimsithe: %s"
+
+#: fetch-pack.c
+#, c-format
+msgid "expected shallow/unshallow, got %s"
+msgstr "bhíothas ag súil leis íol/neamhéadrom, fuair %s"
+
+#: fetch-pack.c
+#, c-format
+msgid "got %s %d %s"
+msgstr "fuair %s %d %s"
+
+#: fetch-pack.c
+#, c-format
+msgid "invalid commit %s"
+msgstr "tiomantas neamhbhailí %s"
+
+#: fetch-pack.c
+msgid "giving up"
+msgstr "tabhairt suas"
+
+#: fetch-pack.c progress.h
+msgid "done"
+msgstr "déanta"
+
+#: fetch-pack.c
+#, c-format
+msgid "got %s (%d) %s"
+msgstr "fuair %s (%d) %s"
+
+#: fetch-pack.c
+#, c-format
+msgid "Marking %s as complete"
+msgstr "Mharcáil %s mar iomlán"
+
+#: fetch-pack.c
+#, c-format
+msgid "already have %s (%s)"
+msgstr "tá %s ann cheana féin (%s)"
+
+#: fetch-pack.c
+msgid "fetch-pack: unable to fork off sideband demultiplexer"
+msgstr "pacáiste tarchuir: ní féidir le démultiplexer banna taobh a fhorc"
+
+#: fetch-pack.c
+msgid "protocol error: bad pack header"
+msgstr "earráid prótacal: ceanntásc an phacá"
+
+#: fetch-pack.c
+#, c-format
+msgid "fetch-pack: unable to fork off %s"
+msgstr "fetch-pack: ní féidir %s a fhorc"
+
+#: fetch-pack.c
+msgid "fetch-pack: invalid index-pack output"
+msgstr "fetch-pack: aschur pacáiste innéacs-neamhbhailí"
+
+#: fetch-pack.c
+#, c-format
+msgid "%s failed"
+msgstr "Theip ar %s"
+
+#: fetch-pack.c
+msgid "error in sideband demultiplexer"
+msgstr "earráid i demultiplexer taobhbanna"
+
+#: fetch-pack.c
+#, c-format
+msgid "Server version is %.*s"
+msgstr "Is é leagan freastalaí %.*s"
+
+#: fetch-pack.c
+#, c-format
+msgid "Server supports %s"
+msgstr "Tacaíonn freastalaí le %s"
+
+#: fetch-pack.c
+msgid "Server does not support shallow clients"
+msgstr "Ní thacaíonn freastalaí le cliaint éadrom"
+
+#: fetch-pack.c
+msgid "Server does not support --shallow-since"
+msgstr "Ní thacaíonn freastalaí le --shallow-since"
+
+#: fetch-pack.c
+msgid "Server does not support --shallow-exclude"
+msgstr "Ní thacaíonn freastalaí le --shallow-exclude"
+
+#: fetch-pack.c
+msgid "Server does not support --deepen"
+msgstr "Ní thacaíonn freastalaí le --deepen"
+
+#: fetch-pack.c
+msgid "Server does not support this repository's object format"
+msgstr "Ní thacaíonn freastalaí le formáid réad an stór seo"
+
+#: fetch-pack.c
+msgid "no common commits"
+msgstr "gan aon gealltanais choiteann"
+
+#: fetch-pack.c
+msgid "git fetch-pack: fetch failed."
+msgstr "git fetch-pack: theip ar fáil."
+
+#: fetch-pack.c
+#, c-format
+msgid "mismatched algorithms: client %s; server %s"
+msgstr "halgartaim míchomhoiriúnach: cliant %s; freastalaí %s"
+
+#: fetch-pack.c
+#, c-format
+msgid "the server does not support algorithm '%s'"
+msgstr "ní thacaíonn an freastalaí algartam '%s'"
+
+#: fetch-pack.c
+msgid "Server does not support shallow requests"
+msgstr "Ní thacaíonn an freastalaí le hiarratais"
+
+#: fetch-pack.c
+msgid "unable to write request to remote"
+msgstr "in ann iarratas a scríobh chuig iargúlta"
+
+#: fetch-pack.c
+#, c-format
+msgid "expected '%s', received '%s'"
+msgstr "bhíothas ag súil le '%s', fuarthas '%s'"
+
+#: fetch-pack.c
+#, c-format
+msgid "expected '%s'"
+msgstr "ag súil le '%s'"
+
+#: fetch-pack.c
+#, c-format
+msgid "unexpected acknowledgment line: '%s'"
+msgstr "líne admhaithe gan choinne: '%s'"
+
+#: fetch-pack.c
+#, c-format
+msgid "error processing acks: %d"
+msgstr "earráidí próiseála earráide: %d"
+
+#. TRANSLATORS: The parameter will be 'ready', a protocol
+#. keyword.
+#.
+#: fetch-pack.c
+#, c-format
+msgid "expected packfile to be sent after '%s'"
+msgstr "táthar ag súil go seolfar pacáid tar éis '%s'"
+
+#. TRANSLATORS: The parameter will be 'ready', a protocol
+#. keyword.
+#.
+#: fetch-pack.c
+#, c-format
+msgid "expected no other sections to be sent after no '%s'"
+msgstr ""
+"bhíothas ag súil nach gcuirfear aon chuid eile a sheoladh tar éis gan '%s'"
+
+#: fetch-pack.c
+#, c-format
+msgid "error processing shallow info: %d"
+msgstr "earráid ag próiseáil faisnéis éadrom: %d"
+
+#: fetch-pack.c
+#, c-format
+msgid "expected wanted-ref, got '%s'"
+msgstr "bhíothas ag súil leis an tagairt a theastaigh, fuair '%s'"
+
+#: fetch-pack.c
+#, c-format
+msgid "unexpected wanted-ref: '%s'"
+msgstr "gan choinne wanted-ref: '%s'"
+
+#: fetch-pack.c
+#, c-format
+msgid "error processing wanted refs: %d"
+msgstr "próiseáil earráidí a theastaíonn referens: %d"
+
+#: fetch-pack.c
+msgid "git fetch-pack: expected response end packet"
+msgstr "git fetch-pack: paicéad deiridh freagartha ag súil leis"
+
+#: fetch-pack.c
+msgid "no matching remote head"
+msgstr "gan ceann iargúlta meaitseála"
+
+#: fetch-pack.c
+msgid "unexpected 'ready' from remote"
+msgstr "gan choinne 'réidh' ó iargúlta"
+
+#: fetch-pack.c
+#, c-format
+msgid "no such remote ref %s"
+msgstr "aon tagairt iargúlta den sórt sin %s"
+
+#: fetch-pack.c
+#, c-format
+msgid "Server does not allow request for unadvertised object %s"
+msgstr "Ní cheadaíonn freastalaí iarraidh ar réad neamhfhógraithe %s"
+
+#: fsmonitor-ipc.c
+#, c-format
+msgid "fsmonitor_ipc__send_query: invalid path '%s'"
+msgstr "fsmonitor_ipc__send_query: cosán neamhbhailí '%s'"
+
+#: fsmonitor-ipc.c
+#, c-format
+msgid "fsmonitor_ipc__send_query: unspecified error on '%s'"
+msgstr "fsmonitor_ipc__send_query: earráid neamhshonraithe ar '%s'"
+
+#: fsmonitor-ipc.c
+msgid "fsmonitor--daemon is not running"
+msgstr "níl fsmonitor--daemon ag rith"
+
+#: fsmonitor-ipc.c
+#, c-format
+msgid "could not send '%s' command to fsmonitor--daemon"
+msgstr "ní fhéadfaí ordú '%s' a sheoladh chuig fsmonitor--daemon"
+
+#: fsmonitor-settings.c
+#, c-format
+msgid "bare repository '%s' is incompatible with fsmonitor"
+msgstr "níl stór lom '%s' neamhoiriúnach le fsmonitor"
+
+#: fsmonitor-settings.c
+#, c-format
+msgid "repository '%s' is incompatible with fsmonitor due to errors"
+msgstr "tá stór '%s' neamh-chomhoiriúnach le fsmonitor de bharr earráidí"
+
+#: fsmonitor-settings.c
+#, c-format
+msgid "remote repository '%s' is incompatible with fsmonitor"
+msgstr "níl stór iargúlta '%s' neamhoiriúnach le fsmonitor"
+
+#: fsmonitor-settings.c
+#, c-format
+msgid "virtual repository '%s' is incompatible with fsmonitor"
+msgstr "níl stór fíorúil '%s' neamhoiriúnach le fsmonitor"
+
+#: fsmonitor-settings.c
+#, c-format
+msgid ""
+"socket directory '%s' is incompatible with fsmonitor due to lack of Unix "
+"sockets support"
+msgstr ""
+"tá eolaire soicéad '%s' neamhoiriúnach le fsmonitor mar gheall ar easpa "
+"tacaíochta soicéid Unix"
+
+#: git.c
+msgid ""
+"git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]\n"
+" [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
+" [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-"
+"lazy-fetch]\n"
+" [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<path>]\n"
+" [--work-tree=<path>] [--namespace=<name>] [--config-"
+"env=<name>=<envvar>]\n"
+" <command> [<args>]"
+msgstr ""
+"git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]\n"
+" [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]\n"
+" [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-"
+"lazy-fetch]\n"
+" [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<path>]\n"
+" [--work-tree=<path>] [--namespace=<name>] [--config-"
+"env=<name>=<envvar>]\n"
+" <command> [<args>]"
+
+#: git.c
+msgid ""
+"'git help -a' and 'git help -g' list available subcommands and some\n"
+"concept guides. See 'git help <command>' or 'git help <concept>'\n"
+"to read about a specific subcommand or concept.\n"
+"See 'git help git' for an overview of the system."
+msgstr ""
+"Liostaíonn 'git help -a' agus 'git help -g' fo-orduithe atá ar fáil agus "
+"roinnt\n"
+"treoracha coincheap. <concept>Féach 'git cabhr <command>'nó 'git cabhr'\n"
+"léamh faoi fho-ordú nó coincheap ar leith.\n"
+"Féach 'git help git' le haghaidh forbhreathnú ar an gcóras."
+
+#: git.c help.c
+#, c-format
+msgid "unsupported command listing type '%s'"
+msgstr "cineál liostaithe ordaithe gan tacaíocht '%s'"
+
+#: git.c
+#, c-format
+msgid "no directory given for '%s' option\n"
+msgstr "níl aon eolaire tugtha do rogha '%s'\n"
+
+#: git.c
+#, c-format
+msgid "no namespace given for --namespace\n"
+msgstr "aon spás ainmneacha a thugtar do --namespace\n"
+
+#: git.c
+#, c-format
+msgid "-c expects a configuration string\n"
+msgstr "-c ag súil le teaghrán cumraíochta\n"
+
+#: git.c
+#, c-format
+msgid "no config key given for --config-env\n"
+msgstr "níl aon eochair chumraithe tugtha do --config-env\n"
+
+#: git.c
+#, c-format
+msgid "no attribute source given for --attr-source\n"
+msgstr "níor tugadh foinse tréith do --attr-source\n"
+
+#: git.c
+#, c-format
+msgid "unknown option: %s\n"
+msgstr "rogha anaithnid: %s\n"
+
+#: git.c
+#, c-format
+msgid "while expanding alias '%s': '%s'"
+msgstr "agus ainm '%s' á leathnú: '%s'"
+
+#: git.c
+#, c-format
+msgid ""
+"alias '%s' changes environment variables.\n"
+"You can use '!git' in the alias to do this"
+msgstr ""
+"athraíonn alias '%s' athróga comhshaoil.\n"
+"Is féidir leat úsáid a bhaint as '!git' san alias chun é seo a dhéanamh"
+
+#: git.c
+#, c-format
+msgid "empty alias for %s"
+msgstr "alias folamh do %s"
+
+#: git.c
+#, c-format
+msgid "recursive alias: %s"
+msgstr "ainm athfhillteach: %s"
+
+#: git.c
+msgid "write failure on standard output"
+msgstr "teip scríobh ar aschur caighdeánach"
+
+#: git.c
+msgid "unknown write failure on standard output"
+msgstr "teip scríbhneoireachta anaithnid ar aschur"
+
+#: git.c
+msgid "close failed on standard output"
+msgstr "theip ar dhún ar aschur caighdeánach"
+
+#: git.c
+#, c-format
+msgid "alias loop detected: expansion of '%s' does not terminate:%s"
+msgstr "aimsíodh lúb alias: ní chuirtear deireadh le leathnú '%s': %s"
+
+#: git.c
+#, c-format
+msgid "cannot handle %s as a builtin"
+msgstr "ní féidir %s a láimhseáil mar thógáil"
+
+#: git.c
+#, c-format
+msgid ""
+"usage: %s\n"
+"\n"
+msgstr ""
+"úsáid: %s\n"
+"\n"
+
+#: git.c
+#, c-format
+msgid "expansion of alias '%s' failed; '%s' is not a git command\n"
+msgstr "theip ar leathnú an leasainm '%s'; ní ordú git é '%s'\n"
+
+#: git.c
+#, c-format
+msgid "failed to run command '%s': %s\n"
+msgstr "theip ort an t-ordú '%s' a reáchtáil: %s\n"
+
+#: gpg-interface.c
+msgid "could not create temporary file"
+msgstr "ní fhéadfaí comhad sealadach a chruthú"
+
+#: gpg-interface.c
+#, c-format
+msgid "failed writing detached signature to '%s'"
+msgstr "theip ar shíniú scoite a scríobh chuig '%s'"
+
+#: gpg-interface.c
+msgid ""
+"gpg.ssh.allowedSignersFile needs to be configured and exist for ssh "
+"signature verification"
+msgstr ""
+"ní mór gpg.ssh.allowedSignersFile a chumrú agus a bheith ann le haghaidh "
+"fíorú sínithe ssh"
+
+#: gpg-interface.c
+msgid ""
+"ssh-keygen -Y find-principals/verify is needed for ssh signature "
+"verification (available in openssh version 8.2p1+)"
+msgstr ""
+"tá gá le ssh-keygen -Y aimsithe/fíorú le haghaidh fíorú sínithe ssh (ar fáil "
+"i leagan openssh 8.2p1 +)"
+
+#: gpg-interface.c
+#, c-format
+msgid "ssh signing revocation file configured but not found: %s"
+msgstr "comhad cúlghairm sínithe ssh cumraithe ach níor aimsíodh: %s"
+
+#: gpg-interface.c
+#, c-format
+msgid "bad/incompatible signature '%s'"
+msgstr "síniú droch-/neamhchomhoiriúnach '%s'"
+
+#: gpg-interface.c
+#, c-format
+msgid "failed to get the ssh fingerprint for key '%s'"
+msgstr "theip ar mhéarloirg ssh a fháil don eochair '%s'"
+
+#: gpg-interface.c
+msgid ""
+"either user.signingkey or gpg.ssh.defaultKeyCommand needs to be configured"
+msgstr "is gá user.signingkey nó gpg.ssh.defaultKeyCommand a chumrú"
+
+#: gpg-interface.c
+#, c-format
+msgid "gpg.ssh.defaultKeyCommand succeeded but returned no keys: %s %s"
+msgstr ""
+"d’éirigh le gpg.ssh.defaultKeyCommand ach níor tugadh aon eochracha ar ais: "
+"%s %s"
+
+#: gpg-interface.c
+#, c-format
+msgid "gpg.ssh.defaultKeyCommand failed: %s %s"
+msgstr "theip ar gpg.ssh.defaultKeyCommand: %s %s"
+
+#: gpg-interface.c
+#, c-format
+msgid ""
+"gpg failed to sign the data:\n"
+"%s"
+msgstr ""
+"theip ar gpg na sonraí a shíniú:\n"
+"%s"
+
+#: gpg-interface.c
+msgid "user.signingKey needs to be set for ssh signing"
+msgstr "ní mór user.signingKey a shocrú le haghaidh síniú ssh"
+
+#: gpg-interface.c
+#, c-format
+msgid "failed writing ssh signing key to '%s'"
+msgstr "theip ar an eochair sínithe ssh a scríobh chuig '%s'"
+
+#: gpg-interface.c
+#, c-format
+msgid "failed writing ssh signing key buffer to '%s'"
+msgstr "theip ar scríobh ssh a shíniú maolán eochair chuig '%s'"
+
+#: gpg-interface.c
+msgid ""
+"ssh-keygen -Y sign is needed for ssh signing (available in openssh version "
+"8.2p1+)"
+msgstr ""
+"ssh-keygen -Y comhartha ag teastáil le haghaidh síniú ssh (ar fáil i leagan "
+"openssh 8.2p1+)"
+
+#: gpg-interface.c
+#, c-format
+msgid "failed reading ssh signing data buffer from '%s'"
+msgstr "theip ar mhaolán sonraí sínithe ssh a léamh ó '%s'"
+
+#: graph.c
+#, c-format
+msgid "ignored invalid color '%.*s' in log.graphColors"
+msgstr "neamhaird ar dhath neamhbhailí '%.*s' i log.graphColors"
+
+#: grep.c
+msgid ""
+"given pattern contains NULL byte (via -f <file>). This is only supported "
+"with -P under PCRE v2"
+msgstr ""
+"tá byte NULL (trí -f<file>) i bpatrún tugtha. Ní thacaítear leis seo ach le "
+"-P faoi PCRE v2"
+
+#: grep.c
+#, c-format
+msgid "'%s': unable to read %s"
+msgstr "'%s': ní féidir %s a léamh"
+
+#: grep.c
+#, c-format
+msgid "'%s': short read"
+msgstr "'%s': léamh gearr"
+
+#: help.c
+msgid "start a working area (see also: git help tutorial)"
+msgstr "tús a chur le limistéar oibre (féach freisin: teagaisc cabhrach git)"
+
+#: help.c
+msgid "work on the current change (see also: git help everyday)"
+msgstr "obair ar an athrú reatha (féach freisin: git help gach lá)"
+
+#: help.c
+msgid "examine the history and state (see also: git help revisions)"
+msgstr ""
+"scrúdú a dhéanamh ar an stair agus an stát (féach freisin: athbhreithnithe "
+"cabhrach git)"
+
+#: help.c
+msgid "grow, mark and tweak your common history"
+msgstr "do stair choiteann a fhás, a mharcáil agus a athrú"
+
+#: help.c
+msgid "collaborate (see also: git help workflows)"
+msgstr "comhoibriú (féach freisin: sreafaí oibre cabhrach git)"
+
+#: help.c
+msgid "Main Porcelain Commands"
+msgstr "Príomh-Orduithe Poirce"
+
+#: help.c
+msgid "Ancillary Commands / Manipulators"
+msgstr "Orduithe Coimhdeachta/Ionramhálaí"
+
+#: help.c
+msgid "Ancillary Commands / Interrogators"
+msgstr "Orduithe Coimhdeacha/Ceisteoirí"
+
+#: help.c
+msgid "Interacting with Others"
+msgstr "Idirghníomhú le daoine eile"
+
+#: help.c
+msgid "Low-level Commands / Manipulators"
+msgstr "Orduithe Ísealleibhéil/Ionramhálaithe"
+
+#: help.c
+msgid "Low-level Commands / Interrogators"
+msgstr "Orduithe ísealleibhéil/ceisteoirí"
+
+#: help.c
+msgid "Low-level Commands / Syncing Repositories"
+msgstr "Orduithe Leibhéal Íseal/Stóráin Sioncrónaithe"
+
+#: help.c
+msgid "Low-level Commands / Internal Helpers"
+msgstr "Orduithe Leibhéal Íseal/Cúntóirí Inmheánacha"
+
+#: help.c
+msgid "User-facing repository, command and file interfaces"
+msgstr "Comhéadain stór, ordaithe agus comhad atá os comhair úsáideora"
+
+#: help.c
+msgid "Developer-facing file formats, protocols and other interfaces"
+msgstr ""
+"Formáidí comhaid, prótacail agus comhéadain eile atá os comhair an fhorbróra"
+
+#: help.c
+#, c-format
+msgid "available git commands in '%s'"
+msgstr "orduithe git atá ar fáil i '%s'"
+
+#: help.c
+msgid "git commands available from elsewhere on your $PATH"
+msgstr "orduithe git ar fáil ó áiteanna eile ar do $PATH"
+
+#: help.c
+msgid "These are common Git commands used in various situations:"
+msgstr "Seo orduithe coitianta Git a úsáidtear i gcásanna éagsúla:"
+
+#: help.c
+msgid "The Git concept guides are:"
+msgstr "Is iad na treoracha coincheap Git:"
+
+#: help.c
+msgid "User-facing repository, command and file interfaces:"
+msgstr "Stóráil, ordaithe agus comhéadain comhad atá os comhair úsáideora:"
+
+#: help.c
+msgid "File formats, protocols and other developer interfaces:"
+msgstr "Formáidí comhaid, prótacail agus comhéadain forbróra eile:"
+
+#: help.c
+msgid "External commands"
+msgstr "Orduithe seachtracha"
+
+#: help.c
+msgid "Command aliases"
+msgstr "Ainmneacha ordaithe"
+
+#: help.c
+msgid "See 'git help <command>' to read about a specific subcommand"
+msgstr "Féach 'git help <command>'chun léamh faoi fho-ordú ar leith"
+
+#: help.c
+#, c-format
+msgid ""
+"'%s' appears to be a git command, but we were not\n"
+"able to execute it. Maybe git-%s is broken?"
+msgstr ""
+"Is cosúil gur ordú git é '%s', ach ní raibh muid\n"
+"in ann é a fhorghníomhú. B'fhéidir go bhfuil git-%s briste?"
+
+#: help.c
+#, c-format
+msgid "git: '%s' is not a git command. See 'git --help'."
+msgstr "git: Ní ordú git é '%s'. Féach 'git --help'."
+
+#: help.c
+msgid "Uh oh. Your system reports no Git commands at all."
+msgstr ""
+"Ó, a Dhia. Ní thuairiscíonn do chóras aon orduithe Git ar chor ar bith."
+
+#: help.c
+#, c-format
+msgid "WARNING: You called a Git command named '%s', which does not exist."
+msgstr "RABHADH: Ghlaoigh tú ordú Git darb ainm '%s', nach bhfuil ann."
+
+#: help.c
+#, c-format
+msgid "Continuing under the assumption that you meant '%s'."
+msgstr "Ag leanúint faoin toimhde gur chiallaigh tú '%s'."
+
+#: help.c
+#, c-format
+msgid "Run '%s' instead [y/N]? "
+msgstr "Rith '%s' ina ionad sin [y/N]? "
+
+#: help.c
+#, c-format
+msgid "Continuing in %0.1f seconds, assuming that you meant '%s'."
+msgstr ""
+"Ag leanúint ar aghaidh i %0.1f soicind, ag glacadh leis gur chiallaigh tú "
+"'%s'."
+
+#: help.c
+msgid ""
+"\n"
+"The most similar command is"
+msgid_plural ""
+"\n"
+"The most similar commands are"
+msgstr[0] ""
+"\n"
+"Is é an t-ordú is cosúla ná"
+msgstr[1] ""
+"\n"
+"Is iad na horduithe is cosúla ná"
+msgstr[2] ""
+"\n"
+"Is iad na horduithe is cosúla ná"
+
+#: help.c
+msgid "git version [--build-options]"
+msgstr "leagan git [--build-options]"
+
+#: help.c
+#, c-format
+msgid "%s: %s - %s"
+msgstr "%s: %s - %s"
+
+#: help.c
+msgid ""
+"\n"
+"Did you mean this?"
+msgid_plural ""
+"\n"
+"Did you mean one of these?"
+msgstr[0] ""
+"\n"
+"An raibh sé seo i gceist agat?"
+msgstr[1] ""
+"\n"
+"An raibh ceann acu seo i gceist agat?"
+msgstr[2] ""
+"\n"
+"An raibh ceann acu seo i gceist agat?"
+
+#: hook.c
+#, c-format
+msgid ""
+"The '%s' hook was ignored because it's not set as executable.\n"
+"You can disable this warning with `git config set advice.ignoredHook false`."
+msgstr ""
+"Rinneadh neamhaird ar an gcroca '%s' toisc nach bhfuil sé socraithe mar "
+"infheidhmithe.\n"
+"Is féidir leat an rabhadh seo a dhíchumasú le `git config set "
+"advice.ignoredHook false `."
+
+#: http-fetch.c
+msgid "not a git repository"
+msgstr "ní stór git"
+
+#: http-fetch.c
+#, c-format
+msgid "argument to --packfile must be a valid hash (got '%s')"
+msgstr ""
+"caithfidh argóint chuig --packfile a bheith ina hash bailí (fuair '%s')"
+
+#: http.c
+#, c-format
+msgid "negative value for http.postBuffer; defaulting to %d"
+msgstr "luach diúltach do http.postBuffer; réamhshocraithe go %d"
+
+#: http.c
+msgid "Delegation control is not supported with cURL < 7.22.0"
+msgstr "Ní thacaítear le cURL <7.22.0 le rialú tarscaireachta"
+
+#: http.c
+msgid "Unknown value for http.proactiveauth"
+msgstr "Luach anaithnid do http.proactiveauth"
+
+#: http.c parse.c
+#, c-format
+msgid "failed to parse %s"
+msgstr "theip ar %s a pharsáil"
+
+#: http.c
+#, c-format
+msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
+msgstr "'%s' cúltaca SSL gan tacaíocht. Cúltaca SSL tacaithe:"
+
+#: http.c
+#, c-format
+msgid "Could not set SSL backend to '%s': cURL was built without SSL backends"
+msgstr "Níor féidir cúltaca SSL a shocrú go '%s': Tógadh cURL gan cúltaca SSL"
+
+#: http.c
+#, c-format
+msgid "Could not set SSL backend to '%s': already set"
+msgstr "Níorbh fhéidir cúltaca SSL a shocrú go '%s': socraithe cheana féin"
+
+#: http.c
+msgid "refusing to read cookies from http.cookiefile '-'"
+msgstr "diúltú fianáin a léamh ó http.cookiefile '-'"
+
+#: http.c
+msgid "ignoring http.savecookies for empty http.cookiefile"
+msgstr ""
+"neamhaird a dhéanamh ar http.savecookies le haghaidh http.cookiefile folamh"
+
+#: http.c
+#, c-format
+msgid ""
+"unable to update url base from redirection:\n"
+" asked for: %s\n"
+" redirect: %s"
+msgstr ""
+"in ann bonn url a nuashonrú ó atreorú:\n"
+" iarrtha ar: %s\n"
+" atreorú: %s"
+
+#: ident.c
+msgid "Author identity unknown\n"
+msgstr "Céannacht an údair anaithnid\n"
+
+#: ident.c
+msgid "Committer identity unknown\n"
+msgstr "Céannacht an chomórtais anaithnid\n"
+
+#: ident.c
+msgid ""
+"\n"
+"*** Please tell me who you are.\n"
+"\n"
+"Run\n"
+"\n"
+" git config --global user.email \"you@example.com\"\n"
+" git config --global user.name \"Your Name\"\n"
+"\n"
+"to set your account's default identity.\n"
+"Omit --global to set the identity only in this repository.\n"
+"\n"
+msgstr ""
+"\n"
+"*** Inis dom cé tú féin, le do thoil.\n"
+"\n"
+"Rith\n"
+"\n"
+" git config --global user.email \"you@example.com”\n"
+" git config --global user.name “Do Ainm”\n"
+"\n"
+"chun féiniúlacht réamhshocraithe do chuntais a shocrú.\n"
+"Fág --global chun an aitheantas a shocrú sa stór seo amháin.\n"
+
+#: ident.c
+msgid "no email was given and auto-detection is disabled"
+msgstr "níor tugadh aon ríomhphost agus tá brath uathoibríoch faoi"
+
+#: ident.c
+#, c-format
+msgid "unable to auto-detect email address (got '%s')"
+msgstr "in ann seoladh ríomhphoist a bhrath go huathoibríoch (fuair '%s')"
+
+#: ident.c
+msgid "no name was given and auto-detection is disabled"
+msgstr "ní tugadh aon ainm agus tá brath uathoibríoch faoi dhíchum"
+
+#: ident.c
+#, c-format
+msgid "unable to auto-detect name (got '%s')"
+msgstr "ní féidir ainm a bhrath go huathoibríoch (fuair '%s')"
+
+#: ident.c
+#, c-format
+msgid "empty ident name (for <%s>) not allowed"
+msgstr "ainm ident folamh (le haghaidh <%s>) nach gceadaítear"
+
+#: ident.c
+#, c-format
+msgid "name consists only of disallowed characters: %s"
+msgstr "ní chuimsíonn ainm ach carachtair neamh-cheadaithe: %s"
+
+#: list-objects-filter-options.c
+msgid "expected 'tree:<depth>'"
+msgstr "<depth>'crann ag súil leis: '"
+
+#: list-objects-filter-options.c
+msgid "sparse:path filters support has been dropped"
+msgstr "neamhchoitianta: tá tacaíocht scagairí cosáin titim"
+
+#: list-objects-filter-options.c
+#, c-format
+msgid "'%s' for 'object:type=<type>' is not a valid object type"
+msgstr "<type>Ní cineál réad bailí é '%s' le haghaidh 'object:type='"
+
+#: list-objects-filter-options.c
+#, c-format
+msgid "invalid filter-spec '%s'"
+msgstr "scagaire neamhbhailí '%s'"
+
+#: list-objects-filter-options.c
+#, c-format
+msgid "must escape char in sub-filter-spec: '%c'"
+msgstr "ní mór don char a éalú i sub-filter-spec: '%c'"
+
+#: list-objects-filter-options.c
+msgid "expected something after combine:"
+msgstr "ag súil le rud éigin tar éis an chomhcheangail:"
+
+#: list-objects-filter-options.c
+msgid "multiple filter-specs cannot be combined"
+msgstr "ní féidir ilshonraíochtaí scagaire a chomhcheangal"
+
+#: list-objects-filter-options.c
+msgid "unable to upgrade repository format to support partial clone"
+msgstr "in ann formáid stórais a uasghrádú chun tacú le clón páirteach"
+
+#: list-objects-filter-options.h
+msgid "args"
+msgstr "args"
+
+#: list-objects-filter-options.h
+msgid "object filtering"
+msgstr "scagadh réad"
+
+#: list-objects-filter.c
+#, c-format
+msgid "unable to access sparse blob in '%s'"
+msgstr "ní féidir rochtain a fháil ar bhlob neamhchoitianta i '%s'"
+
+#: list-objects-filter.c
+#, c-format
+msgid "unable to parse sparse filter data in %s"
+msgstr "nach féidir sonraí scagaire neamhchoitianta a pháirseáil i %s"
+
+#: list-objects.c
+#, c-format
+msgid "entry '%s' in tree %s has tree mode, but is not a tree"
+msgstr "tá modh crann ag iontráil '%s' i gcrann %s, ach ní crann í"
+
+#: list-objects.c
+#, c-format
+msgid "entry '%s' in tree %s has blob mode, but is not a blob"
+msgstr "tá modh blob ag iontráil '%s' i gcrann %s, ach ní blob í"
+
+#: list-objects.c
+#, c-format
+msgid "unable to load root tree for commit %s"
+msgstr "nach féidir crann fréimhe a luchtú le haghaidh tiomanta %s"
+
+#: lockfile.c
+#, c-format
+msgid ""
+"Unable to create '%s.lock': %s.\n"
+"\n"
+"Another git process seems to be running in this repository, e.g.\n"
+"an editor opened by 'git commit'. Please make sure all processes\n"
+"are terminated then try again. If it still fails, a git process\n"
+"may have crashed in this repository earlier:\n"
+"remove the file manually to continue."
+msgstr ""
+"Ní féidir '%s.lock' a chruthú: %s.\n"
+"\n"
+"Is cosúil go bhfuil próiseas git eile ag rith sa stór seo, e.g.\n"
+"eagarthóir a osclaíodh ag 'git commit'. Déan cinnte le do thoil gach "
+"próiseas\n"
+"foirceanntar ansin déan iarracht arís. Má theipeann air fós, próiseas git\n"
+"d'fhéadfadh go mbeadh sé titim sa stór seo níos luaithe:\n"
+"bain an comhad de láimh chun leanúint ar aghaidh."
+
+#: lockfile.c
+#, c-format
+msgid "Unable to create '%s.lock': %s"
+msgstr "Ní féidir '%s.lock' a chruthú: %s"
+
+#: log-tree.c
+msgid "unable to create temporary object directory"
+msgstr "in ann eolaire réad sealadach a chruthú"
+
+#: loose.c
+#, c-format
+msgid "could not write loose object index %s"
+msgstr "ní fhéadfaí innéacs réad scaoilte %s a scrí"
+
+#: loose.c
+#, c-format
+msgid "failed to write loose object index %s"
+msgstr "theip ar innéacs réad scaoilte %s a scríobh"
+
+#: ls-refs.c
+#, c-format
+msgid "unexpected line: '%s'"
+msgstr "líne gan choinne: '%s'"
+
+#: ls-refs.c
+msgid "expected flush after ls-refs arguments"
+msgstr "súil le sruth tar éis argóintí ls-refs"
+
+#: mailinfo.c
+msgid "quoted CRLF detected"
+msgstr "braithíodh CRLF a luaitear"
+
+#: mem-pool.c strbuf.c wrapper.c
+#, c-format
+msgid "unable to format message: %s"
+msgstr "nach féidir teachtaireacht a fhormáidiú: %s"
+
+#: merge-ll.c
+#, c-format
+msgid "invalid marker-size '%s', expecting an integer"
+msgstr "méid marcóra neamhbhailí '%s', ag súil le sláimhir"
+
+#: merge-ort-wrappers.c
+#, c-format
+msgid "Could not parse object '%s'"
+msgstr "Ní fhéadfaí réad '%s' a pháirseáil"
+
+#: merge-ort.c
+#, c-format
+msgid "Failed to merge submodule %s (not checked out)"
+msgstr "Theip ar fho-mhodúl %s a chumasc (níor seiceáiltear amach)"
+
+#: merge-ort.c
+#, c-format
+msgid "Failed to merge submodule %s (no merge base)"
+msgstr "Theip ar fho-mhodúl %s a chumasc (gan aon bhonn cumaisc)"
+
+#: merge-ort.c
+#, c-format
+msgid "Failed to merge submodule %s (commits not present)"
+msgstr "Theip ar fho-mhodúl %s a chumasc (níl gealltanas ann)"
+
+#: merge-ort.c
+#, c-format
+msgid "error: failed to merge submodule %s (repository corrupt)"
+msgstr "earráid: theip ar fho-mhodúl %s a chumasc (stór truaillithe)"
+
+#: merge-ort.c
+#, c-format
+msgid "Failed to merge submodule %s (commits don't follow merge-base)"
+msgstr "Theip ar fho-mhodúl %s a chumasc (ní leanann gealltanna cumaisc bonn)"
+
+#: merge-ort.c
+#, c-format
+msgid "Note: Fast-forwarding submodule %s to %s"
+msgstr "Nóta: Fo-mhodúl %s a chur ar aghaidh go tapa chuig %s"
+
+#: merge-ort.c
+#, c-format
+msgid "Failed to merge submodule %s"
+msgstr "Theip ar fho-mhodúl %s a chumasc"
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"Failed to merge submodule %s, but a possible merge resolution exists: %s"
+msgstr ""
+"Theip ar fho-mhodúl %s a chumasc, ach tá réiteach cumaisc féideartha ann: %s"
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"Failed to merge submodule %s, but multiple possible merges exist:\n"
+"%s"
+msgstr ""
+"Theip ar fho-mhodúl %s a chumasc, ach tá go leor cumaisc féideartha ann:\n"
+"%s"
+
+#: merge-ort.c
+#, c-format
+msgid "error: failed to execute internal merge for %s"
+msgstr "earráid: theip ar chumasc inmheánach a chur i gcrích le haghaidh %s"
+
+#: merge-ort.c
+#, c-format
+msgid "error: unable to add %s to database"
+msgstr "earráid: ní féidir %s a chur leis an mbunachar sonraí"
+
+#: merge-ort.c
+#, c-format
+msgid "Auto-merging %s"
+msgstr "Cumaisc uathoibríoch %s"
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
+"implicit directory rename(s) putting the following path(s) there: %s."
+msgstr ""
+"COIMHLINT (athainmniú intuigthe dir): Comhad/dir atá ann cheana ag %s i "
+"mbealach athainmniú eolaire intuigthe ag cur na cosáin seo a leanas ann: %s."
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
+"implicit directory renames tried to put these paths there: %s"
+msgstr ""
+"CONFLICT (athainmniú intuigthe): Ní féidir níos mó ná cosán amháin a mhapáil "
+"chuig %s; rinne athainmneacha eolaire intuigthe iarracht na cosáin seo a "
+"chur ann: %s"
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"CONFLICT (directory rename split): Unclear where to rename %s to; it was "
+"renamed to multiple other directories, with no destination getting a "
+"majority of the files."
+msgstr ""
+"CONFLICT (scoilt athainmniú eolaire): Níl soiléir cá háit le %s a "
+"athainmniú; athainmníodh é go eolairí éagsúla eile, gan aon cheann scríbe a "
+"fháil tromlach na gcomhaid."
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
+"renamed."
+msgstr ""
+"RABHADH: Seachaint %s a chur i bhfeidhm -> %s a athainmniú go %s, toisc gur "
+"athainmníodh %s féin."
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"Path updated: %s added in %s inside a directory that was renamed in %s; "
+"moving it to %s."
+msgstr ""
+"Conair nuashonraithe: Cuireadh %s isteach i %s taobh istigh de eolaire a "
+"athainmníodh i %s; ag bogadh é go %s."
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
+"%s; moving it to %s."
+msgstr ""
+"Conair nuashonraithe: Athainmníodh %s go %s i %s, taobh istigh de eolaire a "
+"athainmníodh i %s; é ag bogadh go %s."
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"CONFLICT (file location): %s added in %s inside a directory that was renamed "
+"in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"COIMHLINT (suíomh comhaid): Cuireadh %s isteach i %s taobh istigh de eolaire "
+"a athainmníodh i %s, rud a thugann le tuiscint gur cheart é a aistriú go %s "
+"b'fhéidir."
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
+"was renamed in %s, suggesting it should perhaps be moved to %s."
+msgstr ""
+"COIMHLINT (suíomh comhaid): Athainmníodh %s go %s i %s, taobh istigh de "
+"eolaire a athainmníodh i %s, ag moladh gur cheart é a aistriú go %s "
+"b'fhéidir."
+
+#: merge-ort.c
+#, c-format
+msgid "CONFLICT (rename/rename): %s renamed to %s in %s and to %s in %s."
+msgstr ""
+"COIMHLINT (athainmniú/athainmniú): Athainmníodh %s go %s i %s agus go %s i "
+"%s."
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"CONFLICT (rename involved in collision): rename of %s -> %s has content "
+"conflicts AND collides with another path; this may result in nested conflict "
+"markers."
+msgstr ""
+"COIMHLINT (athainmniú a bhaineann le imbhualadh): athainmnigh %s -> tá "
+"coinbhleachtaí ábhair ag %s AGUS imbhuaileann sé le cosán eile; d'fhéadfadh "
+"marcóirí coinbhleachta neadaithe a bheith mar thoradh air seo."
+
+#: merge-ort.c
+#, c-format
+msgid "CONFLICT (rename/delete): %s renamed to %s in %s, but deleted in %s."
+msgstr ""
+"COIMHLINT (athainmniú/scrios): Athainmníodh %s go %s i %s, ach scriosadh é i "
+"%s."
+
+#: merge-ort.c
+#, c-format
+msgid "error: cannot read object %s"
+msgstr "earráid: ní féidir réad %s a léamh"
+
+#: merge-ort.c
+#, c-format
+msgid "error: object %s is not a blob"
+msgstr "earráid: ní blob é réad %s"
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"CONFLICT (file/directory): directory in the way of %s from %s; moving it to "
+"%s instead."
+msgstr ""
+"CONFLICT (comhad/eolaire): eolaire ar bhealach %s ó %s; é a bhogadh go %s "
+"ina ionad."
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed both "
+"of them so each can be recorded somewhere."
+msgstr ""
+"COIMHLINT (cineálacha ar leith): Bhí cineálacha difriúla ag %s ar gach "
+"taobh; athainmníodh an dá cheann ionas gur féidir gach ceann a thaifeadadh "
+"áit éigin."
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"CONFLICT (distinct types): %s had different types on each side; renamed one "
+"of them so each can be recorded somewhere."
+msgstr ""
+"COIMHLINT (cineálacha ar leith): Bhí cineálacha difriúla ag %s ar gach "
+"taobh; athainmníodh ceann acu ionas gur féidir gach ceann a thaifeadadh áit "
+"éigin."
+
+#: merge-ort.c
+msgid "content"
+msgstr "ábhar"
+
+#: merge-ort.c
+msgid "add/add"
+msgstr "cuirte/cuir leis"
+
+#: merge-ort.c
+msgid "submodule"
+msgstr "fo-mhodúl"
+
+#: merge-ort.c
+#, c-format
+msgid "CONFLICT (%s): Merge conflict in %s"
+msgstr "COIMHLINT (%s): Cumaisc coinbhleacht i %s"
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"CONFLICT (modify/delete): %s deleted in %s and modified in %s. Version %s "
+"of %s left in tree."
+msgstr ""
+"CONFLICT (modhnó/scriosadh): Scriosta %s i %s agus modhnaithe i %s. Tá "
+"leagan %s de %s fágtha sa chrann."
+
+#. TRANSLATORS: This is a line of advice to resolve a merge
+#. conflict in a submodule. The first argument is the submodule
+#. name, and the second argument is the abbreviated id of the
+#. commit that needs to be merged. For example:
+#. - go to submodule (mysubmodule), and either merge commit abc1234"
+#.
+#: merge-ort.c
+#, c-format
+msgid ""
+" - go to submodule (%s), and either merge commit %s\n"
+" or update to an existing commit which has merged those changes\n"
+msgstr ""
+" - téigh go dtí an fo-mhodúl (%s), agus cumasc an tiomantas %s\n"
+" nó nuashonraigh chuig tiomantas atá ann cheana féin a bhfuil na "
+"hathruithe sin cumasctha aige.\n"
+
+#: merge-ort.c
+#, c-format
+msgid ""
+"Recursive merging with submodules currently only supports trivial cases.\n"
+"Please manually handle the merging of each conflicted submodule.\n"
+"This can be accomplished with the following steps:\n"
+"%s - come back to superproject and run:\n"
+"\n"
+" git add %s\n"
+"\n"
+" to record the above merge or update\n"
+" - resolve any other conflicts in the superproject\n"
+" - commit the resulting index in the superproject\n"
+msgstr ""
+"Faoi láthair ní thacaíonn cumasc athfhillteach le fo-mhodúil ach le cásanna "
+"míbhá\n"
+"Láimhseáil le cumasc gach fo-mhodúl coimhlinte de láimh le do thoil.\n"
+"Is féidir é seo a chur i gcrích leis na céimeanna seo a leanas:\n"
+"%s - teacht ar ais chuig superproject agus rith:\n"
+"\n"
+" git add %s\n"
+"\n"
+" chun an cumasc thuas nó nuashonrú a thaifead\n"
+" - aon choimhlintí eile sa superproject a réiteach\n"
+" - an t-innéacs mar thoradh air a thiomnú sa sárthionscadal\n"
+
+#. TRANSLATORS: The %s arguments are: 1) tree hash of a merge
+#. base, and 2-3) the trees for the two trees we're merging.
+#.
+#: merge-ort.c
+#, c-format
+msgid "collecting merge info failed for trees %s, %s, %s"
+msgstr "theip ar fhaisnéis chumaisc a bhailiú do chrainn %s, %s, %s"
+
+#: merge.c
+msgid "failed to read the cache"
+msgstr "theip ar an taisce a léamh"
+
+#: midx-write.c
+#, c-format
+msgid "failed to add packfile '%s'"
+msgstr "theip ar chomhad pacáiste '%s' a chur leis"
+
+#: midx-write.c
+#, c-format
+msgid "failed to open pack-index '%s'"
+msgstr "theip ar innéacs pacáiste '%s' a oscailt"
+
+#: midx-write.c
+#, c-format
+msgid "failed to locate object %d in packfile"
+msgstr "theip ar réad %d a aimsiú i packfile"
+
+#: midx-write.c
+msgid "cannot store reverse index file"
+msgstr "ní féidir comhad innéacs droim a stóráil"
+
+#: midx-write.c
+#, c-format
+msgid "could not parse line: %s"
+msgstr "ní fhéadfaí líne a pháirseáil: %s"
+
+#: midx-write.c
+#, c-format
+msgid "malformed line: %s"
+msgstr "líne mhífhoirmithe: %s"
+
+#: midx-write.c
+msgid "could not load pack"
+msgstr "ní fhéadfaí pacáiste a luchtú"
+
+#: midx-write.c
+#, c-format
+msgid "could not open index for %s"
+msgstr "ní raibh in ann innéacs a oscailt do %s"
+
+#: midx-write.c
+#, c-format
+msgid "unable to link '%s' to '%s'"
+msgstr "ní féidir '%s' a nascadh le '%s'"
+
+#: midx-write.c midx.c
+#, c-format
+msgid "failed to clear multi-pack-index at %s"
+msgstr "theip ar innéacs il-phacáiste a ghlanadh ag %s"
+
+#: midx-write.c
+msgid "ignoring existing multi-pack-index; checksum mismatch"
+msgstr ""
+"neamhaird a dhéanamh ar innéacs il-phacáiste atá ann cheana; mímheaitseáil"
+
+#: midx-write.c
+#, c-format
+msgid "could not load reverse index for MIDX %s"
+msgstr "ní fhéadfaí innéacs droim a luchtú do MIDX %s"
+
+#: midx-write.c
+msgid "Adding packfiles to multi-pack-index"
+msgstr "Comhaid pacáiste a chur le hinnéacs il-phacáiste"
+
+#: midx-write.c
+#, c-format
+msgid "unknown preferred pack: '%s'"
+msgstr "pacáiste roghnaithe anaithnid: '%s'"
+
+#: midx-write.c
+#, c-format
+msgid "cannot select preferred pack %s with no objects"
+msgstr "ní féidir pacáiste roghnaithe %s a roghnú gan aon rudaí"
+
+#: midx-write.c
+#, c-format
+msgid "did not see pack-file %s to drop"
+msgstr "níor chonaic sé pacáist-chomhad %s le scaoileadh"
+
+#: midx-write.c
+#, c-format
+msgid "preferred pack '%s' is expired"
+msgstr "tá an pacáiste roghnaithe '%s' in éag"
+
+#: midx-write.c
+msgid "no pack files to index."
+msgstr "gan aon phacáiste comhaid le hinnéacs."
+
+#: midx-write.c
+msgid "refusing to write multi-pack .bitmap without any objects"
+msgstr "diúltú a scríobh il-pacáiste.bitmap gan aon rudaí"
+
+#: midx-write.c
+msgid "unable to create temporary MIDX layer"
+msgstr "in ann ciseal MIDX sealadach a chruthú"
+
+#: midx-write.c
+msgid "could not write multi-pack bitmap"
+msgstr "ní fhéadfaí bitmap il-phacáiste a scríobh"
+
+#: midx-write.c
+msgid "unable to open multi-pack-index chain file"
+msgstr "in ann comhad slabhra in-innéacs il-phacáiste a oscailt"
+
+#: midx-write.c
+msgid "unable to rename new multi-pack-index layer"
+msgstr "in ann ciseal innéacs ilphacáiste nua a athainmniú"
+
+#: midx-write.c
+msgid "could not write multi-pack-index"
+msgstr "ní fhéadfaí innéacs il-phacáiste a scríobh"
+
+#: midx-write.c
+msgid "cannot expire packs from an incremental multi-pack-index"
+msgstr ""
+"ní féidir le pacáistí a chur in éag ó innéacs ilphacáiste incriminteach"
+
+#: midx-write.c
+msgid "Counting referenced objects"
+msgstr "Rud tagartha a chomhaireamh"
+
+#: midx-write.c
+msgid "Finding and deleting unreferenced packfiles"
+msgstr "Comhaid pacáiste gan tagairt a aimsiú agus a scriosadh"
+
+#: midx-write.c
+msgid "cannot repack an incremental multi-pack-index"
+msgstr "ní féidir le hinnéacs ilphacáiste incriminteach a athphacáil"
+
+#: midx-write.c
+msgid "could not start pack-objects"
+msgstr "ní fhéadfaí pacáiste-rudaí a thosú"
+
+#: midx-write.c
+msgid "could not finish pack-objects"
+msgstr "ní raibh sé in ann pacáistí a chríochnú"
+
+#: midx.c
+msgid "multi-pack-index OID fanout is of the wrong size"
+msgstr "tá fanout OID ilphacáiste den mhéid mícheart"
+
+#: midx.c
+#, c-format
+msgid ""
+"oid fanout out of order: fanout[%d] = %<PRIx32> > %<PRIx32> = fanout[%d]"
+msgstr "fanout oid as ord: fanout [%d] =% <PRIx32>>% <PRIx32>= fanout [%d]"
+
+#: midx.c
+msgid "multi-pack-index OID lookup chunk is the wrong size"
+msgstr "tá an méid mícheart ar an smután cuardaigh OID innéacs ilphacáiste"
+
+#: midx.c
+msgid "multi-pack-index object offset chunk is the wrong size"
+msgstr ""
+"tá an méid mícheart ar an smután fritháireamh réada innéacs ilphacáiste"
+
+#: midx.c
+#, c-format
+msgid "multi-pack-index file %s is too small"
+msgstr "tá comhad in-innéacs ilphacáiste %s ró-bheag"
+
+#: midx.c
+#, c-format
+msgid "multi-pack-index signature 0x%08x does not match signature 0x%08x"
+msgstr "ní mheaitseálann síniú innéacs il-phacáiste 0x%08x síniú 0x%08x"
+
+#: midx.c
+#, c-format
+msgid "multi-pack-index version %d not recognized"
+msgstr "ní aithnítear leagan innéacs il-phacáiste %d"
+
+#: midx.c
+#, c-format
+msgid "multi-pack-index hash version %u does not match version %u"
+msgstr "ní hionann leagan %u den hais innéacs ilphacáiste agus leagan %u"
+
+#: midx.c
+msgid "multi-pack-index required pack-name chunk missing or corrupted"
+msgstr ""
+"innéacs il-phacáiste teastaíonn píosa ainm pacáiste ar iarraidh nó "
+"truaillithe"
+
+#: midx.c
+msgid "multi-pack-index required OID fanout chunk missing or corrupted"
+msgstr ""
+"teastaíonn innéacs il-phacáiste le píosa fanout OID atá ar iarraidh nó "
+"truaillithe"
+
+#: midx.c
+msgid "multi-pack-index required OID lookup chunk missing or corrupted"
+msgstr ""
+"teastaíonn innéacs ilphacáiste cuardaigh OID atá ar iarraidh nó truaillithe"
+
+#: midx.c
+msgid "multi-pack-index required object offsets chunk missing or corrupted"
+msgstr ""
+"smután fritháireamh réada riachtanach innéacs ilphacáiste ar iarraidh nó "
+"truaillithe"
+
+#: midx.c
+msgid "multi-pack-index pack-name chunk is too short"
+msgstr "tá píosa ainm pacáiste innéacs il-phacáiste ró-ghearr"
+
+#: midx.c
+#, c-format
+msgid "multi-pack-index pack names out of order: '%s' before '%s'"
+msgstr "ainmneacha pacáiste in-innéacs il-phacáiste as ord: '%s' roimh '%s'"
+
+#: midx.c
+msgid "multi-pack-index chain file too small"
+msgstr "comhad slabhra in-innéacs il-phacáiste ró-bheag"
+
+#: midx.c
+#, c-format
+msgid "pack count in base MIDX too high: %<PRIuMAX>"
+msgstr "líon pacáiste i mbonn MIDX ró-ard:%<PRIuMAX>"
+
+#: midx.c
+#, c-format
+msgid "object count in base MIDX too high: %<PRIuMAX>"
+msgstr "líon rudaí i mbonn MIDX ró-ard:%<PRIuMAX>"
+
+#: midx.c
+#, c-format
+msgid "invalid multi-pack-index chain: line '%s' not a hash"
+msgstr "slabhra innéacs il-phacáiste neamhbhailí: ní hash é líne '%s'"
+
+#: midx.c
+msgid "unable to find all multi-pack index files"
+msgstr "in ann gach comhad innéacs il-phacáiste a fháil"
+
+#: midx.c
+msgid "invalid MIDX object position, MIDX is likely corrupt"
+msgstr "suíomh réad MIDX neamhbhailí, is dócha go bhfuil MIDX truaillithe"
+
+#: midx.c
+#, c-format
+msgid "bad pack-int-id: %u (%u total packs)"
+msgstr "bad pack-int-id: %u (pacáistí iomlána %u)"
+
+#: midx.c
+msgid "MIDX does not contain the BTMP chunk"
+msgstr "Níl an píosa BTMP i MIDX"
+
+#: midx.c
+#, c-format
+msgid "could not load bitmapped pack %<PRIu32>"
+msgstr "ní fhéadfaí pacáiste bitmapped a luchtú% <PRIu32>"
+
+#: midx.c
+msgid "multi-pack-index stores a 64-bit offset, but off_t is too small"
+msgstr ""
+"stórálann innéacs il-phacáiste fritháireamh 64-giotán, ach tá off_t ró-bheag"
+
+#: midx.c
+msgid "multi-pack-index large offset out of bounds"
+msgstr "innéacs il-phacáiste fhritháireamh mór as teorainneacha"
+
+#: midx.c
+msgid "multi-pack-index file exists, but failed to parse"
+msgstr "tá comhad in-innéacs il-phacáiste ann, ach theip air a pháirseáil"
+
+#: midx.c
+msgid "incorrect checksum"
+msgstr "seiceáil mícheart"
+
+#: midx.c
+msgid "Looking for referenced packfiles"
+msgstr "Ag lorg comhaid pacáiste tagartha"
+
+#: midx.c
+msgid "the midx contains no oid"
+msgstr "níl aon oid sa midx"
+
+#: midx.c
+msgid "Verifying OID order in multi-pack-index"
+msgstr "Ordú OID a fhíorú in innéacs il-phacáiste"
+
+#: midx.c
+#, c-format
+msgid "oid lookup out of order: oid[%d] = %s >= %s = oid[%d]"
+msgstr "cuardach oid as ord: oid [%d] = %s >= %s = oid [%d]"
+
+#: midx.c
+msgid "Sorting objects by packfile"
+msgstr "Rudaí a shórtáil de réir pacáiste"
+
+#: midx.c
+msgid "Verifying object offsets"
+msgstr "Athshraith réada a fhíorú"
+
+#: midx.c
+#, c-format
+msgid "failed to load pack entry for oid[%d] = %s"
+msgstr "theip ar iontráil pacáiste a luchtú do oid [%d] = %s"
+
+#: midx.c
+#, c-format
+msgid "failed to load pack-index for packfile %s"
+msgstr "theip ar innéacs pacáiste a luchtú do phacáiste %s"
+
+#: midx.c
+#, c-format
+msgid "incorrect object offset for oid[%d] = %s: %<PRIx64> != %<PRIx64>"
+msgstr ""
+"fritháireamh réada mícheart le haghaidh oid[%d] = %s: %<PRIx64> != %<PRIx64>"
+
+#: name-hash.c
+#, c-format
+msgid "unable to create lazy_dir thread: %s"
+msgstr "nach féidir snáithe lazy_dir a chruthú: %s"
+
+#: name-hash.c
+#, c-format
+msgid "unable to create lazy_name thread: %s"
+msgstr "nach féidir snáithe lazy_name a chruthú: %s"
+
+#: name-hash.c
+#, c-format
+msgid "unable to join lazy_name thread: %s"
+msgstr "ní féidir teacht le snáithe lazy_name: %s"
+
+#: notes-merge.c
+#, c-format
+msgid ""
+"You have not concluded your previous notes merge (%s exists).\n"
+"Please, use 'git notes merge --commit' or 'git notes merge --abort' to "
+"commit/abort the previous merge before you start a new notes merge."
+msgstr ""
+"Níor chríochnaigh tú do chuid nótaí roimhe seo a chumasc (%s ann).\n"
+"Le do thoil, bain úsáid as 'git notes merge --commit 'nó 'git notes merge --"
+"abort' chun an cumasc roimhe seo a cheangail/deireadh a chur leis sula "
+"dtosaíonn tú le cumasc nótaí nua."
+
+#: notes-merge.c
+#, c-format
+msgid "You have not concluded your notes merge (%s exists)."
+msgstr "Níor chríochnaigh tú do chuid nótaí a chumasc (%s ann)."
+
+#: notes-utils.c
+msgid "Cannot commit uninitialized/unreferenced notes tree"
+msgstr "Ní féidir crann nótaí neamhthionsaithe/gan tagairt a dhéanamh"
+
+#: notes-utils.c
+#, c-format
+msgid "Bad notes.rewriteMode value: '%s'"
+msgstr "Luach lochtach notes.rewriteMode: '%s'"
+
+#: notes-utils.c
+#, c-format
+msgid "Refusing to rewrite notes in %s (outside of refs/notes/)"
+msgstr "Diúltú nótaí a athscríobh i %s (lasmuigh de refs/notes/)"
+
+#. TRANSLATORS: The first %s is the name of
+#. the environment variable, the second %s is
+#. its value.
+#.
+#: notes-utils.c
+#, c-format
+msgid "Bad %s value: '%s'"
+msgstr "Droch-luach %s: '%s'"
+
+#: object-file-convert.c
+msgid "failed to decode tree entry"
+msgstr "theip ar iontráil crann a dhíchódú"
+
+#: object-file-convert.c
+#, c-format
+msgid "failed to map tree entry for %s"
+msgstr "theip ar iontráil crann a mhapáil do %s"
+
+#: object-file-convert.c
+#, c-format
+msgid "bad %s in commit"
+msgstr "droch %s i dtiomantas"
+
+#: object-file-convert.c
+#, c-format
+msgid "unable to map %s %s in commit object"
+msgstr "nach féidir %s %s a mhapáil i réad tiomanta"
+
+#: object-file-convert.c
+#, c-format
+msgid "Failed to convert object from %s to %s"
+msgstr "Theip ar réad a thiontú ó %s go %s"
+
+#: object-file.c
+#, c-format
+msgid "object file %s is empty"
+msgstr "tá comhad réad %s folamh"
+
+#: object-file.c
+#, c-format
+msgid "corrupt loose object '%s'"
+msgstr "réad scaoilte truaillithe '%s'"
+
+#: object-file.c
+#, c-format
+msgid "garbage at end of loose object '%s'"
+msgstr "truflais ag deireadh réad scaoilte '%s'"
+
+#: object-file.c
+#, c-format
+msgid "unable to open loose object %s"
+msgstr "nach féidir réad scaoilte %s a oscailt"
+
+#: object-file.c
+#, c-format
+msgid "unable to parse %s header"
+msgstr "nach féidir ceannteideal %s a pháirseáil"
+
+#: object-file.c
+msgid "invalid object type"
+msgstr "cineál réad neamhbhailí"
+
+#: object-file.c
+#, c-format
+msgid "unable to unpack %s header"
+msgstr "ní féidir ceannteideal %s a dhíphacáil"
+
+#: object-file.c
+#, c-format
+msgid "header for %s too long, exceeds %d bytes"
+msgstr "ceannteideal do %s rófhada, níos mó ná %d bytes"
+
+#: object-file.c
+#, c-format
+msgid "loose object %s (stored in %s) is corrupt"
+msgstr "tá réad scaoilte %s (stóráilte i %s) truaillithe"
+
+#: object-file.c
+#, c-format
+msgid "unable to open %s"
+msgstr "ní féidir %s a oscailt"
+
+#: object-file.c
+#, c-format
+msgid "files '%s' and '%s' differ in contents"
+msgstr "tá difríocht idir comhaid '%s' agus '%s' in ábhar"
+
+#: object-file.c
+#, c-format
+msgid "unable to write file %s"
+msgstr "nach féidir comhad %s a scríobh"
+
+#: object-file.c
+#, c-format
+msgid "unable to write repeatedly vanishing file %s"
+msgstr "in ann comhad %s atá ag imeacht arís agus arís eile a scríobh"
+
+#: object-file.c
+#, c-format
+msgid "unable to set permission to '%s'"
+msgstr "nach féidir cead a shocrú do '%s'"
+
+#: object-file.c
+msgid "error when closing loose object file"
+msgstr "earráid agus comhad réad scaoilte á ndú"
+
+#: object-file.c
+#, c-format
+msgid "insufficient permission for adding an object to repository database %s"
+msgstr "cead neamhleor chun réad a chur le bunachar sonraí stórais %s"
+
+#: object-file.c
+msgid "unable to create temporary file"
+msgstr "in ann comhad sealadach a chruthú"
+
+#: object-file.c
+msgid "unable to write loose object file"
+msgstr "in ann comhad réad scaoilte a scríobh"
+
+#: object-file.c
+#, c-format
+msgid "unable to deflate new object %s (%d)"
+msgstr "nach féidir réad nua %s a dhíoslagadh (%d)"
+
+#: object-file.c
+#, c-format
+msgid "deflateEnd on object %s failed (%d)"
+msgstr "theip ar deflateEnd ar réad %s (%d)"
+
+#: object-file.c
+#, c-format
+msgid "confused by unstable object source data for %s"
+msgstr "mearbhall de bharr sonraí foinse réada éagobhsaí do %s"
+
+#: object-file.c
+#, c-format
+msgid "write stream object %ld != %<PRIuMAX>"
+msgstr "scríobh réad srutha %ld! =%<PRIuMAX>"
+
+#: object-file.c
+#, c-format
+msgid "unable to stream deflate new object (%d)"
+msgstr "nach féidir réad nua a dhíscaoileadh a shruthlú (%d)"
+
+#: object-file.c
+#, c-format
+msgid "deflateEnd on stream object failed (%d)"
+msgstr "theip ar réad srutha DeflateEnd (%d)"
+
+#: object-file.c
+#, c-format
+msgid "unable to create directory %s"
+msgstr "nach féidir eolaire %s a chruthú"
+
+#: object-file.c
+#, c-format
+msgid "cannot read object for %s"
+msgstr "ní féidir réad a léamh do %s"
+
+#: object-file.c
+#, c-format
+msgid "cannot map object %s to %s"
+msgstr "ní féidir réad %s a mhapáil go %s"
+
+#: object-file.c
+#, c-format
+msgid "object fails fsck: %s"
+msgstr "teipeann ar réad fsck: %s"
+
+#: object-file.c
+msgid "refusing to create malformed object"
+msgstr "diúltú réad mífhoirmithe a chruthú"
+
+#: object-file.c
+#, c-format
+msgid "read error while indexing %s"
+msgstr "earráid léite agus %s á innéacsú"
+
+#: object-file.c
+#, c-format
+msgid "short read while indexing %s"
+msgstr "léamh gearr agus %s á innéacsú"
+
+#: object-file.c
+#, c-format
+msgid "%s: failed to insert into database"
+msgstr "%s: theip ort a chur isteach sa bhunachar sonraí"
+
+#: object-file.c
+#, c-format
+msgid "%s: unsupported file type"
+msgstr "%s: cineál comhaid gan tacaíocht"
+
+#: object-file.c
+#, c-format
+msgid "hash mismatch for %s (expected %s)"
+msgstr "neamhoiriúnú hash do %s (súil leis %s)"
+
+#: object-file.c
+#, c-format
+msgid "unable to mmap %s"
+msgstr "nach féidir %s a mmapáil"
+
+#: object-file.c
+#, c-format
+msgid "unable to unpack header of %s"
+msgstr "nach féidir ceanntásc %s a dhíphacáil"
+
+#: object-file.c
+#, c-format
+msgid "unable to parse header of %s"
+msgstr "nach féidir ceannteideal %s a pháirseáil"
+
+#: object-file.c
+#, c-format
+msgid "unable to parse type from header '%s' of %s"
+msgstr "ní féidir cineál a pharsáil ó cheanntásc '%s' de %s"
+
+#: object-file.c
+#, c-format
+msgid "unable to unpack contents of %s"
+msgstr "nach féidir ábhar %s a dhíphacáil"
+
+#. TRANSLATORS: This is a line of ambiguous object
+#. output shown when we cannot look up or parse the
+#. object in question. E.g. "deadbeef [bad object]".
+#.
+#: object-name.c
+#, c-format
+msgid "%s [bad object]"
+msgstr "%s [droch-réad]"
+
+#. TRANSLATORS: This is a line of ambiguous commit
+#. object output. E.g.:
+#. *
+#. "deadbeef commit 2021-01-01 - Some Commit Message"
+#.
+#: object-name.c
+#, c-format
+msgid "%s commit %s - %s"
+msgstr "Déanann %s tiomanta %s - %s"
+
+#. TRANSLATORS: This is a line of ambiguous
+#. tag object output. E.g.:
+#. *
+#. "deadbeef tag 2022-01-01 - Some Tag Message"
+#. *
+#. The second argument is the YYYY-MM-DD found
+#. in the tag.
+#. *
+#. The third argument is the "tag" string
+#. from object.c.
+#.
+#: object-name.c
+#, c-format
+msgid "%s tag %s - %s"
+msgstr "Clib %s %s - %s"
+
+#. TRANSLATORS: This is a line of ambiguous
+#. tag object output where we couldn't parse
+#. the tag itself. E.g.:
+#. *
+#. "deadbeef [bad tag, could not parse it]"
+#.
+#: object-name.c
+#, c-format
+msgid "%s [bad tag, could not parse it]"
+msgstr "%s [droch-chlib, ní fhéadfaí é a pháirseáil]"
+
+#. TRANSLATORS: This is a line of ambiguous <type>
+#. object output. E.g. "deadbeef tree".
+#.
+#: object-name.c
+#, c-format
+msgid "%s tree"
+msgstr "%s crann"
+
+#. TRANSLATORS: This is a line of ambiguous <type>
+#. object output. E.g. "deadbeef blob".
+#.
+#: object-name.c
+#, c-format
+msgid "%s blob"
+msgstr "%s blob"
+
+#: object-name.c
+#, c-format
+msgid "short object ID %s is ambiguous"
+msgstr "tá ID réad gairid %s débhríoch"
+
+#. TRANSLATORS: The argument is the list of ambiguous
+#. objects composed in show_ambiguous_object(). See
+#. its "TRANSLATORS" comments for details.
+#.
+#: object-name.c
+#, c-format
+msgid ""
+"The candidates are:\n"
+"%s"
+msgstr ""
+"Is iad na hiarrthóirí:\n"
+"%s"
+
+#: object-name.c
+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"
+"may be created by mistake. For example,\n"
+"\n"
+" git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"where \"$br\" is somehow empty and a 40-hex ref is created. Please\n"
+"examine these refs and maybe delete them. Turn this message off by\n"
+"running \"git config set advice.objectNameWarning false\""
+msgstr ""
+"De ghnáth ní chruthaíonn Git tagartha riamh a chríochnaíonn le 40 carachtar\n"
+"toisc go ndéanfar neamhaird air nuair a shonraíonn tú ach 40-hex. Na "
+"hiarratais seo\n"
+"d'fhéadfaí a chruthú trí dhearmad. Mar shampla,\n"
+"\n"
+" git switch -c $br $(git rev-parse ...)\n"
+"\n"
+"áit a bhfuil “$br” folamh ar bhealach éigin agus cruthaítear tagairt 40-hex. "
+"Le do thoil\n"
+"scrúdú a dhéanamh ar na haifeanna seo agus b'fhéidir iad a scriosadh. Cas an "
+"teachtaireacht seo as\n"
+"ag rith \"git config set advice.objectNameWarning false\""
+
+#: object-name.c
+#, c-format
+msgid "log for '%.*s' only goes back to %s"
+msgstr "ní théann logáil le haghaidh '%.*s' ach ar ais go %s"
+
+#: object-name.c
+#, c-format
+msgid "log for '%.*s' only has %d entries"
+msgstr "níl ach iontráil i logáil le haghaidh '%.*s' ach %d ceann"
+
+#: object-name.c
+#, c-format
+msgid "path '%s' exists on disk, but not in '%.*s'"
+msgstr "tá cosán '%s' ann ar an diosca, ach ní i '%.*s'"
+
+#: object-name.c
+#, c-format
+msgid ""
+"path '%s' exists, but not '%s'\n"
+"hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"
+msgstr ""
+"tá an cosán '%s' ann, ach níl '%s' ann\n"
+"leid: An raibh tú i gceist agat '%.*s:%s' aka '%.*s:./%s'?"
+
+#: object-name.c
+#, c-format
+msgid "path '%s' does not exist in '%.*s'"
+msgstr "níl cosán '%s' ann i '%.*s'"
+
+#: object-name.c
+#, c-format
+msgid ""
+"path '%s' is in the index, but not at stage %d\n"
+"hint: Did you mean ':%d:%s'?"
+msgstr ""
+"tá cosán '%s' san innéacs, ach ní ag céim %d\n"
+"leid: An raibh i gceist agat ': %d: %s'?"
+
+#: object-name.c
+#, c-format
+msgid ""
+"path '%s' is in the index, but not '%s'\n"
+"hint: Did you mean ':%d:%s' aka ':%d:./%s'?"
+msgstr ""
+"tá an conair '%s' san innéacs, ach ní '%s'\n"
+"leideanna: an é ':%d:%s' a bhí i gceist agat, nó ':%d:./%s'?"
+
+#: object-name.c
+#, c-format
+msgid "path '%s' exists on disk, but not in the index"
+msgstr "tá cosán '%s' ann ar an diosca, ach ní san innéacs"
+
+#: object-name.c
+#, c-format
+msgid "path '%s' does not exist (neither on disk nor in the index)"
+msgstr "níl cosán '%s' ann (ní ar an diosca ná san innéacs)"
+
+#: object-name.c
+msgid "relative path syntax can't be used outside working tree"
+msgstr ""
+"ní féidir comhréir cosáin choibhneasta a úsáid lasmuigh de chrann oibre"
+
+#: object-name.c
+#, c-format
+msgid "<object>:<path> required, only <object> '%s' given"
+msgstr "<object>: ri <path>achtanach, ní <object>thugtar ach '%s'"
+
+#: object-name.c
+#, c-format
+msgid "invalid object name '%.*s'."
+msgstr "ainm réada neamhbhailí '%.*s'."
+
+#: object-store.c
+#, c-format
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "níl an eolaire réada %s ann; seiceáil .git/objects/info/alternates"
+
+#: object-store.c
+#, c-format
+msgid "unable to normalize alternate object path: %s"
+msgstr "nach féidir cosán réad malartach a normalú: %s"
+
+#: object-store.c
+#, c-format
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s: neamhaird a dhéanamh ar stórais rudaí malartacha, neadú ró-"
+
+#: object-store.c
+msgid "unable to fdopen alternates lockfile"
+msgstr "in ann comhad glasála malartacha a fdopen"
+
+#: object-store.c
+msgid "unable to read alternates file"
+msgstr "in ann comhad malartach a léamh"
+
+#: object-store.c
+msgid "unable to move new alternates file into place"
+msgstr "in ann comhad malartacha nua a bhogadh isteach"
+
+#: object-store.c
+#, c-format
+msgid "path '%s' does not exist"
+msgstr "níl cosán '%s' ann"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr "ní thacaítear le stór tagartha '%s' mar sheiceáil nasctha go fóill."
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is not a local repository."
+msgstr "ní stór áitiúil é stór tagartha '%s'."
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is shallow"
+msgstr "tá stóras tagartha '%s' éadomhain"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is grafted"
+msgstr "tá stór tagartha '%s' grapháilte"
+
+#: object-store.c
+#, c-format
+msgid "could not find object directory matching %s"
+msgstr "ní fhéadfaí eolaire réada a fháil a mheaitseáil %s"
+
+#: object-store.c
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "líne neamhbhailí agus tú ag paráil iarmhairtí malartacha: %s"
+
+#: object-store.c
+#, c-format
+msgid "replacement %s not found for %s"
+msgstr "nach bhfuarthas %s a athsholáthar do %s"
+
+#: object-store.c
+#, c-format
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "tá réad pacáilte %s (stóráilte i %s) truaillithe"
+
+#: object-store.c
+#, c-format
+msgid "missing mapping of %s to %s"
+msgstr "mapáil atá in easnamh de %s go %s"
+
+#: object-store.c
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "Ní réad bailí '%s' é %s '"
+
+#: object.c
+#, c-format
+msgid "invalid object type \"%s\""
+msgstr "cineál réad neamhbhailí “%s”"
+
+#: object.c
+#, c-format
+msgid "object %s is a %s, not a %s"
+msgstr "is %s é réad %s, ní %s"
+
+#: object.c
+#, c-format
+msgid "object %s has unknown type id %d"
+msgstr "réad %s tá cineál ID anaithnid %d aige"
+
+#: object.c
+#, c-format
+msgid "unable to parse object: %s"
+msgstr "nach féidir réad a pháirseáil: %s"
+
+#: object.c
+#, c-format
+msgid "hash mismatch %s"
+msgstr "neamhoiriúnú hash %s"
+
+#: pack-bitmap-write.c
+#, c-format
+msgid "duplicate entry when writing bitmap index: %s"
+msgstr "iontráil dúblach agus innéacs bitmap á scríobh: %s"
+
+#: pack-bitmap-write.c
+#, c-format
+msgid "attempted to store non-selected commit: '%s'"
+msgstr "rinne iarracht tiomantas neamh-roghnaithe a stóráil: '%s'"
+
+#: pack-bitmap-write.c
+msgid "too many pseudo-merges"
+msgstr "an iomarca bréag-chumaisc"
+
+#: pack-bitmap-write.c
+msgid "trying to write commit not in index"
+msgstr "ag iarraidh tiomantas a scríobh ní in innéacs"
+
+#: pack-bitmap.c
+msgid "failed to load bitmap index (corrupted?)"
+msgstr "theip ar innéacs bitmap a luchtú (truaillithe?)"
+
+#: pack-bitmap.c
+msgid "corrupted bitmap index (too small)"
+msgstr "innéacs bitmap truaillithe (ró-bheag)"
+
+#: pack-bitmap.c
+msgid "corrupted bitmap index file (wrong header)"
+msgstr "comhad innéacs bitmap truaillithe (ceanntásc mícheart)"
+
+#: pack-bitmap.c
+#, c-format
+msgid "unsupported version '%d' for bitmap index file"
+msgstr "leagan gan tacaíocht '%d' do chomhad innéacs bitmap"
+
+#: pack-bitmap.c
+msgid "corrupted bitmap index file (too short to fit hash cache)"
+msgstr ""
+"comhad innéacs bitmap truaillithe (róghearr chun taisce hash a fheistiú)"
+
+#: pack-bitmap.c
+msgid "corrupted bitmap index file (too short to fit lookup table)"
+msgstr ""
+"comhad innéacs bitmap truaillithe (róghearr chun tábla cuardaigh a fheistiú)"
+
+#: pack-bitmap.c
+msgid ""
+"corrupted bitmap index file (too short to fit pseudo-merge table header)"
+msgstr ""
+"comhad innéacs bitmap truaillithe (ró-ghearr chun ceannteideal tábla bréag-"
+"chumasc a fheistiú)"
+
+#: pack-bitmap.c
+msgid "corrupted bitmap index file (too short to fit pseudo-merge table)"
+msgstr ""
+"comhad innéacs bitmap truaillithe (ró-ghearr chun tábla bréag-chumasc a "
+"fheistiú)"
+
+#: pack-bitmap.c
+msgid "corrupted bitmap index file, pseudo-merge table too short"
+msgstr "comhad innéacs bitmap truaillithe, tábla bréag-chumasc ró-ghearr"
+
+#: pack-bitmap.c
+#, c-format
+msgid "duplicate entry in bitmap index: '%s'"
+msgstr "iontráil dúblach in innéacs bitmap: '%s'"
+
+#: pack-bitmap.c
+#, c-format
+msgid "corrupt ewah bitmap: truncated header for entry %d"
+msgstr "bitmap ewah truaillithe: ceannteideal gearrtha le haghaidh iontráil %d"
+
+#: pack-bitmap.c
+#, c-format
+msgid "corrupt ewah bitmap: commit index %u out of range"
+msgstr "bitmap ewah truaillithe: innéacs tiomanta %u lasmuigh den raon"
+
+#: pack-bitmap.c
+msgid "corrupted bitmap pack index"
+msgstr "innéacs pacáiste bitmap truaillte"
+
+#: pack-bitmap.c
+msgid "invalid XOR offset in bitmap pack index"
+msgstr "fritháireamh XOR neamhbhailí in innéacs pacáiste bitmap"
+
+#: pack-bitmap.c
+msgid "cannot fstat bitmap file"
+msgstr "ní féidir comhad bitmap fstat"
+
+#: pack-bitmap.c
+msgid "checksum doesn't match in MIDX and bitmap"
+msgstr "ní mheaitseálann seicsum i MIDX agus bitmap"
+
+#: pack-bitmap.c
+msgid "multi-pack bitmap is missing required reverse index"
+msgstr "tá an t-innéacs droim riachtanach in easnamh ilphacáiste"
+
+#: pack-bitmap.c
+#, c-format
+msgid "could not open pack %s"
+msgstr "ní fhéadfaí pacáiste %s a oscailt"
+
+#: pack-bitmap.c
+msgid "corrupt bitmap lookup table: triplet position out of index"
+msgstr "tábla cuardaigh bitmap truaillithe: suíomh triplet as innéacs"
+
+#: pack-bitmap.c
+msgid "corrupt bitmap lookup table: xor chain exceeds entry count"
+msgstr "tábla cuardaigh bitmap truaillithe: sáraíonn slabhra xor líon iontrála"
+
+#: pack-bitmap.c
+#, c-format
+msgid "corrupt bitmap lookup table: commit index %u out of range"
+msgstr ""
+"tábla cuardaigh bitmap truaillithe: innéacs tiomanta %u lasmuigh den raon"
+
+#: pack-bitmap.c
+#, c-format
+msgid "corrupt ewah bitmap: truncated header for bitmap of commit \"%s\""
+msgstr ""
+"bitmap ewah truaillithe: ceannteideal gearrtha le haghaidh bitmap de "
+"thiomantas “%s”"
+
+#: pack-bitmap.c
+#, c-format
+msgid "unable to load pack: '%s', disabling pack-reuse"
+msgstr "in ann pacáiste a luchtú: '%s', athúsáid pacáiste a dhíchumasú"
+
+#: pack-bitmap.c
+msgid "unable to compute preferred pack, disabling pack-reuse"
+msgstr "in ann pacáiste roghnaithe a ríomh, athúsáid pacáiste a dhíchumasú"
+
+#: pack-bitmap.c
+#, c-format
+msgid "object '%s' not found in type bitmaps"
+msgstr "níor aimsíodh réad '%s' i gcineál bitmaps"
+
+#: pack-bitmap.c
+#, c-format
+msgid "object '%s' does not have a unique type"
+msgstr "níl cineál uathúil ag réad '%s'"
+
+#: pack-bitmap.c
+#, c-format
+msgid "object '%s': real type '%s', expected: '%s'"
+msgstr "réad '%s': fíor-chineál '%s', ag súil leis: '%s'"
+
+#: pack-bitmap.c
+#, c-format
+msgid "object not in bitmap: '%s'"
+msgstr "réad nach bhfuil i mbitmap: '%s'"
+
+#: pack-bitmap.c
+msgid "failed to load bitmap indexes"
+msgstr "theip ar innéacsanna bitmap a luchtú"
+
+#: pack-bitmap.c
+msgid "you must specify exactly one commit to test"
+msgstr "ní mór duit tiomantas amháin a shonrú go díreach chun tástáil"
+
+#: pack-bitmap.c
+#, c-format
+msgid "commit '%s' doesn't have an indexed bitmap"
+msgstr "cumann nach bhfuil bitmap innéacsaithe ag '%s'"
+
+#: pack-bitmap.c
+msgid "mismatch in bitmap results"
+msgstr "mímheaitseáil i dtorthaí bitmap"
+
+#: pack-bitmap.c
+#, c-format
+msgid "pseudo-merge index out of range (%<PRIu32> >= %<PRIuMAX>)"
+msgstr "innéacs bréag-chumaisc lasmuigh den raon (%<PRIu32> >= %<PRIuMAX>)"
+
+#: pack-bitmap.c
+#, c-format
+msgid "could not find '%s' in pack '%s' at offset %<PRIuMAX>"
+msgstr ""
+"ní raibh '%s' in ann teacht i bpacáiste '%s' ag fhritháireamh%<PRIuMAX>"
+
+#: pack-bitmap.c
+#, c-format
+msgid "unable to get disk usage of '%s'"
+msgstr "ní féidir úsáid diosca a fháil de '%s'"
+
+#: pack-bitmap.c
+#, c-format
+msgid "bitmap file '%s' has invalid checksum"
+msgstr "tá seicsum neamhbhailí ag comhad bitmap '%s'"
+
+#: pack-mtimes.c
+#, c-format
+msgid "mtimes file %s is too small"
+msgstr "tá comhad mtimes %s ró-bheag"
+
+#: pack-mtimes.c
+#, c-format
+msgid "mtimes file %s has unknown signature"
+msgstr "tá síniú anaithnid ag comhad mtimes %s"
+
+#: pack-mtimes.c
+#, c-format
+msgid "mtimes file %s has unsupported version %<PRIu32>"
+msgstr "tá leagan neamh-tacaithe ag comhad mtimes %s% <PRIu32>"
+
+#: pack-mtimes.c
+#, c-format
+msgid "mtimes file %s has unsupported hash id %<PRIu32>"
+msgstr "tá id hash neamh-tacaithe ag comhad %s mtimes% <PRIu32>"
+
+#: pack-mtimes.c
+#, c-format
+msgid "mtimes file %s is corrupt"
+msgstr "tá comhad mtimes %s truaillithe"
+
+#: pack-revindex.c
+#, c-format
+msgid "reverse-index file %s is too small"
+msgstr "tá comhad innéacs droim %s róbheag"
+
+#: pack-revindex.c
+#, c-format
+msgid "reverse-index file %s is corrupt"
+msgstr "tá comhad innéacs droim %s truaillithe"
+
+#: pack-revindex.c
+#, c-format
+msgid "reverse-index file %s has unknown signature"
+msgstr "tá síniú anaithnid ag comhad innéacs droim %s"
+
+#: pack-revindex.c
+#, c-format
+msgid "reverse-index file %s has unsupported version %<PRIu32>"
+msgstr "tá leagan neamh-tacaithe ag comhad innéacs droim %s% <PRIu32>"
+
+#: pack-revindex.c
+#, c-format
+msgid "reverse-index file %s has unsupported hash id %<PRIu32>"
+msgstr "tá id hash neamh-tacaithe ag comhad innéacs droim %s% <PRIu32>"
+
+#: pack-revindex.c
+msgid "invalid checksum"
+msgstr "seiceáil neamhbhailí"
+
+#: pack-revindex.c
+#, c-format
+msgid "invalid rev-index position at %<PRIu64>: %<PRIu32> != %<PRIu32>"
+msgstr ""
+"suíomh innéacs-athraithe neamhbhailí ag %<PRIu64>: %<PRIu32> != %<PRIu32>"
+
+#: pack-revindex.c
+msgid "multi-pack-index reverse-index chunk is the wrong size"
+msgstr "tá smután droim ar ais-innéacs il-phacáiste ar an méid mícheart"
+
+#: pack-revindex.c
+msgid "could not determine preferred pack"
+msgstr "ní fhéadfaí pacáiste is fearr a chinneadh"
+
+#: pack-write.c
+msgid "cannot both write and verify reverse index"
+msgstr "ní féidir innéacs droim a scríobh agus a fhíorú"
+
+#: pack-write.c
+#, c-format
+msgid "could not stat: %s"
+msgstr "ní fhéadfaí stat: %s"
+
+#: pack-write.c
+#, c-format
+msgid "failed to make %s readable"
+msgstr "theip ar %s a dhéanamh inléite"
+
+#: pack-write.c
+#, c-format
+msgid "could not write '%s' promisor file"
+msgstr "ní fhéadfaí comhad gealltanais '%s' a scríobh"
+
+#: packfile.c
+msgid "offset before end of packfile (broken .idx?)"
+msgstr "fhritháireamh roimh dheireadh an phackfile (.idx briste?)"
+
+#: packfile.c
+#, c-format
+msgid "packfile %s cannot be mapped%s"
+msgstr "ní féidir comhaid pacáiste %s a mhapáil %s"
+
+#: packfile.c
+#, c-format
+msgid "offset before start of pack index for %s (corrupt index?)"
+msgstr ""
+"fhritháireamh roimh thús an innéacs pacáiste do %s (innéacs truaillithe?)"
+
+#: packfile.c
+#, c-format
+msgid "offset beyond end of pack index for %s (truncated index?)"
+msgstr ""
+"fhritháireamh thar dheireadh an innéacs pacáiste do %s (innéacs gearrtha?)"
+
+#: parse-options-cb.c
+#, c-format
+msgid "malformed expiration date '%s'"
+msgstr "dáta éaga mífhoirmithe '%s'"
+
+#: parse-options-cb.c
+#, c-format
+msgid "option `%s' expects \"always\", \"auto\", or \"never\""
+msgstr "tá rogha `%s' ag súil le “i gcónaí”, “uathoibríoch”, nó “riamh”"
+
+#: parse-options-cb.c
+#, c-format
+msgid "malformed object name '%s'"
+msgstr "ainm réad mífhoirmithe '%s'"
+
+#: parse-options-cb.c
+#, c-format
+msgid "option `%s' expects \"%s\" or \"%s\""
+msgstr "tá rogha `%s' ag súil le “%s” nó “%s”"
+
+#: parse-options.c
+#, c-format
+msgid "%s requires a value"
+msgstr "Teastaíonn luach ó %s"
+
+#: parse-options.c
+#, c-format
+msgid "%s takes no value"
+msgstr "Ní ghlacann %s aon luach"
+
+#: parse-options.c
+#, c-format
+msgid "%s isn't available"
+msgstr "Níl %s ar fáil"
+
+#: parse-options.c
+#, c-format
+msgid "value %s for %s not in range [%<PRIdMAX>,%<PRIdMAX>]"
+msgstr "luach %s do %s nach bhfuil sa raon [%<PRIdMAX>,%<PRIdMAX>]"
+
+#: parse-options.c
+#, c-format
+msgid "%s expects an integer value with an optional k/m/g suffix"
+msgstr "Tá %s ag súil le luach sláireach le iarmhír roghnach k/m/g"
+
+#: parse-options.c
+#, c-format
+msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
+msgstr ""
+"Tá %s ag súil le luach sláimhir neamh-dhiúltach le iarmhír roghnach k/m/g"
+
+#: parse-options.c
+#, c-format
+msgid "ambiguous option: %s (could be --%s%s or --%s%s)"
+msgstr "rogha débhríoch: %s (d'fhéadfadh a bheith --%s%s nó --%s%s)"
+
+#: parse-options.c
+#, c-format
+msgid "did you mean `--%s` (with two dashes)?"
+msgstr "an raibh i gceist agat `--%s` (le dhá shraith)?"
+
+#: parse-options.c
+#, c-format
+msgid "alias of --%s"
+msgstr "alias de --%s"
+
+#: parse-options.c
+msgid "need a subcommand"
+msgstr "fo-ordú ag teastáil"
+
+#: parse-options.c
+#, c-format
+msgid "unknown option `%s'"
+msgstr "rogha anaithnid `%s'"
+
+#: parse-options.c
+#, c-format
+msgid "unknown switch `%c'"
+msgstr "lasc anaithnid `%c'"
+
+#: parse-options.c
+#, c-format
+msgid "unknown non-ascii option in string: `%s'"
+msgstr "rogha neamh-ascii anaithnid i sreang: `%s'"
+
+#. TRANSLATORS: The "<%s>" part of this string
+#. stands for an optional value given to a command
+#. line option in the long form, and "<>" is there
+#. as a convention to signal that it is a
+#. placeholder (i.e. the user should substitute it
+#. with the real value). If your language uses a
+#. different convention, you can change "<%s>" part
+#. to match yours, e.g. it might use "|%s|" instead,
+#. or if the alphabet is different enough it may use
+#. "%s" without any placeholder signal. Most
+#. translations leave this message as is.
+#.
+#: parse-options.c
+#, c-format
+msgid "[=<%s>]"
+msgstr "[=<%s>]"
+
+#. TRANSLATORS: The "<%s>" part of this string
+#. stands for an optional value given to a command
+#. line option in the short form, and "<>" is there
+#. as a convention to signal that it is a
+#. placeholder (i.e. the user should substitute it
+#. with the real value). If your language uses a
+#. different convention, you can change "<%s>" part
+#. to match yours, e.g. it might use "|%s|" instead,
+#. or if the alphabet is different enough it may use
+#. "%s" without any placeholder signal. Most
+#. translations leave this message as is.
+#.
+#: parse-options.c
+#, c-format
+msgid "[<%s>]"
+msgstr "[<%s>]"
+
+#. TRANSLATORS: The "<%s>" part of this string stands for a
+#. value given to a command line option, and "<>" is there
+#. as a convention to signal that it is a placeholder
+#. (i.e. the user should substitute it with the real value).
+#. If your language uses a different convention, you can
+#. change "<%s>" part to match yours, e.g. it might use
+#. "|%s|" instead, or if the alphabet is different enough it
+#. may use "%s" without any placeholder signal. Most
+#. translations leave this message as is.
+#.
+#: parse-options.c
+#, c-format
+msgid " <%s>"
+msgstr " <%s>"
+
+#: parse-options.c
+msgid "..."
+msgstr "..."
+
+#: parse-options.c
+#, c-format
+msgid "usage: %s"
+msgstr "úsáid: %s"
+
+#. TRANSLATORS: the colon here should align with the
+#. one in "usage: %s" translation.
+#.
+#: parse-options.c
+#, c-format
+msgid " or: %s"
+msgstr " nó: %s"
+
+#. TRANSLATORS: You should only need to translate this format
+#. string if your language is a RTL language (e.g. Arabic,
+#. Hebrew etc.), not if it's a LTR language (e.g. German,
+#. Russian, Chinese etc.).
+#. *
+#. When a translated usage string has an embedded "\n" it's
+#. because options have wrapped to the next line. The line
+#. after the "\n" will then be padded to align with the
+#. command name, such as N_("git cmd [opt]\n<8
+#. spaces>[opt2]"), where the 8 spaces are the same length as
+#. "git cmd ".
+#. *
+#. This format string prints out that already-translated
+#. line. The "%*s" is whitespace padding to account for the
+#. padding at the start of the line that we add in this
+#. function. The "%s" is a line in the (hopefully already
+#. translated) N_() usage string, which contained embedded
+#. newlines before we split it up.
+#.
+#: parse-options.c
+#, c-format
+msgid "%*s%s"
+msgstr "%*s%s"
+
+#: parse-options.c
+#, c-format
+msgid " %s"
+msgstr " %s"
+
+#: parse-options.c
+msgid "-NUM"
+msgstr "-NUMBER"
+
+#: parse-options.c
+#, c-format
+msgid "opposite of --no-%s"
+msgstr "os coinne de --no-%s"
+
+#: parse-options.h
+msgid "expiry-date"
+msgstr "dáta éaga"
+
+#: parse-options.h
+msgid "no-op (backward compatibility)"
+msgstr "no-op (comhoiriúnacht ar chúl)"
+
+#: parse-options.h
+msgid "be more verbose"
+msgstr "a bheith níos inbhreithnithe"
+
+#: parse-options.h
+msgid "be more quiet"
+msgstr "a bheith níos ciúine"
+
+#: parse-options.h
+msgid "use <n> digits to display object names"
+msgstr "úsáid dhigit <n>í chun ainmneacha réada a thaispe"
+
+#: parse-options.h
+msgid "prefixed path to initial superproject"
+msgstr "cosán réamhshocraithe chuig an superproject tosaigh"
+
+#: parse-options.h
+msgid "how to strip spaces and #comments from message"
+msgstr "conas spásanna agus #comments a scriosadh ó theachtaireacht"
+
+#: parse-options.h
+msgid "read pathspec from file"
+msgstr "léigh pathspec ón gcomhad"
+
+#: parse-options.h
+msgid ""
+"with --pathspec-from-file, pathspec elements are separated with NUL character"
+msgstr ""
+"le --pathspec-from-file, déantar eilimintí pathspec scartha le carachtar NUL"
+
+#: parse.c
+#, c-format
+msgid "bad boolean environment value '%s' for '%s'"
+msgstr "droch-luach timpeallachta boolean '%s' do '%s'"
+
+#: path-walk.c
+#, c-format
+msgid "failed to walk children of tree %s: not found"
+msgstr "theip ar pháistí crann %s a shiúl: níor aimsíodh"
+
+#: path-walk.c
+#, c-format
+msgid "failed to find object %s"
+msgstr "theip ar réad %s a aimsiú"
+
+#: path-walk.c
+#, c-format
+msgid "failed to find tag %s"
+msgstr "theip ar chlib %s a aimsiú"
+
+#: path-walk.c
+msgid "failed to setup revision walk"
+msgstr "theip orthu siúlóid athbhreithnithe"
+
+#: path.c
+#, c-format
+msgid "Could not make %s writable by group"
+msgstr "Ní fhéadfaí %s a dhéanamh inscríofa de réir grúpa"
+
+#: pathspec.c
+msgid "Escape character '\\' not allowed as last character in attr value"
+msgstr ""
+"Ní cheadaítear carachtar éalaithe '\\' mar charachtar deireanach i luach attr"
+
+#: pathspec.c
+msgid "Only one 'attr:' specification is allowed."
+msgstr "Ní cheadaítear ach sonraíocht 'attr: 'amháin."
+
+#: pathspec.c
+msgid "attr spec must not be empty"
+msgstr "ní chóir go mbeadh sonraíocht attr folamh"
+
+#: pathspec.c
+#, c-format
+msgid "invalid attribute name %s"
+msgstr "ainm tréithe neamhbhailí %s"
+
+#: pathspec.c
+msgid "global 'glob' and 'noglob' pathspec settings are incompatible"
+msgstr "níl socruithe pathspec domhanda 'glob' agus 'noglob' neamhoiriúnach"
+
+#: pathspec.c
+msgid ""
+"global 'literal' pathspec setting is incompatible with all other global "
+"pathspec settings"
+msgstr ""
+"níl suíomh cosáin domhanda 'litriúil' gan luí le gach socruithe beatháin "
+"domhanda eile"
+
+#: pathspec.c
+msgid "invalid parameter for pathspec magic 'prefix'"
+msgstr "paraiméadar neamhbhailí do 'réimír' draíochta pathspec"
+
+#: pathspec.c
+#, c-format
+msgid "Invalid pathspec magic '%.*s' in '%s'"
+msgstr "Draíocht pathspec neamhbhailí '%.*s' i '%s'"
+
+#: pathspec.c
+#, c-format
+msgid "Missing ')' at the end of pathspec magic in '%s'"
+msgstr "Ar iarraidh ')' ag deireadh draíochta pathspec i '%s'"
+
+#: pathspec.c
+#, c-format
+msgid "Unimplemented pathspec magic '%c' in '%s'"
+msgstr "Draíocht pathspec neamh-chur i bhfeidhm '%c' i '%s'"
+
+#: pathspec.c
+#, c-format
+msgid "%s: 'literal' and 'glob' are incompatible"
+msgstr "%s: Níl 'literal' agus 'glob' neamhoiriúnach"
+
+#: pathspec.c
+#, c-format
+msgid "'%s' is outside the directory tree"
+msgstr "Tá '%s' lasmuigh den chrann eolaire"
+
+#: pathspec.c
+#, c-format
+msgid "%s: '%s' is outside repository at '%s'"
+msgstr "%s: Tá '%s' an stór lasmuigh ag '%s'"
+
+#: pathspec.c
+#, c-format
+msgid "'%s' (mnemonic: '%c')"
+msgstr "'%s' (mnemonic: '%c')"
+
+#: pathspec.c
+#, c-format
+msgid "%s: pathspec magic not supported by this command: %s"
+msgstr "%s: nach dtacaíonn an t-ordú seo le draíocht pathspec: %s"
+
+#: pathspec.c
+#, c-format
+msgid "pathspec '%s' is beyond a symbolic link"
+msgstr "tá pathspec '%s' thar nasc siombalach"
+
+#: pathspec.c
+#, c-format
+msgid "line is badly quoted: %s"
+msgstr "tá an líne luaite go dona: %s"
+
+#: pkt-line.c
+msgid "unable to write flush packet"
+msgstr "in ann pacáiste srutháin a scríobh"
+
+#: pkt-line.c
+msgid "unable to write delim packet"
+msgstr "in ann pacáiste delim a scríobh"
+
+#: pkt-line.c
+msgid "unable to write response end packet"
+msgstr "in ann pacáiste deiridh freagartha a scríobh"
+
+#: pkt-line.c
+msgid "flush packet write failed"
+msgstr "theip ar scríobh paicéad sru"
+
+#: pkt-line.c
+msgid "protocol error: impossibly long line"
+msgstr "earráid prótacal: líne fhada dodhéanta"
+
+#: pkt-line.c
+msgid "packet write with format failed"
+msgstr "theip ar scríobh pacáiste le formáid"
+
+#: pkt-line.c
+msgid "packet write failed - data exceeds max packet size"
+msgstr "theip ar scríobh paicéad - sáraíonn sonraí méid uasta an"
+
+#: pkt-line.c
+#, c-format
+msgid "packet write failed: %s"
+msgstr "theip ar scríobh pacáiste: %s"
+
+#: pkt-line.c
+msgid "read error"
+msgstr "earráid léigh"
+
+#: pkt-line.c
+msgid "the remote end hung up unexpectedly"
+msgstr "crochadh an deireadh iargúlta suas gan choinne"
+
+#: pkt-line.c
+#, c-format
+msgid "protocol error: bad line length character: %.4s"
+msgstr "earráid prótacal: carachtar fad droch-líne: %.4s"
+
+#: pkt-line.c
+#, c-format
+msgid "protocol error: bad line length %d"
+msgstr "earráid prótacal: fad droch-líne %d"
+
+#: pkt-line.c sideband.c
+#, c-format
+msgid "remote error: %s"
+msgstr "earráid iargúlta: %s"
+
+#: preload-index.c
+msgid "Refreshing index"
+msgstr "Innéacs athnuachana"
+
+#: preload-index.c
+#, c-format
+msgid "unable to create threaded lstat: %s"
+msgstr "nach féidir lstat snáithithe a chruthú: %s"
+
+#: pretty.c
+msgid "unable to parse --pretty format"
+msgstr "in ann formáid --pretty a pháirseáil"
+
+#: promisor-remote.c
+msgid "lazy fetching disabled; some objects may not be available"
+msgstr ""
+"tarraingt leisciúil míchumasaithe; b'fhéidir nach mbeidh roinnt rudaí ar fáil"
+
+#: promisor-remote.c
+msgid "promisor-remote: unable to fork off fetch subprocess"
+msgstr "gealltó-iargúlta: ní féidir leis an bhfophróiseas faighte a fhorc"
+
+#: promisor-remote.c
+msgid "promisor-remote: could not write to fetch subprocess"
+msgstr "gealltó-iargúlta: ní fhéadfaí scríobh chun fophróiseas a fháil"
+
+#: promisor-remote.c
+msgid "promisor-remote: could not close stdin to fetch subprocess"
+msgstr "gealltó-iargúlta: ní fhéadfaí stdin a dhúnadh chun fophróiseas a fháil"
+
+#: promisor-remote.c
+#, c-format
+msgid "promisor remote name cannot begin with '/': %s"
+msgstr "ní féidir ainm iargúlta gealltanaí tosú le '/': %s"
+
+#: promisor-remote.c
+#, c-format
+msgid "could not fetch %s from promisor remote"
+msgstr "ní fhéadfaí %s a fháil ó iargúlta gealltanach"
+
+#: promisor-remote.c
+#, c-format
+msgid "no or empty URL advertised for remote '%s'"
+msgstr "níl aon URL nó folamh fógraithe le haghaidh iargúlta '%s'"
+
+#: promisor-remote.c
+#, c-format
+msgid "known remote named '%s' but with URL '%s' instead of '%s'"
+msgstr "iargúlta ar a dtugtar '%s' ach le URL '%s' in ionad '%s'"
+
+#: promisor-remote.c
+#, c-format
+msgid "unknown '%s' value for '%s' config option"
+msgstr "luach '%s' anaithnid do rogha cumraithe '%s'"
+
+#: promisor-remote.c
+#, c-format
+msgid "unknown element '%s' from remote info"
+msgstr "eilimint anaithnid '%s' ó fhaisnéis iargúlta"
+
+#: promisor-remote.c
+#, c-format
+msgid "accepted promisor remote '%s' not found"
+msgstr "nár aimsíodh gealltanas iargúlta '%s'"
+
+#: protocol-caps.c
+msgid "object-info: expected flush after arguments"
+msgstr "ear-eolas: súil le sruth tar éis argóintí"
+
+#: prune-packed.c
+msgid "Removing duplicate objects"
+msgstr "Rudaí dúblacha a bhaint"
+
+#: pseudo-merge.c
+#, c-format
+msgid "failed to load pseudo-merge regex for %s: '%s'"
+msgstr "theip ar régex bréag-cumaisc a luchtú do %s: '%s'"
+
+#: pseudo-merge.c
+#, c-format
+msgid "%s must be non-negative, using default"
+msgstr "Ní mór %s a bheith neamh-dhiúltach, ag baint úsáide as"
+
+#: pseudo-merge.c
+#, c-format
+msgid "%s must be between 0 and 1, using default"
+msgstr "Caithfidh %s a bheith idir 0 agus 1, ag baint úsáide as réamhshocrú"
+
+#: pseudo-merge.c
+#, c-format
+msgid "%s must be positive, using default"
+msgstr "Caithfidh %s a bheith dearfach, ag úsáid réamhshocraithe"
+
+#: pseudo-merge.c
+#, c-format
+msgid "pseudo-merge group '%s' missing required pattern"
+msgstr "grúpa bréagchumaisc '%s' ar iarraidh patrún riachtanach"
+
+#: pseudo-merge.c
+#, c-format
+msgid "pseudo-merge group '%s' has unstable threshold before stable one"
+msgstr "tá tairseach éagobhsaí ag an ngrúpa bréagchumaisc '%s' roimh cheann"
+
+#: pseudo-merge.c
+#, c-format
+msgid ""
+"pseudo-merge regex from config has too many capture groups (max=%<PRIuMAX>)"
+msgstr ""
+"tá an iomarca grúpaí gabhála sa regex pseudo-merge ón chumraíocht "
+"(uasmhéid=%<PRIuMAX>)"
+
+#: pseudo-merge.c
+#, c-format
+msgid "extended pseudo-merge read out-of-bounds (%<PRIuMAX> >= %<PRIuMAX>)"
+msgstr ""
+"léamh sínte cumaisc bhréige lasmuigh de theorainneacha (%<PRIuMAX> >= "
+"%<PRIuMAX>)"
+
+#: pseudo-merge.c
+#, c-format
+msgid "extended pseudo-merge entry is too short (%<PRIuMAX> >= %<PRIuMAX>)"
+msgstr "tá an iontráil shínte chumaisc ró-ghearr (%<PRIuMAX> >= %<PRIuMAX>)"
+
+#: pseudo-merge.c
+#, c-format
+msgid "could not find pseudo-merge for commit %s at offset %<PRIuMAX>"
+msgstr ""
+"ní fhéadfaí a aimsiú bréag-chumasc do thiomantas %s ag "
+"fhritháireamh%<PRIuMAX>"
+
+#: pseudo-merge.c
+#, c-format
+msgid "extended pseudo-merge lookup out-of-bounds (%<PRIu32> >= %<PRIu32>)"
+msgstr ""
+"cuardach sínte cumaisc bhréige lasmuigh de theorainneacha (%<PRIu32> >= "
+"%<PRIu32>)"
+
+#: pseudo-merge.c
+#, c-format
+msgid "out-of-bounds read: (%<PRIuMAX> >= %<PRIuMAX>)"
+msgstr "léamh lasmuigh de theorainneacha: (%<PRIuMAX> >= %<PRIuMAX>)"
+
+#: pseudo-merge.c
+#, c-format
+msgid "could not read extended pseudo-merge table for commit %s"
+msgstr ""
+"ní fhéadfaí tábla bréag-chumaisc leathnaithe a léamh le haghaidh tiomanta %s"
+
+#: range-diff.c
+msgid "could not start `log`"
+msgstr "ní fhéadfaí 'log' a thosú"
+
+#: range-diff.c
+msgid "could not read `log` output"
+msgstr "ní raibh in ann aschur `log` a léamh"
+
+#: range-diff.c sequencer.c
+#, c-format
+msgid "could not parse commit '%s'"
+msgstr "ní fhéadfaí gealladh '%s' a pháirseáil"
+
+#: range-diff.c
+#, c-format
+msgid ""
+"could not parse first line of `log` output: did not start with 'commit ': "
+"'%s'"
+msgstr ""
+"ní raibh sé in ann an chéad líne d'aschur `log` a pháirseáil: níor thosaigh "
+"sé le 'commit': '%s'"
+
+#: range-diff.c
+#, c-format
+msgid "could not parse git header '%.*s'"
+msgstr "níorbh fhéidir ceanntásc git a pharsáil '%.*s'"
+
+#: range-diff.c
+msgid "failed to generate diff"
+msgstr "theip ar éagsúlacht a ghiniúint"
+
+#: range-diff.c
+#, c-format
+msgid "could not parse log for '%s'"
+msgstr "ní raibh in ann logáil a pháirseáil le haghaidh '%s'"
+
+#: reachable.c
+#, c-format
+msgid "invalid extra cruft tip: '%s'"
+msgstr "tip cruft bhreise neamhbhailí: '%s'"
+
+#: reachable.c
+msgid "unable to enumerate additional recent objects"
+msgstr "in ann rudaí breise le déanaí a áireamh"
+
+#: read-cache.c
+#, c-format
+msgid "will not add file alias '%s' ('%s' already exists in index)"
+msgstr ""
+"ní chuirfidh sé alias comhad '%s' leis (tá '%s' ann cheana féin san innéacs)"
+
+#: read-cache.c
+msgid "cannot create an empty blob in the object database"
+msgstr "ní féidir le blob folamh a chruthú sa bhunachar sonraí réad"
+
+#: read-cache.c
+#, c-format
+msgid "%s: can only add regular files, symbolic links or git-directories"
+msgstr ""
+"%s: ní féidir ach comhaid rialta, naisc siombalacha nó eolairí git-eolairí a "
+"chur leis"
+
+#: read-cache.c
+#, c-format
+msgid "unable to index file '%s'"
+msgstr "ní féidir an comhad '%s' a innéacsú"
+
+#: read-cache.c
+#, c-format
+msgid "unable to add '%s' to index"
+msgstr "ní féidir '%s' a chur leis an innéacs"
+
+#: read-cache.c
+#, c-format
+msgid "'%s' appears as both a file and as a directory"
+msgstr "Tá '%s' le feiceáil mar chomhad agus mar eolaire"
+
+#: read-cache.c
+msgid "Refresh index"
+msgstr "Innéacs athnuachan"
+
+#: read-cache.c
+#, c-format
+msgid ""
+"index.version set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"index.version socraithe, ach tá an luach neamhbhailí.\n"
+"Ag baint úsáide as leagan %i"
+
+#: read-cache.c
+#, c-format
+msgid ""
+"GIT_INDEX_VERSION set, but the value is invalid.\n"
+"Using version %i"
+msgstr ""
+"socraigh GIT_INDEX_VERSION, ach tá an luach neamhbhailí.\n"
+"Ag baint úsáide as leagan %i"
+
+#: read-cache.c
+#, c-format
+msgid "bad signature 0x%08x"
+msgstr "droch-shíniú 0x%08x"
+
+#: read-cache.c
+#, c-format
+msgid "bad index version %d"
+msgstr "leagan innéacs droch%d"
+
+#: read-cache.c
+msgid "bad index file sha1 signature"
+msgstr "comhad innéacs droch-sha1 síniú"
+
+#: read-cache.c
+#, c-format
+msgid "index uses %.4s extension, which we do not understand"
+msgstr "úsáideann innéacs síneadh %.4s, nach dtuigimid"
+
+#: read-cache.c
+#, c-format
+msgid "ignoring %.4s extension"
+msgstr "neamhaird a dhéanamh le síneadh %.4s"
+
+#: read-cache.c
+#, c-format
+msgid "unknown index entry format 0x%08x"
+msgstr "formáid iontrála innéacs anaithnid 0x%08x"
+
+#: read-cache.c
+#, c-format
+msgid "malformed name field in the index, near path '%s'"
+msgstr "réimse ainm mhífhoirmithe san innéacs, in aice le cosán '%s'"
+
+#: read-cache.c
+msgid "unordered stage entries in index"
+msgstr "iontrálacha céime neamh-ordaithe san innéacs"
+
+#: read-cache.c
+#, c-format
+msgid "multiple stage entries for merged file '%s'"
+msgstr "iontrálacha ilchéime do chomhad cumaisc '%s'"
+
+#: read-cache.c
+#, c-format
+msgid "unordered stage entries for '%s'"
+msgstr "iontrálacha stáitse neamh-ordaithe do '%s'"
+
+#: read-cache.c
+#, c-format
+msgid "unable to create load_cache_entries thread: %s"
+msgstr "ní féidir an snáithe load_cache_entries a chruthú: %s"
+
+#: read-cache.c
+#, c-format
+msgid "unable to join load_cache_entries thread: %s"
+msgstr "ní féidir teacht le snáithe load_cache_entries thread: %s"
+
+#: read-cache.c
+#, c-format
+msgid "%s: index file open failed"
+msgstr "%s: theip ar oscailt comhad innéacs"
+
+#: read-cache.c
+#, c-format
+msgid "%s: cannot stat the open index"
+msgstr "%s: ní féidir an t-innéacs oscailte a stáit"
+
+#: read-cache.c
+#, c-format
+msgid "%s: index file smaller than expected"
+msgstr "%s: comhad innéacs níos lú ná mar a bhí súil leis"
+
+#: read-cache.c
+#, c-format
+msgid "%s: unable to map index file%s"
+msgstr "%s: ní féidir comhad innéacs %s a mhapáil"
+
+#: read-cache.c
+#, c-format
+msgid "unable to create load_index_extensions thread: %s"
+msgstr "nach féidir snáithe load_index_extensions a chruthú: %s"
+
+#: read-cache.c
+#, c-format
+msgid "unable to join load_index_extensions thread: %s"
+msgstr "ní féidir teacht le snáithe load_index_extensions: %s"
+
+#: read-cache.c
+#, c-format
+msgid "could not freshen shared index '%s'"
+msgstr "ní raibh in ann innéacs roinnte '%s' a athnuachan"
+
+#: read-cache.c
+#, c-format
+msgid "broken index, expect %s in %s, got %s"
+msgstr "innéacs briste, súil le %s i %s, fuair %s"
+
+#: read-cache.c
+msgid "cannot write split index for a sparse index"
+msgstr "ní féidir innéacs scoilte a scríobh le haghaidh innéacs neall"
+
+#: read-cache.c
+msgid "failed to convert to a sparse-index"
+msgstr "theip ar thiontú go innéacs neamhchoitianta"
+
+#: read-cache.c
+#, c-format
+msgid "unable to open git dir: %s"
+msgstr "in ann git dir a oscailt: %s"
+
+#: read-cache.c
+#, c-format
+msgid "unable to unlink: %s"
+msgstr "nach féidir dínasc a dhéanamh: %s"
+
+#: read-cache.c
+#, c-format
+msgid "cannot fix permission bits on '%s'"
+msgstr "ní féidir giotáin ceada a shocrú ar '%s'"
+
+#: read-cache.c
+#, c-format
+msgid "%s: cannot drop to stage #0"
+msgstr "%s: ní féidir titim go dtí céim #0"
+
+#: read-cache.c
+#, c-format
+msgid "unexpected diff status %c"
+msgstr "stádas diff gan choinne %c"
+
+#: read-cache.c
+#, c-format
+msgid "remove '%s'\n"
+msgstr "bain '%s'\n"
+
+#: rebase-interactive.c
+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 ""
+"Is féidir leat é seo a shocrú le 'git rebase --edit-todo' agus ansin 'git "
+"rebase --continue' a rith.\n"
+"Nó is féidir leat an rebase a chur le 'git rebase --abort'.\n"
+
+#: rebase-interactive.c
+#, c-format
+msgid ""
+"unrecognized setting %s for option rebase.missingCommitsCheck. Ignoring."
+msgstr ""
+"socrú neamhaithnithe %s le haghaidh rogha rebase.missingCommitsCheck. "
+"Neamhaird a dhéanamh."
+
+#: rebase-interactive.c
+msgid ""
+"\n"
+"Commands:\n"
+"p, pick <commit> = use commit\n"
+"r, reword <commit> = use commit, but edit the commit message\n"
+"e, edit <commit> = use commit, but stop for amending\n"
+"s, squash <commit> = use commit, but meld into previous commit\n"
+"f, fixup [-C | -c] <commit> = like \"squash\" but keep only the previous\n"
+" commit's log message, unless -C is used, in which case\n"
+" keep only this commit's message; -c is same as -C but\n"
+" opens the editor\n"
+"x, exec <command> = run command (the rest of the line) using shell\n"
+"b, break = stop here (continue rebase later with 'git rebase --continue')\n"
+"d, drop <commit> = remove commit\n"
+"l, label <label> = label current HEAD with a name\n"
+"t, reset <label> = reset HEAD to a label\n"
+"m, merge [-C <commit> | -c <commit>] <label> [# <oneline>]\n"
+" create a merge commit using the original merge commit's\n"
+" message (or the oneline, if no original merge commit was\n"
+" specified); use -c <commit> to reword the commit message\n"
+"u, update-ref <ref> = track a placeholder for the <ref> to be updated\n"
+" to this position in the new commits. The <ref> is\n"
+" updated at the end of the rebase\n"
+"\n"
+"These lines can be re-ordered; they are executed from top to bottom.\n"
+msgstr ""
+"\n"
+"Orduithe:\n"
+"p, pioc <commit>= úsáid tiomantas\n"
+"r, athfhocal <commit>= bain úsáid as tiomantas, ach cuir an teachtaireacht "
+"tiomanta in eagar\n"
+"e, eagarthóire <commit>acht = tiomantas a úsáid, ach stop le haghaidh leasú\n"
+"s, squash <commit>= gealltanas a úsáid, ach cuir isteach i dtiomantas roimhe "
+"seo\n"
+"f, fixup [-C | -c] <commit>= cosúil le “squash” ach ní choinnigh ach an "
+"ceann roimhe seo\n"
+" teachtaireacht logála commit, mura n-úsáidtear -C, sa "
+"chás sin\n"
+" coinnigh ach teachtaireacht an tiomanta seo; tá -c mar an "
+"gcéanna le -C ach\n"
+" osclaíonn an t-eagarthóir\n"
+"x, exec <command>= ordú reáchtáil (an chuid eile den líne) ag baint úsáide "
+"as bhlaosc\n"
+"b, briseadh = stad anseo (lean ar aghaidh ar rebase níos déanaí le 'git "
+"rebase --continue')\n"
+"d, titim <commit>= bain tiomantas\n"
+"l, lipéad <label>= lipéad CEAD reatha le hainm\n"
+"t, athshocraigh <label>= athshocraigh HEAD go lipéad\n"
+"<oneline>m, cumaisc [-C <commit>| -c<commit>] <label>[#]\n"
+" tiomantas cumaisc a chruthú ag baint úsáide as an tiomantas cumaisc\n"
+" teachtaireacht (nó an t-aonlíne, mura raibh aon chomhcheangal "
+"cumaisc bunaidh\n"
+" sonraithe); bain úsáid as -c chun an teachtai <commit>reacht "
+"tiomanta a athfhocal\n"
+"<ref>u, update-ref <ref>= rianú sealbhóir áite chun an a nuashonrú\n"
+" chuig an bpost seo sna gealltanais nua. Is <ref>é\n"
+" nuashonraithe ag deireadh an athbhunaithe\n"
+"\n"
+"Is féidir na línte seo a athordú; déantar iad a fhorghníomhú ó bharr go "
+"bun.\n"
+
+#: rebase-interactive.c
+#, c-format
+msgid "Rebase %s onto %s (%d command)"
+msgid_plural "Rebase %s onto %s (%d commands)"
+msgstr[0] "Athbhunú %s ar %s (ordú %d)"
+msgstr[1] "Athbhunú %s ar %s (%d orduithe)"
+msgstr[2] "Athbhunú %s ar %s (%d orduithe)"
+
+#: rebase-interactive.c
+msgid ""
+"\n"
+"Do not remove any line. Use 'drop' explicitly to remove a commit.\n"
+msgstr ""
+"\n"
+"Ná bain aon líne. Bain úsáid as 'drop' go sainráite chun tiomantas a "
+"bhaint.\n"
+
+#: rebase-interactive.c
+msgid ""
+"\n"
+"If you remove a line here THAT COMMIT WILL BE LOST.\n"
+msgstr ""
+"\n"
+"Má bhaineann tú líne anseo CAILLFIDH AN TIOMANTAS.\n"
+
+#: rebase-interactive.c
+msgid ""
+"\n"
+"You are editing the todo file of an ongoing interactive rebase.\n"
+"To continue rebase after editing, run:\n"
+" git rebase --continue\n"
+"\n"
+msgstr ""
+"\n"
+"Tá tú ag eagarthóireacht ar chomhad todo de athbhunú idirghníomhach "
+"leanúnach.\n"
+"Chun leanúint ar aghaidh ag athbhunú tar éis eagarthóireachta,\n"
+" git rebase --continue\n"
+"\n"
+
+#: rebase-interactive.c
+msgid ""
+"\n"
+"However, if you remove everything, the rebase will be aborted.\n"
+"\n"
+msgstr ""
+"\n"
+"Mar sin féin, má bhaineann tú gach rud, cuirfear deireadh leis an athbhunú.\n"
+
+#: rebase-interactive.c
+#, c-format
+msgid "could not write '%s'."
+msgstr "ní fhéadfaí '%s' a scríobh."
+
+#: rebase-interactive.c
+#, c-format
+msgid ""
+"Warning: some commits may have been dropped accidentally.\n"
+"Dropped commits (newer to older):\n"
+msgstr ""
+"Rabhadh: b'fhéidir gur titim roinnt gealltanna de thaisme.\n"
+"Gealltanna titim (níos nuaí go níos sine):\n"
+
+#: rebase-interactive.c
+#, c-format
+msgid ""
+"To avoid this message, use \"drop\" to explicitly remove a commit.\n"
+"\n"
+"Use 'git config rebase.missingCommitsCheck' to change the level of "
+"warnings.\n"
+"The possible behaviours are: ignore, warn, error.\n"
+"\n"
+msgstr ""
+"Chun an teachtaireacht seo a sheachaint, bain úsáid as “titim” chun "
+"tiomantas a bhaint go sainráite.\n"
+"\n"
+"Úsáid 'git config rebase.missingCommitsCheck' chun leibhéal na rabhaidh a "
+"athrú.\n"
+"Is iad na hiompraíochtaí féideartha: neamhaird a dhéanamh, rabhadh, "
+"earráid.\n"
+
+#: rebase.c
+#, c-format
+msgid "%s: 'preserve' superseded by 'merges'"
+msgstr "%s: cuireadh 'caomhnú' in ionad 'le' cumaisc '"
+
+#: ref-filter.c wt-status.c
+msgid "gone"
+msgstr "imithe"
+
+#: ref-filter.c
+#, c-format
+msgid "ahead %d"
+msgstr "ar aghaidh %d"
+
+#: ref-filter.c
+#, c-format
+msgid "behind %d"
+msgstr "taobh thiar de %d"
+
+#: ref-filter.c
+#, c-format
+msgid "ahead %d, behind %d"
+msgstr "tosaigh %d, taobh thiar de %d"
+
+#: ref-filter.c
+#, c-format
+msgid "%%(%.*s) does not take arguments"
+msgstr "%%(%.*s) ní ghlacann argóintí"
+
+#: ref-filter.c
+#, c-format
+msgid "unrecognized %%(%.*s) argument: %s"
+msgstr "neamhaithnithe %%(%.*s) argóint: %s"
+
+#: ref-filter.c
+#, c-format
+msgid "expected format: %%(color:<color>)"
+msgstr "formáid ionchais: %%(color:<dath>)"
+
+#: ref-filter.c
+#, c-format
+msgid "unrecognized color: %%(color:%s)"
+msgstr "dath gan aithint: %%(color:%s)"
+
+#: ref-filter.c
+#, c-format
+msgid "Integer value expected refname:lstrip=%s"
+msgstr "Luach sláimhir a bhfuiltear ag súil leis refname:lstrip=%s"
+
+#: ref-filter.c
+#, c-format
+msgid "Integer value expected refname:rstrip=%s"
+msgstr "Luach sláimhir a bhfuiltear ag súil leis refname:rstrip=%s"
+
+#: ref-filter.c
+#, c-format
+msgid "expected %%(trailers:key=<value>)"
+msgstr "ionchasach %%(trailers:key=<value>)"
+
+#: ref-filter.c
+#, c-format
+msgid "unknown %%(trailers) argument: %s"
+msgstr "argóint %%(trailers) anaithnid: %s"
+
+#: ref-filter.c
+#, c-format
+msgid "positive value expected contents:lines=%s"
+msgstr "ábhar ag súil le luach dearfach:lines=%s"
+
+#: ref-filter.c
+#, c-format
+msgid "argument expected for %s"
+msgstr "argóint ag súil le haghaidh %s"
+
+#: ref-filter.c
+#, c-format
+msgid "positive value expected %s=%s"
+msgstr "luach dearfach a bhfuiltear ag súil leis %s=%s"
+
+#: ref-filter.c
+#, c-format
+msgid "cannot fully parse %s=%s"
+msgstr "ní féidir %s=%s a pháirseáil go hiomlán"
+
+#: ref-filter.c
+#, c-format
+msgid "value expected %s="
+msgstr "luach ag súil leis %s="
+
+#: ref-filter.c
+#, c-format
+msgid "positive value expected '%s' in %%(%s)"
+msgstr "luach dearfach a bhíothas ag súil le '%s' i %%(%s)"
+
+#: ref-filter.c
+#, c-format
+msgid "expected format: %%(align:<width>,<position>)"
+msgstr "ionchasach formáid: %%(align:<width>,<position>)"
+
+#: ref-filter.c
+#, c-format
+msgid "unrecognized position:%s"
+msgstr "suíomh gan aithint:%s"
+
+#: ref-filter.c
+#, c-format
+msgid "unrecognized width:%s"
+msgstr "leithead gan aithint:%s"
+
+#: ref-filter.c
+#, c-format
+msgid "unrecognized %%(%s) argument: %s"
+msgstr "argóint %%(%s) gan aitheantas: %s"
+
+#: ref-filter.c
+#, c-format
+msgid "positive width expected with the %%(align) atom"
+msgstr "leithead dearfach a bhíothas ag súil leis leis an adamh %%(align)"
+
+#: ref-filter.c
+#, c-format
+msgid "expected format: %%(ahead-behind:<committish>)"
+msgstr "formáid ionchais: %%(ahead-behind:<committish>)"
+
+#: ref-filter.c
+#, c-format
+msgid "expected format: %%(is-base:<committish>)"
+msgstr "formáid ionchais: %%(is-base:<committish>)"
+
+#: ref-filter.c
+#, c-format
+msgid "malformed field name: %.*s"
+msgstr "ainm réimse mífhoirmithe: %.*s"
+
+#: ref-filter.c
+#, c-format
+msgid "unknown field name: %.*s"
+msgstr "ainm réimse anaithnid: %.*s"
+
+#: ref-filter.c
+#, c-format
+msgid ""
+"not a git repository, but the field '%.*s' requires access to object data"
+msgstr ""
+"ní stórlann git é, ach éilíonn an réimse '%.*s' rochtain ar shonraí réada"
+
+#: ref-filter.c
+#, c-format
+msgid "format: %%(%s) atom used without a %%(%s) atom"
+msgstr "formáid: %%(%s) adaim a úsáidtear gan adaim %%(%s)"
+
+#: ref-filter.c
+#, c-format
+msgid "format: %%(then) atom used more than once"
+msgstr "formáid: %%(then) adaim a úsáidtear níos mó ná uair amháin"
+
+#: ref-filter.c
+#, c-format
+msgid "format: %%(then) atom used after %%(else)"
+msgstr "formáid: %%(then) adaim a úsáidtear tar éis %%(else)"
+
+#: ref-filter.c
+#, c-format
+msgid "format: %%(else) atom used more than once"
+msgstr "formáid: %%(else) adaim a úsáidtear níos mó ná uair amháin"
+
+#: ref-filter.c
+#, c-format
+msgid "format: %%(end) atom used without corresponding atom"
+msgstr "formáid: %%(end) adaim a úsáidtear gan adaim chomhfhreagrach"
+
+#: ref-filter.c
+#, c-format
+msgid "malformed format string %s"
+msgstr "teaghrán formáid mhífhoirmithe %s"
+
+#: ref-filter.c
+#, c-format
+msgid "this command reject atom %%(%.*s)"
+msgstr "diúltú an t-ordú seo adamh %%(%.*s)"
+
+#: ref-filter.c
+#, c-format
+msgid "--format=%.*s cannot be used with --python, --shell, --tcl"
+msgstr "--format=%.*s ní féidir é a úsáid le --python, --shell, --tcl"
+
+#: ref-filter.c
+msgid "failed to run 'describe'"
+msgstr "theip ar 'cur síos' a rith"
+
+#: ref-filter.c
+#, c-format
+msgid "(no branch, rebasing %s)"
+msgstr "(gan aon bhrainse, athbhunú %s)"
+
+#: ref-filter.c
+#, c-format
+msgid "(no branch, rebasing detached HEAD %s)"
+msgstr "(gan aon bhrainse, athbhunú CEAD scoite %s)"
+
+#: ref-filter.c
+#, c-format
+msgid "(no branch, bisect started on %s)"
+msgstr "(gan aon bhrainse, thosaigh bisect ar %s)"
+
+#: ref-filter.c
+#, c-format
+msgid "(HEAD detached at %s)"
+msgstr "(HEAD scoite ag %s)"
+
+#: ref-filter.c
+#, c-format
+msgid "(HEAD detached from %s)"
+msgstr "(CEAD scoite ó %s)"
+
+#: ref-filter.c
+msgid "(no branch)"
+msgstr "(gan aon bhrainse)"
+
+#: ref-filter.c
+#, c-format
+msgid "missing object %s for %s"
+msgstr "réad atá ar iarraidh %s do %s"
+
+#: ref-filter.c
+#, c-format
+msgid "parse_object_buffer failed on %s for %s"
+msgstr "theip ar parse_object_buffer ar %s do %s"
+
+#: ref-filter.c
+#, c-format
+msgid "malformed object at '%s'"
+msgstr "réad mífhoirmithe ag '%s'"
+
+#: ref-filter.c
+#, c-format
+msgid "ignoring ref with broken name %s"
+msgstr "neamhaird a dhéanamh ar tagairt le ainm briste %s"
+
+#: ref-filter.c refs.c
+#, c-format
+msgid "ignoring broken ref %s"
+msgstr "ag déanamh neamhaird ar thagairt briste %s"
+
+#: ref-filter.c
+#, c-format
+msgid "format: %%(end) atom missing"
+msgstr "formáid :%%(end) ataim ar iarraidh"
+
+#: ref-filter.c
+#, c-format
+msgid "malformed object name %s"
+msgstr "ainm réad mífhoirmithe %s"
+
+#: ref-filter.c
+#, c-format
+msgid "option `%s' must point to a commit"
+msgstr "caithfidh rogha `%s' a chur in iúl do thiomantas"
+
+#: ref-filter.h
+msgid "key"
+msgstr "eochair"
+
+#: ref-filter.h
+msgid "field name to sort on"
+msgstr "ainm réimse le sórtáil"
+
+#: ref-filter.h
+msgid "exclude refs which match pattern"
+msgstr "a eisiamh iarmhairtí a mheaitseálann patrún"
+
+#: reflog.c
+#, c-format
+msgid "not a reflog: %s"
+msgstr "ní athbhreithniú: %s"
+
+#: reflog.c
+#, c-format
+msgid "no reflog for '%s'"
+msgstr "gan aon athbhreithniú do '%s'"
+
+#: refs.c
+#, c-format
+msgid "%s does not point to a valid object!"
+msgstr "Ní thugann %s in iúl go réad bailí!"
+
+#: refs.c
+#, c-format
+msgid ""
+"Using '%s' as the name for the initial branch. This default branch name\n"
+"is subject to change. To configure the initial branch name to use in all\n"
+"of your new repositories, which will suppress this warning, call:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Names commonly chosen instead of 'master' are 'main', 'trunk' and\n"
+"'development'. The just-created branch can be renamed via this command:\n"
+"\n"
+"\tgit branch -m <name>\n"
+msgstr ""
+"Ag baint úsáide as '%s' mar ainm don bhrainse tosaigh. An ainm brainse "
+"réamhshocraithe\n"
+"tá sé faoi réir athraithe. Chun an t-ainm brainse tosaigh a chumrú le húsáid "
+"i ngach\n"
+"de do stór nua, a chuirfidh an rabhadh seo a chur faoi chois, glaoigh ar:\n"
+"\n"
+"\tgit config --global init.defaultBranch <name>\n"
+"\n"
+"Is iad na hainmneacha a roghnaítear go coitianta in ionad 'máistir' príomh "
+"',' stoc 'agus\n"
+"'forbair'. Is féidir an brainse atá díreach cruthaithe a athainmniú tríd an "
+"ordú seo:\n"
+"\n"
+"\tgit branch -m <name>\n"
+
+#: refs.c
+#, c-format
+msgid "could not retrieve `%s`"
+msgstr "ní fhéadfaí `%s` a aisghabháil"
+
+#: refs.c
+#, c-format
+msgid "invalid branch name: %s = %s"
+msgstr "ainm brainse neamhbhailí: %s = %s"
+
+#: refs.c
+#, c-format
+msgid "ignoring dangling symref %s"
+msgstr "ag déanamh neamhaird ar shiomtref crochta %s"
+
+#: refs.c
+#, c-format
+msgid "log for ref %s has gap after %s"
+msgstr "tá bearna ag logáil le haghaidh tagairt %s tar éis %s"
+
+#: refs.c
+#, c-format
+msgid "log for ref %s unexpectedly ended on %s"
+msgstr "chríochnaigh logáil le haghaidh tagairt %s gan choinne ar %s"
+
+#: refs.c
+#, c-format
+msgid "log for %s is empty"
+msgstr "tá logáil le haghaidh %s folamh"
+
+#: refs.c
+#, c-format
+msgid "refusing to update reflog for pseudoref '%s'"
+msgstr "diúltú reflog a nuashonrú do pseudoref '%s'"
+
+#: refs.c
+#, c-format
+msgid "refusing to update pseudoref '%s'"
+msgstr "diúltú pseudoref '%s' a nuashonrú"
+
+#: refs.c
+#, c-format
+msgid "refusing to update reflog with bad name '%s'"
+msgstr "diúltú reflog a nuashonrú le droch-ainm '%s'"
+
+#: refs.c
+#, c-format
+msgid "refusing to update ref with bad name '%s'"
+msgstr "diúltú tagairt a nuashonrú le droch-ainm '%s'"
+
+#: refs.c
+msgid "refusing to force and skip creation of reflog"
+msgstr "diúltú cruthú reflog a chur i bhfeidhm agus a scipeáil"
+
+#: refs.c
+#, c-format
+msgid "update_ref failed for ref '%s': %s"
+msgstr "theip ar update_ref le haghaidh tagairt '%s': %s"
+
+#: refs.c
+#, c-format
+msgid "multiple updates for ref '%s' not allowed"
+msgstr "ní cheadaítear nuashonruithe iolracha le haghaidh tagairt '%s'"
+
+#: refs.c
+msgid "ref updates forbidden inside quarantine environment"
+msgstr "nuashonruithe ref toirmiscthe laistigh de"
+
+#: refs.c
+msgid "ref updates aborted by hook"
+msgstr "nuashonruithe tagartha a chuirtear deireadh leis"
+
+#: refs.c
+#, c-format
+msgid "'%s' exists; cannot create '%s'"
+msgstr "Tá '%s' ann; ní féidir '%s' a chruthú"
+
+#: refs.c
+#, c-format
+msgid "cannot process '%s' and '%s' at the same time"
+msgstr "ní féidir '%s' agus '%s' a phróiseáil ag an am céanna"
+
+#: refs.c
+#, c-format
+msgid "could not delete reference %s: %s"
+msgstr "ní fhéadfaí tagairt %s a scriosadh: %s"
+
+#: refs.c
+#, c-format
+msgid "could not delete references: %s"
+msgstr "ní fhéadfaí tagairtí a scriosadh: %s"
+
+#: refs.c
+#, c-format
+msgid "Finished dry-run migration of refs, the result can be found at '%s'\n"
+msgstr ""
+"Imirce tirim críochnaithe na n-iarmhairc, is féidir an toradh a fháil ag "
+"'%s'\n"
+
+#: refs.c
+#, c-format
+msgid "could not remove temporary migration directory '%s'"
+msgstr "ní fhéadfaí eolaire imirce sealadach '%s' a bhaint"
+
+#: refs.c
+#, c-format
+msgid "migrated refs can be found at '%s'"
+msgstr "is féidir airgeanna imirceacha a fháil ag '%s'"
+
+#: refs/files-backend.c refs/reftable-backend.c
+#, c-format
+msgid ""
+"cannot lock ref '%s': expected symref with target '%s': but is a regular ref"
+msgstr ""
+"ní féidir tagairt '%s' a ghlasáil: ag súil le symref le sprioc '%s': ach is "
+"tagairt rialta é"
+
+#: refs/files-backend.c
+#, c-format
+msgid "cannot read ref file '%s'"
+msgstr "ní féidir comhad tagartha '%s' a léamh"
+
+#: refs/files-backend.c
+#, c-format
+msgid "cannot open directory %s"
+msgstr "ní féidir eolaire %s a oscailt"
+
+#: refs/files-backend.c
+msgid "Checking references consistency"
+msgstr "Comhsheasmhacht tagairtí"
+
+#: refs/packed-backend.c
+#, c-format
+msgid "unable to open '%s'"
+msgstr "ní féidir '%s' a oscailt"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "refname is dangerous: %s"
+msgstr "tá refname contúirteach: %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "trying to write ref '%s' with nonexistent object %s"
+msgstr "ag iarraidh tagairt '%s' a scríobh le réad nach bhfuil %s ann"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "trying to write non-commit object %s to branch '%s'"
+msgstr "ag iarraidh réad neamh-thiomanta %s a scríobh chuig brainse '%s'"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid ""
+"multiple updates for 'HEAD' (including one via its referent '%s') are not "
+"allowed"
+msgstr ""
+"ní cheadaítear nuashonruithe iolracha do 'HEAD' (lena n-áirítear ceann tríd "
+"an tagairt '%s')"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "cannot lock ref '%s': unable to resolve reference '%s'"
+msgstr "ní féidir tagairt '%s' a ghlasáil: ní féidir tagairt '%s' a réiteach"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "cannot lock ref '%s': error reading reference"
+msgstr "ní féidir tagairt '%s' a ghlasáil: earráid ag léamh tagairt"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid ""
+"multiple updates for '%s' (including one via symref '%s') are not allowed"
+msgstr ""
+"ní cheadaítear nuashonruithe iolracha do '%s' (lena n-áirítear ceann trí "
+"symref '%s')"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "cannot lock ref '%s': reference already exists"
+msgstr "ní féidir tagairt '%s' a ghlasáil: tá tagairt ann cheana féin"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "cannot lock ref '%s': reference is missing but expected %s"
+msgstr ""
+"ní féidir tagairt '%s' a ghlasáil: tá tagairt ar iarraidh ach táthar ag súil "
+"leis %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "cannot lock ref '%s': is at %s but expected %s"
+msgstr ""
+"ní féidir tagairt '%s' a ghlasáil: tá sé ag %s ach táthar ag súil leis %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "reftable: transaction prepare: %s"
+msgstr "athfhabhtaithe: ullmhú idirbheart: %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "reftable: transaction failure: %s"
+msgstr "athfhabhtaithe: teip ar idirbheart: %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "unable to compact stack: %s"
+msgstr "nach féidir cruach a dhlúthú: %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "refname %s not found"
+msgstr "ní aimsíodh refname %s"
+
+#: refs/reftable-backend.c
+#, c-format
+msgid "refname %s is a symbolic ref, copying it is not supported"
+msgstr "rs tagairt siombalach é refname %s, ní thacaítear leis a chóipeáil"
+
+#: refspec.c
+#, c-format
+msgid "pattern '%s' has no '*'"
+msgstr "níl aon '*' ag patrún '%s'"
+
+#: refspec.c
+#, c-format
+msgid "replacement '%s' has no '*'"
+msgstr "níl aon '*' ag athsholáthar '%s'"
+
+#: remote-curl.c
+#, c-format
+msgid "invalid quoting in push-option value: '%s'"
+msgstr "luachan neamhbhailí i luach brú rogha: '%s'"
+
+#: remote-curl.c
+#, c-format
+msgid "unknown value for object-format: %s"
+msgstr "luach anaithnid d'fhormáid réad: %s"
+
+#: remote-curl.c
+#, c-format
+msgid "%sinfo/refs not valid: is this a git repository?"
+msgstr "Níl %sinfo/refs bailí: an stór git é seo?"
+
+#: remote-curl.c
+msgid "invalid server response; expected service, got flush packet"
+msgstr "freagra freastalaí neamhbhailí; seirbhís a bhíothas ag súil"
+
+#: remote-curl.c
+#, c-format
+msgid "invalid server response; got '%s'"
+msgstr "freagra freastalaí neamhbhailí; fuair '%s'"
+
+#: remote-curl.c
+#, c-format
+msgid "repository '%s' not found"
+msgstr "níor aimsíodh stór '%s'"
+
+#: remote-curl.c
+#, c-format
+msgid "Authentication failed for '%s'"
+msgstr "Theip ar fhíordheimhniú do '%s'"
+
+#: remote-curl.c
+#, c-format
+msgid "unable to access '%s' with http.pinnedPubkey configuration: %s"
+msgstr "ní féidir rochtain a fháil ar '%s' le cumraíocht http.pinnedPubkey: %s"
+
+#: remote-curl.c
+#, c-format
+msgid "unable to access '%s': %s"
+msgstr "ní féidir teacht ar '%s': %s"
+
+#: remote-curl.c
+#, c-format
+msgid "redirecting to %s"
+msgstr "atreorú chuig %s"
+
+#: remote-curl.c
+msgid "shouldn't have EOF when not gentle on EOF"
+msgstr "níor chóir go mbeadh EOF ann nuair nach bhfuil sé miline ar EOF"
+
+#: remote-curl.c
+msgid "remote server sent unexpected response end packet"
+msgstr "sheol freastalaí iargúlta paicéad deiridh"
+
+#: remote-curl.c
+msgid "unable to rewind rpc post data - try increasing http.postBuffer"
+msgstr ""
+"nach féidir sonraí post rpc a athfhillt - déan iarracht http.postBuffer a "
+"mhéadú"
+
+#: remote-curl.c
+#, c-format
+msgid "remote-curl: bad line length character: %.4s"
+msgstr "iargúlta: carachtar fad droch-líne: %.4s"
+
+#: remote-curl.c
+msgid "remote-curl: unexpected response end packet"
+msgstr "iargúlta: paicéad deiridh freagartha gan choinne"
+
+#: remote-curl.c
+#, c-format
+msgid "RPC failed; %s"
+msgstr "Theip ar RPC; %s"
+
+#: remote-curl.c
+msgid "cannot handle pushes this big"
+msgstr "ní féidir brú mór seo a láimhseáil"
+
+#: remote-curl.c
+#, c-format
+msgid "cannot deflate request; zlib deflate error %d"
+msgstr "ní féidir iarratas a dhíscaoileadh; earráid dífhabhtaithe zlib %d"
+
+#: remote-curl.c
+#, c-format
+msgid "cannot deflate request; zlib end error %d"
+msgstr "ní féidir iarratas a dhíscaoileadh; earráid deiridh zlib %d"
+
+#: remote-curl.c
+#, c-format
+msgid "%d bytes of length header were received"
+msgstr "Fuarthas %d bytes de cheanntásc fad"
+
+#: remote-curl.c
+#, c-format
+msgid "%d bytes of body are still expected"
+msgstr "Táthar ag súil fós ag súil le %d bytes den chorp"
+
+#: remote-curl.c
+msgid "dumb http transport does not support shallow capabilities"
+msgstr "ní thacaíonn iompar HTTP dumb le cumais éadomhain"
+
+#: remote-curl.c
+msgid "fetch failed."
+msgstr "theip ar fáil."
+
+#: remote-curl.c
+msgid "cannot fetch by sha1 over smart http"
+msgstr "ní féidir le sha1 a fháil thar http cliste"
+
+#: remote-curl.c
+#, c-format
+msgid "protocol error: expected sha/ref, got '%s'"
+msgstr "earráid prótacal: súil le sha/ref, fuair '%s'"
+
+#: remote-curl.c
+#, c-format
+msgid "http transport does not support %s"
+msgstr "ní thacaíonn iompar http le %s"
+
+#: remote-curl.c
+msgid "protocol error: expected '<url> <path>', missing space"
+msgstr "earráid prótacal: súil leis '<url><path>', spás in easnamh"
+
+#: remote-curl.c
+#, c-format
+msgid "failed to download file at URL '%s'"
+msgstr "theip ar an comhad a íoslódáil ag URL '%s'"
+
+#: remote-curl.c
+msgid "git-http-push failed"
+msgstr "theip ar git-http-push"
+
+#: remote-curl.c
+msgid "remote-curl: usage: git remote-curl <remote> [<url>]"
+msgstr "<remote><url>remote-curl: úsáid: git remote-curl []"
+
+#: remote-curl.c
+msgid "remote-curl: error reading command stream from git"
+msgstr "remote-curl: earráid ag léamh sruth ordaithe ó git"
+
+#: remote-curl.c
+msgid "remote-curl: fetch attempted without a local repo"
+msgstr "remote-curl: iarracht a fháil gan repo áitiúil"
+
+#: remote-curl.c
+#, c-format
+msgid "remote-curl: unknown command '%s' from git"
+msgstr "remote-curl: ordú anaithnid '%s' ó git"
+
+#: remote.c
+#, c-format
+msgid ""
+"reading remote from \"%s/%s\", which is nominated for removal.\n"
+"\n"
+"If you still use the \"remotes/\" directory it is recommended to\n"
+"migrate to config-based remotes:\n"
+"\n"
+"\tgit remote rename %s %s\n"
+"\n"
+"If you cannot, please let us know why you still need to use it by\n"
+"sending an e-mail to <git@vger.kernel.org>."
+msgstr ""
+"léamh iargúlta ó \"%s/%s\", atá ainmnithe lena bhaint.\n"
+"\n"
+"Má úsáideann tú an eolaire “iargúlta/” fós moltar\n"
+"aistriú chuig iargúlta bunaithe ar chumraíocht:\n"
+"\n"
+" git iargúlta a athainmniú %s %s\n"
+"\n"
+"Mura féidir leat, cuir in iúl dúinn le do thoil cén fáth a gcaithfidh tú\n"
+"é a úsáid fós trí ríomhphost a sheoladh chuig <git@vger.kernel.org>."
+
+#: remote.c
+#, c-format
+msgid "config remote shorthand cannot begin with '/': %s"
+msgstr "ní féidir le '/' tosú le gearrthánach iargúlta config: %s"
+
+#: remote.c
+msgid "more than one receivepack given, using the first"
+msgstr ""
+"níos mó ná pacáiste glacadóra amháin a thugtar, ag baint úsáide as an gcéad"
+
+#: remote.c
+msgid "more than one uploadpack given, using the first"
+msgstr ""
+"níos mó ná pacáiste uaslódála amháin tugtha, ag baint úsáide as an gcéad"
+
+#: remote.c
+#, c-format
+msgid "unrecognized followRemoteHEAD value '%s' ignored"
+msgstr "neamhaird a dhéanamh ar luach FollowRemoteHead '%s' gan aithint"
+
+#: remote.c
+#, c-format
+msgid "unrecognized value transfer.credentialsInUrl: '%s'"
+msgstr "aistriú luacha transfer.credentialsInUrl: '%s'"
+
+#: remote.c
+#, c-format
+msgid "URL '%s' uses plaintext credentials"
+msgstr "Úsáideann URL '%s' dhintiúir téacs simplí"
+
+#: remote.c
+#, c-format
+msgid "Cannot fetch both %s and %s to %s"
+msgstr "Ní féidir %s agus %s a fháil chuig %s"
+
+#: remote.c
+#, c-format
+msgid "%s usually tracks %s, not %s"
+msgstr "Is gnách go rianann %s %s, ní %s"
+
+#: remote.c
+#, c-format
+msgid "%s tracks both %s and %s"
+msgstr "Rianann %s %s agus %s araon"
+
+#: remote.c
+#, c-format
+msgid "src refspec %s does not match any"
+msgstr "src refspec %s ní mheaitseálann aon"
+
+#: remote.c
+#, c-format
+msgid "src refspec %s matches more than one"
+msgstr "meaitseálann src refspec %s níos mó ná ceann amháin"
+
+#. TRANSLATORS: "matches '%s'%" is the <dst> part of "git push
+#. <remote> <src>:<dst>" push, and "being pushed ('%s')" is
+#. the <src>.
+#.
+#: remote.c
+#, c-format
+msgid ""
+"The destination you provided is not a full refname (i.e.,\n"
+"starting with \"refs/\"). We tried to guess what you meant by:\n"
+"\n"
+"- Looking for a ref that matches '%s' on the remote side.\n"
+"- Checking if the <src> being pushed ('%s')\n"
+" is a ref in \"refs/{heads,tags}/\". If so we add a corresponding\n"
+" refs/{heads,tags}/ prefix on the remote side.\n"
+"\n"
+"Neither worked, so we gave up. You must fully qualify the ref."
+msgstr ""
+"Ní ainm athainmnithe iomlán é an ceann scríbe a sholáthair tú (i.e., \n"
+"ag tosú le \"refs/\"). Rinneamar iarracht buille faoi thuairim a thabhairt "
+"faoi cad a bhí i gceist agat le:\n"
+"\n"
+"- Ag lorg tagartha a mheaitseálann '%s' ar an taobh iargúlta.\n"
+"- Ag seiceáil an bhfuil an <src> atá á bhrú ('%s') ina thagairt \n"
+" i \"refs/{heads,tags}/\". Más ea, cuirimid réimír comhfhreagrach r\n"
+" efs/{heads,tags}/ leis ar an taobh iargúlta.\n"
+"\n"
+"Níor oibrigh ceachtar acu, mar sin thugamar suas. Caithfidh tú an tagairt a "
+"cháiliú go hiomlán."
+
+#: remote.c
+#, c-format
+msgid ""
+"The <src> part of the refspec is a commit object.\n"
+"Did you mean to create a new branch by pushing to\n"
+"'%s:refs/heads/%s'?"
+msgstr ""
+"Is <src>réad tiomanta í an chuid den refspec.\n"
+"An raibh i gceist agat brainse nua a chruthú trí bhrú chuig\n"
+"'%s:refs/heads/%s'?"
+
+#: remote.c
+#, c-format
+msgid ""
+"The <src> part of the refspec is a tag object.\n"
+"Did you mean to create a new tag by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"Is <src>réad clibeanna é an chuid den refspec.\n"
+"An raibh i gceist agat clib nua a chruthú trí bhrú chuig\n"
+"'%s:refs/tags/%s'?"
+
+#: remote.c
+#, c-format
+msgid ""
+"The <src> part of the refspec is a tree object.\n"
+"Did you mean to tag a new tree by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"Is <src>réad crann í an chuid den refspec.\n"
+"An raibh sé i gceist agat crann nua a chlibeáil trí bhrú chuig\n"
+"'%s:refs/tags/%s'?"
+
+#: remote.c
+#, c-format
+msgid ""
+"The <src> part of the refspec is a blob object.\n"
+"Did you mean to tag a new blob by pushing to\n"
+"'%s:refs/tags/%s'?"
+msgstr ""
+"Is <src>réad blob é an chuid den refspec.\n"
+"An raibh sé i gceist agat blob nua a chlibeáil trí bhrú chuig\n"
+"'%s:refs/tags/%s'?"
+
+#: remote.c
+#, c-format
+msgid "%s cannot be resolved to branch"
+msgstr "Ní féidir %s a réiteach chuig an mbrainse"
+
+#: remote.c
+#, c-format
+msgid "unable to delete '%s': remote ref does not exist"
+msgstr "ní féidir '%s' a scriosadh: níl tagairt iargúlta ann"
+
+#: remote.c
+#, c-format
+msgid "dst refspec %s matches more than one"
+msgstr "meaitseálann dst refspec %s níos mó ná ceann amháin"
+
+#: remote.c
+#, c-format
+msgid "dst ref %s receives from more than one src"
+msgstr "faigheann dst ref %s ó níos mó ná src amháin"
+
+#: remote.c
+msgid "HEAD does not point to a branch"
+msgstr "Ní chuireann HEAD in iúl do bhrainse"
+
+#: remote.c
+#, c-format
+msgid "no such branch: '%s'"
+msgstr "aon bhrainse den sórt sin: '%s'"
+
+#: remote.c
+#, c-format
+msgid "no upstream configured for branch '%s'"
+msgstr "níl aon chumrú suas srutha le haghaidh brainse '%s'"
+
+#: remote.c
+#, c-format
+msgid "upstream branch '%s' not stored as a remote-tracking branch"
+msgstr "brainse suas srutha '%s' nach stóráiltear mar bhrainse cianrianaithe"
+
+#: remote.c
+#, c-format
+msgid "push destination '%s' on remote '%s' has no local tracking branch"
+msgstr ""
+"níl aon bhrainse rianaithe áitiúil ag ceann scríbe brúite '%s' ar iargúlta "
+"'%s'"
+
+#: remote.c
+#, c-format
+msgid "branch '%s' has no remote for pushing"
+msgstr "níl aon iargúlta ag brainse '%s' chun brú"
+
+#: remote.c
+#, c-format
+msgid "push refspecs for '%s' do not include '%s'"
+msgstr "ní chuimsíonn '%s' brú refspections do '%s'"
+
+#: remote.c
+msgid "push has no destination (push.default is 'nothing')"
+msgstr "níl aon cheann scríbe ag brú (is é 'rud ar bith' push.default)"
+
+#: remote.c
+msgid "cannot resolve 'simple' push to a single destination"
+msgstr "ní féidir brú 'simplí' a réiteach chuig ceann scríbe amháin"
+
+#: remote.c
+#, c-format
+msgid "couldn't find remote ref %s"
+msgstr "ní raibh in ann tagairt iargúlta %s a fháil"
+
+#: remote.c
+#, c-format
+msgid "* Ignoring funny ref '%s' locally"
+msgstr "* Ag neamhaird den tagairt ghreannmhar '%s' go háitiúil"
+
+#: remote.c
+#, c-format
+msgid "Your branch is based on '%s', but the upstream is gone.\n"
+msgstr "Tá do bhrainse bunaithe ar '%s', ach tá an suas sruth imithe.\n"
+
+#: remote.c
+msgid " (use \"git branch --unset-upstream\" to fixup)\n"
+msgstr " (bain úsáid as \"git branch --unset-upstream\" chun é a dheisiú)\n"
+
+#: remote.c
+#, c-format
+msgid "Your branch is up to date with '%s'.\n"
+msgstr "Tá do bhrainse cothrom le dáta le '%s'.\n"
+
+#: remote.c
+#, c-format
+msgid "Your branch and '%s' refer to different commits.\n"
+msgstr "Tagraíonn do bhrainse agus '%s' do thiomnuithe difriúla.\n"
+
+#: remote.c
+#, c-format
+msgid " (use \"%s\" for details)\n"
+msgstr " (bain úsáid as \"%s\" le haghaidh sonraí)\n"
+
+#: remote.c
+#, 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] "Tá do bhrainse chun tosaigh ar '%s' le tiomantas %d.\n"
+msgstr[1] "Tá do bhrainse chun tosaigh ar '%s' le tiomantais %d.\n"
+msgstr[2] "Tá do bhrainse chun tosaigh ar '%s' le tiomantais %d.\n"
+
+#: remote.c
+msgid " (use \"git push\" to publish your local commits)\n"
+msgstr " (bain úsáid as “git push” chun do thiomanta áitiúla a fhoilsiú)\n"
+
+#: remote.c
+#, c-format
+msgid "Your branch is behind '%s' by %d commit, and can be fast-forwarded.\n"
+msgid_plural ""
+"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
+msgstr[0] ""
+"Tá do bhrainse taobh thiar de '%s' faoi %d tiomantas, agus is féidir é a "
+"luasghéarú ar aghaidh.\n"
+msgstr[1] ""
+"Tá do bhrainse taobh thiar de '%s' faoi %d tiomnuithe, agus is féidir é a "
+"luasghéarú ar aghaidh.\n"
+msgstr[2] ""
+"Tá do bhrainse taobh thiar de '%s' faoi %d tiomnuithe, agus is féidir é a "
+"luasghéarú ar aghaidh.\n"
+
+#: remote.c
+msgid " (use \"git pull\" to update your local branch)\n"
+msgstr " (bain úsáid as “git pull” chun do bhrainse áitiúil a nuashonrú)\n"
+
+#: remote.c
+#, c-format
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit each, respectively.\n"
+msgid_plural ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commits each, respectively.\n"
+msgstr[0] ""
+"Tá do bhrainse agus '%s' scartha óna chéile,\n"
+"agus tá %d agus %d tiomnú difriúil acu faoi seach.\n"
+msgstr[1] ""
+"Tá do bhrainse agus '%s' scartha óna chéile,\n"
+"agus tá %d agus %d tiomnuithe difriúla acu faoi seach.\n"
+msgstr[2] ""
+"Tá do bhrainse agus '%s' scartha óna chéile,\n"
+"agus tá %d agus %d tiomnuithe difriúla acu faoi seach.\n"
+
+#: remote.c
+msgid ""
+" (use \"git pull\" if you want to integrate the remote branch with yours)\n"
+msgstr ""
+" (bain úsáid as “git pull” más mian leat an brainse iargúlta a chomhtháthú "
+"le leatsa)\n"
+
+#: remote.c
+#, c-format
+msgid "cannot parse expected object name '%s'"
+msgstr "ní féidir ainm réad a bhfuil súil leis '%s' a pharsáil"
+
+#: remote.c
+#, c-format
+msgid "cannot strip one component off url '%s'"
+msgstr "ní féidir comhpháirt amháin a bhaint as url '%s'"
+
+#: replace-object.c
+#, c-format
+msgid "bad replace ref name: %s"
+msgstr "droch-ainm tagartha athsholáthair: %s"
+
+#: replace-object.c
+#, c-format
+msgid "duplicate replace ref: %s"
+msgstr "athsholáthar dúblach tagairt: %s"
+
+#: replace-object.c
+#, c-format
+msgid "replace depth too high for object %s"
+msgstr "doimhneacht ró-ard a chur in ionad do réad %s"
+
+#: rerere.c
+msgid "corrupt MERGE_RR"
+msgstr "truaillithe MERGE_RR"
+
+#: rerere.c
+msgid "unable to write rerere record"
+msgstr "in ann taifead a scríobh arís"
+
+#: rerere.c
+#, c-format
+msgid "there were errors while writing '%s' (%s)"
+msgstr "bhí earráidí ann agus tú ag scríobh '%s' (%s)"
+
+#: rerere.c
+#, c-format
+msgid "could not parse conflict hunks in '%s'"
+msgstr "ní fhéadfaí coimhlint a pharsáil i '%s'"
+
+#: rerere.c
+#, c-format
+msgid "failed utime() on '%s'"
+msgstr "theip ar utime () ar '%s'"
+
+#: rerere.c
+#, c-format
+msgid "writing '%s' failed"
+msgstr "theip ar scríobh '%s'"
+
+#: rerere.c
+#, c-format
+msgid "Staged '%s' using previous resolution."
+msgstr "'%s 'céim ag baint úsáide as réiteach roimhe seo."
+
+#: rerere.c
+#, c-format
+msgid "Recorded resolution for '%s'."
+msgstr "Réiteach taifeadta le haghaidh '%s'."
+
+#: rerere.c
+#, c-format
+msgid "Resolved '%s' using previous resolution."
+msgstr "Réitigh '%s' ag úsáid réiteach roimhe seo."
+
+#: rerere.c
+#, c-format
+msgid "cannot unlink stray '%s'"
+msgstr "ní féidir le '%s' a dhínascadh"
+
+#: rerere.c
+#, c-format
+msgid "Recorded preimage for '%s'"
+msgstr "Réamhíomhá taifeadta do '%s'"
+
+#: rerere.c
+#, c-format
+msgid "failed to update conflicted state in '%s'"
+msgstr "theip ar an stát coinbhleachta a nuashonrú i '%s'"
+
+#: rerere.c
+#, c-format
+msgid "no remembered resolution for '%s'"
+msgstr "níl aon réiteach cuimhne ar '%s'"
+
+#: rerere.c
+#, c-format
+msgid "Updated preimage for '%s'"
+msgstr "Réamhíomhá nuashonraithe do '%s'"
+
+#: rerere.c
+#, c-format
+msgid "Forgot resolution for '%s'\n"
+msgstr "Déan dearmad dearmad ar réiteach '%s'\n"
+
+#: rerere.c
+msgid "unable to open rr-cache directory"
+msgstr "in ann eolaire rr-cache a oscailt"
+
+#: rerere.h
+msgid "update the index with reused conflict resolution if possible"
+msgstr "an t-innéacs a nuashonrú le réiteach coinbhleachta a athúsáidtear"
+
+#: reset.c
+msgid "could not determine HEAD revision"
+msgstr "ní raibh sé in ann athbhreithniú HEAD"
+
+#: reset.c sequencer.c
+#, c-format
+msgid "failed to find tree of %s"
+msgstr "theip ar chrann %s a aimsiú"
+
+#: revision.c
+#, c-format
+msgid "unsupported section for hidden refs: %s"
+msgstr "rannán gan tacaíocht do thaifeanna i bhfolach: %s"
+
+#: revision.c
+msgid "--exclude-hidden= passed more than once"
+msgstr "--exclude-hidden= rith níos mó ná uair amháin"
+
+#: revision.c
+#, c-format
+msgid "resolve-undo records `%s` which is missing"
+msgstr "taifid réitigh a chealú `%s` atá ar iarraidh"
+
+#: revision.c
+#, c-format
+msgid "%s exists but is a symbolic ref"
+msgstr "Tá %s ann ach is tagairt siombalach é"
+
+#: revision.c
+msgid ""
+"--merge requires one of the pseudorefs MERGE_HEAD, CHERRY_PICK_HEAD, "
+"REVERT_HEAD or REBASE_HEAD"
+msgstr ""
+"Teastaíonn --merge ceann de na pseudorefs MERGE_HEAD, CHERRY_PICK_HEAD, "
+"REVERT_HEAD nó REBASE_HEAD"
+
+#: revision.c
+#, c-format
+msgid "could not get commit for --ancestry-path argument %s"
+msgstr "ní fhéadfaí tiomantas a fháil le haghaidh argóint --ancestry-path %s"
+
+#: revision.c
+msgid "--unpacked=<packfile> no longer supported"
+msgstr "--unpacked=<packfile> ní thacaítear leis a thuilleadh"
+
+#: revision.c
+#, c-format
+msgid "invalid option '%s' in --stdin mode"
+msgstr "rogha neamhbhailí '%s' i mód --stdin"
+
+#: revision.c
+msgid "your current branch appears to be broken"
+msgstr "is cosúil go bhfuil do bhrainse reatha briste"
+
+#: revision.c
+#, c-format
+msgid "your current branch '%s' does not have any commits yet"
+msgstr "níl aon gealltanais fós ag do bhrainse reatha '%s'"
+
+#: revision.c
+msgid "object filtering requires --objects"
+msgstr "teastaíonn scagadh réad --objects"
+
+#: revision.c
+msgid "-L does not yet support diff formats besides -p and -s"
+msgstr "Ní thacaíonn -L le formáidí diff fós seachas -p agus -s"
+
+#: run-command.c
+#, c-format
+msgid "cannot create async thread: %s"
+msgstr "ní féidir snáithe async a chruthú: %s"
+
+#: scalar.c worktree.c
+#, c-format
+msgid "'%s' does not exist"
+msgstr "Níl '%s' ann"
+
+#: scalar.c
+#, c-format
+msgid "could not switch to '%s'"
+msgstr "ní fhéadfaí aistriú go '%s'"
+
+#: scalar.c
+msgid "need a working directory"
+msgstr "teastaíonn eolaire oibre"
+
+#: scalar.c
+msgid "Scalar enlistments require a worktree"
+msgstr "Teastaíonn crann oibre ó liostú scalar"
+
+#: scalar.c
+#, c-format
+msgid "could not configure %s=%s"
+msgstr "ní fhéadfaí %s=%s a chumrú"
+
+#: scalar.c
+msgid "could not configure log.excludeDecoration"
+msgstr "ní fhéadfaí log.excludeDecoration a chumrú"
+
+#: scalar.c
+msgid "could not add enlistment"
+msgstr "ní fhéadfaí liostú a chur leis"
+
+#: scalar.c
+msgid "could not set recommended config"
+msgstr "ní fhéadfaí cumraíocht mholta a shocrú"
+
+#: scalar.c
+msgid "could not toggle maintenance"
+msgstr "níorbh fhéidir cothabháil a athrú"
+
+#: scalar.c
+msgid "could not start the FSMonitor daemon"
+msgstr "ní fhéadfaí an daemon FSMonitor a thosú"
+
+#: scalar.c
+msgid "could not turn off maintenance"
+msgstr "ní fhéadfadh cothabháil a mhúchadh"
+
+#: scalar.c
+msgid "could not remove enlistment"
+msgstr "ní fhéadfaí liostú a bhaint"
+
+#: scalar.c
+#, c-format
+msgid "remote HEAD is not a branch: '%.*s'"
+msgstr "ní brainse é iargúlta HEAD: '%.*s"
+
+#: scalar.c
+msgid "failed to get default branch name from remote; using local default"
+msgstr ""
+"theip ar ainm brainse réamhshocraithe a fháil ó iargúlta; ag baint úsáide as"
+
+#: scalar.c
+msgid "failed to get default branch name"
+msgstr "theip ort ainm brainse réamhshocraithe a fháil"
+
+#: scalar.c
+msgid "failed to unregister repository"
+msgstr "theip ar stór a dhíchlárú"
+
+#: scalar.c
+msgid "failed to stop the FSMonitor daemon"
+msgstr "theip ar an daemon FSMonitor a stopadh"
+
+#: scalar.c
+msgid "failed to delete enlistment directory"
+msgstr "theip ar eolaire liostála a scriosadh"
+
+#: scalar.c
+msgid "branch to checkout after clone"
+msgstr "brainse chun an tseiceáil tar éis clóin"
+
+#: scalar.c
+msgid "when cloning, create full working directory"
+msgstr "agus tú ag clónú, cruthaigh eolaire oibre iomlán"
+
+#: scalar.c
+msgid "only download metadata for the branch that will be checked out"
+msgstr "meiteashonraí a íoslódáil ach don bhrainse a sheiceálfar"
+
+#: scalar.c
+msgid "create repository within 'src' directory"
+msgstr "cruthaigh stór laistigh de eolaire 'src'"
+
+#: scalar.c
+msgid "specify if tags should be fetched during clone"
+msgstr "sonraigh an gcaithfear clibeanna a fháil le linn clóin"
+
+#: scalar.c
+msgid "specify if background maintenance should be enabled"
+msgstr "sonraigh an bhfuil cothabháil chúlra le cumasú"
+
+#: scalar.c
+msgid ""
+"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]"
+msgstr ""
+"clón scálach [--single-branch] [--branch <príomhbhrainse>] [--full-clone]\n"
+"[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<liostáil>]"
+
+#: scalar.c
+#, c-format
+msgid "cannot deduce worktree name from '%s'"
+msgstr "ní féidir ainm crann oibre a bhaint as '%s'"
+
+#: scalar.c
+#, c-format
+msgid "directory '%s' exists already"
+msgstr "tá eolaire '%s' ann cheana féin"
+
+#: scalar.c
+#, c-format
+msgid "failed to get default branch for '%s'"
+msgstr "theip ar bhrainse réamhshocraithe a fháil do '%s'"
+
+#: scalar.c
+#, c-format
+msgid "could not configure remote in '%s'"
+msgstr "ní fhéadfaí iargúlta a chumrú i '%s'"
+
+#: scalar.c
+#, c-format
+msgid "could not disable tags in '%s'"
+msgstr "ní fhéadfaí clibeanna a dhíchumasú i '%s'"
+
+#: scalar.c
+#, c-format
+msgid "could not configure '%s'"
+msgstr "ní fhéadfaí '%s' a chumrú"
+
+#: scalar.c
+msgid "partial clone failed; attempting full clone"
+msgstr "theip ar chlón páirteach; iarracht clón iomlán"
+
+#: scalar.c
+msgid "could not configure for full clone"
+msgstr "ní fhéadfaí a chumrú le haghaidh clón iomlán"
+
+#: scalar.c
+msgid "scalar diagnose [<enlistment>]"
+msgstr "<enlistment>diagnóis scalar []"
+
+#: scalar.c
+msgid "`scalar list` does not take arguments"
+msgstr "Ní ghlacann `liosta scalar` argóintí"
+
+#: scalar.c
+msgid "scalar register [--[no-]maintenance] [<enlistment>]"
+msgstr "clár scálach [--[gan-]chothabháil] [<liostáil>]"
+
+#: scalar.c
+msgid "reconfigure all registered enlistments"
+msgstr "gach liostáil cláraithe a athchumrú"
+
+#: scalar.c
+msgid "(enable|disable|keep)"
+msgstr "(cumasaigh|díchumasaigh|coinnigh)"
+
+#: scalar.c
+msgid "signal how to adjust background maintenance"
+msgstr "comhartha a thabhairt maidir le conas cothabháil chúlra a choigeartú"
+
+#: scalar.c
+msgid ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enlistment>]"
+msgstr ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enlistment>]"
+
+#: scalar.c
+msgid "--all or <enlistment>, but not both"
+msgstr "--all nó <enlistment>, ach ní an dá cheann"
+
+#: scalar.c
+#, c-format
+msgid "unknown mode for --maintenance option: %s"
+msgstr "mód anaithnid don rogha --maintenance: %s"
+
+#: scalar.c
+#, c-format
+msgid "could not remove stale scalar.repo '%s'"
+msgstr "ní fhéadfaí scalar.repo '%s' a bhaint as scalar.repo"
+
+#: scalar.c
+#, c-format
+msgid "removed stale scalar.repo '%s'"
+msgstr "bainte scale scalar.repo '%s'"
+
+#: scalar.c
+#, c-format
+msgid "repository at '%s' has different owner"
+msgstr "tá úinéir difriúil ag an stórlann ag '%s'"
+
+#: scalar.c
+#, c-format
+msgid "repository at '%s' has a format issue"
+msgstr "tá ceist formáide ag stór ag '%s'"
+
+#: scalar.c
+#, c-format
+msgid "repository not found in '%s'"
+msgstr "ní bhfuarthas stór i '%s'"
+
+#: scalar.c
+#, c-format
+msgid ""
+"to unregister this repository from Scalar, run\n"
+"\tgit config --global --unset --fixed-value scalar.repo \"%s\""
+msgstr ""
+"chun an stór seo a dhíchlárú ó Scalar, reáchtáil\n"
+" git config --global --unset --fixed-value scalar.repo “%s”"
+
+#: scalar.c
+msgid ""
+"scalar run <task> [<enlistment>]\n"
+"Tasks:\n"
+msgstr ""
+"rith scalar <tasc> [<liostáil>]\n"
+"Tascanna:\n"
+
+#: scalar.c
+#, c-format
+msgid "no such task: '%s'"
+msgstr "gan aon tasc den sórt sin: '%s'"
+
+#: scalar.c
+msgid "scalar unregister [<enlistment>]"
+msgstr "<enlistment>scálar díchlárú []"
+
+#: scalar.c
+msgid "scalar delete <enlistment>"
+msgstr "scriosadh scalar <enlistment>"
+
+#: scalar.c
+msgid "refusing to delete current working directory"
+msgstr "diúltú eolaire oibre reatha a scriosadh"
+
+#: scalar.c
+msgid "include Git version"
+msgstr "leagan Git san áireamh"
+
+#: scalar.c
+msgid "include Git's build options"
+msgstr "áireamh roghanna tógála Git"
+
+#: scalar.c
+msgid "scalar verbose [-v | --verbose] [--build-options]"
+msgstr "scalar verbose [-v | --verbose] [--build-options]"
+
+#: scalar.c
+msgid "-C requires a <directory>"
+msgstr "Éilíonn -C a <directory>"
+
+#: scalar.c
+#, c-format
+msgid "could not change to '%s'"
+msgstr "ní fhéadfaí athrú go '%s'"
+
+#: scalar.c
+msgid "-c requires a <key>=<value> argument"
+msgstr "<value>Éilíonn -c a <key>= argóint"
+
+#: scalar.c
+msgid ""
+"scalar [-C <directory>] [-c <key>=<value>] <command> [<options>]\n"
+"\n"
+"Commands:\n"
+msgstr ""
+"scalar [-C <eolaire>] [-c <eochair>=<luach>] <ordú> [<roghanna>]\n"
+"\n"
+"Orduithe:\n"
+
+#: send-pack.c
+msgid "unexpected flush packet while reading remote unpack status"
+msgstr "paicéad srutháin gan choinne agus stádas díphacála iargúlta"
+
+#: send-pack.c
+#, c-format
+msgid "unable to parse remote unpack status: %s"
+msgstr "nach féidir stádas iargúlta díphacáil a pháirseáil: %s"
+
+#: send-pack.c
+#, c-format
+msgid "remote unpack failed: %s"
+msgstr "theip ar dhíphacáil iargúlta: %s"
+
+#: send-pack.c
+msgid "failed to sign the push certificate"
+msgstr "theip ar an deimhniú brú a shíniú"
+
+#: send-pack.c
+msgid "send-pack: unable to fork off fetch subprocess"
+msgstr "pacáiste seolta: ní féidir leis an bhfophróiseas faighte a fhorc"
+
+#: send-pack.c
+msgid "push negotiation failed; proceeding anyway with push"
+msgstr "theip ar chaibidlíocht brú; dul ar aghaidh ar aon nós"
+
+#: send-pack.c
+msgid "the receiving end does not support this repository's hash algorithm"
+msgstr "ní thacaíonn an deireadh glacadh le halgartam hash an stór seo"
+
+#: send-pack.c
+msgid "the receiving end does not support --signed push"
+msgstr "ní thacaíonn an deireadh glacadh le brú --signed"
+
+#: send-pack.c
+msgid ""
+"not sending a push certificate since the receiving end does not support --"
+"signed push"
+msgstr ""
+"níl teastas brú á sheoladh ós rud é nach dtacaíonn an taobh glactha le --"
+"signed brúigh"
+
+#: send-pack.c
+msgid "the receiving end does not support --atomic push"
+msgstr "ní thacaíonn an deireadh glacadh le brú --atomic"
+
+#: send-pack.c
+msgid "the receiving end does not support push options"
+msgstr "ní thacaíonn an deireadh glacadh le roghanna brú"
+
+#: sequencer.c
+#, c-format
+msgid "invalid commit message cleanup mode '%s'"
+msgstr "modh glantacháin teachtaireachta tiomanta neamhbhailí '%s'"
+
+#: sequencer.c
+#, c-format
+msgid "could not delete '%s'"
+msgstr "ní fhéadfaí '%s' a scriosadh"
+
+#: sequencer.c
+msgid "revert"
+msgstr "filleadh"
+
+#: sequencer.c
+msgid "cherry-pick"
+msgstr "pioc silíní"
+
+#: sequencer.c
+msgid "rebase"
+msgstr "athbhunú"
+
+#: sequencer.c
+#, c-format
+msgid "unknown action: %d"
+msgstr "gníomh anaithnid: %d"
+
+#: sequencer.c
+msgid ""
+"Resolve all conflicts manually, mark them as resolved with\n"
+"\"git add/rm <conflicted_files>\", then run \"git rebase --continue\".\n"
+"You can instead skip this commit: run \"git rebase --skip\".\n"
+"To abort and get back to the state before \"git rebase\", run \"git rebase --"
+"abort\"."
+msgstr ""
+"Réiteach na coinbhleachtaí go léir de láimh, marcáil iad mar réiteach\n"
+"“git add/rm <conflicted_files>“, ansin rith “git rebase --continue”.\n"
+"Ina áit sin is féidir leat an tiomantas seo a scipeáil: rith “git rebase --"
+"skip”.\n"
+"Chun abordú agus dul ar ais go dtí an stát roimh “git rebase”, reáchtáil "
+"“git rebase --abort”."
+
+#: sequencer.c
+msgid ""
+"after resolving the conflicts, mark the corrected paths\n"
+"with 'git add <paths>' or 'git rm <paths>'"
+msgstr ""
+"tar éis na coinbhleachtaí a réiteach, marcáil na cosáin cearta\n"
+"<paths>le 'git add <paths>'nó 'git rm'"
+
+#: sequencer.c
+msgid ""
+"After resolving the conflicts, mark them with\n"
+"\"git add/rm <pathspec>\", then run\n"
+"\"git cherry-pick --continue\".\n"
+"You can instead skip this commit with \"git cherry-pick --skip\".\n"
+"To abort and get back to the state before \"git cherry-pick\",\n"
+"run \"git cherry-pick --abort\"."
+msgstr ""
+"Tar éis na coinbhleachtaí a réiteach, marcáil iad le\n"
+"“git add/rm <pathspec>“, ansin rith\n"
+"\"git cherry-pick --continue\".\n"
+"Is féidir leat an tiomantas seo a scipeáil ina ionad sin le \"git cherry-"
+"pick --skip\n"
+"Chun abordú agus dul ar ais go dtí an stát roimh “git cherry-pick”,\n"
+"reáchtáil “git cherry-pick --abort”."
+
+#: sequencer.c
+msgid ""
+"After resolving the conflicts, mark them with\n"
+"\"git add/rm <pathspec>\", then run\n"
+"\"git revert --continue\".\n"
+"You can instead skip this commit with \"git revert --skip\".\n"
+"To abort and get back to the state before \"git revert\",\n"
+"run \"git revert --abort\"."
+msgstr ""
+"Tar éis na coinbhleachtaí a réiteach, marcáil iad le\n"
+"“git add/rm <pathspec>“, ansin rith\n"
+"“git ar ais --continue ar aghaidh”.\n"
+"Ina áit sin is féidir leat an tiomantas seo a scipeáil le “git revert --"
+"skip”.\n"
+"Chun deireadh a chur leis agus dul ar ais go dtí an stát roimh “git "
+"revert”,\n"
+"reáchtáil “git revert --abort”."
+
+#: sequencer.c
+#, c-format
+msgid "could not lock '%s'"
+msgstr "ní fhéadfaí '%s' a ghlasáil"
+
+#: sequencer.c
+#, c-format
+msgid "could not write eol to '%s'"
+msgstr "ní fhéadfaí eol a scríobh chuig '%s'"
+
+#: sequencer.c
+#, c-format
+msgid "failed to finalize '%s'"
+msgstr "theip ar '%s' a chur i gcrích"
+
+#: sequencer.c
+#, c-format
+msgid "your local changes would be overwritten by %s."
+msgstr "d'athruithe áitiúla a fhorscríobhadh ag %s."
+
+#: sequencer.c
+msgid "commit your changes or stash them to proceed."
+msgstr "do chuid athruithe a dhéanamh nó iad a stóráil chun dul ar aghaidh."
+
+#. TRANSLATORS: %s will be "revert", "cherry-pick" or
+#. "rebase".
+#.
+#: sequencer.c
+#, c-format
+msgid "%s: Unable to write new index file"
+msgstr "%s: Ní féidir comhad innéacs nua a scríobh"
+
+#: sequencer.c
+msgid "unable to update cache tree"
+msgstr "in ann crann taisce a nuashonrú"
+
+#: sequencer.c
+msgid "could not resolve HEAD commit"
+msgstr "ní fhéadfaí tiomantas HEAD a réiteach"
+
+#: sequencer.c
+#, c-format
+msgid "no key present in '%.*s'"
+msgstr "níl aon eochair i láthair i '%.*s"
+
+#: sequencer.c
+#, c-format
+msgid "unable to dequote value of '%s'"
+msgstr "nach féidir luach '%s' a dhíchur"
+
+#: sequencer.c
+msgid "'GIT_AUTHOR_NAME' already given"
+msgstr "'GIT_AUTHOR_NAME' tugtha cheana féin"
+
+#: sequencer.c
+msgid "'GIT_AUTHOR_EMAIL' already given"
+msgstr "'GIT_AUTHOR_EMAIL' tugtha cheana féin"
+
+#: sequencer.c
+msgid "'GIT_AUTHOR_DATE' already given"
+msgstr "'GIT_AUTHOR_DATE' tugtha cheana féin"
+
+#: sequencer.c
+#, c-format
+msgid "unknown variable '%s'"
+msgstr "athróg anaithnid '%s'"
+
+#: sequencer.c
+msgid "missing 'GIT_AUTHOR_NAME'"
+msgstr "ar iarraidh 'GIT_AUTHOR_NAME'"
+
+#: sequencer.c
+msgid "missing 'GIT_AUTHOR_EMAIL'"
+msgstr "ar iarraidh 'GIT_AUTHOR_EMAIL'"
+
+#: sequencer.c
+msgid "missing 'GIT_AUTHOR_DATE'"
+msgstr "ar iarraidh 'GIT_AUTHOR_DATE'"
+
+#: sequencer.c
+#, c-format
+msgid ""
+"you have staged changes in your working tree\n"
+"If these changes are meant to be squashed into the previous commit, run:\n"
+"\n"
+" git commit --amend %s\n"
+"\n"
+"If they are meant to go into a new commit, run:\n"
+"\n"
+" git commit %s\n"
+"\n"
+"In both cases, once you're done, continue with:\n"
+"\n"
+" git rebase --continue\n"
+msgstr ""
+"tá athruithe céime agat i do chrann oibre\n"
+"Má tá na hathruithe seo i gceist a chur isteach sa tiomantas roimhe seo, "
+"reáchtáil:\n"
+"\n"
+" git commit --amend %s\n"
+"\n"
+"Má tá siad i gceist dul i dtiomantas nua, reáchtáil:\n"
+"\n"
+" git commit %s\n"
+"\n"
+"Sa dá chás, nuair a bheidh tú déanta, lean ar aghaidh leis:\n"
+"\n"
+" git rebase --continue\n"
+
+#: sequencer.c
+msgid "'prepare-commit-msg' hook failed"
+msgstr "Theip ar chroí 'prepar-chommit-msg'"
+
+#: sequencer.c
+msgid ""
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly. Run the\n"
+"following command and follow the instructions in your editor to edit\n"
+"your configuration file:\n"
+"\n"
+" git config --global --edit\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+" git commit --amend --reset-author\n"
+msgstr ""
+"Cumraíodh d'ainm agus do sheoladh ríomhphoist bunaithe go huath\n"
+"ar d'ainm úsáideora agus d'ainm óstach. Seiceáil le do thoil go bhfuil siad "
+"cruinn.\n"
+"Is féidir leat an teachtaireacht seo a chosc trí iad a shocrú go sainráite. "
+"Rith an\n"
+"ag leanúint an t-ordú agus lean na treoracha i d'eagarthóir chun a chur in "
+"eagar\n"
+"do chomhad cumraíochta:\n"
+"\n"
+" git config --global --edit\n"
+"\n"
+"Tar éis duit é seo a dhéanamh, féadfaidh tú an aitheantas a úsáidtear don "
+"tiomantas seo a shocrú le:\n"
+"\n"
+" git commit --amend --reset-author\n"
+
+#: sequencer.c
+msgid ""
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly:\n"
+"\n"
+" git config --global user.name \"Your Name\"\n"
+" git config --global user.email you@example.com\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+" git commit --amend --reset-author\n"
+msgstr ""
+"Cumraíodh d'ainm agus do sheoladh ríomhphoist bunaithe go huath\n"
+"ar d'ainm úsáideora agus d'ainm óstach. Seiceáil le do thoil go bhfuil siad "
+"cruinn.\n"
+"Is féidir leat an teachtaireacht seo a chosc trí iad a shocrú go sainráite:\n"
+"\n"
+" git config --global user.name \"Your Name\"\n"
+" git config --global user.email you@example.com\n"
+"\n"
+"Tar éis duit é seo a dhéanamh, féadfaidh tú an aitheantas a úsáidtear don "
+"tiomantas seo a shocrú le:\n"
+"\n"
+" git commit --amend --reset-author\n"
+
+#: sequencer.c
+msgid "couldn't look up newly created commit"
+msgstr "ní fhéadfadh sé gealltanas nua-chruthaithe a fheiceáil"
+
+#: sequencer.c
+msgid "could not parse newly created commit"
+msgstr "ní fhéadfadh sé gealltanas nua-chruthaithe a pháirsí"
+
+#: sequencer.c
+msgid "unable to resolve HEAD after creating commit"
+msgstr "in ann HEAD a réiteach tar éis tiomantas a chruthú"
+
+#: sequencer.c
+msgid "detached HEAD"
+msgstr "scoite CEANN"
+
+#: sequencer.c
+msgid " (root-commit)"
+msgstr " (fréamh-thiomantas)"
+
+#: sequencer.c
+msgid "could not parse HEAD"
+msgstr "ní fhéadfaí HEAD a pháirseáil"
+
+#: sequencer.c
+#, c-format
+msgid "HEAD %s is not a commit!"
+msgstr "Ní gealltanas é HEAD %s!"
+
+#: sequencer.c
+msgid "unable to parse commit author"
+msgstr "ní féidir leis an údar tiomanta a pharsáil"
+
+#: sequencer.c
+#, c-format
+msgid "unable to read commit message from '%s'"
+msgstr "nach féidir teachtaireacht tiomanta ó '%s' a léamh"
+
+#: sequencer.c
+#, c-format
+msgid "invalid author identity '%s'"
+msgstr "aitheantas údair neamhbhailí '%s'"
+
+#: sequencer.c
+msgid "corrupt author: missing date information"
+msgstr "údar truaillithe: faisnéis dáta in easnamh"
+
+#: sequencer.c
+#, c-format
+msgid "could not update %s"
+msgstr "ní fhéadfaí %s a nuashonrú"
+
+#: sequencer.c
+#, c-format
+msgid "could not parse parent commit %s"
+msgstr "ní fhéadfaí tuismitheoir tiomantas %s a pharsáil"
+
+#: sequencer.c
+#, c-format
+msgid "unknown command: %d"
+msgstr "ordú anaithnid: %d"
+
+#: sequencer.c
+msgid "This is the 1st commit message:"
+msgstr "Seo an chéad teachtaireacht tiomanta:"
+
+#: sequencer.c
+#, c-format
+msgid "This is the commit message #%d:"
+msgstr "Seo an teachtaireacht tiomanta #%d:"
+
+#: sequencer.c
+msgid "The 1st commit message will be skipped:"
+msgstr "Scaipfear an chéad teachtaireacht tiomanta:"
+
+#: sequencer.c
+#, c-format
+msgid "The commit message #%d will be skipped:"
+msgstr "Scaipfear an teachtaireacht tiomanta #%d:"
+
+#: sequencer.c
+#, c-format
+msgid "This is a combination of %d commits."
+msgstr "Is meascán de ghealltanais %d é seo."
+
+#: sequencer.c
+#, c-format
+msgid "cannot write '%s'"
+msgstr "ní féidir '%s' a scríobh"
+
+#: sequencer.c
+msgid "need a HEAD to fixup"
+msgstr "teastaíonn CEAD ag teastáil chun socrú"
+
+#: sequencer.c
+msgid "could not read HEAD"
+msgstr "ní raibh in ann HEAD a léamh"
+
+#: sequencer.c
+msgid "could not read HEAD's commit message"
+msgstr "ní raibh sé in ann teachtaireacht tiomanta HEAD a léamh"
+
+#: sequencer.c
+#, c-format
+msgid "could not read commit message of %s"
+msgstr "ní raibh sé in ann teachtaireacht tiomanta %s a léamh"
+
+#: sequencer.c
+msgid "your index file is unmerged."
+msgstr "tá do chomhad innéacs neamh-chumasaithe."
+
+#: sequencer.c
+msgid "cannot fixup root commit"
+msgstr "ní féidir le déanamh fréimhe a shocrú"
+
+#: sequencer.c
+#, c-format
+msgid "commit %s is a merge but no -m option was given."
+msgstr "cumasc é tiomnú %s ach níor tugadh rogha -m."
+
+#: sequencer.c
+#, c-format
+msgid "commit %s does not have parent %d"
+msgstr "commiteáil %s níl tuismitheoir %d aige"
+
+#: sequencer.c
+#, c-format
+msgid "cannot get commit message for %s"
+msgstr "ní féidir teachtaireacht tiomanta a fháil do %s"
+
+#. TRANSLATORS: The first %s will be a "todo" command like
+#. "revert" or "pick", the second %s a SHA1.
+#: sequencer.c
+#, c-format
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s: ní féidir le tuismitheoir tiomantas %s a pharsáil"
+
+#: sequencer.c
+#, c-format
+msgid "could not revert %s... %s"
+msgstr "ní raibh ann %s a chur ar ais... %s"
+
+#: sequencer.c
+#, c-format
+msgid "could not apply %s... %s"
+msgstr "ní fhéadfaí %s a chur i bhfeidhm... %s"
+
+#: sequencer.c
+#, c-format
+msgid "dropping %s %s -- patch contents already upstream\n"
+msgstr "scaoileadh %s %s -- ábhar paiste suas an sruth cheana féin\n"
+
+#: sequencer.c
+#, c-format
+msgid "git %s: failed to read the index"
+msgstr "git %s: theip ar an t-innéacs a léamh"
+
+#: sequencer.c
+#, c-format
+msgid "git %s: failed to refresh the index"
+msgstr "git %s: theip ar an t-innéacs a athnuachan"
+
+#: sequencer.c
+#, c-format
+msgid "'%s' is not a valid label"
+msgstr "Ní lipéad bailí é '%s'"
+
+#: sequencer.c
+#, c-format
+msgid "'%s' is not a valid refname"
+msgstr "Ní athainm bailí é '%s'"
+
+#: sequencer.c
+#, c-format
+msgid "update-ref requires a fully qualified refname e.g. refs/heads/%s"
+msgstr "teastaíonn athainm iomlán cáilithe uasghabháilte e.g. refs/heads/%s"
+
+#: sequencer.c
+#, c-format
+msgid "'%s' does not accept merge commits"
+msgstr "Ní ghlacann '%s' le gealltanais cumaisc"
+
+#. TRANSLATORS: 'pick' and 'merge -C' should not be
+#. translated.
+#.
+#: sequencer.c
+msgid ""
+"'pick' does not take a merge commit. If you wanted to\n"
+"replay the merge, use 'merge -C' on the commit."
+msgstr ""
+"Ní ghlacann 'pick' tiomantas cumaisc. Dá mbeadh tú ag iarraidh\n"
+"athsheinn an cumaisc, bain úsáid as 'cumaisc -C' ar an tiomantas."
+
+#. TRANSLATORS: 'reword' and 'merge -c' should not be
+#. translated.
+#.
+#: sequencer.c
+msgid ""
+"'reword' does not take a merge commit. If you wanted to\n"
+"replay the merge and reword the commit message, use\n"
+"'merge -c' on the commit"
+msgstr ""
+"Ní ghlacann 'athfhoil' tiomantas cumaisc. Dá mbeadh tú ag iarraidh\n"
+"athsheinn an teachtaireacht thiomanta a chumasc agus athfhocal, bain úsáid "
+"as\n"
+"'cumaisc -c' ar an tiomantas"
+
+#. TRANSLATORS: 'edit', 'merge -C' and 'break' should
+#. not be translated.
+#.
+#: sequencer.c
+msgid ""
+"'edit' does not take a merge commit. If you wanted to\n"
+"replay the merge, use 'merge -C' on the commit, and then\n"
+"'break' to give the control back to you so that you can\n"
+"do 'git commit --amend && git rebase --continue'."
+msgstr ""
+"Ní ghlacann 'eagarthó' tiomantas cumaisc. Dá mbeadh tú ag iarraidh\n"
+"athsheinn an cumaisc, bain úsáid as 'cumaisc -C' ar an tiomantas, agus "
+"ansin\n"
+"'brise' chun an rialú a thabhairt ar ais duit ionas gur féidir leat\n"
+"déan 'git commit --amend && git rebase --continue'."
+
+#: sequencer.c
+msgid "cannot squash merge commit into another commit"
+msgstr "ní féidir le squash tiomantas a chumasc i dtiomantas eile"
+
+#: sequencer.c
+#, c-format
+msgid "invalid command '%.*s'"
+msgstr "ordú neamhbhailí '%.*s"
+
+#: sequencer.c
+#, c-format
+msgid "missing arguments for %s"
+msgstr "argóintí atá in easnamh do %s"
+
+#: sequencer.c
+#, c-format
+msgid "could not parse '%s'"
+msgstr "ní fhéadfaí '%s' a pháirseáil"
+
+#: sequencer.c
+#, c-format
+msgid "invalid line %d: %.*s"
+msgstr "líne neamhbhailí %d: %.*s"
+
+#: sequencer.c
+#, c-format
+msgid "cannot '%s' without a previous commit"
+msgstr "ní féidir '%s' gan gealltanas roimhe seo"
+
+#: sequencer.c
+msgid "cancelling a cherry picking in progress"
+msgstr "piocadh silíní atá ar siúl a chur ar ceal"
+
+#: sequencer.c
+msgid "cancelling a revert in progress"
+msgstr "filleadh atá ar siúl a chealú"
+
+#: sequencer.c
+msgid "please fix this using 'git rebase --edit-todo'."
+msgstr ""
+"déan é seo a shocrú le do thoil ag baint úsáide as 'git rebase --edit-todo'."
+
+#: sequencer.c
+#, c-format
+msgid "unusable instruction sheet: '%s'"
+msgstr "bileog treoracha neamhúsáidte: '%s'"
+
+#: sequencer.c
+msgid "no commits parsed."
+msgstr "níl aon gealltanais paráilsithe."
+
+#: sequencer.c
+msgid "cannot cherry-pick during a revert."
+msgstr "ní féidir le silíní a phiocadh le linn filleadh."
+
+#: sequencer.c
+msgid "cannot revert during a cherry-pick."
+msgstr "ní féidir filleadh ar ais le linn pioc silíní."
+
+#: sequencer.c
+msgid "unusable squash-onto"
+msgstr "squash-on neamhúsáidte"
+
+#: sequencer.c
+#, c-format
+msgid "malformed options sheet: '%s'"
+msgstr "bileog roghanna mífhoirmithe: '%s'"
+
+#: sequencer.c
+msgid "empty commit set passed"
+msgstr "rith tacar tiomanta folamh"
+
+#: sequencer.c
+msgid "revert is already in progress"
+msgstr "tá filleadh ar siúl cheana féin"
+
+#: sequencer.c
+#, c-format
+msgid "try \"git revert (--continue | %s--abort | --quit)\""
+msgstr "bain triail as “git revert (--continue | %s--abort | --quit)”"
+
+#: sequencer.c
+msgid "cherry-pick is already in progress"
+msgstr "tá pioc silíní ar siúl cheana féin"
+
+#: sequencer.c
+#, c-format
+msgid "try \"git cherry-pick (--continue | %s--abort | --quit)\""
+msgstr "bain triail as “git cherry-pick (--continue | %s--abort | --quit)”"
+
+#: sequencer.c
+#, c-format
+msgid "could not create sequencer directory '%s'"
+msgstr "ní fhéadfaí eolaire seicheamhach '%s' a chruthú"
+
+#: sequencer.c
+msgid "no cherry-pick or revert in progress"
+msgstr "níl aon phiocadh silíní nó filleadh ar siúl ar siúl"
+
+#: sequencer.c
+msgid "cannot resolve HEAD"
+msgstr "ní féidir le HEAD a réiteach"
+
+#: sequencer.c
+msgid "cannot abort from a branch yet to be born"
+msgstr "ní féidir éirí as brainse nach rugadh fós"
+
+#: sequencer.c
+#, c-format
+msgid "cannot read '%s': %s"
+msgstr "ní féidir '%s' a léamh: %s"
+
+#: sequencer.c
+msgid "unexpected end of file"
+msgstr "deireadh gan choinne an chomhaid"
+
+#: sequencer.c
+#, c-format
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr "tá comhad HEAD réamh-phiocadh silíní stóráilte '%s' truaillithe"
+
+#: sequencer.c
+msgid "You seem to have moved HEAD. Not rewinding, check your HEAD!"
+msgstr "Is cosúil gur bhogadh tú CEANN. Gan athfhillte, seiceáil do CHEANN!"
+
+#: sequencer.c
+msgid "no revert in progress"
+msgstr "níl aon fhilleadh ar siúl"
+
+#: sequencer.c
+msgid "no cherry-pick in progress"
+msgstr "níl aon phiocadh silíní ar siúl"
+
+#: sequencer.c
+msgid "failed to skip the commit"
+msgstr "theip ar an gealltanas a scipeáil"
+
+#: sequencer.c
+msgid "there is nothing to skip"
+msgstr "níl aon rud le scipeáil"
+
+#: sequencer.c
+#, c-format
+msgid ""
+"have you committed already?\n"
+"try \"git %s --continue\""
+msgstr ""
+"an ndearna tú tiomanta cheana féin?\n"
+"bain triail as “git %s --continue”"
+
+#: sequencer.c
+msgid "cannot read HEAD"
+msgstr "ní féidir le HEAD a léamh"
+
+#: sequencer.c
+msgid "could not write commit message file"
+msgstr "ní raibh sé in ann comhad teachtaireachta tiomanta a"
+
+#: sequencer.c
+#, c-format
+msgid ""
+"You can amend the commit now, with\n"
+"\n"
+" git commit --amend %s\n"
+"\n"
+"Once you are satisfied with your changes, run\n"
+"\n"
+" git rebase --continue\n"
+msgstr ""
+"Féadfaidh tú an gealltanas a leasú anois, le\n"
+"\n"
+" git commit --amend %s\n"
+"\n"
+"Nuair a bheidh tú sásta le d'athruithe, rith\n"
+"\n"
+" git rebase --continue\n"
+
+#: sequencer.c
+#, c-format
+msgid "Could not apply %s... %.*s"
+msgstr "Níorbh fhéidir iarratas a dhéanamh %s... %.*s"
+
+#: sequencer.c
+#, c-format
+msgid "Could not merge %.*s"
+msgstr "Níorbh fhéidir cumasc %.*s"
+
+#: sequencer.c
+#, c-format
+msgid "Executing: %s\n"
+msgstr "Forghníomhú: %s\n"
+
+#: sequencer.c
+#, c-format
+msgid ""
+"execution failed: %s\n"
+"%sYou can fix the problem, and then run\n"
+"\n"
+" git rebase --continue\n"
+"\n"
+msgstr ""
+"theip ar fhorghníomhú: %s\n"
+"%sIs féidir leat an fhadhb a shocrú, agus ansin rith\n"
+"\n"
+" git rebase --continue\n"
+
+#: sequencer.c
+msgid "and made changes to the index and/or the working tree.\n"
+msgstr "agus rinne siad athruithe ar an innéacs agus/nó ar an gcrann oibre.\n"
+
+#: sequencer.c
+#, c-format
+msgid ""
+"execution succeeded: %s\n"
+"but left changes to the index and/or the working tree.\n"
+"Commit or stash your changes, and then run\n"
+"\n"
+" git rebase --continue\n"
+"\n"
+msgstr ""
+"d'éirigh leis an bhforghníomhú: %s\n"
+"ach d'fhág sé athruithe ar an innéacs agus/nó ar an gcrann oibre.\n"
+"Déan do chuid athruithe a dhéanamh nó a stóráil, agus ansin rith\n"
+"\n"
+" git rebase --continue\n"
+"\n"
+
+#: sequencer.c
+#, c-format
+msgid "illegal label name: '%.*s'"
+msgstr "ainm lipéid neamhdhleathach: '%.*s'"
+
+#: sequencer.c
+#, c-format
+msgid "could not resolve '%s'"
+msgstr "ní fhéadfaí '%s' a réiteach"
+
+#: sequencer.c
+msgid "writing fake root commit"
+msgstr "tiomantas fréamh bréige a scríobh"
+
+#: sequencer.c
+msgid "writing squash-onto"
+msgstr "scríobh squash-on"
+
+#: sequencer.c
+msgid "cannot merge without a current revision"
+msgstr "ní féidir a chumasc gan athbhreithniú reatha"
+
+#: sequencer.c
+#, c-format
+msgid "unable to parse '%.*s'"
+msgstr "nach féidir le parsáil a dhéanamh '%.*s"
+
+#: sequencer.c
+#, c-format
+msgid "nothing to merge: '%.*s'"
+msgstr "níl aon rud le cumasc: '%.*s'"
+
+#: sequencer.c
+msgid "octopus merge cannot be executed on top of a [new root]"
+msgstr "ní féidir cumaisc ochtair a fhorghníomhú ar bharr [fréamh nua]"
+
+#: sequencer.c
+#, c-format
+msgid "could not get commit message of '%s'"
+msgstr "ní fhéadfaí teachtaireacht tiomanta de '%s' a fháil"
+
+#: sequencer.c
+#, c-format
+msgid "could not even attempt to merge '%.*s'"
+msgstr "níorbh fhéidir fiú iarracht a dhéanamh '%.*s' a chumasc"
+
+#: sequencer.c
+msgid "merge: Unable to write new index file"
+msgstr "cumaisc: Ní féidir comhad innéacs nua a scríobh"
+
+#: sequencer.c
+#, c-format
+msgid ""
+"another 'rebase' process appears to be running; '%s.lock' already exists"
+msgstr ""
+"is cosúil go bhfuil próiseas 'rebase' eile ag rith; tá '%s.lock' ann cheana "
+"féin"
+
+#: sequencer.c
+#, c-format
+msgid ""
+"Updated the following refs with %s:\n"
+"%s"
+msgstr ""
+"Nuashonraíodh na hifríochtaí seo a leanas le %s:\n"
+"%s"
+
+#: sequencer.c
+#, c-format
+msgid ""
+"Failed to update the following refs with %s:\n"
+"%s"
+msgstr ""
+"Theip ar na hiarratais seo a leanas a nuashonrú le %s:\n"
+"%s"
+
+#: sequencer.c
+msgid "Cannot autostash"
+msgstr "Ní féidir uathoibriú"
+
+#: sequencer.c
+#, c-format
+msgid "Unexpected stash response: '%s'"
+msgstr "Freagra stash gan choinne: '%s'"
+
+#: sequencer.c
+#, c-format
+msgid "Could not create directory for '%s'"
+msgstr "Ní fhéadfaí eolaire a chruthú do '%s'"
+
+#: sequencer.c
+#, c-format
+msgid "Created autostash: %s\n"
+msgstr "Autostash cruthaithe: %s\n"
+
+#: sequencer.c
+msgid "could not reset --hard"
+msgstr "ní fhéadfaí athshocrú --hard"
+
+#: sequencer.c
+#, c-format
+msgid "Applied autostash.\n"
+msgstr "Autostash feidhmithe.\n"
+
+#: sequencer.c
+#, c-format
+msgid "cannot store %s"
+msgstr "ní féidir %s a stóráil"
+
+#: sequencer.c
+#, c-format
+msgid ""
+"%s\n"
+"Your changes are safe in the stash.\n"
+"You can run \"git stash pop\" or \"git stash drop\" at any time.\n"
+msgstr ""
+"%s\n"
+"Tá do chuid athruithe sábháilte sa stóras.\n"
+"Is féidir leat \"git stash pop\" nó \"git stash drop\" a rith ag am ar "
+"bith.\n"
+
+#: sequencer.c
+msgid "Applying autostash resulted in conflicts."
+msgstr "Bhí coinbhleachtaí mar thoradh ar autostash i bhfeidhm."
+
+#: sequencer.c
+msgid "Autostash exists; creating a new stash entry."
+msgstr "Tá Autostash ann; ag cruthú iontráil nua stash."
+
+#: sequencer.c
+msgid "autostash reference is a symref"
+msgstr "is é tagairt autostash ina symref"
+
+#: sequencer.c
+msgid "could not detach HEAD"
+msgstr "ní fhéadfadh CEAD a dhícheangal"
+
+#: sequencer.c
+#, c-format
+msgid "Stopped at HEAD\n"
+msgstr "Stopadh ag HEAD\n"
+
+#: sequencer.c
+#, c-format
+msgid "Stopped at %s\n"
+msgstr "Stop ag %s\n"
+
+#: sequencer.c
+#, c-format
+msgid ""
+"Could not execute the todo command\n"
+"\n"
+" %.*s\n"
+"It has been rescheduled; To edit the command before continuing, please\n"
+"edit the todo list first:\n"
+"\n"
+" git rebase --edit-todo\n"
+" git rebase --continue\n"
+msgstr ""
+"Ní fhéadfaí an t-ordú todo a fhorghníomhú\n"
+"\n"
+" %.*s\n"
+"Tá sé athsceidealaithe; Chun an t-ordú a chur in eagar sula leanann tú ar "
+"aghaidh, le do thoil\n"
+"cuir an liosta todo in eagar ar dtús:\n"
+"\n"
+" git rebase --edit-todo\n"
+" git rebase --continue\n"
+
+#: sequencer.c
+#, c-format
+msgid "Stopped at %s... %.*s\n"
+msgstr "Stopadh ag %s... %.*s\n"
+
+#: sequencer.c
+#, c-format
+msgid "Rebasing (%d/%d)%s"
+msgstr "Ag athbhunú (%d/%d) %s"
+
+#: sequencer.c
+#, c-format
+msgid "unknown command %d"
+msgstr "ordú anaithnid %d"
+
+#: sequencer.c
+msgid "could not read orig-head"
+msgstr "ní raibh sé in ann ceann orig-head a léamh"
+
+#: sequencer.c
+msgid "could not read 'onto'"
+msgstr "ní fhéadfaí 'ar' léamh"
+
+#: sequencer.c
+#, c-format
+msgid "could not update HEAD to %s"
+msgstr "ní fhéadfaí HEAD a nuashonrú go %s"
+
+#: sequencer.c
+#, c-format
+msgid "Successfully rebased and updated %s.\n"
+msgstr "Athbhunaithe agus nuashonraithe %s go rathúil.\n"
+
+#: sequencer.c
+msgid "cannot rebase: You have unstaged changes."
+msgstr "ní féidir athbhunú: Tá athruithe gan stáitse agat."
+
+#: sequencer.c
+msgid "cannot amend non-existing commit"
+msgstr "ní féidir gealltanas nach bhfuil ann a leasú"
+
+#: sequencer.c
+#, c-format
+msgid "invalid file: '%s'"
+msgstr "comhad neamhbhailí: '%s'"
+
+#: sequencer.c
+#, c-format
+msgid "invalid contents: '%s'"
+msgstr "ábhar neamhbhailí: '%s'"
+
+#: sequencer.c
+msgid ""
+"\n"
+"You have uncommitted changes in your working tree. Please, commit them\n"
+"first and then run 'git rebase --continue' again."
+msgstr ""
+"\n"
+"Tá athruithe neamhthiomanta agat i do chrann oibre. Le do thoil, tiomnaigh "
+"iad\n"
+"ar dtús agus ansin rith 'git rebase --continue' arís."
+
+#: sequencer.c
+#, c-format
+msgid "could not write file: '%s'"
+msgstr "ní fhéadfaí comhad a scríobh: '%s'"
+
+#: sequencer.c
+msgid "could not remove CHERRY_PICK_HEAD"
+msgstr "ní fhéadfaí CHERRY_PICK_HEAD a bhaint"
+
+#: sequencer.c
+msgid "could not commit staged changes."
+msgstr "ní fhéadfadh athruithe stáitse a dhéanamh."
+
+#: sequencer.c
+#, c-format
+msgid "%s: can't cherry-pick a %s"
+msgstr "%s: ní féidir %s a roghnú silíní"
+
+#: sequencer.c
+#, c-format
+msgid "%s: bad revision"
+msgstr "%s: droch-athbhreithniú"
+
+#: sequencer.c
+msgid "can't revert as initial commit"
+msgstr "ní féidir teacht ar ais mar thiomantas tosaigh"
+
+#: sequencer.c
+#, c-format
+msgid "skipped previously applied commit %s"
+msgstr "scipeáil tiomantas %s a cuireadh i bhfeidhm"
+
+#: sequencer.c
+msgid "use --reapply-cherry-picks to include skipped commits"
+msgstr ""
+"bain úsáid as --reapply-cherry-picks chun gealltanais scipeáilte a áireamh"
+
+#: sequencer.c
+msgid "make_script: unhandled options"
+msgstr "make_script: roghanna neamh-láimhseáilte"
+
+#: sequencer.c
+msgid "make_script: error preparing revisions"
+msgstr "make_script: earráid ag ullmhú athbhreithnithe"
+
+#: sequencer.c
+msgid "nothing to do"
+msgstr "aon rud le déanamh"
+
+#: sequencer.c
+msgid "could not skip unnecessary pick commands"
+msgstr "ní fhéadfadh orduithe pioc gan ghá a scipeáil"
+
+#: sequencer.c
+msgid "the script was already rearranged."
+msgstr "athshocraíodh an script cheana féin."
+
+#: sequencer.c
+#, c-format
+msgid "update-refs file at '%s' is invalid"
+msgstr "tá comhad update-refs ag '%s' neamhbhailí"
+
+#: setup.c
+#, c-format
+msgid "'%s' is outside repository at '%s'"
+msgstr "Tá '%s' an stór lasmuigh ag '%s'"
+
+#: setup.c
+#, c-format
+msgid ""
+"%s: no such path in the working tree.\n"
+"Use 'git <command> -- <path>...' to specify paths that do not exist locally."
+msgstr ""
+"%s: níl aon chosán den sórt sin sa chrann oibre.\n"
+"Úsáid 'git <command>--<path>... 'chun cosáin nach bhfuil ann go háitiúil a "
+"shonrú."
+
+#: setup.c
+#, c-format
+msgid ""
+"ambiguous argument '%s': unknown revision or path not in the working tree.\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"argóint débhríoch '%s': athbhreithniú anaithnid nó cosán nach bhfuil sa "
+"chrann oibre.\n"
+"Úsáid '--' chun cosáin a scaradh ó athbhreithnithe, mar seo:\n"
+"'git <command>[<revision>...] -- [<file>...] '"
+
+#: setup.c
+#, c-format
+msgid "option '%s' must come before non-option arguments"
+msgstr "caithfidh rogha '%s' teacht roimh argóintí neamh-rogha"
+
+#: setup.c
+#, c-format
+msgid ""
+"ambiguous argument '%s': both revision and filename\n"
+"Use '--' to separate paths from revisions, like this:\n"
+"'git <command> [<revision>...] -- [<file>...]'"
+msgstr ""
+"argóint débhríoch '%s': athbhreithniú agus ainm comhaid araon\n"
+"Úsáid '--' chun cosáin a scaradh ó athbhreithnithe, mar seo:\n"
+"'git <command>[<revision>...] -- [<file>...] '"
+
+#: setup.c
+msgid "unable to set up work tree using invalid config"
+msgstr ""
+"in ann crann oibre a chur ar bun ag baint úsáide as cumraíocht nebhailí"
+
+#: setup.c
+#, c-format
+msgid "'%s' already specified as '%s'"
+msgstr "'%s' sonraithe cheana féin mar '%s'"
+
+#: setup.c
+#, c-format
+msgid "Expected git repo version <= %d, found %d"
+msgstr "Leagan repo git ag súil leis <= %d, aimsíodh %d"
+
+#: setup.c
+msgid "unknown repository extension found:"
+msgid_plural "unknown repository extensions found:"
+msgstr[0] "síneadh stórais anaithnid aimsithe:"
+msgstr[1] "síntí stórais anaithnide aimsithe:"
+msgstr[2] "síntí stórais anaithnide aimsithe:"
+
+#: setup.c
+msgid "repo version is 0, but v1-only extension found:"
+msgid_plural "repo version is 0, but v1-only extensions found:"
+msgstr[0] "is é leagan repo 0, ach fuarthas síneadh v1 amháin:"
+msgstr[1] "is é 0 an leagan den stór, ach fuarthas síntí v1 amháin:"
+msgstr[2] "is é 0 an leagan den stór, ach fuarthas síntí v1 amháin:"
+
+#: setup.c
+#, c-format
+msgid "error opening '%s'"
+msgstr "earráid ag oscailt '%s'"
+
+#: setup.c
+#, c-format
+msgid "too large to be a .git file: '%s'"
+msgstr "ró-mhór le bheith ina chomhad .git: '%s'"
+
+#: setup.c
+#, c-format
+msgid "error reading %s"
+msgstr "earráid ag léamh %s"
+
+#: setup.c
+#, c-format
+msgid "invalid gitfile format: %s"
+msgstr "formáid gitfile neamhbhailí: %s"
+
+#: setup.c
+#, c-format
+msgid "no path in gitfile: %s"
+msgstr "gan aon chosán i gitfile: %s"
+
+#: setup.c
+#, c-format
+msgid "not a git repository: %s"
+msgstr "ní stór git: %s"
+
+#: setup.c
+#, c-format
+msgid "'$%s' too big"
+msgstr "'$%s' ró-mhór"
+
+#: setup.c
+#, c-format
+msgid "not a git repository: '%s'"
+msgstr "ní stór git: '%s'"
+
+#: setup.c
+#, c-format
+msgid "cannot chdir to '%s'"
+msgstr "ní féidir teacht ar '%s'"
+
+#: setup.c
+msgid "cannot come back to cwd"
+msgstr "ní féidir teacht ar ais chuig cwd"
+
+#: setup.c
+#, c-format
+msgid "failed to stat '%*s%s%s'"
+msgstr "theip ar '%*s%s%s' a thaispeáint"
+
+#: setup.c
+#, c-format
+msgid "safe.directory '%s' not absolute"
+msgstr "níl safe.directory '%s' iomlán"
+
+#: setup.c
+#, c-format
+msgid ""
+"detected dubious ownership in repository at '%s'\n"
+"%sTo add an exception for this directory, call:\n"
+"\n"
+"\tgit config --global --add safe.directory %s"
+msgstr ""
+"braitheadh ​​úinéireacht amhrasach sa stórlann ag '%s'\n"
+"%sChun eisceacht a chur leis an eolaire seo, glaoigh ar:\n"
+"\n"
+"git config --global --add safe.directory %s"
+
+#: setup.c
+msgid "Unable to read current working directory"
+msgstr "Ní féidir eolaire oibre reatha a léamh"
+
+#: setup.c
+#, c-format
+msgid "cannot change to '%s'"
+msgstr "ní féidir athrú go '%s'"
+
+#: setup.c
+#, c-format
+msgid "not a git repository (or any of the parent directories): %s"
+msgstr "ní stór git (nó aon cheann de na tuismitheoireolairí): %s"
+
+#: setup.c
+#, c-format
+msgid ""
+"not a git repository (or any parent up to mount point %s)\n"
+"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
+msgstr ""
+"ní stór git (nó aon thuismitheoir suas go dtí an pointe gléasta %s)\n"
+"Stopadh ag teorainn an chórais chomhaid (níl GIT_DISCOVERY_ACROSS_FILESYSTEM "
+"socraithe)."
+
+#: setup.c
+#, c-format
+msgid "cannot use bare repository '%s' (safe.bareRepository is '%s')"
+msgstr "ní féidir stór lom '%s' a úsáid (safe.bareRepository is '%s')"
+
+#: setup.c
+#, c-format
+msgid ""
+"problem with core.sharedRepository filemode value (0%.3o).\n"
+"The owner of files must always have read and write permissions."
+msgstr ""
+"fadhb le luach mód comhaid core.sharedRepository (0%.3o).\n"
+"Ní mór ceadanna léite agus scríbhneoireachta a bheith ag úinéir na gcomhad i "
+"gcónaí."
+
+#: setup.c
+msgid "fork failed"
+msgstr "theip ar fhorc"
+
+#: setup.c
+msgid "setsid failed"
+msgstr "theip ar setsid"
+
+#: setup.c
+#, c-format
+msgid "cannot stat template '%s'"
+msgstr "ní féidir teacht ar theimpléad '%s'"
+
+#: setup.c
+#, c-format
+msgid "cannot opendir '%s'"
+msgstr "ní féidir '%s' a oscailt"
+
+#: setup.c
+#, c-format
+msgid "cannot readlink '%s'"
+msgstr "ní féidir nasc '%s' a léamh"
+
+#: setup.c
+#, c-format
+msgid "cannot symlink '%s' '%s'"
+msgstr "ní féidir '%s' '' %s 'a nascadh"
+
+#: setup.c
+#, c-format
+msgid "cannot copy '%s' to '%s'"
+msgstr "ní féidir '%s' a chóipeáil chuig '%s'"
+
+#: setup.c
+#, c-format
+msgid "ignoring template %s"
+msgstr "ag neamhaird den teimpléad %s"
+
+#: setup.c
+#, c-format
+msgid "templates not found in %s"
+msgstr "teimpléid gan aimsiú i %s"
+
+#: setup.c
+#, c-format
+msgid "not copying templates from '%s': %s"
+msgstr "gan teimpléid a chóipeáil ó '%s': %s"
+
+#: setup.c
+#, c-format
+msgid "invalid initial branch name: '%s'"
+msgstr "ainm brainse tosaigh neamhbhailí: '%s'"
+
+#: setup.c
+#, c-format
+msgid "re-init: ignored --initial-branch=%s"
+msgstr "ath-init: neamhaird a dhéanamh ar --initial-branch=%s"
+
+#: setup.c
+#, c-format
+msgid "unable to handle file type %d"
+msgstr "in ann cineál comhad %d a láimhseáil"
+
+#: setup.c
+#, c-format
+msgid "unable to move %s to %s"
+msgstr "nach féidir %s a bhogadh go %s"
+
+#: setup.c
+msgid "attempt to reinitialize repository with different hash"
+msgstr "iarracht a dhéanamh stór a aththionsú le hash difriúil"
+
+#: setup.c
+msgid ""
+"attempt to reinitialize repository with different reference storage format"
+msgstr ""
+"iarracht a dhéanamh stór a aththionsú le formáid stórála tagartha difriúil"
+
+#: setup.c
+#, c-format
+msgid "%s already exists"
+msgstr "Tá %s ann cheana féin"
+
+#: setup.c
+#, c-format
+msgid "Reinitialized existing shared Git repository in %s%s\n"
+msgstr "Stórlann Git roinnte atá ann cheana a athsheoladh i %s%s\n"
+
+#: setup.c
+#, c-format
+msgid "Reinitialized existing Git repository in %s%s\n"
+msgstr "Aththionscnaíodh stór Git atá ann cheana i %s%s\n"
+
+#: setup.c
+#, c-format
+msgid "Initialized empty shared Git repository in %s%s\n"
+msgstr "Stórlann Git roinnte folamh tosaithe i %s%s\n"
+
+#: setup.c
+#, c-format
+msgid "Initialized empty Git repository in %s%s\n"
+msgstr "Stórlann Git folamh tosaithe i %s%s\n"
+
+#: sparse-index.c
+#, c-format
+msgid "index entry is a directory, but not sparse (%08x)"
+msgstr "is eolaire é iontráil innéacs, ach ní neamhchoitianta (%08x)"
+
+#: split-index.c
+msgid "cannot use split index with a sparse index"
+msgstr "ní féidir innéacs scoilte a úsáid le hinnéacs neamhchoitianta"
+
+#. TRANSLATORS: The first %s is a command like "ls-tree".
+#: strbuf.c
+#, c-format
+msgid "bad %s format: element '%s' does not start with '('"
+msgstr "fhormáid olc %s: ní thosaíonn eilimint '%s' le '('"
+
+#. TRANSLATORS: The first %s is a command like "ls-tree".
+#: strbuf.c
+#, c-format
+msgid "bad %s format: element '%s' does not end in ')'"
+msgstr "droch-fhormáid %s: ní chríochnaíonn eilimint '%s' i ')'"
+
+#. TRANSLATORS: %s is a command like "ls-tree".
+#: strbuf.c
+#, c-format
+msgid "bad %s format: %%%.*s"
+msgstr "fhormáid %s olc: %%%.*s"
+
+#. TRANSLATORS: IEC 80000-13:2008 gibibyte
+#: strbuf.c
+#, c-format
+msgid "%u.%2.2u GiB"
+msgstr "%u.%2.2u GiB"
+
+#. TRANSLATORS: IEC 80000-13:2008 gibibyte/second
+#: strbuf.c
+#, c-format
+msgid "%u.%2.2u GiB/s"
+msgstr "%u.%2.2u GiB/s"
+
+#. TRANSLATORS: IEC 80000-13:2008 mebibyte
+#: strbuf.c
+#, c-format
+msgid "%u.%2.2u MiB"
+msgstr "%u.%2.2u MiB"
+
+#. TRANSLATORS: IEC 80000-13:2008 mebibyte/second
+#: strbuf.c
+#, c-format
+msgid "%u.%2.2u MiB/s"
+msgstr "%u.%2.2u MiB/s"
+
+#. TRANSLATORS: IEC 80000-13:2008 kibibyte
+#: strbuf.c
+#, c-format
+msgid "%u.%2.2u KiB"
+msgstr "%u.%2.2u KiB"
+
+#. TRANSLATORS: IEC 80000-13:2008 kibibyte/second
+#: strbuf.c
+#, c-format
+msgid "%u.%2.2u KiB/s"
+msgstr "%u.%2.2u KiB/s"
+
+#. TRANSLATORS: IEC 80000-13:2008 byte
+#: strbuf.c
+#, c-format
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] "%u beart"
+msgstr[1] "%u beart"
+msgstr[2] "%u beart"
+
+#. TRANSLATORS: IEC 80000-13:2008 byte/second
+#: strbuf.c
+#, c-format
+msgid "%u byte/s"
+msgid_plural "%u bytes/s"
+msgstr[0] "%u beart/s"
+msgstr[1] "%u beart/s"
+msgstr[2] "%u beart/s"
+
+#: submodule-config.c
+#, c-format
+msgid "ignoring suspicious submodule name: %s"
+msgstr "ag déanamh neamhaird d'ainm fo-mhodúil amhrasach: %s"
+
+#: submodule-config.c
+msgid "negative values not allowed for submodule.fetchJobs"
+msgstr "luachanna diúltacha nach gceadaítear le haghaidh submodule.fetchJobs"
+
+#: submodule-config.c
+#, c-format
+msgid "ignoring '%s' which may be interpreted as a command-line option: %s"
+msgstr ""
+"neamhaird a dhéanamh ar '%s' ar féidir a léirmhíniú mar rogha líne ordaithe: "
+"%s"
+
+#: submodule-config.c
+#, c-format
+msgid "Could not update .gitmodules entry %s"
+msgstr "Ní fhéadfaí iontráil.gitmodules %s a nuashonrú"
+
+#: submodule.c
+msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first"
+msgstr ""
+"Ní féidir .gitmodules neamh-chumhdaithe a athrú, coinbhleachtaí cumaisc a "
+"réiteach"
+
+#: submodule.c
+#, c-format
+msgid "Could not find section in .gitmodules where path=%s"
+msgstr ""
+"Níorbh fhéidir an rannóg a aimsiú i .gitmodules áit a bhfuil an cosán = %s"
+
+#: submodule.c
+#, c-format
+msgid "Could not remove .gitmodules entry for %s"
+msgstr "Ní fhéadfaí iontráil.gitmodules a bhaint do %s"
+
+#: submodule.c
+msgid "staging updated .gitmodules failed"
+msgstr "theip ar stáisiú nuashonraithe .gitmodules"
+
+#: submodule.c
+#, c-format
+msgid "in unpopulated submodule '%s'"
+msgstr "i bhfo-mhodúl neamhdhaonra '%s'"
+
+#: submodule.c
+#, c-format
+msgid "Pathspec '%s' is in submodule '%.*s'"
+msgstr "Tá pathspec '%s' i bhfo-mhodúl '%.*s"
+
+#: submodule.c
+#, c-format
+msgid "bad --ignore-submodules argument: %s"
+msgstr "argóint olc --ignore-submodules: %s"
+
+#: submodule.c
+#, c-format
+msgid ""
+"Submodule in commit %s at path: '%s' collides with a submodule named the "
+"same. Skipping it."
+msgstr ""
+"Fo-mhodúl i dtiomantas %s ag an gcosán: imbhuaileann '%s' le fo-mhodúl darb "
+"ainm mar an gcéanna. Ag scipeáil é."
+
+#: submodule.c
+#, c-format
+msgid "submodule entry '%s' (%s) is a %s, not a commit"
+msgstr "is %s é iontráil an fhomhodúil '%s' (%s), ní tiomnú"
+
+#: submodule.c
+#, c-format
+msgid ""
+"Could not run 'git rev-list <commits> --not --remotes -n 1' command in "
+"submodule %s"
+msgstr ""
+"Ní raibh an t-ordú 'git rev-list <commits>--not --remotes -n 1' a reáchtáil "
+"i bhfo-mhodúl %s"
+
+#: submodule.c
+#, c-format
+msgid "process for submodule '%s' failed"
+msgstr "theip ar phróiseas le haghaidh fo-mhodúl '%s'"
+
+#: submodule.c
+#, c-format
+msgid "Pushing submodule '%s'\n"
+msgstr "Ag brú an fho-mhodúil '%s'\n"
+
+#: submodule.c
+#, c-format
+msgid "Unable to push submodule '%s'\n"
+msgstr "Ní féidir an fho-mhodúl '%s' a bhrú\n"
+
+#: submodule.c
+#, c-format
+msgid "Fetching submodule %s%s\n"
+msgstr "Ag fáil fo-mhodúl %s%s\n"
+
+#: submodule.c
+#, c-format
+msgid "Could not access submodule '%s'\n"
+msgstr "Níorbh fhéidir rochtain a fháil ar fho-mhodúl '%s'\n"
+
+#: submodule.c
+#, c-format
+msgid "Could not access submodule '%s' at commit %s\n"
+msgstr "Níorbh fhéidir rochtain a fháil ar fho-mhodúl '%s' ag tiomantas %s\n"
+
+#: submodule.c
+#, c-format
+msgid "Fetching submodule %s%s at commit %s\n"
+msgstr "Ag fáil fo-mhodúl %s%s ag an tiomnú %s\n"
+
+#: submodule.c
+#, c-format
+msgid ""
+"Errors during submodule fetch:\n"
+"%s"
+msgstr ""
+"Earráidí le linn teacht fo-mhodúil:\n"
+"%s"
+
+#: submodule.c
+#, c-format
+msgid "'%s' not recognized as a git repository"
+msgstr "Ní aithnítear '%s' mar stór git"
+
+#: submodule.c
+#, c-format
+msgid "Could not run 'git status --porcelain=2' in submodule %s"
+msgstr "Ní féidir 'git status --porcelain=2' a reáchtáil i bhfo-mhodúl %s"
+
+#: submodule.c
+#, c-format
+msgid "'git status --porcelain=2' failed in submodule %s"
+msgstr "Theip ar 'git status --porcelain=2' i bhfo-mhodúl %s"
+
+#: submodule.c
+#, c-format
+msgid "could not start 'git status' in submodule '%s'"
+msgstr "ní fhéadfaí 'git status' a thosú i bhfo-mhodúl '%s'"
+
+#: submodule.c
+#, c-format
+msgid "could not run 'git status' in submodule '%s'"
+msgstr "ní fhéadfaí 'git status' a reáchtáil i bhfo-mhodúl '%s'"
+
+#: submodule.c
+#, c-format
+msgid "Could not unset core.worktree setting in submodule '%s'"
+msgstr "Ní fhéadfaí socrú core.worktree a dhíshocrú i bhfo-mhodúl '%s'"
+
+#: submodule.c
+#, c-format
+msgid "could not recurse into submodule '%s'"
+msgstr "ní fhéadfaí athshlánú isteach i bhfo-mhodúl '%s'"
+
+#: submodule.c
+msgid "could not reset submodule index"
+msgstr "ní fhéadfadh innéacs fo-mhodúil a athshocrú"
+
+#: submodule.c
+#, c-format
+msgid "submodule '%s' has dirty index"
+msgstr "tá innéacs salach ag fo-mhodúl '%s'"
+
+#: submodule.c
+#, c-format
+msgid "Submodule '%s' could not be updated."
+msgstr "Ní fhéadfaí fo-mhodúl '%s' a nuashonrú."
+
+#: submodule.c
+#, c-format
+msgid "submodule git dir '%s' is inside git dir '%.*s'"
+msgstr "tá fo-mhodúl git dir '%s' taobh istigh de git dir '%.*s"
+
+#: submodule.c
+#, c-format
+msgid "expected '%.*s' in submodule path '%s' not to be a symbolic link"
+msgstr ""
+"ag súil leis '%.*s' i gcosán fo-mhodúil '%s' gan a bheith ina nasc siombalach"
+
+#: submodule.c
+#, c-format
+msgid "expected submodule path '%s' not to be a symbolic link"
+msgstr "ag súil nach mbeidh cosán fo-mhodúil '%s' ina nasc siombalach"
+
+#: submodule.c
+#, c-format
+msgid ""
+"relocate_gitdir for submodule '%s' with more than one worktree not supported"
+msgstr ""
+"relocate_gitdir le haghaidh fo-mhodúil '%s' le níos mó ná crann oibre amháin "
+"nach dtacaítear leis"
+
+#: submodule.c
+#, c-format
+msgid "could not lookup name for submodule '%s'"
+msgstr "ní fhéadfaí ainm a lorg don fho-mhodúl '%s'"
+
+#: submodule.c
+#, c-format
+msgid "refusing to move '%s' into an existing git dir"
+msgstr "diúltú '%s' a bhogadh isteach i git dir atá ann cheana"
+
+#: submodule.c
+#, c-format
+msgid ""
+"Migrating git directory of '%s%s' from\n"
+"'%s' to\n"
+"'%s'\n"
+msgstr ""
+"Ag aistriú eolaire git de '%s%s' ó\n"
+"'%s' go\n"
+"'%s'\n"
+
+#: submodule.c
+msgid "could not start ls-files in .."
+msgstr "ní fhéadfaí ls-files a thosú i.."
+
+#: submodule.c
+#, c-format
+msgid "ls-tree returned unexpected return code %d"
+msgstr "d’fhill an crann ls cód fillte gan choinne %d"
+
+#: symlinks.c
+#, c-format
+msgid "failed to lstat '%s'"
+msgstr "theip ar lstat '%s'"
+
+#: t/helper/test-bundle-uri.c
+msgid "no remote configured to get bundle URIs from"
+msgstr "gan aon iargúlta cumraithe chun URIs beartán a fháil ó"
+
+#: t/helper/test-bundle-uri.c
+msgid "could not get the bundle-uri list"
+msgstr "ní raibh in ann an liosta bundle-uri a fháil"
+
+#: t/helper/test-cache-tree.c
+msgid "test-tool cache-tree <options> (control|prime|update)"
+msgstr "test-tool cache-tree <options> (control|prime|update)"
+
+#: t/helper/test-cache-tree.c
+msgid "clear the cache tree before each iteration"
+msgstr "glan an crann taisce roimh gach athrú"
+
+#: t/helper/test-cache-tree.c
+msgid "number of entries in the cache tree to invalidate (default 0)"
+msgstr ""
+"líon na n-iontrálacha sa chrann taisce le neamhbhailí (réamhshocraithe 0)"
+
+#: t/helper/test-pack-deltas.c
+msgid "the number of objects to write"
+msgstr "líon na rudaí le scríobh"
+
+#: t/helper/test-path-walk.c
+msgid "test-tool path-walk <options> -- <revision-options>"
+msgstr "test-tool path-walk <options> -- <revision-options>"
+
+#: t/helper/test-path-walk.c
+msgid "toggle inclusion of blob objects"
+msgstr "cuimsiú rudaí blob a thógáil"
+
+#: t/helper/test-path-walk.c
+msgid "toggle inclusion of commit objects"
+msgstr "toggle áireamh rudaí tiomanta"
+
+#: t/helper/test-path-walk.c
+msgid "toggle inclusion of tag objects"
+msgstr "cuimsiú rudaí clibeanna a thosc"
+
+#: t/helper/test-path-walk.c
+msgid "toggle inclusion of tree objects"
+msgstr "cuimsiú rudaí crann a thógáil"
+
+#: t/helper/test-path-walk.c
+msgid "toggle pruning of uninteresting paths"
+msgstr "bearradh cosáin neamh-spéisiúla a thosú"
+
+#: t/helper/test-path-walk.c
+msgid "read a pattern list over stdin"
+msgstr "léigh liosta patrún thar stdin"
+
+#: t/helper/test-reach.c
+#, c-format
+msgid "commit %s is not marked reachable"
+msgstr "nach bhfuil comhordú %s marcáilte inrochtana"
+
+#: t/helper/test-reach.c
+msgid "too many commits marked reachable"
+msgstr "an iomarca gealltanais atá marcáilte inrochtana"
+
+#: t/helper/test-read-midx.c
+msgid "could not determine MIDX preferred pack"
+msgstr "ní fhéadfaí pacáiste is fearr MIDX a chinneadh"
+
+#: t/helper/test-serve-v2.c
+msgid "test-tool serve-v2 [<options>]"
+msgstr "test-tool serve-v2 [<options>]"
+
+#: t/helper/test-serve-v2.c
+msgid "exit immediately after advertising capabilities"
+msgstr "imeacht díreach tar éis cumais fógraíochta"
+
+#: t/helper/test-simple-ipc.c
+msgid "test-helper simple-ipc is-active [<name>] [<options>]"
+msgstr "<name><options>tá cúntóir tástála simple-ipc gníomhach [] []"
+
+#: t/helper/test-simple-ipc.c
+msgid "test-helper simple-ipc run-daemon [<name>] [<threads>]"
+msgstr "<name><threads>cúntóir tástála simple-ipc run-daemon [] []"
+
+#: t/helper/test-simple-ipc.c
+msgid "test-helper simple-ipc start-daemon [<name>] [<threads>] [<max-wait>]"
+msgstr ""
+"<name><threads><max-wait>cúntóir tástála simple-ipc tosaigh daemon [] [] []"
+
+#: t/helper/test-simple-ipc.c
+msgid "test-helper simple-ipc stop-daemon [<name>] [<max-wait>]"
+msgstr "<name><max-wait>cúntóir tástála simple-ipc stad-daemon [] []"
+
+#: t/helper/test-simple-ipc.c
+msgid "test-helper simple-ipc send [<name>] [<token>]"
+msgstr "<name><token>cúntóir tástála simple-ipc seol [] []"
+
+#: t/helper/test-simple-ipc.c
+msgid "test-helper simple-ipc sendbytes [<name>] [<bytecount>] [<byte>]"
+msgstr "<name><bytecount><byte>test-helper simple-ipc sendbytes [] [] []"
+
+#: t/helper/test-simple-ipc.c
+msgid ""
+"test-helper simple-ipc multiple [<name>] [<threads>] [<bytecount>] "
+"[<batchsize>]"
+msgstr ""
+"test-helper simple-ipc multiple [<name>] [<threads>] [<bytecount>] "
+"[<batchsize>]"
+
+#: t/helper/test-simple-ipc.c
+msgid "name or pathname of unix domain socket"
+msgstr "ainm nó ainm cosán soicéad fearainn unix"
+
+#: t/helper/test-simple-ipc.c
+msgid "named-pipe name"
+msgstr "ainm píopa ainmnithe"
+
+#: t/helper/test-simple-ipc.c
+msgid "number of threads in server thread pool"
+msgstr "líon na snáitheanna i linn snáithe freastalaí"
+
+#: t/helper/test-simple-ipc.c
+msgid "seconds to wait for daemon to start or stop"
+msgstr "soicind chun fanacht go dtosóidh nó stopfaidh an daemon"
+
+#: t/helper/test-simple-ipc.c
+msgid "number of bytes"
+msgstr "líon na mbetaí"
+
+#: t/helper/test-simple-ipc.c
+msgid "number of requests per thread"
+msgstr "líon iarratais in aghaidh an snáithe"
+
+#: t/helper/test-simple-ipc.c
+msgid "byte"
+msgstr "bith"
+
+#: t/helper/test-simple-ipc.c
+msgid "ballast character"
+msgstr "carachtar balasta"
+
+#: t/helper/test-simple-ipc.c
+msgid "token"
+msgstr "comhartha"
+
+#: t/helper/test-simple-ipc.c
+msgid "command token to send to the server"
+msgstr "comhartha ordaithe le seoladh chuig an bhfreastalaí"
+
+#: t/unit-tests/unit-test.c
+msgid "unit-test [<options>]"
+msgstr "unit-test [<options>]"
+
+#: t/unit-tests/unit-test.c
+msgid "immediately exit upon the first failed test"
+msgstr "imeacht láithreach ar an gcéad tástáil theip"
+
+#: t/unit-tests/unit-test.c
+msgid "suite[::test]"
+msgstr "suite [::test]"
+
+#: t/unit-tests/unit-test.c
+msgid "run only test suite or individual test <suite[::test]>"
+msgstr "reáchtáil ach sraith tástála nó tástáil aonair <suite [::test] >"
+
+#: t/unit-tests/unit-test.c
+msgid "suite"
+msgstr "svuít"
+
+#: t/unit-tests/unit-test.c
+msgid "exclude test suite <suite>"
+msgstr "sraith tástála a eisiamh <suite>"
+
+#: trailer.c
+#, c-format
+msgid "running trailer command '%s' failed"
+msgstr "theip ar an ordú leantóir '%s' a rith"
+
+#: trailer.c
+#, c-format
+msgid "unknown value '%s' for key '%s'"
+msgstr "luach anaithnid '%s' don eochair '%s'"
+
+#: trailer.c
+#, c-format
+msgid "empty trailer token in trailer '%.*s'"
+msgstr "comhartha leantóra folamh i leantóir '%.*s'"
+
+#: transport-helper.c
+msgid "full write to remote helper failed"
+msgstr "theip ar scríobh iomlán chuig cianchúntóir"
+
+#: transport-helper.c
+#, c-format
+msgid "unable to find remote helper for '%s'"
+msgstr "in ann cúntóir iargúlta a aimsiú do '%s'"
+
+#: transport-helper.c
+msgid "can't dup helper output fd"
+msgstr "ní féidir le aschur cúntóra fd a dhéanamh"
+
+#: transport-helper.c
+#, c-format
+msgid ""
+"unknown mandatory capability %s; this remote helper probably needs newer "
+"version of Git"
+msgstr ""
+"cumas éigeantach anaithnid %s; is dócha go mbeidh leagan níos nuaí de Git ag "
+"teastáil ó"
+
+#: transport-helper.c
+msgid "this remote helper should implement refspec capability"
+msgstr "ba cheart go gcuirfeadh an cúntóir cianda seo cumas refspec"
+
+#: transport-helper.c
+#, c-format
+msgid "%s unexpectedly said: '%s'"
+msgstr "Dúirt %s gan choinne: '%s'"
+
+#: transport-helper.c
+#, c-format
+msgid "%s also locked %s"
+msgstr "Glas %s freisin %s"
+
+#: transport-helper.c
+msgid "couldn't run fast-import"
+msgstr "ní raibh in ann allmhairiú tapa a reá"
+
+#: transport-helper.c
+msgid "error while running fast-import"
+msgstr "earráid agus iompórtáil tapa á rith"
+
+#: transport-helper.c
+#, c-format
+msgid "could not read ref %s"
+msgstr "ní raibh in ann tagairt %s a léamh"
+
+#: transport-helper.c
+#, c-format
+msgid "unknown response to connect: %s"
+msgstr "freagra anaithnid chun nascadh: %s"
+
+#: transport-helper.c
+msgid "setting remote service path not supported by protocol"
+msgstr "cosán seirbhíse iargúlta a shocrú nach dtacaíonn"
+
+#: transport-helper.c
+msgid "invalid remote service path"
+msgstr "cosán seirbhíse iargúlta"
+
+#: transport-helper.c
+#, c-format
+msgid "can't connect to subservice %s"
+msgstr "ní féidir nasc a dhéanamh le fo-sheirbhís %s"
+
+#: transport-helper.c transport.c
+msgid "--negotiate-only requires protocol v2"
+msgstr "--negotiate-only ag teastáil prótacal v2"
+
+#: transport-helper.c
+msgid "'option' without a matching 'ok/error' directive"
+msgstr "'roghan' gan treoir 'ok/earráid' a mheaitseáil"
+
+#: transport-helper.c
+#, c-format
+msgid "expected ok/error, helper said '%s'"
+msgstr "súil le ok/earráid, dúirt an cúntóir '%s'"
+
+#: transport-helper.c
+#, c-format
+msgid "helper reported unexpected status of %s"
+msgstr "thuairiscigh cúntóir stádas gan choinne %s"
+
+#: transport-helper.c
+#, c-format
+msgid "helper %s does not support dry-run"
+msgstr "ní thacaíonn cúntóir %s le rith tirim"
+
+#: transport-helper.c
+#, c-format
+msgid "helper %s does not support --signed"
+msgstr "ní thacaíonn cúntóir %s le --signed"
+
+#: transport-helper.c
+#, c-format
+msgid "helper %s does not support --signed=if-asked"
+msgstr "ní thacaíonn cúntóir %s le --signed=if-iarrtha"
+
+#: transport-helper.c
+#, c-format
+msgid "helper %s does not support --atomic"
+msgstr "ní thacaíonn cúntóir %s le --atomic"
+
+#: transport-helper.c
+#, c-format
+msgid "helper %s does not support --%s"
+msgstr "ní thacaíonn cúntóir %s le --%s"
+
+#: transport-helper.c
+#, c-format
+msgid "helper %s does not support 'push-option'"
+msgstr "ní thacaíonn cúntóir %s le 'push-rogha'"
+
+#: transport-helper.c
+msgid "remote-helper doesn't support push; refspec needed"
+msgstr "ní thacaíonn cúntóir iargúlta le brú; teastaíonn refspec"
+
+#: transport-helper.c
+#, c-format
+msgid "helper %s does not support '--force'"
+msgstr "ní thacaíonn cúntóir %s le '--force'"
+
+#: transport-helper.c
+msgid "couldn't run fast-export"
+msgstr "ní raibh sé in ann onnmhairiú tapa a"
+
+#: transport-helper.c
+msgid "error while running fast-export"
+msgstr "earráid agus easpórtáil tapa á rith"
+
+#: transport-helper.c
+#, c-format
+msgid ""
+"No refs in common and none specified; doing nothing.\n"
+"Perhaps you should specify a branch.\n"
+msgstr ""
+"Níl aon réimsí i gcoiteann agus níl aon cheann sonraithe; ní dhéanann aon "
+"rud.\n"
+"B'fhéidir gur chóir duit brainse a shonrú.\n"
+
+#: transport-helper.c
+#, c-format
+msgid "unsupported object format '%s'"
+msgstr "formáid réad gan tacaíocht '%s'"
+
+#: transport-helper.c
+#, c-format
+msgid "malformed response in ref list: %s"
+msgstr "freagra mífhoirmithe sa liosta tagartha: %s"
+
+#: transport-helper.c
+#, c-format
+msgid "read(%s) failed"
+msgstr "theip ar léamh (%s)"
+
+#: transport-helper.c
+#, c-format
+msgid "write(%s) failed"
+msgstr "theip ar scríobh (%s)"
+
+#: transport-helper.c
+#, c-format
+msgid "%s thread failed"
+msgstr "Theip ar snáithe %s"
+
+#: transport-helper.c
+#, c-format
+msgid "%s thread failed to join: %s"
+msgstr "Theip ar shnáithe %s a bheith páirteach: %s"
+
+#: transport-helper.c
+#, c-format
+msgid "can't start thread for copying data: %s"
+msgstr "ní féidir snáithe a thosú chun sonraí a chóipeáil: %s"
+
+#: transport-helper.c
+#, c-format
+msgid "%s process failed to wait"
+msgstr "Theip ar phróiseas %s fanacht"
+
+#: transport-helper.c
+#, c-format
+msgid "%s process failed"
+msgstr "Theip ar phróiseas %s"
+
+#: transport-helper.c
+msgid "can't start thread for copying data"
+msgstr "ní féidir snáithe a thosú chun sonraí a chóipe"
+
+#: transport.c
+#, c-format
+msgid "Would set upstream of '%s' to '%s' of '%s'\n"
+msgstr "Socródh sé suas sruth de '%s' go '%s' de '%s'\n"
+
+#: transport.c
+#, c-format
+msgid "could not read bundle '%s'"
+msgstr "ní fhéadfaí beartán '%s' a léamh"
+
+#: transport.c
+#, c-format
+msgid "transport: invalid depth option '%s'"
+msgstr "iompar: rogha doimhneachta neamhbhailí '%s'"
+
+#: transport.c
+msgid "see protocol.version in 'git help config' for more details"
+msgstr ""
+"féach protocol.version in 'git help config' le haghaidh tuilleadh sonraí"
+
+#: transport.c
+msgid "server options require protocol version 2 or later"
+msgstr "teastaíonn leagan prótacal 2 nó níos déanaí ó roghanna"
+
+#: transport.c
+msgid "server does not support wait-for-done"
+msgstr "ní thacaíonn freastalaí le fanacht le déanamh"
+
+#: transport.c
+msgid "could not parse transport.color.* config"
+msgstr "ní fhéadfaí transport.color.* config a pháirseáil"
+
+#: transport.c
+msgid "support for protocol v2 not implemented yet"
+msgstr "tacaíocht do phrótacal v2 nach bhfuil curtha i bhfeidhm"
+
+#: transport.c
+#, c-format
+msgid "transport '%s' not allowed"
+msgstr "ní cheadaítear iompar '%s'"
+
+#: transport.c
+msgid "git-over-rsync is no longer supported"
+msgstr "ní thacaítear le git-over-rsync a thuilleadh"
+
+#: transport.c
+#, c-format
+msgid ""
+"The following submodule paths contain changes that can\n"
+"not be found on any remote:\n"
+msgstr ""
+"Tá athruithe ar féidir leis na cosáin fo-mhodúil seo a leanas\n"
+"nach bhfuil le fáil ar aon iargúlta:\n"
+
+#: transport.c
+#, c-format
+msgid ""
+"\n"
+"Please try\n"
+"\n"
+"\tgit push --recurse-submodules=on-demand\n"
+"\n"
+"or cd to the path and use\n"
+"\n"
+"\tgit push\n"
+"\n"
+"to push them to a remote.\n"
+"\n"
+msgstr ""
+"\n"
+"Déan iarracht\n"
+"\n"
+"\tgit push --recurse-submodules=on-demand\n"
+"\n"
+"nó cd chuig an gcosán agus úsáid\n"
+"\n"
+" Brúigh git\n"
+"\n"
+"chun iad a bhrú chuig iargúlta.\n"
+
+#: transport.c
+msgid "Aborting."
+msgstr "Ag gearradh."
+
+#: transport.c
+msgid "failed to push all needed submodules"
+msgstr "theip ar gach fo-mhodúl riachtanach a bhrú"
+
+#: transport.c
+msgid "bundle-uri operation not supported by protocol"
+msgstr "oibríocht bundle-uri nach dtacaíonn prótacal"
+
+#: transport.c
+msgid "could not retrieve server-advertised bundle-uri list"
+msgstr "ní fhéadfaí liosta bundle-uri a fógraíodh ag freastalaí a aisghab"
+
+#: transport.c
+msgid "operation not supported by protocol"
+msgstr "oibriú nach dtacaíonn prótacal"
+
+#: tree-walk.c
+msgid "too-short tree object"
+msgstr "réad crann ró-ghearr"
+
+#: tree-walk.c
+msgid "malformed mode in tree entry"
+msgstr "modh mífhoirmithe i iontráil crann"
+
+#: tree-walk.c
+msgid "empty filename in tree entry"
+msgstr "ainm comhaid folamh i iontráil crann"
+
+#: tree-walk.c
+msgid "too-short tree file"
+msgstr "comhad crann ró-ghearr"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by checkout:\n"
+"%%sPlease commit your changes or stash them before you switch branches."
+msgstr ""
+"Déanfaí d'athruithe áitiúla ar na comhaid seo a leanas a fhorscríobh trí "
+"sheiceáil:\n"
+"%%sDéan d'athruithe nó déan iad a stóráil sula n-athraíonn tú brainsí."
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by checkout:\n"
+"%%s"
+msgstr ""
+"Déanfaí d'athruithe áitiúla ar na comhaid seo a leanas a fhorscríobh trí "
+"sheiceáil:\n"
+"%%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"%%sPlease commit your changes or stash them before you merge."
+msgstr ""
+"Déanfaí d'athruithe áitiúla ar na comhaid seo a leanas a fhorscríobh trí "
+"chumasc:\n"
+"%%sDo chuid athruithe a dhéanamh nó cuir isteach iad sula ndéanann tú a "
+"chumasc."
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by merge:\n"
+"%%s"
+msgstr ""
+"Déanfaí d'athruithe áitiúla ar na comhaid seo a leanas a fhorscríobh trí "
+"chumasc:\n"
+"%%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by %s:\n"
+"%%sPlease commit your changes or stash them before you %s."
+msgstr ""
+"Déanfadh %s d'athruithe áitiúla ar na comhaid seo a leanas a fhorscríobh:\n"
+"%%sDéan do chuid athruithe nó iad a stóráil os comhair %s."
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"Your local changes to the following files would be overwritten by %s:\n"
+"%%s"
+msgstr ""
+"Déanfadh %s d'athruithe áitiúla ar na comhaid seo a leanas a fhorscríobh:\n"
+"%%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"Updating the following directories would lose untracked files in them:\n"
+"%s"
+msgstr ""
+"Chaillfeadh na n-eolairí seo a leanas a nuashonrú comhaid gan rianú iontu:\n"
+"%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"Refusing to remove the current working directory:\n"
+"%s"
+msgstr ""
+"Diúltú an eolaire oibre reatha a bhaint:\n"
+"%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be removed by checkout:\n"
+"%%sPlease move or remove them before you switch branches."
+msgstr ""
+"Bainfí na comhaid crann oibre gan rianú seo a leanas trí sheiceáil:\n"
+"%%sBogadh nó bain iad sula n-athraíonn tú brainsí."
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be removed by checkout:\n"
+"%%s"
+msgstr ""
+"Bainfí na comhaid crann oibre gan rianú seo a leanas trí sheiceáil:\n"
+"%%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be removed by merge:\n"
+"%%sPlease move or remove them before you merge."
+msgstr ""
+"Bainfí na comhaid crann oibre gan rianú seo a leanas trí chumasc:\n"
+"%%sDo thoil bog nó bain iad sula ndéanann tú a chumasc."
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be removed by merge:\n"
+"%%s"
+msgstr ""
+"Bainfí na comhaid crann oibre gan rianú seo a leanas trí chumasc:\n"
+"%%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be removed by %s:\n"
+"%%sPlease move or remove them before you %s."
+msgstr ""
+"Bainfí %s na comhaid crann oibre neamhrianaithe seo a leanas:\n"
+"%%sDo thoil bog nó bain iad roimh %s."
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be removed by %s:\n"
+"%%s"
+msgstr ""
+"Bainfí %s na comhaid crann oibre neamhrianaithe seo a leanas:\n"
+"%%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be overwritten by "
+"checkout:\n"
+"%%sPlease move or remove them before you switch branches."
+msgstr ""
+"Déanfaí na comhaid crann oibre neamhrianaithe seo a leanas a fhorscríobh trí "
+"sheiceáil:\n"
+"%%sBogadh nó bain iad sula n-athraíonn tú brainsí."
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be overwritten by "
+"checkout:\n"
+"%%s"
+msgstr ""
+"Déanfaí na comhaid crann oibre neamhrianaithe seo a leanas a fhorscríobh trí "
+"sheiceáil:\n"
+"%%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be overwritten by merge:\n"
+"%%sPlease move or remove them before you merge."
+msgstr ""
+"Déanfaí na comhaid crann oibre neamhrianaithe seo a leanas a fhorscríobh trí "
+"chumasc:\n"
+"%%sDo thoil bog nó bain iad sula ndéanann tú cumasc."
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be overwritten by merge:\n"
+"%%s"
+msgstr ""
+"Déanfaí na comhaid crann oibre neamhrianaithe seo a leanas a fhorscríobh trí "
+"chumasc:\n"
+"%%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be overwritten by %s:\n"
+"%%sPlease move or remove them before you %s."
+msgstr ""
+"Bheadh %s na comhaid crann oibre neamhrianaithe seo a leanas a fhorscríobh:\n"
+"%%sDo thoil bog nó bain iad roimh %s."
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following untracked working tree files would be overwritten by %s:\n"
+"%%s"
+msgstr ""
+"Bheadh %s na comhaid crann oibre neamhrianaithe seo a leanas a fhorscríobh:\n"
+"%%s"
+
+#: unpack-trees.c
+#, c-format
+msgid "Entry '%s' overlaps with '%s'. Cannot bind."
+msgstr "Tá iontráil '%s' ag forluí le '%s'. Ní féidir ceangal a dhéanamh."
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"Cannot update submodule:\n"
+"%s"
+msgstr ""
+"Ní féidir fo-mhodúl a nuashonrú:\n"
+"%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following paths are not up to date and were left despite sparse "
+"patterns:\n"
+"%s"
+msgstr ""
+"Níl na cosáin seo a leanas cothrom le dáta agus fágadh iad in ainneoin "
+"patrúin neamhchoitianta:\n"
+"%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following paths are unmerged and were left despite sparse patterns:\n"
+"%s"
+msgstr ""
+"Tá na cosáin seo a leanas gan chumasc agus fágadh iad in ainneoin patrúin "
+"neamhchoitianta:\n"
+"%s"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"The following paths were already present and thus not updated despite sparse "
+"patterns:\n"
+"%s"
+msgstr ""
+"Bhí na cosáin seo a leanas i láthair cheana féin agus dá bhrí sin níor "
+"nuashonraíodh in ainneoin\n"
+"%s"
+
+#: unpack-trees.c
+#, c-format
+msgid "Aborting\n"
+msgstr "Gearradh\n"
+
+#: unpack-trees.c
+#, c-format
+msgid ""
+"After fixing the above paths, you may want to run `git sparse-checkout "
+"reapply`.\n"
+msgstr ""
+"Tar éis duit na cosáin thuas a shocrú, b'fhéidir gur mhaith leat `git sparse-"
+"checkout reapply` a reáchtáil.\n"
+
+#: unpack-trees.c
+msgid "Updating files"
+msgstr "Comhad a nuashonrú"
+
+#: unpack-trees.c
+msgid ""
+"the following paths have collided (e.g. case-sensitive paths\n"
+"on a case-insensitive filesystem) and only one from the same\n"
+"colliding group is in the working tree:\n"
+msgstr ""
+"bhuail na cosáin seo a leanas (e.g. cosáin cás-íogair\n"
+"ar chóras comhaid cás-neamh-íogair) agus ach ceann amháin ón gcéanna\n"
+"tá grúpa imbhuailte sa chrann oibre:\n"
+
+#: unpack-trees.c
+msgid "Updating index flags"
+msgstr "Nuashonrú bratacha innéacs"
+
+#: unpack-trees.c
+#, c-format
+msgid "worktree and untracked commit have duplicate entries: %s"
+msgstr ""
+"tá iontrálacha dúbailte ag crann oibre agus tiomantas neamhrianaithe: %s"
+
+#: upload-pack.c
+msgid "expected flush after fetch arguments"
+msgstr "súil le sruth tar éis argóintí a fháil"
+
+#: urlmatch.c
+msgid "invalid URL scheme name or missing '://' suffix"
+msgstr "ainm scéime URL neamhbhailí nó iarmhír ': //' in easnamh"
+
+#: urlmatch.c
+#, c-format
+msgid "invalid %XX escape sequence"
+msgstr "seicheamh éalaithe %XX neamhbhailí"
+
+#: urlmatch.c
+msgid "missing host and scheme is not 'file:'"
+msgstr "ní 'comhad: 'í an óstach agus an scéim atá in easnamh:"
+
+#: urlmatch.c
+msgid "a 'file:' URL may not have a port number"
+msgstr "b'fhéidir nach mbeadh uimhir chalafoirt ag URL 'file: '"
+
+#: urlmatch.c
+msgid "invalid characters in host name"
+msgstr "carachtair neamhbhailí in ainm ósta"
+
+#: urlmatch.c
+msgid "invalid port number"
+msgstr "uimhir phort neamhbhail"
+
+#: urlmatch.c
+msgid "invalid '..' path segment"
+msgstr "deighleog cosáin '..' neamhbhailí"
+
+#: usage.c
+#, c-format
+msgid "error: unable to format message: %s\n"
+msgstr "earráid: ní féidir teachtaireacht a fhormáidiú: %s\n"
+
+#: usage.c
+msgid "usage: "
+msgstr "úsáid: "
+
+#: usage.c
+msgid "fatal: "
+msgstr "marfach: "
+
+#: usage.c
+msgid "error: "
+msgstr "earráid: "
+
+#: usage.c
+msgid "warning: "
+msgstr "rabhadh: "
+
+#: version.c
+#, c-format
+msgid "uname() failed with error '%s' (%d)\n"
+msgstr "theip ar uname () le earráid '%s' (%d)\n"
+
+#: walker.c
+msgid "Fetching objects"
+msgstr "Rudaí a fháil"
+
+#: worktree.c
+#, c-format
+msgid "'%s' at main working tree is not the repository directory"
+msgstr "Ní hé '%s' ag an bpríomhchrann oibre an eolaire stórais"
+
+#: worktree.c
+#, c-format
+msgid "'%s' file does not contain absolute path to the working tree location"
+msgstr "Níl cosán iomlán chuig suíomh an chrainn oibre i gcomhad '%s'"
+
+#: worktree.c
+#, c-format
+msgid "'%s' is not a .git file, error code %d"
+msgstr "Ní comhad .git é '%s', cód earráide %d"
+
+#: worktree.c
+#, c-format
+msgid "'%s' does not point back to '%s'"
+msgstr "Ní dhíríonn '%s' ar ais chuig '%s'"
+
+#: worktree.c
+msgid "not a directory"
+msgstr "ní eolaire"
+
+#: worktree.c
+msgid ".git is not a file"
+msgstr "Ní comhad é .git"
+
+#: worktree.c
+msgid ".git file broken"
+msgstr "comhad .git briste"
+
+#: worktree.c
+msgid ".git file incorrect"
+msgstr "comhad .git mícheart"
+
+#: worktree.c
+msgid ".git file absolute/relative path mismatch"
+msgstr "comhad .git neamhoiriúnú iomlán/coibhneasta coibhneasta"
+
+#: worktree.c
+msgid "not a valid path"
+msgstr "ní cosán bailí"
+
+#: worktree.c
+msgid "unable to locate repository; .git is not a file"
+msgstr "in ann stór a aimsiú; ní comhad é .git"
+
+#: worktree.c
+msgid "unable to locate repository; .git file does not reference a repository"
+msgstr "in ann stór a aimsiú; ní thagann comhad .git tagairt do stór"
+
+#: worktree.c
+msgid "unable to locate repository; .git file broken"
+msgstr "in ann stór a aimsiú; comhad .git briste"
+
+#: worktree.c
+msgid "gitdir unreadable"
+msgstr "gitdir unreadable"
+
+#: worktree.c
+msgid "gitdir absolute/relative path mismatch"
+msgstr "mímheaitseáil cosán iomlán/coibhneasta gitdir"
+
+#: worktree.c
+msgid "gitdir incorrect"
+msgstr "gitdir mícheart"
+
+#: worktree.c
+msgid "not a valid directory"
+msgstr "ní eolaire bailí"
+
+#: worktree.c
+msgid "gitdir file does not exist"
+msgstr "níl comhad gitdir ann"
+
+#: worktree.c
+#, c-format
+msgid "unable to read gitdir file (%s)"
+msgstr "nach féidir comhad gitdir a léamh (%s)"
+
+#: worktree.c
+#, c-format
+msgid "short read (expected %<PRIuMAX> bytes, read %<PRIuMAX>)"
+msgstr "léamh gearr (súil leis%<PRIuMAX>bytes, léithe%<PRIuMAX>)"
+
+#: worktree.c
+msgid "invalid gitdir file"
+msgstr "comhad gitdir neamhbhailí"
+
+#: worktree.c
+msgid "gitdir file points to non-existent location"
+msgstr "pointeálann comhad gitdir chuig suíomh nach bhfuil ann"
+
+#: worktree.c
+#, c-format
+msgid "unable to set %s in '%s'"
+msgstr "nach féidir %s a shocrú i '%s'"
+
+#: worktree.c
+#, c-format
+msgid "unable to unset %s in '%s'"
+msgstr "nach féidir %s a dhíshocrú i '%s'"
+
+#: worktree.c
+msgid "failed to set extensions.worktreeConfig setting"
+msgstr "theip ar shocrú extensions.worktreeConfig"
+
+#: worktree.c
+msgid "unable to upgrade repository format to support relative worktrees"
+msgstr "in ann formáid stórais a uasghrádú chun tacú le crainn oibre coibh"
+
+#: worktree.c
+msgid "unable to set extensions.relativeWorktrees setting"
+msgstr "ní féidir an socrú extensions.relativeWorktrees a shocrú"
+
+#: wrapper.c
+#, c-format
+msgid "could not setenv '%s'"
+msgstr "ní fhéadfaí '%s' a shocrú"
+
+#: wrapper.c
+#, c-format
+msgid "unable to create '%s'"
+msgstr "ní féidir '%s' a chruthú"
+
+#: wrapper.c
+#, c-format
+msgid "could not open '%s' for reading and writing"
+msgstr "ní fhéadfaí '%s' a oscailt le haghaidh léamh agus scríbhneoireachta"
+
+#: wrapper.c
+#, c-format
+msgid "unable to access '%s'"
+msgstr "ní féidir rochtain a fháil ar '%s'"
+
+#: wrapper.c
+msgid "unable to get current working directory"
+msgstr "in ann eolaire oibre reatha a fháil"
+
+#: wrapper.c
+msgid "unable to get random bytes"
+msgstr "in ann bétaí randamacha a fháil"
+
+#: wrapper.c
+#, c-format
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "ag iarraidh mmapáil %<PRIuMAX> thar theorainn %<PRIuMAX>"
+
+#: wrapper.c
+#, c-format
+msgid "mmap failed%s"
+msgstr "theip ar mmap %s"
+
+#: wt-status.c
+msgid "Unmerged paths:"
+msgstr "Cosáin neamh-chumasaithe:"
+
+#: wt-status.c
+msgid " (use \"git restore --staged <file>...\" to unstage)"
+msgstr ""
+" (bain úsáid as “git restore --staged <comhad>...” chun an stáitse a dhíchur)"
+
+#: wt-status.c
+#, c-format
+msgid " (use \"git restore --source=%s --staged <file>...\" to unstage)"
+msgstr ""
+" (bain úsáid as \"git restore --source=%s --staged <comhad>...\" chun an "
+"stáitse a dhí-ardú)"
+
+#: wt-status.c
+msgid " (use \"git rm --cached <file>...\" to unstage)"
+msgstr ""
+" (bain úsáid as “git rm --cached <comhad>...” chun an stáitse a dhíchur)"
+
+#: wt-status.c
+msgid " (use \"git add <file>...\" to mark resolution)"
+msgstr " (bain úsáid as “git add <comhad>...” chun réiteach a mharcáil)"
+
+#: wt-status.c
+msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)"
+msgstr ""
+" (bain úsáid \"git add/rm <comhad>...\" de réir mar is cuí chun réiteach a "
+"mharcáil)"
+
+#: wt-status.c
+msgid " (use \"git rm <file>...\" to mark resolution)"
+msgstr " (bain úsáid as “git rm <comhad>...” chun réiteach a mharcáil)"
+
+#: wt-status.c
+msgid "Changes to be committed:"
+msgstr "Athruithe atá le déanamh:"
+
+#: wt-status.c
+msgid "Changes not staged for commit:"
+msgstr "Athruithe nach ndearnadh a chur ar stáitse le haghaidh tiomantais:"
+
+#: wt-status.c
+msgid " (use \"git add <file>...\" to update what will be committed)"
+msgstr ""
+" (bain úsáid as “git add <comhad>...” chun an méid a bheidh tiomanta a "
+"nuashonrú)"
+
+#: wt-status.c
+msgid " (use \"git add/rm <file>...\" to update what will be committed)"
+msgstr ""
+" (bain úsáid as “git add/rm <comhad>...” chun an méid a bheidh tiomanta a "
+"nuashonrú)"
+
+#: wt-status.c
+msgid ""
+" (use \"git restore <file>...\" to discard changes in working directory)"
+msgstr ""
+" (bain úsáid as “git restore <comhad>...” chun athruithe ar eolaire oibre a "
+"dhiúscairt)"
+
+#: wt-status.c
+msgid " (commit or discard the untracked or modified content in submodules)"
+msgstr ""
+" (an t-ábhar neamhrianaithe nó modhnaithe i bhfo-mhodúil a thiomsú nó a "
+"dhiúscairt)"
+
+#: wt-status.c
+#, c-format
+msgid " (use \"git %s <file>...\" to include in what will be committed)"
+msgstr ""
+" (bain úsáid as “git %s <comhad>...” chun an méid a bheidh tiomanta san "
+"áireamh)"
+
+#: wt-status.c
+msgid "both deleted:"
+msgstr "scriosta an dá cheann:"
+
+#: wt-status.c
+msgid "added by us:"
+msgstr "curtha leis againn:"
+
+#: wt-status.c
+msgid "deleted by them:"
+msgstr "scriosta ag siad:"
+
+#: wt-status.c
+msgid "added by them:"
+msgstr "a chuir siad leis:"
+
+#: wt-status.c
+msgid "deleted by us:"
+msgstr "scriosta againn:"
+
+#: wt-status.c
+msgid "both added:"
+msgstr "chuir an bheirt leis:"
+
+#: wt-status.c
+msgid "both modified:"
+msgstr "an dá cheann modhnaithe:"
+
+#: wt-status.c
+msgid "new file:"
+msgstr "comhad nua:"
+
+#: wt-status.c
+msgid "copied:"
+msgstr "cóipeáilte:"
+
+#: wt-status.c
+msgid "deleted:"
+msgstr "scriosta:"
+
+#: wt-status.c
+msgid "modified:"
+msgstr "modhnaithe:"
+
+#: wt-status.c
+msgid "renamed:"
+msgstr "athainmnithe:"
+
+#: wt-status.c
+msgid "typechange:"
+msgstr "cineál cineál:"
+
+#: wt-status.c
+msgid "unknown:"
+msgstr "anaithnid:"
+
+#: wt-status.c
+msgid "unmerged:"
+msgstr "gan chumasc:"
+
+#: wt-status.c
+msgid "new commits, "
+msgstr "tiomantais nua, "
+
+#: wt-status.c
+msgid "modified content, "
+msgstr "ábhar modhnaithe, "
+
+#: wt-status.c
+msgid "untracked content, "
+msgstr "ábhar neamhrianaithe, "
+
+#: wt-status.c
+#, c-format
+msgid "Your stash currently has %d entry"
+msgid_plural "Your stash currently has %d entries"
+msgstr[0] "Tá %d iontráil i do stash faoi láthair"
+msgstr[1] "Tá %d iontrálacha ar do stash faoi láthair"
+msgstr[2] "Tá %d iontrálacha ar do stash faoi láthair"
+
+#: wt-status.c
+msgid "Submodules changed but not updated:"
+msgstr "Fo-mhodúil athraithe ach gan nuashonrú:"
+
+#: wt-status.c
+msgid "Submodule changes to be committed:"
+msgstr "Athruithe fo-mhodúil atá le tiomantas:"
+
+#: wt-status.c
+msgid ""
+"Do not modify or remove the line above.\n"
+"Everything below it will be ignored."
+msgstr ""
+"Ná déan an líne thuas a mhodhnú ná a bhaint.\n"
+"Déanfar neamhaird ar gach rud thíos é."
+
+#: wt-status.c
+#, c-format
+msgid ""
+"\n"
+"It took %.2f seconds to compute the branch ahead/behind values.\n"
+"You can use '--no-ahead-behind' to avoid this.\n"
+msgstr ""
+"\n"
+"Thóg sé %.2f soicind chun luachanna na brainse chun tosaigh/taobh thiar a "
+"ríomh.\n"
+"Is féidir leat '--no-ahead-behind' a úsáid chun seo a sheachaint.\n"
+
+#: wt-status.c
+msgid "You have unmerged paths."
+msgstr "Tá cosáin neamh-chumasaithe agat."
+
+#: wt-status.c
+msgid " (fix conflicts and run \"git commit\")"
+msgstr " (coinbhleachtaí a shocrú agus reáchtáil “git commit”)"
+
+#: wt-status.c
+msgid " (use \"git merge --abort\" to abort the merge)"
+msgstr ""
+" (bain úsáid as “git merge --abort” chun an cumaisc a chur ar deireadh)"
+
+#: wt-status.c
+msgid "All conflicts fixed but you are still merging."
+msgstr "Socraíodh gach coinbhleacht ach tá tú fós ag cumasc."
+
+#: wt-status.c
+msgid " (use \"git commit\" to conclude merge)"
+msgstr " (bain úsáid as “git commit” chun cumasc a thabhairt i gcrích)"
+
+#: wt-status.c
+msgid "You are in the middle of an am session."
+msgstr "Tá tú i lár seisiún am."
+
+#: wt-status.c
+msgid "The current patch is empty."
+msgstr "Tá an paiste reatha folamh."
+
+#: wt-status.c
+msgid " (fix conflicts and then run \"git am --continue\")"
+msgstr " (déan coinbhleachtaí a shocrú agus ansin rith “git am --continue”)"
+
+#: wt-status.c
+msgid " (use \"git am --skip\" to skip this patch)"
+msgstr " (bain úsáid as “git am --skip” chun an paiste seo a scipeáil)"
+
+#: wt-status.c
+msgid ""
+" (use \"git am --allow-empty\" to record this patch as an empty commit)"
+msgstr ""
+" (bain úsáid as “git am --allow-empty” chun an paiste seo a thaifeadadh mar "
+"thiomantas folamh)"
+
+#: wt-status.c
+msgid " (use \"git am --abort\" to restore the original branch)"
+msgstr ""
+" (bain úsáid as “git am --abort” chun an bhrainse bunaidh a chur ar ais)"
+
+#: wt-status.c
+msgid "git-rebase-todo is missing."
+msgstr "tá git-rebase-todo ar iarraidh."
+
+#: wt-status.c
+msgid "No commands done."
+msgstr "Níl aon orduithe déanta."
+
+#: wt-status.c
+#, c-format
+msgid "Last command done (%<PRIuMAX> command done):"
+msgid_plural "Last commands done (%<PRIuMAX> commands done):"
+msgstr[0] "An chéad ordú eile le déanamh (%<PRIuMAX>ordú atá fágtha):"
+msgstr[1] "Na chéad orduithe eile le déanamh (%<PRIuMAX> orduithe atá fágtha):"
+msgstr[2] "Na chéad orduithe eile le déanamh (%<PRIuMAX> orduithe atá fágtha):"
+
+#: wt-status.c
+#, c-format
+msgid " (see more in file %s)"
+msgstr " (féach tuilleadh i gcomhad %s)"
+
+#: wt-status.c
+msgid "No commands remaining."
+msgstr "Níl aon orduithe fágtha."
+
+#: wt-status.c
+#, c-format
+msgid "Next command to do (%<PRIuMAX> remaining command):"
+msgid_plural "Next commands to do (%<PRIuMAX> remaining commands):"
+msgstr[0] "An chéad ordú eile le déanamh (%<PRIuMAX> an t-ordú atá fágtha):"
+msgstr[1] "Na chéad orduithe eile le déanamh (%<PRIuMAX> orduithe atá fágtha):"
+msgstr[2] "Na chéad orduithe eile le déanamh (%<PRIuMAX> orduithe atá fágtha):"
+
+#: wt-status.c
+msgid " (use \"git rebase --edit-todo\" to view and edit)"
+msgstr ""
+" (bain úsáid as “git rebase --edit-todo” chun féachaint agus eagar a chur in "
+"eagar)"
+
+#: wt-status.c
+#, c-format
+msgid "You are currently rebasing branch '%s' on '%s'."
+msgstr "Tá tú ag athbhunú brainse '%s' faoi láthair ar '%s'."
+
+#: wt-status.c
+msgid "You are currently rebasing."
+msgstr "Tá tú ag athbhunú faoi láthair."
+
+#: wt-status.c
+msgid " (fix conflicts and then run \"git rebase --continue\")"
+msgstr ""
+" (déan coinbhleachtaí a shocrú agus ansin rith “git rebase --continue”)"
+
+#: wt-status.c
+msgid " (use \"git rebase --skip\" to skip this patch)"
+msgstr " (bain úsáid as “git rebase --skip” chun an paiste seo a scipeáil)"
+
+#: wt-status.c
+msgid " (use \"git rebase --abort\" to check out the original branch)"
+msgstr ""
+" (bain úsáid as “git rebase --abort” chun an bhrainse bunaidh a sheiceáil)"
+
+#: wt-status.c
+msgid " (all conflicts fixed: run \"git rebase --continue\")"
+msgstr " (gach coinbhleacht socraithe: reáchtáil “git rebase --continue”)"
+
+#: wt-status.c
+#, c-format
+msgid ""
+"You are currently splitting a commit while rebasing branch '%s' on '%s'."
+msgstr ""
+"Tá tiomantas á roinnt agat faoi láthair agus tú ag athbhunú brainse '%s' ar "
+"'%s'."
+
+#: wt-status.c
+msgid "You are currently splitting a commit during a rebase."
+msgstr "Tá tú ag roinnt tiomantas faoi láthair le linn athbhunaithe."
+
+#: wt-status.c
+msgid " (Once your working directory is clean, run \"git rebase --continue\")"
+msgstr ""
+" (Nuair a bheidh d'eolaire oibre glan, reáchtáil “git rebase --continue”)"
+
+#: wt-status.c
+#, c-format
+msgid "You are currently editing a commit while rebasing branch '%s' on '%s'."
+msgstr ""
+"Tá tú ag eagarthóireacht faoi láthair agus tú ag athbhunú brainse '%s' ar "
+"'%s'."
+
+#: wt-status.c
+msgid "You are currently editing a commit during a rebase."
+msgstr "Tá tú ag eagarthóireacht tiomanta faoi láthair le linn athbhunaithe."
+
+#: wt-status.c
+msgid " (use \"git commit --amend\" to amend the current commit)"
+msgstr " (bain úsáid as “git commit --amend” chun an tiomantas reatha a leasú)"
+
+#: wt-status.c
+msgid ""
+" (use \"git rebase --continue\" once you are satisfied with your changes)"
+msgstr ""
+" (bain úsáid as “git rebase --continue” nuair a bheidh tú sásta le "
+"d'athruithe)"
+
+#: wt-status.c
+msgid "Cherry-pick currently in progress."
+msgstr "Cherry-pick atá ar siúl faoi láthair."
+
+#: wt-status.c
+#, c-format
+msgid "You are currently cherry-picking commit %s."
+msgstr "Tá tiomantas %s ag piocadh silíní faoi láthair."
+
+#: wt-status.c
+msgid " (fix conflicts and run \"git cherry-pick --continue\")"
+msgstr " (coinbhleachtaí a shocrú agus reáchtáil “git cherry-pick --continue”)"
+
+#: wt-status.c
+msgid " (run \"git cherry-pick --continue\" to continue)"
+msgstr " (reáchtáil “git cherry-pick --continue ” chun leanúint ar aghaidh)"
+
+#: wt-status.c
+msgid " (all conflicts fixed: run \"git cherry-pick --continue\")"
+msgstr " (gach coinbhleacht socraithe: reáchtáil “git cherry-pick --continue”)"
+
+#: wt-status.c
+msgid " (use \"git cherry-pick --skip\" to skip this patch)"
+msgstr ""
+" (bain úsáid as “git cherry-pick --skip” chun an paiste seo a scipeáil)"
+
+#: wt-status.c
+msgid " (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)"
+msgstr ""
+" (bain úsáid as “git cherry-pick --abort” chun an oibríocht pioc silíní a "
+"chealú)"
+
+#: wt-status.c
+msgid "Revert currently in progress."
+msgstr "Ar ais atá ar siúl faoi láthair."
+
+#: wt-status.c
+#, c-format
+msgid "You are currently reverting commit %s."
+msgstr "Tá tiomantas %s á chur ar ais faoi láthair."
+
+#: wt-status.c
+msgid " (fix conflicts and run \"git revert --continue\")"
+msgstr " (déan coinbhleachtaí a shocrú agus rith “git revert --continue”)"
+
+#: wt-status.c
+msgid " (run \"git revert --continue\" to continue)"
+msgstr " (reáchtáil “git revert --continue” chun leanúint ar aghaidh)"
+
+#: wt-status.c
+msgid " (all conflicts fixed: run \"git revert --continue\")"
+msgstr " (gach coinbhleacht socraithe: reáchtáil “git revert --continue”)"
+
+#: wt-status.c
+msgid " (use \"git revert --skip\" to skip this patch)"
+msgstr " (bain úsáid as “git revert --skip” chun an paiste seo a scipeáil)"
+
+#: wt-status.c
+msgid " (use \"git revert --abort\" to cancel the revert operation)"
+msgstr ""
+" (bain úsáid as “git revert --abort” chun an oibríocht aisghabhála a chealú)"
+
+#: wt-status.c
+#, c-format
+msgid "You are currently bisecting, started from branch '%s'."
+msgstr "Tá tú ag déileáil faoi láthair, tosaigh tú ó bhrainse '%s'."
+
+#: wt-status.c
+msgid "You are currently bisecting."
+msgstr "Tá tú ag déileáil faoi láthair."
+
+#: wt-status.c
+msgid " (use \"git bisect reset\" to get back to the original branch)"
+msgstr ""
+" (bain úsáid as “git bisect reset” chun filleadh ar an mbrainse bunaidh)"
+
+#: wt-status.c
+msgid "You are in a sparse checkout."
+msgstr "Tá tú i seiceáil neamhchoitianta."
+
+#: wt-status.c
+#, c-format
+msgid "You are in a sparse checkout with %d%% of tracked files present."
+msgstr ""
+"Tá tú i seiceáil neamhchoitianta le %d%% de na comhaid rianaithe i láthair."
+
+#: wt-status.c
+msgid "On branch "
+msgstr "Ar bhrainse "
+
+#: wt-status.c
+msgid "interactive rebase in progress; onto "
+msgstr "athbhunú idirghníomhach atá ar siúl; ar "
+
+#: wt-status.c
+msgid "rebase in progress; onto "
+msgstr "athbhunú atá ar siúl; ar "
+
+#: wt-status.c
+msgid "HEAD detached at "
+msgstr "HEAD scoite ag "
+
+#: wt-status.c
+msgid "HEAD detached from "
+msgstr "CEANN scartha ó "
+
+#: wt-status.c
+msgid "Not currently on any branch."
+msgstr "Níl sé ar aon bhrainse faoi láthair."
+
+#: wt-status.c
+msgid "Initial commit"
+msgstr "Tiomantas tosaigh"
+
+#: wt-status.c
+msgid "No commits yet"
+msgstr "Níl aon gealltanais fós"
+
+#: wt-status.c
+msgid "Untracked files"
+msgstr "Comhaid neamhrianaithe"
+
+#: wt-status.c
+msgid "Ignored files"
+msgstr "Comhaid neamhaird"
+
+#: wt-status.c
+#, c-format
+msgid ""
+"It took %.2f seconds to enumerate untracked files,\n"
+"but the results were cached, and subsequent runs may be faster."
+msgstr ""
+"Thóg sé %.2f soicind comhaid gan rianú a áireamh,\n"
+"ach cuireadh na torthaí a chosc, agus d'fhéadfadh rith ina dhiaidh sin a "
+"bheith níos gasta."
+
+#: wt-status.c
+#, c-format
+msgid "It took %.2f seconds to enumerate untracked files."
+msgstr "Thóg sé %.2f soicind comhaid gan rianú a áireamh."
+
+#: wt-status.c
+msgid "See 'git help status' for information on how to improve this."
+msgstr ""
+"Féach 'git help status' le haghaidh faisnéise maidir le conas é seo a "
+"fheabhsú."
+
+#: wt-status.c
+#, c-format
+msgid "Untracked files not listed%s"
+msgstr "Comhaid neamhrianaithe nár liostaíodh %s"
+
+#: wt-status.c
+msgid " (use -u option to show untracked files)"
+msgstr " (bain úsáid as an rogha -u chun comhaid neamhrianaithe a thaispeáint)"
+
+#: wt-status.c
+msgid "No changes"
+msgstr "Gan aon athruithe"
+
+#: wt-status.c
+#, c-format
+msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n"
+msgstr ""
+"níl aon athruithe curtha le tiomantas (bain úsáid as “git add” agus/nó “git "
+"commit -a”)\n"
+
+#: wt-status.c
+#, c-format
+msgid "no changes added to commit\n"
+msgstr "níl aon athruithe curtha le tiomantas\n"
+
+#: wt-status.c
+#, c-format
+msgid ""
+"nothing added to commit but untracked files present (use \"git add\" to "
+"track)\n"
+msgstr ""
+"ní chuirtear aon rud le tiomantas ach comhaid neamhrianaithe i láthair (bain "
+"úsáid as “git add” chun rianú)\n"
+
+#: wt-status.c
+#, c-format
+msgid "nothing added to commit but untracked files present\n"
+msgstr "ní chuir aon rud le tiomantas ach comhaid neamhrianaithe i láthair\n"
+
+#: wt-status.c
+#, c-format
+msgid "nothing to commit (create/copy files and use \"git add\" to track)\n"
+msgstr ""
+"aon rud le tiomantas (comhaid a chruthú/cóipeáil agus bain úsáid as “git "
+"add” chun rianú)\n"
+
+#: wt-status.c
+#, c-format
+msgid "nothing to commit\n"
+msgstr "aon rud le tiomantas\n"
+
+#: wt-status.c
+#, c-format
+msgid "nothing to commit (use -u to show untracked files)\n"
+msgstr ""
+"aon rud le tiomantas (bain úsáid as -u chun comhaid neamhrianaithe a "
+"thaispeáint)\n"
+
+#: wt-status.c
+#, c-format
+msgid "nothing to commit, working tree clean\n"
+msgstr "aon rud le tiomantas, crann oibre glan\n"
+
+#: wt-status.c
+msgid "No commits yet on "
+msgstr "Níl aon gealltanas ar aghaidh go fóill "
+
+#: wt-status.c
+msgid "HEAD (no branch)"
+msgstr "CEAD (gan aon bhrainse)"
+
+#: wt-status.c
+msgid "different"
+msgstr "difriúil"
+
+#: wt-status.c
+msgid "behind "
+msgstr "taobh thiar "
+
+#: wt-status.c
+msgid "ahead "
+msgstr "chun tosaigh "
+
+#. TRANSLATORS: the action is e.g. "pull with rebase"
+#: wt-status.c
+#, c-format
+msgid "cannot %s: You have unstaged changes."
+msgstr "ní féidir %s: Tá athruithe gan stáitse agat."
+
+#: wt-status.c
+msgid "additionally, your index contains uncommitted changes."
+msgstr "ina theannta sin, tá athruithe neamhthiomanta i d'innéacs."
+
+#: wt-status.c
+#, c-format
+msgid "cannot %s: Your index contains uncommitted changes."
+msgstr "ní féidir %s: Tá athruithe neamhthiomanta ag d'innéacs."
+
+#: xdiff-interface.c
+#, c-format
+msgid "unknown style '%s' given for '%s'"
+msgstr "stíl anaithnid '%s' a thugtar do '%s'"
+
+#: git-merge-octopus.sh git-merge-resolve.sh
+msgid ""
+"Error: Your local changes to the following files would be overwritten by "
+"merge"
+msgstr ""
+"Earráid: Déanfaí d'athruithe áitiúla ar na comhaid seo a leanas a "
+"fhorscríobh trí chumasc"
+
+#: git-merge-octopus.sh
+msgid "Automated merge did not work."
+msgstr "Níor oibrigh cumaisc uathoibrithe."
+
+#: git-merge-octopus.sh
+msgid "Should not be doing an octopus."
+msgstr "Níor chóir go mbeadh sé ag déanamh ochtair."
+
+#: git-merge-octopus.sh
+#, sh-format
+msgid "Unable to find common commit with $pretty_name"
+msgstr "Ní féidir tiomantas coiteann a fháil le $pretty_name"
+
+#: git-merge-octopus.sh
+#, sh-format
+msgid "Already up to date with $pretty_name"
+msgstr "Cothrom le dáta cheana féin le $pretty_name"
+
+#: git-merge-octopus.sh
+#, sh-format
+msgid "Fast-forwarding to: $pretty_name"
+msgstr "Seoladh go tapa chuig: $pretty_name"
+
+#: git-merge-octopus.sh
+#, sh-format
+msgid "Trying simple merge with $pretty_name"
+msgstr "Ag iarraidh cumasc simplí le $pretty_name"
+
+#: git-merge-octopus.sh
+msgid "Simple merge did not work, trying automatic merge."
+msgstr ""
+"Níor oibrigh an cumasc simplí, táim ag iarraidh cumasc uathoibríoch a "
+"dhéanamh."
+
+#: git-sh-setup.sh
+#, sh-format
+msgid "usage: $dashless $USAGE"
+msgstr "úsáid: $dashless $USAGE"
+
+#: git-sh-setup.sh
+#, sh-format
+msgid "Cannot chdir to $cdup, the toplevel of the working tree"
+msgstr "Ní féidir a chdir go $cdup, barr an chrainn oibre"
+
+#: git-sh-setup.sh
+#, sh-format
+msgid "fatal: $program_name cannot be used without a working tree."
+msgstr "marfach: ní féidir $program_name a úsáid gan crann oibre."
+
+#: git-sh-setup.sh
+msgid "Cannot rewrite branches: You have unstaged changes."
+msgstr "Ní féidir brainsí a athscríobh: Tá athruithe gan stáitse agat."
+
+#: git-sh-setup.sh
+#, sh-format
+msgid "Cannot $action: You have unstaged changes."
+msgstr "Ní féidir $action: Tá athruithe gan stáitse agat."
+
+#: git-sh-setup.sh
+#, sh-format
+msgid "Cannot $action: Your index contains uncommitted changes."
+msgstr "Ní féidir $action: Tá athruithe neamhthiomanta i d'innéacs."
+
+#: git-sh-setup.sh
+msgid "Additionally, your index contains uncommitted changes."
+msgstr "Ina theannta sin, tá athruithe neamhthiomanta i d'innéacs."
+
+#: git-sh-setup.sh
+msgid "You need to run this command from the toplevel of the working tree."
+msgstr "Ní mór duit an t-ordú seo a reáchtáil ó bharr an chrainn oibre."
+
+#: git-sh-setup.sh
+msgid "Unable to determine absolute path of git directory"
+msgstr "Ní féidir cosán iomlán eolaire git a chinneadh"
+
+#: git-send-email.perl
+msgid "local zone differs from GMT by a non-minute interval\n"
+msgstr "tá eatramh neamh-nóiméid difriúil ón gcrios áitiúil\n"
+
+#: git-send-email.perl
+msgid "local time offset greater than or equal to 24 hours\n"
+msgstr ""
+"fritháireamh ama áitiúil atá níos mó ná nó cothrom le 24 uair an chloig\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "fatal: command '%s' died with exit code %d"
+msgstr "marfach: fuair an t-ordú '%s' bás le cód imeachta %d"
+
+#: git-send-email.perl
+msgid "the editor exited uncleanly, aborting everything"
+msgstr "d’imigh an t-eagarthóir go neamhghlan, ag cur deireadh le gach rud"
+
+#: git-send-email.perl
+#, perl-format
+msgid ""
+"'%s' contains an intermediate version of the email you were composing.\n"
+msgstr "Tá leagan idirmheánach den ríomhphost a bhí á scríobh agat i '%s'.\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "'%s.final' contains the composed email.\n"
+msgstr "Cuimsíonn '%s.final' an ríomhphost comhdhéanta.\n"
+
+#: git-send-email.perl
+msgid "--dump-aliases incompatible with other options\n"
+msgstr "--dump-aliases neamhoiriúnach le roghanna eile\n"
+
+#: git-send-email.perl
+msgid "--dump-aliases and --translate-aliases are mutually exclusive\n"
+msgstr "Tá --dump-aliases agus --translate-aliases frithpháirteach\n"
+
+#: git-send-email.perl
+msgid ""
+"fatal: found configuration options for 'sendmail'\n"
+"git-send-email is configured with the sendemail.* options - note the 'e'.\n"
+"Set sendemail.forbidSendmailVariables to false to disable this check.\n"
+msgstr ""
+"marfach: aimsíodh roghanna cumraíochta do 'sendmail'\n"
+"Tá git-send-email cumraithe leis na roghanna sendemail.* - tabhair faoi "
+"deara an 'e'.\n"
+"Socraigh sendemail.forbidSendmailVariables go bréagach chun an seiceáil seo "
+"a dhíchumasú.\n"
+
+#: git-send-email.perl
+msgid "Cannot run git format-patch from outside a repository\n"
+msgstr "Ní féidir git format-patch a rith ó lasmuigh de stórlann\n"
+
+#: git-send-email.perl
+msgid ""
+"`batch-size` and `relogin` must be specified together (via command-line or "
+"configuration option)\n"
+msgstr ""
+"Caithfear `méid baisce' agus `athlogán' a shonrú le chéile (trí líne "
+"ordaithe nó rogha cumraíochta)\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "Unknown --suppress-cc field: '%s'\n"
+msgstr "Réimse anaithnid --suppress-cc: '%s'\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "Unknown --confirm setting: '%s'\n"
+msgstr "Socrú --confirm anaithnid: '%s'\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "warning: sendmail alias with quotes is not supported: %s\n"
+msgstr "rabhadh: ní thacaítear le alias sendmail le luachana: %s\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "warning: `:include:` not supported: %s\n"
+msgstr "rabhadh: `:include: `níl tacaíocht: %s\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "warning: `/file` or `|pipe` redirection not supported: %s\n"
+msgstr "rabhadh: Ní thacaítear le hathreorú `/comhad` nó `|píopa`: %s\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "warning: sendmail line is not recognized: %s\n"
+msgstr "rabhadh: ní aithnítear líne sendmail: %s\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid ""
+"File '%s' exists but it could also be the range of commits\n"
+"to produce patches for. Please disambiguate by...\n"
+"\n"
+" * Saying \"./%s\" if you mean a file; or\n"
+" * Giving --format-patch option if you mean a range.\n"
+msgstr ""
+"Tá comhad '%s' ann ach d'fhéadfadh sé a bheith ina raon na dtiomanta "
+"freisin\n"
+"chun paistí a tháirgeadh le haghaidh. Déan díbhríochnú le do thoil le do "
+"thoil\n"
+"\n"
+" * Ag rá”. /%s” má tá comhad i gceist agat; nó\n"
+" * Rogha --format-patch a thabhairt má tá raon i gceist agat.\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "Failed to opendir %s: %s"
+msgstr "Theip ar %s a oscailt: %s"
+
+#: git-send-email.perl
+msgid ""
+"\n"
+"No patch files specified!\n"
+"\n"
+msgstr ""
+"\n"
+"Níl aon chomhaid paiste sonraithe!\n"
+"\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "No subject line in %s?"
+msgstr "Níl aon líne ábhair i %s?"
+
+#: git-send-email.perl
+#, perl-format
+msgid "Failed to open for writing %s: %s"
+msgstr "Theip ar oscailt le haghaidh scríbhneoireachta %s: %s"
+
+#: git-send-email.perl
+msgid ""
+"Lines beginning in \"GIT:\" will be removed.\n"
+"Consider including an overall diffstat or table of contents\n"
+"for the patch you are writing.\n"
+"\n"
+"Clear the body content if you don't wish to send a summary.\n"
+msgstr ""
+"Bainfear línte a thosaíonn i “GIT:”.\n"
+"Smaoinigh ar diffstat foriomlán nó tábla ábhair a áireamh\n"
+"don phaiste atá á scríobh agat.\n"
+"\n"
+"Glan ábhar an choirp mura dteastaíonn uait achoimre a sheoladh.\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "Failed to open %s.final: %s"
+msgstr "Theip ar %s.final a oscailt: %s"
+
+#: git-send-email.perl
+#, perl-format
+msgid "Failed to open %s: %s"
+msgstr "Theip ar %s a oscailt: %s"
+
+#: git-send-email.perl
+msgid "Summary email is empty, skipping it\n"
+msgstr "Tá ríomhphost achoimre folamh, ag scipeáil é\n"
+
+#. TRANSLATORS: please keep [y/N] as is.
+#: git-send-email.perl
+#, perl-format
+msgid "Are you sure you want to use <%s> [y/N]? "
+msgstr "An bhfuil tú cinnte gur mhaith leat <%s> [Y/n] a úsáid? "
+
+#: git-send-email.perl
+msgid ""
+"The following files are 8bit, but do not declare a Content-Transfer-"
+"Encoding.\n"
+msgstr ""
+"Is iad na comhaid seo a leanas 8bit, ach ná dearbhaíonn siad Ionchódú "
+"Aistrithe Ábhar.\n"
+
+#: git-send-email.perl
+msgid "Which 8bit encoding should I declare [UTF-8]? "
+msgstr "Cén ionchódú 8 giotán ba chóir dom a dhearbhú [UTF-8]? "
+
+#: git-send-email.perl
+#, perl-format
+msgid ""
+"Refusing to send because the patch\n"
+"\t%s\n"
+"has the template subject '*** SUBJECT HERE ***'. Pass --force if you really "
+"want to send.\n"
+msgstr ""
+"Diúltú a sheoladh mar gheall ar an paiste\n"
+"\t%s\n"
+"tá an teimpléad faoi réir an ábhair '*** ÁBHAR ANSEO ***'. Pasáil --force "
+"más mian leat a sheoladh i ndáiríre.\n"
+
+#: git-send-email.perl
+msgid "To whom should the emails be sent (if anyone)?"
+msgstr "Cé chuige ba chóir na ríomhphoist a sheoladh (más duine ar bith)?"
+
+#: git-send-email.perl
+#, perl-format
+msgid "fatal: alias '%s' expands to itself\n"
+msgstr "marfach: leathnaíonn alias '%s' chuige féin\n"
+
+#: git-send-email.perl
+msgid "Message-ID to be used as In-Reply-To for the first email (if any)? "
+msgstr ""
+"Aitheantas an Teachtaireachta le húsáid mar In-Reply-To don chéad ríomhphost "
+"(más ann dó)? "
+
+#: git-send-email.perl
+#, perl-format
+msgid "error: unable to extract a valid address from: %s\n"
+msgstr "earráid: ní féidir seoladh bailí a bhaint as: %s\n"
+
+#. TRANSLATORS: Make sure to include [q] [d] [e] in your
+#. translation. The program will only accept English input
+#. at this point.
+#: git-send-email.perl
+msgid "What to do with this address? ([q]uit|[d]rop|[e]dit): "
+msgstr "Cad atá le déanamh leis an seoladh seo? ([q]uit|[d]rop|[e]dit): "
+
+#: git-send-email.perl
+#, perl-format
+msgid "CA path \"%s\" does not exist"
+msgstr "Níl cosán CA “%s” ann"
+
+#: git-send-email.perl
+msgid ""
+" The Cc list above has been expanded by additional\n"
+" addresses found in the patch commit message. By default\n"
+" send-email prompts before sending whenever this occurs.\n"
+" This behavior is controlled by the sendemail.confirm\n"
+" configuration setting.\n"
+"\n"
+" For additional information, run 'git send-email --help'.\n"
+" To retain the current behavior, but squelch this message,\n"
+" run 'git config --global sendemail.confirm auto'.\n"
+"\n"
+msgstr ""
+" Leathnaíodh an liosta Cc thuas trí bhreise\n"
+" seoltaí a fhaightear sa teachtaireacht tiomanta paiste. De réir "
+"réamhshocraithe\n"
+" spreagann ríomhphost a sheoladh sula seoltar aon uair a tharlaíonn sé "
+"seo.\n"
+" Tá an t-iompar seo á rialú ag an sendemail.confirm\n"
+" socrú cumraíochta.\n"
+"\n"
+" Le haghaidh faisnéise breise, reáchtáil 'git send-email --help'.\n"
+" Chun an t-iompar reatha a choinneáil, ach an teachtaireacht seo a "
+"scriosadh,\n"
+" reáchtáil 'git config --global sendemail.confirm auto'.\n"
+
+#. TRANSLATORS: Make sure to include [y] [n] [e] [q] [a] in your
+#. translation. The program will only accept English input
+#. at this point.
+#: git-send-email.perl
+msgid "Send this email? ([y]es|[n]o|[e]dit|[q]uit|[a]ll): "
+msgstr ""
+"An bhfuil tú ag iarraidh an ríomhphost seo a sheoladh? ([y]es|[n]o|[e]dit|"
+"[q]uit|[a]ll): "
+
+#: git-send-email.perl
+msgid "Send this email reply required"
+msgstr "Seol an freagra ríomhphoist riachtanach"
+
+#: git-send-email.perl
+msgid "The required SMTP server is not properly defined."
+msgstr "Níl an freastalaí SMTP riachtanach sainmhínithe i gceart."
+
+#: git-send-email.perl
+#, perl-format
+msgid "Server does not support STARTTLS! %s"
+msgstr "Ní thacaíonn freastalaí le STARTTLS! %s"
+
+#: git-send-email.perl
+#, perl-format
+msgid "STARTTLS failed! %s"
+msgstr "Theip ar STARTTLS! %s"
+
+#: git-send-email.perl
+msgid "Unable to initialize SMTP properly. Check config and use --smtp-debug."
+msgstr ""
+"Ní féidir SMTP a thionscnamh i gceart. Seiceáil configí agus bain úsáid as --"
+"smtp-debug."
+
+#: git-send-email.perl
+#, perl-format
+msgid "Outlook reassigned Message-ID to: %s\n"
+msgstr "Athshannaigh Outlook ID teachtaireachta chuig: %s\n"
+
+#: git-send-email.perl
+msgid "Warning: Could not retrieve Message-ID from server response.\n"
+msgstr ""
+"Rabhadh: Ní fhéadfaí teachtaireachtaí ID a aisghabháil ó fhreagairt "
+"freastalaí.\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "Failed to send %s\n"
+msgstr "Theip ar %s a sheoladh\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "Dry-Sent %s"
+msgstr "Seoladh tirim %s"
+
+#: git-send-email.perl
+#, perl-format
+msgid "Sent %s"
+msgstr "Seoladh %s"
+
+#: git-send-email.perl
+msgid "Dry-OK. Log says:"
+msgstr "Tirim-ceart go leor. Log deir:"
+
+#: git-send-email.perl
+msgid "OK. Log says:"
+msgstr "CEART GO LEOR. Log deir:"
+
+#: git-send-email.perl
+msgid "Result: "
+msgstr "Toradh: "
+
+#: git-send-email.perl
+msgid "Result: OK"
+msgstr "Toradh: Ceart go leor"
+
+#: git-send-email.perl
+#, perl-format
+msgid "can't open file %s"
+msgstr "ní féidir comhad %s a oscailt"
+
+#: git-send-email.perl
+#, perl-format
+msgid "(mbox) Adding cc: %s from line '%s'\n"
+msgstr "(mbox) Ag cur cc: %s ó líne '%s'\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "(mbox) Adding to: %s from line '%s'\n"
+msgstr "(mbox) Ag cur le: %s ó líne '%s'\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "(non-mbox) Adding cc: %s from line '%s'\n"
+msgstr "(non-mbox) Ag cur cc: %s ó líne '%s'\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "(body) Adding cc: %s from line '%s'\n"
+msgstr "(corp) Ag cur cc: %s ó líne '%s'\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "(%s) Could not execute '%s'"
+msgstr "(%s) Ní raibh '%s' in ann a fhorghníomhú"
+
+#: git-send-email.perl
+#, perl-format
+msgid "(%s) Malformed output from '%s'"
+msgstr "(%s) Aschur mífheidhmithe ó '%s'"
+
+#: git-send-email.perl
+#, perl-format
+msgid "(%s) failed to close pipe to '%s'"
+msgstr "Theip ar (%s) píopa a dhúnadh chuig '%s'"
+
+#: git-send-email.perl
+#, perl-format
+msgid "(%s) Adding %s: %s from: '%s'\n"
+msgstr "(%s) Ag cur %s leis: %s ó: '%s'\n"
+
+#: git-send-email.perl
+msgid "cannot send message as 7bit"
+msgstr "ní féidir teachtaireacht a sheoladh mar 7bit"
+
+#: git-send-email.perl
+msgid "invalid transfer encoding"
+msgstr "ionchódú aistrithe bailí"
+
+#: git-send-email.perl
+#, perl-format
+msgid ""
+"fatal: %s: rejected by %s hook\n"
+"%s\n"
+"warning: no patches were sent\n"
+msgstr ""
+"marfach: %s: dhiúltaithe ag %s hook\n"
+"%s\n"
+"rabhadh: níor seoladh aon phaistí\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "unable to open %s: %s\n"
+msgstr "nach féidir %s a oscailt: %s\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid ""
+"fatal: %s:%d is longer than 998 characters\n"
+"warning: no patches were sent\n"
+msgstr ""
+"marfach: %s: %d níos faide ná 998 carachtar\n"
+"rabhadh: níor seoladh aon phaistí\n"
+
+#: git-send-email.perl
+#, perl-format
+msgid "Skipping %s with backup suffix '%s'.\n"
+msgstr "Scaipeáil %s le hiarmhír cúltaca '%s'.\n"
+
+#. TRANSLATORS: please keep "[y|N]" as is.
+#: git-send-email.perl
+#, perl-format
+msgid "Do you really want to send %s? [y|N]: "
+msgstr "An bhfuil tú ag iarraidh %s a sheoladh i ndáiríre? [y|N]: "
+
+#~ msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
+#~ msgstr "git cat-file (-t | -s) [--leis-cineál gan eolas] <object>"
+
+#~ msgid "allow -s and -t to work with broken/corrupt objects"
+#~ msgstr "ligean do -s agus -t oibriú le rudaí briste/truaillithe"
+
+#, c-format
+#~ msgid "%s: object is of unknown type '%s': %s"
+#~ msgstr "%s: tá réad de chineál anaithnid '%s': %s"
+
+#, c-format
+#~ msgid "unable to read '%s'"
+#~ msgstr "ní féidir '%s' a léamh"
diff --git a/po/id.po b/po/id.po
index 7d32c51ac7..d318019bc9 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2025-03-05 22:57+0000\n"
-"PO-Revision-Date: 2025-03-09 17:44+0700\n"
+"POT-Creation-Date: 2025-05-27 22:57+0000\n"
+"PO-Revision-Date: 2025-06-07 08:26+0700\n"
"Last-Translator: Bagas Sanjaya <bagasdotme@gmail.com>\n"
"Language-Team: Indonesian\n"
"Language: id\n"
@@ -951,10 +951,9 @@ msgstr "opsi abai spasi putih tidak dikenal '%s'"
#: builtin/fast-export.c builtin/fetch.c builtin/help.c builtin/index-pack.c
#: builtin/init-db.c builtin/log.c builtin/ls-files.c builtin/merge-base.c
#: builtin/merge-tree.c builtin/merge.c builtin/pack-objects.c builtin/rebase.c
-#: builtin/repack.c builtin/replay.c builtin/reset.c builtin/rev-list.c
-#: builtin/rev-parse.c builtin/show-branch.c builtin/stash.c
-#: builtin/submodule--helper.c builtin/tag.c builtin/worktree.c parse-options.c
-#: range-diff.c revision.c
+#: builtin/repack.c builtin/replay.c builtin/reset.c builtin/rev-parse.c
+#: builtin/show-branch.c builtin/stash.c builtin/submodule--helper.c
+#: builtin/tag.c builtin/worktree.c parse-options.c range-diff.c revision.c
#, c-format
msgid "options '%s' and '%s' cannot be used together"
msgstr "Opsi '%s' dan '%s' tidak dapat digunakan bersamaan"
@@ -1857,7 +1856,7 @@ msgstr ""
msgid "bad --attr-source or GIT_ATTR_SOURCE"
msgstr "--attr-source atau GIT_ATTR_SOURCE jelek"
-#: attr.c read-cache.c
+#: attr.c read-cache.c refs/packed-backend.c
#, c-format
msgid "unable to stat '%s'"
msgstr "tidak dapat men-stat '%s'"
@@ -2703,7 +2702,7 @@ msgstr "jalankan secara interaktif"
msgid "bypass pre-applypatch and applypatch-msg hooks"
msgstr "lewati kail pre-applypatch dan applypatch-msg"
-#: builtin/am.c
+#: builtin/am.c builtin/cat-file.c
msgid "historical option -- no-op"
msgstr "opsi bersejarah -- no-op"
@@ -4022,7 +4021,7 @@ msgstr "Perlu sebuah repositori untuk membongkar bundel."
msgid "Unbundling objects"
msgstr "Membongkar bundel objek"
-#: builtin/cat-file.c merge-recursive.c
+#: builtin/cat-file.c
#, c-format
msgid "cannot read object %s '%s'"
msgstr "tidak dapat membaca objek %s '%s'"
@@ -4059,12 +4058,8 @@ msgid "git cat-file <type> <object>"
msgstr "git cat-file <tipe> <objek>"
#: builtin/cat-file.c
-msgid "git cat-file (-e | -p) <object>"
-msgstr "git cat-file (-e | -p) <objek>"
-
-#: builtin/cat-file.c
-msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
-msgstr "git cat-file (-t | -s) [--allow-unknown-type] <objek>"
+msgid "git cat-file (-e | -p | -t | -s) <object>"
+msgstr "git cat-file (-e | -p | -t | -s) <objek>"
#: builtin/cat-file.c
msgid ""
@@ -4111,10 +4106,6 @@ msgstr "perlihatkan tipe objek (salah satu dari 'blob', 'commit', 'tag', ...)"
msgid "show object size"
msgstr "perlihatkan ukuran objek"
-#: builtin/cat-file.c
-msgid "allow -s and -t to work with broken/corrupt objects"
-msgstr "perbolehkan -s dan -t bekerja dengan objek rusak"
-
#: builtin/cat-file.c builtin/log.c
msgid "use mail map file"
msgstr "gunakan berkas peta surat"
@@ -4190,6 +4181,15 @@ msgid "use a <path> for (--textconv | --filters); Not with 'batch'"
msgstr "gunakan <jalur> untuk (--textconv | --filters); tidak dengan 'batch'"
#: builtin/cat-file.c
+msgid "objects filter only supported in batch mode"
+msgstr "penyaring objek hanya didukung di mode kelompok"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "objects filter not supported: '%s'"
+msgstr "penyaring objek tidak didukung: '%s'"
+
+#: builtin/cat-file.c
#, c-format
msgid "'%s=<%s>' needs '%s' or '%s'"
msgstr "'%s=<%s>' butuh '%s' atau '%s'"
@@ -7029,6 +7029,64 @@ msgstr "sebutkan akhiran format strftime untuk nama berkas"
msgid "specify the content of the diagnostic archive"
msgstr "sebutkan isi arsip diagnostik"
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse mode: %s"
+msgstr "tidak dapat menguraikan mode: %s"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse object id: %s"
+msgstr "tidak dapat menguraikan id objek: %s"
+
+#: builtin/diff-pairs.c
+msgid "git diff-pairs -z [<diff-options>]"
+msgstr "git diff-pairs -z [<opsi diff>]"
+
+#: builtin/diff-pairs.c builtin/log.c builtin/replay.c builtin/shortlog.c
+#: bundle.c
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "argumen tidak dikenal: %s"
+
+#: builtin/diff-pairs.c
+msgid "working without -z is not supported"
+msgstr "bekerja tanpa -z tidak didukung"
+
+#: builtin/diff-pairs.c
+msgid "pathspec arguments not supported"
+msgstr "argumen spek jalur tidak didukung"
+
+#: builtin/diff-pairs.c
+msgid "revision arguments not allowed"
+msgstr "argumen revisi tidak diperbolehkan"
+
+#: builtin/diff-pairs.c
+msgid "invalid raw diff input"
+msgstr "masukan diff mentah tidak valid"
+
+#: builtin/diff-pairs.c
+msgid "tree objects not supported"
+msgstr "objek pohon tidak didukung"
+
+#: builtin/diff-pairs.c
+msgid "got EOF while reading path"
+msgstr "dapat EOF ketika membaca jalur"
+
+#: builtin/diff-pairs.c
+msgid "got EOF while reading destination path"
+msgstr "dapat EOF ketika membaca jalur tujuan"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse rename/copy score: %s"
+msgstr "tidak dapat menguraikan nilai penamaan ulang/salin : %s"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unknown diff status: %c"
+msgstr "status diff tidak dikenal: %c"
+
#: builtin/diff-tree.c
msgid "--merge-base only works with two commits"
msgstr "--merge-base hanya bekerja dengan dua komit"
@@ -7210,6 +7268,10 @@ msgid "select handling of signed tags"
msgstr "pilih penanganan tag bertandatangan"
#: builtin/fast-export.c
+msgid "select handling of signed commits"
+msgstr "pilih penanganan komit bertandatangan"
+
+#: builtin/fast-export.c
msgid "select handling of tags that tag filtered objects"
msgstr "pilih penanganan tag yang men-tag objek tersaring"
@@ -7472,7 +7534,7 @@ msgstr "opsi \"%s\" nilai \"%s\" tidak valid untuk %s"
msgid "option \"%s\" is ignored for %s"
msgstr "opsi \"%s\" diabaikan untuk %s"
-#: builtin/fetch.c object-file.c
+#: builtin/fetch.c object-store.c
#, c-format
msgid "%s is not a valid object"
msgstr "%s bukan sebuah objek valid"
@@ -8024,11 +8086,6 @@ msgstr "%s: objek rusak atau hilang: %s"
#: builtin/fsck.c
#, c-format
-msgid "%s: object is of unknown type '%s': %s"
-msgstr "%s: objek bertipe tidak dikenal '%s': %s"
-
-#: builtin/fsck.c
-#, c-format
msgid "%s: object could not be parsed: %s"
msgstr "%s: objek tidak dapat diuraikan: %s"
@@ -8100,11 +8157,15 @@ msgid "invalid rev-index for pack '%s'"
msgstr "indeks balik tidak valid untuk pak '%s'"
#: builtin/fsck.c
+msgid "Checking ref database"
+msgstr "Memeriksa basis referensi"
+
+#: builtin/fsck.c
msgid ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<object>...]"
+" [--[no-]name-objects] [--[no-]references] [<object>...]"
msgstr ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
@@ -8159,6 +8220,10 @@ msgstr "perlihatkan perkembangan"
msgid "show verbose names for reachable objects"
msgstr "perlihatkan nama lantung untuk objek yang dapat dicapai"
+#: builtin/fsck.c
+msgid "check reference database consistency"
+msgstr "Memeriksa konsistensi basis data referensi"
+
#: builtin/fsck.c builtin/index-pack.c
msgid "Checking objects"
msgstr "Memeriksa objek"
@@ -9612,11 +9677,6 @@ msgstr ""
"lacak evolusi rentang baris <awal>,<akhir> atau fungsi :<nama fungsi> dalam "
"<berkas>"
-#: builtin/log.c builtin/replay.c builtin/shortlog.c bundle.c
-#, c-format
-msgid "unrecognized argument: %s"
-msgstr "argumen tidak dikenal: %s"
-
#: builtin/log.c
msgid "-L<range>:<file> cannot be used with pathspec"
msgstr "-L<rentang>:<berkas> tidak dapat digunakan dengan spek jalur"
@@ -10464,6 +10524,10 @@ msgid "also show informational/conflict messages"
msgstr "perlihatkan juga pesan informasi/konflik"
#: builtin/merge-tree.c
+msgid "suppress all output; only exit status wanted"
+msgstr "redam semua keluaran; hanya status keluar yang diinginkan"
+
+#: builtin/merge-tree.c
msgid "list filenames without modes/oids/stages"
msgstr "daftar nama berkas tanpa mode/oid/tahap"
@@ -10624,7 +10688,7 @@ msgstr "read-tree gagal"
msgid "Already up to date. (nothing to squash)"
msgstr "Sudah diperbarui. (tidak ada yang bisa dilumat)"
-#: builtin/merge.c merge-ort-wrappers.c merge-recursive.c
+#: builtin/merge.c merge-ort-wrappers.c
msgid "Already up to date."
msgstr "Sudah terbaru."
@@ -10648,7 +10712,7 @@ msgstr "'%s' tidak menunjuk pada sebuah komit"
msgid "Bad branch.%s.mergeoptions string: %s"
msgstr "Untai branch.%s.mergeoptions jelek: %s"
-#: builtin/merge.c merge-recursive.c
+#: builtin/merge.c merge-ort-wrappers.c
msgid "Unable to write index."
msgstr "Tidak dapat menulis indeks."
@@ -10809,7 +10873,7 @@ msgstr "Hanya bisa menggabungkan tepantnya satu komit ke kepala kosong"
msgid "Updating %s..%s\n"
msgstr "Memperbarui %s..%s\n"
-#: builtin/merge.c merge-ort-wrappers.c merge-recursive.c
+#: builtin/merge.c merge-ort-wrappers.c
#, c-format
msgid ""
"Your local changes to the following files would be overwritten by merge:\n"
@@ -10976,8 +11040,12 @@ msgstr ""
"sebuah batch yang lebih besar dari ukuran ini"
#: builtin/mv.c
-msgid "git mv [<options>] <source>... <destination>"
-msgstr "git mv [<opsi>] <sumber>... <tujuan>"
+msgid "git mv [-v] [-f] [-n] [-k] <source> <destination>"
+msgstr "git mv [-v] [-f] [-n] [-k] <sumber> <tujuan>"
+
+#: builtin/mv.c
+msgid "git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>"
+msgstr "git mv [-v] [-f] [-n] [-k] <sumber> <direktori tujuan>"
#: builtin/mv.c
#, c-format
@@ -11067,6 +11135,11 @@ msgstr "%s, source=%s, destination=%s"
#: builtin/mv.c
#, c-format
+msgid "cannot move both '%s' and its parent directory '%s'"
+msgstr "tidak dapat memindahkan baik '%s' dan direktori induknya '%s'"
+
+#: builtin/mv.c
+#, c-format
msgid "Renaming %s to %s\n"
msgstr "Mengganti nama %s ke %s\n"
@@ -12241,6 +12314,11 @@ msgstr ""
msgid "unable to access commit %s"
msgstr "Tidak dapat mengakses komit %s"
+#: builtin/pull.c refspec.c
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "spek referensi tidak valid '%s'"
+
#: builtin/pull.c
msgid "ignoring --verify-signatures for rebase"
msgstr "mengabaikan --verify-signatures untuk pendasaran ulang"
@@ -13389,6 +13467,10 @@ msgid "git reflog exists <ref>"
msgstr "git reflog exists <referensi>"
#: builtin/reflog.c
+msgid "git reflog drop [--all [--single-worktree] | <refs>...]"
+msgstr "git reflog drop [--all [--single-worktee] | <referensi>...]"
+
+#: builtin/reflog.c
#, c-format
msgid "invalid timestamp '%s' given to '--%s'"
msgstr "stempel waktu tidak valid '%s' diberikan ke '--%s'"
@@ -13450,8 +13532,8 @@ msgstr "Menandai objek yang bisa dicapai..."
#: builtin/reflog.c
#, c-format
-msgid "%s points nowhere!"
-msgstr "%s tidak menunjuk ke apapun!"
+msgid "reflog could not be found: '%s'"
+msgstr "tidak dapat menemukan log referensi: '%s'"
#: builtin/reflog.c
msgid "no reflog specified to delete"
@@ -13462,6 +13544,18 @@ msgstr "tidak ada log referensi yang disebutkan untuk dihapus"
msgid "invalid ref format: %s"
msgstr "format referensi tidak valid: %s"
+#: builtin/reflog.c
+msgid "drop the reflogs of all references"
+msgstr "jatuhkan log referensi semua referensi"
+
+#: builtin/reflog.c
+msgid "drop reflogs from the current worktree only"
+msgstr "hanya jatuhkan log referensi dari pohon kerja saat ini"
+
+#: builtin/reflog.c
+msgid "references specified along with --all"
+msgstr "referensi yang dirincikan bersamaan dengan --all"
+
#: builtin/refs.c
msgid "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
msgstr "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
@@ -14152,6 +14246,10 @@ msgid "with --cruft, expire objects older than this"
msgstr "dengan --cruft, kadaluarsakan objek yang lebih tua dari ini"
#: builtin/repack.c
+msgid "with --cruft, only repack cruft packs smaller than this"
+msgstr "dengan --cruft, hanya pak ulang pak sampah yang lebih kecil dari ini"
+
+#: builtin/repack.c
msgid "remove redundant packs, and run git-prune-packed"
msgstr "hapus pak berlebihan, dan jalankan git-prune-packed"
@@ -14759,6 +14857,10 @@ msgstr ""
"nilai tidak valid untuk '%s': '%s', format yang diperbolehkan hanyalah '%s'"
#: builtin/rev-list.c
+msgid "-z option used with unsupported option"
+msgstr "osi -z digunakan dengan opsi yang tidak didukung"
+
+#: builtin/rev-list.c
msgid "rev-list does not support display of notes"
msgstr "rev-list tidak mendukung penampilan catatan"
@@ -17082,8 +17184,8 @@ msgid "git update-ref [<options>] <refname> <new-oid> [<old-oid>]"
msgstr "git update-ref [<options>] <nama referensi> <oid baru> [<oid lama>]"
#: builtin/update-ref.c
-msgid "git update-ref [<options>] --stdin [-z]"
-msgstr "git update-ref [<opsi>] --stdin [-z]"
+msgid "git update-ref [<options>] --stdin [-z] [--batch-updates]"
+msgstr "git update-ref [<opsi>] --stdin [-z] [--batch-updates]"
#: builtin/update-ref.c
msgid "delete the reference"
@@ -17101,6 +17203,10 @@ msgstr "stdin punya argumen yang diakhiri dengan NUL"
msgid "read updates from stdin"
msgstr "baca pembaruan dari masukan standar"
+#: builtin/update-ref.c
+msgid "batch reference updates"
+msgstr "kelompokkan pembaruan referensi"
+
#: builtin/update-server-info.c
msgid "update the info files from scratch"
msgstr "perbarui berkas info dari awal"
@@ -17961,6 +18067,10 @@ msgid "Compare a tree to the working tree or index"
msgstr "Bandingkan pohon kepada pohon kerja atau indeks"
#: command-list.h
+msgid "Compare the content and mode of provided blob pairs"
+msgstr "Bandingkan isi dan mode pasangan blob yang disediakan"
+
+#: command-list.h
msgid "Compares the content and mode of blobs found via two tree objects"
msgstr "Bandingkan isi dan mode blob yang ditemukan lewat dua objek pohon"
@@ -20127,7 +20237,7 @@ msgstr ""
msgid "Unknown value for 'diff.submodule' config variable: '%s'"
msgstr "Nilai tidak dikenal untuk variabel konfigurasi 'diff.submodule': '%s'"
-#: diff.c merge-recursive.c transport.c
+#: diff.c merge-ort.c transport.c
#, c-format
msgid "unknown value for config '%s': %s"
msgstr "nilai tidak dikenal untuk konfigurasi '%s': %s"
@@ -21587,6 +21697,11 @@ msgstr "Kontrol delegasi tidak didukung oleh cURL < 7.22.0"
msgid "Unknown value for http.proactiveauth"
msgstr "nilai tidak dikenal untuk http.proactiveauth"
+#: http.c parse.c
+#, c-format
+msgid "failed to parse %s"
+msgstr "gagal menguraikan %s"
+
#: http.c
#, c-format
msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
@@ -21814,7 +21929,12 @@ msgstr "tidak dapat memformat pesan: %s"
msgid "invalid marker-size '%s', expecting an integer"
msgstr "marker-size '%s' tidak valid, bilangan bulat diharapkan"
-#: merge-ort.c merge-recursive.c
+#: merge-ort-wrappers.c
+#, c-format
+msgid "Could not parse object '%s'"
+msgstr "Tidak dapat menguraikan objek '%s'"
+
+#: merge-ort.c
#, c-format
msgid "Failed to merge submodule %s (not checked out)"
msgstr "Gagal menggabungkan submodul %s (tidak di-checkout)"
@@ -21824,7 +21944,7 @@ msgstr "Gagal menggabungkan submodul %s (tidak di-checkout)"
msgid "Failed to merge submodule %s (no merge base)"
msgstr "Gagal menggabungkan submodul %s (tidak ada dasar penggabungan)"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "Failed to merge submodule %s (commits not present)"
msgstr "Gagal menggabungkan submodul %s (komit tidak ada)"
@@ -21834,7 +21954,7 @@ msgstr "Gagal menggabungkan submodul %s (komit tidak ada)"
msgid "error: failed to merge submodule %s (repository corrupt)"
msgstr "kesalahan: gagal menggabungkan submodul %s (repositori rusak)"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "Failed to merge submodule %s (commits don't follow merge-base)"
msgstr ""
@@ -21878,12 +21998,12 @@ msgstr "kesalahan: gagal menjalankan penggabungan internal untuk %s"
msgid "error: unable to add %s to database"
msgstr "kesalahan: tidak dapat menambahkan %s ke basis data"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "Auto-merging %s"
msgstr "Menggabungkan otomatis %s"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -21892,7 +22012,7 @@ msgstr ""
"KONFLIK (penamaan ulang direktori implisit): Berkas/direktori yang sudah ada "
"pada %s saat penamaan ulang direktori menempatkan jalur berikut di sana: %s."
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -21913,7 +22033,7 @@ msgstr ""
"ulang %s; itu dinamai ulang ke banyak direktori lainnya, dengan tiada tujuan "
"mendapatkan mayoritas berkas."
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
@@ -21922,7 +22042,7 @@ msgstr ""
"PERINGATAN: Menghindari menerapkan penamaan ulang %s -> %s ke %s, karena %s-"
"nya sendiri dinamai ulang."
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -21931,7 +22051,7 @@ msgstr ""
"Jalur diperbarui: %s menambahkan %s di dalam sebuah direktori yang dinamai "
"ulang di %s; memindahkan ke %s."
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -21940,7 +22060,7 @@ msgstr ""
"Jalur diperbarui: %s dinamai ulang ke %s di %s, di dalam sebuah direktori "
"yang dinamai ulang di %s; memindahkan ke %s."
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -21949,7 +22069,7 @@ msgstr ""
"KONFLIK (lokasi berkas): %s menambahkan %s di dalam sebuah direktori yang "
"dinamai ulang di %s, menyarankan mungkin dipindahkan ke %s."
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -22020,19 +22140,19 @@ msgstr ""
"KONFLIK (tipe berbeda): %s punya tipe berbeda pada setiap sisi; salah "
"satunya dinamai ulang sehingga masing-masing dapat direkam di suatu tempat."
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
msgid "content"
msgstr "konten"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
msgid "add/add"
msgstr "penambahan/penambahan"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
msgid "submodule"
msgstr "submodul"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "CONFLICT (%s): Merge conflict in %s"
msgstr "KONFLIK (%s): Konflik penggabungan di %s"
@@ -22096,325 +22216,6 @@ msgstr ""
msgid "collecting merge info failed for trees %s, %s, %s"
msgstr "pengumpulan info penggabungan gagal untuk pohon %s, %s, dan %s"
-#: merge-recursive.c
-msgid "(bad commit)\n"
-msgstr "(komit jelek)\n"
-
-#: merge-recursive.c
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "add_cacheinfo gagal untuk jalur '%s'; penggabungan dibatalkan."
-
-#: merge-recursive.c
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr ""
-"add_cacheinfo gagal menyegarkan untuk jalur '%s'; penggabungan dibatalkan."
-
-#: merge-recursive.c
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "gagal membuat jalur '%s'%s"
-
-#: merge-recursive.c
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "Menghapus %s untuk membuat ruang untuk subdirektori\n"
-
-#: merge-recursive.c
-msgid ": perhaps a D/F conflict?"
-msgstr ": mungkin konflik direktori/berkas?"
-
-#: merge-recursive.c
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "menolak menghilangkan berkas tak terlacak pada '%s'"
-
-#: merge-recursive.c
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "blob diharapkan untuk %s '%s'"
-
-#: merge-recursive.c
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "gagal membuka '%s': %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "gagal menautkan simbolik '%s': %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "tidak tahu apa yang dilakukan dengan %06o %s '%s'"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (repository corrupt)"
-msgstr "Gagal menggabungkan submodul %s (repositori rusak)"
-
-#: merge-recursive.c
-#, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "Memaju-cepat submodul %s ke komit berikut:"
-
-#: merge-recursive.c
-#, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Memaju-cepat submodul %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr ""
-"Gagal menggabungkan submodul %s (penggabungan komit berikutnya tidak "
-"ditemukan)"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "Gagal menggabungkan submodul %s (bukan maju-cepat)"
-
-#: merge-recursive.c
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "Sebuah resolusi penggabungan yang mungkin ditemukan untuk submodul:\n"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"If this is correct simply add it to the index for example\n"
-"by using:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"which will accept this suggestion.\n"
-msgstr ""
-"Jika benar, cukup misalkan tambahkan ke indeks dengan menggunakan:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"yang akan menerima saran ini.\n"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "Gagal menggabungkan submodul %s (banyak penggabungan ditemukan)"
-
-#: merge-recursive.c
-msgid "failed to execute internal merge"
-msgstr "gagal menjalankan penggabungan internal"
-
-#: merge-recursive.c
-#, c-format
-msgid "unable to add %s to database"
-msgstr "tidak dapat menambahkan %s ke basis data"
-
-#: merge-recursive.c
-#, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr ""
-"Kesalahan: Menolak menghilangkan berkas tak terlacak pada %s; menulis ke %s "
-"sebagai gantinya."
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
-msgstr ""
-"KONFLIK (%s/penghapusan): %s dihapus di %s dan %s di %s. Versi %s dari %s "
-"ditinggalkan di dalam pohon."
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
-msgstr ""
-"KONFLIK (%s/penghapusan): %s dihapus di %s dan %s ke %s di %s. Versi %s dari "
-"%s ditinggalkan di dalam pohon."
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
-msgstr ""
-"KONFLIK (%s/penghapusan): %s dihapus di %s dan %s di %s. Versi %s dari %s "
-"ditinggalkan di dalam pohon pada %s."
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree at %s."
-msgstr ""
-"KONFLIK (%s/penghapusan): %s dihapus di %s dan %s ke %s di %s. Versi %s dari "
-"%s ditinggalkan di dalam pohon pada %s."
-
-#: merge-recursive.c
-msgid "rename"
-msgstr "penamaan ulang"
-
-#: merge-recursive.c
-msgid "renamed"
-msgstr "dinamai ulang"
-
-#: merge-recursive.c
-#, c-format
-msgid "Refusing to lose dirty file at %s"
-msgstr "Menolak menghilangkan berkas kotor pada %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "Refusing to lose untracked file at %s, even though it's in the way."
-msgstr ""
-"Menolak menghilangkan berkas tak terlacak pada %s, bahkan jika itu berjalan."
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
-msgstr ""
-"KONFLIK (penamaan ulang/penambahan): Penamaan ulang %s-%s di %s. %s "
-"ditambahkan di %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "%s is a directory in %s adding as %s instead"
-msgstr ""
-"%s adalah sebuah direktori dalam %s menambahkan sebagai %s sebagai gantinya"
-
-#: merge-recursive.c
-#, c-format
-msgid "Refusing to lose untracked file at %s; adding as %s instead"
-msgstr ""
-"Menolak menghilangkan berkas tak terlacak pada %s; menambahkan sebagai %s "
-"sebagai gantinya"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
-"\"%s\"->\"%s\" in \"%s\"%s"
-msgstr ""
-"KONFLIK (penamaan ulang/penamaan ulang): Penamaan ulang \"%s\"->\"%s\" di "
-"dalam cabang \"%s\" penamaan ulang \"%s\"->\"%s\" di \"%s\"%s"
-
-#: merge-recursive.c
-msgid " (left unresolved)"
-msgstr " dibiarkan tak diselesaikan"
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
-msgstr ""
-"KONFLIK (penamaan ulang/penamaan ulang): Penamaan ulang %s->%s di %s. "
-"Penamaan ulang %s->%s di %s"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (directory rename split): Unclear where to place %s because "
-"directory %s was renamed to multiple other directories, with no destination "
-"getting a majority of the files."
-msgstr ""
-"KONFLIK (pemecahan penamaan ulang direktori): Tidak jelas dimana untuk "
-"menempatkan %s karena direktori %s dinamai ulang ke banyak direktori "
-"lainnya, dengan tidak ada tujuan yang mendapatkan mayoritas berkas."
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
-">%s in %s"
-msgstr ""
-"KONFLIK (penamaan ulang/penamaan ulang): Penamaan ulang direktori %s->%s di "
-"%s. Penamaan ulang %s->%s di %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "cannot read object %s"
-msgstr "tidak dapat membaca objek %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "object %s is not a blob"
-msgstr "objek %s bukanlah sebuah blob"
-
-#: merge-recursive.c
-msgid "modify"
-msgstr "ubah"
-
-#: merge-recursive.c
-msgid "modified"
-msgstr "diubah"
-
-#: merge-recursive.c
-#, c-format
-msgid "Skipped %s (merged same as existing)"
-msgstr "%s dilewatkan (digabungkan sama seperti yang ada)"
-
-#: merge-recursive.c
-#, c-format
-msgid "Adding as %s instead"
-msgstr "Menambahkan sebagai %s sebagai gantinya"
-
-#: merge-recursive.c
-#, c-format
-msgid "Removing %s"
-msgstr "Menghapus %s"
-
-#: merge-recursive.c
-msgid "file/directory"
-msgstr "berkas/direktori"
-
-#: merge-recursive.c
-msgid "directory/file"
-msgstr "direktori/berkas"
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
-msgstr ""
-"KONFLIK (%s): Ada direktori dengan nama %s di %s. Menambahakn %s sebagai %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "Adding %s"
-msgstr "Menambahkan %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (add/add): Merge conflict in %s"
-msgstr "KONFLIK (penambahan/penambahan): Konflik penggabungan di %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "merging of trees %s and %s failed"
-msgstr "penggabungan pohon %s dan %s gagal"
-
-#: merge-recursive.c
-msgid "Merging:"
-msgstr "Menggabungkan:"
-
-#: merge-recursive.c
-#, c-format
-msgid "found %u common ancestor:"
-msgid_plural "found %u common ancestors:"
-msgstr[0] "%u leluhur umum ditemukan:"
-msgstr[1] "%u leluhur umum ditemukan:"
-
-#: merge-recursive.c
-msgid "merge returned no commit"
-msgstr "penggabungan tidak mengembalikan komit"
-
-#: merge-recursive.c
-#, c-format
-msgid "Could not parse object '%s'"
-msgstr "Tidak dapat menguraikan objek '%s'"
-
#: merge.c
msgid "failed to read the cache"
msgstr "gagal membaca tembolok"
@@ -22468,14 +22269,15 @@ msgid "failed to clear multi-pack-index at %s"
msgstr "gagal membersihkan indeks multipak pada %s"
#: midx-write.c
-msgid "cannot write incremental MIDX with bitmap"
-msgstr "tidak dapat menulis MIDX tambahan dengan bitmap"
-
-#: midx-write.c
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr "abaikan indeks multipak yang sudah ada; checksum tidak cocok"
#: midx-write.c
+#, c-format
+msgid "could not load reverse index for MIDX %s"
+msgstr "tidak dapat memuat indeks balik untuk MIDX %s"
+
+#: midx-write.c
msgid "Adding packfiles to multi-pack-index"
msgstr "Menambahkan berkas pak ke indeks multipak"
@@ -22797,79 +22599,6 @@ msgstr "Gagal mengkonversi objek dari %s ke %s"
#: object-file.c
#, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "direktori objek %s tidak ada; periksa .git/objects/info/alternates"
-
-#: object-file.c
-#, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "tidak dapat menormalisasikan jalur objek alternatif: %s"
-
-#: object-file.c
-#, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s: mengabaikan penyimpanan objek alternatif, bersarang terlalu dalam"
-
-#: object-file.c
-msgid "unable to fdopen alternates lockfile"
-msgstr "tidak dapat men-fdopen berkas kunci alternatif"
-
-#: object-file.c
-msgid "unable to read alternates file"
-msgstr "tidak dapat membaca berkas alternatif"
-
-#: object-file.c
-msgid "unable to move new alternates file into place"
-msgstr "tidak dapat memindahkan berkas alternatif baru ke tempatnya"
-
-#: object-file.c
-#, c-format
-msgid "path '%s' does not exist"
-msgstr "jalur '%s' tidak ada"
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr ""
-"repositori referensi '%s' sebagai sebuah checkout tertaut belum didukung."
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "repositori referensi '%s' bukan sebuah repositori lokal"
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "repositori referensi '%s' dangkal"
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "repositori referensi '%s' cangkok"
-
-#: object-file.c
-#, c-format
-msgid "could not find object directory matching %s"
-msgstr "tidak dapat menemukan direktori objek yang cocok dengan %s"
-
-#: object-file.c
-#, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "baris tidak valid saat menguraikan referensi alternatif: %s"
-
-#: object-file.c
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "mencoba men-mmap %<PRIuMAX> di atas batas %<PRIuMAX>"
-
-#: object-file.c
-#, c-format
-msgid "mmap failed%s"
-msgstr "mmap gagal%s"
-
-#: object-file.c
-#, c-format
msgid "object file %s is empty"
msgstr "berkas objek %s kosong"
@@ -22914,21 +22643,6 @@ msgstr "objek longgar %s (disimpan di %s) rusak"
#: object-file.c
#, c-format
-msgid "replacement %s not found for %s"
-msgstr "pengganti %s tidak ditemukan untuk %s"
-
-#: object-file.c
-#, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "objek terpak %s (disimpan di %s) rusak"
-
-#: object-file.c
-#, c-format
-msgid "missing mapping of %s to %s"
-msgstr "pemetaan %s ke %s hilang"
-
-#: object-file.c
-#, c-format
msgid "unable to open %s"
msgstr "tidak dapat membuka %s"
@@ -23047,11 +22761,6 @@ msgstr "%s: tipe berkas tidak didukung"
#: object-file.c
#, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s bukan sebuah objek '%s' valid"
-
-#: object-file.c
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "hash tidak cocok untuk %s (diharapkan %s)"
@@ -23072,6 +22781,11 @@ msgstr "tidak dapat menguraikan kepala %s"
#: object-file.c
#, c-format
+msgid "unable to parse type from header '%s' of %s"
+msgstr "tidak dapat menguraikan tipe dari kepala '%s' dari '%s'"
+
+#: object-file.c
+#, c-format
msgid "unable to unpack contents of %s"
msgstr "tidak dapat membongkar isi %s"
@@ -23248,6 +22962,89 @@ msgstr "<objek>:<jalur> diperlukan, hanya <objek> '%s' diberikan"
msgid "invalid object name '%.*s'."
msgstr "nama objek tidak valid '%.*s'."
+#: object-store.c
+#, c-format
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "direktori objek %s tidak ada; periksa .git/objects/info/alternates"
+
+#: object-store.c
+#, c-format
+msgid "unable to normalize alternate object path: %s"
+msgstr "tidak dapat menormalisasikan jalur objek alternatif: %s"
+
+#: object-store.c
+#, c-format
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s: mengabaikan penyimpanan objek alternatif, bersarang terlalu dalam"
+
+#: object-store.c
+msgid "unable to fdopen alternates lockfile"
+msgstr "tidak dapat men-fdopen berkas kunci alternatif"
+
+#: object-store.c
+msgid "unable to read alternates file"
+msgstr "tidak dapat membaca berkas alternatif"
+
+#: object-store.c
+msgid "unable to move new alternates file into place"
+msgstr "tidak dapat memindahkan berkas alternatif baru ke tempatnya"
+
+#: object-store.c
+#, c-format
+msgid "path '%s' does not exist"
+msgstr "jalur '%s' tidak ada"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr ""
+"repositori referensi '%s' sebagai sebuah checkout tertaut belum didukung."
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is not a local repository."
+msgstr "repositori referensi '%s' bukan sebuah repositori lokal"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is shallow"
+msgstr "repositori referensi '%s' dangkal"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is grafted"
+msgstr "repositori referensi '%s' cangkok"
+
+#: object-store.c
+#, c-format
+msgid "could not find object directory matching %s"
+msgstr "tidak dapat menemukan direktori objek yang cocok dengan %s"
+
+#: object-store.c
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "baris tidak valid saat menguraikan referensi alternatif: %s"
+
+#: object-store.c
+#, c-format
+msgid "replacement %s not found for %s"
+msgstr "pengganti %s tidak ditemukan untuk %s"
+
+#: object-store.c
+#, c-format
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "objek terpak %s (disimpan di %s) rusak"
+
+#: object-store.c
+#, c-format
+msgid "missing mapping of %s to %s"
+msgstr "pemetaan %s ke %s hilang"
+
+#: object-store.c
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s bukan sebuah objek '%s' valid"
+
#: object.c
#, c-format
msgid "invalid object type \"%s\""
@@ -23601,6 +23398,16 @@ msgstr "%s tidak ada"
#: parse-options.c
#, c-format
+msgid "value %s for %s not in range [%<PRIdMAX>,%<PRIdMAX>]"
+msgstr "nilai %s untuk %s di luar rentang [%<PRIdMAX>,%<PRIdMAX>]"
+
+#: parse-options.c
+#, c-format
+msgid "%s expects an integer value with an optional k/m/g suffix"
+msgstr "%s mengharapkan nilai bilangan bulat dengan akhiran opsional k/m/g"
+
+#: parse-options.c
+#, c-format
msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
msgstr ""
"%s mengharapkan nilai bilangan bulat non negatif dengan akhiran opsional k/m/"
@@ -23787,11 +23594,6 @@ msgstr ""
msgid "bad boolean environment value '%s' for '%s'"
msgstr "nilai lingkungan boolean '%s' jelek untuk '%s'"
-#: parse.c
-#, c-format
-msgid "failed to parse %s"
-msgstr "gagal menguraikan %s"
-
#: path-walk.c
#, c-format
msgid "failed to walk children of tree %s: not found"
@@ -23999,8 +23801,13 @@ msgstr "tidak dapat mengambil %s dari remote penjanji"
#: promisor-remote.c
#, c-format
-msgid "known remote named '%s' but with url '%s' instead of '%s'"
-msgstr "remote yang terkenal bernama '%s' tapi dengan url '%s' daripada '%s'"
+msgid "no or empty URL advertised for remote '%s'"
+msgstr "tidak ada URL atau URL kosong yang diiklankan untuk remote '%s'"
+
+#: promisor-remote.c
+#, c-format
+msgid "known remote named '%s' but with URL '%s' instead of '%s'"
+msgstr "remote yang terkenal bernama '%s' tapi dengan URL '%s' daripada '%s'"
#: promisor-remote.c
#, c-format
@@ -24931,6 +24738,11 @@ msgstr "tidak dapat membuka direktori %s"
msgid "Checking references consistency"
msgstr "Memeriksa konsistensi referensi"
+#: refs/packed-backend.c
+#, c-format
+msgid "unable to open '%s'"
+msgstr "tidak dapat membuka '%s'"
+
#: refs/reftable-backend.c
#, c-format
msgid "refname is dangerous: %s"
@@ -25016,11 +24828,6 @@ msgstr "nama referensi %s simbolik, menyalinnya tidak didukung"
#: refspec.c
#, c-format
-msgid "invalid refspec '%s'"
-msgstr "spek referensi tidak valid '%s'"
-
-#: refspec.c
-#, c-format
msgid "pattern '%s' has no '*'"
msgstr "pola '%s' tidak mempunyai '*'"
@@ -25688,8 +25495,8 @@ msgid "could not set recommended config"
msgstr "tidak dapat menyetel konfigurasi yang direkomendasikan"
#: scalar.c
-msgid "could not turn on maintenance"
-msgstr "tidak dapat mengaktifkan pemeliharaan"
+msgid "could not toggle maintenance"
+msgstr "tidak dapat mengalihkan pemeliharaan"
#: scalar.c
msgid "could not start the FSMonitor daemon"
@@ -25747,15 +25554,19 @@ msgstr "salin repositori di dalam direktori 'src'"
#: scalar.c
msgid "specify if tags should be fetched during clone"
-msgstr "rincikan jikan tag hendak diambil selama kloning"
+msgstr "rincikan jika tag hendak diambil selama kloning"
+
+#: scalar.c
+msgid "specify if background maintenance should be enabled"
+msgstr "rincikan jika pemeliharaan balik layar hendak diaktifkan"
#: scalar.c
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <cabang utama>] [--full-clone]\n"
-"\t[--[-no-]src] [--[no-]tags] <url> [<pendaftaran>]"
+"\t[--[-no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<pendaftaran>]"
#: scalar.c
#, c-format
@@ -25804,16 +25615,28 @@ msgid "`scalar list` does not take arguments"
msgstr "`scalar list` tidak mengambil argumen"
#: scalar.c
-msgid "scalar register [<enlistment>]"
-msgstr "scalar register [<pendaftaran>]"
+msgid "scalar register [--[no-]maintenance] [<enlistment>]"
+msgstr "scalar register [--[no-]maintenance] [<pendaftaran>]"
#: scalar.c
msgid "reconfigure all registered enlistments"
msgstr "konfigurasi ulang semua pendaftaran yang terdaftar"
#: scalar.c
-msgid "scalar reconfigure [--all | <enlistment>]"
-msgstr "scalar reconfigure [--all | <pendaftaran>]"
+msgid "(enable|disable|keep)"
+msgstr "(enable|disable|keep)"
+
+#: scalar.c
+msgid "signal how to adjust background maintenance"
+msgstr "beri sinyal bagaimana pemeliharaan balik layar diatur"
+
+#: scalar.c
+msgid ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enlistment>]"
+msgstr ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<pendaftaran>]"
#: scalar.c
msgid "--all or <enlistment>, but not both"
@@ -25821,6 +25644,11 @@ msgstr "--all atau <pendaftaran>, tetapi bukan kedua-duanya"
#: scalar.c
#, c-format
+msgid "unknown mode for --maintenance option: %s"
+msgstr "mode untuk --maintenance tidak dikenal: %s"
+
+#: scalar.c
+#, c-format
msgid "could not remove stale scalar.repo '%s'"
msgstr "tidak dapat menghapus scalar.repo basi '%s'"
@@ -27560,6 +27388,10 @@ msgstr "bersihkan pohon tembolok sebelum setiap iterasi"
msgid "number of entries in the cache tree to invalidate (default 0)"
msgstr "jumlah entri di dalam pohon tembolok untuk dinirvalidasi (asali 0)"
+#: t/helper/test-pack-deltas.c
+msgid "the number of objects to write"
+msgstr "jumlah objek tertulis yang ditulis"
+
#: t/helper/test-path-walk.c
msgid "test-tool path-walk <options> -- <revision-options>"
msgstr "test-tool path-walk <opsi> -- <opsi revisi>"
@@ -28503,6 +28335,16 @@ msgstr "tidak dapat mendapatkan direktori kerja saat ini"
msgid "unable to get random bytes"
msgstr "tidak dapat mendapatkan bita acak"
+#: wrapper.c
+#, c-format
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "mencoba men-mmap %<PRIuMAX> di atas batas %<PRIuMAX>"
+
+#: wrapper.c
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap gagal%s"
+
#: wt-status.c
msgid "Unmerged paths:"
msgstr "Jalur yang tak tergabung:"
@@ -29421,6 +29263,15 @@ msgstr ""
#: git-send-email.perl
#, perl-format
+msgid "Outlook reassigned Message-ID to: %s\n"
+msgstr "Outlook memberikan ulang Message-ID ke: %s\n"
+
+#: git-send-email.perl
+msgid "Warning: Could not retrieve Message-ID from server response.\n"
+msgstr "Peringatan: Tidak dapat mengambil Message-ID dari respons peladen.\n"
+
+#: git-send-email.perl
+#, perl-format
msgid "Failed to send %s\n"
msgstr "Gagal mengirim %s\n"
diff --git a/po/tr.po b/po/tr.po
index 4ed91cbd97..9f5edc1d0c 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -96,8 +96,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git Turkish Localization Project\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2025-03-11 15:01+0300\n"
-"PO-Revision-Date: 2025-03-11 15:00+0300\n"
+"POT-Creation-Date: 2025-05-29 11:02+0300\n"
+"PO-Revision-Date: 2025-05-29 12:00+0300\n"
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
"Language-Team: Turkish (https://github.com/bitigchi/git-po/)\n"
"Language: tr\n"
@@ -3333,11 +3333,8 @@ msgstr "yalnızca bir toplu iş seçeneği belirtilebilir"
msgid "git cat-file <type> <object>"
msgstr "git cat-file <tür> <nesne>"
-msgid "git cat-file (-e | -p) <object>"
-msgstr "git cat-file (-e | -p) <nesne>"
-
-msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
-msgstr "git cat-file (-t | -s) [--allow-unknown-type] <nesne>"
+msgid "git cat-file (-e | -p | -t | -s) <object>"
+msgstr "git cat-file (-e | -p | -t | -s) <nesne>"
msgid ""
"git cat-file (--textconv | --filters)\n"
@@ -3352,10 +3349,9 @@ msgid ""
" [--buffer] [--follow-symlinks] [--unordered]\n"
" [--textconv | --filters] [-Z]"
msgstr ""
-"git cat-file (--batch | --batch-check | --batch-command) [--batch-all-"
-"objects]\n"
-" [--buffer] [--follow-symlinks] [--unordered]\n"
-" [--textconv | --filters] [-Z]"
+"git cat-file (--batch | --batch-check | --batch-command)\n"
+" [--batch-all-objects] [--buffer] [--follow-symlinks]\n"
+" [--unordered] [--textconv | --filters] [-Z]"
msgid "Check object existence or emit object contents"
msgstr "Nesne varlığını denetle veya nesne içeriğini yay"
@@ -3375,9 +3371,6 @@ msgstr "nesne türünü göster (türler: 'blob', 'tree', 'commit', 'tag', ...)"
msgid "show object size"
msgstr "nesne boyutunu göster"
-msgid "allow -s and -t to work with broken/corrupt objects"
-msgstr "-s ve -t'nin bozuk/hasarlı nesnelerle çalışmasına izin ver"
-
msgid "use mail map file"
msgstr "posta eşlem dosyasını kullan"
@@ -3435,6 +3428,13 @@ msgid "use a <path> for (--textconv | --filters); Not with 'batch'"
msgstr ""
"(--textconv | --filters) için bir <yol> kullan; ancak 'batch' ile değil"
+msgid "objects filter only supported in batch mode"
+msgstr "nesneler süzgeci yalnızca toplu iş kipinde desteklenir"
+
+#, c-format
+msgid "objects filter not supported: '%s'"
+msgstr "nesne süzgeci desteklenmiyor: '%s'"
+
#, c-format
msgid "'%s=<%s>' needs '%s' or '%s'"
msgstr "'%s=<%s>' için '%s' veya '%s' gerekiyor"
@@ -5695,6 +5695,50 @@ msgstr "dosya adı için bir strftime biçimli ek belirtin"
msgid "specify the content of the diagnostic archive"
msgstr "tanı arşivinin içeriğini belirtin"
+#, c-format
+msgid "unable to parse mode: %s"
+msgstr "kip ayrıştırılamıyor: %s"
+
+#, c-format
+msgid "unable to parse object id: %s"
+msgstr "nesne kimliği ayrıştırılamıyor: %s"
+
+msgid "git diff-pairs -z [<diff-options>]"
+msgstr "git diff-pairs -z [<diff-seçenekleri>]"
+
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "tanımlanamayan argüman: %s"
+
+msgid "working without -z is not supported"
+msgstr "-z olmadan çalışma desteklenmiyor"
+
+msgid "pathspec arguments not supported"
+msgstr "yol belirteci argümanları desteklenmiyor"
+
+msgid "revision arguments not allowed"
+msgstr "revizyon argümanlarına izin verilmiyor"
+
+msgid "invalid raw diff input"
+msgstr "geçersiz ham diff girişi"
+
+msgid "tree objects not supported"
+msgstr "ağaç nesneleri desteklenmiyor"
+
+msgid "got EOF while reading path"
+msgstr "yol okunurken dosya sonu alındı"
+
+msgid "got EOF while reading destination path"
+msgstr "hedef yol okunurken dosya sonu alındı"
+
+#, c-format
+msgid "unable to parse rename/copy score: %s"
+msgstr "yeniden adlandır/kopyala puanı ayrıştırılamıyor: %s"
+
+#, c-format
+msgid "unknown diff status: %c"
+msgstr "bilinmeyen diff durumu: %c"
+
msgid "--merge-base only works with two commits"
msgstr "--merge-base yalnızca iki işleme ile kullanılabilir"
@@ -5837,6 +5881,9 @@ msgstr "<n> nesneden sonra ilerlemeyi göster"
msgid "select handling of signed tags"
msgstr "imzalanan etiketlerin nasıl ele alınacağını seçin"
+msgid "select handling of signed commits"
+msgstr "imzalanan işlemelerin nasıl ele alınacağını seçin"
+
msgid "select handling of tags that tag filtered objects"
msgstr "nesnelerce süzülen etiketlerin nasıl ele alınacağını seçin"
@@ -6478,10 +6525,6 @@ msgid "%s: object corrupt or missing: %s"
msgstr "%s: nesne hasarlı veya kayıp: %s"
#, c-format
-msgid "%s: object is of unknown type '%s': %s"
-msgstr "%s: nesne bilinmeyen bir türde: '%s': %s"
-
-#, c-format
msgid "%s: object could not be parsed: %s"
msgstr "%s: nesne ayrıştırılamadı: %s"
@@ -6538,16 +6581,19 @@ msgstr "'%s' paketi için rev-index yüklenemiyor"
msgid "invalid rev-index for pack '%s'"
msgstr "'%s' paketi için geçersiz rev-index"
+msgid "Checking ref database"
+msgstr "Başvuru günlüğü denetleniyor"
+
msgid ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<object>...]"
+" [--[no-]name-objects] [--[no-]references] [<object>...]"
msgstr ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<nesne>...]"
+" [--[no-]name-objects] [--[no-]references] [<nesne>...]"
msgid "show unreachable objects"
msgstr "ulaşılamayan nesneleri göster"
@@ -6585,6 +6631,9 @@ msgstr "ilerlemeyi göster"
msgid "show verbose names for reachable objects"
msgstr "ulaşılabilir nesneler için ayrıntılı adları göster"
+msgid "check reference database consistency"
+msgstr "başvuru veritabanı tutarlılığını denetle"
+
msgid "Checking objects"
msgstr "Nesneler denetleniyor"
@@ -7726,10 +7775,6 @@ msgstr ""
"<dosya> içindeki <başlangıç>,<bitiş> satır eriminin veya :<işlevadı> "
"işlevinin evrimini izle"
-#, c-format
-msgid "unrecognized argument: %s"
-msgstr "tanımlanamayan argüman: %s"
-
msgid "-L<range>:<file> cannot be used with pathspec"
msgstr "-L<erim>:<dosya>, yol belirteci ile kullanılamıyor"
@@ -8373,6 +8418,9 @@ msgstr "yalnızca bir önemsiz birleştirme yap"
msgid "also show informational/conflict messages"
msgstr "ayrıcı bilgi/çakışma iletilerini göster"
+msgid "suppress all output; only exit status wanted"
+msgstr "tüm çıktıyı sustur; yalnızca çıkış durumu istenir"
+
msgid "list filenames without modes/oids/stages"
msgstr "kipi/oid'si/hazırlığı olmayan dosya adlarını listele"
@@ -8772,8 +8820,11 @@ msgstr ""
"yeniden paketleme sırasında daha küçük boyutlu paket dosyalarını bu boyuttan "
"daha büyük bir toplu iş olarak toplayın"
-msgid "git mv [<options>] <source>... <destination>"
-msgstr "git mv [<seçenekler>] <kaynak>... <hedef>"
+msgid "git mv [-v] [-f] [-n] [-k] <source> <destination>"
+msgstr "git mv [-v] [-f] [-n] [-k] <kaynak> <hedef>"
+
+msgid "git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>"
+msgstr "git mv [-v] [-f] [-n] [-k] <kaynak>... <hedef-dizin>"
#, c-format
msgid "Directory %s is in index and no submodule?"
@@ -8844,6 +8895,10 @@ msgid "%s, source=%s, destination=%s"
msgstr "%s, kaynak=%s, hedef:%s"
#, c-format
+msgid "cannot move both '%s' and its parent directory '%s'"
+msgstr "hem '%s' ve onun üst dizini '%s' taşınamıyor"
+
+#, c-format
msgid "Renaming %s to %s\n"
msgstr "%s, %s olarak yeniden adlandırılıyor\n"
@@ -9763,6 +9818,10 @@ msgstr ""
msgid "unable to access commit %s"
msgstr "%s işlemesine erişilemedi"
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "geçersiz başvuru belirteci '%s'"
+
msgid "ignoring --verify-signatures for rebase"
msgstr "yeniden temellendirme için --verify-signatures yok sayılıyor"
@@ -10721,6 +10780,9 @@ msgstr ""
msgid "git reflog exists <ref>"
msgstr "git reflog exists <başvuru>"
+msgid "git reflog drop [--all [--single-worktree] | <refs>...]"
+msgstr "git reflog drop [--all [--single-worktree] | <başvurular>...]"
+
#, c-format
msgid "invalid timestamp '%s' given to '--%s'"
msgstr "geçersiz zaman damgası '%s', '--%s' argümanına verildi"
@@ -10770,8 +10832,8 @@ msgid "Marking reachable objects..."
msgstr "Ulaşılabilir nesneler imleniyor..."
#, c-format
-msgid "%s points nowhere!"
-msgstr "%s hiçbir yere işaret etmiyor!"
+msgid "reflog could not be found: '%s'"
+msgstr "başvuru günlüğü bulunamadı: '%s'"
msgid "no reflog specified to delete"
msgstr "silmek için bir başvuru günlüğü belirtilmedi"
@@ -10780,6 +10842,15 @@ msgstr "silmek için bir başvuru günlüğü belirtilmedi"
msgid "invalid ref format: %s"
msgstr "geçersiz başvuru biçimi: %s"
+msgid "drop the reflogs of all references"
+msgstr "tüm başvuruların başvuru günlüklerini bırak"
+
+msgid "drop reflogs from the current worktree only"
+msgstr "yalnızca geçerli çalışma ağacından olan başvuru günlüklerini bırak"
+
+msgid "references specified along with --all"
+msgstr "--all ile belirtilmiş başvurular"
+
msgid "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
msgstr "git refs migrate --ref-format=<biçim> [--no-reflog] [--dry-run]"
@@ -11333,6 +11404,9 @@ msgstr "yaklaşık tarih"
msgid "with --cruft, expire objects older than this"
msgstr "--cruft ile bundan daha eski nesneleri yürürlükten kaldır"
+msgid "with --cruft, only repack cruft packs smaller than this"
+msgstr "--cruft ile yalnızca bundan daha küçük paketleri yeniden paketle"
+
msgid "remove redundant packs, and run git-prune-packed"
msgstr "gereksiz paketleri kaldır ve 'git-prune-packed' çalıştır"
@@ -11809,6 +11883,9 @@ msgstr "%s ögesinin disk kullanımı alınamıyor"
msgid "invalid value for '%s': '%s', the only allowed format is '%s'"
msgstr "'%s' için geçersiz değer: '%s', tek izin verilen biçim '%s'"
+msgid "-z option used with unsupported option"
+msgstr "-z seçeneği desteklenmeyen seçenekle kullanıldı"
+
msgid "rev-list does not support display of notes"
msgstr "rev-list not görüntülemesini desteklemiyor"
@@ -13652,8 +13729,8 @@ msgid "git update-ref [<options>] <refname> <new-oid> [<old-oid>]"
msgstr ""
"git update-ref [<seçenekler>] <bşvr-adı> <yeni-n-kiml> [<eski-n-kiml>]"
-msgid "git update-ref [<options>] --stdin [-z]"
-msgstr "git update-ref [<seçenekler>] --stdin [-z]"
+msgid "git update-ref [<options>] --stdin [-z] [--batch-updates]"
+msgstr "git update-ref [<seçenekler>] --stdin [-z] [--batch-updates]"
msgid "delete the reference"
msgstr "başvuruyu sil"
@@ -13667,6 +13744,9 @@ msgstr "stdin'de NUL ile sonlandırılan argümanlar var"
msgid "read updates from stdin"
msgstr "güncellemeleri stdin'den oku"
+msgid "batch reference updates"
+msgstr "toplu başvuru güncellemeleri"
+
msgid "update the info files from scratch"
msgstr "bilgi dosyalarını en baştan güncelle"
@@ -14236,10 +14316,10 @@ msgid "Download missing objects in a partial clone"
msgstr "Eksik nesneleri kısımsal bir klonda indir"
msgid "Use binary search to find the commit that introduced a bug"
-msgstr "Hatalara neden olan işlemeyi bulmada ikili arama kullan"
+msgstr "Hatalara neden olan işlemeyi ikili aramayla bul"
msgid "Show what revision and author last modified each line of a file"
-msgstr "Dosya satırlarını son değiştiren revizyon/yazarı göster"
+msgstr "Dosya satırına son elleyen revizyonu/yazarı göster"
msgid "List, create, or delete branches"
msgstr "Dal oluştur, sil veya listele"
@@ -14266,7 +14346,7 @@ msgid "Ensures that a reference name is well formed"
msgstr "Bir başvuru adının düzgünce oluşturulduğundan emin ol"
msgid "Switch branches or restore working tree files"
-msgstr "Dal değiştir veya çalışma ağacını eski haline geri getir"
+msgstr "Dal değiştir/çalışma ağacını eski haline geri getir"
msgid "Copy files from the index to the working tree"
msgstr "Dosyaları indeksten çalışma ağacına kopyala"
@@ -14275,7 +14355,7 @@ msgid "Find commits yet to be applied to upstream"
msgstr "Henüz üstkaynağa uygulanmayan işlemeleri bul"
msgid "Apply the changes introduced by some existing commits"
-msgstr "Mevcut bazı işlemelerin getirdiği değişiklikleri uygula"
+msgstr "Bazı işlemelerin getirdiği değişiklikleri uygula"
msgid "Graphical alternative to git-commit"
msgstr "git-commit için grafik tabanlı alternatif"
@@ -14308,7 +14388,7 @@ msgid "Retrieve and store user credentials"
msgstr "Kullanıcı yetkilerini al ve depola"
msgid "Helper to temporarily store passwords in memory"
-msgstr "Parolaları geçici olarak bellekte saklamak için yardımcı"
+msgstr "Parolaları geçicide bellekte saklamak için yardımcı"
msgid "Helper to store credentials on disk"
msgstr "Yetkileri diskte saklamak için yardımcı"
@@ -14326,7 +14406,7 @@ msgid "A really simple server for Git repositories"
msgstr "Git depoları için gerçekten yalın bir sunucu"
msgid "Give an object a human readable name based on an available ref"
-msgstr "Uygun bir başvuruyu temel alıp nesneye okunabilir ad ver"
+msgstr "Uygun bir başvuru temeliyle nesneye okunabilir ad ver"
msgid "Generate a zip archive of diagnostic information"
msgstr "Tanı bilgisinin bir zip arşivini oluştur"
@@ -14340,8 +14420,12 @@ msgstr "İndeksteki ve çalışma ağacındaki dosyaları sıkıştır"
msgid "Compare a tree to the working tree or index"
msgstr "Bir ağacı çalışma ağacı veya indeks ile karşılaştır"
+msgid "Compare the content and mode of provided blob pairs"
+msgstr "İkili çiftinin içeriğini ve kipini kıyasla"
+
msgid "Compares the content and mode of blobs found via two tree objects"
-msgstr "İki ağaç nesnesiyle bulunan ikililerin içerik/kipini karşılaştır"
+msgstr ""
+"İki ağaç nesnesiyle bulunan ikililerin içeriğini ve kipini karşılaştırır"
msgid "Show changes using common diff tools"
msgstr "Değişiklikleri yaygın diff araçlarıyla göster"
@@ -14374,13 +14458,13 @@ msgid "Prepare patches for e-mail submission"
msgstr "E-posta teslimi için yamaları hazırla"
msgid "Verifies the connectivity and validity of the objects in the database"
-msgstr "Veritab. nesnelerin bağlanırlığını ve geçerliliğini sına"
+msgstr "Veri nesnesinin bağlanırlığını ve geçerliliğini sına"
msgid "Cleanup unnecessary files and optimize the local repository"
msgstr "Gereksiz dosyaları temizle ve yerel depoyu eniyile"
msgid "Extract commit ID from an archive created using git-archive"
-msgstr "İşleme iletisini bir git-archive arşivinden çıkartıp al"
+msgstr "İşleme iletisini git-archive arşivinden çıkarıp al"
msgid "Print lines matching a pattern"
msgstr "Bir dizgi ile eşleşen satırları yazdır"
@@ -14389,7 +14473,7 @@ msgid "A portable graphical interface to Git"
msgstr "Git için taşınabilir bir grafik arabirim"
msgid "Compute object ID and optionally create an object from a file"
-msgstr "Nesne kimliğini hesapla/dosyadan isteğe bağlı nesne oluştur"
+msgstr "Nesne kimliğini hesapla-isteğe bağlı nesne oluştur"
msgid "Display help information about Git"
msgstr "Git yardım bilgisini görüntüle"
@@ -14407,13 +14491,13 @@ msgid "Push objects over HTTP/DAV to another repository"
msgstr "Nesneleri HTTP/DAV üzerinden başka bir depoya it"
msgid "Send a collection of patches from stdin to an IMAP folder"
-msgstr "stdin'den bir IMAP klasörüne bir yama derlemesi gönder"
+msgstr "stdin'den bir IMAP klasörüne yama derlemesi gönder"
msgid "Build pack index file for an existing packed archive"
-msgstr "Mevcut paketli bir arşiv için paket indeks dosyası yap"
+msgstr "Paketli bir arşiv için paket indeks dosyası yap"
msgid "Create an empty Git repository or reinitialize an existing one"
-msgstr "Boş bir Git deposu oluştur veya olanı yeniden ilklendir"
+msgstr "Boş Git deposu oluştur veya olanı yeniden ilklendir"
msgid "Instantly browse your working repository in gitweb"
msgstr "gitweb'deki çalışma deposuna anında göz at"
@@ -14446,7 +14530,7 @@ msgid "Join two or more development histories together"
msgstr "İki veya daha fazla geliştirme geçmişini birleştir"
msgid "Find as good common ancestors as possible for a merge"
-msgstr "Birleştirme için olabildiğince en iyi ortak ataları bul"
+msgstr "Birleştirme için olabildiğince en iyi ortak atayı bul"
msgid "Run a three-way file merge"
msgstr "Bir 3 yönlü dosya birleştirmesi çalıştır"
@@ -14473,7 +14557,7 @@ msgid "Write and verify multi-pack-indexes"
msgstr "multi-pack-index doğrula ve yaz"
msgid "Move or rename a file, a directory, or a symlink"
-msgstr "Dosya, dizin veya sembolik bağları taşı/yeniden adlandır"
+msgstr "Dosya, dizin, sembolik bağları taşı/yeniden adlandır"
msgid "Find symbolic names for given revs"
msgstr "Verilen revizyonlar için sembolik adları bul"
@@ -14491,7 +14575,7 @@ msgid "Find redundant pack files"
msgstr "Gereksiz paket dosyalarını bul"
msgid "Pack heads and tags for efficient repository access"
-msgstr "Etkili depo erişimi için dal uçları ve etiketler paketle"
+msgstr "Tez depo erişimi için dal uçları ve etiketler paketle"
msgid "Compute unique ID for a patch"
msgstr "Bir yama için eşi olmayan numara hesapla"
@@ -14500,13 +14584,13 @@ msgid "Prune all unreachable objects from the object database"
msgstr "Ulaşılamayan tüm nesneleri nesne veritabanından buda"
msgid "Remove extra objects that are already in pack files"
-msgstr "Halihazırda paket dosyalarında olan ek nesneleri kaldır"
+msgstr "Halihazırda paket dosyalarındaki ek nesneleri kaldır"
msgid "Fetch from and integrate with another repository or a local branch"
msgstr "Başka bir depo veya yerel daldan getir ve tümleştir"
msgid "Update remote refs along with associated objects"
-msgstr "İlişkin nesnelerle birlikte uzak başvuruları da güncelle"
+msgstr "İlişkin nesneleri ve uzak başvuruları güncelle"
msgid "Applies a quilt patchset onto the current branch"
msgstr "Geçerli dala bir \"Quilt\" yama seti uygula"
@@ -14536,17 +14620,16 @@ msgid "Pack unpacked objects in a repository"
msgstr "Bir depodaki paketlenmemiş nesneleri paketle"
msgid "Create, list, delete refs to replace objects"
-msgstr "Nesne değiştirmek için başvurular oluştur, sil, listele"
+msgstr "Nesne değiştirmek için başvuru oluştur, sil, listele"
msgid "EXPERIMENTAL: Replay commits on a new base, works with bare repos too"
-msgstr ""
-"DENEYSEL: İşlemeleri yeni temelde yeniden oynat, çıplak depolarla da çalışır"
+msgstr "DENEYSEL: İşlemeleri yeni temelde oynat, çıplak depolarla çalışır"
msgid "Generates a summary of pending changes"
msgstr "Bekleyen değişikliklerin bir özetini çıkart"
msgid "Reuse recorded resolution of conflicted merges"
-msgstr "Çakışan birleştirmelerin kayıtlı çözümlerini yen. kullan"
+msgstr "Çakışmaların kayıtlı çözümlerini yeniden kullan"
msgid "Reset current HEAD to the specified state"
msgstr "Geçerli HEAD'i belirtilen duruma sıfırla"
@@ -14597,7 +14680,7 @@ msgid "List references in a local repository"
msgstr "Yerel bir depodaki başvuruları listele"
msgid "Reduce your working tree to a subset of tracked files"
-msgstr "Çalışma ağacını izlenen dosyaların alt kümesine küçült"
+msgstr "Çalışma ağacını izlenen dosyanın alt kümesine küçült"
msgid "Add file contents to the staging area"
msgstr "Dosya içeriğini hazırlama alanına ekle"
@@ -14615,7 +14698,7 @@ msgid "Initialize, update or inspect submodules"
msgstr "Altmodülleri ilklendir, güncelle veya incele"
msgid "Bidirectional operation between a Subversion repository and Git"
-msgstr "Bir Subversion ve Git deposu arasında iki yönlü işlemler"
+msgstr "Subversion ve Git arasında iki yönlü işlemler"
msgid "Switch branches"
msgstr "Dal değiştir"
@@ -14624,10 +14707,10 @@ msgid "Read, modify and delete symbolic refs"
msgstr "Sembolik başvuruları oku, düzenle ve sil"
msgid "Create, list, delete or verify a tag object signed with GPG"
-msgstr "GPG imzalı bir etiket oluştur, sil, listele veya doğrula"
+msgstr "GPG imzalı etiket oluştur, sil, listele, doğrula"
msgid "Creates a temporary file with a blob's contents"
-msgstr "Bir ikili nesnenin içeriği ile geçici bir dosya oluştur"
+msgstr "İkili nesnenin içeriği ile geçici bir dosya oluştur"
msgid "Unpack objects from a packed archive"
msgstr "Paketlenmiş bir arşivden nesneleri çıkar"
@@ -14636,11 +14719,10 @@ msgid "Register file contents in the working tree to the index"
msgstr "Çalışma ağacındaki dosya içeriğini indekse kaydet"
msgid "Update the object name stored in a ref safely"
-msgstr "Güvenlice bir başvuruda depolanan nesne adını güncelle"
+msgstr "Güvenlice başvuruda depolanan nesne adını güncelle"
msgid "Update auxiliary info file to help dumb servers"
-msgstr ""
-"Programlanamayan sunuculara destek için yardımcı veri dosyasını güncelle"
+msgstr "Aptal sunuculara destek için ek bilgiyi güncelle"
msgid "Send archive back to git-archive"
msgstr "Arşivi git-archive'e geri gönder"
@@ -14679,7 +14761,7 @@ msgid "Git command-line interface and conventions"
msgstr "Git komut satırı arabirimi ve kuralları"
msgid "A Git core tutorial for developers"
-msgstr "Geliştiriciler için Git çekirdeği eğitmeni"
+msgstr "Geliştiriciler için Git çekirdek öğreticisi"
msgid "Providing usernames and passwords to Git"
msgstr "Git'e kullanıcı adları ve parolalar belirt"
@@ -14715,7 +14797,7 @@ msgid "Git cryptographic signature formats"
msgstr "Git kriptografik imza biçimleri"
msgid "A Git Glossary"
-msgstr "Git Kavram Dizini"
+msgstr "Bir Git kavram dizini"
msgid "Hooks used by Git"
msgstr "Git tarafından kullanılan kancalar"
@@ -14727,7 +14809,7 @@ msgid "The Git repository browser"
msgstr "Git depo tarayıcısı"
msgid "Map author/committer names and/or E-Mail addresses"
-msgstr "Yazar/İşleyici adlarını ve/veya e-posta adreslerini eşlemle"
+msgstr "Yazar/İşleyici adını, e-posta adreslerini eşlemle"
msgid "Defining submodule properties"
msgstr "Altmodül özelliklerini tanımlama"
@@ -14763,10 +14845,10 @@ msgid "Mounting one repository inside another"
msgstr "Bir depoyu bir başkasının içine bağlama"
msgid "A tutorial introduction to Git"
-msgstr "Git'e Giriş"
+msgstr "Git'e giriş için bir öğretici"
msgid "A tutorial introduction to Git: part two"
-msgstr "Git'e Giriş: Bölüm 2"
+msgstr "Git'e giriş için bir öğretici: Bölüm 2"
msgid "Git web interface (web frontend to Git repositories)"
msgstr "Git web arabirimi (Git depoları için web ön ucu)"
@@ -16858,12 +16940,10 @@ msgid ""
msgstr ""
"git [-v | --version] [-h | --help] [-C <yol>] [-c <ad>=<değer>]\n"
" [--exec-path[=<yol>]] [--html-path] [--man-path] [--info-path]\n"
-" [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--no-"
-"lazy-fetch]\n"
-" [--no-optional-locks] [--no-advice] [--bare] [--git-dir=<path>]\n"
-" [--work-tree=<path>] [--namespace=<ad>] [--config-env=<ad>=<çevre-"
-"değişkeni>]\n"
-" <komut> [<argümanlar>]"
+" [-p | --paginate | -P | --no-pager] [--no-replace-objects]\n"
+" [--no-lazy-fetch] [--no-optional-locks] [--no-advice] [--bare]\n"
+" [--git-dir=<yol>] [--work-tree=<yol>] [--namespace=<ad>]\n"
+" [--config-env=<ad>=<çevre-değişkeni>] <komut> [<argümanlar>]"
msgid ""
"'git help -a' and 'git help -g' list available subcommands and some\n"
@@ -17221,6 +17301,10 @@ msgid "Unknown value for http.proactiveauth"
msgstr "http.proactiveauth için bilinmeyen değer"
#, c-format
+msgid "failed to parse %s"
+msgstr "%s ayrıştırılamadı"
+
+#, c-format
msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
msgstr "Desteklenmeyen SSL arka ucu '%s'. Desteklenen SSL arka uçları:"
@@ -17410,6 +17494,10 @@ msgid "invalid marker-size '%s', expecting an integer"
msgstr "geçersiz imleyici boyutu '%s', bir tamsayı bekleniyor"
#, c-format
+msgid "Could not parse object '%s'"
+msgstr "'%s' nesnesi ayrıştırılamadı"
+
+#, c-format
msgid "Failed to merge submodule %s (not checked out)"
msgstr "%s altmodülü birleştirilemedi (çıkış yapılmadı)"
@@ -17654,268 +17742,6 @@ msgstr ""
msgid "collecting merge info failed for trees %s, %s, %s"
msgstr "şu ağaçlar için birleştirme bilgisi toplama başarısız: %s, %s, %s"
-msgid "(bad commit)\n"
-msgstr "(hatalı işleme)\n"
-
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr ""
-"add_cacheinfo '%s' yolu için başarısız oldu; birleştirme iptal ediliyor."
-
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "add_cacheinfo '%s' yolu için yenilenemedi; birleştirme iptal ediliyor."
-
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "'%s'%s yolu oluşturulamadı"
-
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "Altdizine yer açmak için %s kaldırılıyor\n"
-
-msgid ": perhaps a D/F conflict?"
-msgstr ": bir D/F çakışması olabilir mi?"
-
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "'%s' konumundaki izlenmeyen dosyayı kaybetme reddediliyor"
-
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "%s '%s' için ikili nesne bekleniyordu"
-
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "'%s' açılamadı: %s"
-
-#, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "'%s' için sembolik bağ oluşturulamadı: %s"
-
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "şununla ne yapılacağı bilinmiyor: %06o %s '%s'"
-
-#, c-format
-msgid "Failed to merge submodule %s (repository corrupt)"
-msgstr "%s altmodülü birleştirilemedi (depo hasarlı)"
-
-#, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "%s altmodülü şu işlemeye ileri sarılıyor:"
-
-#, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "%s altmodülü ileri sarılıyor"
-
-#, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr ""
-"%s altmodülü birleştirilemedi (işlemeleri takip eden birleştirme bulunamadı)"
-
-#, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "%s altmodülü birleştirilemedi (ileri sarım değil)"
-
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "Şu altmodül için olası bir birleştirme çözümü bulundu:\n"
-
-#, c-format
-msgid ""
-"If this is correct simply add it to the index for example\n"
-"by using:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"which will accept this suggestion.\n"
-msgstr ""
-"Eğer bu doğruysa yalnızca indekse ekleyin, örneğin:\n"
-"\n"
-"\tgit update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"komutu bu öneriyi kabul edecektir.\n"
-
-#, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "%s altmodülü birleştirilemedi (birden çok birleştirme bulundu)"
-
-msgid "failed to execute internal merge"
-msgstr "iç birleştirme yürütülemedi"
-
-#, c-format
-msgid "unable to add %s to database"
-msgstr "%s veritabanına eklenemiyor"
-
-#, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr ""
-"Hata: %s konumundaki izlenmeyen dosyayı kaybetme reddediliyor, bunun yerine "
-"%s konumuna yazılacak."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
-msgstr ""
-"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s (%s içinde). %s (%s) sürümü "
-"ağaçta bırakıldı."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
-msgstr ""
-"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s şuraya: %s (%s içinde). %s "
-"(%s) sürümü ağaçta bırakıldı."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
-msgstr ""
-"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s (%s içinde). %s (%s) sürümü "
-"ağaçta %s konumunda bırakıldı."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree at %s."
-msgstr ""
-"ÇAKIŞMA (%s/silme): %s silindi (%s içinde) ve %s şuraya: %s (%s içinde). %s "
-"(%s) sürümü ağaçta %s konumunda bırakıldı."
-
-msgid "rename"
-msgstr "yeniden adlandır"
-
-msgid "renamed"
-msgstr "yeniden adlandırıldı"
-
-#, c-format
-msgid "Refusing to lose dirty file at %s"
-msgstr "%s konumundaki kirli dosyayı kaybetme reddediliyor"
-
-#, c-format
-msgid "Refusing to lose untracked file at %s, even though it's in the way."
-msgstr ""
-"Engel olduğu halde %s konumundaki izlenmeyen dosyayı kaybetme reddediliyor."
-
-#, c-format
-msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
-msgstr ""
-"ÇAKIŞMA (yeniden adlandır/ekle): %s->%s olarak adlandırıldı (%s içinde). %s "
-"eklendi (%s içinde)"
-
-#, c-format
-msgid "%s is a directory in %s adding as %s instead"
-msgstr "%s bir dizin (%s içinde), bunun yerine %s olarak ekleniyor"
-
-#, c-format
-msgid "Refusing to lose untracked file at %s; adding as %s instead"
-msgstr ""
-"%s konumundaki izlenmeyen dosyayı kaybetme reddediliyor, bunun yerine %s "
-"olarak ekleniyor"
-
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
-"\"%s\"->\"%s\" in \"%s\"%s"
-msgstr ""
-"ÇAKIŞMA (y. adlandır/y. adlandır): \"%s\"->\"%s\" olarak adlandır (\"%s\" "
-"dalında), \"%s\"->\"%s\" olarak adlandır (\"%s\"%s içinde)"
-
-msgid " (left unresolved)"
-msgstr " (çözülmeden bırakıldı)"
-
-#, c-format
-msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
-msgstr ""
-"ÇAKIŞMA (y. adlandır/y. adlandır): %s->%s olarak adlandır (%s içinde). %s-"
-">%s olarak adlandır (%s içinde)"
-
-#, c-format
-msgid ""
-"CONFLICT (directory rename split): Unclear where to place %s because "
-"directory %s was renamed to multiple other directories, with no destination "
-"getting a majority of the files."
-msgstr ""
-"ÇAKIŞMA: (dizin yeniden adlandırma ayrılması): %s ögesinin nereye "
-"yerleştirileceği belirsiz; çünkü %s dizini birden çok başka dizine yeniden "
-"adlandırılırken hiçbir hedef dosyaların büyük çoğunluğunu almadı."
-
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
-">%s in %s"
-msgstr ""
-"ÇAKIŞMA (y. adlandır/y. adlandır): Dizini %s->%s olarak adlandır (%s "
-"içinde). Dizini %s->%s olarak adlandır (%s içinde)"
-
-#, c-format
-msgid "cannot read object %s"
-msgstr "%s nesnesi okunamıyor"
-
-#, c-format
-msgid "object %s is not a blob"
-msgstr "%s nesnesi ikili bir nesne değil"
-
-msgid "modify"
-msgstr "değiştir"
-
-msgid "modified"
-msgstr "değiştirilmiş"
-
-#, c-format
-msgid "Skipped %s (merged same as existing)"
-msgstr "%s atlandı (var olan ile aynı biçimde birleştirildi)"
-
-#, c-format
-msgid "Adding as %s instead"
-msgstr "Bunun yerine %s olarak ekleniyor"
-
-#, c-format
-msgid "Removing %s"
-msgstr "%s kaldırılıyor"
-
-msgid "file/directory"
-msgstr "dosya/dizin"
-
-msgid "directory/file"
-msgstr "dizin/dosya"
-
-#, c-format
-msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
-msgstr ""
-"ÇAKIŞMA (%s): %s adıyla bir dizin var (%s içinde). %s, %s olarak ekleniyor"
-
-#, c-format
-msgid "Adding %s"
-msgstr "%s ekleniyor"
-
-#, c-format
-msgid "CONFLICT (add/add): Merge conflict in %s"
-msgstr "ÇAKIŞMA (ekle/ekle): %s içinde birleştirme çakışması"
-
-#, c-format
-msgid "merging of trees %s and %s failed"
-msgstr "%s ve %s ağaçlarının birleştirilmesi başarısız"
-
-msgid "Merging:"
-msgstr "Birleştiriliyor:"
-
-#, c-format
-msgid "found %u common ancestor:"
-msgid_plural "found %u common ancestors:"
-msgstr[0] "%u ortak ata bulundu:"
-msgstr[1] "%u ortak ata bulundu:"
-
-msgid "merge returned no commit"
-msgstr "birleştirme herhangi bir işleme döndürmedi"
-
-#, c-format
-msgid "Could not parse object '%s'"
-msgstr "'%s' nesnesi ayrıştırılamadı"
-
msgid "failed to read the cache"
msgstr "önbellek okunamadı"
@@ -17957,12 +17783,13 @@ msgstr "'%s', '%s' ile bağlantılanamıyor"
msgid "failed to clear multi-pack-index at %s"
msgstr "multi-pack-index %s konumunda temizlenemedi"
-msgid "cannot write incremental MIDX with bitmap"
-msgstr "biteşlem ile artımlı MIDX yazılamıyor"
-
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr "var olan multi-pack-index yok sayılıyor; sağlama toplamı uyumsuzluğu"
+#, c-format
+msgid "could not load reverse index for MIDX %s"
+msgstr "MIDX %s için ters indeks yüklenemedi"
+
msgid "Adding packfiles to multi-pack-index"
msgstr "Paket dosyaları multi-pack-index'e ekleniyor"
@@ -18214,64 +18041,6 @@ msgid "Failed to convert object from %s to %s"
msgstr "Nesne, %s -> %s olarak dönüştürülemedi"
#, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "nesne dizini %s yok; şurayı denetleyin: .git/objects/info/alternates"
-
-#, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "alternatif nesne yolu olağanlaştırılamıyor: %s"
-
-#, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s: alternatif nesne depoları yok sayılıyor, iç içe geçme pek derin"
-
-msgid "unable to fdopen alternates lockfile"
-msgstr "alternatifler kilit dosyası fdopen yapılamıyor"
-
-msgid "unable to read alternates file"
-msgstr "alternatifler dosyası okunamıyor"
-
-msgid "unable to move new alternates file into place"
-msgstr "yeni alternatifler dosyası yerine taşınamıyor"
-
-#, c-format
-msgid "path '%s' does not exist"
-msgstr "'%s' diye bir yol yok"
-
-#, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr ""
-"Bağlantı yapılmış çıkış olarak '%s' başvuru deposu henüz desteklenmiyor."
-
-#, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "Başvuru deposu '%s' yerel bir depo değil."
-
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "başvuru deposu '%s' sığ"
-
-#, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "başvuru deposu '%s' aşılı"
-
-#, c-format
-msgid "could not find object directory matching %s"
-msgstr "'%s' ile eşleşen nesne dizini bulunamadı"
-
-#, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "alternatif başvurular ayrıştırılırken geçersiz satır: %s"
-
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "%<PRIuMAX>, %<PRIuMAX> sınırı üzerinden mmap yapılmaya çalışılıyor"
-
-#, c-format
-msgid "mmap failed%s"
-msgstr "mmap başarısız%s"
-
-#, c-format
msgid "object file %s is empty"
msgstr "nesne dosyası %s boş"
@@ -18307,18 +18076,6 @@ msgid "loose object %s (stored in %s) is corrupt"
msgstr "%s gevşek nesnesi (%s içinde depolanıyor) hasarlı"
#, c-format
-msgid "replacement %s not found for %s"
-msgstr "%s yedeği %s için bulunamadı"
-
-#, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "paketlenmiş nesne %s (%s içinde depolanıyor) hasarlı"
-
-#, c-format
-msgid "missing mapping of %s to %s"
-msgstr "%s ögesinin %s ögesine eksik eşlemlemesi"
-
-#, c-format
msgid "unable to open %s"
msgstr "%s açılamıyor"
@@ -18411,10 +18168,6 @@ msgid "%s: unsupported file type"
msgstr "%s: desteklenmeyen dosya türü"
#, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s geçerli bir '%s' nesnesi değil"
-
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "%s için sağlama uyuşmazlığı (%s bekleniyordu)"
@@ -18431,6 +18184,10 @@ msgid "unable to parse header of %s"
msgstr "%s üstbilgisi ayrıştırılamıyor"
#, c-format
+msgid "unable to parse type from header '%s' of %s"
+msgstr "%s ögesinin '%s' üstbilgisinden tür ayrıştırılamıyor"
+
+#, c-format
msgid "unable to unpack contents of %s"
msgstr "%s içeriği açılamıyor"
@@ -18588,6 +18345,72 @@ msgid "invalid object name '%.*s'."
msgstr "geçersiz nesne adı: '%.*s'."
#, c-format
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "nesne dizini %s yok; şurayı denetleyin: .git/objects/info/alternates"
+
+#, c-format
+msgid "unable to normalize alternate object path: %s"
+msgstr "alternatif nesne yolu olağanlaştırılamıyor: %s"
+
+#, c-format
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s: alternatif nesne depoları yok sayılıyor, iç içe geçme pek derin"
+
+msgid "unable to fdopen alternates lockfile"
+msgstr "alternatifler kilit dosyası fdopen yapılamıyor"
+
+msgid "unable to read alternates file"
+msgstr "alternatifler dosyası okunamıyor"
+
+msgid "unable to move new alternates file into place"
+msgstr "yeni alternatifler dosyası yerine taşınamıyor"
+
+#, c-format
+msgid "path '%s' does not exist"
+msgstr "'%s' diye bir yol yok"
+
+#, c-format
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr ""
+"Bağlantı yapılmış çıkış olarak '%s' başvuru deposu henüz desteklenmiyor."
+
+#, c-format
+msgid "reference repository '%s' is not a local repository."
+msgstr "Başvuru deposu '%s' yerel bir depo değil."
+
+#, c-format
+msgid "reference repository '%s' is shallow"
+msgstr "başvuru deposu '%s' sığ"
+
+#, c-format
+msgid "reference repository '%s' is grafted"
+msgstr "başvuru deposu '%s' aşılı"
+
+#, c-format
+msgid "could not find object directory matching %s"
+msgstr "'%s' ile eşleşen nesne dizini bulunamadı"
+
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "alternatif başvurular ayrıştırılırken geçersiz satır: %s"
+
+#, c-format
+msgid "replacement %s not found for %s"
+msgstr "%s yedeği %s için bulunamadı"
+
+#, c-format
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "paketlenmiş nesne %s (%s içinde depolanıyor) hasarlı"
+
+#, c-format
+msgid "missing mapping of %s to %s"
+msgstr "%s ögesinin %s ögesine eksik eşlemlemesi"
+
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s geçerli bir '%s' nesnesi değil"
+
+#, c-format
msgid "invalid object type \"%s\""
msgstr "geçersiz nesne türü \"%s\""
@@ -18866,6 +18689,14 @@ msgid "%s isn't available"
msgstr "%s kullanılabilir değil"
#, c-format
+msgid "value %s for %s not in range [%<PRIdMAX>,%<PRIdMAX>]"
+msgstr "%s değeri, %s için, [%<PRIdMAX>, %<PRIdMAX>] eriminde değil"
+
+#, c-format
+msgid "%s expects an integer value with an optional k/m/g suffix"
+msgstr "%s bir tamsayı bekliyor, isteğe bağlı k/m/g eki ile"
+
+#, c-format
msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
msgstr "%s negatif olmayan bir tamsayı bekliyor, isteğe bağlı k/m/g eki ile"
@@ -19024,10 +18855,6 @@ msgid "bad boolean environment value '%s' for '%s'"
msgstr "hatalı Boole çevre değeri '%s', '%s' için"
#, c-format
-msgid "failed to parse %s"
-msgstr "%s ayrıştırılamadı"
-
-#, c-format
msgid "failed to walk children of tree %s: not found"
msgstr "%s ağacının alt ögeleri yürütülemedi: bulunamadı"
@@ -19186,8 +19013,12 @@ msgid "could not fetch %s from promisor remote"
msgstr "vaatçi uzak konumundan %s getirilemedi"
#, c-format
-msgid "known remote named '%s' but with url '%s' instead of '%s'"
-msgstr "bilinen uzak konum adı '%s'; ancak url'si '%s'; '%s' olmalı"
+msgid "no or empty URL advertised for remote '%s'"
+msgstr "'%s' uzak konumu için olmayan veya boş URL sağlandı"
+
+#, c-format
+msgid "known remote named '%s' but with URL '%s' instead of '%s'"
+msgstr "bilinen uzak konum adı '%s'; ancak URL'si '%s'; '%s' olmalı"
#, c-format
msgid "unknown '%s' value for '%s' config option"
@@ -19953,6 +19784,10 @@ msgid "Checking references consistency"
msgstr "Başvuruların tutarlılığı denetleniyor"
#, c-format
+msgid "unable to open '%s'"
+msgstr "'%s' açılamıyor"
+
+#, c-format
msgid "refname is dangerous: %s"
msgstr "başvuru adı tehlikeli: %s"
@@ -20020,10 +19855,6 @@ msgid "refname %s is a symbolic ref, copying it is not supported"
msgstr "başvuru adı %s bir sembolik bağ, onu kopyalamak desteklenmiyor"
#, c-format
-msgid "invalid refspec '%s'"
-msgstr "geçersiz başvuru belirteci '%s'"
-
-#, c-format
msgid "pattern '%s' has no '*'"
msgstr "'%s' dizgisinde '*' yok"
@@ -20568,8 +20399,8 @@ msgstr "gönüllü yazılma eklenemedi"
msgid "could not set recommended config"
msgstr "önerilen yapılandırma ayarlanamadı"
-msgid "could not turn on maintenance"
-msgstr "bakım ayarı açılamadı"
+msgid "could not toggle maintenance"
+msgstr "bakım devreye alınamadı/devreden çıkarılamadı"
msgid "could not start the FSMonitor daemon"
msgstr "FSMonitor ardalan süreci başlatılamadı"
@@ -20615,12 +20446,15 @@ msgstr "'src' dizininde depo oluştur"
msgid "specify if tags should be fetched during clone"
msgstr "etiketlerin klonlama sırasında getirilip getirilmeyeceğini belirt"
+msgid "specify if background maintenance should be enabled"
+msgstr "arka plan bakımı etkinleştirilmesi gerekirse belirt"
+
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <ana-dal>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<listeleme>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<gönüllü-kayıt>]"
#, c-format
msgid "cannot deduce worktree name from '%s'"
@@ -20653,22 +20487,36 @@ msgid "could not configure for full clone"
msgstr "tam klonlama için yapılandırılamadı"
msgid "scalar diagnose [<enlistment>]"
-msgstr "scalar diagnose [<gönüllükayıt>]"
+msgstr "scalar diagnose [<gönüllü-kayıt>]"
msgid "`scalar list` does not take arguments"
msgstr "'scalar list' argüman almıyor"
-msgid "scalar register [<enlistment>]"
-msgstr "scalar register [<gönüllükayıt>]"
+msgid "scalar register [--[no-]maintenance] [<enlistment>]"
+msgstr "scalar register [--[no-]maintenance] [<gönüllü-kayıt>]"
msgid "reconfigure all registered enlistments"
msgstr "tüm kaydı yapılmış gönüllü kayıtları yeniden yapılandır"
-msgid "scalar reconfigure [--all | <enlistment>]"
-msgstr "scalar reconfigure [--all | <gönüllükayıt>]"
+msgid "(enable|disable|keep)"
+msgstr "(enable|disable|keep)"
+
+msgid "signal how to adjust background maintenance"
+msgstr "arka plan bakımının nasıl ayarlanacağını sinyalle"
+
+msgid ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enlistment>]"
+msgstr ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)]\n"
+" [--all | <gönüllü-kayıt>]"
msgid "--all or <enlistment>, but not both"
-msgstr "--all veya <gönüllükayıt>; ancak ikisi değil"
+msgstr "--all veya <gönüllü-kayıt>; ancak ikisi değil"
+
+#, c-format
+msgid "unknown mode for --maintenance option: %s"
+msgstr "--maintenance seçeneği için bilinmeyen kip: %s"
#, c-format
msgid "could not remove stale scalar.repo '%s'"
@@ -22095,6 +21943,9 @@ msgstr "her bir yinelemeden önce önbellek ağacını temizle"
msgid "number of entries in the cache tree to invalidate (default 0)"
msgstr "önbellek ağacındaki geçersizleştirilecek girdi sayısı (öntanımlı 0)"
+msgid "the number of objects to write"
+msgstr "yazılacak nesnelerin sayısı"
+
msgid "test-tool path-walk <options> -- <revision-options>"
msgstr "test-tool path-walk <seçenekler> -- <revizyon-seçenekleri>"
@@ -22862,6 +22713,14 @@ msgstr "geçerli çalışma dizini alınamıyor"
msgid "unable to get random bytes"
msgstr "rastgele baytlar alınamıyor"
+#, c-format
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "%<PRIuMAX>, %<PRIuMAX> sınırı üzerinden mmap yapılmaya çalışılıyor"
+
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap başarısız%s"
+
msgid "Unmerged paths:"
msgstr "Birleştirilmemiş yollar:"
@@ -23596,6 +23455,13 @@ msgstr ""
"yapın."
#, perl-format
+msgid "Outlook reassigned Message-ID to: %s\n"
+msgstr "Outlook, Message-ID'yi şuna yeniden atadı: %s\n"
+
+msgid "Warning: Could not retrieve Message-ID from server response.\n"
+msgstr "Uyarı: Sunucu yanıtından Message-ID alınamadı.\n"
+
+#, perl-format
msgid "Failed to send %s\n"
msgstr "%s gönderilemedi\n"
diff --git a/po/uk.po b/po/uk.po
index 39c22289fa..5ae839fde0 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git v2.46\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2025-03-09 15:40-0700\n"
-"PO-Revision-Date: 2025-03-09 16:53-0700\n"
+"POT-Creation-Date: 2025-06-07 16:24-0700\n"
+"PO-Revision-Date: 2025-06-03 18:43-0700\n"
"Last-Translator: Kateryna Golovanova <kate@kgthreads.com>\n"
"Language-Team: Ukrainian <https://github.com/arkid15r/git-uk-l10n/>\n"
"Language: uk\n"
@@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
-"X-Generator: Poedit 3.5\n"
+"X-Generator: Poedit 3.6\n"
#, c-format
msgid "Huh (%s)?"
@@ -3304,11 +3304,8 @@ msgstr "можна вказати лише одну групову опцію"
msgid "git cat-file <type> <object>"
msgstr "git cat-file <тип> <об’єкт>"
-msgid "git cat-file (-e | -p) <object>"
-msgstr "git cat-file (-e | -p) <об’єкт>"
-
-msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
-msgstr "git cat-file (-t | -s) [--allow-unknown-type] <об’єкт>"
+msgid "git cat-file (-e | -p | -t | -s) <object>"
+msgstr "git cat-file (-e | -p | -t | -s) <об’єкт>"
msgid ""
"git cat-file (--textconv | --filters)\n"
@@ -3348,9 +3345,6 @@ msgstr ""
msgid "show object size"
msgstr "показати розмір об’єкта"
-msgid "allow -s and -t to work with broken/corrupt objects"
-msgstr "дозволити -s та -t працювати з пошкодженими/зіпсованими об’єктами"
-
msgid "use mail map file"
msgstr "використовувати файл відповідності поштових адрес"
@@ -3406,6 +3400,13 @@ msgstr "blob|дерево"
msgid "use a <path> for (--textconv | --filters); Not with 'batch'"
msgstr "використати <шлях> для (--textconv | --filters); не з \"batch\""
+msgid "objects filter only supported in batch mode"
+msgstr "фільтр об’єктів підтримується лише в пакетному режимі"
+
+#, c-format
+msgid "objects filter not supported: '%s'"
+msgstr "фільтрування об’єктів не підтримується: \"%s\""
+
#, c-format
msgid "'%s=<%s>' needs '%s' or '%s'"
msgstr "\"%s=<%s>\" потребує \"%s\" або \"%s\""
@@ -5699,6 +5700,50 @@ msgstr "вказати суфікс формату strftime для назви ф
msgid "specify the content of the diagnostic archive"
msgstr "вказати вміст архіву діагностики"
+#, c-format
+msgid "unable to parse mode: %s"
+msgstr "не вдалося розібрати режим: %s"
+
+#, c-format
+msgid "unable to parse object id: %s"
+msgstr "не вдалося розібрати ідентифікатор об’єкта: %s"
+
+msgid "git diff-pairs -z [<diff-options>]"
+msgstr "git diff-pairs -z [<опціі-різниці>]"
+
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "нерозпізнаний аргумент: %s"
+
+msgid "working without -z is not supported"
+msgstr "робота без -z не підтримується"
+
+msgid "pathspec arguments not supported"
+msgstr "аргументи для визначника шляху не підтримуються"
+
+msgid "revision arguments not allowed"
+msgstr "аргументи ревізії не дозволені"
+
+msgid "invalid raw diff input"
+msgstr "невірне введення необробленої різниці"
+
+msgid "tree objects not supported"
+msgstr "об’єкти дерева не підтримуються"
+
+msgid "got EOF while reading path"
+msgstr "отримано EOF під час зчитування шляху"
+
+msgid "got EOF while reading destination path"
+msgstr "отримано EOF під час зчитування шляху призначення"
+
+#, c-format
+msgid "unable to parse rename/copy score: %s"
+msgstr "не вдалося розібрати оцінку перейменування/копіювання: %s"
+
+#, c-format
+msgid "unknown diff status: %c"
+msgstr "невідомий статус різниці: %c"
+
msgid "--merge-base only works with two commits"
msgstr "--merge-base працює лише з двома комітами"
@@ -5839,6 +5884,9 @@ msgstr "показати прогрес після <н> обʼєктів"
msgid "select handling of signed tags"
msgstr "вибрати обробку підписаних тегів"
+msgid "select handling of signed commits"
+msgstr "вибрати обробку підписаних комітів"
+
msgid "select handling of tags that tag filtered objects"
msgstr "вибрати обробку тегів, якими позначено відфільтровані обʼєкти"
@@ -6488,10 +6536,6 @@ msgid "%s: object corrupt or missing: %s"
msgstr "%s: об’єкт пошкоджений або відсутній: %s"
#, c-format
-msgid "%s: object is of unknown type '%s': %s"
-msgstr "%s: об’єкт невідомого типу \"%s\": %s"
-
-#, c-format
msgid "%s: object could not be parsed: %s"
msgstr "%s: неможливо розібрати об’єкт: %s"
@@ -6548,16 +6592,19 @@ msgstr "не вдалося завантажити rev-index для пакунк
msgid "invalid rev-index for pack '%s'"
msgstr "неприпустимий rev-index для \"%s\""
+msgid "Checking ref database"
+msgstr "Перевірка бази даних посилань"
+
msgid ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<object>...]"
+" [--[no-]name-objects] [--[no-]references] [<object>...]"
msgstr ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<обʼєкт>...]"
+" [--[no-]name-objects] [--[no-]references] [<об’єкт>...]"
msgid "show unreachable objects"
msgstr "показати недосяжні об’єкти"
@@ -6595,6 +6642,9 @@ msgstr "показувати прогрес"
msgid "show verbose names for reachable objects"
msgstr "показувати докладні назви для доступних об’єктів"
+msgid "check reference database consistency"
+msgstr "перевірити базу даних посилань"
+
msgid "Checking objects"
msgstr "Перевірка обʼєктів"
@@ -7748,10 +7798,6 @@ msgstr ""
"простежити еволюцію діапазону рядків <початок>,<кінець> або функції :<назва-"
"функції> в <файлі>"
-#, c-format
-msgid "unrecognized argument: %s"
-msgstr "нерозпізнаний аргумент: %s"
-
msgid "-L<range>:<file> cannot be used with pathspec"
msgstr "-L<діапазон>:<файл> не можна використовувати з визначником шляху"
@@ -8408,6 +8454,9 @@ msgstr "зробити лише тривіальне злиття"
msgid "also show informational/conflict messages"
msgstr "також показувати інформаційні/конфліктні повідомлення"
+msgid "suppress all output; only exit status wanted"
+msgstr "приховати весь вивід; потрібен лише статус виходу"
+
msgid "list filenames without modes/oids/stages"
msgstr "вивести назви файлів без режимів/oid/стадій"
@@ -8812,8 +8861,11 @@ msgstr ""
"під час перепакування збирати пакувальні файли меншого розміру в партію, "
"більшу за цей розмір"
-msgid "git mv [<options>] <source>... <destination>"
-msgstr "git mv [<опції>] <джерело>... <призначення>"
+msgid "git mv [-v] [-f] [-n] [-k] <source> <destination>"
+msgstr "git mv [-v] [-f] [-n] [-k] <джерело> <призначення>"
+
+msgid "git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>"
+msgstr "git mv [-v] [-f] [-n] [-k] <джерело>... <директорія-призначення>"
#, c-format
msgid "Directory %s is in index and no submodule?"
@@ -8884,6 +8936,11 @@ msgid "%s, source=%s, destination=%s"
msgstr "%s, джерело=%s, призначення=%s"
#, c-format
+msgid "cannot move both '%s' and its parent directory '%s'"
+msgstr ""
+"неможливо перенести як \"%s\", так і його батьківську директорію \"%s\""
+
+#, c-format
msgid "Renaming %s to %s\n"
msgstr "Перейменування %s на %s\n"
@@ -9809,6 +9866,10 @@ msgstr ""
msgid "unable to access commit %s"
msgstr "не вдалося отримати доступ до коміту %s"
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "неприпустимий визначник посилання \"%s\""
+
msgid "ignoring --verify-signatures for rebase"
msgstr "ігнорування --verify-signatures для перебазування"
@@ -10175,7 +10236,7 @@ msgstr ""
"\n"
"а потім виконайте надсилання, використовуючи назву віддаленого сховища\n"
"\n"
-" git push <ім'я>\n"
+" git push <імʼя>\n"
msgid "--all can't be combined with refspecs"
msgstr "--all не можна комбінувати з визначниками посилань"
@@ -10792,6 +10853,9 @@ msgstr ""
msgid "git reflog exists <ref>"
msgstr "git reflog exists <посилання>"
+msgid "git reflog drop [--all [--single-worktree] | <refs>...]"
+msgstr "git reflog drop [--all [--single-worktree] | <посилання>...]"
+
#, c-format
msgid "invalid timestamp '%s' given to '--%s'"
msgstr "неприпустима позначка часу \"%s\" передана до \"--%s\""
@@ -10840,8 +10904,8 @@ msgid "Marking reachable objects..."
msgstr "Позначення досяжних обʼєктів..."
#, c-format
-msgid "%s points nowhere!"
-msgstr "%s вказує в нікуди!"
+msgid "reflog could not be found: '%s'"
+msgstr "не вдалося знайти журнал посилань: \"%s\""
msgid "no reflog specified to delete"
msgstr "не вказано журнал посилань для видалення"
@@ -10850,6 +10914,15 @@ msgstr "не вказано журнал посилань для видален�
msgid "invalid ref format: %s"
msgstr "неприпустимий формат посилання: %s"
+msgid "drop the reflogs of all references"
+msgstr "видалити журнали для всіх посилань"
+
+msgid "drop reflogs from the current worktree only"
+msgstr "видаляти журнали посилань лише з поточного робочого дерева"
+
+msgid "references specified along with --all"
+msgstr "посилання, вказані разом з --all"
+
msgid "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
msgstr "git refs migrate --ref-format=<формат> [--no-reflog] [--dry-run]"
@@ -11412,6 +11485,9 @@ msgstr "приблизна дата"
msgid "with --cruft, expire objects older than this"
msgstr "з --cruft видалити обʼєкти, старіші за цей термін"
+msgid "with --cruft, only repack cruft packs smaller than this"
+msgstr "з параметром --cruft, перепакувати лише марні пакунки, менші за цей розмір"
+
msgid "remove redundant packs, and run git-prune-packed"
msgstr "видалити зайві пакунки і запустити git-prune-packed"
@@ -11890,6 +11966,9 @@ msgid "invalid value for '%s': '%s', the only allowed format is '%s'"
msgstr ""
"неприпустиме значення для \"%s\": \"%s\", єдиним допустимим форматом є \"%s\""
+msgid "-z option used with unsupported option"
+msgstr "Опція -z використовується з непідтримуваною опцією"
+
msgid "rev-list does not support display of notes"
msgstr "rev-list не підтримує відображення нотаток"
@@ -13771,8 +13850,8 @@ msgid "git update-ref [<options>] <refname> <new-oid> [<old-oid>]"
msgstr ""
"git update-ref [<опції>] <назва-посилання> <новий-oid> [<старий-oid>]"
-msgid "git update-ref [<options>] --stdin [-z]"
-msgstr "git update-ref [<опції>] --stdin [-z]"
+msgid "git update-ref [<options>] --stdin [-z] [--batch-updates]"
+msgstr "git update-ref [<опції>] --stdin [-z] [--batch-updates]"
msgid "delete the reference"
msgstr "видалити посилання"
@@ -13786,6 +13865,9 @@ msgstr "stdin має аргументи, що закінчуються NUL"
msgid "read updates from stdin"
msgstr "читати оновлення з stdin"
+msgid "batch reference updates"
+msgstr "пакетне оновлення посилань"
+
msgid "update the info files from scratch"
msgstr "оновити інформаційні файли з чистого аркуша"
@@ -14475,6 +14557,9 @@ msgstr "Порівнює файли в робочому дереві та інд
msgid "Compare a tree to the working tree or index"
msgstr "Порівняти дерево з робочим деревом або індексом"
+msgid "Compare the content and mode of provided blob pairs"
+msgstr "Порівняйте вміст і режим наданих blob пар"
+
msgid "Compares the content and mode of blobs found via two tree objects"
msgstr ""
"Порівнює вміст та режим blob обʼєктів, знайдених у двох обʼєктах дерева"
@@ -17376,6 +17461,10 @@ msgid "Unknown value for http.proactiveauth"
msgstr "Невідоме значення для http.proactiveauth"
#, c-format
+msgid "failed to parse %s"
+msgstr "не вдалося розібрати %s"
+
+#, c-format
msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
msgstr "Непідтримуваний SSL обробник \"%s\". Підтримувані SSL обробники:"
@@ -17565,6 +17654,10 @@ msgid "invalid marker-size '%s', expecting an integer"
msgstr "неправильний розмір маркера \"%s\", очікується число"
#, c-format
+msgid "Could not parse object '%s'"
+msgstr "Не вдалося розібрати обʼєкт \"%s\""
+
+#, c-format
msgid "Failed to merge submodule %s (not checked out)"
msgstr "Не вдалося обʼєднати підмодуль %s (не активне)"
@@ -17805,267 +17898,6 @@ msgstr ""
msgid "collecting merge info failed for trees %s, %s, %s"
msgstr "збирання інформації про злиття не вдалося для дерев %s, %s, %s"
-msgid "(bad commit)\n"
-msgstr "(невірний коміт)\n"
-
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "невдала спроба add_cacheinfo для шляху \"%s\"; переривання злиття."
-
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr ""
-"процесу add_cacheinfo не вдалося зробити оновлення для шляху \"%s\"; "
-"переривання злиття."
-
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "не вдалося створити шлях \"%s\"%s"
-
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "Видалення %s, щоб звільнити місце для піддиректорії\n"
-
-msgid ": perhaps a D/F conflict?"
-msgstr ": можливо, D/F конфлікт?"
-
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "відмовлено у втраті невідстежуваного файла \"%s\""
-
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "blob очікується для %s \"%s\""
-
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "не вдалося відкрити \"%s\": %s"
-
-#, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "не вдалося зробити символьне посилання \"%s\": %s"
-
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "не знаю, що робити з %06o %s \"%s\""
-
-#, c-format
-msgid "Failed to merge submodule %s (repository corrupt)"
-msgstr "Не вдалося обʼєднати підмодуль %s (сховище пошкоджено)"
-
-#, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "Перемотування підмодуля %s вперед до наступного коміту:"
-
-#, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "Перемотування підмодуля %s вперед"
-
-#, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr "Не вдалося злити підмодуль %s (злиття наступних комітів не знайдено)"
-
-#, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "Не вдалося злити підмодуль %s (не вдалося перемотати вперед)"
-
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "Знайдено можливе вирішення злиття для підмодуля:\n"
-
-#, c-format
-msgid ""
-"If this is correct simply add it to the index for example\n"
-"by using:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"which will accept this suggestion.\n"
-msgstr ""
-"Якщо все вірно, просто додайте це до індексу, наприклад,\n"
-"використавши:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"який прийме цю пропозицію.\n"
-
-#, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "Не вдалося злити підмодуль %s (знайдено більше одного злиття)"
-
-msgid "failed to execute internal merge"
-msgstr "не вдалося виконати внутрішнє злиття"
-
-#, c-format
-msgid "unable to add %s to database"
-msgstr "не вдалося додати %s до бази даних"
-
-#, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr ""
-"Помилка: відмовлено у втраті невідстежуваного файла %s; натомість записуємо "
-"до %s."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
-msgstr ""
-"КОНФЛІКТ (%s/видалено): %s видалено в %s та %s в %s. Версію %s з %s залишено "
-"в дереві."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
-msgstr ""
-"КОНФЛІКТ (%s/видалено): %s видалено в %s і %s в %s в %s. Версію %s з %s "
-"залишено у дереві."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
-msgstr ""
-"КОНФЛІКТ (%s/видалено): %s видалено в %s і %s в %s. Версію %s з %s залишено "
-"у дереві в %s."
-
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree at %s."
-msgstr ""
-"КОНФЛІКТ (%s/видалено): %s видалено в %s і %s в %s в %s. Версію %s з %s "
-"залишено в дереві в %s."
-
-msgid "rename"
-msgstr "перейменувати"
-
-msgid "renamed"
-msgstr "перейменовано"
-
-#, c-format
-msgid "Refusing to lose dirty file at %s"
-msgstr "Відмовлено у втраті брудного файла %s"
-
-#, c-format
-msgid "Refusing to lose untracked file at %s, even though it's in the way."
-msgstr ""
-"Відмовлено у втраті невідстежуваного файла %s, не дивлячись на те, що він "
-"знаходиться на шляху."
-
-#, c-format
-msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
-msgstr ""
-"КОНФЛІКТ (перейменовано/додано): перейменовано %s->%s в %s. Додано %s в %s"
-
-#, c-format
-msgid "%s is a directory in %s adding as %s instead"
-msgstr "%s є директорією в %s, натомість додаємо як %s"
-
-#, c-format
-msgid "Refusing to lose untracked file at %s; adding as %s instead"
-msgstr "Відмовлено у втраті невідстежуваного файла %s; натомість додаємо як %s"
-
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
-"\"%s\"->\"%s\" in \"%s\"%s"
-msgstr ""
-"КОНФЛІКТ (перейменовано/перейменовано): перейменовано \"%s\"->\"%s\" у гілці "
-"\"%s\" перейменовано \"%s\"->\"%s\" у \"%s\"%s"
-
-msgid " (left unresolved)"
-msgstr " (залишилося нерозвʼязаним)"
-
-#, c-format
-msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
-msgstr ""
-"КОНФЛІКТ (перейменовано/перейменовано): перейменовано %s->%s в %s. "
-"Перейменовано %s->%s в %s"
-
-#, c-format
-msgid ""
-"CONFLICT (directory rename split): Unclear where to place %s because "
-"directory %s was renamed to multiple other directories, with no destination "
-"getting a majority of the files."
-msgstr ""
-"КОНФЛІКТ (розбіжність під час перейменування директорії): Неясно, куди "
-"помістити %s, оскільки директорію %s було перейменовано в кілька інших "
-"директорій, жодна з яких не отримала більшості файлів."
-
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
-">%s in %s"
-msgstr ""
-"КОНФЛІКТ (перейменовано/перейменовано): перейменовано директорію %s->%s в "
-"%s. Перейменовано директорію %s->%s в %s"
-
-#, c-format
-msgid "cannot read object %s"
-msgstr "неможливо прочитати обʼєкт %s"
-
-#, c-format
-msgid "object %s is not a blob"
-msgstr "обʼєкт %s не є blob"
-
-msgid "modify"
-msgstr "змінити"
-
-msgid "modified"
-msgstr "змінено"
-
-#, c-format
-msgid "Skipped %s (merged same as existing)"
-msgstr "Пропущено %s (злите - те саме, що й існуюче)"
-
-#, c-format
-msgid "Adding as %s instead"
-msgstr "Додавання як %s замість цього"
-
-#, c-format
-msgid "Removing %s"
-msgstr "Видалення %s"
-
-msgid "file/directory"
-msgstr "файл/директорія"
-
-msgid "directory/file"
-msgstr "директорія/файл"
-
-#, c-format
-msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
-msgstr "КОНФЛІКТ (%s): в %s існує директорія з іменем %s. Додавання %s як %s"
-
-#, c-format
-msgid "Adding %s"
-msgstr "Додавання %s"
-
-#, c-format
-msgid "CONFLICT (add/add): Merge conflict in %s"
-msgstr "КОНФЛІКТ (додано/додано): Конфлікт злиття у %s"
-
-#, c-format
-msgid "merging of trees %s and %s failed"
-msgstr "не вдалося злити дерева %s та %s"
-
-msgid "Merging:"
-msgstr "Злиття:"
-
-#, c-format
-msgid "found %u common ancestor:"
-msgid_plural "found %u common ancestors:"
-msgstr[0] "знайшли %u спільного предка:"
-msgstr[1] "знайшли %u спільних предків:"
-msgstr[2] "знайшли %u спільних предків:"
-
-msgid "merge returned no commit"
-msgstr "злиття не повернуло коміт"
-
-#, c-format
-msgid "Could not parse object '%s'"
-msgstr "Не вдалося розібрати обʼєкт \"%s\""
-
msgid "failed to read the cache"
msgstr "не вдалося прочитати кеш"
@@ -18107,13 +17939,14 @@ msgstr "не вдалося звʼязати \"%s\" з \"%s\""
msgid "failed to clear multi-pack-index at %s"
msgstr "не вдалося очистити multi-pack-index при %s"
-msgid "cannot write incremental MIDX with bitmap"
-msgstr "неможливо записати інкрементний MIDX з bitmap"
-
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr ""
"ігнорування існуючого multi-pack-index; невідповідність контрольних сум"
+#, c-format
+msgid "could not load reverse index for MIDX %s"
+msgstr "не вдалося завантажити зворотний індекс для MIDX %s"
+
msgid "Adding packfiles to multi-pack-index"
msgstr "Додавання пакунків до multi-pack-index"
@@ -18370,65 +18203,6 @@ msgid "Failed to convert object from %s to %s"
msgstr "Не вдалося перетворити обʼєкт з \"%s\" на \"%s\""
#, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "директорія об’єкта %s не існує; перевірте .git/objects/info/alternates"
-
-#, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "не вдалося нормалізувати шлях запозиченого обʼєкта: %s"
-
-#, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr ""
-"%s: ігнорування місць збереження запозичених об’єктів, надто глибока "
-"вкладеність"
-
-msgid "unable to fdopen alternates lockfile"
-msgstr "не вдалося виконати fdopen для файла блокування запозичених обʼєктів"
-
-msgid "unable to read alternates file"
-msgstr "не вдалося прочитати файл запозичених обʼєктів"
-
-msgid "unable to move new alternates file into place"
-msgstr "не вдалося перемістити файл нових запозичених обʼєктів на місце"
-
-#, c-format
-msgid "path '%s' does not exist"
-msgstr "шлях \"%s\" не існує"
-
-#, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr "посилання на сховище \"%s\" як повʼязане поки що не підтримується."
-
-#, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "сховище посилання \"%s\" не є локальним сховищем."
-
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "сховище посилання \"%s\" є неглибоким"
-
-#, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "сховище посилання \"%s\" прищеплено"
-
-#, c-format
-msgid "could not find object directory matching %s"
-msgstr "не вдалося знайти директорію обʼєктів, що відповідає %s"
-
-#, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "неприпустимий рядок при розбиранні посилань запозичених обʼєктів: %s"
-
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "спроба виконати mmap %<PRIuMAX> за межею %<PRIuMAX>"
-
-#, c-format
-msgid "mmap failed%s"
-msgstr "операція mmap не вдалася%s"
-
-#, c-format
msgid "object file %s is empty"
msgstr "обʼєктний файл %s порожній"
@@ -18464,18 +18238,6 @@ msgid "loose object %s (stored in %s) is corrupt"
msgstr "вільний обʼєкт %s (що зберігається у %s) пошкоджено"
#, c-format
-msgid "replacement %s not found for %s"
-msgstr "заміна %s не знайдена для %s"
-
-#, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "упакований обʼєкт %s (що зберігається у %s) пошкоджено"
-
-#, c-format
-msgid "missing mapping of %s to %s"
-msgstr "відсутнє зіставлення %s до %s"
-
-#, c-format
msgid "unable to open %s"
msgstr "не вдалося відкрити %s"
@@ -18568,10 +18330,6 @@ msgid "%s: unsupported file type"
msgstr "%s: непідтримуваний тип файлу"
#, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s не є допустимим \"%s\" обʼєктом"
-
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "невідповідність хешу для %s (очікувалось %s)"
@@ -18588,6 +18346,10 @@ msgid "unable to parse header of %s"
msgstr "не вдалося розібрати заголовок %s"
#, c-format
+msgid "unable to parse type from header '%s' of %s"
+msgstr "не вдалося розібрати тип з заголовка \"%s\" в %s"
+
+#, c-format
msgid "unable to unpack contents of %s"
msgstr "не вдалося розпакувати вміст %s"
@@ -18748,6 +18510,73 @@ msgid "invalid object name '%.*s'."
msgstr "неприпустима назва обʼєкта \"%.*s\"."
#, c-format
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "директорія об’єкта %s не існує; перевірте .git/objects/info/alternates"
+
+#, c-format
+msgid "unable to normalize alternate object path: %s"
+msgstr "не вдалося нормалізувати шлях запозиченого обʼєкта: %s"
+
+#, c-format
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr ""
+"%s: ігнорування місць збереження запозичених об’єктів, надто глибока "
+"вкладеність"
+
+msgid "unable to fdopen alternates lockfile"
+msgstr "не вдалося виконати fdopen для файла блокування запозичених обʼєктів"
+
+msgid "unable to read alternates file"
+msgstr "не вдалося прочитати файл запозичених обʼєктів"
+
+msgid "unable to move new alternates file into place"
+msgstr "не вдалося перемістити файл нових запозичених обʼєктів на місце"
+
+#, c-format
+msgid "path '%s' does not exist"
+msgstr "шлях \"%s\" не існує"
+
+#, c-format
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr "посилання на сховище \"%s\" як повʼязане поки що не підтримується."
+
+#, c-format
+msgid "reference repository '%s' is not a local repository."
+msgstr "сховище посилання \"%s\" не є локальним сховищем."
+
+#, c-format
+msgid "reference repository '%s' is shallow"
+msgstr "сховище посилання \"%s\" є неглибоким"
+
+#, c-format
+msgid "reference repository '%s' is grafted"
+msgstr "сховище посилання \"%s\" прищеплено"
+
+#, c-format
+msgid "could not find object directory matching %s"
+msgstr "не вдалося знайти директорію обʼєктів, що відповідає %s"
+
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "неприпустимий рядок при розбиранні посилань запозичених обʼєктів: %s"
+
+#, c-format
+msgid "replacement %s not found for %s"
+msgstr "заміна %s не знайдена для %s"
+
+#, c-format
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "упакований обʼєкт %s (що зберігається у %s) пошкоджено"
+
+#, c-format
+msgid "missing mapping of %s to %s"
+msgstr "відсутнє зіставлення %s до %s"
+
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s не є допустимим \"%s\" обʼєктом"
+
+#, c-format
msgid "invalid object type \"%s\""
msgstr "неприпустимий тип обʼєкту \"%s\""
@@ -19034,6 +18863,14 @@ msgid "%s isn't available"
msgstr "%s недоступний"
#, c-format
+msgid "value %s for %s not in range [%<PRIdMAX>,%<PRIdMAX>]"
+msgstr "значення %s для %s не в діапазоні [%<PRIdMAX>,%<PRIdMAX>]"
+
+#, c-format
+msgid "%s expects an integer value with an optional k/m/g suffix"
+msgstr "%s очікує ціле значення з необовʼязковим суфіксом k/m/g"
+
+#, c-format
msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
msgstr "%s очікує невід'ємне ціле значення з опціональним суфіксом k/m/g"
@@ -19193,10 +19030,6 @@ msgid "bad boolean environment value '%s' for '%s'"
msgstr "невірне булеве значення оточення \"%s\" для \"%s\""
#, c-format
-msgid "failed to parse %s"
-msgstr "не вдалося розібрати %s"
-
-#, c-format
msgid "failed to walk children of tree %s: not found"
msgstr "не вдалося пройти дочірні елементи дерева %s: не знайдено"
@@ -19361,8 +19194,14 @@ msgid "could not fetch %s from promisor remote"
msgstr "не вдалося отримати %s з віддаленого promisor"
#, c-format
-msgid "known remote named '%s' but with url '%s' instead of '%s'"
-msgstr "відоме віддалене сховище з імʼям \"%s\" має URL \"%s\" замість \"%s\""
+msgid "no or empty URL advertised for remote '%s'"
+msgstr "відсутній або пустий обіцяний URL для віддаленого \"%s\""
+
+#, c-format
+msgid "known remote named '%s' but with URL '%s' instead of '%s'"
+msgstr ""
+"відоме віддалене призначення з імʼям \"%s\", але з URL-адресою \"%s\" "
+"замість \"%s\""
#, c-format
msgid "unknown '%s' value for '%s' config option"
@@ -20128,6 +19967,10 @@ msgid "Checking references consistency"
msgstr "Перевірка співпадіння посилань"
#, c-format
+msgid "unable to open '%s'"
+msgstr "не вдалося відкрити \"%s\""
+
+#, c-format
msgid "refname is dangerous: %s"
msgstr "refname є небезпечним: %s"
@@ -20201,10 +20044,6 @@ msgstr ""
"назва посилання %s є символьним посиланням, копіювання якого не підтримується"
#, c-format
-msgid "invalid refspec '%s'"
-msgstr "неприпустимий визначник посилання \"%s\""
-
-#, c-format
msgid "pattern '%s' has no '*'"
msgstr "шаблон \"%s\" не має \"*\""
@@ -20360,7 +20199,7 @@ msgstr ""
#, c-format
msgid "config remote shorthand cannot begin with '/': %s"
-msgstr "скорочене ім'я віддаленої конфігураціі не може починатися з \"/\": %s"
+msgstr "скорочене імʼя віддаленої конфігураціі не може починатися з \"/\": %s"
msgid "more than one receivepack given, using the first"
msgstr "надано більше одного пакунка для отримання, використано перший"
@@ -20766,8 +20605,8 @@ msgstr "не вдалося додати кореневу директорію �
msgid "could not set recommended config"
msgstr "не вдалося встановити рекомендовану конфігурацію"
-msgid "could not turn on maintenance"
-msgstr "не вдалося ввімкнути технічне обслуговування"
+msgid "could not toggle maintenance"
+msgstr "не вдалося переключити обслуговування"
msgid "could not start the FSMonitor daemon"
msgstr "не вдалося запустити FSMonitor демон"
@@ -20815,12 +20654,16 @@ msgstr "створити сховище в директорії \"src\""
msgid "specify if tags should be fetched during clone"
msgstr "вказати, чи потрібно отримувати теги під час клонування"
+msgid "specify if background maintenance should be enabled"
+msgstr "вказати, чи потрібно ввімкнути фонове обслуговування"
+
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]"
msgstr ""
-"scalar clone [--single-branch] [--branch <головна-гілка>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <URL-адреса> [<коренева-директорія-проекту>]"
+"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<коренева-"
+"директорія-проекту>]"
#, c-format
msgid "cannot deduce worktree name from '%s'"
@@ -20858,19 +20701,33 @@ msgstr "scalar diagnose [<коренева-директорія-проекту>]
msgid "`scalar list` does not take arguments"
msgstr "\"scalar list\" не приймає аргументів"
-msgid "scalar register [<enlistment>]"
-msgstr "scalar register [<коренева-директорія-проекту>]"
+msgid "scalar register [--[no-]maintenance] [<enlistment>]"
+msgstr "scalar register [--[no-]maintenance] [<коренева-директорія-проекту>]"
msgid "reconfigure all registered enlistments"
msgstr "переналаштувати всі зареєстровані кореневі директорії проекту"
-msgid "scalar reconfigure [--all | <enlistment>]"
-msgstr "scalar reconfigure [--all | <коренева-директорія-проекту>]"
+msgid "(enable|disable|keep)"
+msgstr "(увімкнути|вимкнути|зберегти)"
+
+msgid "signal how to adjust background maintenance"
+msgstr "повідомити про те, як налаштувати фонове обслуговування"
+
+msgid ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enlistment>]"
+msgstr ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | <коренева-"
+"директорія-проекту>]"
msgid "--all or <enlistment>, but not both"
msgstr "--all або <коренева-директорія-проекту>, але не обидва"
#, c-format
+msgid "unknown mode for --maintenance option: %s"
+msgstr "невідомий режим для опції --maintenance: %s"
+
+#, c-format
msgid "could not remove stale scalar.repo '%s'"
msgstr "неможливо видалити застаріле scalar.repo \"%s\""
@@ -22323,6 +22180,9 @@ msgid "number of entries in the cache tree to invalidate (default 0)"
msgstr ""
"кількість записів у дереві кешу, які потрібно анулювати (за замовчуванням 0)"
+msgid "the number of objects to write"
+msgstr "кількість об’єктів для запису"
+
msgid "test-tool path-walk <options> -- <revision-options>"
msgstr "test-tool path-walk <опції> -- <опції-ревізії>."
@@ -23105,6 +22965,14 @@ msgstr "не вдалося завантажити поточну робочу �
msgid "unable to get random bytes"
msgstr "не вдалося отримати випадкові байти"
+#, c-format
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "спроба виконати mmap %<PRIuMAX> за межею %<PRIuMAX>"
+
+#, c-format
+msgid "mmap failed%s"
+msgstr "операція mmap не вдалася%s"
+
msgid "Unmerged paths:"
msgstr "Не злиті шляхи:"
@@ -23861,6 +23729,13 @@ msgstr ""
"скористайтесь --smtp-debug."
#, perl-format
+msgid "Outlook reassigned Message-ID to: %s\n"
+msgstr "Outlook перепризначив Message-ID на: %s\n"
+
+msgid "Warning: Could not retrieve Message-ID from server response.\n"
+msgstr "Попередження: Не вдалося отримати Message-ID з відповіді сервера.\n"
+
+#, perl-format
msgid "Failed to send %s\n"
msgstr "Не вдалося надіслати %s\n"
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 5cde4011e7..139ae331dc 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -155,8 +155,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2025-03-09 20:34+0800\n"
-"PO-Revision-Date: 2025-03-12 14:47+0800\n"
+"POT-Creation-Date: 2025-06-08 20:30+0800\n"
+"PO-Revision-Date: 2025-06-12 14:50+0800\n"
"Last-Translator: Teng Long <dyroneteng@gmail.com>\n"
"Language-Team: GitHub <https://github.com/dyrone/git/>\n"
"Language: zh_CN\n"
@@ -1075,10 +1075,9 @@ msgstr "未能识别的空白字符忽略选项 '%s'"
#: builtin/fast-export.c builtin/fetch.c builtin/help.c builtin/index-pack.c
#: builtin/init-db.c builtin/log.c builtin/ls-files.c builtin/merge-base.c
#: builtin/merge-tree.c builtin/merge.c builtin/pack-objects.c builtin/rebase.c
-#: builtin/repack.c builtin/replay.c builtin/reset.c builtin/rev-list.c
-#: builtin/rev-parse.c builtin/show-branch.c builtin/stash.c
-#: builtin/submodule--helper.c builtin/tag.c builtin/worktree.c parse-options.c
-#: range-diff.c revision.c
+#: builtin/repack.c builtin/replay.c builtin/reset.c builtin/rev-parse.c
+#: builtin/show-branch.c builtin/stash.c builtin/submodule--helper.c
+#: builtin/tag.c builtin/worktree.c parse-options.c range-diff.c revision.c
#, c-format
msgid "options '%s' and '%s' cannot be used together"
msgstr "选项 '%s' 和 '%s' 不能同时使用"
@@ -1965,7 +1964,7 @@ msgstr "无法在没有仓库的情况下使用 --attr-source 或 GIT_ATTR_SOURC
msgid "bad --attr-source or GIT_ATTR_SOURCE"
msgstr "错误的 --attr-source 或 GIT_ATTR_SOURCE"
-#: attr.c read-cache.c
+#: attr.c read-cache.c refs/packed-backend.c
#, c-format
msgid "unable to stat '%s'"
msgstr "无法对 %s 执行 stat"
@@ -2777,7 +2776,7 @@ msgstr "以交互式方式运行"
msgid "bypass pre-applypatch and applypatch-msg hooks"
msgstr "绕过 pre-applypatch 和 applypatch-msg 钩子"
-#: builtin/am.c
+#: builtin/am.c builtin/cat-file.c
msgid "historical option -- no-op"
msgstr "老的参数 —— 无作用"
@@ -4084,7 +4083,7 @@ msgstr "需要一个仓库来解开归档包。"
msgid "Unbundling objects"
msgstr "解包对象中"
-#: builtin/cat-file.c merge-recursive.c
+#: builtin/cat-file.c
#, c-format
msgid "cannot read object %s '%s'"
msgstr "不能读取对象 %s '%s'"
@@ -4121,12 +4120,8 @@ msgid "git cat-file <type> <object>"
msgstr "git cat-file <类型> <对象>"
#: builtin/cat-file.c
-msgid "git cat-file (-e | -p) <object>"
-msgstr "git cat-file (-e | -p) <对象>"
-
-#: builtin/cat-file.c
-msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
-msgstr "git cat-file (-t | -s) [--allow-unknown-type] <对象>"
+msgid "git cat-file (-e | -p | -t | -s) <object>"
+msgstr "git cat-file (-e | -p | -t | -s) <对象>"
#: builtin/cat-file.c
msgid ""
@@ -4172,10 +4167,6 @@ msgstr "显示对象的类型('blob'、'tree'、'commit'、'tag'……其中�
msgid "show object size"
msgstr "显示对象大小"
-#: builtin/cat-file.c
-msgid "allow -s and -t to work with broken/corrupt objects"
-msgstr "允许 -s 和 -t 对损坏的对象生效"
-
#: builtin/cat-file.c builtin/log.c
msgid "use mail map file"
msgstr "使用邮件映射文件"
@@ -4247,6 +4238,15 @@ msgid "use a <path> for (--textconv | --filters); Not with 'batch'"
msgstr "(--textconv | --filters) 使用 <路径>;而不是 'batch'"
#: builtin/cat-file.c
+msgid "objects filter only supported in batch mode"
+msgstr "对象过滤器只支持批处理模式"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "objects filter not supported: '%s'"
+msgstr "不支持对象过滤器:'%s'"
+
+#: builtin/cat-file.c
#, c-format
msgid "'%s=<%s>' needs '%s' or '%s'"
msgstr "'%s=<%s>' 需要 '%s' 或 '%s'"
@@ -5952,7 +5952,7 @@ msgstr "不能读取 MERGE_MSG"
#: builtin/commit.c bundle.c rerere.c sequencer.c
#, c-format
msgid "could not open '%s'"
-msgstr "不能打开 '%s'"
+msgstr "无法打开 '%s'"
#: builtin/commit.c
msgid "could not write commit template"
@@ -7038,6 +7038,64 @@ msgstr "指定文件的 strftime 格式后缀"
msgid "specify the content of the diagnostic archive"
msgstr "指定诊断信息归档包的内容"
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse mode: %s"
+msgstr "不能解析模式:%s"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse object id: %s"
+msgstr "不能解析对象ID:%s"
+
+#: builtin/diff-pairs.c
+msgid "git diff-pairs -z [<diff-options>]"
+msgstr "git diff-pairs -z [<差异选项>]"
+
+#: builtin/diff-pairs.c builtin/log.c builtin/replay.c builtin/shortlog.c
+#: bundle.c
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "未识别的参数:%s"
+
+#: builtin/diff-pairs.c
+msgid "working without -z is not supported"
+msgstr "不支持在不带 -z 参数的情况下工作"
+
+#: builtin/diff-pairs.c
+msgid "pathspec arguments not supported"
+msgstr "不支持路径规格参数"
+
+#: builtin/diff-pairs.c
+msgid "revision arguments not allowed"
+msgstr "不支持版本参数"
+
+#: builtin/diff-pairs.c
+msgid "invalid raw diff input"
+msgstr "无效的原始 diff 输入"
+
+#: builtin/diff-pairs.c
+msgid "tree objects not supported"
+msgstr "不支持树对象"
+
+#: builtin/diff-pairs.c
+msgid "got EOF while reading path"
+msgstr "读取路径时遇到文件结束"
+
+#: builtin/diff-pairs.c
+msgid "got EOF while reading destination path"
+msgstr "读取目标路径时遇到文件结束"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse rename/copy score: %s"
+msgstr "无法解析重命名/复制分数:%s"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unknown diff status: %c"
+msgstr "未知的差异状态:%c"
+
#: builtin/diff-tree.c
msgid "--merge-base only works with two commits"
msgstr "--merge-base 仅适用于两个提交"
@@ -7215,6 +7273,10 @@ msgid "select handling of signed tags"
msgstr "选择如何处理签名标签"
#: builtin/fast-export.c
+msgid "select handling of signed commits"
+msgstr "选择如何处理已签名提交"
+
+#: builtin/fast-export.c
msgid "select handling of tags that tag filtered objects"
msgstr "选择当标签指向被过滤对象时该标签的处理方式"
@@ -7474,7 +7536,7 @@ msgstr "选项 \"%s\" 的值 \"%s\" 对于 %s 是无效的"
msgid "option \"%s\" is ignored for %s"
msgstr "选项 \"%s\" 为 %s 所忽略"
-#: builtin/fetch.c object-file.c
+#: builtin/fetch.c object-store.c
#, c-format
msgid "%s is not a valid object"
msgstr "%s 不是一个有效的对象"
@@ -8013,11 +8075,6 @@ msgstr "%s:对象损坏或丢失:%s"
#: builtin/fsck.c
#, c-format
-msgid "%s: object is of unknown type '%s': %s"
-msgstr "%s:对象有未知的类型 '%s': %s"
-
-#: builtin/fsck.c
-#, c-format
msgid "%s: object could not be parsed: %s"
msgstr "%s:不能解析对象:%s"
@@ -8089,16 +8146,20 @@ msgid "invalid rev-index for pack '%s'"
msgstr "包文件 '%s' 的反向索引文件无效"
#: builtin/fsck.c
+msgid "Checking ref database"
+msgstr "正在检查引用数据库"
+
+#: builtin/fsck.c
msgid ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<object>...]"
+" [--[no-]name-objects] [--[no-]references] [<object>...]"
msgstr ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<对象>...]"
+" [--[no-]name-objects] [--[no-]references] [<对象>...]"
#: builtin/fsck.c
msgid "show unreachable objects"
@@ -8148,6 +8209,10 @@ msgstr "显示进度"
msgid "show verbose names for reachable objects"
msgstr "显示可达对象的详细名称"
+#: builtin/fsck.c
+msgid "check reference database consistency"
+msgstr "检查引用数据库一致性"
+
#: builtin/fsck.c builtin/index-pack.c
msgid "Checking objects"
msgstr "正在检查对象"
@@ -9580,11 +9645,6 @@ msgid ""
"<file>"
msgstr "跟踪 <文件> 中 <开始>,<结束> 范围内的行或函数 :<函数名> 的演变"
-#: builtin/log.c builtin/replay.c builtin/shortlog.c bundle.c
-#, c-format
-msgid "unrecognized argument: %s"
-msgstr "未能识别的参数:%s"
-
#: builtin/log.c
msgid "-L<range>:<file> cannot be used with pathspec"
msgstr "-L<范围>:<文件> 不能和路径表达式共用"
@@ -9602,7 +9662,7 @@ msgstr "git show %s: 损坏的文件"
#: builtin/log.c
#, c-format
msgid "could not read object %s"
-msgstr "不能读取对象 %s"
+msgstr "无法读取对象 %s"
#: builtin/log.c
#, c-format
@@ -10420,6 +10480,10 @@ msgid "also show informational/conflict messages"
msgstr "同时显示额外信息/冲突消息"
#: builtin/merge-tree.c
+msgid "suppress all output; only exit status wanted"
+msgstr "抑制所有输出;只保留退出状态"
+
+#: builtin/merge-tree.c
msgid "list filenames without modes/oids/stages"
msgstr "列出没有模式/对象 ID/暂存的文件名"
@@ -10580,7 +10644,7 @@ msgstr "读取树失败"
msgid "Already up to date. (nothing to squash)"
msgstr "已经是最新的。(无可挤压)"
-#: builtin/merge.c merge-ort-wrappers.c merge-recursive.c
+#: builtin/merge.c merge-ort-wrappers.c
msgid "Already up to date."
msgstr "已经是最新的。"
@@ -10604,7 +10668,7 @@ msgstr "'%s' 没有指向一个提交"
msgid "Bad branch.%s.mergeoptions string: %s"
msgstr "坏的 branch.%s.mergeoptions 字符串:%s"
-#: builtin/merge.c merge-recursive.c
+#: builtin/merge.c merge-ort-wrappers.c
msgid "Unable to write index."
msgstr "不能写入索引。"
@@ -10760,7 +10824,7 @@ msgstr "只能将一个提交合并到空分支上"
msgid "Updating %s..%s\n"
msgstr "更新 %s..%s\n"
-#: builtin/merge.c merge-ort-wrappers.c merge-recursive.c
+#: builtin/merge.c merge-ort-wrappers.c
#, c-format
msgid ""
"Your local changes to the following files would be overwritten by merge:\n"
@@ -10922,8 +10986,12 @@ msgid ""
msgstr "在 repack 期间,将较小尺寸的包文件收集到大于此大小的批次中"
#: builtin/mv.c
-msgid "git mv [<options>] <source>... <destination>"
-msgstr "git mv [<选项>] <源>... <目标>"
+msgid "git mv [-v] [-f] [-n] [-k] <source> <destination>"
+msgstr "git mv [-v] [-f] [-n] [-k] <源> <目标>"
+
+#: builtin/mv.c
+msgid "git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>"
+msgstr "git mv [-v] [-f] [-n] [-k] <源>... <目标目录>"
#: builtin/mv.c
#, c-format
@@ -11013,6 +11081,11 @@ msgstr "%s,源=%s,目标=%s"
#: builtin/mv.c
#, c-format
+msgid "cannot move both '%s' and its parent directory '%s'"
+msgstr "不能同时移动 '%s' 及其父目录 '%s'"
+
+#: builtin/mv.c
+#, c-format
msgid "Renaming %s to %s\n"
msgstr "重命名 %s 至 %s\n"
@@ -12151,6 +12224,11 @@ msgstr ""
msgid "unable to access commit %s"
msgstr "无法访问提交 %s"
+#: builtin/pull.c refspec.c
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "无效的引用规格:'%s'"
+
#: builtin/pull.c
msgid "ignoring --verify-signatures for rebase"
msgstr "为变基操作忽略 --verify-signatures"
@@ -13255,6 +13333,10 @@ msgid "git reflog exists <ref>"
msgstr "git reflog exists <引用>"
#: builtin/reflog.c
+msgid "git reflog drop [--all [--single-worktree] | <refs>...]"
+msgstr "git reflog drop [--all [--single-worktree] | <引用>...]"
+
+#: builtin/reflog.c
#, c-format
msgid "invalid timestamp '%s' given to '--%s'"
msgstr "给 '--%2$s' 的时间戳 '%1$s' 无效"
@@ -13314,8 +13396,8 @@ msgstr "正在标记可达对象..."
#: builtin/reflog.c
#, c-format
-msgid "%s points nowhere!"
-msgstr "%s 指向不存在!"
+msgid "reflog could not be found: '%s'"
+msgstr "无法找到引用日志:'%s'"
#: builtin/reflog.c
msgid "no reflog specified to delete"
@@ -13326,6 +13408,18 @@ msgstr "未指定要删除的引用日志"
msgid "invalid ref format: %s"
msgstr "无效的引用格式:%s"
+#: builtin/reflog.c
+msgid "drop the reflogs of all references"
+msgstr "丢弃所有引用的引用日志"
+
+#: builtin/reflog.c
+msgid "drop reflogs from the current worktree only"
+msgstr "仅从当前工作区中丢弃引用日志"
+
+#: builtin/reflog.c
+msgid "references specified along with --all"
+msgstr "--all 选项不能与具体引用同时使用"
+
#: builtin/refs.c
msgid "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
msgstr "git refs migrate --ref-format=<格式> [--no-reflog] [--dry-run]"
@@ -14006,6 +14100,10 @@ msgid "with --cruft, expire objects older than this"
msgstr "使用 --cruft,使早于给定时间的对象过期"
#: builtin/repack.c
+msgid "with --cruft, only repack cruft packs smaller than this"
+msgstr "使用 --cruft 时,仅重新打包小于此大小的废弃包文件"
+
+#: builtin/repack.c
msgid "remove redundant packs, and run git-prune-packed"
msgstr "删除多余的包,运行 git-prune-packed"
@@ -14597,6 +14695,10 @@ msgid "invalid value for '%s': '%s', the only allowed format is '%s'"
msgstr "'%s' 的值无效:'%s',唯一允许的格式是 '%s'"
#: builtin/rev-list.c
+msgid "-z option used with unsupported option"
+msgstr "-z 选项与不支持的选项同时使用"
+
+#: builtin/rev-list.c
msgid "rev-list does not support display of notes"
msgstr "rev-list 不支持显示注解"
@@ -16865,8 +16967,8 @@ msgid "git update-ref [<options>] <refname> <new-oid> [<old-oid>]"
msgstr "git update-ref [<选项>] <引用名> <新对象> [<旧对象>]"
#: builtin/update-ref.c
-msgid "git update-ref [<options>] --stdin [-z]"
-msgstr "git update-ref [<选项>] --stdin [-z]"
+msgid "git update-ref [<options>] --stdin [-z] [--batch-updates]"
+msgstr "git update-ref [<选项>] --stdin [-z] [--batch-updates]"
#: builtin/update-ref.c
msgid "delete the reference"
@@ -16884,6 +16986,10 @@ msgstr "标准输入有以 NUL 字符终止的参数"
msgid "read updates from stdin"
msgstr "从标准输入读取更新"
+#: builtin/update-ref.c
+msgid "batch reference updates"
+msgstr "批量引用更新"
+
#: builtin/update-server-info.c
msgid "update the info files from scratch"
msgstr "从头开始更新文件信息"
@@ -17730,6 +17836,10 @@ msgid "Compare a tree to the working tree or index"
msgstr "将一个树和工作区或索引做比较"
#: command-list.h
+msgid "Compare the content and mode of provided blob pairs"
+msgstr "比较提供的 blob 对的内容和模式"
+
+#: command-list.h
msgid "Compares the content and mode of blobs found via two tree objects"
msgstr "比较两个树对象的文件内容和模式"
@@ -19861,7 +19971,7 @@ msgstr "color-moved-ws:allow-indentation-change 不能与其它空白字符模
msgid "Unknown value for 'diff.submodule' config variable: '%s'"
msgstr "配置变量 'diff.submodule' 未知的取值:'%s'"
-#: diff.c merge-recursive.c transport.c
+#: diff.c merge-ort.c transport.c
#, c-format
msgid "unknown value for config '%s': %s"
msgstr "配置 '%s' 未知的取值:%s"
@@ -21288,6 +21398,11 @@ msgstr "不支持委托控制,因为 cURL < 7.22.0"
msgid "Unknown value for http.proactiveauth"
msgstr "http.proactiveauth 为未知取值"
+#: http.c parse.c
+#, c-format
+msgid "failed to parse %s"
+msgstr "无法解析 %s"
+
#: http.c
#, c-format
msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
@@ -21512,7 +21627,12 @@ msgstr "无法格式化消息:%s"
msgid "invalid marker-size '%s', expecting an integer"
msgstr "无效的标记大小 '%s',应为一个整数"
-#: merge-ort.c merge-recursive.c
+#: merge-ort-wrappers.c
+#, c-format
+msgid "Could not parse object '%s'"
+msgstr "不能解析对象 '%s'"
+
+#: merge-ort.c
#, c-format
msgid "Failed to merge submodule %s (not checked out)"
msgstr "无法合并子模组 %s (没有检出)"
@@ -21522,7 +21642,7 @@ msgstr "无法合并子模组 %s (没有检出)"
msgid "Failed to merge submodule %s (no merge base)"
msgstr "无法合并子模组 %s (没有合并基线)"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "Failed to merge submodule %s (commits not present)"
msgstr "无法合并子模组 %s(提交不存在)"
@@ -21532,7 +21652,7 @@ msgstr "无法合并子模组 %s(提交不存在)"
msgid "error: failed to merge submodule %s (repository corrupt)"
msgstr "错误:无法合并子模组 %s(仓库损坏)"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "Failed to merge submodule %s (commits don't follow merge-base)"
msgstr "无法合并子模组 %s (提交未跟随合并基线)"
@@ -21572,12 +21692,12 @@ msgstr "错误:无法为 %s 执行内部合并"
msgid "error: unable to add %s to database"
msgstr "错误:不能添加 %s 至对象库"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "Auto-merging %s"
msgstr "自动合并 %s"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -21586,7 +21706,7 @@ msgstr ""
"冲突(隐式目录重命名):处于隐式目录重命名的现存文件/目录 %s,将以下路径放"
"在:%s。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -21605,14 +21725,14 @@ msgstr ""
"冲突(分割的目录重命名):不清楚重命名 %s 到哪里,因为它被重命名到多个其他目"
"录中,没有一个目标目录中包含多数文件。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
"renamed."
msgstr "警告:避免应用 %s -> %s 的重命名到 %s,因为 %s 本身已被重命名。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -21620,7 +21740,7 @@ msgid ""
msgstr ""
"路径已更新:%s 添加到 %s,位于一个被重命名到 %s 的目录中,将其移动到 %s。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -21629,7 +21749,7 @@ msgstr ""
"路径已更新:%1$s 重命名为 %3$s 中的 %2$s,而该目录被重命名到 %4$s 中,将其移"
"动到 %5$s。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -21638,7 +21758,7 @@ msgstr ""
"冲突(文件位置):%s 添加到 %s,位于一个被重命名为 %s 的目录中,建议将其移动"
"到 %s。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -21703,19 +21823,19 @@ msgstr ""
"冲突(不同类型):%s 在两侧有不同的类型,将其中之一重命名以便它们能记录在不同"
"位置。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
msgid "content"
msgstr "内容"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
msgid "add/add"
msgstr "添加/添加"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
msgid "submodule"
msgstr "子模组"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "CONFLICT (%s): Merge conflict in %s"
msgstr "冲突(%s):合并冲突于 %s"
@@ -21777,312 +21897,6 @@ msgstr ""
msgid "collecting merge info failed for trees %s, %s, %s"
msgstr "无法收集树 %s、%s、%s 的合并信息"
-#: merge-recursive.c
-msgid "(bad commit)\n"
-msgstr "(坏提交)\n"
-
-#: merge-recursive.c
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "add_cacheinfo 对路径 '%s' 执行失败,合并终止。"
-
-#: merge-recursive.c
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "add_cacheinfo 无法刷新路径 '%s',合并终止。"
-
-#: merge-recursive.c
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "无法创建路径 '%s'%s"
-
-#: merge-recursive.c
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "删除 %s 以便为子目录留出空间\n"
-
-#: merge-recursive.c
-msgid ": perhaps a D/F conflict?"
-msgstr ":可能是一个目录/文件冲突?"
-
-#: merge-recursive.c
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "拒绝丢弃 '%s' 中的未跟踪文件"
-
-#: merge-recursive.c
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "%s '%s' 应为数据对象"
-
-#: merge-recursive.c
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "无法打开 '%s':%s"
-
-#: merge-recursive.c
-#, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "无法创建符号链接 '%s':%s"
-
-#: merge-recursive.c
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "不知道如何处理 %06o %s '%s'"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (repository corrupt)"
-msgstr "无法合并子模组 %s(仓库损坏)"
-
-#: merge-recursive.c
-#, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "子模组 %s 快进到如下提交:"
-
-#: merge-recursive.c
-#, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "快进子模组 %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr "无法合并子模组 %s (没发现合并跟随的提交)"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "无法合并子模组 %s(非快进)"
-
-#: merge-recursive.c
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "找到子模组的一个可能的合并方案:\n"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"If this is correct simply add it to the index for example\n"
-"by using:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"which will accept this suggestion.\n"
-msgstr ""
-"如果这个正确,将其添加到索引,例如使用命令:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"以接受此建议。\n"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "无法合并子模组 %s (发现多个合并)"
-
-#: merge-recursive.c
-msgid "failed to execute internal merge"
-msgstr "无法执行内部合并"
-
-#: merge-recursive.c
-#, c-format
-msgid "unable to add %s to database"
-msgstr "不能添加 %s 至对象库"
-
-#: merge-recursive.c
-#, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr "错误:拒绝丢失未跟踪文件 '%s',而是写入 %s。"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
-msgstr ""
-"冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
-"本被保留。"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
-msgstr ""
-"冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
-"%7$s 版本被保留。"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
-msgstr ""
-"冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
-"本保留在 %8$s 中。"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree at %s."
-msgstr ""
-"冲突(%1$s/删除):%2$s 在 %3$s 中被删除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
-"%7$s 版本保留在 %9$s 中。"
-
-#: merge-recursive.c
-msgid "rename"
-msgstr "重命名"
-
-#: merge-recursive.c
-msgid "renamed"
-msgstr "重命名"
-
-#: merge-recursive.c
-#, c-format
-msgid "Refusing to lose dirty file at %s"
-msgstr "拒绝丢失脏文件 '%s'"
-
-#: merge-recursive.c
-#, c-format
-msgid "Refusing to lose untracked file at %s, even though it's in the way."
-msgstr "拒绝在 '%s' 处失去未跟踪文件,即使它存在于重命名中。"
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
-msgstr "冲突(重命名/添加):在 %3$s 中重命名 %1$s->%2$s。在 %5$s 中添加 %4$s"
-
-#: merge-recursive.c
-#, c-format
-msgid "%s is a directory in %s adding as %s instead"
-msgstr "%s 是 %s 中的一个目录而以 %s 为名被添加"
-
-#: merge-recursive.c
-#, c-format
-msgid "Refusing to lose untracked file at %s; adding as %s instead"
-msgstr "拒绝丢失未跟踪文件 '%s',而是添加为 %s"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
-"\"%s\"->\"%s\" in \"%s\"%s"
-msgstr ""
-"冲突(重命名/重命名):在分支 \"%3$s\" 中重命名 \"%1$s\"->\"%2$s\",在分支 "
-"\"%6$s\" 中重命名 \"%4$s\"->\"%5$s\"%7$s"
-
-#: merge-recursive.c
-msgid " (left unresolved)"
-msgstr "(留下未解决)"
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
-msgstr ""
-"冲突(重命名/重命名):在 %3$s 中重命名 %1$s->%2$s,在 %6$s 中重命名 %4$s-"
-">%5$s"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (directory rename split): Unclear where to place %s because "
-"directory %s was renamed to multiple other directories, with no destination "
-"getting a majority of the files."
-msgstr ""
-"冲突(分割的目录重命名):不清楚 %s 应该放在哪里,因为目录 %s 被重命名到多个"
-"其它目录,没有目录包含大部分文件。"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
-">%s in %s"
-msgstr ""
-"冲突(重命名/重命名):在 %3$s 中重命名目录 %1$s->%2$s,在 %6$s 中重命名目录 "
-"%4$s->%5$s"
-
-#: merge-recursive.c
-#, c-format
-msgid "cannot read object %s"
-msgstr "不能读取对象 %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "object %s is not a blob"
-msgstr "对象 %s 不是一个数据对象"
-
-#: merge-recursive.c
-msgid "modify"
-msgstr "修改"
-
-#: merge-recursive.c
-msgid "modified"
-msgstr "修改"
-
-#: merge-recursive.c
-#, c-format
-msgid "Skipped %s (merged same as existing)"
-msgstr "略过 %s(已经做过相同合并)"
-
-#: merge-recursive.c
-#, c-format
-msgid "Adding as %s instead"
-msgstr "而是以 %s 为名添加"
-
-#: merge-recursive.c
-#, c-format
-msgid "Removing %s"
-msgstr "删除 %s"
-
-#: merge-recursive.c
-msgid "file/directory"
-msgstr "文件/目录"
-
-#: merge-recursive.c
-msgid "directory/file"
-msgstr "目录/文件"
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
-msgstr "冲突(%1$s):在 %3$s 中有一个名为 %2$s 的目录。以 %5$s 为名添加 %4$s"
-
-#: merge-recursive.c
-#, c-format
-msgid "Adding %s"
-msgstr "添加 %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (add/add): Merge conflict in %s"
-msgstr "冲突(add/add):合并冲突于 %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "merging of trees %s and %s failed"
-msgstr "无法合并树 %s 和 %s"
-
-#: merge-recursive.c
-msgid "Merging:"
-msgstr "合并:"
-
-#: merge-recursive.c
-#, c-format
-msgid "found %u common ancestor:"
-msgid_plural "found %u common ancestors:"
-msgstr[0] "发现 %u 个共同祖先:"
-msgstr[1] "发现 %u 个共同祖先:"
-
-#: merge-recursive.c
-msgid "merge returned no commit"
-msgstr "合并未返回提交"
-
-#: merge-recursive.c
-#, c-format
-msgid "Could not parse object '%s'"
-msgstr "不能解析对象 '%s'"
-
#: merge.c
msgid "failed to read the cache"
msgstr "无法读取缓存"
@@ -22136,14 +21950,15 @@ msgid "failed to clear multi-pack-index at %s"
msgstr "无法清理位于 %s 的多包索引"
#: midx-write.c
-msgid "cannot write incremental MIDX with bitmap"
-msgstr "无法使用位图写入增量 MIDX"
-
-#: midx-write.c
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr "忽略已存在的多包索引,校验码不匹配"
#: midx-write.c
+#, c-format
+msgid "could not load reverse index for MIDX %s"
+msgstr "无法加载多包索引 %s 的反向索引"
+
+#: midx-write.c
msgid "Adding packfiles to multi-pack-index"
msgstr "添加包文件到多包索引"
@@ -22459,78 +22274,6 @@ msgstr "无法将对象从 %s 转换为 %s"
#: object-file.c
#, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "对象目录 %s 不存在,检查 .git/objects/info/alternates"
-
-#: object-file.c
-#, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "无法规范化备用对象路径:%s"
-
-#: object-file.c
-#, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s:忽略备用对象库,嵌套太深"
-
-#: object-file.c
-msgid "unable to fdopen alternates lockfile"
-msgstr "无法 fdopen 替换锁文件"
-
-#: object-file.c
-msgid "unable to read alternates file"
-msgstr "无法读取替代文件"
-
-#: object-file.c
-msgid "unable to move new alternates file into place"
-msgstr "无法将新的备用文件移动到位"
-
-#: object-file.c
-#, c-format
-msgid "path '%s' does not exist"
-msgstr "路径 '%s' 不存在"
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr "尚不支持将参考仓库 '%s' 作为一个链接检出。"
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "参考仓库 '%s' 不是一个本地仓库。"
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "参考仓库 '%s' 是一个浅克隆"
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "参考仓库 '%s' 已被移植"
-
-#: object-file.c
-#, c-format
-msgid "could not find object directory matching %s"
-msgstr "无法找到和 %s 匹配的对象目录"
-
-#: object-file.c
-#, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "解析备用引用时无效的行:%s"
-
-#: object-file.c
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "尝试 mmap %<PRIuMAX>,超过了最大值 %<PRIuMAX>"
-
-#: object-file.c
-#, c-format
-msgid "mmap failed%s"
-msgstr "mmap 失败%s"
-
-#: object-file.c
-#, c-format
msgid "object file %s is empty"
msgstr "对象文件 %s 为空"
@@ -22575,21 +22318,6 @@ msgstr "松散对象 %s(保存在 %s)已损坏"
#: object-file.c
#, c-format
-msgid "replacement %s not found for %s"
-msgstr "找不到 %2$s 的替代 %1$s"
-
-#: object-file.c
-#, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "打包对象 %s(保存在 %s)已损坏"
-
-#: object-file.c
-#, c-format
-msgid "missing mapping of %s to %s"
-msgstr "缺少 %s 到 %s 的映射"
-
-#: object-file.c
-#, c-format
msgid "unable to open %s"
msgstr "不能打开 %s"
@@ -22706,11 +22434,6 @@ msgstr "%s:不支持的文件类型"
#: object-file.c
#, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s 不是一个有效的 '%s' 对象"
-
-#: object-file.c
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "%s 的哈希值不匹配(预期 %s)"
@@ -22731,6 +22454,11 @@ msgstr "无法解析 %s 的头部"
#: object-file.c
#, c-format
+msgid "unable to parse type from header '%s' of %s"
+msgstr "无法从 %s 的包头 '%s' 中解析类型"
+
+#: object-file.c
+#, c-format
msgid "unable to unpack contents of %s"
msgstr "无法解压缩 %s 的内容"
@@ -22906,6 +22634,88 @@ msgstr "需要 <对象>:<路径>,只给出了 <对象> '%s'"
msgid "invalid object name '%.*s'."
msgstr "无效的对象名 '%.*s'。"
+#: object-store.c
+#, c-format
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "对象目录 %s 不存在,检查 .git/objects/info/alternates"
+
+#: object-store.c
+#, c-format
+msgid "unable to normalize alternate object path: %s"
+msgstr "无法规范化备用对象路径:%s"
+
+#: object-store.c
+#, c-format
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s:忽略备用对象库,嵌套太深"
+
+#: object-store.c
+msgid "unable to fdopen alternates lockfile"
+msgstr "无法 fdopen alternates 的锁文件"
+
+#: object-store.c
+msgid "unable to read alternates file"
+msgstr "无法读取 alternates 文件"
+
+#: object-store.c
+msgid "unable to move new alternates file into place"
+msgstr "无法将新的 alternates 文件移动到位"
+
+#: object-store.c
+#, c-format
+msgid "path '%s' does not exist"
+msgstr "路径 '%s' 不存在"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr "尚不支持将参考仓库 '%s' 作为链接检出。"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is not a local repository."
+msgstr "参考仓库 '%s' 不是本地仓库。"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is shallow"
+msgstr "参考仓库 '%s' 是浅克隆"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is grafted"
+msgstr "参考仓库 '%s' 已被移植"
+
+#: object-store.c
+#, c-format
+msgid "could not find object directory matching %s"
+msgstr "无法找到和 %s 匹配的对象目录"
+
+#: object-store.c
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "解析备用引用时遇到无效的行:%s"
+
+#: object-store.c
+#, c-format
+msgid "replacement %s not found for %s"
+msgstr "找不到 %2$s 的替代 %1$s"
+
+#: object-store.c
+#, c-format
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "打包对象 %s(保存在 %s)已损坏"
+
+#: object-store.c
+#, c-format
+msgid "missing mapping of %s to %s"
+msgstr "缺少 %s 到 %s 的映射"
+
+#: object-store.c
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s 不是有效的 '%s' 对象"
+
#: object.c
#, c-format
msgid "invalid object type \"%s\""
@@ -23253,6 +23063,16 @@ msgstr "%s 不可用"
#: parse-options.c
#, c-format
+msgid "value %s for %s not in range [%<PRIdMAX>,%<PRIdMAX>]"
+msgstr "%2$s 的值 %1$s 不在范围 [%3$<PRIdMAX>,%4$<PRIdMAX>] 内"
+
+#: parse-options.c
+#, c-format
+msgid "%s expects an integer value with an optional k/m/g suffix"
+msgstr "%s 期望一个带可选 k/m/g 后缀的整数"
+
+#: parse-options.c
+#, c-format
msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
msgstr "%s 期望一个非负整数和一个可选的 k/m/g 后缀"
@@ -23437,11 +23257,6 @@ msgstr "使用 --pathspec-from-file,路径表达式用空字符分隔"
msgid "bad boolean environment value '%s' for '%s'"
msgstr "对于 '%2$s' 的错误的布尔环境取值 '%1$s'"
-#: parse.c
-#, c-format
-msgid "failed to parse %s"
-msgstr "无法解析 %s"
-
#: path-walk.c
#, c-format
msgid "failed to walk children of tree %s: not found"
@@ -23644,8 +23459,13 @@ msgstr "无法从承诺者远程获取 %s"
#: promisor-remote.c
#, c-format
-msgid "known remote named '%s' but with url '%s' instead of '%s'"
-msgstr "已知远程名称为 '%s',但 url 为 '%s' 而不是 '%s'"
+msgid "no or empty URL advertised for remote '%s'"
+msgstr "远程 '%s' 的 URL 没有公布或为空"
+
+#: promisor-remote.c
+#, c-format
+msgid "known remote named '%s' but with URL '%s' instead of '%s'"
+msgstr "已知远程名称为 '%s',但 URL 是 '%s' 而非 '%s'"
#: promisor-remote.c
#, c-format
@@ -24546,6 +24366,11 @@ msgstr "无法打开目录 %s"
msgid "Checking references consistency"
msgstr "正在检查引用一致性"
+#: refs/packed-backend.c
+#, c-format
+msgid "unable to open '%s'"
+msgstr "无法打开 '%s'"
+
#: refs/reftable-backend.c
#, c-format
msgid "refname is dangerous: %s"
@@ -24626,11 +24451,6 @@ msgstr "引用名 %s 是一个符号引用,不支持复制"
#: refspec.c
#, c-format
-msgid "invalid refspec '%s'"
-msgstr "无效的引用规格:'%s'"
-
-#: refspec.c
-#, c-format
msgid "pattern '%s' has no '*'"
msgstr "模式 '%s' 没有 '*'"
@@ -25286,8 +25106,8 @@ msgid "could not set recommended config"
msgstr "无法设置推荐的配置"
#: scalar.c
-msgid "could not turn on maintenance"
-msgstr "无法打开维护模式"
+msgid "could not toggle maintenance"
+msgstr "无法切换维护模式"
#: scalar.c
msgid "could not start the FSMonitor daemon"
@@ -25347,12 +25167,16 @@ msgid "specify if tags should be fetched during clone"
msgstr "如若应在克隆期间获取标签则指定"
#: scalar.c
+msgid "specify if background maintenance should be enabled"
+msgstr "指定是否启用后台维护"
+
+#: scalar.c
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<登记>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<登记>]"
#: scalar.c
#, c-format
@@ -25401,16 +25225,27 @@ msgid "`scalar list` does not take arguments"
msgstr "`scalar list` 不带参数"
#: scalar.c
-msgid "scalar register [<enlistment>]"
-msgstr "scalar register [<登记>]"
+msgid "scalar register [--[no-]maintenance] [<enlistment>]"
+msgstr "scalar register [--[no-]maintenance] [<登记>]"
#: scalar.c
msgid "reconfigure all registered enlistments"
msgstr "重新配置所有注册的登记"
#: scalar.c
-msgid "scalar reconfigure [--all | <enlistment>]"
-msgstr "scalar reconfigure [--all | <登记>]"
+msgid "(enable|disable|keep)"
+msgstr "(enable|disable|keep)"
+
+#: scalar.c
+msgid "signal how to adjust background maintenance"
+msgstr "指定如何调整后台维护"
+
+#: scalar.c
+msgid ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enlistment>]"
+msgstr ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | <登记>]"
#: scalar.c
msgid "--all or <enlistment>, but not both"
@@ -25418,6 +25253,11 @@ msgstr "--all 或者 <登记>,而不是两个一起"
#: scalar.c
#, c-format
+msgid "unknown mode for --maintenance option: %s"
+msgstr "--maintenance 选项的模式未知:%s"
+
+#: scalar.c
+#, c-format
msgid "could not remove stale scalar.repo '%s'"
msgstr "无法删除过期的 scalar.repo '%s'"
@@ -27123,6 +26963,10 @@ msgstr "在每次迭代前清除缓存树"
msgid "number of entries in the cache tree to invalidate (default 0)"
msgstr "缓存树中无效化的条目数量(默认 0)"
+#: t/helper/test-pack-deltas.c
+msgid "the number of objects to write"
+msgstr "写入对象的数量"
+
#: t/helper/test-path-walk.c
msgid "test-tool path-walk <options> -- <revision-options>"
msgstr "test-tool path-walk <选项> -- <版本选项>"
@@ -28051,6 +27895,16 @@ msgstr "不能获取当前工作目录"
msgid "unable to get random bytes"
msgstr "无法获取随机字节"
+#: wrapper.c
+#, c-format
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "尝试内存映射(mmap) %<PRIuMAX>,超过了最大值 %<PRIuMAX>"
+
+#: wrapper.c
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap 失败%s"
+
#: wt-status.c
msgid "Unmerged paths:"
msgstr "未合并的路径:"
@@ -28971,6 +28825,15 @@ msgstr "无法正确地初始化 SMTP。检查配置并使用 --smtp-debug。"
#: git-send-email.perl
#, perl-format
+msgid "Outlook reassigned Message-ID to: %s\n"
+msgstr "Outlook 重新分配了 Message-ID 为:%s\n"
+
+#: git-send-email.perl
+msgid "Warning: Could not retrieve Message-ID from server response.\n"
+msgstr "警告:无法从服务器响应中获取 Message-ID。\n"
+
+#: git-send-email.perl
+#, perl-format
msgid "Failed to send %s\n"
msgstr "无法发送 %s\n"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index aa74d6537a..4fcbb71f8b 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -30,8 +30,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2025-03-09 10:39+0800\n"
-"PO-Revision-Date: 2025-03-09 10:52+0800\n"
+"POT-Creation-Date: 2025-06-12 22:09+0800\n"
+"PO-Revision-Date: 2025-06-12 22:25+0800\n"
"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
"Language-Team: Chinese (Traditional) <http://weblate.slat.org/projects/git-"
"po/git-cli/zh_Hant/>\n"
@@ -40,7 +40,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.5\n"
+"X-Generator: Poedit 3.6\n"
"X-ZhConverter: 繁化姬 dict-f4bc617e-r910 @ 2019/11/16 20:23:12 | https://"
"zhconvert.org\n"
@@ -954,10 +954,9 @@ msgstr "空白字元忽略選項「%s」不認識"
#: builtin/fast-export.c builtin/fetch.c builtin/help.c builtin/index-pack.c
#: builtin/init-db.c builtin/log.c builtin/ls-files.c builtin/merge-base.c
#: builtin/merge-tree.c builtin/merge.c builtin/pack-objects.c builtin/rebase.c
-#: builtin/repack.c builtin/replay.c builtin/reset.c builtin/rev-list.c
-#: builtin/rev-parse.c builtin/show-branch.c builtin/stash.c
-#: builtin/submodule--helper.c builtin/tag.c builtin/worktree.c parse-options.c
-#: range-diff.c revision.c
+#: builtin/repack.c builtin/replay.c builtin/reset.c builtin/rev-parse.c
+#: builtin/show-branch.c builtin/stash.c builtin/submodule--helper.c
+#: builtin/tag.c builtin/worktree.c parse-options.c range-diff.c revision.c
#, c-format
msgid "options '%s' and '%s' cannot be used together"
msgstr "無法同時使用「%s」和「%s」選項"
@@ -1838,7 +1837,7 @@ msgstr "沒有版本庫無法使用 --attr-source 或 GIT_ATTR_SOURCE"
msgid "bad --attr-source or GIT_ATTR_SOURCE"
msgstr "無效的 --attr-source 或 GIT_ATTR_SOURCE"
-#: attr.c read-cache.c
+#: attr.c read-cache.c refs/packed-backend.c
#, c-format
msgid "unable to stat '%s'"
msgstr "無法統計「%s」"
@@ -2655,7 +2654,7 @@ msgstr "互動式執行"
msgid "bypass pre-applypatch and applypatch-msg hooks"
msgstr "繞過 pre-applypatch 和 applypatch-msg 掛鉤"
-#: builtin/am.c
+#: builtin/am.c builtin/cat-file.c
msgid "historical option -- no-op"
msgstr "歷史遺留選項——無作用"
@@ -3237,7 +3236,7 @@ msgstr "強制顯示進度報告"
#: builtin/blame.c
msgid "show output score for blame entries"
-msgstr "顯示溯源項目的輸出得分"
+msgstr "顯示溯源項目的輸出分數"
#: builtin/blame.c
msgid "show original filename (Default: auto)"
@@ -3702,8 +3701,8 @@ msgstr "HEAD 指標不在 /refs/heads 中!"
#: builtin/branch.c
msgid ""
-"branch with --recurse-submodules can only be used if submodule."
-"propagateBranches is enabled"
+"branch with --recurse-submodules can only be used if "
+"submodule.propagateBranches is enabled"
msgstr ""
"有 --recurse-submodules 的分支,只能在啟用 submodule.propagateBranches 時使用"
@@ -3967,7 +3966,7 @@ msgstr "需要版本庫才能拆分套件包。"
msgid "Unbundling objects"
msgstr "正在拆分物件"
-#: builtin/cat-file.c merge-recursive.c
+#: builtin/cat-file.c
#, c-format
msgid "cannot read object %s '%s'"
msgstr "無法讀取物件 %s「%s」"
@@ -4004,12 +4003,9 @@ msgid "git cat-file <type> <object>"
msgstr "git cat-file <type> <object>"
#: builtin/cat-file.c
-msgid "git cat-file (-e | -p) <object>"
-msgstr "git cat-file (-e | -p) <object>"
-
-#: builtin/cat-file.c
-msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
-msgstr "git cat-file (-t | -s) [--allow-unknown-type] <object>"
+#| msgid "git cat-file (-e | -p) <object>"
+msgid "git cat-file (-e | -p | -t | -s) <object>"
+msgstr "git cat-file (-e | -p | -t | -s) <object>"
#: builtin/cat-file.c
msgid ""
@@ -4056,10 +4052,6 @@ msgstr ""
msgid "show object size"
msgstr "顯示物件大小"
-#: builtin/cat-file.c
-msgid "allow -s and -t to work with broken/corrupt objects"
-msgstr "允許 -s 和 -t 對損壞的物件生效"
-
#: builtin/cat-file.c builtin/log.c
msgid "use mail map file"
msgstr "使用信件映射檔案"
@@ -4131,6 +4123,15 @@ msgid "use a <path> for (--textconv | --filters); Not with 'batch'"
msgstr "請在 (--textconv | --filters) 使用 <path>,而非「batch」"
#: builtin/cat-file.c
+msgid "objects filter only supported in batch mode"
+msgstr "物件過濾器僅支援批次模式"
+
+#: builtin/cat-file.c
+#, c-format
+msgid "objects filter not supported: '%s'"
+msgstr "不支援的物件過濾器:「%s」"
+
+#: builtin/cat-file.c
#, c-format
msgid "'%s=<%s>' needs '%s' or '%s'"
msgstr "「%s=<%s>」需要「%s」或「%s」"
@@ -5642,17 +5643,6 @@ msgid "git commit-tree: failed to read"
msgstr "git commit-tree:讀取失敗"
#: builtin/commit.c
-#| msgid ""
-#| "git commit [-a | --interactive | --patch] [-s] [-v] [-u<mode>] [--amend]\n"
-#| " [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
-#| "reword):]<commit>]\n"
-#| " [-F <file> | -m <msg>] [--reset-author] [--allow-empty]\n"
-#| " [--allow-empty-message] [--no-verify] [-e] [--"
-#| "author=<author>]\n"
-#| " [--date=<date>] [--cleanup=<mode>] [--[no-]status]\n"
-#| " [-i | -o] [--pathspec-from-file=<file> [--pathspec-file-nul]]\n"
-#| " [(--trailer <token>[(=|:)<value>])...] [-S[<keyid>]]\n"
-#| " [--] [<pathspec>...]"
msgid ""
"git commit [-a | --interactive | --patch] [-s] [-v] [-u[<mode>]] [--amend]\n"
" [--dry-run] [(-c | -C | --squash) <commit> | --fixup [(amend|"
@@ -6933,6 +6923,65 @@ msgstr "請指定檔案名稱的 strftime 格式後綴"
msgid "specify the content of the diagnostic archive"
msgstr "指定診斷封存檔的內容"
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse mode: %s"
+msgstr "無法解析模式:%s"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse object id: %s"
+msgstr "無法解析物件 ID:%s"
+
+#: builtin/diff-pairs.c
+#| msgid "git repack [<options>]"
+msgid "git diff-pairs -z [<diff-options>]"
+msgstr "git diff-pairs -z [<diff-options>]"
+
+#: builtin/diff-pairs.c builtin/log.c builtin/replay.c builtin/shortlog.c
+#: bundle.c
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "不認識的引數:%s"
+
+#: builtin/diff-pairs.c
+msgid "working without -z is not supported"
+msgstr "不支援在無 -z 的情況下運作"
+
+#: builtin/diff-pairs.c
+msgid "pathspec arguments not supported"
+msgstr "不支援路徑規格引數"
+
+#: builtin/diff-pairs.c
+msgid "revision arguments not allowed"
+msgstr "不允許有修訂版本引數"
+
+#: builtin/diff-pairs.c
+msgid "invalid raw diff input"
+msgstr "無效的原始 diff 輸入"
+
+#: builtin/diff-pairs.c
+msgid "tree objects not supported"
+msgstr "不支援樹狀物件"
+
+#: builtin/diff-pairs.c
+msgid "got EOF while reading path"
+msgstr "讀取路徑時遇到 EOF"
+
+#: builtin/diff-pairs.c
+msgid "got EOF while reading destination path"
+msgstr "讀取目的地路徑時遇到 EOF"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unable to parse rename/copy score: %s"
+msgstr "無法解析重新命名/複製分數:%s"
+
+#: builtin/diff-pairs.c
+#, c-format
+msgid "unknown diff status: %c"
+msgstr "非預期的 diff 狀態:%c"
+
#: builtin/diff-tree.c
msgid "--merge-base only works with two commits"
msgstr "--merge-base 只對 2 個以上的提交有用"
@@ -7110,6 +7159,10 @@ msgid "select handling of signed tags"
msgstr "選擇如何處理簽名標籤"
#: builtin/fast-export.c
+msgid "select handling of signed commits"
+msgstr "選擇如何處理簽名提交"
+
+#: builtin/fast-export.c
msgid "select handling of tags that tag filtered objects"
msgstr "選擇當標籤指向被過濾物件時該標籤的處理方式"
@@ -7369,7 +7422,7 @@ msgstr "選項「%s」的值「%s」對 %s 無效"
msgid "option \"%s\" is ignored for %s"
msgstr "選項「%s」被 %s 忽略"
-#: builtin/fetch.c object-file.c
+#: builtin/fetch.c object-store.c
#, c-format
msgid "%s is not a valid object"
msgstr "%s 不是一個有效的物件"
@@ -7636,8 +7689,8 @@ msgstr "通訊協定不支援 --negotiate-only。結束"
#: builtin/fetch.c
msgid ""
-"--filter can only be used with the remote configured in extensions."
-"partialclone"
+"--filter can only be used with the remote configured in "
+"extensions.partialclone"
msgstr "只可以將 --filter 用於在 extensions.partialclone 中設定的遠端版本庫"
#: builtin/fetch.c
@@ -7912,11 +7965,6 @@ msgstr "%s:物件損壞或遺失:%s"
#: builtin/fsck.c
#, c-format
-msgid "%s: object is of unknown type '%s': %s"
-msgstr "%s:物件屬於「%s」未知類型:%s"
-
-#: builtin/fsck.c
-#, c-format
msgid "%s: object could not be parsed: %s"
msgstr "%s:不能解析物件:%s"
@@ -7988,16 +8036,25 @@ msgid "invalid rev-index for pack '%s'"
msgstr "「%s」封裝的修訂版索引 (rev-index) 無效"
#: builtin/fsck.c
+msgid "Checking ref database"
+msgstr "正在檢查引用資料庫"
+
+#: builtin/fsck.c
+#| msgid ""
+#| "git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
+#| " [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
+#| " [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
+#| " [--[no-]name-objects] [<object>...]"
msgid ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<object>...]"
+" [--[no-]name-objects] [--[no-]references] [<object>...]"
msgstr ""
"git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]\n"
" [--[no-]full] [--strict] [--verbose] [--lost-found]\n"
" [--[no-]dangling] [--[no-]progress] [--connectivity-only]\n"
-" [--[no-]name-objects] [<object>...]"
+" [--[no-]name-objects] [--[no-]references] [<object>...]"
#: builtin/fsck.c
msgid "show unreachable objects"
@@ -8047,6 +8104,10 @@ msgstr "顯示進度"
msgid "show verbose names for reachable objects"
msgstr "顯示可以取得物件的詳細名稱"
+#: builtin/fsck.c
+msgid "check reference database consistency"
+msgstr "正在檢查資料庫一致性"
+
#: builtin/fsck.c builtin/index-pack.c
msgid "Checking objects"
msgstr "正在檢查物件"
@@ -8221,7 +8282,7 @@ msgstr "獨立封裝無引用物件"
#: builtin/gc.c builtin/repack.c
msgid "with --cruft, limit the size of new cruft packs"
-msgstr "搭配 --cruft,限制新廢棄封裝的大小"
+msgstr "搭配 --cruft,限制新無用包的大小"
#: builtin/gc.c
msgid "be more thorough (increased runtime)"
@@ -8732,7 +8793,7 @@ msgstr "組合用 -e 參數設定的模式"
#: builtin/grep.c
msgid "indicate hit with exit status without output"
-msgstr "不輸出,而用離開碼標記命中狀態"
+msgstr "不輸出,而用結束狀態碼標記命中狀態"
#: builtin/grep.c
msgid "show only matches from files that match all patterns"
@@ -9473,11 +9534,6 @@ msgid ""
"<file>"
msgstr "追蹤 <開始>,<結束> 範圍中橫列或 <檔案> 中> :<函數名稱> 的變化史"
-#: builtin/log.c builtin/replay.c builtin/shortlog.c bundle.c
-#, c-format
-msgid "unrecognized argument: %s"
-msgstr "不認識的引數:%s"
-
#: builtin/log.c
msgid "-L<range>:<file> cannot be used with pathspec"
msgstr "-L<範圍>:<檔案> 和 pathspec 不能同時使用"
@@ -10310,6 +10366,10 @@ msgid "also show informational/conflict messages"
msgstr "亦顯示資訊性或衝突訊息"
#: builtin/merge-tree.c
+msgid "suppress all output; only exit status wanted"
+msgstr "隱藏所有輸出,只需要結束狀態碼"
+
+#: builtin/merge-tree.c
msgid "list filenames without modes/oids/stages"
msgstr "列出檔名,但不附加 modes/oids/stages"
@@ -10471,7 +10531,7 @@ msgstr "讀取樹失敗"
msgid "Already up to date. (nothing to squash)"
msgstr "已經是最新的。(無需壓縮 (squash))"
-#: builtin/merge.c merge-ort-wrappers.c merge-recursive.c
+#: builtin/merge.c merge-ort-wrappers.c
msgid "Already up to date."
msgstr "已經是最新的。"
@@ -10495,7 +10555,7 @@ msgstr "'%s' 沒有指向一個提交"
msgid "Bad branch.%s.mergeoptions string: %s"
msgstr "壞的 branch.%s.mergeoptions 字串:%s"
-#: builtin/merge.c merge-recursive.c
+#: builtin/merge.c merge-ort-wrappers.c
msgid "Unable to write index."
msgstr "不能寫入索引。"
@@ -10651,7 +10711,7 @@ msgstr "只能將一個提交合並到空分支上"
msgid "Updating %s..%s\n"
msgstr "更新 %s..%s\n"
-#: builtin/merge.c merge-ort-wrappers.c merge-recursive.c
+#: builtin/merge.c merge-ort-wrappers.c
#, c-format
msgid ""
"Your local changes to the following files would be overwritten by merge:\n"
@@ -10813,8 +10873,14 @@ msgid ""
msgstr "在 repack 期間,將較小尺寸的包檔案收集到大於此大小的批次中"
#: builtin/mv.c
-msgid "git mv [<options>] <source>... <destination>"
-msgstr "git mv [<選項>] <來源>... <目的地>"
+#| msgid "git mv [<options>] <source>... <destination>"
+msgid "git mv [-v] [-f] [-n] [-k] <source> <destination>"
+msgstr "git mv [-v] [-f] [-n] [-k] <source> <destination>"
+
+#: builtin/mv.c
+#| msgid "git mv [<options>] <source>... <destination>"
+msgid "git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>"
+msgstr "git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>"
#: builtin/mv.c
#, c-format
@@ -10904,6 +10970,11 @@ msgstr "%s,來源=%s,目的地=%s"
#: builtin/mv.c
#, c-format
+msgid "cannot move both '%s' and its parent directory '%s'"
+msgstr "無法同時移動「%s」和其上層目錄「%s」"
+
+#: builtin/mv.c
+#, c-format
msgid "Renaming %s to %s\n"
msgstr "重新命名 %s 至 %s\n"
@@ -11534,15 +11605,15 @@ msgstr "無法存取封包檔案 %s"
#: builtin/pack-objects.c
msgid "Enumerating cruft objects"
-msgstr "正在枚舉廢棄物件"
+msgstr "正在枚舉無用物件"
#: builtin/pack-objects.c
msgid "unable to add cruft objects"
-msgstr "無法加入廢棄物件"
+msgstr "無法加入無用物件"
#: builtin/pack-objects.c
msgid "Traversing cruft objects"
-msgstr "正在遍歷廢棄物件"
+msgstr "正在遍歷無用物件"
#: builtin/pack-objects.c
#, c-format
@@ -11564,7 +11635,7 @@ msgstr ""
#: builtin/pack-objects.c reachable.c
msgid "could not load cruft pack .mtimes"
-msgstr "無法載入廢棄封包 .mtimes"
+msgstr "無法載入無用包 .mtimes"
#: builtin/pack-objects.c
msgid "cannot open pack index"
@@ -11709,11 +11780,11 @@ msgstr "將比提供 <時間> 新的無法存取的物件解包"
#: builtin/pack-objects.c
msgid "create a cruft pack"
-msgstr "建立廢棄封包"
+msgstr "建立無用包"
#: builtin/pack-objects.c
msgid "expire cruft objects older than <time>"
-msgstr "將早於 <time> 的廢棄物件設為過期"
+msgstr "將早於 <time> 的無用物件設為過期"
#: builtin/pack-objects.c
msgid "use the sparse reachability algorithm"
@@ -12043,6 +12114,11 @@ msgstr ""
msgid "unable to access commit %s"
msgstr "無法存取提交 %s"
+#: builtin/pull.c refspec.c
+#, c-format
+msgid "invalid refspec '%s'"
+msgstr "無效的引用規格:「%s」"
+
#: builtin/pull.c
msgid "ignoring --verify-signatures for rebase"
msgstr "為重定基底動作忽略 --verify-signatures"
@@ -13150,6 +13226,10 @@ msgid "git reflog exists <ref>"
msgstr "git reflog exists <引用>"
#: builtin/reflog.c
+msgid "git reflog drop [--all [--single-worktree] | <refs>...]"
+msgstr "git reflog drop [--all [--single-worktree] | <refs>...]"
+
+#: builtin/reflog.c
#, c-format
msgid "invalid timestamp '%s' given to '--%s'"
msgstr "傳入「--%s」的時間戳「%s」無效"
@@ -13209,8 +13289,8 @@ msgstr "正在標記可以取得物件..."
#: builtin/reflog.c
#, c-format
-msgid "%s points nowhere!"
-msgstr "%s 指向不存在!"
+msgid "reflog could not be found: '%s'"
+msgstr "找不到引用日誌:「%s」"
#: builtin/reflog.c
msgid "no reflog specified to delete"
@@ -13221,8 +13301,19 @@ msgstr "未指定要刪除的引用日誌"
msgid "invalid ref format: %s"
msgstr "無效的引用格式:%s"
+#: builtin/reflog.c
+msgid "drop the reflogs of all references"
+msgstr "捨棄所有引用的引用日誌"
+
+#: builtin/reflog.c
+msgid "drop reflogs from the current worktree only"
+msgstr "只捨棄目前工作目錄的引用日誌"
+
+#: builtin/reflog.c
+msgid "references specified along with --all"
+msgstr "同時指定參照和 --all 引數"
+
#: builtin/refs.c
-#| msgid "git refs migrate --ref-format=<format> [--dry-run]"
msgid "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
msgstr "git refs migrate --ref-format=<format> [--no-reflog] [--dry-run]"
@@ -13890,7 +13981,7 @@ msgstr "和 -a 相同,並將無法取得的物件設為鬆散物件"
#: builtin/repack.c
msgid "same as -a, pack unreachable cruft objects separately"
-msgstr "和 -a 相同,會獨立封裝無法存取的廢棄物件"
+msgstr "和 -a 相同,會獨立封裝無法存取的無用物件"
#: builtin/repack.c
msgid "approxidate"
@@ -13898,7 +13989,11 @@ msgstr "近似日期"
#: builtin/repack.c
msgid "with --cruft, expire objects older than this"
-msgstr "搭配 --cruft 會將早於此的物件標為過期"
+msgstr "搭配 --cruft,會將早於此的物件標為過期"
+
+#: builtin/repack.c
+msgid "with --cruft, only repack cruft packs smaller than this"
+msgstr "搭配 --cruft,僅重新打包小於此大小的無用包"
#: builtin/repack.c
msgid "remove redundant packs, and run git-prune-packed"
@@ -14494,6 +14589,10 @@ msgid "invalid value for '%s': '%s', the only allowed format is '%s'"
msgstr "「%s」的數值無效:「%s」,唯一允許的格式是「%s」"
#: builtin/rev-list.c
+msgid "-z option used with unsupported option"
+msgstr "-z 選項與不支援的選項一起使用"
+
+#: builtin/rev-list.c
msgid "rev-list does not support display of notes"
msgstr "rev-list 不支援顯示註解"
@@ -16757,8 +16856,9 @@ msgid "git update-ref [<options>] <refname> <new-oid> [<old-oid>]"
msgstr "git update-ref [<options>] <refname> <new-oid> [<old-oid>]"
#: builtin/update-ref.c
-msgid "git update-ref [<options>] --stdin [-z]"
-msgstr "git update-ref [<選項>] --stdin [-z]"
+#| msgid "git update-ref [<options>] --stdin [-z]"
+msgid "git update-ref [<options>] --stdin [-z] [--batch-updates]"
+msgstr "git update-ref [<options>] --stdin [-z] [--batch-updates]"
#: builtin/update-ref.c
msgid "delete the reference"
@@ -16776,6 +16876,10 @@ msgstr "標準輸入有以 NUL 字元終止的參數"
msgid "read updates from stdin"
msgstr "從標準輸入讀取更新"
+#: builtin/update-ref.c
+msgid "batch reference updates"
+msgstr "批次引用更新"
+
#: builtin/update-server-info.c
msgid "update the info files from scratch"
msgstr "從頭開始更新檔案訊息"
@@ -17620,6 +17724,10 @@ msgid "Compare a tree to the working tree or index"
msgstr "將一個樹和工作區或索引做比較"
#: command-list.h
+msgid "Compare the content and mode of provided blob pairs"
+msgstr "比較指定的兩個資料物件的內容和模式"
+
+#: command-list.h
msgid "Compares the content and mode of blobs found via two tree objects"
msgstr "比較兩個樹狀物件的檔案內容和模式"
@@ -18858,8 +18966,8 @@ msgid ""
"remote URLs cannot be configured in file directly or indirectly included by "
"includeIf.hasconfig:remote.*.url"
msgstr ""
-"無法在檔案設定遠端 URL,無論是直接或間接透過 includeIf.hasconfig:remote.*."
-"url 引入"
+"無法在檔案設定遠端 URL,無論是直接或間接透過 "
+"includeIf.hasconfig:remote.*.url 引入"
#: config.c
#, c-format
@@ -19738,7 +19846,7 @@ msgstr "color-moved-ws:allow-indentation-change 不能與其它空白字元模
msgid "Unknown value for 'diff.submodule' config variable: '%s'"
msgstr "設定變數 'diff.submodule' 未知的取值:'%s'"
-#: diff.c merge-recursive.c transport.c
+#: diff.c merge-ort.c transport.c
#, c-format
msgid "unknown value for config '%s': %s"
msgstr "設定 '%s' 的取值未知:%s"
@@ -21163,6 +21271,11 @@ msgstr "不支援委託控制,因為 cURL < 7.22.0"
msgid "Unknown value for http.proactiveauth"
msgstr "http.proactiveauth 的值未知"
+#: http.c parse.c
+#, c-format
+msgid "failed to parse %s"
+msgstr "解析 %s 失敗"
+
#: http.c
#, c-format
msgid "Unsupported SSL backend '%s'. Supported SSL backends:"
@@ -21388,7 +21501,12 @@ msgstr "無法格式化訊息:%s"
msgid "invalid marker-size '%s', expecting an integer"
msgstr "無效的 marker-size「%s」,應為整數"
-#: merge-ort.c merge-recursive.c
+#: merge-ort-wrappers.c
+#, c-format
+msgid "Could not parse object '%s'"
+msgstr "無法解析物件「%s」"
+
+#: merge-ort.c
#, c-format
msgid "Failed to merge submodule %s (not checked out)"
msgstr "無法合併子模組 %s (沒有簽出)"
@@ -21398,7 +21516,7 @@ msgstr "無法合併子模組 %s (沒有簽出)"
msgid "Failed to merge submodule %s (no merge base)"
msgstr "無法合併 %s 子模組(沒有合併基底)"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "Failed to merge submodule %s (commits not present)"
msgstr "無法合併子模組 %s(提交不存在)"
@@ -21408,7 +21526,7 @@ msgstr "無法合併子模組 %s(提交不存在)"
msgid "error: failed to merge submodule %s (repository corrupt)"
msgstr "錯誤:無法合併子模組 %s (版本庫損壞)"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "Failed to merge submodule %s (commits don't follow merge-base)"
msgstr "無法合併子模組 %s (提交未跟隨合併基礎)"
@@ -21448,12 +21566,12 @@ msgstr "錯誤:無法對 %s 執行內部合併"
msgid "error: unable to add %s to database"
msgstr "錯誤:無法將 %s 加進資料庫"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "Auto-merging %s"
msgstr "自動合併 %s"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (implicit dir rename): Existing file/dir at %s in the way of "
@@ -21462,7 +21580,7 @@ msgstr ""
"衝突(隱式目錄重新命名):處於隱式目錄重新命名的現存檔案/目錄 %s,將以下路徑"
"放在:%s。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (implicit dir rename): Cannot map more than one path to %s; "
@@ -21481,14 +21599,14 @@ msgstr ""
"衝突(分割的目錄重新命名):未知 %s 重新命名的位置。它被重新命名為多個其他目"
"錄,但沒有目的地取得過半檔案。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"WARNING: Avoiding applying %s -> %s rename to %s, because %s itself was "
"renamed."
msgstr "警告:避免套用 %s -> %s 的重新命名到 %s,因為 %s 本身已被重新命名。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"Path updated: %s added in %s inside a directory that was renamed in %s; "
@@ -21496,7 +21614,7 @@ msgid ""
msgstr ""
"路徑已更新:%s 新增到 %s,位於一個被重新命名到 %s 的目錄中,將其移動到 %s。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"Path updated: %s renamed to %s in %s, inside a directory that was renamed in "
@@ -21505,7 +21623,7 @@ msgstr ""
"路徑已更新:%1$s 重新命名為 %3$s 中的 %2$s,而該目錄被重新命名到 %4$s 中,將"
"其移動到 %5$s。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (file location): %s added in %s inside a directory that was renamed "
@@ -21514,7 +21632,7 @@ msgstr ""
"衝突(檔案位置):%s 新增到 %s,位於一個被重新命名為 %s 的目錄中,建議將其移"
"動到 %s。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid ""
"CONFLICT (file location): %s renamed to %s in %s, inside a directory that "
@@ -21581,19 +21699,19 @@ msgstr ""
"衝突(類型有異):兩方的 %s 類型皆不同。已經重新命名其中一個來源,這樣就可以"
"分別記錄這兩方檔案。"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
msgid "content"
msgstr "內容"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
msgid "add/add"
msgstr "新增/新增"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
msgid "submodule"
msgstr "子模組"
-#: merge-ort.c merge-recursive.c
+#: merge-ort.c
#, c-format
msgid "CONFLICT (%s): Merge conflict in %s"
msgstr "衝突(%s):合併衝突於 %s"
@@ -21655,312 +21773,6 @@ msgstr ""
msgid "collecting merge info failed for trees %s, %s, %s"
msgstr "%s, %s, %s 樹的合併資訊收集失敗"
-#: merge-recursive.c
-msgid "(bad commit)\n"
-msgstr "(壞提交)\n"
-
-#: merge-recursive.c
-#, c-format
-msgid "add_cacheinfo failed for path '%s'; merge aborting."
-msgstr "add_cacheinfo 對路徑 '%s' 執行失敗,合併終止。"
-
-#: merge-recursive.c
-#, c-format
-msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
-msgstr "add_cacheinfo 無法重新整理路徑 '%s',合併終止。"
-
-#: merge-recursive.c
-#, c-format
-msgid "failed to create path '%s'%s"
-msgstr "建立路徑 '%s'%s 失敗"
-
-#: merge-recursive.c
-#, c-format
-msgid "Removing %s to make room for subdirectory\n"
-msgstr "刪除 %s 以便為子目錄留出空間\n"
-
-#: merge-recursive.c
-msgid ": perhaps a D/F conflict?"
-msgstr ":可能是一個目錄/檔案衝突?"
-
-#: merge-recursive.c
-#, c-format
-msgid "refusing to lose untracked file at '%s'"
-msgstr "拒絕捨棄 '%s' 中的未追蹤檔案"
-
-#: merge-recursive.c
-#, c-format
-msgid "blob expected for %s '%s'"
-msgstr "%s '%s' 應為資料物件"
-
-#: merge-recursive.c
-#, c-format
-msgid "failed to open '%s': %s"
-msgstr "開啟 '%s' 失敗:%s"
-
-#: merge-recursive.c
-#, c-format
-msgid "failed to symlink '%s': %s"
-msgstr "建立符號連結 '%s' 失敗:%s"
-
-#: merge-recursive.c
-#, c-format
-msgid "do not know what to do with %06o %s '%s'"
-msgstr "不知道如何處理 %06o %s '%s'"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (repository corrupt)"
-msgstr "無法合併子模組 %s (版本庫損壞)"
-
-#: merge-recursive.c
-#, c-format
-msgid "Fast-forwarding submodule %s to the following commit:"
-msgstr "子模組 %s 快轉到如下提交:"
-
-#: merge-recursive.c
-#, c-format
-msgid "Fast-forwarding submodule %s"
-msgstr "快轉子模組 %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (merge following commits not found)"
-msgstr "無法合併子模組 %s (找不到合併跟隨的提交)"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (not fast-forward)"
-msgstr "無法合併子模組 %s(非快轉)"
-
-#: merge-recursive.c
-msgid "Found a possible merge resolution for the submodule:\n"
-msgstr "找到子模組的一個可能的合併方案:\n"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"If this is correct simply add it to the index for example\n"
-"by using:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"which will accept this suggestion.\n"
-msgstr ""
-"正確的話,就能直接加進索引,例如執行下述命令:\n"
-"\n"
-" git update-index --cacheinfo 160000 %s \"%s\"\n"
-"\n"
-"接受本建議。\n"
-
-#: merge-recursive.c
-#, c-format
-msgid "Failed to merge submodule %s (multiple merges found)"
-msgstr "無法合併子模組 %s (發現多個合併)"
-
-#: merge-recursive.c
-msgid "failed to execute internal merge"
-msgstr "無法執行內部合併"
-
-#: merge-recursive.c
-#, c-format
-msgid "unable to add %s to database"
-msgstr "無法將 %s 加進資料庫"
-
-#: merge-recursive.c
-#, c-format
-msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
-msgstr "錯誤:拒絕遺失未追蹤檔案 '%s',而是寫入 %s。"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree."
-msgstr ""
-"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
-"本被保留。"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree."
-msgstr ""
-"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
-"%7$s 版本被保留。"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
-"in tree at %s."
-msgstr ""
-"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %5$s 中被 %4$s。%7$s 的 %6$s 版"
-"本保留在 %8$s 中。"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of %s "
-"left in tree at %s."
-msgstr ""
-"衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %6$s 中的 %5$s 被 %4$s。%8$s 的 "
-"%7$s 版本保留在 %9$s 中。"
-
-#: merge-recursive.c
-msgid "rename"
-msgstr "重新命名"
-
-#: merge-recursive.c
-msgid "renamed"
-msgstr "已重新命名"
-
-#: merge-recursive.c
-#, c-format
-msgid "Refusing to lose dirty file at %s"
-msgstr "拒絕遺失髒檔案 '%s'"
-
-#: merge-recursive.c
-#, c-format
-msgid "Refusing to lose untracked file at %s, even though it's in the way."
-msgstr "拒絕在 '%s' 處失去未追蹤檔案,即使它存在於重新命名中。"
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
-msgstr ""
-"衝突(重新命名/新增):在 %3$s 中重新命名 %1$s->%2$s。在 %5$s 中新增 %4$s"
-
-#: merge-recursive.c
-#, c-format
-msgid "%s is a directory in %s adding as %s instead"
-msgstr "%s 是 %s 中的一個目錄而已 %s 為名被新增"
-
-#: merge-recursive.c
-#, c-format
-msgid "Refusing to lose untracked file at %s; adding as %s instead"
-msgstr "拒絕遺失未追蹤檔案 '%s',而是新增為 %s"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
-"\"%s\"->\"%s\" in \"%s\"%s"
-msgstr ""
-"衝突(重新命名/重新命名):在分支 \"%3$s\" 中重新命名 \"%1$s\"->\"%2$s\",在"
-"分支 \"%6$s\" 中重新命名 \"%4$s\"->\"%5$s\"%7$s"
-
-#: merge-recursive.c
-msgid " (left unresolved)"
-msgstr " (留下未解決)"
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
-msgstr ""
-"衝突(重新命名/重新命名):在 %3$s 中重新命名 %1$s->%2$s,在 %6$s 中重新命名 "
-"%4$s->%5$s"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (directory rename split): Unclear where to place %s because "
-"directory %s was renamed to multiple other directories, with no destination "
-"getting a majority of the files."
-msgstr ""
-"衝突(分割的目錄重新命名):不清楚 %s 應該放在哪裡,因為目錄 %s 被重新命名到"
-"多個其它目錄,沒有目錄包含大部分檔案。"
-
-#: merge-recursive.c
-#, c-format
-msgid ""
-"CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory %s-"
-">%s in %s"
-msgstr ""
-"衝突(重新命名/重新命名):在 %3$s 中重新命名目錄 %1$s->%2$s,在 %6$s 中重新"
-"命名目錄 %4$s->%5$s"
-
-#: merge-recursive.c
-#, c-format
-msgid "cannot read object %s"
-msgstr "不能讀取物件 %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "object %s is not a blob"
-msgstr "物件 %s 不是一個資料物件"
-
-#: merge-recursive.c
-msgid "modify"
-msgstr "修改"
-
-#: merge-recursive.c
-msgid "modified"
-msgstr "修改"
-
-#: merge-recursive.c
-#, c-format
-msgid "Skipped %s (merged same as existing)"
-msgstr "略過 %s(已經做過相同合併)"
-
-#: merge-recursive.c
-#, c-format
-msgid "Adding as %s instead"
-msgstr "而是以 %s 為名新增"
-
-#: merge-recursive.c
-#, c-format
-msgid "Removing %s"
-msgstr "刪除 %s"
-
-#: merge-recursive.c
-msgid "file/directory"
-msgstr "檔案/目錄"
-
-#: merge-recursive.c
-msgid "directory/file"
-msgstr "目錄/檔案"
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
-msgstr "衝突(%1$s):在 %3$s 中有一個名為 %2$s 的目錄。以 %5$s 為名新增 %4$s"
-
-#: merge-recursive.c
-#, c-format
-msgid "Adding %s"
-msgstr "新增 %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "CONFLICT (add/add): Merge conflict in %s"
-msgstr "衝突(add/add):合併衝突於 %s"
-
-#: merge-recursive.c
-#, c-format
-msgid "merging of trees %s and %s failed"
-msgstr "無法合併樹 %s 和 %s"
-
-#: merge-recursive.c
-msgid "Merging:"
-msgstr "合併:"
-
-#: merge-recursive.c
-#, c-format
-msgid "found %u common ancestor:"
-msgid_plural "found %u common ancestors:"
-msgstr[0] "發現 %u 個共同祖先:"
-
-#: merge-recursive.c
-msgid "merge returned no commit"
-msgstr "合併未返回提交"
-
-#: merge-recursive.c
-#, c-format
-msgid "Could not parse object '%s'"
-msgstr "無法解析物件「%s」"
-
#: merge.c
msgid "failed to read the cache"
msgstr "讀取快取失敗"
@@ -22014,14 +21826,15 @@ msgid "failed to clear multi-pack-index at %s"
msgstr "清理位於 %s 的多包索引失敗"
#: midx-write.c
-msgid "cannot write incremental MIDX with bitmap"
-msgstr "無法寫入有位圖的增量 MIDX"
-
-#: midx-write.c
msgid "ignoring existing multi-pack-index; checksum mismatch"
msgstr "忽略現有的多包索引:總和檢查碼不符"
#: midx-write.c
+#, c-format
+msgid "could not load reverse index for MIDX %s"
+msgstr "無法載入 MIDX %s 的反向索引"
+
+#: midx-write.c
msgid "Adding packfiles to multi-pack-index"
msgstr "正在新增 packfile 至多包索引"
@@ -22337,78 +22150,6 @@ msgstr "無法將物件從 %s 轉換為 %s"
#: object-file.c
#, c-format
-msgid "object directory %s does not exist; check .git/objects/info/alternates"
-msgstr "物件目錄 %s 不存在,檢查 .git/objects/info/alternates"
-
-#: object-file.c
-#, c-format
-msgid "unable to normalize alternate object path: %s"
-msgstr "無法規範化備用物件路徑:%s"
-
-#: object-file.c
-#, c-format
-msgid "%s: ignoring alternate object stores, nesting too deep"
-msgstr "%s:忽略備用物件庫,嵌套太深"
-
-#: object-file.c
-msgid "unable to fdopen alternates lockfile"
-msgstr "無法 fdopen 取代鎖檔案"
-
-#: object-file.c
-msgid "unable to read alternates file"
-msgstr "無法讀取替代檔案"
-
-#: object-file.c
-msgid "unable to move new alternates file into place"
-msgstr "無法將新的替代檔案移動到位"
-
-#: object-file.c
-#, c-format
-msgid "path '%s' does not exist"
-msgstr "路徑 '%s' 不存在"
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' as a linked checkout is not supported yet."
-msgstr "尚不支援將引用版本庫 '%s' 作為一個連結簽出。"
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' is not a local repository."
-msgstr "引用版本庫 '%s' 不是一個本機版本庫。"
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' is shallow"
-msgstr "引用版本庫 '%s' 是一個淺複製"
-
-#: object-file.c
-#, c-format
-msgid "reference repository '%s' is grafted"
-msgstr "引用版本庫 '%s' 已被移植"
-
-#: object-file.c
-#, c-format
-msgid "could not find object directory matching %s"
-msgstr "找不到符合 %s 的物件目錄"
-
-#: object-file.c
-#, c-format
-msgid "invalid line while parsing alternate refs: %s"
-msgstr "解析備用引用時無效的行:%s"
-
-#: object-file.c
-#, c-format
-msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
-msgstr "嘗試 mmap %<PRIuMAX>,超過了最大值 %<PRIuMAX>"
-
-#: object-file.c
-#, c-format
-msgid "mmap failed%s"
-msgstr "mmap 失敗%s"
-
-#: object-file.c
-#, c-format
msgid "object file %s is empty"
msgstr "物件檔案 %s 為空"
@@ -22453,21 +22194,6 @@ msgstr "鬆散物件 %s(儲存在 %s)已損壞"
#: object-file.c
#, c-format
-msgid "replacement %s not found for %s"
-msgstr "找不到 %2$s 的替代 %1$s"
-
-#: object-file.c
-#, c-format
-msgid "packed object %s (stored in %s) is corrupt"
-msgstr "打包物件 %s(儲存在 %s)已損壞"
-
-#: object-file.c
-#, c-format
-msgid "missing mapping of %s to %s"
-msgstr "缺少 %s 到 %s 的映射"
-
-#: object-file.c
-#, c-format
msgid "unable to open %s"
msgstr "不能開啟 %s"
@@ -22584,11 +22310,6 @@ msgstr "%s:不支援的檔案類型"
#: object-file.c
#, c-format
-msgid "%s is not a valid '%s' object"
-msgstr "%s 不是一個有效的 '%s' 物件"
-
-#: object-file.c
-#, c-format
msgid "hash mismatch for %s (expected %s)"
msgstr "%s 的雜湊值不符合(預期 %s)"
@@ -22609,6 +22330,11 @@ msgstr "無法解析 %s 的頭部"
#: object-file.c
#, c-format
+msgid "unable to parse type from header '%s' of %s"
+msgstr "無法從 %2$s 的標頭「%1$s」解析類型"
+
+#: object-file.c
+#, c-format
msgid "unable to unpack contents of %s"
msgstr "無法解壓縮 %s 的內容"
@@ -22785,6 +22511,88 @@ msgstr "需要指定 <object>:<path>,卻只指定 <object>「%s」"
msgid "invalid object name '%.*s'."
msgstr "'%.*s' 物件名稱無效。"
+#: object-store.c
+#, c-format
+msgid "object directory %s does not exist; check .git/objects/info/alternates"
+msgstr "物件目錄 %s 不存在,檢查 .git/objects/info/alternates"
+
+#: object-store.c
+#, c-format
+msgid "unable to normalize alternate object path: %s"
+msgstr "無法規範化備用物件路徑:%s"
+
+#: object-store.c
+#, c-format
+msgid "%s: ignoring alternate object stores, nesting too deep"
+msgstr "%s:忽略備用物件庫,嵌套太深"
+
+#: object-store.c
+msgid "unable to fdopen alternates lockfile"
+msgstr "無法 fdopen 取代鎖檔案"
+
+#: object-store.c
+msgid "unable to read alternates file"
+msgstr "無法讀取替代檔案"
+
+#: object-store.c
+msgid "unable to move new alternates file into place"
+msgstr "無法將新的替代檔案移動到位"
+
+#: object-store.c
+#, c-format
+msgid "path '%s' does not exist"
+msgstr "路徑 '%s' 不存在"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' as a linked checkout is not supported yet."
+msgstr "尚不支援將引用版本庫 '%s' 作為一個連結簽出。"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is not a local repository."
+msgstr "引用版本庫 '%s' 不是一個本機版本庫。"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is shallow"
+msgstr "引用版本庫 '%s' 是一個淺複製"
+
+#: object-store.c
+#, c-format
+msgid "reference repository '%s' is grafted"
+msgstr "引用版本庫 '%s' 已被移植"
+
+#: object-store.c
+#, c-format
+msgid "could not find object directory matching %s"
+msgstr "找不到符合 %s 的物件目錄"
+
+#: object-store.c
+#, c-format
+msgid "invalid line while parsing alternate refs: %s"
+msgstr "解析備用引用時無效的行:%s"
+
+#: object-store.c
+#, c-format
+msgid "replacement %s not found for %s"
+msgstr "找不到 %2$s 的替代 %1$s"
+
+#: object-store.c
+#, c-format
+msgid "packed object %s (stored in %s) is corrupt"
+msgstr "打包物件 %s(儲存在 %s)已損壞"
+
+#: object-store.c
+#, c-format
+msgid "missing mapping of %s to %s"
+msgstr "缺少 %s 到 %s 的映射"
+
+#: object-store.c
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s 不是一個有效的 '%s' 物件"
+
#: object.c
#, c-format
msgid "invalid object type \"%s\""
@@ -23132,6 +22940,16 @@ msgstr "%s 不可用"
#: parse-options.c
#, c-format
+msgid "value %s for %s not in range [%<PRIdMAX>,%<PRIdMAX>]"
+msgstr "%2$s 的數值 %1$s 不在 [%3$<PRIdMAX>,%4$<PRIdMAX>] 範圍內"
+
+#: parse-options.c
+#, c-format
+msgid "%s expects an integer value with an optional k/m/g suffix"
+msgstr "%s 期望為一個選擇性帶有 k/m/g 後綴的整數值"
+
+#: parse-options.c
+#, c-format
msgid "%s expects a non-negative integer value with an optional k/m/g suffix"
msgstr "%s 期望一個非負整數和一個可選的 k/m/g 後綴"
@@ -23316,11 +23134,6 @@ msgstr "如使用 --pathspec-from-file,則 <路徑規格> 元件會使用 NUL
msgid "bad boolean environment value '%s' for '%s'"
msgstr "「%2$s」的「%1$s」布林環境值無效"
-#: parse.c
-#, c-format
-msgid "failed to parse %s"
-msgstr "解析 %s 失敗"
-
#: path-walk.c
#, c-format
msgid "failed to walk children of tree %s: not found"
@@ -23523,7 +23336,12 @@ msgstr "無法從承諾者遠端抓取 %s"
#: promisor-remote.c
#, c-format
-msgid "known remote named '%s' but with url '%s' instead of '%s'"
+msgid "no or empty URL advertised for remote '%s'"
+msgstr "遠端「%s」未公佈 URL 或 URL 空白"
+
+#: promisor-remote.c
+#, c-format
+msgid "known remote named '%s' but with URL '%s' instead of '%s'"
msgstr "已知有遠端名為「%s」,但其 URL 為「%s」而非「%s」"
#: promisor-remote.c
@@ -23652,7 +23470,7 @@ msgstr "無法解析「%s」的日誌"
#: reachable.c
#, c-format
msgid "invalid extra cruft tip: '%s'"
-msgstr "無效的額外廢棄提交修訂版:「%s」"
+msgstr "無效的額外無用提交修訂版:「%s」"
#: reachable.c
msgid "unable to enumerate additional recent objects"
@@ -24425,6 +24243,11 @@ msgstr "無法開啟 %s 目錄"
msgid "Checking references consistency"
msgstr "正在檢查引用一致性"
+#: refs/packed-backend.c
+#, c-format
+msgid "unable to open '%s'"
+msgstr "無法開啟「%s」"
+
#: refs/reftable-backend.c
#, c-format
msgid "refname is dangerous: %s"
@@ -24505,11 +24328,6 @@ msgstr "引用名稱 %s 是符號引用,不支援複製"
#: refspec.c
#, c-format
-msgid "invalid refspec '%s'"
-msgstr "無效的引用規格:「%s」"
-
-#: refspec.c
-#, c-format
msgid "pattern '%s' has no '*'"
msgstr "符合模式「%s」中沒有「*」"
@@ -25164,8 +24982,8 @@ msgid "could not set recommended config"
msgstr "無法設定建議組態"
#: scalar.c
-msgid "could not turn on maintenance"
-msgstr "無法開啟維護模式"
+msgid "could not toggle maintenance"
+msgstr "無法切換維護模式"
#: scalar.c
msgid "could not start the FSMonitor daemon"
@@ -25225,12 +25043,19 @@ msgid "specify if tags should be fetched during clone"
msgstr "指定是否要在複製階段抓取標籤"
#: scalar.c
+msgid "specify if background maintenance should be enabled"
+msgstr "指定是否要啟用背景維護模式"
+
+#: scalar.c
+#| msgid ""
+#| "scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
+#| "\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
msgid ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]"
msgstr ""
"scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]\n"
-"\t[--[no-]src] [--[no-]tags] <url> [<enlistment>]"
+"\t[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]"
#: scalar.c
#, c-format
@@ -25279,16 +25104,31 @@ msgid "`scalar list` does not take arguments"
msgstr "`scalar list` 未取引數"
#: scalar.c
-msgid "scalar register [<enlistment>]"
-msgstr "scalar register [<enlistment>]"
+#| msgid "scalar register [<enlistment>]"
+msgid "scalar register [--[no-]maintenance] [<enlistment>]"
+msgstr "scalar register [--[no-]maintenance] [<enlistment>]"
#: scalar.c
msgid "reconfigure all registered enlistments"
msgstr "重新設定所有註冊的編列名單"
#: scalar.c
-msgid "scalar reconfigure [--all | <enlistment>]"
-msgstr "scalar reconfigure [--all | <enlistment>]"
+#| msgid "enable/disable untracked cache"
+msgid "(enable|disable|keep)"
+msgstr "(enable|disable|keep)"
+
+#: scalar.c
+msgid "signal how to adjust background maintenance"
+msgstr "指示調整背景維護模式的方式"
+
+#: scalar.c
+#| msgid "scalar reconfigure [--all | <enlistment>]"
+msgid ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enlistment>]"
+msgstr ""
+"scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | "
+"<enlistment>]"
#: scalar.c
msgid "--all or <enlistment>, but not both"
@@ -25296,6 +25136,11 @@ msgstr "--all 或 <enlistment> 但不能傳入兩者"
#: scalar.c
#, c-format
+msgid "unknown mode for --maintenance option: %s"
+msgstr "--maintenance 選項的值無效:%s"
+
+#: scalar.c
+#, c-format
msgid "could not remove stale scalar.repo '%s'"
msgstr "無法移除過時的 scalar.repo「%s」"
@@ -27003,6 +26848,10 @@ msgstr "每次迭代前清除快取樹狀物件"
msgid "number of entries in the cache tree to invalidate (default 0)"
msgstr "在快取樹狀物件中,要使失效的項目數量(預設值為 0)"
+#: t/helper/test-pack-deltas.c
+msgid "the number of objects to write"
+msgstr "要寫入的物件數量"
+
#: t/helper/test-path-walk.c
msgid "test-tool path-walk <options> -- <revision-options>"
msgstr "test-tool path-walk <options> -- <revision-options>"
@@ -27931,6 +27780,16 @@ msgstr "不能取得目前工作目錄"
msgid "unable to get random bytes"
msgstr "無法取得隨機位元組"
+#: wrapper.c
+#, c-format
+msgid "attempting to mmap %<PRIuMAX> over limit %<PRIuMAX>"
+msgstr "嘗試 mmap %<PRIuMAX>,超過了最大值 %<PRIuMAX>"
+
+#: wrapper.c
+#, c-format
+msgid "mmap failed%s"
+msgstr "mmap 失敗%s"
+
#: wt-status.c
msgid "Unmerged paths:"
msgstr "未合併的路徑:"
@@ -28851,6 +28710,15 @@ msgstr "無法正確地初始化 SMTP。檢查設定並使用 --smtp-debug。"
#: git-send-email.perl
#, perl-format
+msgid "Outlook reassigned Message-ID to: %s\n"
+msgstr "Outlook 將 Message-ID 重新指派為:%s\n"
+
+#: git-send-email.perl
+msgid "Warning: Could not retrieve Message-ID from server response.\n"
+msgstr "警告:無法從伺服器回應中取得 Message-ID。\n"
+
+#: git-send-email.perl
+#, perl-format
msgid "Failed to send %s\n"
msgstr "無法傳送 %s\n"
@@ -28969,6 +28837,272 @@ msgstr "略過 %s 含備份後綴 '%s'。\n"
msgid "Do you really want to send %s? [y|N]: "
msgstr "您真的要傳送 %s?[y|N]: "
+#~ msgid "git cat-file (-t | -s) [--allow-unknown-type] <object>"
+#~ msgstr "git cat-file (-t | -s) [--allow-unknown-type] <object>"
+
+#~ msgid "allow -s and -t to work with broken/corrupt objects"
+#~ msgstr "允許 -s 和 -t 對損壞的物件生效"
+
+#, c-format
+#~ msgid "%s: object is of unknown type '%s': %s"
+#~ msgstr "%s:物件屬於「%s」未知類型:%s"
+
+#, c-format
+#~ msgid "%s points nowhere!"
+#~ msgstr "%s 指向不存在!"
+
+#~ msgid "(bad commit)\n"
+#~ msgstr "(壞提交)\n"
+
+#, c-format
+#~ msgid "add_cacheinfo failed for path '%s'; merge aborting."
+#~ msgstr "add_cacheinfo 對路徑 '%s' 執行失敗,合併終止。"
+
+#, c-format
+#~ msgid "add_cacheinfo failed to refresh for path '%s'; merge aborting."
+#~ msgstr "add_cacheinfo 無法重新整理路徑 '%s',合併終止。"
+
+#, c-format
+#~ msgid "failed to create path '%s'%s"
+#~ msgstr "建立路徑 '%s'%s 失敗"
+
+#, c-format
+#~ msgid "Removing %s to make room for subdirectory\n"
+#~ msgstr "刪除 %s 以便為子目錄留出空間\n"
+
+#~ msgid ": perhaps a D/F conflict?"
+#~ msgstr ":可能是一個目錄/檔案衝突?"
+
+#, c-format
+#~ msgid "refusing to lose untracked file at '%s'"
+#~ msgstr "拒絕捨棄 '%s' 中的未追蹤檔案"
+
+#, c-format
+#~ msgid "blob expected for %s '%s'"
+#~ msgstr "%s '%s' 應為資料物件"
+
+#, c-format
+#~ msgid "failed to open '%s': %s"
+#~ msgstr "開啟 '%s' 失敗:%s"
+
+#, c-format
+#~ msgid "failed to symlink '%s': %s"
+#~ msgstr "建立符號連結 '%s' 失敗:%s"
+
+#, c-format
+#~ msgid "do not know what to do with %06o %s '%s'"
+#~ msgstr "不知道如何處理 %06o %s '%s'"
+
+#, c-format
+#~ msgid "Failed to merge submodule %s (repository corrupt)"
+#~ msgstr "無法合併子模組 %s (版本庫損壞)"
+
+#, c-format
+#~ msgid "Fast-forwarding submodule %s to the following commit:"
+#~ msgstr "子模組 %s 快轉到如下提交:"
+
+#, c-format
+#~ msgid "Fast-forwarding submodule %s"
+#~ msgstr "快轉子模組 %s"
+
+#, c-format
+#~ msgid "Failed to merge submodule %s (merge following commits not found)"
+#~ msgstr "無法合併子模組 %s (找不到合併跟隨的提交)"
+
+#, c-format
+#~ msgid "Failed to merge submodule %s (not fast-forward)"
+#~ msgstr "無法合併子模組 %s(非快轉)"
+
+#~ msgid "Found a possible merge resolution for the submodule:\n"
+#~ msgstr "找到子模組的一個可能的合併方案:\n"
+
+#, c-format
+#~ msgid ""
+#~ "If this is correct simply add it to the index for example\n"
+#~ "by using:\n"
+#~ "\n"
+#~ " git update-index --cacheinfo 160000 %s \"%s\"\n"
+#~ "\n"
+#~ "which will accept this suggestion.\n"
+#~ msgstr ""
+#~ "正確的話,就能直接加進索引,例如執行下述命令:\n"
+#~ "\n"
+#~ " git update-index --cacheinfo 160000 %s \"%s\"\n"
+#~ "\n"
+#~ "接受本建議。\n"
+
+#, c-format
+#~ msgid "Failed to merge submodule %s (multiple merges found)"
+#~ msgstr "無法合併子模組 %s (發現多個合併)"
+
+#~ msgid "failed to execute internal merge"
+#~ msgstr "無法執行內部合併"
+
+#, c-format
+#~ msgid "unable to add %s to database"
+#~ msgstr "無法將 %s 加進資料庫"
+
+#, c-format
+#~ msgid "Error: Refusing to lose untracked file at %s; writing to %s instead."
+#~ msgstr "錯誤:拒絕遺失未追蹤檔案 '%s',而是寫入 %s。"
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s "
+#~ "left in tree."
+#~ msgstr ""
+#~ "衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %5$s 中被 %4$s。%7$s 的 %6$s "
+#~ "版本被保留。"
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of "
+#~ "%s left in tree."
+#~ msgstr ""
+#~ "衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %6$s 中的 %5$s 被 %4$s。%8$s "
+#~ "的 %7$s 版本被保留。"
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s "
+#~ "left in tree at %s."
+#~ msgstr ""
+#~ "衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %5$s 中被 %4$s。%7$s 的 %6$s "
+#~ "版本保留在 %8$s 中。"
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (%s/delete): %s deleted in %s and %s to %s in %s. Version %s of "
+#~ "%s left in tree at %s."
+#~ msgstr ""
+#~ "衝突(%1$s/刪除):%2$s 在 %3$s 中被刪除,在 %6$s 中的 %5$s 被 %4$s。%8$s "
+#~ "的 %7$s 版本保留在 %9$s 中。"
+
+#~ msgid "rename"
+#~ msgstr "重新命名"
+
+#~ msgid "renamed"
+#~ msgstr "已重新命名"
+
+#, c-format
+#~ msgid "Refusing to lose dirty file at %s"
+#~ msgstr "拒絕遺失髒檔案 '%s'"
+
+#, c-format
+#~ msgid "Refusing to lose untracked file at %s, even though it's in the way."
+#~ msgstr "拒絕在 '%s' 處失去未追蹤檔案,即使它存在於重新命名中。"
+
+#, c-format
+#~ msgid "CONFLICT (rename/add): Rename %s->%s in %s. Added %s in %s"
+#~ msgstr ""
+#~ "衝突(重新命名/新增):在 %3$s 中重新命名 %1$s->%2$s。在 %5$s 中新增 %4$s"
+
+#, c-format
+#~ msgid "%s is a directory in %s adding as %s instead"
+#~ msgstr "%s 是 %s 中的一個目錄而已 %s 為名被新增"
+
+#, c-format
+#~ msgid "Refusing to lose untracked file at %s; adding as %s instead"
+#~ msgstr "拒絕遺失未追蹤檔案 '%s',而是新增為 %s"
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename "
+#~ "\"%s\"->\"%s\" in \"%s\"%s"
+#~ msgstr ""
+#~ "衝突(重新命名/重新命名):在分支 \"%3$s\" 中重新命名 \"%1$s\"->\"%2$s\","
+#~ "在分支 \"%6$s\" 中重新命名 \"%4$s\"->\"%5$s\"%7$s"
+
+#~ msgid " (left unresolved)"
+#~ msgstr " (留下未解決)"
+
+#, c-format
+#~ msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
+#~ msgstr ""
+#~ "衝突(重新命名/重新命名):在 %3$s 中重新命名 %1$s->%2$s,在 %6$s 中重新命"
+#~ "名 %4$s->%5$s"
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (directory rename split): Unclear where to place %s because "
+#~ "directory %s was renamed to multiple other directories, with no "
+#~ "destination getting a majority of the files."
+#~ msgstr ""
+#~ "衝突(分割的目錄重新命名):不清楚 %s 應該放在哪裡,因為目錄 %s 被重新命名"
+#~ "到多個其它目錄,沒有目錄包含大部分檔案。"
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (rename/rename): Rename directory %s->%s in %s. Rename directory "
+#~ "%s->%s in %s"
+#~ msgstr ""
+#~ "衝突(重新命名/重新命名):在 %3$s 中重新命名目錄 %1$s->%2$s,在 %6$s 中重"
+#~ "新命名目錄 %4$s->%5$s"
+
+#, c-format
+#~ msgid "cannot read object %s"
+#~ msgstr "不能讀取物件 %s"
+
+#, c-format
+#~ msgid "object %s is not a blob"
+#~ msgstr "物件 %s 不是一個資料物件"
+
+#~ msgid "modify"
+#~ msgstr "修改"
+
+#~ msgid "modified"
+#~ msgstr "修改"
+
+#, c-format
+#~ msgid "Skipped %s (merged same as existing)"
+#~ msgstr "略過 %s(已經做過相同合併)"
+
+#, c-format
+#~ msgid "Adding as %s instead"
+#~ msgstr "而是以 %s 為名新增"
+
+#, c-format
+#~ msgid "Removing %s"
+#~ msgstr "刪除 %s"
+
+#~ msgid "file/directory"
+#~ msgstr "檔案/目錄"
+
+#~ msgid "directory/file"
+#~ msgstr "目錄/檔案"
+
+#, c-format
+#~ msgid ""
+#~ "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
+#~ msgstr ""
+#~ "衝突(%1$s):在 %3$s 中有一個名為 %2$s 的目錄。以 %5$s 為名新增 %4$s"
+
+#, c-format
+#~ msgid "Adding %s"
+#~ msgstr "新增 %s"
+
+#, c-format
+#~ msgid "CONFLICT (add/add): Merge conflict in %s"
+#~ msgstr "衝突(add/add):合併衝突於 %s"
+
+#, c-format
+#~ msgid "merging of trees %s and %s failed"
+#~ msgstr "無法合併樹 %s 和 %s"
+
+#~ msgid "Merging:"
+#~ msgstr "合併:"
+
+#, c-format
+#~ msgid "found %u common ancestor:"
+#~ msgid_plural "found %u common ancestors:"
+#~ msgstr[0] "發現 %u 個共同祖先:"
+
+#~ msgid "merge returned no commit"
+#~ msgstr "合併未返回提交"
+
+#~ msgid "cannot write incremental MIDX with bitmap"
+#~ msgstr "無法寫入有位圖的增量 MIDX"
+
#, c-format
#~ msgid "Could not find remote branch %s to clone."
#~ msgstr "找不到要複製的遠端分支 %s。"
@@ -28977,9 +29111,6 @@ msgstr "您真的要傳送 %s?[y|N]: "
#~ msgid "merging cannot continue; got unclean result of %d"
#~ msgstr "無法繼續合併:從 %d 收到的結果不乾淨"
-#~ msgid "git repack [<options>]"
-#~ msgstr "git repack [<選項>]"
-
#~ msgid "--onto and --advance are incompatible"
#~ msgstr "--onto 和 --advance 不相容"
@@ -29029,10 +29160,6 @@ msgstr "您真的要傳送 %s?[y|N]: "
#~ msgstr "使用 [RFC PATCH] 代替 [PATCH]"
#, c-format
-#~ msgid "no URLs configured for remote '%s'"
-#~ msgstr "沒有給遠端版本庫 '%s' 設定 URL"
-
-#, c-format
#~ msgid "remote '%s' has no configured URL"
#~ msgstr "“%s” 遠端未設定 URL"
diff --git a/preload-index.c b/preload-index.c
index 40ab2abafb..b222821b44 100644
--- a/preload-index.c
+++ b/preload-index.c
@@ -2,7 +2,6 @@
* Copyright (C) 2008 Linus Torvalds
*/
-#define USE_THE_REPOSITORY_VARIABLE
#define DISABLE_SIGN_COMPARE_WARNINGS
#include "git-compat-util.h"
@@ -19,6 +18,7 @@
#include "repository.h"
#include "symlinks.h"
#include "trace2.h"
+#include "config.h"
/*
* Mostly randomly chosen maximum thread counts: we
@@ -111,6 +111,9 @@ void preload_index(struct index_state *index,
struct thread_data data[MAX_PARALLEL];
struct progress_data pd;
int t2_sum_lstat = 0;
+ int core_preload_index = 1;
+
+ repo_config_get_bool(index->repo, "core.preloadindex", &core_preload_index);
if (!HAVE_THREADS || !core_preload_index)
return;
@@ -132,7 +135,7 @@ void preload_index(struct index_state *index,
memset(&pd, 0, sizeof(pd));
if (refresh_flags & REFRESH_PROGRESS && isatty(2)) {
- pd.progress = start_delayed_progress(the_repository,
+ pd.progress = start_delayed_progress(index->repo,
_("Refreshing index"),
index->cache_nr);
pthread_mutex_init(&pd.mutex, NULL);
diff --git a/refs.c b/refs.c
index dce5c49ca2..3d580d03bb 100644
--- a/refs.c
+++ b/refs.c
@@ -3314,3 +3314,23 @@ int ref_update_expects_existing_old_ref(struct ref_update *update)
return (update->flags & REF_HAVE_OLD) &&
(!is_null_oid(&update->old_oid) || update->old_target);
}
+
+const char *ref_transaction_error_msg(enum ref_transaction_error err)
+{
+ switch (err) {
+ case REF_TRANSACTION_ERROR_NAME_CONFLICT:
+ return "refname conflict";
+ case REF_TRANSACTION_ERROR_CREATE_EXISTS:
+ return "reference already exists";
+ case REF_TRANSACTION_ERROR_NONEXISTENT_REF:
+ return "reference does not exist";
+ case REF_TRANSACTION_ERROR_INCORRECT_OLD_VALUE:
+ return "incorrect old value provided";
+ case REF_TRANSACTION_ERROR_INVALID_NEW_VALUE:
+ return "invalid new value provided";
+ case REF_TRANSACTION_ERROR_EXPECTED_SYMREF:
+ return "expected symref but found regular ref";
+ default:
+ return "unknown failure";
+ }
+}
diff --git a/refs.h b/refs.h
index 46a6008e07..2d58af3d88 100644
--- a/refs.h
+++ b/refs.h
@@ -908,6 +908,11 @@ void ref_transaction_for_each_rejected_update(struct ref_transaction *transactio
void *cb_data);
/*
+ * Translate errors to human readable error messages.
+ */
+const char *ref_transaction_error_msg(enum ref_transaction_error err);
+
+/*
* Free `*transaction` and all associated data.
*/
void ref_transaction_free(struct ref_transaction *transaction);
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 4d1f65a57a..92c3d2c318 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -3208,6 +3208,10 @@ static int files_transaction_finish(struct ref_store *ref_store,
*/
for (i = 0; i < transaction->nr; i++) {
struct ref_update *update = transaction->updates[i];
+
+ if (update->rejection_err)
+ continue;
+
if (update->flags & REF_DELETING &&
!(update->flags & REF_LOG_ONLY) &&
!(update->flags & REF_IS_PRUNING)) {
@@ -3239,6 +3243,9 @@ static int files_transaction_finish(struct ref_store *ref_store,
struct ref_update *update = transaction->updates[i];
struct ref_lock *lock = update->backend_data;
+ if (update->rejection_err)
+ continue;
+
if (update->flags & REF_DELETING &&
!(update->flags & REF_LOG_ONLY)) {
update->flags |= REF_DELETED_RMDIR;
@@ -3762,6 +3769,9 @@ static int files_fsck_refs_dir(struct ref_store *ref_store,
iter = dir_iterator_begin(sb.buf, 0);
if (!iter) {
+ if (errno == ENOENT && !is_main_worktree(wt))
+ goto out;
+
ret = error_errno(_("cannot open directory %s"), sb.buf);
goto out;
}
diff --git a/remote-curl.c b/remote-curl.c
index 590b228f67..b8bc3a80cf 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -877,12 +877,12 @@ static int probe_rpc(struct rpc_state *rpc, struct slot_results *results)
headers = curl_slist_append(headers, rpc->hdr_content_type);
headers = curl_slist_append(headers, rpc->hdr_accept);
- curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
- curl_easy_setopt(slot->curl, CURLOPT_POST, 1);
+ curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0L);
+ curl_easy_setopt(slot->curl, CURLOPT_POST, 1L);
curl_easy_setopt(slot->curl, CURLOPT_URL, rpc->service_url);
curl_easy_setopt(slot->curl, CURLOPT_ENCODING, NULL);
curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDS, "0000");
- curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDSIZE, 4);
+ curl_easy_setopt(slot->curl, CURLOPT_POSTFIELDSIZE, 4L);
curl_easy_setopt(slot->curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(slot->curl, CURLOPT_WRITEFUNCTION, fwrite_buffer);
curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, &buf);
@@ -970,8 +970,8 @@ retry:
slot = get_active_slot();
- curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0);
- curl_easy_setopt(slot->curl, CURLOPT_POST, 1);
+ curl_easy_setopt(slot->curl, CURLOPT_NOBODY, 0L);
+ curl_easy_setopt(slot->curl, CURLOPT_POST, 1L);
curl_easy_setopt(slot->curl, CURLOPT_URL, rpc->service_url);
curl_easy_setopt(slot->curl, CURLOPT_ENCODING, "");
@@ -1058,7 +1058,7 @@ retry:
rpc_in_data.check_pktline = stateless_connect;
memset(&rpc_in_data.pktline_state, 0, sizeof(rpc_in_data.pktline_state));
curl_easy_setopt(slot->curl, CURLOPT_WRITEDATA, &rpc_in_data);
- curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0);
+ curl_easy_setopt(slot->curl, CURLOPT_FAILONERROR, 0L);
rpc->any_written = 0;
diff --git a/remote.c b/remote.c
index 4099183cac..60b4aec3de 100644
--- a/remote.c
+++ b/remote.c
@@ -165,6 +165,9 @@ static void remote_clear(struct remote *remote)
strvec_clear(&remote->url);
strvec_clear(&remote->pushurl);
+ refspec_clear(&remote->push);
+ refspec_clear(&remote->fetch);
+
free((char *)remote->receivepack);
free((char *)remote->uploadpack);
FREE_AND_NULL(remote->http_proxy);
@@ -174,9 +177,15 @@ static void remote_clear(struct remote *remote)
static void add_merge(struct branch *branch, const char *name)
{
- ALLOC_GROW(branch->merge_name, branch->merge_nr + 1,
+ struct refspec_item *merge;
+
+ ALLOC_GROW(branch->merge, branch->merge_nr + 1,
branch->merge_alloc);
- branch->merge_name[branch->merge_nr++] = name;
+
+ merge = xcalloc(1, sizeof(*merge));
+ merge->src = xstrdup(name);
+
+ branch->merge[branch->merge_nr++] = merge;
}
struct branches_hash_key {
@@ -247,15 +256,23 @@ static struct branch *make_branch(struct remote_state *remote_state,
return ret;
}
+static void merge_clear(struct branch *branch)
+{
+ for (int i = 0; i < branch->merge_nr; i++) {
+ refspec_item_clear(branch->merge[i]);
+ free(branch->merge[i]);
+ }
+ FREE_AND_NULL(branch->merge);
+ branch->merge_nr = 0;
+}
+
static void branch_release(struct branch *branch)
{
free((char *)branch->name);
free((char *)branch->refname);
free(branch->remote_name);
free(branch->pushremote_name);
- for (int i = 0; i < branch->merge_nr; i++)
- refspec_item_clear(branch->merge[i]);
- free(branch->merge);
+ merge_clear(branch);
}
static struct rewrite *make_rewrite(struct rewrites *r,
@@ -317,11 +334,10 @@ static void warn_about_deprecated_remote_type(const char *type,
type, remote->name, remote->name, remote->name);
}
-static void read_remotes_file(struct remote_state *remote_state,
- struct remote *remote)
+static void read_remotes_file(struct repository *repo, struct remote *remote)
{
struct strbuf buf = STRBUF_INIT;
- FILE *f = fopen_or_warn(repo_git_path_append(the_repository, &buf,
+ FILE *f = fopen_or_warn(repo_git_path_append(repo, &buf,
"remotes/%s", remote->name), "r");
if (!f)
@@ -337,7 +353,7 @@ static void read_remotes_file(struct remote_state *remote_state,
strbuf_rtrim(&buf);
if (skip_prefix(buf.buf, "URL:", &v))
- add_url_alias(remote_state, remote,
+ add_url_alias(repo->remote_state, remote,
skip_spaces(v));
else if (skip_prefix(buf.buf, "Push:", &v))
refspec_append(&remote->push, skip_spaces(v));
@@ -350,12 +366,11 @@ out:
strbuf_release(&buf);
}
-static void read_branches_file(struct remote_state *remote_state,
- struct remote *remote)
+static void read_branches_file(struct repository *repo, struct remote *remote)
{
char *frag, *to_free = NULL;
struct strbuf buf = STRBUF_INIT;
- FILE *f = fopen_or_warn(repo_git_path_append(the_repository, &buf,
+ FILE *f = fopen_or_warn(repo_git_path_append(repo, &buf,
"branches/%s", remote->name), "r");
if (!f)
@@ -382,9 +397,9 @@ static void read_branches_file(struct remote_state *remote_state,
if (frag)
*(frag++) = '\0';
else
- frag = to_free = repo_default_branch_name(the_repository, 0);
+ frag = to_free = repo_default_branch_name(repo, 0);
- add_url_alias(remote_state, remote, buf.buf);
+ add_url_alias(repo->remote_state, remote, buf.buf);
refspec_appendf(&remote->fetch, "refs/heads/%s:refs/heads/%s",
frag, remote->name);
@@ -429,7 +444,7 @@ static int handle_config(const char *key, const char *value,
} else if (!strcmp(subkey, "merge")) {
if (!value)
return config_error_nonbool(key);
- add_merge(branch, xstrdup(value));
+ add_merge(branch, value);
}
return 0;
}
@@ -681,7 +696,7 @@ const char *pushremote_for_branch(struct branch *branch, int *explicit)
branch, explicit);
}
-static struct remote *remotes_remote_get(struct remote_state *remote_state,
+static struct remote *remotes_remote_get(struct repository *repo,
const char *name);
char *remote_ref_for_branch(struct branch *branch, int for_push)
@@ -692,7 +707,7 @@ char *remote_ref_for_branch(struct branch *branch, int for_push)
if (branch) {
if (!for_push) {
if (branch->merge_nr) {
- return xstrdup(branch->merge_name[0]);
+ return xstrdup(branch->merge[0]->src);
}
} else {
char *dst;
@@ -700,7 +715,7 @@ char *remote_ref_for_branch(struct branch *branch, int for_push)
the_repository->remote_state, branch,
NULL);
struct remote *remote = remotes_remote_get(
- the_repository->remote_state, remote_name);
+ the_repository, remote_name);
if (remote && remote->push.nr &&
(dst = apply_refspecs(&remote->push,
@@ -757,10 +772,11 @@ loop_cleanup:
}
static struct remote *
-remotes_remote_get_1(struct remote_state *remote_state, const char *name,
+remotes_remote_get_1(struct repository *repo, const char *name,
const char *(*get_default)(struct remote_state *,
struct branch *, int *))
{
+ struct remote_state *remote_state = repo->remote_state;
struct remote *ret;
int name_given = 0;
@@ -774,9 +790,9 @@ remotes_remote_get_1(struct remote_state *remote_state, const char *name,
#ifndef WITH_BREAKING_CHANGES
if (valid_remote_nick(name) && have_git_dir()) {
if (!valid_remote(ret))
- read_remotes_file(remote_state, ret);
+ read_remotes_file(repo, ret);
if (!valid_remote(ret))
- read_branches_file(remote_state, ret);
+ read_branches_file(repo, ret);
}
#endif /* WITH_BREAKING_CHANGES */
if (name_given && !valid_remote(ret))
@@ -790,35 +806,33 @@ remotes_remote_get_1(struct remote_state *remote_state, const char *name,
}
static inline struct remote *
-remotes_remote_get(struct remote_state *remote_state, const char *name)
+remotes_remote_get(struct repository *repo, const char *name)
{
- return remotes_remote_get_1(remote_state, name,
- remotes_remote_for_branch);
+ return remotes_remote_get_1(repo, name, remotes_remote_for_branch);
}
struct remote *remote_get(const char *name)
{
read_config(the_repository, 0);
- return remotes_remote_get(the_repository->remote_state, name);
+ return remotes_remote_get(the_repository, name);
}
struct remote *remote_get_early(const char *name)
{
read_config(the_repository, 1);
- return remotes_remote_get(the_repository->remote_state, name);
+ return remotes_remote_get(the_repository, name);
}
static inline struct remote *
-remotes_pushremote_get(struct remote_state *remote_state, const char *name)
+remotes_pushremote_get(struct repository *repo, const char *name)
{
- return remotes_remote_get_1(remote_state, name,
- remotes_pushremote_for_branch);
+ return remotes_remote_get_1(repo, name, remotes_pushremote_for_branch);
}
struct remote *pushremote_get(const char *name)
{
read_config(the_repository, 0);
- return remotes_pushremote_get(the_repository->remote_state, name);
+ return remotes_pushremote_get(the_repository, name);
}
int remote_is_configured(struct remote *remote, int in_repo)
@@ -1722,7 +1736,7 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
}
}
-static void set_merge(struct remote_state *remote_state, struct branch *ret)
+static void set_merge(struct repository *repo, struct branch *ret)
{
struct remote *remote;
char *ref;
@@ -1731,52 +1745,80 @@ static void set_merge(struct remote_state *remote_state, struct branch *ret)
if (!ret)
return; /* no branch */
- if (ret->merge)
+ if (ret->set_merge)
return; /* already run */
if (!ret->remote_name || !ret->merge_nr) {
/*
* no merge config; let's make sure we don't confuse callers
* with a non-zero merge_nr but a NULL merge
*/
- ret->merge_nr = 0;
+ merge_clear(ret);
return;
}
+ ret->set_merge = 1;
- remote = remotes_remote_get(remote_state, ret->remote_name);
+ remote = remotes_remote_get(repo, ret->remote_name);
- CALLOC_ARRAY(ret->merge, ret->merge_nr);
for (i = 0; i < ret->merge_nr; i++) {
- ret->merge[i] = xcalloc(1, sizeof(**ret->merge));
- ret->merge[i]->src = xstrdup(ret->merge_name[i]);
if (!remote_find_tracking(remote, ret->merge[i]) ||
strcmp(ret->remote_name, "."))
continue;
- if (repo_dwim_ref(the_repository, ret->merge_name[i],
- strlen(ret->merge_name[i]), &oid, &ref,
+ if (repo_dwim_ref(repo, ret->merge[i]->src,
+ strlen(ret->merge[i]->src), &oid, &ref,
0) == 1)
ret->merge[i]->dst = ref;
else
- ret->merge[i]->dst = xstrdup(ret->merge_name[i]);
+ ret->merge[i]->dst = xstrdup(ret->merge[i]->src);
}
}
-struct branch *branch_get(const char *name)
+static struct branch *repo_branch_get(struct repository *repo, const char *name)
{
struct branch *ret;
- read_config(the_repository, 0);
+ read_config(repo, 0);
if (!name || !*name || !strcmp(name, "HEAD"))
- ret = the_repository->remote_state->current_branch;
+ ret = repo->remote_state->current_branch;
else
- ret = make_branch(the_repository->remote_state, name,
+ ret = make_branch(repo->remote_state, name,
strlen(name));
- set_merge(the_repository->remote_state, ret);
+ set_merge(repo, ret);
return ret;
}
+struct branch *branch_get(const char *name)
+{
+ return repo_branch_get(the_repository, name);
+}
+
+const char *repo_default_remote(struct repository *repo)
+{
+ struct branch *branch;
+
+ read_config(repo, 0);
+ branch = repo_branch_get(repo, "HEAD");
+
+ return remotes_remote_for_branch(repo->remote_state, branch, NULL);
+}
+
+const char *repo_remote_from_url(struct repository *repo, const char *url)
+{
+ read_config(repo, 0);
+
+ for (int i = 0; i < repo->remote_state->remotes_nr; i++) {
+ struct remote *remote = repo->remote_state->remotes[i];
+ if (!remote)
+ continue;
+
+ if (remote_has_url(remote, url))
+ return remote->name;
+ }
+ return NULL;
+}
+
int branch_has_merge_config(struct branch *branch)
{
- return branch && !!branch->merge;
+ return branch && branch->set_merge;
}
int branch_merge_matches(struct branch *branch,
@@ -1841,13 +1883,14 @@ static const char *tracking_for_push_dest(struct remote *remote,
return ret;
}
-static const char *branch_get_push_1(struct remote_state *remote_state,
+static const char *branch_get_push_1(struct repository *repo,
struct branch *branch, struct strbuf *err)
{
+ struct remote_state *remote_state = repo->remote_state;
struct remote *remote;
remote = remotes_remote_get(
- remote_state,
+ repo,
remotes_pushremote_for_branch(remote_state, branch, NULL));
if (!remote)
return error_buf(err,
@@ -1914,7 +1957,7 @@ const char *branch_get_push(struct branch *branch, struct strbuf *err)
if (!branch->push_tracking_ref)
branch->push_tracking_ref = branch_get_push_1(
- the_repository->remote_state, branch, err);
+ the_repository, branch, err);
return branch->push_tracking_ref;
}
diff --git a/remote.h b/remote.h
index 7e4943ae3a..0ca399e183 100644
--- a/remote.h
+++ b/remote.h
@@ -9,6 +9,7 @@
struct option;
struct transport_ls_refs_options;
+struct repository;
/**
* The API gives access to the configuration related to remotes. It handles
@@ -315,8 +316,8 @@ struct branch {
char *pushremote_name;
- /* An array of the "merge" lines in the configuration. */
- const char **merge_name;
+ /* True if set_merge() has been called to finalize the merge array */
+ int set_merge;
/**
* An array of the struct refspecs used for the merge lines. That is,
@@ -338,6 +339,9 @@ const char *remote_for_branch(struct branch *branch, int *explicit);
const char *pushremote_for_branch(struct branch *branch, int *explicit);
char *remote_ref_for_branch(struct branch *branch, int for_push);
+const char *repo_default_remote(struct repository *repo);
+const char *repo_remote_from_url(struct repository *repo, const char *url);
+
/* returns true if the given branch has merge configuration given. */
int branch_has_merge_config(struct branch *branch);
diff --git a/repo-settings.c b/repo-settings.c
index 4129f8fb2b..195c24e9c0 100644
--- a/repo-settings.c
+++ b/repo-settings.c
@@ -54,11 +54,13 @@ void prepare_repo_settings(struct repository *r)
r->settings.fetch_negotiation_algorithm = FETCH_NEGOTIATION_SKIPPING;
r->settings.pack_use_bitmap_boundary_traversal = 1;
r->settings.pack_use_multi_pack_reuse = 1;
+ r->settings.pack_use_path_walk = 1;
}
if (manyfiles) {
r->settings.index_version = 4;
r->settings.index_skip_hash = 1;
r->settings.core_untracked_cache = UNTRACKED_CACHE_WRITE;
+ r->settings.pack_use_path_walk = 1;
}
/* Commit graph config or default, does not cascade (simple) */
@@ -73,6 +75,7 @@ void prepare_repo_settings(struct repository *r)
/* Boolean config or default, does not cascade (simple) */
repo_cfg_bool(r, "pack.usesparse", &r->settings.pack_use_sparse, 1);
+ repo_cfg_bool(r, "pack.usepathwalk", &r->settings.pack_use_path_walk, 0);
repo_cfg_bool(r, "core.multipackindex", &r->settings.core_multi_pack_index, 1);
repo_cfg_bool(r, "index.sparse", &r->settings.sparse_index, 0);
repo_cfg_bool(r, "index.skiphash", &r->settings.index_skip_hash, r->settings.index_skip_hash);
diff --git a/repo-settings.h b/repo-settings.h
index 2bf24b2597..d477885561 100644
--- a/repo-settings.h
+++ b/repo-settings.h
@@ -56,6 +56,7 @@ struct repo_settings {
enum untracked_cache_setting core_untracked_cache;
int pack_use_sparse;
+ int pack_use_path_walk;
enum fetch_negotiation_setting fetch_negotiation_algorithm;
int core_multi_pack_index;
diff --git a/revision.c b/revision.c
index 2c36a9c179..afee111196 100644
--- a/revision.c
+++ b/revision.c
@@ -2060,6 +2060,7 @@ static void prepare_show_merge(struct rev_info *revs)
parse_pathspec(&revs->prune_data, PATHSPEC_ALL_MAGIC & ~PATHSPEC_LITERAL,
PATHSPEC_PREFER_FULL | PATHSPEC_LITERAL_PATH, "", prune);
revs->limited = 1;
+ free(prune);
}
static int dotdot_missing(const char *arg, char *dotdot,
diff --git a/scalar.c b/scalar.c
index 355baf75e4..0dc79fa9fb 100644
--- a/scalar.c
+++ b/scalar.c
@@ -170,6 +170,7 @@ static int set_recommended_config(int reconfigure)
{ "core.autoCRLF", "false" },
{ "core.safeCRLF", "false" },
{ "fetch.showForcedUpdates", "false" },
+ { "pack.usePathWalk", "true" },
{ NULL, NULL },
};
int i;
diff --git a/send-pack.c b/send-pack.c
index 86592ce526..e2faa25b98 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -257,6 +257,13 @@ static int receive_status(struct repository *r,
refname);
continue;
}
+
+ /*
+ * Clients sending duplicate refs can cause the same value
+ * to be overridden, causing a memory leak.
+ */
+ free(hint->remote_status);
+
if (!strcmp(head, "ng")) {
hint->status = REF_STATUS_REMOTE_REJECT;
if (p)
diff --git a/sequencer.c b/sequencer.c
index 1ee0abbd45..9456ca6ee9 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -2067,6 +2067,9 @@ static int update_squash_messages(struct repository *r,
const char *message, *body;
const char *encoding = get_commit_output_encoding();
+ if (!is_fixup(command))
+ BUG("not a FIXUP or SQUASH %d", command);
+
if (ctx->current_fixup_count > 0) {
struct strbuf header = STRBUF_INIT;
char *eol;
@@ -2134,8 +2137,7 @@ static int update_squash_messages(struct repository *r,
strbuf_addstr(&buf, "\n\n");
strbuf_add_commented_lines(&buf, body, strlen(body),
comment_line_str);
- } else
- return error(_("unknown command: %d"), command);
+ }
repo_unuse_commit_buffer(r, commit, message);
if (!res)
diff --git a/sub-process.h b/sub-process.h
index 6a61638a8a..bfc3959a1b 100644
--- a/sub-process.h
+++ b/sub-process.h
@@ -73,7 +73,7 @@ static inline struct child_process *subprocess_get_child_process(
/*
* Perform the version and capability negotiation as described in the
- * "Handshake" section of long-running-process-protocol.txt using the
+ * "Handshake" section of long-running-process-protocol.adoc using the
* given requested versions and capabilities. The "versions" and "capabilities"
* parameters are arrays terminated by a 0 or blank struct.
*
diff --git a/submodule-config.c b/submodule-config.c
index 8630e27947..d64438b2a1 100644
--- a/submodule-config.c
+++ b/submodule-config.c
@@ -235,18 +235,6 @@ in_component:
return 0;
}
-static int starts_with_dot_slash(const char *const path)
-{
- return path_match_flags(path, PATH_MATCH_STARTS_WITH_DOT_SLASH |
- PATH_MATCH_XPLATFORM);
-}
-
-static int starts_with_dot_dot_slash(const char *const path)
-{
- return path_match_flags(path, PATH_MATCH_STARTS_WITH_DOT_DOT_SLASH |
- PATH_MATCH_XPLATFORM);
-}
-
static int submodule_url_is_relative(const char *url)
{
return starts_with_dot_slash(url) || starts_with_dot_dot_slash(url);
diff --git a/t/README b/t/README
index e9ffd9a81c..adbbd9acf4 100644
--- a/t/README
+++ b/t/README
@@ -415,6 +415,10 @@ GIT_TEST_PACK_SPARSE=<boolean> if disabled will default the pack-objects
builtin to use the non-sparse object walk. This can still be overridden by
the --sparse command-line argument.
+GIT_TEST_PACK_PATH_WALK=<boolean> if enabled will default the pack-objects
+builtin to use the path-walk API for the object walk. This can still be
+overridden by the --no-path-walk command-line argument.
+
GIT_TEST_PRELOAD_INDEX=<boolean> exercises the preload-index code path
by overriding the minimum number of cache entries required per thread.
diff --git a/t/helper/test-path-walk.c b/t/helper/test-path-walk.c
index 61e845e5ec..fe63002c2b 100644
--- a/t/helper/test-path-walk.c
+++ b/t/helper/test-path-walk.c
@@ -82,6 +82,8 @@ int cmd__path_walk(int argc, const char **argv)
N_("toggle inclusion of tree objects")),
OPT_BOOL(0, "prune", &info.prune_all_uninteresting,
N_("toggle pruning of uninteresting paths")),
+ OPT_BOOL(0, "edge-aggressive", &info.edge_aggressive,
+ N_("toggle aggressive edge walk")),
OPT_BOOL(0, "stdin-pl", &stdin_pl,
N_("read a pattern list over stdin")),
OPT_END(),
diff --git a/t/meson.build b/t/meson.build
index d052fc3e23..6d7fe6b117 100644
--- a/t/meson.build
+++ b/t/meson.build
@@ -51,7 +51,7 @@ clar_unit_tests = executable('unit-tests',
sources: clar_sources + clar_test_suites,
dependencies: [libgit_commonmain],
)
-test('unit-tests', clar_unit_tests)
+test('unit-tests', clar_unit_tests, kwargs: test_kwargs)
unit_test_programs = [
'unit-tests/t-reftable-basics.c',
@@ -76,7 +76,7 @@ foreach unit_test_program : unit_test_programs
)
test(unit_test_name, unit_test,
workdir: meson.current_source_dir(),
- timeout: 0,
+ kwargs: test_kwargs,
)
endforeach
@@ -178,7 +178,6 @@ integration_tests = [
't1015-read-index-unmerged.sh',
't1016-compatObjectFormat.sh',
't1020-subdirectory.sh',
- 't1021-rerere-in-workdir.sh',
't1022-read-tree-partial-clone.sh',
't1050-large.sh',
't1051-large-conversion.sh',
@@ -1212,7 +1211,7 @@ foreach integration_test : integration_tests
workdir: meson.current_source_dir(),
env: test_environment,
depends: test_dependencies + bin_wrappers,
- timeout: 0,
+ kwargs: test_kwargs,
)
endforeach
diff --git a/t/perf/p5313-pack-objects.sh b/t/perf/p5313-pack-objects.sh
index 786a2c1c6f..46a6cd32d2 100755
--- a/t/perf/p5313-pack-objects.sh
+++ b/t/perf/p5313-pack-objects.sh
@@ -22,46 +22,53 @@ test_expect_success 'create rev input' '
EOF
'
-for version in 1 2
-do
- export version
+test_all_with_args () {
+ parameter=$1
+ export parameter
- test_perf "thin pack with version $version" '
+ test_perf "thin pack with $parameter" '
git pack-objects --thin --stdout --revs --sparse \
- --name-hash-version=$version <in-thin >out
+ $parameter <in-thin >out
'
- test_size "thin pack size with version $version" '
+ test_size "thin pack size with $parameter" '
test_file_size out
'
- test_perf "big pack with version $version" '
+ test_perf "big pack with $parameter" '
git pack-objects --stdout --revs --sparse \
- --name-hash-version=$version <in-big >out
+ $parameter <in-big >out
'
- test_size "big pack size with version $version" '
+ test_size "big pack size with $parameter" '
test_file_size out
'
- test_perf "shallow fetch pack with version $version" '
+ test_perf "shallow fetch pack with $parameter" '
git pack-objects --stdout --revs --sparse --shallow \
- --name-hash-version=$version <in-shallow >out
+ $parameter <in-shallow >out
'
- test_size "shallow pack size with version $version" '
+ test_size "shallow pack size with $parameter" '
test_file_size out
'
- test_perf "repack with version $version" '
- git repack -adf --name-hash-version=$version
+ test_perf "repack with $parameter" '
+ git repack -adf $parameter
'
- test_size "repack size with version $version" '
+ test_size "repack size with $parameter" '
gitdir=$(git rev-parse --git-dir) &&
pack=$(ls $gitdir/objects/pack/pack-*.pack) &&
test_file_size "$pack"
'
+}
+
+for version in 1 2
+do
+ test_all_with_args --name-hash-version=$version
done
+test_all_with_args --path-walk
+
test_done
diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index 35c5c2b4f9..2b63e1c86c 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -130,7 +130,7 @@ test_expect_success 'subtest: a failing TODO test' '
'
test_expect_success 'subtest: a passing TODO test' '
- write_and_run_sub_test_lib_test passing-todo <<-\EOF &&
+ write_and_run_sub_test_lib_test_err passing-todo <<-\EOF &&
test_expect_failure "pretend we have fixed a known breakage" "true"
test_done
EOF
@@ -142,7 +142,7 @@ test_expect_success 'subtest: a passing TODO test' '
'
test_expect_success 'subtest: 2 TODO tests, one passin' '
- write_and_run_sub_test_lib_test partially-passing-todos <<-\EOF &&
+ write_and_run_sub_test_lib_test_err partially-passing-todos <<-\EOF &&
test_expect_failure "pretend we have a known breakage" "false"
test_expect_success "pretend we have a passing test" "true"
test_expect_failure "pretend we have fixed another known breakage" "true"
@@ -219,41 +219,44 @@ test_expect_success 'subtest: --verbose option' '
test_expect_success "failing test" false
test_done
EOF
- mv t1234-verbose/out t1234-verbose/out+ &&
- grep -v "^Initialized empty" t1234-verbose/out+ >t1234-verbose/out &&
- check_sub_test_lib_test t1234-verbose <<-\EOF
- > expecting success of 1234.1 '\''passing test'\'': true
+ mv t1234-verbose/err t1234-verbose/err+ &&
+ grep -v "^Initialized empty" t1234-verbose/err+ >t1234-verbose/err &&
+ check_sub_test_lib_test_err t1234-verbose \
+ <<-\EOF_OUT 3<<-\EOF_ERR
> ok 1 - passing test
+ > ok 2 - test with output
+ > not ok 3 - failing test
+ > # false
+ > # failed 1 among 3 test(s)
+ > 1..3
+ EOF_OUT
+ > expecting success of 1234.1 '\''passing test'\'': true
> Z
> expecting success of 1234.2 '\''test with output'\'': echo foo
> foo
- > ok 2 - test with output
> Z
> expecting success of 1234.3 '\''failing test'\'': false
- > not ok 3 - failing test
- > # false
> Z
- > # failed 1 among 3 test(s)
- > 1..3
- EOF
+ EOF_ERR
'
test_expect_success 'subtest: --verbose-only option' '
run_sub_test_lib_test_err \
t1234-verbose \
--verbose-only=2 &&
- check_sub_test_lib_test t1234-verbose <<-\EOF
+ check_sub_test_lib_test_err t1234-verbose <<-\EOF_OUT 3<<-\EOF_ERR
> ok 1 - passing test
- > Z
- > expecting success of 1234.2 '\''test with output'\'': echo foo
- > foo
> ok 2 - test with output
- > Z
> not ok 3 - failing test
> # false
> # failed 1 among 3 test(s)
> 1..3
- EOF
+ EOF_OUT
+ > Z
+ > expecting success of 1234.2 '\''test with output'\'': echo foo
+ > foo
+ > Z
+ EOF_ERR
'
test_expect_success 'subtest: skip one with GIT_SKIP_TESTS' '
diff --git a/t/t0021-conversion.sh b/t/t0021-conversion.sh
index bf10d253ec..f0d50d769e 100755
--- a/t/t0021-conversion.sh
+++ b/t/t0021-conversion.sh
@@ -281,7 +281,7 @@ test_expect_success 'required filter with absent smudge field' '
test_expect_success 'filtering large input to small output should use little memory' '
test_config filter.devnull.clean "cat >/dev/null" &&
test_config filter.devnull.required true &&
- for i in $(test_seq 1 30); do printf "%1048576d" 1 || return 1; done >30MB &&
+ test_seq -f "%1048576d" 1 30 >30MB &&
echo "30MB filter=devnull" >.gitattributes &&
GIT_MMAP_LIMIT=1m GIT_ALLOC_LIMIT=1m git add 30MB
'
@@ -299,7 +299,7 @@ test_expect_success 'filter that does not read is fine' '
test_expect_success EXPENSIVE 'filter large file' '
test_config filter.largefile.smudge cat &&
test_config filter.largefile.clean cat &&
- for i in $(test_seq 1 2048); do printf "%1048576d" 1 || return 1; done >2GB &&
+ test_seq -f "%1048576d" 1 2048 >2GB &&
echo "2GB filter=largefile" >.gitattributes &&
git add 2GB 2>err &&
test_must_be_empty err &&
diff --git a/t/t0050-filesystem.sh b/t/t0050-filesystem.sh
index 5c9dc90d0b..ca8568067d 100755
--- a/t/t0050-filesystem.sh
+++ b/t/t0050-filesystem.sh
@@ -10,53 +10,35 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
auml=$(printf '\303\244')
aumlcdiar=$(printf '\141\314\210')
-if test_have_prereq CASE_INSENSITIVE_FS
-then
- say "will test on a case insensitive filesystem"
- test_case=test_expect_failure
-else
- test_case=test_expect_success
-fi
-
if test_have_prereq UTF8_NFD_TO_NFC
then
- say "will test on a unicode corrupting filesystem"
test_unicode=test_expect_failure
else
test_unicode=test_expect_success
fi
-test_have_prereq SYMLINKS ||
- say "will test on a filesystem lacking symbolic links"
-
-if test_have_prereq CASE_INSENSITIVE_FS
-then
-test_expect_success "detection of case insensitive filesystem during repo init" '
+test_expect_success CASE_INSENSITIVE_FS "detection of case insensitive filesystem during repo init" '
test $(git config --bool core.ignorecase) = true
'
-else
-test_expect_success "detection of case insensitive filesystem during repo init" '
+
+test_expect_success !CASE_INSENSITIVE_FS "detection of case insensitive filesystem during repo init" '
{
test_must_fail git config --bool core.ignorecase >/dev/null ||
test $(git config --bool core.ignorecase) = false
}
'
-fi
-if test_have_prereq SYMLINKS
-then
-test_expect_success "detection of filesystem w/o symlink support during repo init" '
+test_expect_success SYMLINKS "detection of filesystem w/o symlink support during repo init" '
{
test_must_fail git config --bool core.symlinks ||
test "$(git config --bool core.symlinks)" = true
}
'
-else
-test_expect_success "detection of filesystem w/o symlink support during repo init" '
+
+test_expect_success !SYMLINKS "detection of filesystem w/o symlink support during repo init" '
v=$(git config --bool core.symlinks) &&
test "$v" = false
'
-fi
test_expect_success "setup case tests" '
git config core.ignorecase true &&
diff --git a/t/t0411-clone-from-partial.sh b/t/t0411-clone-from-partial.sh
index 196fc61784..9e6bca5625 100755
--- a/t/t0411-clone-from-partial.sh
+++ b/t/t0411-clone-from-partial.sh
@@ -59,6 +59,12 @@ test_expect_success 'pack-objects should fetch from promisor remote and execute
test_expect_success 'clone from promisor remote does not lazy-fetch by default' '
rm -f script-executed &&
+
+ # The --path-walk feature of "git pack-objects" is not
+ # compatible with this kind of fetch from an incomplete repo.
+ GIT_TEST_PACK_PATH_WALK=0 &&
+ export GIT_TEST_PACK_PATH_WALK &&
+
test_must_fail git clone evil no-lazy 2>err &&
test_grep "lazy fetching disabled" err &&
test_path_is_missing script-executed
diff --git a/t/t0450/adoc-help-mismatches b/t/t0450/adoc-help-mismatches
index c4a15fd0cb..06b469bdee 100644
--- a/t/t0450/adoc-help-mismatches
+++ b/t/t0450/adoc-help-mismatches
@@ -38,7 +38,6 @@ merge-one-file
multi-pack-index
name-rev
notes
-pack-objects
push
range-diff
rebase
diff --git a/t/t0602-reffiles-fsck.sh b/t/t0602-reffiles-fsck.sh
index f671ac4d3a..0ef483659d 100755
--- a/t/t0602-reffiles-fsck.sh
+++ b/t/t0602-reffiles-fsck.sh
@@ -110,6 +110,25 @@ test_expect_success 'ref name check should be adapted into fsck messages' '
)
'
+test_expect_success 'no refs directory of worktree should not cause problems' '
+ test_when_finished "rm -rf repo" &&
+ git init repo &&
+ (
+ cd repo &&
+ test_commit initial &&
+ git worktree add --detach ./worktree &&
+
+ (
+ cd worktree &&
+ worktree_refdir="$(git rev-parse --git-dir)/refs" &&
+ # Simulate old directory layout
+ rmdir "$worktree_refdir" &&
+ git refs verify 2>err &&
+ test_must_be_empty err
+ )
+ )
+'
+
test_expect_success 'ref name check should work for multiple worktrees' '
test_when_finished "rm -rf repo" &&
git init repo &&
diff --git a/t/t0610-reftable-basics.sh b/t/t0610-reftable-basics.sh
index 1be534a895..3ea5d51532 100755
--- a/t/t0610-reftable-basics.sh
+++ b/t/t0610-reftable-basics.sh
@@ -477,11 +477,7 @@ test_expect_success !CYGWIN 'ref transaction: many concurrent writers' '
test_commit --no-tag initial &&
head=$(git rev-parse HEAD) &&
- for i in $(test_seq 100)
- do
- printf "%s commit\trefs/heads/branch-%s\n" "$head" "$i" ||
- return 1
- done >expect &&
+ test_seq -f "$head commit\trefs/heads/branch-%d" 100 >expect &&
printf "%s commit\trefs/heads/main\n" "$head" >>expect &&
for i in $(test_seq 100)
diff --git a/t/t0612-reftable-jgit-compatibility.sh b/t/t0612-reftable-jgit-compatibility.sh
index d0d7e80b49..7df2ad5817 100755
--- a/t/t0612-reftable-jgit-compatibility.sh
+++ b/t/t0612-reftable-jgit-compatibility.sh
@@ -112,14 +112,11 @@ test_expect_success 'JGit can read multi-level index' '
cd repo &&
test_commit A &&
- awk "
- BEGIN {
- print \"start\";
- for (i = 0; i < 10000; i++)
- printf \"create refs/heads/branch-%d HEAD\n\", i;
- print \"commit\";
- }
- " >input &&
+ {
+ echo start &&
+ test_seq -f "create refs/heads/branch-%d HEAD" 10000 &&
+ echo commit
+ } >input &&
git update-ref --stdin <input &&
test_same_refs &&
diff --git a/t/t0613-reftable-write-options.sh b/t/t0613-reftable-write-options.sh
index 6447920c9b..d77e601111 100755
--- a/t/t0613-reftable-write-options.sh
+++ b/t/t0613-reftable-write-options.sh
@@ -66,11 +66,7 @@ test_expect_success 'many refs results in multiple blocks' '
(
cd repo &&
test_commit initial &&
- for i in $(test_seq 200)
- do
- printf "update refs/heads/branch-%d HEAD\n" "$i" ||
- return 1
- done >input &&
+ test_seq -f "update refs/heads/branch-%d HEAD" 200 >input &&
git update-ref --stdin <input &&
git pack-refs &&
@@ -180,11 +176,7 @@ test_expect_success 'restart interval at every single record' '
(
cd repo &&
test_commit initial &&
- for i in $(test_seq 10)
- do
- printf "update refs/heads/branch-%d HEAD\n" "$i" ||
- return 1
- done >input &&
+ test_seq -f "update refs/heads/branch-%d HEAD" 10 >input &&
git update-ref --stdin <input &&
git -c reftable.restartInterval=1 pack-refs &&
@@ -224,11 +216,7 @@ test_expect_success 'object index gets written by default with ref index' '
(
cd repo &&
test_commit initial &&
- for i in $(test_seq 5)
- do
- printf "update refs/heads/branch-%d HEAD\n" "$i" ||
- return 1
- done >input &&
+ test_seq -f "update refs/heads/branch-%d HEAD" 5 >input &&
git update-ref --stdin <input &&
git -c reftable.blockSize=100 pack-refs &&
@@ -263,11 +251,7 @@ test_expect_success 'object index can be disabled' '
(
cd repo &&
test_commit initial &&
- for i in $(test_seq 5)
- do
- printf "update refs/heads/branch-%d HEAD\n" "$i" ||
- return 1
- done >input &&
+ test_seq -f "update refs/heads/branch-%d HEAD" 5 >input &&
git update-ref --stdin <input &&
git -c reftable.blockSize=100 -c reftable.indexObjects=false pack-refs &&
diff --git a/t/t1006-cat-file.sh b/t/t1006-cat-file.sh
index 317da6869c..f123ef1e36 100755
--- a/t/t1006-cat-file.sh
+++ b/t/t1006-cat-file.sh
@@ -113,53 +113,55 @@ strlen () {
run_tests () {
type=$1
- oid=$2
- size=$3
- content=$4
- pretty_content=$5
+ object_name="$2"
+ mode=$3
+ size=$4
+ content=$5
+ pretty_content=$6
+ oid=${7:-"$object_name"}
batch_output="$oid $type $size
$content"
test_expect_success "$type exists" '
- git cat-file -e $oid
+ git cat-file -e "$object_name"
'
test_expect_success "Type of $type is correct" '
echo $type >expect &&
- git cat-file -t $oid >actual &&
+ git cat-file -t "$object_name" >actual &&
test_cmp expect actual
'
test_expect_success "Size of $type is correct" '
echo $size >expect &&
- git cat-file -s $oid >actual &&
+ git cat-file -s "$object_name" >actual &&
test_cmp expect actual
'
test -z "$content" ||
test_expect_success "Content of $type is correct" '
echo_without_newline "$content" >expect &&
- git cat-file $type $oid >actual &&
+ git cat-file $type "$object_name" >actual &&
test_cmp expect actual
'
test_expect_success "Pretty content of $type is correct" '
echo_without_newline "$pretty_content" >expect &&
- git cat-file -p $oid >actual &&
+ git cat-file -p "$object_name" >actual &&
test_cmp expect actual
'
test -z "$content" ||
test_expect_success "--batch output of $type is correct" '
echo "$batch_output" >expect &&
- echo $oid | git cat-file --batch >actual &&
+ echo "$object_name" | git cat-file --batch >actual &&
test_cmp expect actual
'
test_expect_success "--batch-check output of $type is correct" '
echo "$oid $type $size" >expect &&
- echo_without_newline $oid | git cat-file --batch-check >actual &&
+ echo_without_newline "$object_name" | git cat-file --batch-check >actual &&
test_cmp expect actual
'
@@ -168,13 +170,13 @@ $content"
test -z "$content" ||
test_expect_success "--batch-command $opt output of $type content is correct" '
echo "$batch_output" >expect &&
- test_write_lines "contents $oid" | git cat-file --batch-command $opt >actual &&
+ test_write_lines "contents $object_name" | git cat-file --batch-command $opt >actual &&
test_cmp expect actual
'
test_expect_success "--batch-command $opt output of $type info is correct" '
echo "$oid $type $size" >expect &&
- test_write_lines "info $oid" |
+ test_write_lines "info $object_name" |
git cat-file --batch-command $opt >actual &&
test_cmp expect actual
'
@@ -182,30 +184,45 @@ $content"
test_expect_success "custom --batch-check format" '
echo "$type $oid" >expect &&
- echo $oid | git cat-file --batch-check="%(objecttype) %(objectname)" >actual &&
+ echo "$object_name" | git cat-file --batch-check="%(objecttype) %(objectname)" >actual &&
test_cmp expect actual
'
test_expect_success "custom --batch-command format" '
echo "$type $oid" >expect &&
- echo "info $oid" | git cat-file --batch-command="%(objecttype) %(objectname)" >actual &&
+ echo "info $object_name" | git cat-file --batch-command="%(objecttype) %(objectname)" >actual &&
test_cmp expect actual
'
- test_expect_success '--batch-check with %(rest)' '
+ # FIXME: %(rest) is incompatible with object names that include whitespace,
+ # e.g. HEAD:path/to/a/file with spaces. Use the resolved OID as input to
+ # test this instead of the raw object name.
+ if echo "$object_name" | grep " "; then
+ test_rest=test_expect_failure
+ else
+ test_rest=test_expect_success
+ fi
+
+ $test_rest '--batch-check with %(rest)' '
echo "$type this is some extra content" >expect &&
- echo "$oid this is some extra content" |
+ echo "$object_name this is some extra content" |
git cat-file --batch-check="%(objecttype) %(rest)" >actual &&
test_cmp expect actual
'
+ test_expect_success '--batch-check with %(objectmode)' '
+ echo "$mode $oid" >expect &&
+ echo $object_name | git cat-file --batch-check="%(objectmode) %(objectname)" >actual &&
+ test_cmp expect actual
+ '
+
test -z "$content" ||
test_expect_success "--batch without type ($type)" '
{
echo "$size" &&
echo "$content"
} >expect &&
- echo $oid | git cat-file --batch="%(objectsize)" >actual &&
+ echo "$object_name" | git cat-file --batch="%(objectsize)" >actual &&
test_cmp expect actual
'
@@ -215,7 +232,7 @@ $content"
echo "$type" &&
echo "$content"
} >expect &&
- echo $oid | git cat-file --batch="%(objecttype)" >actual &&
+ echo "$object_name" | git cat-file --batch="%(objecttype)" >actual &&
test_cmp expect actual
'
}
@@ -230,13 +247,14 @@ test_expect_success "setup" '
git config extensions.compatobjectformat $test_compat_hash_algo &&
echo_without_newline "$hello_content" > hello &&
git update-index --add hello &&
+ echo_without_newline "$hello_content" > "path with spaces" &&
+ git update-index --add --chmod=+x "path with spaces" &&
git commit -m "add hello file"
'
run_blob_tests () {
oid=$1
-
- run_tests 'blob' $oid $hello_size "$hello_content" "$hello_content"
+ run_tests 'blob' $oid "" $hello_size "$hello_content" "$hello_content"
test_expect_success '--batch-command --buffer with flush for blob info' '
echo "$oid blob $hello_size" >expect &&
@@ -269,13 +287,17 @@ test_expect_success '--batch-check without %(rest) considers whole line' '
tree_oid=$(git write-tree)
tree_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $tree_oid)
-tree_size=$(($(test_oid rawsz) + 13))
-tree_compat_size=$(($(test_oid --hash=compat rawsz) + 13))
-tree_pretty_content="100644 blob $hello_oid hello${LF}"
-tree_compat_pretty_content="100644 blob $hello_compat_oid hello${LF}"
-
-run_tests 'tree' $tree_oid $tree_size "" "$tree_pretty_content"
-run_tests 'tree' $tree_compat_oid $tree_compat_size "" "$tree_compat_pretty_content"
+tree_size=$((2 * $(test_oid rawsz) + 13 + 24))
+tree_compat_size=$((2 * $(test_oid --hash=compat rawsz) + 13 + 24))
+tree_pretty_content="100644 blob $hello_oid hello${LF}100755 blob $hello_oid path with spaces${LF}"
+tree_compat_pretty_content="100644 blob $hello_compat_oid hello${LF}100755 blob $hello_compat_oid path with spaces${LF}"
+
+run_tests 'tree' $tree_oid "" $tree_size "" "$tree_pretty_content"
+run_tests 'tree' $tree_compat_oid "" $tree_compat_size "" "$tree_compat_pretty_content"
+run_tests 'blob' "$tree_oid:hello" "100644" $hello_size "" "$hello_content" $hello_oid
+run_tests 'blob' "$tree_compat_oid:hello" "100644" $hello_size "" "$hello_content" $hello_compat_oid
+run_tests 'blob' "$tree_oid:path with spaces" "100755" $hello_size "" "$hello_content" $hello_oid
+run_tests 'blob' "$tree_compat_oid:path with spaces" "100755" $hello_size "" "$hello_content" $hello_compat_oid
commit_message="Initial commit"
commit_oid=$(echo_without_newline "$commit_message" | git commit-tree $tree_oid)
@@ -294,8 +316,8 @@ committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE
$commit_message"
-run_tests 'commit' $commit_oid $commit_size "$commit_content" "$commit_content"
-run_tests 'commit' $commit_compat_oid $commit_compat_size "$commit_compat_content" "$commit_compat_content"
+run_tests 'commit' $commit_oid "" $commit_size "$commit_content" "$commit_content"
+run_tests 'commit' $commit_compat_oid "" $commit_compat_size "$commit_compat_content" "$commit_compat_content"
tag_header_without_oid="type blob
tag hellotag
@@ -318,8 +340,8 @@ tag_size=$(strlen "$tag_content")
tag_compat_oid=$(git rev-parse --output-object-format=$test_compat_hash_algo $tag_oid)
tag_compat_size=$(strlen "$tag_compat_content")
-run_tests 'tag' $tag_oid $tag_size "$tag_content" "$tag_content"
-run_tests 'tag' $tag_compat_oid $tag_compat_size "$tag_compat_content" "$tag_compat_content"
+run_tests 'tag' $tag_oid "" $tag_size "$tag_content" "$tag_content"
+run_tests 'tag' $tag_compat_oid "" $tag_compat_size "$tag_compat_content" "$tag_compat_content"
test_expect_success "Reach a blob from a tag pointing to it" '
echo_without_newline "$hello_content" >expect &&
@@ -1198,6 +1220,31 @@ test_expect_success 'cat-file --batch-check respects replace objects' '
test_cmp expect actual
'
+test_expect_success 'batch-check with a submodule' '
+ # FIXME: this call to mktree is incompatible with compatObjectFormat
+ # because the submodule OID cannot be mapped to the compat hash algo.
+ test_unconfig extensions.compatobjectformat &&
+ printf "160000 commit $(test_oid deadbeef)\tsub\n" >tree-with-sub &&
+ tree=$(git mktree <tree-with-sub) &&
+ test_config extensions.compatobjectformat $test_compat_hash_algo &&
+
+ git cat-file --batch-check >actual <<-EOF &&
+ $tree:sub
+ EOF
+ printf "$(test_oid deadbeef) submodule\n" >expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'batch-check with a submodule, object exists' '
+ printf "160000 commit $commit_oid\tsub\n" >tree-with-sub &&
+ tree=$(git mktree <tree-with-sub) &&
+ git cat-file --batch-check >actual <<-EOF &&
+ $tree:sub
+ EOF
+ printf "$commit_oid commit $commit_size\n" >expect &&
+ test_cmp expect actual
+'
+
# Pull the entry for object with oid "$1" out of the output of
# "cat-file --batch", including its object content (which requires
# parsing and reading a set amount of bytes, hence perl).
diff --git a/t/t1007-hash-object.sh b/t/t1007-hash-object.sh
index dbbe9fb0d4..64658b3ba5 100755
--- a/t/t1007-hash-object.sh
+++ b/t/t1007-hash-object.sh
@@ -30,7 +30,7 @@ setup_repo() {
test_repo=test
push_repo() {
- test_create_repo $test_repo
+ git init --quiet $test_repo
cd $test_repo
setup_repo
diff --git a/t/t1021-rerere-in-workdir.sh b/t/t1021-rerere-in-workdir.sh
deleted file mode 100755
index 0b892894eb..0000000000
--- a/t/t1021-rerere-in-workdir.sh
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/sh
-
-test_description='rerere run in a workdir'
-GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
-export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
-
-. ./test-lib.sh
-
-test_expect_success SYMLINKS setup '
- git config rerere.enabled true &&
- >world &&
- git add world &&
- test_tick &&
- git commit -m initial &&
-
- echo hello >world &&
- test_tick &&
- git commit -a -m hello &&
-
- git checkout -b side HEAD^ &&
- echo goodbye >world &&
- test_tick &&
- git commit -a -m goodbye &&
-
- git checkout main
-'
-
-test_expect_success SYMLINKS 'rerere in workdir' '
- rm -rf .git/rr-cache &&
- "$SHELL_PATH" "$TEST_DIRECTORY/../contrib/workdir/git-new-workdir" . work &&
- (
- cd work &&
- test_must_fail git merge side &&
- git rerere status >actual &&
- echo world >expect &&
- test_cmp expect actual
- )
-'
-
-# This fails because we don't resolve relative symlink in mkdir_in_gitdir()
-# For the purpose of helping contrib/workdir/git-new-workdir users, we do not
-# have to support relative symlinks, but it might be nicer to make this work
-# with a relative symbolic link someday.
-test_expect_failure SYMLINKS 'rerere in workdir (relative)' '
- rm -rf .git/rr-cache &&
- "$SHELL_PATH" "$TEST_DIRECTORY/../contrib/workdir/git-new-workdir" . krow &&
- (
- cd krow &&
- rm -f .git/rr-cache &&
- ln -s ../.git/rr-cache .git/rr-cache &&
- test_must_fail git merge side &&
- git rerere status >actual &&
- echo world >expect &&
- test_cmp expect actual
- )
-'
-
-test_done
diff --git a/t/t1300-config.sh b/t/t1300-config.sh
index 51a85e83c2..f856821839 100755
--- a/t/t1300-config.sh
+++ b/t/t1300-config.sh
@@ -2851,4 +2851,15 @@ test_expect_success 'writing to stdin is rejected' '
done
+test_expect_success 'writing value with trailing CR not stripped on read' '
+ test_when_finished "rm -rf cr-test" &&
+
+ printf "bar\r\n" >expect &&
+ git init cr-test &&
+ git -C cr-test config set core.foo $(printf "bar\r") &&
+ git -C cr-test config get core.foo >actual &&
+
+ test_cmp expect actual
+'
+
test_done
diff --git a/t/t1400-update-ref.sh b/t/t1400-update-ref.sh
index d29d23cb89..7359af02a2 100755
--- a/t/t1400-update-ref.sh
+++ b/t/t1400-update-ref.sh
@@ -1380,10 +1380,7 @@ test_expect_success 'fails with duplicate ref update via symref' '
test_expect_success ULIMIT_FILE_DESCRIPTORS 'large transaction creating branches does not burst open file limit' '
(
- for i in $(test_seq 33)
- do
- echo "create refs/heads/$i HEAD" || exit 1
- done >large_input &&
+ test_seq -f "create refs/heads/%d HEAD" 33 >large_input &&
run_with_limited_open_files git update-ref --stdin <large_input &&
git rev-parse --verify -q refs/heads/33
)
@@ -1391,10 +1388,7 @@ test_expect_success ULIMIT_FILE_DESCRIPTORS 'large transaction creating branches
test_expect_success ULIMIT_FILE_DESCRIPTORS 'large transaction deleting branches does not burst open file limit' '
(
- for i in $(test_seq 33)
- do
- echo "delete refs/heads/$i HEAD" || exit 1
- done >large_input &&
+ test_seq -f "delete refs/heads/%d HEAD" 33 >large_input &&
run_with_limited_open_files git update-ref --stdin <large_input &&
test_must_fail git rev-parse --verify -q refs/heads/33
)
@@ -2299,6 +2293,51 @@ do
test_grep -q "refname conflict" stdout
)
'
+
+ test_expect_success "stdin $type batch-updates delete incorrect symbolic ref" '
+ git init repo &&
+ test_when_finished "rm -fr repo" &&
+ (
+ cd repo &&
+ test_commit c1 &&
+ head=$(git rev-parse HEAD) &&
+ git symbolic-ref refs/heads/symbolic refs/heads/non-existent &&
+
+ format_command $type "delete refs/heads/symbolic" "$head" >stdin &&
+ git update-ref $type --stdin --batch-updates <stdin >stdout &&
+ test_grep "reference does not exist" stdout
+ )
+ '
+
+ test_expect_success "stdin $type batch-updates delete with incorrect old_oid" '
+ git init repo &&
+ test_when_finished "rm -fr repo" &&
+ (
+ cd repo &&
+ test_commit c1 &&
+ git branch new-branch &&
+ test_commit c2 &&
+ head=$(git rev-parse HEAD) &&
+
+ format_command $type "delete refs/heads/new-branch" "$head" >stdin &&
+ git update-ref $type --stdin --batch-updates <stdin >stdout &&
+ test_grep "incorrect old value provided" stdout
+ )
+ '
+
+ test_expect_success "stdin $type batch-updates delete non-existent ref" '
+ git init repo &&
+ test_when_finished "rm -fr repo" &&
+ (
+ cd repo &&
+ test_commit commit &&
+ head=$(git rev-parse HEAD) &&
+
+ format_command $type "delete refs/heads/non-existent" "$head" >stdin &&
+ git update-ref $type --stdin --batch-updates <stdin >stdout &&
+ test_grep "reference does not exist" stdout
+ )
+ '
done
test_expect_success 'update-ref should also create reflog for HEAD' '
diff --git a/t/t1416-ref-transaction-hooks.sh b/t/t1416-ref-transaction-hooks.sh
index 8c777f7cf8..d91dd3a3b5 100755
--- a/t/t1416-ref-transaction-hooks.sh
+++ b/t/t1416-ref-transaction-hooks.sh
@@ -120,8 +120,6 @@ test_expect_success 'interleaving hook calls succeed' '
cat >expect <<-EOF &&
hooks/update refs/tags/PRE $ZERO_OID $PRE_OID
- hooks/reference-transaction prepared
- hooks/reference-transaction committed
hooks/update refs/tags/POST $ZERO_OID $POST_OID
hooks/reference-transaction prepared
hooks/reference-transaction committed
diff --git a/t/t2400-worktree-add.sh b/t/t2400-worktree-add.sh
index 90638fa886..023e1301c8 100755
--- a/t/t2400-worktree-add.sh
+++ b/t/t2400-worktree-add.sh
@@ -42,8 +42,8 @@ test_expect_success '"add" using - shorthand' '
test_expect_success '"add" refuses to checkout locked branch' '
test_must_fail git worktree add zere main &&
- ! test -d zere &&
- ! test -d .git/worktrees/zere
+ test_path_is_missing zere &&
+ test_path_is_missing .git/worktrees/zere
'
test_expect_success 'checking out paths not complaining about linked checkouts' '
@@ -70,14 +70,14 @@ test_expect_success '"add" worktree' '
test_expect_success '"add" worktree with lock' '
git worktree add --detach --lock here-with-lock main &&
test_when_finished "git worktree unlock here-with-lock || :" &&
- test -f .git/worktrees/here-with-lock/locked
+ test_path_is_file .git/worktrees/here-with-lock/locked
'
test_expect_success '"add" worktree with lock and reason' '
lock_reason="why not" &&
git worktree add --detach --lock --reason "$lock_reason" here-with-lock-reason main &&
test_when_finished "git worktree unlock here-with-lock-reason || :" &&
- test -f .git/worktrees/here-with-lock-reason/locked &&
+ test_path_is_file .git/worktrees/here-with-lock-reason/locked &&
echo "$lock_reason" >expect &&
test_cmp expect .git/worktrees/here-with-lock-reason/locked
'
@@ -412,14 +412,14 @@ test_expect_success '"add --orphan" with empty repository' '
test_expect_success '"add" worktree with orphan branch and lock' '
git worktree add --lock --orphan -b orphanbr orphan-with-lock &&
test_when_finished "git worktree unlock orphan-with-lock || :" &&
- test -f .git/worktrees/orphan-with-lock/locked
+ test_path_is_file .git/worktrees/orphan-with-lock/locked
'
test_expect_success '"add" worktree with orphan branch, lock, and reason' '
lock_reason="why not" &&
git worktree add --detach --lock --reason "$lock_reason" orphan-with-lock-reason main &&
test_when_finished "git worktree unlock orphan-with-lock-reason || :" &&
- test -f .git/worktrees/orphan-with-lock-reason/locked &&
+ test_path_is_file .git/worktrees/orphan-with-lock-reason/locked &&
echo "$lock_reason" >expect &&
test_cmp expect .git/worktrees/orphan-with-lock-reason/locked
'
@@ -474,7 +474,7 @@ test_expect_success 'local clone --shared from linked checkout' '
test_expect_success '"add" worktree with --no-checkout' '
git worktree add --no-checkout -b swamp swamp &&
- ! test -e swamp/init.t &&
+ test_path_is_missing swamp/init.t &&
git -C swamp reset --hard &&
test_cmp init.t swamp/init.t
'
@@ -497,7 +497,7 @@ test_expect_success 'put a worktree under rebase' '
test_expect_success 'add a worktree, checking out a rebased branch' '
test_must_fail git worktree add new-rebase under-rebase &&
- ! test -d new-rebase
+ test_path_is_missing new-rebase
'
test_expect_success 'checking out a rebased branch from another worktree' '
@@ -535,7 +535,7 @@ test_expect_success 'checkout a branch under bisect' '
git worktree list >actual &&
grep "under-bisect.*detached HEAD" actual &&
test_must_fail git worktree add new-bisect under-bisect &&
- ! test -d new-bisect
+ test_path_is_missing new-bisect
)
'
@@ -1165,7 +1165,7 @@ test_expect_success '"add" not tripped up by magic worktree matching"' '
test_expect_success FUNNYNAMES 'sanitize generated worktree name' '
git worktree add --detach ". weird*..?.lock.lock" &&
- test -d .git/worktrees/---weird-.-
+ test_path_is_dir .git/worktrees/---weird-.-
'
test_expect_success '"add" should not fail because of another bad worktree' '
diff --git a/t/t3000-ls-files-others.sh b/t/t3000-ls-files-others.sh
index 13f66fd649..b41e7f0daa 100755
--- a/t/t3000-ls-files-others.sh
+++ b/t/t3000-ls-files-others.sh
@@ -73,25 +73,6 @@ test_expect_success 'ls-files --others handles non-submodule .git' '
test_cmp expected1 output
'
-test_expect_success SYMLINKS 'ls-files --others with symlinked submodule' '
- git init super &&
- git init sub &&
- (
- cd sub &&
- >a &&
- git add a &&
- git commit -m sub &&
- git pack-refs --all
- ) &&
- (
- cd super &&
- "$SHELL_PATH" "$TEST_DIRECTORY/../contrib/workdir/git-new-workdir" ../sub sub &&
- git ls-files --others --exclude-standard >../actual
- ) &&
- echo sub/ >expect &&
- test_cmp expect actual
-'
-
test_expect_success 'setup nested pathspec search' '
test_create_repo nested &&
(
diff --git a/t/t3600-rm.sh b/t/t3600-rm.sh
index 98259e2ada..1f16e6b522 100755
--- a/t/t3600-rm.sh
+++ b/t/t3600-rm.sh
@@ -17,11 +17,6 @@ test_expect_success 'Initialize test directory' '
git commit -m "add normal files"
'
-if test_have_prereq !FUNNYNAMES
-then
- say 'Your filesystem does not allow tabs in filenames.'
-fi
-
test_expect_success FUNNYNAMES 'add files with funny names' '
touch -- "tab embedded" "newline${LF}embedded" &&
git add -- "tab embedded" "newline${LF}embedded" &&
diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh
index 74666ff3e4..c58ccb136c 100755
--- a/t/t3903-stash.sh
+++ b/t/t3903-stash.sh
@@ -11,6 +11,13 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
. ./test-lib.sh
. "$TEST_DIRECTORY"/lib-unique-files.sh
+test_expect_success 'setup' '
+ test_oid_cache <<-EOF
+ export_base sha1:73c9bab443d1f88ac61aa533d2eeaaa15451239c
+ export_base sha256:f210fa6346e3e2ce047bdb570426b17075980c1ac01fec8fc4b75bd3ab4bcfe4
+ EOF
+'
+
test_expect_success 'usage on cmd and subcommand invalid option' '
test_expect_code 129 git stash --invalid-option 2>usage &&
grep "or: git stash" usage &&
@@ -1177,6 +1184,28 @@ test_expect_success 'stash -- <pathspec> stashes and restores the file' '
test_path_is_file bar
'
+test_expect_success 'stash --patch <pathspec> stash and restores the file' '
+ test_write_lines b c >file &&
+ git commit -m "add a few lines" file &&
+ test_write_lines a b c d >file &&
+ test_write_lines b c d >expect-file &&
+ echo changed-other-file >other-file &&
+ test_write_lines s y n | git stash -m "stash bar" --patch file &&
+ test_cmp expect-file file &&
+ echo changed-other-file >expect &&
+ test_cmp expect other-file &&
+ git checkout HEAD -- file &&
+ git stash pop &&
+ test_cmp expect other-file &&
+ test_write_lines a b c >expect &&
+ test_cmp expect file
+'
+
+test_expect_success 'stash <pathspec> -p is rejected' '
+ test_must_fail git stash file -p 2>err &&
+ test_grep "subcommand wasn${SQ}t specified; ${SQ}push${SQ} can${SQ}t be assumed due to unexpected token ${SQ}file${SQ}" err
+'
+
test_expect_success 'stash -- <pathspec> stashes in subdirectory' '
mkdir sub &&
>foo &&
@@ -1412,6 +1441,100 @@ test_expect_success 'stash --keep-index --include-untracked with empty tree' '
)
'
+test_expect_success 'stash export and import round-trip stashes' '
+ git reset &&
+ >untracked &&
+ >tracked1 &&
+ >tracked2 &&
+ git add tracked* &&
+ git stash -- &&
+ >subdir/untracked &&
+ >subdir/tracked1 &&
+ >subdir/tracked2 &&
+ git add subdir/tracked* &&
+ git stash --include-untracked -- subdir/ &&
+ git tag t-stash0 stash@{0} &&
+ git tag t-stash1 stash@{1} &&
+ simple=$(git stash export --print) &&
+ git stash clear &&
+ git stash import "$simple" &&
+ test_cmp_rev stash@{0} t-stash0 &&
+ test_cmp_rev stash@{1} t-stash1 &&
+ git stash export --to-ref refs/heads/foo &&
+ test_cmp_rev "$(test_oid empty_tree)" foo: &&
+ test_cmp_rev "$(test_oid empty_tree)" foo^: &&
+ test_cmp_rev t-stash0 foo^2 &&
+ test_cmp_rev t-stash1 foo^^2 &&
+ git log --first-parent --format="%s" refs/heads/foo >log &&
+ grep "^git stash: " log >log2 &&
+ test_line_count = 13 log2 &&
+ git stash clear &&
+ git stash import foo &&
+ test_cmp_rev stash@{0} t-stash0 &&
+ test_cmp_rev stash@{1} t-stash1
+'
+
+test_expect_success 'stash import appends commits' '
+ git log --format=oneline -g refs/stash >out &&
+ cat out out >out2 &&
+ git stash import refs/heads/foo &&
+ git log --format=oneline -g refs/stash >actual &&
+ test_line_count = $(wc -l <out2) actual
+'
+
+test_expect_success 'stash export can accept specified stashes' '
+ git stash clear &&
+ git stash import foo &&
+ git stash export --to-ref refs/heads/bar stash@{1} stash@{0} &&
+ git stash clear &&
+ git stash import refs/heads/bar &&
+ test_cmp_rev stash@{1} t-stash0 &&
+ test_cmp_rev stash@{0} t-stash1 &&
+ git log --format=oneline -g refs/stash >actual &&
+ test_line_count = 2 actual
+'
+
+test_expect_success 'stash export rejects invalid arguments' '
+ test_must_fail git stash export --print --to-ref refs/heads/invalid 2>err &&
+ grep "exactly one of --print and --to-ref is required" err &&
+ test_must_fail git stash export 2>err2 &&
+ grep "exactly one of --print and --to-ref is required" err2
+'
+
+test_expect_success 'stash can import and export zero stashes' '
+ git stash clear &&
+ git stash export --to-ref refs/heads/baz &&
+ test_cmp_rev "$(test_oid empty_tree)" baz: &&
+ test_cmp_rev "$(test_oid export_base)" baz &&
+ test_must_fail git rev-parse baz^1 &&
+ git stash import baz &&
+ test_must_fail git rev-parse refs/stash
+'
+
+test_expect_success 'stash rejects invalid attempts to import commits' '
+ git stash import foo &&
+ test_must_fail git stash import HEAD 2>output &&
+ oid=$(git rev-parse HEAD) &&
+ grep "$oid is not a valid exported stash commit" output &&
+ test_cmp_rev stash@{0} t-stash0 &&
+
+ git checkout --orphan orphan &&
+ git commit-tree $(test_oid empty_tree) -p "$oid" -p "$oid^" -m "" >fake-commit &&
+ git update-ref refs/heads/orphan "$(cat fake-commit)" &&
+ oid=$(git rev-parse HEAD) &&
+ test_must_fail git stash import orphan 2>output &&
+ grep "found stash commit $oid without expected prefix" output &&
+ test_cmp_rev stash@{0} t-stash0 &&
+
+ git checkout --orphan orphan2 &&
+ git commit-tree $(test_oid empty_tree) -m "" >fake-commit &&
+ git update-ref refs/heads/orphan2 "$(cat fake-commit)" &&
+ oid=$(git rev-parse HEAD) &&
+ test_must_fail git stash import orphan2 2>output &&
+ grep "found root commit $oid with invalid data" output &&
+ test_cmp_rev stash@{0} t-stash0
+'
+
test_expect_success 'stash apply should succeed with unmodified file' '
echo base >file &&
git add file &&
@@ -1592,4 +1715,36 @@ test_expect_success 'stash apply reports a locked index' '
)
'
+test_expect_success 'submodules does not affect the branch recorded in stash message' '
+ git init sub_project &&
+ (
+ cd sub_project &&
+ echo "Initial content in sub_project" >sub_file.txt &&
+ git add sub_file.txt &&
+ git commit -m "Initial commit in sub_project"
+ ) &&
+
+ git init main_project &&
+ (
+ cd main_project &&
+ echo "Initial content in main_project" >main_file.txt &&
+ git add main_file.txt &&
+ git commit -m "Initial commit in main_project" &&
+
+ git -c protocol.file.allow=always submodule add ../sub_project sub &&
+ git commit -m "Added submodule sub_project" &&
+
+ git checkout -b feature_main &&
+ git -C sub checkout -b feature_sub &&
+
+ git checkout -b work_branch &&
+ echo "Important work to be stashed" >work_item.txt &&
+ git add work_item.txt &&
+ git stash push -m "custom stash for work_branch" &&
+
+ git stash list >../actual_stash_list.txt &&
+ grep "On work_branch: custom stash for work_branch" ../actual_stash_list.txt
+ )
+'
+
test_done
diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh
index a51f881b1c..32b14e3a71 100755
--- a/t/t4000-diff-format.sh
+++ b/t/t4000-diff-format.sh
@@ -36,7 +36,7 @@ test_expect_success 'git diff-files -p after editing work tree.' '
# that's as far as it comes
if [ "$(git config --get core.filemode)" = false ]
then
- say 'filemode disabled on the filesystem'
+ skip_all='filemode disabled on the filesystem'
test_done
fi
diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh
index 782d97fb7d..8ebd170451 100755
--- a/t/t4013-diff-various.sh
+++ b/t/t4013-diff-various.sh
@@ -206,14 +206,30 @@ do
expect="$TEST_DIRECTORY/t4013/diff.$test"
actual="$pfx-diff.$test"
- test_expect_success "git $cmd # magic is ${magic:-(not used)}" '
+ case "$cmd" in
+ whatchanged | whatchanged" "*)
+ prereq=!WITH_BREAKING_CHANGES
+ ;;
+ *)
+ prereq=;;
+ esac
+
+ test_expect_success $prereq "git $cmd # magic is ${magic:-(not used)}" '
{
echo "$ git $cmd"
+
+ case "$cmd" in
+ whatchanged | whatchanged" "*)
+ run="whatchanged --i-still-use-this"
+ run="$run ${cmd#whatchanged}" ;;
+ *)
+ run=$cmd ;;
+ esac &&
case "$magic" in
"")
- GIT_PRINT_SHA1_ELLIPSIS=yes git $cmd ;;
+ GIT_PRINT_SHA1_ELLIPSIS=yes git $run ;;
noellipses)
- git $cmd ;;
+ git $run ;;
esac |
sed -e "s/^\\(-*\\)$V\\(-*\\)\$/\\1g-i-t--v-e-r-s-i-o-n\2/" \
-e "s/^\\(.*mixed; boundary=\"-*\\)$V\\(-*\\)\"\$/\\1g-i-t--v-e-r-s-i-o-n\2\"/"
@@ -460,6 +476,11 @@ diff-tree --stat --compact-summary initial mode
diff-tree -R --stat --compact-summary initial mode
EOF
+test_expect_success !WITH_BREAKING_CHANGES 'whatchanged needs --i-still-use-this' '
+ test_must_fail git whatchanged >message 2>&1 &&
+ test_grep "nominated for removal" message
+'
+
test_expect_success 'log -m matches pure log' '
git log master >result &&
process_diffs result >expected &&
diff --git a/t/t4018/r-indent b/t/t4018/r-indent
new file mode 100644
index 0000000000..9df440f2a4
--- /dev/null
+++ b/t/t4018/r-indent
@@ -0,0 +1,6 @@
+RIGHT <- function(a, b) {
+ c = mean(a, b)
+ d = c + 2
+ ChangeMe()
+ return (d)
+}
diff --git a/t/t4018/r-indent-nested b/t/t4018/r-indent-nested
new file mode 100644
index 0000000000..30412e6c79
--- /dev/null
+++ b/t/t4018/r-indent-nested
@@ -0,0 +1,10 @@
+LEFT = function(a, b) {
+ c = mean(a, b)
+ RIGHT = function(d, e) {
+ f = var(d, e)
+ g = f + 1
+ ChangeMe()
+ return (g)
+ }
+ return (RIGHT(2, 3))
+}
diff --git a/t/t4018/r-noindent b/t/t4018/r-noindent
new file mode 100644
index 0000000000..6d9b01ffe3
--- /dev/null
+++ b/t/t4018/r-noindent
@@ -0,0 +1,6 @@
+RIGHT <- function(a, b) {
+c = mean(a, b)
+d = c + 2
+ChangeMe()
+return (c)
+}
diff --git a/t/t4041-diff-submodule-option.sh b/t/t4041-diff-submodule-option.sh
index 28f9d83d4c..4d4aa1650f 100755
--- a/t/t4041-diff-submodule-option.sh
+++ b/t/t4041-diff-submodule-option.sh
@@ -48,11 +48,12 @@ commit_file () {
git commit "$@" -m "Commit $*" >/dev/null
}
-test_create_repo sm1 &&
-add_file . foo >/dev/null
-
-head1=$(add_file sm1 foo1 foo2)
-fullhead1=$(cd sm1; git rev-parse --verify HEAD)
+test_expect_success 'setup submodule' '
+ git init sm1 &&
+ add_file . foo &&
+ head1=$(add_file sm1 foo1 foo2) &&
+ fullhead1=$(cd sm1 && git rev-parse --verify HEAD)
+'
test_expect_success 'added submodule' '
git add sm1 &&
@@ -235,10 +236,13 @@ test_expect_success 'typechanged submodule(submodule->blob)' '
test_cmp expected actual
'
-rm -f sm1 &&
-test_create_repo sm1 &&
-head6=$(add_file sm1 foo6 foo7)
-fullhead6=$(cd sm1; git rev-parse --verify HEAD)
+test_expect_success 'setup submodule anew' '
+ rm -f sm1 &&
+ git init sm1 &&
+ head6=$(add_file sm1 foo6 foo7) &&
+ fullhead6=$(cd sm1 && git rev-parse --verify HEAD)
+'
+
test_expect_success 'nonexistent commit' '
git diff-index -p --submodule=log HEAD >actual &&
cat >expected <<-EOF &&
diff --git a/t/t4053-diff-no-index.sh b/t/t4053-diff-no-index.sh
index 5e5bad61ca..01db9243ab 100755
--- a/t/t4053-diff-no-index.sh
+++ b/t/t4053-diff-no-index.sh
@@ -295,4 +295,79 @@ test_expect_success PIPE,SYMLINKS 'diff --no-index reads from pipes' '
test_cmp expect actual
'
+test_expect_success 'diff --no-index F F rejects pathspecs' '
+ test_must_fail git diff --no-index -- a/1 a/2 a 2>actual.err &&
+ test_grep "usage: git diff --no-index" actual.err
+'
+
+test_expect_success 'diff --no-index D F rejects pathspecs' '
+ test_must_fail git diff --no-index -- a a/2 a 2>actual.err &&
+ test_grep "usage: git diff --no-index" actual.err
+'
+
+test_expect_success 'diff --no-index F D rejects pathspecs' '
+ test_must_fail git diff --no-index -- a/1 b b 2>actual.err &&
+ test_grep "usage: git diff --no-index" actual.err
+'
+
+test_expect_success 'diff --no-index rejects absolute pathspec' '
+ test_must_fail git diff --no-index -- a b $(pwd)/a/1
+'
+
+test_expect_success 'diff --no-index with pathspec' '
+ test_expect_code 1 git diff --name-status --no-index a b 1 >actual &&
+ cat >expect <<-EOF &&
+ D a/1
+ EOF
+ test_cmp expect actual
+'
+
+test_expect_success 'diff --no-index with pathspec no matches' '
+ test_expect_code 0 git diff --name-status --no-index a b missing
+'
+
+test_expect_success 'diff --no-index with negative pathspec' '
+ test_expect_code 1 git diff --name-status --no-index a b ":!2" >actual &&
+ cat >expect <<-EOF &&
+ D a/1
+ EOF
+ test_cmp expect actual
+'
+
+test_expect_success 'setup nested' '
+ mkdir -p c/1/2 &&
+ mkdir -p d/1/2 &&
+ echo 1 >c/1/2/a &&
+ echo 2 >c/1/2/b
+'
+
+test_expect_success 'diff --no-index with pathspec nested negative pathspec' '
+ test_expect_code 0 git diff --no-index c d ":!1"
+'
+
+test_expect_success 'diff --no-index with pathspec nested pathspec' '
+ test_expect_code 1 git diff --name-status --no-index c d 1/2 >actual &&
+ cat >expect <<-EOF &&
+ D c/1/2/a
+ D c/1/2/b
+ EOF
+ test_cmp expect actual
+'
+
+test_expect_success 'diff --no-index with pathspec glob' '
+ test_expect_code 1 git diff --name-status --no-index c d ":(glob)**/a" >actual &&
+ cat >expect <<-EOF &&
+ D c/1/2/a
+ EOF
+ test_cmp expect actual
+'
+
+test_expect_success 'diff --no-index with pathspec glob and exclude' '
+ test_expect_code 1 git diff --name-status --no-index c d ":(glob,exclude)**/a" >actual &&
+ cat >expect <<-EOF &&
+ D c/1/2/b
+ EOF
+ test_cmp expect actual
+'
+
test_done
diff --git a/t/t4060-diff-submodule-option-diff-format.sh b/t/t4060-diff-submodule-option-diff-format.sh
index 76b83101d3..dbfeb7470b 100755
--- a/t/t4060-diff-submodule-option-diff-format.sh
+++ b/t/t4060-diff-submodule-option-diff-format.sh
@@ -363,9 +363,12 @@ test_expect_success 'typechanged submodule(submodule->blob)' '
diff_cmp expected actual
'
-rm -f sm1 &&
-test_create_repo sm1 &&
-head6=$(add_file sm1 foo6 foo7)
+test_expect_success 'setup' '
+ rm -f sm1 &&
+ git init sm1 &&
+ head6=$(add_file sm1 foo6 foo7)
+'
+
test_expect_success 'nonexistent commit' '
git diff-index -p --submodule=diff HEAD >actual &&
cat >expected <<-EOF &&
diff --git a/t/t4202-log.sh b/t/t4202-log.sh
index 51f7beb59f..4a6c4dfbf4 100755
--- a/t/t4202-log.sh
+++ b/t/t4202-log.sh
@@ -486,10 +486,16 @@ test_expect_success !FAIL_PREREQS 'log with various grep.patternType configurati
)
'
-for cmd in show whatchanged reflog format-patch
+cmds="show reflog format-patch"
+if test_have_prereq !WITH_BREAKING_CHANGES
+then
+ cmds="$cmds whatchanged"
+fi
+for cmd in $cmds
do
case "$cmd" in
format-patch) myarg="HEAD~.." ;;
+ whatchanged) myarg=--i-still-use-this ;;
*) myarg= ;;
esac
@@ -1201,20 +1207,27 @@ test_expect_success 'reflog is expected format' '
test_cmp expect actual
'
-test_expect_success 'whatchanged is expected format' '
+test_expect_success !WITH_BREAKING_CHANGES 'whatchanged is expected format' '
+ whatchanged="whatchanged --i-still-use-this" &&
git log --no-merges --raw >expect &&
- git whatchanged >actual &&
+ git $whatchanged >actual &&
test_cmp expect actual
'
test_expect_success 'log.abbrevCommit configuration' '
+ whatchanged="whatchanged --i-still-use-this" &&
+
git log --abbrev-commit >expect.log.abbrev &&
git log --no-abbrev-commit >expect.log.full &&
git log --pretty=raw >expect.log.raw &&
git reflog --abbrev-commit >expect.reflog.abbrev &&
git reflog --no-abbrev-commit >expect.reflog.full &&
- git whatchanged --abbrev-commit >expect.whatchanged.abbrev &&
- git whatchanged --no-abbrev-commit >expect.whatchanged.full &&
+
+ if test_have_prereq !WITH_BREAKING_CHANGES
+ then
+ git $whatchanged --abbrev-commit >expect.whatchanged.abbrev &&
+ git $whatchanged --no-abbrev-commit >expect.whatchanged.full
+ fi &&
test_config log.abbrevCommit true &&
@@ -1231,10 +1244,13 @@ test_expect_success 'log.abbrevCommit configuration' '
git reflog --no-abbrev-commit >actual &&
test_cmp expect.reflog.full actual &&
- git whatchanged >actual &&
- test_cmp expect.whatchanged.abbrev actual &&
- git whatchanged --no-abbrev-commit >actual &&
- test_cmp expect.whatchanged.full actual
+ if test_have_prereq !WITH_BREAKING_CHANGES
+ then
+ git $whatchanged >actual &&
+ test_cmp expect.whatchanged.abbrev actual &&
+ git $whatchanged --no-abbrev-commit >actual &&
+ test_cmp expect.whatchanged.full actual
+ fi
'
test_expect_success '--abbrev-commit with core.abbrev=false' '
diff --git a/t/t4203-mailmap.sh b/t/t4203-mailmap.sh
index 4a6242ff99..74b7ddccb2 100755
--- a/t/t4203-mailmap.sh
+++ b/t/t4203-mailmap.sh
@@ -1133,4 +1133,37 @@ test_expect_success 'git cat-file --batch-command returns correct size with --us
test_cmp expect actual
'
+test_expect_success 'git cat-file --mailmap works with different author and committer' '
+ test_when_finished "rm .mailmap" &&
+ cat >.mailmap <<-\EOF &&
+ Mailmapped User <mailmapped-user@gitlab.com> C O Mitter <committer@example.com>
+ EOF
+ git commit --allow-empty -m "different author/committer" \
+ --author="Different Author <different@example.com>" &&
+ cat >expect <<-\EOF &&
+ author Different Author <different@example.com>
+ committer Mailmapped User <mailmapped-user@gitlab.com>
+ EOF
+ git cat-file --mailmap commit HEAD >log &&
+ sed -n -e "/^author /s/>.*/>/p" -e "/^committer /s/>.*/>/p" log >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success 'git cat-file --mailmap maps both author and committer when both need mapping' '
+ test_when_finished "rm .mailmap" &&
+ cat >.mailmap <<-\EOF &&
+ Mapped Author <mapped-author@example.com> <different@example.com>
+ Mapped Committer <mapped-committer@example.com> C O Mitter <committer@example.com>
+ EOF
+ git commit --allow-empty -m "both author and committer mapped" \
+ --author="Different Author <different@example.com>" &&
+ cat >expect <<-\EOF &&
+ author Mapped Author <mapped-author@example.com>
+ committer Mapped Committer <mapped-committer@example.com>
+ EOF
+ git cat-file --mailmap commit HEAD >log &&
+ sed -n -e "/^author /s/>.*/>/p" -e "/^committer /s/>.*/>/p" log >actual &&
+ test_cmp expect actual
+'
+
test_done
diff --git a/t/t5004-archive-corner-cases.sh b/t/t5004-archive-corner-cases.sh
index 5174995191..027dedd976 100755
--- a/t/t5004-archive-corner-cases.sh
+++ b/t/t5004-archive-corner-cases.sh
@@ -176,10 +176,7 @@ test_expect_success EXPENSIVE,UNZIP,UNZIP_ZIP64_SUPPORT \
blob=$(echo $s | git hash-object -w --stdin) &&
# create tree containing 65500 entries of that blob
- for i in $(test_seq 1 65500)
- do
- echo "100644 blob $blob $i" || return 1
- done >tree &&
+ test_seq -f "100644 blob $blob\t%d" 1 65500 >tree &&
tree=$(git mktree <tree) &&
# zip it, creating an archive a bit bigger than 4GB
diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh
index a5932b6a8b..ae72158b94 100755
--- a/t/t5300-pack-object.sh
+++ b/t/t5300-pack-object.sh
@@ -723,4 +723,23 @@ test_expect_success '--name-hash-version=2 and --write-bitmap-index are incompat
! test_grep "currently, --write-bitmap-index requires --name-hash-version=1" err
'
+test_expect_success '--path-walk pack everything' '
+ git -C server rev-parse HEAD >in &&
+ GIT_PROGRESS_DELAY=0 git -C server pack-objects \
+ --stdout --revs --path-walk --progress <in >out.pack 2>err &&
+ grep "Compressing objects by path" err &&
+ git -C server index-pack --stdin <out.pack
+'
+
+test_expect_success '--path-walk thin pack' '
+ cat >in <<-EOF &&
+ $(git -C server rev-parse HEAD)
+ ^$(git -C server rev-parse HEAD~2)
+ EOF
+ GIT_PROGRESS_DELAY=0 git -C server pack-objects \
+ --thin --stdout --revs --path-walk --progress <in >out.pack 2>err &&
+ grep "Compressing objects by path" err &&
+ git -C server index-pack --fix-thin --stdin <out.pack
+'
+
test_done
diff --git a/t/t5306-pack-nobase.sh b/t/t5306-pack-nobase.sh
index 805d60ff31..609399d54f 100755
--- a/t/t5306-pack-nobase.sh
+++ b/t/t5306-pack-nobase.sh
@@ -59,6 +59,11 @@ test_expect_success 'indirectly clone patch_clone' '
git pull ../.git &&
test $(git rev-parse HEAD) = $B &&
+ # The --path-walk feature of "git pack-objects" is not
+ # compatible with this kind of fetch from an incomplete repo.
+ GIT_TEST_PACK_PATH_WALK=0 &&
+ export GIT_TEST_PACK_PATH_WALK &&
+
git pull ../patch_clone/.git &&
test $(git rev-parse HEAD) = $C
)
diff --git a/t/t5310-pack-bitmaps.sh b/t/t5310-pack-bitmaps.sh
index a62b463eaf..b6926f1027 100755
--- a/t/t5310-pack-bitmaps.sh
+++ b/t/t5310-pack-bitmaps.sh
@@ -158,8 +158,9 @@ test_bitmap_cases () {
ls .git/objects/pack/ | grep bitmap >output &&
test_line_count = 1 output &&
# verify equivalent packs are generated with/without using bitmap index
- packasha1=$(git pack-objects --no-use-bitmap-index --all packa </dev/null) &&
- packbsha1=$(git pack-objects --use-bitmap-index --all packb </dev/null) &&
+ # Be careful to not use the path-walk option in either case.
+ packasha1=$(git pack-objects --no-use-bitmap-index --no-path-walk --all packa </dev/null) &&
+ packbsha1=$(git pack-objects --use-bitmap-index --no-path-walk --all packb </dev/null) &&
list_packed_objects packa-$packasha1.idx >packa.objects &&
list_packed_objects packb-$packbsha1.idx >packb.objects &&
test_cmp packa.objects packb.objects
@@ -388,6 +389,14 @@ test_bitmap_cases () {
git init --bare client.git &&
(
cd client.git &&
+
+ # This test relies on reusing a delta, but if the
+ # path-walk machinery is engaged, the base object
+ # is considered too small to use during the
+ # dynamic computation, so is not used.
+ GIT_TEST_PACK_PATH_WALK=0 &&
+ export GIT_TEST_PACK_PATH_WALK &&
+
git config transfer.unpackLimit 1 &&
git fetch .. delta-reuse-old:delta-reuse-old &&
git fetch .. delta-reuse-new:delta-reuse-new &&
diff --git a/t/t5316-pack-delta-depth.sh b/t/t5316-pack-delta-depth.sh
index defaa06d65..03dfb7a61e 100755
--- a/t/t5316-pack-delta-depth.sh
+++ b/t/t5316-pack-delta-depth.sh
@@ -89,15 +89,18 @@ max_chain() {
# adjusted (or scrapped if the heuristics have become too unreliable)
test_expect_success 'packing produces a long delta' '
# Use --window=0 to make sure we are seeing reused deltas,
- # not computing a new long chain.
- pack=$(git pack-objects --all --window=0 </dev/null pack) &&
+ # not computing a new long chain. (Also avoid the --path-walk
+ # option as it may break delta chains.)
+ pack=$(git pack-objects --all --window=0 --no-path-walk </dev/null pack) &&
echo 9 >expect &&
max_chain pack-$pack.pack >actual &&
test_cmp expect actual
'
test_expect_success '--depth limits depth' '
- pack=$(git pack-objects --all --depth=5 </dev/null pack) &&
+ # Avoid --path-walk to avoid breaking delta chains across path
+ # boundaries.
+ pack=$(git pack-objects --all --depth=5 --no-path-walk </dev/null pack) &&
echo 5 >expect &&
max_chain pack-$pack.pack >actual &&
test_cmp expect actual
diff --git a/t/t5323-pack-redundant.sh b/t/t5323-pack-redundant.sh
index bc30bc9652..2d96afd6f7 100755
--- a/t/t5323-pack-redundant.sh
+++ b/t/t5323-pack-redundant.sh
@@ -45,6 +45,11 @@ fi
main_repo=main.git
shared_repo=shared.git
+test_expect_success 'pack-redundant needs --i-still-use-this' '
+ test_must_fail git pack-redundant >message 2>&1 &&
+ test_grep "nominated for removal" message
+'
+
git_pack_redundant='git pack-redundant --i-still-use-this'
# Create commits in <repo> and assign each commit's oid to shell variables
diff --git a/t/t5332-multi-pack-reuse.sh b/t/t5332-multi-pack-reuse.sh
index 57cad7708f..395d09444c 100755
--- a/t/t5332-multi-pack-reuse.sh
+++ b/t/t5332-multi-pack-reuse.sh
@@ -7,6 +7,13 @@ test_description='pack-objects multi-pack reuse'
GIT_TEST_MULTI_PACK_INDEX=0
GIT_TEST_MULTI_PACK_INDEX_WRITE_INCREMENTAL=0
+
+# The --path-walk option does not consider the preferred pack
+# at all for reusing deltas, so this variable changes the
+# behavior of this test, if enabled.
+GIT_TEST_PACK_PATH_WALK=0
+export GIT_TEST_PACK_PATH_WALK
+
objdir=.git/objects
packdir=$objdir/pack
diff --git a/t/t5333-pseudo-merge-bitmaps.sh b/t/t5333-pseudo-merge-bitmaps.sh
index 56674db562..ba5ae6a00c 100755
--- a/t/t5333-pseudo-merge-bitmaps.sh
+++ b/t/t5333-pseudo-merge-bitmaps.sh
@@ -445,4 +445,21 @@ test_expect_success 'pseudo-merge closure' '
)
'
+test_expect_success 'use pseudo-merge in boundary traversal' '
+ git init pseudo-merge-boundary-traversal &&
+ (
+ cd pseudo-merge-boundary-traversal &&
+
+ git config bitmapPseudoMerge.test.pattern refs/ &&
+ git config pack.useBitmapBoundaryTraversal true &&
+
+ test_commit A &&
+ git repack -adb &&
+ test_commit B &&
+
+ nr=$(git rev-list --count --use-bitmap-index HEAD~1..HEAD) &&
+ test 1 -eq "$nr"
+ )
+'
+
test_done
diff --git a/t/t5408-send-pack-stdin.sh b/t/t5408-send-pack-stdin.sh
index 526a675045..ec339761c2 100755
--- a/t/t5408-send-pack-stdin.sh
+++ b/t/t5408-send-pack-stdin.sh
@@ -69,15 +69,24 @@ test_expect_success 'stdin mixed with cmdline' '
test_expect_success 'cmdline refs written in order' '
clear_remote &&
- test_must_fail git send-pack remote.git A:foo B:foo &&
- verify_push A foo
+ test_must_fail git send-pack remote.git A:foo B:foo 2>err &&
+ test_grep "multiple updates for ref ${SQ}refs/heads/foo${SQ} not allowed" err &&
+ test_must_fail git --git-dir=remote.git rev-parse foo
+'
+
+test_expect_success 'cmdline refs with multiple duplicates' '
+ clear_remote &&
+ test_must_fail git send-pack remote.git A:foo B:foo C:foo 2>err &&
+ test_grep "multiple updates for ref ${SQ}refs/heads/foo${SQ} not allowed" err &&
+ test_must_fail git --git-dir=remote.git rev-parse foo
'
test_expect_success '--stdin refs come after cmdline' '
clear_remote &&
echo A:foo >input &&
test_must_fail git send-pack remote.git --stdin B:foo <input &&
- verify_push B foo
+ test_grep "multiple updates for ref ${SQ}refs/heads/foo${SQ} not allowed" err &&
+ test_must_fail git --git-dir=remote.git rev-parse foo
'
test_expect_success 'refspecs and --mirror do not mix (cmdline)' '
diff --git a/t/t5410-receive-pack.sh b/t/t5410-receive-pack.sh
index f76a22943e..09d6bfd2a1 100755
--- a/t/t5410-receive-pack.sh
+++ b/t/t5410-receive-pack.sh
@@ -41,7 +41,19 @@ test_expect_success 'with core.alternateRefsPrefixes' '
test_cmp expect actual.haves
'
-test_expect_success 'receive-pack missing objects fails connectivity check' '
+# The `tee.exe` shipped in Git for Windows v2.49.0 is known to hang frequently
+# when spawned from `git.exe` and piping its output to `git.exe`. This seems
+# related to MSYS2 runtime bug fixes regarding the signal handling; Let's just
+# skip the tests that need to exercise this when the faulty MSYS2 runtime is
+# detected; The test cases are exercised enough in other matrix jobs of the CI
+# runs.
+test_lazy_prereq TEE_DOES_NOT_HANG '
+ test_have_prereq !MINGW &&
+ case "$(uname -a)" in *3.5.7-463ebcdc.x86_64*) false;; esac
+'
+
+test_expect_success TEE_DOES_NOT_HANG \
+ 'receive-pack missing objects fails connectivity check' '
test_when_finished rm -rf repo remote.git setup.git &&
git init repo &&
@@ -62,7 +74,8 @@ test_expect_success 'receive-pack missing objects fails connectivity check' '
test_must_fail git -C remote.git cat-file -e $(git -C repo rev-parse HEAD)
'
-test_expect_success 'receive-pack missing objects bypasses connectivity check' '
+test_expect_success TEE_DOES_NOT_HANG \
+ 'receive-pack missing objects bypasses connectivity check' '
test_when_finished rm -rf repo remote.git setup.git &&
git init repo &&
diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh
index dabcc5f811..4e9c27b0f2 100755
--- a/t/t5516-fetch-push.sh
+++ b/t/t5516-fetch-push.sh
@@ -744,8 +744,8 @@ test_expect_success 'pushing valid refs triggers post-receive and post-update ho
EOF
cat >update.expect <<-EOF &&
- refs/heads/main $orgmain $newmain
refs/heads/next $orgnext $newnext
+ refs/heads/main $orgmain $newmain
EOF
cat >post-receive.expect <<-EOF &&
@@ -808,8 +808,8 @@ test_expect_success 'deletion of a non-existent ref is not fed to post-receive a
EOF
cat >update.expect <<-EOF &&
- refs/heads/main $orgmain $newmain
refs/heads/nonexistent $ZERO_OID $ZERO_OID
+ refs/heads/main $orgmain $newmain
EOF
cat >post-receive.expect <<-EOF &&
@@ -868,10 +868,10 @@ test_expect_success 'mixed ref updates, deletes, invalid deletes trigger hooks w
EOF
cat >update.expect <<-EOF &&
- refs/heads/main $orgmain $newmain
refs/heads/next $orgnext $newnext
- refs/heads/seen $orgseen $newseen
refs/heads/nonexistent $ZERO_OID $ZERO_OID
+ refs/heads/main $orgmain $newmain
+ refs/heads/seen $orgseen $newseen
EOF
cat >post-receive.expect <<-EOF &&
@@ -1909,4 +1909,23 @@ test_expect_success 'push with config push.useBitmaps' '
--thin --delta-base-offset -q --no-use-bitmap-index <false
'
+test_expect_success 'push with config pack.usePathWalk=true' '
+ mk_test testrepo heads/main &&
+ git checkout main &&
+ test_config pack.usePathWalk true &&
+ GIT_TRACE2_EVENT="$(pwd)/path-walk.txt" \
+ git push --quiet testrepo main:test &&
+
+ test_region pack-objects path-walk path-walk.txt
+'
+
+test_expect_success 'push with F/D conflict with deletion and creation' '
+ test_when_finished "git branch -D branch" &&
+ git branch branch/conflict &&
+ mk_test testrepo heads/branch/conflict &&
+ git branch -D branch/conflict &&
+ git branch branch &&
+ git push testrepo :refs/heads/branch/conflict refs/heads/branch
+'
+
test_done
diff --git a/t/t5538-push-shallow.sh b/t/t5538-push-shallow.sh
index e91fcc173e..dc0e972943 100755
--- a/t/t5538-push-shallow.sh
+++ b/t/t5538-push-shallow.sh
@@ -123,4 +123,45 @@ EOF
git cat-file blob $(echo 1|git hash-object --stdin) >/dev/null
)
'
+
+test_expect_success 'push new commit from shallow clone has correct object count' '
+ git init origin &&
+ test_commit -C origin a &&
+ test_commit -C origin b &&
+
+ git clone --depth=1 "file://$(pwd)/origin" client &&
+ git -C client checkout -b topic &&
+ git -C client commit --allow-empty -m "empty" &&
+ GIT_PROGRESS_DELAY=0 git -C client push --progress origin topic 2>err &&
+ test_grep "Enumerating objects: 1, done." err
+'
+
+test_expect_success 'push new commit from shallow clone has good deltas' '
+ git init base &&
+ test_seq 1 999 >base/a &&
+ test_commit -C base initial &&
+ git -C base add a &&
+ git -C base commit -m "big a" &&
+
+ git clone --depth=1 "file://$(pwd)/base" deltas &&
+ git -C deltas checkout -b deltas &&
+ test_seq 1 1000 >deltas/a &&
+ git -C deltas commit -a -m "bigger a" &&
+ GIT_PROGRESS_DELAY=0 git -C deltas push --progress origin deltas 2>err &&
+
+ test_grep "Enumerating objects: 5, done" err &&
+
+ # If the delta base is found, then this message uses "bytes".
+ # If the delta base is not found, then this message uses "KiB".
+ test_grep "Writing objects: .* bytes" err &&
+
+ git -C deltas commit --amend -m "changed message" &&
+ GIT_TRACE2_EVENT="$(pwd)/config-push.txt" \
+ GIT_PROGRESS_DELAY=0 git -C deltas -c pack.usePathWalk=true \
+ push --progress -f origin deltas 2>err &&
+
+ test_grep "Enumerating objects: 1, done" err &&
+ test_region pack-objects path-walk config-push.txt
+'
+
test_done
diff --git a/t/t5558-clone-bundle-uri.sh b/t/t5558-clone-bundle-uri.sh
index 9b211a626b..7a0943bd36 100755
--- a/t/t5558-clone-bundle-uri.sh
+++ b/t/t5558-clone-bundle-uri.sh
@@ -1279,6 +1279,29 @@ test_expect_success 'bundles are downloaded once during fetch --all' '
trace-mult.txt >bundle-fetches &&
test_line_count = 1 bundle-fetches
'
+
+test_expect_success 'bundles with space in URI are rejected' '
+ test_when_finished "rm -rf busted repo" &&
+ mkdir -p "$HOME/busted/ /$HOME/repo/.git/objects/bundles" &&
+ git clone --bundle-uri="$HTTPD_URL/bogus $HOME/busted/" "$HTTPD_URL/smart/fetch.git" repo 2>err &&
+ test_grep "error: bundle-uri: URI is malformed: " err &&
+ find busted -type f >files &&
+ test_must_be_empty files
+'
+
+test_expect_success 'bundles with newline in URI are rejected' '
+ test_when_finished "rm -rf busted repo" &&
+ git clone --bundle-uri="$HTTPD_URL/bogus\nget $HTTPD_URL/bogus $HOME/busted" "$HTTPD_URL/smart/fetch.git" repo 2>err &&
+ test_grep "error: bundle-uri: URI is malformed: " err &&
+ test_path_is_missing "$HOME/busted"
+'
+
+test_expect_success 'bundles with newline in target path are rejected' '
+ git clone --bundle-uri="$HTTPD_URL/bogus" "$HTTPD_URL/smart/fetch.git" "$(printf "escape\nget $HTTPD_URL/bogus .")" 2>err &&
+ test_grep "error: bundle-uri: filename is malformed: " err &&
+ test_path_is_missing escape
+'
+
# Do not add tests here unless they use the HTTP server, as they will
# not run unless the HTTP dependencies exist.
diff --git a/t/t6422-merge-rename-corner-cases.sh b/t/t6422-merge-rename-corner-cases.sh
index 9cbe7ca782..f14c0fb30e 100755
--- a/t/t6422-merge-rename-corner-cases.sh
+++ b/t/t6422-merge-rename-corner-cases.sh
@@ -1146,10 +1146,7 @@ test_conflicts_with_adds_and_renames() {
cd simple_${sideL}_${sideR} &&
# Create some related files now
- for i in $(test_seq 1 10)
- do
- echo Random base content line $i
- done >file_v1 &&
+ test_seq -f "Random base content line %d" 1 10 >file_v1 &&
cp file_v1 file_v2 &&
echo modification >>file_v2 &&
@@ -1293,10 +1290,7 @@ test_setup_nested_conflicts_from_rename_rename () {
cd nested_conflicts_from_rename_rename &&
# Create some related files now
- for i in $(test_seq 1 10)
- do
- echo Random base content line $i
- done >file_v1 &&
+ test_seq -f "Random base content line %d" 1 10 >file_v1 &&
cp file_v1 file_v2 &&
cp file_v1 file_v3 &&
diff --git a/t/t6601-path-walk.sh b/t/t6601-path-walk.sh
index 8d187f7279..56bd1e3c5b 100755
--- a/t/t6601-path-walk.sh
+++ b/t/t6601-path-walk.sh
@@ -376,6 +376,26 @@ test_expect_success 'topic, not base, boundary with pruning' '
test_cmp_sorted expect out
'
+test_expect_success 'topic, not base, --edge-aggressive with pruning' '
+ test-tool path-walk --prune --edge-aggressive -- topic --not base >out &&
+
+ cat >expect <<-EOF &&
+ 0:commit::$(git rev-parse topic)
+ 1:tree::$(git rev-parse topic^{tree})
+ 1:tree::$(git rev-parse base^{tree}):UNINTERESTING
+ 2:tree:right/:$(git rev-parse topic:right)
+ 2:tree:right/:$(git rev-parse base:right):UNINTERESTING
+ 3:blob:right/c:$(git rev-parse base:right/c):UNINTERESTING
+ 3:blob:right/c:$(git rev-parse topic:right/c)
+ blobs:2
+ commits:1
+ tags:0
+ trees:4
+ EOF
+
+ test_cmp_sorted expect out
+'
+
test_expect_success 'trees are reported exactly once' '
test_when_finished "rm -rf unique-trees" &&
test_create_repo unique-trees &&
diff --git a/t/t7007-show.sh b/t/t7007-show.sh
index d6cc69e0f2..2d322b53d1 100755
--- a/t/t7007-show.sh
+++ b/t/t7007-show.sh
@@ -167,4 +167,28 @@ test_expect_success 'show --graph is forbidden' '
test_must_fail git show --graph HEAD
'
+test_expect_success 'show unmerged index' '
+ git reset --hard &&
+
+ git switch -C base &&
+ echo "base" >conflicting &&
+ git add conflicting &&
+ git commit -m "base" &&
+
+ git branch hello &&
+ git branch goodbye &&
+
+ git switch hello &&
+ echo "hello" >conflicting &&
+ git commit -am "hello" &&
+
+ git switch goodbye &&
+ echo "goodbye" >conflicting &&
+ git commit -am "goodbye" &&
+
+ git switch hello &&
+ test_must_fail git merge goodbye &&
+ git show --merge HEAD
+'
+
test_done
diff --git a/t/t7401-submodule-summary.sh b/t/t7401-submodule-summary.sh
index 9c3cc4cf40..66c3ec2da2 100755
--- a/t/t7401-submodule-summary.sh
+++ b/t/t7401-submodule-summary.sh
@@ -38,10 +38,11 @@ commit_file () {
git commit "$@" -m "Commit $*" >/dev/null
}
-test_create_repo sm1 &&
-add_file . foo >/dev/null
-
-head1=$(add_file sm1 foo1 foo2)
+test_expect_success 'setup submodule' '
+ git init sm1 &&
+ add_file . foo &&
+ head1=$(add_file sm1 foo1 foo2)
+'
test_expect_success 'added submodule' "
git add sm1 &&
@@ -214,9 +215,12 @@ test_expect_success 'typechanged submodule(submodule->blob)' "
test_cmp expected actual
"
-rm -f sm1 &&
-test_create_repo sm1 &&
-head6=$(add_file sm1 foo6 foo7)
+test_expect_success 'setup submodule' '
+ rm -f sm1 &&
+ git init sm1 &&
+ head6=$(add_file sm1 foo6 foo7)
+'
+
test_expect_success 'nonexistent commit' "
git submodule summary >actual &&
cat >expected <<-EOF &&
diff --git a/t/t7406-submodule-update.sh b/t/t7406-submodule-update.sh
index c562bad042..3adab12091 100755
--- a/t/t7406-submodule-update.sh
+++ b/t/t7406-submodule-update.sh
@@ -1095,12 +1095,15 @@ test_expect_success 'submodule update --quiet passes quietness to fetch with a s
(cd super5 &&
# This test var can mess with the stderr output checked in this test.
GIT_TEST_NAME_HASH_VERSION=1 \
+ GIT_TEST_PACK_PATH_WALK=0 \
git submodule update --quiet --init --depth=1 submodule3 >out 2>err &&
test_must_be_empty out &&
test_must_be_empty err
) &&
git clone super4 super6 &&
(cd super6 &&
+ # This test variable will create a "warning" message to stderr
+ GIT_TEST_PACK_PATH_WALK=0 \
git submodule update --init --depth=1 submodule3 >out 2>err &&
test_file_not_empty out &&
test_file_not_empty err
@@ -1134,6 +1137,67 @@ test_expect_success 'setup clean recursive superproject' '
git clone --recurse-submodules top top-clean
'
+test_expect_success 'submodule update with multiple remotes' '
+ test_when_finished "rm -fr top-cloned" &&
+ cp -r top-clean top-cloned &&
+
+ # Create a commit in each repo, starting with bottom
+ test_commit -C bottom multiple_remote_commit &&
+ # Create middle commit
+ git -C middle/bottom fetch &&
+ git -C middle/bottom checkout -f FETCH_HEAD &&
+ git -C middle add bottom &&
+ git -C middle commit -m "multiple_remote_commit" &&
+ # Create top commit
+ git -C top/middle fetch &&
+ git -C top/middle checkout -f FETCH_HEAD &&
+ git -C top add middle &&
+ git -C top commit -m "multiple_remote_commit" &&
+
+ # rename the submodule remote
+ git -C top-cloned/middle remote rename origin upstream &&
+
+ # Add another remote
+ git -C top-cloned/middle remote add other bogus &&
+
+ # Make the update of "middle" a no-op, otherwise we error out
+ # because of its unmerged state
+ test_config -C top-cloned submodule.middle.update !true &&
+ git -C top-cloned submodule update --recursive 2>actual.err &&
+ cat >expect.err <<-\EOF &&
+ EOF
+ test_cmp expect.err actual.err
+'
+
+test_expect_success 'submodule update with renamed remote' '
+ test_when_finished "rm -fr top-cloned" &&
+ cp -r top-clean top-cloned &&
+
+ # Create a commit in each repo, starting with bottom
+ test_commit -C bottom rename_commit &&
+ # Create middle commit
+ git -C middle/bottom fetch &&
+ git -C middle/bottom checkout -f FETCH_HEAD &&
+ git -C middle add bottom &&
+ git -C middle commit -m "rename_commit" &&
+ # Create top commit
+ git -C top/middle fetch &&
+ git -C top/middle checkout -f FETCH_HEAD &&
+ git -C top add middle &&
+ git -C top commit -m "rename_commit" &&
+
+ # rename the submodule remote
+ git -C top-cloned/middle remote rename origin upstream &&
+
+ # Make the update of "middle" a no-op, otherwise we error out
+ # because of its unmerged state
+ test_config -C top-cloned submodule.middle.update !true &&
+ git -C top-cloned submodule update --recursive 2>actual.err &&
+ cat >expect.err <<-\EOF &&
+ EOF
+ test_cmp expect.err actual.err
+'
+
test_expect_success 'submodule update should skip unmerged submodules' '
test_when_finished "rm -fr top-cloned" &&
cp -r top-clean top-cloned &&
diff --git a/t/t7422-submodule-output.sh b/t/t7422-submodule-output.sh
index 023a5cbdc4..aea1ddf117 100755
--- a/t/t7422-submodule-output.sh
+++ b/t/t7422-submodule-output.sh
@@ -180,17 +180,14 @@ test_expect_success !MINGW 'git submodule status --recursive propagates SIGPIPE'
COMMIT=$(git rev-parse HEAD) &&
for i in $(test_seq 2000)
do
- printf "[submodule \"sm-$i\"]\npath = recursive-submodule-path-$i\n" "$i" ||
+ echo "[submodule \"sm-$i\"]" &&
+ echo "path = recursive-submodule-path-$i" ||
return 1
done >gitmodules &&
BLOB=$(git hash-object -w --stdin <gitmodules) &&
printf "100644 blob $BLOB\t.gitmodules\n" >tree &&
- for i in $(test_seq 2000)
- do
- printf "160000 commit $COMMIT\trecursive-submodule-path-%d\n" "$i" ||
- return 1
- done >>tree &&
+ test_seq -f "160000 commit $COMMIT\trecursive-submodule-path-%d" 2000 >>tree &&
TREE=$(git mktree <tree) &&
COMMIT=$(git commit-tree "$TREE") &&
diff --git a/t/t7450-bad-git-dotfiles.sh b/t/t7450-bad-git-dotfiles.sh
index 9367794641..14b5743b96 100755
--- a/t/t7450-bad-git-dotfiles.sh
+++ b/t/t7450-bad-git-dotfiles.sh
@@ -372,4 +372,37 @@ test_expect_success 'checkout -f --recurse-submodules must not use a nested gitd
test_path_is_missing nested_checkout/thing2/.git
'
+test_expect_success SYMLINKS,!WINDOWS,!MINGW 'submodule must not checkout into different directory' '
+ test_when_finished "rm -rf sub repo bad-clone" &&
+
+ git init sub &&
+ write_script sub/post-checkout <<-\EOF &&
+ touch "$PWD/foo"
+ EOF
+ git -C sub add post-checkout &&
+ git -C sub commit -m hook &&
+
+ git init repo &&
+ git -C repo -c protocol.file.allow=always submodule add "$PWD/sub" sub &&
+ git -C repo mv sub $(printf "sub\r") &&
+
+ # Ensure config values containing CR are wrapped in quotes.
+ git config unset -f repo/.gitmodules submodule.sub.path &&
+ printf "\tpath = \"sub\r\"\n" >>repo/.gitmodules &&
+
+ git config unset -f repo/.git/modules/sub/config core.worktree &&
+ {
+ printf "[core]\n" &&
+ printf "\tworktree = \"../../../sub\r\"\n"
+ } >>repo/.git/modules/sub/config &&
+
+ ln -s .git/modules/sub/hooks repo/sub &&
+ git -C repo add -A &&
+ git -C repo commit -m submodule &&
+
+ git -c protocol.file.allow=always clone --recurse-submodules repo bad-clone &&
+ ! test -f "$PWD/foo" &&
+ test -f $(printf "bad-clone/sub\r/post-checkout")
+'
+
test_done
diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh
index 2a8df29219..9838094b66 100755
--- a/t/t7600-merge.sh
+++ b/t/t7600-merge.sh
@@ -185,8 +185,19 @@ test_expect_success 'reject non-strategy with a git-merge-foo name' '
test_expect_success 'merge c0 with c1' '
echo "OBJID HEAD@{0}: merge c1: Fast-forward" >reflog.expected &&
+ cat >expect <<-\EOF &&
+ Updating FROM..TO
+ Fast-forward
+ file | 2 +-
+ other | 9 +++++++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+ create mode 100644 other
+ EOF
+
git reset --hard c0 &&
- git merge c1 &&
+ git merge c1 >out &&
+ sed -e "1s/^Updating [0-9a-f.]*/Updating FROM..TO/" out >actual &&
+ test_cmp expect actual &&
verify_merge file result.1 &&
verify_head "$c1" &&
@@ -205,6 +216,67 @@ test_expect_success 'merge c0 with c1 with --ff-only' '
verify_head "$c1"
'
+test_expect_success 'the same merge with merge.stat=diffstat' '
+ cat >expect <<-\EOF &&
+ Updating FROM..TO
+ Fast-forward
+ file | 2 +-
+ other | 9 +++++++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+ create mode 100644 other
+ EOF
+
+ git reset --hard c0 &&
+ git -c merge.stat=diffstat merge c1 >out &&
+ sed -e "1s/^Updating [0-9a-f.]*/Updating FROM..TO/" out >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success 'the same merge with compact summary' '
+ cat >expect <<-\EOF &&
+ Updating FROM..TO
+ Fast-forward
+ file | 2 +-
+ other (new) | 9 +++++++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+ EOF
+
+ git reset --hard c0 &&
+ git merge --compact-summary c1 >out &&
+ sed -e "1s/^Updating [0-9a-f.]*/Updating FROM..TO/" out >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success 'the same merge with compact summary' '
+ cat >expect <<-\EOF &&
+ Updating FROM..TO
+ Fast-forward
+ file | 2 +-
+ other (new) | 9 +++++++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+ EOF
+
+ git reset --hard c0 &&
+ git merge --compact-summary c1 >out &&
+ sed -e "1s/^Updating [0-9a-f.]*/Updating FROM..TO/" out >actual &&
+ test_cmp expect actual
+'
+
+test_expect_success 'the same merge with merge.stat=compact' '
+ cat >expect <<-\EOF &&
+ Updating FROM..TO
+ Fast-forward
+ file | 2 +-
+ other (new) | 9 +++++++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+ EOF
+
+ git reset --hard c0 &&
+ git -c merge.stat=compact merge c1 >out &&
+ sed -e "1s/^Updating [0-9a-f.]*/Updating FROM..TO/" out >actual &&
+ test_cmp expect actual
+'
+
test_debug 'git log --graph --decorate --oneline --all'
test_expect_success 'merge from unborn branch' '
diff --git a/t/t7815-grep-binary.sh b/t/t7815-grep-binary.sh
index b7d83f9a5d..55d5e6de17 100755
--- a/t/t7815-grep-binary.sh
+++ b/t/t7815-grep-binary.sh
@@ -63,7 +63,7 @@ test_expect_success 'git grep ile a' '
git grep ile a
'
-test_expect_failure !CYGWIN 'git grep .fi a' '
+test_expect_failure !CYGWIN,!MACOS 'git grep .fi a' '
git grep .fi a
'
diff --git a/t/t7900-maintenance.sh b/t/t7900-maintenance.sh
index 8cf89e285f..ddd273d8dc 100755
--- a/t/t7900-maintenance.sh
+++ b/t/t7900-maintenance.sh
@@ -49,9 +49,9 @@ test_expect_success 'run [--auto|--quiet]' '
git maintenance run --auto 2>/dev/null &&
GIT_TRACE2_EVENT="$(pwd)/run-no-quiet.txt" \
git maintenance run --no-quiet 2>/dev/null &&
- test_subcommand git gc --quiet --no-detach <run-no-auto.txt &&
- test_subcommand ! git gc --auto --quiet --no-detach <run-auto.txt &&
- test_subcommand git gc --no-quiet --no-detach <run-no-quiet.txt
+ test_subcommand git gc --quiet --no-detach --skip-foreground-tasks <run-no-auto.txt &&
+ test_subcommand ! git gc --auto --quiet --no-detach --skip-foreground-tasks <run-auto.txt &&
+ test_subcommand git gc --no-quiet --no-detach --skip-foreground-tasks <run-no-quiet.txt
'
test_expect_success 'maintenance.auto config option' '
@@ -154,9 +154,9 @@ test_expect_success 'run --task=<task>' '
git maintenance run --task=commit-graph 2>/dev/null &&
GIT_TRACE2_EVENT="$(pwd)/run-both.txt" \
git maintenance run --task=commit-graph --task=gc 2>/dev/null &&
- test_subcommand ! git gc --quiet --no-detach <run-commit-graph.txt &&
- test_subcommand git gc --quiet --no-detach <run-gc.txt &&
- test_subcommand git gc --quiet --no-detach <run-both.txt &&
+ test_subcommand ! git gc --quiet --no-detach --skip-foreground-tasks <run-commit-graph.txt &&
+ test_subcommand git gc --quiet --no-detach --skip-foreground-tasks <run-gc.txt &&
+ test_subcommand git gc --quiet --no-detach --skip-foreground-tasks <run-both.txt &&
test_subcommand git commit-graph write --split --reachable --no-progress <run-commit-graph.txt &&
test_subcommand ! git commit-graph write --split --reachable --no-progress <run-gc.txt &&
test_subcommand git commit-graph write --split --reachable --no-progress <run-both.txt
@@ -610,7 +610,12 @@ test_expect_success 'rerere-gc task with --auto honors maintenance.rerere-gc.aut
test_expect_success '--auto and --schedule incompatible' '
test_must_fail git maintenance run --auto --schedule=daily 2>err &&
- test_grep "at most one" err
+ test_grep "cannot be used together" err
+'
+
+test_expect_success '--task and --schedule incompatible' '
+ test_must_fail git maintenance run --task=pack-refs --schedule=daily 2>err &&
+ test_grep "cannot be used together" err
'
test_expect_success 'invalid --schedule value' '
diff --git a/t/t9300-fast-import.sh b/t/t9300-fast-import.sh
index b258dbf1df..4dc3d645bf 100755
--- a/t/t9300-fast-import.sh
+++ b/t/t9300-fast-import.sh
@@ -120,7 +120,7 @@ test_expect_success 'A: create pack from stdin' '
INPUT_END
git fast-import --export-marks=marks.out <input &&
- git whatchanged main
+ git log --raw main
'
test_expect_success 'A: verify pack' '
@@ -279,7 +279,7 @@ test_expect_success 'A: verify marks import does not crash' '
INPUT_END
git fast-import --import-marks=marks.out <input &&
- git whatchanged verify--import-marks
+ git log --raw verify--import-marks
'
test_expect_success 'A: verify pack' '
@@ -652,7 +652,7 @@ test_expect_success 'C: incremental import create pack from stdin' '
INPUT_END
git fast-import <input &&
- git whatchanged branch
+ git log --raw branch
'
test_expect_success 'C: verify pack' '
@@ -715,7 +715,7 @@ test_expect_success 'D: inline data in commit' '
INPUT_END
git fast-import <input &&
- git whatchanged branch
+ git log --raw branch
'
test_expect_success 'D: verify pack' '
@@ -882,7 +882,7 @@ test_expect_success 'H: deletall, add 1' '
INPUT_END
git fast-import <input &&
- git whatchanged H
+ git log --raw H
'
test_expect_success 'H: verify pack' '
@@ -2066,7 +2066,7 @@ test_expect_success 'Q: commit notes' '
INPUT_END
git fast-import <input &&
- git whatchanged notes-test
+ git log --raw notes-test
'
test_expect_success 'Q: verify pack' '
diff --git a/t/t9301-fast-import-notes.sh b/t/t9301-fast-import-notes.sh
index 1ae4d7c0d3..e62173cf1f 100755
--- a/t/t9301-fast-import-notes.sh
+++ b/t/t9301-fast-import-notes.sh
@@ -76,7 +76,7 @@ INPUT_END
test_expect_success 'set up main branch' '
git fast-import <input &&
- git whatchanged main
+ git log --raw main
'
commit4=$(git rev-parse refs/heads/main)
diff --git a/t/t9350-fast-export.sh b/t/t9350-fast-export.sh
index dda9e7c3e7..76619765fc 100755
--- a/t/t9350-fast-export.sh
+++ b/t/t9350-fast-export.sh
@@ -299,22 +299,10 @@ test_expect_success GPG 'set up signed commit' '
'
-test_expect_success GPG 'signed-commits default' '
-
- sane_unset FAST_EXPORT_SIGNED_COMMITS_NOABORT &&
- test_must_fail git fast-export --reencode=no commit-signing &&
-
- FAST_EXPORT_SIGNED_COMMITS_NOABORT=1 git fast-export --reencode=no commit-signing >output 2>err &&
- ! grep ^gpgsig output &&
- grep "^encoding ISO-8859-1" output &&
- test -s err &&
- sed "s/commit-signing/commit-strip-signing/" output | (
- cd new &&
- git fast-import &&
- STRIPPED=$(git rev-parse --verify refs/heads/commit-strip-signing) &&
- test $COMMIT_SIGNING != $STRIPPED
- )
-
+test_expect_success GPG 'signed-commits default is same as strip' '
+ git fast-export --reencode=no commit-signing >out1 2>err &&
+ git fast-export --reencode=no --signed-commits=strip commit-signing >out2 &&
+ test_cmp out1 out2
'
test_expect_success GPG 'signed-commits=abort' '
diff --git a/t/t9500-gitweb-standalone-no-errors.sh b/t/t9500-gitweb-standalone-no-errors.sh
index 7679780fb8..578d6c8b32 100755
--- a/t/t9500-gitweb-standalone-no-errors.sh
+++ b/t/t9500-gitweb-standalone-no-errors.sh
@@ -700,19 +700,17 @@ test_expect_success \
# ----------------------------------------------------------------------
# syntax highlighting
+test_lazy_prereq HIGHLIGHT '
+ highlight_version=$(highlight --version </dev/null 2>/dev/null) &&
+ test -n "$highlight_version"
+'
-highlight_version=$(highlight --version </dev/null 2>/dev/null)
-if [ $? -eq 127 ]; then
- say "Skipping syntax highlighting tests: 'highlight' not found"
-elif test -z "$highlight_version"; then
- say "Skipping syntax highlighting tests: incorrect 'highlight' found"
-else
- test_set_prereq HIGHLIGHT
+test_expect_success HIGHLIGHT '
cat >>gitweb_config.perl <<-\EOF
our $highlight_bin = "highlight";
- $feature{'highlight'}{'override'} = 1;
+ $feature{"highlight"}{"override"} = 1;
EOF
-fi
+'
test_expect_success HIGHLIGHT \
'syntax highlighting (no highlight, unknown syntax)' \
diff --git a/t/t9822-git-p4-path-encoding.sh b/t/t9822-git-p4-path-encoding.sh
index 572d395498..e6e07facd4 100755
--- a/t/t9822-git-p4-path-encoding.sh
+++ b/t/t9822-git-p4-path-encoding.sh
@@ -7,12 +7,17 @@ test_description='Clone repositories with non ASCII paths'
UTF8_ESCAPED="a-\303\244_o-\303\266_u-\303\274.txt"
ISO8859_ESCAPED="a-\344_o-\366_u-\374.txt"
-ISO8859="$(printf "$ISO8859_ESCAPED")" &&
-echo content123 >"$ISO8859" &&
-rm "$ISO8859" || {
+test_lazy_prereq FS_ACCEPTS_ISO_8859_1 '
+ ISO8859="$(printf "$ISO8859_ESCAPED")" &&
+ echo content123 >"$ISO8859" &&
+ rm "$ISO8859"
+'
+
+if ! test_have_prereq FS_ACCEPTS_ISO_8859_1
+then
skip_all="fs does not accept ISO-8859-1 filenames"
test_done
-}
+fi
test_expect_success 'start p4d' '
start_p4d
diff --git a/t/t9835-git-p4-metadata-encoding-python2.sh b/t/t9835-git-p4-metadata-encoding-python2.sh
index 6116f806f6..b969c7e0d5 100755
--- a/t/t9835-git-p4-metadata-encoding-python2.sh
+++ b/t/t9835-git-p4-metadata-encoding-python2.sh
@@ -12,23 +12,25 @@ failing, and produces maximally sane output in git.'
## SECTION REPEATED IN t9836 ##
###############################
+EXTRA_PATH="$(pwd)/temp_python"
+mkdir "$EXTRA_PATH"
+PATH="$EXTRA_PATH:$PATH"
+export PATH
+
# These tests are specific to Python 2. Write a custom script that executes
# git-p4 directly with the Python 2 interpreter to ensure that we use that
# version even if Git was compiled with Python 3.
-python_target_binary=$(which python2)
-if test -n "$python_target_binary"
-then
- mkdir temp_python
- PATH="$(pwd)/temp_python:$PATH"
- export PATH
-
- write_script temp_python/git-p4-python2 <<-EOF
+test_lazy_prereq P4_PYTHON2 '
+ python_target_binary=$(which python2) &&
+ test -n "$python_target_binary" &&
+ write_script "$EXTRA_PATH"/git-p4-python2 <<-EOF &&
exec "$python_target_binary" "$(git --exec-path)/git-p4" "\$@"
EOF
-fi
+ ( git p4-python2 || true ) >err &&
+ test_grep "valid commands" err
+'
-git p4-python2 >err
-if ! grep 'valid commands' err
+if ! test_have_prereq P4_PYTHON2
then
skip_all="skipping python2 git p4 tests; python2 not available"
test_done
diff --git a/t/t9836-git-p4-metadata-encoding-python3.sh b/t/t9836-git-p4-metadata-encoding-python3.sh
index 5e5217a66b..da6669bf71 100755
--- a/t/t9836-git-p4-metadata-encoding-python3.sh
+++ b/t/t9836-git-p4-metadata-encoding-python3.sh
@@ -12,23 +12,25 @@ failing, and produces maximally sane output in git.'
## SECTION REPEATED IN t9835 ##
###############################
+EXTRA_PATH="$(pwd)/temp_python"
+mkdir "$EXTRA_PATH"
+PATH="$EXTRA_PATH:$PATH"
+export PATH
+
# These tests are specific to Python 3. Write a custom script that executes
# git-p4 directly with the Python 3 interpreter to ensure that we use that
# version even if Git was compiled with Python 2.
-python_target_binary=$(which python3)
-if test -n "$python_target_binary"
-then
- mkdir temp_python
- PATH="$(pwd)/temp_python:$PATH"
- export PATH
-
- write_script temp_python/git-p4-python3 <<-EOF
+test_lazy_prereq P4_PYTHON3 '
+ python_target_binary=$(which python3) &&
+ test -n "$python_target_binary" &&
+ write_script "$EXTRA_PATH"/git-p4-python3 <<-EOF &&
exec "$python_target_binary" "$(git --exec-path)/git-p4" "\$@"
EOF
-fi
+ ( git p4-python3 || true ) >err &&
+ test_grep "valid commands" err
+'
-git p4-python3 >err
-if ! grep 'valid commands' err
+if ! test_have_prereq P4_PYTHON3
then
skip_all="skipping python3 git p4 tests; python3 not available"
test_done
diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh
index d667dda654..637a6f13a6 100755
--- a/t/t9903-bash-prompt.sh
+++ b/t/t9903-bash-prompt.sh
@@ -66,10 +66,6 @@ test_expect_success 'prompt - unborn branch' '
test_cmp expected "$actual"
'
-if test_have_prereq !FUNNYNAMES; then
- say 'Your filesystem does not allow newlines in filenames.'
-fi
-
test_expect_success FUNNYNAMES 'prompt - with newline in path' '
repo_with_newline="repo
with
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index bee4a2ca34..6230746cc4 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -1451,9 +1451,21 @@ test_cmp_fspath () {
# test_seq 1 5 -- outputs 1 2 3 4 5 one line at a time
#
# or with one argument (end), in which case it starts counting
-# from 1.
+# from 1. In addition to the start/end arguments, you can pass an optional
+# printf format. For example:
+#
+# test_seq -f "line %d" 1 5
+#
+# would print 5 lines, "line 1" through "line 5".
test_seq () {
+ local fmt="%d"
+ case "$1" in
+ -f)
+ fmt="$2"
+ shift 2
+ ;;
+ esac
case $# in
1) set 1 "$@" ;;
2) ;;
@@ -1462,7 +1474,7 @@ test_seq () {
test_seq_counter__=$1
while test "$test_seq_counter__" -le "$2"
do
- echo "$test_seq_counter__"
+ printf "$fmt\n" "$test_seq_counter__"
test_seq_counter__=$(( $test_seq_counter__ + 1 ))
done
}
diff --git a/t/test-lib.sh b/t/test-lib.sh
index af722d383d..51370a201c 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -470,7 +470,7 @@ then
then
: Executed by a Bash version supporting BASH_XTRACEFD. Good.
else
- echo >&2 "warning: ignoring -x; '$0' is untraceable without BASH_XTRACEFD"
+ echo >&2 "# warning: ignoring -x; '$0' is untraceable without BASH_XTRACEFD"
trace=
fi
fi
@@ -707,7 +707,7 @@ then
exec 3>>"$GIT_TEST_TEE_OUTPUT_FILE" 4>&3
elif test "$verbose" = "t"
then
- exec 4>&2 3>&1
+ exec 4>&2 3>&2
else
exec 4>/dev/null 3>/dev/null
fi
@@ -949,7 +949,7 @@ maybe_setup_verbose () {
test -z "$verbose_only" && return
if match_pattern_list $test_count "$verbose_only"
then
- exec 4>&2 3>&1
+ exec 4>&2 3>&2
# Emit a delimiting blank line when going from
# non-verbose to verbose. Within verbose mode the
# delimiter is printed by test_expect_*. The choice
@@ -1272,7 +1272,14 @@ test_done () {
check_test_results_san_file_ "$test_failure"
- if test -z "$skip_all" && test -n "$invert_exit_code"
+ if test "$test_fixed" != 0
+ then
+ if test -z "$invert_exit_code"
+ then
+ GIT_EXIT_OK=t
+ exit 1
+ fi
+ elif test -z "$skip_all" && test -n "$invert_exit_code"
then
say_color warn "# faking up non-zero exit with --invert-exit-code"
GIT_EXIT_OK=t
@@ -1577,6 +1584,8 @@ fi
# Use -P to resolve symlinks in our working directory so that the cwd
# in subprocesses like git equals our $PWD (for pathname comparisons).
cd -P "$TRASH_DIRECTORY" || BAIL_OUT "cannot cd -P to \"$TRASH_DIRECTORY\""
+TRASH_DIRECTORY=$(pwd)
+HOME="$TRASH_DIRECTORY"
start_test_output "$0"
@@ -1636,6 +1645,12 @@ fi
# Fix some commands on Windows, and other OS-specific things
uname_s=$(uname -s)
case $uname_s in
+Darwin)
+ test_set_prereq MACOS
+ test_set_prereq POSIXPERM
+ test_set_prereq BSLASHPSPEC
+ test_set_prereq EXECKEEPSPID
+ ;;
*MINGW*)
# Windows has its own (incompatible) sort and find
sort () {
diff --git a/thread-utils.c b/thread-utils.c
index 1f89ffab4c..374890e6b0 100644
--- a/thread-utils.c
+++ b/thread-utils.c
@@ -46,11 +46,11 @@ int online_cpus(void)
mib[0] = CTL_HW;
# ifdef HW_AVAILCPU
mib[1] = HW_AVAILCPU;
- len = sizeof(cpucount);
- if (!sysctl(mib, 2, &cpucount, &len, NULL, 0))
- return cpucount;
-# endif /* HW_AVAILCPU */
+# elif defined(HW_NCPUONLINE)
+ mib[1] = HW_NCPUONLINE;
+# else
mib[1] = HW_NCPU;
+# endif /* HW_AVAILCPU */
len = sizeof(cpucount);
if (!sysctl(mib, 2, &cpucount, &len, NULL, 0))
return cpucount;
diff --git a/usage.c b/usage.c
index 38b46bbbfe..81913236a4 100644
--- a/usage.c
+++ b/usage.c
@@ -67,6 +67,8 @@ static NORETURN void usage_builtin(const char *err, va_list params)
static void die_message_builtin(const char *err, va_list params)
{
+ if (!err)
+ return;
trace2_cmd_error_va(err, params);
vreportf(_("fatal: "), err, params);
}
@@ -372,3 +374,15 @@ void bug_fl(const char *file, int line, const char *fmt, ...)
trace2_cmd_error_va(fmt, ap);
va_end(ap);
}
+
+NORETURN void you_still_use_that(const char *command_name)
+{
+ fprintf(stderr,
+ _("'%s' is nominated for removal.\n"
+ "If you still use this command, please add an extra\n"
+ "option, '--i-still-use-this', on the command line\n"
+ "and let us know you still use it by sending an e-mail\n"
+ "to <git@vger.kernel.org>. Thanks.\n"),
+ command_name);
+ die(_("refusing to run without --i-still-use-this"));
+}
diff --git a/userdiff.c b/userdiff.c
index 05776ccd10..fe710a68bf 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -327,6 +327,10 @@ PATTERNS("python",
"|[-+0-9.e]+[jJlL]?|0[xX]?[0-9a-fA-F]+[lL]?"
"|[-+*/<>%&^|=!]=|//=?|<<=?|>>=?|\\*\\*=?"),
/* -- */
+PATTERNS("r",
+ "^[ \t]*([a-zA-z][a-zA-Z0-9_.]*[ \t]*(<-|=)[ \t]*function.*)$",
+ /* -- */
+ "[^ \t]+"),
PATTERNS("ruby",
"^[ \t]*((class|module|def)[ \t].*)$",
/* -- */