Simplification for the codepath to read directories recursively.
By René Scharfe
* rs/dir-strbuf-read-recursive-fix:
dir: simplify fill_directory()
dir: respect string length argument of read_directory_recursive()
* HTTP transport that requires authentication did not work correctly when
multiple connections are used simultaneously.
+ * Minor memory leak during unpack_trees (hence "merge" and "checkout"
+ to check out another branch) has been plugged.
+
* In the older days, the header "Conflicts:" in "cherry-pick" and "merge"
was separated by a blank line from the list of paths that follow for
readability, but when "merge" was rewritten in C, we lost it by
be both revision name and a pathname, even though $name can never be a
path in the context of the command.
+ * The "include.path" facility in the configuration mechanism added in
+ 1.7.10 forgot to interpret "~/path" and "~user/path" as it should.
+
* "git config --rename-section" to rename an existing section into a
bogus one did not check the new name.
* The report from "git fetch" said "new branch" even for a non branch
ref.
+ * The http-backend (the server side of the smart http transfer) used
+ to overwrite GIT_COMMITTER_NAME and GIT_COMMITTER_EMAIL with the
+ value obtained from REMOTE_USER unconditionally, making it
+ impossible for the server side site-specific customization to use
+ different identity sources to affect the names logged. It now uses
+ REMOTE_USER only as a fallback value.
+
+ * "log --graph" was not very friendly with "--stat" option and its
+ output had line breaks at wrong places.
+
* Octopus merge strategy did not reduce heads that are recorded in the
final commit correctly.
+ * "git push" over smart-http lost progress output a few releases ago;
+ this release resurrects it.
+
+ * The error and advice messages given by "git push" when it fails due
+ to non-ff were not very helpful to new users; it has been broken
+ into three cases, and each is given a separate advice message.
+
+ * The insn sheet given by "rebase -i" did not make it clear that the
+ insn lines can be re-ordered to affect the order of the commits in
+ the resulting history.
+
+ * "git repack" used to write out unreachable objects as loose objects
+ when repacking, even if such loose objects will immediately pruned
+ due to its age.
+
+ * A contrib script "rerere-train" did not work out of the box unless
+ user futzed with her $PATH.
+
+ * "git rev-parse --show-prefix" used to emit nothing when run at the
+ top-level of the working tree, but now it gives a blank line.
+
* The i18n of error message "git stash save" was not properly done.
+ * "git submodule" used a sed script that some platforms mishandled.
+
* When using a Perl script on a system where "perl" found on user's
$PATH could be ancient or otherwise broken, we allow builders to
specify the path to a good copy of Perl with $PERL_PATH. The
--- /dev/null
+Git v1.7.10.3 Release Notes
+===========================
+
+Fixes since v1.7.10.2
+---------------------
+
+ * The message file for German translation has been updated a bit.
+
+ * Running "git checkout" on an unborn branch used to corrupt HEAD.
+
+ * When checking out another commit from an already detached state, we
+ used to report all commits that are not reachable from any of the
+ refs as lossage, but some of them might be reachable from the new
+ HEAD, and there is no need to warn about them.
+
+ * Some time ago, "git clone" lost the progress output for its
+ "checkout" phase; when run without any "--quiet" option, it should
+ give progress to the lengthy operation.
+
+ * The directory path used in "git diff --no-index", when it recurses
+ down, was broken with a recent update after v1.7.10.1 release.
+
+ * "log -z --pretty=tformat:..." did not terminate each record with
+ NUL. The fix is not entirely correct when the output also asks for
+ --patch and/or --stat, though.
+
+ * The DWIM behaviour for "log --pretty=format:%gd -g" was somewhat
+ broken and gave undue precedence to configured log.date, causing
+ "git stash list" to show "stash@{time stamp string}".
+
+ * "git status --porcelain" ignored "--branch" option by mistake. The
+ output for "git status --branch -z" was also incorrect and did not
+ terminate the record for the current branch name with NUL as asked.
+
+ * When a submodule repository uses alternate object store mechanism,
+ some commands that were started from the superproject did not
+ notice it and failed with "No such object" errors. The subcommands
+ of "git submodule" command that recursed into the submodule in a
+ separate process were OK; only the ones that cheated and peeked
+ directly into the submodule's repository from the primary process
+ were affected.
+
+Also contains minor fixes and documentation updates.
tracking. Also "branch" learned the "-q"uiet option to squelch
informational message.
+ * Your build platform may support hardlinks but you may prefer not to
+ use them, e.g. when installing to DESTDIR to make a tarball and
+ untarring on a filesystem that has poor support for hardlinks.
+ There is a Makefile option NO_INSTALL_HARDLINKS for you.
+
* The smart-http backend used to always override GIT_COMMITTER_*
variables with REMOTE_USER and REMOTE_ADDR, but these variables are
now preserved when set.
- * "include.path" mechanism of the configuration files learned to
- understand "~/path" and "~user/path".
-
* "git am" learned the "--include" option, which is an opposite of
existing the "--exclude" option.
* The "fmt-merge-msg" command learns to list the primary contributors
involved in the side topic you are merging.
- * The cases "git push" fails due to non-ff can be broken into three
- categories; each case is given a separate advise message.
-
* "git rebase" learned to optionally keep commits that do not
introduce any change in the original history.
* An experimental "version 4" format of the index file has been
introduced to reduce on-disk footprint and I/O overhead.
+ * "git archive" learned to produce its output without reading the
+ blob object it writes out in memory in its entirety.
+
+ * "git index-pack" that runs when fetching or pushing objects to
+ complete the packfile on the receiving end learned to use multiple
+ threads to do its job when available.
+
* The code to compute hash values for lines used by the internal diff
engine was optimized on little-endian machines, using the same
trick the kernel folks came up with.
* "git apply" had some memory leaks plugged.
- * "git repack" used to write out unreachable objects as loose objects
- when repacking, even if such loose objects will immediately pruned
- due to its age.
-
* Setting up a revision traversal with many starting points was
inefficient as these were placed in a date-order priority queue
one-by-one. Now they are collected in the queue unordered first,
and sorted immediately before getting used.
- * "git rev-parse --show-prefix" used to emit nothing when run at the
- top-level of the working tree, but now it gives a blank line.
-
- * Minor memory leak during unpack_trees (hence "merge" and "checkout"
- to check out another branch) has been plugged.
-
* More lower-level commands learned to use the streaming API to read
from the object store without keeping everything in core.
releases are contained in this release (see release notes to them for
details).
- * "git diff --stat" used to fully count a binary file with modified
- execution bits whose contents is unmodified, which was not quite
- right.
-
- * "log -z --pretty=tformat:..." did not terminate each record with
- NUL. The fix is not entirely correct when the output also asks for
- --patch and/or --stat, though.
- (merge fafd382 jk/maint-tformat-with-z later to maint).
+ * When a submodule repository uses alternate object store mechanism,
+ some commands that were started from the superproject did not
+ notice it and failed with "No such object" errors. The subcommands
+ of "git submodule" command that properly recursed into the
+ submodule in a separate process were OK; only the ones that cheated
+ and peeked directly into the submodule's repository from the
+ primary process were affected.
+ (merge 5e73633 hv/submodule-alt-odb later to maint).
- * "git push" over smart-http lost progress output a few releases ago.
- (merge e304aeb jk/maint-push-progress later to maint).
+ * The directory path used in "git diff --no-index", when it recurses
+ down, was broken with a recent update after v1.7.10.1 release.
+ (merge 176a335 bp/diff-no-index-strbuf-fix later to maint).
- * A contrib script "rerere-train" did not work out of the box unless
- user futzed with her $PATH.
- (merge 53876fc jc/rerere-train later to maint).
+ * "git status --porcelain" ignored "--branch" option by mistake. The
+ output for "git status --branch -z" was also incorrect and did not
+ terminate the record for the current branch name with NUL as asked.
+ (merge d4a6bf1 jk/maint-status-porcelain-z-b later to maint).
- * "log --graph" was not very friendly with "--stat" option and its
- output had line breaks at wrong places.
- (merge bafa16e lp/diffstat-with-graph later to maint).
+ * "git diff --stat" used to fully count a binary file with modified
+ execution bits whose contents is unmodified, which was not quite
+ right.
path expansion (see '--path' below). If no type specifier is passed, no
checks or transformations are performed on the value.
-The file-option can be one of '--system', '--global' or '--file'
-which specify where the values will be read from or written to.
-The default is to assume the config file of the current repository,
-.git/config unless defined otherwise with GIT_DIR and GIT_CONFIG
-(see <<FILES>>).
+When reading, the values are read from the system, global and
+repository local configuration files by default, and options
+'--system', '--global', '--local' and '--file <filename>' can be
+used to tell the command to read from only that location (see <<FILES>>).
+
+When writing, the new value is written to the repository local
+configuration file by default, and options '--system', '--global',
+'--file <filename>' can be used to tell the command to write to
+that location (you can say '--local' but that is the default).
This command will fail (with exit code ret) if:
'git config' will search for configuration options:
$GIT_DIR/config::
- Repository specific configuration file. (The filename is
- of course relative to the repository root, not the working
- directory.)
+ Repository specific configuration file.
~/.gitconfig::
User-specific configuration file. Also called "global"
DESCRIPTION
-----------
Look for specified patterns in the tracked files in the work tree, blobs
-registered in the index file, or blobs in given tree objects.
+registered in the index file, or blobs in given tree objects. Patterns
+are lists of one or more search expressions separated by newline
+characters. An empty string as search expression matches all lines.
CONFIGURATION
--strict::
Die, if the pack contains broken objects or links.
+--threads=<n>::
+ Specifies the number of threads to spawn when resolving
+ deltas. This requires that index-pack be compiled with
+ pthreads otherwise this option is ignored with a warning.
+ This is meant to reduce packing time on multiprocessor
+ machines. The required amount of memory for the delta search
+ window is however multiplied by the number of threads.
+ Specifying 0 will cause git to auto-detect the number of CPU's
+ and use maximum 3 threads.
+
Note
----
--git-dir::
Show `$GIT_DIR` if defined. Otherwise show the path to
- the .git directory, relative to the current directory.
+ the .git directory. The path shown, when relative, is
+ relative to the current working directory.
+
If `$GIT_DIR` is not defined and the current directory
is not detected to lie in a git repository or work tree
and the terminating newline (but a space still separates the status
field from the first filename). Third, filenames containing special
characters are not specially formatted; no quoting or
-backslash-escaping is performed. Fourth, there is no branch line.
+backslash-escaping is performed.
CONFIGURATION
-------------
Submodules are composed from a so-called `gitlink` tree entry
in the main repository that refers to a particular commit object
within the inner repository that is completely separate.
-A record in the `.gitmodules` file at the root of the source
-tree assigns a logical name to the submodule and describes
-the default URL the submodule shall be cloned from.
+A record in the `.gitmodules` (see linkgit:gitmodules[5]) file at the
+root of the source tree assigns a logical name to the submodule and
+describes the default URL the submodule shall be cloned from.
The logical name can be used for overriding this URL within your
local repository configuration (see 'submodule init').
checkout the commit specified in the index of the containing repository.
This will make the submodules HEAD be detached unless `--rebase` or
`--merge` is specified or the key `submodule.$name.update` is set to
- `rebase`, `merge` or `none`.
+ `rebase`, `merge` or `none`. `none` can be overriden by specifying
+ `--checkout`.
+
If the submodule is not yet initialized, and you just want to use the
setting as stored in .gitmodules, you can automatically initialize the
+
If `--recursive` is specified, this command will recurse into the
registered submodules, and update any nested submodules within.
-+
-If the configuration key `submodule.$name.update` is set to `none` the
-submodule with name `$name` will not be updated by default. This can be
-overriden by adding `--checkout` to the command.
summary::
Show commit summary between the given commit (defaults to HEAD) and
last fetched commit from the upstream SVN.
'dcommit'::
- Commit each diff from a specified head directly to the SVN
+ Commit each diff from the current branch directly to the SVN
repository, and then rebase or reset (depending on whether or
not there is a diff between SVN and head). This will create
a revision in SVN for each commit in git.
- It is recommended that you run 'git svn' fetch and rebase (not
- pull or merge) your commits against the latest changes in the
- SVN repository.
- An optional revision or branch argument may be specified, and
- causes 'git svn' to do all work on that revision/branch
- instead of HEAD.
- This is advantageous over 'set-tree' (below) because it produces
- cleaner, more linear history.
++
+When an optional git branch name (or a git commit object name)
+is specified as an argument, the subcommand works on the specified
+branch, not on the current branch.
++
+Use of 'dcommit' is preferred to 'set-tree' (below).
+
--no-rebase;;
After committing, do not rebase or reset.
--merge::
-s<strategy>::
--strategy=<strategy>::
+-p::
+--preserve-merges::
These are only used with the 'dcommit' and 'rebase' commands.
+
Passed directly to 'git rebase' when using 'dcommit' if a
REBASE VS. PULL/MERGE
---------------------
-
-Originally, 'git svn' recommended that the 'remotes/git-svn' branch be
-pulled or merged from. This is because the author favored
+Prefer to use 'git svn rebase' or 'git rebase', rather than
+'git pull' or 'git merge' to synchronize unintegrated commits with a 'git svn'
+branch. Doing so will keep the history of unintegrated commits linear with
+respect to the upstream SVN repository and allow the use of the preferred
+'git svn dcommit' subcommand to push unintegrated commits back into SVN.
+
+Originally, 'git svn' recommended that developers pulled or merged from
+the 'git svn' branch. This was because the author favored
`git svn set-tree B` to commit a single head rather than the
-`git svn set-tree A..B` notation to commit multiple commits.
-
-If you use `git svn set-tree A..B` to commit several diffs and you do
-not have the latest remotes/git-svn merged into my-branch, you should
-use `git svn rebase` to update your work branch instead of `git pull` or
-`git merge`. `pull`/`merge` can cause non-linear history to be flattened
-when committing into SVN, which can lead to merge commits reversing
-previous commits in SVN.
+`git svn set-tree A..B` notation to commit multiple commits. Use of
+'git pull' or 'git merge' with `git svn set-tree A..B` will cause non-linear
+history to be flattened when committing into SVN and this can lead to merge
+commits unexpectedly reversing previous commits in SVN.
MERGE TRACKING
--------------
branch of the `git.git` repository.
Documentation for older releases are available here:
-* link:v1.7.10.1/git.html[documentation for release 1.7.10.1]
+* link:v1.7.10.2/git.html[documentation for release 1.7.10.2]
* release notes for
+ link:RelNotes/1.7.10.2.txt[1.7.10.2],
link:RelNotes/1.7.10.1.txt[1.7.10.1],
link:RelNotes/1.7.10.txt[1.7.10].
the commit specified in the superproject. If 'merge', the commit
specified in the superproject will be merged into the current branch
in the submodule.
+ If 'none', the submodule with name `$name` will not be updated
+ by default.
+
This config option is overridden if 'git submodule update' is given
- the '--merge' or '--rebase' options.
+ the '--merge', '--rebase' or '--checkout' options.
submodule.<name>.fetchRecurseSubmodules::
This option can be used to control recursive fetching of this
A simple clone may look like this (with no 'have' lines):
----
- C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d\0multi_ack \
+ C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d multi_ack \
side-band-64k ofs-delta\n
C: 0032want 7d1665144a3a975c05f1f43902ddaf084e784dbe\n
C: 0032want 5a3f6be755bbb7deae50065988cbfa1ffa9ab68a\n
An incremental update (fetch) response might look like this:
----
- C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d\0multi_ack \
+ C: 0054want 74730d410fcb6603ace96f1dc55ea6196122532d multi_ack \
side-band-64k ofs-delta\n
C: 0032want 7d1665144a3a975c05f1f43902ddaf084e784dbe\n
C: 0032want 5a3f6be755bbb7deae50065988cbfa1ffa9ab68a\n
# Define NO_CROSS_DIRECTORY_HARDLINKS if you plan to distribute the installed
# programs as a tar, where bin/ and libexec/ might be on different file systems.
#
+# Define NO_INSTALL_HARDLINKS if you prefer to use either symbolic links or
+# copies to install built-in git commands e.g. git-cat-file.
+#
# Define USE_NED_ALLOCATOR if you want to replace the platforms default
# memory allocators with the nedmalloc allocator written by Niall Douglas.
#
export ASCIIDOC7
endif
+ifdef NO_INSTALL_HARDLINKS
+ export NO_INSTALL_HARDLINKS
+endif
+
### profile feedback build
#
builtin/bundle.o bundle.o transport.o: bundle.h
builtin/bisect--helper.o builtin/rev-list.o bisect.o: bisect.h
builtin/clone.o builtin/fetch-pack.o transport.o: fetch-pack.h
-builtin/grep.o builtin/pack-objects.o transport-helper.o thread-utils.o: thread-utils.h
+builtin/index-pack.o builtin/grep.o builtin/pack-objects.o transport-helper.o thread-utils.o: thread-utils.h
builtin/send-pack.o transport.o: send-pack.h
builtin/log.o builtin/shortlog.o: shortlog.h
builtin/prune.o builtin/reflog.o reachable.o: reachable.h
{ test "$$bindir/" = "$$execdir/" || \
for p in git$X $(filter $(install_bindir_programs),$(ALL_PROGRAMS)); do \
$(RM) "$$execdir/$$p" && \
- test -z "$(NO_CROSS_DIRECTORY_HARDLINKS)" && \
+ test -z "$(NO_INSTALL_HARDLINKS)$(NO_CROSS_DIRECTORY_HARDLINKS)" && \
ln "$$bindir/$$p" "$$execdir/$$p" 2>/dev/null || \
cp "$$bindir/$$p" "$$execdir/$$p" || exit; \
done; \
} && \
for p in $(filter $(install_bindir_programs),$(BUILT_INS)); do \
$(RM) "$$bindir/$$p" && \
+ test -z "$(NO_INSTALL_HARDLINKS)" && \
ln "$$bindir/git$X" "$$bindir/$$p" 2>/dev/null || \
ln -s "git$X" "$$bindir/$$p" 2>/dev/null || \
cp "$$bindir/git$X" "$$bindir/$$p" || exit; \
done && \
for p in $(BUILT_INS); do \
$(RM) "$$execdir/$$p" && \
+ test -z "$(NO_INSTALL_HARDLINKS)" && \
ln "$$execdir/git$X" "$$execdir/$$p" 2>/dev/null || \
ln -s "git$X" "$$execdir/$$p" 2>/dev/null || \
cp "$$execdir/git$X" "$$execdir/$$p" || exit; \
remote_curl_aliases="$(REMOTE_CURL_ALIASES)" && \
for p in $$remote_curl_aliases; do \
$(RM) "$$execdir/$$p" && \
+ test -z "$(NO_INSTALL_HARDLINKS)" && \
ln "$$execdir/git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \
ln -s "git-remote-http$X" "$$execdir/$$p" 2>/dev/null || \
cp "$$execdir/git-remote-http$X" "$$execdir/$$p" || exit; \
#include "cache.h"
#include "tar.h"
#include "archive.h"
+#include "streaming.h"
#include "run-command.h"
#define RECORDSIZE (512)
* queues up writes, so that all our write(2) calls write exactly one
* full block; pads writes to RECORDSIZE
*/
-static void write_blocked(const void *data, unsigned long size)
+static void do_write_blocked(const void *data, unsigned long size)
{
const char *buf = data;
- unsigned long tail;
if (offset) {
unsigned long chunk = BLOCKSIZE - offset;
memcpy(block + offset, buf, size);
offset += size;
}
+}
+
+static void finish_record(void)
+{
+ unsigned long tail;
tail = offset % RECORDSIZE;
if (tail) {
memset(block + offset, 0, RECORDSIZE - tail);
write_if_needed();
}
+static void write_blocked(const void *data, unsigned long size)
+{
+ do_write_blocked(data, size);
+ finish_record();
+}
+
/*
* The end of tar archives is marked by 2*512 nul bytes and after that
* follows the rest of the block (if any).
}
}
+/*
+ * queues up writes, so that all our write(2) calls write exactly one
+ * full block; pads writes to RECORDSIZE
+ */
+static int stream_blocked(const unsigned char *sha1)
+{
+ struct git_istream *st;
+ enum object_type type;
+ unsigned long sz;
+ char buf[BLOCKSIZE];
+ ssize_t readlen;
+
+ st = open_istream(sha1, &type, &sz, NULL);
+ if (!st)
+ return error("cannot stream blob %s", sha1_to_hex(sha1));
+ for (;;) {
+ readlen = read_istream(st, buf, sizeof(buf));
+ if (readlen <= 0)
+ break;
+ do_write_blocked(buf, readlen);
+ }
+ close_istream(st);
+ if (!readlen)
+ finish_record();
+ return readlen;
+}
+
/*
* pax extended header records have the format "%u %s=%s\n". %u contains
* the size of the whole string (including the %u), the first %s is the
static unsigned int ustar_header_chksum(const struct ustar_header *header)
{
- char *p = (char *)header;
+ const char *p = (const char *)header;
unsigned int chksum = 0;
while (p < header->chksum)
chksum += *p++;
chksum += sizeof(header->chksum) * ' ';
p += sizeof(header->chksum);
- while (p < (char *)header + sizeof(struct ustar_header))
+ while (p < (const char *)header + sizeof(struct ustar_header))
chksum += *p++;
return chksum;
}
return i;
}
+static void prepare_header(struct archiver_args *args,
+ struct ustar_header *header,
+ unsigned int mode, unsigned long size)
+{
+ sprintf(header->mode, "%07o", mode & 07777);
+ sprintf(header->size, "%011lo", S_ISREG(mode) ? size : 0);
+ sprintf(header->mtime, "%011lo", (unsigned long) args->time);
+
+ sprintf(header->uid, "%07o", 0);
+ sprintf(header->gid, "%07o", 0);
+ strlcpy(header->uname, "root", sizeof(header->uname));
+ strlcpy(header->gname, "root", sizeof(header->gname));
+ sprintf(header->devmajor, "%07o", 0);
+ sprintf(header->devminor, "%07o", 0);
+
+ memcpy(header->magic, "ustar", 6);
+ memcpy(header->version, "00", 2);
+
+ sprintf(header->chksum, "%07o", ustar_header_chksum(header));
+}
+
+static int write_extended_header(struct archiver_args *args,
+ const unsigned char *sha1,
+ const void *buffer, unsigned long size)
+{
+ struct ustar_header header;
+ unsigned int mode;
+ memset(&header, 0, sizeof(header));
+ *header.typeflag = TYPEFLAG_EXT_HEADER;
+ mode = 0100666;
+ sprintf(header.name, "%s.paxheader", sha1_to_hex(sha1));
+ prepare_header(args, &header, mode, size);
+ write_blocked(&header, sizeof(header));
+ write_blocked(buffer, size);
+ return 0;
+}
+
static int write_tar_entry(struct archiver_args *args,
- const unsigned char *sha1, const char *path, size_t pathlen,
- unsigned int mode, void *buffer, unsigned long size)
+ const unsigned char *sha1,
+ const char *path, size_t pathlen,
+ unsigned int mode)
{
struct ustar_header header;
struct strbuf ext_header = STRBUF_INIT;
+ unsigned int old_mode = mode;
+ unsigned long size;
+ void *buffer;
int err = 0;
memset(&header, 0, sizeof(header));
- if (!sha1) {
- *header.typeflag = TYPEFLAG_GLOBAL_HEADER;
- mode = 0100666;
- strcpy(header.name, "pax_global_header");
- } else if (!path) {
- *header.typeflag = TYPEFLAG_EXT_HEADER;
- mode = 0100666;
- sprintf(header.name, "%s.paxheader", sha1_to_hex(sha1));
+ if (S_ISDIR(mode) || S_ISGITLINK(mode)) {
+ *header.typeflag = TYPEFLAG_DIR;
+ mode = (mode | 0777) & ~tar_umask;
+ } else if (S_ISLNK(mode)) {
+ *header.typeflag = TYPEFLAG_LNK;
+ mode |= 0777;
+ } else if (S_ISREG(mode)) {
+ *header.typeflag = TYPEFLAG_REG;
+ mode = (mode | ((mode & 0100) ? 0777 : 0666)) & ~tar_umask;
} else {
- if (S_ISDIR(mode) || S_ISGITLINK(mode)) {
- *header.typeflag = TYPEFLAG_DIR;
- mode = (mode | 0777) & ~tar_umask;
- } else if (S_ISLNK(mode)) {
- *header.typeflag = TYPEFLAG_LNK;
- mode |= 0777;
- } else if (S_ISREG(mode)) {
- *header.typeflag = TYPEFLAG_REG;
- mode = (mode | ((mode & 0100) ? 0777 : 0666)) & ~tar_umask;
+ return error("unsupported file mode: 0%o (SHA1: %s)",
+ mode, sha1_to_hex(sha1));
+ }
+ if (pathlen > sizeof(header.name)) {
+ size_t plen = get_path_prefix(path, pathlen,
+ sizeof(header.prefix));
+ size_t rest = pathlen - plen - 1;
+ if (plen > 0 && rest <= sizeof(header.name)) {
+ memcpy(header.prefix, path, plen);
+ memcpy(header.name, path + plen + 1, rest);
} else {
- return error("unsupported file mode: 0%o (SHA1: %s)",
- mode, sha1_to_hex(sha1));
+ sprintf(header.name, "%s.data",
+ sha1_to_hex(sha1));
+ strbuf_append_ext_header(&ext_header, "path",
+ path, pathlen);
}
- if (pathlen > sizeof(header.name)) {
- size_t plen = get_path_prefix(path, pathlen,
- sizeof(header.prefix));
- size_t rest = pathlen - plen - 1;
- if (plen > 0 && rest <= sizeof(header.name)) {
- memcpy(header.prefix, path, plen);
- memcpy(header.name, path + plen + 1, rest);
- } else {
- sprintf(header.name, "%s.data",
- sha1_to_hex(sha1));
- strbuf_append_ext_header(&ext_header, "path",
- path, pathlen);
- }
- } else
- memcpy(header.name, path, pathlen);
+ } else
+ memcpy(header.name, path, pathlen);
+
+ if (S_ISREG(mode) && !args->convert &&
+ sha1_object_info(sha1, &size) == OBJ_BLOB &&
+ size > big_file_threshold)
+ buffer = NULL;
+ else if (S_ISLNK(mode) || S_ISREG(mode)) {
+ enum object_type type;
+ buffer = sha1_file_to_archive(args, path, sha1, old_mode, &type, &size);
+ if (!buffer)
+ return error("cannot read %s", sha1_to_hex(sha1));
+ } else {
+ buffer = NULL;
+ size = 0;
}
- if (S_ISLNK(mode) && buffer) {
+ if (S_ISLNK(mode)) {
if (size > sizeof(header.linkname)) {
sprintf(header.linkname, "see %s.paxheader",
sha1_to_hex(sha1));
memcpy(header.linkname, buffer, size);
}
- sprintf(header.mode, "%07o", mode & 07777);
- sprintf(header.size, "%011lo", S_ISREG(mode) ? size : 0);
- sprintf(header.mtime, "%011lo", (unsigned long) args->time);
-
- sprintf(header.uid, "%07o", 0);
- sprintf(header.gid, "%07o", 0);
- strlcpy(header.uname, "root", sizeof(header.uname));
- strlcpy(header.gname, "root", sizeof(header.gname));
- sprintf(header.devmajor, "%07o", 0);
- sprintf(header.devminor, "%07o", 0);
-
- memcpy(header.magic, "ustar", 6);
- memcpy(header.version, "00", 2);
-
- sprintf(header.chksum, "%07o", ustar_header_chksum(&header));
+ prepare_header(args, &header, mode, size);
if (ext_header.len > 0) {
- err = write_tar_entry(args, sha1, NULL, 0, 0, ext_header.buf,
- ext_header.len);
- if (err)
+ err = write_extended_header(args, sha1, ext_header.buf,
+ ext_header.len);
+ if (err) {
+ free(buffer);
return err;
+ }
}
strbuf_release(&ext_header);
write_blocked(&header, sizeof(header));
- if (S_ISREG(mode) && buffer && size > 0)
- write_blocked(buffer, size);
+ if (S_ISREG(mode) && size > 0) {
+ if (buffer)
+ write_blocked(buffer, size);
+ else
+ err = stream_blocked(sha1);
+ }
+ free(buffer);
return err;
}
{
const unsigned char *sha1 = args->commit_sha1;
struct strbuf ext_header = STRBUF_INIT;
- int err;
+ struct ustar_header header;
+ unsigned int mode;
+ int err = 0;
strbuf_append_ext_header(&ext_header, "comment", sha1_to_hex(sha1), 40);
- err = write_tar_entry(args, NULL, NULL, 0, 0, ext_header.buf,
- ext_header.len);
+ memset(&header, 0, sizeof(header));
+ *header.typeflag = TYPEFLAG_GLOBAL_HEADER;
+ mode = 0100666;
+ strcpy(header.name, "pax_global_header");
+ prepare_header(args, &header, mode, ext_header.len);
+ write_blocked(&header, sizeof(header));
+ write_blocked(ext_header.buf, ext_header.len);
strbuf_release(&ext_header);
return err;
}
*/
#include "cache.h"
#include "archive.h"
+#include "streaming.h"
static int zip_date;
static int zip_time;
static unsigned int zip_dir_entries;
#define ZIP_DIRECTORY_MIN_SIZE (1024 * 1024)
+#define ZIP_STREAM (8)
struct zip_local_header {
unsigned char magic[4];
unsigned char _end[1];
};
+struct zip_data_desc {
+ unsigned char magic[4];
+ unsigned char crc32[4];
+ unsigned char compressed_size[4];
+ unsigned char size[4];
+ unsigned char _end[1];
+};
+
struct zip_dir_header {
unsigned char magic[4];
unsigned char creator_version[2];
* we're interested in.
*/
#define ZIP_LOCAL_HEADER_SIZE offsetof(struct zip_local_header, _end)
+#define ZIP_DATA_DESC_SIZE offsetof(struct zip_data_desc, _end)
#define ZIP_DIR_HEADER_SIZE offsetof(struct zip_dir_header, _end)
#define ZIP_DIR_TRAILER_SIZE offsetof(struct zip_dir_trailer, _end)
return buffer;
}
+static void write_zip_data_desc(unsigned long size,
+ unsigned long compressed_size,
+ unsigned long crc)
+{
+ struct zip_data_desc trailer;
+
+ copy_le32(trailer.magic, 0x08074b50);
+ copy_le32(trailer.crc32, crc);
+ copy_le32(trailer.compressed_size, compressed_size);
+ copy_le32(trailer.size, size);
+ write_or_die(1, &trailer, ZIP_DATA_DESC_SIZE);
+}
+
+static void set_zip_dir_data_desc(struct zip_dir_header *header,
+ unsigned long size,
+ unsigned long compressed_size,
+ unsigned long crc)
+{
+ copy_le32(header->crc32, crc);
+ copy_le32(header->compressed_size, compressed_size);
+ copy_le32(header->size, size);
+}
+
+static void set_zip_header_data_desc(struct zip_local_header *header,
+ unsigned long size,
+ unsigned long compressed_size,
+ unsigned long crc)
+{
+ copy_le32(header->crc32, crc);
+ copy_le32(header->compressed_size, compressed_size);
+ copy_le32(header->size, size);
+}
+
+#define STREAM_BUFFER_SIZE (1024 * 16)
+
static int write_zip_entry(struct archiver_args *args,
- const unsigned char *sha1, const char *path, size_t pathlen,
- unsigned int mode, void *buffer, unsigned long size)
+ const unsigned char *sha1,
+ const char *path, size_t pathlen,
+ unsigned int mode)
{
struct zip_local_header header;
struct zip_dir_header dirent;
unsigned long attr2;
unsigned long compressed_size;
- unsigned long uncompressed_size;
unsigned long crc;
unsigned long direntsize;
int method;
unsigned char *out;
void *deflated = NULL;
+ void *buffer;
+ struct git_istream *stream = NULL;
+ unsigned long flags = 0;
+ unsigned long size;
crc = crc32(0, NULL, 0);
method = 0;
attr2 = 16;
out = NULL;
- uncompressed_size = 0;
+ size = 0;
compressed_size = 0;
+ buffer = NULL;
+ size = 0;
} else if (S_ISREG(mode) || S_ISLNK(mode)) {
+ enum object_type type = sha1_object_info(sha1, &size);
+
method = 0;
attr2 = S_ISLNK(mode) ? ((mode | 0777) << 16) :
(mode & 0111) ? ((mode) << 16) : 0;
- if (S_ISREG(mode) && args->compression_level != 0)
+ if (S_ISREG(mode) && args->compression_level != 0 && size > 0)
method = 8;
- crc = crc32(crc, buffer, size);
- out = buffer;
- uncompressed_size = size;
compressed_size = size;
+
+ if (S_ISREG(mode) && type == OBJ_BLOB && !args->convert &&
+ size > big_file_threshold) {
+ stream = open_istream(sha1, &type, &size, NULL);
+ if (!stream)
+ return error("cannot stream blob %s",
+ sha1_to_hex(sha1));
+ flags |= ZIP_STREAM;
+ out = buffer = NULL;
+ } else {
+ buffer = sha1_file_to_archive(args, path, sha1, mode,
+ &type, &size);
+ if (!buffer)
+ return error("cannot read %s",
+ sha1_to_hex(sha1));
+ crc = crc32(crc, buffer, size);
+ out = buffer;
+ }
} else {
return error("unsupported file mode: 0%o (SHA1: %s)", mode,
sha1_to_hex(sha1));
}
- if (method == 8) {
+ if (buffer && method == 8) {
deflated = zlib_deflate(buffer, size, args->compression_level,
&compressed_size);
if (deflated && compressed_size - 6 < size) {
copy_le16(dirent.creator_version,
S_ISLNK(mode) || (S_ISREG(mode) && (mode & 0111)) ? 0x0317 : 0);
copy_le16(dirent.version, 10);
- copy_le16(dirent.flags, 0);
+ copy_le16(dirent.flags, flags);
copy_le16(dirent.compression_method, method);
copy_le16(dirent.mtime, zip_time);
copy_le16(dirent.mdate, zip_date);
- copy_le32(dirent.crc32, crc);
- copy_le32(dirent.compressed_size, compressed_size);
- copy_le32(dirent.size, uncompressed_size);
+ set_zip_dir_data_desc(&dirent, size, compressed_size, crc);
copy_le16(dirent.filename_length, pathlen);
copy_le16(dirent.extra_length, 0);
copy_le16(dirent.comment_length, 0);
copy_le16(dirent.attr1, 0);
copy_le32(dirent.attr2, attr2);
copy_le32(dirent.offset, zip_offset);
- memcpy(zip_dir + zip_dir_offset, &dirent, ZIP_DIR_HEADER_SIZE);
- zip_dir_offset += ZIP_DIR_HEADER_SIZE;
- memcpy(zip_dir + zip_dir_offset, path, pathlen);
- zip_dir_offset += pathlen;
- zip_dir_entries++;
copy_le32(header.magic, 0x04034b50);
copy_le16(header.version, 10);
- copy_le16(header.flags, 0);
+ copy_le16(header.flags, flags);
copy_le16(header.compression_method, method);
copy_le16(header.mtime, zip_time);
copy_le16(header.mdate, zip_date);
- copy_le32(header.crc32, crc);
- copy_le32(header.compressed_size, compressed_size);
- copy_le32(header.size, uncompressed_size);
+ if (flags & ZIP_STREAM)
+ set_zip_header_data_desc(&header, 0, 0, 0);
+ else
+ set_zip_header_data_desc(&header, size, compressed_size, crc);
copy_le16(header.filename_length, pathlen);
copy_le16(header.extra_length, 0);
write_or_die(1, &header, ZIP_LOCAL_HEADER_SIZE);
zip_offset += ZIP_LOCAL_HEADER_SIZE;
write_or_die(1, path, pathlen);
zip_offset += pathlen;
- if (compressed_size > 0) {
+ if (stream && method == 0) {
+ unsigned char buf[STREAM_BUFFER_SIZE];
+ ssize_t readlen;
+
+ for (;;) {
+ readlen = read_istream(stream, buf, sizeof(buf));
+ if (readlen <= 0)
+ break;
+ crc = crc32(crc, buf, readlen);
+ write_or_die(1, buf, readlen);
+ }
+ close_istream(stream);
+ if (readlen)
+ return readlen;
+
+ compressed_size = size;
+ zip_offset += compressed_size;
+
+ write_zip_data_desc(size, compressed_size, crc);
+ zip_offset += ZIP_DATA_DESC_SIZE;
+
+ set_zip_dir_data_desc(&dirent, size, compressed_size, crc);
+ } else if (stream && method == 8) {
+ unsigned char buf[STREAM_BUFFER_SIZE];
+ ssize_t readlen;
+ git_zstream zstream;
+ int result;
+ size_t out_len;
+ unsigned char compressed[STREAM_BUFFER_SIZE * 2];
+
+ memset(&zstream, 0, sizeof(zstream));
+ git_deflate_init(&zstream, args->compression_level);
+
+ compressed_size = 0;
+ zstream.next_out = compressed;
+ zstream.avail_out = sizeof(compressed);
+
+ for (;;) {
+ readlen = read_istream(stream, buf, sizeof(buf));
+ if (readlen <= 0)
+ break;
+ crc = crc32(crc, buf, readlen);
+
+ zstream.next_in = buf;
+ zstream.avail_in = readlen;
+ result = git_deflate(&zstream, 0);
+ if (result != Z_OK)
+ die("deflate error (%d)", result);
+ out = compressed;
+ if (!compressed_size)
+ out += 2;
+ out_len = zstream.next_out - out;
+
+ if (out_len > 0) {
+ write_or_die(1, out, out_len);
+ compressed_size += out_len;
+ zstream.next_out = compressed;
+ zstream.avail_out = sizeof(compressed);
+ }
+
+ }
+ close_istream(stream);
+ if (readlen)
+ return readlen;
+
+ zstream.next_in = buf;
+ zstream.avail_in = 0;
+ result = git_deflate(&zstream, Z_FINISH);
+ if (result != Z_STREAM_END)
+ die("deflate error (%d)", result);
+
+ git_deflate_end(&zstream);
+ out = compressed;
+ if (!compressed_size)
+ out += 2;
+ out_len = zstream.next_out - out - 4;
+ write_or_die(1, out, out_len);
+ compressed_size += out_len;
+ zip_offset += compressed_size;
+
+ write_zip_data_desc(size, compressed_size, crc);
+ zip_offset += ZIP_DATA_DESC_SIZE;
+
+ set_zip_dir_data_desc(&dirent, size, compressed_size, crc);
+ } else if (compressed_size > 0) {
write_or_die(1, out, compressed_size);
zip_offset += compressed_size;
}
free(deflated);
+ free(buffer);
+
+ memcpy(zip_dir + zip_dir_offset, &dirent, ZIP_DIR_HEADER_SIZE);
+ zip_dir_offset += ZIP_DIR_HEADER_SIZE;
+ memcpy(zip_dir + zip_dir_offset, path, pathlen);
+ zip_dir_offset += pathlen;
+ zip_dir_entries++;
return 0;
}
free(to_free);
}
-static void *sha1_file_to_archive(const char *path, const unsigned char *sha1,
- unsigned int mode, enum object_type *type,
- unsigned long *sizep, const struct commit *commit)
+void *sha1_file_to_archive(const struct archiver_args *args,
+ const char *path, const unsigned char *sha1,
+ unsigned int mode, enum object_type *type,
+ unsigned long *sizep)
{
void *buffer;
+ const struct commit *commit = args->convert ? args->commit : NULL;
+ path += args->baselen;
buffer = read_sha1_file(sha1, type, sizep);
if (buffer && S_ISREG(mode)) {
struct strbuf buf = STRBUF_INIT;
write_archive_entry_fn_t write_entry = c->write_entry;
struct git_attr_check check[2];
const char *path_without_prefix;
- int convert = 0;
int err;
- enum object_type type;
- unsigned long size;
- void *buffer;
+ args->convert = 0;
strbuf_reset(&path);
strbuf_grow(&path, PATH_MAX);
strbuf_add(&path, args->base, args->baselen);
if (!git_check_attr(path_without_prefix, ARRAY_SIZE(check), check)) {
if (ATTR_TRUE(check[0].value))
return 0;
- convert = ATTR_TRUE(check[1].value);
+ args->convert = ATTR_TRUE(check[1].value);
}
if (S_ISDIR(mode) || S_ISGITLINK(mode)) {
strbuf_addch(&path, '/');
if (args->verbose)
fprintf(stderr, "%.*s\n", (int)path.len, path.buf);
- err = write_entry(args, sha1, path.buf, path.len, mode, NULL, 0);
+ err = write_entry(args, sha1, path.buf, path.len, mode);
if (err)
return err;
return (S_ISDIR(mode) ? READ_TREE_RECURSIVE : 0);
}
- buffer = sha1_file_to_archive(path_without_prefix, sha1, mode,
- &type, &size, convert ? args->commit : NULL);
- if (!buffer)
- return error("cannot read %s", sha1_to_hex(sha1));
if (args->verbose)
fprintf(stderr, "%.*s\n", (int)path.len, path.buf);
- err = write_entry(args, sha1, path.buf, path.len, mode, buffer, size);
- free(buffer);
- return err;
+ return write_entry(args, sha1, path.buf, path.len, mode);
}
int write_archive_entries(struct archiver_args *args,
if (args->verbose)
fprintf(stderr, "%.*s\n", (int)len, args->base);
err = write_entry(args, args->tree->object.sha1, args->base,
- len, 040777, NULL, 0);
+ len, 040777);
if (err)
return err;
}
/* Remotes are only allowed to fetch actual refs */
if (remote) {
char *ref = NULL;
- const char *refname, *colon = NULL;
-
- colon = strchr(name, ':');
- if (colon)
- refname = xstrndup(name, colon - name);
- else
- refname = name;
-
- if (!dwim_ref(refname, strlen(refname), sha1, &ref))
- die("no such ref: %s", refname);
- if (refname != name)
- free((void *)refname);
+ const char *colon = strchr(name, ':');
+ int refnamelen = colon ? colon - name : strlen(name);
+
+ if (!dwim_ref(name, refnamelen, sha1, &ref))
+ die("no such ref: %.*s", refnamelen, name);
free(ref);
}
const char **pathspec;
unsigned int verbose : 1;
unsigned int worktree_attributes : 1;
+ unsigned int convert : 1;
int compression_level;
};
extern void init_tar_archiver(void);
extern void init_zip_archiver(void);
-typedef int (*write_archive_entry_fn_t)(struct archiver_args *args, const unsigned char *sha1, const char *path, size_t pathlen, unsigned int mode, void *buffer, unsigned long size);
+typedef int (*write_archive_entry_fn_t)(struct archiver_args *args,
+ const unsigned char *sha1,
+ const char *path, size_t pathlen,
+ unsigned int mode);
extern int write_archive_entries(struct archiver_args *args, write_archive_entry_fn_t write_entry);
extern int write_archive(int argc, const char **argv, const char *prefix, int setup_prefix, const char *name_hint, int remote);
const char *archive_format_from_filename(const char *filename);
+extern void *sha1_file_to_archive(const struct archiver_args *args,
+ const char *path, const unsigned char *sha1,
+ unsigned int mode, enum object_type *type,
+ unsigned long *sizep);
#endif /* ARCHIVE_H */
*/
static void check_good_are_ancestors_of_bad(const char *prefix, int no_checkout)
{
- const char *filename = git_path("BISECT_ANCESTORS_OK");
+ char *filename = xstrdup(git_path("BISECT_ANCESTORS_OK"));
struct stat st;
int fd;
/* Check if file BISECT_ANCESTORS_OK exists. */
if (!stat(filename, &st) && S_ISREG(st.st_mode))
- return;
+ goto done;
/* Bisecting with no good rev is ok. */
if (good_revs.nr == 0)
- return;
+ goto done;
/* Check if all good revs are ancestor of the bad rev. */
if (check_ancestors(prefix))
filename, strerror(errno));
else
close(fd);
+ done:
+ free(filename);
}
/*
static int line_termination = '\n';
static unsigned int p_context = UINT_MAX;
static const char * const apply_usage[] = {
- "git apply [options] [<patch>...]",
+ N_("git apply [options] [<patch>...]"),
NULL
};
* their names against any previous information, just
* to make sure..
*/
-static char *gitdiff_verify_name(const char *line, int isnull, char *orig_name, const char *oldnew)
+#define DIFF_OLD_NAME 0
+#define DIFF_NEW_NAME 1
+
+static char *gitdiff_verify_name(const char *line, int isnull, char *orig_name, int side)
{
if (!orig_name && !isnull)
return find_name(line, NULL, p_value, TERM_TAB);
die(_("git apply: bad git-diff - expected /dev/null, got %s on line %d"), name, linenr);
another = find_name(line, NULL, p_value, TERM_TAB);
if (!another || memcmp(another, name, len + 1))
- die(_("git apply: bad git-diff - inconsistent %s filename on line %d"), oldnew, linenr);
+ die((side == DIFF_NEW_NAME) ?
+ _("git apply: bad git-diff - inconsistent new filename on line %d") :
+ _("git apply: bad git-diff - inconsistent old filename on line %d"), linenr);
free(another);
return orig_name;
}
static int gitdiff_oldname(const char *line, struct patch *patch)
{
char *orig = patch->old_name;
- patch->old_name = gitdiff_verify_name(line, patch->is_new, patch->old_name, "old");
+ patch->old_name = gitdiff_verify_name(line, patch->is_new, patch->old_name,
+ DIFF_OLD_NAME);
if (orig != patch->old_name)
free(orig);
return 0;
static int gitdiff_newname(const char *line, struct patch *patch)
{
char *orig = patch->new_name;
- patch->new_name = gitdiff_verify_name(line, patch->is_delete, patch->new_name, "new");
+ patch->new_name = gitdiff_verify_name(line, patch->is_delete, patch->new_name,
+ DIFF_NEW_NAME);
if (orig != patch->new_name)
free(orig);
return 0;
const char *whitespace_option = NULL;
struct option builtin_apply_options[] = {
- { OPTION_CALLBACK, 0, "exclude", NULL, "path",
- "don't apply changes matching the given path",
+ { OPTION_CALLBACK, 0, "exclude", NULL, N_("path"),
+ N_("don't apply changes matching the given path"),
0, option_parse_exclude },
- { OPTION_CALLBACK, 0, "include", NULL, "path",
- "apply changes matching the given path",
+ { OPTION_CALLBACK, 0, "include", NULL, N_("path"),
+ N_("apply changes matching the given path"),
0, option_parse_include },
- { OPTION_CALLBACK, 'p', NULL, NULL, "num",
- "remove <num> leading slashes from traditional diff paths",
+ { OPTION_CALLBACK, 'p', NULL, NULL, N_("num"),
+ N_("remove <num> leading slashes from traditional diff paths"),
0, option_parse_p },
OPT_BOOLEAN(0, "no-add", &no_add,
- "ignore additions made by the patch"),
+ N_("ignore additions made by the patch")),
OPT_BOOLEAN(0, "stat", &diffstat,
- "instead of applying the patch, output diffstat for the input"),
+ N_("instead of applying the patch, output diffstat for the input")),
OPT_NOOP_NOARG(0, "allow-binary-replacement"),
OPT_NOOP_NOARG(0, "binary"),
OPT_BOOLEAN(0, "numstat", &numstat,
- "shows number of added and deleted lines in decimal notation"),
+ N_("shows number of added and deleted lines in decimal notation")),
OPT_BOOLEAN(0, "summary", &summary,
- "instead of applying the patch, output a summary for the input"),
+ N_("instead of applying the patch, output a summary for the input")),
OPT_BOOLEAN(0, "check", &check,
- "instead of applying the patch, see if the patch is applicable"),
+ N_("instead of applying the patch, see if the patch is applicable")),
OPT_BOOLEAN(0, "index", &check_index,
- "make sure the patch is applicable to the current index"),
+ N_("make sure the patch is applicable to the current index")),
OPT_BOOLEAN(0, "cached", &cached,
- "apply a patch without touching the working tree"),
+ N_("apply a patch without touching the working tree")),
OPT_BOOLEAN(0, "apply", &force_apply,
- "also apply the patch (use with --stat/--summary/--check)"),
+ N_("also apply the patch (use with --stat/--summary/--check)")),
OPT_FILENAME(0, "build-fake-ancestor", &fake_ancestor,
- "build a temporary index based on embedded index information"),
+ N_("build a temporary index based on embedded index information")),
{ OPTION_CALLBACK, 'z', NULL, NULL, NULL,
- "paths are separated with NUL character",
+ N_("paths are separated with NUL character"),
PARSE_OPT_NOARG, option_parse_z },
OPT_INTEGER('C', NULL, &p_context,
- "ensure at least <n> lines of context match"),
- { OPTION_CALLBACK, 0, "whitespace", &whitespace_option, "action",
- "detect new or modified lines that have whitespace errors",
+ N_("ensure at least <n> lines of context match")),
+ { OPTION_CALLBACK, 0, "whitespace", &whitespace_option, N_("action"),
+ N_("detect new or modified lines that have whitespace errors"),
0, option_parse_whitespace },
{ OPTION_CALLBACK, 0, "ignore-space-change", NULL, NULL,
- "ignore changes in whitespace when finding context",
+ N_("ignore changes in whitespace when finding context"),
PARSE_OPT_NOARG, option_parse_space_change },
{ OPTION_CALLBACK, 0, "ignore-whitespace", NULL, NULL,
- "ignore changes in whitespace when finding context",
+ N_("ignore changes in whitespace when finding context"),
PARSE_OPT_NOARG, option_parse_space_change },
OPT_BOOLEAN('R', "reverse", &apply_in_reverse,
- "apply the patch in reverse"),
+ N_("apply the patch in reverse")),
OPT_BOOLEAN(0, "unidiff-zero", &unidiff_zero,
- "don't expect at least one line of context"),
+ N_("don't expect at least one line of context")),
OPT_BOOLEAN(0, "reject", &apply_with_reject,
- "leave the rejected hunks in corresponding *.rej files"),
+ N_("leave the rejected hunks in corresponding *.rej files")),
OPT_BOOLEAN(0, "allow-overlap", &allow_overlap,
- "allow overlapping hunks"),
- OPT__VERBOSE(&apply_verbosely, "be verbose"),
+ N_("allow overlapping hunks")),
+ OPT__VERBOSE(&apply_verbosely, N_("be verbose")),
OPT_BIT(0, "inaccurate-eof", &options,
- "tolerate incorrectly detected missing new-line at the end of file",
+ N_("tolerate incorrectly detected missing new-line at the end of file"),
INACCURATE_EOF),
OPT_BIT(0, "recount", &options,
- "do not trust the line counts in the hunk headers",
+ N_("do not trust the line counts in the hunk headers"),
RECOUNT),
- { OPTION_CALLBACK, 0, "directory", NULL, "root",
- "prepend <root> to all filenames",
+ { OPTION_CALLBACK, 0, "directory", NULL, N_("root"),
+ N_("prepend <root> to all filenames"),
0, option_parse_directory },
OPT_END()
};
char path[FLEX_ARRAY];
};
+static int diff_hunks(mmfile_t *file_a, mmfile_t *file_b, long ctxlen,
+ xdl_emit_hunk_consume_func_t hunk_func, void *cb_data)
+{
+ xpparam_t xpp = {0};
+ xdemitconf_t xecfg = {0};
+ xdemitcb_t ecb = {NULL};
+
+ xpp.flags = xdl_opts;
+ xecfg.ctxlen = ctxlen;
+ xecfg.hunk_func = hunk_func;
+ ecb.priv = cb_data;
+ return xdi_diff(file_a, file_b, &xpp, &xecfg, &ecb);
+}
+
/*
* Prepare diff_filespec and convert it using diff textconv API
* if the textconv driver exists.
long tlno;
};
-static void blame_chunk_cb(void *data, long same, long p_next, long t_next)
+static int blame_chunk_cb(long start_a, long count_a,
+ long start_b, long count_b, void *data)
{
struct blame_chunk_cb_data *d = data;
- blame_chunk(d->sb, d->tlno, d->plno, same, d->target, d->parent);
- d->plno = p_next;
- d->tlno = t_next;
+ blame_chunk(d->sb, d->tlno, d->plno, start_b, d->target, d->parent);
+ d->plno = start_a + count_a;
+ d->tlno = start_b + count_b;
+ return 0;
}
/*
int last_in_target;
mmfile_t file_p, file_o;
struct blame_chunk_cb_data d;
- xpparam_t xpp;
- xdemitconf_t xecfg;
+
memset(&d, 0, sizeof(d));
d.sb = sb; d.target = target; d.parent = parent;
last_in_target = find_last_in_target(sb, target);
fill_origin_blob(&sb->revs->diffopt, target, &file_o);
num_get_patch++;
- memset(&xpp, 0, sizeof(xpp));
- xpp.flags = xdl_opts;
- memset(&xecfg, 0, sizeof(xecfg));
- xecfg.ctxlen = 0;
- xdi_diff_hunks(&file_p, &file_o, blame_chunk_cb, &d, &xpp, &xecfg);
+ diff_hunks(&file_p, &file_o, 0, blame_chunk_cb, &d);
/* The rest (i.e. anything after tlno) are the same as the parent */
blame_chunk(sb, d.tlno, d.plno, last_in_target, target, parent);
long tlno;
};
-static void handle_split_cb(void *data, long same, long p_next, long t_next)
+static int handle_split_cb(long start_a, long count_a,
+ long start_b, long count_b, void *data)
{
struct handle_split_cb_data *d = data;
- handle_split(d->sb, d->ent, d->tlno, d->plno, same, d->parent, d->split);
- d->plno = p_next;
- d->tlno = t_next;
+ handle_split(d->sb, d->ent, d->tlno, d->plno, start_b, d->parent,
+ d->split);
+ d->plno = start_a + count_a;
+ d->tlno = start_b + count_b;
+ return 0;
}
/*
int cnt;
mmfile_t file_o;
struct handle_split_cb_data d;
- xpparam_t xpp;
- xdemitconf_t xecfg;
+
memset(&d, 0, sizeof(d));
d.sb = sb; d.ent = ent; d.parent = parent; d.split = split;
/*
* file_o is a part of final image we are annotating.
* file_p partially may match that image.
*/
- memset(&xpp, 0, sizeof(xpp));
- xpp.flags = xdl_opts;
- memset(&xecfg, 0, sizeof(xecfg));
- xecfg.ctxlen = 1;
memset(split, 0, sizeof(struct blame_entry [3]));
- xdi_diff_hunks(file_p, &file_o, handle_split_cb, &d, &xpp, &xecfg);
+ diff_hunks(file_p, &file_o, 1, handle_split_cb, &d);
/* remainder, if any, all match the preimage */
handle_split(sb, ent, d.tlno, d.plno, ent->num_lines, parent, split);
}
int show_upstream_ref)
{
int ours, theirs;
+ char *ref = NULL;
struct branch *branch = branch_get(branch_name);
if (!stat_tracking_info(branch, &ours, &theirs)) {
return;
}
- strbuf_addch(stat, '[');
if (show_upstream_ref)
- strbuf_addf(stat, "%s: ",
- shorten_unambiguous_ref(branch->merge[0]->dst, 0));
- if (!ours)
- strbuf_addf(stat, _("behind %d] "), theirs);
- else if (!theirs)
- strbuf_addf(stat, _("ahead %d] "), ours);
- else
- strbuf_addf(stat, _("ahead %d, behind %d] "), ours, theirs);
+ ref = shorten_unambiguous_ref(branch->merge[0]->dst, 0);
+ if (!ours) {
+ if (ref)
+ strbuf_addf(stat, _("[%s: behind %d]"), ref, theirs);
+ else
+ strbuf_addf(stat, _("[behind %d]"), theirs);
+
+ } else if (!theirs) {
+ if (ref)
+ strbuf_addf(stat, _("[%s: ahead %d]"), ref, ours);
+ else
+ strbuf_addf(stat, _("[ahead %d]"), ours);
+ } else {
+ if (ref)
+ strbuf_addf(stat, _("[%s: ahead %d, behind %d]"),
+ ref, ours, theirs);
+ else
+ strbuf_addf(stat, _("[ahead %d, behind %d]"),
+ ours, theirs);
+ }
+ strbuf_addch(stat, ' ');
+ free(ref);
}
static int matches_merge_filter(struct commit *commit)
opts.reset = 1;
opts.merge = 1;
opts.fn = oneway_merge;
- opts.verbose_update = !o->quiet;
+ opts.verbose_update = !o->quiet && isatty(2);
opts.src_index = &the_index;
opts.dst_index = &the_index;
parse_tree(tree);
topts.update = 1;
topts.merge = 1;
topts.gently = opts->merge && old->commit;
- topts.verbose_update = !opts->quiet;
+ topts.verbose_update = !opts->quiet && isatty(2);
topts.fn = twoway_merge;
if (opts->overwrite_ignore) {
topts.dir = xcalloc(1, sizeof(*topts.dir));
* HEAD. If it is not reachable from any ref, this is the last chance
* for the user to do so without resorting to reflog.
*/
-static void orphaned_commit_warning(struct commit *commit)
+static void orphaned_commit_warning(struct commit *old, struct commit *new)
{
struct rev_info revs;
- struct object *object = &commit->object;
+ struct object *object = &old->object;
struct object_array refs;
init_revisions(&revs, NULL);
add_pending_object(&revs, object, sha1_to_hex(object->sha1));
for_each_ref(add_pending_uninteresting_ref, &revs);
+ add_pending_sha1(&revs, "HEAD", new->object.sha1, UNINTERESTING);
refs = revs.pending;
revs.leak_pending = 1;
if (prepare_revision_walk(&revs))
die(_("internal error in revision walk"));
- if (!(commit->object.flags & UNINTERESTING))
- suggest_reattach(commit, &revs);
+ if (!(old->object.flags & UNINTERESTING))
+ suggest_reattach(old, &revs);
else
- describe_detached_head(_("Previous HEAD position was"), commit);
+ describe_detached_head(_("Previous HEAD position was"), old);
clear_commit_marks_for_object_array(&refs, ALL_REV_FLAGS);
free(refs.objects);
}
if (!opts->quiet && !old.path && old.commit && new->commit != old.commit)
- orphaned_commit_warning(old.commit);
+ orphaned_commit_warning(old.commit, new->commit);
update_refs_for_switch(opts, &old, new);
if (opts.writeout_stage)
die(_("--ours/--theirs is incompatible with switching branches."));
- if (!new.commit) {
+ if (!new.commit && opts.new_branch) {
unsigned char rev[20];
int flag;
opts.update = 1;
opts.merge = 1;
opts.fn = oneway_merge;
- opts.verbose_update = (option_verbosity > 0);
+ opts.verbose_update = (option_verbosity >= 0);
opts.src_index = &the_index;
opts.dst_index = &the_index;
static int no_post_rewrite, allow_empty_message;
static char *untracked_files_arg, *force_date, *ignore_submodule_arg;
static char *sign_commit;
-static unsigned int colopts;
/*
* The default commit message cleanup mode will remove the lines
static const char *only_include_assumed;
static struct strbuf message = STRBUF_INIT;
-static int null_termination;
static enum {
STATUS_FORMAT_LONG,
STATUS_FORMAT_SHORT,
STATUS_FORMAT_PORCELAIN
} status_format = STATUS_FORMAT_LONG;
-static int status_show_branch;
static int opt_parse_m(const struct option *opt, const char *arg, int unset)
{
return 0;
}
-static struct option builtin_commit_options[] = {
- OPT__QUIET(&quiet, "suppress summary after successful commit"),
- OPT__VERBOSE(&verbose, "show diff in commit message template"),
-
- OPT_GROUP("Commit message options"),
- OPT_FILENAME('F', "file", &logfile, "read message from file"),
- OPT_STRING(0, "author", &force_author, "author", "override author for commit"),
- OPT_STRING(0, "date", &force_date, "date", "override date for commit"),
- OPT_CALLBACK('m', "message", &message, "message", "commit message", opt_parse_m),
- OPT_STRING('c', "reedit-message", &edit_message, "commit", "reuse and edit message from specified commit"),
- OPT_STRING('C', "reuse-message", &use_message, "commit", "reuse message from specified commit"),
- OPT_STRING(0, "fixup", &fixup_message, "commit", "use autosquash formatted message to fixup specified commit"),
- OPT_STRING(0, "squash", &squash_message, "commit", "use autosquash formatted message to squash specified commit"),
- OPT_BOOLEAN(0, "reset-author", &renew_authorship, "the commit is authored by me now (used with -C/-c/--amend)"),
- OPT_BOOLEAN('s', "signoff", &signoff, "add Signed-off-by:"),
- OPT_FILENAME('t', "template", &template_file, "use specified template file"),
- OPT_BOOL('e', "edit", &edit_flag, "force edit of commit"),
- OPT_STRING(0, "cleanup", &cleanup_arg, "default", "how to strip spaces and #comments from message"),
- OPT_BOOLEAN(0, "status", &include_status, "include status in commit message template"),
- { OPTION_STRING, 'S', "gpg-sign", &sign_commit, "key id",
- "GPG sign commit", PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
- /* end commit message options */
-
- OPT_GROUP("Commit contents options"),
- OPT_BOOLEAN('a', "all", &all, "commit all changed files"),
- OPT_BOOLEAN('i', "include", &also, "add specified files to index for commit"),
- OPT_BOOLEAN(0, "interactive", &interactive, "interactively add files"),
- OPT_BOOLEAN('p', "patch", &patch_interactive, "interactively add changes"),
- OPT_BOOLEAN('o', "only", &only, "commit only specified files"),
- OPT_BOOLEAN('n', "no-verify", &no_verify, "bypass pre-commit hook"),
- OPT_BOOLEAN(0, "dry-run", &dry_run, "show what would be committed"),
- OPT_SET_INT(0, "short", &status_format, "show status concisely",
- STATUS_FORMAT_SHORT),
- OPT_BOOLEAN(0, "branch", &status_show_branch, "show branch information"),
- OPT_SET_INT(0, "porcelain", &status_format,
- "machine-readable output", STATUS_FORMAT_PORCELAIN),
- OPT_BOOLEAN('z', "null", &null_termination,
- "terminate entries with NUL"),
- OPT_BOOLEAN(0, "amend", &amend, "amend previous commit"),
- OPT_BOOLEAN(0, "no-post-rewrite", &no_post_rewrite, "bypass post-rewrite hook"),
- { OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, "mode", "show untracked files, optional modes: all, normal, no. (Default: all)", PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
- /* end commit contents options */
-
- { OPTION_BOOLEAN, 0, "allow-empty", &allow_empty, NULL,
- "ok to record an empty change",
- PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
- { OPTION_BOOLEAN, 0, "allow-empty-message", &allow_empty_message, NULL,
- "ok to record a change with an empty message",
- PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
-
- OPT_END()
-};
-
static void determine_whence(struct wt_status *s)
{
if (file_exists(git_path("MERGE_HEAD")))
switch (status_format) {
case STATUS_FORMAT_SHORT:
- wt_shortstatus_print(s, null_termination, status_show_branch);
+ wt_shortstatus_print(s);
break;
case STATUS_FORMAT_PORCELAIN:
- wt_porcelain_print(s, null_termination);
+ wt_porcelain_print(s);
break;
case STATUS_FORMAT_LONG:
wt_status_print(s);
}
static int parse_and_validate_options(int argc, const char *argv[],
+ const struct option *options,
const char * const usage[],
const char *prefix,
struct commit *current_head,
{
int f = 0;
- argc = parse_options(argc, argv, prefix, builtin_commit_options, usage,
- 0);
+ argc = parse_options(argc, argv, prefix, options, usage, 0);
if (force_author && !strchr(force_author, '>'))
force_author = find_author_by_nickname(force_author);
if (all && argc > 0)
die(_("Paths with -a does not make sense."));
- if (null_termination && status_format == STATUS_FORMAT_LONG)
+ if (s->null_termination && status_format == STATUS_FORMAT_LONG)
status_format = STATUS_FORMAT_PORCELAIN;
if (status_format != STATUS_FORMAT_LONG)
dry_run = 1;
struct wt_status *s = cb;
if (!prefixcmp(k, "column."))
- return git_column_config(k, v, "status", &colopts);
+ return git_column_config(k, v, "status", &s->colopts);
if (!strcmp(k, "status.submodulesummary")) {
int is_bool;
s->submodule_summary = git_config_bool_or_int(k, v, &is_bool);
int cmd_status(int argc, const char **argv, const char *prefix)
{
- struct wt_status s;
+ static struct wt_status s;
int fd;
unsigned char sha1[20];
static struct option builtin_status_options[] = {
OPT__VERBOSE(&verbose, "be verbose"),
OPT_SET_INT('s', "short", &status_format,
"show status concisely", STATUS_FORMAT_SHORT),
- OPT_BOOLEAN('b', "branch", &status_show_branch,
+ OPT_BOOLEAN('b', "branch", &s.show_branch,
"show branch information"),
OPT_SET_INT(0, "porcelain", &status_format,
"machine-readable output",
STATUS_FORMAT_PORCELAIN),
- OPT_BOOLEAN('z', "null", &null_termination,
+ OPT_BOOLEAN('z', "null", &s.null_termination,
"terminate entries with NUL"),
{ OPTION_STRING, 'u', "untracked-files", &untracked_files_arg,
"mode",
{ OPTION_STRING, 0, "ignore-submodules", &ignore_submodule_arg, "when",
"ignore changes to submodules, optional when: all, dirty, untracked. (Default: all)",
PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
- OPT_COLUMN(0, "column", &colopts, "list untracked files in columns"),
+ OPT_COLUMN(0, "column", &s.colopts, "list untracked files in columns"),
OPT_END(),
};
argc = parse_options(argc, argv, prefix,
builtin_status_options,
builtin_status_usage, 0);
- finalize_colopts(&colopts, -1);
- s.colopts = colopts;
+ finalize_colopts(&s.colopts, -1);
- if (null_termination && status_format == STATUS_FORMAT_LONG)
+ if (s.null_termination && status_format == STATUS_FORMAT_LONG)
status_format = STATUS_FORMAT_PORCELAIN;
handle_untracked_files_arg(&s);
switch (status_format) {
case STATUS_FORMAT_SHORT:
- wt_shortstatus_print(&s, null_termination, status_show_branch);
+ wt_shortstatus_print(&s);
break;
case STATUS_FORMAT_PORCELAIN:
- wt_porcelain_print(&s, null_termination);
+ wt_porcelain_print(&s);
break;
case STATUS_FORMAT_LONG:
s.verbose = verbose;
int cmd_commit(int argc, const char **argv, const char *prefix)
{
+ static struct wt_status s;
+ static struct option builtin_commit_options[] = {
+ OPT__QUIET(&quiet, "suppress summary after successful commit"),
+ OPT__VERBOSE(&verbose, "show diff in commit message template"),
+
+ OPT_GROUP("Commit message options"),
+ OPT_FILENAME('F', "file", &logfile, "read message from file"),
+ OPT_STRING(0, "author", &force_author, "author", "override author for commit"),
+ OPT_STRING(0, "date", &force_date, "date", "override date for commit"),
+ OPT_CALLBACK('m', "message", &message, "message", "commit message", opt_parse_m),
+ OPT_STRING('c', "reedit-message", &edit_message, "commit", "reuse and edit message from specified commit"),
+ OPT_STRING('C', "reuse-message", &use_message, "commit", "reuse message from specified commit"),
+ OPT_STRING(0, "fixup", &fixup_message, "commit", "use autosquash formatted message to fixup specified commit"),
+ OPT_STRING(0, "squash", &squash_message, "commit", "use autosquash formatted message to squash specified commit"),
+ OPT_BOOLEAN(0, "reset-author", &renew_authorship, "the commit is authored by me now (used with -C/-c/--amend)"),
+ OPT_BOOLEAN('s', "signoff", &signoff, "add Signed-off-by:"),
+ OPT_FILENAME('t', "template", &template_file, "use specified template file"),
+ OPT_BOOL('e', "edit", &edit_flag, "force edit of commit"),
+ OPT_STRING(0, "cleanup", &cleanup_arg, "default", "how to strip spaces and #comments from message"),
+ OPT_BOOLEAN(0, "status", &include_status, "include status in commit message template"),
+ { OPTION_STRING, 'S', "gpg-sign", &sign_commit, "key id",
+ "GPG sign commit", PARSE_OPT_OPTARG, NULL, (intptr_t) "" },
+ /* end commit message options */
+
+ OPT_GROUP("Commit contents options"),
+ OPT_BOOLEAN('a', "all", &all, "commit all changed files"),
+ OPT_BOOLEAN('i', "include", &also, "add specified files to index for commit"),
+ OPT_BOOLEAN(0, "interactive", &interactive, "interactively add files"),
+ OPT_BOOLEAN('p', "patch", &patch_interactive, "interactively add changes"),
+ OPT_BOOLEAN('o', "only", &only, "commit only specified files"),
+ OPT_BOOLEAN('n', "no-verify", &no_verify, "bypass pre-commit hook"),
+ OPT_BOOLEAN(0, "dry-run", &dry_run, "show what would be committed"),
+ OPT_SET_INT(0, "short", &status_format, "show status concisely",
+ STATUS_FORMAT_SHORT),
+ OPT_BOOLEAN(0, "branch", &s.show_branch, "show branch information"),
+ OPT_SET_INT(0, "porcelain", &status_format,
+ "machine-readable output", STATUS_FORMAT_PORCELAIN),
+ OPT_BOOLEAN('z', "null", &s.null_termination,
+ "terminate entries with NUL"),
+ OPT_BOOLEAN(0, "amend", &amend, "amend previous commit"),
+ OPT_BOOLEAN(0, "no-post-rewrite", &no_post_rewrite, "bypass post-rewrite hook"),
+ { OPTION_STRING, 'u', "untracked-files", &untracked_files_arg, "mode", "show untracked files, optional modes: all, normal, no. (Default: all)", PARSE_OPT_OPTARG, NULL, (intptr_t)"all" },
+ /* end commit contents options */
+
+ { OPTION_BOOLEAN, 0, "allow-empty", &allow_empty, NULL,
+ "ok to record an empty change",
+ PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
+ { OPTION_BOOLEAN, 0, "allow-empty-message", &allow_empty_message, NULL,
+ "ok to record a change with an empty message",
+ PARSE_OPT_NOARG | PARSE_OPT_HIDDEN },
+
+ OPT_END()
+ };
+
struct strbuf sb = STRBUF_INIT;
struct strbuf author_ident = STRBUF_INIT;
const char *index_file, *reflog_msg;
struct commit_list *parents = NULL, **pptr = &parents;
struct stat statbuf;
int allow_fast_forward = 1;
- struct wt_status s;
struct commit *current_head = NULL;
struct commit_extra_header *extra = NULL;
wt_status_prepare(&s);
git_config(git_commit_config, &s);
determine_whence(&s);
+ s.colopts = 0;
if (get_sha1("HEAD", sha1))
current_head = NULL;
if (!current_head || parse_commit(current_head))
die(_("could not parse HEAD commit"));
}
- argc = parse_and_validate_options(argc, argv, builtin_commit_usage,
+ argc = parse_and_validate_options(argc, argv, builtin_commit_options,
+ builtin_commit_usage,
prefix, current_head, &s);
if (dry_run)
return dry_run_commit(argc, argv, prefix, current_head, &s);
strbuf_add(tagbuf, tag_body, buf + len - tag_body);
}
strbuf_complete_line(tagbuf);
- strbuf_add_lines(tagbuf, "# ", sig->buf, sig->len);
+ if (sig->len) {
+ strbuf_addch(tagbuf, '\n');
+ strbuf_add_lines(tagbuf, "# ", sig->buf, sig->len);
+ }
}
static void fmt_merge_msg_sigs(struct strbuf *out)
rev.ignore_merges = 1;
rev.limited = 1;
- if (suffixcmp(out->buf, "\n"))
- strbuf_addch(out, '\n');
+ strbuf_complete_line(out);
for (i = 0; i < origins.nr; i++)
shortlog(origins.items[i].string,
if (!patterns)
die_errno(_("cannot open '%s'"), arg);
while (strbuf_getline(&sb, patterns, '\n') == 0) {
- char *s;
- size_t len;
-
/* ignore empty line like grep does */
if (sb.len == 0)
continue;
- s = strbuf_detach(&sb, &len);
- append_grep_pat(grep_opt, s, len, arg, ++lno, GREP_PATTERN);
+ append_grep_pat(grep_opt, sb.buf, sb.len, arg, ++lno,
+ GREP_PATTERN);
}
if (!from_stdin)
fclose(patterns);
#include "progress.h"
#include "fsck.h"
#include "exec_cmd.h"
+#include "thread-utils.h"
static const char index_pack_usage[] =
"git index-pack [-v] [-o <index-file>] [--keep | --keep=<msg>] [--verify] [--strict] (<pack-file> | --stdin [--fix-thin] [<pack-file>])";
int ofs_first, ofs_last;
};
+#if !defined(NO_PTHREADS) && defined(NO_PREAD)
+/* NO_PREAD uses compat/pread.c, which is not thread-safe. Disable threading. */
+#define NO_PTHREADS
+#endif
+
+struct thread_local {
+#ifndef NO_PTHREADS
+ pthread_t thread;
+#endif
+ struct base_data *base_cache;
+ size_t base_cache_used;
+};
+
/*
* Even if sizeof(union delta_base) == 24 on 64-bit archs, we really want
* to memcmp() only the first 20 bytes.
static struct object_entry *objects;
static struct delta_entry *deltas;
-static struct base_data *base_cache;
-static size_t base_cache_used;
+static struct thread_local nothread_data;
static int nr_objects;
static int nr_deltas;
static int nr_resolved_deltas;
+static int nr_threads;
static int from_stdin;
static int strict;
static uint32_t input_crc32;
static int input_fd, output_fd, pack_fd;
+#ifndef NO_PTHREADS
+
+static struct thread_local *thread_data;
+static int nr_dispatched;
+static int threads_active;
+
+static pthread_mutex_t read_mutex;
+#define read_lock() lock_mutex(&read_mutex)
+#define read_unlock() unlock_mutex(&read_mutex)
+
+static pthread_mutex_t counter_mutex;
+#define counter_lock() lock_mutex(&counter_mutex)
+#define counter_unlock() unlock_mutex(&counter_mutex)
+
+static pthread_mutex_t work_mutex;
+#define work_lock() lock_mutex(&work_mutex)
+#define work_unlock() unlock_mutex(&work_mutex)
+
+static pthread_key_t key;
+
+static inline void lock_mutex(pthread_mutex_t *mutex)
+{
+ if (threads_active)
+ pthread_mutex_lock(mutex);
+}
+
+static inline void unlock_mutex(pthread_mutex_t *mutex)
+{
+ if (threads_active)
+ pthread_mutex_unlock(mutex);
+}
+
+/*
+ * Mutex and conditional variable can't be statically-initialized on Windows.
+ */
+static void init_thread(void)
+{
+ init_recursive_mutex(&read_mutex);
+ pthread_mutex_init(&counter_mutex, NULL);
+ pthread_mutex_init(&work_mutex, NULL);
+ pthread_key_create(&key, NULL);
+ thread_data = xcalloc(nr_threads, sizeof(*thread_data));
+ threads_active = 1;
+}
+
+static void cleanup_thread(void)
+{
+ if (!threads_active)
+ return;
+ threads_active = 0;
+ pthread_mutex_destroy(&read_mutex);
+ pthread_mutex_destroy(&counter_mutex);
+ pthread_mutex_destroy(&work_mutex);
+ pthread_key_delete(key);
+ free(thread_data);
+}
+
+#else
+
+#define read_lock()
+#define read_unlock()
+
+#define counter_lock()
+#define counter_unlock()
+
+#define work_lock()
+#define work_unlock()
+
+#endif
+
+
static int mark_link(struct object *obj, int type, void *data)
{
if (!obj)
die(_("pack has bad object at offset %lu: %s"), offset, buf);
}
+static inline struct thread_local *get_thread_data(void)
+{
+#ifndef NO_PTHREADS
+ if (threads_active)
+ return pthread_getspecific(key);
+ assert(!threads_active &&
+ "This should only be reached when all threads are gone");
+#endif
+ return ¬hread_data;
+}
+
+#ifndef NO_PTHREADS
+static void set_thread_data(struct thread_local *data)
+{
+ if (threads_active)
+ pthread_setspecific(key, data);
+}
+#endif
+
static struct base_data *alloc_base_data(void)
{
struct base_data *base = xmalloc(sizeof(struct base_data));
if (c->data) {
free(c->data);
c->data = NULL;
- base_cache_used -= c->size;
+ get_thread_data()->base_cache_used -= c->size;
}
}
static void prune_base_data(struct base_data *retain)
{
struct base_data *b;
- for (b = base_cache;
- base_cache_used > delta_base_cache_limit && b;
+ struct thread_local *data = get_thread_data();
+ for (b = data->base_cache;
+ data->base_cache_used > delta_base_cache_limit && b;
b = b->child) {
if (b->data && b != retain)
free_base_data(b);
if (base)
base->child = c;
else
- base_cache = c;
+ get_thread_data()->base_cache = c;
c->base = base;
c->child = NULL;
if (c->data)
- base_cache_used += c->size;
+ get_thread_data()->base_cache_used += c->size;
prune_base_data(c);
}
if (base)
base->child = NULL;
else
- base_cache = NULL;
+ get_thread_data()->base_cache = NULL;
free_base_data(c);
}
enum object_type type, unsigned char *sha1)
{
hash_sha1_file(data, size, typename(type), sha1);
+ read_lock();
if (has_sha1_file(sha1)) {
void *has_data;
enum object_type has_type;
unsigned long has_size;
has_data = read_sha1_file(sha1, &has_type, &has_size);
+ read_unlock();
if (!has_data)
die(_("cannot read existing object %s"), sha1_to_hex(sha1));
if (size != has_size || type != has_type ||
memcmp(data, has_data, size) != 0)
die(_("SHA1 COLLISION FOUND WITH %s !"), sha1_to_hex(sha1));
free(has_data);
- }
+ } else
+ read_unlock();
+
if (strict) {
+ read_lock();
if (type == OBJ_BLOB) {
struct blob *blob = lookup_blob(sha1);
if (blob)
}
obj->flags |= FLAG_CHECKED;
}
+ read_unlock();
}
}
if (!delta_nr) {
c->data = get_data_from_pack(obj);
c->size = obj->size;
- base_cache_used += c->size;
+ get_thread_data()->base_cache_used += c->size;
prune_base_data(c);
}
for (; delta_nr > 0; delta_nr--) {
free(raw);
if (!c->data)
bad_object(obj->idx.offset, _("failed to apply delta"));
- base_cache_used += c->size;
+ get_thread_data()->base_cache_used += c->size;
prune_base_data(c);
}
free(delta);
bad_object(delta_obj->idx.offset, _("failed to apply delta"));
sha1_object(result->data, result->size, delta_obj->real_type,
delta_obj->idx.sha1);
+ counter_lock();
nr_resolved_deltas++;
+ counter_unlock();
}
static struct base_data *find_unresolved_deltas_1(struct base_data *base,
objects[delta_b->obj_no].type);
}
-/* Parse all objects and return the pack content SHA1 hash */
+static void resolve_base(struct object_entry *obj)
+{
+ struct base_data *base_obj = alloc_base_data();
+ base_obj->obj = obj;
+ base_obj->data = NULL;
+ find_unresolved_deltas(base_obj);
+}
+
+#ifndef NO_PTHREADS
+static void *threaded_second_pass(void *data)
+{
+ set_thread_data(data);
+ for (;;) {
+ int i;
+ work_lock();
+ display_progress(progress, nr_resolved_deltas);
+ while (nr_dispatched < nr_objects &&
+ is_delta_type(objects[nr_dispatched].type))
+ nr_dispatched++;
+ if (nr_dispatched >= nr_objects) {
+ work_unlock();
+ break;
+ }
+ i = nr_dispatched++;
+ work_unlock();
+
+ resolve_base(&objects[i]);
+ }
+ return NULL;
+}
+#endif
+
+/*
+ * First pass:
+ * - find locations of all objects;
+ * - calculate SHA1 of all non-delta objects;
+ * - remember base (SHA1 or offset) for all deltas.
+ */
static void parse_pack_objects(unsigned char *sha1)
{
int i;
struct delta_entry *delta = deltas;
struct stat st;
- /*
- * First pass:
- * - find locations of all objects;
- * - calculate SHA1 of all non-delta objects;
- * - remember base (SHA1 or offset) for all deltas.
- */
if (verbose)
progress = start_progress(
from_stdin ? _("Receiving objects") : _("Indexing objects"),
if (S_ISREG(st.st_mode) &&
lseek(input_fd, 0, SEEK_CUR) - input_len != st.st_size)
die(_("pack has junk at the end"));
+}
+
+/*
+ * Second pass:
+ * - for all non-delta objects, look if it is used as a base for
+ * deltas;
+ * - if used as a base, uncompress the object and apply all deltas,
+ * recursively checking if the resulting object is used as a base
+ * for some more deltas.
+ */
+static void resolve_deltas(void)
+{
+ int i;
if (!nr_deltas)
return;
qsort(deltas, nr_deltas, sizeof(struct delta_entry),
compare_delta_entry);
- /*
- * Second pass:
- * - for all non-delta objects, look if it is used as a base for
- * deltas;
- * - if used as a base, uncompress the object and apply all deltas,
- * recursively checking if the resulting object is used as a base
- * for some more deltas.
- */
if (verbose)
progress = start_progress(_("Resolving deltas"), nr_deltas);
+
+#ifndef NO_PTHREADS
+ nr_dispatched = 0;
+ if (nr_threads > 1 || getenv("GIT_FORCE_THREADS")) {
+ init_thread();
+ for (i = 0; i < nr_threads; i++) {
+ int ret = pthread_create(&thread_data[i].thread, NULL,
+ threaded_second_pass, thread_data + i);
+ if (ret)
+ die("unable to create thread: %s", strerror(ret));
+ }
+ for (i = 0; i < nr_threads; i++)
+ pthread_join(thread_data[i].thread, NULL);
+ cleanup_thread();
+ return;
+ }
+#endif
+
for (i = 0; i < nr_objects; i++) {
struct object_entry *obj = &objects[i];
- struct base_data *base_obj = alloc_base_data();
if (is_delta_type(obj->type))
continue;
- base_obj->obj = obj;
- base_obj->data = NULL;
- find_unresolved_deltas(base_obj);
+ resolve_base(obj);
display_progress(progress, nr_resolved_deltas);
}
}
+/*
+ * Third pass:
+ * - append objects to convert thin pack to full pack if required
+ * - write the final 20-byte SHA-1
+ */
+static void fix_unresolved_deltas(struct sha1file *f, int nr_unresolved);
+static void conclude_pack(int fix_thin_pack, const char *curr_pack, unsigned char *pack_sha1)
+{
+ if (nr_deltas == nr_resolved_deltas) {
+ stop_progress(&progress);
+ /* Flush remaining pack final 20-byte SHA1. */
+ flush();
+ return;
+ }
+
+ if (fix_thin_pack) {
+ struct sha1file *f;
+ unsigned char read_sha1[20], tail_sha1[20];
+ char msg[48];
+ int nr_unresolved = nr_deltas - nr_resolved_deltas;
+ int nr_objects_initial = nr_objects;
+ if (nr_unresolved <= 0)
+ die(_("confusion beyond insanity"));
+ objects = xrealloc(objects,
+ (nr_objects + nr_unresolved + 1)
+ * sizeof(*objects));
+ f = sha1fd(output_fd, curr_pack);
+ fix_unresolved_deltas(f, nr_unresolved);
+ sprintf(msg, "completed with %d local objects",
+ nr_objects - nr_objects_initial);
+ stop_progress_msg(&progress, msg);
+ sha1close(f, tail_sha1, 0);
+ hashcpy(read_sha1, pack_sha1);
+ fixup_pack_header_footer(output_fd, pack_sha1,
+ curr_pack, nr_objects,
+ read_sha1, consumed_bytes-20);
+ if (hashcmp(read_sha1, tail_sha1) != 0)
+ die("Unexpected tail checksum for %s "
+ "(disk corruption?)", curr_pack);
+ }
+ if (nr_deltas != nr_resolved_deltas)
+ die(Q_("pack has %d unresolved delta",
+ "pack has %d unresolved deltas",
+ nr_deltas - nr_resolved_deltas),
+ nr_deltas - nr_resolved_deltas);
+}
+
static int write_compressed(struct sha1file *f, void *in, unsigned int size)
{
git_zstream stream;
die("bad pack.indexversion=%"PRIu32, opts->version);
return 0;
}
+ if (!strcmp(k, "pack.threads")) {
+ nr_threads = git_config_int(k, v);
+ if (nr_threads < 0)
+ die("invalid number of threads specified (%d)",
+ nr_threads);
+#ifdef NO_PTHREADS
+ if (nr_threads != 1)
+ warning("no threads support, ignoring %s", k);
+ nr_threads = 1;
+#endif
+ return 0;
+ }
return git_default_config(k, v, cb);
}
keep_msg = "";
} else if (!prefixcmp(arg, "--keep=")) {
keep_msg = arg + 7;
+ } else if (!prefixcmp(arg, "--threads=")) {
+ char *end;
+ nr_threads = strtoul(arg+10, &end, 0);
+ if (!arg[10] || *end || nr_threads < 0)
+ usage(index_pack_usage);
+#ifdef NO_PTHREADS
+ if (nr_threads != 1)
+ warning("no threads support, "
+ "ignoring %s", arg);
+ nr_threads = 1;
+#endif
} else if (!prefixcmp(arg, "--pack_header=")) {
struct pack_header *hdr;
char *c;
if (strict)
opts.flags |= WRITE_IDX_STRICT;
+#ifndef NO_PTHREADS
+ if (!nr_threads) {
+ nr_threads = online_cpus();
+ /* An experiment showed that more threads does not mean faster */
+ if (nr_threads > 3)
+ nr_threads = 3;
+ }
+#endif
+
curr_pack = open_pack_file(pack_name);
parse_pack_header();
objects = xcalloc(nr_objects + 1, sizeof(struct object_entry));
deltas = xcalloc(nr_objects, sizeof(struct delta_entry));
parse_pack_objects(pack_sha1);
- if (nr_deltas == nr_resolved_deltas) {
- stop_progress(&progress);
- /* Flush remaining pack final 20-byte SHA1. */
- flush();
- } else {
- if (fix_thin_pack) {
- struct sha1file *f;
- unsigned char read_sha1[20], tail_sha1[20];
- char msg[48];
- int nr_unresolved = nr_deltas - nr_resolved_deltas;
- int nr_objects_initial = nr_objects;
- if (nr_unresolved <= 0)
- die(_("confusion beyond insanity"));
- objects = xrealloc(objects,
- (nr_objects + nr_unresolved + 1)
- * sizeof(*objects));
- f = sha1fd(output_fd, curr_pack);
- fix_unresolved_deltas(f, nr_unresolved);
- sprintf(msg, "completed with %d local objects",
- nr_objects - nr_objects_initial);
- stop_progress_msg(&progress, msg);
- sha1close(f, tail_sha1, 0);
- hashcpy(read_sha1, pack_sha1);
- fixup_pack_header_footer(output_fd, pack_sha1,
- curr_pack, nr_objects,
- read_sha1, consumed_bytes-20);
- if (hashcmp(read_sha1, tail_sha1) != 0)
- die("Unexpected tail checksum for %s "
- "(disk corruption?)", curr_pack);
- }
- if (nr_deltas != nr_resolved_deltas)
- die(Q_("pack has %d unresolved delta",
- "pack has %d unresolved deltas",
- nr_deltas - nr_resolved_deltas),
- nr_deltas - nr_resolved_deltas);
- }
+ resolve_deltas();
+ conclude_pack(fix_thin_pack, curr_pack, pack_sha1);
free(deltas);
if (strict)
check_objects();
strlen(rename.old), rename.new,
strlen(rename.new));
} else
- warning(_("Not updating non-default fetch respec\n"
+ warning(_("Not updating non-default fetch refspec\n"
"\t%s\n"
"\tPlease update the configuration manually if necessary."),
buf2.buf);
struct pretty_print_context ctx = {0};
ctx.abbrev = revs->abbrev;
ctx.date_mode = revs->date_mode;
+ ctx.date_mode_explicit = revs->date_mode_explicit;
ctx.fmt = revs->commit_format;
pretty_print_commit(&ctx, commit, &buf);
if (revs->graph) {
char base[FLEX_ARRAY]; /* more */
} *alt_odb_list;
extern void prepare_alt_odb(void);
+extern void read_info_alternates(const char * relative_base, int depth);
extern void add_to_alternates_file(const char *reference);
typedef int alt_odb_fn(struct alternate_object_database *, void *);
extern void foreach_alt_odb(alt_odb_fn, void*);
const char *after_subject;
int preserve_subject;
enum date_mode date_mode;
+ unsigned date_mode_explicit:1;
int need_8bit_cte;
int show_notes;
struct reflog_walk_info *reflog_info;
return (*keyp = TlsAlloc()) == TLS_OUT_OF_INDEXES ? EAGAIN : 0;
}
+static inline int pthread_key_delete(pthread_key_t key)
+{
+ return TlsFree(key) ? 0 : EINVAL;
+}
+
static inline int pthread_setspecific(pthread_key_t key, const void *value)
{
return TlsSetValue(key, (void *)value) ? 0 : EINVAL;
*) pfx="$ref:$pfx" ;;
esac
- local IFS=$'\n'
- COMPREPLY=($(compgen -P "$pfx" \
- -W "$(git --git-dir="$(__gitdir)" ls-tree "$ls" \
+ __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" \
| sed '/^100... blob /{
s,^.* ,,
s,$, ,
s,$,/,
}
s/^.* //')" \
- -- "$cur_"))
+ "$pfx" "$cur_" ""
;;
*...*)
pfx="${cur_%...*}..."
_git_log
}
-_git ()
+_main_git ()
{
local i c=1 command __git_dir
- if [[ -n ${ZSH_VERSION-} ]]; then
- emulate -L bash
- setopt KSH_TYPESET
-
- # workaround zsh's bug that leaves 'words' as a special
- # variable in versions < 4.3.12
- typeset -h words
-
- # workaround zsh's bug that quotes spaces in the COMPREPLY
- # array if IFS doesn't contain spaces.
- typeset -h IFS
- fi
-
- local cur words cword prev
- _get_comp_words_by_ref -n =: cur words cword prev
while [ $c -lt $cword ]; do
i="${words[c]}"
case "$i" in
fi
}
-_gitk ()
+_main_gitk ()
{
- if [[ -n ${ZSH_VERSION-} ]]; then
- emulate -L bash
- setopt KSH_TYPESET
-
- # workaround zsh's bug that leaves 'words' as a special
- # variable in versions < 4.3.12
- typeset -h words
-
- # workaround zsh's bug that quotes spaces in the COMPREPLY
- # array if IFS doesn't contain spaces.
- typeset -h IFS
- fi
-
- local cur words cword prev
- _get_comp_words_by_ref -n =: cur words cword prev
-
__git_has_doubledash && return
local g="$(__gitdir)"
__git_complete_revlist
}
-complete -o bashdefault -o default -o nospace -F _git git 2>/dev/null \
- || complete -o default -o nospace -F _git git
-complete -o bashdefault -o default -o nospace -F _gitk gitk 2>/dev/null \
- || complete -o default -o nospace -F _gitk gitk
+__git_func_wrap ()
+{
+ if [[ -n ${ZSH_VERSION-} ]]; then
+ emulate -L bash
+ setopt KSH_TYPESET
+
+ # workaround zsh's bug that leaves 'words' as a special
+ # variable in versions < 4.3.12
+ typeset -h words
+
+ # workaround zsh's bug that quotes spaces in the COMPREPLY
+ # array if IFS doesn't contain spaces.
+ typeset -h IFS
+ fi
+ local cur words cword prev
+ _get_comp_words_by_ref -n =: cur words cword prev
+ $1
+}
+
+# Setup completion for certain functions defined above by setting common
+# variables and workarounds.
+# This is NOT a public function; use at your own risk.
+__git_complete ()
+{
+ local wrapper="__git_wrap${2}"
+ eval "$wrapper () { __git_func_wrap $2 ; }"
+ complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \
+ || complete -o default -o nospace -F $wrapper $1
+}
+
+# wrapper for backwards compatibility
+_git ()
+{
+ __git_wrap_main_git
+}
+
+# wrapper for backwards compatibility
+_gitk ()
+{
+ __git_wrap_main_gitk
+}
+
+__git_complete git _main_git
+__git_complete gitk _main_gitk
# The following are necessary only for Cygwin, and only are needed
# when the user has tab-completed the executable name and consequently
# included the '.exe' suffix.
#
if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then
-complete -o bashdefault -o default -o nospace -F _git git.exe 2>/dev/null \
- || complete -o default -o nospace -F _git git.exe
+__git_complete git.exe _main_git
fi
CC = gcc
RM = rm -f
-CFLAGS = -g -Wall
+CFLAGS = -g -O2 -Wall
+
+-include ../../../config.mak.autogen
+-include ../../../config.mak
git-credential-osxkeychain: git-credential-osxkeychain.o
- $(CC) -o $@ $< -Wl,-framework -Wl,Security
+ $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) -Wl,-framework -Wl,Security
git-credential-osxkeychain.o: git-credential-osxkeychain.c
$(CC) -c $(CFLAGS) $<
struct string_list p1 = STRING_LIST_INIT_DUP;
struct string_list p2 = STRING_LIST_INIT_DUP;
int i1, i2, ret = 0;
+ size_t len1 = 0, len2 = 0;
if (name1 && read_directory(name1, &p1))
return -1;
strbuf_addstr(&buffer1, name1);
if (buffer1.len && buffer1.buf[buffer1.len - 1] != '/')
strbuf_addch(&buffer1, '/');
+ len1 = buffer1.len;
}
if (name2) {
strbuf_addstr(&buffer2, name2);
if (buffer2.len && buffer2.buf[buffer2.len - 1] != '/')
strbuf_addch(&buffer2, '/');
+ len2 = buffer2.len;
}
for (i1 = i2 = 0; !ret && (i1 < p1.nr || i2 < p2.nr); ) {
const char *n1, *n2;
int comp;
+ strbuf_setlen(&buffer1, len1);
+ strbuf_setlen(&buffer2, len2);
+
if (i1 == p1.nr)
comp = 1;
else if (i2 == p2.nr)
}
string_list_clear(&p1, 0);
string_list_clear(&p2, 0);
- strbuf_reset(&buffer1);
- strbuf_reset(&buffer2);
+ strbuf_release(&buffer1);
+ strbuf_release(&buffer2);
return ret;
} else {
if not m.match(name):
if verbose:
- print "tag %s does not match regexp %s" % (name, validTagRegexp)
+ print "tag %s does not match regexp %s" % (name, validLabelRegexp)
continue
# Get the p4 commit this corresponds to
rebase.rebase()
if gitConfig("git-p4.exportLabels", "--bool") == "true":
- self.exportLabels = true
+ self.exportLabels = True
if self.exportLabels:
p4Labels = getP4Labels(self.depotPath)
sys.stdout.write("\n")
if gitConfig("git-p4.importLabels", "--bool") == "true":
- self.importLabels = true
+ self.importLabels = True
if self.importLabels:
p4Labels = getP4Labels(self.depotPaths)
$_message, $_file, $_branch_dest,
$_template, $_shared,
$_version, $_fetch_all, $_no_rebase, $_fetch_parent,
- $_merge, $_strategy, $_dry_run, $_local,
+ $_merge, $_strategy, $_preserve_merges, $_dry_run, $_local,
$_prefix, $_no_checkout, $_url, $_verbose,
$_git_format, $_commit_url, $_tag, $_merge_info, $_interactive);
$Git::SVN::_follow_parent = 1;
'local|l' => \$_local,
'fetch-all|all' => \$_fetch_all,
'dry-run|n' => \$_dry_run,
+ 'preserve-merges|p' => \$_preserve_merges,
%fc_opts } ],
'commit-diff' => [ \&cmd_commit_diff,
'Commit a diff between two trees',
push @cmd, '-v' if $_verbose;
push @cmd, qw/--merge/ if $_merge;
push @cmd, "--strategy=$_strategy" if $_strategy;
+ push @cmd, "--preserve-merges" if $_preserve_merges;
@cmd;
}
#include "userdiff.h"
#include "xdiff-interface.h"
-void append_header_grep_pattern(struct grep_opt *opt, enum grep_header_field field, const char *pat)
+static struct grep_pat *create_grep_pat(const char *pat, size_t patlen,
+ const char *origin, int no,
+ enum grep_pat_token t,
+ enum grep_header_field field)
{
struct grep_pat *p = xcalloc(1, sizeof(*p));
- p->pattern = pat;
- p->patternlen = strlen(pat);
- p->origin = "header";
- p->no = 0;
- p->token = GREP_PATTERN_HEAD;
+ p->pattern = xmemdupz(pat, patlen);
+ p->patternlen = patlen;
+ p->origin = origin;
+ p->no = no;
+ p->token = t;
p->field = field;
- *opt->header_tail = p;
- opt->header_tail = &p->next;
+ return p;
+}
+
+static void do_append_grep_pat(struct grep_pat ***tail, struct grep_pat *p)
+{
+ **tail = p;
+ *tail = &p->next;
p->next = NULL;
+
+ switch (p->token) {
+ case GREP_PATTERN: /* atom */
+ case GREP_PATTERN_HEAD:
+ case GREP_PATTERN_BODY:
+ for (;;) {
+ struct grep_pat *new_pat;
+ size_t len = 0;
+ char *cp = p->pattern + p->patternlen, *nl = NULL;
+ while (++len <= p->patternlen) {
+ if (*(--cp) == '\n') {
+ nl = cp;
+ break;
+ }
+ }
+ if (!nl)
+ break;
+ new_pat = create_grep_pat(nl + 1, len - 1, p->origin,
+ p->no, p->token, p->field);
+ new_pat->next = p->next;
+ if (!p->next)
+ *tail = &new_pat->next;
+ p->next = new_pat;
+ *nl = '\0';
+ p->patternlen -= len;
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void append_header_grep_pattern(struct grep_opt *opt,
+ enum grep_header_field field, const char *pat)
+{
+ struct grep_pat *p = create_grep_pat(pat, strlen(pat), "header", 0,
+ GREP_PATTERN_HEAD, field);
+ do_append_grep_pat(&opt->header_tail, p);
}
void append_grep_pattern(struct grep_opt *opt, const char *pat,
void append_grep_pat(struct grep_opt *opt, const char *pat, size_t patlen,
const char *origin, int no, enum grep_pat_token t)
{
- struct grep_pat *p = xcalloc(1, sizeof(*p));
- p->pattern = pat;
- p->patternlen = patlen;
- p->origin = origin;
- p->no = no;
- p->token = t;
- *opt->pattern_tail = p;
- opt->pattern_tail = &p->next;
- p->next = NULL;
+ struct grep_pat *p = create_grep_pat(pat, patlen, origin, no, t, 0);
+ do_append_grep_pat(&opt->pattern_tail, p);
}
struct grep_opt *grep_opt_dup(const struct grep_opt *opt)
if (!opt->header_list)
return NULL;
- p = opt->header_list;
+
for (p = opt->header_list; p; p = p->next) {
if (p->token != GREP_PATTERN_HEAD)
die("bug: a non-header pattern in grep header list.");
free_pcre_regexp(p);
else
regfree(&p->regexp);
+ free(p->pattern);
break;
default:
break;
const char *origin;
int no;
enum grep_pat_token token;
- const char *pattern;
+ char *pattern;
size_t patternlen;
enum grep_header_field field;
regex_t regexp;
if (!split->mail_begin)
return status;
- for (cp = split->mail_begin - 2; line < cp; cp--)
+ for (cp = split->mail_begin - 2; line <= cp; cp--)
if (!isspace(*cp)) {
split->name_end = cp + 1;
break;
* graph info here.
*/
show_reflog_message(opt->reflog_info,
- opt->commit_format == CMIT_FMT_ONELINE,
- opt->date_mode_explicit ?
- opt->date_mode :
- DATE_NORMAL);
+ opt->commit_format == CMIT_FMT_ONELINE,
+ opt->date_mode,
+ opt->date_mode_explicit);
if (opt->commit_format == CMIT_FMT_ONELINE)
return;
}
if (ctx.need_8bit_cte >= 0)
ctx.need_8bit_cte = has_non_ascii(opt->add_signoff);
ctx.date_mode = opt->date_mode;
+ ctx.date_mode_explicit = opt->date_mode_explicit;
ctx.abbrev = opt->diffopt.abbrev;
ctx.after_subject = extra_headers;
ctx.preserve_subject = opt->preserve_subject;
s = literal ? "[%s]" : "[<%s>]";
else
s = literal ? " %s" : " <%s>";
- return fprintf(outfile, s, opts->argh ? opts->argh : "...");
+ return fprintf(outfile, s, opts->argh ? _(opts->argh) : _("..."));
}
#define USAGE_OPTS_WIDTH 24
if (!err && ctx && ctx->flags & PARSE_OPT_SHELL_EVAL)
fprintf(outfile, "cat <<\\EOF\n");
- fprintf(outfile, "usage: %s\n", *usagestr++);
+ fprintf_ln(outfile, _("usage: %s"), _(*usagestr++));
while (*usagestr && **usagestr)
- fprintf(outfile, " or: %s\n", *usagestr++);
+ /* TRANSLATORS: the colon here should align with the
+ one in "usage: %s" translation */
+ fprintf_ln(outfile, _(" or: %s"), _(*usagestr++));
while (*usagestr) {
- fprintf(outfile, "%s%s\n",
- **usagestr ? " " : "",
- *usagestr);
+ if (**usagestr)
+ fprintf_ln(outfile, _(" %s"), _(*usagestr));
+ else
+ putchar('\n');
usagestr++;
}
if (opts->type == OPTION_GROUP) {
fputc('\n', outfile);
if (*opts->help)
- fprintf(outfile, "%s\n", opts->help);
+ fprintf(outfile, "%s\n", _(opts->help));
continue;
}
if (!full && (opts->flags & PARSE_OPT_HIDDEN))
fputc('\n', outfile);
pad = USAGE_OPTS_WIDTH;
}
- fprintf(outfile, "%*s%s\n", pad + USAGE_GAP, "", opts->help);
+ fprintf(outfile, "%*s%s\n", pad + USAGE_GAP, "", _(opts->help));
}
fputc('\n', outfile);
*
* `argh`::
* token to explain the kind of argument this option wants. Keep it
- * homogeneous across the repository.
+ * homogeneous across the repository. Should be wrapped by N_() for
+ * translation.
*
* `help`::
* the short help associated to what the option does.
* Must never be NULL (except for OPTION_END).
* OPTION_GROUP uses this pointer to store the group header.
+ * Should be wrapped by N_() for translation.
*
* `flags`::
* mask of parse_opt_option_flags.
#define OPT_BOOL(s, l, v, h) OPT_SET_INT(s, l, v, h, 1)
#define OPT_SET_PTR(s, l, v, h, p) { OPTION_SET_PTR, (s), (l), (v), NULL, \
(h), PARSE_OPT_NOARG, NULL, (p) }
-#define OPT_INTEGER(s, l, v, h) { OPTION_INTEGER, (s), (l), (v), "n", (h) }
+#define OPT_INTEGER(s, l, v, h) { OPTION_INTEGER, (s), (l), (v), N_("n"), (h) }
#define OPT_STRING(s, l, v, a, h) { OPTION_STRING, (s), (l), (v), (a), (h) }
#define OPT_STRING_LIST(s, l, v, a, h) \
{ OPTION_CALLBACK, (s), (l), (v), (a), \
#define OPT_UYN(s, l, v, h) { OPTION_CALLBACK, (s), (l), (v), NULL, \
(h), PARSE_OPT_NOARG, &parse_opt_tertiary }
#define OPT_DATE(s, l, v, h) \
- { OPTION_CALLBACK, (s), (l), (v), "time",(h), 0, \
+ { OPTION_CALLBACK, (s), (l), (v), N_("time"),(h), 0, \
parse_opt_approxidate_cb }
#define OPT_CALLBACK(s, l, v, a, h, f) \
{ OPTION_CALLBACK, (s), (l), (v), (a), (h), 0, (f) }
{ OPTION_NUMBER, 0, NULL, (v), NULL, (h), \
PARSE_OPT_NOARG | PARSE_OPT_NONEG, (f) }
#define OPT_FILENAME(s, l, v, h) { OPTION_FILENAME, (s), (l), (v), \
- "file", (h) }
+ N_("file"), (h) }
#define OPT_COLOR_FLAG(s, l, v, h) \
- { OPTION_CALLBACK, (s), (l), (v), "when", (h), PARSE_OPT_OPTARG, \
+ { OPTION_CALLBACK, (s), (l), (v), N_("when"), (h), PARSE_OPT_OPTARG, \
parse_opt_color_flag_cb, (intptr_t)"always" }
#define OPT_NOOP_NOARG(s, l) \
{ OPTION_CALLBACK, (s), (l), NULL, NULL, \
- "no-op (backward compatibility)", \
+ N_("no-op (backward compatibility)"), \
PARSE_OPT_HIDDEN | PARSE_OPT_NOARG, parse_opt_noop_cb }
/* Deprecated synonym */
#define OPT_BOOLEAN OPT_COUNTUP
/* parse_options() will filter out the processed options and leave the
- * non-option arguments in argv[].
+ * non-option arguments in argv[]. usagestr strings should be marked
+ * for translation with N_().
* Returns the number of arguments left in argv[].
*/
extern int parse_options(int argc, const char **argv, const char *prefix,
#define OPT__VERBOSE(var, h) OPT_BOOLEAN('v', "verbose", (var), (h))
#define OPT__QUIET(var, h) OPT_BOOLEAN('q', "quiet", (var), (h))
#define OPT__VERBOSITY(var) \
- { OPTION_CALLBACK, 'v', "verbose", (var), NULL, "be more verbose", \
+ { OPTION_CALLBACK, 'v', "verbose", (var), NULL, N_("be more verbose"), \
PARSE_OPT_NOARG, &parse_opt_verbosity_cb, 0 }, \
- { OPTION_CALLBACK, 'q', "quiet", (var), NULL, "be more quiet", \
+ { OPTION_CALLBACK, 'q', "quiet", (var), NULL, N_("be more quiet"), \
PARSE_OPT_NOARG, &parse_opt_verbosity_cb, 0 }
#define OPT__DRY_RUN(var, h) OPT_BOOLEAN('n', "dry-run", (var), (h))
#define OPT__FORCE(var, h) OPT_BOOLEAN('f', "force", (var), (h))
#define OPT__ABBREV(var) \
- { OPTION_CALLBACK, 0, "abbrev", (var), "n", \
- "use <n> digits to display SHA-1s", \
+ { OPTION_CALLBACK, 0, "abbrev", (var), N_("n"), \
+ N_("use <n> digits to display SHA-1s"), \
PARSE_OPT_OPTARG, &parse_opt_abbrev_cb, 0 }
#define OPT__COLOR(var, h) \
OPT_COLOR_FLAG(0, "color", (var), (h))
Language: de (German)
Repository: https://github.com/ralfth/git-po-de
Leader: Ralf Thielow <ralf.thielow@googlemail.com>
+Members: Thomas Rast <trast@student.ethz.ch>
+ Jan Krüger <jk@jk.gs>
+ Christian Stimming <stimming@tuhh.de>
Language: is (Icelandic)
Leader: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
msgstr ""
"Project-Id-Version: git 1.7.10\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2012-04-28 20:17+0800\n"
+"POT-Creation-Date: 2012-05-15 06:31+0800\n"
"PO-Revision-Date: 2012-03-28 18:46+0200\n"
"Last-Translator: Ralf Thielow <ralf.thielow@googlemail.com>\n"
"Language-Team: German\n"
"or use 'git commit -a'."
msgstr ""
"Korrigiere dies im Arbeitsbaum,\n"
-"und benutze dann 'git add/rm <Datei>' wie\n"
-"vorgesehen, um die Auflösung zu markieren und dann einzutragen,\n"
+"und benutze dann 'git add/rm <Datei>'\n"
+"um die Auflösung entsprechend zu markieren und einzutragen,\n"
"oder benutze 'git commit -a'."
#: commit.c:48
#: connected.c:39
msgid "Could not run 'git rev-list'"
-msgstr "'git rev-list' konnte nicht ausgeführt werden"
+msgstr "Konnte 'git rev-list' nicht ausführen"
#: connected.c:48
#, c-format
msgstr[0] ", %d Zeile entfernt(-)"
msgstr[1] ", %d Zeilen entfernt(-)"
-#: diff.c:3435
+#: diff.c:3439
#, c-format
msgid ""
"Failed to parse --dirstat/-X option parameter:\n"
#: gpg-interface.c:59
msgid "could not run gpg."
-msgstr "gpg konnte nicht ausgeführt werden"
+msgstr "konnte gpg nicht ausführen"
#: gpg-interface.c:71
msgid "gpg did not accept the data"
#: grep.c:1308
#, c-format
msgid "'%s': short read %s"
-msgstr "'%s': kurz gelesen %s"
+msgstr "'%s': read() zu kurz %s"
#: help.c:287
#, c-format
msgid_plural ""
"Your branch is behind '%s' by %d commits, and can be fast-forwarded.\n"
msgstr[0] ""
-"Dein Zweig ist hinter '%s' um %d Version, und kann vorgespult werden.\n"
+"Dein Zweig ist zu '%s' um %d Version hinterher, und kann vorgespult werden.\n"
msgstr[1] ""
-"Dein Zweig ist hinter '%s' um %d Versionen, und kann vorgespult werden.\n"
+"Dein Zweig ist zu '%s' um %d Versionen hinterher, und kann vorgespult "
+"werden.\n"
#: remote.c:1621
#, c-format
#, c-format
msgid "Commit %s is a merge but no -m option was given."
msgstr ""
-"Version %s ist eine Zusammenführung, aber es wurde keine Option -m angegeben."
+"Version %s ist eine Zusammenführung, aber die Option -m wurde nicht "
+"angegeben."
#: sequencer.c:324
#, c-format
msgid "could not apply %s... %s"
msgstr "Konnte %s nicht anwenden... %s"
-#: sequencer.c:450 sequencer.c:909 builtin/log.c:289 builtin/log.c:719
-#: builtin/log.c:1335 builtin/log.c:1554 builtin/merge.c:347
+#: sequencer.c:450 sequencer.c:909 builtin/log.c:288 builtin/log.c:713
+#: builtin/log.c:1329 builtin/log.c:1548 builtin/merge.c:347
#: builtin/shortlog.c:181
msgid "revision walk setup failed"
msgstr "Einrichtung des Revisionsgangs fehlgeschlagen"
#: sequencer.c:591
#, c-format
msgid "Could not open %s"
-msgstr "%s konnte nicht geöffnet werden."
+msgstr "Konnte %s nicht öffnen"
#: sequencer.c:595
#, c-format
msgid "Could not read %s."
-msgstr "%s konnte nicht gelesen werden."
+msgstr "Konnte %s nicht lesen."
#: sequencer.c:602
#, c-format
#: sequencer.c:666
msgid "a cherry-pick or revert is already in progress"
-msgstr "\"cherry-pick\" oder \"revert\" wird bereits ausgeführt"
+msgstr "\"cherry-pick\" oder \"revert\" ist bereits im Gang"
#: sequencer.c:667
msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
#: sequencer.c:706 sequencer.c:840
msgid "no cherry-pick or revert in progress"
-msgstr "kein \"cherry-pick\" oder \"revert\" in Ausführung"
+msgstr "kein \"cherry-pick\" oder \"revert\" im Gang"
#: sequencer.c:708
msgid "cannot resolve HEAD"
#: sequencer.c:710
msgid "cannot abort from a branch yet to be born"
-msgstr "kann nicht von einem Zweig abbrechen, der noch geboren wird"
+msgstr "kann nicht abbrechen: bin auf einem Zweig, der noch geboren wird"
#: sequencer.c:732
#, c-format
#: wt-status.c:143
msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)"
msgstr ""
-" (benutze \"git add/rm <Datei>...\" wie vorgesehen, um die Auflösung zu "
+" (benutze \"git add/rm <Datei>...\" um die Auflösung entsprechend zu "
"markieren)"
#: wt-status.c:151
#: wt-status.c:173
msgid " (use \"git add <file>...\" to update what will be committed)"
-msgstr " (benutze \"git add <Datei>...\" zur Aktualisierung der Eintragung)"
+msgstr " (benutze \"git add <Datei>...\" zum Bereitstellen)"
#: wt-status.c:175
msgid " (use \"git add/rm <file>...\" to update what will be committed)"
-msgstr ""
-" (benutze \"git add/rm <Datei>...\" zur Aktualisierung der Eintragung)"
+msgstr " (benutze \"git add/rm <Datei>...\" zum Bereitstellen)"
#: wt-status.c:176
msgid ""
#: wt-status.c:178
msgid " (commit or discard the untracked or modified content in submodules)"
msgstr ""
-" (trage ein oder verwerfe den ungefolgten oder geänderten Inhalt in den "
+" (trage ein oder verwerfe den unbeobachteten oder geänderten Inhalt in den "
"Unterprojekten)"
#: wt-status.c:187
#: wt-status.c:252
msgid "untracked content, "
-msgstr "unverfolgter Inhalt, "
+msgstr "unbeobachteter Inhalt, "
#: wt-status.c:266
#, c-format
#: wt-status.c:745
msgid "Untracked"
-msgstr "Unverfolgte"
+msgstr "Unbeobachtete"
#: wt-status.c:747
msgid "Ignored"
#: wt-status.c:749
#, c-format
msgid "Untracked files not listed%s"
-msgstr "Unverfolgte Dateien nicht aufgelistet%s"
+msgstr "Unbeobachtete Dateien nicht aufgelistet%s"
#: wt-status.c:751
msgid " (use -u option to show untracked files)"
-msgstr " (benutze die Option -u um unverfolgte Dateien anzuzeigen)"
+msgstr " (benutze die Option -u um unbeobachteten Dateien anzuzeigen)"
#: wt-status.c:757
msgid "No changes"
#: wt-status.c:765
#, c-format
msgid "nothing added to commit but untracked files present%s\n"
-msgstr "nichts zum Eintragen hinzugefügt, aber es gibt unverfolgte Dateien%s\n"
+msgstr ""
+"nichts zum Eintragen hinzugefügt, aber es gibt unbeobachtete Dateien%s\n"
#: wt-status.c:767
msgid " (use \"git add\" to track)"
-msgstr " (benutze \"git add\" zum Verfolgen)"
+msgstr " (benutze \"git add\" zum Beobachten)"
#: wt-status.c:769 wt-status.c:772 wt-status.c:775
#, c-format
#: wt-status.c:770
msgid " (create/copy files and use \"git add\" to track)"
-msgstr " (Erstelle/Kopiere Dateien und benutze \"git add\" zum Verfolgen)"
+msgstr " (Erstelle/Kopiere Dateien und benutze \"git add\" zum Beobachten)"
#: wt-status.c:773
msgid " (use -u to show untracked files)"
-msgstr " (benutze -u um unverfolgte Dateien anzuzeigen)"
+msgstr " (benutze die Option -u um unbeobachtete Dateien anzuzeigen)"
#: wt-status.c:776
msgid " (working directory clean)"
#: wt-status.c:905
msgid "behind "
-msgstr "hinter "
+msgstr "hinterher "
#: wt-status.c:908 wt-status.c:911
msgid "ahead "
-msgstr "über "
+msgstr "voraus "
#: wt-status.c:913
msgid ", behind "
-msgstr ", hinter "
+msgstr ", hinterher "
#: builtin/add.c:62
#, c-format
#: builtin/add.c:67 builtin/commit.c:298
msgid "updating files failed"
-msgstr "Aktualisierung von Dateien fehlgeschlagen"
+msgstr "Aktualisierung der Dateien fehlgeschlagen"
#: builtin/add.c:77
#, c-format
#: builtin/add.c:295
#, c-format
msgid "Could not stat '%s'"
-msgstr "Verzeichnis '%s' konnte nicht gelesen werden"
+msgstr "Konnte Verzeichnis '%s' nicht lesen"
#: builtin/add.c:297
msgid "Empty patch. Aborted."
#: builtin/add.c:414
#, c-format
msgid "Maybe you wanted to say 'git add .'?\n"
-msgstr "Wolltest du vieleicht 'git add .' sagen?\n"
+msgstr "Wolltest du vielleicht 'git add .' sagen?\n"
#: builtin/add.c:420 builtin/clean.c:95 builtin/commit.c:358 builtin/mv.c:82
#: builtin/rm.c:162
#: builtin/archive.c:37
msgid "git archive: Remote with no URL"
-msgstr "git archive: Anderes Archiv ohne URL"
+msgstr "git archive: Externes Archiv ohne URL"
#: builtin/archive.c:58
msgid "git archive: expected ACK/NAK, got EOF"
#: builtin/archive.c:65
#, c-format
msgid "remote error: %s"
-msgstr "Versandfehler: %s"
+msgstr "Fehler am anderen Ende: %s"
#: builtin/archive.c:66
msgid "git archive: protocol error"
"deleting branch '%s' that has been merged to\n"
" '%s', but not yet merged to HEAD."
msgstr ""
-"entferne Zweig '%s' der zusammengeführt wurde mit\n"
+"entferne Zweig '%s', der zusammengeführt wurde mit\n"
" '%s', aber noch nicht mit der Zweigspitze (HEAD) zusammengeführt "
"wurde."
"not deleting branch '%s' that is not yet merged to\n"
" '%s', even though it is merged to HEAD."
msgstr ""
-"entferne nicht Zweig '%s' der noch nicht zusammengeführt wurde mit\n"
+"entferne Zweig '%s' nicht, der noch nicht zusammengeführt wurde mit\n"
" '%s', obwohl er mit der Zweigspitze (HEAD) zusammengeführt wurde."
#. TRANSLATORS: This is "remote " in "remote branch '%s' not found"
#: builtin/branch.c:164
msgid "remote "
-msgstr "entfernter "
+msgstr "externer "
#: builtin/branch.c:172
msgid "cannot use -a with -d"
#: builtin/branch.c:183
#, c-format
msgid "Cannot delete the branch '%s' which you are currently on."
-msgstr "Kann Zweig '%s' nicht entfernen auf dem du dich gerade befindest."
+msgstr ""
+"Kann Zweig '%s' nicht entfernen, da du dich gerade auf diesem befindest."
#: builtin/branch.c:193
#, c-format
#: builtin/branch.c:396
#, c-format
msgid "behind %d] "
-msgstr "hinter %d] "
+msgstr "%d hinterher] "
#: builtin/branch.c:398
#, c-format
msgid "ahead %d] "
-msgstr "vor %d] "
+msgstr "%d voraus] "
#: builtin/branch.c:400
#, c-format
msgid "ahead %d, behind %d] "
-msgstr "vor %d, hinter %d] "
+msgstr "%d voraus, %d hinterher] "
#: builtin/branch.c:503
msgid "(no branch)"
#: builtin/branch.c:568
msgid "some refs could not be read"
-msgstr "einige Referenzen konnten nicht gelesen werden"
+msgstr "Konnte einige Referenzen nicht lesen"
#: builtin/branch.c:581
msgid "cannot rename the current branch while not on any."
#: builtin/branch.c:750
msgid "Failed to resolve HEAD as a valid ref."
-msgstr "Zweigspitze (HEAD) konnte nicht als gültige Referenz aufgelöst werden."
+msgstr "Konnte Zweigspitze (HEAD) nicht als gültige Referenz auflösen."
#: builtin/branch.c:755 builtin/clone.c:558
msgid "HEAD not found below refs/heads!"
#: builtin/bundle.c:60
msgid "Need a repository to unbundle."
-msgstr "Zum Zerlegen wird ein Projektarchiv benötigt."
+msgstr "Zum Entpacken wird ein Projektarchiv benötigt."
#: builtin/checkout.c:113 builtin/checkout.c:146
#, c-format
"\n"
"%s\n"
msgstr[0] ""
-"Warnung: Du verlässt %d Version zurückliegend, nicht verbunden zu\n"
+"Warnung: Du bist um %d Version hinterher, nicht verbunden zu\n"
"einem deiner Zweige:\n"
"\n"
"%s\n"
msgstr[1] ""
-"Warnung: Du verlässt %d Versionen zurückliegend, nicht verbunden zu\n"
+"Warnung: Du bist um %d Versionen hinterher, nicht verbunden zu\n"
"einem deiner Zweige:\n"
"\n"
"%s\n"
#: builtin/checkout.c:723
msgid "You are on a branch yet to be born"
-msgstr "Du bist auf einem Zweig, der noch nicht geboren wurde."
+msgstr "du bist auf einem Zweig, der noch geboren wird"
#. case (1)
#: builtin/checkout.c:854
"git checkout: updating paths is incompatible with switching branches.\n"
"Did you intend to checkout '%s' which can not be resolved as commit?"
msgstr ""
-"git checkout: Aktualisierung der Pfade ist inkompatibel mit dem Wechsel von "
-"Zweigen.\n"
+"git checkout: Die Aktualisierung von Pfaden ist inkompatibel mit dem Wechsel "
+"von Zweigen.\n"
"Hast du beabsichtigt '%s' auszuchecken, welcher nicht als Version aufgelöst "
"werden kann?"
#: builtin/checkout.c:1062
msgid "git checkout: updating paths is incompatible with switching branches."
msgstr ""
-"git checkout: Aktualisierung von Pfaden ist inkompatibel mit dem Wechsel von "
-"Zweigen."
+"git checkout: Die Aktualisierung von Pfaden ist inkompatibel mit dem Wechsel "
+"von Zweigen."
#: builtin/checkout.c:1067
msgid "git checkout: --detach does not take a path argument"
"checking out of the index."
msgstr ""
"git checkout: --ours/--theirs, --force and --merge sind inkompatibel wenn\n"
-"du außerhalb der Bereitstellung auscheckst."
+"du aus der Bereitstellung auscheckst."
#: builtin/checkout.c:1089
msgid "Cannot switch branch to a non-commit."
"clean.requireForce set to true and neither -n nor -f given; refusing to clean"
msgstr ""
"clean.requireForce auf \"true\" gesetzt und weder -n noch -f gegeben; "
-"Ablehnung der Reinigung"
+"Säuberung verweigert"
#: builtin/clean.c:85
msgid ""
"clean"
msgstr ""
"clean.requireForce standardmäßig auf \"true\" gesetzt und weder -n noch -f "
-"gegeben; Ablehnung der Reinigung"
+"gegeben; Säuberung verweigert"
#: builtin/clean.c:155 builtin/clean.c:176
#, c-format
msgid "Would remove %s\n"
-msgstr "Würde entfernen %s\n"
+msgstr "Würde %s entfernen\n"
#: builtin/clean.c:159 builtin/clean.c:179
#, c-format
#: builtin/clone.c:308 builtin/diff.c:75
#, c-format
msgid "failed to stat '%s'"
-msgstr "'%s' konnte nicht gelesen werden"
+msgstr "Konnte '%s' nicht lesen"
#: builtin/clone.c:310
#, c-format
#: builtin/clone.c:324
#, c-format
msgid "failed to stat %s\n"
-msgstr "%s konnte nicht gelesen werden\n"
+msgstr "Konnte %s nicht lesen\n"
#: builtin/clone.c:341
#, c-format
msgid "failed to unlink '%s'"
-msgstr "Verknüpfung von '%s' konnte nicht aufgehoben werden."
+msgstr "Konnte '%s' nicht entfernen"
#: builtin/clone.c:346
#, c-format
msgid "failed to create link '%s'"
-msgstr "Verknüpfung '%s' konnte nicht erstellt werden."
+msgstr "Konnte Verknüpfung '%s' nicht erstellen"
#: builtin/clone.c:350
#, c-format
msgid "failed to copy file to '%s'"
-msgstr "Datei konnte nicht nach '%s' kopiert werden."
+msgstr "Konnte Datei nicht nach '%s' kopieren"
#: builtin/clone.c:373
#, c-format
#: builtin/clone.c:440
#, c-format
msgid "Could not find remote branch %s to clone."
-msgstr "Entfernter Zweig %s konnte nicht zum Klonen gefunden werden."
+msgstr "Konnte zu klonenden externer Zweig %s nicht finden."
#: builtin/clone.c:549
msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
msgstr ""
-"Entfernte Zweigspitze (HEAD) bezieht sich auf eine nicht existierende "
-"Referenz und kann nicht ausgecheckt werden.\n"
+"Externe Zweigspitze (HEAD) bezieht sich auf eine nicht existierende Referenz "
+"und kann nicht ausgecheckt werden.\n"
#: builtin/clone.c:639
msgid "Too many arguments."
#: builtin/clone.c:643
msgid "You must specify a repository to clone."
-msgstr "Du musst ein Projektarchiv zum Klonen spezifizieren."
+msgstr "Du musst ein Projektarchiv zum Klonen angeben."
#: builtin/clone.c:654
#, c-format
#: builtin/clone.c:728
#, c-format
msgid "Cloning into bare repository '%s'...\n"
-msgstr "Klone in leeres Projektarchiv '%s'...\n"
+msgstr "Klone in bloßes Projektarchiv '%s'...\n"
#: builtin/clone.c:730
#, c-format
#: builtin/clone.c:835
#, c-format
msgid "Remote branch %s not found in upstream %s"
-msgstr "entfernter Zweig %s nicht im anderen Projektarchiv gefunden %s"
+msgstr "externer Zweig %s nicht im anderen Projektarchiv %s gefunden"
#: builtin/clone.c:842
msgid "You appear to have cloned an empty repository."
#: builtin/commit.c:457
#, c-format
msgid "cannot do a partial commit during a %s."
-msgstr "Kann keine partielle Eintragung während eines %s durchführen."
+msgstr "Kann keine partielle Eintragung durchführen, während %s im Gange ist."
#: builtin/commit.c:466
msgid "cannot read the index"
" Lines starting\n"
"with '#' will be ignored, and an empty message aborts the commit.\n"
msgstr ""
-" Zeilen beginnend\n"
-"mit '#' werden ignoriert, und eine leere Versionsbeschreibung bricht die "
+" Zeilen, die mit '#'\n"
+"beginnen, werden ignoriert, und eine leere Versionsbeschreibung bricht die "
"Eintragung ab.\n"
#: builtin/commit.c:820
"with '#' will be kept; you may remove them yourself if you want to.\n"
"An empty message aborts the commit.\n"
msgstr ""
-" Zeilen beginnend\n"
-"mit '#' werden beibehalten; wenn du möchtest, kannst du diese entfernen.\n"
+" Zeilen, die mit '#'\n"
+"beginnen, werden beibehalten; wenn du möchtest, kannst du diese entfernen.\n"
"Eine leere Versionsbeschreibung bricht die Eintragung ab.\n"
#: builtin/commit.c:832
#: builtin/commit.c:896
msgid "Error building trees"
-msgstr "Fehler beim Erzeugen der Bäume"
+msgstr "Fehler beim Erzeugen der Zweige"
#: builtin/commit.c:911 builtin/tag.c:357
#, c-format
#: builtin/commit.c:1023 builtin/commit.c:1217
#, c-format
msgid "Invalid untracked files mode '%s'"
-msgstr "Ungültiger Modus '%s' für unverfolgte Dateien"
+msgstr "Ungültiger Modus '%s' für unbeobachtete Dateien"
#: builtin/commit.c:1063
msgid "Using both --reset-author and --author does not make sense"
#: builtin/commit.c:1076
#, c-format
msgid "You are in the middle of a %s -- cannot amend."
-msgstr "Du bist in der Mitte eines %s -- kann nicht nachbessern."
+msgstr "%s ist im Gange -- kann nicht nachbessern."
#: builtin/commit.c:1078
msgid "Options --squash and --fixup cannot be used together"
#: builtin/commit.c:1119
msgid "Clever... amending the last one with dirty index."
msgstr ""
-"Klug... nachbessern der letzten Version mit einem unsauberen Bereitstellung."
+"Klug... die letzte Version mit einer unsauberen Bereitstellung nachbessern."
#: builtin/commit.c:1121
msgid "Explicit paths specified without -i nor -o; assuming --only paths..."
msgstr ""
-"Explizite Pfade ohne -i oder -o spezifiziert; unter der Annahme von --only "
+"Explizite Pfade ohne -i oder -o angegeben; unter der Annahme von --only "
"Pfaden..."
#: builtin/commit.c:1131 builtin/tag.c:556
#: builtin/describe.c:240
#, c-format
msgid "tag '%s' is really '%s' here"
-msgstr "Markierung '%s' ist wirklich '%s' hier"
+msgstr "Markierung '%s' ist eigentlich '%s' hier"
#: builtin/describe.c:267
#, c-format
msgid "Not a valid object name %s"
-msgstr "kein gültiger Objekt-Name %s"
+msgstr "%s ist kein gültiger Objekt-Name"
#: builtin/describe.c:270
#, c-format
#: builtin/describe.c:289
#, c-format
msgid "searching to describe %s\n"
-msgstr "suche um zu beschreiben %s\n"
+msgstr "suche zur Beschreibung von %s\n"
#: builtin/describe.c:329
#, c-format
#: builtin/describe.c:378
#, c-format
msgid "traversed %lu commits\n"
-msgstr "verarbeitete %lu Versionen\n"
+msgstr "%lu Versionen durchlaufen\n"
#: builtin/describe.c:381
#, c-format
"more than %i tags found; listed %i most recent\n"
"gave up search at %s\n"
msgstr ""
-"mehr als %i Markierungen gefunden; Führe die %i jüngsten auf\n"
+"mehr als %i Markierungen gefunden; Führe die ersten %i auf\n"
"Suche bei %s aufgegeben\n"
#: builtin/describe.c:436
#: builtin/describe.c:482
msgid "--dirty is incompatible with committishes"
-msgstr "--dirty ist inkompatibel mit \"committish\"-Werten"
+msgstr "--dirty ist inkompatibel mit Versionen"
#: builtin/diff.c:77
#, c-format
#: builtin/diff.c:347
#, c-format
msgid "invalid object '%s' given."
-msgstr "Ungültiges Objekt '%s' gegeben."
+msgstr "Objekt '%s' ist ungültig."
#: builtin/diff.c:352
#, c-format
msgid "more than %d trees given: '%s'"
-msgstr "Mehr als %d Bäume gegeben: '%s'"
+msgstr "Mehr als %d Zweige angegeben: '%s'"
#: builtin/diff.c:362
#, c-format
msgid "more than two blobs given: '%s'"
-msgstr "Mehr als zwei Blobs gegeben: '%s'"
+msgstr "Mehr als zwei Blobs angegeben: '%s'"
#: builtin/diff.c:370
#, c-format
msgid "unhandled object '%s' given."
-msgstr "unbehandeltes Objekt '%s' gegeben"
+msgstr "unbehandeltes Objekt '%s' angegeben"
#: builtin/fetch.c:200
msgid "Couldn't find remote ref HEAD"
-msgstr "Konnte entfernte Referenz der Zweigspitze (HEAD) nicht finden."
+msgstr "Konnte externe Referenz der Zweigspitze (HEAD) nicht finden."
#: builtin/fetch.c:253
#, c-format
#: builtin/fetch.c:549
#, c-format
msgid " (%s will become dangling)\n"
-msgstr " (%s wird unreferenziert werden)\n"
+msgstr " (%s wird unreferenziert)\n"
#: builtin/fetch.c:550
#, c-format
#: builtin/fetch.c:558
msgid "(none)"
-msgstr "(keine)"
+msgstr "(nichts)"
#: builtin/fetch.c:675
#, c-format
msgid "Refusing to fetch into current branch %s of non-bare repository"
msgstr ""
-"Ablehnung des Anforderns in aktuellen Zweig %s von einem nicht-leeren "
-"Projektarchiv"
+"Das Anfordern in den aktuellen Zweig %s von einem nicht-bloßen"
+"\"Projektarchiv wurde verweigert."
#: builtin/fetch.c:709
#, c-format
#: builtin/fetch.c:888
#, c-format
msgid "Fetching %s\n"
-msgstr "Hole %s ab\n"
+msgstr "Fordere an von %s\n"
#: builtin/fetch.c:890
#, c-format
msgid "Could not fetch %s"
-msgstr "Konnte %s nicht anfordern"
+msgstr "Konnte nicht von %s anfordern"
#: builtin/fetch.c:907
msgid ""
"No remote repository specified. Please, specify either a URL or a\n"
"remote name from which new revisions should be fetched."
msgstr ""
-"Kein entferntes Projektarchiv spezifiziert. Bitte spezifiziere entweder\n"
-"eine URL oder einen Entfernungsname, von welchem neue Revisionen angefordert "
-"werden sollen."
+"Kein externes Projektarchiv angegeben. Bitte gebe entweder eine URL\n"
+"oder den Namen des externen Archivs an, von welchem neue\n"
+"Versionen angefordert werden sollen."
#: builtin/fetch.c:927
msgid "You need to specify a tag name."
-msgstr "Du musst den Namen der Markierung spezifizieren."
+msgstr "Du musst den Namen der Markierung angeben."
#: builtin/fetch.c:979
msgid "fetch --all does not take a repository argument"
-msgstr "fetch -all nimmt kein Projektarchiv als Argument"
+msgstr "fetch --all akzeptiert kein Projektarchiv als Argument"
#: builtin/fetch.c:981
msgid "fetch --all does not make sense with refspecs"
#: builtin/fetch.c:992
#, c-format
msgid "No such remote or remote group: %s"
-msgstr "Keine solche Entfernung oder Entfernungsgruppe: %s"
+msgstr "Kein externes Archiv (einzeln oder Gruppe): %s"
#: builtin/fetch.c:1000
msgid "Fetching a group and specifying refspecs does not make sense"
msgid "Invalid %s: '%s'"
msgstr "Ungültiger %s: '%s'"
-#: builtin/gc.c:78
-msgid "Too many options specified"
-msgstr "Zu viele Optionen spezifiziert"
-
-#: builtin/gc.c:103
+#: builtin/gc.c:90
#, c-format
msgid "insanely long object directory %.*s"
-msgstr "wahnsinnig langes Objekt-Verzeichnis %.*s"
+msgstr "zu langes Objekt-Verzeichnis %.*s"
-#: builtin/gc.c:223
+#: builtin/gc.c:221
#, c-format
msgid "Auto packing the repository for optimum performance.\n"
-msgstr "Automatische Paketierung des Repositories für optimale Leitung.\n"
+msgstr ""
+"Die Datenbank des Projektarchivs wird für eine optimale Performance "
+"komprimiert.\n"
-#: builtin/gc.c:226
+#: builtin/gc.c:224
#, c-format
msgid ""
"Auto packing the repository for optimum performance. You may also\n"
"run \"git gc\" manually. See \"git help gc\" for more information.\n"
msgstr ""
-"Automatische Paketierung des Repositories für optimale Leitung. Du darfst "
-"auch\n"
-"\"git gc\" manuell ausführen. Siehe \"git help gc\" für weitere "
-"Informationen.\n"
+"Die Datenbank des Projektarchivs wird für eine optimale Performance\n"
+"komprimiert. Du kannst auch \"git gc\" manuell ausführen. Siehe \"git help gc"
+"\" für weitere Informationen.\n"
-#: builtin/gc.c:256
+#: builtin/gc.c:251
msgid ""
"There are too many unreachable loose objects; run 'git prune' to remove them."
msgstr ""
-"Es gibt zu viele unerreichbare, verlorene Objekte; führe 'git prune' aus um "
-"diese zu entfernen."
+"Es gibt zu viele unerreichbare lose Objekte; führe 'git prune' aus, um diese "
+"zu entfernen."
#: builtin/grep.c:216
#, c-format
#: builtin/grep.c:478 builtin/grep.c:512
#, c-format
msgid "unable to read tree (%s)"
-msgstr "konnte Baum (%s) nicht lesen"
+msgstr "konnte Zweig (%s) nicht lesen"
#: builtin/grep.c:526
#, c-format
msgid "unable to grep from object of type %s"
-msgstr "kann \"grep\" nicht mit Objekt des Typs \"%s\" durchführen"
+msgstr "kann \"grep\" nicht mit Objekten des Typs \"%s\" durchführen"
#: builtin/grep.c:584
#, c-format
#: builtin/grep.c:902
#, c-format
msgid "bad object %s"
-msgstr "schlechtes Objekt %s"
+msgstr "ungültiges Objekt %s"
#: builtin/grep.c:943
msgid "--open-files-in-pager only works on the worktree"
#: builtin/grep.c:974
msgid "--[no-]exclude-standard cannot be used for tracked contents."
msgstr ""
-"--[no-]exlude-standard kann nicht mit verfolgten Inhalten benutzt werden"
+"--[no-]exlude-standard kann nicht mit beobachteten Inhalten benutzt werden"
#: builtin/grep.c:982
msgid "both --cached and trees are given."
-msgstr "sowohl --cached als auch Bäume gegeben"
+msgstr "sowohl --cached als auch Zweige gegeben"
#: builtin/init-db.c:35
#, c-format
#: builtin/init-db.c:62
#, c-format
msgid "insanely long template name %s"
-msgstr "verrückt langer Vorlagen-Name %s"
+msgstr "zu langer Vorlagen-Name %s"
#: builtin/init-db.c:67
#, c-format
msgid "cannot stat '%s'"
-msgstr "'%s' kann nicht gelesen werden"
+msgstr "Kann '%s' nicht lesen"
#: builtin/init-db.c:73
#, c-format
#: builtin/init-db.c:99
#, c-format
msgid "insanely long symlink %s"
-msgstr "verrückt lange symbolische Verknüpfung %s"
+msgstr "zu lange symbolische Verknüpfung %s"
#: builtin/init-db.c:102
#, c-format
msgid "cannot symlink '%s' '%s'"
-msgstr "kann '%s' '%s' nicht symbolisch verknüpfen"
+msgstr "kann '%s' nicht mit '%s' symbolisch verknüpfen"
#: builtin/init-db.c:106
#, c-format
#: builtin/init-db.c:133
#, c-format
msgid "insanely long template path %s"
-msgstr "verrückt langer Vorlagen-Pfad %s"
+msgstr "zu langer Vorlagen-Pfad %s"
#: builtin/init-db.c:141
#, c-format
msgid "templates not found %s"
-msgstr "Vorlagen nicht gefunden %s"
+msgstr "keine Vorlagen in '%s' gefunden"
#: builtin/init-db.c:154
#, c-format
#: builtin/init-db.c:192
#, c-format
msgid "insane git directory %s"
-msgstr "verrücktes git Verzeichnis %s"
+msgstr "ungültiges git Verzeichnis %s"
#: builtin/init-db.c:322 builtin/init-db.c:325
#, c-format
#: builtin/init-db.c:354
#, c-format
msgid "unable to handle file type %d"
-msgstr "kann Dateityp %d nicht behandeln"
+msgstr "kann nicht mit Dateityp %d umgehen"
#: builtin/init-db.c:357
#, c-format
msgid "unable to move %s to %s"
-msgstr "konnte %s nicht nach %s verschieben"
+msgstr "Konnte %s nicht nach %s verschieben"
#: builtin/init-db.c:362
#, c-format
#: builtin/init-db.c:421
msgid " shared"
-msgstr " geteilt"
+msgstr " geteiltes"
#: builtin/init-db.c:440
msgid "cannot tell cwd"
-msgstr "kann nicht \"cwd\" sagen"
+msgstr "kann aktuelles Verzeichnis nicht bestimmen"
#: builtin/init-db.c:521 builtin/init-db.c:528
#, c-format
#: builtin/init-db.c:532
#, c-format
msgid "cannot chdir to %s"
-msgstr "kann nicht zu Verzeichnis %s wechseln"
+msgstr "kann nicht in Verzeichnis %s wechseln"
#: builtin/init-db.c:554
#, c-format
#: builtin/log.c:700
msgid "Need exactly one range."
-msgstr "Brauche genau einen Bereich."
+msgstr "Brauche genau einen Versionsbereich."
#: builtin/log.c:708
msgid "Not a range."
-msgstr "Kein Bereich."
+msgstr "Kein Versionsbereich."
#: builtin/log.c:745
msgid "Could not extract email from committer identity."
-msgstr "Konnte E-Mail von der Intentität des Einreichers nicht extrahieren."
+msgstr "Konnte E-Mail-Adresse des Einreichers nicht extrahieren."
#: builtin/log.c:791
msgid "Cover letter needs email format"
#: builtin/log.c:885
#, c-format
msgid "insane in-reply-to: %s"
-msgstr "verrücktes in-reply-to: %s"
+msgstr "ungültiges in-reply-to: %s"
#: builtin/log.c:958
msgid "Two output directories?"
#: builtin/log.c:1224
msgid "-n and -k are mutually exclusive."
-msgstr "-n und -k sind zueinander exklusiv"
+msgstr "-n und -k schliessen sich gegenseitig aus"
#: builtin/log.c:1226
msgid "--subject-prefix and -k are mutually exclusive."
-msgstr "--subject-prefix und -k sind zueinander exklusiv"
+msgstr "--subject-prefix und -k schliessen sich gegenseitig aus"
#: builtin/log.c:1231 builtin/shortlog.c:284
#, c-format
msgid ""
"Could not find a tracked remote branch, please specify <upstream> manually.\n"
msgstr ""
-"Konnte gefolgten, entfernten Zweig nicht finden, bitte spezifiziere "
-"<upstream> manuell.\n"
+"Konnte gefolgten, externen Zweig nicht finden, bitte gebe <upstream> manuell "
+"an.\n"
#: builtin/log.c:1536 builtin/log.c:1538 builtin/log.c:1550
#, c-format
#: builtin/merge.c:329
#, c-format
msgid "Squash commit -- not updating HEAD\n"
-msgstr "Quetsche Version -- aktualisiere Zweigspitze (HEAD) nicht\n"
+msgstr "Quetsche Version -- Zweigspitze (HEAD) wird nicht aktualisiert\n"
#: builtin/merge.c:361
msgid "Writing SQUASH_MSG"
#, c-format
msgid "No merge message -- not updating HEAD\n"
msgstr ""
-"Keine Zusammenführungsbeschreibung -- aktualisiere Zweigspitze (HEAD) nicht\n"
+"Keine Zusammenführungsbeschreibung -- Zweigspitze (HEAD) wird nicht "
+"aktualisiert\n"
#: builtin/merge.c:437
#, c-format
#: builtin/merge.c:536
#, c-format
msgid "Bad branch.%s.mergeoptions string: %s"
-msgstr "Schlechter branch.%s.mergeoptions String: %s"
+msgstr "Ungültiger branch.%s.mergeoptions String: %s"
#: builtin/merge.c:629
msgid "git write-tree failed to write a tree"
#: builtin/merge.c:710
msgid "Not handling anything other than two heads merge."
-msgstr "Behandle nichts anderes als die Zusammenführung von zwei Köpfen."
+msgstr "Es wird nur die Zusammenführung von zwei Zweigen behandelt."
#: builtin/merge.c:724
#, c-format
#, c-format
msgid "Not committing merge; use 'git commit' to complete the merge.\n"
msgstr ""
-"Zusammenführung nicht eingetragen; benutze 'git commit' um die "
+"Zusammenführung wurde nicht eingetragen; benutze 'git commit' um die "
"Zusammenführung abzuschließen.\n"
#: builtin/merge.c:892
msgstr ""
"Bitte gebe eine Versionsbeschreibung ein um zu erklären, warum diese "
"Zusammenführung erforderlich ist,\n"
-"insbesondere wenn es einen aktualisierten entfernten Zweig mit einem Thema-"
+"insbesondere wenn es einen aktualisierten, externen Zweig mit einem Thema-"
"Zweig zusammenführt.\n"
"\n"
"Zeilen beginnend mit '#' werden ignoriert, und eine leere Beschreibung "
#: builtin/merge.c:1050
msgid "No current branch."
-msgstr "Kein aktueller Zweig."
+msgstr "Du befindest dich auf keinem Zweig."
#: builtin/merge.c:1052
msgid "No remote for the current branch."
-msgstr "Kein anderes Archiv für den aktuellen Zweig."
+msgstr "Kein externes Archiv für den aktuellen Zweig."
#: builtin/merge.c:1054
msgid "No default upstream defined for the current branch."
msgstr ""
-"Kein entferntes Standard-Projektarchiv für den aktuellen Zweig definiert."
+"Es ist kein externes Standard-Projektarchiv für den aktuellen Zweig "
+"definiert."
#: builtin/merge.c:1059
#, c-format
msgid "No remote tracking branch for %s from %s"
-msgstr "Kein entfernter Übernahmezweig für %s von %s"
+msgstr "Kein externer Übernahmezweig für %s von %s"
#: builtin/merge.c:1146 builtin/merge.c:1303
#, c-format
"You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
"Please, commit your changes before you can merge."
msgstr ""
-"Du hast deinen \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD "
-"existiert).\n"
+"Du hast \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert).\n"
"Bitte trage deine Änderungen ein, bevor du zusammenführen kannst."
#: builtin/merge.c:1240
msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
msgstr ""
-"Du hast deinen \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD "
-"existiert)."
+"Du hast \"cherry-pick\" nicht abgeschlossen (CHERRY_PICK_HEAD existiert)."
#: builtin/merge.c:1249
msgid "You cannot combine --squash with --no-ff."
#: builtin/merge.c:1261
msgid "No commit specified and merge.defaultToUpstream not set."
-msgstr "Keine Version spezifiziert und merge.defaultToUpstream nicht gesetzt."
+msgstr "Keine Version angegeben und merge.defaultToUpstream ist nicht gesetzt."
#: builtin/merge.c:1293
msgid "Can merge only exactly one commit into empty head"
-msgstr "Kann nur exakt eine Version in einem leeren Kopf zusammenführen."
+msgstr "Kann nur exakt eine Version in einem leeren Zweig zusammenführen."
#: builtin/merge.c:1296
msgid "Squash commit into empty head not supported yet"
-msgstr ""
-"Quetschen einer Version in einen leeren Kopf wird momentan nicht unterstützt."
+msgstr "Bin auf einem Zweig, der noch geboren wird; kann nicht quetschen."
#: builtin/merge.c:1298
msgid "Non-fast-forward commit does not make sense into an empty head"
-msgstr "nicht vorzuspulende Version macht in einem leeren Kopf keinen Sinn"
+msgstr "nicht vorzuspulende Version macht in einem leeren Zweig keinen Sinn"
#: builtin/merge.c:1413
#, c-format
#: builtin/merge.c:1513 builtin/merge.c:1592
#, c-format
msgid "Rewinding the tree to pristine...\n"
-msgstr "Rücklauf des Baumes bis zum Ursprung...\n"
+msgstr "Rücklauf des Zweiges bis zum Ursprung...\n"
#: builtin/merge.c:1517
#, c-format
#: builtin/merge.c:1583
#, c-format
msgid "No merge strategy handled the merge.\n"
-msgstr "Keine Zusammenführungsstrategie behandelt die Zusammenführung.\n"
+msgstr "Keine Zusammenführungsstrategie behandelt diese Zusammenführung.\n"
#: builtin/merge.c:1585
#, c-format
#, c-format
msgid "Automatic merge went well; stopped before committing as requested\n"
msgstr ""
-"Automatische Zusammenführung gut gegangen; stoppe, wie angefragt, vor der "
-"Eintragung\n"
+"Automatische Zusammenführung abgeschlossen; halte, wie gewünscht, vor der "
+"Eintragung an\n"
#: builtin/mv.c:108
#, c-format
msgid "Checking rename of '%s' to '%s'\n"
-msgstr "Prüfe Umbenennen von '%s' nach '%s'\n"
+msgstr "Prüfe Umbenennung von '%s' nach '%s'\n"
#: builtin/mv.c:112
msgid "bad source"
-msgstr "schlechte Quelle"
+msgstr "ungültige Quelle"
#: builtin/mv.c:115
msgid "can not move directory into itself"
#: builtin/mv.c:173
msgid "destination exists"
-msgstr "Ziel existiert"
+msgstr "Ziel existiert bereits"
#: builtin/mv.c:181
#, c-format
#: builtin/mv.c:215
#, c-format
msgid "renaming '%s' failed"
-msgstr "Umbenennen von '%s' fehlgeschlagen"
+msgstr "Umbenennung von '%s' fehlgeschlagen"
#: builtin/notes.c:139
#, c-format
#: builtin/notes.c:155
#, c-format
msgid "failed to close pipe to 'show' for object '%s'"
-msgstr "Schließen der Pipe zu 'show' für Objekt '%s' fehlgeschlagen."
+msgstr "Schließen der Verbindung zu 'show' ist für Objekt '%s' fehlgeschlagen."
#: builtin/notes.c:158
#, c-format
msgid "failed to finish 'show' for object '%s'"
-msgstr "'show' konnte für Objekt '%s' nicht abgeschlossen werden"
+msgstr "konnte 'show' für Objekt '%s' nicht abschließen"
#: builtin/notes.c:175 builtin/tag.c:343
#, c-format
#: builtin/notes.c:968 builtin/reset.c:293 builtin/tag.c:537
#, c-format
msgid "Failed to resolve '%s' as a valid ref."
-msgstr "'%s' konnte nicht als gültige Referenz aufgelöst werden."
+msgstr "Konnte '%s' nicht als gültige Referenz auflösen."
#: builtin/notes.c:275
#, c-format
#: builtin/notes.c:340
#, c-format
msgid "Bad notes.rewriteMode value: '%s'"
-msgstr "Schlechter notes.rewriteMode Wert: '%s'"
+msgstr "Ungültiger notes.rewriteMode Wert: '%s'"
#: builtin/notes.c:350
#, c-format
#: builtin/notes.c:377
#, c-format
msgid "Bad %s value: '%s'"
-msgstr "Schlechter %s Wert: '%s'"
+msgstr "Ungültiger %s Wert: '%s'"
#: builtin/notes.c:441
#, c-format
#: builtin/notes.c:668
#, c-format
msgid "Missing notes on source object %s. Cannot copy."
-msgstr "Vermisse Notizen für Quell-Objekt %s. Kann nicht kopieren."
+msgstr "Keine Notizen für Quell-Objekt %s. Kopie nicht möglich."
#: builtin/notes.c:717
#, c-format
"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 ""
-"Die Optionen -m/-F/-c/-C sind veraltet für das 'edit' Unterkommando.\n"
+"Die Optionen -m/-F/-c/-C sind für das Unterkommando 'edit' veraltet.\n"
"Bitte benutze stattdessen 'git notes add -f -m/-F/-c/-C'.\n"
#: builtin/notes.c:971
msgid "Unknown subcommand: %s"
msgstr "Unbekanntes Unterkommando: %s"
-#: builtin/pack-objects.c:2310
+#: builtin/pack-objects.c:2315
#, c-format
msgid "unsupported index version %s"
msgstr "Nicht unterstützte Bereitstellungsversion %s"
-#: builtin/pack-objects.c:2314
+#: builtin/pack-objects.c:2319
#, c-format
msgid "bad index version '%s'"
-msgstr "Schlechte Bereitstellungsversion '%s'"
+msgstr "Ungültige Bereitstellungsversion '%s'"
-#: builtin/pack-objects.c:2322
+#: builtin/pack-objects.c:2342
#, c-format
msgid "option %s does not accept negative form"
msgstr "Option %s akzeptiert keine negative Form"
-#: builtin/pack-objects.c:2326
+#: builtin/pack-objects.c:2346
#, c-format
msgid "unable to parse value '%s' for option %s"
-msgstr "konnte Wert '%s' für Option %s nicht analysieren"
+msgstr "konnte Wert '%s' für Option %s nicht parsen"
#: builtin/push.c:45
msgid "tag shorthand without <tag>"
"Um die Historie, führend zum aktuellen (freistehende Zweigspitze (HEAD))\n"
"Status zu versenden, benutze\n"
"\n"
-" git push %s HEAD:<Name-des-entfernten-Zweiges>\n"
+" git push %s HEAD:<Name-des-externen-Zweiges>\n"
#: builtin/push.c:91
#, c-format
"\n"
" git push --set-upstream %s %s\n"
msgstr ""
-"Der aktuelle Zweig %s hat keinen Zweig im entfernten Projektarchiv.\n"
-"Um den aktuellen Zweig zu versenden und die Entfernung als entferntes\n"
-"Projektarchiv zu setzen, benutze\n"
+"Der aktuelle Zweig %s hat keinen Zweig im externen Projektarchiv.\n"
+"Um den aktuellen Zweig zu versenden und das Fernarchiv als externes\n"
+"Projektarchiv zu verwenden, benutze\n"
"\n"
" git push --set-upstream %s %s\n"
#: builtin/push.c:99
#, c-format
msgid "The current branch %s has multiple upstream branches, refusing to push."
-msgstr ""
-"Der aktuelle Zweig %s hat mehrere entfernte Zweige, Versand verweigert."
+msgstr "Der aktuelle Zweig %s hat mehrere externe Zweige, Versand verweigert."
#: builtin/push.c:102
#, c-format
"your current branch '%s', without telling me what to push\n"
"to update which remote branch."
msgstr ""
-"Du versendest nach '%s', welches kein entferntes Projektarchiv deines\n"
+"Du versendest nach '%s', welches kein externes Projektarchiv deines\n"
"aktuellen Zweiges '%s' ist, ohne mir mitzuteilen, was ich versenden\n"
-"soll um welchen entfernten Zweig zu aktualisieren."
+"soll, um welchen externen Zweig zu aktualisieren."
#: builtin/push.c:131
msgid ""
"You didn't specify any refspecs to push, and push.default is \"nothing\"."
msgstr ""
-"Du hast keine Referenzspezifikationen zum Versenden spezifiziert, und push."
-"default ist \"nothing\"."
+"Du hast keine Referenzspezifikationen zum Versenden angegeben, und "
+"push.default ist \"nothing\"."
#: builtin/push.c:138
msgid ""
"See the 'Note about fast-forwards' in 'git push --help' for details."
msgstr ""
"Aktualisierungen wurden zurückgewiesen, weil die Spitze deines aktuellen\n"
-"Zweiges hinter seinem entfernten Gegenstück ist. Führe die entfernten\n"
-"Änderungen zusammen (z.B. 'git pull') bevor du erneut versendest.\n"
-"Siehe auch die 'Note about fast-forwards' Sektion von 'git push --help'\n"
-"für weitere Details."
+"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Führe die\n"
+"externen Änderungen zusammen (z.B. 'git pull') bevor du erneut versendest.\n"
+"Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help' für\n"
+"weitere Details."
#: builtin/push.c:144
msgid ""
"variable to 'current' or 'upstream' to push only the current branch."
msgstr ""
"Aktualisierungen wurden zurückgewiesen, weil die Spitze eines versendeten\n"
-"Zweiges hinter seinem entfernten Gegenstück ist. Wenn du nicht beabsichtigt\n"
-"hast, diesen Zweig zu versenden, kannst du auch den zu versendenden Zweig\n"
-"spezifizieren oder die Konfigurationsvariable 'push.default' zu 'current'\n"
-"oder 'upstream' setze, um nur den aktuellen Zweig zu versenden."
+"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Wenn du nicht\n"
+"beabsichtigt hast, diesen Zweig zu versenden, kannst du auch den zu versendenden\n"
+"Zweig spezifizieren oder die Konfigurationsvariable 'push.default' zu 'current'\n"
+"oder 'upstream' setzen, um nur den aktuellen Zweig zu versenden."
#: builtin/push.c:150
msgid ""
"See the 'Note about fast-forwards' in 'git push --help' for details."
msgstr ""
"Aktualisierungen wurden zurückgewiesen, weil die Spitze eines versendeten\n"
-"Zweiges hinter seinem entfernten Gegenstück ist. Checke diesen Zweig aus\n"
-"und führe die entfernten Änderungen zusammen (z.B. 'git pull') bevor du\n"
-"erneut versendest.\n"
-"Sie auch die 'Note about fast-forwards' Sektion von 'git push --help'\n"
+"Zweiges hinter seinem externen Gegenstück zurückgefallen ist. Checke diesen\n"
+"Zweig aus und führe die externen Änderungen zusammen (z.B. 'git pull')\n"
+"bevor du erneut versendest.\n"
+"Siehe auch die Sektion 'Note about fast-forwards' in 'git push --help'\n"
"für weitere Details."
#: builtin/push.c:190
#, c-format
msgid "Pushing to %s\n"
-msgstr "Schiebe zu %s\n"
+msgstr "Versende nach %s\n"
#: builtin/push.c:194
#, c-format
#: builtin/push.c:226
#, c-format
msgid "bad repository '%s'"
-msgstr "schlechtes Projektarchiv '%s'"
+msgstr "ungültiges Projektarchiv '%s'"
#: builtin/push.c:227
msgid ""
msgstr ""
"Kein Ziel zum Versenden konfiguriert.\n"
"Entweder spezifizierst du die URL von der Kommandozeile oder konfigurierst "
-"ein entferntes Projektarchiv unter Benutzung von\n"
+"ein externes Projektarchiv unter Benutzung von\n"
"\n"
" git remote add <Name> <URL>\n"
"\n"
msgid "--all and --mirror are incompatible"
msgstr "--all und --mirror sind inkompatibel"
-#: builtin/push.c:342
+#: builtin/push.c:334
msgid "--delete is incompatible with --all, --mirror and --tags"
msgstr "--delete ist inkompatibel mit --all, --mirror und --tags"
-#: builtin/push.c:344
+#: builtin/push.c:336
msgid "--delete doesn't make sense without any refs"
-msgstr "--delete macht ohne irgendeine Referenz ohne keinen Sinn"
+msgstr "--delete macht ohne irgendeine Referenz keinen Sinn"
#: builtin/reset.c:33
msgid "mixed"
-msgstr "gemischt"
+msgstr "mixed"
#: builtin/reset.c:33
msgid "soft"
-msgstr "weich"
+msgstr "soft"
#: builtin/reset.c:33
msgid "hard"
-msgstr "hart"
+msgstr "hard"
#: builtin/reset.c:33
msgid "keep"
-msgstr "halten"
+msgstr "keep"
#: builtin/reset.c:77
msgid "You do not have a valid HEAD."
#, c-format
msgid "Cannot do a %s reset in the middle of a merge."
msgstr ""
-"Kann keine %s Zurücksetzung innerhalb einer Zusammenführung durchführen."
+"Kann keine '%s' Zurücksetzung durchführen, während eine Zusammenführung im "
+"Gange ist."
#: builtin/reset.c:297
#, c-format
#: builtin/reset.c:313
#, c-format
msgid "Cannot do %s reset with paths."
-msgstr "Kann keine %s Zurücksetzung mit Pfaden machen."
+msgstr "Eine '%s' Zurücksetzung mit Pfaden ist nicht möglich."
#: builtin/reset.c:325
#, c-format
msgid "%s reset is not allowed in a bare repository"
-msgstr "%s Zurücksetzung ist in einem leeren Projektarchiv nicht erlaubt"
+msgstr "'%s' Zurücksetzung ist in einem bloßen Projektarchiv nicht erlaubt"
#: builtin/reset.c:341
#, c-format
msgid "Could not reset index file to revision '%s'."
-msgstr "Konnte Bereitstellungsdatei nicht zu Revision '%s' zurücksetzen."
+msgstr "Konnte Bereitstellungsdatei nicht zu Version '%s' zurücksetzen."
#: builtin/revert.c:70 builtin/revert.c:92
#, c-format
#: builtin/rm.c:194
#, c-format
msgid "not removing '%s' recursively without -r"
-msgstr "entferne '%s' nicht rekursiv ohne -r"
+msgstr "'%s' wird nicht ohne -r rekursiv entfernt"
#: builtin/rm.c:230
#, c-format
"\n"
"#\n"
"# Gebe eine Markierungsbeschreibung ein\n"
-"# Zeilen beginnend mit '#' werden ignoriert.\n"
+"# Zeilen, die mit '#' beginnen, werden ignoriert.\n"
"#\n"
#: builtin/tag.c:254
"\n"
"#\n"
"# Gebe eine Markierungsbeschreibung ein\n"
-"# Zeilen beginnend mit '#' werden behalten; du darfst diese selbst entfernen "
-"wenn du möchtest.\n"
+"# Zeilen, die mit '#' beginnen, werden behalten; du darfst diese\n"
+"# selbst entfernen wenn du möchtest.\n"
"#\n"
#: builtin/tag.c:294
#: builtin/tag.c:321
msgid "bad object type."
-msgstr "schlechter Objekt-Typ"
+msgstr "ungültiger Objekt-Typ"
#: builtin/tag.c:334
msgid "tag header too big."
#: builtin/tag.c:421
msgid "switch 'points-at' requires an object"
-msgstr "Wechseln von 'points-at' erfordert ein Objekt"
+msgstr "Option 'points-at' erfordert ein Objekt"
#: builtin/tag.c:423
#, c-format
"It does not apply to blobs recorded in its index."
msgstr ""
"Hast du den Patch per Hand editiert?\n"
-"Er kann nicht auf aufgezeichnete Blobs in seiner Bereitstellung angewendet "
-"werden."
+"Er kann nicht auf die Blobs in seiner 'index' Zeile angewendet werden."
#: git-am.sh:163
msgid "Falling back to patching base and 3-way merge..."
#: git-am.sh:513
msgid "Resolve operation not in progress, we are not resuming."
-msgstr "keine Auflösung in Durchführung, wir setzen nicht fort."
+msgstr "Es ist keine Auflösung im Gange, es wird nicht fortgesetzt."
#: git-am.sh:579
#, sh-format
#: git-am.sh:755
msgid "cannot be interactive without stdin connected to a terminal."
msgstr ""
-"Kann nicht interaktiv sein, ohne das die Standard-Eingabe mit einem Terminal "
-"verbunden ist."
+"Kann nicht interaktiv sein, ohne dass die Standard-Eingabe mit einem "
+"Terminal verbunden ist."
#. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
#. in your translation. The program will only accept English
#: git-bisect.sh:99
#, sh-format
msgid "'$arg' does not appear to be a valid revision"
-msgstr "'$arg' scheint keine gültige Option zu sein"
+msgstr "'$arg' scheint keine gültige Version zu sein"
#: git-bisect.sh:117
msgid "Bad HEAD - I need a HEAD"
-msgstr "Schlechte Zweigspitze (HEAD) - Ich brauche eine Zweigspitze (HEAD)"
+msgstr "Ungültige Zweigspitze (HEAD) - Zweigspitze (HEAD) wird benötigt"
#: git-bisect.sh:130
#, sh-format
#: git-bisect.sh:140
msgid "won't bisect on seeked tree"
-msgstr "werde nicht auf gesuchtem Baum halbieren"
+msgstr "\"bisect\" auf gesuchtem Zweig nicht möglich"
#: git-bisect.sh:144
msgid "Bad HEAD - strange symbolic ref"
-msgstr "Schlechte Zweigspitze (HEAD) - merkwürdige symbolische Referenz"
+msgstr "Ungültige Zweigspitze (HEAD) - merkwürdige symbolische Referenz"
#: git-bisect.sh:189
#, sh-format
msgid "Bad bisect_write argument: $state"
-msgstr "Schlechtes \"bisect_write\" Argument: $state"
+msgstr "Ungültiges \"bisect_write\" Argument: $state"
#: git-bisect.sh:218
#, sh-format
msgid "Bad rev input: $arg"
-msgstr "Schlechte Referenz-Eingabe: $arg"
+msgstr "Ungültige Referenz-Eingabe: $arg"
#: git-bisect.sh:232
msgid "Please call 'bisect_state' with at least one argument."
-msgstr "Bitte rufe 'bisect_state' mit mindestens einem Argument."
+msgstr "Bitte rufe 'bisect_state' mit mindestens einem Argument auf."
#: git-bisect.sh:244
#, sh-format
msgid "Bad rev input: $rev"
-msgstr "Schlechte Referenz-Eingabe: $rev"
+msgstr "Ungültige Referenz-Eingabe: $rev"
#: git-bisect.sh:250
msgid "'git bisect bad' can take only one argument."
"Could not check out original HEAD '$branch'.\n"
"Try 'git bisect reset <commit>'."
msgstr ""
-"Konnte die originale Zweigspitze (HEAD) '$branch' nicht auschecken.\n"
+"Konnte die ursprüngliche Zweigspitze (HEAD) '$branch' nicht auschecken.\n"
"Versuche 'git bisect reset <Version>'."
#: git-bisect.sh:390
"Please, fix them up in the work tree, and then use 'git add/rm <file>'\n"
"as appropriate to mark resolution, or use 'git commit -a'."
msgstr ""
-"\"pull\" ist nicht möglich weil du nicht zusammengeführte Dateien hast.\n"
+"\"pull\" ist nicht möglich, weil du nicht zusammengeführte Dateien hast.\n"
"Bitte korrigiere dies im Arbeitsbaum und benutze dann 'git add/rm <Datei>'\n"
-"wie vorgesehen, um die Auflösung zu markieren, oder benutze 'git commit -a'."
+"um die Auflösung entsprechend zu markieren, oder benutze 'git commit -a'."
#: git-pull.sh:25
msgid "Pull is not possible because you have unmerged files."
#: git-pull.sh:253
msgid "Cannot merge multiple branches into empty head"
-msgstr "Kann nicht mehrere Zweige in einen leeren Kopf zusammenführen"
+msgstr "Kann nicht mehrere Zweige in einen ungeborenen Zweig zusammenführen"
#: git-pull.sh:257
msgid "Cannot rebase onto multiple branches"
#: git-stash.sh:359
#, sh-format
msgid "Too many revisions specified: $REV"
-msgstr "Zu viele Revisionen spezifiziert: $REV"
+msgstr "Zu viele Revisionen angegeben: $REV"
#: git-stash.sh:365
#, sh-format
#: git-stash.sh:393
#, sh-format
msgid "'$args' is not a stash-like commit"
-msgstr "'$args' ist keine \"stash\"-artiger Version"
+msgstr "'$args' ist keine \"stash\"-artige Version"
#: git-stash.sh:404
#, sh-format
#: git-stash.sh:416
msgid "Cannot apply a stash in the middle of a merge"
-msgstr "Kann keinen \"stash\" innerhalb einer Zusammenführung anwenden"
+msgstr ""
+"Kann \"stash\" nicht anwenden, solang eine Zusammenführung im Gange ist"
#: git-stash.sh:424
msgid "Conflicts in index. Try without --index."
#: git-stash.sh:570
msgid "(To restore them type \"git stash apply\")"
-msgstr "(Um es wiederherzustellen schreibe \"git stash apply\")"
+msgstr "(Zur Wiederherstellung gebe \"git stash apply\" ein)"
#: git-submodule.sh:56
#, sh-format
msgid "cannot strip one component off url '$remoteurl'"
-msgstr "Kann eine Komponente von URL '$remoteurl' nicht abstreifen"
+msgstr "Kann eine Komponente von URL '$remoteurl' nicht extrahieren"
#: git-submodule.sh:109
#, sh-format
#, sh-format
msgid "Gitdir '$a' is part of the submodule path '$b' or vice versa"
msgstr ""
-"Git-Verzeichnis '$a' ist Teil des Unterprojekt-Pfades '$b' oder umgekehrt"
+"Git-Verzeichnis '$a' ist Teil des Unterprojekt-Pfades '$b', oder umgekehrt"
-#: git-submodule.sh:249
+#: git-submodule.sh:248
#, sh-format
msgid "repo URL: '$repo' must be absolute or begin with ./|../"
msgstr "repo URL: '$repo' muss absolut sein oder mit ./|../ beginnen"
-#: git-submodule.sh:266
-#, sh-format
-msgid "'$sm_path' already exists in the index"
-msgstr "'$sm_path' existiert bereits in der Bereitstellung"
+#: git-submodule.sh:265
+#, sh-format
+msgid "'$path' already exists in the index"
+msgstr "'$path' existiert bereits in der Bereitstellung"
-#: git-submodule.sh:283
+#: git-submodule.sh:282
#, sh-format
msgid "'$sm_path' already exists and is not a valid git repo"
msgstr "'$sm_path' existiert bereits und ist kein gültiges Git-Projektarchiv"
-#: git-submodule.sh:297
+#: git-submodule.sh:296
#, sh-format
msgid "Unable to checkout submodule '$sm_path'"
msgstr "Unfähig Unterprojekt '$sm_path' auszuchecken"
-#: git-submodule.sh:302
+#: git-submodule.sh:301
#, sh-format
msgid "Failed to add submodule '$sm_path'"
msgstr "Hinzufügen von Unterprojekt '$sm_path' fehlgeschlagen"
-#: git-submodule.sh:307
+#: git-submodule.sh:306
#, sh-format
msgid "Failed to register submodule '$sm_path'"
msgstr "Registierung von Unterprojekt '$sm_path' fehlgeschlagen"
-#: git-submodule.sh:349
+#: git-submodule.sh:348
#, sh-format
msgid "Entering '$prefix$sm_path'"
msgstr "Betrete '$prefix$sm_path'"
-#: git-submodule.sh:363
+#: git-submodule.sh:360
#, sh-format
msgid "Stopping at '$sm_path'; script returned non-zero status."
msgstr "Stoppe bei '$sm_path'; Skript gab nicht-Null Status zurück."
-#: git-submodule.sh:405
+#: git-submodule.sh:402
#, sh-format
msgid "No url found for submodule path '$sm_path' in .gitmodules"
msgstr "Keine URL für Unterprojekt-Pfad '$sm_path' in .gitmodules gefunden"
-#: git-submodule.sh:414
+#: git-submodule.sh:411
#, sh-format
msgid "Failed to register url for submodule path '$sm_path'"
-msgstr "Fehler beim Registrieren der URL für Unterprojekt-Pfad '$sm_path'"
+msgstr "Registrierung der URL für Unterprojekt-Pfad '$sm_path' fehlgeschlagen"
-#: git-submodule.sh:422
+#: git-submodule.sh:419
#, sh-format
msgid "Failed to register update mode for submodule path '$sm_path'"
-msgstr ""
-"Fehler beim Registrieren des Aktualisierungsmodus für Unterprojekt-Pfad "
-"'$sm_path'"
+msgstr "Registrierung des Aktualisierungsmodus für Unterprojekt-Pfad "
+"'$sm_path' fehlgeschlagen"
-#: git-submodule.sh:424
+#: git-submodule.sh:421
#, sh-format
msgid "Submodule '$name' ($url) registered for path '$sm_path'"
-msgstr "Unterprojekt '$name' ($url) registriert für Pfad '$sm_path'"
+msgstr "Unterprojekt '$name' ($url) ist für Pfad '$sm_path' registriert"
-#: git-submodule.sh:523
+#: git-submodule.sh:520
#, sh-format
msgid ""
"Submodule path '$sm_path' not initialized\n"
"Maybe you want to use 'update --init'?"
msgstr ""
-"Unterprojekt-Pfad '$sm_path' nicht initialisiert\n"
+"Unterprojekt-Pfad '$sm_path' ist nicht initialisiert\n"
"Vielleicht möchtest du 'update --init' benutzen?"
-#: git-submodule.sh:536
+#: git-submodule.sh:533
#, sh-format
msgid "Unable to find current revision in submodule path '$sm_path'"
-msgstr "Konnte aktuelle Revision in Unterprojekt-Pfad '$sm_path' nicht finden"
+msgstr "Konnte aktuelle Version in Unterprojekt-Pfad '$sm_path' nicht finden"
-#: git-submodule.sh:555
+#: git-submodule.sh:552
#, sh-format
msgid "Unable to fetch in submodule path '$sm_path'"
msgstr "Konnte in Unterprojekt-Pfad '$sm_path' nicht anfordern"
-#: git-submodule.sh:569
+#: git-submodule.sh:566
#, sh-format
msgid "Unable to rebase '$sha1' in submodule path '$sm_path'"
msgstr "Neuaufbau von '$sha1' in Unterprojekt-Pfad '$sm_path' nicht möglich"
-#: git-submodule.sh:570
+#: git-submodule.sh:567
#, sh-format
msgid "Submodule path '$sm_path': rebased into '$sha1'"
msgstr "Unterprojekt-Pfad '$sm_path': neu aufgebaut in '$sha1'"
-#: git-submodule.sh:575
+#: git-submodule.sh:572
#, sh-format
msgid "Unable to merge '$sha1' in submodule path '$sm_path'"
-msgstr "Konnte '$sha1' nicht in Unterprojekt-Pfad '$sm_path' zusammenführen"
+msgstr ""
+"Zusammenführung von '$sha1' in Unterprojekt-Pfad '$sm_path' fehlgeschlagen"
-#: git-submodule.sh:576
+#: git-submodule.sh:573
#, sh-format
msgid "Submodule path '$sm_path': merged in '$sha1'"
msgstr "Unterprojekt-Pfad '$sm_path': zusammengeführt in '$sha1'"
-#: git-submodule.sh:581
+#: git-submodule.sh:578
#, sh-format
msgid "Unable to checkout '$sha1' in submodule path '$sm_path'"
msgstr "Konnte '$sha1' in Unterprojekt-Pfad '$sm_path' nicht auschecken."
-#: git-submodule.sh:582
+#: git-submodule.sh:579
#, sh-format
msgid "Submodule path '$sm_path': checked out '$sha1'"
msgstr "Unterprojekt-Pfad: '$sm_path': '$sha1' ausgecheckt"
-#: git-submodule.sh:604 git-submodule.sh:927
+#: git-submodule.sh:601 git-submodule.sh:924
#, sh-format
msgid "Failed to recurse into submodule path '$sm_path'"
msgstr "Fehler bei Rekursion in Unterprojekt-Pfad '$sm_path'"
-#: git-submodule.sh:712
+#: git-submodule.sh:709
msgid "--"
msgstr "--"
-#: git-submodule.sh:770
+#: git-submodule.sh:767
#, sh-format
msgid " Warn: $name doesn't contain commit $sha1_src"
msgstr " Warnung: $name beinhaltet nicht Version $sha1_src"
-#: git-submodule.sh:773
+#: git-submodule.sh:770
#, sh-format
msgid " Warn: $name doesn't contain commit $sha1_dst"
msgstr " Warnung: $name beinhaltet nicht Version $sha1_dst"
-#: git-submodule.sh:776
+#: git-submodule.sh:773
#, sh-format
msgid " Warn: $name doesn't contain commits $sha1_src and $sha1_dst"
-msgstr " Warnung: $name beinhaltet nich die Versionen $sha1_src und $sha1_dst"
+msgstr ""
+" Warnung: $name beinhaltet nicht die Versionen $sha1_src und $sha1_dst"
-#: git-submodule.sh:801
+#: git-submodule.sh:798
msgid "blob"
msgstr "Blob"
-#: git-submodule.sh:802
+#: git-submodule.sh:799
msgid "submodule"
msgstr "Unterprojekt"
-#: git-submodule.sh:973
+#: git-submodule.sh:970
#, sh-format
msgid "Synchronizing submodule url for '$name'"
msgstr "Synchronisiere Unterprojekt-URL für '$name'"
+
+#~ msgid "Too many options specified"
+#~ msgstr "Zu viele Optionen angegeben"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2012-04-28 20:17+0800\n"
+"POT-Creation-Date: 2012-05-15 06:42+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"or use 'git commit -a'."
msgstr ""
+#: bundle.c:36
+#, c-format
+msgid "'%s' does not look like a v2 bundle file"
+msgstr ""
+
+#: bundle.c:63
+#, c-format
+msgid "unrecognized header: %s%s (%d)"
+msgstr ""
+
+#: bundle.c:89 builtin/commit.c:697
+#, c-format
+msgid "could not open '%s'"
+msgstr ""
+
+#: bundle.c:140
+msgid "Repository lacks these prerequisite commits:"
+msgstr ""
+
+#: bundle.c:164 sequencer.c:533 sequencer.c:965 builtin/log.c:289
+#: builtin/log.c:719 builtin/log.c:1335 builtin/log.c:1554 builtin/merge.c:347
+#: builtin/shortlog.c:181
+msgid "revision walk setup failed"
+msgstr ""
+
+#: bundle.c:186
+#, c-format
+msgid "The bundle contains %d ref"
+msgid_plural "The bundle contains %d refs"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bundle.c:192
+#, c-format
+msgid "The bundle requires this ref"
+msgid_plural "The bundle requires these %d refs"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bundle.c:290
+msgid "rev-list died"
+msgstr ""
+
+#: bundle.c:296 builtin/log.c:1231 builtin/shortlog.c:284
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr ""
+
+#: bundle.c:331
+#, c-format
+msgid "ref '%s' is excluded by the rev-list options"
+msgstr ""
+
+#: bundle.c:376
+msgid "Refusing to create empty bundle."
+msgstr ""
+
+#: bundle.c:394
+msgid "Could not spawn pack-objects"
+msgstr ""
+
+#: bundle.c:412
+msgid "pack-objects died"
+msgstr ""
+
+#: bundle.c:415
+#, c-format
+msgid "cannot create '%s'"
+msgstr ""
+
+#: bundle.c:437
+msgid "index-pack died"
+msgstr ""
+
#: commit.c:48
#, c-format
msgid "could not parse %s"
msgid "failed to close rev-list's stdin: %s"
msgstr ""
+#: date.c:95
+msgid "in the future"
+msgstr ""
+
+#: date.c:101
+#, c-format
+msgid "%lu second ago"
+msgid_plural "%lu seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:108
+#, c-format
+msgid "%lu minute ago"
+msgid_plural "%lu minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:115
+#, c-format
+msgid "%lu hour ago"
+msgid_plural "%lu hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:122
+#, c-format
+msgid "%lu day ago"
+msgid_plural "%lu days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:128
+#, c-format
+msgid "%lu week ago"
+msgid_plural "%lu weeks ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:135
+#, c-format
+msgid "%lu month ago"
+msgid_plural "%lu months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:146
+#, c-format
+msgid "%lu year"
+msgid_plural "%lu years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:149
+#, c-format
+msgid "%s, %lu month ago"
+msgid_plural "%s, %lu months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:154 date.c:159
+#, c-format
+msgid "%lu year ago"
+msgid_plural "%lu years ago"
+msgstr[0] ""
+msgstr[1] ""
+
#: diff.c:105
#, c-format
msgid " Failed to parse dirstat cut-off percentage '%.*s'\n"
msgstr[0] ""
msgstr[1] ""
-#: diff.c:3435
+#: diff.c:3478
#, c-format
msgid ""
"Failed to parse --dirstat/-X option parameter:\n"
msgid "'%s': short read %s"
msgstr ""
-#: help.c:287
+#: help.c:207
+#, c-format
+msgid "available git commands in '%s'"
+msgstr ""
+
+#: help.c:214
+msgid "git commands available from elsewhere on your $PATH"
+msgstr ""
+
+#: help.c:270
#, 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 ""
+#: help.c:327
+msgid "Uh oh. Your system reports no Git commands at all."
+msgstr ""
+
+#: help.c:349
+#, c-format
+msgid ""
+"WARNING: You called a Git command named '%s', which does not exist.\n"
+"Continuing under the assumption that you meant '%s'"
+msgstr ""
+
+#: help.c:354
+#, c-format
+msgid "in %0.1f seconds automatically..."
+msgstr ""
+
+#: help.c:361
+#, c-format
+msgid "git: '%s' is not a git command. See 'git --help'."
+msgstr ""
+
+#: help.c:365
+msgid ""
+"\n"
+"Did you mean this?"
+msgid_plural ""
+"\n"
+"Did you mean one of these?"
+msgstr[0] ""
+msgstr[1] ""
+
#: remote.c:1607
#, c-format
msgid "Your branch is ahead of '%s' by %d commit.\n"
msgstr[0] ""
msgstr[1] ""
-#: sequencer.c:120 builtin/merge.c:865 builtin/merge.c:978
+#: sequencer.c:121 builtin/merge.c:865 builtin/merge.c:978
#: builtin/merge.c:1088 builtin/merge.c:1098
#, c-format
msgid "Could not open '%s' for writing"
msgstr ""
-#: sequencer.c:122 builtin/merge.c:333 builtin/merge.c:868
+#: sequencer.c:123 builtin/merge.c:333 builtin/merge.c:868
#: builtin/merge.c:1090 builtin/merge.c:1103
#, c-format
msgid "Could not write to '%s'"
msgstr ""
-#: sequencer.c:143
+#: sequencer.c:144
msgid ""
"after resolving the conflicts, mark the corrected paths\n"
"with 'git add <paths>' or 'git rm <paths>'"
msgstr ""
-#: sequencer.c:146
+#: sequencer.c:147
msgid ""
"after resolving the conflicts, mark the corrected paths\n"
"with 'git add <paths>' or 'git rm <paths>'\n"
"and commit the result with 'git commit'"
msgstr ""
-#: sequencer.c:159 sequencer.c:685 sequencer.c:768
+#: sequencer.c:160 sequencer.c:741 sequencer.c:824
#, c-format
msgid "Could not write to %s"
msgstr ""
-#: sequencer.c:162
+#: sequencer.c:163
#, c-format
msgid "Error wrapping up %s"
msgstr ""
-#: sequencer.c:177
+#: sequencer.c:178
msgid "Your local changes would be overwritten by cherry-pick."
msgstr ""
-#: sequencer.c:179
+#: sequencer.c:180
msgid "Your local changes would be overwritten by revert."
msgstr ""
-#: sequencer.c:182
+#: sequencer.c:183
msgid "Commit your changes or stash them to proceed."
msgstr ""
#. TRANSLATORS: %s will be "revert" or "cherry-pick"
-#: sequencer.c:232
+#: sequencer.c:233
#, c-format
msgid "%s: Unable to write new index file"
msgstr ""
-#: sequencer.c:298
+#: sequencer.c:261
+msgid "Could not resolve HEAD commit\n"
+msgstr ""
+
+#: sequencer.c:282
+msgid "Unable to update cache tree\n"
+msgstr ""
+
+#: sequencer.c:323
+#, c-format
+msgid "Could not parse commit %s\n"
+msgstr ""
+
+#: sequencer.c:328
+#, c-format
+msgid "Could not parse parent commit %s\n"
+msgstr ""
+
+#: sequencer.c:358
msgid "Your index file is unmerged."
msgstr ""
-#: sequencer.c:301
+#: sequencer.c:361
msgid "You do not have a valid HEAD"
msgstr ""
-#: sequencer.c:316
+#: sequencer.c:376
#, c-format
msgid "Commit %s is a merge but no -m option was given."
msgstr ""
-#: sequencer.c:324
+#: sequencer.c:384
#, c-format
msgid "Commit %s does not have parent %d"
msgstr ""
-#: sequencer.c:328
+#: sequencer.c:388
#, c-format
msgid "Mainline was specified but commit %s is not a merge."
msgstr ""
#. TRANSLATORS: The first %s will be "revert" or
#. "cherry-pick", the second %s a SHA1
-#: sequencer.c:339
+#: sequencer.c:399
#, c-format
msgid "%s: cannot parse parent commit %s"
msgstr ""
-#: sequencer.c:343
+#: sequencer.c:403
#, c-format
msgid "Cannot get commit message for %s"
msgstr ""
-#: sequencer.c:427
+#: sequencer.c:491
#, c-format
msgid "could not revert %s... %s"
msgstr ""
-#: sequencer.c:428
+#: sequencer.c:492
#, c-format
msgid "could not apply %s... %s"
msgstr ""
-#: sequencer.c:450 sequencer.c:909 builtin/log.c:289 builtin/log.c:719
-#: builtin/log.c:1335 builtin/log.c:1554 builtin/merge.c:347
-#: builtin/shortlog.c:181
-msgid "revision walk setup failed"
-msgstr ""
-
-#: sequencer.c:453
+#: sequencer.c:536
msgid "empty commit set passed"
msgstr ""
-#: sequencer.c:461
+#: sequencer.c:544
#, c-format
msgid "git %s: failed to read the index"
msgstr ""
-#: sequencer.c:466
+#: sequencer.c:549
#, c-format
msgid "git %s: failed to refresh the index"
msgstr ""
-#: sequencer.c:551
+#: sequencer.c:607
#, c-format
msgid "Cannot %s during a %s"
msgstr ""
-#: sequencer.c:573
+#: sequencer.c:629
#, c-format
msgid "Could not parse line %d."
msgstr ""
-#: sequencer.c:578
+#: sequencer.c:634
msgid "No commits parsed."
msgstr ""
-#: sequencer.c:591
+#: sequencer.c:647
#, c-format
msgid "Could not open %s"
msgstr ""
-#: sequencer.c:595
+#: sequencer.c:651
#, c-format
msgid "Could not read %s."
msgstr ""
-#: sequencer.c:602
+#: sequencer.c:658
#, c-format
msgid "Unusable instruction sheet: %s"
msgstr ""
-#: sequencer.c:630
+#: sequencer.c:686
#, c-format
msgid "Invalid key: %s"
msgstr ""
-#: sequencer.c:633
+#: sequencer.c:689
#, c-format
msgid "Invalid value for %s: %s"
msgstr ""
-#: sequencer.c:645
+#: sequencer.c:701
#, c-format
msgid "Malformed options sheet: %s"
msgstr ""
-#: sequencer.c:666
+#: sequencer.c:722
msgid "a cherry-pick or revert is already in progress"
msgstr ""
-#: sequencer.c:667
+#: sequencer.c:723
msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
msgstr ""
-#: sequencer.c:671
+#: sequencer.c:727
#, c-format
msgid "Could not create sequencer directory %s"
msgstr ""
-#: sequencer.c:687 sequencer.c:772
+#: sequencer.c:743 sequencer.c:828
#, c-format
msgid "Error wrapping up %s."
msgstr ""
-#: sequencer.c:706 sequencer.c:840
+#: sequencer.c:762 sequencer.c:896
msgid "no cherry-pick or revert in progress"
msgstr ""
-#: sequencer.c:708
+#: sequencer.c:764
msgid "cannot resolve HEAD"
msgstr ""
-#: sequencer.c:710
+#: sequencer.c:766
msgid "cannot abort from a branch yet to be born"
msgstr ""
-#: sequencer.c:732
+#: sequencer.c:788 builtin/apply.c:3689
#, c-format
msgid "cannot open %s: %s"
msgstr ""
-#: sequencer.c:735
+#: sequencer.c:791
#, c-format
msgid "cannot read %s: %s"
msgstr ""
-#: sequencer.c:736
+#: sequencer.c:792
msgid "unexpected end of file"
msgstr ""
-#: sequencer.c:742
+#: sequencer.c:798
#, c-format
msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
msgstr ""
-#: sequencer.c:765
+#: sequencer.c:821
#, c-format
msgid "Could not format %s."
msgstr ""
-#: sequencer.c:927
+#: sequencer.c:983
msgid "Can't revert as initial commit"
msgstr ""
-#: sequencer.c:928
+#: sequencer.c:984
msgid "Can't cherry-pick into empty head"
msgstr ""
msgid "Upstream branch '%s' not stored as a remote-tracking branch"
msgstr ""
-#: wt-status.c:134
+#: wt-status.c:135
msgid "Unmerged paths:"
msgstr ""
-#: wt-status.c:140 wt-status.c:157
+#: wt-status.c:141 wt-status.c:158
#, c-format
msgid " (use \"git reset %s <file>...\" to unstage)"
msgstr ""
-#: wt-status.c:142 wt-status.c:159
+#: wt-status.c:143 wt-status.c:160
msgid " (use \"git rm --cached <file>...\" to unstage)"
msgstr ""
-#: wt-status.c:143
+#: wt-status.c:144
msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)"
msgstr ""
-#: wt-status.c:151
+#: wt-status.c:152
msgid "Changes to be committed:"
msgstr ""
-#: wt-status.c:169
+#: wt-status.c:170
msgid "Changes not staged for commit:"
msgstr ""
-#: wt-status.c:173
+#: wt-status.c:174
msgid " (use \"git add <file>...\" to update what will be committed)"
msgstr ""
-#: wt-status.c:175
+#: wt-status.c:176
msgid " (use \"git add/rm <file>...\" to update what will be committed)"
msgstr ""
-#: wt-status.c:176
+#: wt-status.c:177
msgid ""
" (use \"git checkout -- <file>...\" to discard changes in working directory)"
msgstr ""
-#: wt-status.c:178
+#: wt-status.c:179
msgid " (commit or discard the untracked or modified content in submodules)"
msgstr ""
-#: wt-status.c:187
+#: wt-status.c:188
#, c-format
msgid "%s files:"
msgstr ""
-#: wt-status.c:190
+#: wt-status.c:191
#, c-format
msgid " (use \"git %s <file>...\" to include in what will be committed)"
msgstr ""
-#: wt-status.c:207
+#: wt-status.c:208
msgid "bug"
msgstr ""
-#: wt-status.c:212
+#: wt-status.c:213
msgid "both deleted:"
msgstr ""
-#: wt-status.c:213
+#: wt-status.c:214
msgid "added by us:"
msgstr ""
-#: wt-status.c:214
+#: wt-status.c:215
msgid "deleted by them:"
msgstr ""
-#: wt-status.c:215
+#: wt-status.c:216
msgid "added by them:"
msgstr ""
-#: wt-status.c:216
+#: wt-status.c:217
msgid "deleted by us:"
msgstr ""
-#: wt-status.c:217
+#: wt-status.c:218
msgid "both added:"
msgstr ""
-#: wt-status.c:218
+#: wt-status.c:219
msgid "both modified:"
msgstr ""
-#: wt-status.c:248
+#: wt-status.c:249
msgid "new commits, "
msgstr ""
-#: wt-status.c:250
+#: wt-status.c:251
msgid "modified content, "
msgstr ""
-#: wt-status.c:252
+#: wt-status.c:253
msgid "untracked content, "
msgstr ""
-#: wt-status.c:266
+#: wt-status.c:267
#, c-format
msgid "new file: %s"
msgstr ""
-#: wt-status.c:269
+#: wt-status.c:270
#, c-format
msgid "copied: %s -> %s"
msgstr ""
-#: wt-status.c:272
+#: wt-status.c:273
#, c-format
msgid "deleted: %s"
msgstr ""
-#: wt-status.c:275
+#: wt-status.c:276
#, c-format
msgid "modified: %s"
msgstr ""
-#: wt-status.c:278
+#: wt-status.c:279
#, c-format
msgid "renamed: %s -> %s"
msgstr ""
-#: wt-status.c:281
+#: wt-status.c:282
#, c-format
msgid "typechange: %s"
msgstr ""
-#: wt-status.c:284
+#: wt-status.c:285
#, c-format
msgid "unknown: %s"
msgstr ""
-#: wt-status.c:287
+#: wt-status.c:288
#, c-format
msgid "unmerged: %s"
msgstr ""
-#: wt-status.c:290
+#: wt-status.c:291
#, c-format
msgid "bug: unhandled diff status %c"
msgstr ""
-#: wt-status.c:713
+#: wt-status.c:737
msgid "On branch "
msgstr ""
-#: wt-status.c:720
+#: wt-status.c:744
msgid "Not currently on any branch."
msgstr ""
-#: wt-status.c:731
+#: wt-status.c:755
msgid "Initial commit"
msgstr ""
-#: wt-status.c:745
+#: wt-status.c:769
msgid "Untracked"
msgstr ""
-#: wt-status.c:747
+#: wt-status.c:771
msgid "Ignored"
msgstr ""
-#: wt-status.c:749
+#: wt-status.c:773
#, c-format
msgid "Untracked files not listed%s"
msgstr ""
-#: wt-status.c:751
+#: wt-status.c:775
msgid " (use -u option to show untracked files)"
msgstr ""
-#: wt-status.c:757
+#: wt-status.c:781
msgid "No changes"
msgstr ""
-#: wt-status.c:761
+#: wt-status.c:785
#, c-format
msgid "no changes added to commit%s\n"
msgstr ""
-#: wt-status.c:763
+#: wt-status.c:787
msgid " (use \"git add\" and/or \"git commit -a\")"
msgstr ""
-#: wt-status.c:765
+#: wt-status.c:789
#, c-format
msgid "nothing added to commit but untracked files present%s\n"
msgstr ""
-#: wt-status.c:767
+#: wt-status.c:791
msgid " (use \"git add\" to track)"
msgstr ""
-#: wt-status.c:769 wt-status.c:772 wt-status.c:775
+#: wt-status.c:793 wt-status.c:796 wt-status.c:799
#, c-format
msgid "nothing to commit%s\n"
msgstr ""
-#: wt-status.c:770
+#: wt-status.c:794
msgid " (create/copy files and use \"git add\" to track)"
msgstr ""
-#: wt-status.c:773
+#: wt-status.c:797
msgid " (use -u to show untracked files)"
msgstr ""
-#: wt-status.c:776
+#: wt-status.c:800
msgid " (working directory clean)"
msgstr ""
-#: wt-status.c:884
+#: wt-status.c:908
msgid "HEAD (no branch)"
msgstr ""
-#: wt-status.c:890
+#: wt-status.c:914
msgid "Initial commit on "
msgstr ""
-#: wt-status.c:905
+#: wt-status.c:929
msgid "behind "
msgstr ""
-#: wt-status.c:908 wt-status.c:911
+#: wt-status.c:932 wt-status.c:935
msgid "ahead "
msgstr ""
-#: wt-status.c:913
+#: wt-status.c:937
msgid ", behind "
msgstr ""
msgid "unexpected diff status %c"
msgstr ""
-#: builtin/add.c:67 builtin/commit.c:298
+#: builtin/add.c:67 builtin/commit.c:226
msgid "updating files failed"
msgstr ""
msgid "Maybe you wanted to say 'git add .'?\n"
msgstr ""
-#: builtin/add.c:420 builtin/clean.c:95 builtin/commit.c:358 builtin/mv.c:82
+#: builtin/add.c:420 builtin/clean.c:95 builtin/commit.c:286 builtin/mv.c:82
#: builtin/rm.c:162
msgid "index file corrupt"
msgstr ""
-#: builtin/add.c:476 builtin/mv.c:229 builtin/rm.c:260
+#: builtin/add.c:476 builtin/apply.c:4100 builtin/mv.c:229 builtin/rm.c:260
msgid "Unable to write new index file"
msgstr ""
-#: builtin/archive.c:17
+#: builtin/apply.c:106
#, c-format
-msgid "could not create archive file '%s'"
+msgid "unrecognized whitespace option '%s'"
msgstr ""
-#: builtin/archive.c:20
-msgid "could not redirect output"
+#: builtin/apply.c:121
+#, c-format
+msgid "unrecognized whitespace ignore option '%s'"
msgstr ""
-#: builtin/archive.c:37
-msgid "git archive: Remote with no URL"
+#: builtin/apply.c:815
+#, c-format
+msgid "Cannot prepare timestamp regexp %s"
msgstr ""
-#: builtin/archive.c:58
-msgid "git archive: expected ACK/NAK, got EOF"
+#: builtin/apply.c:824
+#, c-format
+msgid "regexec returned %d for input: %s"
msgstr ""
-#: builtin/archive.c:63
+#: builtin/apply.c:905
#, c-format
-msgid "git archive: NACK %s"
+msgid "unable to find filename in patch at line %d"
msgstr ""
-#: builtin/archive.c:65
+#: builtin/apply.c:937
#, c-format
-msgid "remote error: %s"
+msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
msgstr ""
-#: builtin/archive.c:66
-msgid "git archive: protocol error"
+#: builtin/apply.c:941
+#, c-format
+msgid "git apply: bad git-diff - inconsistent new filename on line %d"
msgstr ""
-#: builtin/archive.c:71
-msgid "git archive: expected a flush"
+#: builtin/apply.c:942
+#, c-format
+msgid "git apply: bad git-diff - inconsistent old filename on line %d"
msgstr ""
-#: builtin/branch.c:137
+#: builtin/apply.c:949
#, c-format
-msgid ""
-"deleting branch '%s' that has been merged to\n"
-" '%s', but not yet merged to HEAD."
+msgid "git apply: bad git-diff - expected /dev/null on line %d"
msgstr ""
-#: builtin/branch.c:141
+#: builtin/apply.c:1394
#, c-format
-msgid ""
-"not deleting branch '%s' that is not yet merged to\n"
-" '%s', even though it is merged to HEAD."
+msgid "recount: unexpected line: %.*s"
msgstr ""
-#. TRANSLATORS: This is "remote " in "remote branch '%s' not found"
-#: builtin/branch.c:164
-msgid "remote "
+#: builtin/apply.c:1451
+#, c-format
+msgid "patch fragment without header at line %d: %.*s"
msgstr ""
-#: builtin/branch.c:172
-msgid "cannot use -a with -d"
-msgstr ""
+#: builtin/apply.c:1468
+#, 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] ""
+msgstr[1] ""
-#: builtin/branch.c:178
-msgid "Couldn't look up commit object for HEAD"
+#: builtin/apply.c:1628
+msgid "new file depends on old contents"
msgstr ""
-#: builtin/branch.c:183
-#, c-format
-msgid "Cannot delete the branch '%s' which you are currently on."
+#: builtin/apply.c:1630
+msgid "deleted file still has contents"
msgstr ""
-#: builtin/branch.c:193
+#: builtin/apply.c:1656
#, c-format
-msgid "%sbranch '%s' not found."
+msgid "corrupt patch at line %d"
msgstr ""
-#: builtin/branch.c:201
+#: builtin/apply.c:1692
#, c-format
-msgid "Couldn't look up commit object for '%s'"
+msgid "new file %s depends on old contents"
msgstr ""
-#: builtin/branch.c:207
+#: builtin/apply.c:1694
#, c-format
-msgid ""
-"The branch '%s' is not fully merged.\n"
-"If you are sure you want to delete it, run 'git branch -D %s'."
+msgid "deleted file %s still has contents"
msgstr ""
-#: builtin/branch.c:215
+#: builtin/apply.c:1697
#, c-format
-msgid "Error deleting %sbranch '%s'"
+msgid "** warning: file %s becomes empty but is not deleted"
msgstr ""
-#: builtin/branch.c:221
+#: builtin/apply.c:1843
#, c-format
-msgid "Deleted %sbranch %s (was %s).\n"
-msgstr ""
-
-#: builtin/branch.c:226
-msgid "Update of config-file failed"
+msgid "corrupt binary patch at line %d: %.*s"
msgstr ""
-#: builtin/branch.c:324
+#. there has to be one hunk (forward hunk)
+#: builtin/apply.c:1872
#, c-format
-msgid "branch '%s' does not point at a commit"
+msgid "unrecognized binary patch at line %d"
msgstr ""
-#: builtin/branch.c:396
+#: builtin/apply.c:1958
#, c-format
-msgid "behind %d] "
+msgid "patch with only garbage at line %d"
msgstr ""
-#: builtin/branch.c:398
+#: builtin/apply.c:2048
#, c-format
-msgid "ahead %d] "
+msgid "unable to read symlink %s"
msgstr ""
-#: builtin/branch.c:400
+#: builtin/apply.c:2052
#, c-format
-msgid "ahead %d, behind %d] "
+msgid "unable to open or read %s"
msgstr ""
-#: builtin/branch.c:503
-msgid "(no branch)"
+#: builtin/apply.c:2123
+msgid "oops"
msgstr ""
-#: builtin/branch.c:568
-msgid "some refs could not be read"
+#: builtin/apply.c:2645
+#, c-format
+msgid "invalid start of line: '%c'"
msgstr ""
-#: builtin/branch.c:581
-msgid "cannot rename the current branch while not on any."
-msgstr ""
+#: builtin/apply.c:2763
+#, c-format
+msgid "Hunk #%d succeeded at %d (offset %d line)."
+msgid_plural "Hunk #%d succeeded at %d (offset %d lines)."
+msgstr[0] ""
+msgstr[1] ""
-#: builtin/branch.c:591
+#: builtin/apply.c:2775
#, c-format
-msgid "Invalid branch name: '%s'"
+msgid "Context reduced to (%ld/%ld) to apply fragment at %d"
msgstr ""
-#: builtin/branch.c:606
-msgid "Branch rename failed"
+#: builtin/apply.c:2781
+#, c-format
+msgid ""
+"while searching for:\n"
+"%.*s"
msgstr ""
-#: builtin/branch.c:610
+#: builtin/apply.c:2800
#, c-format
-msgid "Renamed a misnamed branch '%s' away"
+msgid "missing binary patch data for '%s'"
msgstr ""
-#: builtin/branch.c:614
+#: builtin/apply.c:2903
#, c-format
-msgid "Branch renamed to %s, but HEAD is not updated!"
+msgid "binary patch does not apply to '%s'"
msgstr ""
-#: builtin/branch.c:621
-msgid "Branch is renamed, but update of config-file failed"
+#: builtin/apply.c:2909
+#, c-format
+msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
msgstr ""
-#: builtin/branch.c:636
+#: builtin/apply.c:2930
#, c-format
-msgid "malformed object name %s"
+msgid "patch failed: %s:%ld"
msgstr ""
-#: builtin/branch.c:660
+#: builtin/apply.c:3045
#, c-format
-msgid "could not write branch description template: %s\n"
+msgid "patch %s has been renamed/deleted"
msgstr ""
-#: builtin/branch.c:750
-msgid "Failed to resolve HEAD as a valid ref."
+#: builtin/apply.c:3052 builtin/apply.c:3069
+#, c-format
+msgid "read of %s failed"
msgstr ""
-#: builtin/branch.c:755 builtin/clone.c:558
-msgid "HEAD not found below refs/heads!"
+#: builtin/apply.c:3084
+msgid "removal patch leaves file contents"
msgstr ""
-#: builtin/branch.c:813
-msgid "-a and -r options to 'git branch' do not make sense with a branch name"
+#: builtin/apply.c:3105
+#, c-format
+msgid "%s: already exists in working directory"
msgstr ""
-#: builtin/bundle.c:47
+#: builtin/apply.c:3143
#, c-format
-msgid "%s is okay\n"
+msgid "%s: has been deleted/renamed"
msgstr ""
-#: builtin/bundle.c:56
-msgid "Need a repository to create a bundle."
+#: builtin/apply.c:3148 builtin/apply.c:3179
+#, c-format
+msgid "%s: %s"
msgstr ""
-#: builtin/bundle.c:60
-msgid "Need a repository to unbundle."
+#: builtin/apply.c:3159
+#, c-format
+msgid "%s: does not exist in index"
msgstr ""
-#: builtin/checkout.c:113 builtin/checkout.c:146
+#: builtin/apply.c:3173
#, c-format
-msgid "path '%s' does not have our version"
+msgid "%s: does not match index"
msgstr ""
-#: builtin/checkout.c:115 builtin/checkout.c:148
+#: builtin/apply.c:3190
#, c-format
-msgid "path '%s' does not have their version"
+msgid "%s: wrong type"
msgstr ""
-#: builtin/checkout.c:131
+#: builtin/apply.c:3192
#, c-format
-msgid "path '%s' does not have all necessary versions"
+msgid "%s has type %o, expected %o"
msgstr ""
-#: builtin/checkout.c:175
+#: builtin/apply.c:3247
#, c-format
-msgid "path '%s' does not have necessary versions"
+msgid "%s: already exists in index"
msgstr ""
-#: builtin/checkout.c:192
+#: builtin/apply.c:3266
#, c-format
-msgid "path '%s': cannot merge"
+msgid "new mode (%o) of %s does not match old mode (%o)%s%s"
msgstr ""
-#: builtin/checkout.c:209
+#: builtin/apply.c:3272
#, c-format
-msgid "Unable to add merge result for '%s'"
+msgid "%s: patch does not apply"
msgstr ""
-#: builtin/checkout.c:212 builtin/reset.c:158
+#: builtin/apply.c:3285
#, c-format
-msgid "make_cache_entry failed for path '%s'"
+msgid "Checking patch %s..."
msgstr ""
-#: builtin/checkout.c:234 builtin/checkout.c:392
-msgid "corrupt index file"
+#: builtin/apply.c:3340 builtin/checkout.c:212 builtin/reset.c:158
+#, c-format
+msgid "make_cache_entry failed for path '%s'"
msgstr ""
-#: builtin/checkout.c:264 builtin/checkout.c:271
+#: builtin/apply.c:3483
#, c-format
-msgid "path '%s' is unmerged"
+msgid "unable to remove %s from index"
msgstr ""
-#: builtin/checkout.c:302 builtin/checkout.c:498 builtin/clone.c:583
-#: builtin/merge.c:812
-msgid "unable to write new index file"
+#: builtin/apply.c:3510
+#, c-format
+msgid "corrupt patch for subproject %s"
msgstr ""
-#: builtin/checkout.c:319 builtin/diff.c:302 builtin/merge.c:408
-msgid "diff_setup_done failed"
+#: builtin/apply.c:3514
+#, c-format
+msgid "unable to stat newly created file '%s'"
msgstr ""
-#: builtin/checkout.c:414
-msgid "you need to resolve your current index first"
+#: builtin/apply.c:3519
+#, c-format
+msgid "unable to create backing store for newly created file %s"
msgstr ""
-#: builtin/checkout.c:533
+#: builtin/apply.c:3522
#, c-format
-msgid "Can not do reflog for '%s'\n"
+msgid "unable to add cache entry for %s"
msgstr ""
-#: builtin/checkout.c:566
-msgid "HEAD is now at"
+#: builtin/apply.c:3555
+#, c-format
+msgid "closing file '%s'"
msgstr ""
-#: builtin/checkout.c:573
+#: builtin/apply.c:3604
#, c-format
-msgid "Reset branch '%s'\n"
+msgid "unable to write file '%s' mode %o"
msgstr ""
-#: builtin/checkout.c:576
+#: builtin/apply.c:3660
#, c-format
-msgid "Already on '%s'\n"
+msgid "Applied patch %s cleanly."
msgstr ""
-#: builtin/checkout.c:580
-#, c-format
-msgid "Switched to and reset branch '%s'\n"
+#: builtin/apply.c:3668
+msgid "internal error"
msgstr ""
-#: builtin/checkout.c:582
+#. Say this even without --verbose
+#: builtin/apply.c:3671
#, c-format
-msgid "Switched to a new branch '%s'\n"
-msgstr ""
+msgid "Applying patch %%s with %d reject..."
+msgid_plural "Applying patch %%s with %d rejects..."
+msgstr[0] ""
+msgstr[1] ""
-#: builtin/checkout.c:584
+#: builtin/apply.c:3681
#, c-format
-msgid "Switched to branch '%s'\n"
+msgid "truncating .rej filename to %.*s.rej"
msgstr ""
-#: builtin/checkout.c:640
+#: builtin/apply.c:3702
#, c-format
-msgid " ... and %d more.\n"
+msgid "Hunk #%d applied cleanly."
msgstr ""
-#. The singular version
-#: builtin/checkout.c:646
-#, 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] ""
-msgstr[1] ""
-
-#: builtin/checkout.c:664
+#: builtin/apply.c:3705
#, c-format
-msgid ""
-"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"
+msgid "Rejected hunk #%d."
msgstr ""
-#: builtin/checkout.c:693
-msgid "internal error in revision walk"
+#: builtin/apply.c:3836
+msgid "unrecognized input"
msgstr ""
-#: builtin/checkout.c:697
-msgid "Previous HEAD position was"
+#: builtin/apply.c:3847
+msgid "unable to read index file"
msgstr ""
-#: builtin/checkout.c:723
-msgid "You are on a branch yet to be born"
+#: builtin/apply.c:4042
+msgid "--index outside a repository"
msgstr ""
-#. case (1)
-#: builtin/checkout.c:854
-#, c-format
-msgid "invalid reference: %s"
+#: builtin/apply.c:4045
+msgid "--cached outside a repository"
msgstr ""
-#. case (1): want a tree
-#: builtin/checkout.c:893
+#: builtin/apply.c:4061
#, c-format
-msgid "reference is not a tree: %s"
+msgid "can't open patch '%s'"
msgstr ""
-#: builtin/checkout.c:973
-msgid "-B cannot be used with -b"
-msgstr ""
+#: builtin/apply.c:4075
+#, c-format
+msgid "squelched %d whitespace error"
+msgid_plural "squelched %d whitespace errors"
+msgstr[0] ""
+msgstr[1] ""
-#: builtin/checkout.c:982
-msgid "--patch is incompatible with all other options"
-msgstr ""
+#: builtin/apply.c:4081 builtin/apply.c:4091
+#, c-format
+msgid "%d line adds whitespace errors."
+msgid_plural "%d lines add whitespace errors."
+msgstr[0] ""
+msgstr[1] ""
-#: builtin/checkout.c:985
-msgid "--detach cannot be used with -b/-B/--orphan"
+#: builtin/archive.c:17
+#, c-format
+msgid "could not create archive file '%s'"
msgstr ""
-#: builtin/checkout.c:987
-msgid "--detach cannot be used with -t"
+#: builtin/archive.c:20
+msgid "could not redirect output"
msgstr ""
-#: builtin/checkout.c:993
-msgid "--track needs a branch name"
+#: builtin/archive.c:37
+msgid "git archive: Remote with no URL"
msgstr ""
-#: builtin/checkout.c:1000
-msgid "Missing branch name; try -b"
+#: builtin/archive.c:58
+msgid "git archive: expected ACK/NAK, got EOF"
msgstr ""
-#: builtin/checkout.c:1006
-msgid "--orphan and -b|-B are mutually exclusive"
+#: builtin/archive.c:63
+#, c-format
+msgid "git archive: NACK %s"
msgstr ""
-#: builtin/checkout.c:1008
-msgid "--orphan cannot be used with -t"
+#: builtin/archive.c:65
+#, c-format
+msgid "remote error: %s"
msgstr ""
-#: builtin/checkout.c:1018
-msgid "git checkout: -f and -m are incompatible"
+#: builtin/archive.c:66
+msgid "git archive: protocol error"
msgstr ""
-#: builtin/checkout.c:1052
-msgid "invalid path specification"
+#: builtin/archive.c:71
+msgid "git archive: expected a flush"
msgstr ""
-#: builtin/checkout.c:1060
+#: builtin/branch.c:144
#, c-format
msgid ""
-"git checkout: updating paths is incompatible with switching branches.\n"
-"Did you intend to checkout '%s' which can not be resolved as commit?"
-msgstr ""
-
-#: builtin/checkout.c:1062
-msgid "git checkout: updating paths is incompatible with switching branches."
-msgstr ""
-
-#: builtin/checkout.c:1067
-msgid "git checkout: --detach does not take a path argument"
+"deleting branch '%s' that has been merged to\n"
+" '%s', but not yet merged to HEAD."
msgstr ""
-#: builtin/checkout.c:1070
+#: builtin/branch.c:148
+#, c-format
msgid ""
-"git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
-"checking out of the index."
-msgstr ""
-
-#: builtin/checkout.c:1089
-msgid "Cannot switch branch to a non-commit."
-msgstr ""
-
-#: builtin/checkout.c:1092
-msgid "--ours/--theirs is incompatible with switching branches."
+"not deleting branch '%s' that is not yet merged to\n"
+" '%s', even though it is merged to HEAD."
msgstr ""
-#: builtin/clean.c:78
-msgid "-x and -X cannot be used together"
+#: builtin/branch.c:180
+msgid "cannot use -a with -d"
msgstr ""
-#: builtin/clean.c:82
-msgid ""
-"clean.requireForce set to true and neither -n nor -f given; refusing to clean"
+#: builtin/branch.c:186
+msgid "Couldn't look up commit object for HEAD"
msgstr ""
-#: builtin/clean.c:85
-msgid ""
-"clean.requireForce defaults to true and neither -n nor -f given; refusing to "
-"clean"
+#: builtin/branch.c:191
+#, c-format
+msgid "Cannot delete the branch '%s' which you are currently on."
msgstr ""
-#: builtin/clean.c:155 builtin/clean.c:176
+#: builtin/branch.c:202
#, c-format
-msgid "Would remove %s\n"
+msgid "remote branch '%s' not found."
msgstr ""
-#: builtin/clean.c:159 builtin/clean.c:179
+#: builtin/branch.c:203
#, c-format
-msgid "Removing %s\n"
+msgid "branch '%s' not found."
msgstr ""
-#: builtin/clean.c:162 builtin/clean.c:182
+#: builtin/branch.c:210
#, c-format
-msgid "failed to remove %s"
+msgid "Couldn't look up commit object for '%s'"
msgstr ""
-#: builtin/clean.c:166
+#: builtin/branch.c:216
#, c-format
-msgid "Would not remove %s\n"
+msgid ""
+"The branch '%s' is not fully merged.\n"
+"If you are sure you want to delete it, run 'git branch -D %s'."
msgstr ""
-#: builtin/clean.c:168
+#: builtin/branch.c:225
#, c-format
-msgid "Not removing %s\n"
+msgid "Error deleting remote branch '%s'"
msgstr ""
-#: builtin/clone.c:243
+#: builtin/branch.c:226
#, c-format
-msgid "reference repository '%s' is not a local directory."
+msgid "Error deleting branch '%s'"
msgstr ""
-#: builtin/clone.c:302
+#: builtin/branch.c:233
#, c-format
-msgid "failed to open '%s'"
+msgid "Deleted remote branch %s (was %s).\n"
msgstr ""
-#: builtin/clone.c:306
+#: builtin/branch.c:234
#, c-format
-msgid "failed to create directory '%s'"
+msgid "Deleted branch %s (was %s).\n"
msgstr ""
-#: builtin/clone.c:308 builtin/diff.c:75
-#, c-format
-msgid "failed to stat '%s'"
+#: builtin/branch.c:239
+msgid "Update of config-file failed"
msgstr ""
-#: builtin/clone.c:310
+#: builtin/branch.c:337
#, c-format
-msgid "%s exists and is not a directory"
+msgid "branch '%s' does not point at a commit"
msgstr ""
-#: builtin/clone.c:324
+#: builtin/branch.c:409
#, c-format
-msgid "failed to stat %s\n"
+msgid "[%s: behind %d]"
msgstr ""
-#: builtin/clone.c:341
+#: builtin/branch.c:411
#, c-format
-msgid "failed to unlink '%s'"
+msgid "[behind %d]"
msgstr ""
-#: builtin/clone.c:346
+#: builtin/branch.c:415
#, c-format
-msgid "failed to create link '%s'"
+msgid "[%s: ahead %d]"
msgstr ""
-#: builtin/clone.c:350
+#: builtin/branch.c:417
#, c-format
-msgid "failed to copy file to '%s'"
+msgid "[ahead %d]"
msgstr ""
-#: builtin/clone.c:373
+#: builtin/branch.c:420
#, c-format
-msgid "done.\n"
+msgid "[%s: ahead %d, behind %d]"
msgstr ""
-#: builtin/clone.c:440
+#: builtin/branch.c:423
#, c-format
-msgid "Could not find remote branch %s to clone."
+msgid "[ahead %d, behind %d]"
msgstr ""
-#: builtin/clone.c:549
-msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
+#: builtin/branch.c:535
+msgid "(no branch)"
msgstr ""
-#: builtin/clone.c:639
-msgid "Too many arguments."
+#: builtin/branch.c:600
+msgid "some refs could not be read"
msgstr ""
-#: builtin/clone.c:643
-msgid "You must specify a repository to clone."
+#: builtin/branch.c:613
+msgid "cannot rename the current branch while not on any."
msgstr ""
-#: builtin/clone.c:654
+#: builtin/branch.c:623
#, c-format
-msgid "--bare and --origin %s options are incompatible."
+msgid "Invalid branch name: '%s'"
msgstr ""
-#: builtin/clone.c:668
-#, c-format
-msgid "repository '%s' does not exist"
+#: builtin/branch.c:638
+msgid "Branch rename failed"
msgstr ""
-#: builtin/clone.c:673
-msgid "--depth is ignored in local clones; use file:// instead."
+#: builtin/branch.c:642
+#, c-format
+msgid "Renamed a misnamed branch '%s' away"
msgstr ""
-#: builtin/clone.c:683
+#: builtin/branch.c:646
#, c-format
-msgid "destination path '%s' already exists and is not an empty directory."
+msgid "Branch renamed to %s, but HEAD is not updated!"
msgstr ""
-#: builtin/clone.c:693
-#, c-format
-msgid "working tree '%s' already exists."
+#: builtin/branch.c:653
+msgid "Branch is renamed, but update of config-file failed"
msgstr ""
-#: builtin/clone.c:706 builtin/clone.c:720
+#: builtin/branch.c:668
#, c-format
-msgid "could not create leading directories of '%s'"
+msgid "malformed object name %s"
msgstr ""
-#: builtin/clone.c:709
+#: builtin/branch.c:692
#, c-format
-msgid "could not create work tree dir '%s'."
+msgid "could not write branch description template: %s"
msgstr ""
-#: builtin/clone.c:728
-#, c-format
-msgid "Cloning into bare repository '%s'...\n"
+#: builtin/branch.c:783
+msgid "Failed to resolve HEAD as a valid ref."
msgstr ""
-#: builtin/clone.c:730
-#, c-format
-msgid "Cloning into '%s'...\n"
+#: builtin/branch.c:788 builtin/clone.c:558
+msgid "HEAD not found below refs/heads!"
msgstr ""
-#: builtin/clone.c:786
-#, c-format
-msgid "Don't know how to clone %s"
+#: builtin/branch.c:808
+msgid "--column and --verbose are incompatible"
msgstr ""
-#: builtin/clone.c:835
-#, c-format
-msgid "Remote branch %s not found in upstream %s"
+#: builtin/branch.c:857
+msgid "-a and -r options to 'git branch' do not make sense with a branch name"
msgstr ""
-#: builtin/clone.c:842
-msgid "You appear to have cloned an empty repository."
+#: builtin/bundle.c:47
+#, c-format
+msgid "%s is okay\n"
msgstr ""
-#: builtin/commit.c:42
-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"
+#: builtin/bundle.c:56
+msgid "Need a repository to create a bundle."
msgstr ""
-#: builtin/commit.c:54
-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"
+#: builtin/bundle.c:60
+msgid "Need a repository to unbundle."
msgstr ""
-#: builtin/commit.c:59
-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"
-"Otherwise, please use 'git reset'\n"
+#: builtin/checkout.c:113 builtin/checkout.c:146
+#, c-format
+msgid "path '%s' does not have our version"
msgstr ""
-#: builtin/commit.c:205 builtin/reset.c:33
-msgid "merge"
+#: builtin/checkout.c:115 builtin/checkout.c:148
+#, c-format
+msgid "path '%s' does not have their version"
msgstr ""
-#: builtin/commit.c:208
-msgid "cherry-pick"
+#: builtin/checkout.c:131
+#, c-format
+msgid "path '%s' does not have all necessary versions"
msgstr ""
-#: builtin/commit.c:325
-msgid "failed to unpack HEAD tree object"
+#: builtin/checkout.c:175
+#, c-format
+msgid "path '%s' does not have necessary versions"
msgstr ""
-#: builtin/commit.c:367
-msgid "unable to create temporary index"
+#: builtin/checkout.c:192
+#, c-format
+msgid "path '%s': cannot merge"
msgstr ""
-#: builtin/commit.c:373
-msgid "interactive add failed"
+#: builtin/checkout.c:209
+#, c-format
+msgid "Unable to add merge result for '%s'"
msgstr ""
-#: builtin/commit.c:406 builtin/commit.c:427 builtin/commit.c:473
-msgid "unable to write new_index file"
+#: builtin/checkout.c:234 builtin/checkout.c:392
+msgid "corrupt index file"
msgstr ""
-#: builtin/commit.c:457
+#: builtin/checkout.c:264 builtin/checkout.c:271
#, c-format
-msgid "cannot do a partial commit during a %s."
+msgid "path '%s' is unmerged"
msgstr ""
-#: builtin/commit.c:466
-msgid "cannot read the index"
+#: builtin/checkout.c:302 builtin/checkout.c:498 builtin/clone.c:583
+#: builtin/merge.c:812
+msgid "unable to write new index file"
msgstr ""
-#: builtin/commit.c:486
-msgid "unable to write temporary index file"
+#: builtin/checkout.c:319 builtin/diff.c:302 builtin/merge.c:408
+msgid "diff_setup_done failed"
+msgstr ""
+
+#: builtin/checkout.c:414
+msgid "you need to resolve your current index first"
msgstr ""
-#: builtin/commit.c:561 builtin/commit.c:567
+#: builtin/checkout.c:533
#, c-format
-msgid "invalid commit: %s"
+msgid "Can not do reflog for '%s'\n"
msgstr ""
-#: builtin/commit.c:590
-msgid "malformed --author parameter"
+#: builtin/checkout.c:566
+msgid "HEAD is now at"
msgstr ""
-#: builtin/commit.c:651
+#: builtin/checkout.c:573
#, c-format
-msgid "Malformed ident string: '%s'"
+msgid "Reset branch '%s'\n"
msgstr ""
-#: builtin/commit.c:689 builtin/commit.c:722 builtin/commit.c:1033
+#: builtin/checkout.c:576
#, c-format
-msgid "could not lookup commit %s"
+msgid "Already on '%s'\n"
msgstr ""
-#: builtin/commit.c:701 builtin/shortlog.c:296
+#: builtin/checkout.c:580
#, c-format
-msgid "(reading log message from standard input)\n"
+msgid "Switched to and reset branch '%s'\n"
msgstr ""
-#: builtin/commit.c:703
-msgid "could not read log from standard input"
+#: builtin/checkout.c:582
+#, c-format
+msgid "Switched to a new branch '%s'\n"
msgstr ""
-#: builtin/commit.c:707
+#: builtin/checkout.c:584
#, c-format
-msgid "could not read log file '%s'"
+msgid "Switched to branch '%s'\n"
msgstr ""
-#: builtin/commit.c:713
-msgid "commit has empty message"
+#: builtin/checkout.c:640
+#, c-format
+msgid " ... and %d more.\n"
msgstr ""
-#: builtin/commit.c:729
-msgid "could not read MERGE_MSG"
-msgstr ""
+#. The singular version
+#: builtin/checkout.c:646
+#, 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] ""
+msgstr[1] ""
-#: builtin/commit.c:733
-msgid "could not read SQUASH_MSG"
+#: builtin/checkout.c:664
+#, c-format
+msgid ""
+"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 ""
-#: builtin/commit.c:737
-#, c-format
-msgid "could not read '%s'"
+#: builtin/checkout.c:694
+msgid "internal error in revision walk"
msgstr ""
-#: builtin/commit.c:765
-#, c-format
-msgid "could not open '%s'"
+#: builtin/checkout.c:698
+msgid "Previous HEAD position was"
msgstr ""
-#: builtin/commit.c:789
-msgid "could not write commit template"
+#: builtin/checkout.c:724
+msgid "You are on a branch yet to be born"
msgstr ""
-#: builtin/commit.c:799
+#. case (1)
+#: builtin/checkout.c:855
#, c-format
-msgid ""
-"\n"
-"It looks like you may be committing a %s.\n"
-"If this is not correct, please remove the file\n"
-"\t%s\n"
-"and try again.\n"
+msgid "invalid reference: %s"
msgstr ""
-#: builtin/commit.c:812
-msgid "Please enter the commit message for your changes."
+#. case (1): want a tree
+#: builtin/checkout.c:894
+#, c-format
+msgid "reference is not a tree: %s"
msgstr ""
-#: builtin/commit.c:815
-msgid ""
-" Lines starting\n"
-"with '#' will be ignored, and an empty message aborts the commit.\n"
+#: builtin/checkout.c:974
+msgid "-B cannot be used with -b"
msgstr ""
-#: builtin/commit.c:820
-msgid ""
-" Lines starting\n"
-"with '#' will be kept; you may remove them yourself if you want to.\n"
-"An empty message aborts the commit.\n"
+#: builtin/checkout.c:983
+msgid "--patch is incompatible with all other options"
msgstr ""
-#: builtin/commit.c:832
-#, c-format
-msgid "%sAuthor: %s"
+#: builtin/checkout.c:986
+msgid "--detach cannot be used with -b/-B/--orphan"
msgstr ""
-#: builtin/commit.c:839
-#, c-format
-msgid "%sCommitter: %s"
+#: builtin/checkout.c:988
+msgid "--detach cannot be used with -t"
msgstr ""
-#: builtin/commit.c:859
-msgid "Cannot read index"
+#: builtin/checkout.c:994
+msgid "--track needs a branch name"
msgstr ""
-#: builtin/commit.c:896
-msgid "Error building trees"
+#: builtin/checkout.c:1001
+msgid "Missing branch name; try -b"
msgstr ""
-#: builtin/commit.c:911 builtin/tag.c:357
-#, c-format
-msgid "Please supply the message using either -m or -F option.\n"
+#: builtin/checkout.c:1007
+msgid "--orphan and -b|-B are mutually exclusive"
msgstr ""
-#: builtin/commit.c:1008
-#, c-format
-msgid "No existing author found with '%s'"
+#: builtin/checkout.c:1009
+msgid "--orphan cannot be used with -t"
msgstr ""
-#: builtin/commit.c:1023 builtin/commit.c:1217
-#, c-format
-msgid "Invalid untracked files mode '%s'"
+#: builtin/checkout.c:1019
+msgid "git checkout: -f and -m are incompatible"
msgstr ""
-#: builtin/commit.c:1063
-msgid "Using both --reset-author and --author does not make sense"
+#: builtin/checkout.c:1053
+msgid "invalid path specification"
msgstr ""
-#: builtin/commit.c:1074
-msgid "You have nothing to amend."
+#: builtin/checkout.c:1061
+#, c-format
+msgid ""
+"git checkout: updating paths is incompatible with switching branches.\n"
+"Did you intend to checkout '%s' which can not be resolved as commit?"
msgstr ""
-#: builtin/commit.c:1076
-#, c-format
-msgid "You are in the middle of a %s -- cannot amend."
+#: builtin/checkout.c:1063
+msgid "git checkout: updating paths is incompatible with switching branches."
msgstr ""
-#: builtin/commit.c:1078
-msgid "Options --squash and --fixup cannot be used together"
+#: builtin/checkout.c:1068
+msgid "git checkout: --detach does not take a path argument"
msgstr ""
-#: builtin/commit.c:1088
-msgid "Only one of -c/-C/-F/--fixup can be used."
+#: builtin/checkout.c:1071
+msgid ""
+"git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
+"checking out of the index."
msgstr ""
-#: builtin/commit.c:1090
-msgid "Option -m cannot be combined with -c/-C/-F/--fixup."
+#: builtin/checkout.c:1090
+msgid "Cannot switch branch to a non-commit."
msgstr ""
-#: builtin/commit.c:1098
-msgid "--reset-author can be used only with -C, -c or --amend."
+#: builtin/checkout.c:1093
+msgid "--ours/--theirs is incompatible with switching branches."
msgstr ""
-#: builtin/commit.c:1115
-msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
+#: builtin/clean.c:78
+msgid "-x and -X cannot be used together"
msgstr ""
-#: builtin/commit.c:1117
-msgid "No paths with --include/--only does not make sense."
+#: builtin/clean.c:82
+msgid ""
+"clean.requireForce set to true and neither -n nor -f given; refusing to clean"
msgstr ""
-#: builtin/commit.c:1119
-msgid "Clever... amending the last one with dirty index."
+#: builtin/clean.c:85
+msgid ""
+"clean.requireForce defaults to true and neither -n nor -f given; refusing to "
+"clean"
msgstr ""
-#: builtin/commit.c:1121
-msgid "Explicit paths specified without -i nor -o; assuming --only paths..."
+#: builtin/clean.c:155 builtin/clean.c:176
+#, c-format
+msgid "Would remove %s\n"
msgstr ""
-#: builtin/commit.c:1131 builtin/tag.c:556
+#: builtin/clean.c:159 builtin/clean.c:179
#, c-format
-msgid "Invalid cleanup mode %s"
+msgid "Removing %s\n"
msgstr ""
-#: builtin/commit.c:1136
-msgid "Paths with -a does not make sense."
+#: builtin/clean.c:162 builtin/clean.c:182
+#, c-format
+msgid "failed to remove %s"
msgstr ""
-#: builtin/commit.c:1315
-msgid "couldn't look up newly created commit"
+#: builtin/clean.c:166
+#, c-format
+msgid "Would not remove %s\n"
msgstr ""
-#: builtin/commit.c:1317
-msgid "could not parse newly created commit"
+#: builtin/clean.c:168
+#, c-format
+msgid "Not removing %s\n"
msgstr ""
-#: builtin/commit.c:1358
-msgid "detached HEAD"
+#: builtin/clone.c:243
+#, c-format
+msgid "reference repository '%s' is not a local directory."
msgstr ""
-#: builtin/commit.c:1360
-msgid " (root-commit)"
+#: builtin/clone.c:302
+#, c-format
+msgid "failed to open '%s'"
msgstr ""
-#: builtin/commit.c:1450
-msgid "could not parse HEAD commit"
+#: builtin/clone.c:306
+#, c-format
+msgid "failed to create directory '%s'"
msgstr ""
-#: builtin/commit.c:1487 builtin/merge.c:509
+#: builtin/clone.c:308 builtin/diff.c:75
#, c-format
-msgid "could not open '%s' for reading"
+msgid "failed to stat '%s'"
msgstr ""
-#: builtin/commit.c:1494
+#: builtin/clone.c:310
#, c-format
-msgid "Corrupt MERGE_HEAD file (%s)"
+msgid "%s exists and is not a directory"
msgstr ""
-#: builtin/commit.c:1501
-msgid "could not read MERGE_MODE"
+#: builtin/clone.c:324
+#, c-format
+msgid "failed to stat %s\n"
msgstr ""
-#: builtin/commit.c:1520
+#: builtin/clone.c:341
#, c-format
-msgid "could not read commit message: %s"
+msgid "failed to unlink '%s'"
msgstr ""
-#: builtin/commit.c:1534
+#: builtin/clone.c:346
#, c-format
-msgid "Aborting commit; you did not edit the message.\n"
+msgid "failed to create link '%s'"
msgstr ""
-#: builtin/commit.c:1539
+#: builtin/clone.c:350
#, c-format
-msgid "Aborting commit due to empty commit message.\n"
+msgid "failed to copy file to '%s'"
msgstr ""
-#: builtin/commit.c:1554 builtin/merge.c:936 builtin/merge.c:961
-msgid "failed to write commit object"
+#: builtin/clone.c:373
+#, c-format
+msgid "done.\n"
msgstr ""
-#: builtin/commit.c:1575
-msgid "cannot lock HEAD ref"
+#: builtin/clone.c:440
+#, c-format
+msgid "Could not find remote branch %s to clone."
msgstr ""
-#: builtin/commit.c:1579
-msgid "cannot update HEAD ref"
+#: builtin/clone.c:549
+msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
msgstr ""
-#: builtin/commit.c:1590
-msgid ""
-"Repository has been updated, but unable to write\n"
-"new_index file. Check that disk is not full or quota is\n"
-"not exceeded, and then \"git reset HEAD\" to recover."
+#: builtin/clone.c:639
+msgid "Too many arguments."
msgstr ""
-#: builtin/describe.c:234
-#, c-format
-msgid "annotated tag %s not available"
+#: builtin/clone.c:643
+msgid "You must specify a repository to clone."
msgstr ""
-#: builtin/describe.c:238
+#: builtin/clone.c:654
#, c-format
-msgid "annotated tag %s has no embedded name"
+msgid "--bare and --origin %s options are incompatible."
msgstr ""
-#: builtin/describe.c:240
+#: builtin/clone.c:668
#, c-format
-msgid "tag '%s' is really '%s' here"
+msgid "repository '%s' does not exist"
msgstr ""
-#: builtin/describe.c:267
-#, c-format
-msgid "Not a valid object name %s"
+#: builtin/clone.c:673
+msgid "--depth is ignored in local clones; use file:// instead."
msgstr ""
-#: builtin/describe.c:270
+#: builtin/clone.c:683
#, c-format
-msgid "%s is not a valid '%s' object"
+msgid "destination path '%s' already exists and is not an empty directory."
msgstr ""
-#: builtin/describe.c:287
+#: builtin/clone.c:693
#, c-format
-msgid "no tag exactly matches '%s'"
+msgid "working tree '%s' already exists."
msgstr ""
-#: builtin/describe.c:289
+#: builtin/clone.c:706 builtin/clone.c:720
#, c-format
-msgid "searching to describe %s\n"
+msgid "could not create leading directories of '%s'"
msgstr ""
-#: builtin/describe.c:329
+#: builtin/clone.c:709
#, c-format
-msgid "finished search at %s\n"
+msgid "could not create work tree dir '%s'."
msgstr ""
-#: builtin/describe.c:353
+#: builtin/clone.c:728
#, c-format
-msgid ""
-"No annotated tags can describe '%s'.\n"
-"However, there were unannotated tags: try --tags."
+msgid "Cloning into bare repository '%s'...\n"
msgstr ""
-#: builtin/describe.c:357
+#: builtin/clone.c:730
#, c-format
-msgid ""
-"No tags can describe '%s'.\n"
-"Try --always, or create some tags."
+msgid "Cloning into '%s'...\n"
msgstr ""
-#: builtin/describe.c:378
+#: builtin/clone.c:786
#, c-format
-msgid "traversed %lu commits\n"
+msgid "Don't know how to clone %s"
msgstr ""
-#: builtin/describe.c:381
+#: builtin/clone.c:835
#, c-format
-msgid ""
-"more than %i tags found; listed %i most recent\n"
-"gave up search at %s\n"
+msgid "Remote branch %s not found in upstream %s"
msgstr ""
-#: builtin/describe.c:436
-msgid "--long is incompatible with --abbrev=0"
+#: builtin/clone.c:842
+msgid "You appear to have cloned an empty repository."
msgstr ""
-#: builtin/describe.c:462
-msgid "No names found, cannot describe anything."
+#: builtin/column.c:51
+msgid "--command must be the first argument"
msgstr ""
-#: builtin/describe.c:482
-msgid "--dirty is incompatible with committishes"
+#: builtin/commit.c:43
+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 ""
-#: builtin/diff.c:77
-#, c-format
-msgid "'%s': not a regular file or symlink"
+#: builtin/commit.c:55
+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 ""
-#: builtin/diff.c:220
-#, c-format
-msgid "invalid option: %s"
+#: builtin/commit.c:60
+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"
+"Otherwise, please use 'git reset'\n"
msgstr ""
-#: builtin/diff.c:297
-msgid "Not a git repository"
+#: builtin/commit.c:253
+msgid "failed to unpack HEAD tree object"
msgstr ""
-#: builtin/diff.c:347
-#, c-format
-msgid "invalid object '%s' given."
+#: builtin/commit.c:295
+msgid "unable to create temporary index"
msgstr ""
-#: builtin/diff.c:352
-#, c-format
-msgid "more than %d trees given: '%s'"
+#: builtin/commit.c:301
+msgid "interactive add failed"
msgstr ""
-#: builtin/diff.c:362
-#, c-format
-msgid "more than two blobs given: '%s'"
+#: builtin/commit.c:334 builtin/commit.c:355 builtin/commit.c:405
+msgid "unable to write new_index file"
msgstr ""
-#: builtin/diff.c:370
-#, c-format
-msgid "unhandled object '%s' given."
+#: builtin/commit.c:386
+msgid "cannot do a partial commit during a merge."
msgstr ""
-#: builtin/fetch.c:200
-msgid "Couldn't find remote ref HEAD"
+#: builtin/commit.c:388
+msgid "cannot do a partial commit during a cherry-pick."
msgstr ""
-#: builtin/fetch.c:253
-#, c-format
-msgid "object %s not found"
+#: builtin/commit.c:398
+msgid "cannot read the index"
msgstr ""
-#: builtin/fetch.c:259
-msgid "[up to date]"
+#: builtin/commit.c:418
+msgid "unable to write temporary index file"
msgstr ""
-#: builtin/fetch.c:273
+#: builtin/commit.c:493 builtin/commit.c:499
#, c-format
-msgid "! %-*s %-*s -> %s (can't fetch in current branch)"
+msgid "invalid commit: %s"
msgstr ""
-#: builtin/fetch.c:274 builtin/fetch.c:360
-msgid "[rejected]"
+#: builtin/commit.c:522
+msgid "malformed --author parameter"
msgstr ""
-#: builtin/fetch.c:285
-msgid "[tag update]"
+#: builtin/commit.c:583
+#, c-format
+msgid "Malformed ident string: '%s'"
msgstr ""
-#: builtin/fetch.c:287 builtin/fetch.c:322 builtin/fetch.c:340
-msgid " (unable to update local ref)"
+#: builtin/commit.c:621 builtin/commit.c:654 builtin/commit.c:968
+#, c-format
+msgid "could not lookup commit %s"
msgstr ""
-#: builtin/fetch.c:305
-msgid "[new tag]"
+#: builtin/commit.c:633 builtin/shortlog.c:296
+#, c-format
+msgid "(reading log message from standard input)\n"
msgstr ""
-#: builtin/fetch.c:308
-msgid "[new branch]"
+#: builtin/commit.c:635
+msgid "could not read log from standard input"
msgstr ""
-#: builtin/fetch.c:311
-msgid "[new ref]"
+#: builtin/commit.c:639
+#, c-format
+msgid "could not read log file '%s'"
msgstr ""
-#: builtin/fetch.c:356
-msgid "unable to update local ref"
+#: builtin/commit.c:645
+msgid "commit has empty message"
msgstr ""
-#: builtin/fetch.c:356
-msgid "forced update"
+#: builtin/commit.c:661
+msgid "could not read MERGE_MSG"
msgstr ""
-#: builtin/fetch.c:362
-msgid "(non-fast-forward)"
+#: builtin/commit.c:665
+msgid "could not read SQUASH_MSG"
msgstr ""
-#: builtin/fetch.c:393 builtin/fetch.c:685
+#: builtin/commit.c:669
#, c-format
-msgid "cannot open %s: %s\n"
+msgid "could not read '%s'"
msgstr ""
-#: builtin/fetch.c:402
-#, c-format
-msgid "%s did not send all necessary objects\n"
+#: builtin/commit.c:721
+msgid "could not write commit template"
msgstr ""
-#: builtin/fetch.c:488
+#: builtin/commit.c:732
#, c-format
-msgid "From %.*s\n"
+msgid ""
+"\n"
+"It looks like you may be committing a merge.\n"
+"If this is not correct, please remove the file\n"
+"\t%s\n"
+"and try again.\n"
msgstr ""
-#: builtin/fetch.c:499
+#: builtin/commit.c:737
#, c-format
msgid ""
-"some local refs could not be updated; try running\n"
-" 'git remote prune %s' to remove any old, conflicting branches"
+"\n"
+"It looks like you may be committing a cherry-pick.\n"
+"If this is not correct, please remove the file\n"
+"\t%s\n"
+"and try again.\n"
msgstr ""
-#: builtin/fetch.c:549
+#: builtin/commit.c:749
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '#' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+
+#: builtin/commit.c:754
+msgid ""
+"Please enter the commit message for your changes. Lines starting\n"
+"with '#' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+
+#: builtin/commit.c:767
#, c-format
-msgid " (%s will become dangling)\n"
+msgid "%sAuthor: %s"
msgstr ""
-#: builtin/fetch.c:550
+#: builtin/commit.c:774
#, c-format
-msgid " (%s has become dangling)\n"
+msgid "%sCommitter: %s"
msgstr ""
-#: builtin/fetch.c:557
-msgid "[deleted]"
+#: builtin/commit.c:794
+msgid "Cannot read index"
msgstr ""
-#: builtin/fetch.c:558
-msgid "(none)"
+#: builtin/commit.c:831
+msgid "Error building trees"
msgstr ""
-#: builtin/fetch.c:675
+#: builtin/commit.c:846 builtin/tag.c:361
#, c-format
-msgid "Refusing to fetch into current branch %s of non-bare repository"
+msgid "Please supply the message using either -m or -F option.\n"
msgstr ""
-#: builtin/fetch.c:709
+#: builtin/commit.c:943
#, c-format
-msgid "Don't know how to fetch from %s"
+msgid "No existing author found with '%s'"
msgstr ""
-#: builtin/fetch.c:786
+#: builtin/commit.c:958 builtin/commit.c:1158
#, c-format
-msgid "Option \"%s\" value \"%s\" is not valid for %s"
+msgid "Invalid untracked files mode '%s'"
msgstr ""
-#: builtin/fetch.c:789
-#, c-format
-msgid "Option \"%s\" is ignored for %s\n"
+#: builtin/commit.c:998
+msgid "Using both --reset-author and --author does not make sense"
msgstr ""
-#: builtin/fetch.c:888
-#, c-format
-msgid "Fetching %s\n"
+#: builtin/commit.c:1009
+msgid "You have nothing to amend."
msgstr ""
-#: builtin/fetch.c:890
-#, c-format
-msgid "Could not fetch %s"
+#: builtin/commit.c:1012
+msgid "You are in the middle of a merge -- cannot amend."
msgstr ""
-#: builtin/fetch.c:907
-msgid ""
-"No remote repository specified. Please, specify either a URL or a\n"
-"remote name from which new revisions should be fetched."
+#: builtin/commit.c:1014
+msgid "You are in the middle of a cherry-pick -- cannot amend."
msgstr ""
-#: builtin/fetch.c:927
-msgid "You need to specify a tag name."
+#: builtin/commit.c:1017
+msgid "Options --squash and --fixup cannot be used together"
msgstr ""
-#: builtin/fetch.c:979
-msgid "fetch --all does not take a repository argument"
+#: builtin/commit.c:1027
+msgid "Only one of -c/-C/-F/--fixup can be used."
msgstr ""
-#: builtin/fetch.c:981
-msgid "fetch --all does not make sense with refspecs"
+#: builtin/commit.c:1029
+msgid "Option -m cannot be combined with -c/-C/-F/--fixup."
msgstr ""
-#: builtin/fetch.c:992
-#, c-format
-msgid "No such remote or remote group: %s"
+#: builtin/commit.c:1037
+msgid "--reset-author can be used only with -C, -c or --amend."
msgstr ""
-#: builtin/fetch.c:1000
-msgid "Fetching a group and specifying refspecs does not make sense"
+#: builtin/commit.c:1054
+msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
msgstr ""
-#: builtin/gc.c:63
-#, c-format
-msgid "Invalid %s: '%s'"
+#: builtin/commit.c:1056
+msgid "No paths with --include/--only does not make sense."
msgstr ""
-#: builtin/gc.c:78
-msgid "Too many options specified"
+#: builtin/commit.c:1058
+msgid "Clever... amending the last one with dirty index."
msgstr ""
-#: builtin/gc.c:103
-#, c-format
-msgid "insanely long object directory %.*s"
+#: builtin/commit.c:1060
+msgid "Explicit paths specified without -i nor -o; assuming --only paths..."
msgstr ""
-#: builtin/gc.c:223
+#: builtin/commit.c:1070 builtin/tag.c:577
#, c-format
-msgid "Auto packing the repository for optimum performance.\n"
+msgid "Invalid cleanup mode %s"
msgstr ""
-#: builtin/gc.c:226
-#, c-format
-msgid ""
-"Auto packing the repository for optimum performance. You may also\n"
-"run \"git gc\" manually. See \"git help gc\" for more information.\n"
+#: builtin/commit.c:1075
+msgid "Paths with -a does not make sense."
msgstr ""
-#: builtin/gc.c:256
-msgid ""
-"There are too many unreachable loose objects; run 'git prune' to remove them."
+#: builtin/commit.c:1258
+msgid "couldn't look up newly created commit"
msgstr ""
-#: builtin/grep.c:216
-#, c-format
-msgid "grep: failed to create thread: %s"
+#: builtin/commit.c:1260
+msgid "could not parse newly created commit"
msgstr ""
-#: builtin/grep.c:402
-#, c-format
-msgid "Failed to chdir: %s"
+#: builtin/commit.c:1301
+msgid "detached HEAD"
msgstr ""
-#: builtin/grep.c:478 builtin/grep.c:512
-#, c-format
-msgid "unable to read tree (%s)"
+#: builtin/commit.c:1303
+msgid " (root-commit)"
msgstr ""
-#: builtin/grep.c:526
-#, c-format
-msgid "unable to grep from object of type %s"
+#: builtin/commit.c:1447
+msgid "could not parse HEAD commit"
msgstr ""
-#: builtin/grep.c:584
+#: builtin/commit.c:1485 builtin/merge.c:509
#, c-format
-msgid "switch `%c' expects a numerical value"
+msgid "could not open '%s' for reading"
msgstr ""
-#: builtin/grep.c:601
+#: builtin/commit.c:1492
#, c-format
-msgid "cannot open '%s'"
+msgid "Corrupt MERGE_HEAD file (%s)"
msgstr ""
-#: builtin/grep.c:888
-msgid "no pattern given."
+#: builtin/commit.c:1499
+msgid "could not read MERGE_MODE"
msgstr ""
-#: builtin/grep.c:902
+#: builtin/commit.c:1518
#, c-format
-msgid "bad object %s"
+msgid "could not read commit message: %s"
msgstr ""
-#: builtin/grep.c:943
-msgid "--open-files-in-pager only works on the worktree"
+#: builtin/commit.c:1532
+#, c-format
+msgid "Aborting commit; you did not edit the message.\n"
msgstr ""
-#: builtin/grep.c:966
-msgid "--cached or --untracked cannot be used with --no-index."
+#: builtin/commit.c:1537
+#, c-format
+msgid "Aborting commit due to empty commit message.\n"
msgstr ""
-#: builtin/grep.c:971
-msgid "--no-index or --untracked cannot be used with revs."
+#: builtin/commit.c:1552 builtin/merge.c:936 builtin/merge.c:961
+msgid "failed to write commit object"
msgstr ""
-#: builtin/grep.c:974
-msgid "--[no-]exclude-standard cannot be used for tracked contents."
+#: builtin/commit.c:1573
+msgid "cannot lock HEAD ref"
msgstr ""
-#: builtin/grep.c:982
-msgid "both --cached and trees are given."
+#: builtin/commit.c:1577
+msgid "cannot update HEAD ref"
msgstr ""
-#: builtin/init-db.c:35
-#, c-format
-msgid "Could not make %s writable by group"
+#: builtin/commit.c:1588
+msgid ""
+"Repository has been updated, but unable to write\n"
+"new_index file. Check that disk is not full or quota is\n"
+"not exceeded, and then \"git reset HEAD\" to recover."
msgstr ""
-#: builtin/init-db.c:62
+#: builtin/describe.c:234
#, c-format
-msgid "insanely long template name %s"
+msgid "annotated tag %s not available"
msgstr ""
-#: builtin/init-db.c:67
+#: builtin/describe.c:238
#, c-format
-msgid "cannot stat '%s'"
+msgid "annotated tag %s has no embedded name"
msgstr ""
-#: builtin/init-db.c:73
+#: builtin/describe.c:240
#, c-format
-msgid "cannot stat template '%s'"
+msgid "tag '%s' is really '%s' here"
msgstr ""
-#: builtin/init-db.c:80
+#: builtin/describe.c:267
#, c-format
-msgid "cannot opendir '%s'"
+msgid "Not a valid object name %s"
msgstr ""
-#: builtin/init-db.c:97
+#: builtin/describe.c:270
#, c-format
-msgid "cannot readlink '%s'"
+msgid "%s is not a valid '%s' object"
msgstr ""
-#: builtin/init-db.c:99
+#: builtin/describe.c:287
#, c-format
-msgid "insanely long symlink %s"
+msgid "no tag exactly matches '%s'"
msgstr ""
-#: builtin/init-db.c:102
+#: builtin/describe.c:289
#, c-format
-msgid "cannot symlink '%s' '%s'"
+msgid "searching to describe %s\n"
msgstr ""
-#: builtin/init-db.c:106
+#: builtin/describe.c:329
#, c-format
-msgid "cannot copy '%s' to '%s'"
+msgid "finished search at %s\n"
msgstr ""
-#: builtin/init-db.c:110
+#: builtin/describe.c:353
#, c-format
-msgid "ignoring template %s"
+msgid ""
+"No annotated tags can describe '%s'.\n"
+"However, there were unannotated tags: try --tags."
msgstr ""
-#: builtin/init-db.c:133
+#: builtin/describe.c:357
#, c-format
-msgid "insanely long template path %s"
+msgid ""
+"No tags can describe '%s'.\n"
+"Try --always, or create some tags."
msgstr ""
-#: builtin/init-db.c:141
+#: builtin/describe.c:378
#, c-format
-msgid "templates not found %s"
+msgid "traversed %lu commits\n"
msgstr ""
-#: builtin/init-db.c:154
+#: builtin/describe.c:381
#, c-format
-msgid "not copying templates of a wrong format version %d from '%s'"
+msgid ""
+"more than %i tags found; listed %i most recent\n"
+"gave up search at %s\n"
msgstr ""
-#: builtin/init-db.c:192
-#, c-format
-msgid "insane git directory %s"
+#: builtin/describe.c:436
+msgid "--long is incompatible with --abbrev=0"
msgstr ""
-#: builtin/init-db.c:322 builtin/init-db.c:325
-#, c-format
-msgid "%s already exists"
+#: builtin/describe.c:462
+msgid "No names found, cannot describe anything."
msgstr ""
-#: builtin/init-db.c:354
-#, c-format
-msgid "unable to handle file type %d"
+#: builtin/describe.c:482
+msgid "--dirty is incompatible with committishes"
msgstr ""
-#: builtin/init-db.c:357
+#: builtin/diff.c:77
#, c-format
-msgid "unable to move %s to %s"
+msgid "'%s': not a regular file or symlink"
msgstr ""
-#: builtin/init-db.c:362
+#: builtin/diff.c:220
#, c-format
-msgid "Could not create git link %s"
+msgid "invalid option: %s"
msgstr ""
-#.
-#. * TRANSLATORS: The first '%s' is either "Reinitialized
-#. * existing" or "Initialized empty", the second " shared" or
-#. * "", and the last '%s%s' is the verbatim directory name.
-#.
-#: builtin/init-db.c:419
+#: builtin/diff.c:297
+msgid "Not a git repository"
+msgstr ""
+
+#: builtin/diff.c:347
#, c-format
-msgid "%s%s Git repository in %s%s\n"
+msgid "invalid object '%s' given."
msgstr ""
-#: builtin/init-db.c:420
-msgid "Reinitialized existing"
+#: builtin/diff.c:352
+#, c-format
+msgid "more than %d trees given: '%s'"
msgstr ""
-#: builtin/init-db.c:420
-msgid "Initialized empty"
+#: builtin/diff.c:362
+#, c-format
+msgid "more than two blobs given: '%s'"
msgstr ""
-#: builtin/init-db.c:421
-msgid " shared"
+#: builtin/diff.c:370
+#, c-format
+msgid "unhandled object '%s' given."
msgstr ""
-#: builtin/init-db.c:440
-msgid "cannot tell cwd"
+#: builtin/fetch.c:200
+msgid "Couldn't find remote ref HEAD"
msgstr ""
-#: builtin/init-db.c:521 builtin/init-db.c:528
+#: builtin/fetch.c:253
#, c-format
-msgid "cannot mkdir %s"
+msgid "object %s not found"
msgstr ""
-#: builtin/init-db.c:532
-#, c-format
-msgid "cannot chdir to %s"
+#: builtin/fetch.c:259
+msgid "[up to date]"
msgstr ""
-#: builtin/init-db.c:554
+#: builtin/fetch.c:273
#, c-format
-msgid ""
-"%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
-"dir=<directory>)"
+msgid "! %-*s %-*s -> %s (can't fetch in current branch)"
msgstr ""
-#: builtin/init-db.c:578
-msgid "Cannot access current working directory"
+#: builtin/fetch.c:274 builtin/fetch.c:360
+msgid "[rejected]"
msgstr ""
-#: builtin/init-db.c:585
-#, c-format
-msgid "Cannot access work tree '%s'"
+#: builtin/fetch.c:285
+msgid "[tag update]"
msgstr ""
-#: builtin/log.c:188
-#, c-format
-msgid "Final output: %d %s\n"
+#: builtin/fetch.c:287 builtin/fetch.c:322 builtin/fetch.c:340
+msgid " (unable to update local ref)"
msgstr ""
-#: builtin/log.c:401 builtin/log.c:489
-#, c-format
-msgid "Could not read object %s"
+#: builtin/fetch.c:305
+msgid "[new tag]"
msgstr ""
-#: builtin/log.c:513
-#, c-format
-msgid "Unknown type: %d"
+#: builtin/fetch.c:308
+msgid "[new branch]"
msgstr ""
-#: builtin/log.c:602
-msgid "format.headers without value"
+#: builtin/fetch.c:311
+msgid "[new ref]"
msgstr ""
-#: builtin/log.c:675
-msgid "name of output directory is too long"
+#: builtin/fetch.c:356
+msgid "unable to update local ref"
msgstr ""
-#: builtin/log.c:686
-#, c-format
-msgid "Cannot open patch file %s"
+#: builtin/fetch.c:356
+msgid "forced update"
msgstr ""
-#: builtin/log.c:700
-msgid "Need exactly one range."
+#: builtin/fetch.c:362
+msgid "(non-fast-forward)"
msgstr ""
-#: builtin/log.c:708
-msgid "Not a range."
+#: builtin/fetch.c:393 builtin/fetch.c:685
+#, c-format
+msgid "cannot open %s: %s\n"
msgstr ""
-#: builtin/log.c:745
-msgid "Could not extract email from committer identity."
+#: builtin/fetch.c:402
+#, c-format
+msgid "%s did not send all necessary objects\n"
msgstr ""
-#: builtin/log.c:791
-msgid "Cover letter needs email format"
+#: builtin/fetch.c:488
+#, c-format
+msgid "From %.*s\n"
msgstr ""
-#: builtin/log.c:885
+#: builtin/fetch.c:499
#, c-format
-msgid "insane in-reply-to: %s"
+msgid ""
+"some local refs could not be updated; try running\n"
+" 'git remote prune %s' to remove any old, conflicting branches"
msgstr ""
-#: builtin/log.c:958
-msgid "Two output directories?"
+#: builtin/fetch.c:549
+#, c-format
+msgid " (%s will become dangling)"
msgstr ""
-#: builtin/log.c:1179
+#: builtin/fetch.c:550
#, c-format
-msgid "bogus committer info %s"
+msgid " (%s has become dangling)"
msgstr ""
-#: builtin/log.c:1224
-msgid "-n and -k are mutually exclusive."
+#: builtin/fetch.c:557
+msgid "[deleted]"
msgstr ""
-#: builtin/log.c:1226
-msgid "--subject-prefix and -k are mutually exclusive."
+#: builtin/fetch.c:558 builtin/remote.c:1055
+msgid "(none)"
msgstr ""
-#: builtin/log.c:1231 builtin/shortlog.c:284
+#: builtin/fetch.c:675
#, c-format
-msgid "unrecognized argument: %s"
+msgid "Refusing to fetch into current branch %s of non-bare repository"
msgstr ""
-#: builtin/log.c:1234
-msgid "--name-only does not make sense"
+#: builtin/fetch.c:709
+#, c-format
+msgid "Don't know how to fetch from %s"
msgstr ""
-#: builtin/log.c:1236
-msgid "--name-status does not make sense"
+#: builtin/fetch.c:786
+#, c-format
+msgid "Option \"%s\" value \"%s\" is not valid for %s"
msgstr ""
-#: builtin/log.c:1238
-msgid "--check does not make sense"
+#: builtin/fetch.c:789
+#, c-format
+msgid "Option \"%s\" is ignored for %s\n"
msgstr ""
-#: builtin/log.c:1261
-msgid "standard output, or directory, which one?"
+#: builtin/fetch.c:888
+#, c-format
+msgid "Fetching %s\n"
msgstr ""
-#: builtin/log.c:1263
+#: builtin/fetch.c:890 builtin/remote.c:100
#, c-format
-msgid "Could not create directory '%s'"
+msgid "Could not fetch %s"
msgstr ""
-#: builtin/log.c:1416
-msgid "Failed to create output files"
+#: builtin/fetch.c:907
+msgid ""
+"No remote repository specified. Please, specify either a URL or a\n"
+"remote name from which new revisions should be fetched."
msgstr ""
-#: builtin/log.c:1520
-#, c-format
-msgid ""
-"Could not find a tracked remote branch, please specify <upstream> manually.\n"
+#: builtin/fetch.c:927
+msgid "You need to specify a tag name."
msgstr ""
-#: builtin/log.c:1536 builtin/log.c:1538 builtin/log.c:1550
-#, c-format
-msgid "Unknown commit %s"
+#: builtin/fetch.c:979
+msgid "fetch --all does not take a repository argument"
msgstr ""
-#: builtin/merge.c:90
-msgid "switch `m' requires a value"
+#: builtin/fetch.c:981
+msgid "fetch --all does not make sense with refspecs"
msgstr ""
-#: builtin/merge.c:127
+#: builtin/fetch.c:992
#, c-format
-msgid "Could not find merge strategy '%s'.\n"
+msgid "No such remote or remote group: %s"
msgstr ""
-#: builtin/merge.c:128
-#, c-format
-msgid "Available strategies are:"
+#: builtin/fetch.c:1000
+msgid "Fetching a group and specifying refspecs does not make sense"
msgstr ""
-#: builtin/merge.c:133
+#: builtin/gc.c:63
#, c-format
-msgid "Available custom strategies are:"
+msgid "Invalid %s: '%s'"
msgstr ""
-#: builtin/merge.c:240
-msgid "could not run stash."
+#: builtin/gc.c:90
+#, c-format
+msgid "insanely long object directory %.*s"
msgstr ""
-#: builtin/merge.c:245
-msgid "stash failed"
+#: builtin/gc.c:221
+#, c-format
+msgid "Auto packing the repository for optimum performance.\n"
msgstr ""
-#: builtin/merge.c:250
+#: builtin/gc.c:224
#, c-format
-msgid "not a valid object: %s"
+msgid ""
+"Auto packing the repository for optimum performance. You may also\n"
+"run \"git gc\" manually. See \"git help gc\" for more information.\n"
msgstr ""
-#: builtin/merge.c:269 builtin/merge.c:286
-msgid "read-tree failed"
+#: builtin/gc.c:251
+msgid ""
+"There are too many unreachable loose objects; run 'git prune' to remove them."
msgstr ""
-#: builtin/merge.c:316
-msgid " (nothing to squash)"
+#: builtin/grep.c:216
+#, c-format
+msgid "grep: failed to create thread: %s"
msgstr ""
-#: builtin/merge.c:329
+#: builtin/grep.c:402
#, c-format
-msgid "Squash commit -- not updating HEAD\n"
+msgid "Failed to chdir: %s"
msgstr ""
-#: builtin/merge.c:361
-msgid "Writing SQUASH_MSG"
+#: builtin/grep.c:478 builtin/grep.c:512
+#, c-format
+msgid "unable to read tree (%s)"
msgstr ""
-#: builtin/merge.c:363
-msgid "Finishing SQUASH_MSG"
+#: builtin/grep.c:526
+#, c-format
+msgid "unable to grep from object of type %s"
msgstr ""
-#: builtin/merge.c:386
+#: builtin/grep.c:584
#, c-format
-msgid "No merge message -- not updating HEAD\n"
+msgid "switch `%c' expects a numerical value"
msgstr ""
-#: builtin/merge.c:437
+#: builtin/grep.c:601
#, c-format
-msgid "'%s' does not point to a commit"
+msgid "cannot open '%s'"
msgstr ""
-#: builtin/merge.c:536
+#: builtin/grep.c:888
+msgid "no pattern given."
+msgstr ""
+
+#: builtin/grep.c:902
#, c-format
-msgid "Bad branch.%s.mergeoptions string: %s"
+msgid "bad object %s"
msgstr ""
-#: builtin/merge.c:629
-msgid "git write-tree failed to write a tree"
+#: builtin/grep.c:943
+msgid "--open-files-in-pager only works on the worktree"
msgstr ""
-#: builtin/merge.c:679
-msgid "failed to read the cache"
+#: builtin/grep.c:966
+msgid "--cached or --untracked cannot be used with --no-index."
msgstr ""
-#: builtin/merge.c:697
-msgid "Unable to write index."
+#: builtin/grep.c:971
+msgid "--no-index or --untracked cannot be used with revs."
msgstr ""
-#: builtin/merge.c:710
-msgid "Not handling anything other than two heads merge."
+#: builtin/grep.c:974
+msgid "--[no-]exclude-standard cannot be used for tracked contents."
msgstr ""
-#: builtin/merge.c:724
+#: builtin/grep.c:982
+msgid "both --cached and trees are given."
+msgstr ""
+
+#: builtin/help.c:59
#, c-format
-msgid "Unknown option for merge-recursive: -X%s"
+msgid "unrecognized help format '%s'"
msgstr ""
-#: builtin/merge.c:738
+#: builtin/help.c:87
+msgid "Failed to start emacsclient."
+msgstr ""
+
+#: builtin/help.c:100
+msgid "Failed to parse emacsclient version."
+msgstr ""
+
+#: builtin/help.c:108
#, c-format
-msgid "unable to write %s"
+msgid "emacsclient version '%d' too old (< 22)."
msgstr ""
-#: builtin/merge.c:877
+#: builtin/help.c:126 builtin/help.c:154 builtin/help.c:163 builtin/help.c:171
#, c-format
-msgid "Could not read from '%s'"
+msgid "failed to exec '%s': %s"
msgstr ""
-#: builtin/merge.c:886
+#: builtin/help.c:211
#, c-format
-msgid "Not committing merge; use 'git commit' to complete the merge.\n"
+msgid ""
+"'%s': path for unsupported man viewer.\n"
+"Please consider using 'man.<tool>.cmd' instead."
msgstr ""
-#: builtin/merge.c:892
+#: builtin/help.c:223
+#, c-format
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"
-"Lines starting with '#' will be ignored, and an empty message aborts\n"
-"the commit.\n"
+"'%s': cmd for supported man viewer.\n"
+"Please consider using 'man.<tool>.path' instead."
msgstr ""
-#: builtin/merge.c:916
-msgid "Empty commit message."
+#: builtin/help.c:287
+msgid "The most commonly used git commands are:"
msgstr ""
-#: builtin/merge.c:928
+#: builtin/help.c:355
#, c-format
-msgid "Wonderful.\n"
+msgid "'%s': unknown man viewer."
msgstr ""
-#: builtin/merge.c:993
+#: builtin/help.c:372
+msgid "no man viewer handled the request"
+msgstr ""
+
+#: builtin/help.c:380
+msgid "no info viewer handled the request"
+msgstr ""
+
+#: builtin/help.c:391
#, c-format
-msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
+msgid "'%s': not a documentation directory."
msgstr ""
-#: builtin/merge.c:1009
+#: builtin/help.c:432 builtin/help.c:439
#, c-format
-msgid "'%s' is not a commit"
+msgid "usage: %s%s"
msgstr ""
-#: builtin/merge.c:1050
-msgid "No current branch."
+#: builtin/help.c:453
+#, c-format
+msgid "`git %s' is aliased to `%s'"
msgstr ""
-#: builtin/merge.c:1052
-msgid "No remote for the current branch."
+#: builtin/index-pack.c:169
+#, c-format
+msgid "object type mismatch at %s"
msgstr ""
-#: builtin/merge.c:1054
-msgid "No default upstream defined for the current branch."
+#: builtin/index-pack.c:189
+msgid "object of unexpected type"
msgstr ""
-#: builtin/merge.c:1059
+#: builtin/index-pack.c:226
#, c-format
-msgid "No remote tracking branch for %s from %s"
+msgid "cannot fill %d byte"
+msgid_plural "cannot fill %d bytes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:236
+msgid "early EOF"
msgstr ""
-#: builtin/merge.c:1146 builtin/merge.c:1303
+#: builtin/index-pack.c:237
+msgid "read error on input"
+msgstr ""
+
+#: builtin/index-pack.c:249
+msgid "used more bytes than were available"
+msgstr ""
+
+#: builtin/index-pack.c:256
+msgid "pack too large for current definition of off_t"
+msgstr ""
+
+#: builtin/index-pack.c:272
#, c-format
-msgid "%s - not something we can merge"
+msgid "unable to create '%s'"
msgstr ""
-#: builtin/merge.c:1214
-msgid "There is no merge to abort (MERGE_HEAD missing)."
+#: builtin/index-pack.c:277
+#, c-format
+msgid "cannot open packfile '%s'"
msgstr ""
-#: builtin/merge.c:1230 git-pull.sh:31
-msgid ""
-"You have not concluded your merge (MERGE_HEAD exists).\n"
-"Please, commit your changes before you can merge."
+#: builtin/index-pack.c:291
+msgid "pack signature mismatch"
msgstr ""
-#: builtin/merge.c:1233 git-pull.sh:34
-msgid "You have not concluded your merge (MERGE_HEAD exists)."
+#: builtin/index-pack.c:311
+#, c-format
+msgid "pack has bad object at offset %lu: %s"
msgstr ""
-#: builtin/merge.c:1237
-msgid ""
-"You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
-"Please, commit your changes before you can merge."
+#: builtin/index-pack.c:405
+#, c-format
+msgid "inflate returned %d"
msgstr ""
-#: builtin/merge.c:1240
-msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
+#: builtin/index-pack.c:450
+msgid "offset value overflow for delta base object"
msgstr ""
-#: builtin/merge.c:1249
-msgid "You cannot combine --squash with --no-ff."
+#: builtin/index-pack.c:458
+msgid "delta base offset is out of bound"
msgstr ""
-#: builtin/merge.c:1254
-msgid "You cannot combine --no-ff with --ff-only."
+#: builtin/index-pack.c:466
+#, c-format
+msgid "unknown object type %d"
msgstr ""
-#: builtin/merge.c:1261
-msgid "No commit specified and merge.defaultToUpstream not set."
+#: builtin/index-pack.c:495
+msgid "cannot pread pack file"
msgstr ""
-#: builtin/merge.c:1293
-msgid "Can merge only exactly one commit into empty head"
+#: builtin/index-pack.c:497
+#, c-format
+msgid "premature end of pack file, %lu byte missing"
+msgid_plural "premature end of pack file, %lu bytes missing"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:510
+msgid "serious inflate inconsistency"
msgstr ""
-#: builtin/merge.c:1296
-msgid "Squash commit into empty head not supported yet"
+#: builtin/index-pack.c:583
+#, c-format
+msgid "cannot read existing object %s"
msgstr ""
-#: builtin/merge.c:1298
-msgid "Non-fast-forward commit does not make sense into an empty head"
+#: builtin/index-pack.c:586
+#, c-format
+msgid "SHA1 COLLISION FOUND WITH %s !"
msgstr ""
-#: builtin/merge.c:1413
+#: builtin/index-pack.c:598
#, c-format
-msgid "Updating %s..%s\n"
+msgid "invalid blob object %s"
msgstr ""
-#: builtin/merge.c:1451
+#: builtin/index-pack.c:610
#, c-format
-msgid "Trying really trivial in-index merge...\n"
+msgid "invalid %s"
msgstr ""
-#: builtin/merge.c:1458
+#: builtin/index-pack.c:612
+msgid "Error in object"
+msgstr ""
+
+#: builtin/index-pack.c:614
#, c-format
-msgid "Nope.\n"
+msgid "Not all child objects of %s are reachable"
msgstr ""
-#: builtin/merge.c:1490
-msgid "Not possible to fast-forward, aborting."
+#: builtin/index-pack.c:687 builtin/index-pack.c:713
+msgid "failed to apply delta"
msgstr ""
-#: builtin/merge.c:1513 builtin/merge.c:1592
+#: builtin/index-pack.c:850
+msgid "Receiving objects"
+msgstr ""
+
+#: builtin/index-pack.c:850
+msgid "Indexing objects"
+msgstr ""
+
+#: builtin/index-pack.c:872
+msgid "pack is corrupted (SHA1 mismatch)"
+msgstr ""
+
+#: builtin/index-pack.c:877
+msgid "cannot fstat packfile"
+msgstr ""
+
+#: builtin/index-pack.c:880
+msgid "pack has junk at the end"
+msgstr ""
+
+#: builtin/index-pack.c:903
+msgid "Resolving deltas"
+msgstr ""
+
+#: builtin/index-pack.c:954
+msgid "confusion beyond insanity"
+msgstr ""
+
+#: builtin/index-pack.c:973
#, c-format
-msgid "Rewinding the tree to pristine...\n"
+msgid "pack has %d unresolved delta"
+msgid_plural "pack has %d unresolved deltas"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:998
+#, c-format
+msgid "unable to deflate appended object (%d)"
msgstr ""
-#: builtin/merge.c:1517
+#: builtin/index-pack.c:1077
#, c-format
-msgid "Trying merge strategy %s...\n"
+msgid "local object %s is corrupt"
msgstr ""
-#: builtin/merge.c:1583
+#: builtin/index-pack.c:1101
+msgid "error while closing pack file"
+msgstr ""
+
+#: builtin/index-pack.c:1114
#, c-format
-msgid "No merge strategy handled the merge.\n"
+msgid "cannot write keep file '%s'"
msgstr ""
-#: builtin/merge.c:1585
+#: builtin/index-pack.c:1122
#, c-format
-msgid "Merge with strategy %s failed.\n"
+msgid "cannot close written keep file '%s'"
msgstr ""
-#: builtin/merge.c:1594
+#: builtin/index-pack.c:1135
+msgid "cannot store pack file"
+msgstr ""
+
+#: builtin/index-pack.c:1146
+msgid "cannot store index file"
+msgstr ""
+
+#: builtin/index-pack.c:1247
#, c-format
-msgid "Using the %s to prepare resolving by hand.\n"
+msgid "Cannot open existing pack file '%s'"
msgstr ""
-#: builtin/merge.c:1606
+#: builtin/index-pack.c:1249
#, c-format
-msgid "Automatic merge went well; stopped before committing as requested\n"
+msgid "Cannot open existing pack idx file for '%s'"
msgstr ""
-#: builtin/mv.c:108
+#: builtin/index-pack.c:1296
#, c-format
-msgid "Checking rename of '%s' to '%s'\n"
+msgid "non delta: %d object"
+msgid_plural "non delta: %d objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:1303
+#, c-format
+msgid "chain length = %d: %lu object"
+msgid_plural "chain length = %d: %lu objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:1330
+msgid "Cannot come back to cwd"
+msgstr ""
+
+#: builtin/index-pack.c:1374 builtin/index-pack.c:1377
+#: builtin/index-pack.c:1389 builtin/index-pack.c:1393
+#, c-format
+msgid "bad %s"
+msgstr ""
+
+#: builtin/index-pack.c:1407
+msgid "--fix-thin cannot be used without --stdin"
+msgstr ""
+
+#: builtin/index-pack.c:1411 builtin/index-pack.c:1421
+#, c-format
+msgid "packfile name '%s' does not end with '.pack'"
+msgstr ""
+
+#: builtin/index-pack.c:1430
+msgid "--verify with no packfile name given"
+msgstr ""
+
+#: builtin/init-db.c:35
+#, c-format
+msgid "Could not make %s writable by group"
+msgstr ""
+
+#: builtin/init-db.c:62
+#, c-format
+msgid "insanely long template name %s"
+msgstr ""
+
+#: builtin/init-db.c:67
+#, c-format
+msgid "cannot stat '%s'"
+msgstr ""
+
+#: builtin/init-db.c:73
+#, c-format
+msgid "cannot stat template '%s'"
+msgstr ""
+
+#: builtin/init-db.c:80
+#, c-format
+msgid "cannot opendir '%s'"
+msgstr ""
+
+#: builtin/init-db.c:97
+#, c-format
+msgid "cannot readlink '%s'"
+msgstr ""
+
+#: builtin/init-db.c:99
+#, c-format
+msgid "insanely long symlink %s"
+msgstr ""
+
+#: builtin/init-db.c:102
+#, c-format
+msgid "cannot symlink '%s' '%s'"
+msgstr ""
+
+#: builtin/init-db.c:106
+#, c-format
+msgid "cannot copy '%s' to '%s'"
+msgstr ""
+
+#: builtin/init-db.c:110
+#, c-format
+msgid "ignoring template %s"
+msgstr ""
+
+#: builtin/init-db.c:133
+#, c-format
+msgid "insanely long template path %s"
+msgstr ""
+
+#: builtin/init-db.c:141
+#, c-format
+msgid "templates not found %s"
+msgstr ""
+
+#: builtin/init-db.c:154
+#, c-format
+msgid "not copying templates of a wrong format version %d from '%s'"
+msgstr ""
+
+#: builtin/init-db.c:192
+#, c-format
+msgid "insane git directory %s"
+msgstr ""
+
+#: builtin/init-db.c:322 builtin/init-db.c:325
+#, c-format
+msgid "%s already exists"
+msgstr ""
+
+#: builtin/init-db.c:354
+#, c-format
+msgid "unable to handle file type %d"
+msgstr ""
+
+#: builtin/init-db.c:357
+#, c-format
+msgid "unable to move %s to %s"
+msgstr ""
+
+#: builtin/init-db.c:362
+#, c-format
+msgid "Could not create git link %s"
+msgstr ""
+
+#.
+#. * TRANSLATORS: The first '%s' is either "Reinitialized
+#. * existing" or "Initialized empty", the second " shared" or
+#. * "", and the last '%s%s' is the verbatim directory name.
+#.
+#: builtin/init-db.c:419
+#, c-format
+msgid "%s%s Git repository in %s%s\n"
+msgstr ""
+
+#: builtin/init-db.c:420
+msgid "Reinitialized existing"
+msgstr ""
+
+#: builtin/init-db.c:420
+msgid "Initialized empty"
+msgstr ""
+
+#: builtin/init-db.c:421
+msgid " shared"
+msgstr ""
+
+#: builtin/init-db.c:440
+msgid "cannot tell cwd"
+msgstr ""
+
+#: builtin/init-db.c:521 builtin/init-db.c:528
+#, c-format
+msgid "cannot mkdir %s"
+msgstr ""
+
+#: builtin/init-db.c:532
+#, c-format
+msgid "cannot chdir to %s"
+msgstr ""
+
+#: builtin/init-db.c:554
+#, c-format
+msgid ""
+"%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
+"dir=<directory>)"
+msgstr ""
+
+#: builtin/init-db.c:578
+msgid "Cannot access current working directory"
+msgstr ""
+
+#: builtin/init-db.c:585
+#, c-format
+msgid "Cannot access work tree '%s'"
+msgstr ""
+
+#: builtin/log.c:188
+#, c-format
+msgid "Final output: %d %s\n"
+msgstr ""
+
+#: builtin/log.c:401 builtin/log.c:489
+#, c-format
+msgid "Could not read object %s"
+msgstr ""
+
+#: builtin/log.c:513
+#, c-format
+msgid "Unknown type: %d"
+msgstr ""
+
+#: builtin/log.c:602
+msgid "format.headers without value"
+msgstr ""
+
+#: builtin/log.c:675
+msgid "name of output directory is too long"
+msgstr ""
+
+#: builtin/log.c:686
+#, c-format
+msgid "Cannot open patch file %s"
+msgstr ""
+
+#: builtin/log.c:700
+msgid "Need exactly one range."
+msgstr ""
+
+#: builtin/log.c:708
+msgid "Not a range."
+msgstr ""
+
+#: builtin/log.c:745
+msgid "Could not extract email from committer identity."
+msgstr ""
+
+#: builtin/log.c:791
+msgid "Cover letter needs email format"
+msgstr ""
+
+#: builtin/log.c:885
+#, c-format
+msgid "insane in-reply-to: %s"
+msgstr ""
+
+#: builtin/log.c:958
+msgid "Two output directories?"
+msgstr ""
+
+#: builtin/log.c:1179
+#, c-format
+msgid "bogus committer info %s"
+msgstr ""
+
+#: builtin/log.c:1224
+msgid "-n and -k are mutually exclusive."
+msgstr ""
+
+#: builtin/log.c:1226
+msgid "--subject-prefix and -k are mutually exclusive."
+msgstr ""
+
+#: builtin/log.c:1234
+msgid "--name-only does not make sense"
+msgstr ""
+
+#: builtin/log.c:1236
+msgid "--name-status does not make sense"
+msgstr ""
+
+#: builtin/log.c:1238
+msgid "--check does not make sense"
+msgstr ""
+
+#: builtin/log.c:1261
+msgid "standard output, or directory, which one?"
+msgstr ""
+
+#: builtin/log.c:1263
+#, c-format
+msgid "Could not create directory '%s'"
+msgstr ""
+
+#: builtin/log.c:1416
+msgid "Failed to create output files"
+msgstr ""
+
+#: builtin/log.c:1520
+#, c-format
+msgid ""
+"Could not find a tracked remote branch, please specify <upstream> manually.\n"
+msgstr ""
+
+#: builtin/log.c:1536 builtin/log.c:1538 builtin/log.c:1550
+#, c-format
+msgid "Unknown commit %s"
+msgstr ""
+
+#: builtin/merge.c:90
+msgid "switch `m' requires a value"
+msgstr ""
+
+#: builtin/merge.c:127
+#, c-format
+msgid "Could not find merge strategy '%s'.\n"
+msgstr ""
+
+#: builtin/merge.c:128
+#, c-format
+msgid "Available strategies are:"
+msgstr ""
+
+#: builtin/merge.c:133
+#, c-format
+msgid "Available custom strategies are:"
+msgstr ""
+
+#: builtin/merge.c:240
+msgid "could not run stash."
+msgstr ""
+
+#: builtin/merge.c:245
+msgid "stash failed"
+msgstr ""
+
+#: builtin/merge.c:250
+#, c-format
+msgid "not a valid object: %s"
+msgstr ""
+
+#: builtin/merge.c:269 builtin/merge.c:286
+msgid "read-tree failed"
+msgstr ""
+
+#: builtin/merge.c:316
+msgid " (nothing to squash)"
+msgstr ""
+
+#: builtin/merge.c:329
+#, c-format
+msgid "Squash commit -- not updating HEAD\n"
+msgstr ""
+
+#: builtin/merge.c:361
+msgid "Writing SQUASH_MSG"
+msgstr ""
+
+#: builtin/merge.c:363
+msgid "Finishing SQUASH_MSG"
+msgstr ""
+
+#: builtin/merge.c:386
+#, c-format
+msgid "No merge message -- not updating HEAD\n"
+msgstr ""
+
+#: builtin/merge.c:437
+#, c-format
+msgid "'%s' does not point to a commit"
+msgstr ""
+
+#: builtin/merge.c:536
+#, c-format
+msgid "Bad branch.%s.mergeoptions string: %s"
+msgstr ""
+
+#: builtin/merge.c:629
+msgid "git write-tree failed to write a tree"
+msgstr ""
+
+#: builtin/merge.c:679
+msgid "failed to read the cache"
+msgstr ""
+
+#: builtin/merge.c:697
+msgid "Unable to write index."
+msgstr ""
+
+#: builtin/merge.c:710
+msgid "Not handling anything other than two heads merge."
+msgstr ""
+
+#: builtin/merge.c:724
+#, c-format
+msgid "Unknown option for merge-recursive: -X%s"
+msgstr ""
+
+#: builtin/merge.c:738
+#, c-format
+msgid "unable to write %s"
+msgstr ""
+
+#: builtin/merge.c:877
+#, c-format
+msgid "Could not read from '%s'"
+msgstr ""
+
+#: builtin/merge.c:886
+#, c-format
+msgid "Not committing merge; use 'git commit' to complete the merge.\n"
+msgstr ""
+
+#: builtin/merge.c:892
+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"
+"Lines starting with '#' will be ignored, and an empty message aborts\n"
+"the commit.\n"
+msgstr ""
+
+#: builtin/merge.c:916
+msgid "Empty commit message."
+msgstr ""
+
+#: builtin/merge.c:928
+#, c-format
+msgid "Wonderful.\n"
+msgstr ""
+
+#: builtin/merge.c:993
+#, c-format
+msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
+msgstr ""
+
+#: builtin/merge.c:1009
+#, c-format
+msgid "'%s' is not a commit"
+msgstr ""
+
+#: builtin/merge.c:1050
+msgid "No current branch."
+msgstr ""
+
+#: builtin/merge.c:1052
+msgid "No remote for the current branch."
+msgstr ""
+
+#: builtin/merge.c:1054
+msgid "No default upstream defined for the current branch."
+msgstr ""
+
+#: builtin/merge.c:1059
+#, c-format
+msgid "No remote tracking branch for %s from %s"
+msgstr ""
+
+#: builtin/merge.c:1146 builtin/merge.c:1303
+#, c-format
+msgid "%s - not something we can merge"
+msgstr ""
+
+#: builtin/merge.c:1214
+msgid "There is no merge to abort (MERGE_HEAD missing)."
+msgstr ""
+
+#: builtin/merge.c:1230 git-pull.sh:31
+msgid ""
+"You have not concluded your merge (MERGE_HEAD exists).\n"
+"Please, commit your changes before you can merge."
+msgstr ""
+
+#: builtin/merge.c:1233 git-pull.sh:34
+msgid "You have not concluded your merge (MERGE_HEAD exists)."
+msgstr ""
+
+#: builtin/merge.c:1237
+msgid ""
+"You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
+"Please, commit your changes before you can merge."
+msgstr ""
+
+#: builtin/merge.c:1240
+msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
+msgstr ""
+
+#: builtin/merge.c:1249
+msgid "You cannot combine --squash with --no-ff."
+msgstr ""
+
+#: builtin/merge.c:1254
+msgid "You cannot combine --no-ff with --ff-only."
+msgstr ""
+
+#: builtin/merge.c:1261
+msgid "No commit specified and merge.defaultToUpstream not set."
+msgstr ""
+
+#: builtin/merge.c:1293
+msgid "Can merge only exactly one commit into empty head"
+msgstr ""
+
+#: builtin/merge.c:1296
+msgid "Squash commit into empty head not supported yet"
+msgstr ""
+
+#: builtin/merge.c:1298
+msgid "Non-fast-forward commit does not make sense into an empty head"
+msgstr ""
+
+#: builtin/merge.c:1413
+#, c-format
+msgid "Updating %s..%s\n"
+msgstr ""
+
+#: builtin/merge.c:1451
+#, c-format
+msgid "Trying really trivial in-index merge...\n"
+msgstr ""
+
+#: builtin/merge.c:1458
+#, c-format
+msgid "Nope.\n"
+msgstr ""
+
+#: builtin/merge.c:1490
+msgid "Not possible to fast-forward, aborting."
+msgstr ""
+
+#: builtin/merge.c:1513 builtin/merge.c:1592
+#, c-format
+msgid "Rewinding the tree to pristine...\n"
+msgstr ""
+
+#: builtin/merge.c:1517
+#, c-format
+msgid "Trying merge strategy %s...\n"
+msgstr ""
+
+#: builtin/merge.c:1583
+#, c-format
+msgid "No merge strategy handled the merge.\n"
+msgstr ""
+
+#: builtin/merge.c:1585
+#, c-format
+msgid "Merge with strategy %s failed.\n"
+msgstr ""
+
+#: builtin/merge.c:1594
+#, c-format
+msgid "Using the %s to prepare resolving by hand.\n"
+msgstr ""
+
+#: builtin/merge.c:1606
+#, c-format
+msgid "Automatic merge went well; stopped before committing as requested\n"
+msgstr ""
+
+#: builtin/mv.c:108
+#, c-format
+msgid "Checking rename of '%s' to '%s'\n"
+msgstr ""
+
+#: builtin/mv.c:112
+msgid "bad source"
+msgstr ""
+
+#: builtin/mv.c:115
+msgid "can not move directory into itself"
+msgstr ""
+
+#: builtin/mv.c:118
+msgid "cannot move directory over file"
+msgstr ""
+
+#: builtin/mv.c:128
+#, c-format
+msgid "Huh? %.*s is in index?"
+msgstr ""
+
+#: builtin/mv.c:140
+msgid "source directory is empty"
+msgstr ""
+
+#: builtin/mv.c:171
+msgid "not under version control"
+msgstr ""
+
+#: builtin/mv.c:173
+msgid "destination exists"
+msgstr ""
+
+#: builtin/mv.c:181
+#, c-format
+msgid "overwriting '%s'"
+msgstr ""
+
+#: builtin/mv.c:184
+msgid "Cannot overwrite"
+msgstr ""
+
+#: builtin/mv.c:187
+msgid "multiple sources for the same target"
+msgstr ""
+
+#: builtin/mv.c:202
+#, c-format
+msgid "%s, source=%s, destination=%s"
+msgstr ""
+
+#: builtin/mv.c:212
+#, c-format
+msgid "Renaming %s to %s\n"
+msgstr ""
+
+#: builtin/mv.c:215 builtin/remote.c:731
+#, c-format
+msgid "renaming '%s' failed"
+msgstr ""
+
+#: builtin/notes.c:139
+#, c-format
+msgid "unable to start 'show' for object '%s'"
+msgstr ""
+
+#: builtin/notes.c:145
+msgid "can't fdopen 'show' output fd"
+msgstr ""
+
+#: builtin/notes.c:155
+#, c-format
+msgid "failed to close pipe to 'show' for object '%s'"
+msgstr ""
+
+#: builtin/notes.c:158
+#, c-format
+msgid "failed to finish 'show' for object '%s'"
+msgstr ""
+
+#: builtin/notes.c:175 builtin/tag.c:347
+#, c-format
+msgid "could not create file '%s'"
+msgstr ""
+
+#: builtin/notes.c:189
+msgid "Please supply the note contents using either -m or -F option"
+msgstr ""
+
+#: builtin/notes.c:210 builtin/notes.c:973
+#, c-format
+msgid "Removing note for object %s\n"
+msgstr ""
+
+#: builtin/notes.c:215
+msgid "unable to write note object"
+msgstr ""
+
+#: builtin/notes.c:217
+#, c-format
+msgid "The note contents has been left in %s"
+msgstr ""
+
+#: builtin/notes.c:251 builtin/tag.c:542
+#, c-format
+msgid "cannot read '%s'"
+msgstr ""
+
+#: builtin/notes.c:253 builtin/tag.c:545
+#, c-format
+msgid "could not open or read '%s'"
+msgstr ""
+
+#: builtin/notes.c:272 builtin/notes.c:445 builtin/notes.c:447
+#: builtin/notes.c:507 builtin/notes.c:561 builtin/notes.c:644
+#: builtin/notes.c:649 builtin/notes.c:724 builtin/notes.c:766
+#: builtin/notes.c:968 builtin/reset.c:293 builtin/tag.c:558
+#, c-format
+msgid "Failed to resolve '%s' as a valid ref."
+msgstr ""
+
+#: builtin/notes.c:275
+#, c-format
+msgid "Failed to read object '%s'."
+msgstr ""
+
+#: builtin/notes.c:299
+msgid "Cannot commit uninitialized/unreferenced notes tree"
+msgstr ""
+
+#: builtin/notes.c:340
+#, c-format
+msgid "Bad notes.rewriteMode value: '%s'"
+msgstr ""
+
+#: builtin/notes.c:350
+#, c-format
+msgid "Refusing to rewrite notes in %s (outside of refs/notes/)"
+msgstr ""
+
+#. TRANSLATORS: The first %s is the name of the
+#. environment variable, the second %s is its value
+#: builtin/notes.c:377
+#, c-format
+msgid "Bad %s value: '%s'"
+msgstr ""
+
+#: builtin/notes.c:441
+#, c-format
+msgid "Malformed input line: '%s'."
+msgstr ""
+
+#: builtin/notes.c:456
+#, c-format
+msgid "Failed to copy notes from '%s' to '%s'"
+msgstr ""
+
+#: builtin/notes.c:500 builtin/notes.c:554 builtin/notes.c:627
+#: builtin/notes.c:639 builtin/notes.c:712 builtin/notes.c:759
+#: builtin/notes.c:1033
+msgid "too many parameters"
+msgstr ""
+
+#: builtin/notes.c:513 builtin/notes.c:772
+#, c-format
+msgid "No note found for object %s."
+msgstr ""
+
+#: builtin/notes.c:580
+#, c-format
+msgid ""
+"Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr ""
+
+#: builtin/notes.c:585 builtin/notes.c:662
+#, c-format
+msgid "Overwriting existing notes for object %s\n"
+msgstr ""
+
+#: builtin/notes.c:635
+msgid "too few parameters"
+msgstr ""
+
+#: builtin/notes.c:656
+#, c-format
+msgid ""
+"Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr ""
+
+#: builtin/notes.c:668
+#, c-format
+msgid "Missing notes on source object %s. Cannot copy."
+msgstr ""
+
+#: builtin/notes.c:717
+#, 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 ""
+
+#: builtin/notes.c:971
+#, c-format
+msgid "Object %s has no note\n"
+msgstr ""
+
+#: builtin/notes.c:1103 builtin/remote.c:1598
+#, c-format
+msgid "Unknown subcommand: %s"
+msgstr ""
+
+#: builtin/pack-objects.c:2315
+#, c-format
+msgid "unsupported index version %s"
+msgstr ""
+
+#: builtin/pack-objects.c:2319
+#, c-format
+msgid "bad index version '%s'"
+msgstr ""
+
+#: builtin/pack-objects.c:2342
+#, c-format
+msgid "option %s does not accept negative form"
+msgstr ""
+
+#: builtin/pack-objects.c:2346
+#, c-format
+msgid "unable to parse value '%s' for option %s"
+msgstr ""
+
+#: builtin/push.c:45
+msgid "tag shorthand without <tag>"
+msgstr ""
+
+#: builtin/push.c:64
+msgid "--delete only accepts plain target ref names"
+msgstr ""
+
+#: builtin/push.c:99
+msgid ""
+"\n"
+"To choose either option permanently, see push.default in 'git help config'."
+msgstr ""
+
+#: builtin/push.c:102
+#, 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 %s\n"
+"%s"
+msgstr ""
+
+#: builtin/push.c:121
+#, 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 ""
+
+#: builtin/push.c:128
+#, 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"
+msgstr ""
+
+#: builtin/push.c:136
+#, c-format
+msgid "The current branch %s has multiple upstream branches, refusing to push."
+msgstr ""
+
+#: builtin/push.c:139
+#, 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 ""
+
+#: builtin/push.c:174
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr ""
+
+#: builtin/push.c:181
+msgid ""
+"Updates were rejected because the tip of your current branch is behind\n"
+"its remote counterpart. Merge the remote changes (e.g. 'git pull')\n"
+"before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+
+#: builtin/push.c:187
+msgid ""
+"Updates were rejected because a pushed branch tip is behind its remote\n"
+"counterpart. If you did not intend to push that branch, you may want to\n"
+"specify branches to push or set the 'push.default' configuration\n"
+"variable to 'current' or 'upstream' to push only the current branch."
+msgstr ""
+
+#: builtin/push.c:193
+msgid ""
+"Updates were rejected because a pushed branch tip is behind its remote\n"
+"counterpart. Check out this branch and merge the remote changes\n"
+"(e.g. 'git pull') before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+
+#: builtin/push.c:233
+#, c-format
+msgid "Pushing to %s\n"
+msgstr ""
+
+#: builtin/push.c:237
+#, c-format
+msgid "failed to push some refs to '%s'"
+msgstr ""
+
+#: builtin/push.c:269
+#, c-format
+msgid "bad repository '%s'"
+msgstr ""
+
+#: builtin/push.c:270
+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 ""
+
+#: builtin/push.c:285
+msgid "--all and --tags are incompatible"
+msgstr ""
+
+#: builtin/push.c:286
+msgid "--all can't be combined with refspecs"
+msgstr ""
+
+#: builtin/push.c:291
+msgid "--mirror and --tags are incompatible"
msgstr ""
-#: builtin/mv.c:112
-msgid "bad source"
+#: builtin/push.c:292
+msgid "--mirror can't be combined with refspecs"
msgstr ""
-#: builtin/mv.c:115
-msgid "can not move directory into itself"
+#: builtin/push.c:297
+msgid "--all and --mirror are incompatible"
msgstr ""
-#: builtin/mv.c:118
-msgid "cannot move directory over file"
+#: builtin/push.c:385
+msgid "--delete is incompatible with --all, --mirror and --tags"
msgstr ""
-#: builtin/mv.c:128
-#, c-format
-msgid "Huh? %.*s is in index?"
+#: builtin/push.c:387
+msgid "--delete doesn't make sense without any refs"
msgstr ""
-#: builtin/mv.c:140
-msgid "source directory is empty"
+#: builtin/remote.c:98
+#, c-format
+msgid "Updating %s"
msgstr ""
-#: builtin/mv.c:171
-msgid "not under version control"
+#: builtin/remote.c:130
+msgid ""
+"--mirror is dangerous and deprecated; please\n"
+"\t use --mirror=fetch or --mirror=push instead"
msgstr ""
-#: builtin/mv.c:173
-msgid "destination exists"
+#: builtin/remote.c:147
+#, c-format
+msgid "unknown mirror argument: %s"
msgstr ""
-#: builtin/mv.c:181
-#, c-format
-msgid "overwriting '%s'"
+#: builtin/remote.c:185
+msgid "specifying a master branch makes no sense with --mirror"
msgstr ""
-#: builtin/mv.c:184
-msgid "Cannot overwrite"
+#: builtin/remote.c:187
+msgid "specifying branches to track makes sense only with fetch mirrors"
msgstr ""
-#: builtin/mv.c:187
-msgid "multiple sources for the same target"
+#: builtin/remote.c:195 builtin/remote.c:646
+#, c-format
+msgid "remote %s already exists."
msgstr ""
-#: builtin/mv.c:202
+#: builtin/remote.c:199 builtin/remote.c:650
#, c-format
-msgid "%s, source=%s, destination=%s"
+msgid "'%s' is not a valid remote name"
msgstr ""
-#: builtin/mv.c:212
+#: builtin/remote.c:243
#, c-format
-msgid "Renaming %s to %s\n"
+msgid "Could not setup master '%s'"
msgstr ""
-#: builtin/mv.c:215
+#: builtin/remote.c:299
#, c-format
-msgid "renaming '%s' failed"
+msgid "more than one %s"
msgstr ""
-#: builtin/notes.c:139
+#: builtin/remote.c:339
#, c-format
-msgid "unable to start 'show' for object '%s'"
+msgid "Could not get fetch map for refspec %s"
msgstr ""
-#: builtin/notes.c:145
-msgid "can't fdopen 'show' output fd"
+#: builtin/remote.c:440 builtin/remote.c:448
+msgid "(matching)"
msgstr ""
-#: builtin/notes.c:155
+#: builtin/remote.c:452
+msgid "(delete)"
+msgstr ""
+
+#: builtin/remote.c:595 builtin/remote.c:601 builtin/remote.c:607
#, c-format
-msgid "failed to close pipe to 'show' for object '%s'"
+msgid "Could not append '%s' to '%s'"
msgstr ""
-#: builtin/notes.c:158
+#: builtin/remote.c:639 builtin/remote.c:792 builtin/remote.c:890
#, c-format
-msgid "failed to finish 'show' for object '%s'"
+msgid "No such remote: %s"
msgstr ""
-#: builtin/notes.c:175 builtin/tag.c:343
+#: builtin/remote.c:656
#, c-format
-msgid "could not create file '%s'"
+msgid "Could not rename config section '%s' to '%s'"
msgstr ""
-#: builtin/notes.c:189
-msgid "Please supply the note contents using either -m or -F option"
+#: builtin/remote.c:662 builtin/remote.c:799
+#, c-format
+msgid "Could not remove config section '%s'"
msgstr ""
-#: builtin/notes.c:210 builtin/notes.c:973
+#: builtin/remote.c:677
#, c-format
-msgid "Removing note for object %s\n"
+msgid ""
+"Not updating non-default fetch respec\n"
+"\t%s\n"
+"\tPlease update the configuration manually if necessary."
msgstr ""
-#: builtin/notes.c:215
-msgid "unable to write note object"
+#: builtin/remote.c:683
+#, c-format
+msgid "Could not append '%s'"
msgstr ""
-#: builtin/notes.c:217
+#: builtin/remote.c:694
#, c-format
-msgid "The note contents has been left in %s"
+msgid "Could not set '%s'"
msgstr ""
-#: builtin/notes.c:251 builtin/tag.c:521
+#: builtin/remote.c:716
#, c-format
-msgid "cannot read '%s'"
+msgid "deleting '%s' failed"
msgstr ""
-#: builtin/notes.c:253 builtin/tag.c:524
+#: builtin/remote.c:750
#, c-format
-msgid "could not open or read '%s'"
+msgid "creating '%s' failed"
msgstr ""
-#: builtin/notes.c:272 builtin/notes.c:445 builtin/notes.c:447
-#: builtin/notes.c:507 builtin/notes.c:561 builtin/notes.c:644
-#: builtin/notes.c:649 builtin/notes.c:724 builtin/notes.c:766
-#: builtin/notes.c:968 builtin/reset.c:293 builtin/tag.c:537
+#: builtin/remote.c:764
#, c-format
-msgid "Failed to resolve '%s' as a valid ref."
+msgid "Could not remove branch %s"
msgstr ""
-#: builtin/notes.c:275
+#: builtin/remote.c:834
+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] ""
+msgstr[1] ""
+
+#: builtin/remote.c:943
#, c-format
-msgid "Failed to read object '%s'."
+msgid " new (next fetch will store in remotes/%s)"
msgstr ""
-#: builtin/notes.c:299
-msgid "Cannot commit uninitialized/unreferenced notes tree"
+#: builtin/remote.c:946
+msgid " tracked"
msgstr ""
-#: builtin/notes.c:340
-#, c-format
-msgid "Bad notes.rewriteMode value: '%s'"
+#: builtin/remote.c:948
+msgid " stale (use 'git remote prune' to remove)"
msgstr ""
-#: builtin/notes.c:350
-#, c-format
-msgid "Refusing to rewrite notes in %s (outside of refs/notes/)"
+#: builtin/remote.c:950
+msgid " ???"
msgstr ""
-#. TRANSLATORS: The first %s is the name of the
-#. environment variable, the second %s is its value
-#: builtin/notes.c:377
+#: builtin/remote.c:991
#, c-format
-msgid "Bad %s value: '%s'"
+msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
msgstr ""
-#: builtin/notes.c:441
+#: builtin/remote.c:998
#, c-format
-msgid "Malformed input line: '%s'."
+msgid "rebases onto remote %s"
msgstr ""
-#: builtin/notes.c:456
+#: builtin/remote.c:1001
#, c-format
-msgid "Failed to copy notes from '%s' to '%s'"
+msgid " merges with remote %s"
msgstr ""
-#: builtin/notes.c:500 builtin/notes.c:554 builtin/notes.c:627
-#: builtin/notes.c:639 builtin/notes.c:712 builtin/notes.c:759
-#: builtin/notes.c:1033
-msgid "too many parameters"
+#: builtin/remote.c:1002
+msgid " and with remote"
msgstr ""
-#: builtin/notes.c:513 builtin/notes.c:772
+#: builtin/remote.c:1004
#, c-format
-msgid "No note found for object %s."
+msgid "merges with remote %s"
msgstr ""
-#: builtin/notes.c:580
-#, c-format
-msgid ""
-"Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite "
-"existing notes"
+#: builtin/remote.c:1005
+msgid " and with remote"
msgstr ""
-#: builtin/notes.c:585 builtin/notes.c:662
-#, c-format
-msgid "Overwriting existing notes for object %s\n"
+#: builtin/remote.c:1051
+msgid "create"
msgstr ""
-#: builtin/notes.c:635
-msgid "too few parameters"
+#: builtin/remote.c:1054
+msgid "delete"
msgstr ""
-#: builtin/notes.c:656
-#, c-format
-msgid ""
-"Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
-"existing notes"
+#: builtin/remote.c:1058
+msgid "up to date"
msgstr ""
-#: builtin/notes.c:668
-#, c-format
-msgid "Missing notes on source object %s. Cannot copy."
+#: builtin/remote.c:1061
+msgid "fast-forwardable"
msgstr ""
-#: builtin/notes.c:717
-#, 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"
+#: builtin/remote.c:1064
+msgid "local out of date"
msgstr ""
-#: builtin/notes.c:971
+#: builtin/remote.c:1071
#, c-format
-msgid "Object %s has no note\n"
+msgid " %-*s forces to %-*s (%s)"
msgstr ""
-#: builtin/notes.c:1103
+#: builtin/remote.c:1074
#, c-format
-msgid "Unknown subcommand: %s"
+msgid " %-*s pushes to %-*s (%s)"
msgstr ""
-#: builtin/pack-objects.c:2310
+#: builtin/remote.c:1078
#, c-format
-msgid "unsupported index version %s"
+msgid " %-*s forces to %s"
msgstr ""
-#: builtin/pack-objects.c:2314
+#: builtin/remote.c:1081
#, c-format
-msgid "bad index version '%s'"
+msgid " %-*s pushes to %s"
msgstr ""
-#: builtin/pack-objects.c:2322
+#: builtin/remote.c:1118
#, c-format
-msgid "option %s does not accept negative form"
+msgid "* remote %s"
msgstr ""
-#: builtin/pack-objects.c:2326
+#: builtin/remote.c:1119
#, c-format
-msgid "unable to parse value '%s' for option %s"
+msgid " Fetch URL: %s"
msgstr ""
-#: builtin/push.c:45
-msgid "tag shorthand without <tag>"
+#: builtin/remote.c:1120 builtin/remote.c:1285
+msgid "(no URL)"
msgstr ""
-#: builtin/push.c:64
-msgid "--delete only accepts plain target ref names"
+#: builtin/remote.c:1129 builtin/remote.c:1131
+#, c-format
+msgid " Push URL: %s"
msgstr ""
-#: builtin/push.c:84
+#: builtin/remote.c:1133 builtin/remote.c:1135 builtin/remote.c:1137
#, 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"
+msgid " HEAD branch: %s"
msgstr ""
-#: builtin/push.c:91
+#: builtin/remote.c:1139
#, 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"
+" HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
msgstr ""
-#: builtin/push.c:99
+#: builtin/remote.c:1151
#, c-format
-msgid "The current branch %s has multiple upstream branches, refusing to push."
+msgid " Remote branch:%s"
+msgid_plural " Remote branches:%s"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/remote.c:1154 builtin/remote.c:1181
+msgid " (status not queried)"
msgstr ""
-#: builtin/push.c:102
+#: builtin/remote.c:1163
+msgid " Local branch configured for 'git pull':"
+msgid_plural " Local branches configured for 'git pull':"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/remote.c:1171
+msgid " Local refs will be mirrored by 'git push'"
+msgstr ""
+
+#: builtin/remote.c:1178
#, 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."
+msgid " Local ref configured for 'git push'%s:"
+msgid_plural " Local refs configured for 'git push'%s:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/remote.c:1216
+msgid "Cannot determine remote HEAD"
msgstr ""
-#: builtin/push.c:131
-msgid ""
-"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+#: builtin/remote.c:1218
+msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
msgstr ""
-#: builtin/push.c:138
-msgid ""
-"Updates were rejected because the tip of your current branch is behind\n"
-"its remote counterpart. Merge the remote changes (e.g. 'git pull')\n"
-"before pushing again.\n"
-"See the 'Note about fast-forwards' in 'git push --help' for details."
+#: builtin/remote.c:1228
+#, c-format
+msgid "Could not delete %s"
msgstr ""
-#: builtin/push.c:144
-msgid ""
-"Updates were rejected because a pushed branch tip is behind its remote\n"
-"counterpart. If you did not intend to push that branch, you may want to\n"
-"specify branches to push or set the 'push.default' configuration\n"
-"variable to 'current' or 'upstream' to push only the current branch."
+#: builtin/remote.c:1236
+#, c-format
+msgid "Not a valid ref: %s"
msgstr ""
-#: builtin/push.c:150
-msgid ""
-"Updates were rejected because a pushed branch tip is behind its remote\n"
-"counterpart. Check out this branch and merge the remote changes\n"
-"(e.g. 'git pull') before pushing again.\n"
-"See the 'Note about fast-forwards' in 'git push --help' for details."
+#: builtin/remote.c:1238
+#, c-format
+msgid "Could not setup %s"
msgstr ""
-#: builtin/push.c:190
+#: builtin/remote.c:1274
#, c-format
-msgid "Pushing to %s\n"
+msgid " %s will become dangling!"
msgstr ""
-#: builtin/push.c:194
+#: builtin/remote.c:1275
#, c-format
-msgid "failed to push some refs to '%s'"
+msgid " %s has become dangling!"
msgstr ""
-#: builtin/push.c:226
+#: builtin/remote.c:1281
#, c-format
-msgid "bad repository '%s'"
+msgid "Pruning %s"
msgstr ""
-#: builtin/push.c:227
-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"
+#: builtin/remote.c:1282
+#, c-format
+msgid "URL: %s"
msgstr ""
-#: builtin/push.c:242
-msgid "--all and --tags are incompatible"
+#: builtin/remote.c:1295
+#, c-format
+msgid " * [would prune] %s"
msgstr ""
-#: builtin/push.c:243
-msgid "--all can't be combined with refspecs"
+#: builtin/remote.c:1298
+#, c-format
+msgid " * [pruned] %s"
msgstr ""
-#: builtin/push.c:248
-msgid "--mirror and --tags are incompatible"
+#: builtin/remote.c:1387 builtin/remote.c:1461
+#, c-format
+msgid "No such remote '%s'"
msgstr ""
-#: builtin/push.c:249
-msgid "--mirror can't be combined with refspecs"
+#: builtin/remote.c:1414
+msgid "no remote specified"
msgstr ""
-#: builtin/push.c:254
-msgid "--all and --mirror are incompatible"
+#: builtin/remote.c:1447
+msgid "--add --delete doesn't make sense"
msgstr ""
-#: builtin/push.c:342
-msgid "--delete is incompatible with --all, --mirror and --tags"
+#: builtin/remote.c:1487
+#, c-format
+msgid "Invalid old URL pattern: %s"
msgstr ""
-#: builtin/push.c:344
-msgid "--delete doesn't make sense without any refs"
+#: builtin/remote.c:1495
+#, c-format
+msgid "No such URL found: %s"
+msgstr ""
+
+#: builtin/remote.c:1497
+msgid "Will not delete all non-push URLs"
msgstr ""
#: builtin/reset.c:33
msgid "hard"
msgstr ""
+#: builtin/reset.c:33
+msgid "merge"
+msgstr ""
+
#: builtin/reset.c:33
msgid "keep"
msgstr ""
msgid "%s: %s cannot be used with %s"
msgstr ""
-#: builtin/revert.c:127
+#: builtin/revert.c:131
msgid "program error"
msgstr ""
-#: builtin/revert.c:213
+#: builtin/revert.c:221
msgid "revert failed"
msgstr ""
-#: builtin/revert.c:228
+#: builtin/revert.c:236
msgid "cherry-pick failed"
msgstr ""
msgid "Missing author: %s"
msgstr ""
-#: builtin/tag.c:58
+#: builtin/tag.c:60
#, c-format
msgid "malformed object at '%s'"
msgstr ""
-#: builtin/tag.c:205
+#: builtin/tag.c:207
#, c-format
msgid "tag name too long: %.*s..."
msgstr ""
-#: builtin/tag.c:210
+#: builtin/tag.c:212
#, c-format
msgid "tag '%s' not found."
msgstr ""
-#: builtin/tag.c:225
+#: builtin/tag.c:227
#, c-format
msgid "Deleted tag '%s' (was %s)\n"
msgstr ""
-#: builtin/tag.c:237
+#: builtin/tag.c:239
#, c-format
msgid "could not verify the tag '%s'"
msgstr ""
-#: builtin/tag.c:247
+#: builtin/tag.c:249
msgid ""
"\n"
"#\n"
"#\n"
msgstr ""
-#: builtin/tag.c:254
+#: builtin/tag.c:256
msgid ""
"\n"
"#\n"
"#\n"
msgstr ""
-#: builtin/tag.c:294
+#: builtin/tag.c:298
msgid "unable to sign the tag"
msgstr ""
-#: builtin/tag.c:296
+#: builtin/tag.c:300
msgid "unable to write tag file"
msgstr ""
-#: builtin/tag.c:321
+#: builtin/tag.c:325
msgid "bad object type."
msgstr ""
-#: builtin/tag.c:334
+#: builtin/tag.c:338
msgid "tag header too big."
msgstr ""
-#: builtin/tag.c:366
+#: builtin/tag.c:370
msgid "no tag message?"
msgstr ""
-#: builtin/tag.c:372
+#: builtin/tag.c:376
#, c-format
msgid "The tag message has been left in %s\n"
msgstr ""
-#: builtin/tag.c:421
+#: builtin/tag.c:425
msgid "switch 'points-at' requires an object"
msgstr ""
-#: builtin/tag.c:423
+#: builtin/tag.c:427
#, c-format
msgid "malformed object name '%s'"
msgstr ""
-#: builtin/tag.c:502
+#: builtin/tag.c:506
+msgid "--column and -n are incompatible"
+msgstr ""
+
+#: builtin/tag.c:523
msgid "-n option is only allowed with -l."
msgstr ""
-#: builtin/tag.c:504
+#: builtin/tag.c:525
msgid "--contains option is only allowed with -l."
msgstr ""
-#: builtin/tag.c:506
+#: builtin/tag.c:527
msgid "--points-at option is only allowed with -l."
msgstr ""
-#: builtin/tag.c:514
+#: builtin/tag.c:535
msgid "only one -F or -m option is allowed."
msgstr ""
-#: builtin/tag.c:534
+#: builtin/tag.c:555
msgid "too many params"
msgstr ""
-#: builtin/tag.c:540
+#: builtin/tag.c:561
#, c-format
msgid "'%s' is not a valid tag name."
msgstr ""
-#: builtin/tag.c:545
+#: builtin/tag.c:566
#, c-format
msgid "tag '%s' already exists"
msgstr ""
-#: builtin/tag.c:563
+#: builtin/tag.c:584
#, c-format
msgid "%s: cannot lock the ref"
msgstr ""
-#: builtin/tag.c:565
+#: builtin/tag.c:586
#, c-format
msgid "%s: cannot update the ref"
msgstr ""
-#: builtin/tag.c:567
+#: builtin/tag.c:588
#, c-format
msgid "Updated tag '%s' (was %s)\n"
msgstr ""
+#: git.c:16
+msgid "See 'git help <command>' for more information on a specific command."
+msgstr ""
+
+#: common-cmds.h:8
+msgid "Add file contents to the index"
+msgstr ""
+
+#: common-cmds.h:9
+msgid "Find by binary search the change that introduced a bug"
+msgstr ""
+
+#: common-cmds.h:10
+msgid "List, create, or delete branches"
+msgstr ""
+
+#: common-cmds.h:11
+msgid "Checkout a branch or paths to the working tree"
+msgstr ""
+
+#: common-cmds.h:12
+msgid "Clone a repository into a new directory"
+msgstr ""
+
+#: common-cmds.h:13
+msgid "Record changes to the repository"
+msgstr ""
+
+#: common-cmds.h:14
+msgid "Show changes between commits, commit and working tree, etc"
+msgstr ""
+
+#: common-cmds.h:15
+msgid "Download objects and refs from another repository"
+msgstr ""
+
+#: common-cmds.h:16
+msgid "Print lines matching a pattern"
+msgstr ""
+
+#: common-cmds.h:17
+msgid "Create an empty git repository or reinitialize an existing one"
+msgstr ""
+
+#: common-cmds.h:18
+msgid "Show commit logs"
+msgstr ""
+
+#: common-cmds.h:19
+msgid "Join two or more development histories together"
+msgstr ""
+
+#: common-cmds.h:20
+msgid "Move or rename a file, a directory, or a symlink"
+msgstr ""
+
+#: common-cmds.h:21
+msgid "Fetch from and merge with another repository or a local branch"
+msgstr ""
+
+#: common-cmds.h:22
+msgid "Update remote refs along with associated objects"
+msgstr ""
+
+#: common-cmds.h:23
+msgid "Forward-port local commits to the updated upstream head"
+msgstr ""
+
+#: common-cmds.h:24
+msgid "Reset current HEAD to the specified state"
+msgstr ""
+
+#: common-cmds.h:25
+msgid "Remove files from the working tree and from the index"
+msgstr ""
+
+#: common-cmds.h:26
+msgid "Show various types of objects"
+msgstr ""
+
+#: common-cmds.h:27
+msgid "Show the working tree status"
+msgstr ""
+
+#: common-cmds.h:28
+msgid "Create, list, delete or verify a tag object signed with GPG"
+msgstr ""
+
#: git-am.sh:50
msgid "You need to set your committer info first"
msgstr ""
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2012-03-16 20:18+0800\n"
-"PO-Revision-Date: 2012-04-05 20:48+0100\n"
+"POT-Creation-Date: 2012-05-08 16:06+0800\n"
+"PO-Revision-Date: 2012-05-14 21:17+0100\n"
"Last-Translator: Marco Sousa <marcomsousa AT gmail.com>\n"
"Language-Team: Portuguese\n"
-"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+"Language: pt\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: advice.c:34
+#: advice.c:40
#, c-format
msgid "hint: %.*s\n"
msgstr "dica: %.*s\n"
#. * Message used both when 'git commit' fails and when
#. * other commands doing a merge do.
#.
-#: advice.c:64
+#: advice.c:70
msgid ""
"Fix them up in the work tree,\n"
"and then use 'git add/rm <file>' as\n"
"or use 'git commit -a'."
msgstr ""
-#: commit.c:47
+#: bundle.c:36
+#, c-format
+msgid "'%s' does not look like a v2 bundle file"
+msgstr ""
+
+#: bundle.c:63
+#, c-format
+msgid "unrecognized header: %s%s (%d)"
+msgstr "cabeçalho não reconhecido: %s%s (%d)"
+
+#: bundle.c:89
+#: builtin/commit.c:753
+#, c-format
+msgid "could not open '%s'"
+msgstr "não é possivel abrir '%s'"
+
+#: bundle.c:140
+msgid "Repository lacks these prerequisite commits:"
+msgstr ""
+
+#: bundle.c:164
+#: sequencer.c:533
+#: sequencer.c:965
+#: builtin/log.c:289
+#: builtin/log.c:719
+#: builtin/log.c:1335
+#: builtin/log.c:1554
+#: builtin/merge.c:347
+#: builtin/shortlog.c:181
+msgid "revision walk setup failed"
+msgstr ""
+
+#: bundle.c:186
+#, c-format
+msgid "The bundle contains %d ref"
+msgid_plural "The bundle contains %d refs"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bundle.c:192
+#, c-format
+msgid "The bundle requires this ref"
+msgid_plural "The bundle requires these %d refs"
+msgstr[0] ""
+msgstr[1] ""
+
+#: bundle.c:290
+msgid "rev-list died"
+msgstr "rev-list morreu"
+
+#: bundle.c:296
+#: builtin/log.c:1231
+#: builtin/shortlog.c:284
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "argumento não reconhecido: %s"
+
+#: bundle.c:331
+#, c-format
+msgid "ref '%s' is excluded by the rev-list options"
+msgstr ""
+
+#: bundle.c:376
+msgid "Refusing to create empty bundle."
+msgstr ""
+
+#: bundle.c:394
+msgid "Could not spawn pack-objects"
+msgstr "Não foi possível pawn pack-objects"
+
+#: bundle.c:412
+msgid "pack-objects died"
+msgstr ""
+
+#: bundle.c:415
+#, c-format
+msgid "cannot create '%s'"
+msgstr "não consegue crear '%s'"
+
+#: bundle.c:437
+msgid "index-pack died"
+msgstr ""
+
+#: commit.c:48
#, c-format
msgid "could not parse %s"
msgstr "não consigo parsear %s"
-#: commit.c:49
+#: commit.c:50
#, c-format
msgid "%s %s is not a commit!"
msgstr "%s %s não é um commit!"
msgid "failed to close rev-list's stdin: %s"
msgstr ""
+#: date.c:95
+msgid "in the future"
+msgstr ""
+
+#: date.c:101
+#, c-format
+msgid "%lu second ago"
+msgid_plural "%lu seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:108
+#, c-format
+msgid "%lu minute ago"
+msgid_plural "%lu minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:115
+#, c-format
+msgid "%lu hour ago"
+msgid_plural "%lu hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:122
+#, c-format
+msgid "%lu day ago"
+msgid_plural "%lu days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:128
+#, c-format
+msgid "%lu week ago"
+msgid_plural "%lu weeks ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:135
+#, c-format
+msgid "%lu month ago"
+msgid_plural "%lu months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:146
+#, c-format
+msgid "%lu year"
+msgid_plural "%lu years"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:149
+#, c-format
+msgid "%s, %lu month ago"
+msgid_plural "%s, %lu months ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: date.c:154
+#: date.c:159
+#, c-format
+msgid "%lu year ago"
+msgid_plural "%lu years ago"
+msgstr[0] ""
+msgstr[1] ""
+
#: diff.c:105
#, c-format
msgid " Failed to parse dirstat cut-off percentage '%.*s'\n"
"%s"
msgstr ""
-#: diff.c:1336
+#: diff.c:1400
msgid " 0 files changed\n"
msgstr " 0 ficheros modificados\n"
-#: diff.c:1340
+#: diff.c:1404
#, c-format
msgid " %d file changed"
msgid_plural " %d files changed"
msgstr[0] " %d ficheiro modificado"
msgstr[1] " %d ficheiros modificados"
-#: diff.c:1357
+#: diff.c:1421
#, c-format
msgid ", %d insertion(+)"
msgid_plural ", %d insertions(+)"
msgstr[0] ", %d adição(+)"
msgstr[1] ", %d adições(+)"
-#: diff.c:1368
+#: diff.c:1432
#, c-format
msgid ", %d deletion(-)"
msgid_plural ", %d deletions(-)"
msgstr[0] ", %d eliminado(-)"
msgstr[1] ", %d eliminados(-)"
-#: diff.c:3424
+#: diff.c:3478
#, c-format
msgid ""
"Failed to parse --dirstat/-X option parameter:\n"
msgid "'%s': short read %s"
msgstr ""
-#: help.c:287
+#: help.c:207
+#, c-format
+msgid "available git commands in '%s'"
+msgstr ""
+
+#: help.c:214
+msgid "git commands available from elsewhere on your $PATH"
+msgstr ""
+
+#: help.c:270
#, 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 ""
+#: help.c:327
+msgid "Uh oh. Your system reports no Git commands at all."
+msgstr ""
+
+#: help.c:349
+#, c-format
+msgid ""
+"WARNING: You called a Git command named '%s', which does not exist.\n"
+"Continuing under the assumption that you meant '%s'"
+msgstr ""
+
+#: help.c:354
+#, c-format
+msgid "in %0.1f seconds automatically..."
+msgstr ""
+
+#: help.c:361
+#, c-format
+msgid "git: '%s' is not a git command. See 'git --help'."
+msgstr ""
+
+#: help.c:365
+msgid ""
+"\n"
+"Did you mean this?"
+msgid_plural ""
+"\n"
+"Did you mean one of these?"
+msgstr[0] ""
+msgstr[1] ""
+
#: remote.c:1607
#, c-format
msgid "Your branch is ahead of '%s' by %d commit.\n"
msgstr[0] ""
msgstr[1] ""
-#: sequencer.c:120
-#: builtin/merge.c:864
-#: builtin/merge.c:985
-#: builtin/merge.c:1095
-#: builtin/merge.c:1105
+#: sequencer.c:121
+#: builtin/merge.c:865
+#: builtin/merge.c:978
+#: builtin/merge.c:1088
+#: builtin/merge.c:1098
#, c-format
msgid "Could not open '%s' for writing"
msgstr ""
-#: sequencer.c:122
-#: builtin/merge.c:334
-#: builtin/merge.c:867
-#: builtin/merge.c:1097
-#: builtin/merge.c:1110
+#: sequencer.c:123
+#: builtin/merge.c:333
+#: builtin/merge.c:868
+#: builtin/merge.c:1090
+#: builtin/merge.c:1103
#, c-format
msgid "Could not write to '%s'"
msgstr "Não foi possível escrever para '%s'"
-#: sequencer.c:143
+#: sequencer.c:144
msgid ""
"after resolving the conflicts, mark the corrected paths\n"
"with 'git add <paths>' or 'git rm <paths>'"
msgstr ""
-#: sequencer.c:146
+#: sequencer.c:147
msgid ""
"after resolving the conflicts, mark the corrected paths\n"
"with 'git add <paths>' or 'git rm <paths>'\n"
"and commit the result with 'git commit'"
msgstr ""
-#: sequencer.c:159
-#: sequencer.c:685
-#: sequencer.c:768
+#: sequencer.c:160
+#: sequencer.c:741
+#: sequencer.c:824
#, c-format
msgid "Could not write to %s"
msgstr "Não foi possível gravar para %s"
-#: sequencer.c:162
+#: sequencer.c:163
#, c-format
msgid "Error wrapping up %s"
msgstr ""
-#: sequencer.c:177
+#: sequencer.c:178
msgid "Your local changes would be overwritten by cherry-pick."
msgstr ""
-#: sequencer.c:179
+#: sequencer.c:180
msgid "Your local changes would be overwritten by revert."
msgstr ""
-#: sequencer.c:182
+#: sequencer.c:183
msgid "Commit your changes or stash them to proceed."
msgstr ""
#. TRANSLATORS: %s will be "revert" or "cherry-pick"
-#: sequencer.c:232
+#: sequencer.c:233
#, c-format
msgid "%s: Unable to write new index file"
msgstr ""
-#: sequencer.c:298
+#: sequencer.c:261
+msgid "Could not resolve HEAD commit\n"
+msgstr ""
+
+#: sequencer.c:282
+msgid "Unable to update cache tree\n"
+msgstr ""
+
+#: sequencer.c:323
+#, c-format
+msgid "Could not parse commit %s\n"
+msgstr "Não foi possível analisar commit %s\n"
+
+#: sequencer.c:328
+#, c-format
+msgid "Could not parse parent commit %s\n"
+msgstr "Não foi possível analisar commit parent %s\n"
+
+#: sequencer.c:358
msgid "Your index file is unmerged."
msgstr "O seu ficheiro de índice é não fundido."
-#: sequencer.c:301
+#: sequencer.c:361
msgid "You do not have a valid HEAD"
msgstr "Você não tem uma HEAD válida"
-#: sequencer.c:316
+#: sequencer.c:376
#, c-format
msgid "Commit %s is a merge but no -m option was given."
msgstr ""
-#: sequencer.c:324
+#: sequencer.c:384
#, c-format
msgid "Commit %s does not have parent %d"
msgstr ""
-#: sequencer.c:328
+#: sequencer.c:388
#, c-format
msgid "Mainline was specified but commit %s is not a merge."
msgstr ""
#. TRANSLATORS: The first %s will be "revert" or
#. "cherry-pick", the second %s a SHA1
-#: sequencer.c:339
+#: sequencer.c:399
#, c-format
msgid "%s: cannot parse parent commit %s"
msgstr ""
-#: sequencer.c:343
+#: sequencer.c:403
#, c-format
msgid "Cannot get commit message for %s"
msgstr "Não é possível obter mensagem commit para %s"
-#: sequencer.c:427
+#: sequencer.c:491
#, c-format
msgid "could not revert %s... %s"
msgstr ""
-#: sequencer.c:428
+#: sequencer.c:492
#, c-format
msgid "could not apply %s... %s"
msgstr ""
-#: sequencer.c:450
-#: sequencer.c:909
-#: builtin/log.c:288
-#: builtin/log.c:713
-#: builtin/log.c:1329
-#: builtin/log.c:1548
-#: builtin/merge.c:348
-#: builtin/shortlog.c:181
-msgid "revision walk setup failed"
-msgstr ""
-
-#: sequencer.c:453
+#: sequencer.c:536
msgid "empty commit set passed"
msgstr "passado commit com o set vazio"
-#: sequencer.c:461
+#: sequencer.c:544
#, c-format
msgid "git %s: failed to read the index"
msgstr ""
-#: sequencer.c:466
+#: sequencer.c:549
#, c-format
msgid "git %s: failed to refresh the index"
msgstr ""
-#: sequencer.c:551
+#: sequencer.c:607
#, c-format
msgid "Cannot %s during a %s"
msgstr "Não foi possível abrir %s durante um %s"
-#: sequencer.c:573
+#: sequencer.c:629
#, c-format
msgid "Could not parse line %d."
msgstr "Não foi possível parsear linha %d."
-#: sequencer.c:578
+#: sequencer.c:634
msgid "No commits parsed."
msgstr "Nenhum commit parseado."
-#: sequencer.c:591
+#: sequencer.c:647
#, c-format
msgid "Could not open %s"
msgstr "Não foi possível abrir %s"
-#: sequencer.c:595
+#: sequencer.c:651
#, c-format
msgid "Could not read %s."
msgstr "Não foi possível ler %s."
-#: sequencer.c:602
+#: sequencer.c:658
#, c-format
msgid "Unusable instruction sheet: %s"
msgstr ""
-#: sequencer.c:630
+#: sequencer.c:686
#, c-format
msgid "Invalid key: %s"
msgstr ""
-#: sequencer.c:633
+#: sequencer.c:689
#, c-format
msgid "Invalid value for %s: %s"
msgstr "Valor inválido para %s: %s"
-#: sequencer.c:645
+#: sequencer.c:701
#, c-format
msgid "Malformed options sheet: %s"
msgstr ""
-#: sequencer.c:666
+#: sequencer.c:722
msgid "a cherry-pick or revert is already in progress"
msgstr ""
-#: sequencer.c:667
+#: sequencer.c:723
msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
msgstr ""
-#: sequencer.c:671
+#: sequencer.c:727
#, c-format
msgid "Could not create sequencer directory %s"
msgstr ""
-#: sequencer.c:687
-#: sequencer.c:772
+#: sequencer.c:743
+#: sequencer.c:828
#, c-format
msgid "Error wrapping up %s."
msgstr ""
-#: sequencer.c:706
-#: sequencer.c:840
+#: sequencer.c:762
+#: sequencer.c:896
msgid "no cherry-pick or revert in progress"
msgstr ""
-#: sequencer.c:708
+#: sequencer.c:764
msgid "cannot resolve HEAD"
msgstr ""
-#: sequencer.c:710
+#: sequencer.c:766
msgid "cannot abort from a branch yet to be born"
msgstr ""
-#: sequencer.c:732
+#: sequencer.c:788
+#: builtin/apply.c:3682
#, c-format
msgid "cannot open %s: %s"
msgstr "não foi possível abrir %s: %s"
-#: sequencer.c:735
+#: sequencer.c:791
#, c-format
msgid "cannot read %s: %s"
msgstr "não foi possível ler %s: %s"
-#: sequencer.c:736
+#: sequencer.c:792
msgid "unexpected end of file"
msgstr ""
-#: sequencer.c:742
+#: sequencer.c:798
#, c-format
msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
msgstr ""
-#: sequencer.c:765
+#: sequencer.c:821
#, c-format
msgid "Could not format %s."
msgstr "Não foi possível formatear %s."
-#: sequencer.c:927
+#: sequencer.c:983
msgid "Can't revert as initial commit"
msgstr ""
-#: sequencer.c:928
+#: sequencer.c:984
msgid "Can't cherry-pick into empty head"
msgstr ""
-#: wt-status.c:134
+#: sha1_name.c:864
+msgid "HEAD does not point to a branch"
+msgstr ""
+
+#: sha1_name.c:867
+#, c-format
+msgid "No such branch: '%s'"
+msgstr "Não existe rama '%s'"
+
+#: sha1_name.c:869
+#, c-format
+msgid "No upstream configured for branch '%s'"
+msgstr ""
+
+#: sha1_name.c:872
+#, c-format
+msgid "Upstream branch '%s' not stored as a remote-tracking branch"
+msgstr ""
+
+#: wt-status.c:135
msgid "Unmerged paths:"
msgstr "caminhos não fundidos:"
-#: wt-status.c:140
-#: wt-status.c:157
+#: wt-status.c:141
+#: wt-status.c:158
#, c-format
msgid " (use \"git reset %s <file>...\" to unstage)"
msgstr ""
-#: wt-status.c:142
-#: wt-status.c:159
+#: wt-status.c:143
+#: wt-status.c:160
msgid " (use \"git rm --cached <file>...\" to unstage)"
msgstr ""
-#: wt-status.c:143
+#: wt-status.c:144
msgid " (use \"git add/rm <file>...\" as appropriate to mark resolution)"
msgstr " (usa \"git add/rm <ficheiro>...\" para marcar como resolvido)"
-#: wt-status.c:151
+#: wt-status.c:152
msgid "Changes to be committed:"
msgstr "Mudanças a serem commitadas"
-#: wt-status.c:169
+#: wt-status.c:170
msgid "Changes not staged for commit:"
msgstr ""
-#: wt-status.c:173
+#: wt-status.c:174
msgid " (use \"git add <file>...\" to update what will be committed)"
msgstr " (usa \"git add <ficheiro>...\" para actualizar o que vai ser commitado)"
-#: wt-status.c:175
+#: wt-status.c:176
msgid " (use \"git add/rm <file>...\" to update what will be committed)"
msgstr " (usa \"git add/rm <ficheiro>...\" para actualizar o que vai ser commitado)"
-#: wt-status.c:176
+#: wt-status.c:177
msgid " (use \"git checkout -- <file>...\" to discard changes in working directory)"
msgstr ""
-#: wt-status.c:178
+#: wt-status.c:179
msgid " (commit or discard the untracked or modified content in submodules)"
msgstr ""
-#: wt-status.c:187
+#: wt-status.c:188
#, c-format
msgid "%s files:"
msgstr "%s ficheros:"
-#: wt-status.c:190
+#: wt-status.c:191
#, c-format
msgid " (use \"git %s <file>...\" to include in what will be committed)"
msgstr ""
-#: wt-status.c:207
+#: wt-status.c:208
msgid "bug"
msgstr "erro"
-#: wt-status.c:212
+#: wt-status.c:213
msgid "both deleted:"
msgstr "eliminados em ambos:"
-#: wt-status.c:213
+#: wt-status.c:214
msgid "added by us:"
msgstr "adicionado por nós:"
-#: wt-status.c:214
+#: wt-status.c:215
msgid "deleted by them:"
msgstr "eliminados por eles:"
-#: wt-status.c:215
+#: wt-status.c:216
msgid "added by them:"
msgstr "adicionados por eles:"
-#: wt-status.c:216
+#: wt-status.c:217
msgid "deleted by us:"
msgstr "eliminados por nós:"
-#: wt-status.c:217
+#: wt-status.c:218
msgid "both added:"
msgstr "adicionados em ambos:"
-#: wt-status.c:218
+#: wt-status.c:219
msgid "both modified:"
msgstr "modificados em ambos:"
-#: wt-status.c:248
+#: wt-status.c:249
msgid "new commits, "
msgstr "novos commits, "
-#: wt-status.c:250
+#: wt-status.c:251
msgid "modified content, "
msgstr "conteúdo modificado, "
-#: wt-status.c:252
+#: wt-status.c:253
msgid "untracked content, "
msgstr "conteúdo não seguido"
-#: wt-status.c:266
+#: wt-status.c:267
#, c-format
msgid "new file: %s"
msgstr "novo ficheiro: %s"
-#: wt-status.c:269
+#: wt-status.c:270
#, c-format
msgid "copied: %s -> %s"
msgstr "copiado: %s -> %s"
-#: wt-status.c:272
+#: wt-status.c:273
#, c-format
msgid "deleted: %s"
msgstr "eliminado: %s"
-#: wt-status.c:275
+#: wt-status.c:276
#, c-format
msgid "modified: %s"
msgstr "modificado: %s"
-#: wt-status.c:278
+#: wt-status.c:279
#, c-format
msgid "renamed: %s -> %s"
msgstr "mudado de nome: %s -> %s"
-#: wt-status.c:281
+#: wt-status.c:282
#, c-format
msgid "typechange: %s"
msgstr ""
-#: wt-status.c:284
+#: wt-status.c:285
#, c-format
msgid "unknown: %s"
msgstr "desconhecido: %s"
-#: wt-status.c:287
+#: wt-status.c:288
#, c-format
msgid "unmerged: %s"
msgstr "não fundidos: %s"
-#: wt-status.c:290
+#: wt-status.c:291
#, c-format
msgid "bug: unhandled diff status %c"
msgstr ""
-#: wt-status.c:713
+#: wt-status.c:737
msgid "On branch "
msgstr "Na rama"
-#: wt-status.c:720
+#: wt-status.c:744
msgid "Not currently on any branch."
msgstr "Não está em nenhuma rama."
-#: wt-status.c:731
+#: wt-status.c:755
msgid "Initial commit"
msgstr "Commit inicial"
-#: wt-status.c:745
+#: wt-status.c:769
msgid "Untracked"
msgstr "Não seguido"
-#: wt-status.c:747
+#: wt-status.c:771
msgid "Ignored"
msgstr "Ignorado"
-#: wt-status.c:749
+#: wt-status.c:773
#, c-format
msgid "Untracked files not listed%s"
msgstr ""
-#: wt-status.c:751
+#: wt-status.c:775
msgid " (use -u option to show untracked files)"
msgstr ""
-#: wt-status.c:757
+#: wt-status.c:781
msgid "No changes"
msgstr "Sem mudanças"
-#: wt-status.c:761
+#: wt-status.c:785
#, c-format
msgid "no changes added to commit%s\n"
msgstr "nenhuma alteração adicionado ao commit%s\n"
-#: wt-status.c:763
+#: wt-status.c:787
msgid " (use \"git add\" and/or \"git commit -a\")"
msgstr " (usa \"git add\" e/ou \"git commit -a\")"
-#: wt-status.c:765
+#: wt-status.c:789
#, c-format
msgid "nothing added to commit but untracked files present%s\n"
msgstr ""
-#: wt-status.c:767
+#: wt-status.c:791
msgid " (use \"git add\" to track)"
msgstr " (usa \"git add\" para seguir)"
-#: wt-status.c:769
-#: wt-status.c:772
-#: wt-status.c:775
+#: wt-status.c:793
+#: wt-status.c:796
+#: wt-status.c:799
#, c-format
msgid "nothing to commit%s\n"
msgstr "nada para fazer commit%s\n"
-#: wt-status.c:770
+#: wt-status.c:794
msgid " (create/copy files and use \"git add\" to track)"
msgstr ""
-#: wt-status.c:773
+#: wt-status.c:797
msgid " (use -u to show untracked files)"
msgstr ""
-#: wt-status.c:776
+#: wt-status.c:800
msgid " (working directory clean)"
msgstr " (directório de trabalho vacio)"
-#: wt-status.c:884
+#: wt-status.c:908
msgid "HEAD (no branch)"
msgstr "HEAD (Não é rama)"
-#: wt-status.c:890
+#: wt-status.c:914
msgid "Initial commit on "
msgstr "Commit inicial em "
-#: wt-status.c:905
+#: wt-status.c:929
msgid "behind "
msgstr "atrás "
-#: wt-status.c:908
-#: wt-status.c:911
+#: wt-status.c:932
+#: wt-status.c:935
msgid "ahead "
msgstr "a frente "
-#: wt-status.c:913
+#: wt-status.c:937
msgid ", behind "
msgstr ", atrás "
msgstr ""
#: builtin/add.c:67
-#: builtin/commit.c:298
+#: builtin/commit.c:282
msgid "updating files failed"
msgstr "Falou a atualização dos ficheiros"
msgid "The following paths are ignored by one of your .gitignore files:\n"
msgstr ""
-#: builtin/add.c:352
+#: builtin/add.c:352
+#, c-format
+msgid "Use -f if you really want to add them.\n"
+msgstr ""
+
+#: builtin/add.c:353
+msgid "no files added"
+msgstr "nenhum ficheiros adicionado"
+
+#: builtin/add.c:359
+msgid "adding files failed"
+msgstr "falhou a adicionar ficheiros"
+
+#: builtin/add.c:391
+msgid "-A and -u are mutually incompatible"
+msgstr ""
+
+#: builtin/add.c:393
+msgid "Option --ignore-missing can only be used together with --dry-run"
+msgstr ""
+
+#: builtin/add.c:413
+#, c-format
+msgid "Nothing specified, nothing added.\n"
+msgstr ""
+
+#: builtin/add.c:414
+#, c-format
+msgid "Maybe you wanted to say 'git add .'?\n"
+msgstr ""
+
+#: builtin/add.c:420
+#: builtin/clean.c:95
+#: builtin/commit.c:342
+#: builtin/mv.c:82
+#: builtin/rm.c:162
+msgid "index file corrupt"
+msgstr "ficheiro index corrupto"
+
+#: builtin/add.c:476
+#: builtin/apply.c:4093
+#: builtin/mv.c:229
+#: builtin/rm.c:260
+msgid "Unable to write new index file"
+msgstr ""
+
+#: builtin/apply.c:106
+#, c-format
+msgid "unrecognized whitespace option '%s'"
+msgstr "espaço em braco não reconhecido: '%s'"
+
+#: builtin/apply.c:121
+#, c-format
+msgid "unrecognized whitespace ignore option '%s'"
+msgstr ""
+
+#: builtin/apply.c:815
+#, c-format
+msgid "Cannot prepare timestamp regexp %s"
+msgstr ""
+
+#: builtin/apply.c:824
+#, c-format
+msgid "regexec returned %d for input: %s"
+msgstr ""
+
+#: builtin/apply.c:905
+#, c-format
+msgid "unable to find filename in patch at line %d"
+msgstr ""
+
+#: builtin/apply.c:934
+#, c-format
+msgid "git apply: bad git-diff - expected /dev/null, got %s on line %d"
+msgstr ""
+
+#: builtin/apply.c:937
+#, c-format
+msgid "git apply: bad git-diff - inconsistent %s filename on line %d"
+msgstr ""
+
+#: builtin/apply.c:944
+#, c-format
+msgid "git apply: bad git-diff - expected /dev/null on line %d"
+msgstr ""
+
+#: builtin/apply.c:1387
+#, c-format
+msgid "recount: unexpected line: %.*s"
+msgstr ""
+
+#: builtin/apply.c:1444
+#, c-format
+msgid "patch fragment without header at line %d: %.*s"
+msgstr ""
+
+#: builtin/apply.c:1461
+#, 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] ""
+msgstr[1] ""
+
+#: builtin/apply.c:1621
+msgid "new file depends on old contents"
+msgstr ""
+
+#: builtin/apply.c:1623
+msgid "deleted file still has contents"
+msgstr ""
+
+#: builtin/apply.c:1649
+#, c-format
+msgid "corrupt patch at line %d"
+msgstr ""
+
+#: builtin/apply.c:1685
+#, c-format
+msgid "new file %s depends on old contents"
+msgstr ""
+
+#: builtin/apply.c:1687
+#, c-format
+msgid "deleted file %s still has contents"
+msgstr ""
+
+#: builtin/apply.c:1690
+#, c-format
+msgid "** warning: file %s becomes empty but is not deleted"
+msgstr ""
+
+#: builtin/apply.c:1836
+#, c-format
+msgid "corrupt binary patch at line %d: %.*s"
+msgstr ""
+
+#. there has to be one hunk (forward hunk)
+#: builtin/apply.c:1865
+#, c-format
+msgid "unrecognized binary patch at line %d"
+msgstr ""
+
+#: builtin/apply.c:1951
+#, c-format
+msgid "patch with only garbage at line %d"
+msgstr ""
+
+#: builtin/apply.c:2041
+#, c-format
+msgid "unable to read symlink %s"
+msgstr ""
+
+#: builtin/apply.c:2045
+#, c-format
+msgid "unable to open or read %s"
+msgstr "Não foi possível abrir o ler %s"
+
+#: builtin/apply.c:2116
+msgid "oops"
+msgstr ""
+
+#: builtin/apply.c:2638
+#, c-format
+msgid "invalid start of line: '%c'"
+msgstr "começo de linha inválido: '%c'"
+
+#: builtin/apply.c:2756
+#, c-format
+msgid "Hunk #%d succeeded at %d (offset %d line)."
+msgid_plural "Hunk #%d succeeded at %d (offset %d lines)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/apply.c:2768
+#, c-format
+msgid "Context reduced to (%ld/%ld) to apply fragment at %d"
+msgstr ""
+
+#: builtin/apply.c:2774
+#, c-format
+msgid ""
+"while searching for:\n"
+"%.*s"
+msgstr ""
+
+#: builtin/apply.c:2793
+#, c-format
+msgid "missing binary patch data for '%s'"
+msgstr ""
+
+#: builtin/apply.c:2896
+#, c-format
+msgid "binary patch does not apply to '%s'"
+msgstr ""
+
+#: builtin/apply.c:2902
+#, c-format
+msgid "binary patch to '%s' creates incorrect result (expecting %s, got %s)"
+msgstr ""
+
+#: builtin/apply.c:2923
+#, c-format
+msgid "patch failed: %s:%ld"
+msgstr ""
+
+#: builtin/apply.c:3038
+#, c-format
+msgid "patch %s has been renamed/deleted"
+msgstr ""
+
+#: builtin/apply.c:3045
+#: builtin/apply.c:3062
+#, c-format
+msgid "read of %s failed"
+msgstr "ler %s falhou"
+
+#: builtin/apply.c:3077
+msgid "removal patch leaves file contents"
+msgstr ""
+
+#: builtin/apply.c:3098
+#, c-format
+msgid "%s: already exists in working directory"
+msgstr "%s: já existe no espaço de trabalho"
+
+#: builtin/apply.c:3136
+#, c-format
+msgid "%s: has been deleted/renamed"
+msgstr ""
+
+#: builtin/apply.c:3141
+#: builtin/apply.c:3172
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: builtin/apply.c:3152
+#, c-format
+msgid "%s: does not exist in index"
+msgstr ""
+
+#: builtin/apply.c:3166
+#, c-format
+msgid "%s: does not match index"
+msgstr "%s: não tem correspondencia ao index"
+
+#: builtin/apply.c:3183
+#, c-format
+msgid "%s: wrong type"
+msgstr ""
+
+#: builtin/apply.c:3185
+#, c-format
+msgid "%s has type %o, expected %o"
+msgstr ""
+
+#: builtin/apply.c:3240
+#, c-format
+msgid "%s: already exists in index"
+msgstr "%s: já existe no indíce"
+
+#: builtin/apply.c:3259
+#, c-format
+msgid "new mode (%o) of %s does not match old mode (%o)%s%s"
+msgstr ""
+
+#: builtin/apply.c:3265
+#, c-format
+msgid "%s: patch does not apply"
+msgstr ""
+
+#: builtin/apply.c:3278
+#, c-format
+msgid "Checking patch %s..."
+msgstr ""
+
+#: builtin/apply.c:3333
+#: builtin/checkout.c:212
+#: builtin/reset.c:158
+#, c-format
+msgid "make_cache_entry failed for path '%s'"
+msgstr ""
+
+#: builtin/apply.c:3476
+#, c-format
+msgid "unable to remove %s from index"
+msgstr ""
+
+#: builtin/apply.c:3503
+#, c-format
+msgid "corrupt patch for subproject %s"
+msgstr ""
+
+#: builtin/apply.c:3507
+#, c-format
+msgid "unable to stat newly created file '%s'"
+msgstr "não é possivel 'stat' o novo ficheiro creado '%s'"
+
+#: builtin/apply.c:3512
+#, c-format
+msgid "unable to create backing store for newly created file %s"
+msgstr ""
+
+#: builtin/apply.c:3515
+#, c-format
+msgid "unable to add cache entry for %s"
+msgstr ""
+
+#: builtin/apply.c:3548
+#, c-format
+msgid "closing file '%s'"
+msgstr "fechar fichero '%s'"
+
+#: builtin/apply.c:3597
+#, c-format
+msgid "unable to write file '%s' mode %o"
+msgstr ""
+
+#: builtin/apply.c:3653
+#, c-format
+msgid "Applied patch %s cleanly."
+msgstr ""
+
+#: builtin/apply.c:3661
+msgid "internal error"
+msgstr ""
+
+#. Say this even without --verbose
+#: builtin/apply.c:3664
+#, c-format
+msgid "Applying patch %%s with %d reject..."
+msgid_plural "Applying patch %%s with %d rejects..."
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/apply.c:3674
+#, c-format
+msgid "truncating .rej filename to %.*s.rej"
+msgstr ""
+
+#: builtin/apply.c:3695
+#, c-format
+msgid "Hunk #%d applied cleanly."
+msgstr ""
+
+#: builtin/apply.c:3698
#, c-format
-msgid "Use -f if you really want to add them.\n"
+msgid "Rejected hunk #%d."
msgstr ""
-#: builtin/add.c:353
-msgid "no files added"
-msgstr "nenhum ficheiros adicionado"
+#: builtin/apply.c:3829
+msgid "unrecognized input"
+msgstr "entrada não reconhecida"
-#: builtin/add.c:359
-msgid "adding files failed"
-msgstr "falhou a adicionar ficheiros"
+#: builtin/apply.c:3840
+msgid "unable to read index file"
+msgstr "Não foi possível ler o fichero indíce"
-#: builtin/add.c:391
-msgid "-A and -u are mutually incompatible"
-msgstr ""
+#: builtin/apply.c:4035
+msgid "--index outside a repository"
+msgstr "--index fora de um repositorio"
-#: builtin/add.c:393
-msgid "Option --ignore-missing can only be used together with --dry-run"
-msgstr ""
+#: builtin/apply.c:4038
+msgid "--cached outside a repository"
+msgstr "--cached fora de um repositorio"
-#: builtin/add.c:413
+#: builtin/apply.c:4054
#, c-format
-msgid "Nothing specified, nothing added.\n"
-msgstr ""
+msgid "can't open patch '%s'"
+msgstr "não é possivel abrir patch '%s'"
-#: builtin/add.c:414
+#: builtin/apply.c:4068
#, c-format
-msgid "Maybe you wanted to say 'git add .'?\n"
-msgstr ""
-
-#: builtin/add.c:420
-#: builtin/clean.c:95
-#: builtin/commit.c:358
-#: builtin/mv.c:82
-#: builtin/rm.c:162
-msgid "index file corrupt"
-msgstr "ficheiro index corrupto"
+msgid "squelched %d whitespace error"
+msgid_plural "squelched %d whitespace errors"
+msgstr[0] ""
+msgstr[1] ""
-#: builtin/add.c:476
-#: builtin/mv.c:229
-#: builtin/rm.c:260
-msgid "Unable to write new index file"
-msgstr ""
+#: builtin/apply.c:4074
+#: builtin/apply.c:4084
+#, c-format
+msgid "%d line adds whitespace errors."
+msgid_plural "%d lines add whitespace errors."
+msgstr[0] ""
+msgstr[1] ""
#: builtin/archive.c:17
#, c-format
msgid "git archive: expected a flush"
msgstr ""
-#: builtin/branch.c:137
+#: builtin/branch.c:144
#, c-format
msgid ""
"deleting branch '%s' that has been merged to\n"
" '%s', but not yet merged to HEAD."
msgstr ""
-#: builtin/branch.c:141
+#: builtin/branch.c:148
#, c-format
msgid ""
"not deleting branch '%s' that is not yet merged to\n"
" '%s', even though it is merged to HEAD."
msgstr ""
-#. TRANSLATORS: This is "remote " in "remote branch '%s' not found"
-#: builtin/branch.c:163
-msgid "remote "
-msgstr "remota"
-
-#: builtin/branch.c:171
+#: builtin/branch.c:180
msgid "cannot use -a with -d"
msgstr "Não é possível usar -a com um -d"
-#: builtin/branch.c:177
+#: builtin/branch.c:186
msgid "Couldn't look up commit object for HEAD"
msgstr ""
-#: builtin/branch.c:182
+#: builtin/branch.c:191
#, c-format
msgid "Cannot delete the branch '%s' which you are currently on."
msgstr ""
-#: builtin/branch.c:192
+#: builtin/branch.c:202
+#, c-format
+msgid "remote branch '%s' not found."
+msgstr "rama remota '%s não encontrada."
+
+#: builtin/branch.c:203
#, c-format
-msgid "%sbranch '%s' not found."
-msgstr "%sbranch '%s' não encontrado."
+msgid "branch '%s' not found."
+msgstr "rama '%s' não encontrado."
-#: builtin/branch.c:200
+#: builtin/branch.c:210
#, c-format
msgid "Couldn't look up commit object for '%s'"
msgstr ""
-#: builtin/branch.c:206
+#: builtin/branch.c:216
#, c-format
msgid ""
"The branch '%s' is not fully merged.\n"
"If you are sure you want to delete it, run 'git branch -D %s'."
msgstr ""
-#: builtin/branch.c:214
+#: builtin/branch.c:225
#, c-format
-msgid "Error deleting %sbranch '%s'"
+msgid "Error deleting remote branch '%s'"
msgstr ""
-#: builtin/branch.c:219
+#: builtin/branch.c:226
+#, c-format
+msgid "Error deleting branch '%s'"
+msgstr "Erro a eliminar rama '%s'"
+
+#: builtin/branch.c:233
#, c-format
-msgid "Deleted %sbranch %s (was %s).\n"
+msgid "Deleted remote branch %s (was %s).\n"
msgstr ""
-#: builtin/branch.c:224
+#: builtin/branch.c:234
+#, c-format
+msgid "Deleted branch %s (was %s).\n"
+msgstr "Eliminar rama %s (era %s).\n"
+
+#: builtin/branch.c:239
msgid "Update of config-file failed"
msgstr ""
-#: builtin/branch.c:322
+#: builtin/branch.c:337
#, c-format
msgid "branch '%s' does not point at a commit"
msgstr ""
-#: builtin/branch.c:394
+#: builtin/branch.c:409
#, c-format
msgid "behind %d] "
msgstr "atrás %d] "
-#: builtin/branch.c:396
+#: builtin/branch.c:411
#, c-format
msgid "ahead %d] "
msgstr "a frente %d] "
-#: builtin/branch.c:398
+#: builtin/branch.c:413
#, c-format
msgid "ahead %d, behind %d] "
msgstr "a frente %d, atrás %d] "
-#: builtin/branch.c:501
+#: builtin/branch.c:521
msgid "(no branch)"
msgstr "(não é rama)"
-#: builtin/branch.c:566
+#: builtin/branch.c:586
msgid "some refs could not be read"
msgstr ""
-#: builtin/branch.c:579
+#: builtin/branch.c:599
msgid "cannot rename the current branch while not on any."
msgstr ""
-#: builtin/branch.c:589
+#: builtin/branch.c:609
#, c-format
msgid "Invalid branch name: '%s'"
msgstr "Nome da rama inválida: '%s'"
-#: builtin/branch.c:604
+#: builtin/branch.c:624
msgid "Branch rename failed"
msgstr "Falhou renomeação da rama"
-#: builtin/branch.c:608
+#: builtin/branch.c:628
#, c-format
msgid "Renamed a misnamed branch '%s' away"
msgstr "Renomeado uma rama erronea '%s'"
-#: builtin/branch.c:612
+#: builtin/branch.c:632
#, c-format
msgid "Branch renamed to %s, but HEAD is not updated!"
msgstr ""
-#: builtin/branch.c:619
+#: builtin/branch.c:639
msgid "Branch is renamed, but update of config-file failed"
msgstr ""
-#: builtin/branch.c:634
+#: builtin/branch.c:654
#, c-format
msgid "malformed object name %s"
msgstr ""
-#: builtin/branch.c:658
+#: builtin/branch.c:678
#, c-format
-msgid "could not write branch description template: %s\n"
+msgid "could not write branch description template: %s"
msgstr ""
-#: builtin/branch.c:746
+#: builtin/branch.c:769
msgid "Failed to resolve HEAD as a valid ref."
msgstr ""
-#: builtin/branch.c:751
+#: builtin/branch.c:774
#: builtin/clone.c:558
msgid "HEAD not found below refs/heads!"
msgstr ""
-#: builtin/branch.c:809
+#: builtin/branch.c:794
+msgid "--column and --verbose are incompatible"
+msgstr "--column e --verbose são incompatíveis"
+
+#: builtin/branch.c:843
msgid "-a and -r options to 'git branch' do not make sense with a branch name"
msgstr ""
msgid "Unable to add merge result for '%s'"
msgstr ""
-#: builtin/checkout.c:212
-#: builtin/reset.c:158
-#, c-format
-msgid "make_cache_entry failed for path '%s'"
-msgstr ""
-
#: builtin/checkout.c:234
#: builtin/checkout.c:392
msgid "corrupt index file"
#: builtin/checkout.c:302
#: builtin/checkout.c:498
#: builtin/clone.c:583
-#: builtin/merge.c:811
+#: builtin/merge.c:812
msgid "unable to write new index file"
msgstr ""
msgid "Can not do reflog for '%s'\n"
msgstr ""
-#: builtin/checkout.c:565
+#: builtin/checkout.c:566
msgid "HEAD is now at"
msgstr "HEAD é agora em "
-#: builtin/checkout.c:572
+#: builtin/checkout.c:573
#, c-format
msgid "Reset branch '%s'\n"
msgstr "Reset rama '%s'\n"
-#: builtin/checkout.c:575
+#: builtin/checkout.c:576
#, c-format
msgid "Already on '%s'\n"
msgstr "Já em '%s'\n"
-#: builtin/checkout.c:579
+#: builtin/checkout.c:580
#, c-format
msgid "Switched to and reset branch '%s'\n"
msgstr ""
-#: builtin/checkout.c:581
+#: builtin/checkout.c:582
#, c-format
msgid "Switched to a new branch '%s'\n"
msgstr "Mudado para a nova rama '%s'\n"
-#: builtin/checkout.c:583
+#: builtin/checkout.c:584
#, c-format
msgid "Switched to branch '%s'\n"
msgstr "Mudado para a rama '%s'\n"
-#: builtin/checkout.c:639
+#: builtin/checkout.c:640
#, c-format
msgid " ... and %d more.\n"
msgstr " ... e %d mais.\n"
#. The singular version
-#: builtin/checkout.c:645
+#: builtin/checkout.c:646
#, c-format
msgid ""
"Warning: you are leaving %d commit behind, not connected to\n"
msgstr[0] ""
msgstr[1] ""
-#: builtin/checkout.c:663
+#: builtin/checkout.c:664
#, c-format
msgid ""
"If you want to keep them by creating a new branch, this may be a good time\n"
"\n"
msgstr ""
-#: builtin/checkout.c:692
+#: builtin/checkout.c:693
msgid "internal error in revision walk"
msgstr ""
-#: builtin/checkout.c:696
+#: builtin/checkout.c:697
msgid "Previous HEAD position was"
msgstr ""
-#: builtin/checkout.c:722
+#: builtin/checkout.c:723
msgid "You are on a branch yet to be born"
msgstr ""
#. case (1)
-#: builtin/checkout.c:853
+#: builtin/checkout.c:854
#, c-format
msgid "invalid reference: %s"
msgstr ""
#. case (1): want a tree
-#: builtin/checkout.c:892
+#: builtin/checkout.c:893
#, c-format
msgid "reference is not a tree: %s"
msgstr ""
-#: builtin/checkout.c:972
+#: builtin/checkout.c:973
msgid "-B cannot be used with -b"
msgstr ""
-#: builtin/checkout.c:981
+#: builtin/checkout.c:982
msgid "--patch is incompatible with all other options"
msgstr ""
-#: builtin/checkout.c:984
+#: builtin/checkout.c:985
msgid "--detach cannot be used with -b/-B/--orphan"
msgstr ""
-#: builtin/checkout.c:986
+#: builtin/checkout.c:987
msgid "--detach cannot be used with -t"
msgstr ""
-#: builtin/checkout.c:992
+#: builtin/checkout.c:993
msgid "--track needs a branch name"
msgstr ""
-#: builtin/checkout.c:999
+#: builtin/checkout.c:1000
msgid "Missing branch name; try -b"
msgstr ""
-#: builtin/checkout.c:1005
+#: builtin/checkout.c:1006
msgid "--orphan and -b|-B are mutually exclusive"
msgstr ""
-#: builtin/checkout.c:1007
+#: builtin/checkout.c:1008
msgid "--orphan cannot be used with -t"
msgstr ""
-#: builtin/checkout.c:1017
+#: builtin/checkout.c:1018
msgid "git checkout: -f and -m are incompatible"
msgstr ""
-#: builtin/checkout.c:1051
+#: builtin/checkout.c:1052
msgid "invalid path specification"
msgstr ""
-#: builtin/checkout.c:1059
+#: builtin/checkout.c:1060
#, c-format
msgid ""
"git checkout: updating paths is incompatible with switching branches.\n"
"Did you intend to checkout '%s' which can not be resolved as commit?"
msgstr ""
-#: builtin/checkout.c:1061
+#: builtin/checkout.c:1062
msgid "git checkout: updating paths is incompatible with switching branches."
msgstr ""
-#: builtin/checkout.c:1066
+#: builtin/checkout.c:1067
msgid "git checkout: --detach does not take a path argument"
msgstr ""
-#: builtin/checkout.c:1069
+#: builtin/checkout.c:1070
msgid ""
"git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
"checking out of the index."
msgstr ""
-#: builtin/checkout.c:1088
+#: builtin/checkout.c:1089
msgid "Cannot switch branch to a non-commit."
msgstr ""
-#: builtin/checkout.c:1091
+#: builtin/checkout.c:1092
msgid "--ours/--theirs is incompatible with switching branches."
msgstr ""
#: builtin/clone.c:302
#, c-format
msgid "failed to open '%s'"
-msgstr ""
+msgstr "falhou a abrir '%s'"
#: builtin/clone.c:306
#, c-format
msgid "failed to create directory '%s'"
-msgstr ""
+msgstr "falhou a criar o directório '%s'"
#: builtin/clone.c:308
#: builtin/diff.c:75
#: builtin/clone.c:350
#, c-format
msgid "failed to copy file to '%s'"
-msgstr ""
+msgstr "falhou a copiar o ficheiro para '%s'"
#: builtin/clone.c:373
#, c-format
msgid "You appear to have cloned an empty repository."
msgstr ""
-#: builtin/commit.c:42
+#: builtin/column.c:51
+msgid "--command must be the first argument"
+msgstr ""
+
+#: builtin/commit.c:43
msgid ""
"Your name and email address were configured automatically based\n"
"on your username and hostname. Please check that they are accurate.\n"
"\n"
" git commit --amend --reset-author\n"
-#: builtin/commit.c:54
+#: builtin/commit.c:55
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 ""
-#: builtin/commit.c:59
+#: builtin/commit.c:60
msgid ""
"The previous cherry-pick is now empty, possibly due to conflict resolution.\n"
"If you wish to commit it anyway, use:\n"
"Otherwise, please use 'git reset'\n"
msgstr ""
-#: builtin/commit.c:205
-#: builtin/reset.c:33
-msgid "merge"
-msgstr "juntar"
-
-#: builtin/commit.c:208
-msgid "cherry-pick"
-msgstr "cherry-pick"
-
-#: builtin/commit.c:325
+#: builtin/commit.c:309
msgid "failed to unpack HEAD tree object"
msgstr ""
-#: builtin/commit.c:367
+#: builtin/commit.c:351
msgid "unable to create temporary index"
msgstr ""
-#: builtin/commit.c:373
+#: builtin/commit.c:357
msgid "interactive add failed"
msgstr "falhou adicionar interativo"
-#: builtin/commit.c:406
-#: builtin/commit.c:427
-#: builtin/commit.c:473
+#: builtin/commit.c:390
+#: builtin/commit.c:411
+#: builtin/commit.c:461
msgid "unable to write new_index file"
msgstr ""
-#: builtin/commit.c:457
-#, c-format
-msgid "cannot do a partial commit during a %s."
+#: builtin/commit.c:442
+msgid "cannot do a partial commit during a merge."
+msgstr ""
+
+#: builtin/commit.c:444
+msgid "cannot do a partial commit during a cherry-pick."
msgstr ""
-#: builtin/commit.c:466
+#: builtin/commit.c:454
msgid "cannot read the index"
msgstr "não foi possível ler o indíce"
-#: builtin/commit.c:486
+#: builtin/commit.c:474
msgid "unable to write temporary index file"
msgstr ""
-#: builtin/commit.c:550
-#: builtin/commit.c:556
+#: builtin/commit.c:549
+#: builtin/commit.c:555
#, c-format
msgid "invalid commit: %s"
msgstr "commit inválido: %s"
-#: builtin/commit.c:579
+#: builtin/commit.c:578
msgid "malformed --author parameter"
msgstr ""
-#: builtin/commit.c:635
+#: builtin/commit.c:639
#, c-format
msgid "Malformed ident string: '%s'"
msgstr ""
-#: builtin/commit.c:670
-#: builtin/commit.c:703
-#: builtin/commit.c:1000
+#: builtin/commit.c:677
+#: builtin/commit.c:710
+#: builtin/commit.c:1024
#, c-format
msgid "could not lookup commit %s"
msgstr ""
-#: builtin/commit.c:682
+#: builtin/commit.c:689
#: builtin/shortlog.c:296
#, c-format
msgid "(reading log message from standard input)\n"
msgstr ""
-#: builtin/commit.c:684
+#: builtin/commit.c:691
msgid "could not read log from standard input"
msgstr ""
-#: builtin/commit.c:688
+#: builtin/commit.c:695
#, c-format
msgid "could not read log file '%s'"
msgstr "não é possivel ler o ficheiro de log '%s'"
-#: builtin/commit.c:694
+#: builtin/commit.c:701
msgid "commit has empty message"
msgstr "a mensagem do commit está vazia"
-#: builtin/commit.c:710
+#: builtin/commit.c:717
msgid "could not read MERGE_MSG"
msgstr "não é possivel ler MERGE_MSG"
-#: builtin/commit.c:714
+#: builtin/commit.c:721
msgid "could not read SQUASH_MSG"
msgstr "não é possivel ler SQUASH_MSG"
-#: builtin/commit.c:718
+#: builtin/commit.c:725
#, c-format
msgid "could not read '%s'"
msgstr "não é possivel ler '%s'"
-#: builtin/commit.c:746
-#, c-format
-msgid "could not open '%s'"
-msgstr "não é possivel abrir '%s'"
-
-#: builtin/commit.c:770
+#: builtin/commit.c:777
msgid "could not write commit template"
msgstr ""
-#: builtin/commit.c:783
+#: builtin/commit.c:788
#, c-format
msgid ""
"\n"
-"It looks like you may be committing a %s.\n"
+"It looks like you may be committing a merge.\n"
"If this is not correct, please remove the file\n"
"\t%s\n"
"and try again.\n"
msgstr ""
-#: builtin/commit.c:796
-msgid "Please enter the commit message for your changes."
-msgstr "Por favor insira a mensagem de commit das suas alterações."
+#: builtin/commit.c:793
+#, c-format
+msgid ""
+"\n"
+"It looks like you may be committing a cherry-pick.\n"
+"If this is not correct, please remove the file\n"
+"\t%s\n"
+"and try again.\n"
+msgstr ""
-#: builtin/commit.c:799
+#: builtin/commit.c:805
msgid ""
-" Lines starting\n"
+"Please enter the commit message for your changes. Lines starting\n"
"with '#' will be ignored, and an empty message aborts the commit.\n"
msgstr ""
-#: builtin/commit.c:804
+#: builtin/commit.c:810
msgid ""
-" Lines starting\n"
+"Please enter the commit message for your changes. Lines starting\n"
"with '#' will be kept; you may remove them yourself if you want to.\n"
"An empty message aborts the commit.\n"
msgstr ""
-#: builtin/commit.c:816
+#: builtin/commit.c:823
#, c-format
msgid "%sAuthor: %s"
msgstr "%sAutor: %s"
-#: builtin/commit.c:823
+#: builtin/commit.c:830
#, c-format
msgid "%sCommitter: %s"
msgstr "%sCommitador: %s"
-#: builtin/commit.c:843
+#: builtin/commit.c:850
msgid "Cannot read index"
msgstr ""
-#: builtin/commit.c:880
+#: builtin/commit.c:887
msgid "Error building trees"
msgstr ""
-#: builtin/commit.c:895
-#: builtin/tag.c:357
+#: builtin/commit.c:902
+#: builtin/tag.c:361
#, c-format
msgid "Please supply the message using either -m or -F option.\n"
msgstr ""
-#: builtin/commit.c:975
+#: builtin/commit.c:999
#, c-format
msgid "No existing author found with '%s'"
msgstr ""
-#: builtin/commit.c:990
-#: builtin/commit.c:1182
+#: builtin/commit.c:1014
+#: builtin/commit.c:1214
#, c-format
msgid "Invalid untracked files mode '%s'"
msgstr ""
-#: builtin/commit.c:1030
+#: builtin/commit.c:1054
msgid "Using both --reset-author and --author does not make sense"
msgstr ""
-#: builtin/commit.c:1041
+#: builtin/commit.c:1065
msgid "You have nothing to amend."
msgstr "Você não tem nada a corregir."
-#: builtin/commit.c:1043
-#, c-format
-msgid "You are in the middle of a %s -- cannot amend."
+#: builtin/commit.c:1068
+msgid "You are in the middle of a merge -- cannot amend."
+msgstr ""
+
+#: builtin/commit.c:1070
+msgid "You are in the middle of a cherry-pick -- cannot amend."
msgstr ""
-#: builtin/commit.c:1045
+#: builtin/commit.c:1073
msgid "Options --squash and --fixup cannot be used together"
msgstr ""
-#: builtin/commit.c:1055
+#: builtin/commit.c:1083
msgid "Only one of -c/-C/-F/--fixup can be used."
msgstr ""
-#: builtin/commit.c:1057
+#: builtin/commit.c:1085
msgid "Option -m cannot be combined with -c/-C/-F/--fixup."
msgstr ""
-#: builtin/commit.c:1063
+#: builtin/commit.c:1093
msgid "--reset-author can be used only with -C, -c or --amend."
msgstr ""
-#: builtin/commit.c:1080
+#: builtin/commit.c:1110
msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
msgstr ""
-#: builtin/commit.c:1082
+#: builtin/commit.c:1112
msgid "No paths with --include/--only does not make sense."
msgstr ""
-#: builtin/commit.c:1084
+#: builtin/commit.c:1114
msgid "Clever... amending the last one with dirty index."
msgstr ""
-#: builtin/commit.c:1086
+#: builtin/commit.c:1116
msgid "Explicit paths specified without -i nor -o; assuming --only paths..."
msgstr ""
-#: builtin/commit.c:1096
-#: builtin/tag.c:556
+#: builtin/commit.c:1126
+#: builtin/tag.c:577
#, c-format
msgid "Invalid cleanup mode %s"
msgstr ""
-#: builtin/commit.c:1101
+#: builtin/commit.c:1131
msgid "Paths with -a does not make sense."
msgstr ""
-#: builtin/commit.c:1280
+#: builtin/commit.c:1315
msgid "couldn't look up newly created commit"
msgstr ""
-#: builtin/commit.c:1282
+#: builtin/commit.c:1317
msgid "could not parse newly created commit"
msgstr ""
-#: builtin/commit.c:1323
+#: builtin/commit.c:1358
msgid "detached HEAD"
msgstr ""
-#: builtin/commit.c:1325
+#: builtin/commit.c:1360
msgid " (root-commit)"
msgstr " (root-commit)"
-#: builtin/commit.c:1415
+#: builtin/commit.c:1450
msgid "could not parse HEAD commit"
msgstr ""
-#: builtin/commit.c:1452
+#: builtin/commit.c:1487
#: builtin/merge.c:509
#, c-format
msgid "could not open '%s' for reading"
msgstr ""
-#: builtin/commit.c:1459
+#: builtin/commit.c:1494
#, c-format
msgid "Corrupt MERGE_HEAD file (%s)"
msgstr ""
-#: builtin/commit.c:1466
+#: builtin/commit.c:1501
msgid "could not read MERGE_MODE"
msgstr ""
-#: builtin/commit.c:1485
+#: builtin/commit.c:1520
#, c-format
msgid "could not read commit message: %s"
msgstr ""
-#: builtin/commit.c:1499
+#: builtin/commit.c:1534
+#, c-format
+msgid "Aborting commit; you did not edit the message.\n"
+msgstr ""
+
+#: builtin/commit.c:1539
#, c-format
msgid "Aborting commit due to empty commit message.\n"
msgstr ""
-#: builtin/commit.c:1514
-#: builtin/merge.c:935
-#: builtin/merge.c:968
+#: builtin/commit.c:1554
+#: builtin/merge.c:936
+#: builtin/merge.c:961
msgid "failed to write commit object"
msgstr ""
-#: builtin/commit.c:1535
+#: builtin/commit.c:1575
msgid "cannot lock HEAD ref"
msgstr ""
-#: builtin/commit.c:1539
+#: builtin/commit.c:1579
msgid "cannot update HEAD ref"
msgstr ""
-#: builtin/commit.c:1550
+#: builtin/commit.c:1590
msgid ""
"Repository has been updated, but unable to write\n"
"new_index file. Check that disk is not full or quota is\n"
msgid "Couldn't find remote ref HEAD"
msgstr ""
-#: builtin/fetch.c:252
+#: builtin/fetch.c:253
#, c-format
msgid "object %s not found"
-msgstr ""
+msgstr "objecto %s não encontrado"
-#: builtin/fetch.c:258
+#: builtin/fetch.c:259
msgid "[up to date]"
msgstr "[Actualizada]"
-#: builtin/fetch.c:272
+#: builtin/fetch.c:273
#, c-format
msgid "! %-*s %-*s -> %s (can't fetch in current branch)"
msgstr ""
-#: builtin/fetch.c:273
-#: builtin/fetch.c:351
+#: builtin/fetch.c:274
+#: builtin/fetch.c:360
msgid "[rejected]"
msgstr "[rejeitado]"
-#: builtin/fetch.c:284
+#: builtin/fetch.c:285
msgid "[tag update]"
msgstr "[etiqueta actualizada]"
-#: builtin/fetch.c:286
-#: builtin/fetch.c:313
-#: builtin/fetch.c:331
+#: builtin/fetch.c:287
+#: builtin/fetch.c:322
+#: builtin/fetch.c:340
msgid " (unable to update local ref)"
msgstr ""
-#: builtin/fetch.c:298
+#: builtin/fetch.c:305
msgid "[new tag]"
msgstr "[nova etiqueta]"
-#: builtin/fetch.c:302
+#: builtin/fetch.c:308
msgid "[new branch]"
msgstr "[nova rama]"
-#: builtin/fetch.c:347
+#: builtin/fetch.c:311
+msgid "[new ref]"
+msgstr "[nova ref]"
+
+#: builtin/fetch.c:356
msgid "unable to update local ref"
msgstr ""
-#: builtin/fetch.c:347
+#: builtin/fetch.c:356
msgid "forced update"
msgstr "actualização forçada"
-#: builtin/fetch.c:353
+#: builtin/fetch.c:362
msgid "(non-fast-forward)"
-msgstr ""
+msgstr "(non-fast-forward)"
-#: builtin/fetch.c:384
-#: builtin/fetch.c:676
+#: builtin/fetch.c:393
+#: builtin/fetch.c:685
#, c-format
msgid "cannot open %s: %s\n"
-msgstr ""
+msgstr "não é possivel abrir %s: %s\n"
-#: builtin/fetch.c:393
+#: builtin/fetch.c:402
#, c-format
msgid "%s did not send all necessary objects\n"
msgstr ""
-#: builtin/fetch.c:479
+#: builtin/fetch.c:488
#, c-format
msgid "From %.*s\n"
msgstr "Para %.*s\n"
-#: builtin/fetch.c:490
+#: builtin/fetch.c:499
#, c-format
msgid ""
"some local refs could not be updated; try running\n"
" 'git remote prune %s' to remove any old, conflicting branches"
msgstr ""
-#: builtin/fetch.c:540
+#: builtin/fetch.c:549
#, c-format
-msgid " (%s will become dangling)\n"
+msgid " (%s will become dangling)"
msgstr ""
-#: builtin/fetch.c:541
+#: builtin/fetch.c:550
#, c-format
-msgid " (%s has become dangling)\n"
+msgid " (%s has become dangling)"
msgstr ""
-#: builtin/fetch.c:548
+#: builtin/fetch.c:557
msgid "[deleted]"
msgstr "[eliminado]"
-#: builtin/fetch.c:549
+#: builtin/fetch.c:558
+#: builtin/remote.c:1055
msgid "(none)"
msgstr "(nenhum)"
-#: builtin/fetch.c:666
+#: builtin/fetch.c:675
#, c-format
msgid "Refusing to fetch into current branch %s of non-bare repository"
msgstr ""
-#: builtin/fetch.c:700
+#: builtin/fetch.c:709
#, c-format
msgid "Don't know how to fetch from %s"
msgstr ""
-#: builtin/fetch.c:777
+#: builtin/fetch.c:786
#, c-format
msgid "Option \"%s\" value \"%s\" is not valid for %s"
msgstr ""
-#: builtin/fetch.c:780
+#: builtin/fetch.c:789
#, c-format
msgid "Option \"%s\" is ignored for %s\n"
msgstr ""
-#: builtin/fetch.c:879
+#: builtin/fetch.c:888
#, c-format
msgid "Fetching %s\n"
msgstr "Baixando %s\n"
-#: builtin/fetch.c:881
+#: builtin/fetch.c:890
+#: builtin/remote.c:100
#, c-format
msgid "Could not fetch %s"
msgstr ""
-#: builtin/fetch.c:898
+#: builtin/fetch.c:907
msgid ""
"No remote repository specified. Please, specify either a URL or a\n"
"remote name from which new revisions should be fetched."
"Nenhum repositório remoto especificado. Por favor, especifique um URL ou o\n"
"nome remoto a partir do qual novas revisões devem ser obtida."
-#: builtin/fetch.c:918
+#: builtin/fetch.c:927
msgid "You need to specify a tag name."
msgstr "Você precisa especificar um nome da etiqueta."
-#: builtin/fetch.c:970
+#: builtin/fetch.c:979
msgid "fetch --all does not take a repository argument"
msgstr ""
-#: builtin/fetch.c:972
+#: builtin/fetch.c:981
msgid "fetch --all does not make sense with refspecs"
msgstr ""
-#: builtin/fetch.c:983
+#: builtin/fetch.c:992
#, c-format
msgid "No such remote or remote group: %s"
msgstr ""
-#: builtin/fetch.c:991
+#: builtin/fetch.c:1000
msgid "Fetching a group and specifying refspecs does not make sense"
msgstr ""
msgid "Invalid %s: '%s'"
msgstr "Inválido %s: '%s'"
-#: builtin/gc.c:78
-msgid "Too many options specified"
-msgstr "Demasiadas opções especificadas"
-
-#: builtin/gc.c:103
+#: builtin/gc.c:90
#, c-format
msgid "insanely long object directory %.*s"
msgstr ""
-#: builtin/gc.c:223
+#: builtin/gc.c:221
#, c-format
msgid "Auto packing the repository for optimum performance.\n"
msgstr ""
-#: builtin/gc.c:226
+#: builtin/gc.c:224
#, c-format
msgid ""
"Auto packing the repository for optimum performance. You may also\n"
"run \"git gc\" manually. See \"git help gc\" for more information.\n"
msgstr ""
-#: builtin/gc.c:256
+#: builtin/gc.c:251
msgid "There are too many unreachable loose objects; run 'git prune' to remove them."
msgstr ""
msgid "both --cached and trees are given."
msgstr ""
+#: builtin/help.c:59
+#, c-format
+msgid "unrecognized help format '%s'"
+msgstr "formato ajuda não reconhecido '%s'"
+
+#: builtin/help.c:87
+msgid "Failed to start emacsclient."
+msgstr ""
+
+#: builtin/help.c:100
+msgid "Failed to parse emacsclient version."
+msgstr ""
+
+#: builtin/help.c:108
+#, c-format
+msgid "emacsclient version '%d' too old (< 22)."
+msgstr ""
+
+#: builtin/help.c:126
+#: builtin/help.c:154
+#: builtin/help.c:163
+#: builtin/help.c:171
+#, c-format
+msgid "failed to exec '%s': %s"
+msgstr ""
+
+#: builtin/help.c:211
+#, c-format
+msgid ""
+"'%s': path for unsupported man viewer.\n"
+"Please consider using 'man.<tool>.cmd' instead."
+msgstr ""
+
+#: builtin/help.c:223
+#, c-format
+msgid ""
+"'%s': cmd for supported man viewer.\n"
+"Please consider using 'man.<tool>.path' instead."
+msgstr ""
+
+#: builtin/help.c:287
+msgid "The most commonly used git commands are:"
+msgstr ""
+
+#: builtin/help.c:355
+#, c-format
+msgid "'%s': unknown man viewer."
+msgstr ""
+
+#: builtin/help.c:372
+msgid "no man viewer handled the request"
+msgstr ""
+
+#: builtin/help.c:380
+msgid "no info viewer handled the request"
+msgstr ""
+
+#: builtin/help.c:391
+#, c-format
+msgid "'%s': not a documentation directory."
+msgstr ""
+
+#: builtin/help.c:432
+#: builtin/help.c:439
+#, c-format
+msgid "usage: %s%s"
+msgstr ""
+
+#: builtin/help.c:453
+#, c-format
+msgid "`git %s' is aliased to `%s'"
+msgstr ""
+
+#: builtin/index-pack.c:84
+#, c-format
+msgid "object type mismatch at %s"
+msgstr ""
+
+#: builtin/index-pack.c:104
+msgid "object of unexpected type"
+msgstr ""
+
+#: builtin/index-pack.c:141
+#, c-format
+msgid "cannot fill %d byte"
+msgid_plural "cannot fill %d bytes"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:151
+msgid "early EOF"
+msgstr ""
+
+#: builtin/index-pack.c:152
+msgid "read error on input"
+msgstr ""
+
+#: builtin/index-pack.c:164
+msgid "used more bytes than were available"
+msgstr ""
+
+#: builtin/index-pack.c:171
+msgid "pack too large for current definition of off_t"
+msgstr ""
+
+#: builtin/index-pack.c:187
+#, c-format
+msgid "unable to create '%s'"
+msgstr "não é possivel crear '%s'"
+
+#: builtin/index-pack.c:192
+#, c-format
+msgid "cannot open packfile '%s'"
+msgstr "Não é possivel abrir o ficheiro packfile '%s'"
+
+#: builtin/index-pack.c:206
+msgid "pack signature mismatch"
+msgstr ""
+
+#: builtin/index-pack.c:226
+#, c-format
+msgid "pack has bad object at offset %lu: %s"
+msgstr ""
+
+#: builtin/index-pack.c:300
+#, c-format
+msgid "inflate returned %d"
+msgstr ""
+
+#: builtin/index-pack.c:345
+msgid "offset value overflow for delta base object"
+msgstr ""
+
+#: builtin/index-pack.c:353
+msgid "delta base offset is out of bound"
+msgstr ""
+
+#: builtin/index-pack.c:361
+#, c-format
+msgid "unknown object type %d"
+msgstr "ojecto com tipo desconhecido %d"
+
+#: builtin/index-pack.c:390
+msgid "cannot pread pack file"
+msgstr "Não é possivel pread pack file"
+
+#: builtin/index-pack.c:392
+#, c-format
+msgid "premature end of pack file, %lu byte missing"
+msgid_plural "premature end of pack file, %lu bytes missing"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:405
+msgid "serious inflate inconsistency"
+msgstr ""
+
+#: builtin/index-pack.c:476
+#, c-format
+msgid "cannot read existing object %s"
+msgstr "não foi possível ler objecto existente %s"
+
+#: builtin/index-pack.c:479
+#, c-format
+msgid "SHA1 COLLISION FOUND WITH %s !"
+msgstr ""
+
+#: builtin/index-pack.c:488
+#, c-format
+msgid "invalid blob object %s"
+msgstr "inválido objecto blob %s"
+
+#: builtin/index-pack.c:500
+#, c-format
+msgid "invalid %s"
+msgstr "inválido: %s"
+
+#: builtin/index-pack.c:502
+msgid "Error in object"
+msgstr ""
+
+#: builtin/index-pack.c:504
+#, c-format
+msgid "Not all child objects of %s are reachable"
+msgstr ""
+
+#: builtin/index-pack.c:576
+#: builtin/index-pack.c:602
+msgid "failed to apply delta"
+msgstr ""
+
+#: builtin/index-pack.c:706
+msgid "Receiving objects"
+msgstr ""
+
+#: builtin/index-pack.c:706
+msgid "Indexing objects"
+msgstr ""
+
+#: builtin/index-pack.c:728
+msgid "pack is corrupted (SHA1 mismatch)"
+msgstr ""
+
+#: builtin/index-pack.c:733
+msgid "cannot fstat packfile"
+msgstr "Não é possivel fstat packfile"
+
+#: builtin/index-pack.c:736
+msgid "pack has junk at the end"
+msgstr ""
+
+#: builtin/index-pack.c:754
+msgid "Resolving deltas"
+msgstr "Resolvendo deltas"
+
+#: builtin/index-pack.c:787
+#, c-format
+msgid "unable to deflate appended object (%d)"
+msgstr ""
+
+#: builtin/index-pack.c:866
+#, c-format
+msgid "local object %s is corrupt"
+msgstr ""
+
+#: builtin/index-pack.c:890
+msgid "error while closing pack file"
+msgstr ""
+
+#: builtin/index-pack.c:903
+#, c-format
+msgid "cannot write keep file '%s'"
+msgstr "não é possivel escrever o fichero kepp '%s'"
+
+#: builtin/index-pack.c:911
+#, c-format
+msgid "cannot close written keep file '%s'"
+msgstr "Não é possivel fechar o fichero escrito '%s'"
+
+#: builtin/index-pack.c:924
+msgid "cannot store pack file"
+msgstr "Não é possivel guardar o fichero pack"
+
+#: builtin/index-pack.c:935
+msgid "cannot store index file"
+msgstr "Não é possivel guardar fichero index"
+
+#: builtin/index-pack.c:1024
+#, c-format
+msgid "Cannot open existing pack file '%s'"
+msgstr "Não é possivel abrir o existente ficheiro pack %s"
+
+#: builtin/index-pack.c:1026
+#, c-format
+msgid "Cannot open existing pack idx file for '%s'"
+msgstr "Não é possivel abrir o ficheiro 'pack idx' para '%s'"
+
+#: builtin/index-pack.c:1073
+#, c-format
+msgid "non delta: %d object"
+msgid_plural "non delta: %d objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:1080
+#, c-format
+msgid "chain length = %d: %lu object"
+msgid_plural "chain length = %d: %lu objects"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/index-pack.c:1107
+msgid "Cannot come back to cwd"
+msgstr ""
+
+#: builtin/index-pack.c:1140
+#: builtin/index-pack.c:1143
+#: builtin/index-pack.c:1155
+#: builtin/index-pack.c:1159
+#, c-format
+msgid "bad %s"
+msgstr "inválido %s"
+
+#: builtin/index-pack.c:1173
+msgid "--fix-thin cannot be used without --stdin"
+msgstr ""
+
+#: builtin/index-pack.c:1177
+#: builtin/index-pack.c:1187
+#, c-format
+msgid "packfile name '%s' does not end with '.pack'"
+msgstr ""
+
+#: builtin/index-pack.c:1196
+msgid "--verify with no packfile name given"
+msgstr ""
+
+#: builtin/index-pack.c:1220
+msgid "confusion beyond insanity"
+msgstr ""
+
+#: builtin/index-pack.c:1239
+#, c-format
+msgid "pack has %d unresolved delta"
+msgid_plural "pack has %d unresolved deltas"
+msgstr[0] ""
+msgstr[1] ""
+
#: builtin/init-db.c:35
#, c-format
msgid "Could not make %s writable by group"
msgid "Cannot access work tree '%s'"
msgstr ""
-#: builtin/log.c:187
+#: builtin/log.c:188
#, c-format
msgid "Final output: %d %s\n"
msgstr ""
-#: builtin/log.c:395
-#: builtin/log.c:483
+#: builtin/log.c:401
+#: builtin/log.c:489
#, c-format
msgid "Could not read object %s"
msgstr ""
-#: builtin/log.c:507
+#: builtin/log.c:513
#, c-format
msgid "Unknown type: %d"
msgstr "Tipo desconhecido: %d"
-#: builtin/log.c:596
+#: builtin/log.c:602
msgid "format.headers without value"
msgstr ""
-#: builtin/log.c:669
+#: builtin/log.c:675
msgid "name of output directory is too long"
msgstr "nome do diretório de saída é demasiado longo"
-#: builtin/log.c:680
+#: builtin/log.c:686
#, c-format
msgid "Cannot open patch file %s"
msgstr "Não é possivel abrir o ficheiro patch %s"
-#: builtin/log.c:694
+#: builtin/log.c:700
msgid "Need exactly one range."
msgstr "Necessita de exatamente um intervalo."
-#: builtin/log.c:702
+#: builtin/log.c:708
msgid "Not a range."
msgstr "Não é um intervalo."
-#: builtin/log.c:739
+#: builtin/log.c:745
msgid "Could not extract email from committer identity."
msgstr "Não foi possível extrair a identidade do committer do e-mail."
-#: builtin/log.c:785
+#: builtin/log.c:791
msgid "Cover letter needs email format"
msgstr "Carta de apresentação necessita um modelo de e-mail"
-#: builtin/log.c:879
+#: builtin/log.c:885
#, c-format
msgid "insane in-reply-to: %s"
msgstr ""
-#: builtin/log.c:952
+#: builtin/log.c:958
msgid "Two output directories?"
msgstr "Dois diretórios de saída?"
-#: builtin/log.c:1173
+#: builtin/log.c:1179
#, c-format
msgid "bogus committer info %s"
msgstr ""
-#: builtin/log.c:1218
+#: builtin/log.c:1224
msgid "-n and -k are mutually exclusive."
msgstr ""
-#: builtin/log.c:1220
-msgid "--subject-prefix and -k are mutually exclusive."
-msgstr ""
-
-#: builtin/log.c:1225
-#: builtin/shortlog.c:284
-#, c-format
-msgid "unrecognized argument: %s"
-msgstr "argumento não reconhecido: %s"
-
-#: builtin/log.c:1228
+#: builtin/log.c:1226
+msgid "--subject-prefix and -k are mutually exclusive."
+msgstr ""
+
+#: builtin/log.c:1234
msgid "--name-only does not make sense"
msgstr ""
-#: builtin/log.c:1230
+#: builtin/log.c:1236
msgid "--name-status does not make sense"
msgstr ""
-#: builtin/log.c:1232
+#: builtin/log.c:1238
msgid "--check does not make sense"
msgstr ""
-#: builtin/log.c:1255
+#: builtin/log.c:1261
msgid "standard output, or directory, which one?"
msgstr "saída padrão, ou diretório, qual deles?"
-#: builtin/log.c:1257
+#: builtin/log.c:1263
#, c-format
msgid "Could not create directory '%s'"
msgstr ""
-#: builtin/log.c:1410
+#: builtin/log.c:1416
msgid "Failed to create output files"
msgstr "Falhou ao criar ficheiros de saída"
-#: builtin/log.c:1514
+#: builtin/log.c:1520
#, c-format
msgid "Could not find a tracked remote branch, please specify <upstream> manually.\n"
msgstr ""
-#: builtin/log.c:1530
-#: builtin/log.c:1532
-#: builtin/log.c:1544
+#: builtin/log.c:1536
+#: builtin/log.c:1538
+#: builtin/log.c:1550
#, c-format
msgid "Unknown commit %s"
msgstr "Commit desconhecido %s"
-#: builtin/merge.c:91
+#: builtin/merge.c:90
msgid "switch `m' requires a value"
msgstr ""
-#: builtin/merge.c:128
+#: builtin/merge.c:127
#, c-format
msgid "Could not find merge strategy '%s'.\n"
msgstr ""
-#: builtin/merge.c:129
+#: builtin/merge.c:128
#, c-format
msgid "Available strategies are:"
msgstr "As estratégias disponíveis são:"
-#: builtin/merge.c:134
+#: builtin/merge.c:133
#, c-format
msgid "Available custom strategies are:"
msgstr "Estratégias personalizadas disponíveis são:"
-#: builtin/merge.c:241
+#: builtin/merge.c:240
msgid "could not run stash."
msgstr ""
-#: builtin/merge.c:246
+#: builtin/merge.c:245
msgid "stash failed"
msgstr "falhou o stash"
-#: builtin/merge.c:251
+#: builtin/merge.c:250
#, c-format
msgid "not a valid object: %s"
msgstr ""
-#: builtin/merge.c:270
-#: builtin/merge.c:287
+#: builtin/merge.c:269
+#: builtin/merge.c:286
msgid "read-tree failed"
msgstr ""
-#: builtin/merge.c:317
+#: builtin/merge.c:316
msgid " (nothing to squash)"
msgstr " (nada para squash)"
-#: builtin/merge.c:330
+#: builtin/merge.c:329
#, c-format
msgid "Squash commit -- not updating HEAD\n"
msgstr ""
-#: builtin/merge.c:362
+#: builtin/merge.c:361
msgid "Writing SQUASH_MSG"
msgstr "Escrevendo SQUASH_MSG"
-#: builtin/merge.c:364
+#: builtin/merge.c:363
msgid "Finishing SQUASH_MSG"
msgstr "Terminando SQUASH_MSG"
msgid "failed to read the cache"
msgstr ""
-#: builtin/merge.c:696
+#: builtin/merge.c:697
msgid "Unable to write index."
msgstr ""
-#: builtin/merge.c:709
+#: builtin/merge.c:710
msgid "Not handling anything other than two heads merge."
msgstr ""
-#: builtin/merge.c:723
+#: builtin/merge.c:724
#, c-format
msgid "Unknown option for merge-recursive: -X%s"
msgstr ""
-#: builtin/merge.c:737
+#: builtin/merge.c:738
#, c-format
msgid "unable to write %s"
msgstr ""
-#: builtin/merge.c:876
+#: builtin/merge.c:877
#, c-format
msgid "Could not read from '%s'"
msgstr ""
-#: builtin/merge.c:885
+#: builtin/merge.c:886
#, c-format
msgid "Not committing merge; use 'git commit' to complete the merge.\n"
msgstr "Não commitando um merge; usa 'git commit' para completar o merge.\n"
-#: builtin/merge.c:891
+#: builtin/merge.c:892
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"
"the commit.\n"
msgstr ""
-#: builtin/merge.c:915
+#: builtin/merge.c:916
msgid "Empty commit message."
msgstr "Mensagem de commit vazia."
-#: builtin/merge.c:927
+#: builtin/merge.c:928
#, c-format
msgid "Wonderful.\n"
msgstr "Fastastico.\n"
-#: builtin/merge.c:1000
+#: builtin/merge.c:993
#, c-format
msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
msgstr ""
-#: builtin/merge.c:1016
+#: builtin/merge.c:1009
#, c-format
msgid "'%s' is not a commit"
msgstr "'%s' não é um commit"
-#: builtin/merge.c:1057
+#: builtin/merge.c:1050
msgid "No current branch."
msgstr "Nenhuma rama actual"
-#: builtin/merge.c:1059
+#: builtin/merge.c:1052
msgid "No remote for the current branch."
msgstr ""
-#: builtin/merge.c:1061
+#: builtin/merge.c:1054
msgid "No default upstream defined for the current branch."
msgstr ""
-#: builtin/merge.c:1066
+#: builtin/merge.c:1059
#, c-format
msgid "No remote tracking branch for %s from %s"
msgstr ""
-#: builtin/merge.c:1188
+#: builtin/merge.c:1146
+#: builtin/merge.c:1303
+#, c-format
+msgid "%s - not something we can merge"
+msgstr ""
+
+#: builtin/merge.c:1214
msgid "There is no merge to abort (MERGE_HEAD missing)."
msgstr ""
-#: builtin/merge.c:1204
+#: builtin/merge.c:1230
#: git-pull.sh:31
msgid ""
"You have not concluded your merge (MERGE_HEAD exists).\n"
"Please, commit your changes before you can merge."
msgstr ""
-#: builtin/merge.c:1207
+#: builtin/merge.c:1233
#: git-pull.sh:34
msgid "You have not concluded your merge (MERGE_HEAD exists)."
msgstr ""
-#: builtin/merge.c:1211
+#: builtin/merge.c:1237
msgid ""
"You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
"Please, commit your changes before you can merge."
msgstr ""
-#: builtin/merge.c:1214
+#: builtin/merge.c:1240
msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
msgstr ""
-#: builtin/merge.c:1223
+#: builtin/merge.c:1249
msgid "You cannot combine --squash with --no-ff."
msgstr ""
-#: builtin/merge.c:1228
+#: builtin/merge.c:1254
msgid "You cannot combine --no-ff with --ff-only."
msgstr ""
-#: builtin/merge.c:1235
+#: builtin/merge.c:1261
msgid "No commit specified and merge.defaultToUpstream not set."
msgstr ""
-#: builtin/merge.c:1266
+#: builtin/merge.c:1293
msgid "Can merge only exactly one commit into empty head"
msgstr ""
-#: builtin/merge.c:1269
+#: builtin/merge.c:1296
msgid "Squash commit into empty head not supported yet"
msgstr ""
-#: builtin/merge.c:1271
+#: builtin/merge.c:1298
msgid "Non-fast-forward commit does not make sense into an empty head"
msgstr ""
-#: builtin/merge.c:1275
-#: builtin/merge.c:1319
-#, c-format
-msgid "%s - not something we can merge"
-msgstr ""
-
-#: builtin/merge.c:1385
+#: builtin/merge.c:1413
#, c-format
msgid "Updating %s..%s\n"
msgstr "Actualizando %s..%s\n"
-#: builtin/merge.c:1423
+#: builtin/merge.c:1451
#, c-format
msgid "Trying really trivial in-index merge...\n"
msgstr ""
-#: builtin/merge.c:1430
+#: builtin/merge.c:1458
#, c-format
msgid "Nope.\n"
msgstr "Não.\n"
-#: builtin/merge.c:1462
+#: builtin/merge.c:1490
msgid "Not possible to fast-forward, aborting."
msgstr ""
-#: builtin/merge.c:1485
-#: builtin/merge.c:1562
+#: builtin/merge.c:1513
+#: builtin/merge.c:1592
#, c-format
msgid "Rewinding the tree to pristine...\n"
msgstr ""
-#: builtin/merge.c:1489
+#: builtin/merge.c:1517
#, c-format
msgid "Trying merge strategy %s...\n"
msgstr ""
-#: builtin/merge.c:1553
+#: builtin/merge.c:1583
#, c-format
msgid "No merge strategy handled the merge.\n"
msgstr ""
-#: builtin/merge.c:1555
+#: builtin/merge.c:1585
#, c-format
msgid "Merge with strategy %s failed.\n"
msgstr "Fundir com a estratégia %s falhou.\n"
-#: builtin/merge.c:1564
+#: builtin/merge.c:1594
#, c-format
msgid "Using the %s to prepare resolving by hand.\n"
msgstr ""
-#: builtin/merge.c:1575
+#: builtin/merge.c:1606
#, c-format
msgid "Automatic merge went well; stopped before committing as requested\n"
msgstr ""
msgstr "Mudar de nome %s para %s\n"
#: builtin/mv.c:215
+#: builtin/remote.c:731
#, c-format
msgid "renaming '%s' failed"
msgstr "mudar de nome '%s' falhou"
msgstr ""
#: builtin/notes.c:175
-#: builtin/tag.c:343
+#: builtin/tag.c:347
#, c-format
msgid "could not create file '%s'"
msgstr ""
msgstr ""
#: builtin/notes.c:251
-#: builtin/tag.c:521
+#: builtin/tag.c:542
#, c-format
msgid "cannot read '%s'"
msgstr "não consegue ler '%s'"
#: builtin/notes.c:253
-#: builtin/tag.c:524
+#: builtin/tag.c:545
#, c-format
msgid "could not open or read '%s'"
msgstr ""
#: builtin/notes.c:766
#: builtin/notes.c:968
#: builtin/reset.c:293
-#: builtin/tag.c:537
+#: builtin/tag.c:558
#, c-format
msgid "Failed to resolve '%s' as a valid ref."
msgstr ""
msgstr ""
#: builtin/notes.c:1103
+#: builtin/remote.c:1598
#, c-format
msgid "Unknown subcommand: %s"
msgstr ""
-#: builtin/pack-objects.c:2310
+#: builtin/pack-objects.c:2315
#, c-format
msgid "unsupported index version %s"
msgstr ""
-#: builtin/pack-objects.c:2314
+#: builtin/pack-objects.c:2319
#, c-format
msgid "bad index version '%s'"
msgstr ""
-#: builtin/pack-objects.c:2322
+#: builtin/pack-objects.c:2342
#, c-format
msgid "option %s does not accept negative form"
msgstr "opção %s não aceita formato negativo"
-#: builtin/pack-objects.c:2326
+#: builtin/pack-objects.c:2346
#, c-format
msgid "unable to parse value '%s' for option %s"
msgstr ""
-#: builtin/push.c:44
+#: builtin/push.c:45
msgid "tag shorthand without <tag>"
msgstr ""
-#: builtin/push.c:63
+#: builtin/push.c:64
msgid "--delete only accepts plain target ref names"
msgstr "--delete só aceita nomes simples para o ref de destino"
-#: builtin/push.c:73
+#: builtin/push.c:99
+msgid ""
+"\n"
+"To choose either option permanently, see push.default in 'git help config'."
+msgstr ""
+
+#: builtin/push.c:102
+#, 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 %s\n"
+"%s"
+msgstr ""
+
+#: builtin/push.c:121
#, c-format
msgid ""
"You are not currently on a branch.\n"
" git push %s HEAD:<name-of-remote-branch>\n"
msgstr ""
-#: builtin/push.c:80
+#: builtin/push.c:128
#, c-format
msgid ""
"The current branch %s has no upstream branch.\n"
" git push --set-upstream %s %s\n"
msgstr ""
-#: builtin/push.c:88
+#: builtin/push.c:136
#, c-format
msgid "The current branch %s has multiple upstream branches, refusing to push."
msgstr ""
-#: builtin/push.c:111
+#: builtin/push.c:139
+#, 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 ""
+
+#: builtin/push.c:174
msgid "You didn't specify any refspecs to push, and push.default is \"nothing\"."
msgstr ""
-#: builtin/push.c:131
+#: builtin/push.c:181
+msgid ""
+"Updates were rejected because the tip of your current branch is behind\n"
+"its remote counterpart. Merge the remote changes (e.g. 'git pull')\n"
+"before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+
+#: builtin/push.c:187
+msgid ""
+"Updates were rejected because a pushed branch tip is behind its remote\n"
+"counterpart. If you did not intend to push that branch, you may want to\n"
+"specify branches to push or set the 'push.default' configuration\n"
+"variable to 'current' or 'upstream' to push only the current branch."
+msgstr ""
+
+#: builtin/push.c:193
+msgid ""
+"Updates were rejected because a pushed branch tip is behind its remote\n"
+"counterpart. Check out this branch and merge the remote changes\n"
+"(e.g. 'git pull') before pushing again.\n"
+"See the 'Note about fast-forwards' in 'git push --help' for details."
+msgstr ""
+
+#: builtin/push.c:233
#, c-format
msgid "Pushing to %s\n"
msgstr "Pushing para %s\n"
-#: builtin/push.c:135
+#: builtin/push.c:237
#, c-format
msgid "failed to push some refs to '%s'"
msgstr ""
-#: builtin/push.c:143
-#, c-format
-msgid ""
-"To prevent you from losing history, non-fast-forward updates were rejected\n"
-"Merge the remote changes (e.g. 'git pull') before pushing again. See the\n"
-"'Note about fast-forwards' section of 'git push --help' for details.\n"
-msgstr ""
-
-#: builtin/push.c:160
+#: builtin/push.c:269
#, c-format
msgid "bad repository '%s'"
msgstr "repositorio inválido '%s'"
-#: builtin/push.c:161
+#: builtin/push.c:270
msgid ""
"No configured push destination.\n"
"Either specify the URL from the command-line or configure a remote repository using\n"
" git push <name>\n"
msgstr ""
-#: builtin/push.c:176
+#: builtin/push.c:285
msgid "--all and --tags are incompatible"
msgstr "--all e --tags are são incompatíveis"
-#: builtin/push.c:177
+#: builtin/push.c:286
msgid "--all can't be combined with refspecs"
msgstr ""
-#: builtin/push.c:182
+#: builtin/push.c:291
msgid "--mirror and --tags are incompatible"
msgstr ""
-#: builtin/push.c:183
+#: builtin/push.c:292
msgid "--mirror can't be combined with refspecs"
msgstr ""
-#: builtin/push.c:188
+#: builtin/push.c:297
msgid "--all and --mirror are incompatible"
msgstr ""
-#: builtin/push.c:274
+#: builtin/push.c:385
msgid "--delete is incompatible with --all, --mirror and --tags"
msgstr ""
-#: builtin/push.c:276
+#: builtin/push.c:387
msgid "--delete doesn't make sense without any refs"
msgstr ""
+#: builtin/remote.c:98
+#, c-format
+msgid "Updating %s"
+msgstr "Actualizando %s"
+
+#: builtin/remote.c:130
+msgid ""
+"--mirror is dangerous and deprecated; please\n"
+"\t use --mirror=fetch or --mirror=push instead"
+msgstr ""
+
+#: builtin/remote.c:147
+#, c-format
+msgid "unknown mirror argument: %s"
+msgstr "argumento mirror não conhecido: %s"
+
+#: builtin/remote.c:185
+msgid "specifying a master branch makes no sense with --mirror"
+msgstr ""
+
+#: builtin/remote.c:187
+msgid "specifying branches to track makes sense only with fetch mirrors"
+msgstr ""
+
+#: builtin/remote.c:195
+#: builtin/remote.c:646
+#, c-format
+msgid "remote %s already exists."
+msgstr "o remoto %s já existe"
+
+#: builtin/remote.c:199
+#: builtin/remote.c:650
+#, c-format
+msgid "'%s' is not a valid remote name"
+msgstr "'%s' não é um nombe remoto valido"
+
+#: builtin/remote.c:243
+#, c-format
+msgid "Could not setup master '%s'"
+msgstr "Não foi possível configurar a rama master '%s'"
+
+#: builtin/remote.c:299
+#, c-format
+msgid "more than one %s"
+msgstr ""
+
+#: builtin/remote.c:339
+#, c-format
+msgid "Could not get fetch map for refspec %s"
+msgstr ""
+
+#: builtin/remote.c:440
+#: builtin/remote.c:448
+msgid "(matching)"
+msgstr ""
+
+#: builtin/remote.c:452
+msgid "(delete)"
+msgstr "(eliminado)"
+
+#: builtin/remote.c:595
+#: builtin/remote.c:601
+#: builtin/remote.c:607
+#, c-format
+msgid "Could not append '%s' to '%s'"
+msgstr "Não foi possível adicionar o '%s' para o '%s'"
+
+#: builtin/remote.c:639
+#: builtin/remote.c:792
+#: builtin/remote.c:890
+#, c-format
+msgid "No such remote: %s"
+msgstr ""
+
+#: builtin/remote.c:656
+#, c-format
+msgid "Could not rename config section '%s' to '%s'"
+msgstr "Não foi possível renombrar a secção da configuração de '%s' para '%s'"
+
+#: builtin/remote.c:662
+#: builtin/remote.c:799
+#, c-format
+msgid "Could not remove config section '%s'"
+msgstr "Não foi possível remover a secção da configuração '%s'"
+
+#: builtin/remote.c:677
+#, c-format
+msgid ""
+"Not updating non-default fetch respec\n"
+"\t%s\n"
+"\tPlease update the configuration manually if necessary."
+msgstr ""
+
+#: builtin/remote.c:683
+#, c-format
+msgid "Could not append '%s'"
+msgstr "Não foi possível adicionar '%s'"
+
+#: builtin/remote.c:694
+#, c-format
+msgid "Could not set '%s'"
+msgstr "Não foi possível atribuir '%s'"
+
+#: builtin/remote.c:716
+#, c-format
+msgid "deleting '%s' failed"
+msgstr "falhou eliminar '%s'"
+
+#: builtin/remote.c:750
+#, c-format
+msgid "creating '%s' failed"
+msgstr "falhou a criar '%s'"
+
+#: builtin/remote.c:764
+#, c-format
+msgid "Could not remove branch %s"
+msgstr "Não foi possível remover rama %s"
+
+#: builtin/remote.c:834
+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] ""
+msgstr[1] ""
+
+#: builtin/remote.c:943
+#, c-format
+msgid " new (next fetch will store in remotes/%s)"
+msgstr ""
+
+#: builtin/remote.c:946
+msgid " tracked"
+msgstr "seguido"
+
+#: builtin/remote.c:948
+msgid " stale (use 'git remote prune' to remove)"
+msgstr ""
+
+#: builtin/remote.c:950
+msgid " ???"
+msgstr " ???"
+
+#: builtin/remote.c:991
+#, c-format
+msgid "invalid branch.%s.merge; cannot rebase onto > 1 branch"
+msgstr ""
+
+#: builtin/remote.c:998
+#, c-format
+msgid "rebases onto remote %s"
+msgstr ""
+
+#: builtin/remote.c:1001
+#, c-format
+msgid " merges with remote %s"
+msgstr "Fundir com servidor remoto %s"
+
+#: builtin/remote.c:1002
+msgid " and with remote"
+msgstr " e com remoto"
+
+#: builtin/remote.c:1004
+#, c-format
+msgid "merges with remote %s"
+msgstr "Fundir com servidor remoto %s"
+
+#: builtin/remote.c:1005
+msgid " and with remote"
+msgstr " e com remoto"
+
+#: builtin/remote.c:1051
+msgid "create"
+msgstr "creado"
+
+#: builtin/remote.c:1054
+msgid "delete"
+msgstr "eliminado"
+
+#: builtin/remote.c:1058
+msgid "up to date"
+msgstr "actualizado"
+
+#: builtin/remote.c:1061
+msgid "fast-forwardable"
+msgstr "fast-forwardable"
+
+#: builtin/remote.c:1064
+msgid "local out of date"
+msgstr "local desatualizada"
+
+#: builtin/remote.c:1071
+#, c-format
+msgid " %-*s forces to %-*s (%s)"
+msgstr ""
+
+#: builtin/remote.c:1074
+#, c-format
+msgid " %-*s pushes to %-*s (%s)"
+msgstr ""
+
+#: builtin/remote.c:1078
+#, c-format
+msgid " %-*s forces to %s"
+msgstr ""
+
+#: builtin/remote.c:1081
+#, c-format
+msgid " %-*s pushes to %s"
+msgstr ""
+
+#: builtin/remote.c:1118
+#, c-format
+msgid "* remote %s"
+msgstr "* remota %s"
+
+#: builtin/remote.c:1119
+#, c-format
+msgid " Fetch URL: %s"
+msgstr ""
+
+#: builtin/remote.c:1120
+#: builtin/remote.c:1285
+msgid "(no URL)"
+msgstr "(nenhum URL)"
+
+#: builtin/remote.c:1129
+#: builtin/remote.c:1131
+#, c-format
+msgid " Push URL: %s"
+msgstr ""
+
+#: builtin/remote.c:1133
+#: builtin/remote.c:1135
+#: builtin/remote.c:1137
+#, c-format
+msgid " HEAD branch: %s"
+msgstr "Rama HEAD: %s"
+
+#: builtin/remote.c:1139
+#, c-format
+msgid " HEAD branch (remote HEAD is ambiguous, may be one of the following):\n"
+msgstr ""
+
+#: builtin/remote.c:1151
+#, c-format
+msgid " Remote branch:%s"
+msgid_plural " Remote branches:%s"
+msgstr[0] "Rama remota:%s"
+msgstr[1] "Ramas remotas:%s'"
+
+#: builtin/remote.c:1154
+#: builtin/remote.c:1181
+msgid " (status not queried)"
+msgstr ""
+
+#: builtin/remote.c:1163
+msgid " Local branch configured for 'git pull':"
+msgid_plural " Local branches configured for 'git pull':"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/remote.c:1171
+msgid " Local refs will be mirrored by 'git push'"
+msgstr ""
+
+#: builtin/remote.c:1178
+#, c-format
+msgid " Local ref configured for 'git push'%s:"
+msgid_plural " Local refs configured for 'git push'%s:"
+msgstr[0] ""
+msgstr[1] ""
+
+#: builtin/remote.c:1216
+msgid "Cannot determine remote HEAD"
+msgstr ""
+
+#: builtin/remote.c:1218
+msgid "Multiple remote HEAD branches. Please choose one explicitly with:"
+msgstr ""
+
+#: builtin/remote.c:1228
+#, c-format
+msgid "Could not delete %s"
+msgstr "Não foi possível abrir %s"
+
+#: builtin/remote.c:1236
+#, c-format
+msgid "Not a valid ref: %s"
+msgstr ""
+
+#: builtin/remote.c:1238
+#, c-format
+msgid "Could not setup %s"
+msgstr "Não foi possível configurar %s"
+
+#: builtin/remote.c:1274
+#, c-format
+msgid " %s will become dangling!"
+msgstr ""
+
+#: builtin/remote.c:1275
+#, c-format
+msgid " %s has become dangling!"
+msgstr ""
+
+#: builtin/remote.c:1281
+#, c-format
+msgid "Pruning %s"
+msgstr "Apagando %s"
+
+#: builtin/remote.c:1282
+#, c-format
+msgid "URL: %s"
+msgstr "URL: %s"
+
+#: builtin/remote.c:1295
+#, c-format
+msgid " * [would prune] %s"
+msgstr ""
+
+#: builtin/remote.c:1298
+#, c-format
+msgid " * [pruned] %s"
+msgstr ""
+
+#: builtin/remote.c:1387
+#: builtin/remote.c:1461
+#, c-format
+msgid "No such remote '%s'"
+msgstr "Não existe este remoto '%s'"
+
+#: builtin/remote.c:1414
+msgid "no remote specified"
+msgstr "Nenhum remoto especificado"
+
+#: builtin/remote.c:1447
+msgid "--add --delete doesn't make sense"
+msgstr ""
+
+#: builtin/remote.c:1487
+#, c-format
+msgid "Invalid old URL pattern: %s"
+msgstr ""
+
+#: builtin/remote.c:1495
+#, c-format
+msgid "No such URL found: %s"
+msgstr "Nenhum URL encontrado: %s"
+
+#: builtin/remote.c:1497
+msgid "Will not delete all non-push URLs"
+msgstr ""
+
#: builtin/reset.c:33
msgid "mixed"
msgstr "mistura"
msgid "hard"
msgstr "forte"
+#: builtin/reset.c:33
+msgid "merge"
+msgstr "juntar"
+
#: builtin/reset.c:33
msgid "keep"
msgstr "manter"
msgstr ""
#: builtin/revert.c:70
-#: builtin/revert.c:91
+#: builtin/revert.c:92
#, c-format
msgid "%s: %s cannot be used with %s"
msgstr ""
-#: builtin/revert.c:126
+#: builtin/revert.c:131
msgid "program error"
msgstr "erro do programa"
-#: builtin/revert.c:209
+#: builtin/revert.c:221
msgid "revert failed"
msgstr "falhou o revert"
-#: builtin/revert.c:224
+#: builtin/revert.c:236
msgid "cherry-pick failed"
msgstr "cherry-pick falhou"
msgid "Missing author: %s"
msgstr "Autor em falta: %s"
-#: builtin/tag.c:58
+#: builtin/tag.c:60
#, c-format
msgid "malformed object at '%s'"
msgstr ""
-#: builtin/tag.c:205
+#: builtin/tag.c:207
#, c-format
msgid "tag name too long: %.*s..."
msgstr ""
-#: builtin/tag.c:210
+#: builtin/tag.c:212
#, c-format
msgid "tag '%s' not found."
msgstr "etiqueta '%s' não foi encontrada."
-#: builtin/tag.c:225
+#: builtin/tag.c:227
#, c-format
msgid "Deleted tag '%s' (was %s)\n"
msgstr ""
-#: builtin/tag.c:237
+#: builtin/tag.c:239
#, c-format
msgid "could not verify the tag '%s'"
msgstr ""
-#: builtin/tag.c:247
+#: builtin/tag.c:249
msgid ""
"\n"
"#\n"
"#\n"
msgstr ""
-#: builtin/tag.c:254
+#: builtin/tag.c:256
msgid ""
"\n"
"#\n"
"#\n"
msgstr ""
-#: builtin/tag.c:294
+#: builtin/tag.c:298
msgid "unable to sign the tag"
msgstr ""
-#: builtin/tag.c:296
+#: builtin/tag.c:300
msgid "unable to write tag file"
msgstr ""
-#: builtin/tag.c:321
+#: builtin/tag.c:325
msgid "bad object type."
msgstr ""
-#: builtin/tag.c:334
+#: builtin/tag.c:338
msgid "tag header too big."
msgstr ""
-#: builtin/tag.c:366
+#: builtin/tag.c:370
msgid "no tag message?"
msgstr "nenhuma mensaje para a etiqueta?"
-#: builtin/tag.c:372
+#: builtin/tag.c:376
#, c-format
msgid "The tag message has been left in %s\n"
msgstr ""
-#: builtin/tag.c:421
+#: builtin/tag.c:425
msgid "switch 'points-at' requires an object"
msgstr ""
-#: builtin/tag.c:423
+#: builtin/tag.c:427
#, c-format
msgid "malformed object name '%s'"
msgstr ""
-#: builtin/tag.c:502
+#: builtin/tag.c:506
+msgid "--column and -n are incompatible"
+msgstr "--column e -n are são incompatíveis"
+
+#: builtin/tag.c:523
msgid "-n option is only allowed with -l."
msgstr ""
-#: builtin/tag.c:504
+#: builtin/tag.c:525
msgid "--contains option is only allowed with -l."
msgstr ""
-#: builtin/tag.c:506
+#: builtin/tag.c:527
msgid "--points-at option is only allowed with -l."
msgstr ""
-#: builtin/tag.c:514
+#: builtin/tag.c:535
msgid "only one -F or -m option is allowed."
msgstr ""
-#: builtin/tag.c:534
+#: builtin/tag.c:555
msgid "too many params"
msgstr "demasiado parametros"
-#: builtin/tag.c:540
+#: builtin/tag.c:561
#, c-format
msgid "'%s' is not a valid tag name."
msgstr ""
-#: builtin/tag.c:545
+#: builtin/tag.c:566
#, c-format
msgid "tag '%s' already exists"
msgstr "etiqueta '%s' já existe"
-#: builtin/tag.c:563
+#: builtin/tag.c:584
#, c-format
msgid "%s: cannot lock the ref"
msgstr ""
-#: builtin/tag.c:565
+#: builtin/tag.c:586
#, c-format
msgid "%s: cannot update the ref"
msgstr ""
-#: builtin/tag.c:567
+#: builtin/tag.c:588
#, c-format
msgid "Updated tag '%s' (was %s)\n"
msgstr ""
-#: git-am.sh:49
+#: git.c:16
+msgid "See 'git help <command>' for more information on a specific command."
+msgstr ""
+
+#: common-cmds.h:8
+msgid "Add file contents to the index"
+msgstr ""
+
+#: common-cmds.h:9
+msgid "Find by binary search the change that introduced a bug"
+msgstr ""
+
+#: common-cmds.h:10
+msgid "List, create, or delete branches"
+msgstr "Listar, criar ou apagar ramas"
+
+#: common-cmds.h:11
+msgid "Checkout a branch or paths to the working tree"
+msgstr ""
+
+#: common-cmds.h:12
+msgid "Clone a repository into a new directory"
+msgstr ""
+
+#: common-cmds.h:13
+msgid "Record changes to the repository"
+msgstr "Gravar alterações para o repositório"
+
+#: common-cmds.h:14
+msgid "Show changes between commits, commit and working tree, etc"
+msgstr ""
+
+#: common-cmds.h:15
+msgid "Download objects and refs from another repository"
+msgstr ""
+
+#: common-cmds.h:16
+msgid "Print lines matching a pattern"
+msgstr ""
+
+#: common-cmds.h:17
+msgid "Create an empty git repository or reinitialize an existing one"
+msgstr ""
+
+#: common-cmds.h:18
+msgid "Show commit logs"
+msgstr "Mostrado logs de commits"
+
+#: common-cmds.h:19
+msgid "Join two or more development histories together"
+msgstr ""
+
+#: common-cmds.h:20
+msgid "Move or rename a file, a directory, or a symlink"
+msgstr ""
+
+#: common-cmds.h:21
+msgid "Fetch from and merge with another repository or a local branch"
+msgstr ""
+
+#: common-cmds.h:22
+msgid "Update remote refs along with associated objects"
+msgstr ""
+
+#: common-cmds.h:23
+msgid "Forward-port local commits to the updated upstream head"
+msgstr ""
+
+#: common-cmds.h:24
+msgid "Reset current HEAD to the specified state"
+msgstr ""
+
+#: common-cmds.h:25
+msgid "Remove files from the working tree and from the index"
+msgstr ""
+
+#: common-cmds.h:26
+msgid "Show various types of objects"
+msgstr ""
+
+#: common-cmds.h:27
+msgid "Show the working tree status"
+msgstr "Mostrar o estado los ramos das árvores de trabalho"
+
+#: common-cmds.h:28
+msgid "Create, list, delete or verify a tag object signed with GPG"
+msgstr ""
+
+#: git-am.sh:50
msgid "You need to set your committer info first"
msgstr "Necessitas primeiro de especificiar os teus dados de committer"
-#: git-am.sh:136
+#: git-am.sh:137
msgid "Repository lacks necessary blobs to fall back on 3-way merge."
msgstr ""
-#: git-am.sh:147
+#: git-am.sh:154
msgid ""
"Did you hand edit your patch?\n"
"It does not apply to blobs recorded in its index."
msgstr ""
-#: git-am.sh:156
+#: git-am.sh:163
msgid "Falling back to patching base and 3-way merge..."
msgstr ""
-#: git-am.sh:268
+#: git-am.sh:275
msgid "Only one StGIT patch series can be applied at once"
msgstr ""
-#: git-am.sh:355
+#: git-am.sh:362
#, sh-format
msgid "Patch format $patch_format is not supported."
msgstr ""
-#: git-am.sh:357
+#: git-am.sh:364
msgid "Patch format detection failed."
msgstr "Falhou a detecção do formato do patch."
-#: git-am.sh:411
+#: git-am.sh:418
msgid "-d option is no longer supported. Do not use."
msgstr ""
-#: git-am.sh:474
+#: git-am.sh:481
#, sh-format
msgid "previous rebase directory $dotest still exists but mbox given."
msgstr ""
-#: git-am.sh:479
+#: git-am.sh:486
msgid "Please make up your mind. --skip or --abort?"
msgstr ""
-#: git-am.sh:506
+#: git-am.sh:513
msgid "Resolve operation not in progress, we are not resuming."
msgstr ""
-#: git-am.sh:572
+#: git-am.sh:579
#, sh-format
msgid "Dirty index: cannot apply patches (dirty: $files)"
msgstr ""
-#: git-am.sh:748
+#: git-am.sh:755
msgid "cannot be interactive without stdin connected to a terminal."
msgstr ""
#. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
#. in your translation. The program will only accept English
#. input at this point.
-#: git-am.sh:759
+#: git-am.sh:766
msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
msgstr "Aplicar? Sim[y]/[n]ão/[e]ditar/[v]er patch/[a]ceitar todos "
-#: git-am.sh:795
+#: git-am.sh:802
#, sh-format
msgid "Applying: $FIRSTLINE"
msgstr "Aplicando: $FIRSTLINE"
-#: git-am.sh:840
+#: git-am.sh:847
msgid "No changes -- Patch already applied."
msgstr "Nenhuma mudança -- Já foi aplicado o patch."
-#: git-am.sh:866
+#: git-am.sh:873
msgid "applying to an empty history"
msgstr ""
#: git-bisect.sh:474
msgid "We are not bisecting."
-msgstr ""
+msgstr "Não estamos a bisseccionar."
#: git-pull.sh:21
msgid ""
msgid "cannot strip one component off url '$remoteurl'"
msgstr ""
-#: git-submodule.sh:108
+#: git-submodule.sh:109
#, sh-format
-msgid "No submodule mapping found in .gitmodules for path '$path'"
+msgid "No submodule mapping found in .gitmodules for path '$sm_path'"
msgstr ""
-#: git-submodule.sh:149
+#: git-submodule.sh:150
#, sh-format
-msgid "Clone of '$url' into submodule path '$path' failed"
+msgid "Clone of '$url' into submodule path '$sm_path' failed"
msgstr ""
-#: git-submodule.sh:159
+#: git-submodule.sh:160
#, sh-format
msgid "Gitdir '$a' is part of the submodule path '$b' or vice versa"
msgstr ""
-#: git-submodule.sh:247
+#: git-submodule.sh:249
#, sh-format
msgid "repo URL: '$repo' must be absolute or begin with ./|../"
msgstr ""
-#: git-submodule.sh:264
+#: git-submodule.sh:266
#, sh-format
-msgid "'$path' already exists in the index"
+msgid "'$sm_path' already exists in the index"
msgstr ""
-#: git-submodule.sh:281
+#: git-submodule.sh:283
#, sh-format
-msgid "'$path' already exists and is not a valid git repo"
+msgid "'$sm_path' already exists and is not a valid git repo"
msgstr ""
-#: git-submodule.sh:295
+#: git-submodule.sh:297
#, sh-format
-msgid "Unable to checkout submodule '$path'"
+msgid "Unable to checkout submodule '$sm_path'"
msgstr ""
-#: git-submodule.sh:300
+#: git-submodule.sh:302
#, sh-format
-msgid "Failed to add submodule '$path'"
+msgid "Failed to add submodule '$sm_path'"
msgstr ""
-#: git-submodule.sh:305
+#: git-submodule.sh:307
#, sh-format
-msgid "Failed to register submodule '$path'"
+msgid "Failed to register submodule '$sm_path'"
msgstr ""
-#: git-submodule.sh:347
+#: git-submodule.sh:349
#, sh-format
-msgid "Entering '$prefix$path'"
-msgstr "Entrando '$prefix$path'"
+msgid "Entering '$prefix$sm_path'"
+msgstr "Entrando '$prefix$sm_path'"
-#: git-submodule.sh:359
+#: git-submodule.sh:363
#, sh-format
-msgid "Stopping at '$path'; script returned non-zero status."
+msgid "Stopping at '$sm_path'; script returned non-zero status."
msgstr ""
-#: git-submodule.sh:401
+#: git-submodule.sh:405
#, sh-format
-msgid "No url found for submodule path '$path' in .gitmodules"
+msgid "No url found for submodule path '$sm_path' in .gitmodules"
msgstr ""
-#: git-submodule.sh:410
+#: git-submodule.sh:414
#, sh-format
-msgid "Failed to register url for submodule path '$path'"
+msgid "Failed to register url for submodule path '$sm_path'"
msgstr ""
-#: git-submodule.sh:418
+#: git-submodule.sh:422
#, sh-format
-msgid "Failed to register update mode for submodule path '$path'"
+msgid "Failed to register update mode for submodule path '$sm_path'"
msgstr ""
-#: git-submodule.sh:420
+#: git-submodule.sh:424
#, sh-format
-msgid "Submodule '$name' ($url) registered for path '$path'"
+msgid "Submodule '$name' ($url) registered for path '$sm_path'"
msgstr ""
-#: git-submodule.sh:519
+#: git-submodule.sh:523
#, sh-format
msgid ""
-"Submodule path '$path' not initialized\n"
+"Submodule path '$sm_path' not initialized\n"
"Maybe you want to use 'update --init'?"
msgstr ""
-#: git-submodule.sh:532
+#: git-submodule.sh:536
#, sh-format
-msgid "Unable to find current revision in submodule path '$path'"
+msgid "Unable to find current revision in submodule path '$sm_path'"
msgstr ""
-#: git-submodule.sh:551
+#: git-submodule.sh:555
#, sh-format
-msgid "Unable to fetch in submodule path '$path'"
+msgid "Unable to fetch in submodule path '$sm_path'"
msgstr ""
-#: git-submodule.sh:565
+#: git-submodule.sh:569
#, sh-format
-msgid "Unable to rebase '$sha1' in submodule path '$path'"
+msgid "Unable to rebase '$sha1' in submodule path '$sm_path'"
msgstr ""
-#: git-submodule.sh:566
+#: git-submodule.sh:570
#, sh-format
-msgid "Submodule path '$path': rebased into '$sha1'"
+msgid "Submodule path '$sm_path': rebased into '$sha1'"
msgstr ""
-#: git-submodule.sh:571
+#: git-submodule.sh:575
#, sh-format
-msgid "Unable to merge '$sha1' in submodule path '$path'"
+msgid "Unable to merge '$sha1' in submodule path '$sm_path'"
msgstr ""
-#: git-submodule.sh:572
+#: git-submodule.sh:576
#, sh-format
-msgid "Submodule path '$path': merged in '$sha1'"
+msgid "Submodule path '$sm_path': merged in '$sha1'"
msgstr ""
-#: git-submodule.sh:577
+#: git-submodule.sh:581
#, sh-format
-msgid "Unable to checkout '$sha1' in submodule path '$path'"
+msgid "Unable to checkout '$sha1' in submodule path '$sm_path'"
msgstr ""
-#: git-submodule.sh:578
+#: git-submodule.sh:582
#, sh-format
-msgid "Submodule path '$path': checked out '$sha1'"
+msgid "Submodule path '$sm_path': checked out '$sha1'"
msgstr ""
-#: git-submodule.sh:600
-#: git-submodule.sh:923
+#: git-submodule.sh:604
+#: git-submodule.sh:927
#, sh-format
-msgid "Failed to recurse into submodule path '$path'"
+msgid "Failed to recurse into submodule path '$sm_path'"
msgstr ""
-#: git-submodule.sh:708
+#: git-submodule.sh:712
msgid "--"
msgstr "--"
-#: git-submodule.sh:766
+#: git-submodule.sh:770
#, sh-format
msgid " Warn: $name doesn't contain commit $sha1_src"
msgstr ""
-#: git-submodule.sh:769
+#: git-submodule.sh:773
#, sh-format
msgid " Warn: $name doesn't contain commit $sha1_dst"
msgstr ""
-#: git-submodule.sh:772
+#: git-submodule.sh:776
#, sh-format
msgid " Warn: $name doesn't contain commits $sha1_src and $sha1_dst"
msgstr ""
-#: git-submodule.sh:797
+#: git-submodule.sh:801
msgid "blob"
msgstr "blob"
-#: git-submodule.sh:798
+#: git-submodule.sh:802
msgid "submodule"
msgstr "submódulos"
-#: git-submodule.sh:969
+#: git-submodule.sh:973
#, sh-format
msgid "Synchronizing submodule url for '$name'"
msgstr ""
+#~ msgid "cherry-pick"
+#~ msgstr "cherry-pick"
+
+#~ msgid "Please enter the commit message for your changes."
+#~ msgstr "Por favor insira a mensagem de commit das suas alterações."
+
+#~ msgid "Too many options specified"
+#~ msgstr "Demasiadas opções especificadas"
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2012-04-28 20:17+0800\n"
+"POT-Creation-Date: 2012-05-15 06:31+0800\n"
"PO-Revision-Date: 2012-01-30 00:00+0800\n"
"Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n"
"Language-Team: GitHub <https://github.com/gotgit/git/>\n"
msgid_plural ", %d deletions(-)"
msgstr[0] ",删除 %d 行(-)"
-#: diff.c:3435
+#: diff.c:3439
#, c-format
msgid ""
"Failed to parse --dirstat/-X option parameter:\n"
msgid "Invalid %s: '%s'"
msgstr "无效的 %s:'%s'"
-#: builtin/gc.c:78
-msgid "Too many options specified"
-msgstr "指定了太多的选项"
-
-#: builtin/gc.c:103
+#: builtin/gc.c:90
#, c-format
msgid "insanely long object directory %.*s"
msgstr "不正常的长对象目录 %.*s"
-#: builtin/gc.c:223
+#: builtin/gc.c:221
#, c-format
msgid "Auto packing the repository for optimum performance.\n"
msgstr "自动打包版本库以求最佳性能。\n"
-#: builtin/gc.c:226
+#: builtin/gc.c:224
#, c-format
msgid ""
"Auto packing the repository for optimum performance. You may also\n"
"自动打包版本库以求最佳性能。您还可以手动运行 \"git gc\"。\n"
"参见 \"git help gc\" 以获取更多信息。\n"
-#: builtin/gc.c:256
+#: builtin/gc.c:251
msgid ""
"There are too many unreachable loose objects; run 'git prune' to remove them."
msgstr "有太多不可达的松散对象,运行 'git prune' 删除它们。"
msgid "Unknown subcommand: %s"
msgstr "未知子命令:%s"
-#: builtin/pack-objects.c:2310
+#: builtin/pack-objects.c:2315
#, c-format
msgid "unsupported index version %s"
msgstr "不支持的索引版本 %s"
-#: builtin/pack-objects.c:2314
+#: builtin/pack-objects.c:2319
#, c-format
msgid "bad index version '%s'"
msgstr "坏的索引版本 '%s'"
-#: builtin/pack-objects.c:2322
+#: builtin/pack-objects.c:2342
#, c-format
msgid "option %s does not accept negative form"
msgstr "选项 %s 不接受否定格式"
-#: builtin/pack-objects.c:2326
+#: builtin/pack-objects.c:2346
#, c-format
msgid "unable to parse value '%s' for option %s"
msgstr "不能解析值 '%s' 针对于选项 %s"
"before pushing again.\n"
"See the 'Note about fast-forwards' in 'git push --help' for details."
msgstr ""
-"更新被拒绝,因为您当前分支落后于对应的远程分支。再次推送前先与远程变更\n"
-"å\90\88并ï¼\88å¦\82 'git pull'ï¼\89ã\80\82\n"
-"详见 'git push --help' 中的 'Note about fast-forwards' 的内容。"
+"更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。\n"
+"å\86\8d次æ\8e¨é\80\81å\89\8dï¼\8cå\85\88ä¸\8eè¿\9cç¨\8bå\8f\98æ\9b´å\90\88并ï¼\88å¦\82 'git pull'ï¼\89ã\80\82详è§\81\n"
+"'git push --help' 中的 'Note about fast-forwards' 小节。"
#: builtin/push.c:144
msgid ""
"specify branches to push or set the 'push.default' configuration\n"
"variable to 'current' or 'upstream' to push only the current branch."
msgstr ""
-"更新被拒绝,因为推送的一个分支落后于对应的远程分支。如果您并非有意推送\n"
-"该分支,您可以指定要推送的分支或者设置 'push.default' 配置变量为\n"
-"'current' 或 'upstream' 以便只推送当前分支。"
+"更新被拒绝,因为推送的一个分支的最新提交落后于其对应的远程分支。\n"
+"如果您并非有意推送该分支,您可以在推送时指定要推送的分支,或者将\n"
+"配置变量 'push.default' 设置为 'current' 或 'upstream' 以便只推送"
+"当前分支。"
#: builtin/push.c:150
msgid ""
"(e.g. 'git pull') before pushing again.\n"
"See the 'Note about fast-forwards' in 'git push --help' for details."
msgstr ""
-"更新被拒绝,因为推送的一个分支落后于对应的远程分支。检出该分支并在再次\n"
-"æ\8e¨é\80\81ä¹\8bå\89\8dä¸\8eè¿\9cç¨\8bå\8f\98æ\9b´å\90\88并ï¼\88å¦\82 'git pull'ï¼\89ã\80\82\n"
-"详见 'git push --help' 中的 'Note about fast-forwards' 的内容。"
+"更新被拒绝,因为推送的一个分支的最新提交落后于其对应的远程分支。\n"
+"æ£\80å\87ºè¯¥å\88\86æ\94¯å¹¶ä¸\8eè¿\9cç¨\8bå\8f\98æ\9b´å\90\88并ï¼\88å¦\82 'git pull'ï¼\89ï¼\8cç\84¶å\90\8eå\86\8dæ\8e¨é\80\81ã\80\82详è§\81\n"
+"'git push --help' 中的 'Note about fast-forwards' 小节。"
#: builtin/push.c:190
#, c-format
msgid "--all and --mirror are incompatible"
msgstr "--all 和 --mirror 不兼容"
-#: builtin/push.c:342
+#: builtin/push.c:334
msgid "--delete is incompatible with --all, --mirror and --tags"
msgstr "--delete 与 --all、--mirror 及 --tags 不兼容"
-#: builtin/push.c:344
+#: builtin/push.c:336
msgid "--delete doesn't make sense without any refs"
msgstr "--delete 未接任何引用没有意义"
msgid "Gitdir '$a' is part of the submodule path '$b' or vice versa"
msgstr "Gitdir '$a' 在子模组路径 '$b' 之下或者相反"
-#: git-submodule.sh:249
+#: git-submodule.sh:248
#, sh-format
msgid "repo URL: '$repo' must be absolute or begin with ./|../"
msgstr "版本库URL:'$repo' 必须是绝对路径或以 ./|../ 起始"
-#: git-submodule.sh:266
+#: git-submodule.sh:265
#, sh-format
msgid "'$sm_path' already exists in the index"
msgstr "'$sm_path' 已经存在于索引中"
-#: git-submodule.sh:283
+#: git-submodule.sh:282
#, sh-format
msgid "'$sm_path' already exists and is not a valid git repo"
msgstr "'$sm_path' 已存在且不是一个有效的 git 版本库"
-#: git-submodule.sh:297
+#: git-submodule.sh:296
#, sh-format
msgid "Unable to checkout submodule '$sm_path'"
msgstr "不能检出子模组 '$sm_path'"
-#: git-submodule.sh:302
+#: git-submodule.sh:301
#, sh-format
msgid "Failed to add submodule '$sm_path'"
msgstr "无法添加子模组 '$sm_path'"
-#: git-submodule.sh:307
+#: git-submodule.sh:306
#, sh-format
msgid "Failed to register submodule '$sm_path'"
msgstr "无法注册子模组 '$sm_path'"
-#: git-submodule.sh:349
+#: git-submodule.sh:348
#, sh-format
msgid "Entering '$prefix$sm_path'"
msgstr "正在进入 '$prefix$sm_path'"
-#: git-submodule.sh:363
+#: git-submodule.sh:360
#, sh-format
msgid "Stopping at '$sm_path'; script returned non-zero status."
msgstr "停止于 '$sm_path',脚本返回非零值。"
-#: git-submodule.sh:405
+#: git-submodule.sh:402
#, sh-format
msgid "No url found for submodule path '$sm_path' in .gitmodules"
msgstr "在 .gitmodules 中未找到子模组路径 '$sm_path' 的 url"
-#: git-submodule.sh:414
+#: git-submodule.sh:411
#, sh-format
msgid "Failed to register url for submodule path '$sm_path'"
msgstr "无法为子模组路径 '$sm_path' 注册 url"
-#: git-submodule.sh:422
+#: git-submodule.sh:419
#, sh-format
msgid "Failed to register update mode for submodule path '$sm_path'"
msgstr "无法为子模组路径 '$sm_path' 注册更新模式"
-#: git-submodule.sh:424
+#: git-submodule.sh:421
#, sh-format
msgid "Submodule '$name' ($url) registered for path '$sm_path'"
msgstr "子模组 '$name' ($url) 已为路径 '$sm_path' 注册"
-#: git-submodule.sh:523
+#: git-submodule.sh:520
#, sh-format
msgid ""
"Submodule path '$sm_path' not initialized\n"
"子模组路径 '$sm_path' 没有初始化\n"
"也许您想用 'update --init'?"
-#: git-submodule.sh:536
+#: git-submodule.sh:533
#, sh-format
msgid "Unable to find current revision in submodule path '$sm_path'"
msgstr "无法在子模组路径 '$sm_path' 中找到当前版本"
-#: git-submodule.sh:555
+#: git-submodule.sh:552
#, sh-format
msgid "Unable to fetch in submodule path '$sm_path'"
msgstr "无法在子模组路径 '$sm_path' 中获取"
-#: git-submodule.sh:569
+#: git-submodule.sh:566
#, sh-format
msgid "Unable to rebase '$sha1' in submodule path '$sm_path'"
msgstr "无法在子模组路径 '$sm_path' 中变基 '$sha1'"
-#: git-submodule.sh:570
+#: git-submodule.sh:567
#, sh-format
msgid "Submodule path '$sm_path': rebased into '$sha1'"
msgstr "子模组路径 '$sm_path':变基至 '$sha1'"
-#: git-submodule.sh:575
+#: git-submodule.sh:572
#, sh-format
msgid "Unable to merge '$sha1' in submodule path '$sm_path'"
msgstr "无法合并 '$sha1' 到子模组路径 '$sm_path' 中"
-#: git-submodule.sh:576
+#: git-submodule.sh:573
#, sh-format
msgid "Submodule path '$sm_path': merged in '$sha1'"
msgstr "子模组路径 '$sm_path':已合并入 '$sha1'"
-#: git-submodule.sh:581
+#: git-submodule.sh:578
#, sh-format
msgid "Unable to checkout '$sha1' in submodule path '$sm_path'"
msgstr "无法在子模组路径 '$sm_path' 中检出 '$sha1'"
-#: git-submodule.sh:582
+#: git-submodule.sh:579
#, sh-format
msgid "Submodule path '$sm_path': checked out '$sha1'"
msgstr "子模组路径 '$sm_path':检出 '$sha1'"
-#: git-submodule.sh:604 git-submodule.sh:927
+#: git-submodule.sh:601 git-submodule.sh:924
#, sh-format
msgid "Failed to recurse into submodule path '$sm_path'"
msgstr "无法递归进子模组路径 '$sm_path'"
-#: git-submodule.sh:712
+#: git-submodule.sh:709
msgid "--"
msgstr "--"
# 译者:注意保持前导空格
-#: git-submodule.sh:770
+#: git-submodule.sh:767
#, sh-format
msgid " Warn: $name doesn't contain commit $sha1_src"
msgstr " 警告:$name 未包含提交 $sha1_src"
# 译者:注意保持前导空格
-#: git-submodule.sh:773
+#: git-submodule.sh:770
#, sh-format
msgid " Warn: $name doesn't contain commit $sha1_dst"
msgstr " 警告:$name 未包含提交 $sha1_dst"
# 译者:注意保持前导空格
-#: git-submodule.sh:776
+#: git-submodule.sh:773
#, sh-format
msgid " Warn: $name doesn't contain commits $sha1_src and $sha1_dst"
msgstr " 警告:$name 未包含提交 $sha1_src 和 $sha1_dst"
-#: git-submodule.sh:801
+#: git-submodule.sh:798
msgid "blob"
msgstr "blob"
-#: git-submodule.sh:802
+#: git-submodule.sh:799
msgid "submodule"
msgstr "子模组"
-#: git-submodule.sh:973
+#: git-submodule.sh:970
#, sh-format
msgid "Synchronizing submodule url for '$name'"
msgstr "为 '$name' 同步子模组 url"
+
+#~ msgid "Too many options specified"
+#~ msgstr "指定了太多的选项"
int key_len = strlen(key);
const char *line = commit->buffer;
- for (;;) {
+ while (line) {
const char *eol = strchr(line, '\n'), *next;
if (line == eol)
return NULL;
if (!eol) {
+ warning("malformed commit (header is missing newline): %s",
+ sha1_to_hex(commit->object.sha1));
eol = line + strlen(line);
next = NULL;
} else
}
line = next;
}
+ return NULL;
}
static char *replace_encoding_header(char *buf, const char *encoding)
mail_end = s.mail_end;
if (part == 'N' || part == 'E') { /* mailmap lookup */
- strlcpy(person_name, name_start, name_end - name_start + 1);
- strlcpy(person_mail, mail_start, mail_end - mail_start + 1);
+ snprintf(person_name, sizeof(person_name), "%.*s",
+ (int)(name_end - name_start), name_start);
+ snprintf(person_mail, sizeof(person_mail), "%.*s",
+ (int)(mail_end - mail_start), mail_start);
mailmap_name(person_mail, sizeof(person_mail), person_name, sizeof(person_name));
name_start = person_name;
name_end = name_start + strlen(person_name);
get_reflog_selector(sb,
c->pretty_ctx->reflog_info,
c->pretty_ctx->date_mode,
+ c->pretty_ctx->date_mode_explicit,
(placeholder[1] == 'd'));
return 2;
case 's': /* reflog message */
}
struct commit_reflog {
- int flag, recno;
+ int recno;
+ enum selector_type {
+ SELECTOR_NONE,
+ SELECTOR_INDEX,
+ SELECTOR_DATE
+ } selector;
struct complete_reflogs *reflogs;
};
struct complete_reflogs *reflogs;
char *branch, *at = strchr(name, '@');
struct commit_reflog *commit_reflog;
+ enum selector_type selector = SELECTOR_NONE;
if (commit->object.flags & UNINTERESTING)
die ("Cannot walk reflogs for %s", name);
if (*ep != '}') {
recno = -1;
timestamp = approxidate(at + 2);
+ selector = SELECTOR_DATE;
}
+ else
+ selector = SELECTOR_INDEX;
} else
recno = 0;
commit_reflog = xcalloc(sizeof(struct commit_reflog), 1);
if (recno < 0) {
- commit_reflog->flag = 1;
commit_reflog->recno = get_reflog_recno_by_time(reflogs, timestamp);
if (commit_reflog->recno < 0) {
free(branch);
}
} else
commit_reflog->recno = reflogs->nr - recno - 1;
+ commit_reflog->selector = selector;
commit_reflog->reflogs = reflogs;
add_commit_info(commit, commit_reflog, &info->reflogs);
void get_reflog_selector(struct strbuf *sb,
struct reflog_walk_info *reflog_info,
- enum date_mode dmode,
+ enum date_mode dmode, int force_date,
int shorten)
{
struct commit_reflog *commit_reflog = reflog_info->last_commit_reflog;
}
strbuf_addf(sb, "%s@{", printed_ref);
- if (commit_reflog->flag || dmode) {
+ if (commit_reflog->selector == SELECTOR_DATE ||
+ (commit_reflog->selector == SELECTOR_NONE && force_date)) {
info = &commit_reflog->reflogs->items[commit_reflog->recno+1];
strbuf_addstr(sb, show_date(info->timestamp, info->tz, dmode));
} else {
}
void show_reflog_message(struct reflog_walk_info *reflog_info, int oneline,
- enum date_mode dmode)
+ enum date_mode dmode, int force_date)
{
if (reflog_info && reflog_info->last_commit_reflog) {
struct commit_reflog *commit_reflog = reflog_info->last_commit_reflog;
struct strbuf selector = STRBUF_INIT;
info = &commit_reflog->reflogs->items[commit_reflog->recno+1];
- get_reflog_selector(&selector, reflog_info, dmode, 0);
+ get_reflog_selector(&selector, reflog_info, dmode, force_date, 0);
if (oneline) {
printf("%s: %s", selector.buf, info->message);
}
extern void fake_reflog_parent(struct reflog_walk_info *info,
struct commit *commit);
extern void show_reflog_message(struct reflog_walk_info *info, int,
- enum date_mode);
+ enum date_mode, int force_date);
extern void get_reflog_message(struct strbuf *sb,
struct reflog_walk_info *reflog_info);
extern const char *get_reflog_ident(struct reflog_walk_info *reflog_info);
extern void get_reflog_selector(struct strbuf *sb,
struct reflog_walk_info *reflog_info,
- enum date_mode dmode,
+ enum date_mode dmode, int force_date,
int shorten);
#endif
struct ref_entry;
+/*
+ * Information used (along with the information in ref_entry) to
+ * describe a single cached reference. This data structure only
+ * occurs embedded in a union in struct ref_entry, and only when
+ * (ref_entry->flag & REF_DIR) is zero.
+ */
struct ref_value {
unsigned char sha1[20];
unsigned char peeled[20];
};
+struct ref_cache;
+
+/*
+ * Information used (along with the information in ref_entry) to
+ * describe a level in the hierarchy of references. This data
+ * structure only occurs embedded in a union in struct ref_entry, and
+ * only when (ref_entry.flag & REF_DIR) is set. In that case,
+ * (ref_entry.flag & REF_INCOMPLETE) determines whether the references
+ * in the directory have already been read:
+ *
+ * (ref_entry.flag & REF_INCOMPLETE) unset -- a directory of loose
+ * or packed references, already read.
+ *
+ * (ref_entry.flag & REF_INCOMPLETE) set -- a directory of loose
+ * references that hasn't been read yet (nor has any of its
+ * subdirectories).
+ *
+ * Entries within a directory are stored within a growable array of
+ * pointers to ref_entries (entries, nr, alloc). Entries 0 <= i <
+ * sorted are sorted by their component name in strcmp() order and the
+ * remaining entries are unsorted.
+ *
+ * Loose references are read lazily, one directory at a time. When a
+ * directory of loose references is read, then all of the references
+ * in that directory are stored, and REF_INCOMPLETE stubs are created
+ * for any subdirectories, but the subdirectories themselves are not
+ * read. The reading is triggered by get_ref_dir().
+ */
struct ref_dir {
int nr, alloc;
*/
int sorted;
+ /* A pointer to the ref_cache that contains this ref_dir. */
+ struct ref_cache *ref_cache;
+
struct ref_entry **entries;
};
/* ISSYMREF=0x01, ISPACKED=0x02, and ISBROKEN=0x04 are public interfaces */
#define REF_KNOWS_PEELED 0x08
+
+/* ref_entry represents a directory of references */
#define REF_DIR 0x10
+/*
+ * Entry has not yet been read from disk (used only for REF_DIR
+ * entries representing loose references)
+ */
+#define REF_INCOMPLETE 0x20
+
/*
* A ref_entry represents either a reference or a "subdirectory" of
- * references. Each directory in the reference namespace is
- * represented by a ref_entry with (flags & REF_DIR) set and
- * containing a subdir member that holds the entries in that
- * directory. References are represented by a ref_entry with (flags &
- * REF_DIR) unset and a value member that describes the reference's
- * value. The flag member is at the ref_entry level, but it is also
- * needed to interpret the contents of the value field (in other
- * words, a ref_value object is not very much use without the
- * enclosing ref_entry).
+ * references.
+ *
+ * Each directory in the reference namespace is represented by a
+ * ref_entry with (flags & REF_DIR) set and containing a subdir member
+ * that holds the entries in that directory that have been read so
+ * far. If (flags & REF_INCOMPLETE) is set, then the directory and
+ * its subdirectories haven't been read yet. REF_INCOMPLETE is only
+ * used for loose reference directories.
+ *
+ * References are represented by a ref_entry with (flags & REF_DIR)
+ * unset and a value member that describes the reference's value. The
+ * flag member is at the ref_entry level, but it is also needed to
+ * interpret the contents of the value field (in other words, a
+ * ref_value object is not very much use without the enclosing
+ * ref_entry).
*
* Reference names cannot end with slash and directories' names are
* always stored with a trailing slash (except for the top-level
char name[FLEX_ARRAY];
};
+static void read_loose_refs(const char *dirname, struct ref_dir *dir);
+
+static struct ref_dir *get_ref_dir(struct ref_entry *entry)
+{
+ struct ref_dir *dir;
+ assert(entry->flag & REF_DIR);
+ dir = &entry->u.subdir;
+ if (entry->flag & REF_INCOMPLETE) {
+ read_loose_refs(entry->name, dir);
+ entry->flag &= ~REF_INCOMPLETE;
+ }
+ return dir;
+}
+
static struct ref_entry *create_ref_entry(const char *refname,
const unsigned char *sha1, int flag,
int check_name)
static void free_ref_entry(struct ref_entry *entry)
{
if (entry->flag & REF_DIR)
- clear_ref_dir(&entry->u.subdir);
+ clear_ref_dir(get_ref_dir(entry));
free(entry);
}
{
ALLOC_GROW(dir->entries, dir->nr + 1, dir->alloc);
dir->entries[dir->nr++] = entry;
+ /* optimize for the case that entries are added in order */
+ if (dir->nr == 1 ||
+ (dir->nr == dir->sorted + 1 &&
+ strcmp(dir->entries[dir->nr - 2]->name,
+ dir->entries[dir->nr - 1]->name) < 0))
+ dir->sorted = dir->nr;
}
/*
* dirname is the name of the directory with a trailing slash (e.g.,
* "refs/heads/") or "" for the top-level directory.
*/
-static struct ref_entry *create_dir_entry(const char *dirname)
+static struct ref_entry *create_dir_entry(struct ref_cache *ref_cache,
+ const char *dirname, int incomplete)
{
struct ref_entry *direntry;
int len = strlen(dirname);
direntry = xcalloc(1, sizeof(struct ref_entry) + len + 1);
memcpy(direntry->name, dirname, len + 1);
- direntry->flag = REF_DIR;
+ direntry->u.subdir.ref_cache = ref_cache;
+ direntry->flag = REF_DIR | (incomplete ? REF_INCOMPLETE : 0);
return direntry;
}
/*
* Return the entry with the given refname from the ref_dir
* (non-recursively), sorting dir if necessary. Return NULL if no
- * such entry is found.
+ * such entry is found. dir must already be complete.
*/
static struct ref_entry *search_ref_dir(struct ref_dir *dir, const char *refname)
{
return *r;
}
+/*
+ * Search for a directory entry directly within dir (without
+ * recursing). Sort dir if necessary. subdirname must be a directory
+ * name (i.e., end in '/'). If mkdir is set, then create the
+ * directory if it is missing; otherwise, return NULL if the desired
+ * directory cannot be found. dir must already be complete.
+ */
+static struct ref_dir *search_for_subdir(struct ref_dir *dir,
+ const char *subdirname, int mkdir)
+{
+ struct ref_entry *entry = search_ref_dir(dir, subdirname);
+ if (!entry) {
+ if (!mkdir)
+ return NULL;
+ /*
+ * Since dir is complete, the absence of a subdir
+ * means that the subdir really doesn't exist;
+ * therefore, create an empty record for it but mark
+ * the record complete.
+ */
+ entry = create_dir_entry(dir->ref_cache, subdirname, 0);
+ add_entry_to_dir(dir, entry);
+ }
+ return get_ref_dir(entry);
+}
+
/*
* If refname is a reference name, find the ref_dir within the dir
* tree that should hold refname. If refname is a directory name
* (i.e., ends in '/'), then return that ref_dir itself. dir must
- * represent the top-level directory. Sort ref_dirs and recurse into
- * subdirectories as necessary. If mkdir is set, then create any
- * missing directories; otherwise, return NULL if the desired
- * directory cannot be found.
+ * represent the top-level directory and must already be complete.
+ * Sort ref_dirs and recurse into subdirectories as necessary. If
+ * mkdir is set, then create any missing directories; otherwise,
+ * return NULL if the desired directory cannot be found.
*/
static struct ref_dir *find_containing_dir(struct ref_dir *dir,
const char *refname, int mkdir)
{
- char *refname_copy = xstrdup(refname);
- char *slash;
- struct ref_entry *entry;
- for (slash = strchr(refname_copy, '/'); slash; slash = strchr(slash + 1, '/')) {
- char tmp = slash[1];
- slash[1] = '\0';
- entry = search_ref_dir(dir, refname_copy);
- if (!entry) {
- if (!mkdir) {
- dir = NULL;
- break;
- }
- entry = create_dir_entry(refname_copy);
- add_entry_to_dir(dir, entry);
+ struct strbuf dirname;
+ const char *slash;
+ strbuf_init(&dirname, PATH_MAX);
+ for (slash = strchr(refname, '/'); slash; slash = strchr(slash + 1, '/')) {
+ struct ref_dir *subdir;
+ strbuf_add(&dirname,
+ refname + dirname.len,
+ (slash + 1) - (refname + dirname.len));
+ subdir = search_for_subdir(dir, dirname.buf, mkdir);
+ if (!subdir) {
+ dir = NULL;
+ break;
}
- slash[1] = tmp;
- assert(entry->flag & REF_DIR);
- dir = &entry->u.subdir;
+ dir = subdir;
}
- free(refname_copy);
+ strbuf_release(&dirname);
return dir;
}
struct ref_entry *entry = dir->entries[i];
int retval;
if (entry->flag & REF_DIR) {
- sort_ref_dir(&entry->u.subdir);
- retval = do_for_each_ref_in_dir(&entry->u.subdir, 0,
+ struct ref_dir *subdir = get_ref_dir(entry);
+ sort_ref_dir(subdir);
+ retval = do_for_each_ref_in_dir(subdir, 0,
base, fn, trim, flags, cb_data);
} else {
retval = do_one_ref(base, fn, trim, flags, cb_data, entry);
if (cmp == 0) {
if ((e1->flag & REF_DIR) && (e2->flag & REF_DIR)) {
/* Both are directories; descend them in parallel. */
- sort_ref_dir(&e1->u.subdir);
- sort_ref_dir(&e2->u.subdir);
+ struct ref_dir *subdir1 = get_ref_dir(e1);
+ struct ref_dir *subdir2 = get_ref_dir(e2);
+ sort_ref_dir(subdir1);
+ sort_ref_dir(subdir2);
retval = do_for_each_ref_in_dirs(
- &e1->u.subdir, &e2->u.subdir,
+ subdir1, subdir2,
base, fn, trim, flags, cb_data);
i1++;
i2++;
i2++;
}
if (e->flag & REF_DIR) {
- sort_ref_dir(&e->u.subdir);
+ struct ref_dir *subdir = get_ref_dir(e);
+ sort_ref_dir(subdir);
retval = do_for_each_ref_in_dir(
- &e->u.subdir, 0,
+ subdir, 0,
base, fn, trim, flags, cb_data);
} else {
retval = do_one_ref(base, fn, trim, flags, cb_data, e);
*/
static struct ref_cache {
struct ref_cache *next;
- char did_loose;
- char did_packed;
- struct ref_dir loose;
- struct ref_dir packed;
+ struct ref_entry *loose;
+ struct ref_entry *packed;
/* The submodule name, or "" for the main repo. */
char name[FLEX_ARRAY];
} *ref_cache;
static void clear_packed_ref_cache(struct ref_cache *refs)
{
- if (refs->did_packed)
- clear_ref_dir(&refs->packed);
- refs->did_packed = 0;
+ if (refs->packed) {
+ free_ref_entry(refs->packed);
+ refs->packed = NULL;
+ }
}
static void clear_loose_ref_cache(struct ref_cache *refs)
{
- if (refs->did_loose)
- clear_ref_dir(&refs->loose);
- refs->did_loose = 0;
+ if (refs->loose) {
+ free_ref_entry(refs->loose);
+ refs->loose = NULL;
+ }
}
static struct ref_cache *create_ref_cache(const char *submodule)
static struct ref_dir *get_packed_refs(struct ref_cache *refs)
{
- if (!refs->did_packed) {
+ if (!refs->packed) {
const char *packed_refs_file;
FILE *f;
+ refs->packed = create_dir_entry(refs, "", 0);
if (*refs->name)
packed_refs_file = git_path_submodule(refs->name, "packed-refs");
else
packed_refs_file = git_path("packed-refs");
f = fopen(packed_refs_file, "r");
if (f) {
- read_packed_refs(f, &refs->packed);
+ read_packed_refs(f, get_ref_dir(refs->packed));
fclose(f);
}
- refs->did_packed = 1;
}
- return &refs->packed;
+ return get_ref_dir(refs->packed);
}
void add_packed_ref(const char *refname, const unsigned char *sha1)
create_ref_entry(refname, sha1, REF_ISPACKED, 1));
}
-static void get_ref_dir(struct ref_cache *refs, const char *base,
- struct ref_dir *dir)
+/*
+ * Read the loose references from the namespace dirname into dir
+ * (without recursing). dirname must end with '/'. dir must be the
+ * directory entry corresponding to dirname.
+ */
+static void read_loose_refs(const char *dirname, struct ref_dir *dir)
{
+ struct ref_cache *refs = dir->ref_cache;
DIR *d;
const char *path;
+ struct dirent *de;
+ int dirnamelen = strlen(dirname);
+ struct strbuf refname;
if (*refs->name)
- path = git_path_submodule(refs->name, "%s", base);
+ path = git_path_submodule(refs->name, "%s", dirname);
else
- path = git_path("%s", base);
+ path = git_path("%s", dirname);
d = opendir(path);
- if (d) {
- struct dirent *de;
- int baselen = strlen(base);
- char *refname = xmalloc(baselen + 257);
-
- memcpy(refname, base, baselen);
- if (baselen && base[baselen-1] != '/')
- refname[baselen++] = '/';
-
- while ((de = readdir(d)) != NULL) {
- unsigned char sha1[20];
- struct stat st;
- int flag;
- int namelen;
- const char *refdir;
-
- if (de->d_name[0] == '.')
- continue;
- namelen = strlen(de->d_name);
- if (namelen > 255)
- continue;
- if (has_extension(de->d_name, ".lock"))
- continue;
- memcpy(refname + baselen, de->d_name, namelen+1);
- refdir = *refs->name
- ? git_path_submodule(refs->name, "%s", refname)
- : git_path("%s", refname);
- if (stat(refdir, &st) < 0)
- continue;
- if (S_ISDIR(st.st_mode)) {
- get_ref_dir(refs, refname, dir);
- continue;
- }
+ if (!d)
+ return;
+
+ strbuf_init(&refname, dirnamelen + 257);
+ strbuf_add(&refname, dirname, dirnamelen);
+
+ while ((de = readdir(d)) != NULL) {
+ unsigned char sha1[20];
+ struct stat st;
+ int flag;
+ const char *refdir;
+
+ if (de->d_name[0] == '.')
+ continue;
+ if (has_extension(de->d_name, ".lock"))
+ continue;
+ strbuf_addstr(&refname, de->d_name);
+ refdir = *refs->name
+ ? git_path_submodule(refs->name, "%s", refname.buf)
+ : git_path("%s", refname.buf);
+ if (stat(refdir, &st) < 0) {
+ ; /* silently ignore */
+ } else if (S_ISDIR(st.st_mode)) {
+ strbuf_addch(&refname, '/');
+ add_entry_to_dir(dir,
+ create_dir_entry(refs, refname.buf, 1));
+ } else {
if (*refs->name) {
hashclr(sha1);
flag = 0;
- if (resolve_gitlink_ref(refs->name, refname, sha1) < 0) {
+ if (resolve_gitlink_ref(refs->name, refname.buf, sha1) < 0) {
hashclr(sha1);
flag |= REF_ISBROKEN;
}
- } else if (read_ref_full(refname, sha1, 1, &flag)) {
+ } else if (read_ref_full(refname.buf, sha1, 1, &flag)) {
hashclr(sha1);
flag |= REF_ISBROKEN;
}
- add_ref(dir, create_ref_entry(refname, sha1, flag, 1));
+ add_entry_to_dir(dir,
+ create_ref_entry(refname.buf, sha1, flag, 1));
}
- free(refname);
- closedir(d);
+ strbuf_setlen(&refname, dirnamelen);
}
+ strbuf_release(&refname);
+ closedir(d);
}
static struct ref_dir *get_loose_refs(struct ref_cache *refs)
{
- if (!refs->did_loose) {
- get_ref_dir(refs, "refs", &refs->loose);
- refs->did_loose = 1;
+ if (!refs->loose) {
+ /*
+ * Mark the top-level directory complete because we
+ * are about to read the only subdirectory that can
+ * hold references:
+ */
+ refs->loose = create_dir_entry(refs, "", 0);
+ /*
+ * Create an incomplete entry for "refs/":
+ */
+ add_entry_to_dir(get_ref_dir(refs->loose),
+ create_dir_entry(refs, "refs/", 1));
}
- return &refs->loose;
+ return get_ref_dir(refs->loose);
}
/* We allow "recursive" symbolic refs. Only within reason, though */
return for_each_recent_reflog_ent(refname, fn, 0, cb_data);
}
-static int do_for_each_reflog(const char *base, each_ref_fn fn, void *cb_data)
+/*
+ * Call fn for each reflog in the namespace indicated by name. name
+ * must be empty or end with '/'. Name will be used as a scratch
+ * space, but its contents will be restored before return.
+ */
+static int do_for_each_reflog(struct strbuf *name, each_ref_fn fn, void *cb_data)
{
- DIR *d = opendir(git_path("logs/%s", base));
+ DIR *d = opendir(git_path("logs/%s", name->buf));
int retval = 0;
+ struct dirent *de;
+ int oldlen = name->len;
- if (d) {
- struct dirent *de;
- int baselen = strlen(base);
- char *log = xmalloc(baselen + 257);
+ if (!d)
+ return name->len ? errno : 0;
- memcpy(log, base, baselen);
- if (baselen && base[baselen-1] != '/')
- log[baselen++] = '/';
-
- while ((de = readdir(d)) != NULL) {
- struct stat st;
- int namelen;
+ while ((de = readdir(d)) != NULL) {
+ struct stat st;
- if (de->d_name[0] == '.')
- continue;
- namelen = strlen(de->d_name);
- if (namelen > 255)
- continue;
- if (has_extension(de->d_name, ".lock"))
- continue;
- memcpy(log + baselen, de->d_name, namelen+1);
- if (stat(git_path("logs/%s", log), &st) < 0)
- continue;
+ if (de->d_name[0] == '.')
+ continue;
+ if (has_extension(de->d_name, ".lock"))
+ continue;
+ strbuf_addstr(name, de->d_name);
+ if (stat(git_path("logs/%s", name->buf), &st) < 0) {
+ ; /* silently ignore */
+ } else {
if (S_ISDIR(st.st_mode)) {
- retval = do_for_each_reflog(log, fn, cb_data);
+ strbuf_addch(name, '/');
+ retval = do_for_each_reflog(name, fn, cb_data);
} else {
unsigned char sha1[20];
- if (read_ref_full(log, sha1, 0, NULL))
- retval = error("bad ref for %s", log);
+ if (read_ref_full(name->buf, sha1, 0, NULL))
+ retval = error("bad ref for %s", name->buf);
else
- retval = fn(log, sha1, 0, cb_data);
+ retval = fn(name->buf, sha1, 0, cb_data);
}
if (retval)
break;
}
- free(log);
- closedir(d);
+ strbuf_setlen(name, oldlen);
}
- else if (*base)
- return errno;
+ closedir(d);
return retval;
}
int for_each_reflog(each_ref_fn fn, void *cb_data)
{
- return do_for_each_reflog("", fn, cb_data);
+ int retval;
+ struct strbuf name;
+ strbuf_init(&name, PATH_MAX);
+ retval = do_for_each_reflog(&name, fn, cb_data);
+ strbuf_release(&name);
+ return retval;
}
int update_ref(const char *action, const char *refname,
struct alternate_object_database *alt_odb_list;
static struct alternate_object_database **alt_odb_tail;
-static void read_info_alternates(const char * alternates, int depth);
static int git_open_noatime(const char *name);
/*
}
}
-static void read_info_alternates(const char * relative_base, int depth)
+void read_info_alternates(const char * relative_base, int depth)
{
char *map;
size_t mapsz;
return r;
}
-ssize_t read_istream(struct git_istream *st, char *buf, size_t sz)
+ssize_t read_istream(struct git_istream *st, void *buf, size_t sz)
{
return st->vtbl->read(st, buf, sz);
}
extern struct git_istream *open_istream(const unsigned char *, enum object_type *, unsigned long *, struct stream_filter *);
extern int close_istream(struct git_istream *);
-extern ssize_t read_istream(struct git_istream *, char *, size_t);
+extern ssize_t read_istream(struct git_istream *, void *, size_t);
extern int stream_blob_to_fd(int fd, const unsigned char *, struct stream_filter *, int can_seek);
alt_odb->name[40] = '\0';
alt_odb->name[41] = '\0';
alt_odb_list = alt_odb;
+
+ /* add possible alternates from the submodule */
+ read_info_alternates(objects_directory.buf, 0);
prepare_alt_odb();
done:
strbuf_release(&objects_directory);
--- /dev/null
+#!/bin/sh
+
+test_description="Tests index-pack performance"
+
+. ./perf-lib.sh
+
+test_perf_large_repo
+
+test_expect_success 'repack' '
+ git repack -ad &&
+ PACK=`ls .git/objects/pack/*.pack | head -n1` &&
+ test -f "$PACK" &&
+ export PACK
+'
+
+test_perf 'index-pack 0 threads' '
+ GIT_DIR=t1 git index-pack --threads=1 --stdin < $PACK
+'
+
+test_perf 'index-pack 1 thread ' '
+ GIT_DIR=t2 GIT_FORCE_THREADS=1 git index-pack --threads=1 --stdin < $PACK
+'
+
+test_perf 'index-pack 2 threads' '
+ GIT_DIR=t3 git index-pack --threads=2 --stdin < $PACK
+'
+
+test_perf 'index-pack 4 threads' '
+ GIT_DIR=t4 git index-pack --threads=4 --stdin < $PACK
+'
+
+test_perf 'index-pack 8 threads' '
+ GIT_DIR=t5 git index-pack --threads=8 --stdin < $PACK
+'
+
+test_perf 'index-pack default number of threads' '
+ GIT_DIR=t6 git index-pack --stdin < $PACK
+'
+
+test_done
git repack -ad
'
+test_expect_success 'tar achiving' '
+ git archive --format=tar HEAD >/dev/null
+'
+
+test_expect_success 'zip achiving, store only' '
+ git archive --format=zip -0 HEAD >/dev/null
+'
+
+test_expect_success 'zip achiving, deflate' '
+ git archive --format=zip HEAD >/dev/null
+'
+
test_done
'
cat >expect <<'EOF'
-Reflog: HEAD@{1112911993 -0700} (C O Mitter <committer@example.com>)
+HEAD@{Thu Apr 7 15:13:13 2005 -0700}
+EOF
+test_expect_success 'using @{now} syntax shows reflog date (format=%gd)' '
+ git log -g -1 --format=%gd HEAD@{now} >actual &&
+ test_cmp expect actual
+'
+
+cat >expect <<'EOF'
+Reflog: HEAD@{Thu Apr 7 15:13:13 2005 -0700} (C O Mitter <committer@example.com>)
Reflog message: commit (initial): one
EOF
test_expect_success 'using --date= shows reflog date (multiline)' '
- git log -g -1 --date=raw >tmp &&
+ git log -g -1 --date=default >tmp &&
grep ^Reflog <tmp >actual &&
test_cmp expect actual
'
cat >expect <<'EOF'
-e46513e HEAD@{1112911993 -0700}: commit (initial): one
+e46513e HEAD@{Thu Apr 7 15:13:13 2005 -0700}: commit (initial): one
EOF
test_expect_success 'using --date= shows reflog date (oneline)' '
- git log -g -1 --oneline --date=raw >actual &&
+ git log -g -1 --oneline --date=default >actual &&
+ test_cmp expect actual
+'
+
+cat >expect <<'EOF'
+HEAD@{1112911993 -0700}
+EOF
+test_expect_success 'using --date= shows reflog date (format=%gd)' '
+ git log -g -1 --format=%gd --date=raw >actual &&
+ test_cmp expect actual
+'
+
+cat >expect <<'EOF'
+Reflog: HEAD@{0} (C O Mitter <committer@example.com>)
+Reflog message: commit (initial): one
+EOF
+test_expect_success 'log.date does not invoke "--date" magic (multiline)' '
+ test_config log.date raw &&
+ git log -g -1 >tmp &&
+ grep ^Reflog <tmp >actual &&
+ test_cmp expect actual
+'
+
+cat >expect <<'EOF'
+e46513e HEAD@{0}: commit (initial): one
+EOF
+test_expect_success 'log.date does not invoke "--date" magic (oneline)' '
+ test_config log.date raw &&
+ git log -g -1 --oneline >actual &&
+ test_cmp expect actual
+'
+
+cat >expect <<'EOF'
+HEAD@{0}
+EOF
+test_expect_success 'log.date does not invoke "--date" magic (format=%gd)' '
+ test_config log.date raw &&
+ git log -g -1 --format=%gd >actual &&
+ test_cmp expect actual
+'
+
+cat >expect <<'EOF'
+HEAD@{0}
+EOF
+test_expect_success '--date magic does not override explicit @{0} syntax' '
+ git log -g -1 --format=%gd --date=raw HEAD@{0} >actual &&
test_cmp expect actual
'
test_cmp expect actual
'
+test_expect_success 'checking out in a newly created repo' '
+ test_create_repo empty &&
+ (
+ cd empty &&
+ git symbolic-ref HEAD >expect &&
+ test_must_fail git checkout &&
+ git symbolic-ref HEAD >actual &&
+ test_cmp expect actual
+ )
+'
+
test_done
git symbolic-ref -q HEAD >/dev/null
}
-ORPHAN_WARNING='you are leaving .* commit.*behind'
PREV_HEAD_DESC='Previous HEAD position was'
check_orphan_warning() {
- test_i18ngrep "$ORPHAN_WARNING" "$1" &&
+ test_i18ngrep "you are leaving $2 behind" "$1" &&
test_i18ngrep ! "$PREV_HEAD_DESC" "$1"
}
check_no_orphan_warning() {
- test_i18ngrep ! "$ORPHAN_WARNING" "$1" &&
+ test_i18ngrep ! "you are leaving .* commit.*behind" "$1" &&
test_i18ngrep "$PREV_HEAD_DESC" "$1"
}
git checkout --detach two &&
echo content >orphan &&
git add orphan &&
- git commit -a -m orphan &&
+ git commit -a -m orphan1 &&
+ echo new content >orphan &&
+ git commit -a -m orphan2 &&
+ orphan2=$(git rev-parse HEAD) &&
git checkout master 2>stderr
'
test_expect_success 'checkout warns on orphan commits: output' '
- check_orphan_warning stderr
+ check_orphan_warning stderr "2 commits"
+'
+
+test_expect_success 'checkout warns orphaning 1 of 2 commits' '
+ git checkout "$orphan2" &&
+ git checkout HEAD^ 2>stderr
+'
+
+test_expect_success 'checkout warns orphaning 1 of 2 commits: output' '
+ check_orphan_warning stderr "1 commit"
'
test_expect_success 'checkout does not warn leaving ref tip' '
'
test_expect_failure 'exchange two commits with -p' '
+ git checkout H &&
FAKE_LINES="2 1" git rebase -i -p HEAD~2 &&
test H = $(git cat-file commit HEAD^ | sed -ne \$p) &&
test G = $(git cat-file commit HEAD | sed -ne \$p)
# And rebase G1..M1 onto E2
test_expect_success 'rebase two levels of merge' '
+ git checkout A1 &&
test_commit G1 &&
test_commit H1 &&
test_commit I1 &&
test_cmp expected actual
'
+test_expect_success 'diff --submodule with objects referenced by alternates' '
+ mkdir sub_alt &&
+ (cd sub_alt &&
+ git init &&
+ echo a >a &&
+ git add a &&
+ git commit -m a
+ ) &&
+ mkdir super &&
+ (cd super &&
+ git clone -s ../sub_alt sub &&
+ git init &&
+ git add sub &&
+ git commit -m "sub a"
+ ) &&
+ (cd sub_alt &&
+ sha1_before=$(git rev-parse --short HEAD)
+ echo b >b &&
+ git add b &&
+ git commit -m b
+ sha1_after=$(git rev-parse --short HEAD)
+ echo "Submodule sub $sha1_before..$sha1_after:
+ > b" >../expected
+ ) &&
+ (cd super &&
+ (cd sub &&
+ git fetch &&
+ git checkout origin/master
+ ) &&
+ git diff --submodule > ../actual
+ )
+ test_cmp expected actual
+'
+
test_done
--- /dev/null
+#!/bin/sh
+
+test_description='diff --no-index'
+
+. ./test-lib.sh
+
+test_expect_success 'setup' '
+ mkdir a &&
+ mkdir b &&
+ echo 1 >a/1 &&
+ echo 2 >a/2
+'
+
+test_expect_success 'git diff --no-index directories' '
+ git diff --no-index a b >cnt
+ test $? = 1 && test_line_count = 14 cnt
+'
+
+test_done
SUBSTFORMAT=%H%n
+check_zip() {
+ zipfile=$1.zip
+ listfile=$1.lst
+ dir=$1
+ dir_with_prefix=$dir/$2
+
+ test_expect_success UNZIP " extract ZIP archive" "
+ (mkdir $dir && cd $dir && $UNZIP ../$zipfile)
+ "
+
+ test_expect_success UNZIP " validate filenames" "
+ (cd ${dir_with_prefix}a && find .) | sort >$listfile &&
+ test_cmp a.lst $listfile
+ "
+
+ test_expect_success UNZIP " validate file contents" "
+ diff -r a ${dir_with_prefix}a
+ "
+}
+
test_expect_success \
'populate workdir' \
'mkdir a b c &&
'git archive vs. git tar-tree' \
'test_cmp b.tar b2.tar'
+test_expect_success 'git archive on large files' '
+ test_config core.bigfilethreshold 1 &&
+ git archive HEAD >b3.tar &&
+ test_cmp b.tar b3.tar
+'
+
test_expect_success \
'git archive in a bare repo' \
'(cd bare.git && git archive HEAD) >b3.tar'
test_cmp a/substfile2 g/prefix/a/substfile2
'
+$UNZIP -v >/dev/null 2>&1
+if [ $? -eq 127 ]; then
+ say "Skipping ZIP tests, because unzip was not found"
+else
+ test_set_prereq UNZIP
+fi
+
test_expect_success \
'git archive --format=zip' \
'git archive --format=zip HEAD >d.zip'
+check_zip d
+
test_expect_success \
'git archive --format=zip in a bare repo' \
'(cd bare.git && git archive --format=zip HEAD) >d1.zip'
test_cmp b.tar d4.zip
'
-$UNZIP -v >/dev/null 2>&1
-if [ $? -eq 127 ]; then
- say "Skipping ZIP tests, because unzip was not found"
-else
- test_set_prereq UNZIP
-fi
-
-test_expect_success UNZIP \
- 'extract ZIP archive' \
- '(mkdir d && cd d && $UNZIP ../d.zip)'
-
-test_expect_success UNZIP \
- 'validate filenames' \
- '(cd d/a && find .) | sort >d.lst &&
- test_cmp a.lst d.lst'
-
-test_expect_success UNZIP \
- 'validate file contents' \
- 'diff -r a d/a'
-
test_expect_success \
'git archive --format=zip with prefix' \
'git archive --format=zip --prefix=prefix/ HEAD >e.zip'
-test_expect_success UNZIP \
- 'extract ZIP archive with prefix' \
- '(mkdir e && cd e && $UNZIP ../e.zip)'
+check_zip e prefix/
-test_expect_success UNZIP \
- 'validate filenames with prefix' \
- '(cd e/prefix/a && find .) | sort >e.lst &&
- test_cmp a.lst e.lst'
+test_expect_success 'git archive -0 --format=zip on large files' '
+ test_config core.bigfilethreshold 1 &&
+ git archive -0 --format=zip HEAD >large.zip
+'
-test_expect_success UNZIP \
- 'validate file contents with prefix' \
- 'diff -r a e/prefix/a'
+check_zip large
+
+test_expect_success 'git archive --format=zip on large files' '
+ test_config core.bigfilethreshold 1 &&
+ git archive --format=zip HEAD >large-compressed.zip
+'
+
+check_zip large-compressed
test_expect_success \
'git archive --list outside of a git repo' \
test_line_count = 5 testg.txt
'
+test_expect_success 'single-character name is parsed correctly' '
+ git commit --author="a <a@example.com>" --allow-empty -m foo &&
+ echo "a <a@example.com>" >expect &&
+ git log -1 --format="%an <%ae>" >actual &&
+ test_cmp expect actual
+'
+
test_done
cd "$base_dir"
-test_expect_success 'preparing supermodule' \
+test_expect_success 'preparing superproject' \
'test_create_repo super && cd super &&
echo file > file &&
git add file &&
cd "$base_dir"
-test_expect_success 'cloning supermodule' \
+test_expect_success 'cloning superproject' \
'git clone super super-clone'
cd "$base_dir"
'
+test_expect_success 'status -s -z -b' '
+ tr "\\n" Q <expect >expect.q &&
+ mv expect.q expect &&
+ git status -s -z -b >output &&
+ nul_to_q <output >output.q &&
+ mv output.q output &&
+ test_cmp expect output
+'
+
test_expect_success 'setup dir3' '
mkdir dir3 &&
: >dir3/untracked1 &&
git config --unset color.status
git config --unset color.ui
-test_expect_success 'status --porcelain ignores -b' '
+test_expect_success 'status --porcelain respects -b' '
git status --porcelain -b >output &&
+ {
+ echo "## master" &&
+ cat expect
+ } >tmp &&
+ mv tmp expect &&
test_cmp expect output
'
test_cmp expected actual
'
+test_expect_success 'grep, multiple patterns' '
+ git grep "$(cat patterns)" >actual &&
+ test_cmp expected actual
+'
+
cat >expected <<EOF
file:foo mmap bar
file:foo_mmap bar
INPUT_END
test_expect_success \
- 'P: supermodule & submodule mix' \
+ 'P: superproject & submodule mix' \
'git fast-import <input &&
git checkout subuse1 &&
rm -rf sub && mkdir sub && (cd sub &&
)
'
+test_expect_success 'use git config to enable import/export of tags' '
+ git p4 clone --verbose --dest="$git" //depot@all &&
+ (
+ cd "$git" &&
+ git config git-p4.exportLabels true &&
+ git config git-p4.importLabels true &&
+ git tag CFG_A_GIT_TAG &&
+ git p4 rebase --verbose &&
+ git p4 submit --verbose &&
+ git tag &&
+ git tag | grep TAG_F1_1
+ ) &&
+ (
+ cd "$cli" &&
+ p4 labels &&
+ p4 labels | grep CFG_A_GIT_TAG
+ )
+'
+
+
test_expect_success 'kill p4d' '
kill_p4d
'
local _cword
_words=( $1 )
(( _cword = ${#_words[@]} - 1 ))
- _git && print_comp
+ __git_wrap_main_git && print_comp
}
test_completion ()
return 0;
/*
* NEEDSWORK: the current default policy is to allow
- * submodule to be out of sync wrt the supermodule
+ * submodule to be out of sync wrt the superproject
* index. This needs to be tightened later for
* submodules that are marked to be automatically
* checked out.
}
}
-static void wt_shortstatus_unmerged(int null_termination, struct string_list_item *it,
+static void wt_shortstatus_unmerged(struct string_list_item *it,
struct wt_status *s)
{
struct wt_status_change_data *d = it->util;
case 7: how = "UU"; break; /* both modified */
}
color_fprintf(s->fp, color(WT_STATUS_UNMERGED, s), "%s", how);
- if (null_termination) {
+ if (s->null_termination) {
fprintf(stdout, " %s%c", it->string, 0);
} else {
struct strbuf onebuf = STRBUF_INIT;
}
}
-static void wt_shortstatus_status(int null_termination, struct string_list_item *it,
+static void wt_shortstatus_status(struct string_list_item *it,
struct wt_status *s)
{
struct wt_status_change_data *d = it->util;
else
putchar(' ');
putchar(' ');
- if (null_termination) {
+ if (s->null_termination) {
fprintf(stdout, "%s%c", it->string, 0);
if (d->head_path)
fprintf(stdout, "%s%c", d->head_path, 0);
}
}
-static void wt_shortstatus_other(int null_termination, struct string_list_item *it,
+static void wt_shortstatus_other(struct string_list_item *it,
struct wt_status *s, const char *sign)
{
- if (null_termination) {
+ if (s->null_termination) {
fprintf(stdout, "%s %s%c", sign, it->string, 0);
} else {
struct strbuf onebuf = STRBUF_INIT;
if (s->is_initial)
color_fprintf(s->fp, header_color, _("Initial commit on "));
if (!stat_tracking_info(branch, &num_ours, &num_theirs)) {
- color_fprintf_ln(s->fp, branch_color_local,
- "%s", branch_name);
+ color_fprintf(s->fp, branch_color_local, "%s", branch_name);
+ fputc(s->null_termination ? '\0' : '\n', s->fp);
return;
}
color_fprintf(s->fp, branch_color_remote, "%d", num_theirs);
}
- color_fprintf_ln(s->fp, header_color, "]");
+ color_fprintf(s->fp, header_color, "]");
+ fputc(s->null_termination ? '\0' : '\n', s->fp);
}
-void wt_shortstatus_print(struct wt_status *s, int null_termination, int show_branch)
+void wt_shortstatus_print(struct wt_status *s)
{
int i;
- if (show_branch)
+ if (s->show_branch)
wt_shortstatus_print_tracking(s);
for (i = 0; i < s->change.nr; i++) {
it = &(s->change.items[i]);
d = it->util;
if (d->stagemask)
- wt_shortstatus_unmerged(null_termination, it, s);
+ wt_shortstatus_unmerged(it, s);
else
- wt_shortstatus_status(null_termination, it, s);
+ wt_shortstatus_status(it, s);
}
for (i = 0; i < s->untracked.nr; i++) {
struct string_list_item *it;
it = &(s->untracked.items[i]);
- wt_shortstatus_other(null_termination, it, s, "??");
+ wt_shortstatus_other(it, s, "??");
}
for (i = 0; i < s->ignored.nr; i++) {
struct string_list_item *it;
it = &(s->ignored.items[i]);
- wt_shortstatus_other(null_termination, it, s, "!!");
+ wt_shortstatus_other(it, s, "!!");
}
}
-void wt_porcelain_print(struct wt_status *s, int null_termination)
+void wt_porcelain_print(struct wt_status *s)
{
s->use_color = 0;
s->relative_paths = 0;
s->prefix = NULL;
- wt_shortstatus_print(s, null_termination, 0);
+ wt_shortstatus_print(s);
}
enum untracked_status_type show_untracked_files;
const char *ignore_submodule_arg;
char color_palette[WT_STATUS_MAXSLOT][COLOR_MAXLEN];
- int colopts;
+ unsigned colopts;
+ int null_termination;
+ int show_branch;
/* These are computed during processing of the individual sections */
int commitable;
void wt_status_print(struct wt_status *s);
void wt_status_collect(struct wt_status *s);
-void wt_shortstatus_print(struct wt_status *s, int null_termination, int show_branch);
-void wt_porcelain_print(struct wt_status *s, int null_termination);
+void wt_shortstatus_print(struct wt_status *s);
+void wt_porcelain_print(struct wt_status *s);
void status_printf_ln(struct wt_status *s, const char *color, const char *fmt, ...)
;
return ret;
}
-struct xdiff_emit_hunk_state {
- xdiff_emit_hunk_consume_fn consume;
- void *consume_callback_data;
-};
-
-static int process_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
- xdemitconf_t const *xecfg)
-{
- long s1, s2, same, p_next, t_next;
- xdchange_t *xch, *xche;
- struct xdiff_emit_hunk_state *state = ecb->priv;
- xdiff_emit_hunk_consume_fn fn = state->consume;
- void *consume_callback_data = state->consume_callback_data;
-
- for (xch = xscr; xch; xch = xche->next) {
- xche = xdl_get_hunk(xch, xecfg);
-
- s1 = XDL_MAX(xch->i1 - xecfg->ctxlen, 0);
- s2 = XDL_MAX(xch->i2 - xecfg->ctxlen, 0);
- same = s2 + XDL_MAX(xch->i1 - s1, 0);
- p_next = xche->i1 + xche->chg1;
- t_next = xche->i2 + xche->chg2;
-
- fn(consume_callback_data, same, p_next, t_next);
- }
- return 0;
-}
-
-int xdi_diff_hunks(mmfile_t *mf1, mmfile_t *mf2,
- xdiff_emit_hunk_consume_fn fn, void *consume_callback_data,
- xpparam_t const *xpp, xdemitconf_t *xecfg)
-{
- struct xdiff_emit_hunk_state state;
- xdemitcb_t ecb;
-
- memset(&state, 0, sizeof(state));
- memset(&ecb, 0, sizeof(ecb));
- state.consume = fn;
- state.consume_callback_data = consume_callback_data;
- xecfg->emit_func = (void (*)())process_diff;
- ecb.priv = &state;
- return xdi_diff(mf1, mf2, xpp, xecfg, &ecb);
-}
-
int read_mmfile(mmfile_t *ptr, const char *filename)
{
struct stat st;
#include "xdiff/xdiff.h"
typedef void (*xdiff_emit_consume_fn)(void *, char *, unsigned long);
-typedef void (*xdiff_emit_hunk_consume_fn)(void *, long, long, long);
int xdi_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp, xdemitconf_t const *xecfg, xdemitcb_t *ecb);
int xdi_diff_outf(mmfile_t *mf1, mmfile_t *mf2,
xdiff_emit_consume_fn fn, void *consume_callback_data,
xpparam_t const *xpp, xdemitconf_t const *xecfg);
-int xdi_diff_hunks(mmfile_t *mf1, mmfile_t *mf2,
- xdiff_emit_hunk_consume_fn fn, void *consume_callback_data,
- xpparam_t const *xpp, xdemitconf_t *xecfg);
int parse_hunk_header(char *line, int len,
int *ob, int *on,
int *nb, int *nn);
typedef long (*find_func_t)(const char *line, long line_len, char *buffer, long buffer_size, void *priv);
+typedef int (*xdl_emit_hunk_consume_func_t)(long start_a, long count_a,
+ long start_b, long count_b,
+ void *cb_data);
+
typedef struct s_xdemitconf {
long ctxlen;
long interhunkctxlen;
unsigned long flags;
find_func_t find_func;
void *find_func_priv;
- void (*emit_func)();
+ xdl_emit_hunk_consume_func_t hunk_func;
} xdemitconf_t;
typedef struct s_bdiffparam {
}
}
+static int xdl_call_hunk_func(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
+ xdemitconf_t const *xecfg)
+{
+ xdchange_t *xch, *xche;
+
+ for (xch = xscr; xch; xch = xche->next) {
+ xche = xdl_get_hunk(xch, xecfg);
+ if (xecfg->hunk_func(xch->i1, xche->i1 + xche->chg1 - xch->i1,
+ xch->i2, xche->i2 + xche->chg2 - xch->i2,
+ ecb->priv) < 0)
+ return -1;
+ }
+ return 0;
+}
int xdl_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
xdemitconf_t const *xecfg, xdemitcb_t *ecb) {
xdchange_t *xscr;
xdfenv_t xe;
- emit_func_t ef = xecfg->emit_func ?
- (emit_func_t)xecfg->emit_func : xdl_emit_diff;
+ emit_func_t ef = xecfg->hunk_func ? xdl_call_hunk_func : xdl_emit_diff;
if (xdl_do_diff(mf1, mf2, xpp, &xe) < 0) {
return data;
}
-
-void *xdl_cha_first(chastore_t *cha) {
- chanode_t *sncur;
-
- if (!(cha->sncur = sncur = cha->head))
- return NULL;
-
- cha->scurr = 0;
-
- return (char *) sncur + sizeof(chanode_t) + cha->scurr;
-}
-
-
-void *xdl_cha_next(chastore_t *cha) {
- chanode_t *sncur;
-
- if (!(sncur = cha->sncur))
- return NULL;
- cha->scurr += cha->isize;
- if (cha->scurr == sncur->icurr) {
- if (!(sncur = cha->sncur = sncur->next))
- return NULL;
- cha->scurr = 0;
- }
-
- return (char *) sncur + sizeof(chanode_t) + cha->scurr;
-}
-
-
long xdl_guess_lines(mmfile_t *mf, long sample) {
long nl = 0, size, tsize = 0;
char const *data, *cur, *top;
#ifdef XDL_FAST_HASH
-#define ONEBYTES 0x0101010101010101ul
-#define NEWLINEBYTES 0x0a0a0a0a0a0a0a0aul
-#define HIGHBITS 0x8080808080808080ul
+#define REPEAT_BYTE(x) ((~0ul / 0xff) * (x))
+
+#define ONEBYTES REPEAT_BYTE(0x01)
+#define NEWLINEBYTES REPEAT_BYTE(0x0a)
+#define HIGHBITS REPEAT_BYTE(0x80)
/* Return the high bit set in the first byte that is a zero */
static inline unsigned long has_zero(unsigned long a)
* that works for the bytemasks without having to
* mask them first.
*/
- return mask * 0x0001020304050608 >> 56;
- } else {
/*
- * Modified Carl Chatfield G+ version for 32-bit *
+ * return mask * 0x0001020304050608 >> 56;
*
- * (a) gives us
- * -1 (0, ff), 0 (ffff) or 1 (ffffff)
- * (b) gives us
- * 0 for 0, 1 for (ff ffff ffffff)
- * (a+b+1) gives us
- * correct 0-3 bytemask count result
+ * Doing it like this avoids warnings on 32-bit machines.
*/
- long a = (mask - 256) >> 23;
- long b = mask & 1;
- return a + b + 1;
+ long a = (REPEAT_BYTE(0x01) / 0xff + 1);
+ return mask * a >> (sizeof(long) * 7);
+ } else {
+ /* Carl Chatfield / Jan Achrenius G+ version for 32-bit */
+ /* (000000 0000ff 00ffff ffffff) -> ( 1 1 2 3 ) */
+ long a = (0x0ff0001 + mask) >> 23;
+ /* Fix the 1 for 00 case */
+ return a & mask;
}
}
return str - out;
}
-
-long xdl_atol(char const *str, char const **next) {
- long val, base;
- char const *top;
-
- for (top = str; XDL_ISDIGIT(*top); top++);
- if (next)
- *next = top;
- for (val = 0, base = 1, top--; top >= str; top--, base *= 10)
- val += base * (long)(*top - '0');
- return val;
-}
-
-
int xdl_emit_hunk_hdr(long s1, long c1, long s2, long c2,
const char *func, long funclen, xdemitcb_t *ecb) {
int nb = 0;
int xdl_cha_init(chastore_t *cha, long isize, long icount);
void xdl_cha_free(chastore_t *cha);
void *xdl_cha_alloc(chastore_t *cha);
-void *xdl_cha_first(chastore_t *cha);
-void *xdl_cha_next(chastore_t *cha);
long xdl_guess_lines(mmfile_t *mf, long sample);
int xdl_recmatch(const char *l1, long s1, const char *l2, long s2, long flags);
unsigned long xdl_hash_record(char const **data, char const *top, long flags);
unsigned int xdl_hashbits(unsigned int size);
int xdl_num_out(char *out, long val);
-long xdl_atol(char const *str, char const **next);
int xdl_emit_hunk_hdr(long s1, long c1, long s2, long c2,
const char *func, long funclen, xdemitcb_t *ecb);
int xdl_fall_back_diff(xdfenv_t *diff_env, xpparam_t const *xpp,