Merge branch 'kh/maintenance-missing-tasks-docfix'

Doc mark-up fix for a topic that has graduated to 'master'.

* kh/maintenance-missing-tasks-docfix:
  doc: maintenance: fix linkgit syntax
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 83ca8e4..7dbf9f7 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -265,7 +265,7 @@
       run: pip install meson ninja
     - name: Setup
       shell: pwsh
-      run: meson setup build --vsenv -Dperl=disabled -Dcredential_helpers=wincred
+      run: meson setup build --vsenv -Dbuildtype=release -Dperl=disabled -Dcredential_helpers=wincred
     - name: Compile
       shell: pwsh
       run: meson compile -C build
@@ -408,12 +408,27 @@
       jobname: ${{matrix.vector.jobname}}
       CC: ${{matrix.vector.cc}}
       CI_JOB_IMAGE: ${{matrix.vector.image}}
+      CUSTOM_PATH: /custom
     runs-on: ubuntu-latest
     container: ${{matrix.vector.image}}
     steps:
     - name: prepare libc6 for actions
       if: matrix.vector.jobname == 'linux32'
       run: apt -q update && apt -q -y install libc6-amd64 lib64stdc++6
+    - name: install git in container
+      run: |
+        if command -v git
+        then
+          : # nothing to do
+        elif command -v apk
+        then
+          apk add --update git
+        elif command -v dnf
+        then
+          dnf -yq update && dnf -yq install git
+        else
+          apt-get -q update && apt-get -q -y install git
+        fi
     - uses: actions/checkout@v4
     - run: ci/install-dependencies.sh
     - run: useradd builder --create-home
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4798b28..bb6d5b9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -173,7 +173,6 @@
 test:msvc-meson:
   extends: .msvc-meson
   stage: test
-  when: manual
   timeout: 6h
   needs:
     - job: "build:msvc-meson"
diff --git a/Documentation/Makefile b/Documentation/Makefile
index 0d3a2c6..b109d25 100644
--- a/Documentation/Makefile
+++ b/Documentation/Makefile
@@ -317,8 +317,8 @@
 
 $(cmds_txt): cmd-list.made
 
-cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT)
-	$(QUIET_GEN)$(PERL_PATH) ./cmd-list.perl .. . $(cmds_txt) && \
+cmd-list.made: cmd-list.sh ../command-list.txt $(MAN1_TXT)
+	$(QUIET_GEN)$(SHELL_PATH) ./cmd-list.sh .. . $(cmds_txt) && \
 	date >$@
 
 mergetools-%.adoc: generate-mergetool-list.sh ../git-mergetool--lib.sh $(wildcard ../mergetools/*)
@@ -398,9 +398,9 @@
 git.info: user-manual.texi
 	$(QUIET_MAKEINFO)$(MAKEINFO) --no-split -o $@ user-manual.texi
 
-user-manual.texi: user-manual.xml
+user-manual.texi: user-manual.xml fix-texi.sh
 	$(QUIET_DB2TEXI)$(DOCBOOK2X_TEXI) user-manual.xml --encoding=UTF-8 --to-stdout >$@+ && \
-	$(PERL_PATH) fix-texi.perl <$@+ >$@ && \
+	$(SHELL_PATH) fix-texi.sh <$@+ >$@ && \
 	$(RM) $@+
 
 user-manual.pdf: user-manual.xml
diff --git a/Documentation/MyFirstContribution.adoc b/Documentation/MyFirstContribution.adoc
index ca1d688..aca7212 100644
--- a/Documentation/MyFirstContribution.adoc
+++ b/Documentation/MyFirstContribution.adoc
@@ -40,14 +40,6 @@
 The https://lore.kernel.org/git[archive] of this mailing list is
 available to view in a browser.
 
-==== https://groups.google.com/forum/#!forum/git-mentoring[git-mentoring@googlegroups.com]
-
-This mailing list is targeted to new contributors and was created as a place to
-post questions and receive answers outside of the public eye of the main list.
-Veteran contributors who are especially interested in helping mentor newcomers
-are present on the list. In order to avoid search indexers, group membership is
-required to view messages; anyone can join and no approval is required.
-
 ==== https://web.libera.chat/#git-devel[#git-devel] on Libera Chat
 
 This IRC channel is for conversations between Git contributors. If someone is
@@ -150,15 +142,31 @@
 point for your command in a function matching the style and signature:
 
 ----
-int cmd_psuh(int argc, const char **argv, const char *prefix)
+int cmd_psuh(int argc UNUSED, const char **argv UNUSED,
+	     const char *prefix UNUSED, struct repository *repo UNUSED)
 ----
 
+A few things to note:
+
+* A subcommand implementation takes its command line arguments
+  in `int argc` + `const char **argv`, like `main()` would.
+
+* It also takes two extra parameters, `prefix` and `repo`. What
+  they mean will not be discussed until much later.
+
+* Because this first example will not use any of the parameters,
+  your compiler will give warnings on unused parameters. As the
+  list of these four parameters is mandated by the API to add
+  new built-in commands, you cannot omit them. Instead, you add
+  `UNUSED` to each of them to tell the compiler that you *know*
+  you are not (yet) using it.
+
 We'll also need to add the declaration of psuh; open up `builtin.h`, find the
 declaration for `cmd_pull`, and add a new line for `psuh` immediately before it,
 in order to keep the declarations alphabetically sorted:
 
 ----
-int cmd_psuh(int argc, const char **argv, const char *prefix);
+int cmd_psuh(int argc, const char **argv, const char *prefix, struct repository *repo);
 ----
 
 Be sure to `#include "builtin.h"` in your `psuh.c`. You'll also need to
@@ -174,7 +182,8 @@
 should also do so when writing your user-facing commands in the future.
 
 ----
-int cmd_psuh(int argc, const char **argv, const char *prefix)
+int cmd_psuh(int argc UNUSED, const char **argv UNUSED,
+	     const char *prefix UNUSED, struct repository *repo UNUSED)
 {
 	printf(_("Pony saying hello goes here.\n"));
 	return 0;
@@ -287,8 +296,9 @@
 It's probably useful to do at least something besides printing out a string.
 Let's start by having a look at everything we get.
 
-Modify your `cmd_psuh` implementation to dump the args you're passed, keeping
-existing `printf()` calls in place:
+Modify your `cmd_psuh` implementation to dump the args you're passed,
+keeping existing `printf()` calls in place; because the args are now
+used, remove the `UNUSED` macro from them:
 
 ----
 	int i;
@@ -312,7 +322,8 @@
 for you, try `cd Documentation/ && ../bin-wrappers/git psuh`). That's not so
 helpful. So what other context can we get?
 
-Add a line to `#include "config.h"`. Then, add the following bits to the
+Add a line to `#include "config.h"` and `#include "repository.h"`.
+Then, add the following bits to the function body:
 function body:
 
 ----
@@ -320,18 +331,18 @@
 
 ...
 
-	git_config(git_default_config, NULL);
-	if (git_config_get_string_tmp("user.name", &cfg_name) > 0)
+	repo_config(repo, git_default_config, NULL);
+	if (repo_config_get_string_tmp(repo, "user.name", &cfg_name))
 		printf(_("No name is found in config\n"));
 	else
 		printf(_("Your name: %s\n"), cfg_name);
 ----
 
-`git_config()` will grab the configuration from config files known to Git and
-apply standard precedence rules. `git_config_get_string_tmp()` will look up
+`repo_config()` will grab the configuration from config files known to Git and
+apply standard precedence rules. `repo_config_get_string_tmp()` will look up
 a specific key ("user.name") and give you the value. There are a number of
 single-key lookup functions like this one; you can see them all (and more info
-about how to use `git_config()`) in `Documentation/technical/api-config.adoc`.
+about how to use `repo_config()`) in `Documentation/technical/api-config.adoc`.
 
 You should see that the name printed matches the one you see when you run:
 
@@ -364,7 +375,7 @@
 ----
 
 But as we drill down, we can find that `status_init_config()` wraps a call
-to `git_config()`. Let's modify the code we wrote in the previous commit.
+to `repo_config()`. Let's modify the code we wrote in the previous commit.
 
 Be sure to include the header to allow you to use `struct wt_status`:
 
@@ -380,8 +391,8 @@
 
 ...
 
-	wt_status_prepare(the_repository, &status);
-	git_config(git_default_config, &status);
+	wt_status_prepare(repo, &status);
+	repo_config(repo, git_default_config, &status);
 
 ...
 
diff --git a/Documentation/RelNotes/2.50.0.adoc b/Documentation/RelNotes/2.50.0.adoc
index 3ab82ac..2a14636 100644
--- a/Documentation/RelNotes/2.50.0.adoc
+++ b/Documentation/RelNotes/2.50.0.adoc
@@ -36,7 +36,7 @@
  * 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
@@ -51,6 +51,46 @@
  * "git blame --porcelain" mode now talks about unblamable lines and
    lines that are blamed to an ignored commit.
 
+ * The build procedure installs bash (but not zsh) completion script.
+
+ * 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.
+
+ * "git index-pack --fix-thin" used to abort to prevent a cycle in
+   delta chains from forming in a corner case even when there is no
+   such cycle.
+
+ * 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
+   than normal branches as anchoring points to optimize the follow-up
+   fetch during "git clone"; now it is told to utilize all.
+
+ * The `send-email` documentation has been updated with OAuth2.0
+   related examples.
+
+ * Two of the "scalar" subcommands that add a repository that hasn't
+   been under "scalar"'s control are taught an option not to enable the
+   scheduled maintenance on it.
+
+ * The userdiff pattern for shell scripts has been updated to cope
+   with more bash-isms.
+
+ * "git merge-tree" learned an option to see if it resolves cleanly
+   without actually creating a result.
+
+ * The commit title in the "rebase -i" todo file are now prefixed with
+   '#', just like a merge commit being replayed.
+
+ * "git receive-pack" optionally learns not to care about connectivity
+   check, which can be useful when the repository arranges to ensure
+   connectivity by some other means.
+
+ * "git notes --help" documentation updates.
+
 
 Performance, Internal Implementation, Development Support etc.
 --------------------------------------------------------------
@@ -62,7 +102,9 @@
  * "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.
@@ -115,6 +157,61 @@
  * Update parse-options API to catch mistakes to pass address of an
    integral variable of a wrong type/size.
 
+ * Since a call to repo_config() can be called with repo set to NULL
+   these days, a command that is marked as RUN_SETUP in the builtin
+   command table does not have to check repo with NULL before making
+   the call.
+
+ * Overhaul of the reftable API.
+
+ * Reduce requirement for Perl in our documentation build and a few
+   scripts.
+
+ * The build procedure based on Meson learned to drive the
+   benchmarking tests.
+
+ * Code clean-up for meson-based build infrastructure.
+
+ * Add an equivalent to "make hdr-check" target to meson based builds.
+
+ * Further code clean-up in the object-store layer.
+
+ * Build performance fix.
+
+ * Teach "git send-email" to also consult `hostname -f` for mail
+   domain to compute the identity given to SMTP servers.
+
+ * The dependency on the_repository variable has been reduced from the
+   code paths in "git replay".
+
+ * Support to create a loose object file with unknown object type has
+   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 into
+   memory.
+
+ * Assorted fixes for issues found with CodeQL.
+
+ * Remove the leftover hints to the test framework to mark tests that
+   do not pass the leak checker tests, as they should no longer be
+   needed.
+
+ * When a stale .midx file refers to .pack files that no longer exist,
+   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
 -----------------
@@ -214,7 +311,7 @@
    (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
@@ -224,6 +321,84 @@
  * Various build tweaks, including CSPRNG selection on some platforms.
    (merge cdda67de03 rj/build-tweaks later to maint).
 
+ * Developer support fix..
+   (merge 32b74b9809 js/git-perf-env-override later to maint).
+
+ * 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).
+
+ * 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).
+
+ * "git mv a a/b dst" would ask to move the directory 'a' itself, as
+   well as its contents, in a single destination directory, which is
+   a contradicting request that is impossible to satisfy. This case is
+   now detected and the command errors out.
+   (merge 974f0d4664 ps/mv-contradiction-fix later to maint).
+
+ * Further refinement on CI messages when an optional external
+   software is unavailable (e.g. due to third-party service outage).
+   (merge 956acbefbd jc/ci-skip-unavailable-external-software later to maint).
+
+ * Test result aggregation did not work in Meson based CI jobs.
+   (merge bd38ed5be1 ps/ci-test-aggreg-fix-for-meson later to maint).
+
+ * Code clean-up around stale CI elements and building with Visual Studio.
+   (merge a7b060f67f js/ci-buildsystems-cleanup later to maint).
+
+ * "git add 'f?o'" did not add 'foo' if 'f?o', an unusual pathname,
+   also existed on the working tree, which has been corrected.
+   (merge ec727e189c kj/glob-path-with-special-char later to maint).
+
+ * The fallback implementation of open_nofollow() depended on
+   open("symlink", O_NOFOLLOW) to set errno to ELOOP, but a few BSD
+   derived systems use different errno, which has been worked around.
+   (merge f47bcc3413 cf/wrapper-bsd-eloop later to maint).
+
+ * Use-after-free fix in the sequencer.
+   (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 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).
+
+ * CI settings at GitLab has been updated to run MSVC based Meson job
+   automatically (as opposed to be done only upon manual request).
+   (merge 6389579b2f ps/ci-gitlab-enable-msvc-meson-job later to maint).
+
+ * "git apply" and "git add -i/-p" code paths no longer unnecessarily
+   expand sparse-index while working.
+   (merge ecf9ba20e3 ds/sparse-apply-add-p later to maint).
+
+ * Avoid adding directory path to a sparse-index tree entries to the
+   name-hash, since they would bloat the hashtable without anybody
+   querying for them.  This was done already for a single threaded
+   part of the code, but now the multi-threaded code also does the
+   same.
+   (merge 2e60aabc75 am/sparse-index-name-hash-fix later to maint).
+
+ * Recent versions of Perl started warning against "! A =~ /pattern/"
+   which does not negate the result of the matching.  As it turns out
+   that the problematic function is not even called, it was removed.
+   (merge 67cae845d2 op/cvsserver-perl-warning later to maint).
+
+ * "git apply --index/--cached" when applying a deletion patch in
+   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.
+
  * 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).
@@ -244,3 +419,16 @@
    (merge 107d889303 md/t1403-path-is-file later to maint).
    (merge abd4192b07 js/comma-semicolon-confusion later to maint).
    (merge 27b7264206 ab/environment-clean-header later to maint).
+   (merge ff4a749354 as/typofix-in-env-h-header later to maint).
+   (merge 86eef3541e az/tighten-string-array-constness later to maint).
+   (merge 25292c301d lo/remove-log-reencode-from-rev-info later to maint).
+   (merge 1aa50636fd jk/p5332-testfix later to maint).
+   (merge 42cf4ac552 ps/ci-resurrect-p4-on-github later to maint).
+   (merge 104add8368 js/diff-codeql-false-positive-workaround later to maint).
+   (merge f62977b93c en/get-tree-entry-doc later to maint).
+   (merge e5dd0a05ed ly/am-split-stgit-leakfix later to maint).
+   (merge bac220e154 rc/t1001-test-path-is-file later to maint).
+   (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/cmd-list.perl b/Documentation/cmd-list.perl
deleted file mode 100755
index 0a0c1b3..0000000
--- a/Documentation/cmd-list.perl
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/perl -w
-
-use File::Compare qw(compare);
-
-sub format_one {
-	my ($source_dir, $out, $nameattr) = @_;
-	my ($name, $attr) = @$nameattr;
-	my ($path) = "$source_dir/Documentation/$name.adoc";
-	my ($state, $description);
-	my $mansection;
-	$state = 0;
-	open I, '<', "$path" or die "No such file $path.adoc";
-	while (<I>) {
-		if (/^(?:git|scalar)[a-z0-9-]*\(([0-9])\)$/) {
-			$mansection = $1;
-			next;
-		}
-		if (/^NAME$/) {
-			$state = 1;
-			next;
-		}
-		if ($state == 1 && /^----$/) {
-			$state = 2;
-			next;
-		}
-		next if ($state != 2);
-		chomp;
-		$description = $_;
-		last;
-	}
-	close I;
-	if (!defined $description) {
-		die "No description found in $path.adoc";
-	}
-	if (my ($verify_name, $text) = ($description =~ /^($name) - (.*)/)) {
-		print $out "linkgit:$name\[$mansection\]::\n\t";
-		if ($attr =~ / deprecated /) {
-			print $out "(deprecated) ";
-		}
-		print $out "$text.\n\n";
-	}
-	else {
-		die "Description does not match $name: $description";
-	}
-}
-
-my ($source_dir, $build_dir, @categories) = @ARGV;
-
-open IN, "<$source_dir/command-list.txt";
-while (<IN>) {
-	last if /^### command list/;
-}
-
-my %cmds = ();
-for (sort <IN>) {
-	next if /^#/;
-
-	chomp;
-	my ($name, $cat, $attr) = /^(\S+)\s+(.*?)(?:\s+(.*))?$/;
-	$attr = '' unless defined $attr;
-	push @{$cmds{$cat}}, [$name, " $attr "];
-}
-close IN;
-
-for my $out (@categories) {
-	my ($cat) = $out =~ /^cmds-(.*)\.adoc$/;
-	my ($path) = "$build_dir/$out";
-	open O, '>', "$path+" or die "Cannot open output file $out+";
-	for (@{$cmds{$cat}}) {
-		format_one($source_dir, \*O, $_);
-	}
-	close O;
-
-	if (-f "$path" && compare("$path", "$path+") == 0) {
-		unlink "$path+";
-	}
-	else {
-		rename "$path+", "$path";
-	}
-}
diff --git a/Documentation/cmd-list.sh b/Documentation/cmd-list.sh
new file mode 100755
index 0000000..077def3
--- /dev/null
+++ b/Documentation/cmd-list.sh
@@ -0,0 +1,104 @@
+#!/bin/sh
+
+set -e
+
+format_one () {
+	source_dir="$1"
+	command="$2"
+	attributes="$3"
+
+	path="$source_dir/Documentation/$command.adoc"
+	if ! test -f "$path"
+	then
+		echo >&2 "No such file $path"
+		exit 1
+	fi
+
+	state=0
+	while read line
+	do
+		case "$state" in
+		0)
+			case "$line" in
+			git*\(*\)|scalar*\(*\))
+				mansection="${line##*\(}"
+				mansection="${mansection%\)}"
+				;;
+			NAME)
+				state=1;;
+			esac
+			;;
+		1)
+			if test "$line" = "----"
+			then
+				state=2
+			fi
+			;;
+		2)
+			description="$line"
+			break
+			;;
+		esac
+	done <"$path"
+
+	if test -z "$mansection"
+	then
+		echo "No man section found in $path" >&2
+		exit 1
+	fi
+
+	if test -z "$description"
+	then
+		echo >&2 "No description found in $path"
+		exit 1
+	fi
+
+	case "$description" in
+	"$command - "*)
+		text="${description#$command - }"
+
+		printf "linkgit:%s[%s]::\n\t" "$command" "$mansection"
+		case "$attributes" in
+		*" deprecated "*)
+			printf "(deprecated) "
+			;;
+		esac
+		printf "$text.\n\n"
+		;;
+	*)
+		echo >&2 "Description does not match $command: $description"
+		exit 1
+		;;
+	esac
+}
+
+source_dir="$1"
+build_dir="$2"
+shift 2
+
+for out
+do
+	category="${out#cmds-}"
+	category="${category%.adoc}"
+	path="$build_dir/$out"
+
+	while read command command_category attributes
+	do
+		case "$command" in
+		"#"*)
+			continue;;
+		esac
+
+		case "$command_category" in
+		"$category")
+			format_one "$source_dir" "$command" " $attributes ";;
+		esac
+	done <"$source_dir/command-list.txt" >"$build_dir/$out+"
+
+	if cmp "$build_dir/$out+" "$build_dir/$out" >/dev/null 2>&1
+	then
+		rm "$build_dir/$out+"
+	else
+		mv "$build_dir/$out+" "$build_dir/$out"
+	fi
+done
diff --git a/Documentation/config/checkout.adoc b/Documentation/config/checkout.adoc
index a323022..e35d212 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 @@
 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 @@
 	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/commit.adoc b/Documentation/config/commit.adoc
index d3f4624..208ae76 100644
--- a/Documentation/config/commit.adoc
+++ b/Documentation/config/commit.adoc
@@ -8,10 +8,11 @@
 	This setting overrides the default of the `--cleanup` option in
 	`git commit`. {see-git-commit} Changing the default can be useful
 	when you always want to keep lines that begin
-	with the comment character `#` in your log message, in which case you
+	with the comment character (`core.commentChar`, default `#`)
+	in your log message, in which case you
 	would do `git config commit.cleanup whitespace` (note that you will
-	have to remove the help lines that begin with `#` in the commit log
-	template yourself, if you do this).
+	have to remove the help lines that begin with the comment character
+	in the commit log template yourself, if you do this).
 
 `commit.gpgSign`::
 	A boolean to specify whether all commits should be GPG signed.
diff --git a/Documentation/config/fmt-merge-msg.adoc b/Documentation/config/fmt-merge-msg.adoc
index 3fbf40e..696ba05 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/gitcvs.adoc b/Documentation/config/gitcvs.adoc
index 02da427..31d7be3 100644
--- a/Documentation/config/gitcvs.adoc
+++ b/Documentation/config/gitcvs.adoc
@@ -47,7 +47,8 @@
 	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 6739328..9da5c29 100644
--- a/Documentation/config/http.adoc
+++ b/Documentation/config/http.adoc
@@ -289,7 +289,8 @@
 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/merge.adoc b/Documentation/config/merge.adoc
index d2d0f21..86359f6 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 @@
 	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 @@
 	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".
+	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::
+`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,35 @@
 	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
+`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.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 +116,15 @@
 	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 00bf665..6be5061 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 @@
 	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 @@
 	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 @@
 	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 @@
 	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/fix-texi.perl b/Documentation/fix-texi.perl
deleted file mode 100755
index ff7d78f..0000000
--- a/Documentation/fix-texi.perl
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/perl -w
-
-while (<>) {
-	if (/^\@setfilename/) {
-		$_ = "\@setfilename git.info\n";
-	} elsif (/^\@direntry/) {
-		print '@dircategory Development
-@direntry
-* Git: (git).           A fast distributed revision control system
-@end direntry
-';	}
-	unless (/^\@direntry/../^\@end direntry/) {
-		print;
-	}
-}
diff --git a/Documentation/fix-texi.sh b/Documentation/fix-texi.sh
new file mode 100755
index 0000000..bc300f7
--- /dev/null
+++ b/Documentation/fix-texi.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+awk '
+	/^@setfilename/{
+		print "@setfilename git.info"
+		next
+	}
+	/^@direntry/{
+		direntry=1
+		print "@dircategory Development"
+		print "@direntry"
+		print "* Git: (git).           A fast distributed revision control system"
+		print "@end direntry"
+		next
+	}
+	/^@end direntry/{
+		direntry=0
+		next
+	}
+	!direntry
+'
diff --git a/Documentation/fsck-msgids.adoc b/Documentation/fsck-msgids.adoc
index 9601fff..0ba4f9a 100644
--- a/Documentation/fsck-msgids.adoc
+++ b/Documentation/fsck-msgids.adoc
@@ -59,6 +59,12 @@
 `emptyName`::
 	(WARN) A path contains an empty name.
 
+`emptyPackedRefsFile`::
+	(INFO) "packed-refs" file is empty. Report to the
+	git@vger.kernel.org mailing list if you see this error. As only
+	very early versions of Git would create such an empty
+	"packed_refs" file, we might tighten this rule in the future.
+
 `extraHeaderEntry`::
 	(IGNORE) Extra headers found after `tagger`.
 
diff --git a/Documentation/git-branch.adoc b/Documentation/git-branch.adoc
index 50a1e13..c0afddc 100644
--- a/Documentation/git-branch.adoc
+++ b/Documentation/git-branch.adoc
@@ -373,7 +373,7 @@
 ------------
 +
 <1> Delete the remote-tracking branches "todo", "html" and "man". The next
-    `git fetch` or `git pullè will create them again unless you configure them not to.
+    `git fetch` or `git pull` will create them again unless you configure them not to.
     See linkgit:git-fetch[1].
 <2> Delete the "test" branch even if the "master" branch (or whichever branch
     is currently checked out) does not have all commits from the test branch.
diff --git a/Documentation/git-cat-file.adoc b/Documentation/git-cat-file.adoc
index fc4b92f..cde79ad 100644
--- a/Documentation/git-cat-file.adoc
+++ b/Documentation/git-cat-file.adoc
@@ -9,8 +9,7 @@
 --------
 [verse]
 'git cat-file' <type> <object>
-'git cat-file' (-e | -p) <object>
-'git cat-file' (-t | -s) [--allow-unknown-type] <object>
+'git cat-file' (-e | -p | -t | -s) <object>
 'git cat-file' (--textconv | --filters)
 	     [<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]
 'git cat-file' (--batch | --batch-check | --batch-command) [--batch-all-objects]
@@ -202,9 +201,6 @@
 	only once, even if it is stored multiple times in the
 	repository.
 
---allow-unknown-type::
-	Allow `-s` or `-t` to query broken/corrupt objects of unknown type.
-
 --follow-symlinks::
 	With `--batch` or `--batch-check`, follow symlinks inside the
 	repository when requesting objects with extended SHA-1
diff --git a/Documentation/git-checkout.adoc b/Documentation/git-checkout.adoc
index a66c53a..ee83b6d 100644
--- a/Documentation/git-checkout.adoc
+++ b/Documentation/git-checkout.adoc
@@ -7,54 +7,54 @@
 
 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 @@
 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 @@
 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 @@
 
 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 @@
 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 @@
 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 @@
 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 @@
 +
 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 @@
 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 @@
 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 @@
 +
 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 @@
 	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 @@
 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 @@
 ------------
 
 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 @@
 -----------------------
 
 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 5a4f2b6..8e00472 100644
--- a/Documentation/git-column.adoc
+++ b/Documentation/git-column.adoc
@@ -50,7 +50,7 @@
 --------
 
 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 @@
 ------------
 
 Format data by rows:
-+
+
 ------------
 $ seq 1 21 | git column --mode=row --padding=5
 1      2      3      4      5      6      7
@@ -68,7 +68,7 @@
 ------------
 
 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-daemon.adoc b/Documentation/git-daemon.adoc
index ede7b93..99389f0 100644
--- a/Documentation/git-daemon.adoc
+++ b/Documentation/git-daemon.adoc
@@ -7,21 +7,21 @@
 
 SYNOPSIS
 --------
-[verse]
-'git daemon' [--verbose] [--syslog] [--export-all]
-	     [--timeout=<n>] [--init-timeout=<n>] [--max-connections=<n>]
-	     [--strict-paths] [--base-path=<path>] [--base-path-relaxed]
-	     [--user-path | --user-path=<path>]
-	     [--interpolated-path=<pathtemplate>]
-	     [--reuseaddr] [--detach] [--pid-file=<file>]
-	     [--enable=<service>] [--disable=<service>]
-	     [--allow-override=<service>] [--forbid-override=<service>]
-	     [--access-hook=<path>] [--[no-]informative-errors]
-	     [--inetd |
-	      [--listen=<host-or-ipaddr>] [--port=<n>]
-	      [--user=<user> [--group=<group>]]]
-	     [--log-destination=(stderr|syslog|none)]
-	     [<directory>...]
+[synopsis]
+git daemon [--verbose] [--syslog] [--export-all]
+	   [--timeout=<n>] [--init-timeout=<n>] [--max-connections=<n>]
+	   [--strict-paths] [--base-path=<path>] [--base-path-relaxed]
+	   [--user-path | --user-path=<path>]
+	   [--interpolated-path=<pathtemplate>]
+	   [--reuseaddr] [--detach] [--pid-file=<file>]
+	   [--enable=<service>] [--disable=<service>]
+	   [--allow-override=<service>] [--forbid-override=<service>]
+	   [--access-hook=<path>] [--[no-]informative-errors]
+	   [--inetd |
+	     [--listen=<host-or-ipaddr>] [--port=<n>]
+	     [--user=<user> [--group=<group>]]]
+	   [--log-destination=(stderr|syslog|none)]
+	   [<directory>...]
 
 DESCRIPTION
 -----------
@@ -32,111 +32,111 @@
 It verifies that the directory has the magic file "git-daemon-export-ok", and
 it will refuse to export any Git directory that hasn't explicitly been marked
 for export this way (unless the `--export-all` parameter is specified). If you
-pass some directory paths as 'git daemon' arguments, the offers are limited to
+pass some directory paths as `git daemon` arguments, the offers are limited to
 repositories within those directories.
 
 By default, only `upload-pack` service is enabled, which serves
-'git fetch-pack' and 'git ls-remote' clients, which are invoked
-from 'git fetch', 'git pull', and 'git clone'.
+`git fetch-pack` and `git ls-remote` clients, which are invoked
+from `git fetch`, `git pull`, and `git clone`.
 
 This is ideally suited for read-only updates, i.e., pulling from
 Git repositories.
 
-An `upload-archive` also exists to serve 'git archive'.
+An `upload-archive` also exists to serve `git archive`.
 
 OPTIONS
 -------
---strict-paths::
+`--strict-paths`::
 	Match paths exactly (i.e. don't allow "/foo/repo" when the real path is
 	"/foo/repo.git" or "/foo/repo/.git") and don't do user-relative paths.
-	'git daemon' will refuse to start when this option is enabled and no
+	`git daemon` will refuse to start when this option is enabled and no
 	directory arguments are provided.
 
---base-path=<path>::
+`--base-path=<path>`::
 	Remap all the path requests as relative to the given path.
-	This is sort of "Git root" - if you run 'git daemon' with
-	'--base-path=/srv/git' on example.com, then if you later try to pull
-	'git://example.com/hello.git', 'git daemon' will interpret the path
-	as `/srv/git/hello.git`.
+	This is sort of "Git root" - if you run `git daemon` with
+	`--base-path=/srv/git` on `example.com`, then if you later try
+	to pull from `git://example.com/hello.git`, `git daemon` will
+	interpret the path as `/srv/git/hello.git`.
 
---base-path-relaxed::
-	If --base-path is enabled and repo lookup fails, with this option
-	'git daemon' will attempt to lookup without prefixing the base path.
-	This is useful for switching to --base-path usage, while still
+`--base-path-relaxed`::
+	If `--base-path` is enabled and repo lookup fails, with this option
+	`git daemon` will attempt to lookup without prefixing the base path.
+	This is useful for switching to `--base-path` usage, while still
 	allowing the old paths.
 
---interpolated-path=<pathtemplate>::
+`--interpolated-path=<pathtemplate>`::
 	To support virtual hosting, an interpolated path template can be
 	used to dynamically construct alternate paths.  The template
-	supports %H for the target hostname as supplied by the client but
-	converted to all lowercase, %CH for the canonical hostname,
-	%IP for the server's IP address, %P for the port number,
-	and %D for the absolute path of the named repository.
+	supports `%H` for the target hostname as supplied by the client but
+	converted to all lowercase, `%CH` for the canonical hostname,
+	`%IP` for the server's IP address, `%P` for the port number,
+	and `%D` for the absolute path of the named repository.
 	After interpolation, the path is validated against the directory
 	list.
 
---export-all::
+`--export-all`::
 	Allow pulling from all directories that look like Git repositories
 	(have the 'objects' and 'refs' subdirectories), even if they
-	do not have the 'git-daemon-export-ok' file.
+	do not have the `git-daemon-export-ok` file.
 
---inetd::
-	Have the server run as an inetd service. Implies --syslog (may be
-	overridden with `--log-destination=`).
-	Incompatible with --detach, --port, --listen, --user and --group
-	options.
+`--inetd`::
+	Have the server run as an inetd service. Implies `--syslog` (may
+	be overridden with `--log-destination=`).
+	Incompatible with `--detach`, `--port`, `--listen`, `--user` and
+	`--group` options.
 
---listen=<host-or-ipaddr>::
+`--listen=<host-or-ipaddr>`::
 	Listen on a specific IP address or hostname.  IP addresses can
 	be either an IPv4 address or an IPv6 address if supported.  If IPv6
-	is not supported, then --listen=<hostname> is also not supported and
-	--listen must be given an IPv4 address.
+	is not supported, then `--listen=<hostname>` is also not supported
+	and `--listen` must be given an IPv4 address.
 	Can be given more than once.
 	Incompatible with `--inetd` option.
 
---port=<n>::
+`--port=<n>`::
 	Listen on an alternative port.  Incompatible with `--inetd` option.
 
---init-timeout=<n>::
+`--init-timeout=<n>`::
 	Timeout (in seconds) between the moment the connection is established
 	and the client request is received (typically a rather low value, since
 	that should be basically immediate).
 
---timeout=<n>::
+`--timeout=<n>`::
 	Timeout (in seconds) for specific client sub-requests. This includes
 	the time it takes for the server to process the sub-request and the
 	time spent waiting for the next client's request.
 
---max-connections=<n>::
+`--max-connections=<n>`::
 	Maximum number of concurrent clients, defaults to 32.  Set it to
 	zero for no limit.
 
---syslog::
+`--syslog`::
 	Short for `--log-destination=syslog`.
 
---log-destination=<destination>::
+`--log-destination=<destination>`::
 	Send log messages to the specified destination.
-	Note that this option does not imply --verbose,
+	Note that this option does not imply `--verbose`,
 	thus by default only error conditions will be logged.
-	The <destination> must be one of:
+	The _<destination>_ must be one of:
 +
 --
-stderr::
+`stderr`::
 	Write to standard error.
 	Note that if `--detach` is specified,
 	the process disconnects from the real standard error,
 	making this destination effectively equivalent to `none`.
-syslog::
+`syslog`::
 	Write to syslog, using the `git-daemon` identifier.
-none::
+`none`::
 	Disable all logging.
 --
 +
 The default destination is `syslog` if `--inetd` or `--detach` is specified,
 otherwise `stderr`.
 
---user-path::
---user-path=<path>::
+`--user-path`::
+`--user-path=<path>`::
 	Allow {tilde}user notation to be used in requests.  When
 	specified with no parameter, a request to
 	git://host/{tilde}alice/foo is taken as a request to access
@@ -145,23 +145,23 @@
 	taken as a request to access `<path>/foo` repository in
 	the home directory of user `alice`.
 
---verbose::
+`--verbose`::
 	Log details about the incoming connections and requested files.
 
---reuseaddr::
-	Use SO_REUSEADDR when binding the listening socket.
+`--reuseaddr`::
+	Use `SO_REUSEADDR` when binding the listening socket.
 	This allows the server to restart without waiting for
 	old connections to time out.
 
---detach::
-	Detach from the shell. Implies --syslog.
+`--detach`::
+	Detach from the shell. Implies `--syslog`.
 
---pid-file=<file>::
-	Save the process id in 'file'.  Ignored when the daemon
+`--pid-file=<file>`::
+	Save the process id in _<file>_.  Ignored when the daemon
 	is run under `--inetd`.
 
---user=<user>::
---group=<group>::
+`--user=<user>`::
+`--group=<group>`::
 	Change daemon's uid and gid before entering the service loop.
 	When only `--user` is given without `--group`, the
 	primary group ID for the user is used.  The values of
@@ -170,43 +170,44 @@
 +
 Giving these options is an error when used with `--inetd`; use
 the facility of inet daemon to achieve the same before spawning
-'git daemon' if needed.
+`git daemon` if needed.
 +
 Like many programs that switch user id, the daemon does not reset
-environment variables such as `$HOME` when it runs git programs,
+environment variables such as `HOME` when it runs git programs,
 e.g. `upload-pack` and `receive-pack`. When using this option, you
 may also want to set and export `HOME` to point at the home
-directory of `<user>` before starting the daemon, and make sure any
-Git configuration files in that directory are readable by `<user>`.
+directory of _<user>_ before starting the daemon, and make sure any
+Git configuration files in that directory are readable by _<user>_.
 
---enable=<service>::
---disable=<service>::
+`--enable=<service>`::
+`--disable=<service>`::
 	Enable/disable the service site-wide per default.  Note
 	that a service disabled site-wide can still be enabled
 	per repository if it is marked overridable and the
 	repository enables the service with a configuration
 	item.
 
---allow-override=<service>::
---forbid-override=<service>::
+`--allow-override=<service>`::
+`--forbid-override=<service>`::
 	Allow/forbid overriding the site-wide default with per
 	repository configuration.  By default, all the services
 	may be overridden.
 
---[no-]informative-errors::
+`--informative-errors`::
+`--no-informative-errors`::
 	When informative errors are turned on, git-daemon will report
 	more verbose errors to the client, differentiating conditions
 	like "no such repository" from "repository not exported". This
 	is more convenient for clients, but may leak information about
 	the existence of unexported repositories.  When informative
 	errors are not enabled, all errors report "access denied" to the
-	client. The default is --no-informative-errors.
+	client. The default is `--no-informative-errors`.
 
---access-hook=<path>::
+`--access-hook=<path>`::
 	Every time a client connects, first run an external command
 	specified by the <path> with service name (e.g. "upload-pack"),
-	path to the repository, hostname (%H), canonical hostname
-	(%CH), IP address (%IP), and TCP port (%P) as its command-line
+	path to the repository, hostname (`%H`), canonical hostname
+	(`%CH`), IP address (`%IP`), and TCP port (`%P`) as its command-line
 	arguments. The external command can decide to decline the
 	service by exiting with a non-zero status (or to allow it by
 	exiting with a zero status).  It can also look at the $REMOTE_ADDR
@@ -217,7 +218,7 @@
 standard output to be sent to the requestor as an error message when
 it declines the service.
 
-<directory>::
+_<directory>_::
 	The remaining arguments provide a list of directories. If any
 	directories are specified, then the `git-daemon` process will
 	serve a requested directory only if it is contained in one of
@@ -229,24 +230,24 @@
 
 These services can be globally enabled/disabled using the
 command-line options of this command.  If finer-grained
-control is desired (e.g. to allow 'git archive' to be run
+control is desired (e.g. to allow `git archive` to be run
 against only in a few selected repositories the daemon serves),
 the per-repository configuration file can be used to enable or
 disable them.
 
 upload-pack::
-	This serves 'git fetch-pack' and 'git ls-remote'
+	This serves `git fetch-pack` and `git ls-remote`
 	clients.  It is enabled by default, but a repository can
 	disable it by setting `daemon.uploadpack` configuration
 	item to `false`.
 
 upload-archive::
-	This serves 'git archive --remote'.  It is disabled by
+	This serves `git archive --remote`.  It is disabled by
 	default, but a repository can enable it by setting
 	`daemon.uploadarch` configuration item to `true`.
 
 receive-pack::
-	This serves 'git send-pack' clients, allowing anonymous
+	This serves `git send-pack` clients, allowing anonymous
 	push.  It is disabled by default, as there is _no_
 	authentication in the protocol (in other words, anybody
 	can push anything into the repository, including removal
@@ -300,7 +301,7 @@
 
 
 'git daemon' as regular daemon for virtual hosts::
-	To set up 'git daemon' as a regular, non-inetd service that
+	To set up `git daemon` as a regular, non-inetd service that
 	handles repositories for multiple virtual hosts based on
 	their IP addresses, start the daemon like this:
 +
@@ -317,7 +318,7 @@
 they correspond to these IP addresses.
 
 selectively enable/disable services per repository::
-	To enable 'git archive --remote' and disable 'git fetch' against
+	To enable `git archive --remote` and disable `git fetch` against
 	a repository, have the following in the configuration file in the
 	repository (that is the file 'config' next to `HEAD`, 'refs' and
 	'objects').
@@ -331,8 +332,8 @@
 
 ENVIRONMENT
 -----------
-'git daemon' will set REMOTE_ADDR to the IP address of the client
-that connected to it, if the IP address is available. REMOTE_ADDR will
+`git daemon` will set `REMOTE_ADDR` to the IP address of the client
+that connected to it, if the IP address is available. `REMOTE_ADDR` will
 be available in the environment of hooks called when
 services are performed.
 
diff --git a/Documentation/git-fast-export.adoc b/Documentation/git-fast-export.adoc
index 413a527..43bbb4f 100644
--- a/Documentation/git-fast-export.adoc
+++ b/Documentation/git-fast-export.adoc
@@ -46,14 +46,12 @@
 
 --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 7b107f5..250d866 100644
--- a/Documentation/git-fast-import.adoc
+++ b/Documentation/git-fast-import.adoc
@@ -523,6 +523,9 @@
 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-merge-tree.adoc b/Documentation/git-merge-tree.adoc
index cf0578f..f824eea 100644
--- a/Documentation/git-merge-tree.adoc
+++ b/Documentation/git-merge-tree.adoc
@@ -65,6 +65,12 @@
 	default is to include these messages if there are merge
 	conflicts, and to omit them otherwise.
 
+--quiet::
+	Disable all output from the program.  Useful when you are only
+	interested in the exit status.  Allows merge-tree to exit
+	early when it finds a conflict, and allows it to avoid writing
+	most objects created by merges.
+
 --allow-unrelated-histories::
 	merge-tree will by default error out if the two branches specified
 	share no common history.  This flag can be given to override that
diff --git a/Documentation/git-merge.adoc b/Documentation/git-merge.adoc
index 64281d6..12aa859 100644
--- a/Documentation/git-merge.adoc
+++ b/Documentation/git-merge.adoc
@@ -8,13 +8,13 @@
 
 SYNOPSIS
 --------
-[verse]
-'git merge' [-n] [--stat] [--no-commit] [--squash] [--[no-]edit]
+[synopsis]
+git merge [-n] [--stat] [--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 @@
 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 @@
 
 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 @@
 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 @@
 
 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 @@
 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 @@
 `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 @@
    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 --ff-only v1.2.3
 ----
 
-
 HOW CONFLICTS ARE PRESENTED
 ---------------------------
 
@@ -260,7 +259,7 @@
 ------------
 
 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 @@
 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 @@
 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 @@
 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 @@
 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 046c325..77d0b50 100644
--- a/Documentation/git-mergetool.adoc
+++ b/Documentation/git-mergetool.adoc
@@ -7,95 +7,95 @@
 
 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-multi-pack-index.adoc b/Documentation/git-multi-pack-index.adoc
index 631d5c7..b6cd0d7 100644
--- a/Documentation/git-multi-pack-index.adoc
+++ b/Documentation/git-multi-pack-index.adoc
@@ -38,10 +38,13 @@
 +
 --
 	--preferred-pack=<pack>::
-		Optionally specify the tie-breaking pack used when
-		multiple packs contain the same object. `<pack>` must
-		contain at least one object. If not given, ties are
-		broken in favor of the pack with the lowest mtime.
+		When specified, break ties in favor of this pack when
+		there are additional copies of its objects in other
+		packs. Ties for objects not found in the preferred
+		pack are always resolved in favor of the copy in the
+		pack with the highest mtime. If unspecified, the pack
+		with the lowest mtime is used by default. The
+		preferred pack must have at least one object.
 
 	--[no-]bitmap::
 		Control whether or not a multi-pack bitmap is written.
diff --git a/Documentation/git-notes.adoc b/Documentation/git-notes.adoc
index bcfe3da..46a232c 100644
--- a/Documentation/git-notes.adoc
+++ b/Documentation/git-notes.adoc
@@ -87,6 +87,9 @@
 on standard input, and copy the notes from each _<from-object>_ to its
 corresponding _<to-object>_.  (The optional _<rest>_ is ignored so that
 the command can read the input given to the `post-rewrite` hook.)
++
+`--stdin` cannot be combined with object names given on the command
+line.
 
 `append`::
 	Append new message(s) given by `-m` or `-F` options to an
@@ -124,6 +127,10 @@
 	giving zero or one object from the command line, this is
 	equivalent to specifying an empty note message to
 	the `edit` subcommand.
++
+In `--stdin` mode, also remove the object names given on standard
+input. In other words, `--stdin` can be combined with object names from
+the command line.
 
 `prune`::
 	Remove all notes for non-existing/unreachable objects.
@@ -144,26 +151,18 @@
 	Use the given note message (instead of prompting).
 	If multiple `-m` options are given, their values
 	are concatenated as separate paragraphs.
-	Lines starting with `#` and empty lines other than a
-	single line between paragraphs will be stripped out.
-	If you wish to keep them verbatim, use `--no-stripspace`.
 
 `-F <file>`::
 `--file=<file>`::
 	Take the note message from the given file.  Use `-` to
 	read the note message from the standard input.
-	Lines starting with `#` and empty lines other than a
-	single line between paragraphs will be stripped out.
-	If you wish to keep them verbatim, use `--no-stripspace`.
 
 `-C <object>`::
 `--reuse-message=<object>`::
 	Take the given blob object (for example, another note) as the
 	note message. (Use `git notes copy <object>` instead to
-	copy notes between objects.).  By default, message will be
-	copied verbatim, but if you wish to strip out the lines
-	starting with `#` and empty lines other than a single line
-	between paragraphs, use with `--stripspace` option.
+	copy notes between objects.)  Implies `--no-stripspace` since
+	the default behavior is to copy the message verbatim.
 
 `-c <object>`::
 `--reedit-message=<object>`::
@@ -174,21 +173,34 @@
 	Allow an empty note object to be stored. The default behavior is
 	to automatically remove empty notes.
 
-`--[no-]separator`::
 `--separator=<paragraph-break>`::
+`--separator`::
+`--no-separator`::
 	Specify a string used as a custom inter-paragraph separator
 	(a newline is added at the end as needed). If `--no-separator`, no
 	separators will be added between paragraphs.  Defaults to a blank
 	line.
 
-`--[no-]stripspace`::
-	Strip leading and trailing whitespace from the note message.
-	Also strip out empty lines other than a single line between
-	paragraphs. Lines starting with `#` will be stripped out
-	in non-editor cases like `-m`, `-F` and `-C`, but not in
-	editor case like `git notes edit`, `-c`, etc.
+`--stripspace`::
+`--no-stripspace`::
+	Clean up whitespace. Specifically (see
+	linkgit:git-stripspace[1]):
++
+--
+- remove trailing whitespace from all lines
+- collapse multiple consecutive empty lines into one empty line
+- remove empty lines from the beginning and end of the input
+- add a missing `\n` to the last line if necessary.
+--
++
+`--stripspace` is the default except for
+`-C`/`--reuse-message`. However, keep in mind that this depends on the
+order of similar options. For example, for `-C <object> -m<message>`,
+`--stripspace` will be used because the default for `-m` overrides the
+previous `-C`. This is a known limitation that may be fixed in the
+future.
 
-`--ref <ref>`::
+`--ref=<ref>`::
 	Manipulate the notes tree in _<ref>_.  This overrides
 	`GIT_NOTES_REF` and the `core.notesRef` configuration.  The ref
 	specifies the full refname when it begins with `refs/notes/`; when it
@@ -200,9 +212,7 @@
 	object that does not have notes attached to it.
 
 `--stdin`::
-	Also read the object names to remove notes from the standard
-	input (there is no reason you cannot combine this with object
-	names from the command line).
+	Only valid for `remove` and `copy`. See the respective subcommands.
 
 `-n`::
 `--dry-run`::
diff --git a/Documentation/git-receive-pack.adoc b/Documentation/git-receive-pack.adoc
index 20aca92..0956086 100644
--- a/Documentation/git-receive-pack.adoc
+++ b/Documentation/git-receive-pack.adoc
@@ -46,6 +46,18 @@
 	`$GIT_URL/info/refs?service=git-receive-pack` requests. See
 	`--http-backend-info-refs` in linkgit:git-upload-pack[1].
 
+--skip-connectivity-check::
+	Bypasses the connectivity checks that validate the existence of all
+	objects in the transitive closure of reachable objects. This option is
+	intended for server operators that want to implement their own object
+	connectivity validation outside of Git. This is useful in such cases
+	where the server-side knows additional information about how Git is
+	being used and thus can rely on certain guarantees to more efficiently
+	compute object connectivity that Git itself cannot make. Usage of this
+	option without a reliable external mechanism to ensure full reachable
+	object connectivity risks corrupting the repository and should not be
+	used in the general case.
+
 PRE-RECEIVE HOOK
 ----------------
 Before any ref is updated, if $GIT_DIR/hooks/pre-receive file exists
diff --git a/Documentation/git-reflog.adoc b/Documentation/git-reflog.adoc
index b55c060..412f06b 100644
--- a/Documentation/git-reflog.adoc
+++ b/Documentation/git-reflog.adoc
@@ -138,7 +138,7 @@
 used with `expire`.
 
 Options for `drop`
-~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~
 
 --all::
 	Drop the reflogs of all references from all worktrees.
diff --git a/Documentation/git-send-email.adoc b/Documentation/git-send-email.adoc
index 7f223db..26fda63 100644
--- a/Documentation/git-send-email.adoc
+++ b/Documentation/git-send-email.adoc
@@ -115,6 +115,19 @@
 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
+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.
++
+Without this option specified, the fix is done by default when talking
+to 'smtp.office365.com' or 'smtp-mail.outlook.com'. Use
+`--no-outlook-id-fix` to disable even when talking to these two servers.
+
 --subject=<string>::
 	Specify the initial subject of the email thread.
 	Only necessary if --compose is also set.  If --compose
@@ -496,12 +509,12 @@
 
 include::config/sendemail.adoc[]
 
-EXAMPLES
---------
-Use gmail as the smtp server
+EXAMPLES OF SMTP SERVERS
+------------------------
+Use Gmail as the SMTP Server
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-To use 'git send-email' to send your patches through the GMail SMTP server,
-edit ~/.gitconfig to specify your account settings:
+To use `git send-email` to send your patches through the Gmail SMTP server,
+edit `~/.gitconfig` to specify your account settings:
 
 ----
 [sendemail]
@@ -515,6 +528,41 @@
 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:
+
+----
+[sendemail]
+	smtpEncryption = tls
+	smtpServer = smtp.gmail.com
+	smtpUser = yourname@gmail.com
+	smtpServerPort = 587
+	smtpAuth = OAUTHBEARER
+----
+
+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.
+
+Edit `~/.gitconfig` to specify your account settings for Outlook and use its
+SMTP server with `git send-email`:
+
+----
+[sendemail]
+	smtpEncryption = tls
+	smtpServer = smtp.office365.com
+	smtpUser = yourname@outlook.com
+	smtpServerPort = 587
+	smtpAuth = XOAUTH2
+----
+
+SENDING PATCHES
+---------------
 Once your commits are ready to be sent to the mailing list, run the
 following commands:
 
@@ -523,9 +571,25 @@
 	$ git send-email outgoing/*
 
 The first time you run it, you will be prompted for your credentials.  Enter the
-app-specific or your regular password as appropriate.  If you have credential
-helper configured (see linkgit:git-credential[1]), the password will be saved in
-the credential store so you won't have to type it the next time.
+app-specific or your regular password as appropriate.
+
+If you have a credential helper configured (see linkgit:git-credential[1]), the
+password will be saved in the credential store so you won't have to type it the
+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:
+
+	- https://github.com/AdityaGarg8/git-credential-email[git-credential-gmail]
+	  (cross platform, dedicated helper for authenticating Gmail accounts)
+
+	- https://github.com/AdityaGarg8/git-credential-email[git-credential-outlook]
+	  (cross platform, dedicated helper for authenticating Microsoft Outlook 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:
diff --git a/Documentation/git-stripspace.adoc b/Documentation/git-stripspace.adoc
index a293327..37287f2 100644
--- a/Documentation/git-stripspace.adoc
+++ b/Documentation/git-stripspace.adoc
@@ -37,7 +37,8 @@
 -------
 -s::
 --strip-comments::
-	Skip and remove all lines starting with a comment character (default '#').
+	Skip and remove all lines starting with a comment character
+	(`core.commentChar`, default `#`).
 
 -c::
 --comment-lines::
diff --git a/Documentation/git-switch.adoc b/Documentation/git-switch.adoc
index f55315c..9f62abf 100644
--- a/Documentation/git-switch.adoc
+++ b/Documentation/git-switch.adoc
@@ -7,11 +7,11 @@
 
 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 @@
 
 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`.
+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
+`-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 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 @@
 +
 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 @@
 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 @@
 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 @@
 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 @@
 ------------
 
 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 @@
 
 ------------
 $ 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-var.adoc b/Documentation/git-var.adoc
index 0680568..b606c2d 100644
--- a/Documentation/git-var.adoc
+++ b/Documentation/git-var.adoc
@@ -8,8 +8,8 @@
 
 SYNOPSIS
 --------
-[verse]
-'git var' (-l | <variable>)
+[synopsis]
+git var (-l | <variable>)
 
 DESCRIPTION
 -----------
@@ -18,7 +18,7 @@
 
 OPTIONS
 -------
--l::
+`-l`::
 	Display the logical variables. In addition, all the
 	variables of the Git configuration file .git/config are listed
 	as well. (However, the configuration variables listing functionality
@@ -32,58 +32,56 @@
 
 VARIABLES
 ---------
-GIT_AUTHOR_IDENT::
+`GIT_AUTHOR_IDENT`::
     The author of a piece of code.
 
-GIT_COMMITTER_IDENT::
+`GIT_COMMITTER_IDENT`::
     The person who put a piece of code into Git.
 
-GIT_EDITOR::
+`GIT_EDITOR`::
     Text editor for use by Git commands.  The value is meant to be
     interpreted by the shell when it is used.  Examples: `~/bin/vi`,
     `$SOME_ENVIRONMENT_VARIABLE`, `"C:\Program Files\Vim\gvim.exe"
-    --nofork`.  The order of preference is the `$GIT_EDITOR`
-    environment variable, then `core.editor` configuration, then
-    `$VISUAL`, then `$EDITOR`, and then the default chosen at compile
+    --nofork`.  The order of preference is `$GIT_EDITOR`, then
+    `core.editor` configuration value, then `$VISUAL`, then
+    `$EDITOR`, and then the default chosen at compile
     time, which is usually 'vi'.
 ifdef::git-default-editor[]
     The build you are using chose '{git-default-editor}' as the default.
 endif::git-default-editor[]
 
-GIT_SEQUENCE_EDITOR::
+`GIT_SEQUENCE_EDITOR`::
     Text editor used to edit the 'todo' file while running `git rebase
     -i`. Like `GIT_EDITOR`, the value is meant to be interpreted by
-    the shell when it is used. The order of preference is the
-    `$GIT_SEQUENCE_EDITOR` environment variable, then
-    `sequence.editor` configuration, and then the value of `git var
-    GIT_EDITOR`.
+    the shell when it is used. The order of preference is
+    `$GIT_SEQUENCE_EDITOR`, then `sequence.editor` configuration value,
+    and then the value of `git var GIT_EDITOR`.
 
-GIT_PAGER::
+`GIT_PAGER`::
     Text viewer for use by Git commands (e.g., 'less').  The value
     is meant to be interpreted by the shell.  The order of preference
-    is the `$GIT_PAGER` environment variable, then `core.pager`
-    configuration, then `$PAGER`, and then the default chosen at
-    compile time (usually 'less').
+    is `$GIT_PAGER`, then the value of `core.pager` configuration, then
+    `$PAGER`, and then the default chosen at compile time (usually `less`).
 ifdef::git-default-pager[]
     The build you are using chose '{git-default-pager}' as the default.
 endif::git-default-pager[]
 
-GIT_DEFAULT_BRANCH::
+`GIT_DEFAULT_BRANCH`::
     The name of the first branch created in newly initialized repositories.
 
-GIT_SHELL_PATH::
+`GIT_SHELL_PATH`::
     The path of the binary providing the POSIX shell for commands which use the shell.
 
-GIT_ATTR_SYSTEM::
+`GIT_ATTR_SYSTEM`::
     The path to the system linkgit:gitattributes[5] file, if one is enabled.
 
-GIT_ATTR_GLOBAL::
+`GIT_ATTR_GLOBAL`::
     The path to the global (per-user) linkgit:gitattributes[5] file.
 
-GIT_CONFIG_SYSTEM::
+`GIT_CONFIG_SYSTEM`::
     The path to the system configuration file, if one is enabled.
 
-GIT_CONFIG_GLOBAL::
+`GIT_CONFIG_GLOBAL`::
     The path to the global (per-user) configuration files, if any.
 
 Most path values contain only one value. However, some can contain multiple
diff --git a/Documentation/git-verify-commit.adoc b/Documentation/git-verify-commit.adoc
index aee4c40..ff5b8b9 100644
--- a/Documentation/git-verify-commit.adoc
+++ b/Documentation/git-verify-commit.adoc
@@ -7,26 +7,24 @@
 
 SYNOPSIS
 --------
-[verse]
-'git verify-commit' [-v | --verbose] [--raw] <commit>...
+[synopsis]
+git verify-commit [-v | --verbose] [--raw] <commit>...
 
 DESCRIPTION
 -----------
-Validates the GPG signature created by 'git commit -S'.
+Validates the GPG signature created by `git commit -S`
+on the commit objects given on the command line.
 
 OPTIONS
 -------
---raw::
+`--raw`::
 	Print the raw gpg status output to standard error instead of the normal
 	human-readable output.
 
--v::
---verbose::
+`-v`::
+`--verbose`::
 	Print the contents of the commit object before validating it.
 
-<commit>...::
-	SHA-1 identifiers of Git commit objects.
-
 GIT
 ---
 Part of the linkgit:git[1] suite
diff --git a/Documentation/git-verify-pack.adoc b/Documentation/git-verify-pack.adoc
index d7e8869..b0462d8 100644
--- a/Documentation/git-verify-pack.adoc
+++ b/Documentation/git-verify-pack.adoc
@@ -8,43 +8,39 @@
 
 SYNOPSIS
 --------
-[verse]
-'git verify-pack' [-v | --verbose] [-s | --stat-only] [--] <pack>.idx...
+[synopsis]
+git verify-pack [-v | --verbose] [-s | --stat-only] [--] <pack>.idx...
 
 
 DESCRIPTION
 -----------
-Reads given idx file for packed Git archive created with the
-'git pack-objects' command and verifies the idx file and the
-corresponding pack file.
+Read each idx file for packed Git archive given on the command line,
+and verify the idx file and the corresponding pack file.
 
 OPTIONS
 -------
-<pack>.idx ...::
-	The idx files to verify.
-
--v::
---verbose::
+`-v`::
+`--verbose`::
 	After verifying the pack, show the list of objects contained
 	in the pack and a histogram of delta chain length.
 
--s::
---stat-only::
+`-s`::
+`--stat-only`::
 	Do not verify the pack contents; only show the histogram of delta
 	chain length.  With `--verbose`, the list of objects is also shown.
 
-\--::
+`--`::
 	Do not interpret any more arguments as options.
 
 OUTPUT FORMAT
 -------------
-When specifying the -v option the format used is:
+When specifying the `-v` option the format used is:
 
-	SHA-1 type size size-in-packfile offset-in-packfile
+	object-name type size size-in-packfile offset-in-packfile
 
 for objects that are not deltified in the pack, and
 
-	SHA-1 type size size-in-packfile offset-in-packfile depth base-SHA-1
+	object-name type size size-in-packfile offset-in-packfile depth base-object-name
 
 for objects that are deltified.
 
diff --git a/Documentation/git-verify-tag.adoc b/Documentation/git-verify-tag.adoc
index 81d50ec..b3721a8 100644
--- a/Documentation/git-verify-tag.adoc
+++ b/Documentation/git-verify-tag.adoc
@@ -7,26 +7,24 @@
 
 SYNOPSIS
 --------
-[verse]
-'git verify-tag' [-v | --verbose] [--format=<format>] [--raw] <tag>...
+[synopsis]
+git verify-tag [-v | --verbose] [--format=<format>] [--raw] <tag>...
 
 DESCRIPTION
 -----------
-Validates the gpg signature created by 'git tag'.
+Validates the gpg signature created by `git tag` in the tag
+objects listed on the command line.
 
 OPTIONS
 -------
---raw::
+`--raw`::
 	Print the raw gpg status output to standard error instead of the normal
 	human-readable output.
 
--v::
---verbose::
+`-v`::
+`--verbose`::
 	Print the contents of the tag object before validating it.
 
-<tag>...::
-	SHA-1 identifiers of Git tag objects.
-
 GIT
 ---
 Part of the linkgit:git[1] suite
diff --git a/Documentation/git-write-tree.adoc b/Documentation/git-write-tree.adoc
index f22041a..4c7100e 100644
--- a/Documentation/git-write-tree.adoc
+++ b/Documentation/git-write-tree.adoc
@@ -8,8 +8,8 @@
 
 SYNOPSIS
 --------
-[verse]
-'git write-tree' [--missing-ok] [--prefix=<prefix>/]
+[synopsis]
+git write-tree [--missing-ok] [--prefix=<prefix>/]
 
 DESCRIPTION
 -----------
@@ -18,23 +18,23 @@
 
 The index must be in a fully merged state.
 
-Conceptually, 'git write-tree' sync()s the current index contents
+Conceptually, `git write-tree` sync()s the current index contents
 into a set of tree files.
 In order to have that match what is actually in your directory right
-now, you need to have done a 'git update-index' phase before you did the
-'git write-tree'.
+now, you need to have done a `git update-index` phase before you did the
+`git write-tree`.
 
 
 OPTIONS
 -------
---missing-ok::
-	Normally 'git write-tree' ensures that the objects referenced by the
+`--missing-ok`::
+	Normally `git write-tree` ensures that the objects referenced by the
 	directory exist in the object database.  This option disables this
 	check.
 
---prefix=<prefix>/::
+`--prefix=<prefix>/`::
 	Writes a tree object that represents a subdirectory
-	`<prefix>`.  This can be used to write the tree object
+	_<prefix>_.  This can be used to write the tree object
 	for a subproject that is in the named subdirectory.
 
 GIT
diff --git a/Documentation/gitcredentials.adoc b/Documentation/gitcredentials.adoc
index 3337bb4..b49923d 100644
--- a/Documentation/gitcredentials.adoc
+++ b/Documentation/gitcredentials.adoc
@@ -133,6 +133,10 @@
 
     - 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/howto/recover-corrupted-object-harder.adoc b/Documentation/howto/recover-corrupted-object-harder.adoc
index 5efb4fe..86a1ba7 100644
--- a/Documentation/howto/recover-corrupted-object-harder.adoc
+++ b/Documentation/howto/recover-corrupted-object-harder.adoc
@@ -125,7 +125,7 @@
 {
 	/* make this absurdly large so we don't have to loop */
 	static unsigned char out[1024*1024];
-	z_stream z;
+	struct z_stream_s z;
 	int ret;
 
 	memset(&z, 0, sizeof(z));
@@ -278,7 +278,7 @@
 	static unsigned char buf[25 * 1024 * 1024];
 	static unsigned char out[25 * 1024 * 1024];
 	int len;
-	z_stream z;
+	struct z_stream_s z;
 	int ret;
 
 	len = read(0, buf, sizeof(buf));
diff --git a/Documentation/merge-options.adoc b/Documentation/merge-options.adoc
index 0022185..078f4f6 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 @@
 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 @@
 	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,40 @@
 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::
+`--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 +123,16 @@
 	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 +140,21 @@
 	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 +165,22 @@
 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 +188,8 @@
 
 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 +197,13 @@
 	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 9e034f4..2ba43f8 100644
--- a/Documentation/merge-strategies.adoc
+++ b/Documentation/merge-strategies.adoc
@@ -6,7 +6,7 @@
 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 @@
 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 @@
   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 @@
 	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 @@
 	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 ab915df..abfd426 100644
--- a/Documentation/mergetools/vimdiff.adoc
+++ b/Documentation/mergetools/vimdiff.adoc
@@ -183,13 +183,13 @@
 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 0d4de28..1433acf 100644
--- a/Documentation/meson.build
+++ b/Documentation/meson.build
@@ -335,12 +335,12 @@
 
 documentation_deps += custom_target(
   command: [
-    perl,
+    shell,
     '@INPUT@',
     meson.project_source_root(),
     meson.current_build_dir(),
   ] + cmd_lists,
-  input: 'cmd-list.perl',
+  input: 'cmd-list.sh',
   output: cmd_lists
 )
 
diff --git a/Documentation/rerere-options.adoc b/Documentation/rerere-options.adoc
index c3321dd..b0b9201 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/scalar.adoc b/Documentation/scalar.adoc
index 7e4259c..4bd5b15 100644
--- a/Documentation/scalar.adoc
+++ b/Documentation/scalar.adoc
@@ -9,12 +9,12 @@
 --------
 [verse]
 scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]
-	[--[no-]src] <url> [<enlistment>]
+	[--[no-]src] [--[no-]tags] [--[no-]maintenance] <url> [<enlistment>]
 scalar list
-scalar register [<enlistment>]
+scalar register [--[no-]maintenance] [<enlistment>]
 scalar unregister [<enlistment>]
 scalar run ( all | config | commit-graph | fetch | loose-objects | pack-files ) [<enlistment>]
-scalar reconfigure [ --all | <enlistment> ]
+scalar reconfigure [--maintenance=(enable|disable|keep)] [ --all | <enlistment> ]
 scalar diagnose [<enlistment>]
 scalar delete <enlistment>
 
@@ -97,6 +97,11 @@
 	A sparse-checkout is initialized by default. This behavior can be
 	turned off via `--full-clone`.
 
+--[no-]maintenance::
+	By default, `scalar clone` configures the enlistment to use Git's
+	background maintenance feature. Use the `--no-maintenance` to skip
+	this configuration.
+
 List
 ~~~~
 
@@ -117,6 +122,12 @@
 parent directory is considered to be the Scalar enlistment. If the worktree is
 _not_ called `src/`, it itself will be considered to be the Scalar enlistment.
 
+--[no-]maintenance::
+	By default, `scalar register` configures the enlistment to use Git's
+	background maintenance feature. Use the `--no-maintenance` to skip
+	this configuration. This does not disable any maintenance that may
+	already be enabled in other ways.
+
 Unregister
 ~~~~~~~~~~
 
@@ -149,8 +160,18 @@
 was somehow corrupted or changed by mistake, this subcommand allows to
 reconfigure the enlistment.
 
-With the `--all` option, all enlistments currently registered with Scalar
-will be reconfigured. Use this option after each Scalar upgrade.
+--all::
+	When `--all` is specified, reconfigure all enlistments currently
+	registered with Scalar by the `scalar.repo` config key. Use this
+	option after each upgrade to get the latest features.
+
+--maintenance=(enable|disable|keep)::
+	By default, Scalar configures the enlistment to use Git's
+	background maintenance feature; this is the same as using the
+	`enable` value for this option. Use the	`disable` value to
+	remove each considered enlistment from background maintenance.
+	Use `keep' to leave the background maintenance configuration
+	untouched for these repositories.
 
 Diagnose
 ~~~~~~~~
diff --git a/Documentation/technical/bundle-uri.adoc b/Documentation/technical/bundle-uri.adoc
index 91d3a13..12283fa 100644
--- a/Documentation/technical/bundle-uri.adoc
+++ b/Documentation/technical/bundle-uri.adoc
@@ -232,13 +232,13 @@
    are present in the client repository. If some are missing, then the
    client delays unbundling until other bundles have been unbundled,
    making those OIDs present. When all required OIDs are present, the
-   client unbundles that data using a refspec. The default refspec is
-   `+refs/heads/*:refs/bundles/*`, but this can be configured. These refs
-   are stored so that later `git fetch` negotiations can communicate each
-   bundled ref as a `have`, reducing the size of the fetch over the Git
-   protocol. To allow pruning refs from this ref namespace, Git may
-   introduce a numbered namespace (such as `refs/bundles/<i>/*`) such that
-   stale bundle refs can be deleted.
+   client unbundles that data using a refspec. The refspec used is
+   `+refs/*:refs/bundles/*`. These refs are stored so that later
+   `git fetch` negotiations can communicate each bundled ref as a `have`,
+   reducing the size of the fetch over the Git protocol. To allow pruning
+   refs from this ref namespace, Git may introduce a numbered namespace
+   (such as `refs/bundles/<i>/*`) such that stale bundle refs can be
+   deleted.
 
 3. If the file is instead a bundle list, then the client inspects the
    `bundle.mode` to see if the list is of the `all` or `any` form.
diff --git a/Documentation/technical/sparse-checkout.adoc b/Documentation/technical/sparse-checkout.adoc
index dc2e763..8202172 100644
--- a/Documentation/technical/sparse-checkout.adoc
+++ b/Documentation/technical/sparse-checkout.adoc
@@ -66,7 +66,7 @@
 	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").
 
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index b981598..208e91a 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-DEF_VER=v2.49.GIT
+DEF_VER=v2.50.0-rc2
 
 LF='
 '
diff --git a/Makefile b/Makefile
index 39b7c15..70d1543 100644
--- a/Makefile
+++ b/Makefile
@@ -615,6 +615,7 @@
 bindir = $(prefix)/bin
 mandir = $(prefix)/share/man
 infodir = $(prefix)/share/info
+bash_completion_dir = $(prefix)/share/bash-completion/completions
 gitexecdir = libexec/git-core
 mergetoolsdir = $(gitexecdir)/mergetools
 sharedir = $(prefix)/share
@@ -818,6 +819,7 @@
 TEST_BUILTINS_OBJS += test-mktemp.o
 TEST_BUILTINS_OBJS += test-name-hash.o
 TEST_BUILTINS_OBJS += test-online-cpus.o
+TEST_BUILTINS_OBJS += test-pack-deltas.o
 TEST_BUILTINS_OBJS += test-pack-mtimes.o
 TEST_BUILTINS_OBJS += test-parse-options.o
 TEST_BUILTINS_OBJS += test-parse-pathspec-file.o
@@ -857,6 +859,7 @@
 TEST_BUILTINS_OBJS += test-windows-named-pipe.o
 TEST_BUILTINS_OBJS += test-write-cache.o
 TEST_BUILTINS_OBJS += test-xml-encode.o
+TEST_BUILTINS_OBJS += test-zlib.o
 
 # Do not add more tests here unless they have extra dependencies. Add
 # them in TEST_BUILTINS_OBJS above.
@@ -1377,10 +1380,10 @@
 UNIT_TEST_PROGRAMS += t-reftable-block
 UNIT_TEST_PROGRAMS += t-reftable-merged
 UNIT_TEST_PROGRAMS += t-reftable-pq
-UNIT_TEST_PROGRAMS += t-reftable-reader
 UNIT_TEST_PROGRAMS += t-reftable-readwrite
 UNIT_TEST_PROGRAMS += t-reftable-record
 UNIT_TEST_PROGRAMS += t-reftable-stack
+UNIT_TEST_PROGRAMS += t-reftable-table
 UNIT_TEST_PROGS = $(patsubst %,$(UNIT_TEST_BIN)/%$X,$(UNIT_TEST_PROGRAMS))
 UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/test-lib.o
 UNIT_TEST_OBJS += $(UNIT_TEST_DIR)/lib-reftable.o
@@ -2327,6 +2330,7 @@
 mandir_SQ = $(subst ','\'',$(mandir))
 mandir_relative_SQ = $(subst ','\'',$(mandir_relative))
 infodir_relative_SQ = $(subst ','\'',$(infodir_relative))
+bash_completion_dir_SQ = $(subst ','\'',$(bash_completion_dir))
 perllibdir_SQ = $(subst ','\'',$(perllibdir))
 localedir_SQ = $(subst ','\'',$(localedir))
 localedir_relative_SQ = $(subst ','\'',$(localedir_relative))
@@ -2737,10 +2741,10 @@
 REFTABLE_OBJS += reftable/iter.o
 REFTABLE_OBJS += reftable/merged.o
 REFTABLE_OBJS += reftable/pq.o
-REFTABLE_OBJS += reftable/reader.o
 REFTABLE_OBJS += reftable/record.o
 REFTABLE_OBJS += reftable/stack.o
 REFTABLE_OBJS += reftable/system.o
+REFTABLE_OBJS += reftable/table.o
 REFTABLE_OBJS += reftable/tree.o
 REFTABLE_OBJS += reftable/writer.o
 
@@ -2802,7 +2806,7 @@
 compdb_dir = compile_commands
 
 ifeq ($(GENERATE_COMPILATION_DATABASE),yes)
-missing_compdb_dir = $(compdb_dir)
+missing_compdb_dir = $(filter-out $(wildcard $(compdb_dir)), $(compdb_dir))
 $(missing_compdb_dir):
 	@mkdir -p $@
 
@@ -3332,8 +3336,10 @@
 $(HCO): %.hco: %.hcc $(GENERATED_H) FORCE
 	$(QUIET_HDR)$(CC) $(ALL_CFLAGS) -o /dev/null -c -xc $<
 
-.PHONY: hdr-check $(HCO)
+# TODO: deprecate 'hdr-check' in lieu of 'check-headers' in Git 2.51+
+.PHONY: hdr-check check-headers $(HCO)
 hdr-check: $(HCO)
+check-headers: hdr-check
 
 .PHONY: style
 style:
@@ -3571,6 +3577,10 @@
 ifneq (,$X)
 	$(foreach p,$(patsubst %$X,%,$(filter %$X,$(ALL_COMMANDS_TO_INSTALL) $(OTHER_PROGRAMS))), test '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p' -ef '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p$X' || $(RM) '$(DESTDIR_SQ)$(gitexec_instdir_SQ)/$p';)
 endif
+ifndef NO_BASH_COMPLETION
+	$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bash_completion_dir_SQ)' && \
+	$(INSTALL) -m 644 contrib/completion/git-completion.bash '$(DESTDIR_SQ)$(bash_completion_dir_SQ)/git'
+endif
 
 	bindir=$$(cd '$(DESTDIR_SQ)$(bindir_SQ)' && pwd) && \
 	execdir=$$(cd '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' && pwd) && \
diff --git a/apply.c b/apply.c
index 381d2e3..8bbe6ed 100644
--- a/apply.c
+++ b/apply.c
@@ -2219,7 +2219,7 @@ static void reverse_patches(struct patch *p)
 		struct fragment *frag = p->fragments;
 
 		SWAP(p->new_name, p->old_name);
-		if (p->new_mode)
+		if (p->new_mode || p->is_delete)
 			SWAP(p->new_mode, p->old_mode);
 		SWAP(p->is_new, p->is_delete);
 		SWAP(p->lines_added, p->lines_deleted);
diff --git a/builtin/add.c b/builtin/add.c
index 78dfb26..7c292ff 100644
--- a/builtin/add.c
+++ b/builtin/add.c
@@ -386,11 +386,14 @@ int cmd_add(int argc,
 	char *ps_matched = NULL;
 	struct lock_file lock_file = LOCK_INIT;
 
-	if (repo)
-		repo_config(repo, add_config, NULL);
+	repo_config(repo, add_config, NULL);
 
 	argc = parse_options(argc, argv, prefix, builtin_add_options,
 			  builtin_add_usage, PARSE_OPT_KEEP_ARGV0);
+
+	prepare_repo_settings(repo);
+	repo->settings.command_requires_full_index = 0;
+
 	if (patch_interactive)
 		add_interactive = 1;
 	if (add_interactive) {
@@ -427,9 +430,6 @@ int cmd_add(int argc,
 	add_new_files = !take_worktree_changes && !refresh_only && !add_renormalize;
 	require_pathspec = !(take_worktree_changes || (0 < addremove_explicit));
 
-	prepare_repo_settings(repo);
-	repo->settings.command_requires_full_index = 0;
-
 	repo_hold_locked_index(repo, &lock_file, LOCK_DIE_ON_ERROR);
 
 	/*
diff --git a/builtin/am.c b/builtin/am.c
index 4afb519..e32a3b4 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -850,8 +850,10 @@ static int split_mail_stgit_series(struct am_state *state, const char **paths,
 	series_dir = dirname(series_dir_buf);
 
 	fp = fopen(*paths, "r");
-	if (!fp)
+	if (!fp) {
+		free(series_dir_buf);
 		return error_errno(_("could not open '%s' for reading"), *paths);
+	}
 
 	while (!strbuf_getline_lf(&sb, fp)) {
 		if (*sb.buf == '#')
diff --git a/builtin/apply.c b/builtin/apply.c
index 84f1863..a1e20c5 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -12,7 +12,7 @@ static const char * const apply_usage[] = {
 int cmd_apply(int argc,
 	      const char **argv,
 	      const char *prefix,
-	      struct repository *repo UNUSED)
+	      struct repository *repo)
 {
 	int force_apply = 0;
 	int options = 0;
@@ -35,6 +35,11 @@ int cmd_apply(int argc,
 				   &state, &force_apply, &options,
 				   apply_usage);
 
+	if (repo) {
+		prepare_repo_settings(repo);
+		repo->settings.command_requires_full_index = 0;
+	}
+
 	if (check_apply_state(&state, force_apply))
 		exit(128);
 
diff --git a/builtin/blame.c b/builtin/blame.c
index 5bf11c2..944952e 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -36,17 +36,17 @@
 #include "tag.h"
 #include "write-or-die.h"
 
-static char blame_usage[] = N_("git blame [<options>] [<rev-opts>] [<rev>] [--] <file>");
-static char annotate_usage[] = N_("git annotate [<options>] [<rev-opts>] [<rev>] [--] <file>");
+static const char blame_usage[] = N_("git blame [<options>] [<rev-opts>] [<rev>] [--] <file>");
+static const char annotate_usage[] = N_("git annotate [<options>] [<rev-opts>] [<rev>] [--] <file>");
 
-static const char *blame_opt_usage[] = {
+static const char *const blame_opt_usage[] = {
 	blame_usage,
 	"",
 	N_("<rev-opts> are documented in git-rev-list(1)"),
 	NULL
 };
 
-static const char *annotate_opt_usage[] = {
+static const char *const annotate_opt_usage[] = {
 	annotate_usage,
 	"",
 	N_("<rev-opts> are documented in git-rev-list(1)"),
@@ -944,7 +944,7 @@ int cmd_blame(int argc,
 	long anchor;
 	long num_lines = 0;
 	const char *str_usage = cmd_is_annotate ? annotate_usage : blame_usage;
-	const char **opt_usage = cmd_is_annotate ? annotate_opt_usage : blame_opt_usage;
+	const char *const *opt_usage = cmd_is_annotate ? annotate_opt_usage : blame_opt_usage;
 
 	setup_default_color_by_age();
 	git_config(git_blame_config, &output_option);
diff --git a/builtin/cat-file.c b/builtin/cat-file.c
index 0e3f10a..67a5ff2 100644
--- a/builtin/cat-file.c
+++ b/builtin/cat-file.c
@@ -100,8 +100,7 @@ static int stream_blob(const struct object_id *oid)
 	return 0;
 }
 
-static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
-			int unknown_type)
+static int cat_one_file(int opt, const char *exp_type, const char *obj_name)
 {
 	int ret;
 	struct object_id oid;
@@ -110,7 +109,6 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
 	unsigned long size;
 	struct object_context obj_context = {0};
 	struct object_info oi = OBJECT_INFO_INIT;
-	struct strbuf sb = STRBUF_INIT;
 	unsigned flags = OBJECT_INFO_LOOKUP_REPLACE;
 	unsigned get_oid_flags =
 		GET_OID_RECORD_PATH |
@@ -121,9 +119,6 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
 	if (!path && opt_cw)
 		get_oid_flags |= GET_OID_REQUIRE_PATH;
 
-	if (unknown_type)
-		flags |= OBJECT_INFO_ALLOW_UNKNOWN_TYPE;
-
 	if (get_oid_with_context(the_repository, obj_name, get_oid_flags, &oid,
 				 &obj_context))
 		die("Not a valid object name %s", obj_name);
@@ -136,16 +131,12 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
 	buf = NULL;
 	switch (opt) {
 	case 't':
-		oi.type_name = &sb;
+		oi.typep = &type;
 		if (oid_object_info_extended(the_repository, &oid, &oi, flags) < 0)
 			die("git cat-file: could not get object info");
-		if (sb.len) {
-			printf("%s\n", sb.buf);
-			strbuf_release(&sb);
-			ret = 0;
-			goto cleanup;
-		}
-		break;
+		printf("%s\n", type_name(type));
+		ret = 0;
+		goto cleanup;
 
 	case 's':
 		oi.sizep = &size;
@@ -169,7 +160,8 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name,
 		goto cleanup;
 
 	case 'e':
-		ret = !repo_has_object_file(the_repository, &oid);
+		ret = !has_object(the_repository, &oid,
+				  HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR);
 		goto cleanup;
 
 	case 'w':
@@ -1037,8 +1029,7 @@ int cmd_cat_file(int argc,
 
 	const char * const builtin_catfile_usage[] = {
 		N_("git cat-file <type> <object>"),
-		N_("git cat-file (-e | -p) <object>"),
-		N_("git cat-file (-t | -s) [--allow-unknown-type] <object>"),
+		N_("git cat-file (-e | -p | -t | -s) <object>"),
 		N_("git cat-file (--textconv | --filters)\n"
 		   "             [<rev>:<path|tree-ish> | --path=<path|tree-ish> <rev>]"),
 		N_("git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]\n"
@@ -1056,8 +1047,8 @@ int cmd_cat_file(int argc,
 		OPT_GROUP(N_("Emit [broken] object attributes")),
 		OPT_CMDMODE('t', NULL, &opt, N_("show object type (one of 'blob', 'tree', 'commit', 'tag', ...)"), 't'),
 		OPT_CMDMODE('s', NULL, &opt, N_("show object size"), 's'),
-		OPT_BOOL(0, "allow-unknown-type", &unknown_type,
-			  N_("allow -s and -t to work with broken/corrupt objects")),
+		OPT_HIDDEN_BOOL(0, "allow-unknown-type", &unknown_type,
+			  N_("historical option -- no-op")),
 		OPT_BOOL(0, "use-mailmap", &use_mailmap, N_("use mail map file")),
 		OPT_ALIAS(0, "mailmap", "use-mailmap"),
 		/* Batch mode */
@@ -1208,10 +1199,7 @@ int cmd_cat_file(int argc,
 		obj_name = argv[1];
 	}
 
-	if (unknown_type && opt != 't' && opt != 's')
-		die("git cat-file --allow-unknown-type: use with -s or -t");
-
-	ret = cat_one_file(opt, exp_type, obj_name, unknown_type);
+	ret = cat_one_file(opt, exp_type, obj_name);
 
 out:
 	list_objects_filter_release(&batch.objects_filter);
diff --git a/builtin/clone.c b/builtin/clone.c
index b6f378c..91b9cd0 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -504,9 +504,7 @@ static void write_followtags(const struct ref *refs, const char *msg)
 			continue;
 		if (ends_with(ref->name, "^{}"))
 			continue;
-		if (!repo_has_object_file_with_flags(the_repository, &ref->old_oid,
-						     OBJECT_INFO_QUICK |
-						     OBJECT_INFO_SKIP_FETCH_OBJECT))
+		if (!has_object(the_repository, &ref->old_oid, 0))
 			continue;
 		refs_update_ref(get_main_ref_store(the_repository), msg,
 				ref->name, &ref->old_oid, NULL, 0,
diff --git a/builtin/commit-graph.c b/builtin/commit-graph.c
index be06d0a..a783a86 100644
--- a/builtin/commit-graph.c
+++ b/builtin/commit-graph.c
@@ -22,12 +22,12 @@
 	   "                       [--changed-paths] [--[no-]max-new-filters <n>] [--[no-]progress]\n" \
 	   "                       <split-options>")
 
-static const char * builtin_commit_graph_verify_usage[] = {
+static const char * const builtin_commit_graph_verify_usage[] = {
 	BUILTIN_COMMIT_GRAPH_VERIFY_USAGE,
 	NULL
 };
 
-static const char * builtin_commit_graph_write_usage[] = {
+static const char * const builtin_commit_graph_write_usage[] = {
 	BUILTIN_COMMIT_GRAPH_WRITE_USAGE,
 	NULL
 };
diff --git a/builtin/commit.c b/builtin/commit.c
index 66bd91f..fba0dde 100644
--- a/builtin/commit.c
+++ b/builtin/commit.c
@@ -1022,7 +1022,7 @@ static int prepare_to_commit(const char *index_file, const char *prefix,
 			for (i = 0; i < the_repository->index->cache_nr; i++)
 				if (ce_intent_to_add(the_repository->index->cache[i]))
 					ita_nr++;
-			committable = the_repository->index->cache_nr - ita_nr > 0;
+			committable = the_repository->index->cache_nr > ita_nr;
 		} else {
 			/*
 			 * Unless the user did explicitly request a submodule
diff --git a/builtin/count-objects.c b/builtin/count-objects.c
index 0bb5360..a88c0c9 100644
--- a/builtin/count-objects.c
+++ b/builtin/count-objects.c
@@ -12,7 +12,7 @@
 #include "parse-options.h"
 #include "quote.h"
 #include "packfile.h"
-#include "object-store.h"
+#include "object-file.h"
 
 static unsigned long garbage;
 static off_t size_garbage;
diff --git a/builtin/difftool.c b/builtin/difftool.c
index f17a55b..a3b64ce 100644
--- a/builtin/difftool.c
+++ b/builtin/difftool.c
@@ -753,8 +753,7 @@ int cmd_difftool(int argc,
 	};
 	struct child_process child = CHILD_PROCESS_INIT;
 
-	if (repo)
-		repo_config(repo, difftool_config, &dt_options);
+	repo_config(repo, difftool_config, &dt_options);
 	dt_options.symlinks = dt_options.has_symlinks;
 
 	argc = parse_options(argc, argv, prefix, builtin_difftool_options,
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
index afacd22..fcf6b00 100644
--- a/builtin/fast-export.c
+++ b/builtin/fast-export.c
@@ -30,7 +30,7 @@
 #include "remote.h"
 #include "blob.h"
 
-static const char *fast_export_usage[] = {
+static const char *const fast_export_usage[] = {
 	N_("git fast-export [<rev-list-opts>]"),
 	NULL
 };
@@ -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/fast-import.c b/builtin/fast-import.c
index c1e198f..b2839c5 100644
--- a/builtin/fast-import.c
+++ b/builtin/fast-import.c
@@ -811,7 +811,8 @@ static char *keep_pack(const char *curr_index_name)
 	int keep_fd;
 
 	odb_pack_name(pack_data->repo, &name, pack_data->hash, "keep");
-	keep_fd = odb_pack_keep(name.buf);
+	keep_fd = safe_create_file_with_leading_directories(pack_data->repo,
+							    name.buf);
 	if (keep_fd < 0)
 		die_errno("cannot create keep file");
 	write_or_die(keep_fd, keep_msg, strlen(keep_msg));
diff --git a/builtin/fetch.c b/builtin/fetch.c
index 5279997..40a0e8d 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -337,7 +337,6 @@ static void find_non_local_tags(const struct ref *refs,
 	struct string_list_item *remote_ref_item;
 	const struct ref *ref;
 	struct refname_hash_entry *item = NULL;
-	const int quick_flags = OBJECT_INFO_QUICK | OBJECT_INFO_SKIP_FETCH_OBJECT;
 
 	refname_hash_init(&existing_refs);
 	refname_hash_init(&remote_refs);
@@ -367,9 +366,9 @@ static void find_non_local_tags(const struct ref *refs,
 		 */
 		if (ends_with(ref->name, "^{}")) {
 			if (item &&
-			    !repo_has_object_file_with_flags(the_repository, &ref->old_oid, quick_flags) &&
+			    !has_object(the_repository, &ref->old_oid, 0) &&
 			    !oidset_contains(&fetch_oids, &ref->old_oid) &&
-			    !repo_has_object_file_with_flags(the_repository, &item->oid, quick_flags) &&
+			    !has_object(the_repository, &item->oid, 0) &&
 			    !oidset_contains(&fetch_oids, &item->oid))
 				clear_item(item);
 			item = NULL;
@@ -383,7 +382,7 @@ static void find_non_local_tags(const struct ref *refs,
 		 * fetch.
 		 */
 		if (item &&
-		    !repo_has_object_file_with_flags(the_repository, &item->oid, quick_flags) &&
+		    !has_object(the_repository, &item->oid, 0) &&
 		    !oidset_contains(&fetch_oids, &item->oid))
 			clear_item(item);
 
@@ -404,7 +403,7 @@ static void find_non_local_tags(const struct ref *refs,
 	 * checked to see if it needs fetching.
 	 */
 	if (item &&
-	    !repo_has_object_file_with_flags(the_repository, &item->oid, quick_flags) &&
+	    !has_object(the_repository, &item->oid, 0) &&
 	    !oidset_contains(&fetch_oids, &item->oid))
 		clear_item(item);
 
@@ -911,7 +910,8 @@ static int update_local_ref(struct ref *ref,
 	struct commit *current = NULL, *updated;
 	int fast_forward = 0;
 
-	if (!repo_has_object_file(the_repository, &ref->new_oid))
+	if (!has_object(the_repository, &ref->new_oid,
+			HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 		die(_("object %s not found"), oid_to_hex(&ref->new_oid));
 
 	if (oideq(&ref->old_oid, &ref->new_oid)) {
@@ -1330,8 +1330,7 @@ static int check_exist_and_connected(struct ref *ref_map)
 	 * we need all direct targets to exist.
 	 */
 	for (r = rm; r; r = r->next) {
-		if (!repo_has_object_file_with_flags(the_repository, &r->old_oid,
-						     OBJECT_INFO_SKIP_FETCH_OBJECT))
+		if (!has_object(the_repository, &r->old_oid, HAS_OBJECT_RECHECK_PACKED))
 			return -1;
 	}
 
@@ -1729,7 +1728,7 @@ static int do_fetch(struct transport *transport,
 			if (transport->remote->follow_remote_head != FOLLOW_REMOTE_NEVER)
 				do_set_head = 1;
 		}
-		if (branch_has_merge_config(branch) &&
+		if (branch && branch_has_merge_config(branch) &&
 		    !strcmp(branch->remote_name, transport->remote->name)) {
 			int i;
 			for (i = 0; i < branch->merge_nr; i++) {
@@ -2561,6 +2560,7 @@ int cmd_fetch(int argc,
 		if (server_options.nr)
 			gtransport->server_options = &server_options;
 		result = transport_fetch_refs(gtransport, NULL);
+		gtransport->smart_options->acked_commits = NULL;
 
 		oidset_iter_init(&acked_commits, &iter);
 		while ((oid = oidset_iter_next(&iter)))
diff --git a/builtin/fsck.c b/builtin/fsck.c
index 6cac283..e7d96a9 100644
--- a/builtin/fsck.c
+++ b/builtin/fsck.c
@@ -614,12 +614,11 @@ static void get_default_heads(void)
 struct for_each_loose_cb
 {
 	struct progress *progress;
-	struct strbuf obj_type;
 };
 
-static int fsck_loose(const struct object_id *oid, const char *path, void *data)
+static int fsck_loose(const struct object_id *oid, const char *path,
+		      void *data UNUSED)
 {
-	struct for_each_loose_cb *cb_data = data;
 	struct object *obj;
 	enum object_type type = OBJ_NONE;
 	unsigned long size;
@@ -629,8 +628,6 @@ static int fsck_loose(const struct object_id *oid, const char *path, void *data)
 	struct object_id real_oid = *null_oid(the_hash_algo);
 	int err = 0;
 
-	strbuf_reset(&cb_data->obj_type);
-	oi.type_name = &cb_data->obj_type;
 	oi.sizep = &size;
 	oi.typep = &type;
 
@@ -642,10 +639,6 @@ static int fsck_loose(const struct object_id *oid, const char *path, void *data)
 			err = error(_("%s: object corrupt or missing: %s"),
 				    oid_to_hex(oid), path);
 	}
-	if (type != OBJ_NONE && type < 0)
-		err = error(_("%s: object is of unknown type '%s': %s"),
-			    oid_to_hex(&real_oid), cb_data->obj_type.buf,
-			    path);
 	if (err < 0) {
 		errors_found |= ERROR_OBJECT;
 		free(contents);
@@ -697,7 +690,6 @@ static void fsck_object_dir(const char *path)
 {
 	struct progress *progress = NULL;
 	struct for_each_loose_cb cb_data = {
-		.obj_type = STRBUF_INIT,
 		.progress = progress,
 	};
 
@@ -712,7 +704,6 @@ static void fsck_object_dir(const char *path)
 				      &cb_data);
 	display_progress(progress, 256);
 	stop_progress(&progress);
-	strbuf_release(&cb_data.obj_type);
 }
 
 static int fsck_head_link(const char *head_ref_name,
diff --git a/builtin/gc.c b/builtin/gc.c
index 3393d25..7dc94f2 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -29,7 +29,7 @@
 #include "commit.h"
 #include "commit-graph.h"
 #include "packfile.h"
-#include "object-store.h"
+#include "object-file.h"
 #include "pack.h"
 #include "pack-objects.h"
 #include "path.h"
@@ -516,7 +516,7 @@ static uint64_t total_ram(void)
 			total *= (uint64_t)si.mem_unit;
 		return total;
 	}
-#elif defined(HAVE_BSD_SYSCTL) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM))
+#elif defined(HAVE_BSD_SYSCTL) && (defined(HW_MEMSIZE) || defined(HW_PHYSMEM) || defined(HW_PHYSMEM64))
 	int64_t physical_memory;
 	int mib[2];
 	size_t length;
@@ -524,6 +524,8 @@ static uint64_t total_ram(void)
 	mib[0] = CTL_HW;
 # if defined(HW_MEMSIZE)
 	mib[1] = HW_MEMSIZE;
+# elif defined(HW_PHYSMEM64)
+	mib[1] = HW_PHYSMEM64;
 # else
 	mib[1] = HW_PHYSMEM;
 # endif
@@ -2241,7 +2243,7 @@ static int launchctl_schedule_plist(const char *exec_path, enum schedule_priorit
 
 	case SCHEDULE_DAILY:
 		repeat = "<dict>\n"
-			 "<key>Day</key><integer>%d</integer>\n"
+			 "<key>Weekday</key><integer>%d</integer>\n"
 			 "<key>Hour</key><integer>0</integer>\n"
 			 "<key>Minute</key><integer>%d</integer>\n"
 			 "</dict>\n";
@@ -2252,7 +2254,7 @@ static int launchctl_schedule_plist(const char *exec_path, enum schedule_priorit
 	case SCHEDULE_WEEKLY:
 		strbuf_addf(&plist,
 			    "<dict>\n"
-			    "<key>Day</key><integer>0</integer>\n"
+			    "<key>Weekday</key><integer>0</integer>\n"
 			    "<key>Hour</key><integer>0</integer>\n"
 			    "<key>Minute</key><integer>%d</integer>\n"
 			    "</dict>\n",
diff --git a/builtin/hash-object.c b/builtin/hash-object.c
index cd53fa3..6a99ec2 100644
--- a/builtin/hash-object.c
+++ b/builtin/hash-object.c
@@ -19,49 +19,15 @@
 #include "strbuf.h"
 #include "write-or-die.h"
 
-enum {
-	HASH_OBJECT_CHECK = (1 << 0),
-	HASH_OBJECT_WRITE = (1 << 1),
-};
-
-/*
- * This is to create corrupt objects for debugging and as such it
- * needs to bypass the data conversion performed by, and the type
- * limitation imposed by, index_fd() and its callees.
- */
-static int hash_literally(struct object_id *oid, int fd, const char *type, unsigned flags)
+static void hash_fd(int fd, const char *type, const char *path, unsigned flags)
 {
-	struct strbuf buf = STRBUF_INIT;
-	int ret;
-
-	if (strbuf_read(&buf, fd, 4096) < 0)
-		ret = -1;
-	else
-		ret = write_object_file_literally(buf.buf, buf.len, type, oid,
-						  (flags & HASH_OBJECT_WRITE) ? WRITE_OBJECT_FILE_PERSIST : 0);
-	close(fd);
-	strbuf_release(&buf);
-	return ret;
-}
-
-static void hash_fd(int fd, const char *type, const char *path, unsigned flags,
-		    int literally)
-{
-	unsigned int index_flags = 0;
 	struct stat st;
 	struct object_id oid;
 
-	if (flags & HASH_OBJECT_WRITE)
-		index_flags |= INDEX_WRITE_OBJECT;
-	if (flags & HASH_OBJECT_CHECK)
-		index_flags |= INDEX_FORMAT_CHECK;
-
 	if (fstat(fd, &st) < 0 ||
-	    (literally
-	     ? hash_literally(&oid, fd, type, flags)
-	     : index_fd(the_repository->index, &oid, fd, &st,
-			type_from_string(type), path, index_flags)))
-		die((flags & HASH_OBJECT_WRITE)
+	    index_fd(the_repository->index, &oid, fd, &st,
+		     type_from_string(type), path, flags))
+		die((flags & INDEX_WRITE_OBJECT)
 		    ? "Unable to add %s to database"
 		    : "Unable to hash %s", path);
 	printf("%s\n", oid_to_hex(&oid));
@@ -69,15 +35,14 @@ static void hash_fd(int fd, const char *type, const char *path, unsigned flags,
 }
 
 static void hash_object(const char *path, const char *type, const char *vpath,
-			unsigned flags, int literally)
+			unsigned flags)
 {
 	int fd;
 	fd = xopen(path, O_RDONLY);
-	hash_fd(fd, type, vpath, flags, literally);
+	hash_fd(fd, type, vpath, flags);
 }
 
-static void hash_stdin_paths(const char *type, int no_filters, unsigned flags,
-			     int literally)
+static void hash_stdin_paths(const char *type, int no_filters, unsigned flags)
 {
 	struct strbuf buf = STRBUF_INIT;
 	struct strbuf unquoted = STRBUF_INIT;
@@ -89,8 +54,7 @@ static void hash_stdin_paths(const char *type, int no_filters, unsigned flags,
 				die("line is badly quoted");
 			strbuf_swap(&buf, &unquoted);
 		}
-		hash_object(buf.buf, type, no_filters ? NULL : buf.buf, flags,
-			    literally);
+		hash_object(buf.buf, type, no_filters ? NULL : buf.buf, flags);
 	}
 	strbuf_release(&buf);
 	strbuf_release(&unquoted);
@@ -111,19 +75,20 @@ int cmd_hash_object(int argc,
 	int hashstdin = 0;
 	int stdin_paths = 0;
 	int no_filters = 0;
-	int literally = 0;
 	int nongit = 0;
-	unsigned flags = HASH_OBJECT_CHECK;
+	unsigned flags = INDEX_FORMAT_CHECK;
 	const char *vpath = NULL;
 	char *vpath_free = NULL;
 	const struct option hash_object_options[] = {
 		OPT_STRING('t', NULL, &type, N_("type"), N_("object type")),
 		OPT_BIT('w', NULL, &flags, N_("write the object into the object database"),
-			HASH_OBJECT_WRITE),
+			INDEX_WRITE_OBJECT),
 		OPT_COUNTUP( 0 , "stdin", &hashstdin, N_("read the object from stdin")),
 		OPT_BOOL( 0 , "stdin-paths", &stdin_paths, N_("read file names from stdin")),
 		OPT_BOOL( 0 , "no-filters", &no_filters, N_("store file as is without filters")),
-		OPT_BOOL( 0, "literally", &literally, N_("just hash any random garbage to create corrupt objects for debugging Git")),
+		OPT_NEGBIT( 0, "literally", &flags,
+			    N_("just hash any random garbage to create corrupt objects for debugging Git"),
+			    INDEX_FORMAT_CHECK),
 		OPT_STRING( 0 , "path", &vpath, N_("file"), N_("process file as it were from this path")),
 		OPT_END()
 	};
@@ -133,7 +98,7 @@ int cmd_hash_object(int argc,
 	argc = parse_options(argc, argv, prefix, hash_object_options,
 			     hash_object_usage, 0);
 
-	if (flags & HASH_OBJECT_WRITE)
+	if (flags & INDEX_WRITE_OBJECT)
 		prefix = setup_git_directory();
 	else
 		prefix = setup_git_directory_gently(&nongit);
@@ -169,7 +134,7 @@ int cmd_hash_object(int argc,
 	}
 
 	if (hashstdin)
-		hash_fd(0, type, vpath, flags, literally);
+		hash_fd(0, type, vpath, flags);
 
 	for (i = 0 ; i < argc; i++) {
 		const char *arg = argv[i];
@@ -178,12 +143,12 @@ int cmd_hash_object(int argc,
 		if (prefix)
 			arg = to_free = prefix_filename(prefix, arg);
 		hash_object(arg, type, no_filters ? NULL : vpath ? vpath : arg,
-			    flags, literally);
+			    flags);
 		free(to_free);
 	}
 
 	if (stdin_paths)
-		hash_stdin_paths(type, no_filters, flags, literally);
+		hash_stdin_paths(type, no_filters, flags);
 
 	free(vpath_free);
 
diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index 60a8ee0..bb7925b 100644
--- a/builtin/index-pack.c
+++ b/builtin/index-pack.c
@@ -892,9 +892,8 @@ static void sha1_object(const void *data, struct object_entry *obj_entry,
 
 	if (startup_info->have_repository) {
 		read_lock();
-		collision_test_needed =
-			repo_has_object_file_with_flags(the_repository, oid,
-							OBJECT_INFO_QUICK);
+		collision_test_needed = has_object(the_repository, oid,
+						   HAS_OBJECT_FETCH_PROMISOR);
 		read_unlock();
 	}
 
@@ -1109,8 +1108,8 @@ static void *threaded_second_pass(void *data)
 		set_thread_data(data);
 	for (;;) {
 		struct base_data *parent = NULL;
-		struct object_entry *child_obj;
-		struct base_data *child;
+		struct object_entry *child_obj = NULL;
+		struct base_data *child = NULL;
 
 		counter_lock();
 		display_progress(progress, nr_resolved_deltas);
@@ -1137,15 +1136,18 @@ static void *threaded_second_pass(void *data)
 			parent = list_first_entry(&work_head, struct base_data,
 						  list);
 
-			if (parent->ref_first <= parent->ref_last) {
+			while (parent->ref_first <= parent->ref_last) {
 				int offset = ref_deltas[parent->ref_first++].obj_no;
 				child_obj = objects + offset;
-				if (child_obj->real_type != OBJ_REF_DELTA)
-					die("REF_DELTA at offset %"PRIuMAX" already resolved (duplicate base %s?)",
-					    (uintmax_t) child_obj->idx.offset,
-					    oid_to_hex(&parent->obj->idx.oid));
+				if (child_obj->real_type != OBJ_REF_DELTA) {
+					child_obj = NULL;
+					continue;
+				}
 				child_obj->real_type = parent->obj->real_type;
-			} else {
+				break;
+			}
+
+			if (!child_obj && parent->ofs_first <= parent->ofs_last) {
 				child_obj = objects +
 					ofs_deltas[parent->ofs_first++].obj_no;
 				assert(child_obj->real_type == OBJ_OFS_DELTA);
@@ -1178,29 +1180,32 @@ static void *threaded_second_pass(void *data)
 		}
 		work_unlock();
 
-		if (parent) {
-			child = resolve_delta(child_obj, parent);
-			if (!child->children_remaining)
-				FREE_AND_NULL(child->data);
-		} else {
-			child = make_base(child_obj, NULL);
-			if (child->children_remaining) {
-				/*
-				 * Since this child has its own delta children,
-				 * we will need this data in the future.
-				 * Inflate now so that future iterations will
-				 * have access to this object's data while
-				 * outside the work mutex.
-				 */
-				child->data = get_data_from_pack(child_obj);
-				child->size = child_obj->size;
+		if (child_obj) {
+			if (parent) {
+				child = resolve_delta(child_obj, parent);
+				if (!child->children_remaining)
+					FREE_AND_NULL(child->data);
+			} else{
+				child = make_base(child_obj, NULL);
+				if (child->children_remaining) {
+					/*
+					 * Since this child has its own delta children,
+					 * we will need this data in the future.
+					 * Inflate now so that future iterations will
+					 * have access to this object's data while
+					 * outside the work mutex.
+					 */
+					child->data = get_data_from_pack(child_obj);
+					child->size = child_obj->size;
+				}
 			}
 		}
 
 		work_lock();
 		if (parent)
 			parent->retain_data--;
-		if (child->data) {
+
+		if (child && child->data) {
 			/*
 			 * This child has its own children, so add it to
 			 * work_head.
@@ -1209,7 +1214,7 @@ static void *threaded_second_pass(void *data)
 			base_cache_used += child->size;
 			prune_base_data(NULL);
 			free_base_data(child);
-		} else {
+		} else if (child) {
 			/*
 			 * This child does not have its own children. It may be
 			 * the last descendant of its ancestors; free those
@@ -1565,7 +1570,7 @@ static void write_special_file(const char *suffix, const char *msg,
 	else
 		filename = odb_pack_name(the_repository, &name_buf, hash, suffix);
 
-	fd = odb_pack_keep(filename);
+	fd = safe_create_file_with_leading_directories(the_repository, filename);
 	if (fd < 0) {
 		if (errno != EEXIST)
 			die_errno(_("cannot write %s file '%s'"),
diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c
index 4aafa73..7f41665 100644
--- a/builtin/merge-tree.c
+++ b/builtin/merge-tree.c
@@ -490,6 +490,9 @@ static int real_merge(struct merge_tree_options *o,
 	if (result.clean < 0)
 		die(_("failure to merge"));
 
+	if (o->merge_options.mergeability_only)
+		goto cleanup;
+
 	if (show_messages == -1)
 		show_messages = !result.clean;
 
@@ -522,6 +525,8 @@ static int real_merge(struct merge_tree_options *o,
 	}
 	if (o->use_stdin)
 		putchar(line_termination);
+
+cleanup:
 	merge_finalize(&opt, &result);
 	clear_merge_options(&opt);
 	return !result.clean; /* result.clean < 0 handled above */
@@ -538,6 +543,7 @@ int cmd_merge_tree(int argc,
 	int original_argc;
 	const char *merge_base = NULL;
 	int ret;
+	int quiet = 0;
 
 	const char * const merge_tree_usage[] = {
 		N_("git merge-tree [--write-tree] [<options>] <branch1> <branch2>"),
@@ -552,6 +558,10 @@ int cmd_merge_tree(int argc,
 			    N_("do a trivial merge only"), MODE_TRIVIAL),
 		OPT_BOOL(0, "messages", &o.show_messages,
 			 N_("also show informational/conflict messages")),
+		OPT_BOOL_F(0, "quiet",
+			   &quiet,
+			   N_("suppress all output; only exit status wanted"),
+			   PARSE_OPT_NONEG),
 		OPT_SET_INT('z', NULL, &line_termination,
 			    N_("separate paths with the NUL character"), '\0'),
 		OPT_BOOL_F(0, "name-only",
@@ -583,6 +593,14 @@ int cmd_merge_tree(int argc,
 	argc = parse_options(argc, argv, prefix, mt_options,
 			     merge_tree_usage, PARSE_OPT_STOP_AT_NON_OPTION);
 
+	if (quiet && o.show_messages == -1)
+		o.show_messages = 0;
+	o.merge_options.mergeability_only = quiet;
+	die_for_incompatible_opt2(quiet, "--quiet", o.show_messages, "--messages");
+	die_for_incompatible_opt2(quiet, "--quiet", o.name_only, "--name-only");
+	die_for_incompatible_opt2(quiet, "--quiet", o.use_stdin, "--stdin");
+	die_for_incompatible_opt2(quiet, "--quiet", !line_termination, "-z");
+
 	if (xopts.nr && o.mode == MODE_TRIVIAL)
 		die(_("--trivial-merge is incompatible with all other options"));
 	for (size_t x = 0; x < xopts.nr; x++)
diff --git a/builtin/mktree.c b/builtin/mktree.c
index 7ffe6ee..4b47803 100644
--- a/builtin/mktree.c
+++ b/builtin/mktree.c
@@ -67,7 +67,7 @@ static void write_tree(struct object_id *oid)
 	strbuf_release(&buf);
 }
 
-static const char *mktree_usage[] = {
+static const char *const mktree_usage[] = {
 	"git mktree [-z] [--missing] [--batch]",
 	NULL
 };
diff --git a/builtin/mv.c b/builtin/mv.c
index 54b323f..07548fe 100644
--- a/builtin/mv.c
+++ b/builtin/mv.c
@@ -39,6 +39,13 @@ enum update_mode {
 	INDEX = (1 << 2),
 	SPARSE = (1 << 3),
 	SKIP_WORKTREE_DIR = (1 << 4),
+	/*
+	 * A file gets moved implicitly via a move of one of its parent
+	 * directories. This flag causes us to skip the check that we don't try
+	 * to move a file and any of its parent directories at the same point
+	 * in time.
+	 */
+	MOVE_VIA_PARENT_DIR = (1 << 5),
 };
 
 #define DUP_BASENAME 1
@@ -183,6 +190,21 @@ static void remove_empty_src_dirs(const char **src_dir, size_t src_dir_nr)
 	strbuf_release(&a_src_dir);
 }
 
+struct pathmap_entry {
+	struct hashmap_entry ent;
+	const char *path;
+};
+
+static int pathmap_cmp(const void *cmp_data UNUSED,
+		       const struct hashmap_entry *a,
+		       const struct hashmap_entry *b,
+		       const void *key UNUSED)
+{
+	const struct pathmap_entry *e1 = container_of(a, struct pathmap_entry, ent);
+	const struct pathmap_entry *e2 = container_of(b, struct pathmap_entry, ent);
+	return fspathcmp(e1->path, e2->path);
+}
+
 int cmd_mv(int argc,
 	   const char **argv,
 	   const char *prefix,
@@ -213,6 +235,8 @@ int cmd_mv(int argc,
 	struct cache_entry *ce;
 	struct string_list only_match_skip_worktree = STRING_LIST_INIT_DUP;
 	struct string_list dirty_paths = STRING_LIST_INIT_DUP;
+	struct hashmap moved_dirs = HASHMAP_INIT(pathmap_cmp, NULL);
+	struct strbuf pathbuf = STRBUF_INIT;
 	int ret;
 
 	git_config(git_default_config, NULL);
@@ -331,6 +355,7 @@ int cmd_mv(int argc,
 
 dir_check:
 		if (S_ISDIR(st.st_mode)) {
+			struct pathmap_entry *entry;
 			char *dst_with_slash;
 			size_t dst_with_slash_len;
 			int j, n;
@@ -348,6 +373,11 @@ int cmd_mv(int argc,
 				goto act_on_entry;
 			}
 
+			entry = xmalloc(sizeof(*entry));
+			entry->path = src;
+			hashmap_entry_init(&entry->ent, fspathhash(src));
+			hashmap_add(&moved_dirs, &entry->ent);
+
 			/* last - first >= 1 */
 			modes[i] |= WORKING_DIRECTORY;
 
@@ -368,8 +398,7 @@ int cmd_mv(int argc,
 				strvec_push(&sources, path);
 				strvec_push(&destinations, prefixed_path);
 
-				memset(modes + argc + j, 0, sizeof(enum update_mode));
-				modes[argc + j] |= ce_skip_worktree(ce) ? SPARSE : INDEX;
+				modes[argc + j] = MOVE_VIA_PARENT_DIR | (ce_skip_worktree(ce) ? SPARSE : INDEX);
 				submodule_gitfiles[argc + j] = NULL;
 
 				free(prefixed_path);
@@ -465,6 +494,32 @@ int cmd_mv(int argc,
 		}
 	}
 
+	for (i = 0; i < argc; i++) {
+		const char *slash_pos;
+
+		if (modes[i] & MOVE_VIA_PARENT_DIR)
+			continue;
+
+		strbuf_reset(&pathbuf);
+		strbuf_addstr(&pathbuf, sources.v[i]);
+
+		slash_pos = strrchr(pathbuf.buf, '/');
+		while (slash_pos > pathbuf.buf) {
+			struct pathmap_entry needle;
+
+			strbuf_setlen(&pathbuf, slash_pos - pathbuf.buf);
+
+			needle.path = pathbuf.buf;
+			hashmap_entry_init(&needle.ent, fspathhash(pathbuf.buf));
+
+			if (hashmap_get_entry(&moved_dirs, &needle, ent, NULL))
+				die(_("cannot move both '%s' and its parent directory '%s'"),
+				    sources.v[i], pathbuf.buf);
+
+			slash_pos = strrchr(pathbuf.buf, '/');
+		}
+	}
+
 	if (only_match_skip_worktree.nr) {
 		advise_on_updating_sparse_paths(&only_match_skip_worktree);
 		if (!ignore_errors) {
@@ -507,7 +562,8 @@ int cmd_mv(int argc,
 			continue;
 
 		pos = index_name_pos(the_repository->index, src, strlen(src));
-		assert(pos >= 0);
+		if (pos < 0)
+			BUG("could not find source in index: '%s'", src);
 		if (!(mode & SPARSE) && !lstat(src, &st))
 			sparse_and_dirty = ie_modified(the_repository->index,
 						       the_repository->index->cache[pos],
@@ -589,6 +645,8 @@ int cmd_mv(int argc,
 	strvec_clear(&dest_paths);
 	strvec_clear(&destinations);
 	strvec_clear(&submodule_gitfiles_to_free);
+	hashmap_clear_and_free(&moved_dirs, struct pathmap_entry, ent);
+	strbuf_release(&pathbuf);
 	free(submodule_gitfiles);
 	free(modes);
 	return ret;
diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
index 72ebe13..8b33edc 100644
--- a/builtin/pack-objects.c
+++ b/builtin/pack-objects.c
@@ -183,7 +183,7 @@ static inline void oe_set_delta_size(struct packing_data *pack,
 #define SET_DELTA_CHILD(obj, val) oe_set_delta_child(&to_pack, obj, val)
 #define SET_DELTA_SIBLING(obj, val) oe_set_delta_sibling(&to_pack, obj, val)
 
-static const char *pack_usage[] = {
+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>]"),
 	NULL
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index be31487..a317d6c 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -81,6 +81,7 @@ static int prefer_ofs_delta = 1;
 static int auto_update_server_info;
 static int auto_gc = 1;
 static int reject_thin;
+static int skip_connectivity_check;
 static int stateless_rpc;
 static const char *service_dir;
 static const char *head_name;
@@ -1506,7 +1507,9 @@ static const char *update(struct command *cmd, struct shallow_info *si)
 		}
 	}
 
-	if (!is_null_oid(new_oid) && !repo_has_object_file(the_repository, new_oid)) {
+	if (!is_null_oid(new_oid) &&
+	    !has_object(the_repository, new_oid,
+			HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR)) {
 		error("unpack should have generated %s, "
 		      "but I can't find it!", oid_to_hex(new_oid));
 		ret = "bad pack";
@@ -1936,28 +1939,30 @@ static void execute_commands(struct command *commands,
 		return;
 	}
 
-	if (use_sideband) {
-		memset(&muxer, 0, sizeof(muxer));
-		muxer.proc = copy_to_sideband;
-		muxer.in = -1;
-		if (!start_async(&muxer))
-			err_fd = muxer.in;
-		/* ...else, continue without relaying sideband */
+	if (!skip_connectivity_check) {
+		if (use_sideband) {
+			memset(&muxer, 0, sizeof(muxer));
+			muxer.proc = copy_to_sideband;
+			muxer.in = -1;
+			if (!start_async(&muxer))
+				err_fd = muxer.in;
+			/* ...else, continue without relaying sideband */
+		}
+
+		data.cmds = commands;
+		data.si = si;
+		opt.err_fd = err_fd;
+		opt.progress = err_fd && !quiet;
+		opt.env = tmp_objdir_env(tmp_objdir);
+		opt.exclude_hidden_refs_section = "receive";
+
+		if (check_connected(iterate_receive_command_list, &data, &opt))
+			set_connectivity_errors(commands, si);
+
+		if (use_sideband)
+			finish_async(&muxer);
 	}
 
-	data.cmds = commands;
-	data.si = si;
-	opt.err_fd = err_fd;
-	opt.progress = err_fd && !quiet;
-	opt.env = tmp_objdir_env(tmp_objdir);
-	opt.exclude_hidden_refs_section = "receive";
-
-	if (check_connected(iterate_receive_command_list, &data, &opt))
-		set_connectivity_errors(commands, si);
-
-	if (use_sideband)
-		finish_async(&muxer);
-
 	reject_updates_to_hidden(commands);
 
 	/*
@@ -2517,6 +2522,7 @@ int cmd_receive_pack(int argc,
 
 	struct option options[] = {
 		OPT__QUIET(&quiet, N_("quiet")),
+		OPT_HIDDEN_BOOL(0, "skip-connectivity-check", &skip_connectivity_check, NULL),
 		OPT_HIDDEN_BOOL(0, "stateless-rpc", &stateless_rpc, NULL),
 		OPT_HIDDEN_BOOL(0, "http-backend-info-refs", &advertise_refs, NULL),
 		OPT_ALIAS(0, "advertise-refs", "http-backend-info-refs"),
diff --git a/builtin/remote.c b/builtin/remote.c
index b4baa34..0d6755b 100644
--- a/builtin/remote.c
+++ b/builtin/remote.c
@@ -454,7 +454,8 @@ static int get_push_ref_states(const struct ref *remote_refs,
 			info->status = PUSH_STATUS_UPTODATE;
 		else if (is_null_oid(&ref->old_oid))
 			info->status = PUSH_STATUS_CREATE;
-		else if (repo_has_object_file(the_repository, &ref->old_oid) &&
+		else if (has_object(the_repository, &ref->old_oid,
+				    HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR) &&
 			 ref_newer(&ref->new_oid, &ref->old_oid))
 			info->status = PUSH_STATUS_FASTFORWARD;
 		else
diff --git a/builtin/replay.c b/builtin/replay.c
index 032c172..225cef0 100644
--- a/builtin/replay.c
+++ b/builtin/replay.c
@@ -20,21 +20,22 @@
 #include <oidset.h>
 #include <tree.h>
 
-static const char *short_commit_name(struct commit *commit)
+static const char *short_commit_name(struct repository *repo,
+				     struct commit *commit)
 {
-	return repo_find_unique_abbrev(the_repository, &commit->object.oid,
+	return repo_find_unique_abbrev(repo, &commit->object.oid,
 				       DEFAULT_ABBREV);
 }
 
-static struct commit *peel_committish(const char *name)
+static struct commit *peel_committish(struct repository *repo, const char *name)
 {
 	struct object *obj;
 	struct object_id oid;
 
-	if (repo_get_oid(the_repository, name, &oid))
+	if (repo_get_oid(repo, name, &oid))
 		return NULL;
-	obj = parse_object(the_repository, &oid);
-	return (struct commit *)repo_peel_to_type(the_repository, name, 0, obj,
+	obj = parse_object(repo, &oid);
+	return (struct commit *)repo_peel_to_type(repo, name, 0, obj,
 						  OBJ_COMMIT);
 }
 
@@ -50,7 +51,8 @@ static char *get_author(const char *message)
 	return NULL;
 }
 
-static struct commit *create_commit(struct tree *tree,
+static struct commit *create_commit(struct repository *repo,
+				    struct tree *tree,
 				    struct commit *based_on,
 				    struct commit *parent)
 {
@@ -62,7 +64,7 @@ static struct commit *create_commit(struct tree *tree,
 	struct commit_extra_header *extra = NULL;
 	struct strbuf msg = STRBUF_INIT;
 	const char *out_enc = get_commit_output_encoding();
-	const char *message = repo_logmsg_reencode(the_repository, based_on,
+	const char *message = repo_logmsg_reencode(repo, based_on,
 						   NULL, out_enc);
 	const char *orig_message = NULL;
 	const char *exclude_gpgsig[] = { "gpgsig", NULL };
@@ -79,7 +81,7 @@ static struct commit *create_commit(struct tree *tree,
 		goto out;
 	}
 
-	obj = parse_object(the_repository, &ret);
+	obj = parse_object(repo, &ret);
 
 out:
 	free_commit_extra_headers(extra);
@@ -97,7 +99,8 @@ struct ref_info {
 	int negative_refexprs;
 };
 
-static void get_ref_information(struct rev_cmdline_info *cmd_info,
+static void get_ref_information(struct repository *repo,
+				struct rev_cmdline_info *cmd_info,
 				struct ref_info *ref_info)
 {
 	int i;
@@ -132,14 +135,14 @@ static void get_ref_information(struct rev_cmdline_info *cmd_info,
 
 		if (*refexpr == '^')
 			refexpr++;
-		if (repo_dwim_ref(the_repository, refexpr, strlen(refexpr), &oid, &fullname, 0) != 1)
+		if (repo_dwim_ref(repo, refexpr, strlen(refexpr), &oid, &fullname, 0) != 1)
 			can_uniquely_dwim = 0;
 
 		if (e->flags & BOTTOM) {
 			if (can_uniquely_dwim)
 				strset_add(&ref_info->negative_refs, fullname);
 			if (!ref_info->negative_refexprs)
-				ref_info->onto = lookup_commit_reference_gently(the_repository,
+				ref_info->onto = lookup_commit_reference_gently(repo,
 										&e->item->oid, 1);
 			ref_info->negative_refexprs++;
 		} else {
@@ -152,7 +155,8 @@ static void get_ref_information(struct rev_cmdline_info *cmd_info,
 	}
 }
 
-static void determine_replay_mode(struct rev_cmdline_info *cmd_info,
+static void determine_replay_mode(struct repository *repo,
+				  struct rev_cmdline_info *cmd_info,
 				  const char *onto_name,
 				  char **advance_name,
 				  struct commit **onto,
@@ -160,14 +164,14 @@ static void determine_replay_mode(struct rev_cmdline_info *cmd_info,
 {
 	struct ref_info rinfo;
 
-	get_ref_information(cmd_info, &rinfo);
+	get_ref_information(repo, cmd_info, &rinfo);
 	if (!rinfo.positive_refexprs)
 		die(_("need some commits to replay"));
 
 	die_for_incompatible_opt2(!!onto_name, "--onto",
 				  !!*advance_name, "--advance");
 	if (onto_name) {
-		*onto = peel_committish(onto_name);
+		*onto = peel_committish(repo, onto_name);
 		if (rinfo.positive_refexprs <
 		    strset_get_size(&rinfo.positive_refs))
 			die(_("all positive revisions given must be references"));
@@ -175,8 +179,8 @@ static void determine_replay_mode(struct rev_cmdline_info *cmd_info,
 		struct object_id oid;
 		char *fullname = NULL;
 
-		*onto = peel_committish(*advance_name);
-		if (repo_dwim_ref(the_repository, *advance_name, strlen(*advance_name),
+		*onto = peel_committish(repo, *advance_name);
+		if (repo_dwim_ref(repo, *advance_name, strlen(*advance_name),
 			     &oid, &fullname, 0) == 1) {
 			free(*advance_name);
 			*advance_name = fullname;
@@ -245,7 +249,8 @@ static struct commit *mapped_commit(kh_oid_map_t *replayed_commits,
 	return kh_value(replayed_commits, pos);
 }
 
-static struct commit *pick_regular_commit(struct commit *pickme,
+static struct commit *pick_regular_commit(struct repository *repo,
+					  struct commit *pickme,
 					  kh_oid_map_t *replayed_commits,
 					  struct commit *onto,
 					  struct merge_options *merge_opt,
@@ -257,12 +262,12 @@ static struct commit *pick_regular_commit(struct commit *pickme,
 	base = pickme->parents->item;
 	replayed_base = mapped_commit(replayed_commits, base, onto);
 
-	result->tree = repo_get_commit_tree(the_repository, replayed_base);
-	pickme_tree = repo_get_commit_tree(the_repository, pickme);
-	base_tree = repo_get_commit_tree(the_repository, base);
+	result->tree = repo_get_commit_tree(repo, replayed_base);
+	pickme_tree = repo_get_commit_tree(repo, pickme);
+	base_tree = repo_get_commit_tree(repo, base);
 
-	merge_opt->branch1 = short_commit_name(replayed_base);
-	merge_opt->branch2 = short_commit_name(pickme);
+	merge_opt->branch1 = short_commit_name(repo, replayed_base);
+	merge_opt->branch2 = short_commit_name(repo, pickme);
 	merge_opt->ancestor = xstrfmt("parent of %s", merge_opt->branch2);
 
 	merge_incore_nonrecursive(merge_opt,
@@ -275,13 +280,13 @@ static struct commit *pick_regular_commit(struct commit *pickme,
 	merge_opt->ancestor = NULL;
 	if (!result->clean)
 		return NULL;
-	return create_commit(result->tree, pickme, replayed_base);
+	return create_commit(repo, result->tree, pickme, replayed_base);
 }
 
 int cmd_replay(int argc,
 	       const char **argv,
 	       const char *prefix,
-	       struct repository *repo UNUSED)
+	       struct repository *repo)
 {
 	const char *advance_name_opt = NULL;
 	char *advance_name = NULL;
@@ -329,7 +334,7 @@ int cmd_replay(int argc,
 		    "--advance", "--contained");
 	advance_name = xstrdup_or_null(advance_name_opt);
 
-	repo_init_revisions(the_repository, &revs, prefix);
+	repo_init_revisions(repo, &revs, prefix);
 
 	/*
 	 * Set desired values for rev walking options here. If they
@@ -380,7 +385,7 @@ int cmd_replay(int argc,
 		revs.simplify_history = 0;
 	}
 
-	determine_replay_mode(&revs.cmdline, onto_name, &advance_name,
+	determine_replay_mode(repo, &revs.cmdline, onto_name, &advance_name,
 			      &onto, &update_refs);
 
 	if (!onto) /* FIXME: Should handle replaying down to root commit */
@@ -391,7 +396,7 @@ int cmd_replay(int argc,
 		goto cleanup;
 	}
 
-	init_basic_merge_options(&merge_opt, the_repository);
+	init_basic_merge_options(&merge_opt, repo);
 	memset(&result, 0, sizeof(result));
 	merge_opt.show_rename_progress = 0;
 	last_commit = onto;
@@ -406,8 +411,8 @@ int cmd_replay(int argc,
 		if (commit->parents->next)
 			die(_("replaying merge commits is not supported yet!"));
 
-		last_commit = pick_regular_commit(commit, replayed_commits, onto,
-						  &merge_opt, &result);
+		last_commit = pick_regular_commit(repo, commit, replayed_commits,
+						  onto, &merge_opt, &result);
 		if (!last_commit)
 			break;
 
diff --git a/builtin/reset.c b/builtin/reset.c
index 73b4537..dc50ffc 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -420,6 +420,9 @@ int cmd_reset(int argc,
 		oidcpy(&oid, &tree->object.oid);
 	}
 
+	prepare_repo_settings(the_repository);
+	the_repository->settings.command_requires_full_index = 0;
+
 	if (patch_mode) {
 		if (reset_type != NONE)
 			die(_("options '%s' and '%s' cannot be used together"), "--patch", "--{hard,mixed,soft}");
@@ -457,9 +460,6 @@ int cmd_reset(int argc,
 	if (intent_to_add && reset_type != MIXED)
 		die(_("the option '%s' requires '%s'"), "-N", "--mixed");
 
-	prepare_repo_settings(the_repository);
-	the_repository->settings.command_requires_full_index = 0;
-
 	if (repo_read_index(the_repository) < 0)
 		die(_("index file corrupt"));
 
diff --git a/builtin/rev-list.c b/builtin/rev-list.c
index c4cd4ed..0984b60 100644
--- a/builtin/rev-list.c
+++ b/builtin/rev-list.c
@@ -924,7 +924,7 @@ int cmd_rev_list(int argc,
 			free((void *)entry->path);
 		}
 
-		oidmap_free(&missing_objects, true);
+		oidmap_clear(&missing_objects, true);
 	}
 
 	stop_progress(&progress);
diff --git a/builtin/show-branch.c b/builtin/show-branch.c
index b549d8c..525b231 100644
--- a/builtin/show-branch.c
+++ b/builtin/show-branch.c
@@ -19,7 +19,7 @@
 #include "date.h"
 #include "wildmatch.h"
 
-static const char* show_branch_usage[] = {
+static const char*const show_branch_usage[] = {
     N_("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"
diff --git a/builtin/show-ref.c b/builtin/show-ref.c
index f81209f..623a52a 100644
--- a/builtin/show-ref.c
+++ b/builtin/show-ref.c
@@ -35,7 +35,8 @@ static void show_one(const struct show_one_options *opts,
 	const char *hex;
 	struct object_id peeled;
 
-	if (!repo_has_object_file(the_repository, oid))
+	if (!has_object(the_repository, oid,
+			HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 		die("git show-ref: bad ref %s (%s)", refname,
 		    oid_to_hex(oid));
 
diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c
index 661be78..e905d5f 100644
--- a/builtin/unpack-objects.c
+++ b/builtin/unpack-objects.c
@@ -449,7 +449,8 @@ static void unpack_delta_entry(enum object_type type, unsigned long delta_size,
 		delta_data = get_data(delta_size);
 		if (!delta_data)
 			return;
-		if (repo_has_object_file(the_repository, &base_oid))
+		if (has_object(the_repository, &base_oid,
+			       HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 			; /* Ok we have this one */
 		else if (resolve_against_held(nr, &base_oid,
 					      delta_data, delta_size))
diff --git a/bulk-checkin.c b/bulk-checkin.c
index c31c31b..678e2ec 100644
--- a/bulk-checkin.c
+++ b/bulk-checkin.c
@@ -130,7 +130,8 @@ static void flush_batch_fsync(void)
 static int already_written(struct bulk_checkin_packfile *state, struct object_id *oid)
 {
 	/* The object may already exist in the repository */
-	if (repo_has_object_file(the_repository, oid))
+	if (has_object(the_repository, oid,
+		       HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 		return 1;
 
 	/* Might want to keep the list sorted */
diff --git a/bundle-uri.c b/bundle-uri.c
index 96d2ba7..9accf15 100644
--- a/bundle-uri.c
+++ b/bundle-uri.c
@@ -403,7 +403,7 @@ static int unbundle_from_file(struct repository *r, const char *file)
 		const char *branch_name;
 		int has_old;
 
-		if (!skip_prefix(refname->string, "refs/heads/", &branch_name))
+		if (!skip_prefix(refname->string, "refs/", &branch_name))
 			continue;
 
 		strbuf_setlen(&bundle_ref, bundle_prefix_len);
@@ -532,11 +532,13 @@ static int fetch_bundles_by_token(struct repository *r,
 	 */
 	if (!repo_config_get_value(r,
 				   "fetch.bundlecreationtoken",
-				   &creationTokenStr) &&
-	    sscanf(creationTokenStr, "%"PRIu64, &maxCreationToken) == 1 &&
-	    bundles.items[0]->creationToken <= maxCreationToken) {
-		free(bundles.items);
-		return 0;
+				   &creationTokenStr)) {
+		if (sscanf(creationTokenStr, "%"PRIu64, &maxCreationToken) != 1)
+			maxCreationToken = 0;
+		if (bundles.items[0]->creationToken <= maxCreationToken) {
+			free(bundles.items);
+			return 0;
+		}
 	}
 
 	/*
diff --git a/cache-tree.c b/cache-tree.c
index c0e1e9e..fa3858e 100644
--- a/cache-tree.c
+++ b/cache-tree.c
@@ -238,7 +238,9 @@ int cache_tree_fully_valid(struct cache_tree *it)
 	int i;
 	if (!it)
 		return 0;
-	if (it->entry_count < 0 || !repo_has_object_file(the_repository, &it->oid))
+	if (it->entry_count < 0 ||
+	    has_object(the_repository, &it->oid,
+		       HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 		return 0;
 	for (i = 0; i < it->subtree_nr; i++) {
 		if (!cache_tree_fully_valid(it->down[i]->cache_tree))
@@ -289,7 +291,9 @@ static int update_one(struct cache_tree *it,
 		}
 	}
 
-	if (0 <= it->entry_count && repo_has_object_file(the_repository, &it->oid))
+	if (0 <= it->entry_count &&
+	    has_object(the_repository, &it->oid,
+		       HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 		return it->entry_count;
 
 	/*
@@ -395,7 +399,8 @@ static int update_one(struct cache_tree *it,
 		ce_missing_ok = mode == S_IFGITLINK || missing_ok ||
 			!must_check_existence(ce);
 		if (is_null_oid(oid) ||
-		    (!ce_missing_ok && !repo_has_object_file(the_repository, oid))) {
+		    (!ce_missing_ok && !has_object(the_repository, oid,
+						   HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))) {
 			strbuf_release(&buffer);
 			if (expected_missing)
 				return -1;
@@ -443,7 +448,7 @@ static int update_one(struct cache_tree *it,
 		struct object_id oid;
 		hash_object_file(the_hash_algo, buffer.buf, buffer.len,
 				 OBJ_TREE, &oid);
-		if (repo_has_object_file_with_flags(the_repository, &oid, OBJECT_INFO_SKIP_FETCH_OBJECT))
+		if (has_object(the_repository, &oid, HAS_OBJECT_RECHECK_PACKED))
 			oidcpy(&it->oid, &oid);
 		else
 			to_invalidate = 1;
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index da19dad..d061a47 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -9,7 +9,7 @@
 
 P4WHENCE=https://cdist2.perforce.com/perforce/r23.2
 LFSWHENCE=https://github.com/github/git-lfs/releases/download/v$LINUX_GIT_LFS_VERSION
-JGITWHENCE=https://repo.eclipse.org/content/groups/releases//org/eclipse/jgit/org.eclipse.jgit.pgm/6.8.0.202311291450-r/org.eclipse.jgit.pgm-6.8.0.202311291450-r.sh
+JGITWHENCE=https://repo1.maven.org/maven2/org/eclipse/jgit/org.eclipse.jgit.pgm/6.8.0.202311291450-r/org.eclipse.jgit.pgm-6.8.0.202311291450-r.sh
 
 # Make sudo a no-op and execute the command directly when running as root.
 # While using sudo would be fine on most platforms when we are root already,
@@ -71,7 +71,6 @@
 		chmod a+x "$CUSTOM_PATH/p4d" "$CUSTOM_PATH/p4" || {
 			rm -f "$CUSTOM_PATH/p4"
 			rm -f "$CUSTOM_PATH/p4d"
-			echo >&2 "P4 download (optional) failed"
 		}
 
 		wget --quiet \
@@ -79,16 +78,12 @@
 		tar -xzf "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz" \
 			-C "$CUSTOM_PATH" --strip-components=1 \
 			"git-lfs-$LINUX_GIT_LFS_VERSION/git-lfs" &&
-		rm "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz" || {
-			rm -f "$CUSTOM_PATH/git-lfs"
-			echo >&2 "LFS download (optional) failed"
-		}
+		rm "git-lfs-linux-amd64-$LINUX_GIT_LFS_VERSION.tar.gz" ||
+		rm -f "$CUSTOM_PATH/git-lfs"
 
 		wget --quiet "$JGITWHENCE" --output-document="$CUSTOM_PATH/jgit" &&
-		chmod a+x "$CUSTOM_PATH/jgit" || {
-			rm -f "$CUSTOM_PATH/jgit"
-			echo >&2 "JGit download (optional) failed"
-		}
+		chmod a+x "$CUSTOM_PATH/jgit" ||
+		rm -f "$CUSTOM_PATH/jgit"
 		;;
 	esac
 	;;
@@ -151,7 +146,7 @@
 	echo "$(tput setaf 6)Perforce Client Version$(tput sgr0)"
 	p4 -V
 else
-	echo >&2 "WARNING: perforce wasn't installed, see above for clues why"
+	echo >&2 "::warning:: perforce wasn't installed, see above for clues why"
 fi
 
 if type git-lfs >/dev/null 2>&1
@@ -159,7 +154,7 @@
 	echo "$(tput setaf 6)Git-LFS Version$(tput sgr0)"
 	git-lfs version
 else
-	echo >&2 "WARNING: git-lfs wasn't installed, see above for clues why"
+	echo >&2 "::warning:: git-lfs wasn't installed, see above for clues why"
 fi
 
 if type jgit >/dev/null 2>&1
@@ -167,7 +162,7 @@
 	echo "$(tput setaf 6)JGit Version$(tput sgr0)"
 	jgit version
 else
-	echo >&2 "WARNING: JGit wasn't installed, see above for clues why"
+	echo >&2 "::warning:: JGit wasn't installed, see above for clues why"
 fi
 
 end_group "Install dependencies"
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
index f99b7db..01823fd 100755
--- a/ci/run-build-and-tests.sh
+++ b/ci/run-build-and-tests.sh
@@ -5,11 +5,6 @@
 
 . ${0%/*}/lib.sh
 
-case "$CI_OS_NAME" in
-windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
-*) ln -s "$cache_dir/.prove" t/.prove;;
-esac
-
 run_tests=t
 
 case "$jobname" in
@@ -56,6 +51,7 @@
 		--warnlevel 2 --werror \
 		--wrap-mode nofallback \
 		-Dfuzzers=true \
+		-Dtest_output_directory="${TEST_OUTPUT_DIRECTORY:-$(pwd)/t}" \
 		$MESONFLAGS
 	group "Build" meson compile -C build --
 	if test -n "$run_tests"
diff --git a/ci/run-static-analysis.sh b/ci/run-static-analysis.sh
index ae714e0..9e9c726 100755
--- a/ci/run-static-analysis.sh
+++ b/ci/run-static-analysis.sh
@@ -26,7 +26,7 @@
 	exit 1
 fi
 
-make hdr-check ||
+make check-headers ||
 exit 1
 
 make check-pot
diff --git a/ci/run-test-slice.sh b/ci/run-test-slice.sh
index e167e64..0444c79 100755
--- a/ci/run-test-slice.sh
+++ b/ci/run-test-slice.sh
@@ -5,11 +5,6 @@
 
 . ${0%/*}/lib.sh
 
-case "$CI_OS_NAME" in
-windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
-*) ln -s "$cache_dir/.prove" t/.prove;;
-esac
-
 group "Run tests" make --quiet -C t T="$(cd t &&
 	./helper/test-tool path-utils slice-tests "$1" "$2" t[0-9]*.sh |
 	tr '\n' ' ')" ||
diff --git a/commit-graph.c b/commit-graph.c
index 6394752..ad3943b 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -222,7 +222,7 @@ static int commit_graph_compatible(struct repository *r)
 
 	if (replace_refs_enabled(r)) {
 		prepare_replace_object(r);
-		if (hashmap_get_size(&r->objects->replace_map->map))
+		if (oidmap_get_size(&r->objects->replace_map))
 			return 0;
 	}
 
@@ -1929,6 +1929,8 @@ static int fill_oids_from_packs(struct write_commit_graph_context *ctx,
 		}
 		if (open_pack_index(p)) {
 			ret = error(_("error opening index for %s"), packname.buf);
+			close_pack(p);
+			free(p);
 			goto cleanup;
 		}
 		for_each_object_in_pack(p, add_packed_commits, ctx,
@@ -2509,7 +2511,17 @@ int write_commit_graph(struct object_directory *odb,
 		       const struct commit_graph_opts *opts)
 {
 	struct repository *r = the_repository;
-	struct write_commit_graph_context *ctx;
+	struct write_commit_graph_context ctx = {
+		.r = r,
+		.odb = odb,
+		.append = flags & COMMIT_GRAPH_WRITE_APPEND ? 1 : 0,
+		.report_progress = flags & COMMIT_GRAPH_WRITE_PROGRESS ? 1 : 0,
+		.split = flags & COMMIT_GRAPH_WRITE_SPLIT ? 1 : 0,
+		.opts = opts,
+		.total_bloom_filter_data_size = 0,
+		.write_generation_data = (get_configured_generation_version(r) == 2),
+		.num_generation_data_overflows = 0,
+	};
 	uint32_t i;
 	int res = 0;
 	int replace = 0;
@@ -2531,17 +2543,6 @@ int write_commit_graph(struct object_directory *odb,
 		return 0;
 	}
 
-	CALLOC_ARRAY(ctx, 1);
-	ctx->r = r;
-	ctx->odb = odb;
-	ctx->append = flags & COMMIT_GRAPH_WRITE_APPEND ? 1 : 0;
-	ctx->report_progress = flags & COMMIT_GRAPH_WRITE_PROGRESS ? 1 : 0;
-	ctx->split = flags & COMMIT_GRAPH_WRITE_SPLIT ? 1 : 0;
-	ctx->opts = opts;
-	ctx->total_bloom_filter_data_size = 0;
-	ctx->write_generation_data = (get_configured_generation_version(r) == 2);
-	ctx->num_generation_data_overflows = 0;
-
 	bloom_settings.hash_version = r->settings.commit_graph_changed_paths_version;
 	bloom_settings.bits_per_entry = git_env_ulong("GIT_TEST_BLOOM_SETTINGS_BITS_PER_ENTRY",
 						      bloom_settings.bits_per_entry);
@@ -2549,14 +2550,14 @@ int write_commit_graph(struct object_directory *odb,
 						  bloom_settings.num_hashes);
 	bloom_settings.max_changed_paths = git_env_ulong("GIT_TEST_BLOOM_SETTINGS_MAX_CHANGED_PATHS",
 							 bloom_settings.max_changed_paths);
-	ctx->bloom_settings = &bloom_settings;
+	ctx.bloom_settings = &bloom_settings;
 
 	init_topo_level_slab(&topo_levels);
-	ctx->topo_levels = &topo_levels;
+	ctx.topo_levels = &topo_levels;
 
-	prepare_commit_graph(ctx->r);
-	if (ctx->r->objects->commit_graph) {
-		struct commit_graph *g = ctx->r->objects->commit_graph;
+	prepare_commit_graph(ctx.r);
+	if (ctx.r->objects->commit_graph) {
+		struct commit_graph *g = ctx.r->objects->commit_graph;
 
 		while (g) {
 			g->topo_levels = &topo_levels;
@@ -2565,15 +2566,15 @@ int write_commit_graph(struct object_directory *odb,
 	}
 
 	if (flags & COMMIT_GRAPH_WRITE_BLOOM_FILTERS)
-		ctx->changed_paths = 1;
+		ctx.changed_paths = 1;
 	if (!(flags & COMMIT_GRAPH_NO_WRITE_BLOOM_FILTERS)) {
 		struct commit_graph *g;
 
-		g = ctx->r->objects->commit_graph;
+		g = ctx.r->objects->commit_graph;
 
 		/* We have changed-paths already. Keep them in the next graph */
 		if (g && g->bloom_filter_settings) {
-			ctx->changed_paths = 1;
+			ctx.changed_paths = 1;
 
 			/* don't propagate the hash_version unless unspecified */
 			if (bloom_settings.hash_version == -1)
@@ -2586,116 +2587,123 @@ int write_commit_graph(struct object_directory *odb,
 
 	bloom_settings.hash_version = bloom_settings.hash_version == 2 ? 2 : 1;
 
-	if (ctx->split) {
-		struct commit_graph *g = ctx->r->objects->commit_graph;
+	if (ctx.split) {
+		struct commit_graph *g = ctx.r->objects->commit_graph;
 
 		while (g) {
-			ctx->num_commit_graphs_before++;
+			ctx.num_commit_graphs_before++;
 			g = g->base_graph;
 		}
 
-		if (ctx->num_commit_graphs_before) {
-			ALLOC_ARRAY(ctx->commit_graph_filenames_before, ctx->num_commit_graphs_before);
-			i = ctx->num_commit_graphs_before;
-			g = ctx->r->objects->commit_graph;
+		if (ctx.num_commit_graphs_before) {
+			ALLOC_ARRAY(ctx.commit_graph_filenames_before, ctx.num_commit_graphs_before);
+			i = ctx.num_commit_graphs_before;
+			g = ctx.r->objects->commit_graph;
 
 			while (g) {
-				ctx->commit_graph_filenames_before[--i] = xstrdup(g->filename);
+				ctx.commit_graph_filenames_before[--i] = xstrdup(g->filename);
 				g = g->base_graph;
 			}
 		}
 
-		if (ctx->opts)
-			replace = ctx->opts->split_flags & COMMIT_GRAPH_SPLIT_REPLACE;
+		if (ctx.opts)
+			replace = ctx.opts->split_flags & COMMIT_GRAPH_SPLIT_REPLACE;
 	}
 
-	ctx->approx_nr_objects = repo_approximate_object_count(the_repository);
+	ctx.approx_nr_objects = repo_approximate_object_count(the_repository);
 
-	if (ctx->append && ctx->r->objects->commit_graph) {
-		struct commit_graph *g = ctx->r->objects->commit_graph;
+	if (ctx.append && ctx.r->objects->commit_graph) {
+		struct commit_graph *g = ctx.r->objects->commit_graph;
 		for (i = 0; i < g->num_commits; i++) {
 			struct object_id oid;
 			oidread(&oid, g->chunk_oid_lookup + st_mult(g->hash_len, i),
 				the_repository->hash_algo);
-			oid_array_append(&ctx->oids, &oid);
+			oid_array_append(&ctx.oids, &oid);
 		}
 	}
 
 	if (pack_indexes) {
-		ctx->order_by_pack = 1;
-		if ((res = fill_oids_from_packs(ctx, pack_indexes)))
+		ctx.order_by_pack = 1;
+		if ((res = fill_oids_from_packs(&ctx, pack_indexes)))
 			goto cleanup;
 	}
 
 	if (commits) {
-		if ((res = fill_oids_from_commits(ctx, commits)))
+		if ((res = fill_oids_from_commits(&ctx, commits)))
 			goto cleanup;
 	}
 
 	if (!pack_indexes && !commits) {
-		ctx->order_by_pack = 1;
-		fill_oids_from_all_packs(ctx);
+		ctx.order_by_pack = 1;
+		fill_oids_from_all_packs(&ctx);
 	}
 
-	close_reachable(ctx);
+	close_reachable(&ctx);
 
-	copy_oids_to_commits(ctx);
+	copy_oids_to_commits(&ctx);
 
-	if (ctx->commits.nr >= GRAPH_EDGE_LAST_MASK) {
+	if (ctx.commits.nr >= GRAPH_EDGE_LAST_MASK) {
 		error(_("too many commits to write graph"));
 		res = -1;
 		goto cleanup;
 	}
 
-	if (!ctx->commits.nr && !replace)
+	if (!ctx.commits.nr && !replace)
 		goto cleanup;
 
-	if (ctx->split) {
-		split_graph_merge_strategy(ctx);
+	if (ctx.split) {
+		split_graph_merge_strategy(&ctx);
 
 		if (!replace)
-			merge_commit_graphs(ctx);
+			merge_commit_graphs(&ctx);
 	} else
-		ctx->num_commit_graphs_after = 1;
+		ctx.num_commit_graphs_after = 1;
 
-	ctx->trust_generation_numbers = validate_mixed_generation_chain(ctx->r->objects->commit_graph);
+	ctx.trust_generation_numbers = validate_mixed_generation_chain(ctx.r->objects->commit_graph);
 
-	compute_topological_levels(ctx);
-	if (ctx->write_generation_data)
-		compute_generation_numbers(ctx);
+	compute_topological_levels(&ctx);
+	if (ctx.write_generation_data)
+		compute_generation_numbers(&ctx);
 
-	if (ctx->changed_paths)
-		compute_bloom_filters(ctx);
+	if (ctx.changed_paths)
+		compute_bloom_filters(&ctx);
 
-	res = write_commit_graph_file(ctx);
+	res = write_commit_graph_file(&ctx);
 
-	if (ctx->changed_paths)
+	if (ctx.changed_paths)
 		deinit_bloom_filters();
 
-	if (ctx->split)
-		mark_commit_graphs(ctx);
+	if (ctx.split)
+		mark_commit_graphs(&ctx);
 
-	expire_commit_graphs(ctx);
+	expire_commit_graphs(&ctx);
 
 cleanup:
-	free(ctx->graph_name);
-	free(ctx->base_graph_name);
-	free(ctx->commits.list);
-	oid_array_clear(&ctx->oids);
+	free(ctx.graph_name);
+	free(ctx.base_graph_name);
+	free(ctx.commits.list);
+	oid_array_clear(&ctx.oids);
 	clear_topo_level_slab(&topo_levels);
 
-	for (i = 0; i < ctx->num_commit_graphs_before; i++)
-		free(ctx->commit_graph_filenames_before[i]);
-	free(ctx->commit_graph_filenames_before);
+	if (ctx.r->objects->commit_graph) {
+		struct commit_graph *g = ctx.r->objects->commit_graph;
 
-	for (i = 0; i < ctx->num_commit_graphs_after; i++) {
-		free(ctx->commit_graph_filenames_after[i]);
-		free(ctx->commit_graph_hash_after[i]);
+		while (g) {
+			g->topo_levels = NULL;
+			g = g->base_graph;
+		}
 	}
-	free(ctx->commit_graph_filenames_after);
-	free(ctx->commit_graph_hash_after);
 
-	free(ctx);
+	for (i = 0; i < ctx.num_commit_graphs_before; i++)
+		free(ctx.commit_graph_filenames_before[i]);
+	free(ctx.commit_graph_filenames_before);
+
+	for (i = 0; i < ctx.num_commit_graphs_after; i++) {
+		free(ctx.commit_graph_filenames_after[i]);
+		free(ctx.commit_graph_hash_after[i]);
+	}
+	free(ctx.commit_graph_filenames_after);
+	free(ctx.commit_graph_hash_after);
 
 	return res;
 }
diff --git a/compat/bswap.h b/compat/bswap.h
index b34054f..9e0f98e 100644
--- a/compat/bswap.h
+++ b/compat/bswap.h
@@ -35,7 +35,19 @@ static inline uint64_t default_bswap64(uint64_t val)
 #undef bswap32
 #undef bswap64
 
-#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+/**
+ * __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__))
 
 #define bswap32 git_bswap32
 static inline uint32_t git_bswap32(uint32_t x)
diff --git a/compat/posix.h b/compat/posix.h
index f4c71f9..067a00f 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/compat/zlib-compat.h b/compat/zlib-compat.h
index 0c60e3a..ac08276 100644
--- a/compat/zlib-compat.h
+++ b/compat/zlib-compat.h
@@ -4,8 +4,8 @@
 #ifdef HAVE_ZLIB_NG
 # include <zlib-ng.h>
 
-# define z_stream zng_stream
-#define gz_header_s zng_gz_header_s
+# define z_stream_s zng_stream_s
+# define gz_header_s zng_gz_header_s
 
 # define crc32(crc, buf, len) zng_crc32(crc, buf, len)
 
diff --git a/compiler-tricks/not-constant.c b/compiler-tricks/not-constant.c
index 1da3ffc..9fb4f27 100644
--- a/compiler-tricks/not-constant.c
+++ b/compiler-tricks/not-constant.c
@@ -1,2 +1,2 @@
 #include <git-compat-util.h>
-int false_but_the_compiler_does_not_know_it_;
+int false_but_the_compiler_does_not_know_it_ = 0;
diff --git a/config.mak.uname b/config.mak.uname
index db22a8f..3e26bb0 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -301,17 +301,14 @@
 	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
@@ -439,7 +436,11 @@
         ifeq (MINGW32,$(MSYSTEM))
 		prefix = /mingw32
         else
-		prefix = /mingw64
+                ifeq (CLANGARM64,$(MSYSTEM))
+			prefix = /clangarm64
+                else
+			prefix = /mingw64
+                endif
         endif
 	# Prepend MSVC 64-bit tool-chain to PATH.
 	#
@@ -492,7 +493,7 @@
 	NO_POSIX_GOODIES = UnfortunatelyYes
 	NATIVE_CRLF = YesPlease
 	DEFAULT_HELP_FORMAT = html
-ifeq (/mingw64,$(subst 32,64,$(prefix)))
+ifeq (/mingw64,$(subst 32,64,$(subst clangarm,mingw,$(prefix))))
 	# Move system config into top-level /etc/
 	ETC_GITCONFIG = ../etc/gitconfig
 	ETC_GITATTRIBUTES = ../etc/gitattributes
@@ -731,6 +732,10 @@
 		prefix = /mingw64
 		HOST_CPU = x86_64
 		BASIC_LDFLAGS += -Wl,--pic-executable,-e,mainCRTStartup
+        else ifeq (CLANGARM64,$(MSYSTEM))
+		prefix = /clangarm64
+		HOST_CPU = aarch64
+		BASIC_LDFLAGS += -Wl,--pic-executable,-e,mainCRTStartup
         else
 		COMPAT_CFLAGS += -D_USE_32BIT_TIME_T
 		BASIC_LDFLAGS += -Wl,--large-address-aware
@@ -745,8 +750,10 @@
 	HAVE_LIBCHARSET_H = YesPlease
 	USE_GETTEXT_SCHEME = fallthrough
 	USE_LIBPCRE = YesPlease
-	USE_NED_ALLOCATOR = YesPlease
-        ifeq (/mingw64,$(subst 32,64,$(prefix)))
+        ifneq (CLANGARM64,$(MSYSTEM))
+		USE_NED_ALLOCATOR = YesPlease
+        endif
+        ifeq (/mingw64,$(subst 32,64,$(subst clangarm,mingw,$(prefix))))
 		# Move system config into top-level /etc/
 		ETC_GITCONFIG = ../etc/gitconfig
 		ETC_GITATTRIBUTES = ../etc/gitattributes
@@ -766,79 +773,3 @@
 	NO_STRCASESTR = YesPlease
 	NO_STRLCPY = YesPlease
 endif
-
-vcxproj:
-	# Require clean work tree
-	git update-index -q --refresh && \
-	git diff-files --quiet && \
-	git diff-index --cached --quiet HEAD --
-
-	# Make .vcxproj files and add them
-	perl contrib/buildsystems/generate -g Vcxproj
-	git add -f git.sln {*,*/lib,t/helper/*}/*.vcxproj
-
-	# Generate the LinkOrCopyBuiltins.targets and LinkOrCopyRemoteHttp.targets file
-	(echo '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">' && \
-	 echo '  <Target Name="CopyBuiltins_AfterBuild" AfterTargets="AfterBuild">' && \
-	 for name in $(BUILT_INS);\
-	 do \
-	   echo '    <Copy SourceFiles="$$(OutDir)\git.exe" DestinationFiles="$$(OutDir)\'"$$name"'" SkipUnchangedFiles="true" UseHardlinksIfPossible="true" />'; \
-	 done && \
-	 echo '  </Target>' && \
-	 echo '</Project>') >git/LinkOrCopyBuiltins.targets
-	(echo '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">' && \
-	 echo '  <Target Name="CopyBuiltins_AfterBuild" AfterTargets="AfterBuild">' && \
-	 for name in $(REMOTE_CURL_ALIASES); \
-	 do \
-	   echo '    <Copy SourceFiles="$$(OutDir)\'"$(REMOTE_CURL_PRIMARY)"'" DestinationFiles="$$(OutDir)\'"$$name"'" SkipUnchangedFiles="true" UseHardlinksIfPossible="true" />'; \
-	 done && \
-	 echo '  </Target>' && \
-	 echo '</Project>') >git-remote-http/LinkOrCopyRemoteHttp.targets
-	git add -f git/LinkOrCopyBuiltins.targets git-remote-http/LinkOrCopyRemoteHttp.targets
-
-	# Add generated headers
-	$(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 $(GENERATED_H)
-	git add -f $(GENERATED_H)
-
-	# Add scripts
-	rm -f perl/perl.mak
-	$(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 $(SCRIPT_LIB) $(SCRIPTS)
-	# Strip out the sane tool path, needed only for building
-	sed -i '/^git_broken_path_fix ".*/d' git-sh-setup
-	git add -f $(SCRIPT_LIB) $(SCRIPTS)
-
-	# Add Perl module
-	$(MAKE) $(LIB_PERL_GEN)
-	git add -f perl/build
-
-	# Add bin-wrappers, for testing
-	rm -rf bin-wrappers/
-	$(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 $(test_bindir_programs)
-	# Ensure that the GIT_EXEC_PATH is a Unix-y one, and that the absolute
-	# path of the repository is not hard-coded (GIT_EXEC_PATH will be set
-	# by test-lib.sh according to the current setup)
-	sed -i -e 's/^\(GIT_EXEC_PATH\)=.*/test -n "$${\1##*:*}" ||\
-			\1="$$(cygpath -u "$$\1")"/' \
-		-e "s|'$$(pwd)|\"\$$GIT_EXEC_PATH\"'|g" bin-wrappers/*
-	# Ensure that test-* helpers find the .dll files copied to top-level
-	sed -i 's|^PATH=.*|&:"$$GIT_EXEC_PATH"|' bin-wrappers/test-*
-	# We do not want to force hard-linking builtins
-	sed -i 's|\(git\)-\([-a-z]*\)\.exe"|\1.exe" \2|g' \
-		bin-wrappers/git-{receive-pack,upload-archive}
-	git add -f $(test_bindir_programs)
-
-	# Add templates
-	$(MAKE) -C templates
-	git add -f templates/boilerplates.made templates/blt/
-
-	# Add the translated messages
-	make MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 $(MOFILES)
-	git add -f $(MOFILES)
-
-	# Add build options
-	$(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 GIT-BUILD-OPTIONS
-	git add -f GIT-BUILD-OPTIONS
-
-	# Commit the whole shebang
-	git commit -m "Generate Visual Studio solution" \
-		-m "Auto-generated by \`$(MAKE)$(MAKEFLAGS) $@\`"
diff --git a/configure.ac b/configure.ac
index d7e0503..f6caab9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1069,9 +1069,28 @@
 
 #
 # Define HAVE_SYSINFO=YesPlease if sysinfo is available.
-GIT_CHECK_FUNC(sysinfo,
-	[HAVE_SYSINFO=YesPlease],
-	[HAVE_SYSINFO=])
+#
+AC_DEFUN([HAVE_SYSINFO_SRC], [
+AC_LANG_PROGRAM([[
+#include <stdint.h>
+#include <sys/sysinfo.h>
+]], [[
+struct sysinfo si;
+uint64_t t = 0;
+if (!sysinfo(&si)) {
+	t = si.totalram;
+	if (si.mem_unit > 1)
+		t *= (uint64_t)si.mem_unit;
+}
+return t;
+]])])
+
+AC_MSG_CHECKING([for sysinfo])
+AC_COMPILE_IFELSE([HAVE_SYSINFO_SRC],
+	[AC_MSG_RESULT([yes])
+	HAVE_SYSINFO=YesPlease],
+	[AC_MSG_RESULT([no])
+	HAVE_SYSINFO=])
 GIT_CONF_SUBST([HAVE_SYSINFO])
 
 #
diff --git a/contrib/buildsystems/Generators.pm b/contrib/buildsystems/Generators.pm
deleted file mode 100644
index aa4cbaa..0000000
--- a/contrib/buildsystems/Generators.pm
+++ /dev/null
@@ -1,42 +0,0 @@
-package Generators;
-require Exporter;
-
-use strict;
-use File::Basename;
-no strict 'refs';
-use vars qw($VERSION @AVAILABLE);
-
-our $VERSION = '1.00';
-our(@ISA, @EXPORT, @EXPORT_OK, @AVAILABLE);
-@ISA = qw(Exporter);
-
-BEGIN {
-    local(*D);
-    my $me = $INC{"Generators.pm"};
-    die "Couldn't find myself in \@INC, which is required to load the generators!" if ("$me" eq "");
-    $me = dirname($me);
-    if (opendir(D,"$me/Generators")) {
-        foreach my $gen (readdir(D)) {
-            next unless ($gen  =~ /\.pm$/);
-            require "${me}/Generators/$gen";
-            $gen =~ s,\.pm,,;
-            push(@AVAILABLE, $gen);
-        }
-        closedir(D);
-        my $gens = join(', ', @AVAILABLE);
-    }
-
-    push @EXPORT_OK, qw(available);
-}
-
-sub available {
-    return @AVAILABLE;
-}
-
-sub generate {
-    my ($gen, $git_dir, $out_dir, $rel_dir, %build_structure) = @_;
-    return eval("Generators::${gen}::generate(\$git_dir, \$out_dir, \$rel_dir, \%build_structure)") if grep(/^$gen$/, @AVAILABLE);
-    die "Generator \"${gen}\" is not available!\nAvailable generators are: @AVAILABLE\n";
-}
-
-1;
diff --git a/contrib/buildsystems/Generators/QMake.pm b/contrib/buildsystems/Generators/QMake.pm
deleted file mode 100644
index ff3b657..0000000
--- a/contrib/buildsystems/Generators/QMake.pm
+++ /dev/null
@@ -1,189 +0,0 @@
-package Generators::QMake;
-require Exporter;
-
-use strict;
-use vars qw($VERSION);
-
-our $VERSION = '1.00';
-our(@ISA, @EXPORT, @EXPORT_OK, @AVAILABLE);
-@ISA = qw(Exporter);
-
-BEGIN {
-    push @EXPORT_OK, qw(generate);
-}
-
-sub generate {
-    my ($git_dir, $out_dir, $rel_dir, %build_structure) = @_;
-
-    my @libs = @{$build_structure{"LIBS"}};
-    foreach (@libs) {
-        createLibProject($_, $git_dir, $out_dir, $rel_dir, %build_structure);
-    }
-
-    my @apps = @{$build_structure{"APPS"}};
-    foreach (@apps) {
-        createAppProject($_, $git_dir, $out_dir, $rel_dir, %build_structure);
-    }
-
-    createGlueProject($git_dir, $out_dir, $rel_dir, %build_structure);
-    return 0;
-}
-
-sub createLibProject {
-    my ($libname, $git_dir, $out_dir, $rel_dir, %build_structure) = @_;
-    print "Generate $libname lib project\n";
-    $rel_dir = "../$rel_dir";
-
-    my $sources = join(" \\\n\t", sort(map("$rel_dir/$_", @{$build_structure{"LIBS_${libname}_SOURCES"}})));
-    my $defines = join(" \\\n\t", sort(@{$build_structure{"LIBS_${libname}_DEFINES"}}));
-    my $includes= join(" \\\n\t", sort(map("$rel_dir/$_", @{$build_structure{"LIBS_${libname}_INCLUDES"}})));
-    my $cflags  = join(" ", sort(@{$build_structure{"LIBS_${libname}_CFLAGS"}}));
-
-    my $cflags_debug = $cflags;
-    $cflags_debug =~ s/-MT/-MTd/;
-    $cflags_debug =~ s/-O.//;
-
-    my $cflags_release = $cflags;
-    $cflags_release =~ s/-MTd/-MT/;
-
-    my @tmp  = @{$build_structure{"LIBS_${libname}_LFLAGS"}};
-    my @tmp2 = ();
-    foreach (@tmp) {
-        if (/^-LTCG/) {
-        } elsif (/^-L/) {
-            $_ =~ s/^-L/-LIBPATH:$rel_dir\//;
-        }
-        push(@tmp2, $_);
-    }
-    my $lflags = join(" ", sort(@tmp));
-
-    my $target = $libname;
-    $target =~ s/\//_/g;
-    $defines =~ s/-D//g;
-    $defines =~ s/"/\\\\"/g;
-    $includes =~ s/-I//g;
-    mkdir "$target" || die "Could not create the directory $target for lib project!\n";
-    open F, ">$target/$target.pro" || die "Could not open $target/$target.pro for writing!\n";
-    print F << "EOM";
-TEMPLATE = lib
-TARGET = $target
-DESTDIR = $rel_dir
-
-CONFIG -= qt
-CONFIG += static
-
-QMAKE_CFLAGS =
-QMAKE_CFLAGS_RELEASE = $cflags_release
-QMAKE_CFLAGS_DEBUG = $cflags_debug
-QMAKE_LIBFLAGS = $lflags
-
-DEFINES += \\
-        $defines
-
-INCLUDEPATH += \\
-        $includes
-
-SOURCES += \\
-        $sources
-EOM
-    close F;
-}
-
-sub createAppProject {
-    my ($appname, $git_dir, $out_dir, $rel_dir, %build_structure) = @_;
-    print "Generate $appname app project\n";
-    $rel_dir = "../$rel_dir";
-
-    my $sources = join(" \\\n\t", sort(map("$rel_dir/$_", @{$build_structure{"APPS_${appname}_SOURCES"}})));
-    my $defines = join(" \\\n\t", sort(@{$build_structure{"APPS_${appname}_DEFINES"}}));
-    my $includes= join(" \\\n\t", sort(map("$rel_dir/$_", @{$build_structure{"APPS_${appname}_INCLUDES"}})));
-    my $cflags  = join(" ", sort(@{$build_structure{"APPS_${appname}_CFLAGS"}}));
-
-    my $cflags_debug = $cflags;
-    $cflags_debug =~ s/-MT/-MTd/;
-    $cflags_debug =~ s/-O.//;
-
-    my $cflags_release = $cflags;
-    $cflags_release =~ s/-MTd/-MT/;
-
-    my $libs;
-    foreach (sort(@{$build_structure{"APPS_${appname}_LIBS"}})) {
-        $_ =~ s/\//_/g;
-        $libs .= " $_";
-    }
-    my @tmp  = @{$build_structure{"APPS_${appname}_LFLAGS"}};
-    my @tmp2 = ();
-    foreach (@tmp) {
-        # next if ($_ eq "-NODEFAULTLIB:MSVCRT.lib");
-        if (/^-LTCG/) {
-        } elsif (/^-L/) {
-            $_ =~ s/^-L/-LIBPATH:$rel_dir\//;
-        }
-        push(@tmp2, $_);
-    }
-    my $lflags = join(" ", sort(@tmp));
-
-    my $target = $appname;
-    $target =~ s/\.exe//;
-    $target =~ s/\//_/g;
-    $defines =~ s/-D//g;
-    $defines =~ s/"/\\\\"/g;
-    $includes =~ s/-I//g;
-    mkdir "$target" || die "Could not create the directory $target for app project!\n";
-    open F, ">$target/$target.pro" || die "Could not open $target/$target.pro for writing!\n";
-    print F << "EOM";
-TEMPLATE = app
-TARGET = $target
-DESTDIR = $rel_dir
-
-CONFIG -= qt embed_manifest_exe
-CONFIG += console
-
-QMAKE_CFLAGS =
-QMAKE_CFLAGS_RELEASE = $cflags_release
-QMAKE_CFLAGS_DEBUG = $cflags_debug
-QMAKE_LFLAGS = $lflags
-LIBS   = $libs
-
-DEFINES += \\
-        $defines
-
-INCLUDEPATH += \\
-        $includes
-
-win32:QMAKE_LFLAGS += -LIBPATH:$rel_dir
-else: QMAKE_LFLAGS += -L$rel_dir
-
-SOURCES += \\
-        $sources
-EOM
-    close F;
-}
-
-sub createGlueProject {
-    my ($git_dir, $out_dir, $rel_dir, %build_structure) = @_;
-    my $libs = join(" \\ \n", map("\t$_|$_.pro", @{$build_structure{"LIBS"}}));
-    my $apps = join(" \\ \n", map("\t$_|$_.pro", @{$build_structure{"APPS"}}));
-    $libs =~ s/\.a//g;
-    $libs =~ s/\//_/g;
-    $libs =~ s/\|/\//g;
-    $apps =~ s/\.exe//g;
-    $apps =~ s/\//_/g;
-    $apps =~ s/\|/\//g;
-
-    my $filename = $out_dir;
-    $filename =~ s/.*\/([^\/]+)$/$1/;
-    $filename =~ s/\/$//;
-    print "Generate glue project $filename.pro\n";
-    open F, ">$filename.pro" || die "Could not open $filename.pro for writing!\n";
-    print F << "EOM";
-TEMPLATE = subdirs
-CONFIG += ordered
-SUBDIRS += \\
-$libs \\
-$apps
-EOM
-    close F;
-}
-
-1;
diff --git a/contrib/buildsystems/Generators/Vcproj.pm b/contrib/buildsystems/Generators/Vcproj.pm
deleted file mode 100644
index 737647e..0000000
--- a/contrib/buildsystems/Generators/Vcproj.pm
+++ /dev/null
@@ -1,579 +0,0 @@
-package Generators::Vcproj;
-require Exporter;
-
-use strict;
-use vars qw($VERSION);
-use Digest::SHA qw(sha256_hex);
-
-our $VERSION = '1.00';
-our(@ISA, @EXPORT, @EXPORT_OK, @AVAILABLE);
-@ISA = qw(Exporter);
-
-BEGIN {
-    push @EXPORT_OK, qw(generate);
-}
-
-sub generate_guid ($) {
-    my $hex = sha256_hex($_[0]);
-    $hex =~ s/^(.{8})(.{4})(.{4})(.{4})(.{12}).*/{$1-$2-$3-$4-$5}/;
-    $hex =~ tr/a-z/A-Z/;
-    return $hex;
-}
-
-sub generate {
-    my ($git_dir, $out_dir, $rel_dir, %build_structure) = @_;
-    my @libs = @{$build_structure{"LIBS"}};
-    foreach (@libs) {
-        createLibProject($_, $git_dir, $out_dir, $rel_dir, \%build_structure);
-    }
-
-    my @apps = @{$build_structure{"APPS"}};
-    foreach (@apps) {
-        createAppProject($_, $git_dir, $out_dir, $rel_dir, \%build_structure);
-    }
-
-    createGlueProject($git_dir, $out_dir, $rel_dir, %build_structure);
-    return 0;
-}
-
-sub createLibProject {
-    my ($libname, $git_dir, $out_dir, $rel_dir, $build_structure) = @_;
-    print "Generate $libname vcproj lib project\n";
-    $rel_dir = "..\\$rel_dir";
-    $rel_dir =~ s/\//\\/g;
-
-    my $target = $libname;
-    $target =~ s/\//_/g;
-    $target =~ s/\.a//;
-
-    my $uuid = generate_guid($libname);
-    $$build_structure{"LIBS_${target}_GUID"} = $uuid;
-
-    my @srcs = sort(map("$rel_dir\\$_", @{$$build_structure{"LIBS_${libname}_SOURCES"}}));
-    my @sources;
-    foreach (@srcs) {
-        $_ =~ s/\//\\/g;
-        push(@sources, $_);
-    }
-    my $defines = join(",", sort(@{$$build_structure{"LIBS_${libname}_DEFINES"}}));
-    my $includes= join(";", sort(map("&quot;$rel_dir\\$_&quot;", @{$$build_structure{"LIBS_${libname}_INCLUDES"}})));
-    my $cflags  = join(" ", sort(@{$$build_structure{"LIBS_${libname}_CFLAGS"}}));
-    $cflags =~ s/\"/&quot;/g;
-    $cflags =~ s/</&lt;/g;
-    $cflags =~ s/>/&gt;/g;
-
-    my $cflags_debug = $cflags;
-    $cflags_debug =~ s/-MT/-MTd/;
-    $cflags_debug =~ s/-O.//;
-
-    my $cflags_release = $cflags;
-    $cflags_release =~ s/-MTd/-MT/;
-
-    my @tmp  = @{$$build_structure{"LIBS_${libname}_LFLAGS"}};
-    my @tmp2 = ();
-    foreach (@tmp) {
-        if (/^-LTCG/) {
-        } elsif (/^-L/) {
-            $_ =~ s/^-L/-LIBPATH:$rel_dir\//;
-        }
-        push(@tmp2, $_);
-    }
-    my $lflags = join(" ", sort(@tmp));
-
-    $defines =~ s/-D//g;
-    $defines =~ s/\"/\\&quot;/g;
-    $defines =~ s/</&lt;/g;
-    $defines =~ s/>/&gt;/g;
-    $defines =~ s/\'//g;
-    $includes =~ s/-I//g;
-    mkdir "$target" || die "Could not create the directory $target for lib project!\n";
-    open F, ">$target/$target.vcproj" || die "Could not open $target/$target.pro for writing!\n";
-    binmode F, ":crlf";
-    print F << "EOM";
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="$target"
-	ProjectGUID="$uuid">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$rel_dir"
-			ConfigurationType="4"
-			CharacterSet="0"
-			IntermediateDirectory="\$(ProjectDir)\$(ConfigurationName)"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="$cflags_debug"
-				Optimization="0"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="$includes"
-				PreprocessorDefinitions="WIN32,_DEBUG,$defines"
-				MinimalRebuild="true"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="\$(IntDir)\\\$(TargetName).pdb"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$rel_dir"
-			ConfigurationType="4"
-			CharacterSet="0"
-			WholeProgramOptimization="1"
-			IntermediateDirectory="\$(ProjectDir)\$(ConfigurationName)"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="$cflags_release"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="$includes"
-				PreprocessorDefinitions="WIN32,NDEBUG,$defines"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="\$(IntDir)\\\$(TargetName).pdb"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLibrarianTool"
-				SuppressStartupBanner="true"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-EOM
-    foreach(@sources) {
-        print F << "EOM";
-			<File
-				RelativePath="$_"/>
-EOM
-    }
-    print F << "EOM";
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
-EOM
-    close F;
-}
-
-sub createAppProject {
-    my ($appname, $git_dir, $out_dir, $rel_dir, $build_structure) = @_;
-    print "Generate $appname vcproj app project\n";
-    $rel_dir = "..\\$rel_dir";
-    $rel_dir =~ s/\//\\/g;
-
-    my $target = $appname;
-    $target =~ s/\//_/g;
-    $target =~ s/\.exe//;
-
-    my $uuid = generate_guid($appname);
-    $$build_structure{"APPS_${target}_GUID"} = $uuid;
-
-    my @srcs = sort(map("$rel_dir\\$_", @{$$build_structure{"APPS_${appname}_SOURCES"}}));
-    my @sources;
-    foreach (@srcs) {
-        $_ =~ s/\//\\/g;
-        push(@sources, $_);
-    }
-    my $defines = join(",", sort(@{$$build_structure{"APPS_${appname}_DEFINES"}}));
-    my $includes= join(";", sort(map("&quot;$rel_dir\\$_&quot;", @{$$build_structure{"APPS_${appname}_INCLUDES"}})));
-    my $cflags  = join(" ", sort(@{$$build_structure{"APPS_${appname}_CFLAGS"}}));
-    $cflags =~ s/\"/&quot;/g;
-    $cflags =~ s/</&lt;/g;
-    $cflags =~ s/>/&gt;/g;
-
-    my $cflags_debug = $cflags;
-    $cflags_debug =~ s/-MT/-MTd/;
-    $cflags_debug =~ s/-O.//;
-
-    my $cflags_release = $cflags;
-    $cflags_release =~ s/-MTd/-MT/;
-
-    my $libs;
-    foreach (sort(@{$$build_structure{"APPS_${appname}_LIBS"}})) {
-        $_ =~ s/\//_/g;
-        $libs .= " $_";
-    }
-    my @tmp  = @{$$build_structure{"APPS_${appname}_LFLAGS"}};
-    my @tmp2 = ();
-    foreach (@tmp) {
-        if (/^-LTCG/) {
-        } elsif (/^-L/) {
-            $_ =~ s/^-L/-LIBPATH:$rel_dir\//;
-        }
-        push(@tmp2, $_);
-    }
-    my $lflags = join(" ", sort(@tmp)) . " -LIBPATH:$rel_dir";
-
-    $defines =~ s/-D//g;
-    $defines =~ s/\"/\\&quot;/g;
-    $defines =~ s/</&lt;/g;
-    $defines =~ s/>/&gt;/g;
-    $defines =~ s/\'//g;
-    $defines =~ s/\\\\/\\/g;
-    $includes =~ s/-I//g;
-    mkdir "$target" || die "Could not create the directory $target for lib project!\n";
-    open F, ">$target/$target.vcproj" || die "Could not open $target/$target.pro for writing!\n";
-    binmode F, ":crlf";
-    print F << "EOM";
-<?xml version="1.0" encoding = "Windows-1252"?>
-<VisualStudioProject
-	ProjectType="Visual C++"
-	Version="9,00"
-	Name="$target"
-	ProjectGUID="$uuid">
-	<Platforms>
-		<Platform
-			Name="Win32"/>
-	</Platforms>
-	<ToolFiles>
-	</ToolFiles>
-	<Configurations>
-		<Configuration
-			Name="Debug|Win32"
-			OutputDirectory="$rel_dir"
-			ConfigurationType="1"
-			CharacterSet="0"
-			IntermediateDirectory="\$(ProjectDir)\$(ConfigurationName)"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="$cflags_debug"
-				Optimization="0"
-				InlineFunctionExpansion="1"
-				AdditionalIncludeDirectories="$includes"
-				PreprocessorDefinitions="WIN32,_DEBUG,$defines"
-				MinimalRebuild="true"
-				RuntimeLibrary="1"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="\$(IntDir)\\\$(TargetName).pdb"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="$libs"
-				AdditionalOptions="$lflags"
-				LinkIncremental="2"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-		<Configuration
-			Name="Release|Win32"
-			OutputDirectory="$rel_dir"
-			ConfigurationType="1"
-			CharacterSet="0"
-			WholeProgramOptimization="1"
-			IntermediateDirectory="\$(ProjectDir)\$(ConfigurationName)"
-			>
-			<Tool
-				Name="VCPreBuildEventTool"
-			/>
-			<Tool
-				Name="VCCustomBuildTool"
-			/>
-			<Tool
-				Name="VCXMLDataGeneratorTool"
-			/>
-			<Tool
-				Name="VCMIDLTool"
-			/>
-			<Tool
-				Name="VCCLCompilerTool"
-				AdditionalOptions="$cflags_release"
-				Optimization="2"
-				InlineFunctionExpansion="1"
-				EnableIntrinsicFunctions="true"
-				AdditionalIncludeDirectories="$includes"
-				PreprocessorDefinitions="WIN32,NDEBUG,$defines"
-				RuntimeLibrary="0"
-				EnableFunctionLevelLinking="true"
-				UsePrecompiledHeader="0"
-				ProgramDataBaseFileName="\$(IntDir)\\\$(TargetName).pdb"
-				WarningLevel="3"
-				DebugInformationFormat="3"
-			/>
-			<Tool
-				Name="VCManagedResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCResourceCompilerTool"
-			/>
-			<Tool
-				Name="VCPreLinkEventTool"
-			/>
-			<Tool
-				Name="VCLinkerTool"
-				AdditionalDependencies="$libs"
-				AdditionalOptions="$lflags"
-				LinkIncremental="1"
-				GenerateDebugInformation="true"
-				SubSystem="1"
-				TargetMachine="1"
-				OptimizeReferences="2"
-				EnableCOMDATFolding="2"
-			/>
-			<Tool
-				Name="VCALinkTool"
-			/>
-			<Tool
-				Name="VCXDCMakeTool"
-			/>
-			<Tool
-				Name="VCBscMakeTool"
-			/>
-			<Tool
-				Name="VCFxCopTool"
-			/>
-			<Tool
-				Name="VCPostBuildEventTool"
-			/>
-		</Configuration>
-	</Configurations>
-	<Files>
-		<Filter
-			Name="Source Files"
-			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
-EOM
-    foreach(@sources) {
-        print F << "EOM";
-			<File
-				RelativePath="$_"/>
-EOM
-    }
-    print F << "EOM";
-		</Filter>
-	</Files>
-	<Globals>
-	</Globals>
-</VisualStudioProject>
-EOM
-    close F;
-}
-
-sub createGlueProject {
-    my ($git_dir, $out_dir, $rel_dir, %build_structure) = @_;
-    print "Generate solutions file\n";
-    $rel_dir = "..\\$rel_dir";
-    $rel_dir =~ s/\//\\/g;
-    my $SLN_HEAD = "Microsoft Visual Studio Solution File, Format Version 10.00\n# Visual Studio 2008\n";
-    my $SLN_PRE  = "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = ";
-    my $SLN_POST = "\nEndProject\n";
-
-    my @libs = @{$build_structure{"LIBS"}};
-    my @tmp;
-    foreach (@libs) {
-        $_ =~ s/\//_/g;
-        $_ =~ s/\.a//;
-        push(@tmp, $_);
-    }
-    @libs = @tmp;
-
-    my @apps = @{$build_structure{"APPS"}};
-    @tmp = ();
-    foreach (@apps) {
-        $_ =~ s/\//_/g;
-        $_ =~ s/\.exe//;
-        if ($_ eq "git" ) {
-            unshift(@tmp, $_);
-        } else {
-            push(@tmp, $_);
-        }
-    }
-    @apps = @tmp;
-
-    open F, ">git.sln" || die "Could not open git.sln for writing!\n";
-    binmode F, ":crlf";
-    print F "$SLN_HEAD";
-
-    my $uuid_libgit = $build_structure{"LIBS_libgit_GUID"};
-    my $uuid_xdiff_lib = $build_structure{"LIBS_xdiff_lib_GUID"};
-    foreach (@apps) {
-        my $appname = $_;
-        my $uuid = $build_structure{"APPS_${appname}_GUID"};
-        print F "$SLN_PRE";
-        print F "\"${appname}\", \"${appname}\\${appname}.vcproj\", \"${uuid}\"\n";
-        print F "	ProjectSection(ProjectDependencies) = postProject\n";
-        print F "		${uuid_libgit} = ${uuid_libgit}\n";
-        print F "		${uuid_xdiff_lib} = ${uuid_xdiff_lib}\n";
-        print F "	EndProjectSection";
-        print F "$SLN_POST";
-    }
-    foreach (@libs) {
-        my $libname = $_;
-        my $uuid = $build_structure{"LIBS_${libname}_GUID"};
-        print F "$SLN_PRE";
-        print F "\"${libname}\", \"${libname}\\${libname}.vcproj\", \"${uuid}\"";
-        print F "$SLN_POST";
-    }
-
-    print F << "EOM";
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Win32 = Debug|Win32
-		Release|Win32 = Release|Win32
-	EndGlobalSection
-EOM
-    print F << "EOM";
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-EOM
-    foreach (@apps) {
-        my $appname = $_;
-        my $uuid = $build_structure{"APPS_${appname}_GUID"};
-        print F "\t\t${uuid}.Debug|Win32.ActiveCfg = Debug|Win32\n";
-        print F "\t\t${uuid}.Debug|Win32.Build.0 = Debug|Win32\n";
-        print F "\t\t${uuid}.Release|Win32.ActiveCfg = Release|Win32\n";
-        print F "\t\t${uuid}.Release|Win32.Build.0 = Release|Win32\n";
-    }
-    foreach (@libs) {
-        my $libname = $_;
-        my $uuid = $build_structure{"LIBS_${libname}_GUID"};
-        print F "\t\t${uuid}.Debug|Win32.ActiveCfg = Debug|Win32\n";
-        print F "\t\t${uuid}.Debug|Win32.Build.0 = Debug|Win32\n";
-        print F "\t\t${uuid}.Release|Win32.ActiveCfg = Release|Win32\n";
-        print F "\t\t${uuid}.Release|Win32.Build.0 = Release|Win32\n";
-    }
-
-    print F << "EOM";
-	EndGlobalSection
-EndGlobal
-EOM
-    close F;
-}
-
-1;
diff --git a/contrib/buildsystems/Generators/Vcxproj.pm b/contrib/buildsystems/Generators/Vcxproj.pm
deleted file mode 100644
index b2e68a1..0000000
--- a/contrib/buildsystems/Generators/Vcxproj.pm
+++ /dev/null
@@ -1,402 +0,0 @@
-package Generators::Vcxproj;
-require Exporter;
-
-use strict;
-use vars qw($VERSION);
-use Digest::SHA qw(sha256_hex);
-
-our $VERSION = '1.00';
-our(@ISA, @EXPORT, @EXPORT_OK, @AVAILABLE);
-@ISA = qw(Exporter);
-
-BEGIN {
-    push @EXPORT_OK, qw(generate);
-}
-
-sub generate_guid ($) {
-	my $hex = sha256_hex($_[0]);
-	$hex =~ s/^(.{8})(.{4})(.{4})(.{4})(.{12}).*/{$1-$2-$3-$4-$5}/;
-	$hex =~ tr/a-z/A-Z/;
-	return $hex;
-}
-
-sub generate {
-    my ($git_dir, $out_dir, $rel_dir, %build_structure) = @_;
-    my @libs = @{$build_structure{"LIBS"}};
-    foreach (@libs) {
-        createProject($_, $git_dir, $out_dir, $rel_dir, \%build_structure, 1);
-    }
-
-    my @apps = @{$build_structure{"APPS"}};
-    foreach (@apps) {
-        createProject($_, $git_dir, $out_dir, $rel_dir, \%build_structure, 0);
-    }
-
-    createGlueProject($git_dir, $out_dir, $rel_dir, %build_structure);
-    return 0;
-}
-
-sub createProject {
-    my ($name, $git_dir, $out_dir, $rel_dir, $build_structure, $static_library) = @_;
-    my $label = $static_library ? "lib" : "app";
-    my $prefix = $static_library ? "LIBS_" : "APPS_";
-    my $config_type = $static_library ? "StaticLibrary" : "Application";
-    print "Generate $name vcxproj $label project\n";
-    my $cdup = $name;
-    $cdup =~ s/[^\/]+/../g;
-    $cdup =~ s/\//\\/g;
-    $rel_dir = $rel_dir eq "." ? $cdup : "$cdup\\$rel_dir";
-    $rel_dir =~ s/\//\\/g;
-
-    my $target = $name;
-    if ($static_library) {
-      $target =~ s/\.a//;
-    } else {
-      $target =~ s/\.exe//;
-    }
-
-    my $uuid = generate_guid($name);
-    $$build_structure{"$prefix${target}_GUID"} = $uuid;
-    my $vcxproj = $target;
-    $vcxproj =~ s/(.*\/)?(.*)/$&\/$2.vcxproj/;
-    $vcxproj =~ s/([^\/]*)(\/lib)\/(lib.vcxproj)/$1$2\/$1_$3/;
-    $$build_structure{"$prefix${target}_VCXPROJ"} = $vcxproj;
-
-    my @srcs = sort(map("$rel_dir\\$_", @{$$build_structure{"$prefix${name}_SOURCES"}}));
-    my @sources;
-    foreach (@srcs) {
-        $_ =~ s/\//\\/g;
-        push(@sources, $_);
-    }
-    my $defines = join(";", sort(@{$$build_structure{"$prefix${name}_DEFINES"}}));
-    my $includes= join(";", sort(map { s/^-I//; s/\//\\/g; File::Spec->file_name_is_absolute($_) ? $_ : "$rel_dir\\$_" } @{$$build_structure{"$prefix${name}_INCLUDES"}}));
-    my $cflags = join(" ", sort(map { s/^-[GLMOWZ].*//; s/.* .*/"$&"/; $_; } @{$$build_structure{"$prefix${name}_CFLAGS"}}));
-    $cflags =~ s/</&lt;/g;
-    $cflags =~ s/>/&gt;/g;
-
-    my $libs_release = "\n    ";
-    my $libs_debug = "\n    ";
-    if (!$static_library && $name ne 'headless-git') {
-      $libs_release = join(";", sort(grep /^(?!libgit\.lib|xdiff\/lib\.lib|vcs-svn\/lib\.lib|reftable\/libreftable\.lib)/, @{$$build_structure{"$prefix${name}_LIBS"}}));
-      $libs_debug = $libs_release;
-      $libs_debug =~ s/zlib\.lib/zlibd\.lib/g;
-      $libs_debug =~ s/libexpat\.lib/libexpatd\.lib/g;
-      $libs_debug =~ s/libcurl\.lib/libcurl-d\.lib/g;
-    }
-
-    $defines =~ s/-D//g;
-    $defines =~ s/</&lt;/g;
-    $defines =~ s/>/&gt;/g;
-    $defines =~ s/\'//g;
-
-    die "Could not create the directory $target for $label project!\n" unless (-d "$target" || mkdir "$target");
-
-    open F, ">$vcxproj" or die "Could not open $vcxproj for writing!\n";
-    binmode F, ":crlf :utf8";
-    print F chr(0xFEFF);
-    print F << "EOM";
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|Win32">
-      <Configuration>Release</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>$uuid</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <VCPKGArch Condition="'\$(Platform)'=='Win32'">x86-windows</VCPKGArch>
-    <VCPKGArch Condition="'\$(Platform)'!='Win32'">x64-windows</VCPKGArch>
-    <VCPKGArchDirectory>$cdup\\compat\\vcbuild\\vcpkg\\installed\\\$(VCPKGArch)</VCPKGArchDirectory>
-    <VCPKGBinDirectory Condition="'\$(Configuration)'=='Debug'">\$(VCPKGArchDirectory)\\debug\\bin</VCPKGBinDirectory>
-    <VCPKGLibDirectory Condition="'\$(Configuration)'=='Debug'">\$(VCPKGArchDirectory)\\debug\\lib</VCPKGLibDirectory>
-    <VCPKGBinDirectory Condition="'\$(Configuration)'!='Debug'">\$(VCPKGArchDirectory)\\bin</VCPKGBinDirectory>
-    <VCPKGLibDirectory Condition="'\$(Configuration)'!='Debug'">\$(VCPKGArchDirectory)\\lib</VCPKGLibDirectory>
-    <VCPKGIncludeDirectory>\$(VCPKGArchDirectory)\\include</VCPKGIncludeDirectory>
-    <VCPKGLibs Condition="'\$(Configuration)'=='Debug'">$libs_debug</VCPKGLibs>
-    <VCPKGLibs Condition="'\$(Configuration)'!='Debug'">$libs_release</VCPKGLibs>
-  </PropertyGroup>
-  <Import Project="\$(VCTargetsPath)\\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'\$(Configuration)'=='Debug'" Label="Configuration">
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <LinkIncremental>true</LinkIncremental>
-  </PropertyGroup>
-  <PropertyGroup Condition="'\$(Configuration)'=='Release'" Label="Configuration">
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>true</WholeProgramOptimization>
-  </PropertyGroup>
-  <PropertyGroup>
-    <ConfigurationType>$config_type</ConfigurationType>
-    <PlatformToolset>v140</PlatformToolset>
-    <!-- <CharacterSet>UTF-8</CharacterSet> -->
-    <OutDir>..\\</OutDir>
-    <!-- <IntDir>\$(ProjectDir)\$(Configuration)\\</IntDir> -->
-  </PropertyGroup>
-  <Import Project="\$(VCTargetsPath)\\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Label="Shared">
-  </ImportGroup>
-  <ImportGroup Label="PropertySheets">
-    <Import Project="\$(UserRootDir)\\Microsoft.Cpp.\$(Platform).user.props" Condition="exists('\$(UserRootDir)\\Microsoft.Cpp.\$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup>
-    <GenerateManifest>false</GenerateManifest>
-    <EnableManagedIncrementalBuild>true</EnableManagedIncrementalBuild>
-  </PropertyGroup>
-  <ItemDefinitionGroup>
-    <ClCompile>
-      <AdditionalOptions>$cflags %(AdditionalOptions)</AdditionalOptions>
-      <AdditionalIncludeDirectories>$cdup;$cdup\\compat;$cdup\\compat\\regex;$cdup\\compat\\win32;$cdup\\compat\\poll;$cdup\\compat\\vcbuild\\include;\$(VCPKGIncludeDirectory);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <EnableParallelCodeGeneration />
-      <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
-      <PrecompiledHeader />
-      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
-    </ClCompile>
-    <Lib>
-      <SuppressStartupBanner>true</SuppressStartupBanner>
-    </Lib>
-    <Link>
-      <AdditionalLibraryDirectories>\$(VCPKGLibDirectory);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>\$(VCPKGLibs);\$(AdditionalDependencies)</AdditionalDependencies>
-      <AdditionalOptions>invalidcontinue.obj %(AdditionalOptions)</AdditionalOptions>
-      <EntryPointSymbol>wmainCRTStartup</EntryPointSymbol>
-      <ManifestFile>$cdup\\compat\\win32\\git.manifest</ManifestFile>
-      <SubSystem>Console</SubSystem>
-    </Link>
-EOM
-    if ($target eq 'libgit') {
-        print F << "EOM";
-    <PreBuildEvent Condition="!Exists('$cdup\\compat\\vcbuild\\vcpkg\\installed\\\$(VCPKGArch)\\include\\openssl\\ssl.h')">
-      <Message>Initialize VCPKG</Message>
-      <Command>del "$cdup\\compat\\vcbuild\\vcpkg"</Command>
-      <Command>call "$cdup\\compat\\vcbuild\\vcpkg_install.bat"</Command>
-    </PreBuildEvent>
-EOM
-    }
-    print F << "EOM";
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'\$(Platform)'=='Win32'">
-    <Link>
-      <TargetMachine>MachineX86</TargetMachine>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'\$(Configuration)'=='Debug'">
-    <ClCompile>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;$defines;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'\$(Configuration)'=='Release'">
-    <ClCompile>
-      <Optimization>MaxSpeed</Optimization>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;$defines;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
-    </ClCompile>
-    <Link>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <ItemGroup>
-EOM
-    foreach(@sources) {
-        print F << "EOM";
-    <ClCompile Include="$_" />
-EOM
-    }
-    print F << "EOM";
-  </ItemGroup>
-EOM
-    if ((!$static_library || $target =~ 'vcs-svn' || $target =~ 'xdiff') && !($name =~ /headless-git/)) {
-      my $uuid_libgit = $$build_structure{"LIBS_libgit_GUID"};
-      my $uuid_libreftable = $$build_structure{"LIBS_reftable/libreftable_GUID"};
-      my $uuid_xdiff_lib = $$build_structure{"LIBS_xdiff/lib_GUID"};
-
-      print F << "EOM";
-  <ItemGroup>
-    <ProjectReference Include="$cdup\\libgit\\libgit.vcxproj">
-      <Project>$uuid_libgit</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-EOM
-      if (!($name =~ /xdiff|libreftable/)) {
-        print F << "EOM";
-    <ProjectReference Include="$cdup\\reftable\\libreftable\\libreftable.vcxproj">
-      <Project>$uuid_libreftable</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-EOM
-      }
-      if (!($name =~ 'xdiff')) {
-        print F << "EOM";
-    <ProjectReference Include="$cdup\\xdiff\\lib\\xdiff_lib.vcxproj">
-      <Project>$uuid_xdiff_lib</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-EOM
-      }
-      if ($name =~ /(test-(line-buffer|svn-fe)|^git-remote-testsvn)\.exe$/) {
-        my $uuid_vcs_svn_lib = $$build_structure{"LIBS_vcs-svn/lib_GUID"};
-        print F << "EOM";
-    <ProjectReference Include="$cdup\\vcs-svn\\lib\\vcs-svn_lib.vcxproj">
-      <Project>$uuid_vcs_svn_lib</Project>
-      <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
-    </ProjectReference>
-EOM
-      }
-      print F << "EOM";
-  </ItemGroup>
-EOM
-    }
-    print F << "EOM";
-  <Import Project="\$(VCTargetsPath)\\Microsoft.Cpp.targets" />
-EOM
-    if (!$static_library) {
-      print F << "EOM";
-  <Target Name="${target}_AfterBuild" AfterTargets="AfterBuild">
-    <ItemGroup>
-      <DLLsAndPDBs Include="\$(VCPKGBinDirectory)\\*.dll;\$(VCPKGBinDirectory)\\*.pdb" />
-    </ItemGroup>
-    <Copy SourceFiles="@(DLLsAndPDBs)" DestinationFolder="\$(OutDir)" SkipUnchangedFiles="true" UseHardlinksIfPossible="true" />
-    <MakeDir Directories="..\\templates\\blt\\branches" />
-  </Target>
-EOM
-    }
-    if ($target eq 'git') {
-      print F "  <Import Project=\"LinkOrCopyBuiltins.targets\" />\n";
-    }
-    if ($target eq 'git-remote-http') {
-      print F "  <Import Project=\"LinkOrCopyRemoteHttp.targets\" />\n";
-    }
-    print F << "EOM";
-</Project>
-EOM
-    close F;
-}
-
-sub createGlueProject {
-    my ($git_dir, $out_dir, $rel_dir, %build_structure) = @_;
-    print "Generate solutions file\n";
-    $rel_dir = "..\\$rel_dir";
-    $rel_dir =~ s/\//\\/g;
-    my $SLN_HEAD = "Microsoft Visual Studio Solution File, Format Version 11.00\n# Visual Studio 2010\n";
-    my $SLN_PRE  = "Project(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = ";
-    my $SLN_POST = "\nEndProject\n";
-
-    my @libs = @{$build_structure{"LIBS"}};
-    my @tmp;
-    foreach (@libs) {
-        $_ =~ s/\.a//;
-        push(@tmp, $_);
-    }
-    @libs = @tmp;
-
-    my @apps = @{$build_structure{"APPS"}};
-    @tmp = ();
-    foreach (@apps) {
-        $_ =~ s/\.exe//;
-        if ($_ eq "git" ) {
-            unshift(@tmp, $_);
-        } else {
-            push(@tmp, $_);
-        }
-    }
-    @apps = @tmp;
-
-    open F, ">git.sln" || die "Could not open git.sln for writing!\n";
-    binmode F, ":crlf :utf8";
-    print F chr(0xFEFF);
-    print F "$SLN_HEAD";
-
-    foreach (@apps) {
-        my $appname = $_;
-        my $uuid = $build_structure{"APPS_${appname}_GUID"};
-        print F "$SLN_PRE";
-	my $vcxproj = $build_structure{"APPS_${appname}_VCXPROJ"};
-	$vcxproj =~ s/\//\\/g;
-        $appname =~ s/.*\///;
-        print F "\"${appname}\", \"${vcxproj}\", \"${uuid}\"";
-        print F "$SLN_POST";
-    }
-    foreach (@libs) {
-        my $libname = $_;
-        my $uuid = $build_structure{"LIBS_${libname}_GUID"};
-        print F "$SLN_PRE";
-        my $vcxproj = $build_structure{"LIBS_${libname}_VCXPROJ"};
-	$vcxproj =~ s/\//\\/g;
-        $libname =~ s/\//_/g;
-        print F "\"${libname}\", \"${vcxproj}\", \"${uuid}\"";
-        print F "$SLN_POST";
-    }
-
-    print F << "EOM";
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|x64 = Debug|x64
-		Debug|x86 = Debug|x86
-		Release|x64 = Release|x64
-		Release|x86 = Release|x86
-	EndGlobalSection
-EOM
-    print F << "EOM";
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-EOM
-    foreach (@apps) {
-        my $appname = $_;
-        my $uuid = $build_structure{"APPS_${appname}_GUID"};
-        print F "\t\t${uuid}.Debug|x64.ActiveCfg = Debug|x64\n";
-        print F "\t\t${uuid}.Debug|x64.Build.0 = Debug|x64\n";
-        print F "\t\t${uuid}.Debug|x86.ActiveCfg = Debug|Win32\n";
-        print F "\t\t${uuid}.Debug|x86.Build.0 = Debug|Win32\n";
-        print F "\t\t${uuid}.Release|x64.ActiveCfg = Release|x64\n";
-        print F "\t\t${uuid}.Release|x64.Build.0 = Release|x64\n";
-        print F "\t\t${uuid}.Release|x86.ActiveCfg = Release|Win32\n";
-        print F "\t\t${uuid}.Release|x86.Build.0 = Release|Win32\n";
-    }
-    foreach (@libs) {
-        my $libname = $_;
-        my $uuid = $build_structure{"LIBS_${libname}_GUID"};
-        print F "\t\t${uuid}.Debug|x64.ActiveCfg = Debug|x64\n";
-        print F "\t\t${uuid}.Debug|x64.Build.0 = Debug|x64\n";
-        print F "\t\t${uuid}.Debug|x86.ActiveCfg = Debug|Win32\n";
-        print F "\t\t${uuid}.Debug|x86.Build.0 = Debug|Win32\n";
-        print F "\t\t${uuid}.Release|x64.ActiveCfg = Release|x64\n";
-        print F "\t\t${uuid}.Release|x64.Build.0 = Release|x64\n";
-        print F "\t\t${uuid}.Release|x86.ActiveCfg = Release|Win32\n";
-        print F "\t\t${uuid}.Release|x86.Build.0 = Release|Win32\n";
-    }
-
-    print F << "EOM";
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal
-EOM
-    close F;
-}
-
-1;
diff --git a/contrib/buildsystems/engine.pl b/contrib/buildsystems/engine.pl
deleted file mode 100755
index 069be7e..0000000
--- a/contrib/buildsystems/engine.pl
+++ /dev/null
@@ -1,395 +0,0 @@
-#!/usr/bin/perl -w
-######################################################################
-# Do not call this script directly!
-#
-# The generate script ensures that @INC is correct before the engine
-# is executed.
-#
-# Copyright (C) 2009 Marius Storm-Olsen <mstormo@gmail.com>
-######################################################################
-use strict;
-use File::Basename;
-use File::Spec;
-use Cwd;
-use Generators;
-use Text::ParseWords;
-
-my (%build_structure, %compile_options, @makedry);
-my $out_dir = getcwd();
-my $git_dir = $out_dir;
-$git_dir =~ s=\\=/=g;
-$git_dir = dirname($git_dir) while (!-e "$git_dir/git.c" && "$git_dir" ne "");
-die "Couldn't find Git repo" if ("$git_dir" eq "");
-
-my @gens = Generators::available();
-my $gen = "Vcproj";
-
-sub showUsage
-{
-    my $genlist = join(', ', @gens);
-    print << "EOM";
-generate usage:
-  -g <GENERATOR>  --gen <GENERATOR> Specify the buildsystem generator    (default: $gen)
-                                    Available: $genlist
-  -o <PATH>       --out <PATH>      Specify output directory generation  (default: .)
-                  --make-out <PATH> Write the output of GNU Make into a file
-  -i <FILE>       --in <FILE>       Specify input file, instead of running GNU Make
-  -h,-?           --help            This help
-EOM
-    exit 0;
-}
-
-# Parse command-line options
-my $make_out;
-while (@ARGV) {
-    my $arg = shift @ARGV;
-    if ("$arg" eq "-h" || "$arg" eq "--help" || "$arg" eq "-?") {
-	showUsage();
-	exit(0);
-    } elsif("$arg" eq "--out" || "$arg" eq "-o") {
-	$out_dir = shift @ARGV;
-    } elsif("$arg" eq "--make-out") {
-	$make_out = shift @ARGV;
-    } elsif("$arg" eq "--gen" || "$arg" eq "-g") {
-	$gen = shift @ARGV;
-    } elsif("$arg" eq "--in" || "$arg" eq "-i") {
-	my $infile = shift @ARGV;
-        open(F, "<$infile") || die "Couldn't open file $infile";
-        @makedry = <F>;
-        close(F);
-    } else {
-        die "Unknown option: " . $arg;
-    }
-}
-
-# NOT using File::Spec->rel2abs($path, $base) here, as
-# it fails badly for me in the msysgit environment
-$git_dir = File::Spec->rel2abs($git_dir);
-$out_dir = File::Spec->rel2abs($out_dir);
-my $rel_dir = makeOutRel2Git($git_dir, $out_dir);
-
-# Print some information so the user feels informed
-print << "EOM";
------
-Generator: $gen
-Git dir:   $git_dir
-Out dir:   $out_dir
------
-Running GNU Make to figure out build structure...
-EOM
-
-# Pipe a make --dry-run into a variable, if not already loaded from file
-# Capture the make dry stderr to file for review (will be empty for a release build).
-
-my $ErrsFile = "msvc-build-makedryerrors.txt";
-@makedry = `make -C $git_dir -n MSVC=1 SKIP_VCPKG=1 V=1 2>$ErrsFile`
-if !@makedry;
-# test for an empty Errors file and remove it
-unlink $ErrsFile if -f -z $ErrsFile;
-
-if (defined $make_out) {
-    open OUT, ">" . $make_out;
-    print OUT @makedry;
-    close OUT;
-}
-
-# Parse the make output into usable info
-parseMakeOutput();
-
-# Finally, ask the generator to start generating..
-Generators::generate($gen, $git_dir, $out_dir, $rel_dir, %build_structure);
-
-# main flow ends here
-# -------------------------------------------------------------------------------------------------
-
-
-# 1) path: /foo/bar/baz        2) path: /foo/bar/baz   3) path: /foo/bar/baz
-#    base: /foo/bar/baz/temp      base: /foo/bar          base: /tmp
-#    rel:  ..                     rel:  baz               rel:  ../foo/bar/baz
-sub makeOutRel2Git
-{
-    my ($path, $base) = @_;
-    my $rel;
-    if ("$path" eq "$base") {
-        return ".";
-    } elsif ($base =~ /^$path/) {
-        # case 1
-        my $tmp = $base;
-        $tmp =~ s/^$path//;
-        foreach (split('/', $tmp)) {
-            $rel .= "../" if ("$_" ne "");
-        }
-    } elsif ($path =~ /^$base/) {
-        # case 2
-        $rel = $path;
-        $rel =~ s/^$base//;
-        $rel = "./$rel";
-    } else {
-        my $tmp = $base;
-        foreach (split('/', $tmp)) {
-            $rel .= "../" if ("$_" ne "");
-        }
-        $rel .= $path;
-    }
-    $rel =~ s/\/\//\//g; # simplify
-    $rel =~ s/\/$//;     # don't end with /
-    return $rel;
-}
-
-sub parseMakeOutput
-{
-    print "Parsing GNU Make output to figure out build structure...\n";
-    my $line = 0;
-    while (my $text = shift @makedry) {
-        my $ate_next;
-        do {
-            $ate_next = 0;
-            $line++;
-            chomp $text;
-            chop $text if ($text =~ /\r$/);
-            if ($text =~ /\\$/) {
-                $text =~ s/\\$//;
-                $text .= shift @makedry;
-                $ate_next = 1;
-            }
-        } while($ate_next);
-
-        if ($text =~ /^test /) {
-            # options to test (eg -o) may be mistaken for linker options
-            next;
-        }
-
-        if ($text =~ /^(mkdir|msgfmt) /) {
-            # options to the Portable Object translations
-            # the line "mkdir ... && msgfmt ..." contains no linker options
-            next;
-        }
-
-        if($text =~ / -c /) {
-            # compilation
-            handleCompileLine($text, $line);
-
-        } elsif ($text =~ / -o /) {
-            # linking executable
-            handleLinkLine($text, $line);
-
-        } elsif ($text =~ /\.o / && $text =~ /\.a /) {
-            # libifying
-            handleLibLine($text, $line);
-#
-#        } elsif ($text =~ /^cp /) {
-#            # copy file around
-#
-#        } elsif ($text =~ /^rm -f /) {
-#            # shell command
-#
-#        } elsif ($text =~ /^make[ \[]/) {
-#            # make output
-#
-#        } elsif ($text =~ /^echo /) {
-#            # echo to file
-#
-#        } elsif ($text =~ /^if /) {
-#            # shell conditional
-#
-#        } elsif ($text =~ /^tclsh /) {
-#            # translation stuff
-#
-#        } elsif ($text =~ /^umask /) {
-#            # handling boilerplates
-#
-#        } elsif ($text =~ /\$\(\:\)/) {
-#            # ignore
-#
-#        } elsif ($text =~ /^FLAGS=/) {
-#            # flags check for dependencies
-#
-#        } elsif ($text =~ /^'\/usr\/bin\/perl' -MError -e/) {
-#            # perl commands for copying files
-#
-#        } elsif ($text =~ /generate-cmdlist\.sh/) {
-#            # command for generating list of commands
-#
-#        } elsif ($text =~ /new locations or Tcl/) {
-#            # command for detecting Tcl/Tk changes
-#
-#        } elsif ($text =~ /mkdir -p/) {
-#            # command creating path
-#
-#        } elsif ($text =~ /: no custom templates yet/) {
-#            # whatever
-#
-#        } else {
-#            print "Unhandled (line: $line): $text\n";
-        }
-    }
-
-#    use Data::Dumper;
-#    print "Parsed build structure:\n";
-#    print Dumper(%build_structure);
-}
-
-# variables for the compilation part of each step
-my (@defines, @incpaths, @cflags, @sources);
-
-sub clearCompileStep
-{
-    @defines = ();
-    @incpaths = ();
-    @cflags = ();
-    @sources = ();
-}
-
-sub removeDuplicates
-{
-    my (%dupHash, $entry);
-    %dupHash = map { $_, 1 } @defines;
-    @defines = keys %dupHash;
-
-    %dupHash = map { $_, 1 } @incpaths;
-    @incpaths = keys %dupHash;
-
-    %dupHash = map { $_, 1 } @cflags;
-    @cflags = keys %dupHash;
-}
-
-sub handleCompileLine
-{
-    my ($line, $lineno) = @_;
-    my @parts = shellwords($line);
-    my $sourcefile;
-    shift(@parts); # ignore cmd
-    while (my $part = shift @parts) {
-        if ("$part" eq "-o") {
-            # ignore object file
-            shift @parts;
-        } elsif ("$part" eq "-c") {
-            # ignore compile flag
-        } elsif ("$part" eq "-c") {
-        } elsif ($part =~ /^.?-I/) {
-            push(@incpaths, $part);
-        } elsif ($part =~ /^.?-D/) {
-            push(@defines, $part);
-        } elsif ($part =~ /^-/) {
-            push(@cflags, $part);
-        } elsif ($part =~ /\.(c|cc|cpp)$/) {
-            $sourcefile = $part;
-        } else {
-            die "Unhandled compiler option @ line $lineno: $part";
-        }
-    }
-    @{$compile_options{"${sourcefile}_CFLAGS"}} = @cflags;
-    @{$compile_options{"${sourcefile}_DEFINES"}} = @defines;
-    @{$compile_options{"${sourcefile}_INCPATHS"}} = @incpaths;
-    clearCompileStep();
-}
-
-sub handleLibLine
-{
-    my ($line, $lineno) = @_;
-    my (@objfiles, @lflags, $libout, $part);
-    # kill cmd and rm 'prefix'
-    $line =~ s/^rm -f .* && .* rcs //;
-    my @parts = shellwords($line);
-    while ($part = shift @parts) {
-        if ($part =~ /^-/) {
-            push(@lflags, $part);
-        } elsif ($part =~ /\.(o|obj)$/) {
-            push(@objfiles, $part);
-        } elsif ($part =~ /\.(a|lib)$/) {
-            $libout = $part;
-            $libout =~ s/\.a$//;
-        } else {
-            die "Unhandled lib option @ line $lineno: $part";
-        }
-    }
-#    print "LibOut: '$libout'\nLFlags: @lflags\nOfiles: @objfiles\n";
-#    exit(1);
-    foreach (@objfiles) {
-        my $sourcefile = $_;
-        $sourcefile =~ s/\.o$/.c/;
-        push(@sources, $sourcefile);
-        push(@cflags, @{$compile_options{"${sourcefile}_CFLAGS"}});
-        push(@defines, @{$compile_options{"${sourcefile}_DEFINES"}});
-        push(@incpaths, @{$compile_options{"${sourcefile}_INCPATHS"}});
-    }
-    removeDuplicates();
-
-    push(@{$build_structure{"LIBS"}}, $libout);
-    @{$build_structure{"LIBS_${libout}"}} = ("_DEFINES", "_INCLUDES", "_CFLAGS", "_SOURCES",
-                                             "_OBJECTS");
-    @{$build_structure{"LIBS_${libout}_DEFINES"}} = @defines;
-    @{$build_structure{"LIBS_${libout}_INCLUDES"}} = @incpaths;
-    @{$build_structure{"LIBS_${libout}_CFLAGS"}} = @cflags;
-    @{$build_structure{"LIBS_${libout}_LFLAGS"}} = @lflags;
-    @{$build_structure{"LIBS_${libout}_SOURCES"}} = @sources;
-    @{$build_structure{"LIBS_${libout}_OBJECTS"}} = @objfiles;
-    clearCompileStep();
-}
-
-sub handleLinkLine
-{
-    my ($line, $lineno) = @_;
-    my (@objfiles, @lflags, @libs, $appout, $part);
-    my @parts = shellwords($line);
-    shift(@parts); # ignore cmd
-    while ($part = shift @parts) {
-        if ($part =~ /^-IGNORE/) {
-            push(@lflags, $part);
-        } elsif ($part =~ /^-[GRIMDO]/) {
-            # eat compiler flags
-        } elsif ("$part" eq "-o") {
-            $appout = shift @parts;
-        } elsif ("$part" eq "-lz") {
-            push(@libs, "zlib.lib");
-        } elsif ("$part" eq "-lcrypto") {
-            push(@libs, "libcrypto.lib");
-        } elsif ("$part" eq "-lssl") {
-            push(@libs, "libssl.lib");
-        } elsif ("$part" eq "-lcurl") {
-            push(@libs, "libcurl.lib");
-        } elsif ("$part" eq "-lexpat") {
-            push(@libs, "libexpat.lib");
-        } elsif ("$part" eq "-liconv") {
-            push(@libs, "iconv.lib");
-        } elsif ($part =~ /^[-\/]/) {
-            push(@lflags, $part);
-        } elsif ($part =~ /\.(a|lib)$/) {
-            $part =~ s/\.a$/.lib/;
-            push(@libs, $part);
-        } elsif ($part eq 'invalidcontinue.obj') {
-            # ignore - known to MSVC
-        } elsif ($part =~ /\.o$/) {
-            push(@objfiles, $part);
-        } elsif ($part =~ /\.obj$/) {
-            # do nothing, 'make' should not be producing .obj, only .o files
-        } else {
-            die "Unhandled link option @ line $lineno: $part";
-        }
-    }
-#    print "AppOut: '$appout'\nLFlags: @lflags\nLibs  : @libs\nOfiles: @objfiles\n";
-#    exit(1);
-    foreach (@objfiles) {
-        my $sourcefile = $_;
-        $sourcefile =~ s/^headless-git\.o$/compat\/win32\/headless.c/;
-        $sourcefile =~ s/\.o$/.c/;
-        push(@sources, $sourcefile);
-        push(@cflags, @{$compile_options{"${sourcefile}_CFLAGS"}});
-        push(@defines, @{$compile_options{"${sourcefile}_DEFINES"}});
-        push(@incpaths, @{$compile_options{"${sourcefile}_INCPATHS"}});
-    }
-    removeDuplicates();
-
-    removeDuplicates();
-    push(@{$build_structure{"APPS"}}, $appout);
-    @{$build_structure{"APPS_${appout}"}} = ("_DEFINES", "_INCLUDES", "_CFLAGS", "_LFLAGS",
-                                             "_SOURCES", "_OBJECTS", "_LIBS");
-    @{$build_structure{"APPS_${appout}_DEFINES"}} = @defines;
-    @{$build_structure{"APPS_${appout}_INCLUDES"}} = @incpaths;
-    @{$build_structure{"APPS_${appout}_CFLAGS"}} = @cflags;
-    @{$build_structure{"APPS_${appout}_LFLAGS"}} = @lflags;
-    @{$build_structure{"APPS_${appout}_SOURCES"}} = @sources;
-    @{$build_structure{"APPS_${appout}_OBJECTS"}} = @objfiles;
-    @{$build_structure{"APPS_${appout}_LIBS"}} = @libs;
-    clearCompileStep();
-}
diff --git a/contrib/buildsystems/generate b/contrib/buildsystems/generate
deleted file mode 100755
index bc10f25..0000000
--- a/contrib/buildsystems/generate
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/perl -w
-######################################################################
-# Generate buildsystem files
-#
-# This script generate buildsystem files based on the output of a
-# GNU Make --dry-run, enabling Windows users to develop Git with their
-# trusted IDE with native projects.
-#
-# Note:
-# It is not meant as *the* way of building Git with MSVC, but merely a
-# convenience. The correct way of building Git with MSVC is to use the
-# GNU Make tool to build with the maintained Makefile in the root of
-# the project. If you have the msysgit environment installed and
-# available in your current console, together with the Visual Studio
-# environment you wish to build for, all you have to do is run the
-# command:
-#     make MSVC=1
-#
-# Copyright (C) 2009 Marius Storm-Olsen <mstormo@gmail.com>
-######################################################################
-use strict;
-use File::Basename;
-use Cwd;
-
-my $git_dir = getcwd();
-$git_dir =~ s=\\=/=g;
-$git_dir = dirname($git_dir) while (!-e "$git_dir/git.c" && "$git_dir" ne "");
-die "Couldn't find Git repo" if ("$git_dir" eq "");
-exec join(" ", ("PERL5LIB=${git_dir}/contrib/buildsystems ${git_dir}/contrib/buildsystems/engine.pl", @ARGV));
diff --git a/contrib/buildsystems/parse.pl b/contrib/buildsystems/parse.pl
deleted file mode 100755
index c9656ec..0000000
--- a/contrib/buildsystems/parse.pl
+++ /dev/null
@@ -1,228 +0,0 @@
-#!/usr/bin/perl -w
-######################################################################
-# Do not call this script directly!
-#
-# The generate script ensures that @INC is correct before the engine
-# is executed.
-#
-# Copyright (C) 2009 Marius Storm-Olsen <mstormo@gmail.com>
-######################################################################
-use strict;
-use File::Basename;
-use Cwd;
-
-my $file = $ARGV[0];
-die "No file provided!" if !defined $file;
-
-my ($cflags, $target, $type, $line);
-
-open(F, "<$file") || die "Couldn't open file $file";
-my @data = <F>;
-close(F);
-
-while (my $text = shift @data) {
-    my $ate_next;
-    do {
-        $ate_next = 0;
-        $line++;
-        chomp $text;
-        chop $text if ($text =~ /\r$/);
-        if ($text =~ /\\$/) {
-            $text =~ s/\\$//;
-            $text .= shift @data;
-            $ate_next = 1;
-        }
-    } while($ate_next);
-
-    if($text =~ / -c /) {
-        # compilation
-        handleCompileLine($text, $line);
-
-    } elsif ($text =~ / -o /) {
-        # linking executable
-        handleLinkLine($text, $line);
-
-    } elsif ($text =~ /\.o / && $text =~ /\.a /) {
-        # libifying
-        handleLibLine($text, $line);
-
-#    } elsif ($text =~ /^cp /) {
-#        # copy file around
-#
-#    } elsif ($text =~ /^rm -f /) {
-#        # shell command
-#
-#    } elsif ($text =~ /^make[ \[]/) {
-#        # make output
-#
-#    } elsif ($text =~ /^echo /) {
-#        # echo to file
-#
-#    } elsif ($text =~ /^if /) {
-#        # shell conditional
-#
-#    } elsif ($text =~ /^tclsh /) {
-#        # translation stuff
-#
-#    } elsif ($text =~ /^umask /) {
-#        # handling boilerplates
-#
-#    } elsif ($text =~ /\$\(\:\)/) {
-#        # ignore
-#
-#    } elsif ($text =~ /^FLAGS=/) {
-#        # flags check for dependencies
-#
-#    } elsif ($text =~ /^'\/usr\/bin\/perl' -MError -e/) {
-#        # perl commands for copying files
-#
-#    } elsif ($text =~ /generate-cmdlist\.sh/) {
-#        # command for generating list of commands
-#
-#    } elsif ($text =~ /^test / && $text =~ /|| rm -f /) {
-#        # commands removing executables, if they exist
-#
-#    } elsif ($text =~ /new locations or Tcl/) {
-#        # command for detecting Tcl/Tk changes
-#
-#    } elsif ($text =~ /mkdir -p/) {
-#        # command creating path
-#
-#    } elsif ($text =~ /: no custom templates yet/) {
-#        # whatever
-
-    } else {
-#        print "Unhandled (line: $line): $text\n";
-    }
-}
-close(F);
-
-# use Data::Dumper;
-# print "Parsed build structure:\n";
-# print Dumper(%build_structure);
-
-# -------------------------------------------------------------------
-# Functions under here
-# -------------------------------------------------------------------
-my (%build_structure, @defines, @incpaths, @cflags, @sources);
-
-sub clearCompileStep
-{
-    @defines = ();
-    @incpaths = ();
-    @cflags = ();
-    @sources = ();
-}
-
-sub removeDuplicates
-{
-    my (%dupHash, $entry);
-    %dupHash = map { $_, 1 } @defines;
-    @defines = keys %dupHash;
-
-    %dupHash = map { $_, 1 } @incpaths;
-    @incpaths = keys %dupHash;
-
-    %dupHash = map { $_, 1 } @cflags;
-    @cflags = keys %dupHash;
-
-    %dupHash = map { $_, 1 } @sources;
-    @sources = keys %dupHash;
-}
-
-sub handleCompileLine
-{
-    my ($line, $lineno) = @_;
-    my @parts = split(' ', $line);
-    shift(@parts); # ignore cmd
-    while (my $part = shift @parts) {
-        if ("$part" eq "-o") {
-            # ignore object file
-            shift @parts;
-        } elsif ("$part" eq "-c") {
-            # ignore compile flag
-        } elsif ("$part" eq "-c") {
-        } elsif ($part =~ /^.?-I/) {
-            push(@incpaths, $part);
-        } elsif ($part =~ /^.?-D/) {
-            push(@defines, $part);
-        } elsif ($part =~ /^-/) {
-            push(@cflags, $part);
-        } elsif ($part =~ /\.(c|cc|cpp)$/) {
-            push(@sources, $part);
-        } else {
-            die "Unhandled compiler option @ line $lineno: $part";
-        }
-    }
-    #print "Sources: @sources\nCFlags: @cflags\nDefine: @defines\nIncpat: @incpaths\n";
-    #exit(1);
-}
-
-sub handleLibLine
-{
-    my ($line, $lineno) = @_;
-    my (@objfiles, @lflags, $libout, $part);
-    # kill cmd and rm 'prefix'
-    $line =~ s/^rm -f .* && .* rcs //;
-    my @parts = split(' ', $line);
-    while ($part = shift @parts) {
-        if ($part =~ /^-/) {
-            push(@lflags, $part);
-        } elsif ($part =~ /\.(o|obj)$/) {
-            push(@objfiles, $part);
-        } elsif ($part =~ /\.(a|lib)$/) {
-            $libout = $part;
-        } else {
-            die "Unhandled lib option @ line $lineno: $part";
-        }
-    }
-    #print "LibOut: '$libout'\nLFlags: @lflags\nOfiles: @objfiles\n";
-    #exit(1);
-    removeDuplicates();
-    push(@{$build_structure{"LIBS"}}, $libout);
-    @{$build_structure{"LIBS_${libout}"}} = ("_DEFINES", "_INCLUDES", "_CFLAGS", "_SOURCES",
-                                             "_OBJECTS");
-    @{$build_structure{"LIBS_${libout}_DEFINES"}} = @defines;
-    @{$build_structure{"LIBS_${libout}_INCLUDES"}} = @incpaths;
-    @{$build_structure{"LIBS_${libout}_CFLAGS"}} = @cflags;
-    @{$build_structure{"LIBS_${libout}_SOURCES"}} = @sources;
-    @{$build_structure{"LIBS_${libout}_OBJECTS"}} = @objfiles;
-    clearCompileStep();
-}
-
-sub handleLinkLine
-{
-    my ($line, $lineno) = @_;
-    my (@objfiles, @lflags, @libs, $appout, $part);
-    my @parts = split(' ', $line);
-    shift(@parts); # ignore cmd
-    while ($part = shift @parts) {
-        if ($part =~ /^-[GRIDO]/) {
-            # eat compiler flags
-        } elsif ("$part" eq "-o") {
-            $appout = shift @parts;
-        } elsif ($part =~ /^-/) {
-            push(@lflags, $part);
-        } elsif ($part =~ /\.(a|lib)$/) {
-            push(@libs, $part);
-        } elsif ($part =~ /\.(o|obj)$/) {
-            push(@objfiles, $part);
-        } else {
-            die "Unhandled lib option @ line $lineno: $part";
-        }
-    }
-    #print "AppOut: '$appout'\nLFlags: @lflags\nLibs  : @libs\nOfiles: @objfiles\n";
-    #exit(1);
-    removeDuplicates();
-    push(@{$build_structure{"APPS"}}, $appout);
-    @{$build_structure{"APPS_${appout}"}} = ("_DEFINES", "_INCLUDES", "_CFLAGS", "_LFLAGS",
-                                             "_SOURCES", "_OBJECTS", "_LIBS");
-    @{$build_structure{"APPS_${appout}_DEFINES"}} = @defines;
-    @{$build_structure{"APPS_${appout}_INCLUDES"}} = @incpaths;
-    @{$build_structure{"APPS_${appout}_CFLAGS"}} = @cflags;
-    @{$build_structure{"APPS_${appout}_LFLAGS"}} = @lflags;
-    @{$build_structure{"APPS_${appout}_SOURCES"}} = @sources;
-    @{$build_structure{"APPS_${appout}_OBJECTS"}} = @objfiles;
-    @{$build_structure{"APPS_${appout}_LIBS"}} = @libs;
-    clearCompileStep();
-}
diff --git a/contrib/coccinelle/meson.build b/contrib/coccinelle/meson.build
index ea054c9..dc3f73c 100644
--- a/contrib/coccinelle/meson.build
+++ b/contrib/coccinelle/meson.build
@@ -8,21 +8,6 @@
   subdir_done()
 endif
 
-third_party_sources = [
-  ':!contrib',
-  ':!compat/inet_ntop.c',
-  ':!compat/inet_pton.c',
-  ':!compat/nedmalloc',
-  ':!compat/obstack.*',
-  ':!compat/poll',
-  ':!compat/regex',
-  ':!sha1collisiondetection',
-  ':!sha1dc',
-  ':!t/unit-tests/clar',
-  ':!t/unit-tests/clar',
-  ':!t/t[0-9][0-9][0-9][0-9]*',
-]
-
 rules = [
   'array.cocci',
   'commit.cocci',
@@ -55,18 +40,18 @@
   capture: true,
 )
 
-sources = [ ]
-foreach source : run_command(git, '-C', meson.project_source_root(), 'ls-files', '--deduplicate', '*.c', third_party_sources, check: true).stdout().split()
-  sources += source
+coccinelle_sources = []
+foreach source : run_command(git, '-C', meson.project_source_root(), 'ls-files', '--deduplicate', '*.c', third_party_excludes, check: true).stdout().split()
+  coccinelle_sources += source
 endforeach
 
-headers = [ ]
-foreach header : run_command(git, '-C', meson.project_source_root(), 'ls-files', '--deduplicate', '*.h', third_party_sources, check: true).stdout().split()
-  headers += meson.project_source_root() / header
+coccinelle_headers = []
+foreach header : headers_to_check
+  coccinelle_headers += meson.project_source_root() / header
 endforeach
 
 patches = [ ]
-foreach source : sources
+foreach source : coccinelle_sources
   patches += custom_target(
     command: [
       spatch,
@@ -78,7 +63,7 @@
     input: meson.project_source_root() / source,
     output: source.underscorify() + '.patch',
     capture: true,
-    depend_files: headers,
+    depend_files: coccinelle_headers,
   )
 endforeach
 
diff --git a/contrib/completion/meson.build b/contrib/completion/meson.build
index 3a9ddab..576125b 100644
--- a/contrib/completion/meson.build
+++ b/contrib/completion/meson.build
@@ -14,3 +14,21 @@
     )
   endif
 endforeach
+
+# We have to discern between the test dependency and the installed file. Our
+# tests assume the completion scripts to have the same name as the in-tree
+# files, but the installed filenames need to match the executable's basename.
+if meson.version().version_compare('>=1.3.0')
+  fs.copyfile('git-completion.bash', 'git',
+    install: true,
+    install_dir: get_option('datadir') / 'bash-completion/completions',
+  )
+else
+  configure_file(
+    input: 'git-completion.bash',
+    output: 'git',
+    copy: true,
+    install: true,
+    install_dir: get_option('datadir') / 'bash-completion/completions',
+  )
+endif
diff --git a/convert.c b/convert.c
index 8783e17..b5f7cf6 100644
--- a/convert.c
+++ b/convert.c
@@ -8,7 +8,7 @@
 #include "copy.h"
 #include "gettext.h"
 #include "hex.h"
-#include "object-store.h"
+#include "object-file.h"
 #include "attr.h"
 #include "run-command.h"
 #include "quote.h"
diff --git a/diff.c b/diff.c
index 63e9ecb..90e8003 100644
--- a/diff.c
+++ b/diff.c
@@ -892,7 +892,7 @@ static void fill_es_indent_data(struct emitted_diff_symbol *es)
 
 	/* skip any \v \f \r at start of indentation */
 	while (s[off] == '\f' || s[off] == '\v' ||
-	       (s[off] == '\r' && off < len - 1))
+	       (off < len - 1 && s[off] == '\r'))
 		off++;
 
 	/* calculate the visual width of indentation */
diff --git a/diffcore-rename.c b/diffcore-rename.c
index 1797314..7723bc3 100644
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
@@ -8,7 +8,7 @@
 #include "git-compat-util.h"
 #include "diff.h"
 #include "diffcore.h"
-#include "object-store.h"
+#include "object-file.h"
 #include "hashmap.h"
 #include "mem-pool.h"
 #include "oid-array.h"
diff --git a/dir.c b/dir.c
index 5c4675b..a374972 100644
--- a/dir.c
+++ b/dir.c
@@ -17,7 +17,7 @@
 #include "environment.h"
 #include "gettext.h"
 #include "name-hash.h"
-#include "object-store.h"
+#include "object-file.h"
 #include "path.h"
 #include "refs.h"
 #include "repository.h"
@@ -518,7 +518,8 @@ static int do_match_pathspec(struct index_state *istate,
 		    ( exclude && !(ps->items[i].magic & PATHSPEC_EXCLUDE)))
 			continue;
 
-		if (seen && seen[i] == MATCHED_EXACTLY)
+		if (seen && seen[i] == MATCHED_EXACTLY &&
+		    ps->items[i].nowildcard_len == ps->items[i].len)
 			continue;
 		/*
 		 * Make exclude patterns optional and never report
diff --git a/environment.c b/environment.c
index 3c32367..c61d773 100644
--- a/environment.c
+++ b/environment.c
@@ -81,6 +81,16 @@ int max_allowed_tree_depth =
 	 * the stack overflow can occur.
 	 */
 	512;
+#elif defined(GIT_WINDOWS_NATIVE) && defined(__clang__) && defined(__aarch64__)
+	/*
+	 * Similar to Visual C, it seems that on Windows/ARM64 the clang-based
+	 * builds have a smaller stack space available. When running out of
+	 * that stack space, a `STATUS_STACK_OVERFLOW` is produced. When the
+	 * Git command was run from an MSYS2 Bash, this unfortunately results
+	 * in an exit code 127. Let's prevent that by lowering the maximal
+	 * tree depth; This value seems to be low enough.
+	 */
+	1280;
 #else
 	2048;
 #endif
@@ -106,7 +116,7 @@ int auto_comment_line_char;
 /* Parallel index stat data preload? */
 int core_preload_index = 1;
 
-/* This is set by setup_git_dir_gently() and/or git_default_config() */
+/* This is set by setup_git_directory_gently() and/or git_default_config() */
 char *git_work_tree_cfg;
 
 /*
diff --git a/fetch-pack.c b/fetch-pack.c
index 210dc30..fa4231f 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -769,9 +769,7 @@ static void mark_complete_and_common_ref(struct fetch_negotiator *negotiator,
 		if (!commit) {
 			struct object *o;
 
-			if (!repo_has_object_file_with_flags(the_repository, &ref->old_oid,
-							     OBJECT_INFO_QUICK |
-							     OBJECT_INFO_SKIP_FETCH_OBJECT))
+			if (!has_object(the_repository, &ref->old_oid, 0))
 				continue;
 			o = parse_object(the_repository, &ref->old_oid);
 			if (!o || o->type != OBJ_COMMIT)
@@ -1985,7 +1983,8 @@ static void update_shallow(struct fetch_pack_args *args,
 		struct oid_array extra = OID_ARRAY_INIT;
 		struct object_id *oid = si->shallow->oid;
 		for (i = 0; i < si->shallow->nr; i++)
-			if (repo_has_object_file(the_repository, &oid[i]))
+			if (has_object(the_repository, &oid[i],
+				       HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 				oid_array_append(&extra, &oid[i]);
 		if (extra.nr) {
 			setup_alternate_shallow(&shallow_lock,
diff --git a/fsck.h b/fsck.h
index b1deae6..0c5869a 100644
--- a/fsck.h
+++ b/fsck.h
@@ -84,6 +84,7 @@ enum fsck_msg_type {
 	FUNC(LARGE_PATHNAME, WARN) \
 	/* infos (reported as warnings, but ignored by default) */ \
 	FUNC(BAD_FILEMODE, INFO) \
+	FUNC(EMPTY_PACKED_REFS_FILE, INFO) \
 	FUNC(GITMODULES_PARSE, INFO) \
 	FUNC(GITIGNORE_SYMLINK, INFO) \
 	FUNC(GITATTRIBUTES_SYMLINK, INFO) \
diff --git a/generate-configlist.sh b/generate-configlist.sh
index b06da53..9d2ad61 100755
--- a/generate-configlist.sh
+++ b/generate-configlist.sh
@@ -19,7 +19,6 @@
 	s/::$//;
 	s/`//g;
 	s/^.*$/	"&",/;
-	s/,  */",\n	"/g;
 	p;};
 d' \
 	    "$SOURCE_DIR"/Documentation/*config.adoc \
diff --git a/git-compat-util.h b/git-compat-util.h
index 36b9577..4678e21 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -668,6 +668,22 @@ static inline int cast_size_t_to_int(size_t a)
 	return (int)a;
 }
 
+static inline uint64_t u64_mult(uint64_t a, uint64_t b)
+{
+	if (unsigned_mult_overflows(a, b))
+		die("uint64_t overflow: %"PRIuMAX" * %"PRIuMAX,
+		    (uintmax_t)a, (uintmax_t)b);
+	return a * b;
+}
+
+static inline uint64_t u64_add(uint64_t a, uint64_t b)
+{
+	if (unsigned_add_overflows(a, b))
+		die("uint64_t overflow: %"PRIuMAX" + %"PRIuMAX,
+		    (uintmax_t)a, (uintmax_t)b);
+	return a + b;
+}
+
 /*
  * Limit size of IO chunks, because huge chunks only cause pain.  OS X
  * 64-bit is buggy, returning EINVAL if len >= INT_MAX; and even in
diff --git a/git-cvsserver.perl b/git-cvsserver.perl
index a4e1bad..d8d5422 100755
--- a/git-cvsserver.perl
+++ b/git-cvsserver.perl
@@ -4986,13 +4986,13 @@
     return $result;
 }
 
-=head2 escapeRefName
+=head2 unescapeRefName
 
-Apply an escape mechanism to compensate for characters that
+Undo an escape mechanism to compensate for characters that
 git ref names can have that CVS tags can not.
 
 =cut
-sub escapeRefName
+sub unescapeRefName
 {
     my($self,$refName)=@_;
 
@@ -5009,27 +5009,6 @@
     #   = "_-xx-" Where "xx" is the hexadecimal representation of the
     #     desired ASCII character byte. (for anything else)
 
-    if(! $refName=~/^[1-9][0-9]*(\.[1-9][0-9]*)*$/)
-    {
-        $refName=~s/_-/_-u--/g;
-        $refName=~s/\./_-p-/g;
-        $refName=~s%/%_-s-%g;
-        $refName=~s/[^-_a-zA-Z0-9]/sprintf("_-%02x-",$1)/eg;
-    }
-}
-
-=head2 unescapeRefName
-
-Undo an escape mechanism to compensate for characters that
-git ref names can have that CVS tags can not.
-
-=cut
-sub unescapeRefName
-{
-    my($self,$refName)=@_;
-
-    # see escapeRefName() for description of escape mechanism.
-
     $refName=~s/_-([spu]|[0-9a-f][0-9a-f])-/unescapeRefNameChar($1)/eg;
 
     # allowed tag names
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 3a51d45..24fa317 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -295,15 +295,18 @@
 	if test -n "$state_commit"
 	then
 		echo "Populating map from $state_branch ($state_commit)" 1>&2
-		perl -e'open(MAP, "-|", "git show $ARGV[0]:filter.map") or die;
-			while (<MAP>) {
-				m/(.*):(.*)/ or die;
-				open F, ">../map/$1" or die;
-				print F "$2" or die;
-				close(F) or die;
-			}
-			close(MAP) or die;' "$state_commit" \
-				|| die "Unable to load state from $state_branch:filter.map"
+
+		git show "$state_commit:filter.map" >"$tempdir"/filter-map ||
+			die "Unable to load state from $state_branch:filter.map"
+		while read line
+		do
+			case "$line" in
+			*:*)
+				echo "${line%:*}" >../map/"${line#*:}";;
+			*)
+				die "Unable to load state from $state_branch:filter.map";;
+			esac
+		done <"$tempdir"/filter-map
 	else
 		echo "Branch $state_branch does not exist. Will create" 1>&2
 	fi
@@ -633,15 +636,13 @@
 then
 	echo "Saving rewrite state to $state_branch" 1>&2
 	state_blob=$(
-		perl -e'opendir D, "../map" or die;
-			open H, "|-", "git hash-object -w --stdin" or die;
-			foreach (sort readdir(D)) {
-				next if m/^\.\.?$/;
-				open F, "<../map/$_" or die;
-				chomp($f = <F>);
-				print H "$_:$f\n" or die;
-			}
-			close(H) or die;' || die "Unable to save state")
+		for file in ../map/*
+		do
+			from_commit=$(basename "$file")
+			to_commit=$(cat "$file")
+			echo "$from_commit:$to_commit"
+		done | git hash-object -w --stdin || die "Unable to save state"
+	)
 	state_tree=$(printf '100644 blob %s\tfilter.map\n' "$state_blob" | git mktree)
 	if test -n "$state_commit"
 	then
diff --git a/git-gui/.gitattributes b/git-gui/.gitattributes
index 118d56c..889d582 100644
--- a/git-gui/.gitattributes
+++ b/git-gui/.gitattributes
@@ -4,3 +4,4 @@
 /po/*.po    encoding=UTF-8
 /GIT-VERSION-GEN eol=lf
 Makefile    whitespace=!indent,trail,space
+meson.build whitespace=space
diff --git a/git-gui/.gitignore b/git-gui/.gitignore
index 6483b21..ff6e0be 100644
--- a/git-gui/.gitignore
+++ b/git-gui/.gitignore
@@ -2,7 +2,7 @@
 config.mak
 Git Gui.app*
 git-gui.tcl
+GIT-GUI-BUILD-OPTIONS
 GIT-VERSION-FILE
-GIT-GUI-VARS
 git-gui
 lib/tclIndex
diff --git a/git-gui/GIT-GUI-BUILD-OPTIONS.in b/git-gui/GIT-GUI-BUILD-OPTIONS.in
new file mode 100644
index 0000000..5fd885c
--- /dev/null
+++ b/git-gui/GIT-GUI-BUILD-OPTIONS.in
@@ -0,0 +1,7 @@
+GITGUI_GITEXECDIR=@GITGUI_GITEXECDIR@
+GITGUI_LIBDIR=@GITGUI_LIBDIR@
+GITGUI_RELATIVE=@GITGUI_RELATIVE@
+SHELL_PATH=@SHELL_PATH@
+TCLTK_PATH=@TCLTK_PATH@
+TCL_PATH=@TCL_PATH@
+TKEXECUTABLE=@TKEXECUTABLE@
diff --git a/git-gui/GIT-VERSION-GEN b/git-gui/GIT-VERSION-GEN
index 92373d2..c2767b4 100755
--- a/git-gui/GIT-VERSION-GEN
+++ b/git-gui/GIT-VERSION-GEN
@@ -1,19 +1,33 @@
 #!/bin/sh
 
-GVF=GIT-VERSION-FILE
 DEF_VER=0.21.GITGUI
 
 LF='
 '
 
+if test "$#" -ne 2
+then
+	echo >&2 "usage: $0 <SOURCE_DIR> <OUTPUT>"
+	exit 1
+fi
+
+SOURCE_DIR="$1"
+OUTPUT="$2"
+
+# Protect us from reading Git version information outside of the Git directory
+# in case it is not a repository itself, but embedded in an unrelated
+# repository.
+GIT_CEILING_DIRECTORIES="$SOURCE_DIR/.."
+export GIT_CEILING_DIRECTORIES
+
 tree_search ()
 {
 	head=$1
 	tree=$2
-	for p in $(git rev-list --parents --max-count=1 $head 2>/dev/null)
+	for p in $(git -C "$SOURCE_DIR" rev-list --parents --max-count=1 $head 2>/dev/null)
 	do
-		test $tree = $(git rev-parse $p^{tree} 2>/dev/null) &&
-		vn=$(git describe --abbrev=4 $p 2>/dev/null) &&
+		test $tree = $(git -C "$SOURCE_DIR" rev-parse $p^{tree} 2>/dev/null) &&
+		vn=$(git -C "$SOURCE_DIR" describe --abbrev=4 $p 2>/dev/null) &&
 		case "$vn" in
 		gitgui-[0-9]*) echo $vn; break;;
 		esac
@@ -34,14 +48,14 @@
 # If we are at the toplevel or the merge assumption fails
 # try looking for a gitgui-* tag.
 
-if test -f version &&
-   VN=$(cat version)
+if test -f "$SOURCE_DIR"/version &&
+   VN=$(cat "$SOURCE_DIR"/version)
 then
 	: happy
-elif prefix="$(git rev-parse --show-prefix 2>/dev/null)"
+elif prefix="$(git -C "$SOURCE_DIR" rev-parse --show-prefix 2>/dev/null)"
    test -n "$prefix" &&
-   head=$(git rev-list --max-count=1 HEAD -- . 2>/dev/null) &&
-   tree=$(git rev-parse --verify "HEAD:$prefix" 2>/dev/null) &&
+   head=$(git -C "$SOURCE_DIR" rev-list --max-count=1 HEAD -- . 2>/dev/null) &&
+   tree=$(git -C "$SOURCE_DIR" rev-parse --verify "HEAD:$prefix" 2>/dev/null) &&
    VN=$(tree_search $head $tree)
    case "$VN" in
    gitgui-[0-9]*) : happy ;;
@@ -49,7 +63,7 @@
    esac
 then
 	VN=$(echo "$VN" | sed -e 's/^gitgui-//;s/-/./g');
-elif VN=$(git describe --abbrev=4 HEAD 2>/dev/null) &&
+elif VN=$(git -C "$SOURCE_DIR" describe --abbrev=4 HEAD 2>/dev/null) &&
    case "$VN" in
    gitgui-[0-9]*) : happy ;;
    *) (exit 1) ;;
@@ -60,7 +74,7 @@
 	VN="$DEF_VER"
 fi
 
-dirty=$(sh -c 'git diff-index --name-only HEAD' 2>/dev/null) || dirty=
+dirty=$(git -C "$SOURCE_DIR" diff-index --name-only HEAD 2>/dev/null) || dirty=
 case "$dirty" in
 '')
 	;;
@@ -68,13 +82,13 @@
 	VN="$VN-dirty" ;;
 esac
 
-if test -r $GVF
+if test -r "$OUTPUT"
 then
-	VC=$(sed -e 's/^GITGUI_VERSION = //' <$GVF)
+	VC=$(sed -e 's/^GITGUI_VERSION=//' <"$OUTPUT")
 else
 	VC=unset
 fi
 test "$VN" = "$VC" || {
-	echo >&2 "GITGUI_VERSION = $VN"
-	echo "GITGUI_VERSION = $VN" >$GVF
+	echo >&2 "GITGUI_VERSION=$VN"
+	echo "GITGUI_VERSION=$VN" >"$OUTPUT"
 }
diff --git a/git-gui/Makefile b/git-gui/Makefile
index 6c5a12b..8672dd2 100644
--- a/git-gui/Makefile
+++ b/git-gui/Makefile
@@ -9,10 +9,7 @@
 #
 
 GIT-VERSION-FILE: FORCE
-	@$(SHELL_PATH) ./GIT-VERSION-GEN
-ifneq ($(MAKECMDGOALS),clean)
--include GIT-VERSION-FILE
-endif
+	@$(SHELL_PATH) ./GIT-VERSION-GEN . $@
 
 uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
 uname_O := $(shell sh -c 'uname -o 2>/dev/null || echo not')
@@ -76,7 +73,6 @@
 	QUIET_INDEX    = $(QUIET)echo '   ' INDEX $(dir $@) &&
 	QUIET_MSGFMT0  = $(QUIET)printf '    MSGFMT %12s ' $@ && v=`
 	QUIET_MSGFMT1  = 2>&1` && echo "$$v" | sed -e 's/fuzzy translations/fuzzy/' | sed -e 's/ messages*//g'
-	QUIET_2DEVNULL = 2>/dev/null
 
 	INSTALL_D0 = dir=
 	INSTALL_D1 = && echo ' ' DEST $$dir && $(INSTALL) -d -m 755 "$$dir"
@@ -114,7 +110,8 @@
 			TKFRAMEWORK = /System/Library/Frameworks/Tk.framework/Resources/Wish\ Shell.app
                 endif
         endif
-	TKEXECUTABLE = $(shell basename "$(TKFRAMEWORK)" .app)
+	TKEXECUTABLE = $(TKFRAMEWORK)/Contents/MacOS/$(shell basename "$(TKFRAMEWORK)" .app)
+	TKEXECUTABLE_SQ = $(subst ','\'',$(TKEXECUTABLE))
 endif
 
 ifeq ($(findstring $(firstword -$(MAKEFLAGS)),s),s)
@@ -128,21 +125,17 @@
 SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
 TCL_PATH_SQ = $(subst ','\'',$(TCL_PATH))
 TCLTK_PATH_SQ = $(subst ','\'',$(TCLTK_PATH))
-TCLTK_PATH_SED = $(subst ','\'',$(subst \,\\,$(TCLTK_PATH)))
 
 gg_libdir ?= $(sharedir)/git-gui/lib
 libdir_SQ  = $(subst ','\'',$(gg_libdir))
-libdir_SED = $(subst ','\'',$(subst \,\\,$(gg_libdir_sed_in)))
 exedir     = $(dir $(gitexecdir))share/git-gui/lib
 
-GITGUI_SCRIPT   := $$0
 GITGUI_RELATIVE :=
 GITGUI_MACOSXAPP :=
 
 ifeq ($(exedir),$(gg_libdir))
 	GITGUI_RELATIVE := 1
 endif
-gg_libdir_sed_in := $(gg_libdir)
 ifeq ($(uname_S),Darwin)
         ifeq ($(shell test -d $(TKFRAMEWORK) && echo y),y)
 		GITGUI_MACOSXAPP := YesPlease
@@ -159,41 +152,15 @@
 ifdef GITGUI_MACOSXAPP
 GITGUI_MAIN := git-gui.tcl
 
-git-gui: GIT-VERSION-FILE GIT-GUI-VARS
-	$(QUIET_GEN)rm -f $@ $@+ && \
-	echo '#!$(SHELL_PATH_SQ)' >$@+ && \
-	echo 'if test "z$$*" = zversion ||' >>$@+ && \
-	echo '   test "z$$*" = z--version' >>$@+ && \
-	echo then >>$@+ && \
-	echo '	'echo \'git-gui version '$(GITGUI_VERSION)'\' >>$@+ && \
-	echo else >>$@+ && \
-	echo '	libdir="$${GIT_GUI_LIB_DIR:-$(libdir_SQ)}"' >>$@+ && \
-	echo '	'exec \"'$$libdir/Git Gui.app/Contents/MacOS/$(subst \,,$(TKEXECUTABLE))'\" \
-		'"$$0" "$$@"' >>$@+ && \
-	echo fi >>$@+ && \
-	chmod +x $@+ && \
-	mv $@+ $@
+git-gui: generate-macos-wrapper.sh GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
+	$(QUIET_GEN)$(SHELL_PATH) generate-macos-wrapper.sh "$@" ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE
 
-Git\ Gui.app: GIT-VERSION-FILE GIT-GUI-VARS \
+Git\ Gui.app: GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS \
 		macosx/Info.plist \
 		macosx/git-gui.icns \
 		macosx/AppMain.tcl \
-		$(TKFRAMEWORK)/Contents/MacOS/$(TKEXECUTABLE)
-	$(QUIET_GEN)rm -rf '$@' '$@'+ && \
-	mkdir -p '$@'+/Contents/MacOS && \
-	mkdir -p '$@'+/Contents/Resources/Scripts && \
-	cp '$(subst ','\'',$(subst \,,$(TKFRAMEWORK)/Contents/MacOS/$(TKEXECUTABLE)))' \
-		'$@'+/Contents/MacOS && \
-	cp macosx/git-gui.icns '$@'+/Contents/Resources && \
-	sed -e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \
-		-e 's/@@GITGUI_TKEXECUTABLE@@/$(TKEXECUTABLE)/g' \
-		macosx/Info.plist \
-		>'$@'+/Contents/Info.plist && \
-	sed -e 's|@@gitexecdir@@|$(gitexecdir_SQ)|' \
-		-e 's|@@GITGUI_LIBDIR@@|$(libdir_SED)|' \
-		macosx/AppMain.tcl \
-		>'$@'+/Contents/Resources/Scripts/AppMain.tcl && \
-	mv '$@'+ '$@'
+		$(TKEXECUTABLE)
+	$(QUIET_GEN)$(SHELL_PATH) generate-macos-app.sh . "$@" ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE
 endif
 
 ifdef GITGUI_WINDOWS_WRAPPER
@@ -203,18 +170,8 @@
 	cp $< $@
 endif
 
-$(GITGUI_MAIN): git-gui.sh GIT-VERSION-FILE GIT-GUI-VARS
-	$(QUIET_GEN)rm -f $@ $@+ && \
-	sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \
-		-e 's|@@SHELL_PATH@@|$(SHELL_PATH_SQ)|' \
-		-e '1,30s|^ argv0=$$0| argv0=$(GITGUI_SCRIPT)|' \
-		-e '1,30s|^ exec wish | exec '\''$(TCLTK_PATH_SED)'\'' |' \
-		-e 's/@@GITGUI_VERSION@@/$(GITGUI_VERSION)/g' \
-		-e 's|@@GITGUI_RELATIVE@@|$(GITGUI_RELATIVE)|' \
-		-e '$(GITGUI_RELATIVE)s|@@GITGUI_LIBDIR@@|$(libdir_SED)|' \
-		git-gui.sh >$@+ && \
-	chmod +x $@+ && \
-	mv $@+ $@
+$(GITGUI_MAIN): git-gui.sh GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
+	$(QUIET_GEN)$(SHELL_PATH) generate-git-gui.sh "$<" "$@" ./GIT-GUI-BUILD-OPTIONS ./GIT-VERSION-FILE
 
 XGETTEXT   ?= xgettext
 ifdef NO_MSGFMT
@@ -239,35 +196,21 @@
 $(ALL_MSGFILES): %.msg : %.po
 	$(QUIET_MSGFMT0)$(MSGFMT) --statistics --tcl -l $(basename $(notdir $<)) -d $(dir $@) $< $(QUIET_MSGFMT1)
 
-lib/tclIndex: $(ALL_LIBFILES) GIT-GUI-VARS
-	$(QUIET_INDEX)if echo \
-	  $(foreach p,$(PRELOAD_FILES),source $p\;) \
-	  auto_mkindex lib $(patsubst lib/%,%,$(sort $(ALL_LIBFILES))) \
-	| $(TCL_PATH) $(QUIET_2DEVNULL); then : ok; \
-	else \
-	 echo >&2 "    * $(TCL_PATH) failed; using unoptimized loading"; \
-	 rm -f $@ ; \
-	 echo '# Autogenerated by git-gui Makefile' >$@ && \
-	 echo >>$@ && \
-	 $(foreach p,$(PRELOAD_FILES) $(sort $(ALL_LIBFILES)),echo '$(subst lib/,,$p)' >>$@ &&) \
-	 echo >>$@ ; \
-	fi
+lib/tclIndex: $(ALL_LIBFILES) generate-tclindex.sh GIT-GUI-BUILD-OPTIONS
+	$(QUIET_INDEX)$(SHELL_PATH) generate-tclindex.sh . ./GIT-GUI-BUILD-OPTIONS $(ALL_LIBFILES)
 
-TRACK_VARS = \
-	$(subst ','\'',SHELL_PATH='$(SHELL_PATH_SQ)') \
-	$(subst ','\'',TCL_PATH='$(TCL_PATH_SQ)') \
-	$(subst ','\'',TCLTK_PATH='$(TCLTK_PATH_SQ)') \
-	$(subst ','\'',gitexecdir='$(gitexecdir_SQ)') \
-	$(subst ','\'',gg_libdir='$(libdir_SQ)') \
-	GITGUI_MACOSXAPP=$(GITGUI_MACOSXAPP) \
-#end TRACK_VARS
-
-GIT-GUI-VARS: FORCE
-	@VARS='$(TRACK_VARS)'; \
-	if test x"$$VARS" != x"`cat $@ 2>/dev/null`" ; then \
-		echo >&2 "    * new locations or Tcl/Tk interpreter"; \
-		echo >$@ "$$VARS"; \
-	fi
+GIT-GUI-BUILD-OPTIONS: FORCE
+	@sed \
+		-e 's|@GITGUI_GITEXECDIR@|$(gitexecdir_SQ)|' \
+		-e 's|@GITGUI_LIBDIR@|$(libdir_SQ)|' \
+		-e 's|@GITGUI_RELATIVE@|$(GITGUI_RELATIVE)|' \
+		-e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \
+		-e 's|@TCLTK_PATH@|$(TCLTK_PATH_SQ)|' \
+		-e 's|@TCL_PATH@|$(TCL_PATH_SQ)|' \
+		-e 's|@TKEXECUTABLE@|$(TKEXECUTABLE_SQ)|' \
+		$@.in >$@+
+	@if grep -q '^[A-Z][A-Z_]*=@.*@$$' $@+; then echo "Unsubstituted build options in $@" >&2 && exit 1; fi
+	@if cmp $@+ $@ >/dev/null 2>&1; then $(RM) $@+; else mv $@+ $@; fi
 
 ifdef GITGUI_MACOSXAPP
 all:: git-gui Git\ Gui.app
@@ -317,13 +260,13 @@
 	$(QUIET)$(REMOVE_D0)'$(DESTDIR_SQ)$(libdir_SQ)' $(REMOVE_D1)
 	$(QUIET)$(REMOVE_D0)`dirname '$(DESTDIR_SQ)$(libdir_SQ)'` $(REMOVE_D1)
 
-dist-version:
+dist-version: GIT-VERSION-FILE
 	@mkdir -p $(TARDIR)
-	@echo $(GITGUI_VERSION) > $(TARDIR)/version
+	@sed 's|^GITGUI_VERSION=||' <GIT-VERSION-FILE  >$(TARDIR)/version
 
 clean::
-	$(RM_RF) $(GITGUI_MAIN) lib/tclIndex po/*.msg
-	$(RM_RF) GIT-VERSION-FILE GIT-GUI-VARS
+	$(RM_RF) $(GITGUI_MAIN) lib/tclIndex po/*.msg $(PO_TEMPLATE)
+	$(RM_RF) GIT-VERSION-FILE GIT-GUI-BUILD-OPTIONS
 ifdef GITGUI_MACOSXAPP
 	$(RM_RF) 'Git Gui.app'* git-gui
 endif
diff --git a/git-gui/generate-git-gui.sh b/git-gui/generate-git-gui.sh
new file mode 100755
index 0000000..39dfafd
--- /dev/null
+++ b/git-gui/generate-git-gui.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+set -e
+
+if test "$#" -ne 4
+then
+	echo >&2 "usage: $0 <INPUT> <OUTPUT> <BUILD_OPTIONS> <VERSION_FILE>"
+	exit 1
+fi
+
+INPUT="$1"
+OUTPUT="$2"
+BUILD_OPTIONS="$3"
+VERSION_FILE="$4"
+
+. "${BUILD_OPTIONS}"
+. "${VERSION_FILE}"
+
+rm -f "$OUTPUT" "$OUTPUT+"
+sed \
+	-e "1s|#!.*/sh|#!$SHELL_PATH|" \
+	-e "s|@@SHELL_PATH@@|$SHELL_PATH|" \
+	-e "1,30s|^ exec wish | exec '$TCLTK_PATH' |" \
+	-e "s|@@GITGUI_VERSION@@|$GITGUI_VERSION|g" \
+	-e "s|@@GITGUI_RELATIVE@@|$GITGUI_RELATIVE|" \
+	-e "${GITGUI_RELATIVE}s|@@GITGUI_LIBDIR@@|$GITGUI_LIBDIR|" \
+	"$INPUT" >"$OUTPUT"+
+chmod +x "$OUTPUT"+
+mv "$OUTPUT"+ "$OUTPUT"
diff --git a/git-gui/generate-macos-app.sh b/git-gui/generate-macos-app.sh
new file mode 100755
index 0000000..71b9fa6
--- /dev/null
+++ b/git-gui/generate-macos-app.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+set -e
+
+SOURCE_DIR="$1"
+OUTPUT="$2"
+BUILD_OPTIONS="$3"
+VERSION_FILE="$4"
+
+. "$BUILD_OPTIONS"
+. "$VERSION_FILE"
+
+rm -rf "$OUTPUT" "$OUTPUT+"
+
+mkdir -p "$OUTPUT+/Contents/MacOS"
+mkdir -p "$OUTPUT+/Contents/Resources/Scripts"
+
+cp "$TKEXECUTABLE" "$OUTPUT+/Contents/MacOS"
+cp "$SOURCE_DIR/macosx/git-gui.icns" "$OUTPUT+/Contents/Resources"
+sed \
+	-e "s/@@GITGUI_VERSION@@/$GITGUI_VERSION/g" \
+	-e "s/@@GITGUI_TKEXECUTABLE@@/$(basename "$TKEXECUTABLE")/g" \
+	"$SOURCE_DIR/macosx/Info.plist" \
+	>"$OUTPUT+/Contents/Info.plist"
+sed \
+	-e "s|@@gitexecdir@@|$GITGUI_GITEXECDIR|" \
+	-e "s|@@GITGUI_LIBDIR@@|$GITGUI_LIBDIR|" \
+	"$SOURCE_DIR/macosx/AppMain.tcl" \
+	>"$OUTPUT+/Contents/Resources/Scripts/AppMain.tcl"
+mv "$OUTPUT+" "$OUTPUT"
diff --git a/git-gui/generate-macos-wrapper.sh b/git-gui/generate-macos-wrapper.sh
new file mode 100755
index 0000000..0304937
--- /dev/null
+++ b/git-gui/generate-macos-wrapper.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+set -e
+
+if test "$#" -ne 3
+then
+	echo >&2 "usage: $0 <OUTPUT> <BUILD_OPTIONS> <VERSION_FILE>"
+	exit 1
+fi
+
+OUTPUT="$1"
+BUILD_OPTIONS="$2"
+VERSION_FILE="$3"
+
+. "$BUILD_OPTIONS"
+
+rm -f "$OUTPUT" "$OUTPUT+"
+
+(
+	echo "#!$SHELL_PATH"
+	cat "$BUILD_OPTIONS" "$VERSION_FILE"
+	cat <<-'EOF'
+	if test "z$*" = zversion ||
+	   test "z$*" = z--version
+	then
+		echo "git-gui version $GITGUI_VERSION"
+	else
+		libdir="${GIT_GUI_LIB_DIR:-$GITGUI_LIBDIR}"
+		exec "$libdir/Git Gui.app/Contents/MacOS/$(basename "$TKEXECUTABLE")" "$0" "$@"
+	fi
+	EOF
+) >"$OUTPUT+"
+
+chmod +x "$OUTPUT+"
+mv "$OUTPUT+" "$OUTPUT"
diff --git a/git-gui/generate-tclindex.sh b/git-gui/generate-tclindex.sh
new file mode 100755
index 0000000..0b031d8
--- /dev/null
+++ b/git-gui/generate-tclindex.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+if test "$#" -lt 3
+then
+	echo >&2 "usage: $0 <BUILD_DIR> <BUILD_OPTIONS> <LIBFILE> [<LIBFILE>...]"
+	exit 1
+fi
+
+BUILD_DIR="$1"
+BUILD_OPTIONS="$2"
+shift 2
+LIBFILES="$(echo "$@" | sort | sed 's|lib/||g')"
+
+. "$BUILD_OPTIONS"
+
+cd "$BUILD_DIR"
+
+if {
+	echo "source lib/class.tcl;"
+	echo "auto_mkindex lib $LIBFILES"
+} | "$TCL_PATH"
+then
+	: ok
+else
+	 echo >&2 "    * $TCL_PATH failed; using unoptimized loading"
+	 rm -f lib/tclIndex
+	 echo '# Autogenerated by git-gui Makefile' >lib/tclIndex
+	 echo >>lib/tclIndex
+	 echo "class.tcl" >>lib/tclIndex
+	 printf "%s\n" $LIBFILES >>lib/tclIndex
+	 echo >>lib/tclIndex
+fi
diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh
index 887d6d5..28572c8 100755
--- a/git-gui/git-gui.sh
+++ b/git-gui/git-gui.sh
@@ -880,6 +880,12 @@
 			color::sync_with_theme
 		}
 	}
+
+	global comment_string
+	set comment_string [get_config core.commentstring]
+	if {$comment_string eq {}} {
+		set comment_string [get_config core.commentchar]
+	}
 }
 
 set default_config(branch.autosetupmerge) true
@@ -890,6 +896,8 @@
 set default_config(merge.verbosity) 2
 set default_config(user.name) {}
 set default_config(user.email) {}
+set default_config(core.commentchar) "#"
+set default_config(core.commentstring) {}
 
 set default_config(gui.encoding) [encoding system]
 set default_config(gui.matchtrackingbranch) false
diff --git a/git-gui/lib/commit.tcl b/git-gui/lib/commit.tcl
index 208dc28..a570f9c 100644
--- a/git-gui/lib/commit.tcl
+++ b/git-gui/lib/commit.tcl
@@ -211,7 +211,9 @@
 	# Strip trailing whitespace
 	regsub -all -line {[ \t\r]+$} $msg {} msg
 	# Strip comment lines
-	regsub -all {(^|\n)#[^\n]*} $msg {\1} msg
+	global comment_string
+	set cmt_rx [strcat {(^|\n)} [regsub -all {\W} $comment_string {\\&}] {[^\n]*}]
+	regsub -all $cmt_rx $msg {\1} msg
 	# Strip leading empty lines
 	regsub {^\n*} $msg {} msg
 	# Compress consecutive empty lines
diff --git a/git-gui/lib/meson.build b/git-gui/lib/meson.build
new file mode 100644
index 0000000..4b9efab
--- /dev/null
+++ b/git-gui/lib/meson.build
@@ -0,0 +1,74 @@
+libfiles = [
+  'about.tcl',
+  'blame.tcl',
+  'branch_checkout.tcl',
+  'branch_create.tcl',
+  'branch_delete.tcl',
+  'branch_rename.tcl',
+  'branch.tcl',
+  'browser.tcl',
+  'checkout_op.tcl',
+  'choose_font.tcl',
+  'choose_repository.tcl',
+  'choose_rev.tcl',
+  'chord.tcl',
+  'class.tcl',
+  'commit.tcl',
+  'console.tcl',
+  'database.tcl',
+  'date.tcl',
+  'diff.tcl',
+  'encoding.tcl',
+  'error.tcl',
+  'index.tcl',
+  'line.tcl',
+  'logo.tcl',
+  'merge.tcl',
+  'mergetool.tcl',
+  'option.tcl',
+  'remote_add.tcl',
+  'remote_branch_delete.tcl',
+  'remote.tcl',
+  'search.tcl',
+  'shortcut.tcl',
+  'spellcheck.tcl',
+  'sshkey.tcl',
+  'status_bar.tcl',
+  'themed.tcl',
+  'tools_dlg.tcl',
+  'tools.tcl',
+  'transport.tcl',
+  'win32.tcl',
+]
+
+nontcl_libfiles = [
+  'git-gui.ico',
+  'win32_shortcut.js',
+]
+
+foreach file : libfiles + nontcl_libfiles
+  configure_file(
+    input: file,
+    output: file,
+    copy: true,
+    install: true,
+    install_dir: get_option('datadir') / 'git-gui/lib',
+  )
+endforeach
+
+custom_target(
+  output: 'tclIndex',
+  command: [
+    shell,
+    meson.project_source_root() / 'generate-tclindex.sh',
+    meson.project_build_root(),
+    meson.project_build_root() / 'GIT-GUI-BUILD-OPTIONS',
+    libfiles,
+  ],
+  depend_files: [
+    libfiles,
+    build_options,
+  ],
+  install: true,
+  install_dir: get_option('datadir') / 'git-gui/lib',
+)
diff --git a/git-gui/meson.build b/git-gui/meson.build
new file mode 100644
index 0000000..cdae85e
--- /dev/null
+++ b/git-gui/meson.build
@@ -0,0 +1,148 @@
+project('git-gui',
+  meson_version: '>=0.61.0',
+)
+
+fs = import('fs')
+
+shell = find_program('sh')
+tclsh = find_program('tclsh')
+wish = find_program('wish')
+
+build_options_config = configuration_data()
+if target_machine.system() == 'windows'
+  build_options_config.set('GITGUI_RELATIVE', '1')
+else
+  build_options_config.set('GITGUI_RELATIVE', '')
+endif
+build_options_config.set_quoted('GITGUI_GITEXECDIR', get_option('prefix') / get_option('libexecdir') / 'git-core')
+build_options_config.set_quoted('GITGUI_LIBDIR', get_option('prefix') / get_option('datadir') / 'git-gui/lib')
+build_options_config.set_quoted('SHELL_PATH', fs.as_posix(shell.full_path()))
+build_options_config.set_quoted('TCLTK_PATH', fs.as_posix(wish.full_path()))
+build_options_config.set_quoted('TCL_PATH', fs.as_posix(tclsh.full_path()))
+if target_machine.system() == 'darwin'
+  tkexecutables = [
+    '/Library/Frameworks/Tk.framework/Resources/Wish.app/Contents/MacOS/Wish',
+    '/System/Library/Frameworks/Tk.framework/Resources/Wish.app/Contents/MacOS/Wish',
+    '/System/Library/Frameworks/Tk.framework/Resources/Wish Shell.app/Contents/MacOS/Wish Shell',
+  ]
+  tkexecutable = find_program(tkexecutables)
+  build_options_config.set_quoted('TKEXECUTABLE', tkexecutable.full_path())
+else
+  build_options_config.set('TKEXECUTABLE', '')
+endif
+
+build_options = configure_file(
+  input: 'GIT-GUI-BUILD-OPTIONS.in',
+  output: 'GIT-GUI-BUILD-OPTIONS',
+  configuration: build_options_config,
+)
+
+version_file = custom_target(
+  input: 'GIT-VERSION-GEN',
+  output: 'GIT-VERSION-FILE',
+  command: [
+    shell,
+    '@INPUT@',
+    meson.current_source_dir(),
+    '@OUTPUT@',
+  ],
+  build_always_stale: true,
+)
+
+configure_file(
+  input: 'git-gui--askpass',
+  output: 'git-gui--askpass',
+  copy: true,
+  install: true,
+  install_dir: get_option('libexecdir') / 'git-core',
+)
+
+gitgui_main = 'git-gui'
+gitgui_main_install_dir = get_option('libexecdir') / 'git-core'
+
+if target_machine.system() == 'windows'
+  gitgui_main = 'git-gui.tcl'
+
+  configure_file(
+    input: 'windows/git-gui.sh',
+    output: 'git-gui',
+    copy: true,
+    install: true,
+    install_dir: get_option('libexecdir') / 'git-core',
+  )
+elif target_machine.system() == 'darwin'
+  gitgui_main = 'git-gui.tcl'
+  gitgui_main_install_dir = get_option('datadir') / 'git-gui/lib'
+
+  custom_target(
+    output: 'git-gui',
+    command: [
+      shell,
+      meson.current_source_dir() / 'generate-macos-wrapper.sh',
+      '@OUTPUT@',
+      meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS',
+      meson.current_build_dir() / 'GIT-VERSION-FILE',
+    ],
+    depends: [
+      version_file,
+    ],
+    depend_files: [
+      build_options,
+    ],
+    install: true,
+    install_dir: get_option('libexecdir') / 'git-core',
+  )
+
+  custom_target(
+    output: 'Git Gui.app',
+    command: [
+      shell,
+      meson.current_source_dir() / 'generate-macos-app.sh',
+      meson.current_source_dir(),
+      meson.current_build_dir() / 'Git Gui.app',
+      meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS',
+      meson.current_build_dir() / 'GIT-VERSION-FILE',
+    ],
+    depends: [
+      version_file,
+    ],
+    depend_files: [
+      build_options,
+      'macosx/AppMain.tcl',
+      'macosx/Info.plist',
+      'macosx/git-gui.icns',
+    ],
+    build_by_default: true,
+    install: true,
+    install_dir: get_option('datadir') / 'git-gui/lib',
+  )
+endif
+
+custom_target(
+  input: 'git-gui.sh',
+  output: gitgui_main,
+  command: [
+    shell,
+    meson.current_source_dir() / 'generate-git-gui.sh',
+    '@INPUT@',
+    '@OUTPUT@',
+    meson.current_build_dir() / 'GIT-GUI-BUILD-OPTIONS',
+    meson.current_build_dir() / 'GIT-VERSION-FILE',
+  ],
+  depends: [
+    version_file,
+  ],
+  depend_files: [
+    build_options,
+  ],
+  install: true,
+  install_dir: gitgui_main_install_dir,
+)
+
+install_symlink('git-citool',
+  install_dir: get_option('libexecdir') / 'git-core',
+  pointing_to: 'git-gui',
+)
+
+subdir('lib')
+subdir('po')
diff --git a/git-gui/po/.gitignore b/git-gui/po/.gitignore
index a89cf44..b900bb9 100644
--- a/git-gui/po/.gitignore
+++ b/git-gui/po/.gitignore
@@ -1,2 +1,3 @@
 *.msg
 *~
+/git-gui.pot
diff --git a/git-gui/po/README b/git-gui/po/README
index 1162331..4a1aa79 100644
--- a/git-gui/po/README
+++ b/git-gui/po/README
@@ -21,8 +21,8 @@
 You would then need to clone the git-gui project repository and create
 a feature branch to begin working:
 
-	$ git clone git://repo.or.cz/git-gui.git
-	$ cd git-gui.git
+	$ git clone https://github.com/j6t/git-gui
+	$ cd git-gui
 	$ git checkout -b my-translation
 
 The "git checkout" command creates a new branch to keep your work
@@ -47,6 +47,10 @@
 reading, because we are covering the basics.
 
 If you did not find your language, you would need to start one yourself.
+Generate po/git-gui.pot using
+
+	$ make po/git-gui.pot
+
 Copy po/git-gui.pot file to po/af.po (replace "af" with the code for
 your language).  Edit the first several lines to match existing *.po
 files to make it clear this is a translation table for git-gui project,
@@ -153,7 +157,7 @@
 	$ git add po/af.po
 	$ git commit -s -m 'git-gui: added Afrikaans translation.'
 	$ git send-email --to 'git@vger.kernel.org' \
-	   --cc 'Pat Thoyts <patthoyts@users.sourceforge.net>' \
+	   --cc 'Johannes Sixt <j6t@kdbg.org>' \
 	   --subject 'git-gui: Afrikaans translation' \
 	   master..
 
@@ -169,18 +173,7 @@
 
 	$ git checkout master
 	$ git pull
-
-In the former case, you will edit po/af.po (again, replace "af" with
-your language code), and after testing and updating the Last-Translator:
-and PO-Revision-Date: lines, "add/commit/push" as in the previous
-section.
-
-By comparing "POT-Creation-Date:" line in po/git-gui.pot file and
-po/af.po file, you can tell if there are new messages that need to be
-translated.  You would need the GNU gettext package to perform this
-step.
-
-	$ msgmerge -U po/af.po po/git-gui.pot
+	$ make ALL_POFILES=po/af.po update-po
 
 This updates po/af.po (again, replace "af" with your language
 code) so that it contains msgid lines (i.e. the original) that
@@ -200,52 +193,5 @@
  - New messages added to the software will have msgstr lines with empty
    strings.  You would need to translate them.
 
-The po/git-gui.pot file is updated by the internationalization
-coordinator from time to time.  You _could_ update it yourself, but
-translators are discouraged from doing so because we would want all
-language teams to be working off of the same version of git-gui.pot.
-
-****************************************************************
-
-This section is a note to the internationalization coordinator, and
-translators do not have to worry about it too much.
-
-The message template file po/git-gui.pot needs to be kept up to date
-relative to the software the translations apply to, and it is the
-responsibility of the internationalization coordinator.
-
-When updating po/git-gui.pot file, however, _never_ run "msgmerge -U
-po/xx.po" for individual language translations, unless you are absolutely
-sure that there is no outstanding work on translation for language xx.
-Doing so will create unnecessary merge conflicts and force needless
-re-translation on translators.  The translator however may not have access
-to the msgmerge tool, in which case the coordinator may run it for the
-translator as a service.
-
-But mistakes do happen.  Suppose a translation was based on an older
-version X, the POT file was updated at version Y and then msgmerge was run
-at version Z for the language, and the translator sent in a patch based on
-version X:
-
-         ? translated
-        /
-    ---X---Y---Z (master)
-
-The coordinator could recover from such a mistake by first applying the
-patch to X, replace the translated file in Z, and then running msgmerge
-again based on the updated POT file and commit the result.  The sequence
-would look like this:
-
-    $ git checkout X
-    $ git am -s xx.patch
-    $ git checkout master
-    $ git checkout HEAD@{1} po/xx.po
-    $ msgmerge -U po/xx.po po/git-gui.pot
-    $ git commit -c HEAD@{1} po/xx.po
-
-State in the message that the translated messages are based on a slightly
-older version, and msgmerge was run to incorporate changes to message
-templates from the updated POT file.  The result needs to be further
-translated, but at least the messages that were updated by the patch that
-were not changed by the POT update will survive the process and do not
-need to be re-translated.
+After testing and updating the Last-Translator: and PO-Revision-Date:
+lines, "add/commit/push" as in the previous section.
diff --git a/git-gui/po/git-gui.pot b/git-gui/po/git-gui.pot
deleted file mode 100644
index b79ed4e..0000000
--- a/git-gui/po/git-gui.pot
+++ /dev/null
@@ -1,2666 +0,0 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: PACKAGE VERSION\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2020-02-08 22:54+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: git-gui.sh:847
-#, tcl-format
-msgid "Invalid font specified in %s:"
-msgstr ""
-
-#: git-gui.sh:901
-msgid "Main Font"
-msgstr ""
-
-#: git-gui.sh:902
-msgid "Diff/Console Font"
-msgstr ""
-
-#: git-gui.sh:917 git-gui.sh:931 git-gui.sh:944 git-gui.sh:1034 git-gui.sh:1053
-#: git-gui.sh:3212
-msgid "git-gui: fatal error"
-msgstr ""
-
-#: git-gui.sh:918
-msgid "Cannot find git in PATH."
-msgstr ""
-
-#: git-gui.sh:945
-msgid "Cannot parse Git version string:"
-msgstr ""
-
-#: git-gui.sh:970
-#, tcl-format
-msgid ""
-"Git version cannot be determined.\n"
-"\n"
-"%s claims it is version '%s'.\n"
-"\n"
-"%s requires at least Git 1.5.0 or later.\n"
-"\n"
-"Assume '%s' is version 1.5.0?\n"
-msgstr ""
-
-#: git-gui.sh:1267
-msgid "Git directory not found:"
-msgstr ""
-
-#: git-gui.sh:1301
-msgid "Cannot move to top of working directory:"
-msgstr ""
-
-#: git-gui.sh:1309
-msgid "Cannot use bare repository:"
-msgstr ""
-
-#: git-gui.sh:1317
-msgid "No working directory"
-msgstr ""
-
-#: git-gui.sh:1491 lib/checkout_op.tcl:306
-msgid "Refreshing file status..."
-msgstr ""
-
-#: git-gui.sh:1551
-msgid "Scanning for modified files ..."
-msgstr ""
-
-#: git-gui.sh:1629
-msgid "Calling prepare-commit-msg hook..."
-msgstr ""
-
-#: git-gui.sh:1646
-msgid "Commit declined by prepare-commit-msg hook."
-msgstr ""
-
-#: git-gui.sh:1804 lib/browser.tcl:252
-msgid "Ready."
-msgstr ""
-
-#: git-gui.sh:1968
-#, tcl-format
-msgid ""
-"Display limit (gui.maxfilesdisplayed = %s) reached, not showing all %s files."
-msgstr ""
-
-#: git-gui.sh:2091
-msgid "Unmodified"
-msgstr ""
-
-#: git-gui.sh:2093
-msgid "Modified, not staged"
-msgstr ""
-
-#: git-gui.sh:2094 git-gui.sh:2106
-msgid "Staged for commit"
-msgstr ""
-
-#: git-gui.sh:2095 git-gui.sh:2107
-msgid "Portions staged for commit"
-msgstr ""
-
-#: git-gui.sh:2096 git-gui.sh:2108
-msgid "Staged for commit, missing"
-msgstr ""
-
-#: git-gui.sh:2098
-msgid "File type changed, not staged"
-msgstr ""
-
-#: git-gui.sh:2099 git-gui.sh:2100
-msgid "File type changed, old type staged for commit"
-msgstr ""
-
-#: git-gui.sh:2101
-msgid "File type changed, staged"
-msgstr ""
-
-#: git-gui.sh:2102
-msgid "File type change staged, modification not staged"
-msgstr ""
-
-#: git-gui.sh:2103
-msgid "File type change staged, file missing"
-msgstr ""
-
-#: git-gui.sh:2105
-msgid "Untracked, not staged"
-msgstr ""
-
-#: git-gui.sh:2110
-msgid "Missing"
-msgstr ""
-
-#: git-gui.sh:2111
-msgid "Staged for removal"
-msgstr ""
-
-#: git-gui.sh:2112
-msgid "Staged for removal, still present"
-msgstr ""
-
-#: git-gui.sh:2114 git-gui.sh:2115 git-gui.sh:2116 git-gui.sh:2117
-#: git-gui.sh:2118 git-gui.sh:2119
-msgid "Requires merge resolution"
-msgstr ""
-
-#: git-gui.sh:2164
-msgid "Couldn't find gitk in PATH"
-msgstr ""
-
-#: git-gui.sh:2210 git-gui.sh:2245
-#, tcl-format
-msgid "Starting %s... please wait..."
-msgstr ""
-
-#: git-gui.sh:2224
-msgid "Couldn't find git gui in PATH"
-msgstr ""
-
-#: git-gui.sh:2726 lib/choose_repository.tcl:53
-msgid "Repository"
-msgstr ""
-
-#: git-gui.sh:2727
-msgid "Edit"
-msgstr ""
-
-#: git-gui.sh:2729 lib/choose_rev.tcl:567
-msgid "Branch"
-msgstr ""
-
-#: git-gui.sh:2732 lib/choose_rev.tcl:554
-msgid "Commit@@noun"
-msgstr ""
-
-#: git-gui.sh:2735 lib/merge.tcl:127 lib/merge.tcl:174
-msgid "Merge"
-msgstr ""
-
-#: git-gui.sh:2736 lib/choose_rev.tcl:563
-msgid "Remote"
-msgstr ""
-
-#: git-gui.sh:2739
-msgid "Tools"
-msgstr ""
-
-#: git-gui.sh:2748
-msgid "Explore Working Copy"
-msgstr ""
-
-#: git-gui.sh:2763
-msgid "Git Bash"
-msgstr ""
-
-#: git-gui.sh:2772
-msgid "Browse Current Branch's Files"
-msgstr ""
-
-#: git-gui.sh:2776
-msgid "Browse Branch Files..."
-msgstr ""
-
-#: git-gui.sh:2781
-msgid "Visualize Current Branch's History"
-msgstr ""
-
-#: git-gui.sh:2785
-msgid "Visualize All Branch History"
-msgstr ""
-
-#: git-gui.sh:2792
-#, tcl-format
-msgid "Browse %s's Files"
-msgstr ""
-
-#: git-gui.sh:2794
-#, tcl-format
-msgid "Visualize %s's History"
-msgstr ""
-
-#: git-gui.sh:2799 lib/database.tcl:40
-msgid "Database Statistics"
-msgstr ""
-
-#: git-gui.sh:2802 lib/database.tcl:33
-msgid "Compress Database"
-msgstr ""
-
-#: git-gui.sh:2805
-msgid "Verify Database"
-msgstr ""
-
-#: git-gui.sh:2812 git-gui.sh:2816 git-gui.sh:2820
-msgid "Create Desktop Icon"
-msgstr ""
-
-#: git-gui.sh:2828 lib/choose_repository.tcl:209 lib/choose_repository.tcl:217
-msgid "Quit"
-msgstr ""
-
-#: git-gui.sh:2836
-msgid "Undo"
-msgstr ""
-
-#: git-gui.sh:2839
-msgid "Redo"
-msgstr ""
-
-#: git-gui.sh:2843 git-gui.sh:3461
-msgid "Cut"
-msgstr ""
-
-#: git-gui.sh:2846 git-gui.sh:3464 git-gui.sh:3540 git-gui.sh:3633
-#: lib/console.tcl:69
-msgid "Copy"
-msgstr ""
-
-#: git-gui.sh:2849 git-gui.sh:3467
-msgid "Paste"
-msgstr ""
-
-#: git-gui.sh:2852 git-gui.sh:3470 lib/remote_branch_delete.tcl:39
-#: lib/branch_delete.tcl:28
-msgid "Delete"
-msgstr ""
-
-#: git-gui.sh:2856 git-gui.sh:3474 git-gui.sh:3637 lib/console.tcl:71
-msgid "Select All"
-msgstr ""
-
-#: git-gui.sh:2865
-msgid "Create..."
-msgstr ""
-
-#: git-gui.sh:2871
-msgid "Checkout..."
-msgstr ""
-
-#: git-gui.sh:2877
-msgid "Rename..."
-msgstr ""
-
-#: git-gui.sh:2882
-msgid "Delete..."
-msgstr ""
-
-#: git-gui.sh:2887
-msgid "Reset..."
-msgstr ""
-
-#: git-gui.sh:2897
-msgid "Done"
-msgstr ""
-
-#: git-gui.sh:2899
-msgid "Commit@@verb"
-msgstr ""
-
-#: git-gui.sh:2908 git-gui.sh:3400
-msgid "Amend Last Commit"
-msgstr ""
-
-#: git-gui.sh:2918 git-gui.sh:3361 lib/remote_branch_delete.tcl:101
-msgid "Rescan"
-msgstr ""
-
-#: git-gui.sh:2924
-msgid "Stage To Commit"
-msgstr ""
-
-#: git-gui.sh:2930
-msgid "Stage Changed Files To Commit"
-msgstr ""
-
-#: git-gui.sh:2936
-msgid "Unstage From Commit"
-msgstr ""
-
-#: git-gui.sh:2942 lib/index.tcl:521
-msgid "Revert Changes"
-msgstr ""
-
-#: git-gui.sh:2950 git-gui.sh:3700 git-gui.sh:3731
-msgid "Show Less Context"
-msgstr ""
-
-#: git-gui.sh:2954 git-gui.sh:3704 git-gui.sh:3735
-msgid "Show More Context"
-msgstr ""
-
-#: git-gui.sh:2961 git-gui.sh:3374 git-gui.sh:3485
-msgid "Sign Off"
-msgstr ""
-
-#: git-gui.sh:2977
-msgid "Local Merge..."
-msgstr ""
-
-#: git-gui.sh:2982
-msgid "Abort Merge..."
-msgstr ""
-
-#: git-gui.sh:2994 git-gui.sh:3022
-msgid "Add..."
-msgstr ""
-
-#: git-gui.sh:2998
-msgid "Push..."
-msgstr ""
-
-#: git-gui.sh:3002
-msgid "Delete Branch..."
-msgstr ""
-
-#: git-gui.sh:3012 git-gui.sh:3666
-msgid "Options..."
-msgstr ""
-
-#: git-gui.sh:3023
-msgid "Remove..."
-msgstr ""
-
-#: git-gui.sh:3032 lib/choose_repository.tcl:67
-msgid "Help"
-msgstr ""
-
-#: git-gui.sh:3036 git-gui.sh:3040 lib/choose_repository.tcl:61
-#: lib/choose_repository.tcl:70 lib/about.tcl:14
-#, tcl-format
-msgid "About %s"
-msgstr ""
-
-#: git-gui.sh:3064
-msgid "Online Documentation"
-msgstr ""
-
-#: git-gui.sh:3067 lib/choose_repository.tcl:64 lib/choose_repository.tcl:73
-msgid "Show SSH Key"
-msgstr ""
-
-#: git-gui.sh:3097 git-gui.sh:3229
-msgid "usage:"
-msgstr ""
-
-#: git-gui.sh:3101 git-gui.sh:3233
-msgid "Usage"
-msgstr ""
-
-#: git-gui.sh:3182 lib/blame.tcl:575
-msgid "Error"
-msgstr ""
-
-#: git-gui.sh:3213
-#, tcl-format
-msgid "fatal: cannot stat path %s: No such file or directory"
-msgstr ""
-
-#: git-gui.sh:3246
-msgid "Current Branch:"
-msgstr ""
-
-#: git-gui.sh:3271
-msgid "Unstaged Changes"
-msgstr ""
-
-#: git-gui.sh:3293
-msgid "Staged Changes (Will Commit)"
-msgstr ""
-
-#: git-gui.sh:3367
-msgid "Stage Changed"
-msgstr ""
-
-#: git-gui.sh:3386 lib/transport.tcl:137
-msgid "Push"
-msgstr ""
-
-#: git-gui.sh:3413
-msgid "Initial Commit Message:"
-msgstr ""
-
-#: git-gui.sh:3414
-msgid "Amended Commit Message:"
-msgstr ""
-
-#: git-gui.sh:3415
-msgid "Amended Initial Commit Message:"
-msgstr ""
-
-#: git-gui.sh:3416
-msgid "Amended Merge Commit Message:"
-msgstr ""
-
-#: git-gui.sh:3417
-msgid "Merge Commit Message:"
-msgstr ""
-
-#: git-gui.sh:3418
-msgid "Commit Message:"
-msgstr ""
-
-#: git-gui.sh:3477 git-gui.sh:3641 lib/console.tcl:73
-msgid "Copy All"
-msgstr ""
-
-#: git-gui.sh:3501 lib/blame.tcl:106
-msgid "File:"
-msgstr ""
-
-#: git-gui.sh:3549 lib/choose_repository.tcl:1100
-msgid "Open"
-msgstr ""
-
-#: git-gui.sh:3629
-msgid "Refresh"
-msgstr ""
-
-#: git-gui.sh:3650
-msgid "Decrease Font Size"
-msgstr ""
-
-#: git-gui.sh:3654
-msgid "Increase Font Size"
-msgstr ""
-
-#: git-gui.sh:3662 lib/blame.tcl:296
-msgid "Encoding"
-msgstr ""
-
-#: git-gui.sh:3673
-msgid "Apply/Reverse Hunk"
-msgstr ""
-
-#: git-gui.sh:3678
-msgid "Apply/Reverse Line"
-msgstr ""
-
-#: git-gui.sh:3684 git-gui.sh:3794 git-gui.sh:3805
-msgid "Revert Hunk"
-msgstr ""
-
-#: git-gui.sh:3689 git-gui.sh:3801 git-gui.sh:3812
-msgid "Revert Line"
-msgstr ""
-
-#: git-gui.sh:3694 git-gui.sh:3791
-msgid "Undo Last Revert"
-msgstr ""
-
-#: git-gui.sh:3713
-msgid "Run Merge Tool"
-msgstr ""
-
-#: git-gui.sh:3718
-msgid "Use Remote Version"
-msgstr ""
-
-#: git-gui.sh:3722
-msgid "Use Local Version"
-msgstr ""
-
-#: git-gui.sh:3726
-msgid "Revert To Base"
-msgstr ""
-
-#: git-gui.sh:3744
-msgid "Visualize These Changes In The Submodule"
-msgstr ""
-
-#: git-gui.sh:3748
-msgid "Visualize Current Branch History In The Submodule"
-msgstr ""
-
-#: git-gui.sh:3752
-msgid "Visualize All Branch History In The Submodule"
-msgstr ""
-
-#: git-gui.sh:3757
-msgid "Start git gui In The Submodule"
-msgstr ""
-
-#: git-gui.sh:3793
-msgid "Unstage Hunk From Commit"
-msgstr ""
-
-#: git-gui.sh:3797
-msgid "Unstage Lines From Commit"
-msgstr ""
-
-#: git-gui.sh:3798 git-gui.sh:3809
-msgid "Revert Lines"
-msgstr ""
-
-#: git-gui.sh:3800
-msgid "Unstage Line From Commit"
-msgstr ""
-
-#: git-gui.sh:3804
-msgid "Stage Hunk For Commit"
-msgstr ""
-
-#: git-gui.sh:3808
-msgid "Stage Lines For Commit"
-msgstr ""
-
-#: git-gui.sh:3811
-msgid "Stage Line For Commit"
-msgstr ""
-
-#: git-gui.sh:3861
-msgid "Initializing..."
-msgstr ""
-
-#: git-gui.sh:4017
-#, tcl-format
-msgid ""
-"Possible environment issues exist.\n"
-"\n"
-"The following environment variables are probably\n"
-"going to be ignored by any Git subprocess run\n"
-"by %s:\n"
-"\n"
-msgstr ""
-
-#: git-gui.sh:4046
-msgid ""
-"\n"
-"This is due to a known issue with the\n"
-"Tcl binary distributed by Cygwin."
-msgstr ""
-
-#: git-gui.sh:4051
-#, tcl-format
-msgid ""
-"\n"
-"\n"
-"A good replacement for %s\n"
-"is placing values for the user.name and\n"
-"user.email settings into your personal\n"
-"~/.gitconfig file.\n"
-msgstr ""
-
-#: lib/spellcheck.tcl:57
-msgid "Unsupported spell checker"
-msgstr ""
-
-#: lib/spellcheck.tcl:65
-msgid "Spell checking is unavailable"
-msgstr ""
-
-#: lib/spellcheck.tcl:68
-msgid "Invalid spell checking configuration"
-msgstr ""
-
-#: lib/spellcheck.tcl:70
-#, tcl-format
-msgid "Reverting dictionary to %s."
-msgstr ""
-
-#: lib/spellcheck.tcl:73
-msgid "Spell checker silently failed on startup"
-msgstr ""
-
-#: lib/spellcheck.tcl:80
-msgid "Unrecognized spell checker"
-msgstr ""
-
-#: lib/spellcheck.tcl:186
-msgid "No Suggestions"
-msgstr ""
-
-#: lib/spellcheck.tcl:388
-msgid "Unexpected EOF from spell checker"
-msgstr ""
-
-#: lib/spellcheck.tcl:392
-msgid "Spell Checker Failed"
-msgstr ""
-
-#: lib/transport.tcl:6 lib/remote_add.tcl:132
-#, tcl-format
-msgid "fetch %s"
-msgstr ""
-
-#: lib/transport.tcl:7
-#, tcl-format
-msgid "Fetching new changes from %s"
-msgstr ""
-
-#: lib/transport.tcl:18
-#, tcl-format
-msgid "remote prune %s"
-msgstr ""
-
-#: lib/transport.tcl:19
-#, tcl-format
-msgid "Pruning tracking branches deleted from %s"
-msgstr ""
-
-#: lib/transport.tcl:25
-msgid "fetch all remotes"
-msgstr ""
-
-#: lib/transport.tcl:26
-msgid "Fetching new changes from all remotes"
-msgstr ""
-
-#: lib/transport.tcl:40
-msgid "remote prune all remotes"
-msgstr ""
-
-#: lib/transport.tcl:41
-msgid "Pruning tracking branches deleted from all remotes"
-msgstr ""
-
-#: lib/transport.tcl:54 lib/transport.tcl:92 lib/transport.tcl:110
-#: lib/remote_add.tcl:162
-#, tcl-format
-msgid "push %s"
-msgstr ""
-
-#: lib/transport.tcl:55
-#, tcl-format
-msgid "Pushing changes to %s"
-msgstr ""
-
-#: lib/transport.tcl:93
-#, tcl-format
-msgid "Mirroring to %s"
-msgstr ""
-
-#: lib/transport.tcl:111
-#, tcl-format
-msgid "Pushing %s %s to %s"
-msgstr ""
-
-#: lib/transport.tcl:132
-msgid "Push Branches"
-msgstr ""
-
-#: lib/transport.tcl:141 lib/checkout_op.tcl:580 lib/remote_add.tcl:34
-#: lib/browser.tcl:292 lib/branch_checkout.tcl:30 lib/branch_rename.tcl:32
-#: lib/choose_font.tcl:45 lib/option.tcl:127 lib/tools_dlg.tcl:41
-#: lib/tools_dlg.tcl:202 lib/tools_dlg.tcl:345 lib/remote_branch_delete.tcl:43
-#: lib/branch_create.tcl:37 lib/branch_delete.tcl:34 lib/merge.tcl:178
-msgid "Cancel"
-msgstr ""
-
-#: lib/transport.tcl:147
-msgid "Source Branches"
-msgstr ""
-
-#: lib/transport.tcl:162
-msgid "Destination Repository"
-msgstr ""
-
-#: lib/transport.tcl:165 lib/remote_branch_delete.tcl:51
-msgid "Remote:"
-msgstr ""
-
-#: lib/transport.tcl:187 lib/remote_branch_delete.tcl:72
-msgid "Arbitrary Location:"
-msgstr ""
-
-#: lib/transport.tcl:205
-msgid "Transfer Options"
-msgstr ""
-
-#: lib/transport.tcl:207
-msgid "Force overwrite existing branch (may discard changes)"
-msgstr ""
-
-#: lib/transport.tcl:211
-msgid "Use thin pack (for slow network connections)"
-msgstr ""
-
-#: lib/transport.tcl:215
-msgid "Include tags"
-msgstr ""
-
-#: lib/transport.tcl:229
-#, tcl-format
-msgid "%s (%s): Push"
-msgstr ""
-
-#: lib/checkout_op.tcl:85
-#, tcl-format
-msgid "Fetching %s from %s"
-msgstr ""
-
-#: lib/checkout_op.tcl:133
-#, tcl-format
-msgid "fatal: Cannot resolve %s"
-msgstr ""
-
-#: lib/checkout_op.tcl:146 lib/sshkey.tcl:58 lib/console.tcl:81
-#: lib/database.tcl:30
-msgid "Close"
-msgstr ""
-
-#: lib/checkout_op.tcl:175
-#, tcl-format
-msgid "Branch '%s' does not exist."
-msgstr ""
-
-#: lib/checkout_op.tcl:194
-#, tcl-format
-msgid "Failed to configure simplified git-pull for '%s'."
-msgstr ""
-
-#: lib/checkout_op.tcl:202 lib/branch_rename.tcl:102
-#, tcl-format
-msgid "Branch '%s' already exists."
-msgstr ""
-
-#: lib/checkout_op.tcl:229
-#, tcl-format
-msgid ""
-"Branch '%s' already exists.\n"
-"\n"
-"It cannot fast-forward to %s.\n"
-"A merge is required."
-msgstr ""
-
-#: lib/checkout_op.tcl:243
-#, tcl-format
-msgid "Merge strategy '%s' not supported."
-msgstr ""
-
-#: lib/checkout_op.tcl:262
-#, tcl-format
-msgid "Failed to update '%s'."
-msgstr ""
-
-#: lib/checkout_op.tcl:274
-msgid "Staging area (index) is already locked."
-msgstr ""
-
-#: lib/checkout_op.tcl:289
-msgid ""
-"Last scanned state does not match repository state.\n"
-"\n"
-"Another Git program has modified this repository since the last scan.  A "
-"rescan must be performed before the current branch can be changed.\n"
-"\n"
-"The rescan will be automatically started now.\n"
-msgstr ""
-
-#: lib/checkout_op.tcl:345
-#, tcl-format
-msgid "Updating working directory to '%s'..."
-msgstr ""
-
-#: lib/checkout_op.tcl:346
-msgid "files checked out"
-msgstr ""
-
-#: lib/checkout_op.tcl:377
-#, tcl-format
-msgid "Aborted checkout of '%s' (file level merging is required)."
-msgstr ""
-
-#: lib/checkout_op.tcl:378
-msgid "File level merge required."
-msgstr ""
-
-#: lib/checkout_op.tcl:382
-#, tcl-format
-msgid "Staying on branch '%s'."
-msgstr ""
-
-#: lib/checkout_op.tcl:453
-msgid ""
-"You are no longer on a local branch.\n"
-"\n"
-"If you wanted to be on a branch, create one now starting from 'This Detached "
-"Checkout'."
-msgstr ""
-
-#: lib/checkout_op.tcl:504 lib/checkout_op.tcl:508
-#, tcl-format
-msgid "Checked out '%s'."
-msgstr ""
-
-#: lib/checkout_op.tcl:536
-#, tcl-format
-msgid "Resetting '%s' to '%s' will lose the following commits:"
-msgstr ""
-
-#: lib/checkout_op.tcl:558
-msgid "Recovering lost commits may not be easy."
-msgstr ""
-
-#: lib/checkout_op.tcl:563
-#, tcl-format
-msgid "Reset '%s'?"
-msgstr ""
-
-#: lib/checkout_op.tcl:568 lib/tools_dlg.tcl:336 lib/merge.tcl:170
-msgid "Visualize"
-msgstr ""
-
-#: lib/checkout_op.tcl:572 lib/branch_create.tcl:85
-msgid "Reset"
-msgstr ""
-
-#: lib/checkout_op.tcl:636
-#, tcl-format
-msgid ""
-"Failed to set current branch.\n"
-"\n"
-"This working directory is only partially switched.  We successfully updated "
-"your files, but failed to update an internal Git file.\n"
-"\n"
-"This should not have occurred.  %s will now close and give up."
-msgstr ""
-
-#: lib/remote_add.tcl:20
-#, tcl-format
-msgid "%s (%s): Add Remote"
-msgstr ""
-
-#: lib/remote_add.tcl:25
-msgid "Add New Remote"
-msgstr ""
-
-#: lib/remote_add.tcl:30 lib/tools_dlg.tcl:37
-msgid "Add"
-msgstr ""
-
-#: lib/remote_add.tcl:39
-msgid "Remote Details"
-msgstr ""
-
-#: lib/remote_add.tcl:41 lib/tools_dlg.tcl:51 lib/branch_create.tcl:44
-msgid "Name:"
-msgstr ""
-
-#: lib/remote_add.tcl:50
-msgid "Location:"
-msgstr ""
-
-#: lib/remote_add.tcl:60
-msgid "Further Action"
-msgstr ""
-
-#: lib/remote_add.tcl:63
-msgid "Fetch Immediately"
-msgstr ""
-
-#: lib/remote_add.tcl:69
-msgid "Initialize Remote Repository and Push"
-msgstr ""
-
-#: lib/remote_add.tcl:75
-msgid "Do Nothing Else Now"
-msgstr ""
-
-#: lib/remote_add.tcl:100
-msgid "Please supply a remote name."
-msgstr ""
-
-#: lib/remote_add.tcl:113
-#, tcl-format
-msgid "'%s' is not an acceptable remote name."
-msgstr ""
-
-#: lib/remote_add.tcl:124
-#, tcl-format
-msgid "Failed to add remote '%s' of location '%s'."
-msgstr ""
-
-#: lib/remote_add.tcl:133
-#, tcl-format
-msgid "Fetching the %s"
-msgstr ""
-
-#: lib/remote_add.tcl:156
-#, tcl-format
-msgid "Do not know how to initialize repository at location '%s'."
-msgstr ""
-
-#: lib/remote_add.tcl:163
-#, tcl-format
-msgid "Setting up the %s (at %s)"
-msgstr ""
-
-#: lib/browser.tcl:17
-msgid "Starting..."
-msgstr ""
-
-#: lib/browser.tcl:27
-#, tcl-format
-msgid "%s (%s): File Browser"
-msgstr ""
-
-#: lib/browser.tcl:132 lib/browser.tcl:149
-#, tcl-format
-msgid "Loading %s..."
-msgstr ""
-
-#: lib/browser.tcl:193
-msgid "[Up To Parent]"
-msgstr ""
-
-#: lib/browser.tcl:275
-#, tcl-format
-msgid "%s (%s): Browse Branch Files"
-msgstr ""
-
-#: lib/browser.tcl:282
-msgid "Browse Branch Files"
-msgstr ""
-
-#: lib/browser.tcl:288 lib/choose_repository.tcl:437
-#: lib/choose_repository.tcl:524 lib/choose_repository.tcl:533
-#: lib/choose_repository.tcl:1115
-msgid "Browse"
-msgstr ""
-
-#: lib/browser.tcl:297 lib/branch_checkout.tcl:35 lib/tools_dlg.tcl:321
-msgid "Revision"
-msgstr ""
-
-#: lib/index.tcl:6
-msgid "Unable to unlock the index."
-msgstr ""
-
-#: lib/index.tcl:30
-msgid "Index Error"
-msgstr ""
-
-#: lib/index.tcl:32
-msgid ""
-"Updating the Git index failed.  A rescan will be automatically started to "
-"resynchronize git-gui."
-msgstr ""
-
-#: lib/index.tcl:43
-msgid "Continue"
-msgstr ""
-
-#: lib/index.tcl:46
-msgid "Unlock Index"
-msgstr ""
-
-#: lib/index.tcl:77 lib/index.tcl:146 lib/index.tcl:220 lib/index.tcl:587
-#: lib/choose_repository.tcl:999
-msgid "files"
-msgstr ""
-
-#: lib/index.tcl:326
-msgid "Unstaging selected files from commit"
-msgstr ""
-
-#: lib/index.tcl:330
-#, tcl-format
-msgid "Unstaging %s from commit"
-msgstr ""
-
-#: lib/index.tcl:369
-msgid "Ready to commit."
-msgstr ""
-
-#: lib/index.tcl:378
-msgid "Adding selected files"
-msgstr ""
-
-#: lib/index.tcl:382
-#, tcl-format
-msgid "Adding %s"
-msgstr ""
-
-#: lib/index.tcl:412
-#, tcl-format
-msgid "Stage %d untracked files?"
-msgstr ""
-
-#: lib/index.tcl:420
-msgid "Adding all changed files"
-msgstr ""
-
-#: lib/index.tcl:503
-#, tcl-format
-msgid "Revert changes in file %s?"
-msgstr ""
-
-#: lib/index.tcl:508
-#, tcl-format
-msgid "Revert changes in these %i files?"
-msgstr ""
-
-#: lib/index.tcl:517
-msgid "Any unstaged changes will be permanently lost by the revert."
-msgstr ""
-
-#: lib/index.tcl:520 lib/index.tcl:563
-msgid "Do Nothing"
-msgstr ""
-
-#: lib/index.tcl:545
-#, tcl-format
-msgid "Delete untracked file %s?"
-msgstr ""
-
-#: lib/index.tcl:550
-#, tcl-format
-msgid "Delete these %i untracked files?"
-msgstr ""
-
-#: lib/index.tcl:560
-msgid "Files will be permanently deleted."
-msgstr ""
-
-#: lib/index.tcl:564
-msgid "Delete Files"
-msgstr ""
-
-#: lib/index.tcl:586
-msgid "Deleting"
-msgstr ""
-
-#: lib/index.tcl:665
-msgid "Encountered errors deleting files:\n"
-msgstr ""
-
-#: lib/index.tcl:674
-#, tcl-format
-msgid "None of the %d selected files could be deleted."
-msgstr ""
-
-#: lib/index.tcl:679
-#, tcl-format
-msgid "%d of the %d selected files could not be deleted."
-msgstr ""
-
-#: lib/index.tcl:726
-msgid "Reverting selected files"
-msgstr ""
-
-#: lib/index.tcl:730
-#, tcl-format
-msgid "Reverting %s"
-msgstr ""
-
-#: lib/branch_checkout.tcl:16
-#, tcl-format
-msgid "%s (%s): Checkout Branch"
-msgstr ""
-
-#: lib/branch_checkout.tcl:21
-msgid "Checkout Branch"
-msgstr ""
-
-#: lib/branch_checkout.tcl:26
-msgid "Checkout"
-msgstr ""
-
-#: lib/branch_checkout.tcl:39 lib/option.tcl:310 lib/branch_create.tcl:69
-msgid "Options"
-msgstr ""
-
-#: lib/branch_checkout.tcl:42 lib/branch_create.tcl:92
-msgid "Fetch Tracking Branch"
-msgstr ""
-
-#: lib/branch_checkout.tcl:47
-msgid "Detach From Local Branch"
-msgstr ""
-
-#: lib/status_bar.tcl:263
-#, tcl-format
-msgid "%s ... %*i of %*i %s (%3i%%)"
-msgstr ""
-
-#: lib/remote.tcl:200
-msgid "Push to"
-msgstr ""
-
-#: lib/remote.tcl:218
-msgid "Remove Remote"
-msgstr ""
-
-#: lib/remote.tcl:223
-msgid "Prune from"
-msgstr ""
-
-#: lib/remote.tcl:228
-msgid "Fetch from"
-msgstr ""
-
-#: lib/remote.tcl:249 lib/remote.tcl:253 lib/remote.tcl:258 lib/remote.tcl:264
-msgid "All"
-msgstr ""
-
-#: lib/branch_rename.tcl:15
-#, tcl-format
-msgid "%s (%s): Rename Branch"
-msgstr ""
-
-#: lib/branch_rename.tcl:23
-msgid "Rename Branch"
-msgstr ""
-
-#: lib/branch_rename.tcl:28
-msgid "Rename"
-msgstr ""
-
-#: lib/branch_rename.tcl:38
-msgid "Branch:"
-msgstr ""
-
-#: lib/branch_rename.tcl:46
-msgid "New Name:"
-msgstr ""
-
-#: lib/branch_rename.tcl:81
-msgid "Please select a branch to rename."
-msgstr ""
-
-#: lib/branch_rename.tcl:92 lib/branch_create.tcl:154
-msgid "Please supply a branch name."
-msgstr ""
-
-#: lib/branch_rename.tcl:112 lib/branch_create.tcl:165
-#, tcl-format
-msgid "'%s' is not an acceptable branch name."
-msgstr ""
-
-#: lib/branch_rename.tcl:123
-#, tcl-format
-msgid "Failed to rename '%s'."
-msgstr ""
-
-#: lib/choose_font.tcl:41
-msgid "Select"
-msgstr ""
-
-#: lib/choose_font.tcl:55
-msgid "Font Family"
-msgstr ""
-
-#: lib/choose_font.tcl:76
-msgid "Font Size"
-msgstr ""
-
-#: lib/choose_font.tcl:93
-msgid "Font Example"
-msgstr ""
-
-#: lib/choose_font.tcl:105
-msgid ""
-"This is example text.\n"
-"If you like this text, it can be your font."
-msgstr ""
-
-#: lib/option.tcl:11
-#, tcl-format
-msgid "Invalid global encoding '%s'"
-msgstr ""
-
-#: lib/option.tcl:19
-#, tcl-format
-msgid "Invalid repo encoding '%s'"
-msgstr ""
-
-#: lib/option.tcl:119
-msgid "Restore Defaults"
-msgstr ""
-
-#: lib/option.tcl:123
-msgid "Save"
-msgstr ""
-
-#: lib/option.tcl:133
-#, tcl-format
-msgid "%s Repository"
-msgstr ""
-
-#: lib/option.tcl:134
-msgid "Global (All Repositories)"
-msgstr ""
-
-#: lib/option.tcl:140
-msgid "User Name"
-msgstr ""
-
-#: lib/option.tcl:141
-msgid "Email Address"
-msgstr ""
-
-#: lib/option.tcl:143
-msgid "Summarize Merge Commits"
-msgstr ""
-
-#: lib/option.tcl:144
-msgid "Merge Verbosity"
-msgstr ""
-
-#: lib/option.tcl:145
-msgid "Show Diffstat After Merge"
-msgstr ""
-
-#: lib/option.tcl:146
-msgid "Use Merge Tool"
-msgstr ""
-
-#: lib/option.tcl:148
-msgid "Trust File Modification Timestamps"
-msgstr ""
-
-#: lib/option.tcl:149
-msgid "Prune Tracking Branches During Fetch"
-msgstr ""
-
-#: lib/option.tcl:150
-msgid "Match Tracking Branches"
-msgstr ""
-
-#: lib/option.tcl:151
-msgid "Use Textconv For Diffs and Blames"
-msgstr ""
-
-#: lib/option.tcl:152
-msgid "Blame Copy Only On Changed Files"
-msgstr ""
-
-#: lib/option.tcl:153
-msgid "Maximum Length of Recent Repositories List"
-msgstr ""
-
-#: lib/option.tcl:154
-msgid "Minimum Letters To Blame Copy On"
-msgstr ""
-
-#: lib/option.tcl:155
-msgid "Blame History Context Radius (days)"
-msgstr ""
-
-#: lib/option.tcl:156
-msgid "Number of Diff Context Lines"
-msgstr ""
-
-#: lib/option.tcl:157
-msgid "Additional Diff Parameters"
-msgstr ""
-
-#: lib/option.tcl:158
-msgid "Commit Message Text Width"
-msgstr ""
-
-#: lib/option.tcl:159
-msgid "New Branch Name Template"
-msgstr ""
-
-#: lib/option.tcl:160
-msgid "Default File Contents Encoding"
-msgstr ""
-
-#: lib/option.tcl:161
-msgid "Warn before committing to a detached head"
-msgstr ""
-
-#: lib/option.tcl:162
-msgid "Staging of untracked files"
-msgstr ""
-
-#: lib/option.tcl:163
-msgid "Show untracked files"
-msgstr ""
-
-#: lib/option.tcl:164
-msgid "Tab spacing"
-msgstr ""
-
-#: lib/option.tcl:182 lib/option.tcl:197 lib/option.tcl:220 lib/option.tcl:282
-#: lib/database.tcl:57
-#, tcl-format
-msgid "%s:"
-msgstr ""
-
-#: lib/option.tcl:210
-msgid "Change"
-msgstr ""
-
-#: lib/option.tcl:254
-msgid "Spelling Dictionary:"
-msgstr ""
-
-#: lib/option.tcl:284
-msgid "Change Font"
-msgstr ""
-
-#: lib/option.tcl:288
-#, tcl-format
-msgid "Choose %s"
-msgstr ""
-
-#: lib/option.tcl:294
-msgid "pt."
-msgstr ""
-
-#: lib/option.tcl:308
-msgid "Preferences"
-msgstr ""
-
-#: lib/option.tcl:345
-msgid "Failed to completely save options:"
-msgstr ""
-
-#: lib/encoding.tcl:443
-msgid "Default"
-msgstr ""
-
-#: lib/encoding.tcl:448
-#, tcl-format
-msgid "System (%s)"
-msgstr ""
-
-#: lib/encoding.tcl:459 lib/encoding.tcl:465
-msgid "Other"
-msgstr ""
-
-#: lib/tools.tcl:76
-#, tcl-format
-msgid "Running %s requires a selected file."
-msgstr ""
-
-#: lib/tools.tcl:92
-#, tcl-format
-msgid "Are you sure you want to run %1$s on file \"%2$s\"?"
-msgstr ""
-
-#: lib/tools.tcl:96
-#, tcl-format
-msgid "Are you sure you want to run %s?"
-msgstr ""
-
-#: lib/tools.tcl:118
-#, tcl-format
-msgid "Tool: %s"
-msgstr ""
-
-#: lib/tools.tcl:119
-#, tcl-format
-msgid "Running: %s"
-msgstr ""
-
-#: lib/tools.tcl:158
-#, tcl-format
-msgid "Tool completed successfully: %s"
-msgstr ""
-
-#: lib/tools.tcl:160
-#, tcl-format
-msgid "Tool failed: %s"
-msgstr ""
-
-#: lib/mergetool.tcl:8
-msgid "Force resolution to the base version?"
-msgstr ""
-
-#: lib/mergetool.tcl:9
-msgid "Force resolution to this branch?"
-msgstr ""
-
-#: lib/mergetool.tcl:10
-msgid "Force resolution to the other branch?"
-msgstr ""
-
-#: lib/mergetool.tcl:14
-#, tcl-format
-msgid ""
-"Note that the diff shows only conflicting changes.\n"
-"\n"
-"%s will be overwritten.\n"
-"\n"
-"This operation can be undone only by restarting the merge."
-msgstr ""
-
-#: lib/mergetool.tcl:45
-#, tcl-format
-msgid "File %s seems to have unresolved conflicts, still stage?"
-msgstr ""
-
-#: lib/mergetool.tcl:60
-#, tcl-format
-msgid "Adding resolution for %s"
-msgstr ""
-
-#: lib/mergetool.tcl:141
-msgid "Cannot resolve deletion or link conflicts using a tool"
-msgstr ""
-
-#: lib/mergetool.tcl:146
-msgid "Conflict file does not exist"
-msgstr ""
-
-#: lib/mergetool.tcl:246
-#, tcl-format
-msgid "Not a GUI merge tool: '%s'"
-msgstr ""
-
-#: lib/mergetool.tcl:275
-#, tcl-format
-msgid "Unsupported merge tool '%s'"
-msgstr ""
-
-#: lib/mergetool.tcl:310
-msgid "Merge tool is already running, terminate it?"
-msgstr ""
-
-#: lib/mergetool.tcl:330
-#, tcl-format
-msgid ""
-"Error retrieving versions:\n"
-"%s"
-msgstr ""
-
-#: lib/mergetool.tcl:350
-#, tcl-format
-msgid ""
-"Could not start the merge tool:\n"
-"\n"
-"%s"
-msgstr ""
-
-#: lib/mergetool.tcl:354
-msgid "Running merge tool..."
-msgstr ""
-
-#: lib/mergetool.tcl:382 lib/mergetool.tcl:390
-msgid "Merge tool failed."
-msgstr ""
-
-#: lib/tools_dlg.tcl:22
-#, tcl-format
-msgid "%s (%s): Add Tool"
-msgstr ""
-
-#: lib/tools_dlg.tcl:28
-msgid "Add New Tool Command"
-msgstr ""
-
-#: lib/tools_dlg.tcl:34
-msgid "Add globally"
-msgstr ""
-
-#: lib/tools_dlg.tcl:46
-msgid "Tool Details"
-msgstr ""
-
-#: lib/tools_dlg.tcl:49
-msgid "Use '/' separators to create a submenu tree:"
-msgstr ""
-
-#: lib/tools_dlg.tcl:60
-msgid "Command:"
-msgstr ""
-
-#: lib/tools_dlg.tcl:71
-msgid "Show a dialog before running"
-msgstr ""
-
-#: lib/tools_dlg.tcl:77
-msgid "Ask the user to select a revision (sets $REVISION)"
-msgstr ""
-
-#: lib/tools_dlg.tcl:82
-msgid "Ask the user for additional arguments (sets $ARGS)"
-msgstr ""
-
-#: lib/tools_dlg.tcl:89
-msgid "Don't show the command output window"
-msgstr ""
-
-#: lib/tools_dlg.tcl:94
-msgid "Run only if a diff is selected ($FILENAME not empty)"
-msgstr ""
-
-#: lib/tools_dlg.tcl:118
-msgid "Please supply a name for the tool."
-msgstr ""
-
-#: lib/tools_dlg.tcl:126
-#, tcl-format
-msgid "Tool '%s' already exists."
-msgstr ""
-
-#: lib/tools_dlg.tcl:148
-#, tcl-format
-msgid ""
-"Could not add tool:\n"
-"%s"
-msgstr ""
-
-#: lib/tools_dlg.tcl:187
-#, tcl-format
-msgid "%s (%s): Remove Tool"
-msgstr ""
-
-#: lib/tools_dlg.tcl:193
-msgid "Remove Tool Commands"
-msgstr ""
-
-#: lib/tools_dlg.tcl:198
-msgid "Remove"
-msgstr ""
-
-#: lib/tools_dlg.tcl:231
-msgid "(Blue denotes repository-local tools)"
-msgstr ""
-
-#: lib/tools_dlg.tcl:283
-#, tcl-format
-msgid "%s (%s):"
-msgstr ""
-
-#: lib/tools_dlg.tcl:292
-#, tcl-format
-msgid "Run Command: %s"
-msgstr ""
-
-#: lib/tools_dlg.tcl:306
-msgid "Arguments"
-msgstr ""
-
-#: lib/tools_dlg.tcl:341
-msgid "OK"
-msgstr ""
-
-#: lib/search.tcl:48
-msgid "Find:"
-msgstr ""
-
-#: lib/search.tcl:50
-msgid "Next"
-msgstr ""
-
-#: lib/search.tcl:51
-msgid "Prev"
-msgstr ""
-
-#: lib/search.tcl:52
-msgid "RegExp"
-msgstr ""
-
-#: lib/search.tcl:54
-msgid "Case"
-msgstr ""
-
-#: lib/shortcut.tcl:8 lib/shortcut.tcl:43 lib/shortcut.tcl:75
-#, tcl-format
-msgid "%s (%s): Create Desktop Icon"
-msgstr ""
-
-#: lib/shortcut.tcl:24 lib/shortcut.tcl:65
-msgid "Cannot write shortcut:"
-msgstr ""
-
-#: lib/shortcut.tcl:140
-msgid "Cannot write icon:"
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:29
-#, tcl-format
-msgid "%s (%s): Delete Branch Remotely"
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:34
-msgid "Delete Branch Remotely"
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:48
-msgid "From Repository"
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:88
-msgid "Branches"
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:110
-msgid "Delete Only If"
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:112
-msgid "Merged Into:"
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:120 lib/branch_delete.tcl:53
-msgid "Always (Do not perform merge checks)"
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:153
-msgid "A branch is required for 'Merged Into'."
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:185
-#, tcl-format
-msgid ""
-"The following branches are not completely merged into %s:\n"
-"\n"
-" - %s"
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:190
-#, tcl-format
-msgid ""
-"One or more of the merge tests failed because you have not fetched the "
-"necessary commits.  Try fetching from %s first."
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:208
-msgid "Please select one or more branches to delete."
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:218 lib/branch_delete.tcl:115
-msgid ""
-"Recovering deleted branches is difficult.\n"
-"\n"
-"Delete the selected branches?"
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:227
-#, tcl-format
-msgid "Deleting branches from %s"
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:300
-msgid "No repository selected."
-msgstr ""
-
-#: lib/remote_branch_delete.tcl:305
-#, tcl-format
-msgid "Scanning %s..."
-msgstr ""
-
-#: lib/choose_repository.tcl:45
-msgid "Git Gui"
-msgstr ""
-
-#: lib/choose_repository.tcl:104 lib/choose_repository.tcl:427
-msgid "Create New Repository"
-msgstr ""
-
-#: lib/choose_repository.tcl:110
-msgid "New..."
-msgstr ""
-
-#: lib/choose_repository.tcl:117 lib/choose_repository.tcl:511
-msgid "Clone Existing Repository"
-msgstr ""
-
-#: lib/choose_repository.tcl:128
-msgid "Clone..."
-msgstr ""
-
-#: lib/choose_repository.tcl:135 lib/choose_repository.tcl:1105
-msgid "Open Existing Repository"
-msgstr ""
-
-#: lib/choose_repository.tcl:141
-msgid "Open..."
-msgstr ""
-
-#: lib/choose_repository.tcl:154
-msgid "Recent Repositories"
-msgstr ""
-
-#: lib/choose_repository.tcl:164
-msgid "Open Recent Repository:"
-msgstr ""
-
-#: lib/choose_repository.tcl:331 lib/choose_repository.tcl:338
-#: lib/choose_repository.tcl:345
-#, tcl-format
-msgid "Failed to create repository %s:"
-msgstr ""
-
-#: lib/choose_repository.tcl:422 lib/branch_create.tcl:33
-msgid "Create"
-msgstr ""
-
-#: lib/choose_repository.tcl:432
-msgid "Directory:"
-msgstr ""
-
-#: lib/choose_repository.tcl:462 lib/choose_repository.tcl:588
-#: lib/choose_repository.tcl:1139
-msgid "Git Repository"
-msgstr ""
-
-#: lib/choose_repository.tcl:487
-#, tcl-format
-msgid "Directory %s already exists."
-msgstr ""
-
-#: lib/choose_repository.tcl:491
-#, tcl-format
-msgid "File %s already exists."
-msgstr ""
-
-#: lib/choose_repository.tcl:506
-msgid "Clone"
-msgstr ""
-
-#: lib/choose_repository.tcl:519
-msgid "Source Location:"
-msgstr ""
-
-#: lib/choose_repository.tcl:528
-msgid "Target Directory:"
-msgstr ""
-
-#: lib/choose_repository.tcl:538
-msgid "Clone Type:"
-msgstr ""
-
-#: lib/choose_repository.tcl:543
-msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
-msgstr ""
-
-#: lib/choose_repository.tcl:548
-msgid "Full Copy (Slower, Redundant Backup)"
-msgstr ""
-
-#: lib/choose_repository.tcl:553
-msgid "Shared (Fastest, Not Recommended, No Backup)"
-msgstr ""
-
-#: lib/choose_repository.tcl:560
-msgid "Recursively clone submodules too"
-msgstr ""
-
-#: lib/choose_repository.tcl:594 lib/choose_repository.tcl:641
-#: lib/choose_repository.tcl:790 lib/choose_repository.tcl:864
-#: lib/choose_repository.tcl:1145 lib/choose_repository.tcl:1153
-#, tcl-format
-msgid "Not a Git repository: %s"
-msgstr ""
-
-#: lib/choose_repository.tcl:630
-msgid "Standard only available for local repository."
-msgstr ""
-
-#: lib/choose_repository.tcl:634
-msgid "Shared only available for local repository."
-msgstr ""
-
-#: lib/choose_repository.tcl:655
-#, tcl-format
-msgid "Location %s already exists."
-msgstr ""
-
-#: lib/choose_repository.tcl:666
-msgid "Failed to configure origin"
-msgstr ""
-
-#: lib/choose_repository.tcl:678
-msgid "Counting objects"
-msgstr ""
-
-#: lib/choose_repository.tcl:679
-msgid "buckets"
-msgstr ""
-
-#: lib/choose_repository.tcl:703
-#, tcl-format
-msgid "Unable to copy objects/info/alternates: %s"
-msgstr ""
-
-#: lib/choose_repository.tcl:740
-#, tcl-format
-msgid "Nothing to clone from %s."
-msgstr ""
-
-#: lib/choose_repository.tcl:742 lib/choose_repository.tcl:962
-#: lib/choose_repository.tcl:974
-msgid "The 'master' branch has not been initialized."
-msgstr ""
-
-#: lib/choose_repository.tcl:755
-msgid "Hardlinks are unavailable.  Falling back to copying."
-msgstr ""
-
-#: lib/choose_repository.tcl:769
-#, tcl-format
-msgid "Cloning from %s"
-msgstr ""
-
-#: lib/choose_repository.tcl:800
-msgid "Copying objects"
-msgstr ""
-
-#: lib/choose_repository.tcl:801
-msgid "KiB"
-msgstr ""
-
-#: lib/choose_repository.tcl:825
-#, tcl-format
-msgid "Unable to copy object: %s"
-msgstr ""
-
-#: lib/choose_repository.tcl:837
-msgid "Linking objects"
-msgstr ""
-
-#: lib/choose_repository.tcl:838
-msgid "objects"
-msgstr ""
-
-#: lib/choose_repository.tcl:846
-#, tcl-format
-msgid "Unable to hardlink object: %s"
-msgstr ""
-
-#: lib/choose_repository.tcl:903
-msgid "Cannot fetch branches and objects.  See console output for details."
-msgstr ""
-
-#: lib/choose_repository.tcl:914
-msgid "Cannot fetch tags.  See console output for details."
-msgstr ""
-
-#: lib/choose_repository.tcl:938
-msgid "Cannot determine HEAD.  See console output for details."
-msgstr ""
-
-#: lib/choose_repository.tcl:947
-#, tcl-format
-msgid "Unable to cleanup %s"
-msgstr ""
-
-#: lib/choose_repository.tcl:953
-msgid "Clone failed."
-msgstr ""
-
-#: lib/choose_repository.tcl:960
-msgid "No default branch obtained."
-msgstr ""
-
-#: lib/choose_repository.tcl:971
-#, tcl-format
-msgid "Cannot resolve %s as a commit."
-msgstr ""
-
-#: lib/choose_repository.tcl:998
-msgid "Creating working directory"
-msgstr ""
-
-#: lib/choose_repository.tcl:1028
-msgid "Initial file checkout failed."
-msgstr ""
-
-#: lib/choose_repository.tcl:1072
-msgid "Cloning submodules"
-msgstr ""
-
-#: lib/choose_repository.tcl:1087
-msgid "Cannot clone submodules."
-msgstr ""
-
-#: lib/choose_repository.tcl:1110
-msgid "Repository:"
-msgstr ""
-
-#: lib/choose_repository.tcl:1159
-#, tcl-format
-msgid "Failed to open repository %s:"
-msgstr ""
-
-#: lib/about.tcl:26
-msgid "git-gui - a graphical user interface for Git."
-msgstr ""
-
-#: lib/blame.tcl:74
-#, tcl-format
-msgid "%s (%s): File Viewer"
-msgstr ""
-
-#: lib/blame.tcl:80
-msgid "Commit:"
-msgstr ""
-
-#: lib/blame.tcl:282
-msgid "Copy Commit"
-msgstr ""
-
-#: lib/blame.tcl:286
-msgid "Find Text..."
-msgstr ""
-
-#: lib/blame.tcl:290
-msgid "Goto Line..."
-msgstr ""
-
-#: lib/blame.tcl:299
-msgid "Do Full Copy Detection"
-msgstr ""
-
-#: lib/blame.tcl:303
-msgid "Show History Context"
-msgstr ""
-
-#: lib/blame.tcl:306
-msgid "Blame Parent Commit"
-msgstr ""
-
-#: lib/blame.tcl:468
-#, tcl-format
-msgid "Reading %s..."
-msgstr ""
-
-#: lib/blame.tcl:596
-msgid "Loading copy/move tracking annotations..."
-msgstr ""
-
-#: lib/blame.tcl:613
-msgid "lines annotated"
-msgstr ""
-
-#: lib/blame.tcl:815
-msgid "Loading original location annotations..."
-msgstr ""
-
-#: lib/blame.tcl:818
-msgid "Annotation complete."
-msgstr ""
-
-#: lib/blame.tcl:849
-msgid "Busy"
-msgstr ""
-
-#: lib/blame.tcl:850
-msgid "Annotation process is already running."
-msgstr ""
-
-#: lib/blame.tcl:889
-msgid "Running thorough copy detection..."
-msgstr ""
-
-#: lib/blame.tcl:957
-msgid "Loading annotation..."
-msgstr ""
-
-#: lib/blame.tcl:1010
-msgid "Author:"
-msgstr ""
-
-#: lib/blame.tcl:1014
-msgid "Committer:"
-msgstr ""
-
-#: lib/blame.tcl:1019
-msgid "Original File:"
-msgstr ""
-
-#: lib/blame.tcl:1067
-msgid "Cannot find HEAD commit:"
-msgstr ""
-
-#: lib/blame.tcl:1122
-msgid "Cannot find parent commit:"
-msgstr ""
-
-#: lib/blame.tcl:1137
-msgid "Unable to display parent"
-msgstr ""
-
-#: lib/blame.tcl:1138 lib/diff.tcl:345
-msgid "Error loading diff:"
-msgstr ""
-
-#: lib/blame.tcl:1279
-msgid "Originally By:"
-msgstr ""
-
-#: lib/blame.tcl:1285
-msgid "In File:"
-msgstr ""
-
-#: lib/blame.tcl:1290
-msgid "Copied Or Moved Here By:"
-msgstr ""
-
-#: lib/diff.tcl:77
-#, tcl-format
-msgid ""
-"No differences detected.\n"
-"\n"
-"%s has no changes.\n"
-"\n"
-"The modification date of this file was updated by another application, but "
-"the content within the file was not changed.\n"
-"\n"
-"A rescan will be automatically started to find other files which may have "
-"the same state."
-msgstr ""
-
-#: lib/diff.tcl:117
-#, tcl-format
-msgid "Loading diff of %s..."
-msgstr ""
-
-#: lib/diff.tcl:143
-msgid ""
-"LOCAL: deleted\n"
-"REMOTE:\n"
-msgstr ""
-
-#: lib/diff.tcl:148
-msgid ""
-"REMOTE: deleted\n"
-"LOCAL:\n"
-msgstr ""
-
-#: lib/diff.tcl:155
-msgid "LOCAL:\n"
-msgstr ""
-
-#: lib/diff.tcl:158
-msgid "REMOTE:\n"
-msgstr ""
-
-#: lib/diff.tcl:220 lib/diff.tcl:344
-#, tcl-format
-msgid "Unable to display %s"
-msgstr ""
-
-#: lib/diff.tcl:221
-msgid "Error loading file:"
-msgstr ""
-
-#: lib/diff.tcl:227
-msgid "Git Repository (subproject)"
-msgstr ""
-
-#: lib/diff.tcl:239
-msgid "* Binary file (not showing content)."
-msgstr ""
-
-#: lib/diff.tcl:244
-#, tcl-format
-msgid ""
-"* Untracked file is %d bytes.\n"
-"* Showing only first %d bytes.\n"
-msgstr ""
-
-#: lib/diff.tcl:250
-#, tcl-format
-msgid ""
-"\n"
-"* Untracked file clipped here by %s.\n"
-"* To see the entire file, use an external editor.\n"
-msgstr ""
-
-#: lib/diff.tcl:583
-msgid "Failed to unstage selected hunk."
-msgstr ""
-
-#: lib/diff.tcl:591
-msgid "Failed to revert selected hunk."
-msgstr ""
-
-#: lib/diff.tcl:594
-msgid "Failed to stage selected hunk."
-msgstr ""
-
-#: lib/diff.tcl:687
-msgid "Failed to unstage selected line."
-msgstr ""
-
-#: lib/diff.tcl:696
-msgid "Failed to revert selected line."
-msgstr ""
-
-#: lib/diff.tcl:700
-msgid "Failed to stage selected line."
-msgstr ""
-
-#: lib/diff.tcl:889
-msgid "Failed to undo last revert."
-msgstr ""
-
-#: lib/sshkey.tcl:34
-msgid "No keys found."
-msgstr ""
-
-#: lib/sshkey.tcl:37
-#, tcl-format
-msgid "Found a public key in: %s"
-msgstr ""
-
-#: lib/sshkey.tcl:43
-msgid "Generate Key"
-msgstr ""
-
-#: lib/sshkey.tcl:61
-msgid "Copy To Clipboard"
-msgstr ""
-
-#: lib/sshkey.tcl:75
-msgid "Your OpenSSH Public Key"
-msgstr ""
-
-#: lib/sshkey.tcl:83
-msgid "Generating..."
-msgstr ""
-
-#: lib/sshkey.tcl:89
-#, tcl-format
-msgid ""
-"Could not start ssh-keygen:\n"
-"\n"
-"%s"
-msgstr ""
-
-#: lib/sshkey.tcl:116
-msgid "Generation failed."
-msgstr ""
-
-#: lib/sshkey.tcl:123
-msgid "Generation succeeded, but no keys found."
-msgstr ""
-
-#: lib/sshkey.tcl:126
-#, tcl-format
-msgid "Your key is in: %s"
-msgstr ""
-
-#: lib/branch_create.tcl:23
-#, tcl-format
-msgid "%s (%s): Create Branch"
-msgstr ""
-
-#: lib/branch_create.tcl:28
-msgid "Create New Branch"
-msgstr ""
-
-#: lib/branch_create.tcl:42
-msgid "Branch Name"
-msgstr ""
-
-#: lib/branch_create.tcl:57
-msgid "Match Tracking Branch Name"
-msgstr ""
-
-#: lib/branch_create.tcl:66
-msgid "Starting Revision"
-msgstr ""
-
-#: lib/branch_create.tcl:72
-msgid "Update Existing Branch:"
-msgstr ""
-
-#: lib/branch_create.tcl:75
-msgid "No"
-msgstr ""
-
-#: lib/branch_create.tcl:80
-msgid "Fast Forward Only"
-msgstr ""
-
-#: lib/branch_create.tcl:97
-msgid "Checkout After Creation"
-msgstr ""
-
-#: lib/branch_create.tcl:132
-msgid "Please select a tracking branch."
-msgstr ""
-
-#: lib/branch_create.tcl:141
-#, tcl-format
-msgid "Tracking branch %s is not a branch in the remote repository."
-msgstr ""
-
-#: lib/console.tcl:59
-msgid "Working... please wait..."
-msgstr ""
-
-#: lib/console.tcl:186
-msgid "Success"
-msgstr ""
-
-#: lib/console.tcl:200
-msgid "Error: Command Failed"
-msgstr ""
-
-#: lib/line.tcl:17
-msgid "Goto Line:"
-msgstr ""
-
-#: lib/line.tcl:23
-msgid "Go"
-msgstr ""
-
-#: lib/choose_rev.tcl:52
-msgid "This Detached Checkout"
-msgstr ""
-
-#: lib/choose_rev.tcl:60
-msgid "Revision Expression:"
-msgstr ""
-
-#: lib/choose_rev.tcl:72
-msgid "Local Branch"
-msgstr ""
-
-#: lib/choose_rev.tcl:77
-msgid "Tracking Branch"
-msgstr ""
-
-#: lib/choose_rev.tcl:82 lib/choose_rev.tcl:544
-msgid "Tag"
-msgstr ""
-
-#: lib/choose_rev.tcl:321
-#, tcl-format
-msgid "Invalid revision: %s"
-msgstr ""
-
-#: lib/choose_rev.tcl:342
-msgid "No revision selected."
-msgstr ""
-
-#: lib/choose_rev.tcl:350
-msgid "Revision expression is empty."
-msgstr ""
-
-#: lib/choose_rev.tcl:537
-msgid "Updated"
-msgstr ""
-
-#: lib/choose_rev.tcl:565
-msgid "URL"
-msgstr ""
-
-#: lib/commit.tcl:9
-msgid ""
-"There is nothing to amend.\n"
-"\n"
-"You are about to create the initial commit.  There is no commit before this "
-"to amend.\n"
-msgstr ""
-
-#: lib/commit.tcl:18
-msgid ""
-"Cannot amend while merging.\n"
-"\n"
-"You are currently in the middle of a merge that has not been fully "
-"completed.  You cannot amend the prior commit unless you first abort the "
-"current merge activity.\n"
-msgstr ""
-
-#: lib/commit.tcl:56
-msgid "Error loading commit data for amend:"
-msgstr ""
-
-#: lib/commit.tcl:83
-msgid "Unable to obtain your identity:"
-msgstr ""
-
-#: lib/commit.tcl:88
-msgid "Invalid GIT_COMMITTER_IDENT:"
-msgstr ""
-
-#: lib/commit.tcl:138
-#, tcl-format
-msgid "warning: Tcl does not support encoding '%s'."
-msgstr ""
-
-#: lib/commit.tcl:158
-msgid ""
-"Last scanned state does not match repository state.\n"
-"\n"
-"Another Git program has modified this repository since the last scan.  A "
-"rescan must be performed before another commit can be created.\n"
-"\n"
-"The rescan will be automatically started now.\n"
-msgstr ""
-
-#: lib/commit.tcl:182
-#, tcl-format
-msgid ""
-"Unmerged files cannot be committed.\n"
-"\n"
-"File %s has merge conflicts.  You must resolve them and stage the file "
-"before committing.\n"
-msgstr ""
-
-#: lib/commit.tcl:190
-#, tcl-format
-msgid ""
-"Unknown file state %s detected.\n"
-"\n"
-"File %s cannot be committed by this program.\n"
-msgstr ""
-
-#: lib/commit.tcl:198
-msgid ""
-"No changes to commit.\n"
-"\n"
-"You must stage at least 1 file before you can commit.\n"
-msgstr ""
-
-#: lib/commit.tcl:213
-msgid ""
-"Please supply a commit message.\n"
-"\n"
-"A good commit message has the following format:\n"
-"\n"
-"- First line: Describe in one sentence what you did.\n"
-"- Second line: Blank\n"
-"- Remaining lines: Describe why this change is good.\n"
-msgstr ""
-
-#: lib/commit.tcl:244
-msgid "Calling pre-commit hook..."
-msgstr ""
-
-#: lib/commit.tcl:259
-msgid "Commit declined by pre-commit hook."
-msgstr ""
-
-#: lib/commit.tcl:278
-msgid ""
-"You are about to commit on a detached head. This is a potentially dangerous "
-"thing to do because if you switch to another branch you will lose your "
-"changes and it can be difficult to retrieve them later from the reflog. You "
-"should probably cancel this commit and create a new branch to continue.\n"
-" \n"
-" Do you really want to proceed with your Commit?"
-msgstr ""
-
-#: lib/commit.tcl:299
-msgid "Calling commit-msg hook..."
-msgstr ""
-
-#: lib/commit.tcl:314
-msgid "Commit declined by commit-msg hook."
-msgstr ""
-
-#: lib/commit.tcl:327
-msgid "Committing changes..."
-msgstr ""
-
-#: lib/commit.tcl:344
-msgid "write-tree failed:"
-msgstr ""
-
-#: lib/commit.tcl:345 lib/commit.tcl:395 lib/commit.tcl:422
-msgid "Commit failed."
-msgstr ""
-
-#: lib/commit.tcl:362
-#, tcl-format
-msgid "Commit %s appears to be corrupt"
-msgstr ""
-
-#: lib/commit.tcl:367
-msgid ""
-"No changes to commit.\n"
-"\n"
-"No files were modified by this commit and it was not a merge commit.\n"
-"\n"
-"A rescan will be automatically started now.\n"
-msgstr ""
-
-#: lib/commit.tcl:374
-msgid "No changes to commit."
-msgstr ""
-
-#: lib/commit.tcl:394
-msgid "commit-tree failed:"
-msgstr ""
-
-#: lib/commit.tcl:421
-msgid "update-ref failed:"
-msgstr ""
-
-#: lib/commit.tcl:514
-#, tcl-format
-msgid "Created commit %s: %s"
-msgstr ""
-
-#: lib/branch_delete.tcl:16
-#, tcl-format
-msgid "%s (%s): Delete Branch"
-msgstr ""
-
-#: lib/branch_delete.tcl:21
-msgid "Delete Local Branch"
-msgstr ""
-
-#: lib/branch_delete.tcl:39
-msgid "Local Branches"
-msgstr ""
-
-#: lib/branch_delete.tcl:51
-msgid "Delete Only If Merged Into"
-msgstr ""
-
-#: lib/branch_delete.tcl:103
-#, tcl-format
-msgid "The following branches are not completely merged into %s:"
-msgstr ""
-
-#: lib/branch_delete.tcl:131
-#, tcl-format
-msgid " - %s:"
-msgstr ""
-
-#: lib/branch_delete.tcl:141
-#, tcl-format
-msgid ""
-"Failed to delete branches:\n"
-"%s"
-msgstr ""
-
-#: lib/date.tcl:25
-#, tcl-format
-msgid "Invalid date from Git: %s"
-msgstr ""
-
-#: lib/database.tcl:42
-msgid "Number of loose objects"
-msgstr ""
-
-#: lib/database.tcl:43
-msgid "Disk space used by loose objects"
-msgstr ""
-
-#: lib/database.tcl:44
-msgid "Number of packed objects"
-msgstr ""
-
-#: lib/database.tcl:45
-msgid "Number of packs"
-msgstr ""
-
-#: lib/database.tcl:46
-msgid "Disk space used by packed objects"
-msgstr ""
-
-#: lib/database.tcl:47
-msgid "Packed objects waiting for pruning"
-msgstr ""
-
-#: lib/database.tcl:48
-msgid "Garbage files"
-msgstr ""
-
-#: lib/database.tcl:66
-#, tcl-format
-msgid "%s (%s): Database Statistics"
-msgstr ""
-
-#: lib/database.tcl:72
-msgid "Compressing the object database"
-msgstr ""
-
-#: lib/database.tcl:83
-msgid "Verifying the object database with fsck-objects"
-msgstr ""
-
-#: lib/database.tcl:107
-#, tcl-format
-msgid ""
-"This repository currently has approximately %i loose objects.\n"
-"\n"
-"To maintain optimal performance it is strongly recommended that you compress "
-"the database.\n"
-"\n"
-"Compress the database now?"
-msgstr ""
-
-#: lib/error.tcl:20
-#, tcl-format
-msgid "%s: error"
-msgstr ""
-
-#: lib/error.tcl:36
-#, tcl-format
-msgid "%s: warning"
-msgstr ""
-
-#: lib/error.tcl:80
-#, tcl-format
-msgid "%s hook failed:"
-msgstr ""
-
-#: lib/error.tcl:96
-msgid "You must correct the above errors before committing."
-msgstr ""
-
-#: lib/error.tcl:116
-#, tcl-format
-msgid "%s (%s): error"
-msgstr ""
-
-#: lib/merge.tcl:13
-msgid ""
-"Cannot merge while amending.\n"
-"\n"
-"You must finish amending this commit before starting any type of merge.\n"
-msgstr ""
-
-#: lib/merge.tcl:27
-msgid ""
-"Last scanned state does not match repository state.\n"
-"\n"
-"Another Git program has modified this repository since the last scan.  A "
-"rescan must be performed before a merge can be performed.\n"
-"\n"
-"The rescan will be automatically started now.\n"
-msgstr ""
-
-#: lib/merge.tcl:45
-#, tcl-format
-msgid ""
-"You are in the middle of a conflicted merge.\n"
-"\n"
-"File %s has merge conflicts.\n"
-"\n"
-"You must resolve them, stage the file, and commit to complete the current "
-"merge.  Only then can you begin another merge.\n"
-msgstr ""
-
-#: lib/merge.tcl:55
-#, tcl-format
-msgid ""
-"You are in the middle of a change.\n"
-"\n"
-"File %s is modified.\n"
-"\n"
-"You should complete the current commit before starting a merge.  Doing so "
-"will help you abort a failed merge, should the need arise.\n"
-msgstr ""
-
-#: lib/merge.tcl:108
-#, tcl-format
-msgid "%s of %s"
-msgstr ""
-
-#: lib/merge.tcl:126
-#, tcl-format
-msgid "Merging %s and %s..."
-msgstr ""
-
-#: lib/merge.tcl:137
-msgid "Merge completed successfully."
-msgstr ""
-
-#: lib/merge.tcl:139
-msgid "Merge failed.  Conflict resolution is required."
-msgstr ""
-
-#: lib/merge.tcl:156
-#, tcl-format
-msgid "%s (%s): Merge"
-msgstr ""
-
-#: lib/merge.tcl:164
-#, tcl-format
-msgid "Merge Into %s"
-msgstr ""
-
-#: lib/merge.tcl:183
-msgid "Revision To Merge"
-msgstr ""
-
-#: lib/merge.tcl:218
-msgid ""
-"Cannot abort while amending.\n"
-"\n"
-"You must finish amending this commit.\n"
-msgstr ""
-
-#: lib/merge.tcl:228
-msgid ""
-"Abort merge?\n"
-"\n"
-"Aborting the current merge will cause *ALL* uncommitted changes to be lost.\n"
-"\n"
-"Continue with aborting the current merge?"
-msgstr ""
-
-#: lib/merge.tcl:234
-msgid ""
-"Reset changes?\n"
-"\n"
-"Resetting the changes will cause *ALL* uncommitted changes to be lost.\n"
-"\n"
-"Continue with resetting the current changes?"
-msgstr ""
-
-#: lib/merge.tcl:246
-msgid "Aborting"
-msgstr ""
-
-#: lib/merge.tcl:247
-msgid "files reset"
-msgstr ""
-
-#: lib/merge.tcl:277
-msgid "Abort failed."
-msgstr ""
-
-#: lib/merge.tcl:279
-msgid "Abort completed.  Ready."
-msgstr ""
diff --git a/git-gui/po/meson.build b/git-gui/po/meson.build
new file mode 100644
index 0000000..00cae74
--- /dev/null
+++ b/git-gui/po/meson.build
@@ -0,0 +1,38 @@
+languages = [
+  'bg',
+  'de',
+  'el',
+  'fr',
+  'hu',
+  'it',
+  'ja',
+  'nb',
+  'pt_br',
+  'pt_pt',
+  'ru',
+  'sv',
+  'vi',
+  'zh_cn',
+]
+
+msgfmt = find_program('msgfmt', required: false)
+if not msgfmt.found()
+  subdir_done()
+endif
+
+foreach language : languages
+  custom_target(
+    input: language + '.po',
+    output: language + '.msg',
+    command: [
+      msgfmt,
+      '--statistics',
+      '--tcl',
+      '--locale=' + language,
+      '-d', meson.current_build_dir(),
+      '@INPUT@',
+    ],
+    install: true,
+    install_dir: get_option('datadir') / 'git-gui/lib/msgs',
+  )
+endforeach
diff --git a/git-request-pull.sh b/git-request-pull.sh
index 775ba8e..6a7b793 100755
--- a/git-request-pull.sh
+++ b/git-request-pull.sh
@@ -78,41 +78,47 @@
 merge_base=$(git merge-base $baserev $headrev) ||
 die "fatal: No commits in common between $base and $head"
 
-# $head is the refname from the command line.
-# Find a ref with the same name as $head that exists at the remote
+find_matching_ref () {
+	while read sha1 ref
+	do
+		case "$ref" in
+		*"^"?*)
+			ref="${ref%"^"*}"
+			deref=true
+			;;
+		*)
+			deref=
+			;;
+		esac
+
+		if test "$sha1" = "${remote:-HEAD}"
+		then
+			echo "$sha1 $sha1"
+			break
+		fi
+
+		case "$ref" in
+		"${remote:-HEAD}"|*"/${remote:-HEAD}")
+			if test -z "$deref"
+			then
+				# Remember the matching unpeeled object on the
+				# remote side.
+				remote_sha1="$sha1"
+			fi
+
+			if test "$sha1" = "$headrev"
+			then
+				echo "${remote_sha1:-$headrev} $ref"
+				break
+			fi
+			;;
+		esac
+	done
+}
+
+# Find a ref with the same name as $remote that exists at the remote
 # and points to the same commit as the local object.
-find_matching_ref='
-	my ($head,$headrev) = (@ARGV);
-	my $pattern = qr{/\Q$head\E$};
-	my ($remote_sha1, $found);
-
-	while (<STDIN>) {
-		chomp;
-		my ($sha1, $ref, $deref) = /^(\S+)\s+([^^]+)(\S*)$/;
-
-		if ($sha1 eq $head) {
-			$found = $remote_sha1 = $sha1;
-			break;
-		}
-
-		if ($ref eq $head || $ref =~ $pattern) {
-			if ($deref eq "") {
-				# Remember the matching object on the remote side
-				$remote_sha1 = $sha1;
-			}
-			if ($sha1 eq $headrev) {
-				$found = $ref;
-				break;
-			}
-		}
-	}
-	if ($found) {
-		$remote_sha1 = $headrev if ! defined $remote_sha1;
-		print "$remote_sha1 $found\n";
-	}
-'
-
-set fnord $(git ls-remote "$url" | @PERL_PATH@ -e "$find_matching_ref" "${remote:-HEAD}" "$headrev")
+set fnord $(git ls-remote "$url" | find_matching_ref)
 remote_sha1=$2
 ref=$3
 
diff --git a/git-send-email.perl b/git-send-email.perl
index 1f613fa..659e6c5 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -41,6 +41,8 @@
     --subject               <str>  * Email "Subject:"
     --reply-to              <str>  * Email "Reply-To:"
     --in-reply-to           <str>  * Email "In-Reply-To:"
+    --[no-]outlook-id-fix          * The SMTP host is an Outlook server that munges the
+                                     Message-ID. Retrieve it from the server.
     --[no-]xmailer                 * Add "X-Mailer:" header (default).
     --[no-]annotate                * Review each patch that will be sent in an editor.
     --compose                      * Open an editor for introduction.
@@ -68,7 +70,7 @@
     --smtp-auth             <str>  * Space-separated list of allowed AUTH mechanisms, or
                                      "none" to disable authentication.
                                      This setting forces to use one of the listed mechanisms.
-    --no-smtp-auth                   Disable SMTP authentication. Shorthand for
+    --no-smtp-auth                 * Disable SMTP authentication. Shorthand for
                                      `--smtp-auth=none`
     --smtp-debug            <0|1>  * Disable, enable Net::SMTP debug.
 
@@ -290,6 +292,7 @@
 my $mailmap = 0;
 my $target_xfer_encoding = 'auto';
 my $forbid_sendmail_variables = 1;
+my $outlook_id_fix = 'auto';
 
 my %config_bool_settings = (
     "thread" => \$thread,
@@ -305,6 +308,7 @@
     "xmailer" => \$use_xmailer,
     "forbidsendmailvariables" => \$forbid_sendmail_variables,
     "mailmap" => \$mailmap,
+    "outlookidfix" => \$outlook_id_fix,
 );
 
 my %config_settings = (
@@ -551,6 +555,7 @@
 		    "relogin-delay=i" => \$relogin_delay,
 		    "git-completion-helper" => \$git_completion_helper,
 		    "v=s" => \$reroll_count,
+		    "outlook-id-fix!" => \$outlook_id_fix,
 );
 $rc = GetOptions(%options);
 
@@ -1354,7 +1359,9 @@
 
 sub valid_fqdn {
 	my $domain = shift;
-	return defined $domain && !($^O eq 'darwin' && $domain =~ /\.local$/) && $domain =~ /\./;
+	my $subdomain = '(?!-)[A-Za-z0-9-]{1,63}(?<!-)';
+	return defined $domain && !($^O eq 'darwin' && $domain =~ /\.local$/)
+		&& $domain  =~ /^$subdomain(?:\.$subdomain)*$/;
 }
 
 sub maildomain_net {
@@ -1386,8 +1393,22 @@
 	return $maildomain;
 }
 
+sub maildomain_hostname_command {
+	my $maildomain;
+
+	if ($^O eq 'linux' || $^O eq 'darwin') {
+		my $domain = `(hostname -f) 2>/dev/null`;
+		if (!$?) {
+			chomp($domain);
+			$maildomain = $domain if valid_fqdn($domain);
+		}
+	}
+	return $maildomain;
+}
+
 sub maildomain {
-	return maildomain_net() || maildomain_mta() || 'localhost.localdomain';
+	return maildomain_net() || maildomain_mta() ||
+		maildomain_hostname_command || 'localhost.localdomain';
 }
 
 sub smtp_host_string {
@@ -1574,6 +1595,16 @@
 	return ($recipients_ref, $to, $date, $gitversion, $cc, $ccline, $header);
 }
 
+sub is_outlook {
+	my ($host) = @_;
+	if ($outlook_id_fix eq 'auto') {
+		$outlook_id_fix =
+			($host eq 'smtp.office365.com' ||
+			 $host eq 'smtp-mail.outlook.com') ? 1 : 0;
+	}
+	return $outlook_id_fix;
+}
+
 # Prepares the email, then asks the user what to do.
 #
 # If the user chooses to send the email, it's sent and 1 is returned.
@@ -1737,6 +1768,22 @@
 			$smtp->datasend("$line") or die $smtp->message;
 		}
 		$smtp->dataend() or die $smtp->message;
+
+		# Outlook discards the Message-ID header we set while sending the email
+		# and generates a new random Message-ID. So in order to avoid breaking
+		# threads, we simply retrieve the Message-ID from the server response
+		# and assign it to the $message_id variable, which will then be
+		# assigned to $in_reply_to by the caller when the next message is sent
+		# as a response to this message.
+		if (is_outlook($smtp_server)) {
+			if ($smtp->message =~ /<([^>]+)>/) {
+				$message_id = "<$1>";
+				printf __("Outlook reassigned Message-ID to: %s\n"), $message_id;
+			} else {
+				warn __("Warning: Could not retrieve Message-ID from server response.\n");
+			}
+		}
+
 		$smtp->code =~ /250|200/ or die sprintf(__("Failed to send %s\n"), $subject).$smtp->message;
 	}
 	if ($quiet) {
diff --git a/git-zlib.h b/git-zlib.h
index 1e8d9aa..0e66fef 100644
--- a/git-zlib.h
+++ b/git-zlib.h
@@ -4,7 +4,7 @@
 #include "compat/zlib-compat.h"
 
 typedef struct git_zstream {
-	z_stream z;
+	struct z_stream_s z;
 	unsigned long avail_in;
 	unsigned long avail_out;
 	unsigned long total_in;
diff --git a/gitk-git/Makefile b/gitk-git/Makefile
index 3a3c56c..cc32dca 100644
--- a/gitk-git/Makefile
+++ b/gitk-git/Makefile
@@ -73,7 +73,7 @@
 	$(foreach p, $(ALL_POFILES), echo Updating $p ; msgmerge -U $p $(PO_TEMPLATE) ; )
 $(ALL_MSGFILES): %.msg : %.po
 	@echo Generating catalog $@
-	$(MSGFMT) --statistics --tcl $< -l $(basename $(notdir $<)) -d $(dir $@)
+	$(MSGFMT) --statistics --tcl -l $(basename $(notdir $<)) -d $(dir $@) $<
 
 .PHONY: all install uninstall clean update-po
 .PHONY: FORCE
diff --git a/gitk-git/gitk b/gitk-git/gitk
index bc9efa1..1968976 100755
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -13,133 +13,102 @@
 ##
 ## Enabling platform-specific code paths
 
-proc is_MacOSX {} {
-	if {[tk windowingsystem] eq {aqua}} {
-		return 1
-	}
-	return 0
-}
-
 proc is_Windows {} {
-	if {$::tcl_platform(platform) eq {windows}} {
-		return 1
-	}
-	return 0
-}
-
-set _iscygwin {}
-proc is_Cygwin {} {
-	global _iscygwin
-	if {$_iscygwin eq {}} {
-		if {[string match "CYGWIN_*" $::tcl_platform(os)]} {
-			set _iscygwin 1
-		} else {
-			set _iscygwin 0
-		}
-	}
-	return $_iscygwin
+    if {$::tcl_platform(platform) eq {windows}} {
+        return 1
+    }
+    return 0
 }
 
 ######################################################################
 ##
 ## PATH lookup
 
-set _search_path {}
-proc _which {what args} {
-	global env _search_exe _search_path
+if {[is_Windows]} {
+    set _search_path {}
+    proc _which {what args} {
+        global env _search_path
 
-	if {$_search_path eq {}} {
-		if {[is_Cygwin] && [regexp {^(/|\.:)} $env(PATH)]} {
-			set _search_path [split [exec cygpath \
-				--windows \
-				--path \
-				--absolute \
-				$env(PATH)] {;}]
-			set _search_exe .exe
-		} elseif {[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
-		} else {
-			set _search_path [split $env(PATH) :]
-			set _search_exe {}
-		}
-	}
+        if {$_search_path eq {}} {
+            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 ""]
+        }
 
-	if {[is_Windows] && [lsearch -exact $args -script] >= 0} {
-		set suffix {}
-	} else {
-		set suffix $_search_exe
-	}
+        if {[lsearch -exact $args -script] >= 0} {
+            set suffix {}
+        } else {
+            set suffix .exe
+        }
 
-	foreach p $_search_path {
-		set p [file join $p $what$suffix]
-		if {[file exists $p]} {
-			return [file normalize $p]
-		}
-	}
-	return {}
-}
+        foreach p $_search_path {
+            set p [file join $p $what$suffix]
+            if {[file exists $p]} {
+                return [file normalize $p]
+            }
+        }
+        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 {[file pathtype $cmd] ne "absolute"} {
-			set fullpath [_which $cmd]
-			if {$fullpath eq ""} {
-				throw {NOT-FOUND} "$cmd not found in PATH"
-			}
-			lset command_line $i $fullpath
-		}
+    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
-			}
-		}
-	}
-	return $command_line
-}
+            # 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
+                }
+            }
+        }
+        return $command_line
+    }
 
-# Override `exec` to avoid unsafe PATH lookup
+    # Override `exec` to avoid unsafe PATH lookup
 
-rename exec real_exec
+    rename exec real_exec
 
-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
-}
+    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
+    }
 
-# Override `open` to avoid unsafe PATH lookup
+    # Override `open` to avoid unsafe PATH lookup
 
-rename open real_open
+    rename open real_open
 
-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
+    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
+    }
 }
 
 # End of safe PATH lookup stuff
@@ -491,11 +460,11 @@
 # 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
+    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
@@ -4632,7 +4601,7 @@
     .bar.view add radiobutton -label $viewname($n) \
         -command [list showview $n] -variable selectedview -value $n
     #$viewhlmenu add radiobutton -label $viewname($n) \
-    #	-command [list addvhighlight $n] -variable selectedhlview
+    #   -command [list addvhighlight $n] -variable selectedhlview
 }
 
 proc showview {n} {
@@ -7139,7 +7108,7 @@
 
 # mark the bits of a headline or author that match a find string
 proc markmatches {canv l str tag matches font row} {
-    global selectedline
+    global selectedline foundbgcolor
 
     set bbox [$canv bbox $tag]
     set x0 [lindex $bbox 0]
@@ -7153,7 +7122,7 @@
         set xlen [font measure $font [string range $str 0 [expr {$end}]]]
         set t [$canv create rect [expr {$x0+$xoff}] $y0 \
                    [expr {$x0+$xlen+2}] $y1 \
-                   -outline {} -tags [list match$l matches] -fill yellow]
+                   -outline {} -tags [list match$l matches] -fill $foundbgcolor]
         $canv lower $t
         if {$row == $selectedline} {
             $canv raise $t secsel
@@ -11767,13 +11736,11 @@
     grid x $page.tabstopl $page.tabstop -sticky w
 
     ${NS}::label $page.wrapcommentl -text [mc "Wrap comment text"]
-    ${NS}::combobox $page.wrapcomment -values {none char word} -state readonly \
-        -textvariable wrapcomment
+    makedroplist $page.wrapcomment wrapcomment none char word
     grid x $page.wrapcommentl $page.wrapcomment -sticky w
 
     ${NS}::label $page.wrapdefaultl -text [mc "Wrap other text"]
-    ${NS}::combobox $page.wrapdefault -values {none char word} -state readonly \
-        -textvariable wrapdefault
+    makedroplist $page.wrapdefault wrapdefault none char word
     grid x $page.wrapdefaultl $page.wrapdefault -sticky w
 
     ${NS}::checkbutton $page.ntag -text [mc "Display nearby tags/heads"] \
diff --git a/gitk-git/po/meson.build b/gitk-git/po/meson.build
index b1ed019..c00b3d5 100644
--- a/gitk-git/po/meson.build
+++ b/gitk-git/po/meson.build
@@ -12,6 +12,7 @@
     'pt_pt',
     'ru',
     'sv',
+    'ta',
     'vi',
     'zh_cn',
   ],
diff --git a/gitk-git/po/ta.po b/gitk-git/po/ta.po
new file mode 100644
index 0000000..0e390c5
--- /dev/null
+++ b/gitk-git/po/ta.po
@@ -0,0 +1,1457 @@
+# Translation of gitk
+# Copyright (C) 2024-2025 தமிழ்நேரம்
+# This file is distributed under the same license as the gitk package.
+# தமிழ்நேரம் (TamilNeram.github.io), 2025.
+#
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gitk\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2025-05-07 08:01+0530\n"
+"PO-Revision-Date: 2025-05-07 09:17\n"
+"Last-Translator: தமிழ்நேரம் (TamilNeram.github.io)\n"
+"Language-Team: Tamil\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: gitk:274
+msgid "Couldn't get list of unmerged files:"
+msgstr "ஒருங்கிணைக்கப்படாத கோப்புகளின் பட்டியலைப் பெற முடியவில்லை:"
+
+#: gitk:346 gitk:2565
+msgid "Color words"
+msgstr "வண்ண சொற்கள்"
+
+#: gitk:351 gitk:2565 gitk:8476 gitk:8509
+msgid "Markup words"
+msgstr "குறிக்கப்பட்ட சொற்கள்"
+
+#: gitk:458
+msgid "Error parsing revisions:"
+msgstr "பிழைகளை பாகுபடுத்துதல்:"
+
+#: gitk:524
+msgid "Error executing --argscmd command:"
+msgstr "--argscmd கட்டளையை இயக்குவதில் பிழை:"
+
+#: gitk:537
+msgid "No files selected: --merge specified but no files are unmerged."
+msgstr ""
+"கோப்புகள் எதுவும் தேர்ந்தெடுக்கப்படவில்லை: --ஒன்றிணை குறிப்பிடப்பட்டுள்ளது, "
+"ஆனால் கோப்புகள் எதுவும் அவிழ்க்கப்படவில்லை."
+
+#: gitk:540
+msgid ""
+"No files selected: --merge specified but no unmerged files are within file "
+"limit."
+msgstr ""
+"கோப்புகள் எதுவும் தேர்ந்தெடுக்கப்படவில்லை: --ஒன்றிணை குறிப்பிடப்பட்டுள்ளது, "
+"ஆனால் அவிழ்க்கப்படாத கோப்புகள் எதுவும் கோப்பு வரம்பிற்குள் இல்லை."
+
+#: gitk:565 gitk:720
+msgid "Error executing git log:"
+msgstr "அறிவிலி பதிவை இயக்குவதில் பிழை:"
+
+#: gitk:583 gitk:736
+msgid "Reading"
+msgstr "படித்தல்"
+
+#: gitk:643 gitk:4736
+msgid "Reading commits..."
+msgstr "உறுதிமொழிகளைப் படித்தல்..."
+
+#: gitk:646 gitk:1795 gitk:4739
+msgid "No commits selected"
+msgstr "எந்த உறுதிமொழிகளும் தேர்ந்தெடுக்கப்படவில்லை"
+
+#: gitk:1603 gitk:4256 gitk:12883
+msgid "Command line"
+msgstr "கட்டளை வரி"
+
+#: gitk:1669
+msgid "Can't parse git log output:"
+msgstr "அறிவிலி பதிவு வெளியீட்டை அலச முடியாது:"
+
+#: gitk:1898
+msgid "No commit information available"
+msgstr "உறுதிமொழி செய்தி எதுவும் கிடைக்கவில்லை"
+
+#: gitk:2065 gitk:2094 gitk:4526 gitk:10016 gitk:11626 gitk:11946
+msgid "OK"
+msgstr "சரி"
+
+#: gitk:2096 gitk:4528 gitk:9452 gitk:9531 gitk:9661 gitk:9747 gitk:10018
+#: gitk:11627 gitk:11947
+msgid "Cancel"
+msgstr "நீக்கறல்"
+
+#: gitk:2249
+msgid "&Update"
+msgstr "புதுப்பித்தல்"
+
+#: gitk:2250
+msgid "&Reload"
+msgstr "மீண்டும் ஏற்று"
+
+#: gitk:2251
+msgid "Reread re&ferences"
+msgstr "குறிப்புகளை மீண்டும் படி"
+
+#: gitk:2252
+msgid "&List references"
+msgstr "பட்டியல் குறிப்புகள்"
+
+#: gitk:2254
+msgid "Start git &gui"
+msgstr "அறிவிலி இடைமுகத்தைத் தொடங்கு"
+
+#: gitk:2256
+msgid "&Quit"
+msgstr "வெளியேறு"
+
+#: gitk:2248
+msgid "&File"
+msgstr "கோப்பு"
+
+#: gitk:2260
+msgid "&Preferences"
+msgstr "விருப்பத்தேர்வுகள்"
+
+#: gitk:2259
+msgid "&Edit"
+msgstr "திருத்து"
+
+#: gitk:2264
+msgid "&New view..."
+msgstr "புதிய பார்வை..."
+
+#: gitk:2265
+msgid "&Edit view..."
+msgstr "பார்வையைத் திருத்து..."
+
+#: gitk:2266
+msgid "&Delete view"
+msgstr "பார்வையை நீக்கு"
+
+#: gitk:2268
+msgid "&All files"
+msgstr "அனைத்து கோப்புகளும்"
+
+#: gitk:2263
+msgid "&View"
+msgstr "காண்க"
+
+#: gitk:2273 gitk:2283
+msgid "&About gitk"
+msgstr "அறிவிலிகே பற்றி"
+
+#: gitk:2274 gitk:2288
+msgid "&Key bindings"
+msgstr "முக்கிய பிணைப்புகள்"
+
+#: gitk:2272 gitk:2287
+msgid "&Help"
+msgstr "உதவி"
+
+#: gitk:2365 gitk:8908
+msgid "Commit ID:"
+msgstr "உறுதிமொழி அடையாளம்:"
+
+#: gitk:2409
+msgid "Row"
+msgstr "நிரை"
+
+#: gitk:2447
+msgid "Find"
+msgstr "கண்டுபிடி"
+
+#: gitk:2475
+msgid "commit"
+msgstr "உறுதிமொழி"
+
+#: gitk:2479 gitk:2481 gitk:4898 gitk:4921 gitk:4945 gitk:6966 gitk:7038
+#: gitk:7123
+msgid "containing:"
+msgstr "கொண்டிருக்கிறது:"
+
+#: gitk:2482 gitk:3737 gitk:3742 gitk:4974
+msgid "touching paths:"
+msgstr "தொடும் பாதைகள்:"
+
+#: gitk:2483 gitk:4988
+msgid "adding/removing string:"
+msgstr "சரத்தைச் சேர்ப்பது/அகற்றுவது:"
+
+#: gitk:2484 gitk:4990
+msgid "changing lines matching:"
+msgstr "பொருந்தக்கூடிய வரிகளை மாற்றுதல்:"
+
+#: gitk:2493 gitk:2495 gitk:4977
+msgid "Exact"
+msgstr "சரியான"
+
+#: gitk:2495 gitk:5065 gitk:6934
+msgid "IgnCase"
+msgstr "வழக்குதவிர்"
+
+#: gitk:2495 gitk:4947 gitk:5063 gitk:6930
+msgid "Regexp"
+msgstr "வழக்கவெளி"
+
+#: gitk:2497 gitk:2498 gitk:5085 gitk:5115 gitk:5122 gitk:7059 gitk:7127
+msgid "All fields"
+msgstr "அனைத்து புலங்களும்"
+
+#: gitk:2498 gitk:5082 gitk:5115 gitk:6997
+msgid "Headline"
+msgstr "தலைப்பு"
+
+#: gitk:2499 gitk:5082 gitk:6997 gitk:7127 gitk:7639
+msgid "Comments"
+msgstr "கருத்துகள்"
+
+#: gitk:2499 gitk:5082 gitk:5087 gitk:5122 gitk:6997 gitk:7574 gitk:9086
+#: gitk:9101
+msgid "Author"
+msgstr "நூலாசிரியர்"
+
+#: gitk:2499 gitk:5082 gitk:6997 gitk:7576
+msgid "Committer"
+msgstr "உறுதிமொழிபவர்"
+
+#: gitk:2533
+msgid "Search"
+msgstr "தேடு"
+
+#: gitk:2541
+msgid "Diff"
+msgstr "வேறுபாடு"
+
+#: gitk:2543
+msgid "Old version"
+msgstr "பழைய பதிப்பு"
+
+#: gitk:2545
+msgid "New version"
+msgstr "புதிய பதிப்பு"
+
+#: gitk:2548
+msgid "Lines of context"
+msgstr "சூழலின் வரிகள்"
+
+#: gitk:2558
+msgid "Ignore space change"
+msgstr "இடைவெளி மாற்றத்தை புறக்கணி"
+
+#: gitk:2562 gitk:2564 gitk:8209 gitk:8462
+msgid "Line diff"
+msgstr "வரி வேறுபாடு"
+
+#: gitk:2637
+msgid "Patch"
+msgstr "ஒட்டு"
+
+#: gitk:2639
+msgid "Tree"
+msgstr "மரம்"
+
+#: gitk:2814 gitk:2835
+msgid "Diff this -> selected"
+msgstr "இதை வேறுபடுத்துங்கள் -> தேர்ந்தெடுக்கப்பட்டது"
+
+#: gitk:2815 gitk:2836
+msgid "Diff selected -> this"
+msgstr "வேறுபாடு தேர்ந்தெடுக்கப்பட்டது -> இது"
+
+#: gitk:2816 gitk:2837
+msgid "Make patch"
+msgstr "ஒட்டு செய்"
+
+#: gitk:2817 gitk:9510
+msgid "Create tag"
+msgstr "குறிச்சொல்லை உருவாக்கு"
+
+#: gitk:2818
+msgid "Copy commit reference"
+msgstr "உறுதிமொழி குறிப்பு நகலெடு"
+
+#: gitk:2819 gitk:9641
+msgid "Write commit to file"
+msgstr "கோப்பில் உறவை எழுதுங்கள்"
+
+#: gitk:2820
+msgid "Create new branch"
+msgstr "புதிய கிளையை உருவாக்கு"
+
+#: gitk:2821
+msgid "Cherry-pick this commit"
+msgstr "கனி-எடு இந்த உறுதிமொழி"
+
+#: gitk:2822
+msgid "Reset HEAD branch to here"
+msgstr "தலை கிளையை இங்கே மீட்டமை"
+
+#: gitk:2823
+msgid "Mark this commit"
+msgstr "இந்த உறுதிமொழியைக் குறி"
+
+#: gitk:2824
+msgid "Return to mark"
+msgstr "மார்க்குக்குத் திரும்பு"
+
+#: gitk:2825
+msgid "Find descendant of this and mark"
+msgstr "இதன் வழித்தோன்றலைக் கண்டுபிடித்து குறி"
+
+#: gitk:2826
+msgid "Compare with marked commit"
+msgstr "குறிக்கப்பட்ட உறுதிப்பாட்டுடன் ஒப்பிடுக"
+
+#: gitk:2827 gitk:2838
+msgid "Diff this -> marked commit"
+msgstr "இதை வேறுபடுத்துங்கள் -> குறிக்கப்பட்ட உறுதிமொழி"
+
+#: gitk:2828 gitk:2839
+msgid "Diff marked commit -> this"
+msgstr "வேறுபாடு குறிக்கப்பட்ட உறுதிமொழி -> இது"
+
+#: gitk:2829
+msgid "Revert this commit"
+msgstr "இந்த உறுதிப்பாட்டை மாற்றவும்"
+
+#: gitk:2845
+msgid "Check out this branch"
+msgstr "இந்த கிளையைப் பாருங்கள்"
+
+#: gitk:2846
+msgid "Rename this branch"
+msgstr "இந்த கிளையை மறுபெயரிடு"
+
+#: gitk:2847
+msgid "Remove this branch"
+msgstr "இந்த கிளையை அகற்று"
+
+#: gitk:2848
+msgid "Copy branch name"
+msgstr "கிளை பெயரை நகலெடு"
+
+#: gitk:2855
+msgid "Highlight this too"
+msgstr "இதை முன்னிலைப்படுத்து"
+
+#: gitk:2856
+msgid "Highlight this only"
+msgstr "இதை முன்னிலைப்படுத்து"
+
+#: gitk:2857
+msgid "External diff"
+msgstr "வெளிப்புற வேறுபாடு"
+
+#: gitk:2858
+msgid "Blame parent commit"
+msgstr "பெற்றோரை குற்றம் சாட்டு"
+
+#: gitk:2859
+msgid "Copy path"
+msgstr "நகல் பாதை"
+
+#: gitk:2866
+msgid "Show origin of this line"
+msgstr "இந்த வரியின் தோற்றத்தைக் காட்டு"
+
+#: gitk:2867
+msgid "Run git gui blame on this line"
+msgstr "இந்த வரியில் அறிவிலி இடைமுகம் பழியை இயக்கு"
+
+#: gitk:3221
+msgid "About gitk"
+msgstr "அறிவிலிகே பற்றி"
+
+#: gitk:3223
+msgid ""
+"\n"
+"Gitk - a commit viewer for git\n"
+"\n"
+"Copyright © 2005-2016 Paul Mackerras\n"
+"\n"
+"Use and redistribute under the terms of the GNU General Public License"
+msgstr ""
+"\n"
+"அறிவிலிகே - அறிவிலி ஒரு உறுதிமொழி பார்வையாளர் \n"
+"\n"
+"பதிப்புரிமை © 2005-2016 பால் மெக்கெராச் \n"
+"\n"
+"குனு பொது பொதுமக்கள் உரிமத்தின் விதிமுறைகளின் கீழ் பயன்படுத்தவும் மறுபகிர்வு செய்யவும்"
+
+#: gitk:3231 gitk:3298 gitk:10231
+msgid "Close"
+msgstr "மூடு"
+
+#: gitk:3252
+msgid "Gitk key bindings"
+msgstr "அறிவிலிகே விசை பிணைப்புகள்"
+
+#: gitk:3255
+msgid "Gitk key bindings:"
+msgstr "அறிவிலிகே விசை பிணைப்புகள்:"
+
+#: gitk:3257
+#, tcl-format
+msgid "<%s-Q>\t\tQuit"
+msgstr "<%s-Q>\t\tவெளியேறு"
+
+#: gitk:3258
+#, tcl-format
+msgid "<%s-W>\t\tClose window"
+msgstr "<%s-w>\t\tசாளரத்தை மூடு"
+
+#: gitk:3259
+msgid "<Home>\t\tMove to first commit"
+msgstr "<வீடு> முதல் உறுதிமொழிக்கு நகர்த்து"
+
+#: gitk:3260
+msgid "<End>\t\tMove to last commit"
+msgstr "<முடி> கடைசி உறுதிமொழிக்கு நகர்த்து"
+
+#: gitk:3261
+msgid "<Up>, p, k\tMove up one commit"
+msgstr "<மேலே>, பி, கே\tஒரு உறுதிமொழியை மேலே நகர்த்து"
+
+#: gitk:3262
+msgid "<Down>, n, j\tMove down one commit"
+msgstr "<கீழ்>, n, j\tஒரு உறுதிமொழியை கீழே நகர்த்து"
+
+#: gitk:3263
+msgid "<Left>, z, h\tGo back in history list"
+msgstr "<இடது>, z, h\tவரலாற்று பட்டியலில் திரும்பிச் செல்"
+
+#: gitk:3264
+msgid "<Right>, x, l\tGo forward in history list"
+msgstr "<வலது>, x, l\tவரலாற்று பட்டியலில் முன்னோக்கி செல்"
+
+#: gitk:3265
+#, tcl-format
+msgid "<%s-n>\tGo to n-th parent of current commit in history list"
+msgstr ""
+"<%s-n> வரலாற்று பட்டியலில் தற்போதைய உறுதிப்பாட்டின் n- வது பெற்றோரிடம் "
+"செல்"
+
+#: gitk:3266
+msgid "<PageUp>\tMove up one page in commit list"
+msgstr "<பக்கம்மேல்>\tஉறுதிமொழி பட்டியலில் ஒரு பக்கத்தை நகர்த்து"
+
+#: gitk:3267
+msgid "<PageDown>\tMove down one page in commit list"
+msgstr "<பக்கம்கீழ்>\tஉறுதிமொழி பட்டியலில் ஒரு பக்கத்தை நகர்த்து"
+
+#: gitk:3268
+#, tcl-format
+msgid "<%s-Home>\tScroll to top of commit list"
+msgstr "<%s-வீடு>\tஉறுதிமொழி பட்டியலை மேல் பகுதிக்கு உருட்டவும்"
+
+#: gitk:3269
+#, tcl-format
+msgid "<%s-End>\tScroll to bottom of commit list"
+msgstr "<%s-முடி> உறுதிமொழி பட்டியலின் கீழ் பகுதிக்கு உருட்டவும்"
+
+#: gitk:3270
+#, tcl-format
+msgid "<%s-Up>\tScroll commit list up one line"
+msgstr "<%s-மேலே>\tஉறுதிமொழி பட்டியலை ஒரு வரி மேலே உருட்டவும்"
+
+#: gitk:3271
+#, tcl-format
+msgid "<%s-Down>\tScroll commit list down one line"
+msgstr "<%s-கீழ்>\tஉறுதிமொழி பட்டியலை ஒரு வரி கீழே உருட்டவும்"
+
+#: gitk:3272
+#, tcl-format
+msgid "<%s-PageUp>\tScroll commit list up one page"
+msgstr "<%s-பக்கம்மேலே>\tஉறுதிமொழி பட்டியலை ஒரு பக்கம் மேலே உருட்டவும்"
+
+#: gitk:3273
+#, tcl-format
+msgid "<%s-PageDown>\tScroll commit list down one page"
+msgstr "<%s-பக்கம்கீழ்>\tஉறுதிமொழி பட்டியலை ஒரு பக்கம் கீழே உருட்டவும்"
+
+#: gitk:3274
+msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
+msgstr "<உயர்த்து-மேலே>\tபின்னோக்கி கண்டுபிடி (மேல்நோக்கி, பின்னர் உறுதிமொழிகள்)"
+
+#: gitk:3275
+msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
+msgstr ""
+"<உயர்த்து-கீழே>\tமுன்னோக்குகளைக் கண்டறியவும் (கீழ்நோக்கி, முந்தைய "
+"உறுதிமொழிகள்)"
+
+#: gitk:3276
+msgid "<Delete>, b\tScroll diff view up one page"
+msgstr "<நீக்கு>, b\tசுருள் வேறுபாடு ஒரு பக்கத்தை மேலே காண்க"
+
+#: gitk:3277
+msgid "<Backspace>\tScroll diff view up one page"
+msgstr "<பின்வெளி>\tசுருள் வேறுபாடு ஒரு பக்கத்தை மேலே காண்க"
+
+#: gitk:3278
+msgid "<Space>\t\tScroll diff view down one page"
+msgstr "<Space>\t\tசுருள் வேறுபாடு ஒரு பக்கத்தைக் கீழே காண்க"
+
+#: gitk:3279
+msgid "u\t\tScroll diff view up 18 lines"
+msgstr "u\t\tசுருள் வேறுபாடு 18 வரிகளை மேலே காண்க"
+
+#: gitk:3280
+msgid "d\t\tScroll diff view down 18 lines"
+msgstr "d\t\tசுருள் வேறுபாடு 18 வரிகளைக் கீழே காண்க"
+
+#: gitk:3281
+#, tcl-format
+msgid "<%s-F>\t\tFind"
+msgstr "<%s-F>\t\tகண்டுபிடி"
+
+#: gitk:3282
+#, tcl-format
+msgid "<%s-G>\t\tMove to next find hit"
+msgstr "<%s-G>\t\tஅடுத்த கண்டுபிடிப்பு வெற்றிக்கு செல்"
+
+#: gitk:3283
+msgid "<Return>\tMove to next find hit"
+msgstr "<திரும்பு>\tஅடுத்ததைக் கண்டுபிடி"
+
+#: gitk:3284
+msgid "g\t\tGo to commit"
+msgstr "g\t\tஉறுதிமொழிக்கு செல்"
+
+#: gitk:3285
+msgid "/\t\tFocus the search box"
+msgstr "/\t\tதேடல் பெட்டியில் கவனம் செலுத்து"
+
+#: gitk:3286
+msgid "?\t\tMove to previous find hit"
+msgstr "?\t\tமுந்தைய கண்டுபிடிப்பு வெற்றிக்கு செல்"
+
+#: gitk:3287
+msgid "f\t\tScroll diff view to next file"
+msgstr "f\t\tஅடுத்த கோப்பிற்கு உருள் வேறுபாடு பார்வை"
+
+#: gitk:3288
+#, tcl-format
+msgid "<%s-S>\t\tSearch for next hit in diff view"
+msgstr "<%s-S>\t\tவேறுபாடு பார்வையில் அடுத்த வெற்றியைத் தேடுங்கள்"
+
+#: gitk:3289
+#, tcl-format
+msgid "<%s-R>\t\tSearch for previous hit in diff view"
+msgstr "<%s-r> வேறுபட்ட பார்வையில் முந்தைய வெற்றியைத் தேடுங்கள்"
+
+#: gitk:3290
+#, tcl-format
+msgid "<%s-KP+>\tIncrease font size"
+msgstr "<%s-KP+>\tஎழுத்துரு அளவை அதிகரி"
+
+#: gitk:3291
+#, tcl-format
+msgid "<%s-plus>\tIncrease font size"
+msgstr "<%s-plus>\tஎழுத்துரு அளவை அதிகரி"
+
+#: gitk:3292
+#, tcl-format
+msgid "<%s-KP->\tDecrease font size"
+msgstr "<%s-KP->\tஎழுத்துரு அளவைக் குறை"
+
+#: gitk:3293
+#, tcl-format
+msgid "<%s-minus>\tDecrease font size"
+msgstr "<%s-minus>\tஎழுத்துரு அளவைக் குறை"
+
+#: gitk:3294
+msgid "<F5>\t\tUpdate"
+msgstr "<F5>\t\tபுதுப்பிப்பு"
+
+#: gitk:3761 gitk:3770
+#, tcl-format
+msgid "Error creating temporary directory %s:"
+msgstr "தற்காலிக அடைவு %s ஐ உருவாக்குவது பிழை:"
+
+#: gitk:3783
+#, tcl-format
+msgid "Error getting \"%s\" from %s:"
+msgstr "%s இலிருந்து \" %s\" பெறுவது பிழை:"
+
+#: gitk:3846
+msgid "command failed:"
+msgstr "கட்டளை தோல்வியுற்றது:"
+
+#: gitk:3995
+msgid "No such commit"
+msgstr "அத்தகைய உறுதிமொழி இல்லை"
+
+#: gitk:4009
+msgid "git gui blame: command failed:"
+msgstr "அறிவிலி இடைமுக பழி: கட்டளை தோல்வியுற்றது:"
+
+#: gitk:4040
+#, tcl-format
+msgid "Couldn't read merge head: %s"
+msgstr "ஒன்றிணைப்பு தலையைப் படிக்க முடியவில்லை: %s"
+
+#: gitk:4048
+#, tcl-format
+msgid "Error reading index: %s"
+msgstr "பிழை வாசிப்பு குறியீடு: %s"
+
+#: gitk:4073
+#, tcl-format
+msgid "Couldn't start git blame: %s"
+msgstr "அறிவிலி பழியைத் தொடங்க முடியவில்லை: %s"
+
+#: gitk:4076 gitk:6965
+msgid "Searching"
+msgstr "தேடுகிறது"
+
+#: gitk:4108
+#, tcl-format
+msgid "Error running git blame: %s"
+msgstr "பிழை இயங்கும் அறிவிலி பழி: %s"
+
+#: gitk:4136
+#, tcl-format
+msgid "That line comes from commit %s,  which is not in this view"
+msgstr ""
+"அந்த வரி உறுதிமொழி %s என்பதிலிருந்து வருகிறது, இது இந்த பார்வையில் இல்லை"
+
+#: gitk:4150
+msgid "External diff viewer failed:"
+msgstr "வெளிப்புற வேறுபாடு பார்வையாளர் தோல்வியுற்றது:"
+
+#: gitk:4254
+msgid "All files"
+msgstr "அனைத்து கோப்புகளும்"
+
+#: gitk:4278
+msgid "View"
+msgstr "காண்க"
+
+#: gitk:4281
+msgid "Gitk view definition"
+msgstr "அறிவிலிகே பார்வை வரையறை"
+
+#: gitk:4285
+msgid "Remember this view"
+msgstr "இந்த பார்வையை நினைவில் கொள்ளுங்கள்"
+
+#: gitk:4286
+msgid "References (space separated list):"
+msgstr "குறிப்புகள் (இடைவெளி பிரிக்கப்பட்ட பட்டியல்):"
+
+#: gitk:4287
+msgid "Branches & tags:"
+msgstr "கிளைகள் மற்றும் குறிச்சொற்கள்:"
+
+#: gitk:4288
+msgid "All refs"
+msgstr "அனைத்து குறிப்புகள்"
+
+#: gitk:4289
+msgid "All (local) branches"
+msgstr "அனைத்து (உள்ளக) கிளைகளும்"
+
+#: gitk:4290
+msgid "All tags"
+msgstr "அனைத்து குறிச்சொற்களும்"
+
+#: gitk:4291
+msgid "All remote-tracking branches"
+msgstr "அனைத்து தொலை-கண்காணிப்பு கிளைகளும்"
+
+#: gitk:4292
+msgid "Commit Info (regular expressions):"
+msgstr "உறுதிமொழி செய்தி (வழக்கமான வெளிப்பாடுகள்):"
+
+#: gitk:4293
+msgid "Author:"
+msgstr "ஆசிரியர்:"
+
+#: gitk:4294
+msgid "Committer:"
+msgstr "உறுதிமொழிபவர்:"
+
+#: gitk:4295
+msgid "Commit Message:"
+msgstr "உறுதிமொழி செய்தி:"
+
+#: gitk:4296
+msgid "Matches all Commit Info criteria"
+msgstr "அனைத்து உறுதிமொழி செய்தி அளவுகோல்களையும் பொருத்துகிறது"
+
+#: gitk:4297
+msgid "Matches no Commit Info criteria"
+msgstr "உறுதிமொழி செய்தி அளவுகோல்களுடன் பொருந்தவில்லை"
+
+#: gitk:4298
+msgid "Changes to Files:"
+msgstr "கோப்புகளில் மாற்றங்கள்:"
+
+#: gitk:4299
+msgid "Fixed String"
+msgstr "நிலையான சரம்"
+
+#: gitk:4300
+msgid "Regular Expression"
+msgstr "வழக்கமான வெளிப்பாடு"
+
+#: gitk:4301
+msgid "Search string:"
+msgstr "தேடல் சரம்:"
+
+#: gitk:4302
+msgid ""
+"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
+"15:27:38\"):"
+msgstr ""
+"உறுதிமொழி தேதிகள் (\"2 வாரங்களுக்கு முன்பு\", \"2009-01-16 15:27:38\", \"மார்ச் 17, "
+"2009 15:27:38\"):"
+
+#: gitk:4303
+msgid "Since:"
+msgstr "பின்னர்:"
+
+#: gitk:4304
+msgid "Until:"
+msgstr "வரை:"
+
+#: gitk:4305
+msgid "Limit and/or skip a number of revisions (positive integer):"
+msgstr ""
+"பல திருத்தங்களை (நேர்மறை முழு எண்) கட்டுப்படுத்து மற்றும்/அல்லது தவிர்:"
+
+#: gitk:4306
+msgid "Number to show:"
+msgstr "காண்பிக்க எண்:"
+
+#: gitk:4307
+msgid "Number to skip:"
+msgstr "தவிர்க்க எண்:"
+
+#: gitk:4308
+msgid "Miscellaneous options:"
+msgstr "இதர விருப்பங்கள்:"
+
+#: gitk:4309
+msgid "Strictly sort by date"
+msgstr "கண்டிப்பாக தேதியின்படி வரிசைப்படுத்து"
+
+#: gitk:4310
+msgid "Mark branch sides"
+msgstr "கிளை பக்கங்களைக் குறி"
+
+#: gitk:4311
+msgid "Limit to first parent"
+msgstr "முதல் பெற்றோருக்கு வரம்பு"
+
+#: gitk:4312
+msgid "Simple history"
+msgstr "எளிய வரலாறு"
+
+#: gitk:4313
+msgid "Additional arguments to git log:"
+msgstr "அறிவிலி பதிவுக்கு கூடுதல் வாதங்கள்:"
+
+#: gitk:4314
+msgid "Enter files and directories to include, one per line:"
+msgstr "சேர்க்க கோப்புகள் மற்றும் கோப்பகங்களை உள்ளிடவும், ஒரு வரிக்கு ஒன்று:"
+
+#: gitk:4315
+msgid "Command to generate more commits to include:"
+msgstr "சேர்க்க கூடுதல் உறுதிமொழிகளை உருவாக்க கட்டளை:"
+
+#: gitk:4439
+msgid "Gitk: edit view"
+msgstr "அறிவிலிகே: திருத்து பார்வை"
+
+#: gitk:4447
+msgid "-- criteria for selecting revisions"
+msgstr "-- திருத்தங்களைத் தேர்ந்தெடுப்பதற்கான அளவுகோல்கள்"
+
+#: gitk:4452
+msgid "View Name"
+msgstr "பெயரைக் காண்க"
+
+#: gitk:4527
+msgid "Apply (F5)"
+msgstr "இடு (F5)"
+
+#: gitk:4565
+msgid "Error in commit selection arguments:"
+msgstr "உறுதிமொழி தேர்வு வாதங்களில் பிழை:"
+
+#: gitk:4620 gitk:4673 gitk:5135 gitk:5149 gitk:6419 gitk:12820 gitk:12821
+msgid "None"
+msgstr "எதுவுமில்லை"
+
+#: gitk:5232 gitk:5237
+msgid "Descendant"
+msgstr "வழித்தோன்றல்"
+
+#: gitk:5233
+msgid "Not descendant"
+msgstr "வழித்தோன்றல் அல்ல"
+
+#: gitk:5240 gitk:5245
+msgid "Ancestor"
+msgstr "மூதாதையர்"
+
+#: gitk:5241
+msgid "Not ancestor"
+msgstr "மூதாதையர் அல்ல"
+
+#: gitk:5535
+msgid "Local changes checked in to index but not committed"
+msgstr ""
+"உள்ளக மாற்றங்கள் குறியீட்டில் சரிபார்க்கப்பட்டன, ஆனால் உறுதிமொழியவில்லை"
+
+#: gitk:5571
+msgid "Local uncommitted changes, not checked in to index"
+msgstr "உள்ளக உறுதிமொழியாத மாற்றங்கள், குறியீட்டில் சரிபார்க்கப்படவில்லை"
+
+#: gitk:7319
+msgid "Error starting web browser:"
+msgstr "வலை உலாவியைத் தொடங்குவதில் பிழை:"
+
+#: gitk:7380
+msgid "and many more"
+msgstr "மற்றும் மேலும் பல"
+
+#: gitk:7383
+msgid "many"
+msgstr "பல"
+
+#: gitk:7578
+msgid "Tags:"
+msgstr "குறிச்சொற்கள்:"
+
+#: gitk:7595 gitk:7601 gitk:9081
+msgid "Parent"
+msgstr "பெற்றோர்"
+
+#: gitk:7606
+msgid "Child"
+msgstr "குழந்தை"
+
+#: gitk:7615
+msgid "Branch"
+msgstr "கிளை"
+
+#: gitk:7618
+msgid "Follows"
+msgstr "பின்வருமாறு"
+
+#: gitk:7621
+msgid "Precedes"
+msgstr "முன்னால்"
+
+#: gitk:8216
+#, tcl-format
+msgid "Error getting diffs: %s"
+msgstr "வேறுபாடு பெறுவதில் பிழை: %s"
+
+#: gitk:8906
+msgid "Goto:"
+msgstr "செல்:"
+
+#: gitk:8927
+#, tcl-format
+msgid "Short commit ID %s is ambiguous"
+msgstr "குறுகிய உறுதிமொழி அடையாளம் %s தெளிவற்றவை"
+
+#: gitk:8934
+#, tcl-format
+msgid "Revision %s is not known"
+msgstr "திருத்தம் %s தெரியவில்லை"
+
+#: gitk:8944
+#, tcl-format
+msgid "Commit ID %s is not known"
+msgstr "உறுதிமொழி அடையாளம் %s அறியப்படவில்லை"
+
+#: gitk:8946
+#, tcl-format
+msgid "Revision %s is not in the current view"
+msgstr "திருத்தம் %s தற்போதைய பார்வையில் இல்லை"
+
+#: gitk:9088 gitk:9103
+msgid "Date"
+msgstr "திகதி"
+
+#: gitk:9091
+msgid "Children"
+msgstr "குழந்தைகள்"
+
+#: gitk:9154
+#, tcl-format
+msgid "Reset %s branch to here"
+msgstr "%s கிளையை இங்கே மீட்டமை"
+
+#: gitk:9156
+msgid "Detached head: can't reset"
+msgstr "பிரிக்கப்பட்ட தலை: மீட்டமைக்க முடியாது"
+
+#: gitk:9261 gitk:9267
+msgid "Skipping merge commit "
+msgstr "ஒன்றிணை உறுதிமொழியை தவர்கிறது "
+
+#: gitk:9276 gitk:9281
+msgid "Error getting patch ID for "
+msgstr "ஒட்டு அடையாளத்தைப் பெறுவதில் பிழை"
+
+#: gitk:9277 gitk:9282
+msgid " - stopping\n"
+msgstr "- நிறுத்துதல்\n"
+
+#: gitk:9287 gitk:9290 gitk:9298 gitk:9312 gitk:9321
+msgid "Commit "
+msgstr "உறுதிமொழி"
+
+#: gitk:9291
+msgid ""
+" is the same patch as\n"
+"       "
+msgstr "அதே ஒட்டு\n"
+"       "
+
+#: gitk:9299
+msgid ""
+" differs from\n"
+"       "
+msgstr "இருந்து வேறுபடுகிறது\n"
+"       "
+
+#: gitk:9301
+msgid ""
+"Diff of commits:\n"
+"\n"
+msgstr "உறுதிமொழியின் வேறுபாடு:\n"
+"\n"
+
+#: gitk:9313 gitk:9322
+#, tcl-format
+msgid " has %s children - stopping\n"
+msgstr "%s குழந்தைகள் உள்ளனர் - நிறுத்துதல்\n"
+
+#: gitk:9341
+#, tcl-format
+msgid "Error writing commit to file: %s"
+msgstr "உறுதிமொழி கோப்பில் எழுதுதல்  பிழை: %s"
+
+#: gitk:9347
+#, tcl-format
+msgid "Error diffing commits: %s"
+msgstr "உறுதிமொழிகள் வேறுபாடு பிழை: %s"
+
+#: gitk:9393
+msgid "Top"
+msgstr "மேலே"
+
+#: gitk:9394
+msgid "From"
+msgstr "இருந்து"
+
+#: gitk:9399
+msgid "To"
+msgstr "பெறுநர்"
+
+#: gitk:9423
+msgid "Generate patch"
+msgstr "ஒட்டை உருவாக்கு"
+
+#: gitk:9425
+msgid "From:"
+msgstr "இருந்து:"
+
+#: gitk:9434
+msgid "To:"
+msgstr "இதற்கு:"
+
+#: gitk:9443
+msgid "Reverse"
+msgstr "தலைகீழ்"
+
+#: gitk:9445 gitk:9655
+msgid "Output file:"
+msgstr "வெளியீட்டு கோப்பு:"
+
+#: gitk:9451
+msgid "Generate"
+msgstr "உருவாக்கு"
+
+#: gitk:9489
+msgid "Error creating patch:"
+msgstr "ஒட்டை உருவாக்கு பிழை:"
+
+#: gitk:9512 gitk:9643 gitk:9731
+msgid "ID:"
+msgstr "அடையாளம்:"
+
+#: gitk:9521
+msgid "Tag name:"
+msgstr "குறிச்சொல் பெயர்:"
+
+#: gitk:9524
+msgid "Tag message is optional"
+msgstr "குறிச்சொல் செய்தி விருப்பமானது"
+
+#: gitk:9526
+msgid "Tag message:"
+msgstr "குறிச்சொல் செய்தி:"
+
+#: gitk:9530 gitk:9701
+msgid "Create"
+msgstr "உருவாக்கு"
+
+#: gitk:9548
+msgid "No tag name specified"
+msgstr "குறிச்சொல் பெயர் குறிப்பிடப்படவில்லை"
+
+#: gitk:9552
+#, tcl-format
+msgid "Tag \"%s\" already exists"
+msgstr "குறிச்சொல் \"%s\" ஏற்கனவே உள்ளது"
+
+#: gitk:9562
+msgid "Error creating tag:"
+msgstr "குறிச்சொல்லை உருவாக்கு பிழை:"
+
+#: gitk:9652
+msgid "Command:"
+msgstr "கட்டளை:"
+
+#: gitk:9660
+msgid "Write"
+msgstr "எழுது"
+
+#: gitk:9678
+msgid "Error writing commit:"
+msgstr "பிழை எழுதுதல் உறுதிமொழி:"
+
+#: gitk:9700
+msgid "Create branch"
+msgstr "கிளையை உருவாக்கு"
+
+#: gitk:9716
+#, tcl-format
+msgid "Rename branch %s"
+msgstr "%s கிளையை மறுபெயரிடு"
+
+#: gitk:9717
+msgid "Rename"
+msgstr "மறுபெயரிடு"
+
+#: gitk:9741
+msgid "Name:"
+msgstr "பெயர்:"
+
+#: gitk:9765
+msgid "Please specify a name for the new branch"
+msgstr "புதிய கிளைக்கு ஒரு பெயரைக் குறிப்பிடு"
+
+#: gitk:9770
+#, tcl-format
+msgid "Branch '%s' already exists. Overwrite?"
+msgstr "கிளை '%s' ஏற்கனவே உள்ளது. மேலெழுதவா?"
+
+#: gitk:9814
+msgid "Please specify a new name for the branch"
+msgstr "கிளைக்கு ஒரு புதிய பெயரைக் குறிப்பிடு"
+
+#: gitk:9877
+#, tcl-format
+msgid "Commit %s is already included in branch %s -- really re-apply it?"
+msgstr ""
+"உறுதிமொழி %s ஏற்கனவே கிளை %s சேர்க்கப்பட்டுள்ளன-உண்மையில் அதை மீண்டும் இடவா?"
+
+#: gitk:9882
+msgid "Cherry-picking"
+msgstr "கனி எடுக்கும்"
+
+#: gitk:9891
+#, tcl-format
+msgid ""
+"Cherry-pick failed because of local changes to file '%s'.\n"
+"Please commit, reset or stash your changes and try again."
+msgstr ""
+"'%s' கோப்பில் உள்ளக மாற்றங்கள் காரணமாக கனி-எடு தோல்வியடைந்தது. \n"
+"தயவுசெய்து உங்கள் மாற்றங்களைச் உறுதிமொழி, மீட்டமை அல்லது சேமி பிறகு மீண்டும் முயற்சி."
+
+#: gitk:9897
+msgid ""
+"Cherry-pick failed because of merge conflict.\n"
+"Do you wish to run git citool to resolve it?"
+msgstr ""
+"ஒன்றிணைக்கும் மோதல் காரணமாக கனி-எடு தோல்வியடைந்தது. \n"
+"அதை தீர்க்க அறிவிலி சிஐகருவியை இயக்க விரும்புகிறீர்களா?"
+
+#: gitk:9913 gitk:9971
+msgid "No changes committed"
+msgstr "எந்த மாற்றங்களும் உறுதிமொழியப்படவில்லை"
+
+#: gitk:9940
+#, tcl-format
+msgid "Commit %s is not included in branch %s -- really revert it?"
+msgstr ""
+"உறுதிமொழி %s கிளை %s சேர்க்கப்படவில்லை - உண்மையில் அதை மீட்டெடுக்கவா?"
+
+#: gitk:9945
+msgid "Reverting"
+msgstr "மீட்டெடுத்தல்"
+
+#: gitk:9953
+#, tcl-format
+msgid ""
+"Revert failed because of local changes to the following files:%s Please "
+"commit, reset or stash  your changes and try again."
+msgstr ""
+"பின்வரும் கோப்புகளில் உள்ளக மாற்றங்கள் காரணமாக மீட்டெடு தோல்வியுற்றது:%s "
+"தயவுசெய்து உங்கள் மாற்றங்களைச் உறுதிமொழி, மீட்டமை அல்லது "
+"சேமி மற்றும் மீண்டும் முயற்சி."
+
+#: gitk:9957
+msgid ""
+"Revert failed because of merge conflict.\n"
+" Do you wish to run git citool to resolve it?"
+msgstr ""
+"ஒன்றிணைக்கும் மோதல் காரணமாக மீட்டெடு தோல்வியடைந்தது. \n"
+"அதை தீர்க்க அறிவிலி சிஐகருவியை இயக்க விரும்புகிறீர்களா?"
+
+#: gitk:10000
+msgid "Confirm reset"
+msgstr "மீட்டமைப்பை உறுதிப்படுத்து"
+
+#: gitk:10002
+#, tcl-format
+msgid "Reset branch %s to %s?"
+msgstr "%s கிளையை %s க்கு மீட்டமைக்கவா?"
+
+#: gitk:10004
+msgid "Reset type:"
+msgstr "மீட்டமை வகை:"
+
+#: gitk:10007
+msgid "Soft: Leave working tree and index untouched"
+msgstr ""
+"மென்மை: வேலை செய்யும் மரம் மற்றும் குறியீட்டைத் தீண்டாமல் விடு"
+
+#: gitk:10010
+msgid "Mixed: Leave working tree untouched, reset index"
+msgstr ""
+"கலப்பு: வேலை செய்யும் மரத்தை தீண்டாமல் விடு, குறியீட்டை மீட்டமை"
+
+#: gitk:10013
+msgid ""
+"Hard: Reset working tree and index\n"
+"(discard ALL local changes)"
+msgstr ""
+"கடினம்: வேலை செய்யும் மரம் மற்றும் குறியீட்டை மீட்டமை \n"
+"(அனைத்து உள்ளக மாற்றங்களையும் நிராகரி)"
+
+#: gitk:10030
+msgid "Resetting"
+msgstr "மீட்டமைத்தல்"
+
+#: gitk:10103
+#, tcl-format
+msgid "A local branch named %s exists already"
+msgstr "%s என்ற உள்ளக கிளை ஏற்கனவே உள்ளது"
+
+#: gitk:10111
+msgid "Checking out"
+msgstr "சரிபார்"
+
+#: gitk:10170
+msgid "Cannot delete the currently checked-out branch"
+msgstr "தற்போது சரிபார்க்கப்பட்ட கிளையை நீக்க முடியாது"
+
+#: gitk:10176
+#, tcl-format
+msgid ""
+"The commits on branch %s aren't on any other branch.\n"
+"Really delete branch %s?"
+msgstr ""
+"கிளை %s மீதான உறுதிமொழிகள் வேறு எந்த கிளையிலும் இல்லை. \n"
+"உண்மையில் கிளை %s நீக்கவா?"
+
+#: gitk:10207
+#, tcl-format
+msgid "Tags and heads: %s"
+msgstr "குறிச்சொற்கள் மற்றும் தலைகள்: %s"
+
+#: gitk:10224
+msgid "Filter"
+msgstr "வடிப்பி"
+
+#: gitk:10531
+msgid ""
+"Error reading commit topology information; branch and preceding/following "
+"tag information will be incomplete."
+msgstr ""
+"உறுதிமொழி இடவியல் தகவலை படிப்பதில் பிழை; கிளை மற்றும் அதற்கு "
+"முந்தைய/பின்வரும் குறிச்சொல் செய்தி முழுமையடையாது."
+
+#: gitk:11508
+msgid "Tag"
+msgstr "குறிச்சொல்"
+
+#: gitk:11512
+msgid "Id"
+msgstr "அடையாளம்"
+
+#: gitk:11595
+msgid "Gitk font chooser"
+msgstr "அறிவிலிகே எழுத்துரு தேர்வு"
+
+#: gitk:11612
+msgid "B"
+msgstr "பி"
+
+#: gitk:11615
+msgid "I"
+msgstr "ஐ"
+
+#: gitk:11734
+msgid "Commit list display options"
+msgstr "உறுதிமொழி பட்டியல் காட்சி விருப்பங்கள்"
+
+#: gitk:11737
+msgid "Maximum graph width (lines)"
+msgstr "அதிகபட்ச வரைபட அகலம் (கோடுகள்)"
+
+#: gitk:11741
+#, no-tcl-format
+msgid "Maximum graph width (% of pane)"
+msgstr "அதிகபட்ச வரைபட அகலம் (பலகத்தின் %)"
+
+#: gitk:11744
+msgid "Show local changes"
+msgstr "உள்ளக மாற்றங்களைக் காட்டு"
+
+#: gitk:11747
+msgid "Hide remote refs"
+msgstr "தொலை குறிகளை மறை"
+
+#: gitk:11751
+msgid "Copy commit ID to clipboard"
+msgstr "இடைநிலைப்பலகைக்கு அடையாளத்தை நகலெடு"
+
+#: gitk:11755
+msgid "Copy commit ID to X11 selection"
+msgstr "உறுதிமொழி அடையாளத்தை ஃ11 பகுதிக்கு நகலெடு"
+
+#: gitk:11760
+msgid "Length of commit ID to copy"
+msgstr "நகலெடுக்க உறுதிமொழி அடையாளத்தின் நீளம்"
+
+#: gitk:11763
+msgid "Diff display options"
+msgstr "வேறுபாடு காட்சி விருப்பங்கள்"
+
+#: gitk:11765
+msgid "Tab spacing"
+msgstr "தாவல் இடைவெளி"
+
+#: gitk:11769
+msgid "Wrap comment text"
+msgstr "கருத்து உரையை மடி"
+
+#: gitk:11774
+msgid "Wrap other text"
+msgstr "மற்ற உரையை மடி"
+
+#: gitk:11779
+msgid "Display nearby tags/heads"
+msgstr "அருகிலுள்ள குறிச்சொற்கள்/தலைகளைக் காண்பி"
+
+#: gitk:11782
+msgid "Maximum # tags/heads to show"
+msgstr "காண்பிக்க அதிகபட்ச # குறிச்சொற்கள்/தலைகள்"
+
+#: gitk:11785
+msgid "Limit diffs to listed paths"
+msgstr "பட்டியலிடப்பட்ட பாதைகளுக்கு வரம்பு வேறுபடுகிறது"
+
+#: gitk:11788
+msgid "Support per-file encodings"
+msgstr "ஒரு கோப்பு குறியீடுகளை ஆதரி"
+
+#: gitk:11794 gitk:11961
+msgid "External diff tool"
+msgstr "வெளிப்புற வேறுபாடு கருவி"
+
+#: gitk:11795
+msgid "Choose..."
+msgstr "தேர்வு..."
+
+#: gitk:11802
+msgid "Web browser"
+msgstr "வலை உலாவி"
+
+#: gitk:11807
+msgid "General options"
+msgstr "பொது விருப்பங்கள்"
+
+#: gitk:11810
+msgid "Use themed widgets"
+msgstr "கருப்பொருள் நிரல்பலகைகளைப் பயன்படுத்து"
+
+#: gitk:11812
+msgid "(change requires restart)"
+msgstr "(மாற்றத்திற்கு மறுதொடக்கம் தேவை)"
+
+#: gitk:11814
+msgid "(currently unavailable)"
+msgstr "(தற்போது கிடைக்கவில்லை)"
+
+#: gitk:11826
+msgid "Colors: press to choose"
+msgstr "நிறங்கள்: தேர்வு செய்ய அழுத்தவும்"
+
+#: gitk:11829
+msgid "Interface"
+msgstr "இடைமுகம்"
+
+#: gitk:11830
+msgid "interface"
+msgstr "இடைமுகம்"
+
+#: gitk:11833
+msgid "Background"
+msgstr "பின்னணி"
+
+#: gitk:11834 gitk:11876
+msgid "background"
+msgstr "பின்னணி"
+
+#: gitk:11837
+msgid "Foreground"
+msgstr "முன்புறம்"
+
+#: gitk:11838
+msgid "foreground"
+msgstr "முன்புறம்"
+
+#: gitk:11841
+msgid "Diff: old lines"
+msgstr "வேறுபாடு: பழைய வரிகள்"
+
+#: gitk:11842
+msgid "diff old lines"
+msgstr "பழைய வரிகள் வேறுபாடு"
+
+#: gitk:11846
+msgid "Diff: old lines bg"
+msgstr "வேறுபாடு: பழைய வரிகள் பின்ணனி"
+
+#: gitk:11848
+msgid "diff old lines bg"
+msgstr "பழைய வரிகள் பின்ணனி வேறுபாடு"
+
+#: gitk:11852
+msgid "Diff: new lines"
+msgstr "வேறுபாடு: புதிய கோடுகள்"
+
+#: gitk:11853
+msgid "diff new lines"
+msgstr "புதிய வரிகள் வேறுபாடு"
+
+#: gitk:11857
+msgid "Diff: new lines bg"
+msgstr "வேறுபாடு: புதிய வரிகள் பின்ணனி"
+
+#: gitk:11859
+msgid "diff new lines bg"
+msgstr "புதிய வரிகளை பின்ணனி வேறுபாடு"
+
+#: gitk:11863
+msgid "Diff: hunk header"
+msgstr "வேறுபாடு: அங்க் தலைப்பு"
+
+#: gitk:11865
+msgid "diff hunk header"
+msgstr "அங்க் தலைப்பு வேறுபாடு"
+
+#: gitk:11869
+msgid "Marked line bg"
+msgstr "குறிக்கப்பட்ட வரி பின்னணி"
+
+#: gitk:11871
+msgid "marked line background"
+msgstr "குறிக்கப்பட்ட வரி பின்னணி"
+
+#: gitk:11875
+msgid "Select bg"
+msgstr "பின்னணி தேர்வு"
+
+#: gitk:11884
+msgid "Fonts: press to choose"
+msgstr "எழுத்துருக்கள்: தேர்வு செய்ய அழுத்து"
+
+#: gitk:11886
+msgid "Main font"
+msgstr "முதன்மையான எழுத்துரு"
+
+#: gitk:11887
+msgid "Diff display font"
+msgstr "காட்சி எழுத்துரு வேறுபாடு"
+
+#: gitk:11888
+msgid "User interface font"
+msgstr "பயனர் இடைமுக எழுத்துரு"
+
+#: gitk:11910
+msgid "Gitk preferences"
+msgstr "அறிவிலிகே விருப்பத்தேர்வுகள்"
+
+#: gitk:11919
+msgid "General"
+msgstr "பொது"
+
+#: gitk:11920
+msgid "Colors"
+msgstr "நிறங்கள்"
+
+#: gitk:11921
+msgid "Fonts"
+msgstr "எழுத்துருக்கள்"
+
+#: gitk:11971
+#, tcl-format
+msgid "Gitk: choose color for %s"
+msgstr "அறிவிலிகே: %s க்கு வண்ணத்தைத் தேர்வுசெய்க"
+
+#: gitk:12490
+msgid ""
+"Sorry, gitk cannot run with this version of Tcl/Tk.\n"
+" Gitk requires at least Tcl/Tk 8.4."
+msgstr ""
+"மன்னிக்கவும், டிசிஎல்/டிகேயின் இந்த பதிப்பைக் கொண்டு அறிவிலிகே இயக்க முடியாது. \n"
+"அறிவிலிகேவுக்கு குறைந்தபட்சம் டிசிஎல்/டிகே 8.4 தேவைப்படுகிறது."
+
+#: gitk:12711
+msgid "Cannot find a git repository here."
+msgstr "இங்கே ஒரு அறிவிலி களஞ்சியத்தைக் கண்டுபிடிக்க முடியவில்லை."
+
+#: gitk:12758
+#, tcl-format
+msgid "Ambiguous argument '%s': both revision and filename"
+msgstr "தெளிவற்ற வாதம் '%s': திருத்தம் மற்றும் கோப்பு பெயர்"
+
+#: gitk:12770
+msgid "Bad arguments to gitk:"
+msgstr "அறிவிலிகேவிற்கு மோசமான வாதங்கள்:"
+
+#~ msgid "SHA1 ID:"
+#~ msgstr "சா1 அடையாளம்:"
+
+#~ msgid "Auto-select SHA1 (length)"
+#~ msgstr "தானாக தேர்ந்தெடுக்கப்பட்ட சா1 (நீளம்)"
diff --git a/hashmap.c b/hashmap.c
index ee45ef0..a711377 100644
--- a/hashmap.c
+++ b/hashmap.c
@@ -205,8 +205,9 @@ void hashmap_clear_(struct hashmap *map, ssize_t entry_offset)
 		return;
 	if (entry_offset >= 0)  /* called by hashmap_clear_and_free */
 		free_individual_entries(map, entry_offset);
-	free(map->table);
-	memset(map, 0, sizeof(*map));
+	FREE_AND_NULL(map->table);
+	map->tablesize = 0;
+	map->private_size = 0;
 }
 
 struct hashmap_entry *hashmap_get(const struct hashmap *map,
diff --git a/help.c b/help.c
index 6ef9083..21b7787 100644
--- a/help.c
+++ b/help.c
@@ -214,7 +214,7 @@ void exclude_cmds(struct cmdnames *cmds, struct cmdnames *excludes)
 		else if (cmp == 0) {
 			ei++;
 			free(cmds->names[ci++]);
-		} else if (cmp > 0)
+		} else
 			ei++;
 	}
 
diff --git a/http-push.c b/http-push.c
index 32e3756..f5a9252 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)
@@ -1446,7 +1446,9 @@ static void one_remote_ref(const char *refname)
 	 * Fetch a copy of the object if it doesn't exist locally - it
 	 * may be required for updating server info later.
 	 */
-	if (repo->can_update_info_refs && !repo_has_object_file(the_repository, &ref->old_oid)) {
+	if (repo->can_update_info_refs &&
+	    !has_object(the_repository, &ref->old_oid,
+			HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR)) {
 		obj = lookup_unknown_object(the_repository, &ref->old_oid);
 		fprintf(stderr,	"  fetch %s for %s\n",
 			oid_to_hex(&ref->old_oid), refname);
@@ -1651,14 +1653,14 @@ static int delete_remote_branch(const char *pattern, int force)
 			return error("Remote HEAD symrefs too deep");
 		if (is_null_oid(&head_oid))
 			return error("Unable to resolve remote HEAD");
-		if (!repo_has_object_file(the_repository, &head_oid))
+		if (!has_object(the_repository, &head_oid, HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 			return error("Remote HEAD resolves to object %s\nwhich does not exist locally, perhaps you need to fetch?", oid_to_hex(&head_oid));
 
 		/* Remote branch must resolve to a known object */
 		if (is_null_oid(&remote_ref->old_oid))
 			return error("Unable to resolve remote branch %s",
 				     remote_ref->name);
-		if (!repo_has_object_file(the_repository, &remote_ref->old_oid))
+		if (!has_object(the_repository, &remote_ref->old_oid, HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 			return error("Remote branch %s resolves to object %s\nwhich does not exist locally, perhaps you need to fetch?", remote_ref->name, oid_to_hex(&remote_ref->old_oid));
 
 		/* Remote branch must be an ancestor of remote HEAD */
@@ -1879,7 +1881,8 @@ int cmd_main(int argc, const char **argv)
 		if (!force_all &&
 		    !is_null_oid(&ref->old_oid) &&
 		    !ref->force) {
-			if (!repo_has_object_file(the_repository, &ref->old_oid) ||
+			if (!has_object(the_repository, &ref->old_oid,
+					HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR) ||
 			    !ref_newer(&ref->peer_ref->new_oid,
 				       &ref->old_oid)) {
 				/*
diff --git a/http-walker.c b/http-walker.c
index 882cae1..463f7b1 100644
--- a/http-walker.c
+++ b/http-walker.c
@@ -9,6 +9,7 @@
 #include "list.h"
 #include "transport.h"
 #include "packfile.h"
+#include "object-file.h"
 #include "object-store.h"
 
 struct alt_base {
@@ -137,7 +138,8 @@ static int fill_active_slot(void *data UNUSED)
 	list_for_each_safe(pos, tmp, head) {
 		obj_req = list_entry(pos, struct object_request, node);
 		if (obj_req->state == WAITING) {
-			if (repo_has_object_file(the_repository, &obj_req->oid))
+			if (has_object(the_repository, &obj_req->oid,
+				       HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 				obj_req->state = COMPLETE;
 			else {
 				start_object_request(obj_req);
@@ -495,7 +497,8 @@ static int fetch_object(struct walker *walker, const struct object_id *oid)
 	if (!obj_req)
 		return error("Couldn't find request for %s in the queue", hex);
 
-	if (repo_has_object_file(the_repository, &obj_req->oid)) {
+	if (has_object(the_repository, &obj_req->oid,
+		       HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR)) {
 		if (obj_req->req)
 			abort_http_object_request(&obj_req->req);
 		abort_object_request(obj_req);
@@ -540,7 +543,7 @@ static int fetch_object(struct walker *walker, const struct object_id *oid)
 		ret = error("File %s has bad hash", hex);
 	} else if (req->rename < 0) {
 		struct strbuf buf = STRBUF_INIT;
-		loose_object_path(the_repository, &buf, &req->oid);
+		odb_loose_path(the_repository->objects->odb, &buf, &req->oid);
 		ret = error("unable to write sha1 filename %s", buf.buf);
 		strbuf_release(&buf);
 	}
diff --git a/http.c b/http.c
index 0c41138..d88e79f 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);
 
@@ -2662,7 +2662,7 @@ struct http_object_request *new_http_object_request(const char *base_url,
 	oidcpy(&freq->oid, oid);
 	freq->localfile = -1;
 
-	loose_object_path(the_repository, &filename, oid);
+	odb_loose_path(the_repository->objects->odb, &filename, oid);
 	strbuf_addf(&freq->tmpfile, "%s.temp", filename.buf);
 
 	strbuf_addf(&prevfile, "%s.prev", filename.buf);
@@ -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);
@@ -2814,7 +2814,7 @@ int finish_http_object_request(struct http_object_request *freq)
 		unlink_or_warn(freq->tmpfile.buf);
 		return -1;
 	}
-	loose_object_path(the_repository, &filename, &freq->oid);
+	odb_loose_path(the_repository->objects->odb, &filename, &freq->oid);
 	freq->rename = finalize_object_file(freq->tmpfile.buf, filename.buf);
 	strbuf_release(&filename);
 
diff --git a/imap-send.c b/imap-send.c
index 27dc033..2e812f5 100644
--- a/imap-send.c
+++ b/imap-send.c
@@ -1420,7 +1420,7 @@ static CURL *setup_curl(struct imap_server_conf *srvc, struct credential *cred)
 
 	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;
@@ -1433,8 +1433,8 @@ static CURL *setup_curl(struct imap_server_conf *srvc, struct credential *cred)
 	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_SSL_VERIFYPEER, (long)srvc->ssl_verify);
+	curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, (long)srvc->ssl_verify);
 
 	curl_easy_setopt(curl, CURLOPT_READFUNCTION, fread_buffer);
 
diff --git a/json-writer.c b/json-writer.c
index 8c5187e..34577dc 100644
--- a/json-writer.c
+++ b/json-writer.c
@@ -268,10 +268,6 @@ static void append_sub_jw(struct json_writer *jw,
 	strbuf_addbuf(&jw->json, &value->json);
 }
 
-/*
- * Append existing (properly terminated) JSON sub-data (object or array)
- * as-is onto the given JSON data.
- */
 void jw_object_sub_jw(struct json_writer *jw, const char *key,
 		      const struct json_writer *value)
 {
diff --git a/json-writer.h b/json-writer.h
index 04413bd..8f845d4 100644
--- a/json-writer.h
+++ b/json-writer.h
@@ -28,6 +28,34 @@
  * object/array) -or- by building them inline in one pass.  This is a
  * personal style and/or data shape choice.
  *
+ * USAGE:
+ * ======
+ *
+ * - Initialize the json_writer with jw_init.
+ *
+ * - Open an object as the main data structure with jw_object_begin.
+ *   Append a key-value pair to it using the jw_object_<type> functions.
+ *   Conclude with jw_end.
+ *
+ * - Alternatively, open an array as the main data structure with
+ *   jw_array_begin. Append a value to it using the jw_array_<type>
+ *   functions. Conclude with jw_end.
+ *
+ * - Append a new, unterminated array or object to the current
+ *   object using the jw_object_inline_begin_{array, object} functions.
+ *   Similarly, append a new, unterminated array or object to
+ *   the current array using the jw_array_inline_begin_{array, object}
+ *   functions.
+ *
+ * - Append other json_writer as a value to the current array or object
+ *   using the jw_{array, object}_sub_jw functions.
+ *
+ * - Extend the current array with an null-terminated array of strings
+ *   by using jw_array_argv or with a fixed number of elements of a
+ *   array of string by using jw_array_argc_argv.
+ *
+ * - Release the json_writer after using it by calling jw_release.
+ *
  * See t/helper/test-json-writer.c for various usage examples.
  *
  * LIMITATIONS:
@@ -69,42 +97,185 @@ struct json_writer
 	.open_stack = STRBUF_INIT, \
 }
 
+/*
+ * Initialize a json_writer with empty values.
+ */
 void jw_init(struct json_writer *jw);
+
+/*
+ * Release the internal buffers of a json_writer.
+ */
 void jw_release(struct json_writer *jw);
 
+/*
+ * Begin the json_writer using an object as the top-level data structure. If
+ * pretty is set to 1, the result will be a human-readable and indented JSON,
+ * and if it is set to 0 the result will be minified single-line JSON.
+ */
 void jw_object_begin(struct json_writer *jw, int pretty);
+
+/*
+ * Begin the json_writer using an array as the top-level data structure. If
+ * pretty is set to 1, the result will be a human-readable and indented JSON,
+ * and if it is set to 0 the result will be minified single-line JSON.
+ */
 void jw_array_begin(struct json_writer *jw, int pretty);
 
+/*
+ * Append a string field to the current object of the json_writer, given its key
+ * and its value. Trigger a BUG when not in an object.
+ */
 void jw_object_string(struct json_writer *jw, const char *key,
 		      const char *value);
+
+/*
+ * Append an int field to the current object of the json_writer, given its key
+ * and its value. Trigger a BUG when not in an object.
+ */
 void jw_object_intmax(struct json_writer *jw, const char *key, intmax_t value);
+
+/*
+ * Append a double field to the current object of the json_writer, given its key
+ * and its value. The precision parameter defines the number of significant
+ * digits, where -1 can be used for maximum precision. Trigger a BUG when not in
+ * an object.
+ */
 void jw_object_double(struct json_writer *jw, const char *key, int precision,
 		      double value);
+
+/*
+ * Append a boolean field set to true to the current object of the json_writer,
+ * given its key. Trigger a BUG when not in an object.
+ */
 void jw_object_true(struct json_writer *jw, const char *key);
+
+/*
+ * Append a boolean field set to false to the current object of the json_writer,
+ * given its key. Trigger a BUG when not in an object.
+ */
 void jw_object_false(struct json_writer *jw, const char *key);
+
+/*
+ * Append a boolean field to the current object of the json_writer, given its
+ * key and its value. Trigger a BUG when not in an object.
+ */
 void jw_object_bool(struct json_writer *jw, const char *key, int value);
+
+/*
+ * Append a null field to the current object of the json_writer, given its key.
+ * Trigger a BUG when not in an object.
+ */
 void jw_object_null(struct json_writer *jw, const char *key);
+
+/*
+ * Append a field to the current object of the json_writer, given its key and
+ * another json_writer that represents its content. Trigger a BUG when not in
+ * an object.
+ */
 void jw_object_sub_jw(struct json_writer *jw, const char *key,
 		      const struct json_writer *value);
 
+/*
+ * Start an object as the value of a field in the current object of the
+ * json_writer. Trigger a BUG when not in an object.
+ */
 void jw_object_inline_begin_object(struct json_writer *jw, const char *key);
+
+/*
+ * Start an array as the value of a field in the current object of the
+ * json_writer. Trigger a BUG when not in an object.
+ */
 void jw_object_inline_begin_array(struct json_writer *jw, const char *key);
 
+/*
+ * Append a string value to the current array of the json_writer. Trigger a BUG
+ * when not in an array.
+ */
 void jw_array_string(struct json_writer *jw, const char *value);
+
+/*
+ * Append an int value to the current array of the json_writer. Trigger a BUG
+ * when not in an array.
+ */
 void jw_array_intmax(struct json_writer *jw, intmax_t value);
+
+/*
+ * Append a double value to the current array of the json_writer. The precision
+ * parameter defines the number of significant digits, where -1 can be used for
+ * maximum precision. Trigger a BUG when not in an array.
+ */
 void jw_array_double(struct json_writer *jw, int precision, double value);
+
+/*
+ * Append a true value to the current array of the json_writer. Trigger a BUG
+ * when not in an array.
+ */
 void jw_array_true(struct json_writer *jw);
+
+/*
+ * Append a false value to the current array of the json_writer. Trigger a BUG
+ * when not in an array.
+ */
 void jw_array_false(struct json_writer *jw);
+
+/*
+ * Append a boolean value to the current array of the json_writer. Trigger a BUG
+ * when not in an array.
+ */
 void jw_array_bool(struct json_writer *jw, int value);
+
+/*
+ * Append a null value to the current array of the json_writer. Trigger a BUG
+ * when not in an array.
+ */
 void jw_array_null(struct json_writer *jw);
+
+/*
+ * Append a json_writer as a value to the current array of the
+ * json_writer. Trigger a BUG when not in an array.
+ */
 void jw_array_sub_jw(struct json_writer *jw, const struct json_writer *value);
+
+/*
+ * Append the first argc values from the argv array of strings to the current
+ * array of the json_writer. Trigger a BUG when not in an array.
+ *
+ * This function does not provide safety for cases where the array has less than
+ * argc values.
+ */
 void jw_array_argc_argv(struct json_writer *jw, int argc, const char **argv);
+
+/*
+ * Append a null-terminated array of strings to the current array of the
+ * json_writer. Trigger a BUG when not in an array.
+ */
 void jw_array_argv(struct json_writer *jw, const char **argv);
 
+/*
+ * Start an object as a value in the current array of the json_writer. Trigger a
+ * BUG when not in an array.
+ */
 void jw_array_inline_begin_object(struct json_writer *jw);
+
+/*
+ * Start an array as a value in the current array. Trigger a BUG when not in an
+ * array.
+ */
 void jw_array_inline_begin_array(struct json_writer *jw);
 
+/*
+ * Return whether the json_writer is terminated. In other words, if the all the
+ * objects and arrays are already closed.
+ */
 int jw_is_terminated(const struct json_writer *jw);
+
+/*
+ * Terminates the current object or array of the json_writer. In other words,
+ * append a ] if the current array is not closed or } if the current object
+ * is not closed.
+ *
+ * Abort the execution if there's no object or array that can be terminated.
+ */
 void jw_end(struct json_writer *jw);
 
 #endif /* JSON_WRITER_H */
diff --git a/list-objects-filter.c b/list-objects-filter.c
index 7765761..78b397b 100644
--- a/list-objects-filter.c
+++ b/list-objects-filter.c
@@ -244,7 +244,7 @@ static void filter_trees_free(void *filter_data) {
 	struct filter_trees_depth_data *d = filter_data;
 	if (!d)
 		return;
-	oidmap_free(&d->seen_at_depth, 1);
+	oidmap_clear(&d->seen_at_depth, 1);
 	free(d);
 }
 
diff --git a/list-objects.c b/list-objects.c
index 1e5512e..5971142 100644
--- a/list-objects.c
+++ b/list-objects.c
@@ -74,7 +74,8 @@ static void process_blob(struct traversal_context *ctx,
 	 * of missing objects.
 	 */
 	if (ctx->revs->exclude_promisor_objects &&
-	    !repo_has_object_file(the_repository, &obj->oid) &&
+	    !has_object(the_repository, &obj->oid,
+			HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR) &&
 	    is_promisor_object(ctx->revs->repo, &obj->oid))
 		return;
 
diff --git a/log-tree.c b/log-tree.c
index a4d4ab5..1d05dc1 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -9,7 +9,7 @@
 #include "environment.h"
 #include "hex.h"
 #include "object-name.h"
-#include "object-store.h"
+#include "object-file.h"
 #include "repository.h"
 #include "tmp-objdir.h"
 #include "commit.h"
diff --git a/mailinfo.c b/mailinfo.c
index 7b001fa..ee4597d 100644
--- a/mailinfo.c
+++ b/mailinfo.c
@@ -381,12 +381,12 @@ static int is_format_patch_separator(const char *line, int len)
 	return !memcmp(SAMPLE + (cp - line), cp, strlen(SAMPLE) - (cp - line));
 }
 
-static struct strbuf *decode_q_segment(const struct strbuf *q_seg, int rfc2047)
+static int decode_q_segment(struct strbuf *out, const struct strbuf *q_seg,
+			    int rfc2047)
 {
 	const char *in = q_seg->buf;
 	int c;
-	struct strbuf *out = xmalloc(sizeof(struct strbuf));
-	strbuf_init(out, q_seg->len);
+	strbuf_grow(out, q_seg->len);
 
 	while ((c = *in++) != 0) {
 		if (c == '=') {
@@ -405,16 +405,15 @@ static struct strbuf *decode_q_segment(const struct strbuf *q_seg, int rfc2047)
 			c = 0x20;
 		strbuf_addch(out, c);
 	}
-	return out;
+	return 0;
 }
 
-static struct strbuf *decode_b_segment(const struct strbuf *b_seg)
+static int decode_b_segment(struct strbuf *out, const struct strbuf *b_seg)
 {
 	/* Decode in..ep, possibly in-place to ot */
 	int c, pos = 0, acc = 0;
 	const char *in = b_seg->buf;
-	struct strbuf *out = xmalloc(sizeof(struct strbuf));
-	strbuf_init(out, b_seg->len);
+	strbuf_grow(out, b_seg->len);
 
 	while ((c = *in++) != 0) {
 		if (c == '+')
@@ -447,7 +446,7 @@ static struct strbuf *decode_b_segment(const struct strbuf *b_seg)
 			break;
 		}
 	}
-	return out;
+	return 0;
 }
 
 static int convert_to_utf8(struct mailinfo *mi,
@@ -475,7 +474,7 @@ static int convert_to_utf8(struct mailinfo *mi,
 static void decode_header(struct mailinfo *mi, struct strbuf *it)
 {
 	char *in, *ep, *cp;
-	struct strbuf outbuf = STRBUF_INIT, *dec;
+	struct strbuf outbuf = STRBUF_INIT, dec = STRBUF_INIT;
 	struct strbuf charset_q = STRBUF_INIT, piecebuf = STRBUF_INIT;
 	int found_error = 1; /* pessimism */
 
@@ -530,18 +529,19 @@ static void decode_header(struct mailinfo *mi, struct strbuf *it)
 		default:
 			goto release_return;
 		case 'b':
-			dec = decode_b_segment(&piecebuf);
+			if ((found_error = decode_b_segment(&dec, &piecebuf)))
+				goto release_return;
 			break;
 		case 'q':
-			dec = decode_q_segment(&piecebuf, 1);
+			if ((found_error = decode_q_segment(&dec, &piecebuf, 1)))
+				goto release_return;
 			break;
 		}
-		if (convert_to_utf8(mi, dec, charset_q.buf))
+		if (convert_to_utf8(mi, &dec, charset_q.buf))
 			goto release_return;
 
-		strbuf_addbuf(&outbuf, dec);
-		strbuf_release(dec);
-		free(dec);
+		strbuf_addbuf(&outbuf, &dec);
+		strbuf_release(&dec);
 		in = ep + 2;
 	}
 	strbuf_addstr(&outbuf, in);
@@ -552,6 +552,7 @@ static void decode_header(struct mailinfo *mi, struct strbuf *it)
 	strbuf_release(&outbuf);
 	strbuf_release(&charset_q);
 	strbuf_release(&piecebuf);
+	strbuf_release(&dec);
 
 	if (found_error)
 		mi->input_error = -1;
@@ -634,23 +635,22 @@ static int is_inbody_header(const struct mailinfo *mi,
 
 static void decode_transfer_encoding(struct mailinfo *mi, struct strbuf *line)
 {
-	struct strbuf *ret;
+	struct strbuf ret = STRBUF_INIT;
 
 	switch (mi->transfer_encoding) {
 	case TE_QP:
-		ret = decode_q_segment(line, 0);
+		decode_q_segment(&ret, line, 0);
 		break;
 	case TE_BASE64:
-		ret = decode_b_segment(line);
+		decode_b_segment(&ret, line);
 		break;
 	case TE_DONTCARE:
 	default:
 		return;
 	}
 	strbuf_reset(line);
-	strbuf_addbuf(line, ret);
-	strbuf_release(ret);
-	free(ret);
+	strbuf_addbuf(line, &ret);
+	strbuf_release(&ret);
 }
 
 static inline int patchbreak(const struct strbuf *line)
diff --git a/merge-ort.c b/merge-ort.c
index 77310a4..47b3d17 100644
--- a/merge-ort.c
+++ b/merge-ort.c
@@ -2127,6 +2127,7 @@ static int handle_content_merge(struct merge_options *opt,
 				const struct version_info *b,
 				const char *pathnames[3],
 				const int extra_marker_size,
+				const int record_object,
 				struct version_info *result)
 {
 	/*
@@ -2214,7 +2215,7 @@ static int handle_content_merge(struct merge_options *opt,
 			ret = -1;
 		}
 
-		if (!ret &&
+		if (!ret && record_object &&
 		    write_object_file(result_buf.ptr, result_buf.size,
 				      OBJ_BLOB, &result->oid)) {
 			path_msg(opt, ERROR_OBJECT_WRITE_FAILED, 0,
@@ -2897,6 +2898,7 @@ static int process_renames(struct merge_options *opt,
 			struct version_info merged;
 			struct conflict_info *base, *side1, *side2;
 			unsigned was_binary_blob = 0;
+			const int record_object = true;
 
 			pathnames[0] = oldpath;
 			pathnames[1] = newpath;
@@ -2947,6 +2949,7 @@ static int process_renames(struct merge_options *opt,
 							   &side2->stages[2],
 							   pathnames,
 							   1 + 2 * opt->priv->call_depth,
+							   record_object,
 							   &merged);
 			if (clean_merge < 0)
 				return -1;
@@ -3061,6 +3064,7 @@ static int process_renames(struct merge_options *opt,
 
 			struct conflict_info *base, *side1, *side2;
 			int clean;
+			const int record_object = true;
 
 			pathnames[0] = oldpath;
 			pathnames[other_source_index] = oldpath;
@@ -3080,6 +3084,7 @@ static int process_renames(struct merge_options *opt,
 						     &side2->stages[2],
 						     pathnames,
 						     1 + 2 * opt->priv->call_depth,
+						     record_object,
 						     &merged);
 			if (clean < 0)
 				return -1;
@@ -3931,9 +3936,12 @@ static int write_completed_directory(struct merge_options *opt,
 		 * Write out the tree to the git object directory, and also
 		 * record the mode and oid in dir_info->result.
 		 */
+		int record_tree = (!opt->mergeability_only ||
+				   opt->priv->call_depth);
 		dir_info->is_null = 0;
 		dir_info->result.mode = S_IFDIR;
-		if (write_tree(&dir_info->result.oid, &info->versions, offset,
+		if (record_tree &&
+		    write_tree(&dir_info->result.oid, &info->versions, offset,
 			       opt->repo->hash_algo->rawsz) < 0)
 			ret = -1;
 	}
@@ -4231,10 +4239,13 @@ static int process_entry(struct merge_options *opt,
 		struct version_info *o = &ci->stages[0];
 		struct version_info *a = &ci->stages[1];
 		struct version_info *b = &ci->stages[2];
+		int record_object = (!opt->mergeability_only ||
+				     opt->priv->call_depth);
 
 		clean_merge = handle_content_merge(opt, path, o, a, b,
 						   ci->pathnames,
 						   opt->priv->call_depth * 2,
+						   record_object,
 						   &merged_file);
 		if (clean_merge < 0)
 			return -1;
@@ -4395,6 +4406,8 @@ static int process_entries(struct merge_options *opt,
 						   STRING_LIST_INIT_NODUP,
 						   NULL, 0 };
 	int ret = 0;
+	const int record_tree = (!opt->mergeability_only ||
+				 opt->priv->call_depth);
 
 	trace2_region_enter("merge", "process_entries setup", opt->repo);
 	if (strmap_empty(&opt->priv->paths)) {
@@ -4454,6 +4467,12 @@ static int process_entries(struct merge_options *opt,
 				ret = -1;
 				goto cleanup;
 			};
+			if (!ci->merged.clean && opt->mergeability_only &&
+			    !opt->priv->call_depth) {
+				ret = 0;
+				goto cleanup;
+			}
+
 		}
 	}
 	trace2_region_leave("merge", "processing", opt->repo);
@@ -4468,7 +4487,8 @@ static int process_entries(struct merge_options *opt,
 		fflush(stdout);
 		BUG("dir_metadata accounting completely off; shouldn't happen");
 	}
-	if (write_tree(result_oid, &dir_metadata.versions, 0,
+	if (record_tree &&
+	    write_tree(result_oid, &dir_metadata.versions, 0,
 		       opt->repo->hash_algo->rawsz) < 0)
 		ret = -1;
 cleanup:
@@ -4715,6 +4735,8 @@ void merge_display_update_messages(struct merge_options *opt,
 
 	if (opt->record_conflict_msgs_as_headers)
 		BUG("Either display conflict messages or record them as headers, not both");
+	if (opt->mergeability_only)
+		BUG("Displaying conflict messages incompatible with mergeability-only checks");
 
 	trace2_region_enter("merge", "display messages", opt->repo);
 
@@ -5171,10 +5193,12 @@ static void merge_ort_nonrecursive_internal(struct merge_options *opt,
 	result->path_messages = &opt->priv->conflicts;
 
 	if (result->clean >= 0) {
-		result->tree = parse_tree_indirect(&working_tree_oid);
-		if (!result->tree)
-			die(_("unable to read tree (%s)"),
-			    oid_to_hex(&working_tree_oid));
+		if (!opt->mergeability_only) {
+			result->tree = parse_tree_indirect(&working_tree_oid);
+			if (!result->tree)
+				die(_("unable to read tree (%s)"),
+				    oid_to_hex(&working_tree_oid));
+		}
 		/* existence of conflicted entries implies unclean */
 		result->clean &= strmap_empty(&opt->priv->conflicted);
 	}
diff --git a/merge-ort.h b/merge-ort.h
index 30750c0..6045579 100644
--- a/merge-ort.h
+++ b/merge-ort.h
@@ -83,6 +83,7 @@ struct merge_options {
 	/* miscellaneous control options */
 	const char *subtree_shift;
 	unsigned renormalize : 1;
+	unsigned mergeability_only : 1; /* exit early, write fewer objects */
 	unsigned record_conflict_msgs_as_headers : 1;
 	const char *msg_header_prefix;
 
diff --git a/meson.build b/meson.build
index 410bbf9..596f5ac 100644
--- a/meson.build
+++ b/meson.build
@@ -70,9 +70,15 @@
 #      # Execute single test interactively such that features like `debug ()` work.
 #      $ meson test -i --test-args='-ix' t1400-update-ref
 #
-#   Test execution is parallelized by default and scales with the number of
-#   processor cores available. You can change the number of processes by passing
-#   the `-jN` flag to `meson test`.
+#      # Execute all benchmarks.
+#      $ meson test -i --benchmark
+#
+#      # Execute single benchmark.
+#      $ meson test -i --benchmark p0000-*
+#
+#   Test execution (but not benchmark execution) is parallelized by default and
+#   scales with the number of processor cores available. You can change the
+#   number of processes by passing the `-jN` flag to `meson test`.
 #
 # 4. Install the Git distribution. Again, this can be done via Meson, Ninja or
 #    Samurai:
@@ -209,14 +215,12 @@
     capture: true,
     check: true,
   ).stdout().strip() : 'unknown',
-  default_options: [
-    # Git requires C99 with GNU extensions, which of course isn't supported by
-    # MSVC. Funny enough, C99 doesn't work with MSVC either, as it has only
-    # learned to define __STDC_VERSION__ with C11 and later. We thus require
-    # GNU C99 and fall back to C11. Meson only learned to handle the fallback
-    # with version 1.3.0, so on older versions we use GNU C99 unconditionally.
-    'c_std=' + (meson.version().version_compare('>=1.3.0') ? 'gnu99,c11' : 'gnu99'),
-  ],
+  # Git requires C99 with GNU extensions, which of course isn't supported by
+  # MSVC. Funny enough, C99 doesn't work with MSVC either, as it has only
+  # learned to define __STDC_VERSION__ with C11 and later. We thus require
+  # GNU C99 and fall back to C11. Meson only learned to handle the fallback
+  # with version 1.3.0, so on older versions we use GNU C99 unconditionally.
+  default_options: meson.version().version_compare('>=1.3.0') ? ['c_std=gnu99,c11'] : ['c_std=gnu99'],
 )
 
 fs = import('fs')
@@ -235,8 +239,13 @@
 sed = find_program('sed', dirs: program_path, native: true)
 shell = find_program('sh', dirs: program_path, native: true)
 tar = find_program('tar', dirs: program_path, native: true)
+time = find_program('time', dirs: program_path, required: get_option('benchmarks'))
 
-target_shell = find_program('sh', dirs: program_path, native: false)
+# Detect the target shell that is used by Git at runtime. Note that we prefer
+# "/bin/sh" over a PATH-based lookup, which provides a working shell on most
+# supported systems. This path is also the default shell path used by our
+# Makefile. This lookup can be overridden via `program_path`.
+target_shell = find_program('sh', dirs: program_path + [ '/bin' ], native: false)
 
 # Sanity-check that programs required for the build exist.
 foreach tool : ['cat', 'cut', 'grep', 'sort', 'tr', 'uname']
@@ -446,10 +455,10 @@
   'reftable/iter.c',
   'reftable/merged.c',
   'reftable/pq.c',
-  'reftable/reader.c',
   'reftable/record.c',
   'reftable/stack.c',
   'reftable/system.c',
+  'reftable/table.c',
   'reftable/tree.c',
   'reftable/writer.c',
   'remote.c',
@@ -668,6 +677,28 @@
   'builtin/write-tree.c',
 ]
 
+third_party_excludes = [
+  ':!contrib',
+  ':!compat/inet_ntop.c',
+  ':!compat/inet_pton.c',
+  ':!compat/nedmalloc',
+  ':!compat/obstack.*',
+  ':!compat/poll',
+  ':!compat/regex',
+  ':!sha1collisiondetection',
+  ':!sha1dc',
+  ':!t/unit-tests/clar',
+  ':!t/t[0-9][0-9][0-9][0-9]*',
+  ':!xdiff',
+]
+
+headers_to_check = []
+if git.found() and fs.exists(meson.project_source_root() / '.git')
+  foreach header : run_command(git, '-C', meson.project_source_root(), 'ls-files', '--deduplicate', '*.h', third_party_excludes, check: true).stdout().split()
+    headers_to_check += header
+  endforeach
+endif
+
 if not get_option('breaking_changes')
   builtin_sources += 'builtin/pack-redundant.c'
 endif
@@ -699,18 +730,18 @@
 # build options to our tests.
 build_options_config = configuration_data()
 build_options_config.set('GIT_INTEROP_MAKE_OPTS', '')
-build_options_config.set('GIT_PERF_LARGE_REPO', '')
+build_options_config.set_quoted('GIT_PERF_LARGE_REPO', get_option('benchmark_large_repo'))
 build_options_config.set('GIT_PERF_MAKE_COMMAND', '')
 build_options_config.set('GIT_PERF_MAKE_OPTS', '')
-build_options_config.set('GIT_PERF_REPEAT_COUNT', '')
-build_options_config.set('GIT_PERF_REPO', '')
+build_options_config.set_quoted('GIT_PERF_REPEAT_COUNT', get_option('benchmark_repeat_count').to_string())
+build_options_config.set_quoted('GIT_PERF_REPO', get_option('benchmark_repo'))
 build_options_config.set('GIT_TEST_CMP_USE_COPIED_CONTEXT', '')
 build_options_config.set('GIT_TEST_INDEX_VERSION', '')
 build_options_config.set('GIT_TEST_OPTS', '')
 build_options_config.set('GIT_TEST_PERL_FATAL_WARNINGS', '')
 build_options_config.set_quoted('GIT_TEST_UTF8_LOCALE', get_option('test_utf8_locale'))
 build_options_config.set_quoted('LOCALEDIR', fs.as_posix(get_option('prefix') / get_option('localedir')))
-build_options_config.set('GITWEBDIR', fs.as_posix(get_option('prefix') / get_option('datadir') / 'gitweb'))
+build_options_config.set_quoted('GITWEBDIR', fs.as_posix(get_option('prefix') / get_option('datadir') / 'gitweb'))
 
 if get_option('sane_tool_path').length() != 0
   sane_tool_path = (host_machine.system() == 'windows' ? ';' : ':').join(get_option('sane_tool_path'))
@@ -728,8 +759,6 @@
 libgit_c_args = [
   '-DBINDIR="' + get_option('bindir') + '"',
   '-DDEFAULT_GIT_TEMPLATE_DIR="' + get_option('datadir') / 'git-core/templates' + '"',
-  '-DETC_GITATTRIBUTES="' + get_option('gitattributes') + '"',
-  '-DETC_GITCONFIG="' + get_option('gitconfig') + '"',
   '-DFALLBACK_RUNTIME_PREFIX="' + get_option('prefix') + '"',
   '-DGIT_HOST_CPU="' + host_machine.cpu_family() + '"',
   '-DGIT_HTML_PATH="' + get_option('datadir') / 'doc/git-doc"',
@@ -740,6 +769,20 @@
   '-DSHELL_PATH="' + fs.as_posix(target_shell.full_path()) + '"',
 ]
 
+system_attributes = get_option('gitattributes')
+if system_attributes != ''
+  libgit_c_args += '-DETC_GITATTRIBUTES="' + system_attributes + '"'
+else
+  libgit_c_args += '-DETC_GITATTRIBUTES="' + get_option('sysconfdir') / 'gitattributes"'
+endif
+
+system_config = get_option('gitconfig')
+if system_config != ''
+  libgit_c_args += '-DETC_GITCONFIG="' + system_config + '"'
+else
+  libgit_c_args += '-DETC_GITCONFIG="' + get_option('sysconfdir') / 'gitconfig"'
+endif
+
 editor_opt = get_option('default_editor')
 if editor_opt != '' and editor_opt != 'vi'
   libgit_c_args += '-DDEFAULT_EDITOR="' + editor_opt + '"'
@@ -836,7 +879,7 @@
 # features. It is optional if you want to neither execute tests nor use any of
 # these optional features.
 perl_required = get_option('perl')
-if get_option('gitweb').enabled() or 'netrc' in get_option('credential_helpers') or get_option('docs') != []
+if get_option('benchmarks').enabled() or get_option('gitweb').enabled() or 'netrc' in get_option('credential_helpers')
   perl_required = true
 endif
 
@@ -1079,10 +1122,6 @@
   libgit_c_args += '-DHAVE_ALLOCA_H'
 endif
 
-if compiler.has_header('sys/sysinfo.h')
-  libgit_c_args += '-DHAVE_SYSINFO'
-endif
-
 # Windows has libgen.h and a basename implementation, but we still need our own
 # implementation to threat things like drive prefixes specially.
 if host_machine.system() == 'windows' or not compiler.has_header('libgen.h')
@@ -1105,18 +1144,22 @@
     networking_dependencies += winsock
   endif
 else
-  libresolv = compiler.find_library('resolv', required: false)
-  if libresolv.found()
-    networking_dependencies += libresolv
-  endif
+  networking_dependencies += [
+    compiler.find_library('nsl', required: false),
+    compiler.find_library('resolv', required: false),
+    compiler.find_library('socket', required: false),
+  ]
 endif
 libgit_dependencies += networking_dependencies
 
-foreach symbol : ['inet_ntop', 'inet_pton', 'strerror']
-  if not compiler.has_function(symbol, dependencies: networking_dependencies)
-    libgit_c_args += '-DNO_' + symbol.to_upper()
-  endif
-endforeach
+if host_machine.system() != 'windows'
+  foreach symbol : ['inet_ntop', 'inet_pton', 'hstrerror']
+    if not compiler.has_function(symbol, dependencies: networking_dependencies)
+      libgit_c_args += '-DNO_' + symbol.to_upper()
+      libgit_sources += 'compat/' + symbol + '.c'
+    endif
+  endforeach
+endif
 
 has_ipv6 = compiler.has_function('getaddrinfo', dependencies: networking_dependencies)
 if not has_ipv6
@@ -1154,11 +1197,6 @@
   build_options_config.set('NO_UNIX_SOCKETS', '1')
 endif
 
-if not compiler.has_function('pread')
-  libgit_c_args += '-DNO_PREAD'
-  libgit_sources += 'compat/pread.c'
-endif
-
 if host_machine.system() == 'darwin'
   libgit_sources += 'compat/precompose_utf8.c'
   libgit_c_args += '-DPRECOMPOSE_UNICODE'
@@ -1293,6 +1331,10 @@
   endif
 endif
 
+if compiler.has_member('struct sysinfo', 'totalram', prefix: '#include <sys/sysinfo.h>')
+  libgit_c_args += '-DHAVE_SYSINFO'
+endif
+
 if compiler.has_member('struct stat', 'st_mtimespec.tv_nsec', prefix: '#include <sys/stat.h>')
   libgit_c_args += '-DUSE_ST_TIMESPEC'
 elif not compiler.has_member('struct stat', 'st_mtim.tv_nsec', prefix: '#include <sys/stat.h>')
@@ -1311,77 +1353,57 @@
   libgit_c_args += '-DNO_GECOS_IN_PWENT'
 endif
 
+checkfuncs = {
+  'strcasestr' : ['strcasestr.c'],
+  'memmem' : ['memmem.c'],
+  'strlcpy' : ['strlcpy.c'],
+  'strtoull' : [],
+  'setenv' : ['setenv.c'],
+  'mkdtemp' : ['mkdtemp.c'],
+  'initgroups' : [],
+  'strtoumax' : ['strtoumax.c', 'strtoimax.c'],
+  'pread' : ['pread.c'],
+}
+
+if host_machine.system() == 'windows'
+  libgit_c_args += '-DUSE_WIN32_MMAP'
+else
+  checkfuncs += {
+    'mmap' : ['mmap.c'],
+    # provided by compat/mingw.c.
+    'unsetenv' : ['unsetenv.c'],
+    # provided by compat/mingw.c.
+    'getpagesize' : [],
+  }
+endif
+
+foreach func, impls : checkfuncs
+  if not compiler.has_function(func)
+    libgit_c_args += '-DNO_' + func.to_upper()
+    foreach impl : impls
+      libgit_sources += 'compat/' + impl
+    endforeach
+  endif
+endforeach
+
 if compiler.has_function('sync_file_range')
   libgit_c_args += '-DHAVE_SYNC_FILE_RANGE'
 endif
 
-if not compiler.has_function('strcasestr')
-  libgit_c_args += '-DNO_STRCASESTR'
-  libgit_sources += 'compat/strcasestr.c'
-endif
-
-if not compiler.has_function('memmem')
-  libgit_c_args += '-DNO_MEMMEM'
-  libgit_sources += 'compat/memmem.c'
-endif
-
-if not compiler.has_function('strlcpy')
-  libgit_c_args += '-DNO_STRLCPY'
-  libgit_sources += 'compat/strlcpy.c'
-endif
-
 if not compiler.has_function('strdup')
   libgit_c_args += '-DOVERRIDE_STRDUP'
   libgit_sources += 'compat/strdup.c'
 endif
 
-if not compiler.has_function('strtoumax')
-  libgit_c_args += '-DNO_STRTOUMAX'
-  libgit_sources += [
-    'compat/strtoumax.c',
-    'compat/strtoimax.c',
-  ]
-endif
-
-if not compiler.has_function('strtoull')
-  libgit_c_args += '-DNO_STRTOULL'
-endif
-
-if not compiler.has_function('setenv')
-  libgit_c_args += '-DNO_SETENV'
-  libgit_sources += 'compat/setenv.c'
-endif
-
 if not compiler.has_function('qsort')
   libgit_c_args += '-DINTERNAL_QSORT'
 endif
 libgit_sources += 'compat/qsort_s.c'
 
-# unsetenv is provided by compat/mingw.c.
-if host_machine.system() != 'windows' and not compiler.has_function('unsetenv')
-  libgit_c_args += '-DNO_UNSETENV'
-  libgit_sources += 'compat/unsetenv.c'
-endif
-
-if not compiler.has_function('mkdtemp')
-  libgit_c_args += '-DNO_MKDTEMP'
-  libgit_sources += 'compat/mkdtemp.c'
-endif
-
-if not compiler.has_function('initgroups')
-  libgit_c_args += '-DNO_INITGROUPS'
-endif
-
 if compiler.has_function('getdelim')
   libgit_c_args += '-DHAVE_GETDELIM'
 endif
 
-if host_machine.system() == 'windows'
-  libgit_c_args += '-DUSE_WIN32_MMAP'
-elif not compiler.has_function('mmap')
-  libgit_c_args += '-DNO_MMAP'
-  libgit_sources += 'compat/mmap.c'
-endif
 
 if compiler.has_function('clock_gettime')
   libgit_c_args += '-DHAVE_CLOCK_GETTIME'
@@ -1572,10 +1594,19 @@
   error('Unsupported CSPRNG backend: ' + csprng_backend)
 endif
 
+git_exec_path = 'libexec/git-core'
+libexec = get_option('libexecdir')
+if libexec != 'libexec' and libexec != '.'
+  git_exec_path = libexec
+endif
+
 if get_option('runtime_prefix')
   libgit_c_args += '-DRUNTIME_PREFIX'
   build_options_config.set('RUNTIME_PREFIX', 'true')
-  git_exec_path = get_option('libexecdir') / 'git-core'
+
+  if git_exec_path.startswith('/')
+    error('runtime_prefix requires a relative libexecdir not:', libexec)
+  endif
 
   if compiler.has_header('mach-o/dyld.h')
     libgit_c_args += '-DHAVE_NS_GET_EXECUTABLE_PATH'
@@ -1612,7 +1643,6 @@
   endif
 else
   build_options_config.set('RUNTIME_PREFIX', 'false')
-  git_exec_path = get_option('prefix') / get_option('libexecdir') / 'git-core'
 endif
 libgit_c_args += '-DGIT_EXEC_PATH="' + git_exec_path + '"'
 
@@ -1892,14 +1922,19 @@
     perl_header_template = 'perl/header_templates/runtime_prefix.template.pl'
   endif
 
+  perllibdir = get_option('perllibdir')
+  if perllibdir == ''
+    perllibdir = get_option('datadir') / 'perl5'
+  endif
+
   perl_header = configure_file(
     input: perl_header_template,
     output: 'GIT-PERL-HEADER',
     configuration: {
       'GITEXECDIR_REL': get_option('libexecdir') / 'git-core',
-      'PERLLIBDIR_REL': get_option('datadir') / 'perl5',
+      'PERLLIBDIR_REL': perllibdir,
       'LOCALEDIR_REL': get_option('datadir') / 'locale',
-      'INSTLIBDIR': get_option('datadir') / 'perl5',
+      'INSTLIBDIR': perllibdir,
       'PATHSEP': pathsep,
     },
   )
@@ -2033,6 +2068,70 @@
 
 subdir('contrib')
 
+exclude_from_check_headers = [
+  'compat/',
+  'unicode-width.h',
+]
+
+if sha1_backend != 'openssl'
+  exclude_from_check_headers += 'sha1/openssl.h'
+endif
+if sha256_backend != 'openssl'
+  exclude_from_check_headers += 'sha256/openssl.h'
+endif
+if sha256_backend != 'nettle'
+  exclude_from_check_headers += 'sha256/nettle.h'
+endif
+if sha256_backend != 'gcrypt'
+  exclude_from_check_headers += 'sha256/gcrypt.h'
+endif
+
+if headers_to_check.length() != 0 and compiler.get_argument_syntax() == 'gcc'
+  hco_targets = []
+  foreach h : headers_to_check
+    skip_header = false
+    foreach exclude : exclude_from_check_headers
+      if h.startswith(exclude)
+        skip_header = true
+        break
+      endif
+    endforeach
+
+    if skip_header
+      continue
+    endif
+
+    hcc = custom_target(
+      input: h,
+      output: h.underscorify() + 'cc',
+      command: [
+        shell,
+        '-c',
+        'echo \'#include "git-compat-util.h"\' > @OUTPUT@ && echo \'#include "' + h + '"\' >> @OUTPUT@'
+      ]
+    )
+
+    hco = custom_target(
+      input: hcc,
+      output: fs.replace_suffix(h.underscorify(), '.hco'),
+      command: [
+        compiler.cmd_array(),
+        libgit_c_args,
+        '-I', meson.project_source_root(),
+        '-I', meson.project_source_root() / 't/unit-tests',
+        '-o', '/dev/null',
+        '-c', '-xc',
+        '@INPUT@'
+      ]
+    )
+    hco_targets += hco
+  endforeach
+
+  # TODO: deprecate 'hdr-check' in lieu of 'check-headers' in Git 2.51+
+  hdr_check = alias_target('hdr-check', hco_targets)
+  alias_target('check-headers', hdr_check)
+endif
+
 foreach key, value : {
   'DIFF': diff.full_path(),
   'GIT_SOURCE_DIR': meson.project_source_root(),
@@ -2082,6 +2181,7 @@
 )
 
 summary({
+  'benchmarks': get_option('tests') and perl.found() and time.found(),
   'curl': curl.found(),
   'expat': expat.found(),
   'gettext': intl.found(),
@@ -2101,3 +2201,9 @@
   'sha256': sha256_backend,
   'zlib': zlib_backend,
 }, section: 'Backends')
+
+summary({
+  'perl': target_perl,
+  'python': target_python,
+  'shell': target_shell,
+}, section: 'Runtime executable paths')
diff --git a/meson_options.txt b/meson_options.txt
index 8ac30a5..e7f768d 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,12 +1,16 @@
+# Configuration for Git installation
+option('perllibdir', type: 'string', value: '',
+  description: 'Directory to install perl lib to. Defaults to <datadir>/perl5')
+
 # Configuration for how Git behaves at runtime.
 option('default_pager', type: 'string', value: 'less',
   description: 'Fall-back pager.')
 option('default_editor', type: 'string', value: 'vi',
   description: 'Fall-back editor.')
-option('gitconfig', type: 'string', value: '/etc/gitconfig',
-  description: 'Path to the global git configuration file.')
-option('gitattributes', type: 'string', value: '/etc/gitattributes',
-  description: 'Path to the global git attributes file.')
+option('gitconfig', type: 'string',
+  description: 'Path to the global git configuration file. (default: etc/gitconfig)')
+option('gitattributes', type: 'string',
+  description: 'Path to the global git attributes file. (default: etc/gitattributes)')
 option('pager_environment', type: 'string', value: 'LESS=FRX LV=-c',
   description: 'Environment used when spawning the pager')
 option('perl_cpan_fallback', type: 'boolean', value: true,
@@ -101,6 +105,14 @@
   description: 'Which backend to use to generate documentation.')
 
 # Testing.
+option('benchmarks', type: 'feature', value: 'auto',
+  description: 'Enable benchmarks. This requires Perl and GNU time.')
+option('benchmark_repo', type: 'string', value: '',
+  description: 'Repository to copy for the performance tests. Should be at least the size of the Git repository.')
+option('benchmark_large_repo', type: 'string', value: '',
+  description: 'Large repository to copy for the performance tests. Should be at least the size of the Linux repository.')
+option('benchmark_repeat_count', type: 'integer', value: 3,
+  description: 'Number of times a test should be repeated for best-of-N measurements.')
 option('coccinelle', type: 'feature', value: 'auto',
   description: 'Provide a coccicheck target that generates a Coccinelle patch.')
 option('tests', type: 'boolean', value: true,
diff --git a/midx-write.c b/midx-write.c
index dd3b307..ba4a949 100644
--- a/midx-write.c
+++ b/midx-write.c
@@ -1566,7 +1566,7 @@ int expire_midx_packs(struct repository *r, const char *object_dir, unsigned fla
 					  _("Counting referenced objects"),
 					  m->num_objects);
 	for (i = 0; i < m->num_objects; i++) {
-		int pack_int_id = nth_midxed_pack_int_id(m, i);
+		uint32_t pack_int_id = nth_midxed_pack_int_id(m, i);
 		count[pack_int_id]++;
 		display_progress(progress, i + 1);
 	}
@@ -1697,21 +1697,31 @@ static void fill_included_packs_batch(struct repository *r,
 
 	total_size = 0;
 	for (i = 0; total_size < batch_size && i < m->num_packs; i++) {
-		int pack_int_id = pack_info[i].pack_int_id;
+		uint32_t pack_int_id = pack_info[i].pack_int_id;
 		struct packed_git *p = m->packs[pack_int_id];
-		size_t expected_size;
+		uint64_t expected_size;
 
 		if (!want_included_pack(r, m, pack_kept_objects, pack_int_id))
 			continue;
 
-		expected_size = st_mult(p->pack_size,
-					pack_info[i].referenced_objects);
+		/*
+		 * Use shifted integer arithmetic to calculate the
+		 * expected pack size to ~4 significant digits without
+		 * overflow for packsizes less that 1PB.
+		 */
+		expected_size = (uint64_t)pack_info[i].referenced_objects << 14;
 		expected_size /= p->num_objects;
+		expected_size = u64_mult(expected_size, p->pack_size);
+		expected_size = u64_add(expected_size, 1u << 13) >> 14;
 
 		if (expected_size >= batch_size)
 			continue;
 
-		total_size += expected_size;
+		if (unsigned_add_overflows(total_size, (size_t)expected_size))
+			total_size = SIZE_MAX;
+		else
+			total_size += expected_size;
+
 		include_pack[pack_int_id] = 1;
 	}
 
diff --git a/midx.c b/midx.c
index 3d0015f..cd6e766 100644
--- a/midx.c
+++ b/midx.c
@@ -13,6 +13,8 @@
 #include "pack-bitmap.h"
 #include "pack-revindex.h"
 
+#define MIDX_PACK_ERROR ((void *)(intptr_t)-1)
+
 int midx_checksum_valid(struct multi_pack_index *m);
 void clear_midx_files_ext(const char *object_dir, const char *ext,
 			  const char *keep_hash);
@@ -405,7 +407,7 @@ void close_midx(struct multi_pack_index *m)
 	munmap((unsigned char *)m->data, m->data_len);
 
 	for (i = 0; i < m->num_packs; i++) {
-		if (m->packs[i])
+		if (m->packs[i] && m->packs[i] != MIDX_PACK_ERROR)
 			m->packs[i]->multi_pack_index = 0;
 	}
 	FREE_AND_NULL(m->packs);
@@ -458,6 +460,8 @@ int prepare_midx_pack(struct repository *r, struct multi_pack_index *m,
 
 	pack_int_id = midx_for_pack(&m, pack_int_id);
 
+	if (m->packs[pack_int_id] == MIDX_PACK_ERROR)
+		return 1;
 	if (m->packs[pack_int_id])
 		return 0;
 
@@ -482,8 +486,10 @@ int prepare_midx_pack(struct repository *r, struct multi_pack_index *m,
 	strbuf_release(&pack_name);
 	strbuf_release(&key);
 
-	if (!p)
+	if (!p) {
+		m->packs[pack_int_id] = MIDX_PACK_ERROR;
 		return 1;
+	}
 
 	p->multi_pack_index = 1;
 	m->packs[pack_int_id] = p;
@@ -495,6 +501,8 @@ struct packed_git *nth_midxed_pack(struct multi_pack_index *m,
 				   uint32_t pack_int_id)
 {
 	uint32_t local_pack_int_id = midx_for_pack(&m, pack_int_id);
+	if (m->packs[local_pack_int_id] == MIDX_PACK_ERROR)
+		return NULL;
 	return m->packs[local_pack_int_id];
 }
 
diff --git a/name-hash.c b/name-hash.c
index d66de1c..b91e276 100644
--- a/name-hash.c
+++ b/name-hash.c
@@ -492,8 +492,10 @@ static void *lazy_name_thread_proc(void *_data)
 	for (k = 0; k < d->istate->cache_nr; k++) {
 		struct cache_entry *ce_k = d->istate->cache[k];
 		ce_k->ce_flags |= CE_HASHED;
-		hashmap_entry_init(&ce_k->ent, d->lazy_entries[k].hash_name);
-		hashmap_add(&d->istate->name_hash, &ce_k->ent);
+		if (!S_ISSPARSEDIR(ce_k->ce_mode)) {
+			hashmap_entry_init(&ce_k->ent, d->lazy_entries[k].hash_name);
+			hashmap_add(&d->istate->name_hash, &ce_k->ent);
+		}
 	}
 
 	return NULL;
diff --git a/notes.c b/notes.c
index d9645c4..0a128f1 100644
--- a/notes.c
+++ b/notes.c
@@ -794,7 +794,8 @@ static int prune_notes_helper(const struct object_id *object_oid,
 	struct note_delete_list **l = (struct note_delete_list **) cb_data;
 	struct note_delete_list *n;
 
-	if (repo_has_object_file(the_repository, object_oid))
+	if (has_object(the_repository, object_oid,
+		       HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 		return 0; /* nothing to do for this note */
 
 	/* failed to find object => prune this note */
diff --git a/object-file.c b/object-file.c
index 9cc3a24..1ac04c2 100644
--- a/object-file.c
+++ b/object-file.c
@@ -130,12 +130,6 @@ int has_loose_object(const struct object_id *oid)
 	return check_and_freshen(oid, 0);
 }
 
-static int format_object_header_literally(char *str, size_t size,
-					  const char *type, size_t objsize)
-{
-	return xsnprintf(str, size, "%s %"PRIuMAX, type, (uintmax_t)objsize) + 1;
-}
-
 int format_object_header(char *str, size_t size, enum object_type type,
 			 size_t objsize)
 {
@@ -144,7 +138,7 @@ int format_object_header(char *str, size_t size, enum object_type type,
 	if (!name)
 		BUG("could not get a type name for 'enum object_type' value %d", type);
 
-	return format_object_header_literally(str, size, name, objsize);
+	return xsnprintf(str, size, "%s %"PRIuMAX, name, (uintmax_t)objsize) + 1;
 }
 
 int check_object_signature(struct repository *r, const struct object_id *oid,
@@ -299,8 +293,7 @@ enum unpack_loose_header_result unpack_loose_header(git_zstream *stream,
 						    unsigned char *map,
 						    unsigned long mapsize,
 						    void *buffer,
-						    unsigned long bufsiz,
-						    struct strbuf *header)
+						    unsigned long bufsiz)
 {
 	int status;
 
@@ -325,32 +318,9 @@ enum unpack_loose_header_result unpack_loose_header(git_zstream *stream,
 		return ULHR_OK;
 
 	/*
-	 * We have a header longer than MAX_HEADER_LEN. The "header"
-	 * here is only non-NULL when we run "cat-file
-	 * --allow-unknown-type".
+	 * We have a header longer than MAX_HEADER_LEN.
 	 */
-	if (!header)
-		return ULHR_TOO_LONG;
-
-	/*
-	 * buffer[0..bufsiz] was not large enough.  Copy the partial
-	 * result out to header, and then append the result of further
-	 * reading the stream.
-	 */
-	strbuf_add(header, buffer, stream->next_out - (unsigned char *)buffer);
-
-	do {
-		stream->next_out = buffer;
-		stream->avail_out = bufsiz;
-
-		obj_read_unlock();
-		status = git_inflate(stream, 0);
-		obj_read_lock();
-		strbuf_add(header, buffer, stream->next_out - (unsigned char *)buffer);
-		if (memchr(buffer, '\0', stream->next_out - (unsigned char *)buffer))
-			return 0;
-	} while (status == Z_OK);
-	return ULHR_BAD;
+	return ULHR_TOO_LONG;
 }
 
 static void *unpack_loose_rest(git_zstream *stream,
@@ -427,8 +397,6 @@ int parse_loose_header(const char *hdr, struct object_info *oi)
 	}
 
 	type = type_from_string_gently(type_buf, type_len, 1);
-	if (oi->type_name)
-		strbuf_add(oi->type_name, type_buf, type_len);
 	if (oi->typep)
 		*oi->typep = type;
 
@@ -476,10 +444,8 @@ int loose_object_info(struct repository *r,
 	void *map;
 	git_zstream stream;
 	char hdr[MAX_HEADER_LEN];
-	struct strbuf hdrbuf = STRBUF_INIT;
 	unsigned long size_scratch;
 	enum object_type type_scratch;
-	int allow_unknown = flags & OBJECT_INFO_ALLOW_UNKNOWN_TYPE;
 
 	if (oi->delta_base_oid)
 		oidclr(oi->delta_base_oid, the_repository->hash_algo);
@@ -492,7 +458,7 @@ int loose_object_info(struct repository *r,
 	 * return value implicitly indicates whether the
 	 * object even exists.
 	 */
-	if (!oi->typep && !oi->type_name && !oi->sizep && !oi->contentp) {
+	if (!oi->typep && !oi->sizep && !oi->contentp) {
 		struct stat st;
 		if (!oi->disk_sizep && (flags & OBJECT_INFO_QUICK))
 			return quick_has_loose(r, oid) ? 0 : -1;
@@ -521,18 +487,15 @@ int loose_object_info(struct repository *r,
 	if (oi->disk_sizep)
 		*oi->disk_sizep = mapsize;
 
-	switch (unpack_loose_header(&stream, map, mapsize, hdr, sizeof(hdr),
-				    allow_unknown ? &hdrbuf : NULL)) {
+	switch (unpack_loose_header(&stream, map, mapsize, hdr, sizeof(hdr))) {
 	case ULHR_OK:
-		if (parse_loose_header(hdrbuf.len ? hdrbuf.buf : hdr, oi) < 0)
+		if (parse_loose_header(hdr, oi) < 0)
 			status = error(_("unable to parse %s header"), oid_to_hex(oid));
-		else if (!allow_unknown && *oi->typep < 0)
+		else if (*oi->typep < 0)
 			die(_("invalid object type"));
 
 		if (!oi->contentp)
 			break;
-		if (hdrbuf.len)
-			BUG("unpacking content with unknown types not yet supported");
 		*oi->contentp = unpack_loose_rest(&stream, hdr, *oi->sizep, oid);
 		if (*oi->contentp)
 			goto cleanup;
@@ -558,7 +521,6 @@ int loose_object_info(struct repository *r,
 	munmap(map, mapsize);
 	if (oi->sizep == &size_scratch)
 		oi->sizep = NULL;
-	strbuf_release(&hdrbuf);
 	if (oi->typep == &type_scratch)
 		oi->typep = NULL;
 	oi->whence = OI_LOOSE;
@@ -590,17 +552,6 @@ static void write_object_file_prepare(const struct git_hash_algo *algo,
 	hash_object_body(algo, &c, buf, len, oid, hdr, hdrlen);
 }
 
-static void write_object_file_prepare_literally(const struct git_hash_algo *algo,
-				      const void *buf, unsigned long len,
-				      const char *type, struct object_id *oid,
-				      char *hdr, int *hdrlen)
-{
-	struct git_hash_ctx c;
-
-	*hdrlen = format_object_header_literally(hdr, *hdrlen, type, len);
-	hash_object_body(algo, &c, buf, len, oid, hdr, hdrlen);
-}
-
 #define CHECK_COLLISION_DEST_VANISHED -2
 
 static int check_collision(const char *source, const char *dest)
@@ -730,21 +681,14 @@ int finalize_object_file_flags(const char *tmpfile, const char *filename,
 	return 0;
 }
 
-static void hash_object_file_literally(const struct git_hash_algo *algo,
-				       const void *buf, unsigned long len,
-				       const char *type, struct object_id *oid)
-{
-	char hdr[MAX_HEADER_LEN];
-	int hdrlen = sizeof(hdr);
-
-	write_object_file_prepare_literally(algo, buf, len, type, oid, hdr, &hdrlen);
-}
-
 void hash_object_file(const struct git_hash_algo *algo, const void *buf,
 		      unsigned long len, enum object_type type,
 		      struct object_id *oid)
 {
-	hash_object_file_literally(algo, buf, len, type_name(type), oid);
+	char hdr[MAX_HEADER_LEN];
+	int hdrlen = sizeof(hdr);
+
+	write_object_file_prepare(algo, buf, len, type, oid, hdr, &hdrlen);
 }
 
 /* Finalize a file on disk, and close it. */
@@ -932,7 +876,7 @@ static int write_loose_object(const struct object_id *oid, char *hdr,
 	if (batch_fsync_enabled(FSYNC_COMPONENT_LOOSE_OBJECT))
 		prepare_loose_object_bulk_checkin();
 
-	loose_object_path(the_repository, &filename, oid);
+	odb_loose_path(the_repository->objects->odb, &filename, oid);
 
 	fd = start_loose_object_common(&tmp_file, filename.buf, flags,
 				       &stream, compressed, sizeof(compressed),
@@ -1079,7 +1023,7 @@ int stream_loose_object(struct input_stream *in_stream, size_t len,
 		goto cleanup;
 	}
 
-	loose_object_path(the_repository, &filename, oid);
+	odb_loose_path(the_repository->objects->odb, &filename, oid);
 
 	/* We finally know the object path, and create the missing dir. */
 	dirlen = directory_size(filename.buf);
@@ -1146,53 +1090,6 @@ int write_object_file_flags(const void *buf, unsigned long len,
 	return 0;
 }
 
-int write_object_file_literally(const void *buf, unsigned long len,
-				const char *type, struct object_id *oid,
-				unsigned flags)
-{
-	char *header;
-	struct repository *repo = the_repository;
-	const struct git_hash_algo *algo = repo->hash_algo;
-	const struct git_hash_algo *compat = repo->compat_hash_algo;
-	struct object_id compat_oid;
-	int hdrlen, status = 0;
-	int compat_type = -1;
-
-	if (compat) {
-		compat_type = type_from_string_gently(type, -1, 1);
-		if (compat_type == OBJ_BLOB)
-			hash_object_file(compat, buf, len, compat_type,
-					 &compat_oid);
-		else if (compat_type != -1) {
-			struct strbuf converted = STRBUF_INIT;
-			convert_object_file(the_repository,
-					    &converted, algo, compat,
-					    buf, len, compat_type, 0);
-			hash_object_file(compat, converted.buf, converted.len,
-					 compat_type, &compat_oid);
-			strbuf_release(&converted);
-		}
-	}
-
-	/* type string, SP, %lu of the length plus NUL must fit this */
-	hdrlen = strlen(type) + MAX_HEADER_LEN;
-	header = xmalloc(hdrlen);
-	write_object_file_prepare_literally(the_hash_algo, buf, len, type,
-					    oid, header, &hdrlen);
-
-	if (!(flags & WRITE_OBJECT_FILE_PERSIST))
-		goto cleanup;
-	if (freshen_packed_object(oid) || freshen_loose_object(oid))
-		goto cleanup;
-	status = write_loose_object(oid, header, hdrlen, buf, len, 0, 0);
-	if (compat_type != -1)
-		return repo_add_loose_object_map(repo, oid, &compat_oid);
-
-cleanup:
-	free(header);
-	return status;
-}
-
 int force_object_loose(const struct object_id *oid, time_t mtime)
 {
 	struct repository *repo = the_repository;
@@ -1682,8 +1579,7 @@ int read_loose_object(const char *path,
 		goto out;
 	}
 
-	if (unpack_loose_header(&stream, map, mapsize, hdr, sizeof(hdr),
-				NULL) != ULHR_OK) {
+	if (unpack_loose_header(&stream, map, mapsize, hdr, sizeof(hdr)) != ULHR_OK) {
 		error(_("unable to unpack header of %s"), path);
 		goto out_inflate;
 	}
@@ -1693,6 +1589,12 @@ int read_loose_object(const char *path,
 		goto out_inflate;
 	}
 
+	if (*oi->typep < 0) {
+		error(_("unable to parse type from header '%s' of %s"),
+		      hdr, path);
+		goto out_inflate;
+	}
+
 	if (*oi->typep == OBJ_BLOB &&
 	    *size > repo_settings_get_big_file_threshold(the_repository)) {
 		if (check_stream_oid(&stream, hdr, *size, path, expected_oid) < 0)
@@ -1703,9 +1605,9 @@ int read_loose_object(const char *path,
 			error(_("unable to unpack contents of %s"), path);
 			goto out_inflate;
 		}
-		hash_object_file_literally(the_repository->hash_algo,
-					   *contents, *size,
-					   oi->type_name->buf, real_oid);
+		hash_object_file(the_repository->hash_algo,
+				 *contents, *size,
+				 *oi->typep, real_oid);
 		if (!oideq(expected_oid, real_oid))
 			goto out_inflate;
 	}
diff --git a/object-file.h b/object-file.h
index c002fbe..6f41142 100644
--- a/object-file.h
+++ b/object-file.h
@@ -3,6 +3,7 @@
 
 #include "git-zlib.h"
 #include "object.h"
+#include "object-store.h"
 
 struct index_state;
 
@@ -25,6 +26,20 @@ int index_path(struct index_state *istate, struct object_id *oid, const char *pa
 
 struct object_directory;
 
+/*
+ * Populate and return the loose object cache array corresponding to the
+ * given object ID.
+ */
+struct oidtree *odb_loose_cache(struct object_directory *odb,
+				const struct object_id *oid);
+
+/* Empty the loose object cache for the specified object directory. */
+void odb_clear_loose_cache(struct object_directory *odb);
+
+/*
+ * Put in `buf` the name of the file in the local object database that
+ * would be used to store a loose object with the specified oid.
+ */
 const char *odb_loose_path(struct object_directory *odb,
 			   struct strbuf *buf,
 			   const struct object_id *oid);
@@ -38,6 +53,68 @@ int has_loose_object_nonlocal(const struct object_id *);
 
 int has_loose_object(const struct object_id *);
 
+void *map_loose_object(struct repository *r, const struct object_id *oid,
+		       unsigned long *size);
+
+/*
+ * Iterate over the files in the loose-object parts of the object
+ * directory "path", triggering the following callbacks:
+ *
+ *  - loose_object is called for each loose object we find.
+ *
+ *  - loose_cruft is called for any files that do not appear to be
+ *    loose objects. Note that we only look in the loose object
+ *    directories "objects/[0-9a-f]{2}/", so we will not report
+ *    "objects/foobar" as cruft.
+ *
+ *  - loose_subdir is called for each top-level hashed subdirectory
+ *    of the object directory (e.g., "$OBJDIR/f0"). It is called
+ *    after the objects in the directory are processed.
+ *
+ * Any callback that is NULL will be ignored. Callbacks returning non-zero
+ * will end the iteration.
+ *
+ * In the "buf" variant, "path" is a strbuf which will also be used as a
+ * scratch buffer, but restored to its original contents before
+ * the function returns.
+ */
+typedef int each_loose_object_fn(const struct object_id *oid,
+				 const char *path,
+				 void *data);
+typedef int each_loose_cruft_fn(const char *basename,
+				const char *path,
+				void *data);
+typedef int each_loose_subdir_fn(unsigned int nr,
+				 const char *path,
+				 void *data);
+int for_each_file_in_obj_subdir(unsigned int subdir_nr,
+				struct strbuf *path,
+				each_loose_object_fn obj_cb,
+				each_loose_cruft_fn cruft_cb,
+				each_loose_subdir_fn subdir_cb,
+				void *data);
+int for_each_loose_file_in_objdir(const char *path,
+				  each_loose_object_fn obj_cb,
+				  each_loose_cruft_fn cruft_cb,
+				  each_loose_subdir_fn subdir_cb,
+				  void *data);
+int for_each_loose_file_in_objdir_buf(struct strbuf *path,
+				      each_loose_object_fn obj_cb,
+				      each_loose_cruft_fn cruft_cb,
+				      each_loose_subdir_fn subdir_cb,
+				      void *data);
+
+/*
+ * Iterate over all accessible loose objects without respect to
+ * reachability. By default, this includes both local and alternate objects.
+ * The order in which objects are visited is unspecified.
+ *
+ * Any flags specific to packs are ignored.
+ */
+int for_each_loose_object(each_loose_object_fn, void *,
+			  enum for_each_object_flags flags);
+
+
 /**
  * format_object_header() is a thin wrapper around s xsnprintf() that
  * writes the initial "<type> <obj-len>" part of the loose object
@@ -56,12 +133,7 @@ int format_object_header(char *str, size_t size, enum object_type type,
  * - ULHR_BAD on error
  * - ULHR_TOO_LONG if the header was too long
  *
- * It will only parse up to MAX_HEADER_LEN bytes unless an optional
- * "hdrbuf" argument is non-NULL. This is intended for use with
- * OBJECT_INFO_ALLOW_UNKNOWN_TYPE to extract the bad type for (error)
- * reporting. The full header will be extracted to "hdrbuf" for use
- * with parse_loose_header(), ULHR_TOO_LONG will still be returned
- * from this function to indicate that the header was too long.
+ * It will only parse up to MAX_HEADER_LEN bytes.
  */
 enum unpack_loose_header_result {
 	ULHR_OK,
@@ -72,8 +144,7 @@ enum unpack_loose_header_result unpack_loose_header(git_zstream *stream,
 						    unsigned char *map,
 						    unsigned long mapsize,
 						    void *buffer,
-						    unsigned long bufsiz,
-						    struct strbuf *hdrbuf);
+						    unsigned long bufsiz);
 
 /**
  * parse_loose_header() parses the starting "<type> <len>\0" of an
@@ -88,7 +159,7 @@ int parse_loose_header(const char *hdr, struct object_info *oi);
 
 enum {
 	/*
-	 * By default, `write_object_file_literally()` does not actually write
+	 * By default, `write_object_file()` does not actually write
 	 * anything into the object store, but only computes the object ID.
 	 * This flag changes that so that the object will be written as a loose
 	 * object and persisted.
@@ -103,7 +174,7 @@ enum {
 
 int write_object_file_flags(const void *buf, unsigned long len,
 			    enum object_type type, struct object_id *oid,
-			    struct object_id *comapt_oid_in, unsigned flags);
+			    struct object_id *compat_oid_in, unsigned flags);
 static inline int write_object_file(const void *buf, unsigned long len,
 				    enum object_type type, struct object_id *oid)
 {
@@ -116,9 +187,6 @@ struct input_stream {
 	int is_finished;
 };
 
-int write_object_file_literally(const void *buf, unsigned long len,
-				const char *type, struct object_id *oid,
-				unsigned flags);
 int stream_loose_object(struct input_stream *in_stream, size_t len,
 			struct object_id *oid);
 
@@ -154,6 +222,10 @@ int finalize_object_file(const char *tmpfile, const char *filename);
 int finalize_object_file_flags(const char *tmpfile, const char *filename,
 			       enum finalize_object_file_flags flags);
 
+void hash_object_file(const struct git_hash_algo *algo, const void *buf,
+		      unsigned long len, enum object_type type,
+		      struct object_id *oid);
+
 /* Helper to check and "touch" a file */
 int check_and_freshen_file(const char *fn, int freshen);
 
diff --git a/object-name.c b/object-name.c
index 2c751a5..9288b2d 100644
--- a/object-name.c
+++ b/object-name.c
@@ -19,7 +19,7 @@
 #include "oidtree.h"
 #include "packfile.h"
 #include "pretty.h"
-#include "object-store.h"
+#include "object-file.h"
 #include "read-cache-ll.h"
 #include "repo-settings.h"
 #include "repository.h"
diff --git a/object-store.c b/object-store.c
index 6ab50d2..58cde03 100644
--- a/object-store.c
+++ b/object-store.c
@@ -83,25 +83,6 @@ int odb_mkstemp(struct strbuf *temp_filename, const char *pattern)
 	return xmkstemp_mode(temp_filename->buf, mode);
 }
 
-int odb_pack_keep(const char *name)
-{
-	int fd;
-
-	fd = open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
-	if (0 <= fd)
-		return fd;
-
-	/* slow path */
-	safe_create_leading_directories_const(the_repository, name);
-	return open(name, O_RDWR|O_CREAT|O_EXCL, 0600);
-}
-
-const char *loose_object_path(struct repository *r, struct strbuf *buf,
-			      const struct object_id *oid)
-{
-	return odb_loose_path(r->objects->odb, buf, oid);
-}
-
 /*
  * Return non-zero iff the path is usable as an alternate object database.
  */
@@ -665,8 +646,6 @@ static int do_oid_object_info_extended(struct repository *r,
 			*(oi->disk_sizep) = 0;
 		if (oi->delta_base_oid)
 			oidclr(oi->delta_base_oid, the_repository->hash_algo);
-		if (oi->type_name)
-			strbuf_addstr(oi->type_name, type_name(co->type));
 		if (oi->contentp)
 			*oi->contentp = xmemdupz(co->buf, co->size);
 		oi->whence = OI_CACHED;
@@ -746,7 +725,7 @@ static int oid_object_info_convert(struct repository *r,
 {
 	const struct git_hash_algo *input_algo = &hash_algos[input_oid->algo];
 	int do_die = flags & OBJECT_INFO_DIE_IF_CORRUPT;
-	struct strbuf type_name = STRBUF_INIT;
+	enum object_type type;
 	struct object_id oid, delta_base_oid;
 	struct object_info new_oi, *oi;
 	unsigned long size;
@@ -772,7 +751,7 @@ static int oid_object_info_convert(struct repository *r,
 		if (input_oi->sizep || input_oi->contentp) {
 			new_oi.contentp = &content;
 			new_oi.sizep = &size;
-			new_oi.type_name = &type_name;
+			new_oi.typep = &type;
 		}
 		oi = &new_oi;
 	}
@@ -785,12 +764,7 @@ static int oid_object_info_convert(struct repository *r,
 
 	if (new_oi.contentp) {
 		struct strbuf outbuf = STRBUF_INIT;
-		enum object_type type;
 
-		type = type_from_string_gently(type_name.buf, type_name.len,
-					       !do_die);
-		if (type == -1)
-			return -1;
 		if (type != OBJ_BLOB) {
 			ret = convert_object_file(the_repository, &outbuf,
 						  the_hash_algo, input_algo,
@@ -807,10 +781,8 @@ static int oid_object_info_convert(struct repository *r,
 			*input_oi->contentp = content;
 		else
 			free(content);
-		if (input_oi->type_name)
-			*input_oi->type_name = type_name;
-		else
-			strbuf_release(&type_name);
+		if (input_oi->typep)
+			*input_oi->typep = type;
 	}
 	if (new_oi.delta_base_oid == &delta_base_oid) {
 		if (repo_oid_to_algop(r, &delta_base_oid, input_algo,
@@ -866,7 +838,7 @@ int pretend_object_file(struct repository *repo,
 	char *co_buf;
 
 	hash_object_file(repo->hash_algo, buf, len, type, oid);
-	if (repo_has_object_file_with_flags(repo, oid, OBJECT_INFO_QUICK | OBJECT_INFO_SKIP_FETCH_OBJECT) ||
+	if (has_object(repo, oid, 0) ||
 	    find_cached_object(repo->objects, oid))
 		return 0;
 
@@ -956,29 +928,18 @@ void *read_object_with_reference(struct repository *r,
 int has_object(struct repository *r, const struct object_id *oid,
 	       unsigned flags)
 {
-	int quick = !(flags & HAS_OBJECT_RECHECK_PACKED);
-	unsigned object_info_flags = OBJECT_INFO_SKIP_FETCH_OBJECT |
-		(quick ? OBJECT_INFO_QUICK : 0);
+	unsigned object_info_flags = 0;
 
 	if (!startup_info->have_repository)
 		return 0;
+	if (!(flags & HAS_OBJECT_RECHECK_PACKED))
+		object_info_flags |= OBJECT_INFO_QUICK;
+	if (!(flags & HAS_OBJECT_FETCH_PROMISOR))
+		object_info_flags |= OBJECT_INFO_SKIP_FETCH_OBJECT;
+
 	return oid_object_info_extended(r, oid, NULL, object_info_flags) >= 0;
 }
 
-int repo_has_object_file_with_flags(struct repository *r,
-				    const struct object_id *oid, int flags)
-{
-	if (!startup_info->have_repository)
-		return 0;
-	return oid_object_info_extended(r, oid, NULL, flags) >= 0;
-}
-
-int repo_has_object_file(struct repository *r,
-			 const struct object_id *oid)
-{
-	return repo_has_object_file_with_flags(r, oid, 0);
-}
-
 void assert_oid_type(const struct object_id *oid, enum object_type expect)
 {
 	enum object_type type = oid_object_info(the_repository, oid, NULL);
@@ -1017,8 +978,7 @@ void raw_object_store_clear(struct raw_object_store *o)
 {
 	FREE_AND_NULL(o->alternate_db);
 
-	oidmap_free(o->replace_map, 1);
-	FREE_AND_NULL(o->replace_map);
+	oidmap_clear(&o->replace_map, 1);
 	pthread_mutex_destroy(&o->replace_mutex);
 
 	free_commit_graph(o->commit_graph);
diff --git a/object-store.h b/object-store.h
index 46961dc..c589008 100644
--- a/object-store.h
+++ b/object-store.h
@@ -5,6 +5,7 @@
 #include "object.h"
 #include "list.h"
 #include "oidset.h"
+#include "oidmap.h"
 #include "thread-utils.h"
 
 struct oidmap;
@@ -82,75 +83,8 @@ struct object_directory *set_temporary_primary_odb(const char *dir, int will_des
  */
 void restore_primary_odb(struct object_directory *restore_odb, const char *old_path);
 
-/*
- * Populate and return the loose object cache array corresponding to the
- * given object ID.
- */
-struct oidtree *odb_loose_cache(struct object_directory *odb,
-				  const struct object_id *oid);
-
-/* Empty the loose object cache for the specified object directory. */
-void odb_clear_loose_cache(struct object_directory *odb);
-
-struct packed_git {
-	struct hashmap_entry packmap_ent;
-	struct packed_git *next;
-	struct list_head mru;
-	struct pack_window *windows;
-	off_t pack_size;
-	const void *index_data;
-	size_t index_size;
-	uint32_t num_objects;
-	size_t crc_offset;
-	struct oidset bad_objects;
-	int index_version;
-	time_t mtime;
-	int pack_fd;
-	int index;              /* for builtin/pack-objects.c */
-	unsigned pack_local:1,
-		 pack_keep:1,
-		 pack_keep_in_core:1,
-		 freshened:1,
-		 do_not_close:1,
-		 pack_promisor:1,
-		 multi_pack_index:1,
-		 is_cruft:1;
-	unsigned char hash[GIT_MAX_RAWSZ];
-	struct revindex_entry *revindex;
-	const uint32_t *revindex_data;
-	const uint32_t *revindex_map;
-	size_t revindex_size;
-	/*
-	 * mtimes_map points at the beginning of the memory mapped region of
-	 * this pack's corresponding .mtimes file, and mtimes_size is the size
-	 * of that .mtimes file
-	 */
-	const uint32_t *mtimes_map;
-	size_t mtimes_size;
-
-	/* repo denotes the repository this packfile belongs to */
-	struct repository *repo;
-
-	/* something like ".git/objects/pack/xxxxx.pack" */
-	char pack_name[FLEX_ARRAY]; /* more */
-};
-
+struct packed_git;
 struct multi_pack_index;
-
-static inline int pack_map_entry_cmp(const void *cmp_data UNUSED,
-				     const struct hashmap_entry *entry,
-				     const struct hashmap_entry *entry2,
-				     const void *keydata)
-{
-	const char *key = keydata;
-	const struct packed_git *pg1, *pg2;
-
-	pg1 = container_of(entry, const struct packed_git, packmap_ent);
-	pg2 = container_of(entry2, const struct packed_git, packmap_ent);
-
-	return strcmp(pg1->pack_name, key ? key : pg2->pack_name);
-}
-
 struct cached_object_entry;
 
 struct raw_object_store {
@@ -176,7 +110,7 @@ struct raw_object_store {
 	 * Objects that should be substituted by other objects
 	 * (see git-replace(1)).
 	 */
-	struct oidmap *replace_map;
+	struct oidmap replace_map;
 	unsigned replace_map_initialized : 1;
 	pthread_mutex_t replace_mutex; /* protect object replace functions */
 
@@ -246,23 +180,6 @@ void raw_object_store_clear(struct raw_object_store *o);
  */
 int odb_mkstemp(struct strbuf *temp_filename, const char *pattern);
 
-/*
- * Create a pack .keep file named "name" (which should generally be the output
- * of odb_pack_name). Returns a file descriptor opened for writing, or -1 on
- * error.
- */
-int odb_pack_keep(const char *name);
-
-/*
- * Put in `buf` the name of the file in the local object database that
- * would be used to store a loose object with the specified oid.
- */
-const char *loose_object_path(struct repository *r, struct strbuf *buf,
-			      const struct object_id *oid);
-
-void *map_loose_object(struct repository *r, const struct object_id *oid,
-		       unsigned long *size);
-
 void *repo_read_object_file(struct repository *r,
 			    const struct object_id *oid,
 			    enum object_type *type,
@@ -271,10 +188,6 @@ void *repo_read_object_file(struct repository *r,
 /* Read and unpack an object file into memory, write memory to an object file */
 int oid_object_info(struct repository *r, const struct object_id *, unsigned long *);
 
-void hash_object_file(const struct git_hash_algo *algo, const void *buf,
-		      unsigned long len, enum object_type type,
-		      struct object_id *oid);
-
 /*
  * Add an object file to the in-memory object store, without writing it
  * to disk.
@@ -293,7 +206,6 @@ struct object_info {
 	unsigned long *sizep;
 	off_t *disk_sizep;
 	struct object_id *delta_base_oid;
-	struct strbuf *type_name;
 	void **contentp;
 
 	/* Response */
@@ -328,8 +240,6 @@ struct object_info {
 
 /* Invoke lookup_replace_object() on the given hash */
 #define OBJECT_INFO_LOOKUP_REPLACE 1
-/* Allow reading from a loose object file of unknown/bogus type */
-#define OBJECT_INFO_ALLOW_UNKNOWN_TYPE 2
 /* Do not retry packed storage after checking packed and loose storage */
 #define OBJECT_INFO_QUICK 8
 /*
@@ -350,33 +260,20 @@ int oid_object_info_extended(struct repository *r,
 			     const struct object_id *,
 			     struct object_info *, unsigned flags);
 
-/* Retry packed storage after checking packed and loose storage */
-#define HAS_OBJECT_RECHECK_PACKED 1
+enum {
+	/* Retry packed storage after checking packed and loose storage */
+	HAS_OBJECT_RECHECK_PACKED = (1 << 0),
+	/* Allow fetching the object in case the repository has a promisor remote. */
+	HAS_OBJECT_FETCH_PROMISOR = (1 << 1),
+};
 
 /*
  * Returns 1 if the object exists. This function will not lazily fetch objects
- * in a partial clone.
+ * in a partial clone by default.
  */
 int has_object(struct repository *r, const struct object_id *oid,
 	       unsigned flags);
 
-/*
- * These macros and functions are deprecated. If checking existence for an
- * object that is likely to be missing and/or whose absence is relatively
- * inconsequential (or is consequential but the caller is prepared to handle
- * it), use has_object(), which has better defaults (no lazy fetch in a partial
- * clone and no rechecking of packed storage). In the unlikely event that a
- * caller needs to assert existence of an object that it fully expects to
- * exist, and wants to trigger a lazy fetch in a partial clone, use
- * oid_object_info_extended() with a NULL struct object_info.
- *
- * These functions can be removed once all callers have migrated to
- * has_object() and/or oid_object_info_extended().
- */
-int repo_has_object_file(struct repository *r, const struct object_id *oid);
-int repo_has_object_file_with_flags(struct repository *r,
-				    const struct object_id *oid, int flags);
-
 void assert_oid_type(const struct object_id *oid, enum object_type expect);
 
 /*
@@ -411,56 +308,7 @@ static inline void obj_read_unlock(void)
 	if(obj_read_use_lock)
 		pthread_mutex_unlock(&obj_read_mutex);
 }
-
-/*
- * Iterate over the files in the loose-object parts of the object
- * directory "path", triggering the following callbacks:
- *
- *  - loose_object is called for each loose object we find.
- *
- *  - loose_cruft is called for any files that do not appear to be
- *    loose objects. Note that we only look in the loose object
- *    directories "objects/[0-9a-f]{2}/", so we will not report
- *    "objects/foobar" as cruft.
- *
- *  - loose_subdir is called for each top-level hashed subdirectory
- *    of the object directory (e.g., "$OBJDIR/f0"). It is called
- *    after the objects in the directory are processed.
- *
- * Any callback that is NULL will be ignored. Callbacks returning non-zero
- * will end the iteration.
- *
- * In the "buf" variant, "path" is a strbuf which will also be used as a
- * scratch buffer, but restored to its original contents before
- * the function returns.
- */
-typedef int each_loose_object_fn(const struct object_id *oid,
-				 const char *path,
-				 void *data);
-typedef int each_loose_cruft_fn(const char *basename,
-				const char *path,
-				void *data);
-typedef int each_loose_subdir_fn(unsigned int nr,
-				 const char *path,
-				 void *data);
-int for_each_file_in_obj_subdir(unsigned int subdir_nr,
-				struct strbuf *path,
-				each_loose_object_fn obj_cb,
-				each_loose_cruft_fn cruft_cb,
-				each_loose_subdir_fn subdir_cb,
-				void *data);
-int for_each_loose_file_in_objdir(const char *path,
-				  each_loose_object_fn obj_cb,
-				  each_loose_cruft_fn cruft_cb,
-				  each_loose_subdir_fn subdir_cb,
-				  void *data);
-int for_each_loose_file_in_objdir_buf(struct strbuf *path,
-				      each_loose_object_fn obj_cb,
-				      each_loose_cruft_fn cruft_cb,
-				      each_loose_subdir_fn subdir_cb,
-				      void *data);
-
-/* Flags for for_each_*_object() below. */
+/* Flags for for_each_*_object(). */
 enum for_each_object_flags {
 	/* Iterate only over local objects, not alternates. */
 	FOR_EACH_OBJECT_LOCAL_ONLY = (1<<0),
@@ -480,33 +328,6 @@ enum for_each_object_flags {
 	FOR_EACH_OBJECT_SKIP_ON_DISK_KEPT_PACKS = (1<<4),
 };
 
-/*
- * Iterate over all accessible loose objects without respect to
- * reachability. By default, this includes both local and alternate objects.
- * The order in which objects are visited is unspecified.
- *
- * Any flags specific to packs are ignored.
- */
-int for_each_loose_object(each_loose_object_fn, void *,
-			  enum for_each_object_flags flags);
-
-/*
- * Iterate over all accessible packed objects without respect to reachability.
- * By default, this includes both local and alternate packs.
- *
- * Note that some objects may appear twice if they are found in multiple packs.
- * Each pack is visited in an unspecified order. By default, objects within a
- * pack are visited in pack-idx order (i.e., sorted by oid).
- */
-typedef int each_packed_object_fn(const struct object_id *oid,
-				  struct packed_git *pack,
-				  uint32_t pos,
-				  void *data);
-int for_each_object_in_pack(struct packed_git *p,
-			    each_packed_object_fn, void *data,
-			    enum for_each_object_flags flags);
-int for_each_packed_object(struct repository *repo, each_packed_object_fn cb,
-			   void *data, enum for_each_object_flags flags);
 
 void *read_object_with_reference(struct repository *r,
 				 const struct object_id *oid,
diff --git a/oidmap.c b/oidmap.c
index 8b1bc4d..508d6c7 100644
--- a/oidmap.c
+++ b/oidmap.c
@@ -22,7 +22,7 @@ void oidmap_init(struct oidmap *map, size_t initial_size)
 	hashmap_init(&map->map, oidmap_neq, NULL, initial_size);
 }
 
-void oidmap_free(struct oidmap *map, int free_entries)
+void oidmap_clear(struct oidmap *map, int free_entries)
 {
 	if (!map)
 		return;
diff --git a/oidmap.h b/oidmap.h
index fad4128..67fb322 100644
--- a/oidmap.h
+++ b/oidmap.h
@@ -36,12 +36,13 @@ struct oidmap {
 void oidmap_init(struct oidmap *map, size_t initial_size);
 
 /*
- * Frees an oidmap structure and allocated memory.
+ * Clear an oidmap, freeing any allocated memory. The map is empty and
+ * can be reused without another explicit init.
  *
  * If `free_entries` is true, each oidmap_entry in the map is freed as well
  * using stdlibs free().
  */
-void oidmap_free(struct oidmap *map, int free_entries);
+void oidmap_clear(struct oidmap *map, int free_entries);
 
 /*
  * Returns the oidmap entry for the specified oid, or NULL if not found.
@@ -66,6 +67,10 @@ void *oidmap_put(struct oidmap *map, void *entry);
  */
 void *oidmap_remove(struct oidmap *map, const struct object_id *key);
 
+static inline unsigned int oidmap_get_size(struct oidmap *map)
+{
+	return hashmap_get_size(&map->map);
+}
 
 struct oidmap_iter {
 	struct hashmap_iter h_iter;
diff --git a/pack-bitmap.c b/pack-bitmap.c
index b9f1d86..ac6d62b 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -388,10 +388,6 @@ static int load_bitmap_entries_v1(struct bitmap_index *index)
 			return error(_("corrupt ewah bitmap: commit index %u out of range"),
 				     (unsigned)commit_idx_pos);
 
-		bitmap = read_bitmap_1(index);
-		if (!bitmap)
-			return -1;
-
 		if (xor_offset > MAX_XOR_OFFSET || xor_offset > i)
 			return error(_("corrupted bitmap pack index"));
 
@@ -402,6 +398,10 @@ static int load_bitmap_entries_v1(struct bitmap_index *index)
 				return error(_("invalid XOR offset in bitmap pack index"));
 		}
 
+		bitmap = read_bitmap_1(index);
+		if (!bitmap)
+			return -1;
+
 		recent_bitmaps[i % MAX_XOR_OFFSET] = store_bitmap(
 			index, bitmap, &oid, xor_bitmap, flags);
 	}
diff --git a/pack-objects.h b/pack-objects.h
index d1c4ae7..475a2d6 100644
--- a/pack-objects.h
+++ b/pack-objects.h
@@ -4,6 +4,7 @@
 #include "object-store.h"
 #include "thread-utils.h"
 #include "pack.h"
+#include "packfile.h"
 
 struct repository;
 
diff --git a/packfile.c b/packfile.c
index d91016f..70c7208 100644
--- a/packfile.c
+++ b/packfile.c
@@ -737,6 +737,17 @@ struct packed_git *add_packed_git(struct repository *r, const char *path,
 	p = alloc_packed_git(r, alloc);
 	memcpy(p->pack_name, path, path_len);
 
+	/*
+	 * Note that we have to check auxiliary data structures before we check
+	 * for the ".pack" file to exist to avoid races with a packfile that is
+	 * in the process of being deleted. The ".pack" file is unlinked before
+	 * its auxiliary data structures, so we know that we either get a
+	 * consistent snapshot of all data structures or that we'll fail to
+	 * stat(3p) the packfile itself and thus return `NULL`.
+	 *
+	 * As such, we cannot bail out before the access(3p) calls in case the
+	 * packfile doesn't exist without doing two stat(3p) calls for it.
+	 */
 	xsnprintf(p->pack_name + path_len, alloc - path_len, ".keep");
 	if (!access(p->pack_name, F_OK))
 		p->pack_keep = 1;
@@ -1598,17 +1609,12 @@ int packed_object_info(struct repository *r, struct packed_git *p,
 		*oi->disk_sizep = pack_pos_to_offset(p, pos + 1) - obj_offset;
 	}
 
-	if (oi->typep || oi->type_name) {
+	if (oi->typep) {
 		enum object_type ptot;
 		ptot = packed_to_object_type(r, p, obj_offset,
 					     type, &w_curs, curpos);
 		if (oi->typep)
 			*oi->typep = ptot;
-		if (oi->type_name) {
-			const char *tn = type_name(ptot);
-			if (tn)
-				strbuf_addstr(oi->type_name, tn);
-		}
 		if (ptot < 0) {
 			type = OBJ_BAD;
 			goto out;
diff --git a/packfile.h b/packfile.h
index 2509721..3a3c77c 100644
--- a/packfile.h
+++ b/packfile.h
@@ -1,13 +1,71 @@
 #ifndef PACKFILE_H
 #define PACKFILE_H
 
+#include "list.h"
 #include "object.h"
+#include "object-store.h"
 #include "oidset.h"
 
 /* in object-store.h */
-struct packed_git;
 struct object_info;
 
+struct packed_git {
+	struct hashmap_entry packmap_ent;
+	struct packed_git *next;
+	struct list_head mru;
+	struct pack_window *windows;
+	off_t pack_size;
+	const void *index_data;
+	size_t index_size;
+	uint32_t num_objects;
+	size_t crc_offset;
+	struct oidset bad_objects;
+	int index_version;
+	time_t mtime;
+	int pack_fd;
+	int index;              /* for builtin/pack-objects.c */
+	unsigned pack_local:1,
+		 pack_keep:1,
+		 pack_keep_in_core:1,
+		 freshened:1,
+		 do_not_close:1,
+		 pack_promisor:1,
+		 multi_pack_index:1,
+		 is_cruft:1;
+	unsigned char hash[GIT_MAX_RAWSZ];
+	struct revindex_entry *revindex;
+	const uint32_t *revindex_data;
+	const uint32_t *revindex_map;
+	size_t revindex_size;
+	/*
+	 * mtimes_map points at the beginning of the memory mapped region of
+	 * this pack's corresponding .mtimes file, and mtimes_size is the size
+	 * of that .mtimes file
+	 */
+	const uint32_t *mtimes_map;
+	size_t mtimes_size;
+
+	/* repo denotes the repository this packfile belongs to */
+	struct repository *repo;
+
+	/* something like ".git/objects/pack/xxxxx.pack" */
+	char pack_name[FLEX_ARRAY]; /* more */
+};
+
+static inline int pack_map_entry_cmp(const void *cmp_data UNUSED,
+				     const struct hashmap_entry *entry,
+				     const struct hashmap_entry *entry2,
+				     const void *keydata)
+{
+	const char *key = keydata;
+	const struct packed_git *pg1, *pg2;
+
+	pg1 = container_of(entry, const struct packed_git, packmap_ent);
+	pg2 = container_of(entry2, const struct packed_git, packmap_ent);
+
+	return strcmp(pg1->pack_name, key ? key : pg2->pack_name);
+}
+
 struct pack_window {
 	struct pack_window *next;
 	unsigned char *base;
@@ -60,6 +118,24 @@ void for_each_file_in_pack_dir(const char *objdir,
 			       each_file_in_pack_dir_fn fn,
 			       void *data);
 
+/*
+ * Iterate over all accessible packed objects without respect to reachability.
+ * By default, this includes both local and alternate packs.
+ *
+ * Note that some objects may appear twice if they are found in multiple packs.
+ * Each pack is visited in an unspecified order. By default, objects within a
+ * pack are visited in pack-idx order (i.e., sorted by oid).
+ */
+typedef int each_packed_object_fn(const struct object_id *oid,
+				  struct packed_git *pack,
+				  uint32_t pos,
+				  void *data);
+int for_each_object_in_pack(struct packed_git *p,
+			    each_packed_object_fn, void *data,
+			    enum for_each_object_flags flags);
+int for_each_packed_object(struct repository *repo, each_packed_object_fn cb,
+			   void *data, enum for_each_object_flags flags);
+
 /* A hook to report invalid files in pack directory */
 #define PACKDIR_FILE_PACK 1
 #define PACKDIR_FILE_IDX 2
diff --git a/path.c b/path.c
index 4505bb7..3b598b2 100644
--- a/path.c
+++ b/path.c
@@ -1011,6 +1011,20 @@ enum scld_error safe_create_leading_directories_const(struct repository *repo,
 	return result;
 }
 
+int safe_create_file_with_leading_directories(struct repository *repo,
+					      const char *path)
+{
+	int fd;
+
+	fd = open(path, O_RDWR|O_CREAT|O_EXCL, 0600);
+	if (0 <= fd)
+		return fd;
+
+	/* slow path */
+	safe_create_leading_directories_const(repo, path);
+	return open(path, O_RDWR|O_CREAT|O_EXCL, 0600);
+}
+
 static int have_same_root(const char *path1, const char *path2)
 {
 	int is_abs1, is_abs2;
diff --git a/path.h b/path.h
index fd1a194..e67348f 100644
--- a/path.h
+++ b/path.h
@@ -266,6 +266,13 @@ enum scld_error safe_create_leading_directories_const(struct repository *repo,
 						      const char *path);
 enum scld_error safe_create_leading_directories_no_share(char *path);
 
+/*
+ * Create a file, potentially creating its leading directories in case they
+ * don't exist. Returns the return value of the open(3p) call.
+ */
+int safe_create_file_with_leading_directories(struct repository *repo,
+					      const char *path);
+
 # ifdef USE_THE_REPOSITORY_VARIABLE
 #  include "strbuf.h"
 #  include "repository.h"
diff --git a/perl/FromCPAN/Mail/meson.build b/perl/FromCPAN/Mail/meson.build
index b4ff2fc..467507c 100644
--- a/perl/FromCPAN/Mail/meson.build
+++ b/perl/FromCPAN/Mail/meson.build
@@ -3,6 +3,6 @@
   output: 'Address.pm',
   command: generate_perl_command,
   install: true,
-  install_dir: get_option('datadir') / 'perl5/FromCPAN/Mail',
+  install_dir: perllibdir / 'FromCPAN/Mail',
   depends: [git_version_file],
 )
diff --git a/perl/FromCPAN/meson.build b/perl/FromCPAN/meson.build
index 1f9ea6c..720c602 100644
--- a/perl/FromCPAN/meson.build
+++ b/perl/FromCPAN/meson.build
@@ -3,7 +3,7 @@
   output: 'Error.pm',
   command: generate_perl_command,
   install: true,
-  install_dir: get_option('datadir') / 'perl5/FromCPAN',
+  install_dir: perllibdir / 'FromCPAN',
   depends: [git_version_file],
 )
 
diff --git a/perl/Git/LoadCPAN/Mail/meson.build b/perl/Git/LoadCPAN/Mail/meson.build
index 89cde56..05a5770 100644
--- a/perl/Git/LoadCPAN/Mail/meson.build
+++ b/perl/Git/LoadCPAN/Mail/meson.build
@@ -3,6 +3,6 @@
   output: 'Address.pm',
   command: generate_perl_command,
   install: true,
-  install_dir: get_option('datadir') / 'perl5/Git/LoadCPAN/Mail',
+  install_dir: perllibdir / 'Git/LoadCPAN/Mail',
   depends: [git_version_file],
 )
diff --git a/perl/Git/LoadCPAN/meson.build b/perl/Git/LoadCPAN/meson.build
index 1ee915c..b975d49 100644
--- a/perl/Git/LoadCPAN/meson.build
+++ b/perl/Git/LoadCPAN/meson.build
@@ -3,7 +3,7 @@
   output: 'Error.pm',
   command: generate_perl_command,
   install: true,
-  install_dir: get_option('datadir') / 'perl5/Git/LoadCPAN',
+  install_dir: perllibdir / 'Git/LoadCPAN',
   depends: [git_version_file],
 )
 
diff --git a/perl/Git/SVN/Memoize/meson.build b/perl/Git/SVN/Memoize/meson.build
index 233ec67..d6209dc 100644
--- a/perl/Git/SVN/Memoize/meson.build
+++ b/perl/Git/SVN/Memoize/meson.build
@@ -3,6 +3,6 @@
   output: 'YAML.pm',
   command: generate_perl_command,
   install: true,
-  install_dir: get_option('datadir') / 'perl5/Git/SVN',
+  install_dir: perllibdir / 'Git/SVN/Memoize',
   depends: [git_version_file],
 )
diff --git a/perl/Git/SVN/meson.build b/perl/Git/SVN/meson.build
index 44abaf4..8858985 100644
--- a/perl/Git/SVN/meson.build
+++ b/perl/Git/SVN/meson.build
@@ -13,7 +13,7 @@
     output: source,
     command: generate_perl_command,
     install: true,
-    install_dir: get_option('datadir') / 'perl5/Git/SVN',
+    install_dir: perllibdir / 'Git/SVN',
     depends: [git_version_file],
   )
 endforeach
diff --git a/perl/Git/meson.build b/perl/Git/meson.build
index b21fa55..a61b7b1 100644
--- a/perl/Git/meson.build
+++ b/perl/Git/meson.build
@@ -10,7 +10,7 @@
     output: source,
     command: generate_perl_command,
     install: true,
-    install_dir: get_option('datadir') / 'perl5/Git',
+    install_dir: perllibdir / 'Git',
     depends: [git_version_file],
   )
 endforeach
diff --git a/perl/meson.build b/perl/meson.build
index 2d4ab1c..3c66b00 100644
--- a/perl/meson.build
+++ b/perl/meson.build
@@ -3,7 +3,7 @@
   output: 'Git.pm',
   command: generate_perl_command,
   install: true,
-  install_dir: get_option('datadir') / 'perl5',
+  install_dir: perllibdir,
   depends: [git_version_file],
 )
 
diff --git a/po/TEAMS b/po/TEAMS
index 9a6a15c..647a107 100644
--- a/po/TEAMS
+++ b/po/TEAMS
@@ -29,6 +29,10 @@
 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 37d127f..a641066 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 @@
 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 @@
 
 #, 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 @@
 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 @@
 
 #, 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 @@
 #, c-format
 msgid "cannot read file '%s' for replaying"
 msgstr ""
-"файлът „%s“ не може да бъде прочетен, за да се изпълнят командите от него "
-"наново"
+"файлът „%s“ не може да се прочете, за да се изпълнят командите от него наново"
 
 #, c-format
 msgid "running %s\n"
@@ -2905,7 +2908,7 @@
 
 #, 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 @@
 
 #, 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 @@
 msgstr "извеждане на напредъка"
 
 msgid "show output score for blame entries"
-msgstr "извеждане на допълнителна информация за определянето на авторството"
+msgstr "извеждане на оценка за съвпадение при определяне на авторството"
 
 msgid "show original filename (Default: auto)"
 msgstr ""
@@ -3054,7 +3057,7 @@
 msgstr "използване на съдържанието на ФАЙЛа като крайно положение"
 
 msgid "score"
-msgstr "напасване на редовете"
+msgstr "оценка за съвпадение"
 
 msgid "find line copies within and across files"
 msgstr ""
@@ -3175,7 +3178,7 @@
 "branch '%s' not found.\n"
 "Did you forget --remote?"
 msgstr ""
-"клонът „%s“ не може да бъде открит.\n"
+"клонът „%s“ липсва.\n"
 "Пробвахте ли опцията „--remote“?"
 
 #, c-format
@@ -3191,7 +3194,7 @@
 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 @@
 
 #, 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 @@
 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 @@
 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 @@
 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 @@
 
 #, 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 @@
 
 #, 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 @@
 msgstr "Указателят „HEAD“ в момента сочи към"
 
 msgid "unable to update HEAD"
-msgstr "Указателят „HEAD“ не може да бъде обновен"
+msgstr "Указателят „HEAD“ не може да се обнови"
 
 #, c-format
 msgid "Reset branch '%s'\n"
@@ -4262,7 +4266,7 @@
 
 #, c-format
 msgid "could not resolve %s"
-msgstr "„%s“ не може да бъде проследен"
+msgstr "„%s“ не може да се проследи"
 
 msgid "invalid path specification"
 msgstr "указан е неправилен път"
@@ -4345,7 +4349,7 @@
 
 #, c-format
 msgid "Would remove %s\n"
-msgstr "Файлът „%s“ ще бъде изтрит\n"
+msgstr "Файлът „%s“ ще се изтрие\n"
 
 #, c-format
 msgid "Skipping repository %s\n"
@@ -4353,21 +4357,21 @@
 
 #, 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 @@
 
 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 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, c-format
 msgid "unable to update %s"
-msgstr "обектът „%s“ не може да бъде обновен"
+msgstr "обектът „%s“ не може да се обнови"
 
 msgid "failed to initialize sparse-checkout"
 msgstr "частичното изтегляне не може да се инициализира"
@@ -4557,7 +4561,7 @@
 "съществува.  Изтегляне не може да се извърши"
 
 msgid "unable to checkout working tree"
-msgstr "работното дърво не може да бъде подготвено"
+msgstr "работното дърво не може да се подготви"
 
 msgid "unable to write parameters to config file"
 msgstr "настройките не може да бъдат записани в конфигурационния файл"
@@ -4566,7 +4570,7 @@
 msgstr "не може да се извърши пакетиране за изчистване на файловете"
 
 msgid "cannot unlink temporary alternates file"
-msgstr "временният файл за алтернативни обекти не може да бъде изтрит"
+msgstr "временният файл за алтернативни обекти не може да се изтрие"
 
 msgid "don't clone shallow repository"
 msgstr "без клониране на плитко хранилище"
@@ -4730,7 +4734,7 @@
 
 #, 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 @@
 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 @@
 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 @@
 
 #, 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 @@
 
 #, 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 @@
 msgstr "%sПодаващ: %.*s <%.*s>"
 
 msgid "Cannot read index"
-msgstr "Индексът не може да бъде прочетен"
+msgstr "Индексът не може да се прочете"
 
 msgid "unable to pass trailers to --trailers"
 msgstr "епилогът не може да се подаде на „--trailers“"
@@ -5275,7 +5279,7 @@
 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 @@
 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 @@
 
 #, c-format
 msgid "unable to read config file '%s'"
-msgstr "конфигурационният файл „%s“ не може да бъде прочетен"
+msgstr "конфигурационният файл „%s“ не може да се прочете"
 
 msgid "error processing config file(s)"
 msgstr "грешка при обработката на конфигурационен файл"
@@ -5804,7 +5808,7 @@
 
 #, c-format
 msgid "cannot create configuration file %s"
-msgstr "конфигурационният файл „%s“ не може да бъде създаден"
+msgstr "конфигурационният файл „%s“ не може да се създаде"
 
 msgid "Action"
 msgstr "Действие"
@@ -6042,7 +6046,7 @@
 "добавяне на такъв МАРКЕР на счупеното работно дърво (стандартно е „-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 @@
 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 @@
 
 #, 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 @@
 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 @@
 msgstr "опцията „fetch.parallel“ трябва да е неотрицателна"
 
 msgid "couldn't find remote ref HEAD"
-msgstr "указателят „HEAD“ в отдалеченото хранилище не може да бъде открит"
+msgstr "указателят „HEAD“ в отдалеченото хранилище липсва"
 
 #, c-format
 msgid "From %.*s\n"
@@ -6327,10 +6379,10 @@
 msgstr "[обновяване на етикетите]"
 
 msgid "unable to update local ref"
-msgstr "локален указател не може да бъде обновен"
+msgstr "локален указател не може да се обнови"
 
 msgid "would clobber existing tag"
-msgstr "съществуващ етикет ще бъде презаписан"
+msgstr "ще се презапише съществуващ етикет"
 
 msgid "[new tag]"
 msgstr "[нов етикет]"
@@ -6349,7 +6401,7 @@
 
 #, 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 @@
 
 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 @@
 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 @@
 
 #, 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 @@
 msgid "show verbose names for reachable objects"
 msgstr "показване на подробни имена на достижимите обекти"
 
+msgid "check reference database consistency"
+msgstr "проверка на валидността на базата от данни с указатели"
+
 msgid "Checking objects"
 msgstr "Проверка на обектите"
 
@@ -7008,7 +7062,7 @@
 
 #, 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 @@
 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 @@
 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 @@
 "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 @@
 
 #, 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 @@
 
 #, 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[1] "не може да се запълнят %d байта"
 
 msgid "early EOF"
-msgstr "неочакван край на файл"
+msgstr "неочакван край на файл (EOF)"
 
 msgid "read error on input"
 msgstr "грешка при четене на входните данни"
@@ -7799,7 +7853,7 @@
 msgstr "непознат вид обект %d"
 
 msgid "cannot pread pack file"
-msgstr "пакетният файл не може да бъде прочетен"
+msgstr "пакетният файл не може да се прочете"
 
 #, c-format
 msgid "premature end of pack file, %<PRIuMAX> byte missing"
@@ -7817,11 +7871,11 @@
 
 #, 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 @@
 msgstr "Някои обекти, наследници на „%s“, не може да бъдат достигнати"
 
 msgid "failed to apply delta"
-msgstr "разликата не може да бъде приложена"
+msgstr "разликата не може да се приложи"
 
 msgid "Receiving objects"
 msgstr "Получаване на обекти"
@@ -7916,11 +7970,11 @@
 
 #, 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 @@
 
 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 @@
 
 #, c-format
 msgid "cannot mkdir %s"
-msgstr "директорията „%s“ не може да бъде създадена"
+msgstr "директорията „%s“ не може да се създаде"
 
 #, c-format
 msgid "cannot chdir to %s"
@@ -8057,7 +8110,7 @@
 
 #, c-format
 msgid "could not read input file '%s'"
-msgstr "входният файл „%s“ не може да бъде прочетен"
+msgstr "входният файл „%s“ не може да се прочете"
 
 msgid "could not read from stdin"
 msgstr "от стандартния вход не може да се чете"
@@ -8145,10 +8198,6 @@
 "проследяване на еволюцията на диапазона от редове НАЧАЛО,КРАЙ или :ФУНКЦИЯта "
 "във ФАЙЛа"
 
-#, c-format
-msgid "unrecognized argument: %s"
-msgstr "непознат аргумент: %s"
-
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "опцията „-LДИАПАЗОН:ФАЙЛ“ не може да се ползва с път"
 
@@ -8162,7 +8211,7 @@
 
 #, c-format
 msgid "could not read object %s"
-msgstr "обектът не може да бъде прочетен: %s"
+msgstr "обектът не може да се прочете: %s"
 
 #, c-format
 msgid "unknown type: %d"
@@ -8177,7 +8226,7 @@
 
 #, c-format
 msgid "cannot open patch file %s"
-msgstr "файлът-кръпка „%s“ не може да бъде отворен"
+msgstr "файлът-кръпка „%s“ не може да се отвори"
 
 msgid "need exactly one range"
 msgstr "трябва да зададете точно един диапазон"
@@ -8187,7 +8236,7 @@
 
 #, 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 @@
 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 @@
 msgstr "базовото подаване не може да е в списъка с версиите"
 
 msgid "cannot get patch id"
-msgstr "идентификаторът на кръпката не може да бъде получен"
+msgstr "идентификаторът на кръпката не може да се получи"
 
 msgid "failed to infer range-diff origin of current series"
 msgstr ""
@@ -8424,7 +8473,7 @@
 
 #, 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 @@
 
 #, c-format
 msgid "unable to read signature file '%s'"
-msgstr "файлът „%s“ с подпис не може да бъде прочетен"
+msgstr "файлът „%s“ с подпис не може да се прочете"
 
 msgid "Generating patches"
 msgstr "Създаване на кръпки"
@@ -8787,7 +8836,7 @@
 
 #, c-format
 msgid "could not resolve ref '%s'"
-msgstr "указателят „%s“ не може да бъде проследен"
+msgstr "указателят „%s“ не може да се проследи"
 
 #, c-format
 msgid "Merging %s with %s\n"
@@ -8821,6 +8870,9 @@
 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 @@
 
 #, 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 @@
 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 @@
 #, 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 @@
 
 #, 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 @@
 msgstr "етикетът на стандартния вход не сочи към правилен обект"
 
 msgid "unable to write tag file"
-msgstr "файлът за етикета не може да бъде запазен"
+msgstr "файлът за етикета не може да се запази"
 
 msgid "input is NUL terminated"
 msgstr "входните записи са разделени с нулевия знак „NUL“"
@@ -9239,8 +9290,11 @@
 "при препакетиране пакетните файлове, които са с по-малък от този размер, да "
 "се обединяват в пакети с по-голям от този размер"
 
-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 @@
 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 @@
 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 @@
 
 #, 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 @@
 
 #, 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 @@
 "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 @@
 
 #, c-format
 msgid "failed to stat %s"
-msgstr "не може да бъде получена информация чрез „stat“ за „%s“"
+msgstr "не може да се получи информация чрез „stat“ за „%s“"
 
 #, c-format
 msgid "failed utime() on %s"
@@ -9772,11 +9832,11 @@
 
 #, 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 @@
 
 #, c-format
 msgid "unable to get type of object %s"
-msgstr "видът на обекта „%s“ не може да бъде определен"
+msgstr "видът на обекта „%s“ не може да се определи"
 
 msgid "Compressing objects"
 msgstr "Компресиране на обектите"
@@ -9831,7 +9891,7 @@
 
 #, 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 @@
 
 #, c-format
 msgid "packfile %s cannot be accessed"
-msgstr "пакетният файл „%s“ не може да бъде достъпен"
+msgstr "пакетният файл „%s“ не може да се достъпи"
 
 msgid "Enumerating cruft objects"
 msgstr "Изброяване на ненужните обекти"
@@ -9872,14 +9932,14 @@
 "заредят"
 
 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 @@
 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 @@
 "$ git reset --hard\n"
 "to recover."
 msgstr ""
-"Работното ви копие не може да бъде превъртяно.\n"
+"Работното ви копие не може да се превърти.\n"
 "След като запазите всичко необходимо посочено от командата:\n"
 "    git diff %s\n"
 "изпълнете:\n"
@@ -10806,7 +10870,7 @@
 
 #, c-format
 msgid "could not remove '%s'"
-msgstr "„%s“ не може да бъде изтрит"
+msgstr "„%s“ не може да се изтрие"
 
 #, c-format
 msgid ""
@@ -11047,7 +11111,7 @@
 "Опцията „--edit-todo“ е достъпна само по време на интерактивно пребазиране."
 
 msgid "Cannot read HEAD"
-msgstr "Указателят „HEAD“ не може да бъде прочетен"
+msgstr "Указателят „HEAD“ не може да се прочете"
 
 msgid ""
 "You must edit all merge conflicts and then\n"
@@ -11125,7 +11189,7 @@
 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 @@
 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 @@
 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 @@
 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 @@
 
 #, c-format
 msgid "Could not setup master '%s'"
-msgstr "Основният клон „%s“ не може да бъде настроен"
+msgstr "Основният клон „%s“ не може да се настрои"
 
 #, c-format
 msgid "more than one %s"
@@ -11514,7 +11590,7 @@
 
 #, c-format
 msgid "Could not rename config section '%s' to '%s'"
-msgstr "Разделът „%s“ в настройките не може да бъде преименуван на „%s“"
+msgstr "Разделът „%s“ в настройките не може да се преименува на „%s“"
 
 #, c-format
 msgid ""
@@ -11552,7 +11628,7 @@
 
 #, 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 @@
 
 #, c-format
 msgid "Could not delete %s"
-msgstr "„%s“ не може да бъде изтрит"
+msgstr "„%s“ не може да се изтрие"
 
 #, c-format
 msgid "Not a valid ref: %s"
@@ -11762,7 +11838,7 @@
 
 #, c-format
 msgid " * [would prune] %s"
-msgstr " ● [ще бъде окастрено] %s"
+msgstr " ● [ще се окастри] %s"
 
 #, c-format
 msgid " * [pruned] %s"
@@ -11863,7 +11939,7 @@
 
 #, 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 @@
 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 @@
 
 #, c-format
 msgid "replace ref '%s' not found"
-msgstr "указателят за замяна „%s“ не може да бъде открит"
+msgstr "указателят за замяна „%s“ липсва"
 
 #, c-format
 msgid "Deleted replace ref '%s'"
@@ -12041,14 +12122,14 @@
 
 #, 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 @@
 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 @@
 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 @@
 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 @@
 
 #, 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 @@
 msgstr "тази команда трябва да се изпълни в работно дърво"
 
 msgid "Could not read the index"
-msgstr "Индексът не може да бъде прочетен"
+msgstr "Индексът не може да се прочете"
 
 #, c-format
 msgid "unknown mode for --show-object-format: %s"
@@ -12787,8 +12871,8 @@
 #, 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 @@
 
 #, 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 @@
 
 #, 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 @@
 "index“."
 
 msgid "could not save index tree"
-msgstr "дървото сочено от индекса не може да бъде запазено"
+msgstr "дървото сочено от индекса не може да се запази"
 
 #, c-format
 msgid "Merging %s with %s"
@@ -13140,7 +13224,7 @@
 
 #, 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 @@
 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 @@
 
 #, c-format
 msgid "Cannot update %s with %s"
-msgstr "Указателят „%s“ не може да бъде обновен да сочи към „%s“"
+msgstr "Указателят „%s“ не може да се обнови да сочи към „%s“"
 
 msgid "stash message"
 msgstr "съобщение при скатаване"
@@ -13184,19 +13268,19 @@
 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 @@
 msgstr "Скатаването не може да стартира"
 
 msgid "Cannot save the current status"
-msgstr "Текущото състояние не може да бъде запазено"
+msgstr "Текущото състояние не може да се запази"
 
 #, c-format
 msgid "Saved working directory and index state %s"
@@ -13329,7 +13413,7 @@
 
 #, 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 @@
 
 #, 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 @@
 #, 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 @@
 
 #, 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 @@
 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 @@
 
 #, 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 @@
 "изтриете вие.\n"
 
 msgid "unable to sign the tag"
-msgstr "етикетът не може да бъде подписан"
+msgstr "етикетът не може да се подпише"
 
 #, c-format
 msgid ""
@@ -14047,15 +14131,15 @@
 
 #, 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 @@
 msgstr "git update-index [ОПЦИЯ…] [--] [ФАЙЛ…]"
 
 msgid "continue refresh even when index needs update"
-msgstr ""
-"продължаване с обновяването, дори когато индексът трябва да бъде обновен"
+msgstr "продължаване с обновяването, дори когато индексът трябва да се обнови"
 
 msgid "refresh: ignore submodules"
 msgstr "подмодулите да се игнорират при обновяването"
@@ -14283,8 +14366,8 @@
 "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 @@
 msgid "read updates from stdin"
 msgstr "изчитане на указателите от стандартния вход"
 
+msgid "batch reference updates"
+msgstr "пакетно обновяване на указатели"
+
 msgid "update the info files from scratch"
 msgstr "обновяване на информационните файлове от нулата"
 
@@ -14458,7 +14544,7 @@
 
 #, c-format
 msgid "could not create directory of '%s'"
-msgstr "директорията „%s“ не може да бъде създадена"
+msgstr "директорията „%s“ не може да се създаде"
 
 msgid "initializing"
 msgstr "инициализация"
@@ -14616,8 +14702,7 @@
 
 #, 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 @@
 
 #, c-format
 msgid "validation failed, cannot remove working tree: %s"
-msgstr "проверките са неуспешни, работното дърво не може да бъде изтрито: %s"
+msgstr "проверките са неуспешни, работното дърво не може да се изтрие: %s"
 
 #, c-format
 msgid "repair: %s: %s"
@@ -14792,7 +14877,7 @@
 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 @@
 
 #, c-format
 msgid "cannot create '%s'"
-msgstr "файлът „%s“ не може да бъде създаден"
+msgstr "файлът „%s“ не може да се създаде"
 
 msgid "index-pack died"
 msgstr "командата „git index-pack“ не завърши успешно"
@@ -15001,6 +15086,9 @@
 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 @@
 
 #, 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 @@
 "правилният брой на идентификаторите в основния граф не може да се запише"
 
 msgid "unable to create temporary graph layer"
-msgstr "не може да бъде създаден временен слой за гра̀фа с подаванията"
+msgstr "не може да се създаде временен слой за гра̀фа с подаванията"
 
 #, c-format
 msgid "unable to adjust shared permissions for '%s'"
@@ -15619,10 +15707,10 @@
 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 @@
 
 #, 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 @@
 #, 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 @@
 
 #, 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 @@
 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 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, c-format
 msgid "could not lock config file %s"
-msgstr "конфигурационният файл „%s“ не може да бъде заключен"
+msgstr "конфигурационният файл „%s“ не може да се заключи"
 
 #, c-format
 msgid "opening %s"
@@ -16290,7 +16378,7 @@
 
 #, 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 @@
 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 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, c-format
 msgid "could not add directory '%s' to archiver"
-msgstr "директорията „%s“ не може да бъде добавена към архива"
+msgstr "директорията „%s“ не може да се добави към архива"
 
 msgid "failed to write archive"
 msgstr "неуспешен запис на архива"
@@ -16731,7 +16819,7 @@
 msgstr "опцията „--merge-base“ не работи с диапазони"
 
 msgid "unable to get HEAD"
-msgstr "Указателят „HEAD“ не може да бъде получен"
+msgstr "Указателят „HEAD“ не може да се получи"
 
 msgid "no merge base found"
 msgstr "липсва база за сливане"
@@ -16914,7 +17002,7 @@
 msgstr "файловете с разлики да са с контекст с такъв БРОЙ редове"
 
 msgid "generate the diff in raw format"
-msgstr "файловете с разлики да са в суров формат"
+msgstr "файловете с разлики да са в необработен формат"
 
 msgid "synonym for '-p --raw'"
 msgstr "псевдоним на „-p --raw“"
@@ -17266,7 +17354,7 @@
 
 #, c-format
 msgid "failed to read orderfile '%s'"
-msgstr "файлът с подредбата на съответствията „%s“ не може да бъде прочетен"
+msgstr "файлът с подредбата на съответствията „%s“ не може да се прочете"
 
 msgid "Performing inexact rename detection"
 msgstr "Търсене на преименувания на обекти съчетани с промѐни"
@@ -17311,7 +17399,7 @@
 "No directory name could be guessed.\n"
 "Please specify a directory on the command line"
 msgstr ""
-"Името на директорията не може да бъде отгатнато.\n"
+"Името на директорията не може да се отгатне.\n"
 "Задайте директорията изрично на командния ред"
 
 #, c-format
@@ -17523,7 +17611,7 @@
 #.
 #, 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 @@
 msgstr "git fetch-pack: очаква се пакет за край на отговора"
 
 msgid "no matching remote head"
-msgstr "не може да бъде открит подходящ връх от отдалеченото хранилище"
+msgstr "липсва подходящ връх от отдалеченото хранилище"
 
 msgid "unexpected 'ready' from remote"
 msgstr "неочаквано състояние за готовност от отдалечено хранилище"
@@ -17754,7 +17842,7 @@
 
 #, 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 @@
 
 #, c-format
 msgid "'%s': unable to read %s"
-msgstr "„%s“: файлът сочен от „%s“ не може да бъде прочетен"
+msgstr "„%s“: файлът сочен от „%s“ не може да се прочете"
 
 #, c-format
 msgid "'%s': short read"
@@ -17903,7 +17991,7 @@
 "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 @@
 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 @@
 #, 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 @@
 "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 @@
 
 #, 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 @@
 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 @@
 #, c-format
 msgid "Failed to merge submodule %s (commits don't follow merge-base)"
 msgstr ""
-"Подмодулът „%s“ не може да бъде слят (базата за сливане не предшества "
+"Подмодулът „%s“ не може да се слее (базата за сливане не предшества "
 "подаванията)"
 
 #, c-format
@@ -18433,292 +18528,23 @@
 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 @@
 
 #, 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 @@
 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 @@
 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 @@
 
 msgid "multi-pack-index file exists, but failed to parse"
 msgstr ""
-"файлът с индекса за множество пакети съществува, но не може да бъде "
-"анализиран"
+"файлът с индекса за множество пакети съществува, но не може да се анализира"
 
 msgid "incorrect checksum"
 msgstr "неправилна сума за проверка"
@@ -18959,11 +18783,11 @@
 
 #, 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 @@
 
 msgid "Cannot commit uninitialized/unreferenced notes tree"
 msgstr ""
-"Неинициализирано или нереферирано дърво за бележки не може да бъде подадено"
+"Неинициализирано или нереферирано дърво за бележки не може да се подаде"
 
 #, c-format
 msgid "Bad notes.rewriteMode value: '%s'"
@@ -19043,68 +18867,6 @@
 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 @@
 
 #, 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 @@
 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 @@
 
 #, 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 @@
 "няма права̀ за добавяне на обект към базата от данни на хранилището „%s“"
 
 msgid "unable to create temporary file"
-msgstr "не може да бъде създаден временен файл"
+msgstr "не може да се създаде временен файл"
 
 msgid "unable to write loose object file"
 msgstr "грешка при записа на файла с непакетиран обект"
@@ -19211,7 +18961,7 @@
 
 #, c-format
 msgid "unable to create directory %s"
-msgstr "директорията „%s“ не може да бъде създадена"
+msgstr "директорията „%s“ не може да се създаде"
 
 #, c-format
 msgid "cannot read object for %s"
@@ -19245,10 +18995,6 @@
 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 @@
 
 #, 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 @@
 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 @@
 
 #, c-format
 msgid "unable to parse object: %s"
-msgstr "обектът „%s“ не може да бъде анализиран"
+msgstr "обектът „%s“ не може да се анализира"
 
 #, c-format
 msgid "hash mismatch %s"
@@ -19603,7 +19423,7 @@
 
 #, 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 @@
 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 @@
 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 @@
 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 @@
 #, 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 @@
 
 #, c-format
 msgid "could not parse commit '%s'"
-msgstr "подаването „%s“ не може да бъде анализирано"
+msgstr "подаването „%s“ не може да се анализира"
 
 #, c-format
 msgid ""
@@ -20173,7 +20001,7 @@
 
 #, 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 @@
 #, 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 @@
 
 #, 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 @@
 msgstr "не може да се запише разделѐн, частичен индекс"
 
 msgid "failed to convert to a sparse-index"
-msgstr "индексът не може да бъде превърнат в частичен"
+msgstr "индексът не може да се превърне в частичен"
 
 #, c-format
 msgid "unable to open git dir: %s"
@@ -20438,7 +20266,7 @@
 "If you remove a line here THAT COMMIT WILL BE LOST.\n"
 msgstr ""
 "\n"
-"Ако изтриете ред, съответстващото му подаване ще бъде ИЗТРИТО.\n"
+"Ако изтриете ред, съответстващото му подаване ще се ИЗТРИЕ.\n"
 
 msgid ""
 "\n"
@@ -20460,7 +20288,7 @@
 "\n"
 msgstr ""
 "\n"
-"Ако изтриете всичко, пребазирането ще бъде преустановено.\n"
+"Ако изтриете всичко, пребазирането ще се преустанови.\n"
 "\n"
 
 #, c-format
@@ -20745,7 +20573,7 @@
 
 #, c-format
 msgid "could not retrieve `%s`"
-msgstr "„%s“ не може да бъде получен"
+msgstr "„%s“ не може да се получи"
 
 #, c-format
 msgid "invalid branch name: %s = %s"
@@ -20812,7 +20640,7 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, 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 @@
 #, 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 @@
 "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 @@
 
 #, 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 @@
 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 @@
 
 #, 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 @@
 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 @@
 
 #, 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 @@
 
 #, 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 @@
 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 @@
 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 @@
 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 @@
 
 #, 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 @@
 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 @@
 msgstr "scalar delete ЗАЧИСЛЕНА_ДИРЕКТОРИЯ"
 
 msgid "refusing to delete current working directory"
-msgstr "текущата работна директория няма да бъде изтрита"
+msgstr "текущата работна директория няма да се изтрие"
 
 msgid "include Git version"
 msgstr "включване и на версията на git"
@@ -21670,15 +21514,14 @@
 
 #, 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 @@
 
 #, c-format
 msgid "could not delete '%s'"
-msgstr "„%s“ не може да бъде изтрит"
+msgstr "„%s“ не може да се изтрие"
 
 msgid "revert"
 msgstr "отмяна"
@@ -21826,13 +21669,13 @@
 #.
 #, 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 @@
 
 #, 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 @@
 "    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 @@
 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 @@
 
 #, c-format
 msgid "could not parse parent commit %s"
-msgstr "родителското подаване „%s“ не може да бъде анализирано"
+msgstr "родителското подаване „%s“ не може да се анализира"
 
 #, c-format
 msgid "unknown command: %d"
@@ -22006,11 +21847,11 @@
 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 @@
 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 @@
 
 #, 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 @@
 #, 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 @@
 "    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 @@
 
 #, 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 @@
 
 #, c-format
 msgid "could not resolve '%s'"
-msgstr "„%s“ не може да бъде открит"
+msgstr "„%s“ липсва"
 
 msgid "writing fake root commit"
 msgstr "запазване на фалшиво начално подаване"
@@ -22364,14 +22203,14 @@
 
 #, 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 @@
 
 #, c-format
 msgid "Could not create directory for '%s'"
-msgstr "Директорията за „%s“ не може да бъде създадена"
+msgstr "Директорията за „%s“ не може да се създаде"
 
 #, c-format
 msgid "Created autostash: %s\n"
@@ -22420,7 +22259,7 @@
 
 #, c-format
 msgid "cannot store %s"
-msgstr "„%s“ не може да бъде запазен"
+msgstr "„%s“ не може да се запази"
 
 #, c-format
 msgid ""
@@ -22464,7 +22303,7 @@
 "    git rebase --edit-todo\n"
 "    git rebase --continue\n"
 msgstr ""
-"Следната запланувана команда не може да бъде изпълнена:\n"
+"Следната запланувана команда не може да се изпълни:\n"
 "\n"
 "    %.*s\n"
 "\n"
@@ -22495,7 +22334,7 @@
 
 #, 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 @@
 
 #, 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 @@
 msgstr "%s: неправилна версия"
 
 msgid "can't revert as initial commit"
-msgstr "първоначалното подаване не може да бъде отменено"
+msgstr "първоначалното подаване не може да се отмени"
 
 #, c-format
 msgid "skipped previously applied commit %s"
@@ -22676,7 +22515,7 @@
 
 #, 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 @@
 "    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 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, 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 @@
 
 #, 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 @@
 "какъв брой записи в кеша на обектите-дървета да се отбележат като невалидни "
 "(стандартно е 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 @@
 
 #, 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 @@
 "Perhaps you should specify a branch.\n"
 msgstr ""
 "Няма общи указатели, не са указани никакви указатели —\n"
-"нищо няма да бъде направено.  Пробвайте да укажете клон.\n"
+"нищо няма да се направи.  Пробвайте да укажете клон.\n"
 
 #, c-format
 msgid "unsupported object format '%s'"
@@ -23379,7 +23221,7 @@
 
 #, 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 @@
 "Refusing to remove the current working directory:\n"
 "%s"
 msgstr ""
-"Текущата работна директория няма да бъде изтрита:\n"
+"Текущата работна директория няма да се изтрие:\n"
 "%s"
 
 #, c-format
@@ -23640,7 +23482,7 @@
 "Cannot update submodule:\n"
 "%s"
 msgstr ""
-"Подмодулът не може да бъде обновен:\n"
+"Подмодулът не може да се обнови:\n"
 "„%s“"
 
 #, c-format
@@ -23815,7 +23657,7 @@
 
 #, 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 @@
 
 #, 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 @@
 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 @@
 "Everything below it will be ignored."
 msgstr ""
 "Не променяйте и не изтривайте горния ред.\n"
-"Всичко отдолу ще бъде изтрито."
+"Всичко отдолу ще се изтрие."
 
 #, c-format
 msgid ""
@@ -24639,8 +24490,15 @@
 "използвайте опцията: „--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 @@
 
 #, 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 @@
 
 #, 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 4d9c46f..6b65bb6 100644
--- a/po/de.po
+++ b/po/de.po
@@ -8,8 +8,8 @@
 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 @@
 "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 @@
 #, 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 @@
 #, 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "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 @@
 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 @@
 "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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "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 @@
 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 @@
 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 @@
 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 @@
 "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 @@
 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 @@
 "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 8e33390..7b5cc9b 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -87,8 +87,8 @@
 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 @@
 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 @@
 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 @@
 "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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "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 @@
 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 @@
 "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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "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 @@
 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 @@
 #~ 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 0000000..c03f637
--- /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 7d32c51..d318019 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,8 +7,8 @@
 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 @@
 #: 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 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 @@
 "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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "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 @@
 
 #: 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 @@
 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 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 @@
 "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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "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 @@
 "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 @@
 "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 @@
 "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 @@
 "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 @@
 "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 @@
 "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 @@
 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 @@
 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 @@
 
 #: 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 @@
 
 #: 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 @@
 
 #: 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 @@
 
 #: 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 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 @@
 
 #: 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 4ed91cb..9f5edc1 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -96,8 +96,8 @@
 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 @@
 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 @@
 "             [--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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "<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 @@
 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 @@
 "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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "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 39c2228..5ae839f 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -8,8 +8,8 @@
 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 @@
 "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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 msgid "show verbose names for reachable objects"
 msgstr "показувати докладні назви для доступних об’єктів"
 
+msgid "check reference database consistency"
+msgstr "перевірити базу даних посилань"
+
 msgid "Checking objects"
 msgstr "Перевірка обʼєктів"
 
@@ -7748,10 +7798,6 @@
 "простежити еволюцію діапазону рядків <початок>,<кінець> або функції :<назва-"
 "функції> в <файлі>"
 
-#, c-format
-msgid "unrecognized argument: %s"
-msgstr "нерозпізнаний аргумент: %s"
-
 msgid "-L<range>:<file> cannot be used with pathspec"
 msgstr "-L<діапазон>:<файл> не можна використовувати з визначником шляху"
 
@@ -8408,6 +8454,9 @@
 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 @@
 "під час перепакування збирати пакувальні файли меншого розміру в партію, "
 "більшу за цей розмір"
 
-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 @@
 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 @@
 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 @@
 "\n"
 "а потім виконайте надсилання, використовуючи назву віддаленого сховища\n"
 "\n"
-"    git push <ім'я>\n"
+"    git push <імʼя>\n"
 
 msgid "--all can't be combined with refspecs"
 msgstr "--all не можна комбінувати з визначниками посилань"
@@ -10792,6 +10853,9 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 msgid "read updates from stdin"
 msgstr "читати оновлення з stdin"
 
+msgid "batch reference updates"
+msgstr "пакетне оновлення посилань"
+
 msgid "update the info files from scratch"
 msgstr "оновити інформаційні файли з чистого аркуша"
 
@@ -14475,6 +14557,9 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 msgstr "Перевірка співпадіння посилань"
 
 #, c-format
+msgid "unable to open '%s'"
+msgstr "не вдалося відкрити \"%s\""
+
+#, c-format
 msgid "refname is dangerous: %s"
 msgstr "refname є небезпечним: %s"
 
@@ -20201,10 +20044,6 @@
 "назва посилання %s є символьним посиланням, копіювання якого не підтримується"
 
 #, c-format
-msgid "invalid refspec '%s'"
-msgstr "неприпустимий визначник посилання \"%s\""
-
-#, c-format
 msgid "pattern '%s' has no '*'"
 msgstr "шаблон \"%s\" не має \"*\""
 
@@ -20360,7 +20199,7 @@
 
 #, 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "скористайтесь --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 5cde401..139ae33 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -155,8 +155,8 @@
 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 @@
 #: 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 #: 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 @@
 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 @@
 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 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 @@
 "<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 @@
 #: builtin/log.c
 #, c-format
 msgid "could not read object %s"
-msgstr "不能读取对象 %s"
+msgstr "无法读取对象 %s"
 
 #: builtin/log.c
 #, c-format
@@ -10420,6 +10480,10 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 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 @@
 "冲突(隐式目录重命名):处于隐式目录重命名的现存文件/目录 %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 @@
 "冲突(分割的目录重命名):不清楚重命名 %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 @@
 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 @@
 "路径已更新:%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 @@
 "冲突(文件位置):%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 @@
 "冲突(不同类型):%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 @@
 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 @@
 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 @@
 
 #: 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 @@
 
 #: 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 @@
 
 #: 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 @@
 
 #: 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 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 @@
 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 @@
 
 #: 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 @@
 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 @@
 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 @@
 
 #: 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/prune-packed.c b/prune-packed.c
index c1d95a5..92fb4fb 100644
--- a/prune-packed.c
+++ b/prune-packed.c
@@ -2,7 +2,7 @@
 
 #include "git-compat-util.h"
 #include "gettext.h"
-#include "object-store.h"
+#include "object-file.h"
 #include "packfile.h"
 #include "progress.h"
 #include "prune-packed.h"
diff --git a/reachable.c b/reachable.c
index e5f56f4..9dc748f 100644
--- a/reachable.c
+++ b/reachable.c
@@ -14,7 +14,7 @@
 #include "list-objects.h"
 #include "packfile.h"
 #include "worktree.h"
-#include "object-store.h"
+#include "object-file.h"
 #include "pack-bitmap.h"
 #include "pack-mtimes.h"
 #include "config.h"
diff --git a/read-cache.c b/read-cache.c
index 73f83a7..c0bb760 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1117,48 +1117,19 @@ static int has_dir_name(struct index_state *istate,
 	 *
 	 * Compare the entry's full path with the last path in the index.
 	 */
-	if (istate->cache_nr > 0) {
-		cmp_last = strcmp_offset(name,
-			istate->cache[istate->cache_nr - 1]->name,
-			&len_eq_last);
-		if (cmp_last > 0) {
-			if (name[len_eq_last] != '/') {
-				/*
-				 * The entry sorts AFTER the last one in the
-				 * index.
-				 *
-				 * If there were a conflict with "file", then our
-				 * name would start with "file/" and the last index
-				 * entry would start with "file" but not "file/".
-				 *
-				 * The next character after common prefix is
-				 * not '/', so there can be no conflict.
-				 */
-				return retval;
-			} else {
-				/*
-				 * The entry sorts AFTER the last one in the
-				 * index, and the next character after common
-				 * prefix is '/'.
-				 *
-				 * Either the last index entry is a file in
-				 * conflict with this entry, or it has a name
-				 * which sorts between this entry and the
-				 * potential conflicting file.
-				 *
-				 * In both cases, we fall through to the loop
-				 * below and let the regular search code handle it.
-				 */
-			}
-		} else if (cmp_last == 0) {
-			/*
-			 * The entry exactly matches the last one in the
-			 * index, but because of multiple stage and CE_REMOVE
-			 * items, we fall through and let the regular search
-			 * code handle it.
-			 */
-		}
-	}
+	if (!istate->cache_nr)
+		return 0;
+
+	cmp_last = strcmp_offset(name,
+				 istate->cache[istate->cache_nr - 1]->name,
+				 &len_eq_last);
+	if (cmp_last > 0 && name[len_eq_last] != '/')
+		/*
+		 * The entry sorts AFTER the last one in the
+		 * index and their paths have no common prefix,
+		 * so there cannot be a F/D conflict.
+		 */
+		return 0;
 
 	for (;;) {
 		size_t len;
diff --git a/reflog.c b/reflog.c
index 12f7a02..15d81eb 100644
--- a/reflog.c
+++ b/reflog.c
@@ -152,7 +152,8 @@ static int tree_is_complete(const struct object_id *oid)
 	init_tree_desc(&desc, &tree->object.oid, tree->buffer, tree->size);
 	complete = 1;
 	while (tree_entry(&desc, &entry)) {
-		if (!repo_has_object_file(the_repository, &entry.oid) ||
+		if (!has_object(the_repository, &entry.oid,
+				HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR) ||
 		    (S_ISDIR(entry.mode) && !tree_is_complete(&entry.oid))) {
 			tree->object.flags |= INCOMPLETE;
 			complete = 0;
diff --git a/refs.c b/refs.c
index 6559db3..dce5c49 100644
--- a/refs.c
+++ b/refs.c
@@ -376,7 +376,7 @@ int ref_resolves_to_object(const char *refname,
 {
 	if (flags & REF_ISBROKEN)
 		return 0;
-	if (!repo_has_object_file(repo, oid)) {
+	if (!has_object(repo, oid, HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR)) {
 		error(_("%s does not point to a valid object!"), refname);
 		return 0;
 	}
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 4d1f65a..bf6f89b 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -3762,6 +3762,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/refs/packed-backend.c b/refs/packed-backend.c
index 3ad1ed0..7fd73a0 100644
--- a/refs/packed-backend.c
+++ b/refs/packed-backend.c
@@ -517,6 +517,32 @@ static int refname_contains_nul(struct strbuf *refname)
 
 #define SMALL_FILE_SIZE (32*1024)
 
+static int allocate_snapshot_buffer(struct snapshot *snapshot, int fd, struct stat *st)
+{
+	ssize_t bytes_read;
+	size_t size;
+
+	size = xsize_t(st->st_size);
+	if (!size)
+		return 0;
+
+	if (mmap_strategy == MMAP_NONE || size <= SMALL_FILE_SIZE) {
+		snapshot->buf = xmalloc(size);
+		bytes_read = read_in_full(fd, snapshot->buf, size);
+		if (bytes_read < 0 || bytes_read != size)
+			die_errno("couldn't read %s", snapshot->refs->path);
+		snapshot->mmapped = 0;
+	} else {
+		snapshot->buf = xmmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
+		snapshot->mmapped = 1;
+	}
+
+	snapshot->start = snapshot->buf;
+	snapshot->eof = snapshot->buf + size;
+
+	return 1;
+}
+
 /*
  * Depending on `mmap_strategy`, either mmap or read the contents of
  * the `packed-refs` file into the snapshot. Return 1 if the file
@@ -525,10 +551,9 @@ static int refname_contains_nul(struct strbuf *refname)
  */
 static int load_contents(struct snapshot *snapshot)
 {
-	int fd;
 	struct stat st;
-	size_t size;
-	ssize_t bytes_read;
+	int ret;
+	int fd;
 
 	fd = open(snapshot->refs->path, O_RDONLY);
 	if (fd < 0) {
@@ -550,27 +575,11 @@ static int load_contents(struct snapshot *snapshot)
 
 	if (fstat(fd, &st) < 0)
 		die_errno("couldn't stat %s", snapshot->refs->path);
-	size = xsize_t(st.st_size);
 
-	if (!size) {
-		close(fd);
-		return 0;
-	} else if (mmap_strategy == MMAP_NONE || size <= SMALL_FILE_SIZE) {
-		snapshot->buf = xmalloc(size);
-		bytes_read = read_in_full(fd, snapshot->buf, size);
-		if (bytes_read < 0 || bytes_read != size)
-			die_errno("couldn't read %s", snapshot->refs->path);
-		snapshot->mmapped = 0;
-	} else {
-		snapshot->buf = xmmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
-		snapshot->mmapped = 1;
-	}
+	ret = allocate_snapshot_buffer(snapshot, fd, &st);
+
 	close(fd);
-
-	snapshot->start = snapshot->buf;
-	snapshot->eof = snapshot->buf + size;
-
-	return 1;
+	return ret;
 }
 
 static const char *find_reference_location_1(struct snapshot *snapshot,
@@ -2059,7 +2068,7 @@ static int packed_fsck(struct ref_store *ref_store,
 {
 	struct packed_ref_store *refs = packed_downcast(ref_store,
 							REF_STORE_READ, "fsck");
-	struct strbuf packed_ref_content = STRBUF_INIT;
+	struct snapshot snapshot = { 0 };
 	unsigned int sorted = 0;
 	struct stat st;
 	int ret = 0;
@@ -2103,21 +2112,25 @@ static int packed_fsck(struct ref_store *ref_store,
 		goto cleanup;
 	}
 
-	if (strbuf_read(&packed_ref_content, fd, 0) < 0) {
-		ret = error_errno(_("unable to read '%s'"), refs->path);
+	if (!allocate_snapshot_buffer(&snapshot, fd, &st)) {
+		struct fsck_ref_report report = { 0 };
+		report.path = "packed-refs";
+		ret = fsck_report_ref(o, &report,
+				      FSCK_MSG_EMPTY_PACKED_REFS_FILE,
+				      "file is empty");
 		goto cleanup;
 	}
 
-	ret = packed_fsck_ref_content(o, ref_store, &sorted, packed_ref_content.buf,
-				      packed_ref_content.buf + packed_ref_content.len);
+	ret = packed_fsck_ref_content(o, ref_store, &sorted, snapshot.start,
+				      snapshot.eof);
 	if (!ret && sorted)
-		ret = packed_fsck_ref_sorted(o, ref_store, packed_ref_content.buf,
-					     packed_ref_content.buf + packed_ref_content.len);
+		ret = packed_fsck_ref_sorted(o, ref_store, snapshot.start,
+					     snapshot.eof);
 
 cleanup:
 	if (fd >= 0)
 		close(fd);
-	strbuf_release(&packed_ref_content);
+	clear_snapshot_buffer(&snapshot);
 	return ret;
 }
 
diff --git a/reftable/basics.c b/reftable/basics.c
index 8c4a443..9988ebd 100644
--- a/reftable/basics.c
+++ b/reftable/basics.c
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #define REFTABLE_ALLOW_BANNED_ALLOCATORS
 #include "basics.h"
diff --git a/reftable/basics.h b/reftable/basics.h
index fd59cbb..7d22f96 100644
--- a/reftable/basics.h
+++ b/reftable/basics.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef BASICS_H
 #define BASICS_H
@@ -16,14 +16,11 @@ license that can be found in the LICENSE file or at
 #include "system.h"
 #include "reftable-basics.h"
 
+#ifdef __GNUC__
 #define REFTABLE_UNUSED __attribute__((__unused__))
-
-struct reftable_buf {
-	size_t alloc;
-	size_t len;
-	char *buf;
-};
-#define REFTABLE_BUF_INIT { 0 }
+#else
+#define REFTABLE_UNUSED
+#endif
 
 /*
  * Initialize the buffer such that it is ready for use. This is equivalent to
diff --git a/reftable/block.c b/reftable/block.c
index 251a8e9..920b3f4 100644
--- a/reftable/block.c
+++ b/reftable/block.c
@@ -1,15 +1,16 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #include "block.h"
 
 #include "blocksource.h"
 #include "constants.h"
+#include "iter.h"
 #include "record.h"
 #include "reftable-error.h"
 #include "system.h"
@@ -160,7 +161,7 @@ int block_writer_finish(struct block_writer *w)
 	 * Log records are stored zlib-compressed. Note that the compression
 	 * also spans over the restart points we have just written.
 	 */
-	if (block_writer_type(w) == BLOCK_TYPE_LOG) {
+	if (block_writer_type(w) == REFTABLE_BLOCK_TYPE_LOG) {
 		int block_header_skip = 4 + w->header_off;
 		uLongf src_len = w->next - block_header_skip, compressed_len;
 		int ret;
@@ -210,61 +211,91 @@ int block_writer_finish(struct block_writer *w)
 	return w->next;
 }
 
-int block_reader_init(struct block_reader *br, struct reftable_block *block,
-		      uint32_t header_off, uint32_t table_block_size,
-		      uint32_t hash_size)
+static int read_block(struct reftable_block_source *source,
+		      struct reftable_block_data *dest, uint64_t off,
+		      uint32_t sz)
 {
+	size_t size = block_source_size(source);
+	block_source_release_data(dest);
+	if (off >= size)
+		return 0;
+	if (off + sz > size)
+		sz = size - off;
+	return block_source_read_data(source, dest, off, sz);
+}
+
+int reftable_block_init(struct reftable_block *block,
+			struct reftable_block_source *source,
+			uint32_t offset, uint32_t header_size,
+			uint32_t table_block_size, uint32_t hash_size,
+			uint8_t want_type)
+{
+	uint32_t guess_block_size = table_block_size ?
+		table_block_size : DEFAULT_BLOCK_SIZE;
 	uint32_t full_block_size = table_block_size;
-	uint8_t typ = block->data[header_off];
-	uint32_t sz = reftable_get_be24(block->data + header_off + 1);
-	int err = 0;
-	uint16_t restart_count = 0;
-	uint32_t restart_start = 0;
-	uint8_t *restart_bytes = NULL;
+	uint16_t restart_count;
+	uint32_t restart_off;
+	uint32_t block_size;
+	uint8_t block_type;
+	int err;
 
-	reftable_block_done(&br->block);
+	err = read_block(source, &block->block_data, offset, guess_block_size);
+	if (err < 0)
+		goto done;
 
-	if (!reftable_is_block_type(typ)) {
-		err =  REFTABLE_FORMAT_ERROR;
+	block_type = block->block_data.data[header_size];
+	if (!reftable_is_block_type(block_type)) {
+		err = REFTABLE_FORMAT_ERROR;
+		goto done;
+	}
+	if (want_type != REFTABLE_BLOCK_TYPE_ANY && block_type != want_type) {
+		err = 1;
 		goto done;
 	}
 
-	if (typ == BLOCK_TYPE_LOG) {
-		uint32_t block_header_skip = 4 + header_off;
-		uLong dst_len = sz - block_header_skip;
-		uLong src_len = block->len - block_header_skip;
+	block_size = reftable_get_be24(block->block_data.data + header_size + 1);
+	if (block_size > guess_block_size) {
+		err = read_block(source, &block->block_data, offset, block_size);
+		if (err < 0)
+			goto done;
+	}
+
+	if (block_type == REFTABLE_BLOCK_TYPE_LOG) {
+		uint32_t block_header_skip = 4 + header_size;
+		uLong dst_len = block_size - block_header_skip;
+		uLong src_len = block->block_data.len - block_header_skip;
 
 		/* Log blocks specify the *uncompressed* size in their header. */
-		REFTABLE_ALLOC_GROW_OR_NULL(br->uncompressed_data, sz,
-					    br->uncompressed_cap);
-		if (!br->uncompressed_data) {
+		REFTABLE_ALLOC_GROW_OR_NULL(block->uncompressed_data, block_size,
+					    block->uncompressed_cap);
+		if (!block->uncompressed_data) {
 			err = REFTABLE_OUT_OF_MEMORY_ERROR;
 			goto done;
 		}
 
 		/* Copy over the block header verbatim. It's not compressed. */
-		memcpy(br->uncompressed_data, block->data, block_header_skip);
+		memcpy(block->uncompressed_data, block->block_data.data, block_header_skip);
 
-		if (!br->zstream) {
-			REFTABLE_CALLOC_ARRAY(br->zstream, 1);
-			if (!br->zstream) {
+		if (!block->zstream) {
+			REFTABLE_CALLOC_ARRAY(block->zstream, 1);
+			if (!block->zstream) {
 				err = REFTABLE_OUT_OF_MEMORY_ERROR;
 				goto done;
 			}
 
-			err = inflateInit(br->zstream);
+			err = inflateInit(block->zstream);
 		} else {
-			err = inflateReset(br->zstream);
+			err = inflateReset(block->zstream);
 		}
 		if (err != Z_OK) {
 			err = REFTABLE_ZLIB_ERROR;
 			goto done;
 		}
 
-		br->zstream->next_in = block->data + block_header_skip;
-		br->zstream->avail_in = src_len;
-		br->zstream->next_out = br->uncompressed_data + block_header_skip;
-		br->zstream->avail_out = dst_len;
+		block->zstream->next_in = block->block_data.data + block_header_skip;
+		block->zstream->avail_in = src_len;
+		block->zstream->next_out = block->uncompressed_data + block_header_skip;
+		block->zstream->avail_out = dst_len;
 
 		/*
 		 * We know both input as well as output size, and we know that
@@ -273,72 +304,71 @@ int block_reader_init(struct block_reader *br, struct reftable_block *block,
 		 * here to instruct zlib to inflate the data in one go, which
 		 * is more efficient than using `Z_NO_FLUSH`.
 		 */
-		err = inflate(br->zstream, Z_FINISH);
+		err = inflate(block->zstream, Z_FINISH);
 		if (err != Z_STREAM_END) {
 			err = REFTABLE_ZLIB_ERROR;
 			goto done;
 		}
 		err = 0;
 
-		if (br->zstream->total_out + block_header_skip != sz) {
+		if (block->zstream->total_out + block_header_skip != block_size) {
 			err = REFTABLE_FORMAT_ERROR;
 			goto done;
 		}
 
 		/* We're done with the input data. */
-		reftable_block_done(block);
-		block->data = br->uncompressed_data;
-		block->len = sz;
-		full_block_size = src_len + block_header_skip - br->zstream->avail_in;
+		block_source_release_data(&block->block_data);
+		block->block_data.data = block->uncompressed_data;
+		block->block_data.len = block_size;
+		full_block_size = src_len + block_header_skip - block->zstream->avail_in;
 	} else if (full_block_size == 0) {
-		full_block_size = sz;
-	} else if (sz < full_block_size && sz < block->len &&
-		   block->data[sz] != 0) {
+		full_block_size = block_size;
+	} else if (block_size < full_block_size && block_size < block->block_data.len &&
+		   block->block_data.data[block_size] != 0) {
 		/* If the block is smaller than the full block size, it is
 		   padded (data followed by '\0') or the next block is
 		   unaligned. */
-		full_block_size = sz;
+		full_block_size = block_size;
 	}
 
-	restart_count = reftable_get_be16(block->data + sz - 2);
-	restart_start = sz - 2 - 3 * restart_count;
-	restart_bytes = block->data + restart_start;
+	restart_count = reftable_get_be16(block->block_data.data + block_size - 2);
+	restart_off = block_size - 2 - 3 * restart_count;
 
-	/* transfer ownership. */
-	br->block = *block;
-	block->data = NULL;
-	block->len = 0;
+	block->block_type = block_type;
+	block->hash_size = hash_size;
+	block->restart_off = restart_off;
+	block->full_block_size = full_block_size;
+	block->header_off = header_size;
+	block->restart_count = restart_count;
 
-	br->hash_size = hash_size;
-	br->block_len = restart_start;
-	br->full_block_size = full_block_size;
-	br->header_off = header_off;
-	br->restart_count = restart_count;
-	br->restart_bytes = restart_bytes;
+	err = 0;
 
 done:
+	if (err < 0)
+		reftable_block_release(block);
 	return err;
 }
 
-void block_reader_release(struct block_reader *br)
+void reftable_block_release(struct reftable_block *block)
 {
-	inflateEnd(br->zstream);
-	reftable_free(br->zstream);
-	reftable_free(br->uncompressed_data);
-	reftable_block_done(&br->block);
+	inflateEnd(block->zstream);
+	reftable_free(block->zstream);
+	reftable_free(block->uncompressed_data);
+	block_source_release_data(&block->block_data);
+	memset(block, 0, sizeof(*block));
 }
 
-uint8_t block_reader_type(const struct block_reader *r)
+uint8_t reftable_block_type(const struct reftable_block *b)
 {
-	return r->block.data[r->header_off];
+	return b->block_data.data[b->header_off];
 }
 
-int block_reader_first_key(const struct block_reader *br, struct reftable_buf *key)
+int reftable_block_first_key(const struct reftable_block *block, struct reftable_buf *key)
 {
-	int off = br->header_off + 4, n;
+	int off = block->header_off + 4, n;
 	struct string_view in = {
-		.buf = br->block.data + off,
-		.len = br->block_len - off,
+		.buf = block->block_data.data + off,
+		.len = block->restart_off - off,
 	};
 	uint8_t extra = 0;
 
@@ -353,33 +383,36 @@ int block_reader_first_key(const struct block_reader *br, struct reftable_buf *k
 	return 0;
 }
 
-static uint32_t block_reader_restart_offset(const struct block_reader *br, size_t idx)
+static uint32_t block_restart_offset(const struct reftable_block *b, size_t idx)
 {
-	return reftable_get_be24(br->restart_bytes + 3 * idx);
+	return reftable_get_be24(b->block_data.data + b->restart_off + 3 * idx);
 }
 
-void block_iter_seek_start(struct block_iter *it, const struct block_reader *br)
+void block_iter_init(struct block_iter *it, const struct reftable_block *block)
 {
-	it->block = br->block.data;
-	it->block_len = br->block_len;
-	it->hash_size = br->hash_size;
+	it->block = block;
+	block_iter_seek_start(it);
+}
+
+void block_iter_seek_start(struct block_iter *it)
+{
 	reftable_buf_reset(&it->last_key);
-	it->next_off = br->header_off + 4;
+	it->next_off = it->block->header_off + 4;
 }
 
 struct restart_needle_less_args {
 	int error;
 	struct reftable_buf needle;
-	const struct block_reader *reader;
+	const struct reftable_block *block;
 };
 
 static int restart_needle_less(size_t idx, void *_args)
 {
 	struct restart_needle_less_args *args = _args;
-	uint32_t off = block_reader_restart_offset(args->reader, idx);
+	uint32_t off = block_restart_offset(args->block, idx);
 	struct string_view in = {
-		.buf = args->reader->block.data + off,
-		.len = args->reader->block_len - off,
+		.buf = args->block->block_data.data + off,
+		.len = args->block->restart_off - off,
 	};
 	uint64_t prefix_len, suffix_len;
 	uint8_t extra;
@@ -412,14 +445,14 @@ static int restart_needle_less(size_t idx, void *_args)
 int block_iter_next(struct block_iter *it, struct reftable_record *rec)
 {
 	struct string_view in = {
-		.buf = (unsigned char *) it->block + it->next_off,
-		.len = it->block_len - it->next_off,
+		.buf = (unsigned char *) it->block->block_data.data + it->next_off,
+		.len = it->block->restart_off - it->next_off,
 	};
 	struct string_view start = in;
 	uint8_t extra = 0;
 	int n = 0;
 
-	if (it->next_off >= it->block_len)
+	if (it->next_off >= it->block->restart_off)
 		return 1;
 
 	n = reftable_decode_key(&it->last_key, &extra, in);
@@ -429,7 +462,7 @@ int block_iter_next(struct block_iter *it, struct reftable_record *rec)
 		return REFTABLE_FORMAT_ERROR;
 
 	string_view_consume(&in, n);
-	n = reftable_record_decode(rec, it->last_key, extra, in, it->hash_size,
+	n = reftable_record_decode(rec, it->last_key, extra, in, it->block->hash_size,
 				   &it->scratch);
 	if (n < 0)
 		return -1;
@@ -444,8 +477,6 @@ void block_iter_reset(struct block_iter *it)
 	reftable_buf_reset(&it->last_key);
 	it->next_off = 0;
 	it->block = NULL;
-	it->block_len = 0;
-	it->hash_size = 0;
 }
 
 void block_iter_close(struct block_iter *it)
@@ -454,12 +485,11 @@ void block_iter_close(struct block_iter *it)
 	reftable_buf_release(&it->scratch);
 }
 
-int block_iter_seek_key(struct block_iter *it, const struct block_reader *br,
-			struct reftable_buf *want)
+int block_iter_seek_key(struct block_iter *it, struct reftable_buf *want)
 {
 	struct restart_needle_less_args args = {
 		.needle = *want,
-		.reader = br,
+		.block = it->block,
 	};
 	struct reftable_record rec;
 	int err = 0;
@@ -477,7 +507,7 @@ int block_iter_seek_key(struct block_iter *it, const struct block_reader *br,
 	 * restart point. While that works alright, we would end up scanning
 	 * too many record.
 	 */
-	i = binsearch(br->restart_count, &restart_needle_less, &args);
+	i = binsearch(it->block->restart_count, &restart_needle_less, &args);
 	if (args.error) {
 		err = REFTABLE_FORMAT_ERROR;
 		goto done;
@@ -502,21 +532,18 @@ int block_iter_seek_key(struct block_iter *it, const struct block_reader *br,
 	 *     starting from the preceding restart point.
 	 */
 	if (i > 0)
-		it->next_off = block_reader_restart_offset(br, i - 1);
+		it->next_off = block_restart_offset(it->block, i - 1);
 	else
-		it->next_off = br->header_off + 4;
-	it->block = br->block.data;
-	it->block_len = br->block_len;
-	it->hash_size = br->hash_size;
+		it->next_off = it->block->header_off + 4;
 
-	err = reftable_record_init(&rec, block_reader_type(br));
+	err = reftable_record_init(&rec, reftable_block_type(it->block));
 	if (err < 0)
 		goto done;
 
 	/*
 	 * We're looking for the last entry less than the wanted key so that
 	 * the next call to `block_reader_next()` would yield the wanted
-	 * record. We thus don't want to position our reader at the sought
+	 * record. We thus don't want to position our iterator at the sought
 	 * after record, but one before. To do so, we have to go one entry too
 	 * far and then back up.
 	 */
@@ -561,6 +588,61 @@ int block_iter_seek_key(struct block_iter *it, const struct block_reader *br,
 	return err;
 }
 
+static int block_iter_seek_void(void *it, struct reftable_record *want)
+{
+	struct reftable_buf buf = REFTABLE_BUF_INIT;
+	struct block_iter *bi = it;
+	int err;
+
+	if (bi->block->block_type != want->type)
+		return REFTABLE_API_ERROR;
+
+	err = reftable_record_key(want, &buf);
+	if (err < 0)
+		goto out;
+
+	err = block_iter_seek_key(it, &buf);
+	if (err < 0)
+		goto out;
+
+	err = 0;
+
+out:
+	reftable_buf_release(&buf);
+	return err;
+}
+
+static int block_iter_next_void(void *it, struct reftable_record *rec)
+{
+	return block_iter_next(it, rec);
+}
+
+static void block_iter_close_void(void *it)
+{
+	block_iter_close(it);
+}
+
+static struct reftable_iterator_vtable block_iter_vtable = {
+	.seek = &block_iter_seek_void,
+	.next = &block_iter_next_void,
+	.close = &block_iter_close_void,
+};
+
+int reftable_block_init_iterator(const struct reftable_block *b,
+				 struct reftable_iterator *it)
+{
+	struct block_iter *bi;
+
+	REFTABLE_CALLOC_ARRAY(bi, 1);
+	block_iter_init(bi, b);
+
+	assert(!it->ops);
+	it->iter_arg = bi;
+	it->ops = &block_iter_vtable;
+
+	return 0;
+}
+
 void block_writer_release(struct block_writer *bw)
 {
 	deflateEnd(bw->zstream);
@@ -571,14 +653,3 @@ void block_writer_release(struct block_writer *bw)
 	reftable_buf_release(&bw->last_key);
 	/* the block is not owned. */
 }
-
-void reftable_block_done(struct reftable_block *blockp)
-{
-	struct reftable_block_source source = blockp->source;
-	if (blockp && source.ops)
-		source.ops->return_block(source.arg, blockp);
-	blockp->data = NULL;
-	blockp->len = 0;
-	blockp->source.ops = NULL;
-	blockp->source.arg = NULL;
-}
diff --git a/reftable/block.h b/reftable/block.h
index 64732eb..d6dfaae 100644
--- a/reftable/block.h
+++ b/reftable/block.h
@@ -1,16 +1,17 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef BLOCK_H
 #define BLOCK_H
 
 #include "basics.h"
 #include "record.h"
+#include "reftable-block.h"
 #include "reftable-blocksource.h"
 
 /*
@@ -18,7 +19,7 @@ license that can be found in the LICENSE file or at
  * allocation overhead.
  */
 struct block_writer {
-	z_stream *zstream;
+	struct z_stream_s *zstream;
 	unsigned char *compressed;
 	size_t compressed_cap;
 
@@ -62,53 +63,11 @@ int block_writer_finish(struct block_writer *w);
 /* clears out internally allocated block_writer members. */
 void block_writer_release(struct block_writer *bw);
 
-struct z_stream;
-
-/* Read a block. */
-struct block_reader {
-	/* offset of the block header; nonzero for the first block in a
-	 * reftable. */
-	uint32_t header_off;
-
-	/* the memory block */
-	struct reftable_block block;
-	uint32_t hash_size;
-
-	/* Uncompressed data for log entries. */
-	z_stream *zstream;
-	unsigned char *uncompressed_data;
-	size_t uncompressed_cap;
-
-	/* size of the data, excluding restart data. */
-	uint32_t block_len;
-	uint8_t *restart_bytes;
-	uint16_t restart_count;
-
-	/* size of the data in the file. For log blocks, this is the compressed
-	 * size. */
-	uint32_t full_block_size;
-};
-
-/* initializes a block reader. */
-int block_reader_init(struct block_reader *br, struct reftable_block *bl,
-		      uint32_t header_off, uint32_t table_block_size,
-		      uint32_t hash_size);
-
-void block_reader_release(struct block_reader *br);
-
-/* Returns the block type (eg. 'r' for refs) */
-uint8_t block_reader_type(const struct block_reader *r);
-
-/* Decodes the first key in the block */
-int block_reader_first_key(const struct block_reader *br, struct reftable_buf *key);
-
-/* Iterate over entries in a block */
+/* Iterator for records contained in a single block. */
 struct block_iter {
 	/* offset within the block of the next entry to read. */
 	uint32_t next_off;
-	const unsigned char *block;
-	size_t block_len;
-	uint32_t hash_size;
+	const struct reftable_block *block;
 
 	/* key for last entry we read. */
 	struct reftable_buf last_key;
@@ -120,12 +79,23 @@ struct block_iter {
 	.scratch = REFTABLE_BUF_INIT, \
 }
 
-/* Position `it` at start of the block */
-void block_iter_seek_start(struct block_iter *it, const struct block_reader *br);
+/*
+ * Initialize the block iterator with the given block. The iterator will be
+ * positioned at the first record contained in the block. The block must remain
+ * valid until the end of the iterator's lifetime. It is valid to re-initialize
+ * iterators multiple times.
+ */
+void block_iter_init(struct block_iter *it, const struct reftable_block *block);
 
-/* Position `it` to the `want` key in the block */
-int block_iter_seek_key(struct block_iter *it, const struct block_reader *br,
-			struct reftable_buf *want);
+/* Position the initialized iterator at the first record of its block. */
+void block_iter_seek_start(struct block_iter *it);
+
+/*
+ * Position the initialized iterator at the desired record key. It is not an
+ * error in case the record cannot be found. If so, a subsequent call to
+ * `block_iter_next()` will indicate that the iterator is exhausted.
+ */
+int block_iter_seek_key(struct block_iter *it, struct reftable_buf *want);
 
 /* return < 0 for error, 0 for OK, > 0 for EOF. */
 int block_iter_next(struct block_iter *it, struct reftable_record *rec);
@@ -142,7 +112,4 @@ size_t header_size(int version);
 /* size of file footer, depending on format version */
 size_t footer_size(int version);
 
-/* returns a block to its source. */
-void reftable_block_done(struct reftable_block *ret);
-
 #endif
diff --git a/reftable/blocksource.c b/reftable/blocksource.c
index 78c1be2..573c812 100644
--- a/reftable/blocksource.c
+++ b/reftable/blocksource.c
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #include "system.h"
 
@@ -13,7 +13,42 @@ license that can be found in the LICENSE file or at
 #include "reftable-blocksource.h"
 #include "reftable-error.h"
 
-static void reftable_buf_return_block(void *b REFTABLE_UNUSED, struct reftable_block *dest)
+void block_source_release_data(struct reftable_block_data *data)
+{
+	struct reftable_block_source source = data->source;
+	if (data && source.ops)
+		source.ops->release_data(source.arg, data);
+	data->data = NULL;
+	data->len = 0;
+	data->source.ops = NULL;
+	data->source.arg = NULL;
+}
+
+void block_source_close(struct reftable_block_source *source)
+{
+	if (!source->ops) {
+		return;
+	}
+
+	source->ops->close(source->arg);
+	source->ops = NULL;
+}
+
+ssize_t block_source_read_data(struct reftable_block_source *source,
+			       struct reftable_block_data *dest, uint64_t off,
+			       uint32_t size)
+{
+	ssize_t result = source->ops->read_data(source->arg, dest, off, size);
+	dest->source = *source;
+	return result;
+}
+
+uint64_t block_source_size(struct reftable_block_source *source)
+{
+	return source->ops->size(source->arg);
+}
+
+static void reftable_buf_release_data(void *b REFTABLE_UNUSED, struct reftable_block_data *dest)
 {
 	if (dest->len)
 		memset(dest->data, 0xff, dest->len);
@@ -24,8 +59,8 @@ static void reftable_buf_close(void *b REFTABLE_UNUSED)
 {
 }
 
-static ssize_t reftable_buf_read_block(void *v, struct reftable_block *dest,
-				       uint64_t off, uint32_t size)
+static ssize_t reftable_buf_read_data(void *v, struct reftable_block_data *dest,
+				      uint64_t off, uint32_t size)
 {
 	struct reftable_buf *b = v;
 	assert(off + size <= b->len);
@@ -44,8 +79,8 @@ static uint64_t reftable_buf_size(void *b)
 
 static struct reftable_block_source_vtable reftable_buf_vtable = {
 	.size = &reftable_buf_size,
-	.read_block = &reftable_buf_read_block,
-	.return_block = &reftable_buf_return_block,
+	.read_data = &reftable_buf_read_data,
+	.release_data = &reftable_buf_release_data,
 	.close = &reftable_buf_close,
 };
 
@@ -67,7 +102,7 @@ static uint64_t file_size(void *b)
 	return ((struct file_block_source *)b)->size;
 }
 
-static void file_return_block(void *b REFTABLE_UNUSED, struct reftable_block *dest REFTABLE_UNUSED)
+static void file_release_data(void *b REFTABLE_UNUSED, struct reftable_block_data *dest REFTABLE_UNUSED)
 {
 }
 
@@ -78,8 +113,8 @@ static void file_close(void *v)
 	reftable_free(b);
 }
 
-static ssize_t file_read_block(void *v, struct reftable_block *dest, uint64_t off,
-			       uint32_t size)
+static ssize_t file_read_data(void *v, struct reftable_block_data *dest, uint64_t off,
+			      uint32_t size)
 {
 	struct file_block_source *b = v;
 	assert(off + size <= b->size);
@@ -90,8 +125,8 @@ static ssize_t file_read_block(void *v, struct reftable_block *dest, uint64_t of
 
 static struct reftable_block_source_vtable file_vtable = {
 	.size = &file_size,
-	.read_block = &file_read_block,
-	.return_block = &file_return_block,
+	.read_data = &file_read_data,
+	.release_data = &file_release_data,
 	.close = &file_close,
 };
 
diff --git a/reftable/blocksource.h b/reftable/blocksource.h
index a84a3cc..a110e05 100644
--- a/reftable/blocksource.h
+++ b/reftable/blocksource.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef BLOCKSOURCE_H
 #define BLOCKSOURCE_H
@@ -12,9 +12,34 @@ license that can be found in the LICENSE file or at
 #include "system.h"
 
 struct reftable_block_source;
+struct reftable_block_data;
 struct reftable_buf;
 
-/* Create an in-memory block source for reading reftables */
+/*
+ * Close the block source and the underlying resource. This is a no-op in case
+ * the block source is zero-initialized.
+ */
+void block_source_close(struct reftable_block_source *source);
+
+/*
+ * Read a block of length `size` from the source at the given `off`.
+ */
+ssize_t block_source_read_data(struct reftable_block_source *source,
+			       struct reftable_block_data *dest, uint64_t off,
+			       uint32_t size);
+
+/*
+ * Return the total length of the underlying resource.
+ */
+uint64_t block_source_size(struct reftable_block_source *source);
+
+/*
+ * Return a block to its original source, releasing any resources associated
+ * with it.
+ */
+void block_source_release_data(struct reftable_block_data *data);
+
+/* Create an in-memory block source for reading reftables. */
 void block_source_from_buf(struct reftable_block_source *bs,
 			   struct reftable_buf *buf);
 
diff --git a/reftable/constants.h b/reftable/constants.h
index f6beb84..e3b1aaa 100644
--- a/reftable/constants.h
+++ b/reftable/constants.h
@@ -1,19 +1,15 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef CONSTANTS_H
 #define CONSTANTS_H
 
-#define BLOCK_TYPE_LOG 'g'
-#define BLOCK_TYPE_INDEX 'i'
-#define BLOCK_TYPE_REF 'r'
-#define BLOCK_TYPE_OBJ 'o'
-#define BLOCK_TYPE_ANY 0
+#include "reftable-constants.h"
 
 #define MAX_RESTARTS ((1 << 16) - 1)
 #define DEFAULT_BLOCK_SIZE 4096
diff --git a/reftable/error.c b/reftable/error.c
index 660d029..c7cab2d 100644
--- a/reftable/error.c
+++ b/reftable/error.c
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #include "system.h"
 #include "reftable-error.h"
diff --git a/reftable/iter.c b/reftable/iter.c
index f520382..2ecc52b 100644
--- a/reftable/iter.c
+++ b/reftable/iter.c
@@ -1,19 +1,20 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #include "iter.h"
 
 #include "system.h"
 
 #include "block.h"
+#include "blocksource.h"
 #include "constants.h"
-#include "reader.h"
 #include "reftable-error.h"
+#include "table.h"
 
 int iterator_seek(struct reftable_iterator *it, struct reftable_record *want)
 {
@@ -113,7 +114,7 @@ static void indexed_table_ref_iter_close(void *p)
 {
 	struct indexed_table_ref_iter *it = p;
 	block_iter_close(&it->cur);
-	reftable_block_done(&it->block_reader.block);
+	block_source_release_data(&it->block.block_data);
 	reftable_free(it->offsets);
 	reftable_buf_release(&it->oid);
 }
@@ -127,11 +128,10 @@ static int indexed_table_ref_iter_next_block(struct indexed_table_ref_iter *it)
 		return 1;
 	}
 
-	reftable_block_done(&it->block_reader.block);
+	block_source_release_data(&it->block.block_data);
 
 	off = it->offsets[it->offset_idx++];
-	err = reader_init_block_reader(it->r, &it->block_reader, off,
-				       BLOCK_TYPE_REF);
+	err = table_init_block(it->table, &it->block, off, REFTABLE_BLOCK_TYPE_REF);
 	if (err < 0) {
 		return err;
 	}
@@ -139,7 +139,7 @@ static int indexed_table_ref_iter_next_block(struct indexed_table_ref_iter *it)
 		/* indexed block does not exist. */
 		return REFTABLE_FORMAT_ERROR;
 	}
-	block_iter_seek_start(&it->cur, &it->block_reader);
+	block_iter_init(&it->cur, &it->block);
 	return 0;
 }
 
@@ -181,7 +181,7 @@ static int indexed_table_ref_iter_next(void *p, struct reftable_record *rec)
 }
 
 int indexed_table_ref_iter_new(struct indexed_table_ref_iter **dest,
-			       struct reftable_reader *r, uint8_t *oid,
+			       struct reftable_table *t, uint8_t *oid,
 			       int oid_len, uint64_t *offsets, int offset_len)
 {
 	struct indexed_table_ref_iter empty = INDEXED_TABLE_REF_ITER_INIT;
@@ -195,7 +195,7 @@ int indexed_table_ref_iter_new(struct indexed_table_ref_iter **dest,
 	}
 
 	*itr = empty;
-	itr->r = r;
+	itr->table = t;
 
 	err = reftable_buf_add(&itr->oid, oid, oid_len);
 	if (err < 0)
@@ -246,7 +246,7 @@ int reftable_iterator_seek_ref(struct reftable_iterator *it,
 			       const char *name)
 {
 	struct reftable_record want = {
-		.type = BLOCK_TYPE_REF,
+		.type = REFTABLE_BLOCK_TYPE_REF,
 		.u.ref = {
 			.refname = (char *)name,
 		},
@@ -258,7 +258,7 @@ int reftable_iterator_next_ref(struct reftable_iterator *it,
 			       struct reftable_ref_record *ref)
 {
 	struct reftable_record rec = {
-		.type = BLOCK_TYPE_REF,
+		.type = REFTABLE_BLOCK_TYPE_REF,
 		.u = {
 			.ref = *ref
 		},
@@ -272,7 +272,7 @@ int reftable_iterator_seek_log_at(struct reftable_iterator *it,
 				  const char *name, uint64_t update_index)
 {
 	struct reftable_record want = {
-		.type = BLOCK_TYPE_LOG,
+		.type = REFTABLE_BLOCK_TYPE_LOG,
 		.u.log = {
 			.refname = (char *)name,
 			.update_index = update_index,
@@ -291,7 +291,7 @@ int reftable_iterator_next_log(struct reftable_iterator *it,
 			       struct reftable_log_record *log)
 {
 	struct reftable_record rec = {
-		.type = BLOCK_TYPE_LOG,
+		.type = REFTABLE_BLOCK_TYPE_LOG,
 		.u = {
 			.log = *log,
 		},
diff --git a/reftable/iter.h b/reftable/iter.h
index 40f9889..cc92097 100644
--- a/reftable/iter.h
+++ b/reftable/iter.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef ITER_H
 #define ITER_H
@@ -59,7 +59,7 @@ void iterator_from_filtering_ref_iterator(struct reftable_iterator *,
  * but using the object index.
  */
 struct indexed_table_ref_iter {
-	struct reftable_reader *r;
+	struct reftable_table *table;
 	struct reftable_buf oid;
 
 	/* mutable */
@@ -68,7 +68,7 @@ struct indexed_table_ref_iter {
 	/* Points to the next offset to read. */
 	int offset_idx;
 	int offset_len;
-	struct block_reader block_reader;
+	struct reftable_block block;
 	struct block_iter cur;
 	int is_finished;
 };
@@ -83,7 +83,7 @@ void iterator_from_indexed_table_ref_iter(struct reftable_iterator *it,
 
 /* Takes ownership of `offsets` */
 int indexed_table_ref_iter_new(struct indexed_table_ref_iter **dest,
-			       struct reftable_reader *r, uint8_t *oid,
+			       struct reftable_table *t, uint8_t *oid,
 			       int oid_len, uint64_t *offsets, int offset_len);
 
 #endif
diff --git a/reftable/merged.c b/reftable/merged.c
index 4ff1553..733de07 100644
--- a/reftable/merged.c
+++ b/reftable/merged.c
@@ -1,21 +1,21 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #include "merged.h"
 
 #include "constants.h"
 #include "iter.h"
 #include "pq.h"
-#include "reader.h"
 #include "record.h"
 #include "reftable-merged.h"
 #include "reftable-error.h"
 #include "system.h"
+#include "table.h"
 
 struct merged_subiter {
 	struct reftable_iterator iter;
@@ -192,7 +192,7 @@ static void iterator_from_merged_iter(struct reftable_iterator *it,
 }
 
 int reftable_merged_table_new(struct reftable_merged_table **dest,
-			      struct reftable_reader **readers, size_t n,
+			      struct reftable_table **tables, size_t n,
 			      enum reftable_hash hash_id)
 {
 	struct reftable_merged_table *m = NULL;
@@ -200,10 +200,10 @@ int reftable_merged_table_new(struct reftable_merged_table **dest,
 	uint64_t first_min = 0;
 
 	for (size_t i = 0; i < n; i++) {
-		uint64_t min = reftable_reader_min_update_index(readers[i]);
-		uint64_t max = reftable_reader_max_update_index(readers[i]);
+		uint64_t min = reftable_table_min_update_index(tables[i]);
+		uint64_t max = reftable_table_max_update_index(tables[i]);
 
-		if (reftable_reader_hash_id(readers[i]) != hash_id) {
+		if (reftable_table_hash_id(tables[i]) != hash_id) {
 			return REFTABLE_FORMAT_ERROR;
 		}
 		if (i == 0 || min < first_min) {
@@ -218,8 +218,8 @@ int reftable_merged_table_new(struct reftable_merged_table **dest,
 	if (!m)
 		return REFTABLE_OUT_OF_MEMORY_ERROR;
 
-	m->readers = readers;
-	m->readers_len = n;
+	m->tables = tables;
+	m->tables_len = n;
 	m->min = first_min;
 	m->max = last_max;
 	m->hash_id = hash_id;
@@ -254,20 +254,20 @@ int merged_table_init_iter(struct reftable_merged_table *mt,
 	struct merged_iter *mi = NULL;
 	int ret;
 
-	if (mt->readers_len) {
-		REFTABLE_CALLOC_ARRAY(subiters, mt->readers_len);
+	if (mt->tables_len) {
+		REFTABLE_CALLOC_ARRAY(subiters, mt->tables_len);
 		if (!subiters) {
 			ret = REFTABLE_OUT_OF_MEMORY_ERROR;
 			goto out;
 		}
 	}
 
-	for (size_t i = 0; i < mt->readers_len; i++) {
+	for (size_t i = 0; i < mt->tables_len; i++) {
 		ret = reftable_record_init(&subiters[i].rec, typ);
 		if (ret < 0)
 			goto out;
 
-		ret = reader_init_iter(mt->readers[i], &subiters[i].iter, typ);
+		ret = table_init_iter(mt->tables[i], &subiters[i].iter, typ);
 		if (ret < 0)
 			goto out;
 	}
@@ -280,14 +280,14 @@ int merged_table_init_iter(struct reftable_merged_table *mt,
 	mi->advance_index = -1;
 	mi->suppress_deletions = mt->suppress_deletions;
 	mi->subiters = subiters;
-	mi->subiters_len = mt->readers_len;
+	mi->subiters_len = mt->tables_len;
 
 	iterator_from_merged_iter(it, mi);
 	ret = 0;
 
 out:
 	if (ret < 0) {
-		for (size_t i = 0; subiters && i < mt->readers_len; i++) {
+		for (size_t i = 0; subiters && i < mt->tables_len; i++) {
 			reftable_iterator_destroy(&subiters[i].iter);
 			reftable_record_release(&subiters[i].rec);
 		}
@@ -301,13 +301,13 @@ int merged_table_init_iter(struct reftable_merged_table *mt,
 int reftable_merged_table_init_ref_iterator(struct reftable_merged_table *mt,
 					    struct reftable_iterator *it)
 {
-	return merged_table_init_iter(mt, it, BLOCK_TYPE_REF);
+	return merged_table_init_iter(mt, it, REFTABLE_BLOCK_TYPE_REF);
 }
 
 int reftable_merged_table_init_log_iterator(struct reftable_merged_table *mt,
 					    struct reftable_iterator *it)
 {
-	return merged_table_init_iter(mt, it, BLOCK_TYPE_LOG);
+	return merged_table_init_iter(mt, it, REFTABLE_BLOCK_TYPE_LOG);
 }
 
 enum reftable_hash reftable_merged_table_hash_id(struct reftable_merged_table *mt)
diff --git a/reftable/merged.h b/reftable/merged.h
index 0b7d939..4317e5f 100644
--- a/reftable/merged.h
+++ b/reftable/merged.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef MERGED_H
 #define MERGED_H
@@ -13,8 +13,8 @@ license that can be found in the LICENSE file or at
 #include "reftable-basics.h"
 
 struct reftable_merged_table {
-	struct reftable_reader **readers;
-	size_t readers_len;
+	struct reftable_table **tables;
+	size_t tables_len;
 	enum reftable_hash hash_id;
 
 	/* If unset, produce deletions. This is useful for compaction. For the
diff --git a/reftable/pq.c b/reftable/pq.c
index 82394a9..9a79f5c 100644
--- a/reftable/pq.c
+++ b/reftable/pq.c
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #include "pq.h"
 
diff --git a/reftable/pq.h b/reftable/pq.h
index ff39016..4231067 100644
--- a/reftable/pq.h
+++ b/reftable/pq.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef PQ_H
 #define PQ_H
diff --git a/reftable/reader.c b/reftable/reader.c
deleted file mode 100644
index 172aff2..0000000
--- a/reftable/reader.c
+++ /dev/null
@@ -1,879 +0,0 @@
-/*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
-
-#include "reader.h"
-
-#include "system.h"
-#include "block.h"
-#include "constants.h"
-#include "iter.h"
-#include "record.h"
-#include "reftable-error.h"
-
-uint64_t block_source_size(struct reftable_block_source *source)
-{
-	return source->ops->size(source->arg);
-}
-
-ssize_t block_source_read_block(struct reftable_block_source *source,
-				struct reftable_block *dest, uint64_t off,
-				uint32_t size)
-{
-	ssize_t result = source->ops->read_block(source->arg, dest, off, size);
-	dest->source = *source;
-	return result;
-}
-
-void block_source_close(struct reftable_block_source *source)
-{
-	if (!source->ops) {
-		return;
-	}
-
-	source->ops->close(source->arg);
-	source->ops = NULL;
-}
-
-static struct reftable_reader_offsets *
-reader_offsets_for(struct reftable_reader *r, uint8_t typ)
-{
-	switch (typ) {
-	case BLOCK_TYPE_REF:
-		return &r->ref_offsets;
-	case BLOCK_TYPE_LOG:
-		return &r->log_offsets;
-	case BLOCK_TYPE_OBJ:
-		return &r->obj_offsets;
-	}
-	abort();
-}
-
-static int reader_get_block(struct reftable_reader *r,
-			    struct reftable_block *dest, uint64_t off,
-			    uint32_t sz)
-{
-	ssize_t bytes_read;
-	if (off >= r->size)
-		return 0;
-	if (off + sz > r->size)
-		sz = r->size - off;
-
-	bytes_read = block_source_read_block(&r->source, dest, off, sz);
-	if (bytes_read < 0)
-		return (int)bytes_read;
-
-	return 0;
-}
-
-enum reftable_hash reftable_reader_hash_id(struct reftable_reader *r)
-{
-	return r->hash_id;
-}
-
-const char *reader_name(struct reftable_reader *r)
-{
-	return r->name;
-}
-
-static int parse_footer(struct reftable_reader *r, uint8_t *footer,
-			uint8_t *header)
-{
-	uint8_t *f = footer;
-	uint8_t first_block_typ;
-	int err = 0;
-	uint32_t computed_crc;
-	uint32_t file_crc;
-
-	if (memcmp(f, "REFT", 4)) {
-		err = REFTABLE_FORMAT_ERROR;
-		goto done;
-	}
-	f += 4;
-
-	if (memcmp(footer, header, header_size(r->version))) {
-		err = REFTABLE_FORMAT_ERROR;
-		goto done;
-	}
-
-	f++;
-	r->block_size = reftable_get_be24(f);
-
-	f += 3;
-	r->min_update_index = reftable_get_be64(f);
-	f += 8;
-	r->max_update_index = reftable_get_be64(f);
-	f += 8;
-
-	if (r->version == 1) {
-		r->hash_id = REFTABLE_HASH_SHA1;
-	} else {
-		switch (reftable_get_be32(f)) {
-		case REFTABLE_FORMAT_ID_SHA1:
-			r->hash_id = REFTABLE_HASH_SHA1;
-			break;
-		case REFTABLE_FORMAT_ID_SHA256:
-			r->hash_id = REFTABLE_HASH_SHA256;
-			break;
-		default:
-			err = REFTABLE_FORMAT_ERROR;
-			goto done;
-		}
-
-		f += 4;
-	}
-
-	r->ref_offsets.index_offset = reftable_get_be64(f);
-	f += 8;
-
-	r->obj_offsets.offset = reftable_get_be64(f);
-	f += 8;
-
-	r->object_id_len = r->obj_offsets.offset & ((1 << 5) - 1);
-	r->obj_offsets.offset >>= 5;
-
-	r->obj_offsets.index_offset = reftable_get_be64(f);
-	f += 8;
-	r->log_offsets.offset = reftable_get_be64(f);
-	f += 8;
-	r->log_offsets.index_offset = reftable_get_be64(f);
-	f += 8;
-
-	computed_crc = crc32(0, footer, f - footer);
-	file_crc = reftable_get_be32(f);
-	f += 4;
-	if (computed_crc != file_crc) {
-		err = REFTABLE_FORMAT_ERROR;
-		goto done;
-	}
-
-	first_block_typ = header[header_size(r->version)];
-	r->ref_offsets.is_present = (first_block_typ == BLOCK_TYPE_REF);
-	r->ref_offsets.offset = 0;
-	r->log_offsets.is_present = (first_block_typ == BLOCK_TYPE_LOG ||
-				     r->log_offsets.offset > 0);
-	r->obj_offsets.is_present = r->obj_offsets.offset > 0;
-	if (r->obj_offsets.is_present && !r->object_id_len) {
-		err = REFTABLE_FORMAT_ERROR;
-		goto done;
-	}
-
-	err = 0;
-done:
-	return err;
-}
-
-struct table_iter {
-	struct reftable_reader *r;
-	uint8_t typ;
-	uint64_t block_off;
-	struct block_reader br;
-	struct block_iter bi;
-	int is_finished;
-};
-
-static int table_iter_init(struct table_iter *ti, struct reftable_reader *r)
-{
-	struct block_iter bi = BLOCK_ITER_INIT;
-	memset(ti, 0, sizeof(*ti));
-	reftable_reader_incref(r);
-	ti->r = r;
-	ti->bi = bi;
-	return 0;
-}
-
-static int table_iter_next_in_block(struct table_iter *ti,
-				    struct reftable_record *rec)
-{
-	int res = block_iter_next(&ti->bi, rec);
-	if (res == 0 && reftable_record_type(rec) == BLOCK_TYPE_REF) {
-		rec->u.ref.update_index += ti->r->min_update_index;
-	}
-
-	return res;
-}
-
-static void table_iter_block_done(struct table_iter *ti)
-{
-	block_reader_release(&ti->br);
-	block_iter_reset(&ti->bi);
-}
-
-static int32_t extract_block_size(uint8_t *data, uint8_t *typ, uint64_t off,
-				  int version)
-{
-	int32_t result = 0;
-
-	if (off == 0) {
-		data += header_size(version);
-	}
-
-	*typ = data[0];
-	if (reftable_is_block_type(*typ)) {
-		result = reftable_get_be24(data + 1);
-	}
-	return result;
-}
-
-int reader_init_block_reader(struct reftable_reader *r, struct block_reader *br,
-			     uint64_t next_off, uint8_t want_typ)
-{
-	int32_t guess_block_size = r->block_size ? r->block_size :
-							 DEFAULT_BLOCK_SIZE;
-	struct reftable_block block = { NULL };
-	uint8_t block_typ = 0;
-	int err = 0;
-	uint32_t header_off = next_off ? 0 : header_size(r->version);
-	int32_t block_size = 0;
-
-	if (next_off >= r->size)
-		return 1;
-
-	err = reader_get_block(r, &block, next_off, guess_block_size);
-	if (err < 0)
-		goto done;
-
-	block_size = extract_block_size(block.data, &block_typ, next_off,
-					r->version);
-	if (block_size < 0) {
-		err = block_size;
-		goto done;
-	}
-	if (want_typ != BLOCK_TYPE_ANY && block_typ != want_typ) {
-		err = 1;
-		goto done;
-	}
-
-	if (block_size > guess_block_size) {
-		reftable_block_done(&block);
-		err = reader_get_block(r, &block, next_off, block_size);
-		if (err < 0) {
-			goto done;
-		}
-	}
-
-	err = block_reader_init(br, &block, header_off, r->block_size,
-				hash_size(r->hash_id));
-done:
-	reftable_block_done(&block);
-
-	return err;
-}
-
-static void table_iter_close(struct table_iter *ti)
-{
-	table_iter_block_done(ti);
-	block_iter_close(&ti->bi);
-	reftable_reader_decref(ti->r);
-}
-
-static int table_iter_next_block(struct table_iter *ti)
-{
-	uint64_t next_block_off = ti->block_off + ti->br.full_block_size;
-	int err;
-
-	err = reader_init_block_reader(ti->r, &ti->br, next_block_off, ti->typ);
-	if (err > 0)
-		ti->is_finished = 1;
-	if (err)
-		return err;
-
-	ti->block_off = next_block_off;
-	ti->is_finished = 0;
-	block_iter_seek_start(&ti->bi, &ti->br);
-
-	return 0;
-}
-
-static int table_iter_next(struct table_iter *ti, struct reftable_record *rec)
-{
-	if (reftable_record_type(rec) != ti->typ)
-		return REFTABLE_API_ERROR;
-
-	while (1) {
-		int err;
-
-		if (ti->is_finished)
-			return 1;
-
-		/*
-		 * Check whether the current block still has more records. If
-		 * so, return it. If the iterator returns positive then the
-		 * current block has been exhausted.
-		 */
-		err = table_iter_next_in_block(ti, rec);
-		if (err <= 0)
-			return err;
-
-		/*
-		 * Otherwise, we need to continue to the next block in the
-		 * table and retry. If there are no more blocks then the
-		 * iterator is drained.
-		 */
-		err = table_iter_next_block(ti);
-		if (err) {
-			ti->is_finished = 1;
-			return err;
-		}
-	}
-}
-
-static int table_iter_seek_to(struct table_iter *ti, uint64_t off, uint8_t typ)
-{
-	int err;
-
-	err = reader_init_block_reader(ti->r, &ti->br, off, typ);
-	if (err != 0)
-		return err;
-
-	ti->typ = block_reader_type(&ti->br);
-	ti->block_off = off;
-	block_iter_seek_start(&ti->bi, &ti->br);
-	ti->is_finished = 0;
-	return 0;
-}
-
-static int table_iter_seek_start(struct table_iter *ti, uint8_t typ, int index)
-{
-	struct reftable_reader_offsets *offs = reader_offsets_for(ti->r, typ);
-	uint64_t off = offs->offset;
-	if (index) {
-		off = offs->index_offset;
-		if (off == 0) {
-			return 1;
-		}
-		typ = BLOCK_TYPE_INDEX;
-	}
-
-	return table_iter_seek_to(ti, off, typ);
-}
-
-static int table_iter_seek_linear(struct table_iter *ti,
-				  struct reftable_record *want)
-{
-	struct reftable_buf want_key = REFTABLE_BUF_INIT;
-	struct reftable_buf got_key = REFTABLE_BUF_INIT;
-	struct reftable_record rec;
-	int err;
-
-	err = reftable_record_init(&rec, reftable_record_type(want));
-	if (err < 0)
-		goto done;
-
-	err = reftable_record_key(want, &want_key);
-	if (err < 0)
-		goto done;
-
-	/*
-	 * First we need to locate the block that must contain our record. To
-	 * do so we scan through blocks linearly until we find the first block
-	 * whose first key is bigger than our wanted key. Once we have found
-	 * that block we know that the key must be contained in the preceding
-	 * block.
-	 *
-	 * This algorithm is somewhat unfortunate because it means that we
-	 * always have to seek one block too far and then back up. But as we
-	 * can only decode the _first_ key of a block but not its _last_ key we
-	 * have no other way to do this.
-	 */
-	while (1) {
-		struct table_iter next = *ti;
-
-		/*
-		 * We must be careful to not modify underlying data of `ti`
-		 * because we may find that `next` does not contain our desired
-		 * block, but that `ti` does. In that case, we would discard
-		 * `next` and continue with `ti`.
-		 *
-		 * This also means that we cannot reuse allocated memory for
-		 * `next` here. While it would be great if we could, it should
-		 * in practice not be too bad given that we should only ever
-		 * end up doing linear seeks with at most three blocks. As soon
-		 * as we have more than three blocks we would have an index, so
-		 * we would not do a linear search there anymore.
-		 */
-		memset(&next.br.block, 0, sizeof(next.br.block));
-		next.br.zstream = NULL;
-		next.br.uncompressed_data = NULL;
-		next.br.uncompressed_cap = 0;
-
-		err = table_iter_next_block(&next);
-		if (err < 0)
-			goto done;
-		if (err > 0)
-			break;
-
-		err = block_reader_first_key(&next.br, &got_key);
-		if (err < 0)
-			goto done;
-
-		if (reftable_buf_cmp(&got_key, &want_key) > 0) {
-			table_iter_block_done(&next);
-			break;
-		}
-
-		table_iter_block_done(ti);
-		*ti = next;
-	}
-
-	/*
-	 * We have located the block that must contain our record, so we seek
-	 * the wanted key inside of it. If the block does not contain our key
-	 * we know that the corresponding record does not exist.
-	 */
-	err = block_iter_seek_key(&ti->bi, &ti->br, &want_key);
-	if (err < 0)
-		goto done;
-	err = 0;
-
-done:
-	reftable_record_release(&rec);
-	reftable_buf_release(&want_key);
-	reftable_buf_release(&got_key);
-	return err;
-}
-
-static int table_iter_seek_indexed(struct table_iter *ti,
-				   struct reftable_record *rec)
-{
-	struct reftable_record want_index = {
-		.type = BLOCK_TYPE_INDEX, .u.idx = { .last_key = REFTABLE_BUF_INIT }
-	};
-	struct reftable_record index_result = {
-		.type = BLOCK_TYPE_INDEX,
-		.u.idx = { .last_key = REFTABLE_BUF_INIT },
-	};
-	int err;
-
-	err = reftable_record_key(rec, &want_index.u.idx.last_key);
-	if (err < 0)
-		goto done;
-
-	/*
-	 * The index may consist of multiple levels, where each level may have
-	 * multiple index blocks. We start by doing a linear search in the
-	 * highest layer that identifies the relevant index block as well as
-	 * the record inside that block that corresponds to our wanted key.
-	 */
-	err = table_iter_seek_linear(ti, &want_index);
-	if (err < 0)
-		goto done;
-
-	/*
-	 * Traverse down the levels until we find a non-index entry.
-	 */
-	while (1) {
-		/*
-		 * In case we seek a record that does not exist the index iter
-		 * will tell us that the iterator is over. This works because
-		 * the last index entry of the current level will contain the
-		 * last key it knows about. So in case our seeked key is larger
-		 * than the last indexed key we know that it won't exist.
-		 *
-		 * There is one subtlety in the layout of the index section
-		 * that makes this work as expected: the highest-level index is
-		 * at end of the section and will point backwards and thus we
-		 * start reading from the end of the index section, not the
-		 * beginning.
-		 *
-		 * If that wasn't the case and the order was reversed then the
-		 * linear seek would seek into the lower levels and traverse
-		 * all levels of the index only to find out that the key does
-		 * not exist.
-		 */
-		err = table_iter_next(ti, &index_result);
-		if (err != 0)
-			goto done;
-
-		err = table_iter_seek_to(ti, index_result.u.idx.offset, 0);
-		if (err != 0)
-			goto done;
-
-		err = block_iter_seek_key(&ti->bi, &ti->br, &want_index.u.idx.last_key);
-		if (err < 0)
-			goto done;
-
-		if (ti->typ == reftable_record_type(rec)) {
-			err = 0;
-			break;
-		}
-
-		if (ti->typ != BLOCK_TYPE_INDEX) {
-			err = REFTABLE_FORMAT_ERROR;
-			goto done;
-		}
-	}
-
-done:
-	reftable_record_release(&want_index);
-	reftable_record_release(&index_result);
-	return err;
-}
-
-static int table_iter_seek(struct table_iter *ti,
-			   struct reftable_record *want)
-{
-	uint8_t typ = reftable_record_type(want);
-	struct reftable_reader_offsets *offs = reader_offsets_for(ti->r, typ);
-	int err;
-
-	err = table_iter_seek_start(ti, reftable_record_type(want),
-				    !!offs->index_offset);
-	if (err < 0)
-		goto out;
-
-	if (offs->index_offset)
-		err = table_iter_seek_indexed(ti, want);
-	else
-		err = table_iter_seek_linear(ti, want);
-	if (err)
-		goto out;
-
-out:
-	return err;
-}
-
-static int table_iter_seek_void(void *ti, struct reftable_record *want)
-{
-	return table_iter_seek(ti, want);
-}
-
-static int table_iter_next_void(void *ti, struct reftable_record *rec)
-{
-	return table_iter_next(ti, rec);
-}
-
-static void table_iter_close_void(void *ti)
-{
-	table_iter_close(ti);
-}
-
-static struct reftable_iterator_vtable table_iter_vtable = {
-	.seek = &table_iter_seek_void,
-	.next = &table_iter_next_void,
-	.close = &table_iter_close_void,
-};
-
-static void iterator_from_table_iter(struct reftable_iterator *it,
-				     struct table_iter *ti)
-{
-	assert(!it->ops);
-	it->iter_arg = ti;
-	it->ops = &table_iter_vtable;
-}
-
-int reader_init_iter(struct reftable_reader *r,
-		     struct reftable_iterator *it,
-		     uint8_t typ)
-{
-	struct reftable_reader_offsets *offs = reader_offsets_for(r, typ);
-
-	if (offs->is_present) {
-		struct table_iter *ti;
-		REFTABLE_ALLOC_ARRAY(ti, 1);
-		if (!ti)
-			return REFTABLE_OUT_OF_MEMORY_ERROR;
-
-		table_iter_init(ti, r);
-		iterator_from_table_iter(it, ti);
-	} else {
-		iterator_set_empty(it);
-	}
-
-	return 0;
-}
-
-int reftable_reader_init_ref_iterator(struct reftable_reader *r,
-				      struct reftable_iterator *it)
-{
-	return reader_init_iter(r, it, BLOCK_TYPE_REF);
-}
-
-int reftable_reader_init_log_iterator(struct reftable_reader *r,
-				      struct reftable_iterator *it)
-{
-	return reader_init_iter(r, it, BLOCK_TYPE_LOG);
-}
-
-int reftable_reader_new(struct reftable_reader **out,
-			struct reftable_block_source *source, char const *name)
-{
-	struct reftable_block footer = { 0 };
-	struct reftable_block header = { 0 };
-	struct reftable_reader *r;
-	uint64_t file_size = block_source_size(source);
-	uint32_t read_size;
-	ssize_t bytes_read;
-	int err;
-
-	REFTABLE_CALLOC_ARRAY(r, 1);
-	if (!r) {
-		err = REFTABLE_OUT_OF_MEMORY_ERROR;
-		goto done;
-	}
-
-	/*
-	 * We need one extra byte to read the type of first block. We also
-	 * pretend to always be reading v2 of the format because it is larger.
-	 */
-	read_size = header_size(2) + 1;
-	if (read_size > file_size) {
-		err = REFTABLE_FORMAT_ERROR;
-		goto done;
-	}
-
-	bytes_read = block_source_read_block(source, &header, 0, read_size);
-	if (bytes_read < 0 || (size_t)bytes_read != read_size) {
-		err = REFTABLE_IO_ERROR;
-		goto done;
-	}
-
-	if (memcmp(header.data, "REFT", 4)) {
-		err = REFTABLE_FORMAT_ERROR;
-		goto done;
-	}
-	r->version = header.data[4];
-	if (r->version != 1 && r->version != 2) {
-		err = REFTABLE_FORMAT_ERROR;
-		goto done;
-	}
-
-	r->size = file_size - footer_size(r->version);
-	r->source = *source;
-	r->name = reftable_strdup(name);
-	if (!r->name) {
-		err = REFTABLE_OUT_OF_MEMORY_ERROR;
-		goto done;
-	}
-	r->hash_id = 0;
-	r->refcount = 1;
-
-	bytes_read = block_source_read_block(source, &footer, r->size,
-					     footer_size(r->version));
-	if (bytes_read < 0 || (size_t)bytes_read != footer_size(r->version)) {
-		err = REFTABLE_IO_ERROR;
-		goto done;
-	}
-
-	err = parse_footer(r, footer.data, header.data);
-	if (err)
-		goto done;
-
-	*out = r;
-
-done:
-	reftable_block_done(&footer);
-	reftable_block_done(&header);
-	if (err) {
-		if (r)
-			reftable_free(r->name);
-		reftable_free(r);
-		block_source_close(source);
-	}
-	return err;
-}
-
-void reftable_reader_incref(struct reftable_reader *r)
-{
-	r->refcount++;
-}
-
-void reftable_reader_decref(struct reftable_reader *r)
-{
-	if (!r)
-		return;
-	if (--r->refcount)
-		return;
-	block_source_close(&r->source);
-	REFTABLE_FREE_AND_NULL(r->name);
-	reftable_free(r);
-}
-
-static int reftable_reader_refs_for_indexed(struct reftable_reader *r,
-					    struct reftable_iterator *it,
-					    uint8_t *oid)
-{
-	struct reftable_record want = {
-		.type = BLOCK_TYPE_OBJ,
-		.u.obj = {
-			.hash_prefix = oid,
-			.hash_prefix_len = r->object_id_len,
-		},
-	};
-	struct reftable_iterator oit = { NULL };
-	struct reftable_record got = {
-		.type = BLOCK_TYPE_OBJ,
-		.u.obj = { 0 },
-	};
-	int err = 0;
-	struct indexed_table_ref_iter *itr = NULL;
-
-	/* Look through the reverse index. */
-	err = reader_init_iter(r, &oit, BLOCK_TYPE_OBJ);
-	if (err < 0)
-		goto done;
-
-	err = iterator_seek(&oit, &want);
-	if (err != 0)
-		goto done;
-
-	/* read out the reftable_obj_record */
-	err = iterator_next(&oit, &got);
-	if (err < 0)
-		goto done;
-
-	if (err > 0 || memcmp(want.u.obj.hash_prefix, got.u.obj.hash_prefix,
-			      r->object_id_len)) {
-		/* didn't find it; return empty iterator */
-		iterator_set_empty(it);
-		err = 0;
-		goto done;
-	}
-
-	err = indexed_table_ref_iter_new(&itr, r, oid, hash_size(r->hash_id),
-					 got.u.obj.offsets,
-					 got.u.obj.offset_len);
-	if (err < 0)
-		goto done;
-	got.u.obj.offsets = NULL;
-	iterator_from_indexed_table_ref_iter(it, itr);
-
-done:
-	reftable_iterator_destroy(&oit);
-	reftable_record_release(&got);
-	return err;
-}
-
-static int reftable_reader_refs_for_unindexed(struct reftable_reader *r,
-					      struct reftable_iterator *it,
-					      uint8_t *oid)
-{
-	struct table_iter *ti;
-	struct filtering_ref_iterator *filter = NULL;
-	struct filtering_ref_iterator empty = FILTERING_REF_ITERATOR_INIT;
-	uint32_t oid_len = hash_size(r->hash_id);
-	int err;
-
-	REFTABLE_ALLOC_ARRAY(ti, 1);
-	if (!ti) {
-		err = REFTABLE_OUT_OF_MEMORY_ERROR;
-		goto out;
-	}
-
-	table_iter_init(ti, r);
-	err = table_iter_seek_start(ti, BLOCK_TYPE_REF, 0);
-	if (err < 0)
-		goto out;
-
-	filter = reftable_malloc(sizeof(*filter));
-	if (!filter) {
-		err = REFTABLE_OUT_OF_MEMORY_ERROR;
-		goto out;
-	}
-	*filter = empty;
-
-	err = reftable_buf_add(&filter->oid, oid, oid_len);
-	if (err < 0)
-		goto out;
-
-	iterator_from_table_iter(&filter->it, ti);
-
-	iterator_from_filtering_ref_iterator(it, filter);
-
-	err = 0;
-
-out:
-	if (err < 0) {
-		if (ti)
-			table_iter_close(ti);
-		reftable_free(ti);
-	}
-	return err;
-}
-
-int reftable_reader_refs_for(struct reftable_reader *r,
-			     struct reftable_iterator *it, uint8_t *oid)
-{
-	if (r->obj_offsets.is_present)
-		return reftable_reader_refs_for_indexed(r, it, oid);
-	return reftable_reader_refs_for_unindexed(r, it, oid);
-}
-
-uint64_t reftable_reader_max_update_index(struct reftable_reader *r)
-{
-	return r->max_update_index;
-}
-
-uint64_t reftable_reader_min_update_index(struct reftable_reader *r)
-{
-	return r->min_update_index;
-}
-
-int reftable_reader_print_blocks(const char *tablename)
-{
-	struct {
-		const char *name;
-		int type;
-	} sections[] = {
-		{
-			.name = "ref",
-			.type = BLOCK_TYPE_REF,
-		},
-		{
-			.name = "obj",
-			.type = BLOCK_TYPE_OBJ,
-		},
-		{
-			.name = "log",
-			.type = BLOCK_TYPE_LOG,
-		},
-	};
-	struct reftable_block_source src = { 0 };
-	struct reftable_reader *r = NULL;
-	struct table_iter ti = { 0 };
-	size_t i;
-	int err;
-
-	err = reftable_block_source_from_file(&src, tablename);
-	if (err < 0)
-		goto done;
-
-	err = reftable_reader_new(&r, &src, tablename);
-	if (err < 0)
-		goto done;
-
-	table_iter_init(&ti, r);
-
-	printf("header:\n");
-	printf("  block_size: %d\n", r->block_size);
-
-	for (i = 0; i < sizeof(sections) / sizeof(*sections); i++) {
-		err = table_iter_seek_start(&ti, sections[i].type, 0);
-		if (err < 0)
-			goto done;
-		if (err > 0)
-			continue;
-
-		printf("%s:\n", sections[i].name);
-
-		while (1) {
-			printf("  - length: %u\n", ti.br.block_len);
-			printf("    restarts: %u\n", ti.br.restart_count);
-
-			err = table_iter_next_block(&ti);
-			if (err < 0)
-				goto done;
-			if (err > 0)
-				break;
-		}
-	}
-
-done:
-	reftable_reader_decref(r);
-	table_iter_close(&ti);
-	return err;
-}
diff --git a/reftable/reader.h b/reftable/reader.h
deleted file mode 100644
index bb72108..0000000
--- a/reftable/reader.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
-
-#ifndef READER_H
-#define READER_H
-
-#include "block.h"
-#include "record.h"
-#include "reftable-iterator.h"
-#include "reftable-reader.h"
-
-uint64_t block_source_size(struct reftable_block_source *source);
-
-ssize_t block_source_read_block(struct reftable_block_source *source,
-				struct reftable_block *dest, uint64_t off,
-				uint32_t size);
-void block_source_close(struct reftable_block_source *source);
-
-/* metadata for a block type */
-struct reftable_reader_offsets {
-	int is_present;
-	uint64_t offset;
-	uint64_t index_offset;
-};
-
-/* The state for reading a reftable file. */
-struct reftable_reader {
-	/* for convenience, associate a name with the instance. */
-	char *name;
-	struct reftable_block_source source;
-
-	/* Size of the file, excluding the footer. */
-	uint64_t size;
-
-	/* The hash function used for ref records. */
-	enum reftable_hash hash_id;
-
-	uint32_t block_size;
-	uint64_t min_update_index;
-	uint64_t max_update_index;
-	/* Length of the OID keys in the 'o' section */
-	int object_id_len;
-	int version;
-
-	struct reftable_reader_offsets ref_offsets;
-	struct reftable_reader_offsets obj_offsets;
-	struct reftable_reader_offsets log_offsets;
-
-	uint64_t refcount;
-};
-
-const char *reader_name(struct reftable_reader *r);
-
-int reader_init_iter(struct reftable_reader *r,
-		     struct reftable_iterator *it,
-		     uint8_t typ);
-
-/* initialize a block reader to read from `r` */
-int reader_init_block_reader(struct reftable_reader *r, struct block_reader *br,
-			     uint64_t next_off, uint8_t want_typ);
-
-#endif
diff --git a/reftable/record.c b/reftable/record.c
index c008002..fcd387b 100644
--- a/reftable/record.c
+++ b/reftable/record.c
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 /* record.c - methods for different types of records. */
 
@@ -69,10 +69,10 @@ int put_var_int(struct string_view *dest, uint64_t value)
 int reftable_is_block_type(uint8_t typ)
 {
 	switch (typ) {
-	case BLOCK_TYPE_REF:
-	case BLOCK_TYPE_LOG:
-	case BLOCK_TYPE_OBJ:
-	case BLOCK_TYPE_INDEX:
+	case REFTABLE_BLOCK_TYPE_REF:
+	case REFTABLE_BLOCK_TYPE_LOG:
+	case REFTABLE_BLOCK_TYPE_OBJ:
+	case REFTABLE_BLOCK_TYPE_INDEX:
 		return 1;
 	}
 	return 0;
@@ -459,7 +459,7 @@ static int reftable_ref_record_cmp_void(const void *_a, const void *_b)
 
 static struct reftable_record_vtable reftable_ref_record_vtable = {
 	.key = &reftable_ref_record_key,
-	.type = BLOCK_TYPE_REF,
+	.type = REFTABLE_BLOCK_TYPE_REF,
 	.copy_from = &reftable_ref_record_copy_from,
 	.val_type = &reftable_ref_record_val_type,
 	.encode = &reftable_ref_record_encode,
@@ -659,7 +659,7 @@ static int reftable_obj_record_cmp_void(const void *_a, const void *_b)
 
 static struct reftable_record_vtable reftable_obj_record_vtable = {
 	.key = &reftable_obj_record_key,
-	.type = BLOCK_TYPE_OBJ,
+	.type = REFTABLE_BLOCK_TYPE_OBJ,
 	.copy_from = &reftable_obj_record_copy_from,
 	.val_type = &reftable_obj_record_val_type,
 	.encode = &reftable_obj_record_encode,
@@ -1030,7 +1030,7 @@ static int reftable_log_record_is_deletion_void(const void *p)
 
 static struct reftable_record_vtable reftable_log_record_vtable = {
 	.key = &reftable_log_record_key,
-	.type = BLOCK_TYPE_LOG,
+	.type = REFTABLE_BLOCK_TYPE_LOG,
 	.copy_from = &reftable_log_record_copy_from,
 	.val_type = &reftable_log_record_val_type,
 	.encode = &reftable_log_record_encode,
@@ -1132,7 +1132,7 @@ static int reftable_index_record_cmp(const void *_a, const void *_b)
 
 static struct reftable_record_vtable reftable_index_record_vtable = {
 	.key = &reftable_index_record_key,
-	.type = BLOCK_TYPE_INDEX,
+	.type = REFTABLE_BLOCK_TYPE_INDEX,
 	.copy_from = &reftable_index_record_copy_from,
 	.val_type = &reftable_index_record_val_type,
 	.encode = &reftable_index_record_encode,
@@ -1275,13 +1275,13 @@ int reftable_log_record_is_deletion(const struct reftable_log_record *log)
 static void *reftable_record_data(struct reftable_record *rec)
 {
 	switch (rec->type) {
-	case BLOCK_TYPE_REF:
+	case REFTABLE_BLOCK_TYPE_REF:
 		return &rec->u.ref;
-	case BLOCK_TYPE_LOG:
+	case REFTABLE_BLOCK_TYPE_LOG:
 		return &rec->u.log;
-	case BLOCK_TYPE_INDEX:
+	case REFTABLE_BLOCK_TYPE_INDEX:
 		return &rec->u.idx;
-	case BLOCK_TYPE_OBJ:
+	case REFTABLE_BLOCK_TYPE_OBJ:
 		return &rec->u.obj;
 	}
 	abort();
@@ -1291,13 +1291,13 @@ static struct reftable_record_vtable *
 reftable_record_vtable(struct reftable_record *rec)
 {
 	switch (rec->type) {
-	case BLOCK_TYPE_REF:
+	case REFTABLE_BLOCK_TYPE_REF:
 		return &reftable_ref_record_vtable;
-	case BLOCK_TYPE_LOG:
+	case REFTABLE_BLOCK_TYPE_LOG:
 		return &reftable_log_record_vtable;
-	case BLOCK_TYPE_INDEX:
+	case REFTABLE_BLOCK_TYPE_INDEX:
 		return &reftable_index_record_vtable;
-	case BLOCK_TYPE_OBJ:
+	case REFTABLE_BLOCK_TYPE_OBJ:
 		return &reftable_obj_record_vtable;
 	}
 	abort();
@@ -1309,11 +1309,11 @@ int reftable_record_init(struct reftable_record *rec, uint8_t typ)
 	rec->type = typ;
 
 	switch (typ) {
-	case BLOCK_TYPE_REF:
-	case BLOCK_TYPE_LOG:
-	case BLOCK_TYPE_OBJ:
+	case REFTABLE_BLOCK_TYPE_REF:
+	case REFTABLE_BLOCK_TYPE_LOG:
+	case REFTABLE_BLOCK_TYPE_OBJ:
 		return 0;
-	case BLOCK_TYPE_INDEX:
+	case REFTABLE_BLOCK_TYPE_INDEX:
 		reftable_buf_init(&rec->u.idx.last_key);
 		return 0;
 	default:
diff --git a/reftable/record.h b/reftable/record.h
index 867810a..7953f35 100644
--- a/reftable/record.h
+++ b/reftable/record.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef RECORD_H
 #define RECORD_H
diff --git a/reftable/reftable-basics.h b/reftable/reftable-basics.h
index e0397ed..6d73f19 100644
--- a/reftable/reftable-basics.h
+++ b/reftable/reftable-basics.h
@@ -4,13 +4,21 @@
  * Use of this source code is governed by a BSD-style
  * license that can be found in the LICENSE file or at
  * https://developers.google.com/open-source/licenses/bsd
-*/
+ */
 
 #ifndef REFTABLE_BASICS_H
 #define REFTABLE_BASICS_H
 
 #include <stddef.h>
 
+/* A buffer that contains arbitrary byte slices. */
+struct reftable_buf {
+	size_t alloc;
+	size_t len;
+	char *buf;
+};
+#define REFTABLE_BUF_INIT { 0 }
+
 /*
  * Hash functions understood by the reftable library. Note that the values are
  * arbitrary and somewhat random such that we can easily detect cases where the
diff --git a/reftable/reftable-block.h b/reftable/reftable-block.h
new file mode 100644
index 0000000..0b05a8f
--- /dev/null
+++ b/reftable/reftable-block.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
+
+#ifndef REFTABLE_BLOCK_H
+#define REFTABLE_BLOCK_H
+
+#include <stdint.h>
+
+#include "reftable-basics.h"
+#include "reftable-blocksource.h"
+#include "reftable-iterator.h"
+
+struct z_stream_s;
+
+/*
+ * A block part of a reftable. Contains records as well as some metadata
+ * describing them.
+ */
+struct reftable_block {
+	/*
+	 * Offset of the block header; nonzero for the first block in a
+	 * reftable.
+	 */
+	uint32_t header_off;
+
+	/* The memory block. */
+	struct reftable_block_data block_data;
+	uint32_t hash_size;
+
+	/* Uncompressed data for log entries. */
+	struct z_stream_s *zstream;
+	unsigned char *uncompressed_data;
+	size_t uncompressed_cap;
+
+	/*
+	 * Restart point data. Restart points are located after the block's
+	 * record data.
+	 */
+	uint16_t restart_count;
+	uint32_t restart_off;
+
+	/*
+	 * Size of the data in the file. For log blocks, this is the compressed
+	 * size.
+	 */
+	uint32_t full_block_size;
+	uint8_t block_type;
+};
+
+/* Initialize a reftable block from the given block source. */
+int reftable_block_init(struct reftable_block *b,
+			struct reftable_block_source *source,
+			uint32_t offset, uint32_t header_size,
+			uint32_t table_block_size, uint32_t hash_size,
+			uint8_t want_type);
+
+/* Release resources allocated by the block. */
+void reftable_block_release(struct reftable_block *b);
+
+/* Initialize a generic record iterator from the given block. */
+int reftable_block_init_iterator(const struct reftable_block *b,
+				 struct reftable_iterator *it);
+
+/* Returns the block type (eg. 'r' for refs). */
+uint8_t reftable_block_type(const struct reftable_block *b);
+
+/* Decodes the first key in the block. */
+int reftable_block_first_key(const struct reftable_block *b, struct reftable_buf *key);
+
+#endif /* REFTABLE_BLOCK_H */
diff --git a/reftable/reftable-blocksource.h b/reftable/reftable-blocksource.h
index 6b326aa..f5ba867 100644
--- a/reftable/reftable-blocksource.h
+++ b/reftable/reftable-blocksource.h
@@ -1,17 +1,18 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef REFTABLE_BLOCKSOURCE_H
 #define REFTABLE_BLOCKSOURCE_H
 
 #include <stdint.h>
 
-/* block_source is a generic wrapper for a seekable readable file.
+/*
+ * Generic wrapper for a seekable readable file.
  */
 struct reftable_block_source {
 	struct reftable_block_source_vtable *ops;
@@ -20,7 +21,7 @@ struct reftable_block_source {
 
 /* a contiguous segment of bytes. It keeps track of its generating block_source
  * so it can return itself into the pool. */
-struct reftable_block {
+struct reftable_block_data {
 	uint8_t *data;
 	size_t len;
 	struct reftable_block_source source;
@@ -28,20 +29,20 @@ struct reftable_block {
 
 /* block_source_vtable are the operations that make up block_source */
 struct reftable_block_source_vtable {
-	/* returns the size of a block source */
+	/* Returns the size of a block source. */
 	uint64_t (*size)(void *source);
 
 	/*
 	 * Reads a segment from the block source. It is an error to read beyond
 	 * the end of the block.
 	 */
-	ssize_t (*read_block)(void *source, struct reftable_block *dest,
-			     uint64_t off, uint32_t size);
+	ssize_t (*read_data)(void *source, struct reftable_block_data *dest,
+			uint64_t off, uint32_t size);
 
-	/* mark the block as read; may return the data back to malloc */
-	void (*return_block)(void *source, struct reftable_block *blockp);
+	/* Mark the block as read; may release the data. */
+	void (*release_data)(void *source, struct reftable_block_data *data);
 
-	/* release all resources associated with the block source */
+	/* Release all resources associated with the block source. */
 	void (*close)(void *source);
 };
 
diff --git a/reftable/reftable-constants.h b/reftable/reftable-constants.h
new file mode 100644
index 0000000..4ae9ba4
--- /dev/null
+++ b/reftable/reftable-constants.h
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
+
+#ifndef REFTABLE_CONSTANTS_H
+#define REFTABLE_CONSTANTS_H
+
+#define REFTABLE_BLOCK_TYPE_LOG 'g'
+#define REFTABLE_BLOCK_TYPE_INDEX 'i'
+#define REFTABLE_BLOCK_TYPE_REF 'r'
+#define REFTABLE_BLOCK_TYPE_OBJ 'o'
+#define REFTABLE_BLOCK_TYPE_ANY 0
+
+#endif /* REFTABLE_CONSTANTS_H */
diff --git a/reftable/reftable-error.h b/reftable/reftable-error.h
index a7e33d9..d100e0d 100644
--- a/reftable/reftable-error.h
+++ b/reftable/reftable-error.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef REFTABLE_ERROR_H
 #define REFTABLE_ERROR_H
diff --git a/reftable/reftable-iterator.h b/reftable/reftable-iterator.h
index e3bf688..af58202 100644
--- a/reftable/reftable-iterator.h
+++ b/reftable/reftable-iterator.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef REFTABLE_ITERATOR_H
 #define REFTABLE_ITERATOR_H
diff --git a/reftable/reftable-merged.h b/reftable/reftable-merged.h
index f2d01c3..e5af846 100644
--- a/reftable/reftable-merged.h
+++ b/reftable/reftable-merged.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef REFTABLE_MERGED_H
 #define REFTABLE_MERGED_H
@@ -26,14 +26,14 @@ license that can be found in the LICENSE file or at
 /* A merged table is implements seeking/iterating over a stack of tables. */
 struct reftable_merged_table;
 
-struct reftable_reader;
+struct reftable_table;
 
 /*
- * reftable_merged_table_new creates a new merged table. The readers must be
+ * reftable_merged_table_new creates a new merged table. The tables must be
  * kept alive as long as the merged table is still in use.
  */
 int reftable_merged_table_new(struct reftable_merged_table **dest,
-			      struct reftable_reader **readers, size_t n,
+			      struct reftable_table **tables, size_t n,
 			      enum reftable_hash hash_id);
 
 /* Initialize a merged table iterator for reading refs. */
diff --git a/reftable/reftable-reader.h b/reftable/reftable-reader.h
deleted file mode 100644
index 0085fbb..0000000
--- a/reftable/reftable-reader.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-  Copyright 2020 Google LLC
-
-  Use of this source code is governed by a BSD-style
-  license that can be found in the LICENSE file or at
-  https://developers.google.com/open-source/licenses/bsd
-*/
-
-#ifndef REFTABLE_READER_H
-#define REFTABLE_READER_H
-
-#include "reftable-iterator.h"
-#include "reftable-blocksource.h"
-
-/*
- * Reading single tables
- *
- * The follow routines are for reading single files. For an
- * application-level interface, skip ahead to struct
- * reftable_merged_table and struct reftable_stack.
- */
-
-/* The reader struct is a handle to an open reftable file. */
-struct reftable_reader;
-
-/* reftable_reader_new opens a reftable for reading. If successful,
- * returns 0 code and sets pp. The name is used for creating a
- * stack. Typically, it is the basename of the file. The block source
- * `src` is owned by the reader, and is closed on calling
- * reftable_reader_destroy(). On error, the block source `src` is
- * closed as well.
- */
-int reftable_reader_new(struct reftable_reader **pp,
-			struct reftable_block_source *src, const char *name);
-
-/*
- * Manage the reference count of the reftable reader. A newly initialized
- * reader starts with a refcount of 1 and will be deleted once the refcount has
- * reached 0.
- *
- * This is required because readers may have longer lifetimes than the stack
- * they belong to. The stack may for example be reloaded while the old tables
- * are still being accessed by an iterator.
- */
-void reftable_reader_incref(struct reftable_reader *reader);
-void reftable_reader_decref(struct reftable_reader *reader);
-
-/* Initialize a reftable iterator for reading refs. */
-int reftable_reader_init_ref_iterator(struct reftable_reader *r,
-				      struct reftable_iterator *it);
-
-/* Initialize a reftable iterator for reading logs. */
-int reftable_reader_init_log_iterator(struct reftable_reader *r,
-				      struct reftable_iterator *it);
-
-/* returns the hash ID used in this table. */
-enum reftable_hash reftable_reader_hash_id(struct reftable_reader *r);
-
-/* return an iterator for the refs pointing to `oid`. */
-int reftable_reader_refs_for(struct reftable_reader *r,
-			     struct reftable_iterator *it, uint8_t *oid);
-
-/* return the max_update_index for a table */
-uint64_t reftable_reader_max_update_index(struct reftable_reader *r);
-
-/* return the min_update_index for a table */
-uint64_t reftable_reader_min_update_index(struct reftable_reader *r);
-
-/* print blocks onto stdout for debugging. */
-int reftable_reader_print_blocks(const char *tablename);
-
-#endif
diff --git a/reftable/reftable-record.h b/reftable/reftable-record.h
index 931e594..385a74c 100644
--- a/reftable/reftable-record.h
+++ b/reftable/reftable-record.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef REFTABLE_RECORD_H
 #define REFTABLE_RECORD_H
diff --git a/reftable/reftable-stack.h b/reftable/reftable-stack.h
index ae14270..910ec6e 100644
--- a/reftable/reftable-stack.h
+++ b/reftable/reftable-stack.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef REFTABLE_STACK_H
 #define REFTABLE_STACK_H
diff --git a/reftable/reftable-table.h b/reftable/reftable-table.h
new file mode 100644
index 0000000..5f935d0
--- /dev/null
+++ b/reftable/reftable-table.h
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
+
+#ifndef REFTABLE_TABLE_H
+#define REFTABLE_TABLE_H
+
+#include "reftable-iterator.h"
+#include "reftable-block.h"
+#include "reftable-blocksource.h"
+
+/*
+ * Reading single tables
+ *
+ * The follow routines are for reading single files. For an
+ * application-level interface, skip ahead to struct
+ * reftable_merged_table and struct reftable_stack.
+ */
+
+/* Metadata for a block type. */
+struct reftable_table_offsets {
+	int is_present;
+	uint64_t offset;
+	uint64_t index_offset;
+};
+
+/* The table struct is a handle to an open reftable file. */
+struct reftable_table {
+	/* for convenience, associate a name with the instance. */
+	char *name;
+	struct reftable_block_source source;
+
+	/* Size of the file, excluding the footer. */
+	uint64_t size;
+
+	/* The hash function used for ref records. */
+	enum reftable_hash hash_id;
+
+	uint32_t block_size;
+	uint64_t min_update_index;
+	uint64_t max_update_index;
+	/* Length of the OID keys in the 'o' section */
+	int object_id_len;
+	int version;
+
+	struct reftable_table_offsets ref_offsets;
+	struct reftable_table_offsets obj_offsets;
+	struct reftable_table_offsets log_offsets;
+
+	uint64_t refcount;
+};
+
+/* reftable_table_new opens a reftable for reading. If successful,
+ * returns 0 code and sets pp. The name is used for creating a
+ * stack. Typically, it is the basename of the file. The block source
+ * `src` is owned by the table, and is closed on calling
+ * reftable_table_destroy(). On error, the block source `src` is
+ * closed as well.
+ */
+int reftable_table_new(struct reftable_table **out,
+		       struct reftable_block_source *src, const char *name);
+
+/*
+ * Manage the reference count of the reftable table. A newly initialized
+ * table starts with a refcount of 1 and will be deleted once the refcount has
+ * reached 0.
+ *
+ * This is required because tables may have longer lifetimes than the stack
+ * they belong to. The stack may for example be reloaded while the old tables
+ * are still being accessed by an iterator.
+ */
+void reftable_table_incref(struct reftable_table *table);
+void reftable_table_decref(struct reftable_table *table);
+
+/* Initialize a reftable iterator for reading refs. */
+int reftable_table_init_ref_iterator(struct reftable_table *t,
+				     struct reftable_iterator *it);
+
+/* Initialize a reftable iterator for reading logs. */
+int reftable_table_init_log_iterator(struct reftable_table *t,
+				     struct reftable_iterator *it);
+
+/* returns the hash ID used in this table. */
+enum reftable_hash reftable_table_hash_id(struct reftable_table *t);
+
+/* return an iterator for the refs pointing to `oid`. */
+int reftable_table_refs_for(struct reftable_table *t,
+			    struct reftable_iterator *it, uint8_t *oid);
+
+/* return the max_update_index for a table */
+uint64_t reftable_table_max_update_index(struct reftable_table *t);
+
+/* return the min_update_index for a table */
+uint64_t reftable_table_min_update_index(struct reftable_table *t);
+
+/*
+ * An iterator that iterates through the blocks contained in a given table.
+ */
+struct reftable_table_iterator {
+	void *iter_arg;
+};
+
+int reftable_table_iterator_init(struct reftable_table_iterator *it,
+				 struct reftable_table *t);
+
+void reftable_table_iterator_release(struct reftable_table_iterator *it);
+
+int reftable_table_iterator_next(struct reftable_table_iterator *it,
+				 const struct reftable_block **out);
+
+#endif
diff --git a/reftable/reftable-writer.h b/reftable/reftable-writer.h
index 1befe3b..0fbeff1 100644
--- a/reftable/reftable-writer.h
+++ b/reftable/reftable-writer.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef REFTABLE_WRITER_H
 #define REFTABLE_WRITER_H
diff --git a/reftable/stack.c b/reftable/stack.c
index 6dac015..4caf96a 100644
--- a/reftable/stack.c
+++ b/reftable/stack.c
@@ -1,20 +1,20 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #include "stack.h"
 
 #include "system.h"
 #include "constants.h"
 #include "merged.h"
-#include "reader.h"
 #include "reftable-error.h"
 #include "reftable-record.h"
 #include "reftable-merged.h"
+#include "table.h"
 #include "writer.h"
 
 static int stack_try_add(struct reftable_stack *st,
@@ -203,14 +203,14 @@ int reftable_stack_init_ref_iterator(struct reftable_stack *st,
 				      struct reftable_iterator *it)
 {
 	return merged_table_init_iter(reftable_stack_merged_table(st),
-				      it, BLOCK_TYPE_REF);
+				      it, REFTABLE_BLOCK_TYPE_REF);
 }
 
 int reftable_stack_init_log_iterator(struct reftable_stack *st,
 				     struct reftable_iterator *it)
 {
 	return merged_table_init_iter(reftable_stack_merged_table(st),
-				      it, BLOCK_TYPE_LOG);
+				      it, REFTABLE_BLOCK_TYPE_LOG);
 }
 
 struct reftable_merged_table *
@@ -248,11 +248,11 @@ void reftable_stack_destroy(struct reftable_stack *st)
 		REFTABLE_FREE_AND_NULL(names);
 	}
 
-	if (st->readers) {
+	if (st->tables) {
 		struct reftable_buf filename = REFTABLE_BUF_INIT;
 
-		for (size_t i = 0; i < st->readers_len; i++) {
-			const char *name = reader_name(st->readers[i]);
+		for (size_t i = 0; i < st->tables_len; i++) {
+			const char *name = reftable_table_name(st->tables[i]);
 			int try_unlinking = 1;
 
 			reftable_buf_reset(&filename);
@@ -260,7 +260,7 @@ void reftable_stack_destroy(struct reftable_stack *st)
 				if (stack_filename(&filename, st, name) < 0)
 					try_unlinking = 0;
 			}
-			reftable_reader_decref(st->readers[i]);
+			reftable_table_decref(st->tables[i]);
 
 			if (try_unlinking && filename.len) {
 				/* On Windows, can only unlink after closing. */
@@ -269,8 +269,8 @@ void reftable_stack_destroy(struct reftable_stack *st)
 		}
 
 		reftable_buf_release(&filename);
-		st->readers_len = 0;
-		REFTABLE_FREE_AND_NULL(st->readers);
+		st->tables_len = 0;
+		REFTABLE_FREE_AND_NULL(st->tables);
 	}
 
 	if (st->list_fd >= 0) {
@@ -284,14 +284,14 @@ void reftable_stack_destroy(struct reftable_stack *st)
 	free_names(names);
 }
 
-static struct reftable_reader **stack_copy_readers(struct reftable_stack *st,
-						   size_t cur_len)
+static struct reftable_table **stack_copy_tables(struct reftable_stack *st,
+						 size_t cur_len)
 {
-	struct reftable_reader **cur = reftable_calloc(cur_len, sizeof(*cur));
+	struct reftable_table **cur = reftable_calloc(cur_len, sizeof(*cur));
 	if (!cur)
 		return NULL;
 	for (size_t i = 0; i < cur_len; i++)
-		cur[i] = st->readers[i];
+		cur[i] = st->tables[i];
 	return cur;
 }
 
@@ -299,19 +299,19 @@ static int reftable_stack_reload_once(struct reftable_stack *st,
 				      const char **names,
 				      int reuse_open)
 {
-	size_t cur_len = !st->merged ? 0 : st->merged->readers_len;
-	struct reftable_reader **cur = NULL;
-	struct reftable_reader **reused = NULL;
-	struct reftable_reader **new_readers = NULL;
+	size_t cur_len = !st->merged ? 0 : st->merged->tables_len;
+	struct reftable_table **cur = NULL;
+	struct reftable_table **reused = NULL;
+	struct reftable_table **new_tables = NULL;
 	size_t reused_len = 0, reused_alloc = 0, names_len;
-	size_t new_readers_len = 0;
+	size_t new_tables_len = 0;
 	struct reftable_merged_table *new_merged = NULL;
 	struct reftable_buf table_path = REFTABLE_BUF_INIT;
 	int err = 0;
 	size_t i;
 
 	if (cur_len) {
-		cur = stack_copy_readers(st, cur_len);
+		cur = stack_copy_tables(st, cur_len);
 		if (!cur) {
 			err = REFTABLE_OUT_OF_MEMORY_ERROR;
 			goto done;
@@ -321,28 +321,28 @@ static int reftable_stack_reload_once(struct reftable_stack *st,
 	names_len = names_length(names);
 
 	if (names_len) {
-		new_readers = reftable_calloc(names_len, sizeof(*new_readers));
-		if (!new_readers) {
+		new_tables = reftable_calloc(names_len, sizeof(*new_tables));
+		if (!new_tables) {
 			err = REFTABLE_OUT_OF_MEMORY_ERROR;
 			goto done;
 		}
 	}
 
 	while (*names) {
-		struct reftable_reader *rd = NULL;
+		struct reftable_table *table = NULL;
 		const char *name = *names++;
 
 		/* this is linear; we assume compaction keeps the number of
 		   tables under control so this is not quadratic. */
 		for (i = 0; reuse_open && i < cur_len; i++) {
 			if (cur[i] && 0 == strcmp(cur[i]->name, name)) {
-				rd = cur[i];
+				table = cur[i];
 				cur[i] = NULL;
 
 				/*
 				 * When reloading the stack fails, we end up
-				 * releasing all new readers. This also
-				 * includes the reused readers, even though
+				 * releasing all new tables. This also
+				 * includes the reused tables, even though
 				 * they are still in used by the old stack. We
 				 * thus need to keep them alive here, which we
 				 * do by bumping their refcount.
@@ -354,13 +354,13 @@ static int reftable_stack_reload_once(struct reftable_stack *st,
 					err = REFTABLE_OUT_OF_MEMORY_ERROR;
 					goto done;
 				}
-				reused[reused_len++] = rd;
-				reftable_reader_incref(rd);
+				reused[reused_len++] = table;
+				reftable_table_incref(table);
 				break;
 			}
 		}
 
-		if (!rd) {
+		if (!table) {
 			struct reftable_block_source src = { NULL };
 
 			err = stack_filename(&table_path, st, name);
@@ -372,36 +372,36 @@ static int reftable_stack_reload_once(struct reftable_stack *st,
 			if (err < 0)
 				goto done;
 
-			err = reftable_reader_new(&rd, &src, name);
+			err = reftable_table_new(&table, &src, name);
 			if (err < 0)
 				goto done;
 		}
 
-		new_readers[new_readers_len] = rd;
-		new_readers_len++;
+		new_tables[new_tables_len] = table;
+		new_tables_len++;
 	}
 
 	/* success! */
-	err = reftable_merged_table_new(&new_merged, new_readers,
-					new_readers_len, st->opts.hash_id);
+	err = reftable_merged_table_new(&new_merged, new_tables,
+					new_tables_len, st->opts.hash_id);
 	if (err < 0)
 		goto done;
 
 	/*
-	 * Close the old, non-reused readers and proactively try to unlink
+	 * Close the old, non-reused tables and proactively try to unlink
 	 * them. This is done for systems like Windows, where the underlying
-	 * file of such an open reader wouldn't have been possible to be
+	 * file of such an open table wouldn't have been possible to be
 	 * unlinked by the compacting process.
 	 */
 	for (i = 0; i < cur_len; i++) {
 		if (cur[i]) {
-			const char *name = reader_name(cur[i]);
+			const char *name = reftable_table_name(cur[i]);
 
 			err = stack_filename(&table_path, st, name);
 			if (err < 0)
 				goto done;
 
-			reftable_reader_decref(cur[i]);
+			reftable_table_decref(cur[i]);
 			unlink(table_path.buf);
 		}
 	}
@@ -412,25 +412,25 @@ static int reftable_stack_reload_once(struct reftable_stack *st,
 	new_merged->suppress_deletions = 1;
 	st->merged = new_merged;
 
-	if (st->readers)
-		reftable_free(st->readers);
-	st->readers = new_readers;
-	st->readers_len = new_readers_len;
-	new_readers = NULL;
-	new_readers_len = 0;
+	if (st->tables)
+		reftable_free(st->tables);
+	st->tables = new_tables;
+	st->tables_len = new_tables_len;
+	new_tables = NULL;
+	new_tables_len = 0;
 
 	/*
-	 * Decrement the refcount of reused readers again. This only needs to
+	 * Decrement the refcount of reused tables again. This only needs to
 	 * happen on the successful case, because on the unsuccessful one we
-	 * decrement their refcount via `new_readers`.
+	 * decrement their refcount via `new_tables`.
 	 */
 	for (i = 0; i < reused_len; i++)
-		reftable_reader_decref(reused[i]);
+		reftable_table_decref(reused[i]);
 
 done:
-	for (i = 0; i < new_readers_len; i++)
-		reftable_reader_decref(new_readers[i]);
-	reftable_free(new_readers);
+	for (i = 0; i < new_tables_len; i++)
+		reftable_table_decref(new_tables[i]);
+	reftable_free(new_tables);
 	reftable_free(reused);
 	reftable_free(cur);
 	reftable_buf_release(&table_path);
@@ -615,10 +615,10 @@ static int stack_uptodate(struct reftable_stack *st)
 			/*
 			 * It's fine for "tables.list" to not exist. In that
 			 * case, we have to refresh when the loaded stack has
-			 * any readers.
+			 * any tables.
 			 */
 			if (errno == ENOENT)
-				return !!st->readers_len;
+				return !!st->tables_len;
 			return REFTABLE_IO_ERROR;
 		}
 
@@ -637,19 +637,19 @@ static int stack_uptodate(struct reftable_stack *st)
 	if (err < 0)
 		return err;
 
-	for (size_t i = 0; i < st->readers_len; i++) {
+	for (size_t i = 0; i < st->tables_len; i++) {
 		if (!names[i]) {
 			err = 1;
 			goto done;
 		}
 
-		if (strcmp(st->readers[i]->name, names[i])) {
+		if (strcmp(st->tables[i]->name, names[i])) {
 			err = 1;
 			goto done;
 		}
 	}
 
-	if (names[st->merged->readers_len]) {
+	if (names[st->merged->tables_len]) {
 		err = 1;
 		goto done;
 	}
@@ -792,8 +792,8 @@ int reftable_addition_commit(struct reftable_addition *add)
 	if (add->new_tables_len == 0)
 		goto done;
 
-	for (i = 0; i < add->stack->merged->readers_len; i++) {
-		if ((err = reftable_buf_addstr(&table_list, add->stack->readers[i]->name)) < 0 ||
+	for (i = 0; i < add->stack->merged->tables_len; i++) {
+		if ((err = reftable_buf_addstr(&table_list, add->stack->tables[i]->name)) < 0 ||
 		    (err = reftable_buf_addstr(&table_list, "\n")) < 0)
 			goto done;
 	}
@@ -1000,9 +1000,9 @@ int reftable_addition_add(struct reftable_addition *add,
 
 uint64_t reftable_stack_next_update_index(struct reftable_stack *st)
 {
-	int sz = st->merged->readers_len;
+	int sz = st->merged->tables_len;
 	if (sz > 0)
-		return reftable_reader_max_update_index(st->readers[sz - 1]) +
+		return reftable_table_max_update_index(st->tables[sz - 1]) +
 		       1;
 	return 1;
 }
@@ -1021,8 +1021,8 @@ static int stack_compact_locked(struct reftable_stack *st,
 	struct reftable_tmpfile tab_file = REFTABLE_TMPFILE_INIT;
 	int err = 0;
 
-	err = format_name(&next_name, reftable_reader_min_update_index(st->readers[first]),
-			  reftable_reader_max_update_index(st->readers[last]));
+	err = format_name(&next_name, reftable_table_min_update_index(st->tables[first]),
+			  reftable_table_max_update_index(st->tables[last]));
 	if (err < 0)
 		goto done;
 
@@ -1087,18 +1087,18 @@ static int stack_write_compact(struct reftable_stack *st,
 	int err = 0;
 
 	for (size_t i = first; i <= last; i++)
-		st->stats.bytes += st->readers[i]->size;
-	err = reftable_writer_set_limits(wr, st->readers[first]->min_update_index,
-					 st->readers[last]->max_update_index);
+		st->stats.bytes += st->tables[i]->size;
+	err = reftable_writer_set_limits(wr, st->tables[first]->min_update_index,
+					 st->tables[last]->max_update_index);
 	if (err < 0)
 		goto done;
 
-	err = reftable_merged_table_new(&mt, st->readers + first, subtabs_len,
+	err = reftable_merged_table_new(&mt, st->tables + first, subtabs_len,
 					st->opts.hash_id);
 	if (err < 0)
 		goto done;
 
-	err = merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
+	err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_REF);
 	if (err < 0)
 		goto done;
 
@@ -1126,7 +1126,7 @@ static int stack_write_compact(struct reftable_stack *st,
 	}
 	reftable_iterator_destroy(&it);
 
-	err = merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG);
+	err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_LOG);
 	if (err < 0)
 		goto done;
 
@@ -1250,7 +1250,7 @@ static int stack_compact_range(struct reftable_stack *st,
 		table_locks[i] = REFTABLE_FLOCK_INIT;
 
 	for (i = last + 1; i > first; i--) {
-		err = stack_filename(&table_name, st, reader_name(st->readers[i - 1]));
+		err = stack_filename(&table_name, st, reftable_table_name(st->tables[i - 1]));
 		if (err < 0)
 			goto done;
 
@@ -1376,7 +1376,7 @@ static int stack_compact_range(struct reftable_stack *st,
 		 * compacted in the updated "tables.list" file.
 		 */
 		for (size_t i = 0; names[i]; i++) {
-			if (strcmp(names[i], st->readers[first]->name))
+			if (strcmp(names[i], st->tables[first]->name))
 				continue;
 
 			/*
@@ -1386,8 +1386,8 @@ static int stack_compact_range(struct reftable_stack *st,
 			 * have compacted them.
 			 */
 			for (size_t j = 1; j < last - first + 1; j++) {
-				const char *old = first + j < st->merged->readers_len ?
-					st->readers[first + j]->name : NULL;
+				const char *old = first + j < st->merged->tables_len ?
+					st->tables[first + j]->name : NULL;
 				const char *new = names[i + j];
 
 				/*
@@ -1427,16 +1427,16 @@ static int stack_compact_range(struct reftable_stack *st,
 		 * `fd_read_lines()` uses a `NULL` sentinel to indicate that
 		 * the array is at its end. As we use `free_names()` to free
 		 * the array, we need to include this sentinel value here and
-		 * thus have to allocate `readers_len + 1` many entries.
+		 * thus have to allocate `tables_len + 1` many entries.
 		 */
-		REFTABLE_CALLOC_ARRAY(names, st->merged->readers_len + 1);
+		REFTABLE_CALLOC_ARRAY(names, st->merged->tables_len + 1);
 		if (!names) {
 			err = REFTABLE_OUT_OF_MEMORY_ERROR;
 			goto done;
 		}
 
-		for (size_t i = 0; i < st->merged->readers_len; i++) {
-			names[i] = reftable_strdup(st->readers[i]->name);
+		for (size_t i = 0; i < st->merged->tables_len; i++) {
+			names[i] = reftable_strdup(st->tables[i]->name);
 			if (!names[i]) {
 				err = REFTABLE_OUT_OF_MEMORY_ERROR;
 				goto done;
@@ -1451,8 +1451,8 @@ static int stack_compact_range(struct reftable_stack *st,
 	 * it into place now.
 	 */
 	if (!is_empty_table) {
-		err = format_name(&new_table_name, st->readers[first]->min_update_index,
-				  st->readers[last]->max_update_index);
+		err = format_name(&new_table_name, st->tables[first]->min_update_index,
+				  st->tables[last]->max_update_index);
 		if (err < 0)
 			goto done;
 
@@ -1559,7 +1559,7 @@ static int stack_compact_range(struct reftable_stack *st,
 int reftable_stack_compact_all(struct reftable_stack *st,
 			       struct reftable_log_expiry_config *config)
 {
-	size_t last = st->merged->readers_len ? st->merged->readers_len - 1 : 0;
+	size_t last = st->merged->tables_len ? st->merged->tables_len - 1 : 0;
 	return stack_compact_range(st, 0, last, config, 0);
 }
 
@@ -1650,12 +1650,12 @@ static uint64_t *stack_table_sizes_for_compaction(struct reftable_stack *st)
 	int overhead = header_size(version) - 1;
 	uint64_t *sizes;
 
-	REFTABLE_CALLOC_ARRAY(sizes, st->merged->readers_len);
+	REFTABLE_CALLOC_ARRAY(sizes, st->merged->tables_len);
 	if (!sizes)
 		return NULL;
 
-	for (size_t i = 0; i < st->merged->readers_len; i++)
-		sizes[i] = st->readers[i]->size - overhead;
+	for (size_t i = 0; i < st->merged->tables_len; i++)
+		sizes[i] = st->tables[i]->size - overhead;
 
 	return sizes;
 }
@@ -1665,14 +1665,14 @@ int reftable_stack_auto_compact(struct reftable_stack *st)
 	struct segment seg;
 	uint64_t *sizes;
 
-	if (st->merged->readers_len < 2)
+	if (st->merged->tables_len < 2)
 		return 0;
 
 	sizes = stack_table_sizes_for_compaction(st);
 	if (!sizes)
 		return REFTABLE_OUT_OF_MEMORY_ERROR;
 
-	seg = suggest_compaction_segment(sizes, st->merged->readers_len,
+	seg = suggest_compaction_segment(sizes, st->merged->tables_len,
 					 st->opts.auto_compaction_factor);
 	reftable_free(sizes);
 
@@ -1763,7 +1763,7 @@ static void remove_maybe_stale_table(struct reftable_stack *st, uint64_t max,
 	int err = 0;
 	uint64_t update_idx = 0;
 	struct reftable_block_source src = { NULL };
-	struct reftable_reader *rd = NULL;
+	struct reftable_table *table = NULL;
 	struct reftable_buf table_path = REFTABLE_BUF_INIT;
 
 	err = stack_filename(&table_path, st, name);
@@ -1774,12 +1774,12 @@ static void remove_maybe_stale_table(struct reftable_stack *st, uint64_t max,
 	if (err < 0)
 		goto done;
 
-	err = reftable_reader_new(&rd, &src, name);
+	err = reftable_table_new(&table, &src, name);
 	if (err < 0)
 		goto done;
 
-	update_idx = reftable_reader_max_update_index(rd);
-	reftable_reader_decref(rd);
+	update_idx = reftable_table_max_update_index(table);
+	reftable_table_decref(table);
 
 	if (update_idx <= max) {
 		unlink(table_path.buf);
@@ -1803,8 +1803,8 @@ static int reftable_stack_clean_locked(struct reftable_stack *st)
 		if (!is_table_name(d->d_name))
 			continue;
 
-		for (size_t i = 0; !found && i < st->readers_len; i++)
-			found = !strcmp(reader_name(st->readers[i]), d->d_name);
+		for (size_t i = 0; !found && i < st->tables_len; i++)
+			found = !strcmp(reftable_table_name(st->tables[i]), d->d_name);
 		if (found)
 			continue;
 
diff --git a/reftable/stack.h b/reftable/stack.h
index 5b45cff..bc28f29 100644
--- a/reftable/stack.h
+++ b/reftable/stack.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef STACK_H
 #define STACK_H
@@ -22,8 +22,8 @@ struct reftable_stack {
 
 	struct reftable_write_options opts;
 
-	struct reftable_reader **readers;
-	size_t readers_len;
+	struct reftable_table **tables;
+	size_t tables_len;
 	struct reftable_merged_table *merged;
 	struct reftable_compaction_stats stats;
 };
diff --git a/reftable/system.h b/reftable/system.h
index 072d9da..beb9d24 100644
--- a/reftable/system.h
+++ b/reftable/system.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef SYSTEM_H
 #define SYSTEM_H
diff --git a/reftable/table.c b/reftable/table.c
new file mode 100644
index 0000000..56362df
--- /dev/null
+++ b/reftable/table.c
@@ -0,0 +1,779 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
+
+#include "table.h"
+
+#include "system.h"
+#include "block.h"
+#include "blocksource.h"
+#include "constants.h"
+#include "iter.h"
+#include "record.h"
+#include "reftable-error.h"
+
+static struct reftable_table_offsets *
+table_offsets_for(struct reftable_table *t, uint8_t typ)
+{
+	switch (typ) {
+	case REFTABLE_BLOCK_TYPE_REF:
+		return &t->ref_offsets;
+	case REFTABLE_BLOCK_TYPE_LOG:
+		return &t->log_offsets;
+	case REFTABLE_BLOCK_TYPE_OBJ:
+		return &t->obj_offsets;
+	}
+	abort();
+}
+
+enum reftable_hash reftable_table_hash_id(struct reftable_table *t)
+{
+	return t->hash_id;
+}
+
+const char *reftable_table_name(struct reftable_table *t)
+{
+	return t->name;
+}
+
+static int parse_footer(struct reftable_table *t, uint8_t *footer,
+			uint8_t *header)
+{
+	uint8_t *f = footer;
+	uint8_t first_block_typ;
+	int err = 0;
+	uint32_t computed_crc;
+	uint32_t file_crc;
+
+	if (memcmp(f, "REFT", 4)) {
+		err = REFTABLE_FORMAT_ERROR;
+		goto done;
+	}
+	f += 4;
+
+	if (memcmp(footer, header, header_size(t->version))) {
+		err = REFTABLE_FORMAT_ERROR;
+		goto done;
+	}
+
+	f++;
+	t->block_size = reftable_get_be24(f);
+
+	f += 3;
+	t->min_update_index = reftable_get_be64(f);
+	f += 8;
+	t->max_update_index = reftable_get_be64(f);
+	f += 8;
+
+	if (t->version == 1) {
+		t->hash_id = REFTABLE_HASH_SHA1;
+	} else {
+		switch (reftable_get_be32(f)) {
+		case REFTABLE_FORMAT_ID_SHA1:
+			t->hash_id = REFTABLE_HASH_SHA1;
+			break;
+		case REFTABLE_FORMAT_ID_SHA256:
+			t->hash_id = REFTABLE_HASH_SHA256;
+			break;
+		default:
+			err = REFTABLE_FORMAT_ERROR;
+			goto done;
+		}
+
+		f += 4;
+	}
+
+	t->ref_offsets.index_offset = reftable_get_be64(f);
+	f += 8;
+
+	t->obj_offsets.offset = reftable_get_be64(f);
+	f += 8;
+
+	t->object_id_len = t->obj_offsets.offset & ((1 << 5) - 1);
+	t->obj_offsets.offset >>= 5;
+
+	t->obj_offsets.index_offset = reftable_get_be64(f);
+	f += 8;
+	t->log_offsets.offset = reftable_get_be64(f);
+	f += 8;
+	t->log_offsets.index_offset = reftable_get_be64(f);
+	f += 8;
+
+	computed_crc = crc32(0, footer, f - footer);
+	file_crc = reftable_get_be32(f);
+	f += 4;
+	if (computed_crc != file_crc) {
+		err = REFTABLE_FORMAT_ERROR;
+		goto done;
+	}
+
+	first_block_typ = header[header_size(t->version)];
+	t->ref_offsets.is_present = (first_block_typ == REFTABLE_BLOCK_TYPE_REF);
+	t->ref_offsets.offset = 0;
+	t->log_offsets.is_present = (first_block_typ == REFTABLE_BLOCK_TYPE_LOG ||
+				     t->log_offsets.offset > 0);
+	t->obj_offsets.is_present = t->obj_offsets.offset > 0;
+	if (t->obj_offsets.is_present && !t->object_id_len) {
+		err = REFTABLE_FORMAT_ERROR;
+		goto done;
+	}
+
+	err = 0;
+done:
+	return err;
+}
+
+struct table_iter {
+	struct reftable_table *table;
+	uint8_t typ;
+	uint64_t block_off;
+	struct reftable_block block;
+	struct block_iter bi;
+	int is_finished;
+};
+
+static int table_iter_init(struct table_iter *ti, struct reftable_table *t)
+{
+	struct block_iter bi = BLOCK_ITER_INIT;
+	memset(ti, 0, sizeof(*ti));
+	reftable_table_incref(t);
+	ti->table = t;
+	ti->bi = bi;
+	return 0;
+}
+
+static int table_iter_next_in_block(struct table_iter *ti,
+				    struct reftable_record *rec)
+{
+	int res = block_iter_next(&ti->bi, rec);
+	if (res == 0 && reftable_record_type(rec) == REFTABLE_BLOCK_TYPE_REF) {
+		rec->u.ref.update_index += ti->table->min_update_index;
+	}
+
+	return res;
+}
+
+static void table_iter_block_done(struct table_iter *ti)
+{
+	reftable_block_release(&ti->block);
+	block_iter_reset(&ti->bi);
+}
+
+int table_init_block(struct reftable_table *t, struct reftable_block *block,
+		     uint64_t next_off, uint8_t want_typ)
+{
+	uint32_t header_off = next_off ? 0 : header_size(t->version);
+	int err;
+
+	if (next_off >= t->size)
+		return 1;
+
+	err = reftable_block_init(block, &t->source, next_off, header_off,
+				  t->block_size, hash_size(t->hash_id), want_typ);
+	if (err)
+		reftable_block_release(block);
+	return err;
+}
+
+static void table_iter_close(struct table_iter *ti)
+{
+	table_iter_block_done(ti);
+	block_iter_close(&ti->bi);
+	reftable_table_decref(ti->table);
+}
+
+static int table_iter_next_block(struct table_iter *ti)
+{
+	uint64_t next_block_off = ti->block_off + ti->block.full_block_size;
+	int err;
+
+	err = table_init_block(ti->table, &ti->block, next_block_off, ti->typ);
+	if (err > 0)
+		ti->is_finished = 1;
+	if (err)
+		return err;
+
+	ti->block_off = next_block_off;
+	ti->is_finished = 0;
+	block_iter_init(&ti->bi, &ti->block);
+
+	return 0;
+}
+
+static int table_iter_next(struct table_iter *ti, struct reftable_record *rec)
+{
+	if (reftable_record_type(rec) != ti->typ)
+		return REFTABLE_API_ERROR;
+
+	while (1) {
+		int err;
+
+		if (ti->is_finished)
+			return 1;
+
+		/*
+		 * Check whether the current block still has more records. If
+		 * so, return it. If the iterator returns positive then the
+		 * current block has been exhausted.
+		 */
+		err = table_iter_next_in_block(ti, rec);
+		if (err <= 0)
+			return err;
+
+		/*
+		 * Otherwise, we need to continue to the next block in the
+		 * table and retry. If there are no more blocks then the
+		 * iterator is drained.
+		 */
+		err = table_iter_next_block(ti);
+		if (err) {
+			ti->is_finished = 1;
+			return err;
+		}
+	}
+}
+
+static int table_iter_seek_to(struct table_iter *ti, uint64_t off, uint8_t typ)
+{
+	int err;
+
+	err = table_init_block(ti->table, &ti->block, off, typ);
+	if (err != 0)
+		return err;
+
+	ti->typ = reftable_block_type(&ti->block);
+	ti->block_off = off;
+	block_iter_init(&ti->bi, &ti->block);
+	ti->is_finished = 0;
+	return 0;
+}
+
+static int table_iter_seek_start(struct table_iter *ti, uint8_t typ, int index)
+{
+	struct reftable_table_offsets *offs = table_offsets_for(ti->table, typ);
+	uint64_t off = offs->offset;
+	if (index) {
+		off = offs->index_offset;
+		if (off == 0) {
+			return 1;
+		}
+		typ = REFTABLE_BLOCK_TYPE_INDEX;
+	}
+
+	return table_iter_seek_to(ti, off, typ);
+}
+
+static int table_iter_seek_linear(struct table_iter *ti,
+				  struct reftable_record *want)
+{
+	struct reftable_buf want_key = REFTABLE_BUF_INIT;
+	struct reftable_buf got_key = REFTABLE_BUF_INIT;
+	struct reftable_record rec;
+	int err;
+
+	err = reftable_record_init(&rec, reftable_record_type(want));
+	if (err < 0)
+		goto done;
+
+	err = reftable_record_key(want, &want_key);
+	if (err < 0)
+		goto done;
+
+	/*
+	 * First we need to locate the block that must contain our record. To
+	 * do so we scan through blocks linearly until we find the first block
+	 * whose first key is bigger than our wanted key. Once we have found
+	 * that block we know that the key must be contained in the preceding
+	 * block.
+	 *
+	 * This algorithm is somewhat unfortunate because it means that we
+	 * always have to seek one block too far and then back up. But as we
+	 * can only decode the _first_ key of a block but not its _last_ key we
+	 * have no other way to do this.
+	 */
+	while (1) {
+		struct table_iter next = *ti;
+
+		/*
+		 * We must be careful to not modify underlying data of `ti`
+		 * because we may find that `next` does not contain our desired
+		 * block, but that `ti` does. In that case, we would discard
+		 * `next` and continue with `ti`.
+		 *
+		 * This also means that we cannot reuse allocated memory for
+		 * `next` here. While it would be great if we could, it should
+		 * in practice not be too bad given that we should only ever
+		 * end up doing linear seeks with at most three blocks. As soon
+		 * as we have more than three blocks we would have an index, so
+		 * we would not do a linear search there anymore.
+		 */
+		memset(&next.block.block_data, 0, sizeof(next.block.block_data));
+		next.block.zstream = NULL;
+		next.block.uncompressed_data = NULL;
+		next.block.uncompressed_cap = 0;
+
+		err = table_iter_next_block(&next);
+		if (err < 0)
+			goto done;
+		if (err > 0)
+			break;
+
+		err = reftable_block_first_key(&next.block, &got_key);
+		if (err < 0)
+			goto done;
+
+		if (reftable_buf_cmp(&got_key, &want_key) > 0) {
+			table_iter_block_done(&next);
+			break;
+		}
+
+		table_iter_block_done(ti);
+		*ti = next;
+	}
+
+	/*
+	 * We have located the block that must contain our record, so we seek
+	 * the wanted key inside of it. If the block does not contain our key
+	 * we know that the corresponding record does not exist.
+	 */
+	block_iter_init(&ti->bi, &ti->block);
+	err = block_iter_seek_key(&ti->bi, &want_key);
+	if (err < 0)
+		goto done;
+	err = 0;
+
+done:
+	reftable_record_release(&rec);
+	reftable_buf_release(&want_key);
+	reftable_buf_release(&got_key);
+	return err;
+}
+
+static int table_iter_seek_indexed(struct table_iter *ti,
+				   struct reftable_record *rec)
+{
+	struct reftable_record want_index = {
+		.type = REFTABLE_BLOCK_TYPE_INDEX, .u.idx = { .last_key = REFTABLE_BUF_INIT }
+	};
+	struct reftable_record index_result = {
+		.type = REFTABLE_BLOCK_TYPE_INDEX,
+		.u.idx = { .last_key = REFTABLE_BUF_INIT },
+	};
+	int err;
+
+	err = reftable_record_key(rec, &want_index.u.idx.last_key);
+	if (err < 0)
+		goto done;
+
+	/*
+	 * The index may consist of multiple levels, where each level may have
+	 * multiple index blocks. We start by doing a linear search in the
+	 * highest layer that identifies the relevant index block as well as
+	 * the record inside that block that corresponds to our wanted key.
+	 */
+	err = table_iter_seek_linear(ti, &want_index);
+	if (err < 0)
+		goto done;
+
+	/*
+	 * Traverse down the levels until we find a non-index entry.
+	 */
+	while (1) {
+		/*
+		 * In case we seek a record that does not exist the index iter
+		 * will tell us that the iterator is over. This works because
+		 * the last index entry of the current level will contain the
+		 * last key it knows about. So in case our seeked key is larger
+		 * than the last indexed key we know that it won't exist.
+		 *
+		 * There is one subtlety in the layout of the index section
+		 * that makes this work as expected: the highest-level index is
+		 * at end of the section and will point backwards and thus we
+		 * start reading from the end of the index section, not the
+		 * beginning.
+		 *
+		 * If that wasn't the case and the order was reversed then the
+		 * linear seek would seek into the lower levels and traverse
+		 * all levels of the index only to find out that the key does
+		 * not exist.
+		 */
+		err = table_iter_next(ti, &index_result);
+		if (err != 0)
+			goto done;
+
+		err = table_iter_seek_to(ti, index_result.u.idx.offset, 0);
+		if (err != 0)
+			goto done;
+
+		block_iter_init(&ti->bi, &ti->block);
+
+		err = block_iter_seek_key(&ti->bi, &want_index.u.idx.last_key);
+		if (err < 0)
+			goto done;
+
+		if (ti->typ == reftable_record_type(rec)) {
+			err = 0;
+			break;
+		}
+
+		if (ti->typ != REFTABLE_BLOCK_TYPE_INDEX) {
+			err = REFTABLE_FORMAT_ERROR;
+			goto done;
+		}
+	}
+
+done:
+	reftable_record_release(&want_index);
+	reftable_record_release(&index_result);
+	return err;
+}
+
+static int table_iter_seek(struct table_iter *ti,
+			   struct reftable_record *want)
+{
+	uint8_t typ = reftable_record_type(want);
+	struct reftable_table_offsets *offs = table_offsets_for(ti->table, typ);
+	int err;
+
+	err = table_iter_seek_start(ti, reftable_record_type(want),
+				    !!offs->index_offset);
+	if (err < 0)
+		goto out;
+
+	if (offs->index_offset)
+		err = table_iter_seek_indexed(ti, want);
+	else
+		err = table_iter_seek_linear(ti, want);
+	if (err)
+		goto out;
+
+out:
+	return err;
+}
+
+static int table_iter_seek_void(void *ti, struct reftable_record *want)
+{
+	return table_iter_seek(ti, want);
+}
+
+static int table_iter_next_void(void *ti, struct reftable_record *rec)
+{
+	return table_iter_next(ti, rec);
+}
+
+static void table_iter_close_void(void *ti)
+{
+	table_iter_close(ti);
+}
+
+static struct reftable_iterator_vtable table_iter_vtable = {
+	.seek = &table_iter_seek_void,
+	.next = &table_iter_next_void,
+	.close = &table_iter_close_void,
+};
+
+static void iterator_from_table_iter(struct reftable_iterator *it,
+				     struct table_iter *ti)
+{
+	assert(!it->ops);
+	it->iter_arg = ti;
+	it->ops = &table_iter_vtable;
+}
+
+int table_init_iter(struct reftable_table *t,
+		    struct reftable_iterator *it,
+		    uint8_t typ)
+{
+	struct reftable_table_offsets *offs = table_offsets_for(t, typ);
+
+	if (offs->is_present) {
+		struct table_iter *ti;
+		REFTABLE_ALLOC_ARRAY(ti, 1);
+		if (!ti)
+			return REFTABLE_OUT_OF_MEMORY_ERROR;
+
+		table_iter_init(ti, t);
+		iterator_from_table_iter(it, ti);
+	} else {
+		iterator_set_empty(it);
+	}
+
+	return 0;
+}
+
+int reftable_table_init_ref_iterator(struct reftable_table *t,
+				     struct reftable_iterator *it)
+{
+	return table_init_iter(t, it, REFTABLE_BLOCK_TYPE_REF);
+}
+
+int reftable_table_init_log_iterator(struct reftable_table *t,
+				     struct reftable_iterator *it)
+{
+	return table_init_iter(t, it, REFTABLE_BLOCK_TYPE_LOG);
+}
+
+int reftable_table_new(struct reftable_table **out,
+		       struct reftable_block_source *source, char const *name)
+{
+	struct reftable_block_data footer = { 0 };
+	struct reftable_block_data header = { 0 };
+	struct reftable_table *t;
+	uint64_t file_size = block_source_size(source);
+	uint32_t read_size;
+	ssize_t bytes_read;
+	int err;
+
+	REFTABLE_CALLOC_ARRAY(t, 1);
+	if (!t) {
+		err = REFTABLE_OUT_OF_MEMORY_ERROR;
+		goto done;
+	}
+
+	/*
+	 * We need one extra byte to read the type of first block. We also
+	 * pretend to always be reading v2 of the format because it is larger.
+	 */
+	read_size = header_size(2) + 1;
+	if (read_size > file_size) {
+		err = REFTABLE_FORMAT_ERROR;
+		goto done;
+	}
+
+	bytes_read = block_source_read_data(source, &header, 0, read_size);
+	if (bytes_read < 0 || (size_t)bytes_read != read_size) {
+		err = REFTABLE_IO_ERROR;
+		goto done;
+	}
+
+	if (memcmp(header.data, "REFT", 4)) {
+		err = REFTABLE_FORMAT_ERROR;
+		goto done;
+	}
+	t->version = header.data[4];
+	if (t->version != 1 && t->version != 2) {
+		err = REFTABLE_FORMAT_ERROR;
+		goto done;
+	}
+
+	t->size = file_size - footer_size(t->version);
+	t->source = *source;
+	t->name = reftable_strdup(name);
+	if (!t->name) {
+		err = REFTABLE_OUT_OF_MEMORY_ERROR;
+		goto done;
+	}
+	t->hash_id = 0;
+	t->refcount = 1;
+
+	bytes_read = block_source_read_data(source, &footer, t->size,
+					    footer_size(t->version));
+	if (bytes_read < 0 || (size_t)bytes_read != footer_size(t->version)) {
+		err = REFTABLE_IO_ERROR;
+		goto done;
+	}
+
+	err = parse_footer(t, footer.data, header.data);
+	if (err)
+		goto done;
+
+	*out = t;
+
+done:
+	block_source_release_data(&footer);
+	block_source_release_data(&header);
+	if (err) {
+		if (t)
+			reftable_free(t->name);
+		reftable_free(t);
+		block_source_close(source);
+	}
+	return err;
+}
+
+void reftable_table_incref(struct reftable_table *t)
+{
+	t->refcount++;
+}
+
+void reftable_table_decref(struct reftable_table *t)
+{
+	if (!t)
+		return;
+	if (--t->refcount)
+		return;
+	block_source_close(&t->source);
+	REFTABLE_FREE_AND_NULL(t->name);
+	reftable_free(t);
+}
+
+static int reftable_table_refs_for_indexed(struct reftable_table *t,
+					   struct reftable_iterator *it,
+					   uint8_t *oid)
+{
+	struct reftable_record want = {
+		.type = REFTABLE_BLOCK_TYPE_OBJ,
+		.u.obj = {
+			.hash_prefix = oid,
+			.hash_prefix_len = t->object_id_len,
+		},
+	};
+	struct reftable_iterator oit = { NULL };
+	struct reftable_record got = {
+		.type = REFTABLE_BLOCK_TYPE_OBJ,
+		.u.obj = { 0 },
+	};
+	int err = 0;
+	struct indexed_table_ref_iter *itr = NULL;
+
+	/* Look through the reverse index. */
+	err = table_init_iter(t, &oit, REFTABLE_BLOCK_TYPE_OBJ);
+	if (err < 0)
+		goto done;
+
+	err = iterator_seek(&oit, &want);
+	if (err != 0)
+		goto done;
+
+	/* read out the reftable_obj_record */
+	err = iterator_next(&oit, &got);
+	if (err < 0)
+		goto done;
+
+	if (err > 0 || memcmp(want.u.obj.hash_prefix, got.u.obj.hash_prefix,
+			      t->object_id_len)) {
+		/* didn't find it; return empty iterator */
+		iterator_set_empty(it);
+		err = 0;
+		goto done;
+	}
+
+	err = indexed_table_ref_iter_new(&itr, t, oid, hash_size(t->hash_id),
+					 got.u.obj.offsets,
+					 got.u.obj.offset_len);
+	if (err < 0)
+		goto done;
+	got.u.obj.offsets = NULL;
+	iterator_from_indexed_table_ref_iter(it, itr);
+
+done:
+	reftable_iterator_destroy(&oit);
+	reftable_record_release(&got);
+	return err;
+}
+
+static int reftable_table_refs_for_unindexed(struct reftable_table *t,
+					     struct reftable_iterator *it,
+					     uint8_t *oid)
+{
+	struct table_iter *ti;
+	struct filtering_ref_iterator *filter = NULL;
+	struct filtering_ref_iterator empty = FILTERING_REF_ITERATOR_INIT;
+	uint32_t oid_len = hash_size(t->hash_id);
+	int err;
+
+	REFTABLE_ALLOC_ARRAY(ti, 1);
+	if (!ti) {
+		err = REFTABLE_OUT_OF_MEMORY_ERROR;
+		goto out;
+	}
+
+	table_iter_init(ti, t);
+	err = table_iter_seek_start(ti, REFTABLE_BLOCK_TYPE_REF, 0);
+	if (err < 0)
+		goto out;
+
+	filter = reftable_malloc(sizeof(*filter));
+	if (!filter) {
+		err = REFTABLE_OUT_OF_MEMORY_ERROR;
+		goto out;
+	}
+	*filter = empty;
+
+	err = reftable_buf_add(&filter->oid, oid, oid_len);
+	if (err < 0)
+		goto out;
+
+	iterator_from_table_iter(&filter->it, ti);
+
+	iterator_from_filtering_ref_iterator(it, filter);
+
+	err = 0;
+
+out:
+	if (err < 0) {
+		if (ti)
+			table_iter_close(ti);
+		reftable_free(ti);
+	}
+	return err;
+}
+
+int reftable_table_refs_for(struct reftable_table *t,
+			    struct reftable_iterator *it, uint8_t *oid)
+{
+	if (t->obj_offsets.is_present)
+		return reftable_table_refs_for_indexed(t, it, oid);
+	return reftable_table_refs_for_unindexed(t, it, oid);
+}
+
+uint64_t reftable_table_max_update_index(struct reftable_table *t)
+{
+	return t->max_update_index;
+}
+
+uint64_t reftable_table_min_update_index(struct reftable_table *t)
+{
+	return t->min_update_index;
+}
+
+int reftable_table_iterator_init(struct reftable_table_iterator *it,
+				 struct reftable_table *t)
+{
+	struct table_iter *ti;
+	int err;
+
+	REFTABLE_ALLOC_ARRAY(ti, 1);
+	if (!ti)
+		return REFTABLE_OUT_OF_MEMORY_ERROR;
+
+	err = table_iter_init(ti, t);
+	if (err < 0)
+		goto out;
+
+	it->iter_arg = ti;
+	err = 0;
+
+out:
+	if (err < 0)
+		reftable_free(ti);
+	return err;
+}
+
+void reftable_table_iterator_release(struct reftable_table_iterator *it)
+{
+	if (!it->iter_arg)
+		return;
+	table_iter_close(it->iter_arg);
+	reftable_free(it->iter_arg);
+	it->iter_arg = NULL;
+}
+
+int reftable_table_iterator_next(struct reftable_table_iterator *it,
+				 const struct reftable_block **out)
+{
+	struct table_iter *ti = it->iter_arg;
+	int err;
+
+	err = table_iter_next_block(ti);
+	if (err)
+		return err;
+
+	*out = &ti->block;
+
+	return 0;
+}
diff --git a/reftable/table.h b/reftable/table.h
new file mode 100644
index 0000000..c54703e
--- /dev/null
+++ b/reftable/table.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
+
+#ifndef TABLE_H
+#define TABLE_H
+
+#include "block.h"
+#include "record.h"
+#include "reftable-iterator.h"
+#include "reftable-table.h"
+
+const char *reftable_table_name(struct reftable_table *t);
+
+int table_init_iter(struct reftable_table *t,
+		    struct reftable_iterator *it,
+		    uint8_t typ);
+
+/*
+ * Initialize a block by reading from the given table and offset.
+ */
+int table_init_block(struct reftable_table *t, struct reftable_block *block,
+		     uint64_t next_off, uint8_t want_typ);
+
+#endif
diff --git a/reftable/tree.c b/reftable/tree.c
index f4dbe72..a52f7c0 100644
--- a/reftable/tree.c
+++ b/reftable/tree.c
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #include "system.h"
 #include "tree.h"
diff --git a/reftable/tree.h b/reftable/tree.h
index 9604453..2c9c465 100644
--- a/reftable/tree.h
+++ b/reftable/tree.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef TREE_H
 #define TREE_H
diff --git a/reftable/writer.c b/reftable/writer.c
index 075ea86..3b4ebdd 100644
--- a/reftable/writer.c
+++ b/reftable/writer.c
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #include "writer.h"
 
@@ -57,8 +57,10 @@ static int padded_write(struct reftable_writer *w, uint8_t *data, size_t len,
 			return -1;
 
 		n = w->write(w->write_arg, zeroed, w->pending_padding);
-		if (n < 0)
+		if (n < 0) {
+			reftable_free(zeroed);
 			return n;
+		}
 
 		w->pending_padding = 0;
 		reftable_free(zeroed);
@@ -172,7 +174,7 @@ int reftable_writer_new(struct reftable_writer **out,
 	wp->write_arg = writer_arg;
 	wp->opts = opts;
 	wp->flush = flush_func;
-	writer_reinit_block_writer(wp, BLOCK_TYPE_REF);
+	writer_reinit_block_writer(wp, REFTABLE_BLOCK_TYPE_REF);
 
 	*out = wp;
 
@@ -256,8 +258,10 @@ static int writer_index_hash(struct reftable_writer *w, struct reftable_buf *has
 
 		reftable_buf_reset(&key->hash);
 		err = reftable_buf_add(&key->hash, hash->buf, hash->len);
-		if (err < 0)
+		if (err < 0) {
+			reftable_free(key);
 			return err;
+		}
 		tree_insert(&w->obj_index_tree, key,
 			    &obj_index_tree_node_compare);
 	} else {
@@ -342,7 +346,7 @@ int reftable_writer_add_ref(struct reftable_writer *w,
 			    struct reftable_ref_record *ref)
 {
 	struct reftable_record rec = {
-		.type = BLOCK_TYPE_REF,
+		.type = REFTABLE_BLOCK_TYPE_REF,
 		.u = {
 			.ref = *ref
 		},
@@ -406,13 +410,13 @@ static int reftable_writer_add_log_verbatim(struct reftable_writer *w,
 					    struct reftable_log_record *log)
 {
 	struct reftable_record rec = {
-		.type = BLOCK_TYPE_LOG,
+		.type = REFTABLE_BLOCK_TYPE_LOG,
 		.u = {
 			.log = *log,
 		},
 	};
 	if (w->block_writer &&
-	    block_writer_type(w->block_writer) == BLOCK_TYPE_REF) {
+	    block_writer_type(w->block_writer) == REFTABLE_BLOCK_TYPE_REF) {
 		int err = writer_finish_public_section(w);
 		if (err < 0)
 			return err;
@@ -532,7 +536,7 @@ static int writer_finish_section(struct reftable_writer *w)
 
 		max_level++;
 		index_start = w->next;
-		err = writer_reinit_block_writer(w, BLOCK_TYPE_INDEX);
+		err = writer_reinit_block_writer(w, REFTABLE_BLOCK_TYPE_INDEX);
 		if (err < 0)
 			return err;
 
@@ -544,7 +548,7 @@ static int writer_finish_section(struct reftable_writer *w)
 		w->index_cap = 0;
 		for (i = 0; i < idx_len; i++) {
 			struct reftable_record rec = {
-				.type = BLOCK_TYPE_INDEX,
+				.type = REFTABLE_BLOCK_TYPE_INDEX,
 				.u = {
 					.idx = idx[i],
 				},
@@ -609,7 +613,7 @@ static void write_object_record(void *void_arg, void *key)
 	struct write_record_arg *arg = void_arg;
 	struct obj_index_tree_node *entry = key;
 	struct reftable_record
-		rec = { .type = BLOCK_TYPE_OBJ,
+		rec = { .type = REFTABLE_BLOCK_TYPE_OBJ,
 			.u.obj = {
 				.hash_prefix = (uint8_t *)entry->hash.buf,
 				.hash_prefix_len = arg->w->stats.object_id_len,
@@ -639,7 +643,7 @@ static void write_object_record(void *void_arg, void *key)
 	if (arg->err < 0)
 		goto done;
 
-	arg->err = writer_reinit_block_writer(arg->w, BLOCK_TYPE_OBJ);
+	arg->err = writer_reinit_block_writer(arg->w, REFTABLE_BLOCK_TYPE_OBJ);
 	if (arg->err < 0)
 		goto done;
 
@@ -684,7 +688,7 @@ static int writer_dump_object_index(struct reftable_writer *w)
 		infix_walk(w->obj_index_tree, &update_common, &common);
 	w->stats.object_id_len = common.max + 1;
 
-	err = writer_reinit_block_writer(w, BLOCK_TYPE_OBJ);
+	err = writer_reinit_block_writer(w, REFTABLE_BLOCK_TYPE_OBJ);
 	if (err < 0)
 		return err;
 
@@ -708,7 +712,7 @@ static int writer_finish_public_section(struct reftable_writer *w)
 	err = writer_finish_section(w);
 	if (err < 0)
 		return err;
-	if (typ == BLOCK_TYPE_REF && !w->opts.skip_index_objects &&
+	if (typ == REFTABLE_BLOCK_TYPE_REF && !w->opts.skip_index_objects &&
 	    w->stats.ref_stats.index_blocks > 0) {
 		err = writer_dump_object_index(w);
 		if (err < 0)
@@ -813,7 +817,7 @@ static int writer_flush_nonempty_block(struct reftable_writer *w)
 	 * By default, all records except for log records are padded to the
 	 * block size.
 	 */
-	if (!w->opts.unpadded && typ != BLOCK_TYPE_LOG)
+	if (!w->opts.unpadded && typ != REFTABLE_BLOCK_TYPE_LOG)
 		padding = w->opts.block_size - raw_bytes;
 
 	bstats = writer_reftable_block_stats(w, typ);
diff --git a/reftable/writer.h b/reftable/writer.h
index 1f4788a..9f53610 100644
--- a/reftable/writer.h
+++ b/reftable/writer.h
@@ -1,10 +1,10 @@
 /*
-Copyright 2020 Google LLC
-
-Use of this source code is governed by a BSD-style
-license that can be found in the LICENSE file or at
-https://developers.google.com/open-source/licenses/bsd
-*/
+ * Copyright 2020 Google LLC
+ *
+ * Use of this source code is governed by a BSD-style
+ * license that can be found in the LICENSE file or at
+ * https://developers.google.com/open-source/licenses/bsd
+ */
 
 #ifndef WRITER_H
 #define WRITER_H
diff --git a/remote-curl.c b/remote-curl.c
index 590b228..b8bc3a8 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 @@ static int post_rpc(struct rpc_state *rpc, int stateless_connect, int flush_rece
 
 	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 @@ static int post_rpc(struct rpc_state *rpc, int stateless_connect, int flush_rece
 	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 9fa3614..4099183 100644
--- a/remote.c
+++ b/remote.c
@@ -1702,7 +1702,7 @@ void set_ref_status_for_push(struct ref *remote_refs, int send_mirror,
 		if (!reject_reason && !ref->deletion && !is_null_oid(&ref->old_oid)) {
 			if (starts_with(ref->name, "refs/tags/"))
 				reject_reason = REF_STATUS_REJECT_ALREADY_EXISTS;
-			else if (!repo_has_object_file_with_flags(the_repository, &ref->old_oid, OBJECT_INFO_SKIP_FETCH_OBJECT))
+			else if (!has_object(the_repository, &ref->old_oid, HAS_OBJECT_RECHECK_PACKED))
 				reject_reason = REF_STATUS_REJECT_FETCH_FIRST;
 			else if (!lookup_commit_reference_gently(the_repository, &ref->old_oid, 1) ||
 				 !lookup_commit_reference_gently(the_repository, &ref->new_oid, 1))
diff --git a/replace-object.c b/replace-object.c
index 7b8a09b..f8c5f68 100644
--- a/replace-object.c
+++ b/replace-object.c
@@ -31,7 +31,7 @@ static int register_replace_ref(const char *refname,
 	oidcpy(&repl_obj->replacement, oid);
 
 	/* Register new object */
-	if (oidmap_put(r->objects->replace_map, repl_obj))
+	if (oidmap_put(&r->objects->replace_map, repl_obj))
 		die(_("duplicate replace ref: %s"), refname);
 
 	return 0;
@@ -48,9 +48,7 @@ void prepare_replace_object(struct repository *r)
 		return;
 	}
 
-	r->objects->replace_map =
-		xmalloc(sizeof(*r->objects->replace_map));
-	oidmap_init(r->objects->replace_map, 0);
+	oidmap_init(&r->objects->replace_map, 0);
 
 	refs_for_each_replace_ref(get_main_ref_store(r),
 				  register_replace_ref, r);
@@ -80,7 +78,7 @@ const struct object_id *do_lookup_replace_object(struct repository *r,
 	/* Try to recursively replace the object */
 	while (depth-- > 0) {
 		struct replace_object *repl_obj =
-			oidmap_get(r->objects->replace_map, cur);
+			oidmap_get(&r->objects->replace_map, cur);
 		if (!repl_obj)
 			return cur;
 		cur = &repl_obj->replacement;
diff --git a/replace-object.h b/replace-object.h
index ba478eb..3052e96 100644
--- a/replace-object.h
+++ b/replace-object.h
@@ -47,7 +47,7 @@ static inline const struct object_id *lookup_replace_object(struct repository *r
 {
 	if (!replace_refs_enabled(r) ||
 	    (r->objects->replace_map_initialized &&
-	     r->objects->replace_map->map.tablesize == 0))
+	     oidmap_get_size(&r->objects->replace_map) == 0))
 		return oid;
 	return do_lookup_replace_object(r, oid);
 }
diff --git a/revision.h b/revision.h
index 21c6a69..6d369cd 100644
--- a/revision.h
+++ b/revision.h
@@ -292,7 +292,6 @@ struct rev_info {
 	struct string_list *ref_message_ids;
 	int		add_signoff;
 	const char	*extra_headers;
-	const char	*log_reencode;
 	const char	*subject_prefix;
 	int		patch_name_max;
 	int		no_inline;
diff --git a/scalar.c b/scalar.c
index d359f08..355baf7 100644
--- a/scalar.c
+++ b/scalar.c
@@ -209,6 +209,12 @@ static int set_recommended_config(int reconfigure)
 	return 0;
 }
 
+/**
+ * Enable or disable the maintenance mode for the current repository:
+ *
+ * * If 'enable' is nonzero, run 'git maintenance start'.
+ * * If 'enable' is zero, run 'git maintenance unregister --force'.
+ */
 static int toggle_maintenance(int enable)
 {
 	return run_git("maintenance",
@@ -259,7 +265,15 @@ static int stop_fsmonitor_daemon(void)
 	return 0;
 }
 
-static int register_dir(void)
+/**
+ * Register the current directory as a Scalar enlistment, and set the
+ * recommended configuration.
+ *
+ * * If 'maintenance' is non-zero, then enable background maintenance.
+ * * If 'maintenance' is zero, then leave background maintenance as it is
+ *   currently configured.
+ */
+static int register_dir(int maintenance)
 {
 	if (add_or_remove_enlistment(1))
 		return error(_("could not add enlistment"));
@@ -267,8 +281,9 @@ static int register_dir(void)
 	if (set_recommended_config(0))
 		return error(_("could not set recommended config"));
 
-	if (toggle_maintenance(1))
-		warning(_("could not turn on maintenance"));
+	if (maintenance &&
+	    toggle_maintenance(maintenance))
+		warning(_("could not toggle maintenance"));
 
 	if (have_fsmonitor_support() && start_fsmonitor_daemon()) {
 		return error(_("could not start the FSMonitor daemon"));
@@ -411,7 +426,7 @@ static int cmd_clone(int argc, const char **argv)
 	const char *branch = NULL;
 	char *branch_to_free = NULL;
 	int full_clone = 0, single_branch = 0, show_progress = isatty(2);
-	int src = 1, tags = 1;
+	int src = 1, tags = 1, maintenance = 1;
 	struct option clone_options[] = {
 		OPT_STRING('b', "branch", &branch, N_("<branch>"),
 			   N_("branch to checkout after clone")),
@@ -424,11 +439,13 @@ static int cmd_clone(int argc, const char **argv)
 			 N_("create repository within 'src' directory")),
 		OPT_BOOL(0, "tags", &tags,
 			 N_("specify if tags should be fetched during clone")),
+		OPT_BOOL(0, "maintenance", &maintenance,
+			 N_("specify if background maintenance should be enabled")),
 		OPT_END(),
 	};
 	const char * const clone_usage[] = {
 		N_("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>]"),
 		NULL
 	};
 	const char *url;
@@ -550,7 +567,8 @@ static int cmd_clone(int argc, const char **argv)
 	if (res)
 		goto cleanup;
 
-	res = register_dir();
+	/* If --no-maintenance, then skip maintenance command entirely. */
+	res = register_dir(maintenance);
 
 cleanup:
 	free(branch_to_free);
@@ -597,11 +615,14 @@ static int cmd_list(int argc, const char **argv UNUSED)
 
 static int cmd_register(int argc, const char **argv)
 {
+	int maintenance = 1;
 	struct option options[] = {
+		OPT_BOOL(0, "maintenance", &maintenance,
+			 N_("specify if background maintenance should be enabled")),
 		OPT_END(),
 	};
 	const char * const usage[] = {
-		N_("scalar register [<enlistment>]"),
+		N_("scalar register [--[no-]maintenance] [<enlistment>]"),
 		NULL
 	};
 
@@ -610,7 +631,8 @@ static int cmd_register(int argc, const char **argv)
 
 	setup_enlistment_directory(argc, argv, usage, options, NULL);
 
-	return register_dir();
+	/* If --no-maintenance, then leave maintenance as-is. */
+	return register_dir(maintenance);
 }
 
 static int get_scalar_repos(const char *key, const char *value,
@@ -646,13 +668,19 @@ static int remove_deleted_enlistment(struct strbuf *path)
 static int cmd_reconfigure(int argc, const char **argv)
 {
 	int all = 0;
+	const char *maintenance_str = NULL;
+	int maintenance = 1; /* Enable maintenance by default. */
+
 	struct option options[] = {
 		OPT_BOOL('a', "all", &all,
 			 N_("reconfigure all registered enlistments")),
+		OPT_STRING(0, "maintenance", &maintenance_str,
+			 N_("(enable|disable|keep)"),
+			 N_("signal how to adjust background maintenance")),
 		OPT_END(),
 	};
 	const char * const usage[] = {
-		N_("scalar reconfigure [--all | <enlistment>]"),
+		N_("scalar reconfigure [--maintenance=(enable|disable|keep)] [--all | <enlistment>]"),
 		NULL
 	};
 	struct string_list scalar_repos = STRING_LIST_INIT_DUP;
@@ -672,6 +700,18 @@ static int cmd_reconfigure(int argc, const char **argv)
 		usage_msg_opt(_("--all or <enlistment>, but not both"),
 			      usage, options);
 
+	if (maintenance_str) {
+		if (!strcmp(maintenance_str, "enable"))
+			maintenance = 1;
+		else if (!strcmp(maintenance_str, "disable"))
+			maintenance = 0;
+		else if (!strcmp(maintenance_str, "keep"))
+			maintenance = -1;
+		else
+			die(_("unknown mode for --maintenance option: %s"),
+			    maintenance_str);
+	}
+
 	git_config(get_scalar_repos, &scalar_repos);
 
 	for (size_t i = 0; i < scalar_repos.nr; i++) {
@@ -736,7 +776,8 @@ static int cmd_reconfigure(int argc, const char **argv)
 		the_repository = old_repo;
 		repo_clear(&r);
 
-		if (toggle_maintenance(1) >= 0)
+		if (maintenance >= 0 &&
+		    toggle_maintenance(maintenance) >= 0)
 			succeeded = 1;
 
 loop_end:
@@ -803,13 +844,13 @@ static int cmd_run(int argc, const char **argv)
 	strbuf_release(&buf);
 
 	if (i == 0)
-		return register_dir();
+		return register_dir(1);
 
 	if (i > 0)
 		return run_git("maintenance", "run",
 			       "--task", tasks[i].task, NULL);
 
-	if (register_dir())
+	if (register_dir(1))
 		return -1;
 	for (i = 1; tasks[i].arg; i++)
 		if (run_git("maintenance", "run",
diff --git a/send-pack.c b/send-pack.c
index 5005689..86592ce 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -45,10 +45,7 @@ int option_parse_push_signed(const struct option *opt,
 static void feed_object(struct repository *r,
 			const struct object_id *oid, FILE *fh, int negative)
 {
-	if (negative &&
-	    !repo_has_object_file_with_flags(r, oid,
-					     OBJECT_INFO_SKIP_FETCH_OBJECT |
-					     OBJECT_INFO_QUICK))
+	if (negative && !has_object(r, oid, 0))
 		return;
 
 	if (negative)
diff --git a/sequencer.c b/sequencer.c
index b5c4043..1ee0abb 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -225,11 +225,6 @@ struct replay_ctx {
 	 */
 	struct strbuf current_fixups;
 	/*
-	 * Stores the reflog message that will be used when creating a
-	 * commit. Points to a static buffer and should not be free()'d.
-	 */
-	const char *reflog_message;
-	/*
 	 * The number of completed fixup and squash commands in the
 	 * current chain.
 	 */
@@ -1124,10 +1119,10 @@ static int run_command_silent_on_success(struct child_process *cmd)
  * author metadata.
  */
 static int run_git_commit(const char *defmsg,
+			  const char *reflog_action,
 			  struct replay_opts *opts,
 			  unsigned int flags)
 {
-	struct replay_ctx *ctx = opts->ctx;
 	struct child_process cmd = CHILD_PROCESS_INIT;
 
 	if ((flags & CLEANUP_MSG) && (flags & VERBATIM_MSG))
@@ -1145,7 +1140,7 @@ static int run_git_commit(const char *defmsg,
 			     gpg_opt, gpg_opt);
 	}
 
-	strvec_pushf(&cmd.env, GIT_REFLOG_ACTION "=%s", ctx->reflog_message);
+	strvec_pushf(&cmd.env, GIT_REFLOG_ACTION "=%s", reflog_action);
 
 	if (opts->committer_date_is_author_date)
 		strvec_pushf(&cmd.env, "GIT_COMMITTER_DATE=%s",
@@ -1529,10 +1524,10 @@ static int parse_head(struct repository *r, struct commit **head)
  */
 static int try_to_commit(struct repository *r,
 			 struct strbuf *msg, const char *author,
+			 const char *reflog_action,
 			 struct replay_opts *opts, unsigned int flags,
 			 struct object_id *oid)
 {
-	struct replay_ctx *ctx = opts->ctx;
 	struct object_id tree;
 	struct commit *current_head = NULL;
 	struct commit_list *parents = NULL;
@@ -1694,7 +1689,7 @@ static int try_to_commit(struct repository *r,
 		goto out;
 	}
 
-	if (update_head_with_reflog(current_head, oid, ctx->reflog_message,
+	if (update_head_with_reflog(current_head, oid, reflog_action,
 				    msg, &err)) {
 		res = error("%s", err.buf);
 		goto out;
@@ -1725,6 +1720,7 @@ static int write_rebase_head(struct object_id *oid)
 
 static int do_commit(struct repository *r,
 		     const char *msg_file, const char *author,
+		     const char *reflog_action,
 		     struct replay_opts *opts, unsigned int flags,
 		     struct object_id *oid)
 {
@@ -1740,7 +1736,7 @@ static int do_commit(struct repository *r,
 					   msg_file);
 
 		res = try_to_commit(r, msg_file ? &sb : NULL,
-				    author, opts, flags, &oid);
+				    author, reflog_action, opts, flags, &oid);
 		strbuf_release(&sb);
 		if (!res) {
 			refs_delete_ref(get_main_ref_store(r), "",
@@ -1756,7 +1752,7 @@ static int do_commit(struct repository *r,
 		if (is_rebase_i(opts) && oid)
 			if (write_rebase_head(oid))
 			    return -1;
-		return run_git_commit(msg_file, opts, flags);
+		return run_git_commit(msg_file, reflog_action, opts, flags);
 	}
 
 	return res;
@@ -2226,6 +2222,39 @@ static void refer_to_commit(struct replay_opts *opts,
 	}
 }
 
+static const char *sequencer_reflog_action(struct replay_opts *opts)
+{
+	if (!opts->reflog_action) {
+		opts->reflog_action = getenv(GIT_REFLOG_ACTION);
+		opts->reflog_action =
+			xstrdup(opts->reflog_action ? opts->reflog_action
+						    : action_name(opts));
+	}
+
+	return opts->reflog_action;
+}
+
+__attribute__((format (printf, 3, 4)))
+static const char *reflog_message(struct replay_opts *opts,
+	const char *sub_action, const char *fmt, ...)
+{
+	va_list ap;
+	static struct strbuf buf = STRBUF_INIT;
+
+	va_start(ap, fmt);
+	strbuf_reset(&buf);
+	strbuf_addstr(&buf, sequencer_reflog_action(opts));
+	if (sub_action)
+		strbuf_addf(&buf, " (%s)", sub_action);
+	if (fmt) {
+		strbuf_addstr(&buf, ": ");
+		strbuf_vaddf(&buf, fmt, ap);
+	}
+	va_end(ap);
+
+	return buf.buf;
+}
+
 static int do_pick_commit(struct repository *r,
 			  struct todo_item *item,
 			  struct replay_opts *opts,
@@ -2236,13 +2265,19 @@ static int do_pick_commit(struct repository *r,
 	const char *msg_file = should_edit(opts) ? NULL : git_path_merge_msg(r);
 	struct object_id head;
 	struct commit *base, *next, *parent;
-	const char *base_label, *next_label;
+	const char *base_label, *next_label, *reflog_action;
 	char *author = NULL;
 	struct commit_message msg = { NULL, NULL, NULL, NULL };
 	int res, unborn = 0, reword = 0, allow, drop_commit;
 	enum todo_command command = item->command;
 	struct commit *commit = item->commit;
 
+	if (is_rebase_i(opts))
+		reflog_action = reflog_message(
+			opts, command_to_string(item->command), NULL);
+	else
+		reflog_action = sequencer_reflog_action(opts);
+
 	if (opts->no_commit) {
 		/*
 		 * We do not intend to commit immediately.  We just want to
@@ -2494,7 +2529,8 @@ static int do_pick_commit(struct repository *r,
 	} /* else allow == 0 and there's nothing special to do */
 	if (!opts->no_commit && !drop_commit) {
 		if (author || command == TODO_REVERT || (flags & AMEND_MSG))
-			res = do_commit(r, msg_file, author, opts, flags,
+			res = do_commit(r, msg_file, author, reflog_action,
+					opts, flags,
 					commit? &commit->object.oid : NULL);
 		else
 			res = error(_("unable to parse commit author"));
@@ -2509,7 +2545,7 @@ static int do_pick_commit(struct repository *r,
 			 * got here.
 			 */
 			flags = EDIT_MSG | VERIFY_MSG | AMEND_MSG | ALLOW_EMPTY;
-			res = run_git_commit(NULL, opts, flags);
+			res = run_git_commit(NULL, reflog_action, opts, flags);
 			*check_todo = 1;
 		}
 	}
@@ -2600,9 +2636,12 @@ static int is_command(enum todo_command command, const char **bol)
 	const char nick = todo_command_info[command].c;
 	const char *p = *bol;
 
-	return (skip_prefix(p, str, &p) || (nick && *p++ == nick)) &&
-		(*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r' || !*p) &&
-		(*bol = p);
+	if ((skip_prefix(p, str, &p) || (nick && *p++ == nick)) &&
+	    (*p == ' ' || *p == '\t' || *p == '\n' || *p == '\r' || !*p)) {
+		*bol = p;
+		return 1;
+	}
+	return 0;
 }
 
 static int check_label_or_ref_arg(enum todo_command command, const char *arg)
@@ -3919,39 +3958,6 @@ static int do_label(struct repository *r, const char *name, int len)
 	return ret;
 }
 
-static const char *sequencer_reflog_action(struct replay_opts *opts)
-{
-	if (!opts->reflog_action) {
-		opts->reflog_action = getenv(GIT_REFLOG_ACTION);
-		opts->reflog_action =
-			xstrdup(opts->reflog_action ? opts->reflog_action
-						    : action_name(opts));
-	}
-
-	return opts->reflog_action;
-}
-
-__attribute__((format (printf, 3, 4)))
-static const char *reflog_message(struct replay_opts *opts,
-	const char *sub_action, const char *fmt, ...)
-{
-	va_list ap;
-	static struct strbuf buf = STRBUF_INIT;
-
-	va_start(ap, fmt);
-	strbuf_reset(&buf);
-	strbuf_addstr(&buf, sequencer_reflog_action(opts));
-	if (sub_action)
-		strbuf_addf(&buf, " (%s)", sub_action);
-	if (fmt) {
-		strbuf_addstr(&buf, ": ");
-		strbuf_vaddf(&buf, fmt, ap);
-	}
-	va_end(ap);
-
-	return buf.buf;
-}
-
 static struct commit *lookup_label(struct repository *r, const char *label,
 				   int len, struct strbuf *buf)
 {
@@ -4089,6 +4095,7 @@ static int do_merge(struct repository *r,
 	int merge_arg_len, oneline_offset, can_fast_forward, ret, k;
 	static struct lock_file lock;
 	const char *p;
+	const char *reflog_action = reflog_message(opts, "merge", NULL);
 
 	if (repo_hold_locked_index(r, &lock, LOCK_REPORT_ON_ERROR) < 0) {
 		ret = -1;
@@ -4360,14 +4367,15 @@ static int do_merge(struct repository *r,
 		 * value (a negative one would indicate that the `merge`
 		 * command needs to be rescheduled).
 		 */
-		ret = !!run_git_commit(git_path_merge_msg(r), opts,
-				       run_commit_flags);
+		ret = !!run_git_commit(git_path_merge_msg(r), reflog_action,
+				       opts, run_commit_flags);
 
 	if (!ret && flags & TODO_EDIT_MERGE_MSG) {
 	fast_forward_edit:
 		*check_todo = 1;
 		run_commit_flags |= AMEND_MSG | EDIT_MSG | VERIFY_MSG;
-		ret = !!run_git_commit(NULL, opts, run_commit_flags);
+		ret = !!run_git_commit(NULL, reflog_action, opts,
+				       run_commit_flags);
 	}
 
 
@@ -4882,13 +4890,9 @@ static int pick_one_commit(struct repository *r,
 			   struct replay_opts *opts,
 			   int *check_todo, int* reschedule)
 {
-	struct replay_ctx *ctx = opts->ctx;
 	int res;
 	struct todo_item *item = todo_list->items + todo_list->current;
 	const char *arg = todo_item_get_arg(todo_list, item);
-	if (is_rebase_i(opts))
-		ctx->reflog_message = reflog_message(
-			opts, command_to_string(item->command), NULL);
 
 	res = do_pick_commit(r, item, opts, is_final_fixup(todo_list),
 			     check_todo);
@@ -4947,7 +4951,6 @@ static int pick_commits(struct repository *r,
 	struct replay_ctx *ctx = opts->ctx;
 	int res = 0, reschedule = 0;
 
-	ctx->reflog_message = sequencer_reflog_action(opts);
 	if (opts->allow_ff)
 		ASSERT(!(opts->signoff || opts->no_commit ||
 			 opts->record_origin || should_edit(opts) ||
@@ -5208,6 +5211,7 @@ static int commit_staged_changes(struct repository *r,
 	unsigned int flags = ALLOW_EMPTY | EDIT_MSG;
 	unsigned int final_fixup = 0, is_clean;
 	struct strbuf rev = STRBUF_INIT;
+	const char *reflog_action = reflog_message(opts, "continue", NULL);
 	int ret;
 
 	if (has_unstaged_changes(r, 1)) {
@@ -5370,7 +5374,7 @@ static int commit_staged_changes(struct repository *r,
 	}
 
 	if (run_git_commit(final_fixup ? NULL : rebase_path_message(),
-			   opts, flags)) {
+			   reflog_action, opts, flags)) {
 		ret = error(_("could not commit staged changes."));
 		goto out;
 	}
@@ -5402,7 +5406,6 @@ static int commit_staged_changes(struct repository *r,
 
 int sequencer_continue(struct repository *r, struct replay_opts *opts)
 {
-	struct replay_ctx *ctx = opts->ctx;
 	struct todo_list todo_list = TODO_LIST_INIT;
 	int res;
 
@@ -5423,7 +5426,6 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
 			unlink(rebase_path_dropped());
 		}
 
-		ctx->reflog_message = reflog_message(opts, "continue", NULL);
 		if (commit_staged_changes(r, opts, &todo_list)) {
 			res = -1;
 			goto release_todo_list;
@@ -5475,7 +5477,6 @@ static int single_pick(struct repository *r,
 			TODO_PICK : TODO_REVERT;
 	item.commit = cmit;
 
-	opts->ctx->reflog_message = sequencer_reflog_action(opts);
 	return do_pick_commit(r, &item, opts, 0, &check_todo);
 }
 
@@ -5901,11 +5902,11 @@ static int make_script_with_merges(struct pretty_print_context *pp,
 
 		/* Create a label from the commit message */
 		strbuf_reset(&label_from_message);
-		if (skip_prefix(oneline.buf, "Merge ", &p1) &&
+		if (skip_prefix(oneline.buf, "# Merge ", &p1) &&
 		    (p1 = strchr(p1, '\'')) &&
 		    (p2 = strchr(++p1, '\'')))
 			strbuf_add(&label_from_message, p1, p2 - p1);
-		else if (skip_prefix(oneline.buf, "Merge pull request ",
+		else if (skip_prefix(oneline.buf, "# Merge pull request ",
 				     &p1) &&
 			 (p1 = strstr(p1, " from ")))
 			strbuf_addstr(&label_from_message, p1 + strlen(" from "));
@@ -5940,7 +5941,7 @@ static int make_script_with_merges(struct pretty_print_context *pp,
 
 			strbuf_addstr(&buf, label_oid(oid, label, &state));
 		}
-		strbuf_addf(&buf, " # %s", oneline.buf);
+		strbuf_addf(&buf, " %s", oneline.buf);
 
 		FLEX_ALLOC_STR(entry, string, buf.buf);
 		oidcpy(&entry->entry.oid, &commit->object.oid);
@@ -6022,7 +6023,7 @@ static int make_script_with_merges(struct pretty_print_context *pp,
 			else {
 				strbuf_reset(&oneline);
 				pretty_print_commit(pp, commit, &oneline);
-				strbuf_addf(out, "%s %s # %s\n",
+				strbuf_addf(out, "%s %s %s\n",
 					    cmd_reset, to, oneline.buf);
 			}
 		}
@@ -6053,8 +6054,8 @@ static int make_script_with_merges(struct pretty_print_context *pp,
 	oidset_clear(&interesting);
 	oidset_clear(&child_seen);
 	oidset_clear(&shown);
-	oidmap_free(&commit2todo, 1);
-	oidmap_free(&state.commit2label, 1);
+	oidmap_clear(&commit2todo, 1);
+	oidmap_clear(&state.commit2label, 1);
 	hashmap_clear_and_free(&state.labels, struct labels_entry, entry);
 	strbuf_release(&state.buf);
 
@@ -6090,8 +6091,14 @@ int sequencer_make_script(struct repository *r, struct strbuf *out, int argc,
 	git_config_get_string("rebase.instructionFormat", &format);
 	if (!format || !*format) {
 		free(format);
-		format = xstrdup("%s");
+		format = xstrdup("# %s");
 	}
+	if (*format != '#') {
+		char *temp = format;
+		format = xstrfmt("# %s", temp);
+		free(temp);
+	}
+
 	get_commit_format(format, &revs);
 	free(format);
 	pp.fmt = revs.commit_format;
@@ -6596,6 +6603,7 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
 	char **subjects;
 	struct commit_todo_item commit_todo;
 	struct todo_item *items = NULL;
+	int ret = 0;
 
 	init_commit_todo_item(&commit_todo);
 	/*
@@ -6626,8 +6634,8 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
 		}
 
 		if (is_fixup(item->command)) {
-			clear_commit_todo_item(&commit_todo);
-			return error(_("the script was already rearranged."));
+			ret = error(_("the script was already rearranged."));
+			goto cleanup;
 		}
 
 		repo_parse_commit(the_repository, item->commit);
@@ -6729,6 +6737,7 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
 		todo_list->items = items;
 	}
 
+cleanup:
 	free(next);
 	free(tail);
 	for (i = 0; i < todo_list->nr; i++)
@@ -6738,7 +6747,7 @@ int todo_list_rearrange_squash(struct todo_list *todo_list)
 
 	clear_commit_todo_item(&commit_todo);
 
-	return 0;
+	return ret;
 }
 
 int sequencer_determine_whence(struct repository *r, enum commit_whence *whence)
diff --git a/shallow.c b/shallow.c
index 2f82ebd..faeeeb4 100644
--- a/shallow.c
+++ b/shallow.c
@@ -310,7 +310,8 @@ static int write_one_shallow(const struct commit_graft *graft, void *cb_data)
 	if (graft->nr_parent != -1)
 		return 0;
 	if (data->flags & QUICK) {
-		if (!repo_has_object_file(the_repository, &graft->oid))
+		if (!has_object(the_repository, &graft->oid,
+				HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 			return 0;
 	} else if (data->flags & SEEN_ONLY) {
 		struct commit *c = lookup_commit(the_repository, &graft->oid);
@@ -476,7 +477,8 @@ void prepare_shallow_info(struct shallow_info *info, struct oid_array *sa)
 	ALLOC_ARRAY(info->ours, sa->nr);
 	ALLOC_ARRAY(info->theirs, sa->nr);
 	for (size_t i = 0; i < sa->nr; i++) {
-		if (repo_has_object_file(the_repository, sa->oid + i)) {
+		if (has_object(the_repository, sa->oid + i,
+			       HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR)) {
 			struct commit_graft *graft;
 			graft = lookup_commit_graft(the_repository,
 						    &sa->oid[i]);
@@ -513,7 +515,8 @@ void remove_nonexistent_theirs_shallow(struct shallow_info *info)
 	for (i = dst = 0; i < info->nr_theirs; i++) {
 		if (i != dst)
 			info->theirs[dst] = info->theirs[i];
-		if (repo_has_object_file(the_repository, oid + info->theirs[i]))
+		if (has_object(the_repository, oid + info->theirs[i],
+			       HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR))
 			dst++;
 	}
 	info->nr_theirs = dst;
diff --git a/streaming.c b/streaming.c
index 127d6b5..6d6512e 100644
--- a/streaming.c
+++ b/streaming.c
@@ -238,7 +238,7 @@ static int open_istream_loose(struct git_istream *st, struct repository *r,
 		return -1;
 	switch (unpack_loose_header(&st->z, st->u.loose.mapped,
 				    st->u.loose.mapsize, st->u.loose.hdr,
-				    sizeof(st->u.loose.hdr), NULL)) {
+				    sizeof(st->u.loose.hdr))) {
 	case ULHR_OK:
 		break;
 	case ULHR_BAD:
diff --git a/t/helper/meson.build b/t/helper/meson.build
index d2cabaa..675e64c 100644
--- a/t/helper/meson.build
+++ b/t/helper/meson.build
@@ -36,6 +36,7 @@
   'test-mktemp.c',
   'test-name-hash.c',
   'test-online-cpus.c',
+  'test-pack-deltas.c',
   'test-pack-mtimes.c',
   'test-parse-options.c',
   'test-parse-pathspec-file.c',
@@ -76,6 +77,7 @@
   'test-windows-named-pipe.c',
   'test-write-cache.c',
   'test-xml-encode.c',
+  'test-zlib.c',
 ]
 
 test_tool = executable('test-tool',
diff --git a/t/helper/test-bloom.c b/t/helper/test-bloom.c
index 14e075c..9aa2c5a 100644
--- a/t/helper/test-bloom.c
+++ b/t/helper/test-bloom.c
@@ -44,7 +44,7 @@ static void get_bloom_filter_for_commit(const struct object_id *commit_oid)
 	print_bloom_filter(filter);
 }
 
-static const char *bloom_usage = "\n"
+static const char *const bloom_usage = "\n"
 "  test-tool bloom get_murmur3 <string>\n"
 "  test-tool bloom get_murmur3_seven_highbit\n"
 "  test-tool bloom generate_filter <string> [<string>...]\n"
diff --git a/t/helper/test-date.c b/t/helper/test-date.c
index f25512d..87d2ad6 100644
--- a/t/helper/test-date.c
+++ b/t/helper/test-date.c
@@ -2,7 +2,7 @@
 #include "date.h"
 #include "trace.h"
 
-static const char *usage_msg = "\n"
+static const char *const usage_msg = "\n"
 "  test-tool date relative [time_t]...\n"
 "  test-tool date human [time_t]...\n"
 "  test-tool date show:<format> [time_t]...\n"
diff --git a/t/helper/test-find-pack.c b/t/helper/test-find-pack.c
index 85a69a4..76c2f4e 100644
--- a/t/helper/test-find-pack.c
+++ b/t/helper/test-find-pack.c
@@ -15,7 +15,7 @@
  * packfiles containing the object is not <n>.
  */
 
-static const char *find_pack_usage[] = {
+static const char *const find_pack_usage[] = {
 	"test-tool find-pack [--check-count <n>] <object>",
 	NULL
 };
diff --git a/t/helper/test-getcwd.c b/t/helper/test-getcwd.c
index d680038..cd4d424 100644
--- a/t/helper/test-getcwd.c
+++ b/t/helper/test-getcwd.c
@@ -2,7 +2,7 @@
 #include "git-compat-util.h"
 #include "parse-options.h"
 
-static const char *getcwd_usage[] = {
+static const char *const getcwd_usage[] = {
 	"test-tool getcwd",
 	NULL
 };
diff --git a/t/helper/test-pack-deltas.c b/t/helper/test-pack-deltas.c
new file mode 100644
index 0000000..4caa024
--- /dev/null
+++ b/t/helper/test-pack-deltas.c
@@ -0,0 +1,148 @@
+#define USE_THE_REPOSITORY_VARIABLE
+
+#include "test-tool.h"
+#include "git-compat-util.h"
+#include "delta.h"
+#include "git-zlib.h"
+#include "hash.h"
+#include "hex.h"
+#include "pack.h"
+#include "pack-objects.h"
+#include "parse-options.h"
+#include "setup.h"
+#include "strbuf.h"
+#include "string-list.h"
+
+static const char *usage_str[] = {
+	"test-tool pack-deltas --num-objects <num-objects>",
+	NULL
+};
+
+static unsigned long do_compress(void **pptr, unsigned long size)
+{
+	git_zstream stream;
+	void *in, *out;
+	unsigned long maxsize;
+
+	git_deflate_init(&stream, 1);
+	maxsize = git_deflate_bound(&stream, size);
+
+	in = *pptr;
+	out = xmalloc(maxsize);
+	*pptr = out;
+
+	stream.next_in = in;
+	stream.avail_in = size;
+	stream.next_out = out;
+	stream.avail_out = maxsize;
+	while (git_deflate(&stream, Z_FINISH) == Z_OK)
+		; /* nothing */
+	git_deflate_end(&stream);
+
+	free(in);
+	return stream.total_out;
+}
+
+static void write_ref_delta(struct hashfile *f,
+			    struct object_id *oid,
+			    struct object_id *base)
+{
+	unsigned char header[MAX_PACK_OBJECT_HEADER];
+	unsigned long size, base_size, delta_size, compressed_size, hdrlen;
+	enum object_type type;
+	void *base_buf, *delta_buf;
+	void *buf = repo_read_object_file(the_repository,
+					  oid, &type,
+					  &size);
+
+	if (!buf)
+		die("unable to read %s", oid_to_hex(oid));
+
+	base_buf = repo_read_object_file(the_repository,
+					 base, &type,
+					 &base_size);
+
+	if (!base_buf)
+		die("unable to read %s", oid_to_hex(base));
+
+	delta_buf = diff_delta(base_buf, base_size,
+			       buf, size, &delta_size, 0);
+
+	compressed_size = do_compress(&delta_buf, delta_size);
+
+	hdrlen = encode_in_pack_object_header(header, sizeof(header),
+					      OBJ_REF_DELTA, delta_size);
+	hashwrite(f, header, hdrlen);
+	hashwrite(f, base->hash, the_repository->hash_algo->rawsz);
+	hashwrite(f, delta_buf, compressed_size);
+
+	free(buf);
+	free(base_buf);
+	free(delta_buf);
+}
+
+int cmd__pack_deltas(int argc, const char **argv)
+{
+	int num_objects = -1;
+	struct hashfile *f;
+	struct strbuf line = STRBUF_INIT;
+	struct option options[] = {
+		OPT_INTEGER('n', "num-objects", &num_objects, N_("the number of objects to write")),
+		OPT_END()
+	};
+
+	argc = parse_options(argc, argv, NULL,
+			     options, usage_str, 0);
+
+	if (argc || num_objects < 0)
+		usage_with_options(usage_str, options);
+
+	setup_git_directory();
+
+	f = hashfd(the_repository->hash_algo, 1, "<stdout>");
+	write_pack_header(f, num_objects);
+
+	/* Read each line from stdin into 'line' */
+	while (strbuf_getline_lf(&line, stdin) != EOF) {
+		const char *type_str, *content_oid_str, *base_oid_str = NULL;
+		struct object_id content_oid, base_oid;
+		struct string_list items = STRING_LIST_INIT_NODUP;
+		/*
+		 * Tokenize into two or three parts:
+		 * 1. REF_DELTA, OFS_DELTA, or FULL.
+		 * 2. The object ID for the content object.
+		 * 3. The object ID for the base object (optional).
+		 */
+		if (string_list_split_in_place(&items, line.buf, " ", 3) < 0)
+			die("invalid input format: %s", line.buf);
+
+		if (items.nr < 2)
+			die("invalid input format: %s", line.buf);
+
+		type_str = items.items[0].string;
+		content_oid_str = items.items[1].string;
+
+		if (get_oid_hex(content_oid_str, &content_oid))
+			die("invalid object: %s", content_oid_str);
+		if (items.nr >= 3) {
+			base_oid_str = items.items[2].string;
+			if (get_oid_hex(base_oid_str, &base_oid))
+				die("invalid object: %s", base_oid_str);
+		}
+		string_list_clear(&items, 0);
+
+		if (!strcmp(type_str, "REF_DELTA"))
+			write_ref_delta(f, &content_oid, &base_oid);
+		else if (!strcmp(type_str, "OFS_DELTA"))
+			die("OFS_DELTA not implemented");
+		else if (!strcmp(type_str, "FULL"))
+			die("FULL not implemented");
+		else
+			die("unknown pack type: %s", type_str);
+	}
+
+	finalize_hashfile(f, NULL, FSYNC_COMPONENT_PACK,
+			  CSUM_HASH_IN_STREAM | CSUM_FSYNC | CSUM_CLOSE);
+	strbuf_release(&line);
+	return 0;
+}
diff --git a/t/helper/test-pack-mtimes.c b/t/helper/test-pack-mtimes.c
index 50f5941..fdf1b13 100644
--- a/t/helper/test-pack-mtimes.c
+++ b/t/helper/test-pack-mtimes.c
@@ -24,7 +24,7 @@ static void dump_mtimes(struct packed_git *p)
 	}
 }
 
-static const char *pack_mtimes_usage = "\n"
+static const char *const pack_mtimes_usage = "\n"
 "  test-tool pack-mtimes <pack-name.mtimes>";
 
 int cmd__pack_mtimes(int argc, const char **argv)
diff --git a/t/helper/test-proc-receive.c b/t/helper/test-proc-receive.c
index 3703f73..8eccc34 100644
--- a/t/helper/test-proc-receive.c
+++ b/t/helper/test-proc-receive.c
@@ -6,7 +6,7 @@
 #include "sigchain.h"
 #include "string-list.h"
 
-static const char *proc_receive_usage[] = {
+static const char *const proc_receive_usage[] = {
 	"test-tool proc-receive [<options>]",
 	NULL
 };
diff --git a/t/helper/test-reftable.c b/t/helper/test-reftable.c
index 3c72ed9..b16c072 100644
--- a/t/helper/test-reftable.c
+++ b/t/helper/test-reftable.c
@@ -2,10 +2,11 @@
 #include "hash.h"
 #include "hex.h"
 #include "reftable/system.h"
+#include "reftable/reftable-constants.h"
 #include "reftable/reftable-error.h"
 #include "reftable/reftable-merged.h"
-#include "reftable/reftable-reader.h"
 #include "reftable/reftable-stack.h"
+#include "reftable/reftable-table.h"
 #include "test-tool.h"
 
 static void print_help(void)
@@ -20,6 +21,72 @@ static void print_help(void)
 	       "\n");
 }
 
+static int dump_blocks(const char *tablename)
+{
+	struct reftable_table_iterator ti = { 0 };
+	struct reftable_block_source src = { 0 };
+	struct reftable_table *table = NULL;
+	uint8_t section_type = 0;
+	int err;
+
+	err = reftable_block_source_from_file(&src, tablename);
+	if (err < 0)
+		goto done;
+
+	err = reftable_table_new(&table, &src, tablename);
+	if (err < 0)
+		goto done;
+
+	err = reftable_table_iterator_init(&ti, table);
+	if (err < 0)
+		goto done;
+
+	printf("header:\n");
+	printf("  block_size: %d\n", table->block_size);
+
+	while (1) {
+		const struct reftable_block *block;
+
+		err = reftable_table_iterator_next(&ti, &block);
+		if (err < 0)
+			goto done;
+		if (err > 0)
+			break;
+
+		if (block->block_type != section_type) {
+			const char *section;
+			switch (block->block_type) {
+			case REFTABLE_BLOCK_TYPE_LOG:
+				section = "log";
+				break;
+			case REFTABLE_BLOCK_TYPE_REF:
+				section = "ref";
+				break;
+			case REFTABLE_BLOCK_TYPE_OBJ:
+				section = "obj";
+				break;
+			case REFTABLE_BLOCK_TYPE_INDEX:
+				section = "idx";
+				break;
+			default:
+				err = -1;
+				goto done;
+			}
+
+			section_type = block->block_type;
+			printf("%s:\n", section);
+		}
+
+		printf("  - length: %u\n", block->restart_off);
+		printf("    restarts: %u\n", block->restart_count);
+	}
+
+done:
+	reftable_table_iterator_release(&ti);
+	reftable_table_decref(table);
+	return err;
+}
+
 static int dump_table(struct reftable_merged_table *mt)
 {
 	struct reftable_iterator it = { NULL };
@@ -126,19 +193,19 @@ static int dump_reftable(const char *tablename)
 {
 	struct reftable_block_source src = { 0 };
 	struct reftable_merged_table *mt = NULL;
-	struct reftable_reader *r = NULL;
+	struct reftable_table *table = NULL;
 	int err;
 
 	err = reftable_block_source_from_file(&src, tablename);
 	if (err < 0)
 		goto done;
 
-	err = reftable_reader_new(&r, &src, tablename);
+	err = reftable_table_new(&table, &src, tablename);
 	if (err < 0)
 		goto done;
 
-	err = reftable_merged_table_new(&mt, &r, 1,
-					reftable_reader_hash_id(r));
+	err = reftable_merged_table_new(&mt, &table, 1,
+					reftable_table_hash_id(table));
 	if (err < 0)
 		goto done;
 
@@ -146,7 +213,7 @@ static int dump_reftable(const char *tablename)
 
 done:
 	reftable_merged_table_free(mt);
-	reftable_reader_decref(r);
+	reftable_table_decref(table);
 	return err;
 }
 
@@ -184,7 +251,7 @@ int cmd__dump_reftable(int argc, const char **argv)
 	arg = argv[1];
 
 	if (opt_dump_blocks) {
-		err = reftable_reader_print_blocks(arg);
+		err = dump_blocks(arg);
 	} else if (opt_dump_table) {
 		err = dump_reftable(arg);
 	} else if (opt_dump_stack) {
diff --git a/t/helper/test-rot13-filter.c b/t/helper/test-rot13-filter.c
index 722b1cb..ad37e10 100644
--- a/t/helper/test-rot13-filter.c
+++ b/t/helper/test-rot13-filter.c
@@ -324,7 +324,7 @@ static void packet_initialize(void)
 	packet_flush(1);
 }
 
-static const char *rot13_usage[] = {
+static const char *const rot13_usage[] = {
 	"test-tool rot13-filter [--always-delay] --log=<path> <capabilities>",
 	NULL
 };
diff --git a/t/helper/test-submodule.c b/t/helper/test-submodule.c
index 22e518d..0133852 100644
--- a/t/helper/test-submodule.c
+++ b/t/helper/test-submodule.c
@@ -12,33 +12,33 @@
 
 #define TEST_TOOL_CHECK_NAME_USAGE \
 	"test-tool submodule check-name"
-static const char *submodule_check_name_usage[] = {
+static const char *const submodule_check_name_usage[] = {
 	TEST_TOOL_CHECK_NAME_USAGE,
 	NULL
 };
 
 #define TEST_TOOL_CHECK_URL_USAGE \
 	"test-tool submodule check-url"
-static const char *submodule_check_url_usage[] = {
+static const char *const submodule_check_url_usage[] = {
 	TEST_TOOL_CHECK_URL_USAGE,
 	NULL
 };
 
 #define TEST_TOOL_IS_ACTIVE_USAGE \
 	"test-tool submodule is-active <name>"
-static const char *submodule_is_active_usage[] = {
+static const char *const submodule_is_active_usage[] = {
 	TEST_TOOL_IS_ACTIVE_USAGE,
 	NULL
 };
 
 #define TEST_TOOL_RESOLVE_RELATIVE_URL_USAGE \
 	"test-tool submodule resolve-relative-url <up_path> <remoteurl> <url>"
-static const char *submodule_resolve_relative_url_usage[] = {
+static const char *const submodule_resolve_relative_url_usage[] = {
 	TEST_TOOL_RESOLVE_RELATIVE_URL_USAGE,
 	NULL,
 };
 
-static const char *submodule_usage[] = {
+static const char *const submodule_usage[] = {
 	TEST_TOOL_CHECK_NAME_USAGE,
 	TEST_TOOL_CHECK_URL_USAGE,
 	TEST_TOOL_IS_ACTIVE_USAGE,
diff --git a/t/helper/test-tool.c b/t/helper/test-tool.c
index 50dc4da..a7abc61 100644
--- a/t/helper/test-tool.c
+++ b/t/helper/test-tool.c
@@ -46,6 +46,7 @@ static struct test_cmd cmds[] = {
 	{ "mktemp", cmd__mktemp },
 	{ "name-hash", cmd__name_hash },
 	{ "online-cpus", cmd__online_cpus },
+	{ "pack-deltas", cmd__pack_deltas },
 	{ "pack-mtimes", cmd__pack_mtimes },
 	{ "parse-options", cmd__parse_options },
 	{ "parse-options-flags", cmd__parse_options_flags },
@@ -90,6 +91,7 @@ static struct test_cmd cmds[] = {
 	{ "windows-named-pipe", cmd__windows_named_pipe },
 #endif
 	{ "write-cache", cmd__write_cache },
+	{ "zlib", cmd__zlib },
 };
 
 static NORETURN void die_usage(void)
diff --git a/t/helper/test-tool.h b/t/helper/test-tool.h
index 6d62a5b..7f150fa 100644
--- a/t/helper/test-tool.h
+++ b/t/helper/test-tool.h
@@ -39,6 +39,7 @@ int cmd__mergesort(int argc, const char **argv);
 int cmd__mktemp(int argc, const char **argv);
 int cmd__name_hash(int argc, const char **argv);
 int cmd__online_cpus(int argc, const char **argv);
+int cmd__pack_deltas(int argc, const char **argv);
 int cmd__pack_mtimes(int argc, const char **argv);
 int cmd__parse_options(int argc, const char **argv);
 int cmd__parse_options_flags(int argc, const char **argv);
@@ -83,6 +84,7 @@ int cmd__wildmatch(int argc, const char **argv);
 int cmd__windows_named_pipe(int argc, const char **argv);
 #endif
 int cmd__write_cache(int argc, const char **argv);
+int cmd__zlib(int argc, const char **argv);
 
 int cmd_hash_impl(int ac, const char **av, int algo, int unsafe);
 
diff --git a/t/helper/test-windows-named-pipe.c b/t/helper/test-windows-named-pipe.c
index ae52183..bd73784c 100644
--- a/t/helper/test-windows-named-pipe.c
+++ b/t/helper/test-windows-named-pipe.c
@@ -3,7 +3,7 @@
 #include "strbuf.h"
 
 #ifdef GIT_WINDOWS_NATIVE
-static const char *usage_string = "<pipe-filename>";
+static const char *const usage_string = "<pipe-filename>";
 
 #define TEST_BUFSIZE (4096)
 
diff --git a/t/helper/test-zlib.c b/t/helper/test-zlib.c
new file mode 100644
index 0000000..de7e9ed
--- /dev/null
+++ b/t/helper/test-zlib.c
@@ -0,0 +1,62 @@
+#include "test-tool.h"
+#include "git-zlib.h"
+#include "strbuf.h"
+
+static const char *zlib_usage = "test-tool zlib [inflate|deflate]";
+
+static void do_zlib(struct git_zstream *stream,
+		    int (*zlib_func)(git_zstream *, int),
+		    int fd_in, int fd_out)
+{
+	struct strbuf buf_in = STRBUF_INIT;
+	int status = Z_OK;
+
+	if (strbuf_read(&buf_in, fd_in, 0) < 0)
+		die_errno("read error");
+
+	stream->next_in = (unsigned char *)buf_in.buf;
+	stream->avail_in = buf_in.len;
+
+	while (status == Z_OK ||
+	       (status == Z_BUF_ERROR && !stream->avail_out)) {
+		unsigned char buf_out[4096];
+
+		stream->next_out = buf_out;
+		stream->avail_out = sizeof(buf_out);
+
+		status = zlib_func(stream, Z_FINISH);
+		if (write_in_full(fd_out, buf_out,
+				  sizeof(buf_out) - stream->avail_out) < 0)
+			die_errno("write error");
+	}
+
+	if (status != Z_STREAM_END)
+		die("zlib error %d", status);
+
+	strbuf_release(&buf_in);
+}
+
+int cmd__zlib(int argc, const char **argv)
+{
+	git_zstream stream;
+
+	if (argc != 2)
+		usage(zlib_usage);
+
+	memset(&stream, 0, sizeof(stream));
+
+	if (!strcmp(argv[1], "inflate")) {
+		git_inflate_init(&stream);
+		do_zlib(&stream, git_inflate, 0, 1);
+		git_inflate_end(&stream);
+	} else if (!strcmp(argv[1], "deflate")) {
+		git_deflate_init(&stream, Z_DEFAULT_COMPRESSION);
+		do_zlib(&stream, git_deflate, 0, 1);
+		git_deflate_end(&stream);
+	} else {
+		error("unknown mode: %s", argv[1]);
+		usage(zlib_usage);
+	}
+
+	return 0;
+}
diff --git a/t/lib-loose.sh b/t/lib-loose.sh
new file mode 100644
index 0000000..3613631
--- /dev/null
+++ b/t/lib-loose.sh
@@ -0,0 +1,30 @@
+# Support routines for hand-crafting loose objects.
+
+# Write a loose object into the odb at $1, with object type $2 and contents
+# from stdin. Writes the oid to stdout. Example:
+#
+#   oid=$(echo foo | loose_obj .git/objects blob)
+#
+loose_obj () {
+	cat >tmp_loose.content &&
+	size=$(wc -c <tmp_loose.content) &&
+	{
+		# Do not quote $size here; we want the shell
+		# to strip whitespace that "wc" adds on some platforms.
+		printf "%s %s\0" "$2" $size &&
+		cat tmp_loose.content
+	} >tmp_loose.raw &&
+
+	oid=$(test-tool $test_hash_algo <tmp_loose.raw) &&
+	suffix=${oid#??} &&
+	prefix=${oid%$suffix} &&
+	dir=$1/$prefix &&
+	file=$dir/$suffix &&
+
+	test-tool zlib deflate <tmp_loose.raw >tmp_loose.zlib &&
+	mkdir -p "$dir" &&
+	mv tmp_loose.zlib "$file" &&
+
+	rm tmp_loose.raw tmp_loose.content &&
+	echo "$oid"
+}
diff --git a/t/meson.build b/t/meson.build
index bfb744e..d052fc3 100644
--- a/t/meson.build
+++ b/t/meson.build
@@ -58,10 +58,10 @@
   'unit-tests/t-reftable-block.c',
   'unit-tests/t-reftable-merged.c',
   'unit-tests/t-reftable-pq.c',
-  'unit-tests/t-reftable-reader.c',
   'unit-tests/t-reftable-readwrite.c',
   'unit-tests/t-reftable-record.c',
   'unit-tests/t-reftable-stack.c',
+  'unit-tests/t-reftable-table.c',
 ]
 
 foreach unit_test_program : unit_test_programs
@@ -501,6 +501,7 @@
   't4068-diff-symmetric-merge-base.sh',
   't4069-remerge-diff.sh',
   't4070-diff-pairs.sh',
+  't4071-diff-minimal.sh',
   't4100-apply-stat.sh',
   't4101-apply-nonl.sh',
   't4102-apply-rename.sh',
@@ -628,7 +629,7 @@
   't5407-post-rewrite-hook.sh',
   't5408-send-pack-stdin.sh',
   't5409-colorize-remote-messages.sh',
-  't5410-receive-pack-alternates.sh',
+  't5410-receive-pack.sh',
   't5411-proc-receive-hook.sh',
   't5500-fetch-pack.sh',
   't5501-fetch-push-alternates.sh',
@@ -788,6 +789,7 @@
   't6134-pathspec-in-submodule.sh',
   't6135-pathspec-with-attrs.sh',
   't6136-pathspec-in-bare.sh',
+  't6137-pathspec-wildcards-literal.sh',
   't6200-fmt-merge-msg.sh',
   't6300-for-each-ref.sh',
   't6301-for-each-ref-errors.sh',
@@ -1097,11 +1099,71 @@
   't9903-bash-prompt.sh',
 ]
 
+benchmarks = [
+  'perf/p0000-perf-lib-sanity.sh',
+  'perf/p0001-rev-list.sh',
+  'perf/p0002-read-cache.sh',
+  'perf/p0003-delta-base-cache.sh',
+  'perf/p0004-lazy-init-name-hash.sh',
+  'perf/p0005-status.sh',
+  'perf/p0006-read-tree-checkout.sh',
+  'perf/p0007-write-cache.sh',
+  'perf/p0008-odb-fsync.sh',
+  'perf/p0071-sort.sh',
+  'perf/p0090-cache-tree.sh',
+  'perf/p0100-globbing.sh',
+  'perf/p1006-cat-file.sh',
+  'perf/p1400-update-ref.sh',
+  'perf/p1450-fsck.sh',
+  'perf/p1451-fsck-skip-list.sh',
+  'perf/p1500-graph-walks.sh',
+  'perf/p2000-sparse-operations.sh',
+  'perf/p3400-rebase.sh',
+  'perf/p3404-rebase-interactive.sh',
+  'perf/p4000-diff-algorithms.sh',
+  'perf/p4001-diff-no-index.sh',
+  'perf/p4002-diff-color-moved.sh',
+  'perf/p4205-log-pretty-formats.sh',
+  'perf/p4209-pickaxe.sh',
+  'perf/p4211-line-log.sh',
+  'perf/p4220-log-grep-engines.sh',
+  'perf/p4221-log-grep-engines-fixed.sh',
+  'perf/p5302-pack-index.sh',
+  'perf/p5303-many-packs.sh',
+  'perf/p5304-prune.sh',
+  'perf/p5310-pack-bitmaps.sh',
+  'perf/p5311-pack-bitmaps-fetch.sh',
+  'perf/p5312-pack-bitmaps-revs.sh',
+  'perf/p5313-pack-objects.sh',
+  'perf/p5314-name-hash.sh',
+  'perf/p5326-multi-pack-bitmaps.sh',
+  'perf/p5332-multi-pack-reuse.sh',
+  'perf/p5333-pseudo-merge-bitmaps.sh',
+  'perf/p5550-fetch-tags.sh',
+  'perf/p5551-fetch-rescan.sh',
+  'perf/p5600-partial-clone.sh',
+  'perf/p5601-clone-reference.sh',
+  'perf/p6100-describe.sh',
+  'perf/p6300-for-each-ref.sh',
+  'perf/p7000-filter-branch.sh',
+  'perf/p7102-reset.sh',
+  'perf/p7300-clean.sh',
+  'perf/p7519-fsmonitor.sh',
+  'perf/p7527-builtin-fsmonitor.sh',
+  'perf/p7810-grep.sh',
+  'perf/p7820-grep-engines.sh',
+  'perf/p7821-grep-engines-fixed.sh',
+  'perf/p7822-grep-perl-character.sh',
+  'perf/p9210-scalar.sh',
+  'perf/p9300-fast-import-export.sh',
+]
+
 # Sanity check that we are not missing any tests present in 't/'. This check
 # only runs once at configure time and is thus best-effort, only. It is
 # sufficient to catch missing test suites in our CI though.
 foreach glob, tests : {
   't[0-9][0-9][0-9][0-9]-*.sh': integration_tests,
+  'perf/p[0-9][0-9][0-9][0-9]-*.sh': benchmarks,
   'unit-tests/t-*.c': unit_test_programs,
   'unit-tests/u-*.c': clar_test_suites,
 }
@@ -1153,3 +1215,20 @@
     timeout: 0,
   )
 endforeach
+
+if perl.found() and time.found()
+  benchmark_environment = test_environment
+  benchmark_environment.set('GTIME', time.full_path())
+
+  foreach benchmark : benchmarks
+    benchmark(fs.stem(benchmark), shell,
+      args: [
+        fs.name(benchmark),
+      ],
+      workdir: meson.current_source_dir() / 'perf',
+      env: benchmark_environment,
+      depends: test_dependencies + bin_wrappers,
+      timeout: 0,
+    )
+  endforeach
+endif
diff --git a/t/perf/aggregate.perl b/t/perf/aggregate.perl
index 575d200..1791c75 100755
--- a/t/perf/aggregate.perl
+++ b/t/perf/aggregate.perl
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!/usr/bin/env perl
 
 use lib '../../perl/build/lib';
 use strict;
diff --git a/t/perf/p2000-sparse-operations.sh b/t/perf/p2000-sparse-operations.sh
index 39e92b0..aadf22b 100755
--- a/t/perf/p2000-sparse-operations.sh
+++ b/t/perf/p2000-sparse-operations.sh
@@ -135,5 +135,8 @@
 test_perf_on_all git diff-tree HEAD -- $SPARSE_CONE/a
 test_perf_on_all "git worktree add ../temp && git worktree remove ../temp"
 test_perf_on_all git check-attr -a -- $SPARSE_CONE/a
+test_perf_on_all 'echo >>a && test_write_lines y | git add -p'
+test_perf_on_all 'test_write_lines y y y | git checkout --patch -'
+test_perf_on_all 'echo >>a && git add a && test_write_lines y | git reset --patch'
 
 test_done
diff --git a/t/perf/p5313-pack-objects.sh b/t/perf/p5313-pack-objects.sh
index be5229a..786a2c1 100755
--- a/t/perf/p5313-pack-objects.sh
+++ b/t/perf/p5313-pack-objects.sh
@@ -3,9 +3,6 @@
 test_description='Tests pack performance using bitmaps'
 . ./perf-lib.sh
 
-GIT_TEST_PASSING_SANITIZE_LEAK=0
-export GIT_TEST_PASSING_SANITIZE_LEAK
-
 test_perf_large_repo
 
 test_expect_success 'create rev input' '
diff --git a/t/perf/p5314-name-hash.sh b/t/perf/p5314-name-hash.sh
index 4ef0ba7..235cdfc 100755
--- a/t/perf/p5314-name-hash.sh
+++ b/t/perf/p5314-name-hash.sh
@@ -3,9 +3,6 @@
 test_description='Tests pack performance using bitmaps'
 . ./perf-lib.sh
 
-GIT_TEST_PASSING_SANITIZE_LEAK=0
-export GIT_TEST_PASSING_SANITIZE_LEAK
-
 test_perf_large_repo
 
 test_size 'paths at head' '
diff --git a/t/perf/p5332-multi-pack-reuse.sh b/t/perf/p5332-multi-pack-reuse.sh
index d1c89a8..0a2525d 100755
--- a/t/perf/p5332-multi-pack-reuse.sh
+++ b/t/perf/p5332-multi-pack-reuse.sh
@@ -58,7 +58,7 @@
 	'
 
 	test_expect_success "setup bitmaps for $nr_packs-pack scenario" '
-		find $packdir -type f -name "*.idx" | sed -e "s/.*\/\(.*\)$/+\1/g" |
+		find $packdir -type f -name "*.idx" | sed -e "s/.*\///" |
 		git multi-pack-index write --stdin-packs --bitmap \
 			--preferred-pack="$(find_pack $(git rev-parse HEAD))"
 	'
diff --git a/t/perf/perf-lib.sh b/t/perf/perf-lib.sh
index 8ab6d9c..b15c74d 100644
--- a/t/perf/perf-lib.sh
+++ b/t/perf/perf-lib.sh
@@ -25,7 +25,43 @@
 TEST_NO_CREATE_REPO=t
 TEST_NO_MALLOC_CHECK=t
 
-. ../test-lib.sh
+# GIT-BUILD-OPTIONS, sourced by test-lib.sh, overwrites the `GIT_PERF_*`
+# values that are set by the user (if any). Let's stash them away as
+# `eval`-able assignments.
+git_perf_settings="$(env |
+	sed -n "/^GIT_PERF_/{
+		# escape all single-quotes in the value
+		s/'/'\\\\''/g
+		# turn this into an eval-able assignment
+		s/^\\([^=]*=\\)\\(.*\\)/\\1'\\2'/p
+	}")"
+
+# While test-lib.sh computes the build directory for us, we also have to do the
+# same thing in order to locate the script via GIT-BUILD-OPTIONS in the first
+# place.
+GIT_BUILD_DIR="${GIT_BUILD_DIR:-$TEST_DIRECTORY/..}"
+if test -f "$GIT_BUILD_DIR/GIT-BUILD-DIR"
+then
+	GIT_BUILD_DIR="$(cat "$GIT_BUILD_DIR/GIT-BUILD-DIR")" || exit 1
+	# On Windows, we must convert Windows paths lest they contain a colon
+	case "$(uname -s)" in
+	*MINGW*)
+		GIT_BUILD_DIR="$(cygpath -au "$GIT_BUILD_DIR")"
+		;;
+	esac
+fi
+
+if test ! -f "$GIT_BUILD_DIR"/GIT-BUILD-OPTIONS
+then
+	echo >&2 'error: GIT-BUILD-OPTIONS missing (has Git been built?).'
+	exit 1
+fi
+
+. "$GIT_BUILD_DIR"/GIT-BUILD-OPTIONS
+. "$GIT_SOURCE_DIR"/t/test-lib.sh
+
+# Then restore GIT_PERF_* settings.
+eval "$git_perf_settings"
 
 unset GIT_CONFIG_NOSYSTEM
 GIT_CONFIG_SYSTEM="$TEST_DIRECTORY/perf/config"
@@ -98,6 +134,8 @@
 	source_git="$("$MODERN_GIT" -C "$source" rev-parse --git-dir)"
 	objects_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-path objects)"
 	common_dir="$("$MODERN_GIT" -C "$source" rev-parse --git-common-dir)"
+	refformat="$("$MODERN_GIT" -C "$source" rev-parse --show-ref-format)"
+	objectformat="$("$MODERN_GIT" -C "$source" rev-parse --show-object-format)"
 	mkdir -p "$repo/.git"
 	(
 		cd "$source" &&
@@ -114,7 +152,7 @@
 	) &&
 	(
 		cd "$repo" &&
-		"$MODERN_GIT" init -q &&
+		"$MODERN_GIT" init -q --ref-format="$refformat" --object-format="$objectformat" &&
 		test_perf_do_repo_symlink_config_ &&
 		mv .git/hooks .git/hooks-disabled 2>/dev/null &&
 		if test -f .git/index.lock
@@ -274,7 +312,7 @@
 	else
 		test_ok_ "$1"
 	fi
-	"$TEST_DIRECTORY"/perf/min_time.perl test_time.* >"$base".result
+	"$PERL_PATH" "$TEST_DIRECTORY"/perf/min_time.perl test_time.* >"$base".result
 	rm test_time.*
 }
 
@@ -322,7 +360,7 @@
 	if test -z "$GIT_PERF_AGGREGATING_LATER"; then
 		(
 			cd "$TEST_DIRECTORY"/perf &&
-			./aggregate.perl --results-dir="$TEST_RESULTS_DIR" $(basename "$0")
+			"$PERL_PATH" "$GIT_SOURCE_DIR"/t/perf/aggregate.perl --results-dir="$TEST_RESULTS_DIR" $(basename "$0")
 		)
 	fi
 }
diff --git a/t/perf/run b/t/perf/run
index 486ead2..073bcb2 100755
--- a/t/perf/run
+++ b/t/perf/run
@@ -192,10 +192,10 @@
 
 	if test -z "$GIT_PERF_SEND_TO_CODESPEED"
 	then
-		./aggregate.perl --results-dir="$TEST_RESULTS_DIR" $codespeed_opt "$@"
+		"$PERL_PATH" ./aggregate.perl --results-dir="$TEST_RESULTS_DIR" $codespeed_opt "$@"
 	else
 		json_res_file=""$TEST_RESULTS_DIR"/$GIT_PERF_SUBSECTION/aggregate.json"
-		./aggregate.perl --results-dir="$TEST_RESULTS_DIR" --codespeed "$@" | tee "$json_res_file"
+		"$PERL_PATH" ./aggregate.perl --results-dir="$TEST_RESULTS_DIR" --codespeed "$@" | tee "$json_res_file"
 		send_data_url="$GIT_PERF_SEND_TO_CODESPEED/result/add/json/"
 		curl -v --request POST --data-urlencode "json=$(cat "$json_res_file")" "$send_data_url"
 	fi
diff --git a/t/t0602-reffiles-fsck.sh b/t/t0602-reffiles-fsck.sh
index 9d1dc21..0ef4836 100755
--- a/t/t0602-reffiles-fsck.sh
+++ b/t/t0602-reffiles-fsck.sh
@@ -110,6 +110,25 @@
 	)
 '
 
+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 &&
@@ -647,6 +666,23 @@
 	)
 '
 
+test_expect_success 'empty packed-refs should be reported' '
+	test_when_finished "rm -rf repo" &&
+	git init repo &&
+	(
+		cd repo &&
+		test_commit default &&
+
+		>.git/packed-refs &&
+		git refs verify 2>err &&
+		cat >expect <<-EOF &&
+		warning: packed-refs: emptyPackedRefsFile: file is empty
+		EOF
+		rm .git/packed-refs &&
+		test_cmp expect err
+	)
+'
+
 test_expect_success 'packed-refs header should be checked' '
 	test_when_finished "rm -rf repo" &&
 	git init repo &&
diff --git a/t/t0613-reftable-write-options.sh b/t/t0613-reftable-write-options.sh
index 42aa159..6447920 100755
--- a/t/t0613-reftable-write-options.sh
+++ b/t/t0613-reftable-write-options.sh
@@ -93,6 +93,9 @@
 		    restarts: 3
 		  - length: 3289
 		    restarts: 3
+		idx:
+		  - length: 103
+		    restarts: 1
 		EOF
 		test-tool dump-reftable -b .git/reftable/*.ref >actual &&
 		test_cmp expect actual
@@ -241,6 +244,9 @@
 		    restarts: 1
 		  - length: 80
 		    restarts: 1
+		idx:
+		  - length: 55
+		    restarts: 2
 		obj:
 		  - length: 11
 		    restarts: 1
@@ -277,6 +283,9 @@
 		    restarts: 1
 		  - length: 80
 		    restarts: 1
+		idx:
+		  - length: 55
+		    restarts: 2
 		EOF
 		test-tool dump-reftable -b .git/reftable/*.ref >actual &&
 		test_cmp expect actual
diff --git a/t/t1001-read-tree-m-2way.sh b/t/t1001-read-tree-m-2way.sh
index 4a88bb9..2e8d938 100755
--- a/t/t1001-read-tree-m-2way.sh
+++ b/t/t1001-read-tree-m-2way.sh
@@ -362,7 +362,7 @@
 test_expect_success 'a/b (untracked) vs a, plus c/d case test.' '
 	read_tree_u_must_fail -u -m "$treeH" "$treeM" &&
 	git ls-files --stage &&
-	test -f a/b
+	test_path_is_file a/b
 '
 
 test_expect_success 'read-tree supports the super-prefix' '
diff --git a/t/t1006-cat-file.sh b/t/t1006-cat-file.sh
index ce8b27b..317da68 100755
--- a/t/t1006-cat-file.sh
+++ b/t/t1006-cat-file.sh
@@ -3,6 +3,7 @@
 test_description='git cat-file'
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY/lib-loose.sh"
 
 test_cmdmode_usage () {
 	test_expect_code 129 "$@" 2>err &&
@@ -136,18 +137,6 @@
 	test_cmp expect actual
     '
 
-    test_expect_success "Type of $type is correct using --allow-unknown-type" '
-	echo $type >expect &&
-	git cat-file -t --allow-unknown-type $oid >actual &&
-	test_cmp expect actual
-    '
-
-    test_expect_success "Size of $type is correct using --allow-unknown-type" '
-	echo $size >expect &&
-	git cat-file -s --allow-unknown-type $oid >actual &&
-	test_cmp expect actual
-    '
-
     test -z "$content" ||
     test_expect_success "Content of $type is correct" '
 	echo_without_newline "$content" >expect &&
@@ -669,103 +658,75 @@
 	bogus_short_type="bogus" &&
 	bogus_short_content="bogus" &&
 	bogus_short_size=$(strlen "$bogus_short_content") &&
-	bogus_short_oid=$(echo_without_newline "$bogus_short_content" | git hash-object -t $bogus_short_type --literally -w --stdin) &&
+	bogus_short_oid=$(echo_without_newline "$bogus_short_content" | loose_obj .git/objects $bogus_short_type) &&
 
 	bogus_long_type="abcdefghijklmnopqrstuvwxyz1234679" &&
 	bogus_long_content="bogus" &&
 	bogus_long_size=$(strlen "$bogus_long_content") &&
-	bogus_long_oid=$(echo_without_newline "$bogus_long_content" | git hash-object -t $bogus_long_type --literally -w --stdin)
+	bogus_long_oid=$(echo_without_newline "$bogus_long_content" | loose_obj .git/objects $bogus_long_type)
 '
 
-for arg1 in '' --allow-unknown-type
+for arg1 in -s -t -p
 do
-	for arg2 in -s -t -p
-	do
-		if test "$arg1" = "--allow-unknown-type" && test "$arg2" = "-p"
+	test_expect_success "cat-file $arg1 error on bogus short OID" '
+		cat >expect <<-\EOF &&
+		fatal: invalid object type
+		EOF
+
+		test_must_fail git cat-file $arg1 $bogus_short_oid >out 2>actual &&
+		test_must_be_empty out &&
+		test_cmp expect actual
+	'
+
+	test_expect_success "cat-file $arg1 error on bogus full OID" '
+		if test "$arg1" = "-p"
 		then
-			continue
-		fi
-
-
-		test_expect_success "cat-file $arg1 $arg2 error on bogus short OID" '
-			cat >expect <<-\EOF &&
-			fatal: invalid object type
+			cat >expect <<-EOF
+			error: header for $bogus_long_oid too long, exceeds 32 bytes
+			fatal: Not a valid object name $bogus_long_oid
 			EOF
-
-			if test "$arg1" = "--allow-unknown-type"
-			then
-				git cat-file $arg1 $arg2 $bogus_short_oid
-			else
-				test_must_fail git cat-file $arg1 $arg2 $bogus_short_oid >out 2>actual &&
-				test_must_be_empty out &&
-				test_cmp expect actual
-			fi
-		'
-
-		test_expect_success "cat-file $arg1 $arg2 error on bogus full OID" '
-			if test "$arg2" = "-p"
-			then
-				cat >expect <<-EOF
-				error: header for $bogus_long_oid too long, exceeds 32 bytes
-				fatal: Not a valid object name $bogus_long_oid
-				EOF
-			else
-				cat >expect <<-EOF
-				error: header for $bogus_long_oid too long, exceeds 32 bytes
-				fatal: git cat-file: could not get object info
-				EOF
-			fi &&
-
-			if test "$arg1" = "--allow-unknown-type"
-			then
-				git cat-file $arg1 $arg2 $bogus_short_oid
-			else
-				test_must_fail git cat-file $arg1 $arg2 $bogus_long_oid >out 2>actual &&
-				test_must_be_empty out &&
-				test_cmp expect actual
-			fi
-		'
-
-		test_expect_success "cat-file $arg1 $arg2 error on missing short OID" '
-			cat >expect.err <<-EOF &&
-			fatal: Not a valid object name $(test_oid deadbeef_short)
+		else
+			cat >expect <<-EOF
+			error: header for $bogus_long_oid too long, exceeds 32 bytes
+			fatal: git cat-file: could not get object info
 			EOF
-			test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef_short) >out 2>err.actual &&
-			test_must_be_empty out &&
-			test_cmp expect.err err.actual
-		'
+		fi &&
 
-		test_expect_success "cat-file $arg1 $arg2 error on missing full OID" '
-			if test "$arg2" = "-p"
-			then
-				cat >expect.err <<-EOF
-				fatal: Not a valid object name $(test_oid deadbeef)
-				EOF
-			else
-				cat >expect.err <<-\EOF
-				fatal: git cat-file: could not get object info
-				EOF
-			fi &&
-			test_must_fail git cat-file $arg1 $arg2 $(test_oid deadbeef) >out 2>err.actual &&
-			test_must_be_empty out &&
-			test_cmp expect.err err.actual
-		'
-	done
+		test_must_fail git cat-file $arg1 $bogus_long_oid >out 2>actual &&
+		test_must_be_empty out &&
+		test_cmp expect actual
+	'
+
+	test_expect_success "cat-file $arg1 error on missing short OID" '
+		cat >expect.err <<-EOF &&
+		fatal: Not a valid object name $(test_oid deadbeef_short)
+		EOF
+		test_must_fail git cat-file $arg1 $(test_oid deadbeef_short) >out 2>err.actual &&
+		test_must_be_empty out &&
+		test_cmp expect.err err.actual
+	'
+
+	test_expect_success "cat-file $arg1 error on missing full OID" '
+		if test "$arg1" = "-p"
+		then
+			cat >expect.err <<-EOF
+			fatal: Not a valid object name $(test_oid deadbeef)
+			EOF
+		else
+			cat >expect.err <<-\EOF
+			fatal: git cat-file: could not get object info
+			EOF
+		fi &&
+		test_must_fail git cat-file $arg1 $(test_oid deadbeef) >out 2>err.actual &&
+		test_must_be_empty out &&
+		test_cmp expect.err err.actual
+	'
 done
 
-test_expect_success '-e is OK with a broken object without --allow-unknown-type' '
+test_expect_success '-e is OK with a broken object' '
 	git cat-file -e $bogus_short_oid
 '
 
-test_expect_success '-e can not be combined with --allow-unknown-type' '
-	test_expect_code 128 git cat-file -e --allow-unknown-type $bogus_short_oid
-'
-
-test_expect_success '-p cannot print a broken object even with --allow-unknown-type' '
-	test_must_fail git cat-file -p $bogus_short_oid &&
-	test_expect_code 128 git cat-file -p --allow-unknown-type $bogus_short_oid
-'
-
 test_expect_success '<type> <hash> does not work with objects of broken types' '
 	cat >err.expect <<-\EOF &&
 	fatal: invalid object type "bogus"
@@ -788,60 +749,8 @@
 	test_cmp err.expect err.actual
 '
 
-test_expect_success 'the --batch and --batch-check options do not combine with --allow-unknown-type' '
-	test_expect_code 128 git cat-file --batch --allow-unknown-type <bogus-oid &&
-	test_expect_code 128 git cat-file --batch-check --allow-unknown-type <bogus-oid
-'
-
-test_expect_success 'the --allow-unknown-type option does not consider replacement refs' '
-	cat >expect <<-EOF &&
-	$bogus_short_type
-	EOF
-	git cat-file -t --allow-unknown-type $bogus_short_oid >actual &&
-	test_cmp expect actual &&
-
-	# Create it manually, as "git replace" will die on bogus
-	# types.
-	head=$(git rev-parse --verify HEAD) &&
-	test_when_finished "test-tool ref-store main delete-refs 0 msg refs/replace/$bogus_short_oid" &&
-	test-tool ref-store main update-ref msg "refs/replace/$bogus_short_oid" $head $ZERO_OID REF_SKIP_OID_VERIFICATION &&
-
-	cat >expect <<-EOF &&
-	commit
-	EOF
-	git cat-file -t --allow-unknown-type $bogus_short_oid >actual &&
-	test_cmp expect actual
-'
-
-test_expect_success "Type of broken object is correct" '
-	echo $bogus_short_type >expect &&
-	git cat-file -t --allow-unknown-type $bogus_short_oid >actual &&
-	test_cmp expect actual
-'
-
-test_expect_success "Size of broken object is correct" '
-	echo $bogus_short_size >expect &&
-	git cat-file -s --allow-unknown-type $bogus_short_oid >actual &&
-	test_cmp expect actual
-'
-
-test_expect_success 'clean up broken object' '
-	rm .git/objects/$(test_oid_to_path $bogus_short_oid)
-'
-
-test_expect_success "Type of broken object is correct when type is large" '
-	echo $bogus_long_type >expect &&
-	git cat-file -t --allow-unknown-type $bogus_long_oid >actual &&
-	test_cmp expect actual
-'
-
-test_expect_success "Size of large broken object is correct when type is large" '
-	echo $bogus_long_size >expect &&
-	git cat-file -s --allow-unknown-type $bogus_long_oid >actual &&
-	test_cmp expect actual
-'
-
-test_expect_success 'clean up broken object' '
+test_expect_success 'clean up broken objects' '
+	rm .git/objects/$(test_oid_to_path $bogus_short_oid) &&
 	rm .git/objects/$(test_oid_to_path $bogus_long_oid)
 '
 
@@ -903,25 +812,6 @@
 	)
 '
 
-test_expect_success 'truncated object with --allow-unknown-type' - <<\EOT
-	objtype='a really long type name that exceeds the 32-byte limit' &&
-	blob=$(git hash-object -w --literally -t "$objtype" /dev/null) &&
-	objpath=.git/objects/$(test_oid_to_path "$blob") &&
-
-	# We want to truncate the object far enough in that we don't hit the
-	# end while inflating the first 32 bytes (since we want to have to dig
-	# for the trailing NUL of the header). But we don't want to go too far,
-	# since our header isn't very big. And of course we are counting
-	# deflated zlib bytes in the on-disk file, so it's a bit of a guess.
-	# Empirically 50 seems to work.
-	mv "$objpath" obj.bak &&
-	test_when_finished 'mv obj.bak "$objpath"' &&
-	test_copy_bytes 50 <obj.bak >"$objpath" &&
-
-	test_must_fail git cat-file --allow-unknown-type -t $blob 2>err &&
-	test_grep "unable to unpack $blob header" err
-EOT
-
 test_expect_success 'object reading handles zlib dictionary' - <<\EOT
 	echo 'content that will be recompressed' >file &&
 	blob=$(git hash-object -w file) &&
diff --git a/t/t1007-hash-object.sh b/t/t1007-hash-object.sh
index b3cf53f..dbbe9fb 100755
--- a/t/t1007-hash-object.sh
+++ b/t/t1007-hash-object.sh
@@ -248,15 +248,8 @@
 	test_must_fail git hash-object -t bl --stdin </dev/null
 '
 
-test_expect_success '--literally' '
-	t=1234567890 &&
-	echo example | git hash-object -t $t --literally --stdin
-'
-
-test_expect_success '--literally with extra-long type' '
-	t=12345678901234567890123456789012345678901234567890 &&
-	t="$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t$t" &&
-	echo example | git hash-object -t $t --literally --stdin
+test_expect_success '--literally complains about non-standard types' '
+	test_must_fail git hash-object -t bogus --literally --stdin
 '
 
 test_expect_success '--stdin outside of repository (uses SHA-1)' '
diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh
index f9b4487..d810113 100755
--- a/t/t1092-sparse-checkout-compatibility.sh
+++ b/t/t1092-sparse-checkout-compatibility.sh
@@ -384,6 +384,44 @@
 	test_all_match git checkout -
 '
 
+test_expect_success 'git add, checkout, and reset with -p' '
+	init_repos &&
+
+	write_script edit-contents <<-\EOF &&
+	echo text >>$1
+	EOF
+
+	# Does not expand when edits are within sparse checkout.
+	run_on_all ../edit-contents deep/a &&
+	run_on_all ../edit-contents deep/deeper1/a &&
+
+	test_write_lines y n >in &&
+	run_on_all git add -p <in &&
+	test_all_match git status --porcelain=v2 &&
+	test_all_match git reset -p <in &&
+
+	test_write_lines u 1 "" q >in &&
+	run_on_all git add -i <in &&
+	test_all_match git status --porcelain=v2 &&
+	test_all_match git reset --hard &&
+
+	run_on_sparse mkdir -p folder1 &&
+	run_on_all ../edit-contents folder1/a &&
+	test_write_lines y n y >in &&
+	run_on_all git add -p <in &&
+	test_sparse_match git status --porcelain=v2 &&
+	test_sparse_match git reset &&
+	test_write_lines u 2 3 "" q >in &&
+	run_on_all git add -i <in &&
+	test_sparse_match git status --porcelain=v2 &&
+
+	run_on_all git add --sparse folder1 &&
+	run_on_all git commit -m "take changes" &&
+	test_write_lines y n y >in &&
+	test_sparse_match git checkout HEAD~1 --patch <in &&
+	test_sparse_match git status --porcelain=v2
+'
+
 test_expect_success 'deep changes during checkout' '
 	init_repos &&
 
@@ -1340,6 +1378,30 @@
 	grep "160000 $(git -C initial-repo rev-parse HEAD) 0	modules/sub" cache
 '
 
+test_expect_success 'git apply functionality' '
+	init_repos &&
+
+	test_all_match git checkout base &&
+
+	git -C full-checkout diff base..merge-right -- deep >patch-in-sparse &&
+	git -C full-checkout diff base..merge-right -- folder2 >patch-outside &&
+
+	# Apply a patch to a file inside the sparse definition
+	test_all_match git apply --index --stat ../patch-in-sparse &&
+	test_all_match git status --porcelain=v2 &&
+
+	# Apply a patch to a file outside the sparse definition
+	test_sparse_match test_must_fail git apply ../patch-outside &&
+	grep "No such file or directory" sparse-checkout-err &&
+
+	# But it works with --index and --cached
+	test_all_match git apply --index --stat ../patch-outside &&
+	test_all_match git status --porcelain=v2 &&
+	test_all_match git reset --hard &&
+	test_all_match git apply --cached --stat ../patch-outside &&
+	test_all_match git status --porcelain=v2
+'
+
 # When working with a sparse index, some commands will need to expand the
 # index to operate properly. If those commands also write the index back
 # to disk, they need to convert the index to sparse before writing.
@@ -2345,6 +2407,95 @@
 	ensure_not_expanded check-attr -a --cached -- folder1/a
 '
 
+test_expect_success 'sparse-index is not expanded: git apply' '
+	init_repos &&
+
+	git -C sparse-index checkout base &&
+	git -C full-checkout diff base..merge-right -- deep >patch-in-sparse &&
+	git -C full-checkout diff base..merge-right -- folder2 >patch-outside &&
+
+	# Apply a patch to a file inside the sparse definition
+	ensure_not_expanded apply --index --stat ../patch-in-sparse &&
+
+	# Apply a patch to a file outside the sparse definition
+	# Fails when caring about the worktree.
+	ensure_not_expanded ! apply ../patch-outside &&
+
+	# Expands when using --index.
+	ensure_expanded apply --index ../patch-outside &&
+
+	# Does not when index is partially expanded.
+	git -C sparse-index reset --hard &&
+	ensure_not_expanded apply --cached ../patch-outside &&
+
+	# Try again with a reset and collapsed index.
+	git -C sparse-index reset --hard &&
+	git -C sparse-index sparse-checkout reapply &&
+
+	# Expands when index is collapsed.
+	ensure_expanded apply --cached ../patch-outside
+'
+
+test_expect_success 'sparse-index is not expanded: git add -p' '
+	init_repos &&
+
+	# Does not expand when edits are within sparse checkout.
+	echo "new content" >sparse-index/deep/a &&
+	echo "new content" >sparse-index/deep/deeper1/a &&
+	test_write_lines y n >in &&
+	ensure_not_expanded add -p <in &&
+	git -C sparse-index reset &&
+	ensure_not_expanded add -i <in &&
+
+	# -p does expand when edits are outside sparse checkout.
+	mkdir -p sparse-index/folder1 &&
+	echo "new content" >sparse-index/folder1/a &&
+	test_write_lines y n y >in &&
+	ensure_expanded add -p <in &&
+
+	# Fully reset the index.
+	git -C sparse-index reset --hard &&
+	git -C sparse-index sparse-checkout reapply &&
+
+	# -i does expand when edits are outside sparse checkout.
+	mkdir -p sparse-index/folder1 &&
+	echo "new content" >sparse-index/folder1/a &&
+	test_write_lines u 2 3 "" q >in &&
+	ensure_expanded add -i <in
+'
+
+test_expect_success 'sparse-index is not expanded: checkout -p, reset -p' '
+	init_repos &&
+
+	# Does not expand when edits are within sparse checkout.
+	echo "new content" >sparse-index/deep/a &&
+	echo "new content" >sparse-index/deep/deeper1/a &&
+	git -C sparse-index commit -a -m "inside-changes" &&
+
+	test_write_lines y y >in &&
+	ensure_not_expanded checkout HEAD~1 --patch <in &&
+
+	echo "new content" >sparse-index/deep/a &&
+	echo "new content" >sparse-index/deep/deeper1/a &&
+	git -C sparse-index add . &&
+	ensure_not_expanded reset --patch <in &&
+
+	# -p does expand when edits are outside sparse checkout.
+	mkdir -p sparse-index/folder1 &&
+	echo "new content" >sparse-index/folder1/a &&
+	git -C sparse-index add --sparse folder1 &&
+	git -C sparse-index sparse-checkout reapply &&
+	ensure_expanded reset --patch <in &&
+
+	# Fully reset the index.
+	mkdir -p sparse-index/folder1 &&
+	echo "new content" >sparse-index/folder1/a &&
+	git -C sparse-index add --sparse folder1 &&
+	git -C sparse-index commit -m "folder1 change" &&
+	git -C sparse-index sparse-checkout reapply &&
+	ensure_expanded checkout HEAD~1 --patch <in
+'
+
 test_expect_success 'advice.sparseIndexExpanded' '
 	init_repos &&
 
diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
index 0105045..5ae86c4 100755
--- a/t/t1450-fsck.sh
+++ b/t/t1450-fsck.sh
@@ -7,6 +7,7 @@
 '
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY/lib-loose.sh"
 
 test_expect_success setup '
 	git config gc.auto 0 &&
@@ -71,30 +72,6 @@
 	)
 '
 
-test_expect_success 'object with hash and type mismatch' '
-	git init --bare hash-type-mismatch &&
-	(
-		cd hash-type-mismatch &&
-
-		oid=$(echo blob | git hash-object -w --stdin -t garbage --literally) &&
-		oldoid=$oid &&
-		old=$(test_oid_to_path "$oid") &&
-		new=$(dirname $old)/$(test_oid ff_2) &&
-		oid="$(dirname $new)$(basename $new)" &&
-
-		mv objects/$old objects/$new &&
-		git update-index --add --cacheinfo 100644 $oid foo &&
-		tree=$(git write-tree) &&
-		cmt=$(echo bogus | git commit-tree $tree) &&
-		git update-ref refs/heads/bogus $cmt &&
-
-
-		test_must_fail git fsck 2>out &&
-		grep "^error: $oldoid: hash-path mismatch, found at: .*$new" out &&
-		grep "^error: $oldoid: object is of unknown type '"'"'garbage'"'"'" out
-	)
-'
-
 test_expect_success 'zlib corrupt loose object output ' '
 	git init --bare corrupt-loose-output &&
 	(
@@ -997,12 +974,13 @@
 	(
 		cd garbage-type &&
 
-		garbage_blob=$(git hash-object --stdin -w -t garbage --literally </dev/null) &&
+		garbage_blob=$(loose_obj objects garbage </dev/null) &&
 
 		test_must_fail git fsck 2>err &&
 		grep -e "^error" -e "^fatal" err >errors &&
-		test_line_count = 1 errors &&
-		grep "$garbage_blob: object is of unknown type '"'"'garbage'"'"':" err
+		test_line_count = 2 errors &&
+		test_grep "unable to parse type from header .garbage" err &&
+		test_grep "$garbage_blob: object corrupt or missing:" err
 	)
 '
 
diff --git a/t/t1512-rev-parse-disambiguation.sh b/t/t1512-rev-parse-disambiguation.sh
index 70f1e0a..1a380a4 100755
--- a/t/t1512-rev-parse-disambiguation.sh
+++ b/t/t1512-rev-parse-disambiguation.sh
@@ -24,6 +24,7 @@
 export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
 
 . ./test-lib.sh
+. "$TEST_DIRECTORY/lib-loose.sh"
 
 test_cmp_failed_rev_parse () {
 	dir=$1
@@ -67,8 +68,8 @@
 		cd blob.bad &&
 
 		# Both have the prefix "bad0"
-		echo xyzfaowcoh | git hash-object -t bad -w --stdin --literally &&
-		echo xyzhjpyvwl | git hash-object -t bad -w --stdin --literally
+		echo xyzfaowcoh | loose_obj objects bad &&
+		echo xyzhjpyvwl | loose_obj objects bad
 	) &&
 
 	test_cmp_failed_rev_parse blob.bad bad0 <<-\EOF
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 2aee978..6bac217 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -1468,7 +1468,7 @@
 	cat >expect <<-EOF &&
 	Warning: some commits may have been dropped accidentally.
 	Dropped commits (newer to older):
-	 - $(git rev-list --pretty=oneline --abbrev-commit -1 primary)
+	 - $(git log --format="%h # %s" -1 primary)
 	To avoid this message, use "drop" to explicitly remove a commit.
 	EOF
 	test_config rebase.missingCommitsCheck warn &&
@@ -1486,8 +1486,8 @@
 	cat >expect <<-EOF &&
 	Warning: some commits may have been dropped accidentally.
 	Dropped commits (newer to older):
-	 - $(git rev-list --pretty=oneline --abbrev-commit -1 primary)
-	 - $(git rev-list --pretty=oneline --abbrev-commit -1 primary~2)
+	 - $(git log --format="%h # %s" -1 primary)
+	 - $(git log --format="%h # %s" -1 primary~2)
 	To avoid this message, use "drop" to explicitly remove a commit.
 
 	Use '\''git config rebase.missingCommitsCheck'\'' to change the level of warnings.
@@ -1530,11 +1530,11 @@
 test_expect_success 'rebase --edit-todo respects rebase.missingCommitsCheck = warn' '
 	cat >expect <<-EOF &&
 	error: invalid command '\''pickled'\''
-	error: invalid line 1: pickled $(git rev-list --pretty=oneline --abbrev-commit -1 primary~4)
+	error: invalid line 1: pickled $(git log --format="%h # %s" -1 primary~4)
 	Warning: some commits may have been dropped accidentally.
 	Dropped commits (newer to older):
-	 - $(git rev-list --pretty=oneline --abbrev-commit -1 primary)
-	 - $(git rev-list --pretty=oneline --abbrev-commit -1 primary~4)
+	 - $(git log --format="%h # %s" -1 primary)
+	 - $(git log --format="%h # %s" -1 primary~4)
 	To avoid this message, use "drop" to explicitly remove a commit.
 	EOF
 	head -n5 expect >expect.2 &&
@@ -1565,11 +1565,11 @@
 test_expect_success 'rebase --edit-todo respects rebase.missingCommitsCheck = error' '
 	cat >expect <<-EOF &&
 	error: invalid command '\''pickled'\''
-	error: invalid line 1: pickled $(git rev-list --pretty=oneline --abbrev-commit -1 primary~4)
+	error: invalid line 1: pickled $(git log --format="%h # %s" -1 primary~4)
 	Warning: some commits may have been dropped accidentally.
 	Dropped commits (newer to older):
-	 - $(git rev-list --pretty=oneline --abbrev-commit -1 primary)
-	 - $(git rev-list --pretty=oneline --abbrev-commit -1 primary~4)
+	 - $(git log --format="%h # %s" -1 primary)
+	 - $(git log --format="%h # %s" -1 primary~4)
 	To avoid this message, use "drop" to explicitly remove a commit.
 
 	Use '\''git config rebase.missingCommitsCheck'\'' to change the level of warnings.
@@ -1642,11 +1642,11 @@
 	test_commit "fixup! first" file2.txt "first line again" first_fixup &&
 	test_commit "squash! second" file1.txt "another line here" second_squash &&
 	cat >expected <<-EOF &&
-	p $(git rev-list --abbrev-commit -1 first) first
-	f $(git rev-list --abbrev-commit -1 first_fixup) fixup! first
+	p $(git rev-list --abbrev-commit -1 first) # first
+	f $(git rev-list --abbrev-commit -1 first_fixup) # fixup! first
 	x git show HEAD
-	p $(git rev-list --abbrev-commit -1 second) second
-	s $(git rev-list --abbrev-commit -1 second_squash) squash! second
+	p $(git rev-list --abbrev-commit -1 second) # second
+	s $(git rev-list --abbrev-commit -1 second_squash) # squash! second
 	x git show HEAD
 	EOF
 	git checkout abbrevcmd &&
@@ -1665,7 +1665,7 @@
 		set_fake_editor &&
 		test_must_fail env FAKE_LINES="1 2 3 bad 4 5" \
 		git rebase -i --root 2>actual &&
-		test_grep "pickled $(git rev-list --oneline -1 primary~1)" \
+		test_grep "pickled $(git log --format="%h # %s" -1 primary~1)" \
 				actual &&
 		test_grep "You can fix this with .git rebase --edit-todo.." \
 				actual &&
@@ -1865,15 +1865,15 @@
 		set_cat_todo_editor &&
 
 		cat >expect <<-EOF &&
-		pick $(git log -1 --format=%h J) J
-		fixup $(git log -1 --format=%h update-refs) fixup! J # empty
+		pick $(git log -1 --format=%h J) # J
+		fixup $(git log -1 --format=%h update-refs) # fixup! J # empty
 		update-ref refs/heads/second
 		update-ref refs/heads/first
-		pick $(git log -1 --format=%h K) K
-		pick $(git log -1 --format=%h L) L
-		fixup $(git log -1 --format=%h is-not-reordered) fixup! L # empty
+		pick $(git log -1 --format=%h K) # K
+		pick $(git log -1 --format=%h L) # L
+		fixup $(git log -1 --format=%h is-not-reordered) # fixup! L # empty
 		update-ref refs/heads/third
-		pick $(git log -1 --format=%h M) M
+		pick $(git log -1 --format=%h M) # M
 		update-ref refs/heads/no-conflict-branch
 		update-ref refs/heads/is-not-reordered
 		update-ref refs/heads/shared-tip
@@ -1905,19 +1905,19 @@
 		cat >expect <<-EOF &&
 		label onto
 		reset onto
-		pick $(git log -1 --format=%h branch2~1) F
-		pick $(git log -1 --format=%h branch2) I
+		pick $(git log -1 --format=%h branch2~1) # F
+		pick $(git log -1 --format=%h branch2) # I
 		update-ref refs/heads/branch2
 		label branch2
 		reset onto
-		pick $(git log -1 --format=%h refs/heads/second) J
+		pick $(git log -1 --format=%h refs/heads/second) # J
 		update-ref refs/heads/second
 		update-ref refs/heads/first
-		pick $(git log -1 --format=%h refs/heads/third~1) K
-		pick $(git log -1 --format=%h refs/heads/third) L
-		fixup $(git log -1 --format=%h update-refs-with-merge) fixup! L # empty
+		pick $(git log -1 --format=%h refs/heads/third~1) # K
+		pick $(git log -1 --format=%h refs/heads/third) # L
+		fixup $(git log -1 --format=%h update-refs-with-merge) # fixup! L # empty
 		update-ref refs/heads/third
-		pick $(git log -1 --format=%h HEAD~2) M
+		pick $(git log -1 --format=%h HEAD~2) # M
 		update-ref refs/heads/no-conflict-branch
 		merge -C $(git log -1 --format=%h HEAD~1) branch2 # merge
 		update-ref refs/heads/merge-branch
diff --git a/t/t3415-rebase-autosquash.sh b/t/t3415-rebase-autosquash.sh
index fcc40d6..26b42a5 100755
--- a/t/t3415-rebase-autosquash.sh
+++ b/t/t3415-rebase-autosquash.sh
@@ -257,8 +257,8 @@
 	GIT_SEQUENCE_EDITOR="cat >tmp" git rebase --autosquash -i HEAD^^ &&
 	sed -ne "/^[^#]/{s/[0-9a-f]\{7,\}/HASH/g;p;}" tmp >actual &&
 	cat <<-EOF >expect &&
-	pick HASH second commit
-	pick HASH fixup! self-cycle # empty
+	pick HASH # second commit
+	pick HASH # fixup! self-cycle # empty
 	EOF
 	test_cmp expect actual
 '
@@ -311,10 +311,10 @@
 		parent2=$(git rev-parse --short HEAD^^) &&
 		parent3=$(git rev-parse --short HEAD^^^) &&
 		cat >expected <<-EOF &&
-		pick $parent3 first commit
-		$1 $parent1 $1! first
-		$1 $head $1! $2! first
-		pick $parent2 second commit
+		pick $parent3 # first commit
+		$1 $parent1 # $1! first
+		$1 $head # $1! $2! first
+		pick $parent2 # second commit
 		EOF
 		test_cmp expected actual
 	) &&
@@ -389,7 +389,7 @@
 		set_cat_todo_editor &&
 		test_must_fail git -c rebase.instructionFormat= \
 			rebase --autosquash  --force-rebase -i HEAD^ >actual &&
-		git log -1 --format="pick %h %s" >expect &&
+		git log -1 --format="pick %h # %s" >expect &&
 		test_cmp expect actual
 	)
 '
diff --git a/t/t3430-rebase-merges.sh b/t/t3430-rebase-merges.sh
index b84d68c..cc627e3 100755
--- a/t/t3430-rebase-merges.sh
+++ b/t/t3430-rebase-merges.sh
@@ -86,7 +86,7 @@
 	test_config sequence.editor \""$PWD"/replace-editor.sh\" &&
 	test_tick &&
 	git rebase -i -r A main &&
-	test_cmp_graph <<-\EOF
+	test_cmp_graph <<-\EOF &&
 	*   Merge the topic branch '\''onebranch'\''
 	|\
 	| * D
@@ -99,6 +99,15 @@
 	|/
 	* A
 	EOF
+
+	head="$(git show-ref --verify -s --abbrev HEAD)" &&
+	cat >expect <<-EOF &&
+	$head HEAD@{0}: rebase (finish): returning to refs/heads/main
+	$head HEAD@{1}: rebase (merge): Merge the topic branch ${SQ}onebranch${SQ}
+	EOF
+
+	git reflog -n2 HEAD >actual &&
+	test_cmp expect actual
 '
 
 test_expect_success 'generate correct todo list' '
@@ -106,18 +115,18 @@
 	label onto
 
 	reset onto
-	pick $b B
+	pick $b # B
 	label first
 
 	reset onto
-	pick $c C
+	pick $c # C
 	label branch-point
-	pick $f F
-	pick $g G
+	pick $f # F
+	pick $g # G
 	label second
 
 	reset branch-point # C
-	pick $d D
+	pick $d # D
 	merge -C $e first # E
 	merge -C $h second # H
 
diff --git a/t/t4018/bash-bashism-style-complete-line-capture b/t/t4018/bash-bashism-style-complete-line-capture
new file mode 100644
index 0000000..070b979
--- /dev/null
+++ b/t/t4018/bash-bashism-style-complete-line-capture
@@ -0,0 +1,4 @@
+function myfunc # RIGHT
+{
+    echo 'ChangeMe'
+}
diff --git a/t/t4018/bash-posix-style-complete-line-capture b/t/t4018/bash-posix-style-complete-line-capture
new file mode 100644
index 0000000..b56942f
--- /dev/null
+++ b/t/t4018/bash-posix-style-complete-line-capture
@@ -0,0 +1,4 @@
+func() { # RIGHT
+
+    ChangeMe
+}
diff --git a/t/t4018/bash-posix-style-single-command-function b/t/t4018/bash-posix-style-single-command-function
new file mode 100644
index 0000000..398ae1c
--- /dev/null
+++ b/t/t4018/bash-posix-style-single-command-function
@@ -0,0 +1,3 @@
+RIGHT() echo "hello"
+
+    ChangeMe
diff --git a/t/t4034-diff-words.sh b/t/t4034-diff-words.sh
index f51d355..0be647c 100755
--- a/t/t4034-diff-words.sh
+++ b/t/t4034-diff-words.sh
@@ -320,6 +320,7 @@
 
 test_language_driver ada
 test_language_driver bibtex
+test_language_driver bash
 test_language_driver cpp
 test_language_driver csharp
 test_language_driver css
diff --git a/t/t4034/bash/expect b/t/t4034/bash/expect
new file mode 100644
index 0000000..1864ab2
--- /dev/null
+++ b/t/t4034/bash/expect
@@ -0,0 +1,36 @@
+<BOLD>diff --git a/pre b/post<RESET>
+<BOLD>index 09ac008..60ba6a2 100644<RESET>
+<BOLD>--- a/pre<RESET>
+<BOLD>+++ b/post<RESET>
+<CYAN>@@ -1,31 +1,31 @@<RESET>
+<RED>my_var<RESET><GREEN>new_var<RESET>=10
+x=<RED>123<RESET><GREEN>456<RESET>
+echo <RED>$1<RESET><GREEN>$2<RESET>
+echo <RED>$USER<RESET><GREEN>$USERNAME<RESET>
+${<RED>HOME<RESET><GREEN>HOMEDIR<RESET>}
+((a<RED>+<RESET><GREEN>+=<RESET>b))
+((a<RED>*<RESET><GREEN>*=<RESET>b))
+((a<RED>/<RESET><GREEN>/=<RESET>b))
+((a<RED>%<RESET><GREEN>%=<RESET>b))
+((a<RED>|<RESET><GREEN>|=<RESET>b))
+((a<RED>^<RESET><GREEN>^=<RESET>b))
+((a<RED>=<RESET><GREEN>==<RESET>b))
+((a<RED>!<RESET><GREEN>!=<RESET>b))
+((a<RED><<RESET><GREEN><=<RESET>b))
+((a<RED>><RESET><GREEN>>=<RESET>b))
+$((a<RED><<RESET><GREEN><<<RESET>b))
+$((a<RED>><RESET><GREEN>>><RESET>b))
+$((a<RED>&<RESET><GREEN>&&<RESET>b))
+$((a<RED>|<RESET><GREEN>||<RESET>b))
+${a<RED>:<RESET><GREEN>:-<RESET>b}
+${a<RED>:<RESET><GREEN>:=<RESET>b}
+${a<RED>:<RESET><GREEN>:+<RESET>b}
+${a<RED>:<RESET><GREEN>:?<RESET>b}
+${a<RED>#<RESET><GREEN>##<RESET>*/}
+${a<RED>%<RESET><GREEN>%%<RESET>.*}
+${a<RED>^<RESET><GREEN>^^<RESET>}
+${a<RED>,<RESET><GREEN>,,<RESET>}
+${<GREEN>!<RESET>a}
+${a[<RED>*<RESET><GREEN>@<RESET>]}
+ls <RED>-a<RESET><GREEN>-x<RESET>
+ls <RED>--all<RESET><GREEN>--color<RESET>
diff --git a/t/t4034/bash/post b/t/t4034/bash/post
new file mode 100644
index 0000000..2bbee89
--- /dev/null
+++ b/t/t4034/bash/post
@@ -0,0 +1,31 @@
+new_var=10
+x=456
+echo $2
+echo $USERNAME
+${HOMEDIR}
+((a+=b))
+((a*=b))
+((a/=b))
+((a%=b))
+((a|=b))
+((a^=b))
+((a==b))
+((a!=b))
+((a<=b))
+((a>=b))
+$((a<<b))
+$((a>>b))
+$((a&&b))
+$((a||b))
+${a:-b}
+${a:=b}
+${a:+b}
+${a:?b}
+${a##*/}
+${a%%.*}
+${a^^}
+${a,,}
+${!a}
+${a[@]}
+ls -x
+ls --color
diff --git a/t/t4034/bash/pre b/t/t4034/bash/pre
new file mode 100644
index 0000000..8d22039
--- /dev/null
+++ b/t/t4034/bash/pre
@@ -0,0 +1,31 @@
+my_var=10
+x=123
+echo $1
+echo $USER
+${HOME}
+((a+b))
+((a*b))
+((a/b))
+((a%b))
+((a|b))
+((a^b))
+((a=b))
+((a!b))
+((a<b))
+((a>b))
+$((a<b))
+$((a>b))
+$((a&b))
+$((a|b))
+${a:b}
+${a:b}
+${a:b}
+${a:b}
+${a#*/}
+${a%.*}
+${a^}
+${a,}
+${a}
+${a[*]}
+ls -a
+ls --all
diff --git a/t/t4071-diff-minimal.sh b/t/t4071-diff-minimal.sh
new file mode 100755
index 0000000..4c484da
--- /dev/null
+++ b/t/t4071-diff-minimal.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+test_description='minimal diff algorithm'
+
+. ./test-lib.sh
+
+test_expect_success 'minimal diff should not mark changes between changed lines' '
+	test_write_lines x x x x >pre &&
+	test_write_lines x x x A B C D x E F G >post &&
+	test_expect_code 1 git diff --no-index --minimal pre post >diff &&
+	test_grep ! ^[+-]x diff 
+'
+
+test_done
diff --git a/t/t4129-apply-samemode.sh b/t/t4129-apply-samemode.sh
index 2149ad5..1d6317b 100755
--- a/t/t4129-apply-samemode.sh
+++ b/t/t4129-apply-samemode.sh
@@ -102,15 +102,32 @@
 	)
 '
 
+test_file_mode_common () {
+	if test "$1" = "000000"
+	then
+		test_must_be_empty "$2"
+	else
+		test_grep "^$1 " "$2"
+	fi
+}
+
+test_file_mode_staged () {
+	git ls-files --stage -- "$2" >ls-files-output &&
+	test_file_mode_common "$1" ls-files-output
+}
+
+test_file_mode_HEAD () {
+	git ls-tree HEAD -- "$2" >ls-tree-output &&
+	test_file_mode_common "$1" ls-tree-output
+}
+
 test_expect_success 'git apply respects core.fileMode' '
 	test_config core.fileMode false &&
 	echo true >script.sh &&
 	git add --chmod=+x script.sh &&
-	git ls-files -s script.sh >ls-files-output &&
-	test_grep "^100755" ls-files-output &&
+	test_file_mode_staged 100755 script.sh &&
 	test_tick && git commit -m "Add script" &&
-	git ls-tree -r HEAD script.sh >ls-tree-output &&
-	test_grep "^100755" ls-tree-output &&
+	test_file_mode_HEAD 100755 script.sh &&
 
 	echo true >>script.sh &&
 	test_tick && git commit -m "Modify script" script.sh &&
@@ -126,7 +143,211 @@
 	test_grep ! "has type 100644, expected 100755" err &&
 
 	git apply --cached patch 2>err &&
-	test_grep ! "has type 100644, expected 100755" err
+	test_grep ! "has type 100644, expected 100755" err &&
+	git reset --hard
+'
+
+test_expect_success 'setup: git apply [--reverse] warns about incorrect file modes' '
+	test_config core.fileMode false &&
+
+	>mode_test &&
+	git add --chmod=-x mode_test &&
+	test_file_mode_staged 100644 mode_test &&
+	test_tick && git commit -m "add mode_test" &&
+	test_file_mode_HEAD 100644 mode_test &&
+	git tag mode_test_forward_initial &&
+
+	echo content >>mode_test &&
+	test_tick && git commit -m "append to mode_test" mode_test &&
+	test_file_mode_HEAD 100644 mode_test &&
+	git tag mode_test_reverse_initial &&
+
+	git format-patch -1 --stdout >patch &&
+	test_grep "^index .* 100644$" patch
+'
+
+test_expect_success 'git apply warns about incorrect file modes' '
+	test_config core.fileMode false &&
+	git reset --hard mode_test_forward_initial &&
+
+	git add --chmod=+x mode_test &&
+	test_file_mode_staged 100755 mode_test &&
+	test_tick && git commit -m "make mode_test executable" &&
+	test_file_mode_HEAD 100755 mode_test &&
+
+	git apply --index patch 2>err &&
+	test_grep "has type 100755, expected 100644" err &&
+	test_file_mode_staged 100755 mode_test &&
+	test_tick && git commit -m "redo: append to mode_test" &&
+	test_file_mode_HEAD 100755 mode_test
+'
+
+test_expect_success 'git apply --reverse warns about incorrect file modes' '
+	test_config core.fileMode false &&
+	git reset --hard mode_test_reverse_initial &&
+
+	git add --chmod=+x mode_test &&
+	test_file_mode_staged 100755 mode_test &&
+	test_tick && git commit -m "make mode_test executable" &&
+	test_file_mode_HEAD 100755 mode_test &&
+
+	git apply --index --reverse patch 2>err &&
+	test_grep "has type 100755, expected 100644" err &&
+	test_file_mode_staged 100755 mode_test &&
+	test_tick && git commit -m "undo: append to mode_test" &&
+	test_file_mode_HEAD 100755 mode_test
+'
+
+test_expect_success 'setup: git apply [--reverse] restores file modes (change_x_to_notx)' '
+	test_config core.fileMode false &&
+
+	touch change_x_to_notx &&
+	git add --chmod=+x change_x_to_notx &&
+	test_file_mode_staged 100755 change_x_to_notx &&
+	test_tick && git commit -m "add change_x_to_notx as executable" &&
+	test_file_mode_HEAD 100755 change_x_to_notx &&
+
+	git add --chmod=-x change_x_to_notx &&
+	test_file_mode_staged 100644 change_x_to_notx &&
+	test_tick && git commit -m "make change_x_to_notx not executable" &&
+	test_file_mode_HEAD 100644 change_x_to_notx &&
+
+	git rm change_x_to_notx &&
+	test_file_mode_staged 000000 change_x_to_notx &&
+	test_tick && git commit -m "remove change_x_to_notx" &&
+	test_file_mode_HEAD 000000 change_x_to_notx &&
+
+	git format-patch -o patches -3 &&
+	mv patches/0001-* change_x_to_notx-0001-create-0755.patch &&
+	mv patches/0002-* change_x_to_notx-0002-chmod-0644.patch &&
+	mv patches/0003-* change_x_to_notx-0003-delete.patch &&
+
+	test_grep "^new file mode 100755$" change_x_to_notx-0001-create-0755.patch &&
+	test_grep "^old mode 100755$" change_x_to_notx-0002-chmod-0644.patch &&
+	test_grep "^new mode 100644$" change_x_to_notx-0002-chmod-0644.patch &&
+	test_grep "^deleted file mode 100644$" change_x_to_notx-0003-delete.patch &&
+
+	git tag change_x_to_notx_initial
+'
+
+test_expect_success 'git apply restores file modes (change_x_to_notx)' '
+	test_config core.fileMode false &&
+	git reset --hard change_x_to_notx_initial &&
+
+	git apply --index change_x_to_notx-0001-create-0755.patch &&
+	test_file_mode_staged 100755 change_x_to_notx &&
+	test_tick && git commit -m "redo: add change_x_to_notx as executable" &&
+	test_file_mode_HEAD 100755 change_x_to_notx &&
+
+	git apply --index change_x_to_notx-0002-chmod-0644.patch 2>err &&
+	test_grep ! "has type 100.*, expected 100.*" err &&
+	test_file_mode_staged 100644 change_x_to_notx &&
+	test_tick && git commit -m "redo: make change_x_to_notx not executable" &&
+	test_file_mode_HEAD 100644 change_x_to_notx &&
+
+	git apply --index change_x_to_notx-0003-delete.patch 2>err &&
+	test_grep ! "has type 100.*, expected 100.*" err &&
+	test_file_mode_staged 000000 change_x_to_notx &&
+	test_tick && git commit -m "redo: remove change_notx_to_x" &&
+	test_file_mode_HEAD 000000 change_x_to_notx
+'
+
+test_expect_success 'git apply --reverse restores file modes (change_x_to_notx)' '
+	test_config core.fileMode false &&
+	git reset --hard change_x_to_notx_initial &&
+
+	git apply --index --reverse change_x_to_notx-0003-delete.patch &&
+	test_file_mode_staged 100644 change_x_to_notx &&
+	test_tick && git commit -m "undo: remove change_x_to_notx" &&
+	test_file_mode_HEAD 100644 change_x_to_notx &&
+
+	git apply --index --reverse change_x_to_notx-0002-chmod-0644.patch 2>err &&
+	test_grep ! "has type 100.*, expected 100.*" err &&
+	test_file_mode_staged 100755 change_x_to_notx &&
+	test_tick && git commit -m "undo: make change_x_to_notx not executable" &&
+	test_file_mode_HEAD 100755 change_x_to_notx &&
+
+	git apply --index --reverse change_x_to_notx-0001-create-0755.patch 2>err &&
+	test_grep ! "has type 100.*, expected 100.*" err &&
+	test_file_mode_staged 000000 change_x_to_notx &&
+	test_tick && git commit -m "undo: add change_x_to_notx as executable" &&
+	test_file_mode_HEAD 000000 change_x_to_notx
+'
+
+test_expect_success 'setup: git apply [--reverse] restores file modes (change_notx_to_x)' '
+	test_config core.fileMode false &&
+
+	touch change_notx_to_x &&
+	git add --chmod=-x change_notx_to_x &&
+	test_file_mode_staged 100644 change_notx_to_x &&
+	test_tick && git commit -m "add change_notx_to_x as not executable" &&
+	test_file_mode_HEAD 100644 change_notx_to_x &&
+
+	git add --chmod=+x change_notx_to_x &&
+	test_file_mode_staged 100755 change_notx_to_x &&
+	test_tick && git commit -m "make change_notx_to_x executable" &&
+	test_file_mode_HEAD 100755 change_notx_to_x &&
+
+	git rm change_notx_to_x &&
+	test_file_mode_staged 000000 change_notx_to_x &&
+	test_tick && git commit -m "remove change_notx_to_x" &&
+	test_file_mode_HEAD 000000 change_notx_to_x &&
+
+	git format-patch -o patches -3 &&
+	mv patches/0001-* change_notx_to_x-0001-create-0644.patch &&
+	mv patches/0002-* change_notx_to_x-0002-chmod-0755.patch &&
+	mv patches/0003-* change_notx_to_x-0003-delete.patch &&
+
+	test_grep "^new file mode 100644$" change_notx_to_x-0001-create-0644.patch &&
+	test_grep "^old mode 100644$" change_notx_to_x-0002-chmod-0755.patch &&
+	test_grep "^new mode 100755$" change_notx_to_x-0002-chmod-0755.patch &&
+	test_grep "^deleted file mode 100755$" change_notx_to_x-0003-delete.patch &&
+
+	git tag change_notx_to_x_initial
+'
+
+test_expect_success 'git apply restores file modes (change_notx_to_x)' '
+	test_config core.fileMode false &&
+	git reset --hard change_notx_to_x_initial &&
+
+	git apply --index change_notx_to_x-0001-create-0644.patch &&
+	test_file_mode_staged 100644 change_notx_to_x &&
+	test_tick && git commit -m "redo: add change_notx_to_x as not executable" &&
+	test_file_mode_HEAD 100644 change_notx_to_x &&
+
+	git apply --index change_notx_to_x-0002-chmod-0755.patch 2>err &&
+	test_grep ! "has type 100.*, expected 100.*" err &&
+	test_file_mode_staged 100755 change_notx_to_x &&
+	test_tick && git commit -m "redo: make change_notx_to_x executable" &&
+	test_file_mode_HEAD 100755 change_notx_to_x &&
+
+	git apply --index change_notx_to_x-0003-delete.patch &&
+	test_grep ! "has type 100.*, expected 100.*" err &&
+	test_file_mode_staged 000000 change_notx_to_x &&
+	test_tick && git commit -m "undo: remove change_notx_to_x" &&
+	test_file_mode_HEAD 000000 change_notx_to_x
+'
+
+test_expect_success 'git apply --reverse restores file modes (change_notx_to_x)' '
+	test_config core.fileMode false &&
+	git reset --hard change_notx_to_x_initial &&
+
+	git apply --index --reverse change_notx_to_x-0003-delete.patch &&
+	test_file_mode_staged 100755 change_notx_to_x &&
+	test_tick && git commit -m "undo: remove change_notx_to_x" &&
+	test_file_mode_HEAD 100755 change_notx_to_x &&
+
+	git apply --index --reverse change_notx_to_x-0002-chmod-0755.patch 2>err &&
+	test_grep ! "has type 100.*, expected 100.*" err &&
+	test_file_mode_staged 100644 change_notx_to_x &&
+	test_tick && git commit -m "undo: make change_notx_to_x executable" &&
+	test_file_mode_HEAD 100644 change_notx_to_x &&
+
+	git apply --index --reverse change_notx_to_x-0001-create-0644.patch 2>err &&
+	test_grep ! "has type 100.*, expected 100.*" err &&
+	test_file_mode_staged 000000 change_notx_to_x &&
+	test_tick && git commit -m "undo: add change_notx_to_x as not executable" &&
+	test_file_mode_HEAD 000000 change_notx_to_x
 '
 
 test_expect_success POSIXPERM 'patch mode for new file is canonicalized' '
diff --git a/t/t4301-merge-tree-write-tree.sh b/t/t4301-merge-tree-write-tree.sh
index f9c5883..6e117ee 100755
--- a/t/t4301-merge-tree-write-tree.sh
+++ b/t/t4301-merge-tree-write-tree.sh
@@ -54,6 +54,25 @@
 	git commit -m first-commit
 '
 
+test_expect_success '--quiet on clean merge' '
+	# Get rid of loose objects to start with
+	git gc &&
+	echo "0 objects, 0 kilobytes" >expect &&
+	git count-objects >actual &&
+	test_cmp expect actual &&
+
+	# Ensure merge is successful (exit code of 0)
+	git merge-tree --write-tree --quiet side1 side3 >output &&
+
+	# Ensure there is no output
+	test_must_be_empty output &&
+
+	# Ensure no loose objects written (all new objects written would have
+	# been in "outer layer" of the merge)
+	git count-objects >actual &&
+	test_cmp expect actual
+'
+
 test_expect_success 'Clean merge' '
 	TREE_OID=$(git merge-tree --write-tree side1 side3) &&
 	q_to_tab <<-EOF >expect &&
@@ -72,6 +91,25 @@
 	grep "CONFLICT (modify/delete): numbers deleted" out
 '
 
+test_expect_success  '--quiet on conflicted merge' '
+	# Get rid of loose objects to start with
+	git gc &&
+	echo "0 objects, 0 kilobytes" >expect &&
+	git count-objects >actual &&
+	test_cmp expect actual &&
+
+	# Ensure merge has conflict
+	test_expect_code 1 git merge-tree --write-tree --quiet side1 side2 >output &&
+
+	# Ensure there is no output
+	test_must_be_empty output &&
+
+	# Ensure no loose objects written (all new objects written would have
+	# been in "outer layer" of the merge)
+	git count-objects >actual &&
+	test_cmp expect actual
+'
+
 test_expect_success 'Content merge and a few conflicts' '
 	git checkout side1^0 &&
 	test_must_fail git merge side2 &&
diff --git a/t/t5150-request-pull.sh b/t/t5150-request-pull.sh
index cb67bac..270ce6e 100755
--- a/t/t5150-request-pull.sh
+++ b/t/t5150-request-pull.sh
@@ -7,12 +7,6 @@
 
 . ./test-lib.sh
 
-if ! test_have_prereq PERL
-then
-	skip_all='skipping request-pull tests, perl not available'
-	test_done
-fi
-
 test_expect_success 'setup' '
 
 	git init --bare upstream.git &&
diff --git a/t/t5309-pack-delta-cycles.sh b/t/t5309-pack-delta-cycles.sh
index 60fc710..6b03675 100755
--- a/t/t5309-pack-delta-cycles.sh
+++ b/t/t5309-pack-delta-cycles.sh
@@ -60,7 +60,10 @@
 test_expect_success 'failover to an object in another pack' '
 	clear_packs &&
 	git index-pack --stdin <ab.pack &&
-	test_must_fail git index-pack --stdin --fix-thin <cycle.pack
+
+	# This cycle does not fail since the existence of A & B in
+	# the repo allows us to resolve the cycle.
+	git index-pack --stdin --fix-thin <cycle.pack
 '
 
 test_expect_success 'failover to a duplicate object in the same pack' '
@@ -72,7 +75,34 @@
 		pack_obj $A
 	} >recoverable.pack &&
 	pack_trailer recoverable.pack &&
-	test_must_fail git index-pack --fix-thin --stdin <recoverable.pack
+
+	# This cycle does not fail since the existence of a full copy
+	# of A in the pack allows us to resolve the cycle.
+	git index-pack --fix-thin --stdin <recoverable.pack
+'
+
+test_expect_success 'index-pack works with thin pack A->B->C with B on disk' '
+	git init server &&
+	(
+		cd server &&
+		test_commit_bulk 4
+	) &&
+
+	A=$(git -C server rev-parse HEAD^{tree}) &&
+	B=$(git -C server rev-parse HEAD~1^{tree}) &&
+	C=$(git -C server rev-parse HEAD~2^{tree}) &&
+	git -C server reset --hard HEAD~1 &&
+
+	test-tool -C server pack-deltas --num-objects=2 >thin.pack <<-EOF &&
+	REF_DELTA $A $B
+	REF_DELTA $B $C
+	EOF
+
+	git clone "file://$(pwd)/server" client &&
+	(
+		cd client &&
+		git index-pack --fix-thin --stdin <../thin.pack
+	)
 '
 
 test_done
diff --git a/t/t5410-receive-pack-alternates.sh b/t/t5410-receive-pack-alternates.sh
deleted file mode 100755
index 4e82fd1..0000000
--- a/t/t5410-receive-pack-alternates.sh
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/bin/sh
-
-test_description='git receive-pack with alternate ref filtering'
-
-GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
-export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
-
-. ./test-lib.sh
-
-test_expect_success 'setup' '
-	test_commit base &&
-	git clone -s --bare . fork &&
-	git checkout -b public/branch main &&
-	test_commit public &&
-	git checkout -b private/branch main &&
-	test_commit private
-'
-
-extract_haves () {
-	depacketize | sed -n 's/^\([^ ][^ ]*\) \.have/\1/p'
-}
-
-test_expect_success 'with core.alternateRefsCommand' '
-	write_script fork/alternate-refs <<-\EOF &&
-		git --git-dir="$1" for-each-ref \
-			--format="%(objectname)" \
-			refs/heads/public/
-	EOF
-	test_config -C fork core.alternateRefsCommand ./alternate-refs &&
-	git rev-parse public/branch >expect &&
-	printf "0000" | git receive-pack fork >actual &&
-	extract_haves <actual >actual.haves &&
-	test_cmp expect actual.haves
-'
-
-test_expect_success 'with core.alternateRefsPrefixes' '
-	test_config -C fork core.alternateRefsPrefixes "refs/heads/private" &&
-	git rev-parse private/branch >expect &&
-	printf "0000" | git receive-pack fork >actual &&
-	extract_haves <actual >actual.haves &&
-	test_cmp expect actual.haves
-'
-
-test_done
diff --git a/t/t5410-receive-pack.sh b/t/t5410-receive-pack.sh
new file mode 100755
index 0000000..09d6bfd
--- /dev/null
+++ b/t/t5410-receive-pack.sh
@@ -0,0 +1,100 @@
+#!/bin/sh
+
+test_description='git receive-pack'
+
+GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
+export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+	test_commit base &&
+	git clone -s --bare . fork &&
+	git checkout -b public/branch main &&
+	test_commit public &&
+	git checkout -b private/branch main &&
+	test_commit private
+'
+
+extract_haves () {
+	depacketize | sed -n 's/^\([^ ][^ ]*\) \.have/\1/p'
+}
+
+test_expect_success 'with core.alternateRefsCommand' '
+	write_script fork/alternate-refs <<-\EOF &&
+		git --git-dir="$1" for-each-ref \
+			--format="%(objectname)" \
+			refs/heads/public/
+	EOF
+	test_config -C fork core.alternateRefsCommand ./alternate-refs &&
+	git rev-parse public/branch >expect &&
+	printf "0000" | git receive-pack fork >actual &&
+	extract_haves <actual >actual.haves &&
+	test_cmp expect actual.haves
+'
+
+test_expect_success 'with core.alternateRefsPrefixes' '
+	test_config -C fork core.alternateRefsPrefixes "refs/heads/private" &&
+	git rev-parse private/branch >expect &&
+	printf "0000" | git receive-pack fork >actual &&
+	extract_haves <actual >actual.haves &&
+	test_cmp expect actual.haves
+'
+
+# 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 &&
+	git -C repo commit --allow-empty -m 1 &&
+	git clone --bare repo setup.git &&
+	git -C repo commit --allow-empty -m 2 &&
+
+	# Capture git-send-pack(1) output sent to git-receive-pack(1).
+	git -C repo send-pack ../setup.git --all \
+		--receive-pack="tee ${SQ}$(pwd)/out${SQ} | git-receive-pack" &&
+
+	# Replay captured git-send-pack(1) output on new empty repository.
+	git init --bare remote.git &&
+	git receive-pack remote.git <out >actual 2>err &&
+
+	test_grep "missing necessary objects" actual &&
+	test_grep "fatal: Failed to traverse parents" err &&
+	test_must_fail git -C remote.git cat-file -e $(git -C repo rev-parse HEAD)
+'
+
+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 &&
+	git -C repo commit --allow-empty -m 1 &&
+	git clone --bare repo setup.git &&
+	git -C repo commit --allow-empty -m 2 &&
+
+	# Capture git-send-pack(1) output sent to git-receive-pack(1).
+	git -C repo send-pack ../setup.git --all \
+		--receive-pack="tee ${SQ}$(pwd)/out${SQ} | git-receive-pack" &&
+
+	# Replay captured git-send-pack(1) output on new empty repository.
+	git init --bare remote.git &&
+	git receive-pack --skip-connectivity-check remote.git <out >actual 2>err &&
+
+	test_grep ! "missing necessary objects" actual &&
+	test_must_be_empty err &&
+	git -C remote.git cat-file -e $(git -C repo rev-parse HEAD) &&
+	test_must_fail git -C remote.git rev-list $(git -C repo rev-parse HEAD)
+'
+
+test_done
diff --git a/t/t5520-pull.sh b/t/t5520-pull.sh
index 47534f1..63c9a8f 100755
--- a/t/t5520-pull.sh
+++ b/t/t5520-pull.sh
@@ -813,7 +813,7 @@
 		cd dst &&
 		test_must_fail git pull --rebase &&
 		cat .git/rebase-merge/done .git/rebase-merge/git-rebase-todo >work &&
-		grep -v -e \# -e ^$ work >patches &&
+		grep -v -e ^\# -e ^$ work >patches &&
 		test_line_count = 1 patches &&
 		rm -f work
 	)
diff --git a/t/t5558-clone-bundle-uri.sh b/t/t5558-clone-bundle-uri.sh
index 3816ed5..9b211a6 100755
--- a/t/t5558-clone-bundle-uri.sh
+++ b/t/t5558-clone-bundle-uri.sh
@@ -58,7 +58,7 @@
 test_expect_success 'clone with path bundle' '
 	git clone --bundle-uri="clone-from/B.bundle" \
 		clone-from clone-path &&
-	git -C clone-path rev-parse refs/bundles/topic >actual &&
+	git -C clone-path rev-parse refs/bundles/heads/topic >actual &&
 	git -C clone-from rev-parse topic >expect &&
 	test_cmp expect actual
 '
@@ -68,9 +68,9 @@
 	git clone --bundle-uri="clone-from/bad-header.bundle" \
 		clone-from clone-bad-header 2>err &&
 	commit_b=$(git -C clone-from rev-parse B) &&
-	test_grep "trying to write ref '\''refs/bundles/topic'\'' with nonexistent object $commit_b" err &&
+	test_grep "trying to write ref '\''refs/bundles/heads/topic'\'' with nonexistent object $commit_b" err &&
 	git -C clone-bad-header for-each-ref --format="%(refname)" >refs &&
-	test_grep ! "refs/bundles/" refs
+	test_grep ! "refs/bundles/heads/" refs
 '
 
 test_expect_success 'clone with bundle that has bad object' '
@@ -78,8 +78,8 @@
 	git clone --bundle-uri="clone-from/bad-object.bundle" \
 		clone-from clone-bad-object-no-fsck &&
 	git -C clone-bad-object-no-fsck for-each-ref --format="%(refname)" >refs &&
-	grep "refs/bundles/" refs >actual &&
-	test_write_lines refs/bundles/bad >expect &&
+	grep "refs/bundles/heads/" refs >actual &&
+	test_write_lines refs/bundles/heads/bad >expect &&
 	test_cmp expect actual &&
 
 	# Unbundle fails with fsckObjects set true, but clone can still proceed.
@@ -87,14 +87,14 @@
 		clone-from clone-bad-object-fsck 2>err &&
 	test_grep "missingEmail" err &&
 	git -C clone-bad-object-fsck for-each-ref --format="%(refname)" >refs &&
-	test_grep ! "refs/bundles/" refs
+	test_grep ! "refs/bundles/heads/" refs
 '
 
 test_expect_success 'clone with path bundle and non-default hash' '
 	test_when_finished "rm -rf clone-path-non-default-hash" &&
 	GIT_DEFAULT_HASH=sha256 git clone --bundle-uri="clone-from/B.bundle" \
 		clone-from clone-path-non-default-hash &&
-	git -C clone-path-non-default-hash rev-parse refs/bundles/topic >actual &&
+	git -C clone-path-non-default-hash rev-parse refs/bundles/heads/topic >actual &&
 	git -C clone-from rev-parse topic >expect &&
 	test_cmp expect actual
 '
@@ -102,11 +102,41 @@
 test_expect_success 'clone with file:// bundle' '
 	git clone --bundle-uri="file://$(pwd)/clone-from/B.bundle" \
 		clone-from clone-file &&
-	git -C clone-file rev-parse refs/bundles/topic >actual &&
+	git -C clone-file rev-parse refs/bundles/heads/topic >actual &&
 	git -C clone-from rev-parse topic >expect &&
 	test_cmp expect actual
 '
 
+test_expect_success 'create bundle with tags' '
+	git init clone-from-tags &&
+	(
+		cd clone-from-tags &&
+		git checkout -b base &&
+		git checkout -b topic &&
+
+		test_commit A &&
+		git tag tag-A &&
+		git checkout -b base &&
+		git branch -d topic &&
+		test_commit B &&
+
+		git bundle create ALL.bundle --all &&
+		git bundle verify ALL.bundle
+	)
+'
+
+test_expect_success 'clone with tags bundle' '
+	git clone --bundle-uri="clone-from-tags/ALL.bundle" \
+		clone-from-tags clone-tags-path &&
+
+	git -C clone-from-tags for-each-ref --format="%(refname:lstrip=1)" \
+		>expect &&
+	git -C clone-tags-path for-each-ref --format="%(refname:lstrip=2)" \
+		refs/bundles >actual &&
+
+	test_cmp expect actual
+'
+
 # To get interesting tests for bundle lists, we need to construct a
 # somewhat-interesting commit history.
 #
@@ -173,12 +203,12 @@
 	git -C clone-list-file cat-file --batch-check <oids &&
 
 	git -C clone-list-file for-each-ref --format="%(refname)" >refs &&
-	grep "refs/bundles/" refs >actual &&
+	grep "refs/bundles/heads/" refs >actual &&
 	cat >expect <<-\EOF &&
-	refs/bundles/base
-	refs/bundles/left
-	refs/bundles/merge
-	refs/bundles/right
+	refs/bundles/heads/base
+	refs/bundles/heads/left
+	refs/bundles/heads/merge
+	refs/bundles/heads/right
 	EOF
 	test_cmp expect actual
 '
@@ -220,10 +250,10 @@
 	git -C clone-all-some cat-file --batch-check <oids &&
 
 	git -C clone-all-some for-each-ref --format="%(refname)" >refs &&
-	grep "refs/bundles/" refs >actual &&
+	grep "refs/bundles/heads/" refs >actual &&
 	cat >expect <<-\EOF &&
-	refs/bundles/base
-	refs/bundles/left
+	refs/bundles/heads/base
+	refs/bundles/heads/left
 	EOF
 	test_cmp expect actual
 '
@@ -253,7 +283,7 @@
 	git -C clone-all-fail cat-file --batch-check <oids &&
 
 	git -C clone-all-fail for-each-ref --format="%(refname)" >refs &&
-	! grep "refs/bundles/" refs
+	! grep "refs/bundles/heads/" refs
 '
 
 test_expect_success 'clone bundle list (file, any mode)' '
@@ -282,9 +312,9 @@
 	git -C clone-any-file cat-file --batch-check <oids &&
 
 	git -C clone-any-file for-each-ref --format="%(refname)" >refs &&
-	grep "refs/bundles/" refs >actual &&
+	grep "refs/bundles/heads/" refs >actual &&
 	cat >expect <<-\EOF &&
-	refs/bundles/base
+	refs/bundles/heads/base
 	EOF
 	test_cmp expect actual
 '
@@ -313,7 +343,7 @@
 	git -C clone-any-fail cat-file --batch-check <oids &&
 
 	git -C clone-any-fail for-each-ref --format="%(refname)" >refs &&
-	! grep "refs/bundles/" refs
+	! grep "refs/bundles/heads/" refs
 '
 
 test_expect_success 'negotiation: bundle with part of wanted commits' '
@@ -322,10 +352,10 @@
 	git clone --no-local --bundle-uri="clone-from/A.bundle" \
 		clone-from nego-bundle-part &&
 	git -C nego-bundle-part for-each-ref --format="%(refname)" >refs &&
-	grep "refs/bundles/" refs >actual &&
-	test_write_lines refs/bundles/topic >expect &&
+	grep "refs/bundles/heads/" refs >actual &&
+	test_write_lines refs/bundles/heads/topic >expect &&
 	test_cmp expect actual &&
-	# Ensure that refs/bundles/topic are sent as "have".
+	# Ensure that refs/bundles/heads/topic are sent as "have".
 	tip=$(git -C clone-from rev-parse A) &&
 	test_grep "clone> have $tip" trace-packet.txt
 '
@@ -337,8 +367,8 @@
 		--bundle-uri="clone-from/B.bundle" \
 		clone-from nego-bundle-all &&
 	git -C nego-bundle-all for-each-ref --format="%(refname)" >refs &&
-	grep "refs/bundles/" refs >actual &&
-	test_write_lines refs/bundles/topic >expect &&
+	grep "refs/bundles/heads/" refs >actual &&
+	test_write_lines refs/bundles/heads/topic >expect &&
 	test_cmp expect actual &&
 	# We already have all needed commits so no "want" needed.
 	test_grep ! "clone> want " trace-packet.txt
@@ -363,13 +393,13 @@
 		clone-from nego-bundle-list-no-heuristic &&
 
 	git -C nego-bundle-list-no-heuristic for-each-ref --format="%(refname)" >refs &&
-	grep "refs/bundles/" refs >actual &&
+	grep "refs/bundles/heads/" refs >actual &&
 	cat >expect <<-\EOF &&
-	refs/bundles/base
-	refs/bundles/left
+	refs/bundles/heads/base
+	refs/bundles/heads/left
 	EOF
 	test_cmp expect actual &&
-	tip=$(git -C nego-bundle-list-no-heuristic rev-parse refs/bundles/left) &&
+	tip=$(git -C nego-bundle-list-no-heuristic rev-parse refs/bundles/heads/left) &&
 	test_grep "clone> have $tip" trace-packet.txt
 '
 
@@ -395,13 +425,13 @@
 		clone-from nego-bundle-list-heuristic &&
 
 	git -C nego-bundle-list-heuristic for-each-ref --format="%(refname)" >refs &&
-	grep "refs/bundles/" refs >actual &&
+	grep "refs/bundles/heads/" refs >actual &&
 	cat >expect <<-\EOF &&
-	refs/bundles/base
-	refs/bundles/left
+	refs/bundles/heads/base
+	refs/bundles/heads/left
 	EOF
 	test_cmp expect actual &&
-	tip=$(git -C nego-bundle-list-heuristic rev-parse refs/bundles/left) &&
+	tip=$(git -C nego-bundle-list-heuristic rev-parse refs/bundles/heads/left) &&
 	test_grep "clone> have $tip" trace-packet.txt
 '
 
@@ -428,10 +458,10 @@
 		clone-from nego-bundle-list-all &&
 
 	git -C nego-bundle-list-all for-each-ref --format="%(refname)" >refs &&
-	grep "refs/bundles/" refs >actual &&
+	grep "refs/bundles/heads/" refs >actual &&
 	cat >expect <<-\EOF &&
-	refs/bundles/base
-	refs/bundles/left
+	refs/bundles/heads/base
+	refs/bundles/heads/left
 	EOF
 	test_cmp expect actual &&
 	# We already have all needed commits so no "want" needed.
@@ -465,7 +495,7 @@
 
 	git clone --bundle-uri="$HTTPD_URL/B.bundle" \
 		"$HTTPD_URL/smart/fetch.git" clone-http &&
-	git -C clone-http rev-parse refs/bundles/topic >actual &&
+	git -C clone-http rev-parse refs/bundles/heads/topic >actual &&
 	git -C clone-from rev-parse topic >expect &&
 	test_cmp expect actual &&
 
@@ -476,7 +506,7 @@
 	test_when_finished "rm -rf clone-http-non-default-hash" &&
 	GIT_DEFAULT_HASH=sha256 git clone --bundle-uri="$HTTPD_URL/B.bundle" \
 		"$HTTPD_URL/smart/fetch.git" clone-http-non-default-hash &&
-	git -C clone-http-non-default-hash rev-parse refs/bundles/topic >actual &&
+	git -C clone-http-non-default-hash rev-parse refs/bundles/heads/topic >actual &&
 	git -C clone-from rev-parse topic >expect &&
 	test_cmp expect actual
 '
@@ -553,12 +583,12 @@
 	git -C clone-any-http cat-file --batch-check <oids &&
 
 	git -C clone-list-file for-each-ref --format="%(refname)" >refs &&
-	grep "refs/bundles/" refs >actual &&
+	grep "refs/bundles/heads/" refs >actual &&
 	cat >expect <<-\EOF &&
-	refs/bundles/base
-	refs/bundles/left
-	refs/bundles/merge
-	refs/bundles/right
+	refs/bundles/heads/base
+	refs/bundles/heads/left
+	refs/bundles/heads/merge
+	refs/bundles/heads/right
 	EOF
 	test_cmp expect actual
 '
@@ -641,9 +671,9 @@
 	test_cmp expect actual &&
 
 	# We now have only one bundle ref.
-	git -C clone-token-http for-each-ref --format="%(refname)" "refs/bundles/*" >refs &&
+	git -C clone-token-http for-each-ref --format="%(refname)" "refs/bundles/heads/*" >refs &&
 	cat >expect <<-\EOF &&
-	refs/bundles/base
+	refs/bundles/heads/base
 	EOF
 	test_cmp expect refs &&
 
@@ -679,13 +709,13 @@
 	test_cmp expect actual &&
 
 	# We now have all bundle refs.
-	git -C clone-token-http for-each-ref --format="%(refname)" "refs/bundles/*" >refs &&
+	git -C clone-token-http for-each-ref --format="%(refname)" "refs/bundles/heads/*" >refs &&
 
 	cat >expect <<-\EOF &&
-	refs/bundles/base
-	refs/bundles/left
-	refs/bundles/merge
-	refs/bundles/right
+	refs/bundles/heads/base
+	refs/bundles/heads/left
+	refs/bundles/heads/merge
+	refs/bundles/heads/right
 	EOF
 	test_cmp expect refs
 '
@@ -721,9 +751,9 @@
 	test_cmp expect actual &&
 
 	# only received base ref from bundle-1
-	git -C fetch-http-4 for-each-ref --format="%(refname)" "refs/bundles/*" >refs &&
+	git -C fetch-http-4 for-each-ref --format="%(refname)" "refs/bundles/heads/*" >refs &&
 	cat >expect <<-\EOF &&
-	refs/bundles/base
+	refs/bundles/heads/base
 	EOF
 	test_cmp expect refs &&
 
@@ -749,10 +779,10 @@
 	test_cmp expect actual &&
 
 	# received left from bundle-2
-	git -C fetch-http-4 for-each-ref --format="%(refname)" "refs/bundles/*" >refs &&
+	git -C fetch-http-4 for-each-ref --format="%(refname)" "refs/bundles/heads/*" >refs &&
 	cat >expect <<-\EOF &&
-	refs/bundles/base
-	refs/bundles/left
+	refs/bundles/heads/base
+	refs/bundles/heads/left
 	EOF
 	test_cmp expect refs &&
 
@@ -795,12 +825,12 @@
 
 	# received merge ref from bundle-4, but right is missing
 	# because we did not download bundle-3.
-	git -C fetch-http-4 for-each-ref --format="%(refname)" "refs/bundles/*" >refs &&
+	git -C fetch-http-4 for-each-ref --format="%(refname)" "refs/bundles/heads/*" >refs &&
 
 	cat >expect <<-\EOF &&
-	refs/bundles/base
-	refs/bundles/left
-	refs/bundles/merge
+	refs/bundles/heads/base
+	refs/bundles/heads/left
+	refs/bundles/heads/merge
 	EOF
 	test_cmp expect refs &&
 
@@ -862,7 +892,7 @@
 	test_cmp expect actual &&
 
 	# All bundles failed to unbundle
-	git -C download-1 for-each-ref --format="%(refname)" "refs/bundles/*" >refs &&
+	git -C download-1 for-each-ref --format="%(refname)" "refs/bundles/heads/*" >refs &&
 	test_must_be_empty refs &&
 
 	# Case 2: middle bundle does not exist, only two bundles can unbundle
@@ -909,10 +939,10 @@
 	test_cmp expect actual &&
 
 	# bundle-1 and bundle-3 could unbundle, but bundle-4 could not
-	git -C download-2 for-each-ref --format="%(refname)" "refs/bundles/*" >refs &&
+	git -C download-2 for-each-ref --format="%(refname)" "refs/bundles/heads/*" >refs &&
 	cat >expect <<-EOF &&
-	refs/bundles/base
-	refs/bundles/right
+	refs/bundles/heads/base
+	refs/bundles/heads/right
 	EOF
 	test_cmp expect refs &&
 
@@ -961,11 +991,11 @@
 	test_cmp expect actual &&
 
 	# fake.bundle did not unbundle, but the others did.
-	git -C download-3 for-each-ref --format="%(refname)" "refs/bundles/*" >refs &&
+	git -C download-3 for-each-ref --format="%(refname)" "refs/bundles/heads/*" >refs &&
 	cat >expect <<-EOF &&
-	refs/bundles/base
-	refs/bundles/left
-	refs/bundles/right
+	refs/bundles/heads/base
+	refs/bundles/heads/left
+	refs/bundles/heads/right
 	EOF
 	test_cmp expect refs
 '
@@ -1083,15 +1113,15 @@
 	test_cmp expect actual &&
 
 	# Check which bundles have unbundled by refs
-	git -C fetch-1 for-each-ref --format="%(refname)" "refs/bundles/*" >refs &&
+	git -C fetch-1 for-each-ref --format="%(refname)" "refs/bundles/heads/*" >refs &&
 	cat >expect <<-EOF &&
-	refs/bundles/base
-	refs/bundles/left
-	refs/bundles/lefter
-	refs/bundles/merge
-	refs/bundles/right
-	refs/bundles/righter
-	refs/bundles/top
+	refs/bundles/heads/base
+	refs/bundles/heads/left
+	refs/bundles/heads/lefter
+	refs/bundles/heads/merge
+	refs/bundles/heads/right
+	refs/bundles/heads/righter
+	refs/bundles/heads/top
 	EOF
 	test_cmp expect refs &&
 
@@ -1144,12 +1174,12 @@
 	test_cmp expect actual &&
 
 	# Check which bundles have unbundled by refs
-	git -C fetch-2 for-each-ref --format="%(refname)" "refs/bundles/*" >refs &&
+	git -C fetch-2 for-each-ref --format="%(refname)" "refs/bundles/heads/*" >refs &&
 	cat >expect <<-EOF &&
-	refs/bundles/base
-	refs/bundles/left
-	refs/bundles/merge
-	refs/bundles/right
+	refs/bundles/heads/base
+	refs/bundles/heads/left
+	refs/bundles/heads/merge
+	refs/bundles/heads/right
 	EOF
 	test_cmp expect refs &&
 
@@ -1204,13 +1234,13 @@
 	test_cmp expect actual &&
 
 	# Check which bundles have unbundled by refs
-	git -C fetch-3 for-each-ref --format="%(refname)" "refs/bundles/*" >refs &&
+	git -C fetch-3 for-each-ref --format="%(refname)" "refs/bundles/heads/*" >refs &&
 	cat >expect <<-EOF &&
-	refs/bundles/base
-	refs/bundles/left
-	refs/bundles/lefter
-	refs/bundles/right
-	refs/bundles/righter
+	refs/bundles/heads/base
+	refs/bundles/heads/left
+	refs/bundles/heads/lefter
+	refs/bundles/heads/right
+	refs/bundles/heads/righter
 	EOF
 	test_cmp expect refs
 '
diff --git a/t/t6011-rev-list-with-bad-commit.sh b/t/t6011-rev-list-with-bad-commit.sh
index b6f3344..1dd1e50 100755
--- a/t/t6011-rev-list-with-bad-commit.sh
+++ b/t/t6011-rev-list-with-bad-commit.sh
@@ -38,6 +38,7 @@
 test_expect_success 'corrupt second commit object' '
 	for p in .git/objects/pack/*.pack
 	do
+		chmod +w "$p" &&
 		sed "s/second commit/socond commit/" "$p" >"$p.munged" &&
 		mv "$p.munged" "$p" ||
 		return 1
diff --git a/t/t6137-pathspec-wildcards-literal.sh b/t/t6137-pathspec-wildcards-literal.sh
new file mode 100755
index 0000000..20abad5
--- /dev/null
+++ b/t/t6137-pathspec-wildcards-literal.sh
@@ -0,0 +1,429 @@
+#!/bin/sh
+test_description='test wildcards and literals with git add/commit (subshell style)'
+
+. ./test-lib.sh
+
+test_have_prereq FUNNYNAMES || {
+	skip_all='skipping: needs FUNNYNAMES (non-Windows only)'
+	test_done
+}
+
+prepare_test_files () {
+	for f in "*" "**" "?" "[abc]" "a" "f*" "f**" "f?z" "foo*bar" "hello?world" "hello_world"
+	do
+		>"$f" || return
+	done
+}
+
+test_expect_success 'add wildcard *' '
+	git init test-asterisk &&
+	(
+		cd test-asterisk &&
+		prepare_test_files &&
+		git add "*" &&
+		cat >expect <<-EOF &&
+		*
+		**
+		?
+		[abc]
+		a
+		f*
+		f**
+		f?z
+		foo*bar
+		hello?world
+		hello_world
+		EOF
+		git ls-files >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add literal \*' '
+	git init test-asterisk-literal &&
+	(
+		cd test-asterisk-literal &&
+		prepare_test_files &&
+		git add "\*" &&
+		cat >expect <<-EOF &&
+		*
+		EOF
+		git ls-files >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add wildcard **' '
+	git init test-dstar &&
+	(
+		cd test-dstar &&
+		prepare_test_files &&
+		git add "**" &&
+		cat >expect <<-EOF &&
+		*
+		**
+		?
+		[abc]
+		a
+		f*
+		f**
+		f?z
+		foo*bar
+		hello?world
+		hello_world
+		EOF
+		git ls-files >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add wildcard ?' '
+	git init test-qmark &&
+	(
+		cd test-qmark &&
+		prepare_test_files &&
+		git add "?" &&
+		cat >expect <<-\EOF | sort &&
+		*
+		?
+		a
+		EOF
+		git ls-files | sort >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add wildcard [abc]' '
+	git init test-brackets &&
+	(
+		cd test-brackets &&
+		prepare_test_files &&
+		git add "[abc]" &&
+		cat >expect <<-\EOF | sort &&
+		[abc]
+		a
+		EOF
+		git ls-files | sort >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add wildcard f*' '
+	git init test-f-wild &&
+	(
+		cd test-f-wild &&
+		prepare_test_files &&
+		git add "f*" &&
+		cat >expect <<-\EOF | sort &&
+		f*
+		f**
+		f?z
+		foo*bar
+		EOF
+		git ls-files | sort >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add literal f\*' '
+	git init test-f-lit &&
+	(
+		cd test-f-lit &&
+		prepare_test_files &&
+		git add "f\*" &&
+		cat >expect <<-\EOF &&
+		f*
+		EOF
+		git ls-files >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add wildcard f**' '
+	git init test-fdstar &&
+	(
+		cd test-fdstar &&
+		prepare_test_files &&
+		git add "f**" &&
+		cat >expect <<-\EOF | sort &&
+		f*
+		f**
+		f?z
+		foo*bar
+		EOF
+		git ls-files | sort >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add literal f\*\*' '
+	git init test-fdstar-lit &&
+	(
+		cd test-fdstar-lit &&
+		prepare_test_files &&
+		git add "f\*\*" &&
+		cat >expect <<-\EOF &&
+		f**
+		EOF
+		git ls-files >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add wildcard f?z' '
+	git init test-fqz &&
+	(
+		cd test-fqz &&
+		prepare_test_files &&
+		git add "f?z" &&
+		cat >expect <<-\EOF &&
+		f?z
+		EOF
+		git ls-files >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add literal \? literal' '
+	git init test-q-lit &&
+	(
+		cd test-q-lit &&
+		prepare_test_files &&
+		git add "\?" &&
+		cat >expect <<-\EOF &&
+		?
+		EOF
+		git ls-files >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add wildcard foo*bar' '
+	git init test-foobar &&
+	(
+		cd test-foobar &&
+		prepare_test_files &&
+		git add "foo*bar" &&
+		cat >expect <<-\EOF &&
+		foo*bar
+		EOF
+		git ls-files >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add wildcard hello?world' '
+	git init test-hellowild &&
+	(
+		cd test-hellowild &&
+		prepare_test_files &&
+		git add "hello?world" &&
+		cat >expect <<-\EOF &&
+		hello?world
+		hello_world
+		EOF
+		git ls-files >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add literal hello\?world' '
+	git init test-hellolit &&
+	(
+		cd test-hellolit &&
+		prepare_test_files &&
+		git add "hello\?world" &&
+		cat >expect <<-\EOF &&
+		hello?world
+		EOF
+		git ls-files >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'add literal [abc]' '
+	git init test-brackets-lit &&
+	(
+		cd test-brackets-lit &&
+		prepare_test_files &&
+		git add "\[abc\]" &&
+		cat >expect <<-\EOF &&
+		[abc]
+		EOF
+		git ls-files >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'commit: wildcard *' '
+	git init test-c-asterisk &&
+	(
+		cd test-c-asterisk &&
+		prepare_test_files &&
+		git add . &&
+		git commit -m "c1" -- "*" &&
+		cat >expect <<-EOF &&
+		*
+		**
+		?
+		[abc]
+		a
+		f*
+		f**
+		f?z
+		foo*bar
+		hello?world
+		hello_world
+		EOF
+		git ls-tree -r --name-only HEAD >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'commit: literal *' '
+	git init test-c-asterisk-lit &&
+	(
+		cd test-c-asterisk-lit &&
+		prepare_test_files &&
+		git add . &&
+		git commit -m "c2" -- "\*" &&
+		cat >expect <<-EOF &&
+		*
+		EOF
+		git ls-tree -r --name-only HEAD >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'commit: wildcard f*' '
+	git init test-c-fwild &&
+	(
+		cd test-c-fwild &&
+		prepare_test_files &&
+		git add . &&
+		git commit -m "c3" -- "f*" &&
+		cat >expect <<-EOF &&
+		f*
+		f**
+		f?z
+		foo*bar
+		EOF
+		git ls-tree -r --name-only HEAD >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'commit: literal f\*' '
+	git init test-c-flit &&
+	(
+		cd test-c-flit &&
+		prepare_test_files &&
+		git add . &&
+		git commit -m "c4" -- "f\*" &&
+		cat >expect <<-EOF &&
+		f*
+		EOF
+		git ls-tree -r --name-only HEAD >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'commit: wildcard pathspec limits commit' '
+	git init test-c-pathlimit &&
+	(
+		cd test-c-pathlimit &&
+		prepare_test_files &&
+		git add . &&
+		git commit -m "c5" -- "f**" &&
+		cat >expect <<-EOF &&
+		f*
+		f**
+		f?z
+		foo*bar
+		EOF
+		git ls-tree -r --name-only HEAD >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'commit: literal f\*\*' '
+	git init test-c-fdstar-lit &&
+	(
+		cd test-c-fdstar-lit &&
+		prepare_test_files &&
+		git add . &&
+		git commit -m "c6" -- "f\*\*" &&
+		cat >expect <<-EOF &&
+		f**
+		EOF
+		git ls-tree -r --name-only HEAD >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'commit: wildcard ?' '
+	git init test-c-qwild &&
+	(
+		cd test-c-qwild &&
+		prepare_test_files &&
+		git add . &&
+		git commit -m "c7" -- "?" &&
+		cat >expect <<-EOF &&
+		*
+		?
+		a
+		EOF
+		git ls-tree -r --name-only HEAD | sort >actual &&
+		sort expect >expect.sorted &&
+		test_cmp expect.sorted actual
+	)
+'
+
+test_expect_success 'commit: literal \?' '
+	git init test-c-qlit &&
+	(
+		cd test-c-qlit &&
+		prepare_test_files &&
+		git add . &&
+		git commit -m "c8" -- "\?" &&
+		cat >expect <<-EOF &&
+		?
+		EOF
+		git ls-tree -r --name-only HEAD >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_expect_success 'commit: wildcard hello?world' '
+	git init test-c-hellowild &&
+	(
+		cd test-c-hellowild &&
+		prepare_test_files &&
+		git add . &&
+		git commit -m "c9" -- "hello?world"  &&
+		cat >expect <<-EOF &&
+		hello?world
+		hello_world
+		EOF
+		git ls-tree -r --name-only HEAD | sort >actual &&
+		sort expect >expect.sorted &&
+		test_cmp expect.sorted actual
+	)
+'
+
+test_expect_success 'commit: literal hello\?world' '
+	git init test-c-hellolit &&
+	(
+		cd test-c-hellolit &&
+		prepare_test_files &&
+		git add . &&
+		git commit -m "c10" -- "hello\?world" &&
+		cat >expect <<-EOF &&
+		hello?world
+		EOF
+		git ls-tree -r --name-only HEAD >actual &&
+		test_cmp expect actual
+	)
+'
+
+test_done
diff --git a/t/t6601-path-walk.sh b/t/t6601-path-walk.sh
index c89b0f1..8d187f7 100755
--- a/t/t6601-path-walk.sh
+++ b/t/t6601-path-walk.sh
@@ -1,7 +1,5 @@
 #!/bin/sh
 
-TEST_PASSES_SANITIZE_LEAK=true
-
 test_description='direct path-walk API tests'
 
 . ./test-lib.sh
diff --git a/t/t7001-mv.sh b/t/t7001-mv.sh
index 25334b5..920479e 100755
--- a/t/t7001-mv.sh
+++ b/t/t7001-mv.sh
@@ -550,16 +550,32 @@
 	git status
 '
 
-test_expect_failure 'nonsense mv triggers assertion failure and partially updated index' '
+test_expect_success 'moving file and its parent directory at the same time fails' '
 	test_when_finished git reset --hard HEAD &&
 	git reset --hard HEAD &&
 	mkdir -p a &&
 	mkdir -p b &&
 	>a/a.txt &&
 	git add a/a.txt &&
-	test_must_fail git mv a/a.txt a b &&
-	git status --porcelain >actual &&
-	grep "^A[ ]*a/a.txt$" actual
+	cat >expect <<-EOF &&
+	fatal: cannot move both ${SQ}a/a.txt${SQ} and its parent directory ${SQ}a${SQ}
+	EOF
+	test_must_fail git mv a/a.txt a b 2>err &&
+	test_cmp expect err
+'
+
+test_expect_success 'moving nested directory and its parent directory at the same time fails' '
+	test_when_finished git reset --hard HEAD &&
+	git reset --hard HEAD &&
+	mkdir -p a/b/c &&
+	>a/b/c/file.txt &&
+	git add a &&
+	mkdir target &&
+	cat >expect <<-EOF &&
+	fatal: cannot move both ${SQ}a/b/c${SQ} and its parent directory ${SQ}a${SQ}
+	EOF
+	test_must_fail git mv a/b/c a target 2>err &&
+	test_cmp expect err
 '
 
 test_done
diff --git a/t/t7512-status-help.sh b/t/t7512-status-help.sh
index 802f8f7..25e8e97 100755
--- a/t/t7512-status-help.sh
+++ b/t/t7512-status-help.sh
@@ -139,7 +139,7 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last command done (1 command done):
-   pick $LAST_COMMIT one_second
+   pick $LAST_COMMIT # one_second
 No commands remaining.
 You are currently rebasing branch '\''rebase_i_conflicts_second'\'' on '\''$ONTO'\''.
   (fix conflicts and then run "git rebase --continue")
@@ -168,7 +168,7 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last command done (1 command done):
-   pick $LAST_COMMIT one_second
+   pick $LAST_COMMIT # one_second
 No commands remaining.
 You are currently rebasing branch '\''rebase_i_conflicts_second'\'' on '\''$ONTO'\''.
   (all conflicts fixed: run "git rebase --continue")
@@ -200,8 +200,8 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   pick $COMMIT2 two_rebase_i
-   edit $COMMIT3 three_rebase_i
+   pick $COMMIT2 # two_rebase_i
+   edit $COMMIT3 # three_rebase_i
 No commands remaining.
 You are currently editing a commit while rebasing branch '\''rebase_i_edit'\'' on '\''$ONTO'\''.
   (use "git commit --amend" to amend the current commit)
@@ -233,10 +233,10 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   pick $COMMIT2 two_split
-   edit $COMMIT3 three_split
+   pick $COMMIT2 # two_split
+   edit $COMMIT3 # three_split
 Next command to do (1 remaining command):
-   pick $COMMIT4 four_split
+   pick $COMMIT4 # four_split
   (use "git rebase --edit-todo" to view and edit)
 You are currently splitting a commit while rebasing branch '\''split_commit'\'' on '\''$ONTO'\''.
   (Once your working directory is clean, run "git rebase --continue")
@@ -271,8 +271,8 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (3 commands done):
-   pick $COMMIT3 three_amend
-   edit $COMMIT4 four_amend
+   pick $COMMIT3 # three_amend
+   edit $COMMIT4 # four_amend
   (see more in file .git/rebase-merge/done)
 No commands remaining.
 You are currently editing a commit while rebasing branch '\''amend_last'\'' on '\''$ONTO'\''.
@@ -309,10 +309,10 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   edit $COMMIT2 two_edits
-   edit $COMMIT3 three_edits
+   edit $COMMIT2 # two_edits
+   edit $COMMIT3 # three_edits
 Next command to do (1 remaining command):
-   pick $COMMIT4 four_edits
+   pick $COMMIT4 # four_edits
   (use "git rebase --edit-todo" to view and edit)
 You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
   (use "git commit --amend" to amend the current commit)
@@ -340,10 +340,10 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   edit $COMMIT2 two_edits
-   edit $COMMIT3 three_edits
+   edit $COMMIT2 # two_edits
+   edit $COMMIT3 # three_edits
 Next command to do (1 remaining command):
-   pick $COMMIT4 four_edits
+   pick $COMMIT4 # four_edits
   (use "git rebase --edit-todo" to view and edit)
 You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
   (Once your working directory is clean, run "git rebase --continue")
@@ -375,10 +375,10 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   edit $COMMIT2 two_edits
-   edit $COMMIT3 three_edits
+   edit $COMMIT2 # two_edits
+   edit $COMMIT3 # three_edits
 Next command to do (1 remaining command):
-   pick $COMMIT4 four_edits
+   pick $COMMIT4 # four_edits
   (use "git rebase --edit-todo" to view and edit)
 You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
   (use "git commit --amend" to amend the current commit)
@@ -406,10 +406,10 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   edit $COMMIT2 two_edits
-   edit $COMMIT3 three_edits
+   edit $COMMIT2 # two_edits
+   edit $COMMIT3 # three_edits
 Next command to do (1 remaining command):
-   pick $COMMIT4 four_edits
+   pick $COMMIT4 # four_edits
   (use "git rebase --edit-todo" to view and edit)
 You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
   (use "git commit --amend" to amend the current commit)
@@ -438,10 +438,10 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   edit $COMMIT2 two_edits
-   edit $COMMIT3 three_edits
+   edit $COMMIT2 # two_edits
+   edit $COMMIT3 # three_edits
 Next command to do (1 remaining command):
-   pick $COMMIT4 four_edits
+   pick $COMMIT4 # four_edits
   (use "git rebase --edit-todo" to view and edit)
 You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
   (Once your working directory is clean, run "git rebase --continue")
@@ -474,10 +474,10 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   edit $COMMIT2 two_edits
-   edit $COMMIT3 three_edits
+   edit $COMMIT2 # two_edits
+   edit $COMMIT3 # three_edits
 Next command to do (1 remaining command):
-   pick $COMMIT4 four_edits
+   pick $COMMIT4 # four_edits
   (use "git rebase --edit-todo" to view and edit)
 You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
   (use "git commit --amend" to amend the current commit)
@@ -507,10 +507,10 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   edit $COMMIT2 two_edits
-   edit $COMMIT3 three_edits
+   edit $COMMIT2 # two_edits
+   edit $COMMIT3 # three_edits
 Next command to do (1 remaining command):
-   pick $COMMIT4 four_edits
+   pick $COMMIT4 # four_edits
   (use "git rebase --edit-todo" to view and edit)
 You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
   (use "git commit --amend" to amend the current commit)
@@ -541,10 +541,10 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   edit $COMMIT2 two_edits
-   edit $COMMIT3 three_edits
+   edit $COMMIT2 # two_edits
+   edit $COMMIT3 # three_edits
 Next command to do (1 remaining command):
-   pick $COMMIT4 four_edits
+   pick $COMMIT4 # four_edits
   (use "git rebase --edit-todo" to view and edit)
 You are currently splitting a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
   (Once your working directory is clean, run "git rebase --continue")
@@ -579,10 +579,10 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   edit $COMMIT2 two_edits
-   edit $COMMIT3 three_edits
+   edit $COMMIT2 # two_edits
+   edit $COMMIT3 # three_edits
 Next command to do (1 remaining command):
-   pick $COMMIT4 four_edits
+   pick $COMMIT4 # four_edits
   (use "git rebase --edit-todo" to view and edit)
 You are currently editing a commit while rebasing branch '\''several_edits'\'' on '\''$ONTO'\''.
   (use "git commit --amend" to amend the current commit)
@@ -997,11 +997,11 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (2 commands done):
-   pick $COMMIT2 two_commit
+   pick $COMMIT2 # two_commit
    exec exit 15
 Next commands to do (2 remaining commands):
-   pick $COMMIT3 three_commit
-   pick $COMMIT4 four_commit
+   pick $COMMIT3 # three_commit
+   pick $COMMIT4 # four_commit
   (use "git rebase --edit-todo" to view and edit)
 You are currently editing a commit while rebasing branch '\''several_commits'\'' on '\''$ONTO'\''.
   (use "git commit --amend" to amend the current commit)
@@ -1025,12 +1025,12 @@
 	cat >expected <<EOF &&
 interactive rebase in progress; onto $ONTO
 Last commands done (3 commands done):
-   pick $COMMIT2 two_commit
+   pick $COMMIT2 # two_commit
    exec exit 15
   (see more in file .git/rebase-merge/done)
 Next commands to do (2 remaining commands):
-   pick $COMMIT3 three_commit
-   pick $COMMIT4 four_commit
+   pick $COMMIT3 # three_commit
+   pick $COMMIT4 # four_commit
   (use "git rebase --edit-todo" to view and edit)
 You are currently editing a commit while rebasing branch '\''several_commits'\'' on '\''$ONTO'\''.
   (use "git commit --amend" to amend the current commit)
@@ -1050,7 +1050,7 @@
 On branch several_commits
 No commands done.
 Next command to do (1 remaining command):
-   pick $COMMIT four_commit
+   pick $COMMIT # four_commit
   (use "git rebase --edit-todo" to view and edit)
 You are currently editing a commit while rebasing branch '\''several_commits'\'' on '\''$ONTO'\''.
   (use "git commit --amend" to amend the current commit)
diff --git a/t/t9210-scalar.sh b/t/t9210-scalar.sh
index a816627..bd6f0c4 100755
--- a/t/t9210-scalar.sh
+++ b/t/t9210-scalar.sh
@@ -108,7 +108,7 @@
 	git init register-repo &&
 	GIT_TEST_MAINT_SCHEDULER="crontab:false,launchctl:false,schtasks:false" \
 		scalar register register-repo 2>err &&
-	grep "could not turn on maintenance" err
+	grep "could not toggle maintenance" err
 '
 
 test_expect_success 'scalar unregister' '
@@ -129,6 +129,17 @@
 	scalar unregister vanish
 '
 
+test_expect_success 'scalar register --no-maintenance' '
+	git init register-no-maint &&
+	event_log="$(pwd)/no-maint.event" &&
+	GIT_TEST_MAINT_SCHEDULER="crontab:false,launchctl:false,schtasks:false" \
+	GIT_TRACE2_EVENT="$event_log" \
+	GIT_TRACE2_EVENT_DEPTH=100 \
+		scalar register --no-maintenance register-no-maint 2>err &&
+	test_must_be_empty err &&
+	test_subcommand ! git maintenance unregister --force <no-maint.event
+'
+
 test_expect_success 'set up repository to clone' '
 	test_commit first &&
 	test_commit second &&
@@ -199,7 +210,18 @@
 	GIT_TRACE2_EVENT="$(pwd)/reconfigure" scalar reconfigure -a &&
 	test_path_is_file one/src/cron.txt &&
 	test true = "$(git -C one/src config core.preloadIndex)" &&
-	test_subcommand git maintenance start <reconfigure
+	test_subcommand git maintenance start <reconfigure &&
+	test_subcommand ! git maintenance unregister --force <reconfigure &&
+
+	GIT_TRACE2_EVENT="$(pwd)/reconfigure-maint-disable" \
+		scalar reconfigure -a --maintenance=disable &&
+	test_subcommand ! git maintenance start <reconfigure-maint-disable &&
+	test_subcommand git maintenance unregister --force <reconfigure-maint-disable &&
+
+	GIT_TRACE2_EVENT="$(pwd)/reconfigure-maint-keep" \
+		scalar reconfigure --maintenance=keep -a &&
+	test_subcommand ! git maintenance start <reconfigure-maint-keep &&
+	test_subcommand ! git maintenance unregister --force <reconfigure-maint-keep
 '
 
 test_expect_success 'scalar reconfigure --all with includeIf.onbranch' '
diff --git a/t/t9211-scalar-clone.sh b/t/t9211-scalar-clone.sh
index 01f7191..bfbf22a 100755
--- a/t/t9211-scalar-clone.sh
+++ b/t/t9211-scalar-clone.sh
@@ -177,7 +177,16 @@
 test_expect_success 'scalar clone warns when background maintenance fails' '
 	GIT_TEST_MAINT_SCHEDULER="crontab:false,launchctl:false,schtasks:false" \
 		scalar clone "file://$(pwd)/to-clone" maint-fail 2>err &&
-	grep "could not turn on maintenance" err
+	grep "could not toggle maintenance" err
+'
+
+test_expect_success 'scalar clone --no-maintenance' '
+	GIT_TEST_MAINT_SCHEDULER="crontab:false,launchctl:false,schtasks:false" \
+	GIT_TRACE2_EVENT="$(pwd)/no-maint.event" \
+	GIT_TRACE2_EVENT_DEPTH=100 \
+		scalar clone --no-maintenance "file://$(pwd)/to-clone" no-maint 2>err &&
+	! grep "could not toggle maintenance" err &&
+	test_subcommand ! git maintenance unregister --force <no-maint.event
 '
 
 test_expect_success '`scalar clone --no-src`' '
diff --git a/t/t9350-fast-export.sh b/t/t9350-fast-export.sh
index dda9e7c..7661976 100755
--- a/t/t9350-fast-export.sh
+++ b/t/t9350-fast-export.sh
@@ -299,22 +299,10 @@
 
 '
 
-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/test-lib.sh b/t/test-lib.sh
index af722d3..92d0db1 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -1577,6 +1577,8 @@
 # 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"
 
diff --git a/t/unit-tests/t-reftable-block.c b/t/unit-tests/t-reftable-block.c
index 22040ae..52f1dae 100644
--- a/t/unit-tests/t-reftable-block.c
+++ b/t/unit-tests/t-reftable-block.c
@@ -19,24 +19,25 @@ static void t_ref_block_read_write(void)
 	struct reftable_record recs[30];
 	const size_t N = ARRAY_SIZE(recs);
 	const size_t block_size = 1024;
-	struct reftable_block block = { 0 };
+	struct reftable_block_source source = { 0 };
 	struct block_writer bw = {
 		.last_key = REFTABLE_BUF_INIT,
 	};
 	struct reftable_record rec = {
-		.type = BLOCK_TYPE_REF,
+		.type = REFTABLE_BLOCK_TYPE_REF,
 	};
 	size_t i = 0;
 	int ret;
-	struct block_reader br = { 0 };
+	struct reftable_block block = { 0 };
 	struct block_iter it = BLOCK_ITER_INIT;
-	struct reftable_buf want = REFTABLE_BUF_INIT, buf = REFTABLE_BUF_INIT;
+	struct reftable_buf want = REFTABLE_BUF_INIT;
+	struct reftable_buf block_data = REFTABLE_BUF_INIT;
 
-	REFTABLE_CALLOC_ARRAY(block.data, block_size);
-	check(block.data != NULL);
-	block.len = block_size;
-	block_source_from_buf(&block.source ,&buf);
-	ret = block_writer_init(&bw, BLOCK_TYPE_REF, block.data, block_size,
+	REFTABLE_CALLOC_ARRAY(block_data.buf, block_size);
+	check(block_data.buf != NULL);
+	block_data.len = block_size;
+
+	ret = block_writer_init(&bw, REFTABLE_BLOCK_TYPE_REF, (uint8_t *) block_data.buf, block_size,
 				header_off, hash_size(REFTABLE_HASH_SHA1));
 	check(!ret);
 
@@ -62,9 +63,11 @@ static void t_ref_block_read_write(void)
 
 	block_writer_release(&bw);
 
-	block_reader_init(&br, &block, header_off, block_size, REFTABLE_HASH_SIZE_SHA1);
+	block_source_from_buf(&source ,&block_data);
+	reftable_block_init(&block, &source, 0, header_off, block_size,
+			    REFTABLE_HASH_SIZE_SHA1, REFTABLE_BLOCK_TYPE_REF);
 
-	block_iter_seek_start(&it, &br);
+	block_iter_init(&it, &block);
 
 	for (i = 0; ; i++) {
 		ret = block_iter_next(&it, &rec);
@@ -77,10 +80,9 @@ static void t_ref_block_read_write(void)
 	}
 
 	for (i = 0; i < N; i++) {
-		block_iter_reset(&it);
 		reftable_record_key(&recs[i], &want);
 
-		ret = block_iter_seek_key(&it, &br, &want);
+		ret = block_iter_seek_key(&it, &want);
 		check_int(ret, ==, 0);
 
 		ret = block_iter_next(&it, &rec);
@@ -89,7 +91,7 @@ static void t_ref_block_read_write(void)
 		check(reftable_record_equal(&recs[i], &rec, REFTABLE_HASH_SIZE_SHA1));
 
 		want.len--;
-		ret = block_iter_seek_key(&it, &br, &want);
+		ret = block_iter_seek_key(&it, &want);
 		check_int(ret, ==, 0);
 
 		ret = block_iter_next(&it, &rec);
@@ -97,12 +99,11 @@ static void t_ref_block_read_write(void)
 		check(reftable_record_equal(&recs[10 * (i / 10)], &rec, REFTABLE_HASH_SIZE_SHA1));
 	}
 
-	block_reader_release(&br);
+	reftable_block_release(&block);
 	block_iter_close(&it);
 	reftable_record_release(&rec);
-	reftable_block_done(&br.block);
 	reftable_buf_release(&want);
-	reftable_buf_release(&buf);
+	reftable_buf_release(&block_data);
 	for (i = 0; i < N; i++)
 		reftable_record_release(&recs[i]);
 }
@@ -113,24 +114,25 @@ static void t_log_block_read_write(void)
 	struct reftable_record recs[30];
 	const size_t N = ARRAY_SIZE(recs);
 	const size_t block_size = 2048;
-	struct reftable_block block = { 0 };
+	struct reftable_block_source source = { 0 };
 	struct block_writer bw = {
 		.last_key = REFTABLE_BUF_INIT,
 	};
 	struct reftable_record rec = {
-		.type = BLOCK_TYPE_LOG,
+		.type = REFTABLE_BLOCK_TYPE_LOG,
 	};
 	size_t i = 0;
 	int ret;
-	struct block_reader br = { 0 };
+	struct reftable_block block = { 0 };
 	struct block_iter it = BLOCK_ITER_INIT;
-	struct reftable_buf want = REFTABLE_BUF_INIT, buf = REFTABLE_BUF_INIT;
+	struct reftable_buf want = REFTABLE_BUF_INIT;
+	struct reftable_buf block_data = REFTABLE_BUF_INIT;
 
-	REFTABLE_CALLOC_ARRAY(block.data, block_size);
-	check(block.data != NULL);
-	block.len = block_size;
-	block_source_from_buf(&block.source ,&buf);
-	ret = block_writer_init(&bw, BLOCK_TYPE_LOG, block.data, block_size,
+	REFTABLE_CALLOC_ARRAY(block_data.buf, block_size);
+	check(block_data.buf != NULL);
+	block_data.len = block_size;
+
+	ret = block_writer_init(&bw, REFTABLE_BLOCK_TYPE_LOG, (uint8_t *) block_data.buf, block_size,
 				header_off, hash_size(REFTABLE_HASH_SHA1));
 	check(!ret);
 
@@ -151,9 +153,11 @@ static void t_log_block_read_write(void)
 
 	block_writer_release(&bw);
 
-	block_reader_init(&br, &block, header_off, block_size, REFTABLE_HASH_SIZE_SHA1);
+	block_source_from_buf(&source, &block_data);
+	reftable_block_init(&block, &source, 0, header_off, block_size,
+			    REFTABLE_HASH_SIZE_SHA1, REFTABLE_BLOCK_TYPE_LOG);
 
-	block_iter_seek_start(&it, &br);
+	block_iter_init(&it, &block);
 
 	for (i = 0; ; i++) {
 		ret = block_iter_next(&it, &rec);
@@ -166,11 +170,10 @@ static void t_log_block_read_write(void)
 	}
 
 	for (i = 0; i < N; i++) {
-		block_iter_reset(&it);
 		reftable_buf_reset(&want);
 		check(!reftable_buf_addstr(&want, recs[i].u.log.refname));
 
-		ret = block_iter_seek_key(&it, &br, &want);
+		ret = block_iter_seek_key(&it, &want);
 		check_int(ret, ==, 0);
 
 		ret = block_iter_next(&it, &rec);
@@ -179,7 +182,7 @@ static void t_log_block_read_write(void)
 		check(reftable_record_equal(&recs[i], &rec, REFTABLE_HASH_SIZE_SHA1));
 
 		want.len--;
-		ret = block_iter_seek_key(&it, &br, &want);
+		ret = block_iter_seek_key(&it, &want);
 		check_int(ret, ==, 0);
 
 		ret = block_iter_next(&it, &rec);
@@ -187,12 +190,11 @@ static void t_log_block_read_write(void)
 		check(reftable_record_equal(&recs[10 * (i / 10)], &rec, REFTABLE_HASH_SIZE_SHA1));
 	}
 
-	block_reader_release(&br);
+	reftable_block_release(&block);
 	block_iter_close(&it);
 	reftable_record_release(&rec);
-	reftable_block_done(&br.block);
 	reftable_buf_release(&want);
-	reftable_buf_release(&buf);
+	reftable_buf_release(&block_data);
 	for (i = 0; i < N; i++)
 		reftable_record_release(&recs[i]);
 }
@@ -203,24 +205,25 @@ static void t_obj_block_read_write(void)
 	struct reftable_record recs[30];
 	const size_t N = ARRAY_SIZE(recs);
 	const size_t block_size = 1024;
-	struct reftable_block block = { 0 };
+	struct reftable_block_source source = { 0 };
 	struct block_writer bw = {
 		.last_key = REFTABLE_BUF_INIT,
 	};
 	struct reftable_record rec = {
-		.type = BLOCK_TYPE_OBJ,
+		.type = REFTABLE_BLOCK_TYPE_OBJ,
 	};
 	size_t i = 0;
 	int ret;
-	struct block_reader br = { 0 };
+	struct reftable_block block = { 0 };
 	struct block_iter it = BLOCK_ITER_INIT;
-	struct reftable_buf want = REFTABLE_BUF_INIT, buf = REFTABLE_BUF_INIT;
+	struct reftable_buf want = REFTABLE_BUF_INIT;
+	struct reftable_buf block_data = REFTABLE_BUF_INIT;
 
-	REFTABLE_CALLOC_ARRAY(block.data, block_size);
-	check(block.data != NULL);
-	block.len = block_size;
-	block_source_from_buf(&block.source, &buf);
-	ret = block_writer_init(&bw, BLOCK_TYPE_OBJ, block.data, block_size,
+	REFTABLE_CALLOC_ARRAY(block_data.buf, block_size);
+	check(block_data.buf != NULL);
+	block_data.len = block_size;
+
+	ret = block_writer_init(&bw, REFTABLE_BLOCK_TYPE_OBJ, (uint8_t *) block_data.buf, block_size,
 				header_off, hash_size(REFTABLE_HASH_SHA1));
 	check(!ret);
 
@@ -243,9 +246,11 @@ static void t_obj_block_read_write(void)
 
 	block_writer_release(&bw);
 
-	block_reader_init(&br, &block, header_off, block_size, REFTABLE_HASH_SIZE_SHA1);
+	block_source_from_buf(&source, &block_data);
+	reftable_block_init(&block, &source, 0, header_off, block_size,
+			    REFTABLE_HASH_SIZE_SHA1, REFTABLE_BLOCK_TYPE_OBJ);
 
-	block_iter_seek_start(&it, &br);
+	block_iter_init(&it, &block);
 
 	for (i = 0; ; i++) {
 		ret = block_iter_next(&it, &rec);
@@ -258,10 +263,9 @@ static void t_obj_block_read_write(void)
 	}
 
 	for (i = 0; i < N; i++) {
-		block_iter_reset(&it);
 		reftable_record_key(&recs[i], &want);
 
-		ret = block_iter_seek_key(&it, &br, &want);
+		ret = block_iter_seek_key(&it, &want);
 		check_int(ret, ==, 0);
 
 		ret = block_iter_next(&it, &rec);
@@ -270,12 +274,11 @@ static void t_obj_block_read_write(void)
 		check(reftable_record_equal(&recs[i], &rec, REFTABLE_HASH_SIZE_SHA1));
 	}
 
-	block_reader_release(&br);
+	reftable_block_release(&block);
 	block_iter_close(&it);
 	reftable_record_release(&rec);
-	reftable_block_done(&br.block);
 	reftable_buf_release(&want);
-	reftable_buf_release(&buf);
+	reftable_buf_release(&block_data);
 	for (i = 0; i < N; i++)
 		reftable_record_release(&recs[i]);
 }
@@ -286,25 +289,26 @@ static void t_index_block_read_write(void)
 	struct reftable_record recs[30];
 	const size_t N = ARRAY_SIZE(recs);
 	const size_t block_size = 1024;
-	struct reftable_block block = { 0 };
+	struct reftable_block_source source = { 0 };
 	struct block_writer bw = {
 		.last_key = REFTABLE_BUF_INIT,
 	};
 	struct reftable_record rec = {
-		.type = BLOCK_TYPE_INDEX,
+		.type = REFTABLE_BLOCK_TYPE_INDEX,
 		.u.idx.last_key = REFTABLE_BUF_INIT,
 	};
 	size_t i = 0;
 	int ret;
-	struct block_reader br = { 0 };
+	struct reftable_block block = { 0 };
 	struct block_iter it = BLOCK_ITER_INIT;
-	struct reftable_buf want = REFTABLE_BUF_INIT, buf = REFTABLE_BUF_INIT;
+	struct reftable_buf want = REFTABLE_BUF_INIT;
+	struct reftable_buf block_data = REFTABLE_BUF_INIT;
 
-	REFTABLE_CALLOC_ARRAY(block.data, block_size);
-	check(block.data != NULL);
-	block.len = block_size;
-	block_source_from_buf(&block.source, &buf);
-	ret = block_writer_init(&bw, BLOCK_TYPE_INDEX, block.data, block_size,
+	REFTABLE_CALLOC_ARRAY(block_data.buf, block_size);
+	check(block_data.buf != NULL);
+	block_data.len = block_size;
+
+	ret = block_writer_init(&bw, REFTABLE_BLOCK_TYPE_INDEX, (uint8_t *) block_data.buf, block_size,
 				header_off, hash_size(REFTABLE_HASH_SHA1));
 	check(!ret);
 
@@ -314,7 +318,7 @@ static void t_index_block_read_write(void)
 		snprintf(buf, sizeof(buf), "branch%02"PRIuMAX, (uintmax_t)i);
 
 		reftable_buf_init(&recs[i].u.idx.last_key);
-		recs[i].type = BLOCK_TYPE_INDEX;
+		recs[i].type = REFTABLE_BLOCK_TYPE_INDEX;
 		check(!reftable_buf_addstr(&recs[i].u.idx.last_key, buf));
 		recs[i].u.idx.offset = i;
 
@@ -327,9 +331,11 @@ static void t_index_block_read_write(void)
 
 	block_writer_release(&bw);
 
-	block_reader_init(&br, &block, header_off, block_size, REFTABLE_HASH_SIZE_SHA1);
+	block_source_from_buf(&source, &block_data);
+	reftable_block_init(&block, &source, 0, header_off, block_size,
+			    REFTABLE_HASH_SIZE_SHA1, REFTABLE_BLOCK_TYPE_INDEX);
 
-	block_iter_seek_start(&it, &br);
+	block_iter_init(&it, &block);
 
 	for (i = 0; ; i++) {
 		ret = block_iter_next(&it, &rec);
@@ -342,10 +348,9 @@ static void t_index_block_read_write(void)
 	}
 
 	for (i = 0; i < N; i++) {
-		block_iter_reset(&it);
 		reftable_record_key(&recs[i], &want);
 
-		ret = block_iter_seek_key(&it, &br, &want);
+		ret = block_iter_seek_key(&it, &want);
 		check_int(ret, ==, 0);
 
 		ret = block_iter_next(&it, &rec);
@@ -354,7 +359,7 @@ static void t_index_block_read_write(void)
 		check(reftable_record_equal(&recs[i], &rec, REFTABLE_HASH_SIZE_SHA1));
 
 		want.len--;
-		ret = block_iter_seek_key(&it, &br, &want);
+		ret = block_iter_seek_key(&it, &want);
 		check_int(ret, ==, 0);
 
 		ret = block_iter_next(&it, &rec);
@@ -362,22 +367,100 @@ static void t_index_block_read_write(void)
 		check(reftable_record_equal(&recs[10 * (i / 10)], &rec, REFTABLE_HASH_SIZE_SHA1));
 	}
 
-	block_reader_release(&br);
+	reftable_block_release(&block);
 	block_iter_close(&it);
 	reftable_record_release(&rec);
-	reftable_block_done(&br.block);
 	reftable_buf_release(&want);
-	reftable_buf_release(&buf);
+	reftable_buf_release(&block_data);
 	for (i = 0; i < N; i++)
 		reftable_record_release(&recs[i]);
 }
 
+static void t_block_iterator(void)
+{
+	struct reftable_block_source source = { 0 };
+	struct block_writer writer = {
+		.last_key = REFTABLE_BUF_INIT,
+	};
+	struct reftable_record expected_refs[20];
+	struct reftable_ref_record ref = { 0 };
+	struct reftable_iterator it = { 0 };
+	struct reftable_block block = { 0 };
+	struct reftable_buf data;
+	int err;
+
+	data.len = 1024;
+	REFTABLE_CALLOC_ARRAY(data.buf, data.len);
+	check(data.buf != NULL);
+
+	err = block_writer_init(&writer, REFTABLE_BLOCK_TYPE_REF, (uint8_t *) data.buf, data.len,
+				0, hash_size(REFTABLE_HASH_SHA1));
+	check(!err);
+
+	for (size_t i = 0; i < ARRAY_SIZE(expected_refs); i++) {
+		expected_refs[i] = (struct reftable_record) {
+			.type = REFTABLE_BLOCK_TYPE_REF,
+			.u.ref = {
+				.value_type = REFTABLE_REF_VAL1,
+				.refname = xstrfmt("refs/heads/branch-%02"PRIuMAX, (uintmax_t)i),
+			},
+		};
+		memset(expected_refs[i].u.ref.value.val1, i, REFTABLE_HASH_SIZE_SHA1);
+
+		err = block_writer_add(&writer, &expected_refs[i]);
+		check_int(err, ==, 0);
+	}
+
+	err = block_writer_finish(&writer);
+	check_int(err, >, 0);
+
+	block_source_from_buf(&source, &data);
+	reftable_block_init(&block, &source, 0, 0, data.len,
+			    REFTABLE_HASH_SIZE_SHA1, REFTABLE_BLOCK_TYPE_REF);
+
+	err = reftable_block_init_iterator(&block, &it);
+	check_int(err, ==, 0);
+
+	for (size_t i = 0; ; i++) {
+		err = reftable_iterator_next_ref(&it, &ref);
+		if (err > 0) {
+			check_int(i, ==, ARRAY_SIZE(expected_refs));
+			break;
+		}
+		check_int(err, ==, 0);
+
+		check(reftable_ref_record_equal(&ref, &expected_refs[i].u.ref,
+						REFTABLE_HASH_SIZE_SHA1));
+	}
+
+	err = reftable_iterator_seek_ref(&it, "refs/heads/does-not-exist");
+	check_int(err, ==, 0);
+	err = reftable_iterator_next_ref(&it, &ref);
+	check_int(err, ==, 1);
+
+	err = reftable_iterator_seek_ref(&it, "refs/heads/branch-13");
+	check_int(err, ==, 0);
+	err = reftable_iterator_next_ref(&it, &ref);
+	check_int(err, ==, 0);
+	check(reftable_ref_record_equal(&ref, &expected_refs[13].u.ref,
+					REFTABLE_HASH_SIZE_SHA1));
+
+	for (size_t i = 0; i < ARRAY_SIZE(expected_refs); i++)
+		reftable_free(expected_refs[i].u.ref.refname);
+	reftable_ref_record_release(&ref);
+	reftable_iterator_destroy(&it);
+	reftable_block_release(&block);
+	block_writer_release(&writer);
+	reftable_buf_release(&data);
+}
+
 int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
 {
 	TEST(t_index_block_read_write(), "read-write operations on index blocks work");
 	TEST(t_log_block_read_write(), "read-write operations on log blocks work");
 	TEST(t_obj_block_read_write(), "read-write operations on obj blocks work");
 	TEST(t_ref_block_read_write(), "read-write operations on ref blocks work");
+	TEST(t_block_iterator(), "block iterator works");
 
 	return test_done();
 }
diff --git a/t/unit-tests/t-reftable-merged.c b/t/unit-tests/t-reftable-merged.c
index 60836f8..18c3251 100644
--- a/t/unit-tests/t-reftable-merged.c
+++ b/t/unit-tests/t-reftable-merged.c
@@ -11,7 +11,7 @@ license that can be found in the LICENSE file or at
 #include "reftable/blocksource.h"
 #include "reftable/constants.h"
 #include "reftable/merged.h"
-#include "reftable/reader.h"
+#include "reftable/table.h"
 #include "reftable/reftable-error.h"
 #include "reftable/reftable-merged.h"
 #include "reftable/reftable-writer.h"
@@ -19,7 +19,7 @@ license that can be found in the LICENSE file or at
 static struct reftable_merged_table *
 merged_table_from_records(struct reftable_ref_record **refs,
 			  struct reftable_block_source **source,
-			  struct reftable_reader ***readers, const size_t *sizes,
+			  struct reftable_table ***tables, const size_t *sizes,
 			  struct reftable_buf *buf, const size_t n)
 {
 	struct reftable_merged_table *mt = NULL;
@@ -28,8 +28,8 @@ merged_table_from_records(struct reftable_ref_record **refs,
 	};
 	int err;
 
-	REFTABLE_CALLOC_ARRAY(*readers, n);
-	check(*readers != NULL);
+	REFTABLE_CALLOC_ARRAY(*tables, n);
+	check(*tables != NULL);
 	REFTABLE_CALLOC_ARRAY(*source, n);
 	check(*source != NULL);
 
@@ -37,21 +37,21 @@ merged_table_from_records(struct reftable_ref_record **refs,
 		t_reftable_write_to_buf(&buf[i], refs[i], sizes[i], NULL, 0, &opts);
 		block_source_from_buf(&(*source)[i], &buf[i]);
 
-		err = reftable_reader_new(&(*readers)[i], &(*source)[i],
-					  "name");
+		err = reftable_table_new(&(*tables)[i], &(*source)[i],
+					 "name");
 		check(!err);
 	}
 
-	err = reftable_merged_table_new(&mt, *readers, n, REFTABLE_HASH_SHA1);
+	err = reftable_merged_table_new(&mt, *tables, n, REFTABLE_HASH_SHA1);
 	check(!err);
 	return mt;
 }
 
-static void readers_destroy(struct reftable_reader **readers, const size_t n)
+static void tables_destroy(struct reftable_table **tables, const size_t n)
 {
 	for (size_t i = 0; i < n; i++)
-		reftable_reader_decref(readers[i]);
-	reftable_free(readers);
+		reftable_table_decref(tables[i]);
+	reftable_free(tables);
 }
 
 static void t_merged_single_record(void)
@@ -77,14 +77,14 @@ static void t_merged_single_record(void)
 	size_t sizes[] = { ARRAY_SIZE(r1), ARRAY_SIZE(r2), ARRAY_SIZE(r3) };
 	struct reftable_buf bufs[3] = { REFTABLE_BUF_INIT, REFTABLE_BUF_INIT, REFTABLE_BUF_INIT };
 	struct reftable_block_source *bs = NULL;
-	struct reftable_reader **readers = NULL;
+	struct reftable_table **tables = NULL;
 	struct reftable_merged_table *mt =
-		merged_table_from_records(refs, &bs, &readers, sizes, bufs, 3);
+		merged_table_from_records(refs, &bs, &tables, sizes, bufs, 3);
 	struct reftable_ref_record ref = { 0 };
 	struct reftable_iterator it = { 0 };
 	int err;
 
-	err = merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
+	err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_REF);
 	check(!err);
 	err = reftable_iterator_seek_ref(&it, "a");
 	check(!err);
@@ -94,7 +94,7 @@ static void t_merged_single_record(void)
 	check(reftable_ref_record_equal(&r2[0], &ref, REFTABLE_HASH_SIZE_SHA1));
 	reftable_ref_record_release(&ref);
 	reftable_iterator_destroy(&it);
-	readers_destroy(readers, 3);
+	tables_destroy(tables, 3);
 	reftable_merged_table_free(mt);
 	for (size_t i = 0; i < ARRAY_SIZE(bufs); i++)
 		reftable_buf_release(&bufs[i]);
@@ -154,9 +154,9 @@ static void t_merged_refs(void)
 	size_t sizes[3] = { ARRAY_SIZE(r1), ARRAY_SIZE(r2), ARRAY_SIZE(r3) };
 	struct reftable_buf bufs[3] = { REFTABLE_BUF_INIT, REFTABLE_BUF_INIT, REFTABLE_BUF_INIT };
 	struct reftable_block_source *bs = NULL;
-	struct reftable_reader **readers = NULL;
+	struct reftable_table **tables = NULL;
 	struct reftable_merged_table *mt =
-		merged_table_from_records(refs, &bs, &readers, sizes, bufs, 3);
+		merged_table_from_records(refs, &bs, &tables, sizes, bufs, 3);
 	struct reftable_iterator it = { 0 };
 	int err;
 	struct reftable_ref_record *out = NULL;
@@ -164,7 +164,7 @@ static void t_merged_refs(void)
 	size_t cap = 0;
 	size_t i;
 
-	err = merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
+	err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_REF);
 	check(!err);
 	err = reftable_iterator_seek_ref(&it, "a");
 	check(!err);
@@ -193,7 +193,7 @@ static void t_merged_refs(void)
 
 	for (i = 0; i < 3; i++)
 		reftable_buf_release(&bufs[i]);
-	readers_destroy(readers, 3);
+	tables_destroy(tables, 3);
 	reftable_merged_table_free(mt);
 	reftable_free(bs);
 }
@@ -238,13 +238,13 @@ static void t_merged_seek_multiple_times(void)
 		REFTABLE_BUF_INIT, REFTABLE_BUF_INIT,
 	};
 	struct reftable_block_source *sources = NULL;
-	struct reftable_reader **readers = NULL;
+	struct reftable_table **tables = NULL;
 	struct reftable_ref_record rec = { 0 };
 	struct reftable_iterator it = { 0 };
 	struct reftable_merged_table *mt;
 
-	mt = merged_table_from_records(refs, &sources, &readers, sizes, bufs, 2);
-	merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
+	mt = merged_table_from_records(refs, &sources, &tables, sizes, bufs, 2);
+	merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_REF);
 
 	for (size_t i = 0; i < 5; i++) {
 		int err = reftable_iterator_seek_ref(&it, "c");
@@ -266,7 +266,7 @@ static void t_merged_seek_multiple_times(void)
 
 	for (size_t i = 0; i < ARRAY_SIZE(bufs); i++)
 		reftable_buf_release(&bufs[i]);
-	readers_destroy(readers, ARRAY_SIZE(refs));
+	tables_destroy(tables, ARRAY_SIZE(refs));
 	reftable_ref_record_release(&rec);
 	reftable_iterator_destroy(&it);
 	reftable_merged_table_free(mt);
@@ -313,14 +313,14 @@ static void t_merged_seek_multiple_times_without_draining(void)
 		REFTABLE_BUF_INIT, REFTABLE_BUF_INIT,
 	};
 	struct reftable_block_source *sources = NULL;
-	struct reftable_reader **readers = NULL;
+	struct reftable_table **tables = NULL;
 	struct reftable_ref_record rec = { 0 };
 	struct reftable_iterator it = { 0 };
 	struct reftable_merged_table *mt;
 	int err;
 
-	mt = merged_table_from_records(refs, &sources, &readers, sizes, bufs, 2);
-	merged_table_init_iter(mt, &it, BLOCK_TYPE_REF);
+	mt = merged_table_from_records(refs, &sources, &tables, sizes, bufs, 2);
+	merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_REF);
 
 	err = reftable_iterator_seek_ref(&it, "b");
 	check(!err);
@@ -338,7 +338,7 @@ static void t_merged_seek_multiple_times_without_draining(void)
 
 	for (size_t i = 0; i < ARRAY_SIZE(bufs); i++)
 		reftable_buf_release(&bufs[i]);
-	readers_destroy(readers, ARRAY_SIZE(refs));
+	tables_destroy(tables, ARRAY_SIZE(refs));
 	reftable_ref_record_release(&rec);
 	reftable_iterator_destroy(&it);
 	reftable_merged_table_free(mt);
@@ -348,7 +348,7 @@ static void t_merged_seek_multiple_times_without_draining(void)
 static struct reftable_merged_table *
 merged_table_from_log_records(struct reftable_log_record **logs,
 			      struct reftable_block_source **source,
-			      struct reftable_reader ***readers, const size_t *sizes,
+			      struct reftable_table ***tables, const size_t *sizes,
 			      struct reftable_buf *buf, const size_t n)
 {
 	struct reftable_merged_table *mt = NULL;
@@ -358,8 +358,8 @@ merged_table_from_log_records(struct reftable_log_record **logs,
 	};
 	int err;
 
-	REFTABLE_CALLOC_ARRAY(*readers, n);
-	check(*readers != NULL);
+	REFTABLE_CALLOC_ARRAY(*tables, n);
+	check(*tables != NULL);
 	REFTABLE_CALLOC_ARRAY(*source, n);
 	check(*source != NULL);
 
@@ -367,12 +367,12 @@ merged_table_from_log_records(struct reftable_log_record **logs,
 		t_reftable_write_to_buf(&buf[i], NULL, 0, logs[i], sizes[i], &opts);
 		block_source_from_buf(&(*source)[i], &buf[i]);
 
-		err = reftable_reader_new(&(*readers)[i], &(*source)[i],
-					  "name");
+		err = reftable_table_new(&(*tables)[i], &(*source)[i],
+					 "name");
 		check(!err);
 	}
 
-	err = reftable_merged_table_new(&mt, *readers, n, REFTABLE_HASH_SHA1);
+	err = reftable_merged_table_new(&mt, *tables, n, REFTABLE_HASH_SHA1);
 	check(!err);
 	return mt;
 }
@@ -435,9 +435,9 @@ static void t_merged_logs(void)
 	size_t sizes[3] = { ARRAY_SIZE(r1), ARRAY_SIZE(r2), ARRAY_SIZE(r3) };
 	struct reftable_buf bufs[3] = { REFTABLE_BUF_INIT, REFTABLE_BUF_INIT, REFTABLE_BUF_INIT };
 	struct reftable_block_source *bs = NULL;
-	struct reftable_reader **readers = NULL;
+	struct reftable_table **tables = NULL;
 	struct reftable_merged_table *mt = merged_table_from_log_records(
-		logs, &bs, &readers, sizes, bufs, 3);
+		logs, &bs, &tables, sizes, bufs, 3);
 	struct reftable_iterator it = { 0 };
 	int err;
 	struct reftable_log_record *out = NULL;
@@ -445,7 +445,7 @@ static void t_merged_logs(void)
 	size_t cap = 0;
 	size_t i;
 
-	err = merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG);
+	err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_LOG);
 	check(!err);
 	err = reftable_iterator_seek_log(&it, "a");
 	check(!err);
@@ -469,7 +469,7 @@ static void t_merged_logs(void)
 		check(reftable_log_record_equal(want[i], &out[i],
 						 REFTABLE_HASH_SIZE_SHA1));
 
-	err = merged_table_init_iter(mt, &it, BLOCK_TYPE_LOG);
+	err = merged_table_init_iter(mt, &it, REFTABLE_BLOCK_TYPE_LOG);
 	check(!err);
 	err = reftable_iterator_seek_log_at(&it, "a", 2);
 	check(!err);
@@ -485,7 +485,7 @@ static void t_merged_logs(void)
 
 	for (i = 0; i < 3; i++)
 		reftable_buf_release(&bufs[i]);
-	readers_destroy(readers, 3);
+	tables_destroy(tables, 3);
 	reftable_merged_table_free(mt);
 	reftable_free(bs);
 }
@@ -502,7 +502,7 @@ static void t_default_write_opts(void)
 	int err;
 	struct reftable_block_source source = { 0 };
 	uint32_t hash_id;
-	struct reftable_reader *rd = NULL;
+	struct reftable_table *table = NULL;
 	struct reftable_merged_table *merged = NULL;
 
 	reftable_writer_set_limits(w, 1, 1);
@@ -516,18 +516,18 @@ static void t_default_write_opts(void)
 
 	block_source_from_buf(&source, &buf);
 
-	err = reftable_reader_new(&rd, &source, "filename");
+	err = reftable_table_new(&table, &source, "filename");
 	check(!err);
 
-	hash_id = reftable_reader_hash_id(rd);
+	hash_id = reftable_table_hash_id(table);
 	check_int(hash_id, ==, REFTABLE_HASH_SHA1);
 
-	err = reftable_merged_table_new(&merged, &rd, 1, REFTABLE_HASH_SHA256);
+	err = reftable_merged_table_new(&merged, &table, 1, REFTABLE_HASH_SHA256);
 	check_int(err, ==, REFTABLE_FORMAT_ERROR);
-	err = reftable_merged_table_new(&merged, &rd, 1, REFTABLE_HASH_SHA1);
+	err = reftable_merged_table_new(&merged, &table, 1, REFTABLE_HASH_SHA1);
 	check(!err);
 
-	reftable_reader_decref(rd);
+	reftable_table_decref(table);
 	reftable_merged_table_free(merged);
 	reftable_buf_release(&buf);
 }
diff --git a/t/unit-tests/t-reftable-pq.c b/t/unit-tests/t-reftable-pq.c
index c128fe8..fb5a4eb 100644
--- a/t/unit-tests/t-reftable-pq.c
+++ b/t/unit-tests/t-reftable-pq.c
@@ -34,7 +34,7 @@ static void t_pq_record(void)
 	char *last = NULL;
 
 	for (i = 0; i < N; i++) {
-		check(!reftable_record_init(&recs[i], BLOCK_TYPE_REF));
+		check(!reftable_record_init(&recs[i], REFTABLE_BLOCK_TYPE_REF));
 		recs[i].u.ref.refname = xstrfmt("%02"PRIuMAX, (uintmax_t)i);
 	}
 
@@ -57,7 +57,7 @@ static void t_pq_record(void)
 		merged_iter_pqueue_check(&pq);
 
 		check(pq_entry_equal(&top, &e));
-		check(reftable_record_type(e.rec) == BLOCK_TYPE_REF);
+		check(reftable_record_type(e.rec) == REFTABLE_BLOCK_TYPE_REF);
 		if (last)
 			check_int(strcmp(last, e.rec->u.ref.refname), <, 0);
 		last = e.rec->u.ref.refname;
@@ -76,7 +76,7 @@ static void t_pq_index(void)
 	size_t N = ARRAY_SIZE(recs), i;
 
 	for (i = 0; i < N; i++) {
-		check(!reftable_record_init(&recs[i], BLOCK_TYPE_REF));
+		check(!reftable_record_init(&recs[i], REFTABLE_BLOCK_TYPE_REF));
 		recs[i].u.ref.refname = (char *) "refs/heads/master";
 	}
 
@@ -100,7 +100,7 @@ static void t_pq_index(void)
 		merged_iter_pqueue_check(&pq);
 
 		check(pq_entry_equal(&top, &e));
-		check(reftable_record_type(e.rec) == BLOCK_TYPE_REF);
+		check(reftable_record_type(e.rec) == REFTABLE_BLOCK_TYPE_REF);
 		check_int(e.index, ==, i);
 		if (last)
 			check_str(last, e.rec->u.ref.refname);
@@ -117,7 +117,7 @@ static void t_merged_iter_pqueue_top(void)
 	size_t N = ARRAY_SIZE(recs), i;
 
 	for (i = 0; i < N; i++) {
-		check(!reftable_record_init(&recs[i], BLOCK_TYPE_REF));
+		check(!reftable_record_init(&recs[i], REFTABLE_BLOCK_TYPE_REF));
 		recs[i].u.ref.refname = (char *) "refs/heads/master";
 	}
 
diff --git a/t/unit-tests/t-reftable-reader.c b/t/unit-tests/t-reftable-reader.c
deleted file mode 100644
index 546df60..0000000
--- a/t/unit-tests/t-reftable-reader.c
+++ /dev/null
@@ -1,96 +0,0 @@
-#include "test-lib.h"
-#include "lib-reftable.h"
-#include "reftable/blocksource.h"
-#include "reftable/reader.h"
-
-static int t_reader_seek_once(void)
-{
-	struct reftable_ref_record records[] = {
-		{
-			.refname = (char *) "refs/heads/main",
-			.value_type = REFTABLE_REF_VAL1,
-			.value.val1 = { 42 },
-		},
-	};
-	struct reftable_block_source source = { 0 };
-	struct reftable_ref_record ref = { 0 };
-	struct reftable_iterator it = { 0 };
-	struct reftable_reader *reader;
-	struct reftable_buf buf = REFTABLE_BUF_INIT;
-	int ret;
-
-	t_reftable_write_to_buf(&buf, records, ARRAY_SIZE(records), NULL, 0, NULL);
-	block_source_from_buf(&source, &buf);
-
-	ret = reftable_reader_new(&reader, &source, "name");
-	check(!ret);
-
-	reftable_reader_init_ref_iterator(reader, &it);
-	ret = reftable_iterator_seek_ref(&it, "");
-	check(!ret);
-	ret = reftable_iterator_next_ref(&it, &ref);
-	check(!ret);
-
-	ret = reftable_ref_record_equal(&ref, &records[0], REFTABLE_HASH_SIZE_SHA1);
-	check_int(ret, ==, 1);
-
-	ret = reftable_iterator_next_ref(&it, &ref);
-	check_int(ret, ==, 1);
-
-	reftable_ref_record_release(&ref);
-	reftable_iterator_destroy(&it);
-	reftable_reader_decref(reader);
-	reftable_buf_release(&buf);
-	return 0;
-}
-
-static int t_reader_reseek(void)
-{
-	struct reftable_ref_record records[] = {
-		{
-			.refname = (char *) "refs/heads/main",
-			.value_type = REFTABLE_REF_VAL1,
-			.value.val1 = { 42 },
-		},
-	};
-	struct reftable_block_source source = { 0 };
-	struct reftable_ref_record ref = { 0 };
-	struct reftable_iterator it = { 0 };
-	struct reftable_reader *reader;
-	struct reftable_buf buf = REFTABLE_BUF_INIT;
-	int ret;
-
-	t_reftable_write_to_buf(&buf, records, ARRAY_SIZE(records), NULL, 0, NULL);
-	block_source_from_buf(&source, &buf);
-
-	ret = reftable_reader_new(&reader, &source, "name");
-	check(!ret);
-
-	reftable_reader_init_ref_iterator(reader, &it);
-
-	for (size_t i = 0; i < 5; i++) {
-		ret = reftable_iterator_seek_ref(&it, "");
-		check(!ret);
-		ret = reftable_iterator_next_ref(&it, &ref);
-		check(!ret);
-
-		ret = reftable_ref_record_equal(&ref, &records[0], REFTABLE_HASH_SIZE_SHA1);
-		check_int(ret, ==, 1);
-
-		ret = reftable_iterator_next_ref(&it, &ref);
-		check_int(ret, ==, 1);
-	}
-
-	reftable_ref_record_release(&ref);
-	reftable_iterator_destroy(&it);
-	reftable_reader_decref(reader);
-	reftable_buf_release(&buf);
-	return 0;
-}
-
-int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
-{
-	TEST(t_reader_seek_once(), "reader can seek once");
-	TEST(t_reader_reseek(), "reader can reseek multiple times");
-	return test_done();
-}
diff --git a/t/unit-tests/t-reftable-readwrite.c b/t/unit-tests/t-reftable-readwrite.c
index c962683..4c49129 100644
--- a/t/unit-tests/t-reftable-readwrite.c
+++ b/t/unit-tests/t-reftable-readwrite.c
@@ -12,9 +12,9 @@ license that can be found in the LICENSE file or at
 #include "lib-reftable.h"
 #include "reftable/basics.h"
 #include "reftable/blocksource.h"
-#include "reftable/reader.h"
 #include "reftable/reftable-error.h"
 #include "reftable/reftable-writer.h"
+#include "reftable/table.h"
 #include "strbuf.h"
 
 static const int update_index = 5;
@@ -23,22 +23,22 @@ static void t_buffer(void)
 {
 	struct reftable_buf buf = REFTABLE_BUF_INIT;
 	struct reftable_block_source source = { 0 };
-	struct reftable_block out = { 0 };
+	struct reftable_block_data out = { 0 };
 	int n;
 	uint8_t in[] = "hello";
 	check(!reftable_buf_add(&buf, in, sizeof(in)));
 	block_source_from_buf(&source, &buf);
 	check_int(block_source_size(&source), ==, 6);
-	n = block_source_read_block(&source, &out, 0, sizeof(in));
+	n = block_source_read_data(&source, &out, 0, sizeof(in));
 	check_int(n, ==, sizeof(in));
 	check(!memcmp(in, out.data, n));
-	reftable_block_done(&out);
+	block_source_release_data(&out);
 
-	n = block_source_read_block(&source, &out, 1, 2);
+	n = block_source_read_data(&source, &out, 1, 2);
 	check_int(n, ==, 2);
 	check(!memcmp(out.data, "el", 2));
 
-	reftable_block_done(&out);
+	block_source_release_data(&out);
 	block_source_close(&source);
 	reftable_buf_release(&buf);
 }
@@ -204,7 +204,7 @@ static void t_log_write_read(void)
 	struct reftable_ref_record ref = { 0 };
 	struct reftable_log_record log = { 0 };
 	struct reftable_iterator it = { 0 };
-	struct reftable_reader *reader;
+	struct reftable_table *table;
 	struct reftable_block_source source = { 0 };
 	struct reftable_buf buf = REFTABLE_BUF_INIT;
 	struct reftable_writer *w = t_reftable_strbuf_writer(&buf, &opts);
@@ -254,10 +254,10 @@ static void t_log_write_read(void)
 
 	block_source_from_buf(&source, &buf);
 
-	err = reftable_reader_new(&reader, &source, "file.log");
+	err = reftable_table_new(&table, &source, "file.log");
 	check(!err);
 
-	err = reftable_reader_init_ref_iterator(reader, &it);
+	err = reftable_table_init_ref_iterator(table, &it);
 	check(!err);
 
 	err = reftable_iterator_seek_ref(&it, names[N - 1]);
@@ -273,7 +273,7 @@ static void t_log_write_read(void)
 	reftable_iterator_destroy(&it);
 	reftable_ref_record_release(&ref);
 
-	err = reftable_reader_init_log_iterator(reader, &it);
+	err = reftable_table_init_log_iterator(table, &it);
 	check(!err);
 	err = reftable_iterator_seek_log(&it, "");
 	check(!err);
@@ -294,7 +294,7 @@ static void t_log_write_read(void)
 	/* cleanup. */
 	reftable_buf_release(&buf);
 	free_names(names);
-	reftable_reader_decref(reader);
+	reftable_table_decref(table);
 }
 
 static void t_log_zlib_corruption(void)
@@ -303,7 +303,7 @@ static void t_log_zlib_corruption(void)
 		.block_size = 256,
 	};
 	struct reftable_iterator it = { 0 };
-	struct reftable_reader *reader;
+	struct reftable_table *table;
 	struct reftable_block_source source = { 0 };
 	struct reftable_buf buf = REFTABLE_BUF_INIT;
 	struct reftable_writer *w = t_reftable_strbuf_writer(&buf, &opts);
@@ -345,10 +345,10 @@ static void t_log_zlib_corruption(void)
 
 	block_source_from_buf(&source, &buf);
 
-	err = reftable_reader_new(&reader, &source, "file.log");
+	err = reftable_table_new(&table, &source, "file.log");
 	check(!err);
 
-	err = reftable_reader_init_log_iterator(reader, &it);
+	err = reftable_table_init_log_iterator(table, &it);
 	check(!err);
 	err = reftable_iterator_seek_log(&it, "refname");
 	check_int(err, ==, REFTABLE_ZLIB_ERROR);
@@ -356,7 +356,7 @@ static void t_log_zlib_corruption(void)
 	reftable_iterator_destroy(&it);
 
 	/* cleanup. */
-	reftable_reader_decref(reader);
+	reftable_table_decref(table);
 	reftable_buf_release(&buf);
 }
 
@@ -367,7 +367,7 @@ static void t_table_read_write_sequential(void)
 	int N = 50;
 	struct reftable_iterator it = { 0 };
 	struct reftable_block_source source = { 0 };
-	struct reftable_reader *reader;
+	struct reftable_table *table;
 	int err = 0;
 	int j = 0;
 
@@ -375,10 +375,10 @@ static void t_table_read_write_sequential(void)
 
 	block_source_from_buf(&source, &buf);
 
-	err = reftable_reader_new(&reader, &source, "file.ref");
+	err = reftable_table_new(&table, &source, "file.ref");
 	check(!err);
 
-	err = reftable_reader_init_ref_iterator(reader, &it);
+	err = reftable_table_init_ref_iterator(table, &it);
 	check(!err);
 	err = reftable_iterator_seek_ref(&it, "");
 	check(!err);
@@ -396,7 +396,7 @@ static void t_table_read_write_sequential(void)
 	check_int(j, ==, N);
 
 	reftable_iterator_destroy(&it);
-	reftable_reader_decref(reader);
+	reftable_table_decref(table);
 	reftable_buf_release(&buf);
 	free_names(names);
 }
@@ -417,7 +417,7 @@ static void t_table_read_api(void)
 	char **names;
 	struct reftable_buf buf = REFTABLE_BUF_INIT;
 	int N = 50;
-	struct reftable_reader *reader;
+	struct reftable_table *table;
 	struct reftable_block_source source = { 0 };
 	int err;
 	struct reftable_log_record log = { 0 };
@@ -427,10 +427,10 @@ static void t_table_read_api(void)
 
 	block_source_from_buf(&source, &buf);
 
-	err = reftable_reader_new(&reader, &source, "file.ref");
+	err = reftable_table_new(&table, &source, "file.ref");
 	check(!err);
 
-	err = reftable_reader_init_ref_iterator(reader, &it);
+	err = reftable_table_init_ref_iterator(table, &it);
 	check(!err);
 	err = reftable_iterator_seek_ref(&it, names[0]);
 	check(!err);
@@ -441,7 +441,7 @@ static void t_table_read_api(void)
 	reftable_buf_release(&buf);
 	free_names(names);
 	reftable_iterator_destroy(&it);
-	reftable_reader_decref(reader);
+	reftable_table_decref(table);
 	reftable_buf_release(&buf);
 }
 
@@ -450,7 +450,7 @@ static void t_table_read_write_seek(int index, enum reftable_hash hash_id)
 	char **names;
 	struct reftable_buf buf = REFTABLE_BUF_INIT;
 	int N = 50;
-	struct reftable_reader *reader;
+	struct reftable_table *table;
 	struct reftable_block_source source = { 0 };
 	int err;
 	int i = 0;
@@ -463,18 +463,18 @@ static void t_table_read_write_seek(int index, enum reftable_hash hash_id)
 
 	block_source_from_buf(&source, &buf);
 
-	err = reftable_reader_new(&reader, &source, "file.ref");
+	err = reftable_table_new(&table, &source, "file.ref");
 	check(!err);
-	check_int(hash_id, ==, reftable_reader_hash_id(reader));
+	check_int(hash_id, ==, reftable_table_hash_id(table));
 
 	if (!index) {
-		reader->ref_offsets.index_offset = 0;
+		table->ref_offsets.index_offset = 0;
 	} else {
-		check_int(reader->ref_offsets.index_offset, >, 0);
+		check_int(table->ref_offsets.index_offset, >, 0);
 	}
 
 	for (i = 1; i < N; i++) {
-		err = reftable_reader_init_ref_iterator(reader, &it);
+		err = reftable_table_init_ref_iterator(table, &it);
 		check(!err);
 		err = reftable_iterator_seek_ref(&it, names[i]);
 		check(!err);
@@ -491,7 +491,7 @@ static void t_table_read_write_seek(int index, enum reftable_hash hash_id)
 	check(!reftable_buf_addstr(&pastLast, names[N - 1]));
 	check(!reftable_buf_addstr(&pastLast, "/"));
 
-	err = reftable_reader_init_ref_iterator(reader, &it);
+	err = reftable_table_init_ref_iterator(table, &it);
 	check(!err);
 	err = reftable_iterator_seek_ref(&it, pastLast.buf);
 	if (err == 0) {
@@ -507,7 +507,7 @@ static void t_table_read_write_seek(int index, enum reftable_hash hash_id)
 
 	reftable_buf_release(&buf);
 	free_names(names);
-	reftable_reader_decref(reader);
+	reftable_table_decref(table);
 }
 
 static void t_table_read_write_seek_linear(void)
@@ -535,7 +535,7 @@ static void t_table_refs_for(int indexed)
 		.block_size = 256,
 	};
 	struct reftable_ref_record ref = { 0 };
-	struct reftable_reader *reader;
+	struct reftable_table *table;
 	struct reftable_block_source source = { 0 };
 	struct reftable_buf buf = REFTABLE_BUF_INIT;
 	struct reftable_writer *w = t_reftable_strbuf_writer(&buf, &opts);
@@ -585,18 +585,18 @@ static void t_table_refs_for(int indexed)
 
 	block_source_from_buf(&source, &buf);
 
-	err = reftable_reader_new(&reader, &source, "file.ref");
+	err = reftable_table_new(&table, &source, "file.ref");
 	check(!err);
 	if (!indexed)
-		reader->obj_offsets.is_present = 0;
+		table->obj_offsets.is_present = 0;
 
-	err = reftable_reader_init_ref_iterator(reader, &it);
+	err = reftable_table_init_ref_iterator(table, &it);
 	check(!err);
 	err = reftable_iterator_seek_ref(&it, "");
 	check(!err);
 	reftable_iterator_destroy(&it);
 
-	err = reftable_reader_refs_for(reader, &it, want_hash);
+	err = reftable_table_refs_for(table, &it, want_hash);
 	check(!err);
 
 	for (j = 0; ; j++) {
@@ -613,7 +613,7 @@ static void t_table_refs_for(int indexed)
 	reftable_buf_release(&buf);
 	free_names(want_names);
 	reftable_iterator_destroy(&it);
-	reftable_reader_decref(reader);
+	reftable_table_decref(table);
 }
 
 static void t_table_refs_for_no_index(void)
@@ -632,7 +632,7 @@ static void t_write_empty_table(void)
 	struct reftable_buf buf = REFTABLE_BUF_INIT;
 	struct reftable_writer *w = t_reftable_strbuf_writer(&buf, &opts);
 	struct reftable_block_source source = { 0 };
-	struct reftable_reader *rd = NULL;
+	struct reftable_table *table = NULL;
 	struct reftable_ref_record rec = { 0 };
 	struct reftable_iterator it = { 0 };
 	int err;
@@ -647,10 +647,10 @@ static void t_write_empty_table(void)
 
 	block_source_from_buf(&source, &buf);
 
-	err = reftable_reader_new(&rd, &source, "filename");
+	err = reftable_table_new(&table, &source, "filename");
 	check(!err);
 
-	err = reftable_reader_init_ref_iterator(rd, &it);
+	err = reftable_table_init_ref_iterator(table, &it);
 	check(!err);
 	err = reftable_iterator_seek_ref(&it, "");
 	check(!err);
@@ -659,7 +659,7 @@ static void t_write_empty_table(void)
 	check_int(err, >, 0);
 
 	reftable_iterator_destroy(&it);
-	reftable_reader_decref(rd);
+	reftable_table_decref(table);
 	reftable_buf_release(&buf);
 }
 
@@ -803,7 +803,7 @@ static void t_write_multiple_indices(void)
 	struct reftable_iterator it = { 0 };
 	const struct reftable_stats *stats;
 	struct reftable_writer *writer;
-	struct reftable_reader *reader;
+	struct reftable_table *table;
 	char buf[128];
 	int err, i;
 
@@ -852,21 +852,21 @@ static void t_write_multiple_indices(void)
 	check_int(stats->log_stats.index_offset, >, 0);
 
 	block_source_from_buf(&source, &writer_buf);
-	err = reftable_reader_new(&reader, &source, "filename");
+	err = reftable_table_new(&table, &source, "filename");
 	check(!err);
 
 	/*
 	 * Seeking the log uses the log index now. In case there is any
 	 * confusion regarding indices we would notice here.
 	 */
-	err = reftable_reader_init_log_iterator(reader, &it);
+	err = reftable_table_init_log_iterator(table, &it);
 	check(!err);
 	err = reftable_iterator_seek_log(&it, "");
 	check(!err);
 
 	reftable_iterator_destroy(&it);
 	reftable_writer_free(writer);
-	reftable_reader_decref(reader);
+	reftable_table_decref(table);
 	reftable_buf_release(&writer_buf);
 }
 
@@ -880,7 +880,7 @@ static void t_write_multi_level_index(void)
 	struct reftable_iterator it = { 0 };
 	const struct reftable_stats *stats;
 	struct reftable_writer *writer;
-	struct reftable_reader *reader;
+	struct reftable_table *table;
 	int err;
 
 	writer = t_reftable_strbuf_writer(&writer_buf, &opts);
@@ -909,20 +909,20 @@ static void t_write_multi_level_index(void)
 	check_int(stats->ref_stats.max_index_level, ==, 2);
 
 	block_source_from_buf(&source, &writer_buf);
-	err = reftable_reader_new(&reader, &source, "filename");
+	err = reftable_table_new(&table, &source, "filename");
 	check(!err);
 
 	/*
 	 * Seeking the last ref should work as expected.
 	 */
-	err = reftable_reader_init_ref_iterator(reader, &it);
+	err = reftable_table_init_ref_iterator(table, &it);
 	check(!err);
 	err = reftable_iterator_seek_ref(&it, "refs/heads/199");
 	check(!err);
 
 	reftable_iterator_destroy(&it);
 	reftable_writer_free(writer);
-	reftable_reader_decref(reader);
+	reftable_table_decref(table);
 	reftable_buf_release(&writer_buf);
 	reftable_buf_release(&buf);
 }
@@ -931,11 +931,11 @@ static void t_corrupt_table_empty(void)
 {
 	struct reftable_buf buf = REFTABLE_BUF_INIT;
 	struct reftable_block_source source = { 0 };
-	struct reftable_reader *reader;
+	struct reftable_table *table;
 	int err;
 
 	block_source_from_buf(&source, &buf);
-	err = reftable_reader_new(&reader, &source, "file.log");
+	err = reftable_table_new(&table, &source, "file.log");
 	check_int(err, ==, REFTABLE_FORMAT_ERROR);
 }
 
@@ -944,12 +944,12 @@ static void t_corrupt_table(void)
 	uint8_t zeros[1024] = { 0 };
 	struct reftable_buf buf = REFTABLE_BUF_INIT;
 	struct reftable_block_source source = { 0 };
-	struct reftable_reader *reader;
+	struct reftable_table *table;
 	int err;
 	check(!reftable_buf_add(&buf, zeros, sizeof(zeros)));
 
 	block_source_from_buf(&source, &buf);
-	err = reftable_reader_new(&reader, &source, "file.log");
+	err = reftable_table_new(&table, &source, "file.log");
 	check_int(err, ==, REFTABLE_FORMAT_ERROR);
 
 	reftable_buf_release(&buf);
diff --git a/t/unit-tests/t-reftable-record.c b/t/unit-tests/t-reftable-record.c
index 5954966..553a007 100644
--- a/t/unit-tests/t-reftable-record.c
+++ b/t/unit-tests/t-reftable-record.c
@@ -84,17 +84,17 @@ static void t_reftable_ref_record_comparison(void)
 {
 	struct reftable_record in[3] = {
 		{
-			.type = BLOCK_TYPE_REF,
+			.type = REFTABLE_BLOCK_TYPE_REF,
 			.u.ref.refname = (char *) "refs/heads/master",
 			.u.ref.value_type = REFTABLE_REF_VAL1,
 		},
 		{
-			.type = BLOCK_TYPE_REF,
+			.type = REFTABLE_BLOCK_TYPE_REF,
 			.u.ref.refname = (char *) "refs/heads/master",
 			.u.ref.value_type = REFTABLE_REF_DELETION,
 		},
 		{
-			.type = BLOCK_TYPE_REF,
+			.type = REFTABLE_BLOCK_TYPE_REF,
 			.u.ref.refname = (char *) "HEAD",
 			.u.ref.value_type = REFTABLE_REF_SYMREF,
 			.u.ref.value.symref = (char *) "refs/heads/master",
@@ -141,10 +141,10 @@ static void t_reftable_ref_record_roundtrip(void)
 
 	for (int i = REFTABLE_REF_DELETION; i < REFTABLE_NR_REF_VALUETYPES; i++) {
 		struct reftable_record in = {
-			.type = BLOCK_TYPE_REF,
+			.type = REFTABLE_BLOCK_TYPE_REF,
 			.u.ref.value_type = i,
 		};
-		struct reftable_record out = { .type = BLOCK_TYPE_REF };
+		struct reftable_record out = { .type = REFTABLE_BLOCK_TYPE_REF };
 		struct reftable_buf key = REFTABLE_BUF_INIT;
 		uint8_t buffer[1024] = { 0 };
 		struct string_view dest = {
@@ -198,17 +198,17 @@ static void t_reftable_log_record_comparison(void)
 {
 	struct reftable_record in[3] = {
 		{
-			.type = BLOCK_TYPE_LOG,
+			.type = REFTABLE_BLOCK_TYPE_LOG,
 			.u.log.refname = (char *) "refs/heads/master",
 			.u.log.update_index = 42,
 		},
 		{
-			.type = BLOCK_TYPE_LOG,
+			.type = REFTABLE_BLOCK_TYPE_LOG,
 			.u.log.refname = (char *) "refs/heads/master",
 			.u.log.update_index = 22,
 		},
 		{
-			.type = BLOCK_TYPE_LOG,
+			.type = REFTABLE_BLOCK_TYPE_LOG,
 			.u.log.refname = (char *) "refs/heads/main",
 			.u.log.update_index = 22,
 		},
@@ -297,7 +297,7 @@ static void t_reftable_log_record_roundtrip(void)
 	check(!reftable_log_record_is_deletion(&in[2]));
 
 	for (size_t i = 0; i < ARRAY_SIZE(in); i++) {
-		struct reftable_record rec = { .type = BLOCK_TYPE_LOG };
+		struct reftable_record rec = { .type = REFTABLE_BLOCK_TYPE_LOG };
 		struct reftable_buf key = REFTABLE_BUF_INIT;
 		uint8_t buffer[1024] = { 0 };
 		struct string_view dest = {
@@ -306,7 +306,7 @@ static void t_reftable_log_record_roundtrip(void)
 		};
 		/* populate out, to check for leaks. */
 		struct reftable_record out = {
-			.type = BLOCK_TYPE_LOG,
+			.type = REFTABLE_BLOCK_TYPE_LOG,
 			.u.log = {
 				.refname = xstrdup("old name"),
 				.value_type = REFTABLE_LOG_UPDATE,
@@ -384,21 +384,21 @@ static void t_reftable_obj_record_comparison(void)
 	uint64_t offsets[] = { 0, 16, 32, 48, 64, 80, 96, 112};
 	struct reftable_record in[3] = {
 		{
-			.type = BLOCK_TYPE_OBJ,
+			.type = REFTABLE_BLOCK_TYPE_OBJ,
 			.u.obj.hash_prefix = id_bytes,
 			.u.obj.hash_prefix_len = 7,
 			.u.obj.offsets = offsets,
 			.u.obj.offset_len = 8,
 		},
 		{
-			.type = BLOCK_TYPE_OBJ,
+			.type = REFTABLE_BLOCK_TYPE_OBJ,
 			.u.obj.hash_prefix = id_bytes,
 			.u.obj.hash_prefix_len = 7,
 			.u.obj.offsets = offsets,
 			.u.obj.offset_len = 5,
 		},
 		{
-			.type = BLOCK_TYPE_OBJ,
+			.type = REFTABLE_BLOCK_TYPE_OBJ,
 			.u.obj.hash_prefix = id_bytes,
 			.u.obj.hash_prefix_len = 5,
 		},
@@ -450,13 +450,13 @@ static void t_reftable_obj_record_roundtrip(void)
 			.len = sizeof(buffer),
 		};
 		struct reftable_record in = {
-			.type = BLOCK_TYPE_OBJ,
+			.type = REFTABLE_BLOCK_TYPE_OBJ,
 			.u = {
 				.obj = recs[i],
 			},
 		};
 		struct reftable_buf key = REFTABLE_BUF_INIT;
-		struct reftable_record out = { .type = BLOCK_TYPE_OBJ };
+		struct reftable_record out = { .type = REFTABLE_BLOCK_TYPE_OBJ };
 		int n, m;
 		uint8_t extra;
 
@@ -482,17 +482,17 @@ static void t_reftable_index_record_comparison(void)
 {
 	struct reftable_record in[3] = {
 		{
-			.type = BLOCK_TYPE_INDEX,
+			.type = REFTABLE_BLOCK_TYPE_INDEX,
 			.u.idx.offset = 22,
 			.u.idx.last_key = REFTABLE_BUF_INIT,
 		},
 		{
-			.type = BLOCK_TYPE_INDEX,
+			.type = REFTABLE_BLOCK_TYPE_INDEX,
 			.u.idx.offset = 32,
 			.u.idx.last_key = REFTABLE_BUF_INIT,
 		},
 		{
-			.type = BLOCK_TYPE_INDEX,
+			.type = REFTABLE_BLOCK_TYPE_INDEX,
 			.u.idx.offset = 32,
 			.u.idx.last_key = REFTABLE_BUF_INIT,
 		},
@@ -523,7 +523,7 @@ static void t_reftable_index_record_comparison(void)
 static void t_reftable_index_record_roundtrip(void)
 {
 	struct reftable_record in = {
-		.type = BLOCK_TYPE_INDEX,
+		.type = REFTABLE_BLOCK_TYPE_INDEX,
 		.u.idx = {
 			.offset = 42,
 			.last_key = REFTABLE_BUF_INIT,
@@ -537,7 +537,7 @@ static void t_reftable_index_record_roundtrip(void)
 	struct reftable_buf scratch = REFTABLE_BUF_INIT;
 	struct reftable_buf key = REFTABLE_BUF_INIT;
 	struct reftable_record out = {
-		.type = BLOCK_TYPE_INDEX,
+		.type = REFTABLE_BLOCK_TYPE_INDEX,
 		.u.idx = { .last_key = REFTABLE_BUF_INIT },
 	};
 	int n, m;
diff --git a/t/unit-tests/t-reftable-stack.c b/t/unit-tests/t-reftable-stack.c
index c3f0059..2f49c97 100644
--- a/t/unit-tests/t-reftable-stack.c
+++ b/t/unit-tests/t-reftable-stack.c
@@ -12,9 +12,9 @@ license that can be found in the LICENSE file or at
 #include "lib-reftable.h"
 #include "dir.h"
 #include "reftable/merged.h"
-#include "reftable/reader.h"
 #include "reftable/reftable-error.h"
 #include "reftable/stack.h"
+#include "reftable/table.h"
 #include "strbuf.h"
 #include "tempfile.h"
 #include <dirent.h>
@@ -176,7 +176,7 @@ static void t_reftable_stack_add_one(void)
 	err = reftable_stack_read_ref(st, ref.refname, &dest);
 	check(!err);
 	check(reftable_ref_record_equal(&ref, &dest, REFTABLE_HASH_SIZE_SHA1));
-	check_int(st->readers_len, >, 0);
+	check_int(st->tables_len, >, 0);
 
 #ifndef GIT_WINDOWS_NATIVE
 	check(!reftable_buf_addstr(&scratch, dir));
@@ -189,7 +189,7 @@ static void t_reftable_stack_add_one(void)
 	check(!reftable_buf_addstr(&scratch, dir));
 	check(!reftable_buf_addstr(&scratch, "/"));
 	/* do not try at home; not an external API for reftable. */
-	check(!reftable_buf_addstr(&scratch, st->readers[0]->name));
+	check(!reftable_buf_addstr(&scratch, st->tables[0]->name));
 	err = stat(scratch.buf, &stat_result);
 	check(!err);
 	check_int((stat_result.st_mode & 0777), ==, opts.default_permissions);
@@ -402,9 +402,9 @@ static void t_reftable_stack_transaction_api_performs_auto_compaction(void)
 		 * all tables in the stack.
 		 */
 		if (i != n)
-			check_int(st->merged->readers_len, ==, i + 1);
+			check_int(st->merged->tables_len, ==, i + 1);
 		else
-			check_int(st->merged->readers_len, ==, 1);
+			check_int(st->merged->tables_len, ==, 1);
 	}
 
 	reftable_stack_destroy(st);
@@ -430,7 +430,7 @@ static void t_reftable_stack_auto_compaction_fails_gracefully(void)
 
 	err = reftable_stack_add(st, write_test_ref, &ref);
 	check(!err);
-	check_int(st->merged->readers_len, ==, 1);
+	check_int(st->merged->tables_len, ==, 1);
 	check_int(st->stats.attempts, ==, 0);
 	check_int(st->stats.failures, ==, 0);
 
@@ -441,14 +441,14 @@ static void t_reftable_stack_auto_compaction_fails_gracefully(void)
 	 */
 	check(!reftable_buf_addstr(&table_path, dir));
 	check(!reftable_buf_addstr(&table_path, "/"));
-	check(!reftable_buf_addstr(&table_path, st->readers[0]->name));
+	check(!reftable_buf_addstr(&table_path, st->tables[0]->name));
 	check(!reftable_buf_addstr(&table_path, ".lock"));
 	write_file_buf(table_path.buf, "", 0);
 
 	ref.update_index = 2;
 	err = reftable_stack_add(st, write_test_ref, &ref);
 	check(!err);
-	check_int(st->merged->readers_len, ==, 2);
+	check_int(st->merged->tables_len, ==, 2);
 	check_int(st->stats.attempts, ==, 1);
 	check_int(st->stats.failures, ==, 1);
 
@@ -592,7 +592,7 @@ static void t_reftable_stack_add(void)
 	check(!reftable_buf_addstr(&path, dir));
 	check(!reftable_buf_addstr(&path, "/"));
 	/* do not try at home; not an external API for reftable. */
-	check(!reftable_buf_addstr(&path, st->readers[0]->name));
+	check(!reftable_buf_addstr(&path, st->tables[0]->name));
 	err = stat(path.buf, &stat_result);
 	check(!err);
 	check_int((stat_result.st_mode & 0777), ==, opts.default_permissions);
@@ -1026,7 +1026,7 @@ static void t_reftable_stack_auto_compaction(void)
 
 		err = reftable_stack_auto_compact(st);
 		check(!err);
-		check(i < 2 || st->merged->readers_len < 2 * fastlogN(i, 2));
+		check(i < 2 || st->merged->tables_len < 2 * fastlogN(i, 2));
 	}
 
 	check_int(reftable_stack_compaction_stats(st)->entries_written, <,
@@ -1061,7 +1061,7 @@ static void t_reftable_stack_auto_compaction_factor(void)
 		err = reftable_stack_add(st, &write_test_ref, &ref);
 		check(!err);
 
-		check(i < 5 || st->merged->readers_len < 5 * fastlogN(i, 5));
+		check(i < 5 || st->merged->tables_len < 5 * fastlogN(i, 5));
 	}
 
 	reftable_stack_destroy(st);
@@ -1082,7 +1082,7 @@ static void t_reftable_stack_auto_compaction_with_locked_tables(void)
 	check(!err);
 
 	write_n_ref_tables(st, 5);
-	check_int(st->merged->readers_len, ==, 5);
+	check_int(st->merged->tables_len, ==, 5);
 
 	/*
 	 * Given that all tables we have written should be roughly the same
@@ -1091,7 +1091,7 @@ static void t_reftable_stack_auto_compaction_with_locked_tables(void)
 	 */
 	check(!reftable_buf_addstr(&buf, dir));
 	check(!reftable_buf_addstr(&buf, "/"));
-	check(!reftable_buf_addstr(&buf, st->readers[2]->name));
+	check(!reftable_buf_addstr(&buf, st->tables[2]->name));
 	check(!reftable_buf_addstr(&buf, ".lock"));
 	write_file_buf(buf.buf, "", 0);
 
@@ -1104,7 +1104,7 @@ static void t_reftable_stack_auto_compaction_with_locked_tables(void)
 	err = reftable_stack_auto_compact(st);
 	check(!err);
 	check_int(st->stats.failures, ==, 0);
-	check_int(st->merged->readers_len, ==, 4);
+	check_int(st->merged->tables_len, ==, 4);
 
 	reftable_stack_destroy(st);
 	reftable_buf_release(&buf);
@@ -1149,9 +1149,9 @@ static void t_reftable_stack_add_performs_auto_compaction(void)
 		 * all tables in the stack.
 		 */
 		if (i != n)
-			check_int(st->merged->readers_len, ==, i + 1);
+			check_int(st->merged->tables_len, ==, i + 1);
 		else
-			check_int(st->merged->readers_len, ==, 1);
+			check_int(st->merged->tables_len, ==, 1);
 	}
 
 	reftable_stack_destroy(st);
@@ -1172,12 +1172,12 @@ static void t_reftable_stack_compaction_with_locked_tables(void)
 	check(!err);
 
 	write_n_ref_tables(st, 3);
-	check_int(st->merged->readers_len, ==, 3);
+	check_int(st->merged->tables_len, ==, 3);
 
 	/* Lock one of the tables that we're about to compact. */
 	check(!reftable_buf_addstr(&buf, dir));
 	check(!reftable_buf_addstr(&buf, "/"));
-	check(!reftable_buf_addstr(&buf, st->readers[1]->name));
+	check(!reftable_buf_addstr(&buf, st->tables[1]->name));
 	check(!reftable_buf_addstr(&buf, ".lock"));
 	write_file_buf(buf.buf, "", 0);
 
@@ -1188,7 +1188,7 @@ static void t_reftable_stack_compaction_with_locked_tables(void)
 	err = reftable_stack_compact_all(st, NULL);
 	check_int(err, ==, REFTABLE_LOCK_ERROR);
 	check_int(st->stats.failures, ==, 1);
-	check_int(st->merged->readers_len, ==, 3);
+	check_int(st->merged->tables_len, ==, 3);
 
 	reftable_stack_destroy(st);
 	reftable_buf_release(&buf);
@@ -1222,10 +1222,10 @@ static void t_reftable_stack_compaction_concurrent(void)
 static void unclean_stack_close(struct reftable_stack *st)
 {
 	/* break abstraction boundary to simulate unclean shutdown. */
-	for (size_t i = 0; i < st->readers_len; i++)
-		reftable_reader_decref(st->readers[i]);
-	st->readers_len = 0;
-	REFTABLE_FREE_AND_NULL(st->readers);
+	for (size_t i = 0; i < st->tables_len; i++)
+		reftable_table_decref(st->tables[i]);
+	st->tables_len = 0;
+	REFTABLE_FREE_AND_NULL(st->tables);
 }
 
 static void t_reftable_stack_compaction_concurrent_clean(void)
@@ -1275,7 +1275,7 @@ static void t_reftable_stack_read_across_reload(void)
 	err = reftable_new_stack(&st1, dir, &opts);
 	check(!err);
 	write_n_ref_tables(st1, 2);
-	check_int(st1->merged->readers_len, ==, 2);
+	check_int(st1->merged->tables_len, ==, 2);
 	reftable_stack_init_ref_iterator(st1, &it);
 	err = reftable_iterator_seek_ref(&it, "");
 	check(!err);
@@ -1283,10 +1283,10 @@ static void t_reftable_stack_read_across_reload(void)
 	/* Set up a second stack for the same directory and compact it. */
 	err = reftable_new_stack(&st2, dir, &opts);
 	check(!err);
-	check_int(st2->merged->readers_len, ==, 2);
+	check_int(st2->merged->tables_len, ==, 2);
 	err = reftable_stack_compact_all(st2, NULL);
 	check(!err);
-	check_int(st2->merged->readers_len, ==, 1);
+	check_int(st2->merged->tables_len, ==, 1);
 
 	/*
 	 * Verify that we can continue to use the old iterator even after we
@@ -1294,7 +1294,7 @@ static void t_reftable_stack_read_across_reload(void)
 	 */
 	err = reftable_stack_reload(st1);
 	check(!err);
-	check_int(st1->merged->readers_len, ==, 1);
+	check_int(st1->merged->tables_len, ==, 1);
 	err = reftable_iterator_next_ref(&it, &rec);
 	check(!err);
 	check_str(rec.refname, "refs/heads/branch-0000");
@@ -1325,19 +1325,19 @@ static void t_reftable_stack_reload_with_missing_table(void)
 	err = reftable_new_stack(&st, dir, &opts);
 	check(!err);
 	write_n_ref_tables(st, 2);
-	check_int(st->merged->readers_len, ==, 2);
+	check_int(st->merged->tables_len, ==, 2);
 	reftable_stack_init_ref_iterator(st, &it);
 	err = reftable_iterator_seek_ref(&it, "");
 	check(!err);
 
 	/*
 	 * Update the tables.list file with some garbage data, while reusing
-	 * our old readers. This should trigger a partial reload of the stack,
-	 * where we try to reuse our old readers.
+	 * our old tables. This should trigger a partial reload of the stack,
+	 * where we try to reuse our old tables.
 	*/
-	check(!reftable_buf_addstr(&content, st->readers[0]->name));
+	check(!reftable_buf_addstr(&content, st->tables[0]->name));
 	check(!reftable_buf_addstr(&content, "\n"));
-	check(!reftable_buf_addstr(&content, st->readers[1]->name));
+	check(!reftable_buf_addstr(&content, st->tables[1]->name));
 	check(!reftable_buf_addstr(&content, "\n"));
 	check(!reftable_buf_addstr(&content, "garbage\n"));
 	check(!reftable_buf_addstr(&table_path, st->list_file));
@@ -1348,7 +1348,7 @@ static void t_reftable_stack_reload_with_missing_table(void)
 
 	err = reftable_stack_reload(st);
 	check_int(err, ==, -4);
-	check_int(st->merged->readers_len, ==, 2);
+	check_int(st->merged->tables_len, ==, 2);
 
 	/*
 	 * Even though the reload has failed, we should be able to continue
diff --git a/t/unit-tests/t-reftable-table.c b/t/unit-tests/t-reftable-table.c
new file mode 100644
index 0000000..7e1eb53
--- /dev/null
+++ b/t/unit-tests/t-reftable-table.c
@@ -0,0 +1,206 @@
+#include "test-lib.h"
+#include "lib-reftable.h"
+#include "reftable/blocksource.h"
+#include "reftable/constants.h"
+#include "reftable/iter.h"
+#include "reftable/table.h"
+#include "strbuf.h"
+
+static int t_table_seek_once(void)
+{
+	struct reftable_ref_record records[] = {
+		{
+			.refname = (char *) "refs/heads/main",
+			.value_type = REFTABLE_REF_VAL1,
+			.value.val1 = { 42 },
+		},
+	};
+	struct reftable_block_source source = { 0 };
+	struct reftable_ref_record ref = { 0 };
+	struct reftable_iterator it = { 0 };
+	struct reftable_table *table;
+	struct reftable_buf buf = REFTABLE_BUF_INIT;
+	int ret;
+
+	t_reftable_write_to_buf(&buf, records, ARRAY_SIZE(records), NULL, 0, NULL);
+	block_source_from_buf(&source, &buf);
+
+	ret = reftable_table_new(&table, &source, "name");
+	check(!ret);
+
+	reftable_table_init_ref_iterator(table, &it);
+	ret = reftable_iterator_seek_ref(&it, "");
+	check(!ret);
+	ret = reftable_iterator_next_ref(&it, &ref);
+	check(!ret);
+
+	ret = reftable_ref_record_equal(&ref, &records[0], REFTABLE_HASH_SIZE_SHA1);
+	check_int(ret, ==, 1);
+
+	ret = reftable_iterator_next_ref(&it, &ref);
+	check_int(ret, ==, 1);
+
+	reftable_ref_record_release(&ref);
+	reftable_iterator_destroy(&it);
+	reftable_table_decref(table);
+	reftable_buf_release(&buf);
+	return 0;
+}
+
+static int t_table_reseek(void)
+{
+	struct reftable_ref_record records[] = {
+		{
+			.refname = (char *) "refs/heads/main",
+			.value_type = REFTABLE_REF_VAL1,
+			.value.val1 = { 42 },
+		},
+	};
+	struct reftable_block_source source = { 0 };
+	struct reftable_ref_record ref = { 0 };
+	struct reftable_iterator it = { 0 };
+	struct reftable_table *table;
+	struct reftable_buf buf = REFTABLE_BUF_INIT;
+	int ret;
+
+	t_reftable_write_to_buf(&buf, records, ARRAY_SIZE(records), NULL, 0, NULL);
+	block_source_from_buf(&source, &buf);
+
+	ret = reftable_table_new(&table, &source, "name");
+	check(!ret);
+
+	reftable_table_init_ref_iterator(table, &it);
+
+	for (size_t i = 0; i < 5; i++) {
+		ret = reftable_iterator_seek_ref(&it, "");
+		check(!ret);
+		ret = reftable_iterator_next_ref(&it, &ref);
+		check(!ret);
+
+		ret = reftable_ref_record_equal(&ref, &records[0], REFTABLE_HASH_SIZE_SHA1);
+		check_int(ret, ==, 1);
+
+		ret = reftable_iterator_next_ref(&it, &ref);
+		check_int(ret, ==, 1);
+	}
+
+	reftable_ref_record_release(&ref);
+	reftable_iterator_destroy(&it);
+	reftable_table_decref(table);
+	reftable_buf_release(&buf);
+	return 0;
+}
+
+static int t_table_block_iterator(void)
+{
+	struct reftable_block_source source = { 0 };
+	struct reftable_table_iterator it = { 0 };
+	struct reftable_ref_record *records;
+	const struct reftable_block *block;
+	struct reftable_table *table;
+	struct reftable_buf buf = REFTABLE_BUF_INIT;
+	struct {
+		uint8_t block_type;
+		uint16_t header_off;
+		uint16_t restart_count;
+		uint16_t record_count;
+	} expected_blocks[] = {
+		{
+			.block_type = REFTABLE_BLOCK_TYPE_REF,
+			.header_off = 24,
+			.restart_count = 10,
+			.record_count = 158,
+		},
+		{
+			.block_type = REFTABLE_BLOCK_TYPE_REF,
+			.restart_count = 10,
+			.record_count = 159,
+		},
+		{
+			.block_type = REFTABLE_BLOCK_TYPE_REF,
+			.restart_count = 10,
+			.record_count = 159,
+		},
+		{
+			.block_type = REFTABLE_BLOCK_TYPE_REF,
+			.restart_count = 2,
+			.record_count = 24,
+		},
+		{
+			.block_type = REFTABLE_BLOCK_TYPE_INDEX,
+			.restart_count = 1,
+			.record_count = 4,
+		},
+		{
+			.block_type = REFTABLE_BLOCK_TYPE_OBJ,
+			.restart_count = 1,
+			.record_count = 1,
+		},
+	};
+	const size_t nrecords = 500;
+	int ret;
+
+	REFTABLE_CALLOC_ARRAY(records, nrecords);
+	for (size_t i = 0; i < nrecords; i++) {
+		records[i].value_type = REFTABLE_REF_VAL1;
+		records[i].refname = xstrfmt("refs/heads/branch-%03"PRIuMAX,
+					     (uintmax_t) i);
+	}
+
+	t_reftable_write_to_buf(&buf, records, nrecords, NULL, 0, NULL);
+	block_source_from_buf(&source, &buf);
+
+	ret = reftable_table_new(&table, &source, "name");
+	check(!ret);
+
+	ret = reftable_table_iterator_init(&it, table);
+	check(!ret);
+
+	for (size_t i = 0; i < ARRAY_SIZE(expected_blocks); i++) {
+		struct reftable_iterator record_it = { 0 };
+		struct reftable_record record = {
+			.type = expected_blocks[i].block_type,
+		};
+
+		ret = reftable_table_iterator_next(&it, &block);
+		check(!ret);
+
+		check_int(block->block_type, ==, expected_blocks[i].block_type);
+		check_int(block->header_off, ==, expected_blocks[i].header_off);
+		check_int(block->restart_count, ==, expected_blocks[i].restart_count);
+
+		ret = reftable_block_init_iterator(block, &record_it);
+		check(!ret);
+
+		for (size_t j = 0; ; j++) {
+			ret = iterator_next(&record_it, &record);
+			if (ret > 0) {
+				check_int(j, ==, expected_blocks[i].record_count);
+				break;
+			}
+			check(!ret);
+		}
+
+		reftable_iterator_destroy(&record_it);
+		reftable_record_release(&record);
+	}
+
+	ret = reftable_table_iterator_next(&it, &block);
+	check_int(ret, ==, 1);
+
+	for (size_t i = 0; i < nrecords; i++)
+		reftable_free(records[i].refname);
+	reftable_table_iterator_release(&it);
+	reftable_table_decref(table);
+	reftable_buf_release(&buf);
+	reftable_free(records);
+	return 0;
+}
+
+int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
+{
+	TEST(t_table_seek_once(), "table can seek once");
+	TEST(t_table_reseek(), "table can reseek multiple times");
+	TEST(t_table_block_iterator(), "table can iterate through blocks");
+	return test_done();
+}
diff --git a/t/unit-tests/u-oidmap.c b/t/unit-tests/u-oidmap.c
index dc805b7..b23af44 100644
--- a/t/unit-tests/u-oidmap.c
+++ b/t/unit-tests/u-oidmap.c
@@ -35,7 +35,7 @@ void test_oidmap__initialize(void)
 
 void test_oidmap__cleanup(void)
 {
-	oidmap_free(&map, 1);
+	oidmap_clear(&map, 1);
 }
 
 void test_oidmap__replace(void)
diff --git a/thread-utils.c b/thread-utils.c
index 1f89ffa..374890e 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/trace2/tr2_tmr.c b/trace2/tr2_tmr.c
index 51f564b..038181a 100644
--- a/trace2/tr2_tmr.c
+++ b/trace2/tr2_tmr.c
@@ -102,25 +102,11 @@ void tr2_update_final_timers(void)
 		struct tr2_timer *t_final = &final_timer_block.timer[tid];
 		struct tr2_timer *t = &ctx->timer_block.timer[tid];
 
-		if (t->recursion_count) {
-			/*
-			 * The current thread is exiting with
-			 * timer[tid] still running.
-			 *
-			 * Technically, this is a bug, but I'm going
-			 * to ignore it.
-			 *
-			 * I don't think it is worth calling die()
-			 * for.  I don't think it is worth killing the
-			 * process for this bookkeeping error.  We
-			 * might want to call warning(), but I'm going
-			 * to wait on that.
-			 *
-			 * The downside here is that total_ns won't
-			 * include the current open interval (now -
-			 * start_ns).  I can live with that.
-			 */
-		}
+		/*
+		 * `t->recursion_count` could technically be non-zero, which
+		 * would constitute a bug. Reporting the bug would potentially
+		 * cause an infinite recursion, though, so let's ignore it.
+		 */
 
 		if (!t->interval_count)
 			continue; /* this timer was not used by this thread */
diff --git a/transport-helper.c b/transport-helper.c
index 69391ee..0789e5b 100644
--- a/transport-helper.c
+++ b/transport-helper.c
@@ -1437,7 +1437,7 @@ static int udt_do_read(struct unidirectional_transfer *t)
 		transfer_debug("%s EOF (with %i bytes in buffer)",
 			t->src_name, (int)t->bufuse);
 		t->state = SSTATE_FLUSHING;
-	} else if (bytes > 0) {
+	} else {
 		t->bufuse += bytes;
 		transfer_debug("Read %i bytes from %s (buffer now at %i)",
 			(int)bytes, t->src_name, (int)t->bufuse);
diff --git a/tree-walk.h b/tree-walk.h
index aaea689..29a5532 100644
--- a/tree-walk.h
+++ b/tree-walk.h
@@ -176,11 +176,14 @@ struct traverse_info {
 };
 
 /**
- * Find an entry in a tree given a pathname and the sha1 of a tree to
- * search. Returns 0 if the entry is found and -1 otherwise. The third
- * and fourth parameters are set to the entry's sha1 and mode respectively.
+ * Walk trees starting with "tree_oid" to find the entry for "name", and
+ * return the the object name and the mode of the found entry via the
+ * "oid" and "mode" parameters.  Return 0 if the entry is found, and -1
+ * otherwise.
  */
-int get_tree_entry(struct repository *, const struct object_id *, const char *, struct object_id *, unsigned short *);
+int get_tree_entry(struct repository *repo, const struct object_id *tree_oid,
+		   const char *name, struct object_id *oid,
+		   unsigned short *mode);
 
 /**
  * Generate the full pathname of a tree entry based from the root of the
diff --git a/upload-pack.c b/upload-pack.c
index 30e4630..26f29b8 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -509,8 +509,7 @@ static int got_oid(struct upload_pack_data *data,
 {
 	if (get_oid_hex(hex, oid))
 		die("git upload-pack: expected SHA1 object, got '%s'", hex);
-	if (!repo_has_object_file_with_flags(the_repository, oid,
-					     OBJECT_INFO_QUICK | OBJECT_INFO_SKIP_FETCH_OBJECT))
+	if (!has_object(the_repository, oid, 0))
 		return -1;
 	return do_got_oid(data, oid);
 }
@@ -1781,16 +1780,16 @@ static void send_shallow_info(struct upload_pack_data *data)
 	packet_delim(1);
 }
 
-enum fetch_state {
-	FETCH_PROCESS_ARGS = 0,
-	FETCH_SEND_ACKS,
-	FETCH_SEND_PACK,
-	FETCH_DONE,
+enum upload_state {
+	UPLOAD_PROCESS_ARGS = 0,
+	UPLOAD_SEND_ACKS,
+	UPLOAD_SEND_PACK,
+	UPLOAD_DONE,
 };
 
 int upload_pack_v2(struct repository *r, struct packet_reader *request)
 {
-	enum fetch_state state = FETCH_PROCESS_ARGS;
+	enum upload_state state = UPLOAD_PROCESS_ARGS;
 	struct upload_pack_data data;
 
 	clear_object_flags(the_repository, ALL_FLAGS);
@@ -1799,9 +1798,9 @@ int upload_pack_v2(struct repository *r, struct packet_reader *request)
 	data.use_sideband = LARGE_PACKET_MAX;
 	get_upload_pack_config(r, &data);
 
-	while (state != FETCH_DONE) {
+	while (state != UPLOAD_DONE) {
 		switch (state) {
-		case FETCH_PROCESS_ARGS:
+		case UPLOAD_PROCESS_ARGS:
 			process_args(request, &data);
 
 			if (!data.want_obj.nr && !data.wait_for_done) {
@@ -1812,27 +1811,27 @@ int upload_pack_v2(struct repository *r, struct packet_reader *request)
 				 * to just send 'have's without 'want's); guess
 				 * they didn't want anything.
 				 */
-				state = FETCH_DONE;
+				state = UPLOAD_DONE;
 			} else if (data.seen_haves) {
 				/*
 				 * Request had 'have' lines, so lets ACK them.
 				 */
-				state = FETCH_SEND_ACKS;
+				state = UPLOAD_SEND_ACKS;
 			} else {
 				/*
 				 * Request had 'want's but no 'have's so we can
 				 * immediately go to construct and send a pack.
 				 */
-				state = FETCH_SEND_PACK;
+				state = UPLOAD_SEND_PACK;
 			}
 			break;
-		case FETCH_SEND_ACKS:
+		case UPLOAD_SEND_ACKS:
 			if (process_haves_and_send_acks(&data))
-				state = FETCH_SEND_PACK;
+				state = UPLOAD_SEND_PACK;
 			else
-				state = FETCH_DONE;
+				state = UPLOAD_DONE;
 			break;
-		case FETCH_SEND_PACK:
+		case UPLOAD_SEND_PACK:
 			send_wanted_ref_info(&data);
 			send_shallow_info(&data);
 
@@ -1842,9 +1841,9 @@ int upload_pack_v2(struct repository *r, struct packet_reader *request)
 				packet_writer_write(&data.writer, "packfile\n");
 				create_pack_file(&data, NULL);
 			}
-			state = FETCH_DONE;
+			state = UPLOAD_DONE;
 			break;
-		case FETCH_DONE:
+		case UPLOAD_DONE:
 			continue;
 		}
 	}
diff --git a/userdiff.c b/userdiff.c
index da75625..05776cc 100644
--- a/userdiff.c
+++ b/userdiff.c
@@ -59,20 +59,30 @@ PATTERNS("bash",
 	 "("
 	 "("
 	     /* POSIX identifier with mandatory parentheses */
-	     "[a-zA-Z_][a-zA-Z0-9_]*[ \t]*\\([ \t]*\\))"
+	     "([a-zA-Z_][a-zA-Z0-9_]*[ \t]*\\([ \t]*\\))"
 	 "|"
 	     /* Bashism identifier with optional parentheses */
-	     "(function[ \t]+[a-zA-Z_][a-zA-Z0-9_]*(([ \t]*\\([ \t]*\\))|([ \t]+))"
+	     "(function[ \t]+[a-zA-Z_][a-zA-Z0-9_]*(([ \t]*\\([ \t]*\\))|([ \t]+)))"
 	 ")"
-	 /* Optional whitespace */
-	 "[ \t]*"
-	 /* Compound command starting with `{`, `(`, `((` or `[[` */
-	 "(\\{|\\(\\(?|\\[\\[)"
+	 /* Everything after the function header is captured  */
+	 ".*$"
 	 /* End of captured text */
 	 ")",
 	 /* -- */
-	 /* Characters not in the default $IFS value */
-	 "[^ \t]+"),
+	 /* Identifiers: variable and function names */
+	  "[a-zA-Z_][a-zA-Z0-9_]*"
+	 /* Shell variables: $VAR, ${VAR} */
+	  "|\\$[a-zA-Z0-9_]+|\\$\\{"
+	  /*Command list separators and redirection operators  */
+	 "|\\|\\||&&|<<|>>"
+	 /* Operators ending in '=' (comparison + compound assignment) */
+	 "|==|!=|<=|>=|[-+*/%&|^]="
+	 /* Additional parameter expansion operators */
+	 "|:=|:-|:\\+|:\\?|##|%%|\\^\\^|,,"
+	 /* Command-line options (to avoid splitting -option) */
+	 "|[-a-zA-Z0-9_]+"
+	 /* Brackets and grouping symbols */
+	 "|\\(|\\)|\\{|\\}|\\[|\\]"),
 PATTERNS("bibtex",
 	 "(@[a-zA-Z]{1,}[ \t]*\\{{0,1}[ \t]*[^ \t\"@',\\#}{~%]*).*$",
 	 /* -- */
diff --git a/walker.c b/walker.c
index 4fedc19..b470d43 100644
--- a/walker.c
+++ b/walker.c
@@ -150,7 +150,8 @@ static int process(struct walker *walker, struct object *obj)
 		return 0;
 	obj->flags |= SEEN;
 
-	if (repo_has_object_file(the_repository, &obj->oid)) {
+	if (has_object(the_repository, &obj->oid,
+		       HAS_OBJECT_RECHECK_PACKED | HAS_OBJECT_FETCH_PROMISOR)) {
 		/* We already have it, so we should scan it now. */
 		obj->flags |= TO_SCAN;
 	}
diff --git a/wrapper.c b/wrapper.c
index 3c79778..2f00d2a 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -737,7 +737,26 @@ int is_empty_or_missing_file(const char *filename)
 int open_nofollow(const char *path, int flags)
 {
 #ifdef O_NOFOLLOW
-	return open(path, flags | O_NOFOLLOW);
+	int ret = open(path, flags | O_NOFOLLOW);
+	/*
+	 * NetBSD sets errno to EFTYPE when path is a symlink. The only other
+	 * time this errno occurs when O_REGULAR is used. Since we don't use
+	 * it anywhere we can avoid an lstat here. FreeBSD does the same with
+	 * EMLINK.
+	 */
+# ifdef __NetBSD__
+#  define SYMLINK_ERRNO EFTYPE
+# elif defined(__FreeBSD__)
+#  define SYMLINK_ERRNO EMLINK
+# endif
+# if SYMLINK_ERRNO
+	if (ret < 0 && errno == SYMLINK_ERRNO) {
+		errno = ELOOP;
+		return -1;
+	}
+#  undef SYMLINK_ERRNO
+# endif
+	return ret;
 #else
 	struct stat st;
 	if (lstat(path, &st) < 0)
diff --git a/xdiff/xprepare.c b/xdiff/xprepare.c
index c84549f..e1d4017 100644
--- a/xdiff/xprepare.c
+++ b/xdiff/xprepare.c
@@ -368,6 +368,7 @@ static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xd
 	xrecord_t **recs;
 	xdlclass_t *rcrec;
 	char *dis, *dis1, *dis2;
+	int need_min = !!(cf->flags & XDF_NEED_MINIMAL);
 
 	if (!XDL_CALLOC_ARRAY(dis, xdf1->nrec + xdf2->nrec + 2))
 		return -1;
@@ -379,7 +380,7 @@ static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xd
 	for (i = xdf1->dstart, recs = &xdf1->recs[xdf1->dstart]; i <= xdf1->dend; i++, recs++) {
 		rcrec = cf->rcrecs[(*recs)->ha];
 		nm = rcrec ? rcrec->len2 : 0;
-		dis1[i] = (nm == 0) ? 0: (nm >= mlim) ? 2: 1;
+		dis1[i] = (nm == 0) ? 0: (nm >= mlim && !need_min) ? 2: 1;
 	}
 
 	if ((mlim = xdl_bogosqrt(xdf2->nrec)) > XDL_MAX_EQLIMIT)
@@ -387,7 +388,7 @@ static int xdl_cleanup_records(xdlclassifier_t *cf, xdfile_t *xdf1, xdfile_t *xd
 	for (i = xdf2->dstart, recs = &xdf2->recs[xdf2->dstart]; i <= xdf2->dend; i++, recs++) {
 		rcrec = cf->rcrecs[(*recs)->ha];
 		nm = rcrec ? rcrec->len1 : 0;
-		dis2[i] = (nm == 0) ? 0: (nm >= mlim) ? 2: 1;
+		dis2[i] = (nm == 0) ? 0: (nm >= mlim && !need_min) ? 2: 1;
 	}
 
 	for (nreff = 0, i = xdf1->dstart, recs = &xdf1->recs[xdf1->dstart];