summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/RelNotes/2.10.1.txt33
-rw-r--r--Documentation/RelNotes/2.9.4.txt83
-rw-r--r--Documentation/SubmittingPatches11
-rw-r--r--Documentation/config.txt20
-rw-r--r--Documentation/git-check-ref-format.txt4
-rw-r--r--Documentation/gitk.txt2
-rw-r--r--Documentation/gitrevisions.txt6
-rw-r--r--Documentation/pretty-formats.txt2
-rw-r--r--Documentation/rev-list-options.txt4
-rw-r--r--Documentation/revisions.txt125
-rw-r--r--Makefile17
l---------RelNotes2
-rw-r--r--builtin/am.c2
-rw-r--r--builtin/cat-file.c2
-rw-r--r--builtin/checkout.c6
-rw-r--r--builtin/gc.c2
-rw-r--r--builtin/log.c6
-rw-r--r--builtin/symbolic-ref.c2
-rw-r--r--cache.h10
-rw-r--r--color.c2
-rw-r--r--compat/nedmalloc/nedmalloc.c16
-rw-r--r--compat/strdup.c11
-rw-r--r--contrib/diff-highlight/Makefile5
-rwxr-xr-xcontrib/diff-highlight/diff-highlight19
-rw-r--r--contrib/diff-highlight/t/.gitignore2
-rw-r--r--contrib/diff-highlight/t/Makefile22
-rwxr-xr-xcontrib/diff-highlight/t/t9400-diff-highlight.sh296
-rw-r--r--diff.c31
-rw-r--r--git-compat-util.h9
-rw-r--r--git-gui/lib/commit.tcl3
-rw-r--r--git-gui/po/ja.po2747
-rwxr-xr-xgit-merge-octopus.sh4
-rw-r--r--git-rebase--interactive.sh5
-rw-r--r--hex.c12
-rw-r--r--http.c31
-rw-r--r--patch-ids.c16
-rw-r--r--pathspec.h2
-rw-r--r--pkt-line.c23
-rw-r--r--po/TEAMS5
-rw-r--r--po/pt_PT.po739
-rw-r--r--po/zh_CN.po104
-rw-r--r--pretty.c13
-rw-r--r--ref-filter.c20
-rw-r--r--strbuf.c2
-rw-r--r--submodule.c1
-rwxr-xr-xt/perf/run8
-rwxr-xr-xt/t1401-symbolic-ref.sh21
-rwxr-xr-xt/t4014-format-patch.sh33
-rwxr-xr-xt/t4051-diff-function-context.sh25
-rwxr-xr-xt/t5526-fetch-submodules.sh35
-rwxr-xr-xt/t5541-http-push-smart.sh2
-rwxr-xr-xt/t5550-http-fetch-dumb.sh18
-rwxr-xr-xt/t5551-http-fetch-smart.sh15
-rwxr-xr-xt/t6026-merge-attr.sh2
-rwxr-xr-xt/t7517-per-repo-email.sh47
-rwxr-xr-xt/t9903-bash-prompt.sh2
-rw-r--r--t/test-lib.sh5
-rw-r--r--transport.c2
-rw-r--r--unpack-trees.c13
-rw-r--r--url.c21
-rw-r--r--usage.c1
-rw-r--r--vcs-svn/fast_export.c4
-rw-r--r--xdiff/xemit.c11
63 files changed, 2725 insertions, 2019 deletions
diff --git a/Documentation/RelNotes/2.10.1.txt b/Documentation/RelNotes/2.10.1.txt
new file mode 100644
index 0000000000..75c07e199e
--- /dev/null
+++ b/Documentation/RelNotes/2.10.1.txt
@@ -0,0 +1,33 @@
+Git v2.10.1 Release Notes
+=========================
+
+Fixes since v2.10
+-----------------
+
+ * Clarify various ways to specify the "revision ranges" in the
+ documentation.
+
+ * "diff-highlight" script (in contrib/) learned to work better with
+ "git log -p --graph" output.
+
+ * The test framework left the number of tests and success/failure
+ count in the t/test-results directory, keyed by the name of the
+ test script plus the process ID. The latter however turned out not
+ to serve any useful purpose. The process ID part of the filename
+ has been removed.
+
+ * Having a submodule whose ".git" repository is somehow corrupt
+ caused a few commands that recurse into submodules loop forever.
+
+ * "git symbolic-ref -d HEAD" happily removes the symbolic ref, but
+ the resulting repository becomes an invalid one. Teach the command
+ to forbid removal of HEAD.
+
+ * A test spawned a short-lived background process, which sometimes
+ prevented the test directory from getting removed at the end of the
+ script on some platforms.
+
+ * Update a few tests that used to use GIT_CURL_VERBOSE to use the
+ newer GIT_TRACE_CURL.
+
+Also contains minor documentation updates and code clean-ups.
diff --git a/Documentation/RelNotes/2.9.4.txt b/Documentation/RelNotes/2.9.4.txt
new file mode 100644
index 0000000000..01e864278b
--- /dev/null
+++ b/Documentation/RelNotes/2.9.4.txt
@@ -0,0 +1,83 @@
+Git v2.9.4 Release Notes
+========================
+
+Fixes since v2.9.3
+------------------
+
+ * There are certain house-keeping tasks that need to be performed at
+ the very beginning of any Git program, and programs that are not
+ built-in commands had to do them exactly the same way as "git"
+ potty does. It was easy to make mistakes in one-off standalone
+ programs (like test helpers). A common "main()" function that
+ calls cmd_main() of individual program has been introduced to
+ make it harder to make mistakes.
+
+ * "git merge" with renormalization did not work well with
+ merge-recursive, due to "safer crlf" conversion kicking in when it
+ shouldn't.
+
+ * The reflog output format is documented better, and a new format
+ --date=unix to report the seconds-since-epoch (without timezone)
+ has been added.
+
+ * "git push --force-with-lease" already had enough logic to allow
+ ensuring that such a push results in creation of a ref (i.e. the
+ receiving end did not have another push from sideways that would be
+ discarded by our force-pushing), but didn't expose this possibility
+ to the users. It does so now.
+
+ * "import-tars" fast-import script (in contrib/) used to ignore a
+ hardlink target and replaced it with an empty file, which has been
+ corrected to record the same blob as the other file the hardlink is
+ shared with.
+
+ * "git mv dir non-existing-dir/" did not work in some environments
+ the same way as existing mainstream platforms. The code now moves
+ "dir" to "non-existing-dir", without relying on rename("A", "B/")
+ that strips the trailing slash of '/'.
+
+ * The "t/" hierarchy is prone to get an unusual pathname; "make test"
+ has been taught to make sure they do not contain paths that cannot
+ be checked out on Windows (and the mechanism can be reusable to
+ catch pathnames that are not portable to other platforms as need
+ arises).
+
+ * When "git merge-recursive" works on history with many criss-cross
+ merges in "verbose" mode, the names the command assigns to the
+ virtual merge bases could have overwritten each other by unintended
+ reuse of the same piece of memory.
+
+ * "git checkout --detach <branch>" used to give the same advice
+ message as that is issued when "git checkout <tag>" (or anything
+ that is not a branch name) is given, but asking with "--detach" is
+ an explicit enough sign that the user knows what is going on. The
+ advice message has been squelched in this case.
+
+ * "git difftool" by default ignores the error exit from the backend
+ commands it spawns, because often they signal that they found
+ differences by exiting with a non-zero status code just like "diff"
+ does; the exit status codes 126 and above however are special in
+ that they are used to signal that the command is not executable,
+ does not exist, or killed by a signal. "git difftool" has been
+ taught to notice these exit status codes.
+
+ * On Windows, help.browser configuration variable used to be ignored,
+ which has been corrected.
+
+ * The "git -c var[=val] cmd" facility to append a configuration
+ variable definition at the end of the search order was described in
+ git(1) manual page, but not in git-config(1), which was more likely
+ place for people to look for when they ask "can I make a one-shot
+ override, and if so how?"
+
+ * The tempfile (hence its user lockfile) API lets the caller to open
+ a file descriptor to a temporary file, write into it and then
+ finalize it by first closing the filehandle and then either
+ removing or renaming the temporary file. When the process spawns a
+ subprocess after obtaining the file descriptor, and if the
+ subprocess has not exited when the attempt to remove or rename is
+ made, the last step fails on Windows, because the subprocess has
+ the file descriptor still open. Open tempfile with O_CLOEXEC flag
+ to avoid this (on Windows, this is mapped to O_NOINHERIT).
+
+Also contains minor documentation updates and code clean-ups.
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index 500230c054..08352deaae 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -122,9 +122,14 @@ without external resources. Instead of giving a URL to a mailing list
archive, summarize the relevant points of the discussion.
If you want to reference a previous commit in the history of a stable
-branch use the format "abbreviated sha1 (subject, date)". So for example
-like this: "Commit f86a374 (pack-bitmap.c: fix a memleak, 2015-03-30)
-noticed [...]".
+branch, use the format "abbreviated sha1 (subject, date)",
+with the subject enclosed in a pair of double-quotes, like this:
+
+ Commit f86a374 ("pack-bitmap.c: fix a memleak", 2015-03-30)
+ noticed that ...
+
+The "Copy commit summary" command of gitk can be used to obtain this
+format.
(3) Generate your patch using Git tools out of your commits.
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 0bcb6790d6..a077c64ef0 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -953,7 +953,8 @@ color.branch::
A boolean to enable/disable color in the output of
linkgit:git-branch[1]. May be set to `always`,
`false` (or `never`) or `auto` (or `true`), in which case colors are used
- only when the output is to a terminal. Defaults to false.
+ only when the output is to a terminal. If unset, then the
+ value of `color.ui` is used (`auto` by default).
color.branch.<slot>::
Use customized color for branch coloration. `<slot>` is one of
@@ -968,7 +969,8 @@ color.diff::
linkgit:git-log[1], and linkgit:git-show[1] will use color
for all patches. If it is set to `true` or `auto`, those
commands will only use color when output is to the terminal.
- Defaults to false.
+ If unset, then the value of `color.ui` is used (`auto` by
+ default).
+
This does not affect linkgit:git-format-patch[1] or the
'git-diff-{asterisk}' plumbing commands. Can be overridden on the
@@ -991,7 +993,8 @@ color.decorate.<slot>::
color.grep::
When set to `always`, always highlight matches. When `false` (or
`never`), never. When set to `true` or `auto`, use color only
- when the output is written to the terminal. Defaults to `false`.
+ when the output is written to the terminal. If unset, then the
+ value of `color.ui` is used (`auto` by default).
color.grep.<slot>::
Use customized color for grep colorization. `<slot>` specifies which
@@ -1024,7 +1027,8 @@ color.interactive::
and displays (such as those used by "git-add --interactive" and
"git-clean --interactive"). When false (or `never`), never.
When set to `true` or `auto`, use colors only when the output is
- to the terminal. Defaults to false.
+ to the terminal. If unset, then the value of `color.ui` is
+ used (`auto` by default).
color.interactive.<slot>::
Use customized color for 'git add --interactive' and 'git clean
@@ -1040,13 +1044,15 @@ color.showBranch::
A boolean to enable/disable color in the output of
linkgit:git-show-branch[1]. May be set to `always`,
`false` (or `never`) or `auto` (or `true`), in which case colors are used
- only when the output is to a terminal. Defaults to false.
+ only when the output is to a terminal. If unset, then the
+ value of `color.ui` is used (`auto` by default).
color.status::
A boolean to enable/disable color in the output of
linkgit:git-status[1]. May be set to `always`,
`false` (or `never`) or `auto` (or `true`), in which case colors are used
- only when the output is to a terminal. Defaults to false.
+ only when the output is to a terminal. If unset, then the
+ value of `color.ui` is used (`auto` by default).
color.status.<slot>::
Use customized color for status colorization. `<slot>` is
@@ -1366,7 +1372,7 @@ fsck.skipList::
gc.aggressiveDepth::
The depth parameter used in the delta compression
algorithm used by 'git gc --aggressive'. This defaults
- to 250.
+ to 50.
gc.aggressiveWindow::
The window size parameter used in the delta compression
diff --git a/Documentation/git-check-ref-format.txt b/Documentation/git-check-ref-format.txt
index 91a3622ee4..8611a99120 100644
--- a/Documentation/git-check-ref-format.txt
+++ b/Documentation/git-check-ref-format.txt
@@ -118,8 +118,8 @@ $ git check-ref-format --branch @{-1}
* Determine the reference name to use for a new branch:
+
------------
-$ ref=$(git check-ref-format --normalize "refs/heads/$newbranch") ||
-die "we do not like '$newbranch' as a branch name."
+$ ref=$(git check-ref-format --normalize "refs/heads/$newbranch")||
+{ echo "we do not like '$newbranch' as a branch name." >&2 ; exit 1 ; }
------------
GIT
diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index a68d860fa3..e382dd96df 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -70,7 +70,7 @@ linkgit:git-rev-list[1] for a complete list.
--left-right::
- Mark which side of a symmetric diff a commit is reachable
+ Mark which side of a symmetric difference a commit is reachable
from. Commits from the left side are prefixed with a `<`
symbol and those from the right with a `>` symbol.
diff --git a/Documentation/gitrevisions.txt b/Documentation/gitrevisions.txt
index e903eb7860..27dec5b91d 100644
--- a/Documentation/gitrevisions.txt
+++ b/Documentation/gitrevisions.txt
@@ -15,9 +15,9 @@ DESCRIPTION
Many Git commands take revision parameters as arguments. Depending on
the command, they denote a specific commit or, for commands which
-walk the revision graph (such as linkgit:git-log[1]), all commits which can
-be reached from that commit. In the latter case one can also specify a
-range of revisions explicitly.
+walk the revision graph (such as linkgit:git-log[1]), all commits which are
+reachable from that commit. For commands that walk the revision graph one can
+also specify a range of revisions explicitly.
In addition, some Git commands (such as linkgit:git-show[1]) also take
revision parameters which denote other objects than commits, e.g. blobs
diff --git a/Documentation/pretty-formats.txt b/Documentation/pretty-formats.txt
index b95d67ec01..a942d57f73 100644
--- a/Documentation/pretty-formats.txt
+++ b/Documentation/pretty-formats.txt
@@ -172,7 +172,7 @@ endif::git-rev-list[]
respecting the `auto` settings of the former if we are going to a
terminal). `auto` alone (i.e. `%C(auto)`) will turn on auto coloring
on the next placeholders until the color is switched again.
-- '%m': left, right or boundary mark
+- '%m': left (`<`), right (`>`) or boundary (`-`) mark
- '%n': newline
- '%%': a raw '%'
- '%x00': print a byte from a hex code
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index a779c9dfec..7e462d3841 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -225,7 +225,7 @@ excluded from the output.
--left-only::
--right-only::
- List only commits on the respective side of a symmetric range,
+ List only commits on the respective side of a symmetric difference,
i.e. only those which would be marked `<` resp. `>` by
`--left-right`.
+
@@ -796,7 +796,7 @@ ifdef::git-rev-list[]
endif::git-rev-list[]
--left-right::
- Mark which side of a symmetric diff a commit is reachable from.
+ Mark which side of a symmetric difference a commit is reachable from.
Commits from the left side are prefixed with `<` and those from
the right with `>`. If combined with `--boundary`, those
commits are prefixed with `-`.
diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index abae363983..4bed5b1ab7 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -237,48 +237,74 @@ SPECIFYING RANGES
-----------------
History traversing commands such as `git log` operate on a set
-of commits, not just a single commit. To these commands,
-specifying a single revision with the notation described in the
-previous section means the set of commits reachable from that
-commit, following the commit ancestry chain.
-
-To exclude commits reachable from a commit, a prefix '{caret}'
-notation is used. E.g. '{caret}r1 r2' means commits reachable
-from 'r2' but exclude the ones reachable from 'r1'.
-
-This set operation appears so often that there is a shorthand
-for it. When you have two commits 'r1' and 'r2' (named according
-to the syntax explained in SPECIFYING REVISIONS above), you can ask
-for commits that are reachable from r2 excluding those that are reachable
-from r1 by '{caret}r1 r2' and it can be written as 'r1..r2'.
-
-A similar notation 'r1\...r2' is called symmetric difference
-of 'r1' and 'r2' and is defined as
-'r1 r2 --not $(git merge-base --all r1 r2)'.
-It is the set of commits that are reachable from either one of
-'r1' or 'r2' but not from both.
-
-In these two shorthands, you can omit one end and let it default to HEAD.
+of commits, not just a single commit.
+
+For these commands,
+specifying a single revision, using the notation described in the
+previous section, means the set of commits `reachable` from the given
+commit.
+
+A commit's reachable set is the commit itself and the commits in
+its ancestry chain.
+
+
+Commit Exclusions
+~~~~~~~~~~~~~~~~~
+
+'{caret}<rev>' (caret) Notation::
+ To exclude commits reachable from a commit, a prefix '{caret}'
+ notation is used. E.g. '{caret}r1 r2' means commits reachable
+ from 'r2' but exclude the ones reachable from 'r1' (i.e. 'r1' and
+ its ancestors).
+
+Dotted Range Notations
+~~~~~~~~~~~~~~~~~~~~~~
+
+The '..' (two-dot) Range Notation::
+ The '{caret}r1 r2' set operation appears so often that there is a shorthand
+ for it. When you have two commits 'r1' and 'r2' (named according
+ to the syntax explained in SPECIFYING REVISIONS above), you can ask
+ for commits that are reachable from r2 excluding those that are reachable
+ from r1 by '{caret}r1 r2' and it can be written as 'r1..r2'.
+
+The '...' (three dot) Symmetric Difference Notation::
+ A similar notation 'r1\...r2' is called symmetric difference
+ of 'r1' and 'r2' and is defined as
+ 'r1 r2 --not $(git merge-base --all r1 r2)'.
+ It is the set of commits that are reachable from either one of
+ 'r1' (left side) or 'r2' (right side) but not from both.
+
+In these two shorthand notations, you can omit one end and let it default to HEAD.
For example, 'origin..' is a shorthand for 'origin..HEAD' and asks "What
did I do since I forked from the origin branch?" Similarly, '..origin'
is a shorthand for 'HEAD..origin' and asks "What did the origin do since
I forked from them?" Note that '..' would mean 'HEAD..HEAD' which is an
empty range that is both reachable and unreachable from HEAD.
-Two other shorthands for naming a set that is formed by a commit
-and its parent commits exist. The 'r1{caret}@' notation means all
-parents of 'r1'. 'r1{caret}!' includes commit 'r1' but excludes
-all of its parents.
+Other <rev>{caret} Parent Shorthand Notations
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Two other shorthands exist, particularly useful for merge commits,
+for naming a set that is formed by a commit and its parent commits.
+
+The 'r1{caret}@' notation means all parents of 'r1'.
+
+The 'r1{caret}!' notation includes commit 'r1' but excludes all of its parents.
+By itself, this notation denotes the single commit 'r1'.
+
+While '<rev>{caret}<n>' was about specifying a single commit parent, these
+two notations consider all its parents. For example you can say
+'HEAD{caret}2{caret}@', however you cannot say 'HEAD{caret}@{caret}2'.
-To summarize:
+Revision Range Summary
+----------------------
'<rev>'::
- Include commits that are reachable from (i.e. ancestors of)
- <rev>.
+ Include commits that are reachable from <rev> (i.e. <rev> and its
+ ancestors).
'{caret}<rev>'::
- Exclude commits that are reachable from (i.e. ancestors of)
- <rev>.
+ Exclude commits that are reachable from <rev> (i.e. <rev> and its
+ ancestors).
'<rev1>..<rev2>'::
Include commits that are reachable from <rev2> but exclude
@@ -300,16 +326,27 @@ To summarize:
as giving commit '<rev>' and then all its parents prefixed with
'{caret}' to exclude them (and their ancestors).
-Here are a handful of examples:
-
- D G H D
- D F G H I J D F
- ^G D H D
- ^D B E I J F B
- B..C C
- B...C G H D E B C
- ^D B C E I J F B C
- C I J F C
- C^@ I J F
- C^! C
- F^! D G H D F
+Here are a handful of examples using the Loeliger illustration above,
+with each step in the notation's expansion and selection carefully
+spelt out:
+
+ Args Expanded arguments Selected commits
+ D G H D
+ D F G H I J D F
+ ^G D H D
+ ^D B E I J F B
+ ^D B C E I J F B C
+ C I J F C
+ B..C = ^B C C
+ B...C = B ^F C G H D E B C
+ C^@ = C^1
+ = F I J F
+ B^@ = B^1 B^2 B^3
+ = D E F D G H E F I J
+ C^! = C ^C^@
+ = C ^C^1
+ = C ^F C
+ B^! = B ^B^@
+ = B ^B^1 ^B^2 ^B^3
+ = B ^D ^E ^F B
+ F^! D = F ^I ^J D G H D F
diff --git a/Makefile b/Makefile
index d96ecb7141..7f184923dd 100644
--- a/Makefile
+++ b/Makefile
@@ -296,6 +296,11 @@ all::
# Define USE_NED_ALLOCATOR if you want to replace the platforms default
# memory allocators with the nedmalloc allocator written by Niall Douglas.
#
+# Define OVERRIDE_STRDUP to override the libc version of strdup(3).
+# This is necessary when using a custom allocator in order to avoid
+# crashes due to allocation and free working on different 'heaps'.
+# It's defined automatically if USE_NED_ALLOCATOR is set.
+#
# Define NO_REGEX if you have no or inferior regex support in your C library.
#
# Define HAVE_DEV_TTY if your system can open /dev/tty to interact with the
@@ -1456,8 +1461,14 @@ ifdef NATIVE_CRLF
endif
ifdef USE_NED_ALLOCATOR
- COMPAT_CFLAGS += -Icompat/nedmalloc
- COMPAT_OBJS += compat/nedmalloc/nedmalloc.o
+ COMPAT_CFLAGS += -Icompat/nedmalloc
+ COMPAT_OBJS += compat/nedmalloc/nedmalloc.o
+ OVERRIDE_STRDUP = YesPlease
+endif
+
+ifdef OVERRIDE_STRDUP
+ COMPAT_CFLAGS += -DOVERRIDE_STRDUP
+ COMPAT_OBJS += compat/strdup.o
endif
ifdef GIT_TEST_CMP_USE_COPIED_CONTEXT
@@ -2029,7 +2040,7 @@ endif
ifdef USE_NED_ALLOCATOR
compat/nedmalloc/nedmalloc.sp compat/nedmalloc/nedmalloc.o: EXTRA_CPPFLAGS = \
- -DNDEBUG -DOVERRIDE_STRDUP -DREPLACE_SYSTEM_ALLOCATOR
+ -DNDEBUG -DREPLACE_SYSTEM_ALLOCATOR
compat/nedmalloc/nedmalloc.sp: SPARSE_FLAGS += -Wno-non-pointer-null
endif
diff --git a/RelNotes b/RelNotes
index 62615ffa4e..bf857e597c 120000
--- a/RelNotes
+++ b/RelNotes
@@ -1 +1 @@
-Documentation/RelNotes/2.10.0.txt \ No newline at end of file
+Documentation/RelNotes/2.10.1.txt \ No newline at end of file
diff --git a/builtin/am.c b/builtin/am.c
index 739b34dcf2..9e2ae5cba4 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -2222,7 +2222,7 @@ int cmd_am(int argc, const char **argv, const char *prefix)
int in_progress;
const char * const usage[] = {
- N_("git am [<options>] [(<mbox>|<Maildir>)...]"),
+ N_("git am [<options>] [(<mbox> | <Maildir>)...]"),
N_("git am [<options>] (--continue | --skip | --abort)"),
NULL
};
diff --git a/builtin/cat-file.c b/builtin/cat-file.c
index 2dfe6265f7..560f6c2cc7 100644
--- a/builtin/cat-file.c
+++ b/builtin/cat-file.c
@@ -440,7 +440,7 @@ static int batch_objects(struct batch_options *opt)
}
static const char * const cat_file_usage[] = {
- N_("git cat-file (-t [--allow-unknown-type]|-s [--allow-unknown-type]|-e|-p|<type>|--textconv) <object>"),
+ N_("git cat-file (-t [--allow-unknown-type] | -s [--allow-unknown-type] | -e | -p | <type> | --textconv) <object>"),
N_("git cat-file (--batch | --batch-check) [--follow-symlinks]"),
NULL
};
diff --git a/builtin/checkout.c b/builtin/checkout.c
index 53c7284ffd..0ad96786c9 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -154,8 +154,8 @@ static int check_stages(unsigned stages, const struct cache_entry *ce, int pos)
return 0;
}
-static int checkout_stage(int stage, struct cache_entry *ce, int pos,
- struct checkout *state)
+static int checkout_stage(int stage, const struct cache_entry *ce, int pos,
+ const struct checkout *state)
{
while (pos < active_nr &&
!strcmp(active_cache[pos]->name, ce->name)) {
@@ -169,7 +169,7 @@ static int checkout_stage(int stage, struct cache_entry *ce, int pos,
return error(_("path '%s' does not have their version"), ce->name);
}
-static int checkout_merged(int pos, struct checkout *state)
+static int checkout_merged(int pos, const struct checkout *state)
{
struct cache_entry *ce = active_cache[pos];
const char *path = ce->name;
diff --git a/builtin/gc.c b/builtin/gc.c
index 332bcf7e7a..069950d0b4 100644
--- a/builtin/gc.c
+++ b/builtin/gc.c
@@ -28,7 +28,7 @@ static const char * const builtin_gc_usage[] = {
static int pack_refs = 1;
static int prune_reflogs = 1;
-static int aggressive_depth = 250;
+static int aggressive_depth = 50;
static int aggressive_window = 250;
static int gc_auto_threshold = 6700;
static int gc_auto_pack_limit = 50;
diff --git a/builtin/log.c b/builtin/log.c
index 92dc34dcb0..cd9c4a46d1 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1042,7 +1042,6 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout,
diff_flush(&opts);
fprintf(rev->diffopt.file, "\n");
- print_signature(rev->diffopt.file);
}
static const char *clean_message_id(const char *msg_id)
@@ -1361,7 +1360,7 @@ static void print_bases(struct base_tree_info *bases, FILE *file)
return;
/* Show the base commit */
- fprintf(file, "base-commit: %s\n", oid_to_hex(&bases->base_commit));
+ fprintf(file, "\nbase-commit: %s\n", oid_to_hex(&bases->base_commit));
/* Show the prerequisite patches */
for (i = bases->nr_patch_id - 1; i >= 0; i--)
@@ -1720,6 +1719,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
make_cover_letter(&rev, use_stdout,
origin, nr, list, branch_name, quiet);
print_bases(&bases, rev.diffopt.file);
+ print_signature(rev.diffopt.file);
total++;
start_number--;
}
@@ -1779,13 +1779,13 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
if (!use_stdout)
rev.shown_one = 0;
if (shown) {
+ print_bases(&bases, rev.diffopt.file);
if (rev.mime_boundary)
fprintf(rev.diffopt.file, "\n--%s%s--\n\n\n",
mime_boundary_leader,
rev.mime_boundary);
else
print_signature(rev.diffopt.file);
- print_bases(&bases, rev.diffopt.file);
}
if (!use_stdout)
fclose(rev.diffopt.file);
diff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c
index 9c29a64e43..96eed94468 100644
--- a/builtin/symbolic-ref.c
+++ b/builtin/symbolic-ref.c
@@ -56,6 +56,8 @@ int cmd_symbolic_ref(int argc, const char **argv, const char *prefix)
ret = check_symref(argv[0], 1, 0, 0);
if (ret)
die("Cannot delete %s, not a symbolic ref", argv[0]);
+ if (!strcmp(argv[0], "HEAD"))
+ die("deleting '%s' is not allowed", argv[0]);
return delete_ref(argv[0], NULL, REF_NODEREF);
}
diff --git a/cache.h b/cache.h
index b780a91a56..b0dae4bac1 100644
--- a/cache.h
+++ b/cache.h
@@ -1139,6 +1139,16 @@ static inline unsigned int hexval(unsigned char c)
return hexval_table[c];
}
+/*
+ * Convert two consecutive hexadecimal digits into a char. Return a
+ * negative value on error. Don't run over the end of short strings.
+ */
+static inline int hex2chr(const char *s)
+{
+ int val = hexval(s[0]);
+ return (val < 0) ? val : (val << 4) | hexval(s[1]);
+}
+
/* Convert to/from hex/sha1 representation */
#define MINIMUM_ABBREV minimum_abbrev
#define DEFAULT_ABBREV default_abbrev
diff --git a/color.c b/color.c
index 81c2676723..1b95e6b2a7 100644
--- a/color.c
+++ b/color.c
@@ -215,7 +215,7 @@ int color_parse_mem(const char *value, int value_len, char *dst)
/* [fg [bg]] [attr]... */
while (len > 0) {
const char *word = ptr;
- struct color c;
+ struct color c = { COLOR_UNSPECIFIED };
int val, wordlen = 0;
while (len > 0 && !isspace(word[wordlen])) {
diff --git a/compat/nedmalloc/nedmalloc.c b/compat/nedmalloc/nedmalloc.c
index 2d4ef59013..1cc31c3502 100644
--- a/compat/nedmalloc/nedmalloc.c
+++ b/compat/nedmalloc/nedmalloc.c
@@ -948,22 +948,6 @@ void **nedpindependent_comalloc(nedpool *p, size_t elems, size_t *sizes, void **
return ret;
}
-#ifdef OVERRIDE_STRDUP
-/*
- * This implementation is purely there to override the libc version, to
- * avoid a crash due to allocation and free on different 'heaps'.
- */
-char *strdup(const char *s1)
-{
- size_t len = strlen(s1) + 1;
- char *s2 = malloc(len);
-
- if (s2)
- memcpy(s2, s1, len);
- return s2;
-}
-#endif
-
#if defined(__cplusplus)
}
#endif
diff --git a/compat/strdup.c b/compat/strdup.c
new file mode 100644
index 0000000000..f3fb978eb3
--- /dev/null
+++ b/compat/strdup.c
@@ -0,0 +1,11 @@
+#include "../git-compat-util.h"
+
+char *gitstrdup(const char *s1)
+{
+ size_t len = strlen(s1) + 1;
+ char *s2 = malloc(len);
+
+ if (s2)
+ memcpy(s2, s1, len);
+ return s2;
+}
diff --git a/contrib/diff-highlight/Makefile b/contrib/diff-highlight/Makefile
new file mode 100644
index 0000000000..9018724524
--- /dev/null
+++ b/contrib/diff-highlight/Makefile
@@ -0,0 +1,5 @@
+# nothing to build
+all:
+
+test:
+ $(MAKE) -C t
diff --git a/contrib/diff-highlight/diff-highlight b/contrib/diff-highlight/diff-highlight
index ffefc31a98..81bd8040e3 100755
--- a/contrib/diff-highlight/diff-highlight
+++ b/contrib/diff-highlight/diff-highlight
@@ -21,6 +21,10 @@ my $RESET = "\x1b[m";
my $COLOR = qr/\x1b\[[0-9;]*m/;
my $BORING = qr/$COLOR|\s/;
+# The patch portion of git log -p --graph should only ever have preceding | and
+# not / or \ as merge history only shows up on the commit line.
+my $GRAPH = qr/$COLOR?\|$COLOR?\s+/;
+
my @removed;
my @added;
my $in_hunk;
@@ -32,12 +36,12 @@ $SIG{PIPE} = 'DEFAULT';
while (<>) {
if (!$in_hunk) {
print;
- $in_hunk = /^$COLOR*\@/;
+ $in_hunk = /^$GRAPH*$COLOR*\@\@ /;
}
- elsif (/^$COLOR*-/) {
+ elsif (/^$GRAPH*$COLOR*-/) {
push @removed, $_;
}
- elsif (/^$COLOR*\+/) {
+ elsif (/^$GRAPH*$COLOR*\+/) {
push @added, $_;
}
else {
@@ -46,7 +50,7 @@ while (<>) {
@added = ();
print;
- $in_hunk = /^$COLOR*[\@ ]/;
+ $in_hunk = /^$GRAPH*$COLOR*[\@ ]/;
}
# Most of the time there is enough output to keep things streaming,
@@ -163,6 +167,9 @@ sub highlight_pair {
}
}
+# we split either by $COLOR or by character. This has the side effect of
+# leaving in graph cruft. It works because the graph cruft does not contain "-"
+# or "+"
sub split_line {
local $_ = shift;
return utf8::decode($_) ?
@@ -211,8 +218,8 @@ sub is_pair_interesting {
my $suffix_a = join('', @$a[($sa+1)..$#$a]);
my $suffix_b = join('', @$b[($sb+1)..$#$b]);
- return $prefix_a !~ /^$COLOR*-$BORING*$/ ||
- $prefix_b !~ /^$COLOR*\+$BORING*$/ ||
+ return $prefix_a !~ /^$GRAPH*$COLOR*-$BORING*$/ ||
+ $prefix_b !~ /^$GRAPH*$COLOR*\+$BORING*$/ ||
$suffix_a !~ /^$BORING*$/ ||
$suffix_b !~ /^$BORING*$/;
}
diff --git a/contrib/diff-highlight/t/.gitignore b/contrib/diff-highlight/t/.gitignore
new file mode 100644
index 0000000000..7dcbb232cd
--- /dev/null
+++ b/contrib/diff-highlight/t/.gitignore
@@ -0,0 +1,2 @@
+/trash directory*
+/test-results
diff --git a/contrib/diff-highlight/t/Makefile b/contrib/diff-highlight/t/Makefile
new file mode 100644
index 0000000000..5ff5275496
--- /dev/null
+++ b/contrib/diff-highlight/t/Makefile
@@ -0,0 +1,22 @@
+-include ../../../config.mak.autogen
+-include ../../../config.mak
+
+# copied from ../../t/Makefile
+SHELL_PATH ?= $(SHELL)
+SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
+T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh)
+
+all: test
+test: $(T)
+
+.PHONY: help clean all test $(T)
+
+help:
+ @echo 'Run "$(MAKE) test" to launch test scripts'
+ @echo 'Run "$(MAKE) clean" to remove trash folders'
+
+$(T):
+ @echo "*** $@ ***"; '$(SHELL_PATH_SQ)' $@ $(GIT_TEST_OPTS)
+
+clean:
+ $(RM) -r 'trash directory'.*
diff --git a/contrib/diff-highlight/t/t9400-diff-highlight.sh b/contrib/diff-highlight/t/t9400-diff-highlight.sh
new file mode 100755
index 0000000000..3b43dbed74
--- /dev/null
+++ b/contrib/diff-highlight/t/t9400-diff-highlight.sh
@@ -0,0 +1,296 @@
+#!/bin/sh
+
+test_description='Test diff-highlight'
+
+CURR_DIR=$(pwd)
+TEST_OUTPUT_DIRECTORY=$(pwd)
+TEST_DIRECTORY="$CURR_DIR"/../../../t
+DIFF_HIGHLIGHT="$CURR_DIR"/../diff-highlight
+
+CW="$(printf "\033[7m")" # white
+CR="$(printf "\033[27m")" # reset
+
+. "$TEST_DIRECTORY"/test-lib.sh
+
+if ! test_have_prereq PERL
+then
+ skip_all='skipping diff-highlight tests; perl not available'
+ test_done
+fi
+
+# dh_test is a test helper function which takes 3 file names as parameters. The
+# first 2 files are used to generate diff and commit output, which is then
+# piped through diff-highlight. The 3rd file should contain the expected output
+# of diff-highlight (minus the diff/commit header, ie. everything after and
+# including the first @@ line).
+dh_test () {
+ a="$1" b="$2" &&
+
+ cat >patch.exp &&
+
+ {
+ cat "$a" >file &&
+ git add file &&
+ git commit -m "Add a file" &&
+
+ cat "$b" >file &&
+ git diff file >diff.raw &&
+ git commit -a -m "Update a file" &&
+ git show >commit.raw
+ } >/dev/null &&
+
+ "$DIFF_HIGHLIGHT" <diff.raw | test_strip_patch_header >diff.act &&
+ "$DIFF_HIGHLIGHT" <commit.raw | test_strip_patch_header >commit.act &&
+ test_cmp patch.exp diff.act &&
+ test_cmp patch.exp commit.act
+}
+
+test_strip_patch_header () {
+ sed -n '/^@@/,$p' $*
+}
+
+# dh_test_setup_history generates a contrived graph such that we have at least
+# 1 nesting (E) and 2 nestings (F).
+#
+# A branch
+# /
+# D---E---F master
+#
+# git log --all --graph
+# * commit
+# | A
+# | * commit
+# | | F
+# | * commit
+# |/
+# | E
+# * commit
+# D
+#
+dh_test_setup_history () {
+ echo "file1" >file1 &&
+ echo "file2" >file2 &&
+ echo "file3" >file3 &&
+
+ cat file1 >file &&
+ git add file &&
+ git commit -m "D" &&
+
+ git checkout -b branch &&
+ cat file2 >file &&
+ git commit -a -m "A" &&
+
+ git checkout master &&
+ cat file2 >file &&
+ git commit -a -m "E" &&
+
+ cat file3 >file &&
+ git commit -a -m "F"
+}
+
+left_trim () {
+ "$PERL_PATH" -pe 's/^\s+//'
+}
+
+trim_graph () {
+ # graphs start with * or |
+ # followed by a space or / or \
+ "$PERL_PATH" -pe 's@^((\*|\|)( |/|\\))+@@'
+}
+
+test_expect_success 'diff-highlight highlights the beginning of a line' '
+ cat >a <<-\EOF &&
+ aaa
+ bbb
+ ccc
+ EOF
+
+ cat >b <<-\EOF &&
+ aaa
+ 0bb
+ ccc
+ EOF
+
+ dh_test a b <<-EOF
+ @@ -1,3 +1,3 @@
+ aaa
+ -${CW}b${CR}bb
+ +${CW}0${CR}bb
+ ccc
+ EOF
+'
+
+test_expect_success 'diff-highlight highlights the end of a line' '
+ cat >a <<-\EOF &&
+ aaa
+ bbb
+ ccc
+ EOF
+
+ cat >b <<-\EOF &&
+ aaa
+ bb0
+ ccc
+ EOF
+
+ dh_test a b <<-EOF
+ @@ -1,3 +1,3 @@
+ aaa
+ -bb${CW}b${CR}
+ +bb${CW}0${CR}
+ ccc
+ EOF
+'
+
+test_expect_success 'diff-highlight highlights the middle of a line' '
+ cat >a <<-\EOF &&
+ aaa
+ bbb
+ ccc
+ EOF
+
+ cat >b <<-\EOF &&
+ aaa
+ b0b
+ ccc
+ EOF
+
+ dh_test a b <<-EOF
+ @@ -1,3 +1,3 @@
+ aaa
+ -b${CW}b${CR}b
+ +b${CW}0${CR}b
+ ccc
+ EOF
+'
+
+test_expect_success 'diff-highlight does not highlight whole line' '
+ cat >a <<-\EOF &&
+ aaa
+ bbb
+ ccc
+ EOF
+
+ cat >b <<-\EOF &&
+ aaa
+ 000
+ ccc
+ EOF
+
+ dh_test a b <<-EOF
+ @@ -1,3 +1,3 @@
+ aaa
+ -bbb
+ +000
+ ccc
+ EOF
+'
+
+test_expect_failure 'diff-highlight highlights mismatched hunk size' '
+ cat >a <<-\EOF &&
+ aaa
+ bbb
+ EOF
+
+ cat >b <<-\EOF &&
+ aaa
+ b0b
+ ccc
+ EOF
+
+ dh_test a b <<-EOF
+ @@ -1,3 +1,3 @@
+ aaa
+ -b${CW}b${CR}b
+ +b${CW}0${CR}b
+ +ccc
+ EOF
+'
+
+# These two code points share the same leading byte in UTF-8 representation;
+# a naive byte-wise diff would highlight only the second byte.
+#
+# - U+00f3 ("o" with acute)
+o_accent=$(printf '\303\263')
+# - U+00f8 ("o" with stroke)
+o_stroke=$(printf '\303\270')
+
+test_expect_success 'diff-highlight treats multibyte utf-8 as a unit' '
+ echo "unic${o_accent}de" >a &&
+ echo "unic${o_stroke}de" >b &&
+ dh_test a b <<-EOF
+ @@ -1 +1 @@
+ -unic${CW}${o_accent}${CR}de
+ +unic${CW}${o_stroke}${CR}de
+ EOF
+'
+
+# Unlike the UTF-8 above, these are combining code points which are meant
+# to modify the character preceding them:
+#
+# - U+0301 (combining acute accent)
+combine_accent=$(printf '\314\201')
+# - U+0302 (combining circumflex)
+combine_circum=$(printf '\314\202')
+
+test_expect_failure 'diff-highlight treats combining code points as a unit' '
+ echo "unico${combine_accent}de" >a &&
+ echo "unico${combine_circum}de" >b &&
+ dh_test a b <<-EOF
+ @@ -1 +1 @@
+ -unic${CW}o${combine_accent}${CR}de
+ +unic${CW}o${combine_circum}${CR}de
+ EOF
+'
+
+test_expect_success 'diff-highlight works with the --graph option' '
+ dh_test_setup_history &&
+
+ # topo-order so that the order of the commits is the same as with --graph
+ # trim graph elements so we can do a diff
+ # trim leading space because our trim_graph is not perfect
+ git log --branches -p --topo-order |
+ "$DIFF_HIGHLIGHT" | left_trim >graph.exp &&
+ git log --branches -p --graph |
+ "$DIFF_HIGHLIGHT" | trim_graph | left_trim >graph.act &&
+ test_cmp graph.exp graph.act
+'
+
+# Most combined diffs won't meet diff-highlight's line-number filter. So we
+# create one here where one side drops a line and the other modifies it. That
+# should result in a diff like:
+#
+# - modified content
+# ++resolved content
+#
+# which naively looks like one side added "+resolved".
+test_expect_success 'diff-highlight ignores combined diffs' '
+ echo "content" >file &&
+ git add file &&
+ git commit -m base &&
+
+ >file &&
+ git commit -am master &&
+
+ git checkout -b other HEAD^ &&
+ echo "modified content" >file &&
+ git commit -am other &&
+
+ test_must_fail git merge master &&
+ echo "resolved content" >file &&
+ git commit -am resolved &&
+
+ cat >expect <<-\EOF &&
+ --- a/file
+ +++ b/file
+ @@@ -1,1 -1,0 +1,1 @@@
+ - modified content
+ ++resolved content
+ EOF
+
+ git show -c | "$DIFF_HIGHLIGHT" >actual.raw &&
+ sed -n "/^---/,\$p" <actual.raw >actual &&
+ test_cmp expect actual
+'
+
+test_done
diff --git a/diff.c b/diff.c
index 534c12e28e..cc8e81290a 100644
--- a/diff.c
+++ b/diff.c
@@ -354,7 +354,6 @@ struct emit_callback {
const char **label_path;
struct diff_words_data *diff_words;
struct diff_options *opt;
- int *found_changesp;
struct strbuf *header;
};
@@ -722,7 +721,6 @@ static void emit_rewrite_diff(const char *name_a,
memset(&ecbdata, 0, sizeof(ecbdata));
ecbdata.color_diff = want_color(o->use_color);
- ecbdata.found_changesp = &o->found_changes;
ecbdata.ws_rule = whitespace_rule(name_b);
ecbdata.opt = o;
if (ecbdata.ws_rule & WS_BLANK_AT_EOF) {
@@ -1216,12 +1214,13 @@ static void fn_out_consume(void *priv, char *line, unsigned long len)
struct diff_options *o = ecbdata->opt;
const char *line_prefix = diff_line_prefix(o);
+ o->found_changes = 1;
+
if (ecbdata->header) {
- fprintf(ecbdata->opt->file, "%s", ecbdata->header->buf);
+ fprintf(o->file, "%s", ecbdata->header->buf);
strbuf_reset(ecbdata->header);
ecbdata->header = NULL;
}
- *(ecbdata->found_changesp) = 1;
if (ecbdata->label_path[0]) {
const char *name_a_tab, *name_b_tab;
@@ -1229,9 +1228,9 @@ static void fn_out_consume(void *priv, char *line, unsigned long len)
name_a_tab = strchr(ecbdata->label_path[0], ' ') ? "\t" : "";
name_b_tab = strchr(ecbdata->label_path[1], ' ') ? "\t" : "";
- fprintf(ecbdata->opt->file, "%s%s--- %s%s%s\n",
+ fprintf(o->file, "%s%s--- %s%s%s\n",
line_prefix, meta, ecbdata->label_path[0], reset, name_a_tab);
- fprintf(ecbdata->opt->file, "%s%s+++ %s%s%s\n",
+ fprintf(o->file, "%s%s+++ %s%s%s\n",
line_prefix, meta, ecbdata->label_path[1], reset, name_b_tab);
ecbdata->label_path[0] = ecbdata->label_path[1] = NULL;
}
@@ -1249,15 +1248,7 @@ static void fn_out_consume(void *priv, char *line, unsigned long len)
find_lno(line, ecbdata);
emit_hunk_header(ecbdata, line, len);
if (line[len-1] != '\n')
- putc('\n', ecbdata->opt->file);
- return;
- }
-
- if (len < 1) {
- emit_line(ecbdata->opt, reset, reset, line, len);
- if (ecbdata->diff_words
- && ecbdata->diff_words->type == DIFF_WORDS_PORCELAIN)
- fputs("~\n", ecbdata->opt->file);
+ putc('\n', o->file);
return;
}
@@ -1282,8 +1273,8 @@ static void fn_out_consume(void *priv, char *line, unsigned long len)
}
diff_words_flush(ecbdata);
if (ecbdata->diff_words->type == DIFF_WORDS_PORCELAIN) {
- emit_line(ecbdata->opt, context, reset, line, len);
- fputs("~\n", ecbdata->opt->file);
+ emit_line(o, context, reset, line, len);
+ fputs("~\n", o->file);
} else {
/*
* Skip the prefix character, if any. With
@@ -1294,7 +1285,7 @@ static void fn_out_consume(void *priv, char *line, unsigned long len)
line++;
len--;
}
- emit_line(ecbdata->opt, context, reset, line, len);
+ emit_line(o, context, reset, line, len);
}
return;
}
@@ -1316,8 +1307,7 @@ static void fn_out_consume(void *priv, char *line, unsigned long len)
default:
/* incomplete line at the end */
ecbdata->lno_in_preimage++;
- emit_line(ecbdata->opt,
- diff_get_color(ecbdata->color_diff, DIFF_CONTEXT),
+ emit_line(o, diff_get_color(ecbdata->color_diff, DIFF_CONTEXT),
reset, line, len);
break;
}
@@ -2438,7 +2428,6 @@ static void builtin_diff(const char *name_a,
memset(&ecbdata, 0, sizeof(ecbdata));
ecbdata.label_path = lbl;
ecbdata.color_diff = want_color(o->use_color);
- ecbdata.found_changesp = &o->found_changes;
ecbdata.ws_rule = whitespace_rule(name_b);
if (ecbdata.ws_rule & WS_BLANK_AT_EOF)
check_blank_at_eof(&mf1, &mf2, &ecbdata);
diff --git a/git-compat-util.h b/git-compat-util.h
index db89ba7748..68615b1a6a 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -436,6 +436,7 @@ static inline int const_error(void)
return -1;
}
#define error(...) (error(__VA_ARGS__), const_error())
+#define error_errno(...) (error_errno(__VA_ARGS__), const_error())
#endif
extern void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list params));
@@ -663,6 +664,14 @@ void *gitmemmem(const void *haystack, size_t haystacklen,
const void *needle, size_t needlelen);
#endif
+#ifdef OVERRIDE_STRDUP
+#ifdef strdup
+#undef strdup
+#endif
+#define strdup gitstrdup
+char *gitstrdup(const char *s);
+#endif
+
#ifdef NO_GETPAGESIZE
#define getpagesize() sysconf(_SC_PAGESIZE)
#endif
diff --git a/git-gui/lib/commit.tcl b/git-gui/lib/commit.tcl
index 864b687057..01d2cc280b 100644
--- a/git-gui/lib/commit.tcl
+++ b/git-gui/lib/commit.tcl
@@ -369,6 +369,9 @@ A rescan will be automatically started now.
# -- Create the commit.
#
set cmd [list commit-tree $tree_id]
+ if {[is_config_true commit.gpgsign]} {
+ lappend cmd -S
+ }
foreach p [concat $PARENT $MERGE_HEAD] {
lappend cmd -p $p
}
diff --git a/git-gui/po/ja.po b/git-gui/po/ja.po
index 9aff249d5f..208651c1af 100644
--- a/git-gui/po/ja.po
+++ b/git-gui/po/ja.po
@@ -1,47 +1,50 @@
# Translation of git-gui to Japanese
# Copyright (C) 2007 Shawn Pearce
# This file is distributed under the same license as the git-gui package.
+#
# しらいし ななこ <nanako3@bluebottle.com>, 2007.
+# Satoshi Yasushima <s.yasushima@gmail.com>, 2016.
#
msgid ""
msgstr ""
"Project-Id-Version: git-gui\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-01-26 15:47-0800\n"
-"PO-Revision-Date: 2010-02-02 19:03+0900\n"
-"Last-Translator: しらいし ななこ <nanako3@lavabit.com>\n"
+"POT-Creation-Date: 2016-05-27 17:52+0900\n"
+"PO-Revision-Date: 2016-06-22 12:50+0900\n"
+"Last-Translator: Satoshi Yasushima <s.yasushima@gmail.com>\n"
"Language-Team: Japanese\n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: git-gui.sh:41 git-gui.sh:793 git-gui.sh:807 git-gui.sh:820 git-gui.sh:903
-#: git-gui.sh:922
-msgid "git-gui: fatal error"
-msgstr "git-gui: 致命的なエラー"
-
-#: git-gui.sh:743
+#: git-gui.sh:861
#, tcl-format
msgid "Invalid font specified in %s:"
msgstr "%s に無効なフォントが指定されています:"
-#: git-gui.sh:779
+#: git-gui.sh:915
msgid "Main Font"
msgstr "主フォント"
-#: git-gui.sh:780
+#: git-gui.sh:916
msgid "Diff/Console Font"
msgstr "diff/コンソール・フォント"
-#: git-gui.sh:794
+#: git-gui.sh:931 git-gui.sh:945 git-gui.sh:958 git-gui.sh:1048 git-gui.sh:1067
+#: git-gui.sh:3125
+msgid "git-gui: fatal error"
+msgstr "git-gui: 致命的なエラー"
+
+#: git-gui.sh:932
msgid "Cannot find git in PATH."
msgstr "PATH 中に git が見つかりません"
-#: git-gui.sh:821
+#: git-gui.sh:959
msgid "Cannot parse Git version string:"
msgstr "Git バージョン名が理解できません:"
-#: git-gui.sh:839
+#: git-gui.sh:984
#, tcl-format
msgid ""
"Git version cannot be determined.\n"
@@ -60,475 +63,502 @@ msgstr ""
"\n"
"'%s' はバージョン 1.5.0 と思って良いですか?\n"
-#: git-gui.sh:1128
+#: git-gui.sh:1281
msgid "Git directory not found:"
msgstr "Git ディレクトリが見つかりません:"
-#: git-gui.sh:1146
+#: git-gui.sh:1315
msgid "Cannot move to top of working directory:"
msgstr "作業ディレクトリの最上位に移動できません"
-#: git-gui.sh:1154
+#: git-gui.sh:1323
msgid "Cannot use bare repository:"
msgstr "裸のリポジトリは使えません:"
-#: git-gui.sh:1162
+#: git-gui.sh:1331
msgid "No working directory"
msgstr "作業ディレクトリがありません"
-#: git-gui.sh:1334 lib/checkout_op.tcl:306
+#: git-gui.sh:1503 lib/checkout_op.tcl:306
msgid "Refreshing file status..."
msgstr "ファイル状態を更新しています…"
-#: git-gui.sh:1390
+#: git-gui.sh:1563
msgid "Scanning for modified files ..."
msgstr "変更されたファイルをスキャンしています…"
-#: git-gui.sh:1454
+#: git-gui.sh:1639
msgid "Calling prepare-commit-msg hook..."
msgstr "prepare-commit-msg フックを実行中・・・"
-#: git-gui.sh:1471
+#: git-gui.sh:1656
msgid "Commit declined by prepare-commit-msg hook."
msgstr "prepare-commit-msg フックがコミットを拒否しました"
-#: git-gui.sh:1629 lib/browser.tcl:246
+#: git-gui.sh:1814 lib/browser.tcl:252
msgid "Ready."
msgstr "準備完了"
-#: git-gui.sh:1787
+#: git-gui.sh:1978
#, tcl-format
-msgid "Displaying only %s of %s files."
-msgstr "全体で%s個の内の%sファイルだけ表示しています"
+msgid ""
+"Display limit (gui.maxfilesdisplayed = %s) reached, not showing all %s files."
+msgstr ""
+"表示可能な限界 (gui.maxfilesdisplayed = %s) に達しため、全体で%s個のファイル"
+"を表示できません"
-#: git-gui.sh:1913
+#: git-gui.sh:2101
msgid "Unmodified"
msgstr "変更無し"
-#: git-gui.sh:1915
+#: git-gui.sh:2103
msgid "Modified, not staged"
msgstr "変更あり、コミット未予定"
-#: git-gui.sh:1916 git-gui.sh:1924
+#: git-gui.sh:2104 git-gui.sh:2116
msgid "Staged for commit"
msgstr "コミット予定済"
-#: git-gui.sh:1917 git-gui.sh:1925
+#: git-gui.sh:2105 git-gui.sh:2117
msgid "Portions staged for commit"
msgstr "部分的にコミット予定済"
-#: git-gui.sh:1918 git-gui.sh:1926
+#: git-gui.sh:2106 git-gui.sh:2118
msgid "Staged for commit, missing"
msgstr "コミット予定済、ファイル無し"
-#: git-gui.sh:1920
+#: git-gui.sh:2108
msgid "File type changed, not staged"
msgstr "ファイル型変更、コミット未予定"
-#: git-gui.sh:1921
+#: git-gui.sh:2109 git-gui.sh:2110
+msgid "File type changed, old type staged for commit"
+msgstr "ファイル型変更、旧型コミット予定済"
+
+#: git-gui.sh:2111
msgid "File type changed, staged"
msgstr "ファイル型変更、コミット予定済"
-#: git-gui.sh:1923
+#: git-gui.sh:2112
+msgid "File type change staged, modification not staged"
+msgstr "ファイル型変更コミット予定済、変更コミット未予定"
+
+#: git-gui.sh:2113
+msgid "File type change staged, file missing"
+msgstr "ファイル型変更コミット予定済、ファイル無し"
+
+#: git-gui.sh:2115
msgid "Untracked, not staged"
msgstr "管理外、コミット未予定"
-#: git-gui.sh:1928
+#: git-gui.sh:2120
msgid "Missing"
msgstr "ファイル無し"
-#: git-gui.sh:1929
+#: git-gui.sh:2121
msgid "Staged for removal"
msgstr "削除予定済"
-#: git-gui.sh:1930
+#: git-gui.sh:2122
msgid "Staged for removal, still present"
msgstr "削除予定済、ファイル未削除"
-#: git-gui.sh:1932 git-gui.sh:1933 git-gui.sh:1934 git-gui.sh:1935
-#: git-gui.sh:1936 git-gui.sh:1937
+#: git-gui.sh:2124 git-gui.sh:2125 git-gui.sh:2126 git-gui.sh:2127
+#: git-gui.sh:2128 git-gui.sh:2129
msgid "Requires merge resolution"
msgstr "要マージ解決"
-#: git-gui.sh:1972
+#: git-gui.sh:2164
msgid "Starting gitk... please wait..."
msgstr "gitk を起動中…お待ち下さい…"
-#: git-gui.sh:1984
+#: git-gui.sh:2176
msgid "Couldn't find gitk in PATH"
msgstr "PATH 中に gitk が見つかりません"
-#: git-gui.sh:2043
+#: git-gui.sh:2235
msgid "Couldn't find git gui in PATH"
msgstr "PATH 中に git gui が見つかりません"
-#: git-gui.sh:2455 lib/choose_repository.tcl:36
+#: git-gui.sh:2654 lib/choose_repository.tcl:41
msgid "Repository"
msgstr "リポジトリ"
-#: git-gui.sh:2456
+#: git-gui.sh:2655
msgid "Edit"
msgstr "編集"
-#: git-gui.sh:2458 lib/choose_rev.tcl:561
+#: git-gui.sh:2657 lib/choose_rev.tcl:567
msgid "Branch"
msgstr "ブランチ"
-#: git-gui.sh:2461 lib/choose_rev.tcl:548
+#: git-gui.sh:2660 lib/choose_rev.tcl:554
msgid "Commit@@noun"
msgstr "コミット"
-#: git-gui.sh:2464 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168
+#: git-gui.sh:2663 lib/merge.tcl:123 lib/merge.tcl:152 lib/merge.tcl:170
msgid "Merge"
msgstr "マージ"
-#: git-gui.sh:2465 lib/choose_rev.tcl:557
+#: git-gui.sh:2664 lib/choose_rev.tcl:563
msgid "Remote"
msgstr "リモート"
-#: git-gui.sh:2468
+#: git-gui.sh:2667
msgid "Tools"
msgstr "ツール"
-#: git-gui.sh:2477
+#: git-gui.sh:2676
msgid "Explore Working Copy"
msgstr "ワーキングコピーをブラウズ"
-#: git-gui.sh:2483
+#: git-gui.sh:2682
+msgid "Git Bash"
+msgstr ""
+
+#: git-gui.sh:2692
msgid "Browse Current Branch's Files"
msgstr "現在のブランチのファイルを見る"
-#: git-gui.sh:2487
+#: git-gui.sh:2696
msgid "Browse Branch Files..."
msgstr "ブランチのファイルを見る…"
-#: git-gui.sh:2492
+#: git-gui.sh:2701
msgid "Visualize Current Branch's History"
msgstr "現在のブランチの履歴を見る"
-#: git-gui.sh:2496
+#: git-gui.sh:2705
msgid "Visualize All Branch History"
msgstr "全てのブランチの履歴を見る"
-#: git-gui.sh:2503
+#: git-gui.sh:2712
#, tcl-format
msgid "Browse %s's Files"
msgstr "ブランチ %s のファイルを見る"
-#: git-gui.sh:2505
+#: git-gui.sh:2714
#, tcl-format
msgid "Visualize %s's History"
msgstr "ブランチ %s の履歴を見る"
-#: git-gui.sh:2510 lib/database.tcl:27 lib/database.tcl:67
+#: git-gui.sh:2719 lib/database.tcl:40 lib/database.tcl:66
msgid "Database Statistics"
msgstr "データベース統計"
-#: git-gui.sh:2513 lib/database.tcl:34
+#: git-gui.sh:2722 lib/database.tcl:33
msgid "Compress Database"
msgstr "データベース圧縮"
-#: git-gui.sh:2516
+#: git-gui.sh:2725
msgid "Verify Database"
msgstr "データベース検証"
-#: git-gui.sh:2523 git-gui.sh:2527 git-gui.sh:2531 lib/shortcut.tcl:8
+#: git-gui.sh:2732 git-gui.sh:2736 git-gui.sh:2740 lib/shortcut.tcl:8
#: lib/shortcut.tcl:40 lib/shortcut.tcl:72
msgid "Create Desktop Icon"
msgstr "デスクトップ・アイコンを作る"
-#: git-gui.sh:2539 lib/choose_repository.tcl:183 lib/choose_repository.tcl:191
+#: git-gui.sh:2748 lib/choose_repository.tcl:193 lib/choose_repository.tcl:201
msgid "Quit"
msgstr "終了"
-#: git-gui.sh:2547
+#: git-gui.sh:2756
msgid "Undo"
msgstr "元に戻す"
-#: git-gui.sh:2550
+#: git-gui.sh:2759
msgid "Redo"
msgstr "やり直し"
-#: git-gui.sh:2554 git-gui.sh:3109
+#: git-gui.sh:2763 git-gui.sh:3368
msgid "Cut"
msgstr "切り取り"
-#: git-gui.sh:2557 git-gui.sh:3112 git-gui.sh:3186 git-gui.sh:3259
+#: git-gui.sh:2766 git-gui.sh:3371 git-gui.sh:3445 git-gui.sh:3530
#: lib/console.tcl:69
msgid "Copy"
msgstr "コピー"
-#: git-gui.sh:2560 git-gui.sh:3115
+#: git-gui.sh:2769 git-gui.sh:3374
msgid "Paste"
msgstr "貼り付け"
-#: git-gui.sh:2563 git-gui.sh:3118 lib/branch_delete.tcl:26
-#: lib/remote_branch_delete.tcl:38
+#: git-gui.sh:2772 git-gui.sh:3377 lib/remote_branch_delete.tcl:39
+#: lib/branch_delete.tcl:28
msgid "Delete"
msgstr "削除"
-#: git-gui.sh:2567 git-gui.sh:3122 git-gui.sh:3263 lib/console.tcl:71
+#: git-gui.sh:2776 git-gui.sh:3381 git-gui.sh:3534 lib/console.tcl:71
msgid "Select All"
msgstr "全て選択"
-#: git-gui.sh:2576
+#: git-gui.sh:2785
msgid "Create..."
msgstr "作成…"
-#: git-gui.sh:2582
+#: git-gui.sh:2791
msgid "Checkout..."
msgstr "チェックアウト"
-#: git-gui.sh:2588
+#: git-gui.sh:2797
msgid "Rename..."
msgstr "名前変更…"
-#: git-gui.sh:2593
+#: git-gui.sh:2802
msgid "Delete..."
msgstr "削除…"
-#: git-gui.sh:2598
+#: git-gui.sh:2807
msgid "Reset..."
msgstr "リセット…"
-#: git-gui.sh:2608
+#: git-gui.sh:2817
msgid "Done"
msgstr "完了"
-#: git-gui.sh:2610
+#: git-gui.sh:2819
msgid "Commit@@verb"
msgstr "コミット"
-#: git-gui.sh:2619 git-gui.sh:3050
+#: git-gui.sh:2828 git-gui.sh:3309
msgid "New Commit"
msgstr "新規コミット"
-#: git-gui.sh:2627 git-gui.sh:3057
+#: git-gui.sh:2836 git-gui.sh:3316
msgid "Amend Last Commit"
msgstr "最新コミットを訂正"
-#: git-gui.sh:2637 git-gui.sh:3011 lib/remote_branch_delete.tcl:99
+#: git-gui.sh:2846 git-gui.sh:3270 lib/remote_branch_delete.tcl:101
msgid "Rescan"
msgstr "再スキャン"
-#: git-gui.sh:2643
+#: git-gui.sh:2852
msgid "Stage To Commit"
msgstr "コミット予定する"
-#: git-gui.sh:2649
+#: git-gui.sh:2858
msgid "Stage Changed Files To Commit"
msgstr "変更されたファイルをコミット予定"
-#: git-gui.sh:2655
+#: git-gui.sh:2864
msgid "Unstage From Commit"
msgstr "コミットから降ろす"
-#: git-gui.sh:2661 lib/index.tcl:412
+#: git-gui.sh:2870 lib/index.tcl:442
msgid "Revert Changes"
msgstr "変更を元に戻す"
-#: git-gui.sh:2669 git-gui.sh:3310 git-gui.sh:3341
+#: git-gui.sh:2878 git-gui.sh:3581 git-gui.sh:3612
msgid "Show Less Context"
msgstr "文脈を少なく"
-#: git-gui.sh:2673 git-gui.sh:3314 git-gui.sh:3345
+#: git-gui.sh:2882 git-gui.sh:3585 git-gui.sh:3616
msgid "Show More Context"
msgstr "文脈を多く"
-#: git-gui.sh:2680 git-gui.sh:3024 git-gui.sh:3133
+#: git-gui.sh:2889 git-gui.sh:3283 git-gui.sh:3392
msgid "Sign Off"
msgstr "署名"
-#: git-gui.sh:2696
+#: git-gui.sh:2905
msgid "Local Merge..."
msgstr "ローカル・マージ…"
-#: git-gui.sh:2701
+#: git-gui.sh:2910
msgid "Abort Merge..."
msgstr "マージ中止…"
-#: git-gui.sh:2713 git-gui.sh:2741
+#: git-gui.sh:2922 git-gui.sh:2950
msgid "Add..."
msgstr "追加"
-#: git-gui.sh:2717
+#: git-gui.sh:2926
msgid "Push..."
msgstr "プッシュ…"
-#: git-gui.sh:2721
+#: git-gui.sh:2930
msgid "Delete Branch..."
msgstr "ブランチ削除..."
-#: git-gui.sh:2731 git-gui.sh:3292
+#: git-gui.sh:2940 git-gui.sh:3563
msgid "Options..."
msgstr "オプション…"
-#: git-gui.sh:2742
+#: git-gui.sh:2951
msgid "Remove..."
msgstr "削除..."
-#: git-gui.sh:2751 lib/choose_repository.tcl:50
+#: git-gui.sh:2960 lib/choose_repository.tcl:55
msgid "Help"
msgstr "ヘルプ"
-#: git-gui.sh:2755 git-gui.sh:2759 lib/about.tcl:14
-#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:53
+#: git-gui.sh:2964 git-gui.sh:2968 lib/about.tcl:14
+#: lib/choose_repository.tcl:49 lib/choose_repository.tcl:58
#, tcl-format
msgid "About %s"
msgstr "%s について"
-#: git-gui.sh:2783
+#: git-gui.sh:2992
msgid "Online Documentation"
msgstr "オンライン・ドキュメント"
-#: git-gui.sh:2786 lib/choose_repository.tcl:47 lib/choose_repository.tcl:56
+#: git-gui.sh:2995 lib/choose_repository.tcl:52 lib/choose_repository.tcl:61
msgid "Show SSH Key"
msgstr "SSH キーを表示"
-#: git-gui.sh:2893
+#: git-gui.sh:3014 git-gui.sh:3146
+msgid "Usage"
+msgstr "使い方"
+
+#: git-gui.sh:3095 lib/blame.tcl:573
+msgid "Error"
+msgstr "エラー"
+
+#: git-gui.sh:3126
#, tcl-format
msgid "fatal: cannot stat path %s: No such file or directory"
msgstr ""
"致命的: パス %s が stat できません。そのようなファイルやディレクトリはありま"
"せん"
-#: git-gui.sh:2926
+#: git-gui.sh:3159
msgid "Current Branch:"
msgstr "現在のブランチ"
-#: git-gui.sh:2947
+#: git-gui.sh:3185
msgid "Staged Changes (Will Commit)"
msgstr "ステージングされた(コミット予定済の)変更"
-#: git-gui.sh:2967
+#: git-gui.sh:3205
msgid "Unstaged Changes"
msgstr "コミット予定に入っていない変更"
-#: git-gui.sh:3017
+#: git-gui.sh:3276
msgid "Stage Changed"
msgstr "変更をコミット予定に入れる"
-#: git-gui.sh:3036 lib/transport.tcl:104 lib/transport.tcl:193
+#: git-gui.sh:3295 lib/transport.tcl:137 lib/transport.tcl:229
msgid "Push"
msgstr "プッシュ"
-#: git-gui.sh:3071
+#: git-gui.sh:3330
msgid "Initial Commit Message:"
msgstr "最初のコミットメッセージ:"
-#: git-gui.sh:3072
+#: git-gui.sh:3331
msgid "Amended Commit Message:"
msgstr "訂正したコミットメッセージ:"
-#: git-gui.sh:3073
+#: git-gui.sh:3332
msgid "Amended Initial Commit Message:"
msgstr "訂正した最初のコミットメッセージ:"
-#: git-gui.sh:3074
+#: git-gui.sh:3333
msgid "Amended Merge Commit Message:"
msgstr "訂正したマージコミットメッセージ:"
-#: git-gui.sh:3075
+#: git-gui.sh:3334
msgid "Merge Commit Message:"
msgstr "マージコミットメッセージ:"
-#: git-gui.sh:3076
+#: git-gui.sh:3335
msgid "Commit Message:"
msgstr "コミットメッセージ:"
-#: git-gui.sh:3125 git-gui.sh:3267 lib/console.tcl:73
+#: git-gui.sh:3384 git-gui.sh:3538 lib/console.tcl:73
msgid "Copy All"
msgstr "全てコピー"
-#: git-gui.sh:3149 lib/blame.tcl:104
+#: git-gui.sh:3408 lib/blame.tcl:105
msgid "File:"
msgstr "ファイル:"
-#: git-gui.sh:3255
+#: git-gui.sh:3526
msgid "Refresh"
msgstr "再読み込み"
-#: git-gui.sh:3276
+#: git-gui.sh:3547
msgid "Decrease Font Size"
msgstr "フォントを小さく"
-#: git-gui.sh:3280
+#: git-gui.sh:3551
msgid "Increase Font Size"
msgstr "フォントを大きく"
-#: git-gui.sh:3288 lib/blame.tcl:281
+#: git-gui.sh:3559 lib/blame.tcl:294
msgid "Encoding"
msgstr "エンコーディング"
-#: git-gui.sh:3299
+#: git-gui.sh:3570
msgid "Apply/Reverse Hunk"
msgstr "パッチを適用/取り消す"
-#: git-gui.sh:3304
+#: git-gui.sh:3575
msgid "Apply/Reverse Line"
msgstr "パッチ行を適用/取り消す"
-#: git-gui.sh:3323
+#: git-gui.sh:3594
msgid "Run Merge Tool"
msgstr "マージツールを起動"
-#: git-gui.sh:3328
+#: git-gui.sh:3599
msgid "Use Remote Version"
msgstr "リモートの方を採用"
-#: git-gui.sh:3332
+#: git-gui.sh:3603
msgid "Use Local Version"
msgstr "ローカルの方を採用"
-#: git-gui.sh:3336
+#: git-gui.sh:3607
msgid "Revert To Base"
msgstr "ベース版を採用"
-#: git-gui.sh:3354
+#: git-gui.sh:3625
msgid "Visualize These Changes In The Submodule"
msgstr "サブモジュール内のこれらの変更を見る"
-#: git-gui.sh:3358
+#: git-gui.sh:3629
msgid "Visualize Current Branch History In The Submodule"
msgstr "サブモジュール内で現在のブランチの履歴を見る"
-#: git-gui.sh:3362
+#: git-gui.sh:3633
msgid "Visualize All Branch History In The Submodule"
msgstr "サブモジュール内で全てのブランチの履歴を見る"
-#: git-gui.sh:3367
+#: git-gui.sh:3638
msgid "Start git gui In The Submodule"
msgstr "サブモジュール内でgit guiを起動する"
-#: git-gui.sh:3389
+#: git-gui.sh:3673
msgid "Unstage Hunk From Commit"
msgstr "パッチをコミット予定から外す"
-#: git-gui.sh:3391
+#: git-gui.sh:3675
msgid "Unstage Lines From Commit"
msgstr "コミット予定から行を外す"
-#: git-gui.sh:3393
+#: git-gui.sh:3677
msgid "Unstage Line From Commit"
msgstr "コミット予定から行を外す"
-#: git-gui.sh:3396
+#: git-gui.sh:3680
msgid "Stage Hunk For Commit"
msgstr "パッチをコミット予定に加える"
-#: git-gui.sh:3398
+#: git-gui.sh:3682
msgid "Stage Lines For Commit"
msgstr "パッチ行をコミット予定に加える"
-#: git-gui.sh:3400
+#: git-gui.sh:3684
msgid "Stage Line For Commit"
msgstr "パッチ行をコミット予定に加える"
-#: git-gui.sh:3424
+#: git-gui.sh:3709
msgid "Initializing..."
msgstr "初期化しています…"
-#: git-gui.sh:3541
+#: git-gui.sh:3852
#, tcl-format
msgid ""
"Possible environment issues exist.\n"
@@ -543,7 +573,7 @@ msgstr ""
"以下の環境変数は %s が起動する Git サブプロセスによって無視されるでしょう:\n"
"\n"
-#: git-gui.sh:3570
+#: git-gui.sh:3881
msgid ""
"\n"
"This is due to a known issue with the\n"
@@ -553,7 +583,7 @@ msgstr ""
"これは Cygwin で配布されている Tcl バイナリに\n"
"関しての既知の問題によります"
-#: git-gui.sh:3575
+#: git-gui.sh:3886
#, tcl-format
msgid ""
"\n"
@@ -568,249 +598,294 @@ msgstr ""
"個人的な ~/.gitconfig ファイル内で user.name と user.email の値を設定\n"
"するのが、%s の良い代用となります\n"
-#: lib/about.tcl:26
-msgid "git-gui - a graphical user interface for Git."
-msgstr "Git のグラフィカルUI git-gui"
-
-#: lib/blame.tcl:72
-msgid "File Viewer"
-msgstr "ファイルピューワ"
-
-#: lib/blame.tcl:78
-msgid "Commit:"
-msgstr "コミット:"
-
-#: lib/blame.tcl:271
-msgid "Copy Commit"
-msgstr "コミットをコピー"
-
-#: lib/blame.tcl:275
-msgid "Find Text..."
-msgstr "テキストを検索"
-
-#: lib/blame.tcl:284
-msgid "Do Full Copy Detection"
-msgstr "コピー検知"
-
-#: lib/blame.tcl:288
-msgid "Show History Context"
-msgstr "文脈を見せる"
+#: lib/merge.tcl:13
+msgid ""
+"Cannot merge while amending.\n"
+"\n"
+"You must finish amending this commit before starting any type of merge.\n"
+msgstr ""
+"訂正中にはマージできません。\n"
+"\n"
+"訂正処理を完了するまでは新たにマージを開始できません。\n"
-#: lib/blame.tcl:291
-msgid "Blame Parent Commit"
-msgstr "親コミットを註釈"
+#: lib/merge.tcl:27
+msgid ""
+"Last scanned state does not match repository state.\n"
+"\n"
+"Another Git program has modified this repository since the last scan. A "
+"rescan must be performed before a merge can be performed.\n"
+"\n"
+"The rescan will be automatically started now.\n"
+msgstr ""
+"最後にスキャンした状態はリポジトリの状態と合致しません。\n"
+"\n"
+"最後にスキャンして以後、別の Git プログラムがリポジトリを変更しています。マー"
+"ジを開始する前に、再スキャンが必要です。\n"
+"\n"
+"自動的に再スキャンを開始します。\n"
-#: lib/blame.tcl:450
+#: lib/merge.tcl:45
#, tcl-format
-msgid "Reading %s..."
-msgstr "%s を読んでいます…"
-
-#: lib/blame.tcl:557
-msgid "Loading copy/move tracking annotations..."
-msgstr "コピー・移動追跡データを読んでいます…"
-
-#: lib/blame.tcl:577
-msgid "lines annotated"
-msgstr "行を注釈しました"
+msgid ""
+"You are in the middle of a conflicted merge.\n"
+"\n"
+"File %s has merge conflicts.\n"
+"\n"
+"You must resolve them, stage the file, and commit to complete the current "
+"merge. Only then can you begin another merge.\n"
+msgstr ""
+"衝突のあったマージの途中です。\n"
+"\n"
+"ファイル %s にはマージ中の衝突が残っています。\n"
+"\n"
+"このファイルの衝突を解決し、コミット予定に加えて、コミットすることでマージを"
+"完了します。そうやって始めて、新たなマージを開始できるようになります。\n"
-#: lib/blame.tcl:769
-msgid "Loading original location annotations..."
-msgstr "元位置行の注釈データを読んでいます…"
+#: lib/merge.tcl:55
+#, tcl-format
+msgid ""
+"You are in the middle of a change.\n"
+"\n"
+"File %s is modified.\n"
+"\n"
+"You should complete the current commit before starting a merge. Doing so "
+"will help you abort a failed merge, should the need arise.\n"
+msgstr ""
+"変更の途中です。\n"
+"\n"
+"ファイル %s は変更中です。\n"
+"\n"
+"現在のコミットを完了してからマージを開始して下さい。そうする方がマージに失敗"
+"したときの回復が楽です。\n"
-#: lib/blame.tcl:772
-msgid "Annotation complete."
-msgstr "注釈完了しました"
+#: lib/merge.tcl:108
+#, tcl-format
+msgid "%s of %s"
+msgstr "%s の %s ブランチ"
-#: lib/blame.tcl:802
-msgid "Busy"
-msgstr "実行中"
+#: lib/merge.tcl:122
+#, tcl-format
+msgid "Merging %s and %s..."
+msgstr "%s と %s をマージ中・・・"
-#: lib/blame.tcl:803
-msgid "Annotation process is already running."
-msgstr "すでに blame プロセスを実行中です。"
+#: lib/merge.tcl:133
+msgid "Merge completed successfully."
+msgstr "マージが完了しました"
-#: lib/blame.tcl:842
-msgid "Running thorough copy detection..."
-msgstr "コピー検知を実行中…"
+#: lib/merge.tcl:135
+msgid "Merge failed. Conflict resolution is required."
+msgstr "マージが失敗しました。衝突の解決が必要です。"
-#: lib/blame.tcl:910
-msgid "Loading annotation..."
-msgstr "注釈を読み込んでいます…"
+#: lib/merge.tcl:160
+#, tcl-format
+msgid "Merge Into %s"
+msgstr "%s にマージ"
-#: lib/blame.tcl:963
-msgid "Author:"
-msgstr "作者:"
+#: lib/merge.tcl:166 lib/checkout_op.tcl:567 lib/tools_dlg.tcl:336
+msgid "Visualize"
+msgstr "可視化"
-#: lib/blame.tcl:967
-msgid "Committer:"
-msgstr "コミット者:"
+#: lib/merge.tcl:174 lib/remote_branch_delete.tcl:43 lib/branch_delete.tcl:34
+#: lib/checkout_op.tcl:579 lib/branch_rename.tcl:32 lib/tools_dlg.tcl:41
+#: lib/tools_dlg.tcl:202 lib/tools_dlg.tcl:345 lib/option.tcl:127
+#: lib/transport.tcl:141 lib/choose_font.tcl:45 lib/branch_checkout.tcl:30
+#: lib/browser.tcl:292 lib/remote_add.tcl:34 lib/branch_create.tcl:37
+msgid "Cancel"
+msgstr "中止"
-#: lib/blame.tcl:972
-msgid "Original File:"
-msgstr "元ファイル"
+#: lib/merge.tcl:179
+msgid "Revision To Merge"
+msgstr "マージするリビジョン"
-#: lib/blame.tcl:1020
-msgid "Cannot find HEAD commit:"
-msgstr "HEAD コミットが見つかりません"
+#: lib/merge.tcl:214
+msgid ""
+"Cannot abort while amending.\n"
+"\n"
+"You must finish amending this commit.\n"
+msgstr ""
+"訂正中には中止できません。\n"
+"\n"
+"まず今のコミット訂正を完了させて下さい。\n"
-#: lib/blame.tcl:1075
-msgid "Cannot find parent commit:"
-msgstr "親コミットが見つかりません:"
+#: lib/merge.tcl:224
+msgid ""
+"Abort merge?\n"
+"\n"
+"Aborting the current merge will cause *ALL* uncommitted changes to be lost.\n"
+"\n"
+"Continue with aborting the current merge?"
+msgstr ""
+"マージを中断しますか?\n"
+"\n"
+"現在のマージを中断すると、コミットしていない全ての変更が失われます。\n"
+"\n"
+"マージを中断してよろしいですか?"
-#: lib/blame.tcl:1090
-msgid "Unable to display parent"
-msgstr "親を表示できません"
+#: lib/merge.tcl:230
+msgid ""
+"Reset changes?\n"
+"\n"
+"Resetting the changes will cause *ALL* uncommitted changes to be lost.\n"
+"\n"
+"Continue with resetting the current changes?"
+msgstr ""
+"変更点をリセットしますか?\n"
+"\n"
+"変更点をリセットすると、コミットしていない全ての変更が失われます。\n"
+"\n"
+"リセットしてよろしいですか?"
-#: lib/blame.tcl:1091 lib/diff.tcl:320
-msgid "Error loading diff:"
-msgstr "diff を読む際のエラーです:"
+#: lib/merge.tcl:241
+msgid "Aborting"
+msgstr "中断しています"
-#: lib/blame.tcl:1231
-msgid "Originally By:"
-msgstr "原作者:"
+#: lib/merge.tcl:241
+msgid "files reset"
+msgstr "リセットしたファイル"
-#: lib/blame.tcl:1237
-msgid "In File:"
-msgstr "ファイル:"
+#: lib/merge.tcl:269
+msgid "Abort failed."
+msgstr "中断に失敗しました。"
-#: lib/blame.tcl:1242
-msgid "Copied Or Moved Here By:"
-msgstr "複写・移動者:"
+#: lib/merge.tcl:271
+msgid "Abort completed. Ready."
+msgstr "中断完了。"
-#: lib/branch_checkout.tcl:14 lib/branch_checkout.tcl:19
-msgid "Checkout Branch"
-msgstr "ブランチをチェックアウト"
+#: lib/error.tcl:20 lib/error.tcl:116
+msgid "error"
+msgstr "エラー"
-#: lib/branch_checkout.tcl:23
-msgid "Checkout"
-msgstr "チェックアウト"
+#: lib/error.tcl:36
+msgid "warning"
+msgstr "警告"
-#: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35
-#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282
-#: lib/checkout_op.tcl:579 lib/choose_font.tcl:43 lib/merge.tcl:172
-#: lib/option.tcl:125 lib/remote_add.tcl:32 lib/remote_branch_delete.tcl:42
-#: lib/tools_dlg.tcl:40 lib/tools_dlg.tcl:204 lib/tools_dlg.tcl:352
-#: lib/transport.tcl:108
-msgid "Cancel"
-msgstr "中止"
+#: lib/error.tcl:96
+msgid "You must correct the above errors before committing."
+msgstr "コミットする前に、以上のエラーを修正して下さい"
-#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 lib/tools_dlg.tcl:328
-msgid "Revision"
-msgstr "リビジョン"
+#: lib/date.tcl:25
+#, tcl-format
+msgid "Invalid date from Git: %s"
+msgstr "Git から出た無効な日付: %s"
-#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:280
-msgid "Options"
-msgstr "オプション"
+#: lib/encoding.tcl:443
+msgid "Default"
+msgstr "デフォールト"
-#: lib/branch_checkout.tcl:39 lib/branch_create.tcl:92
-msgid "Fetch Tracking Branch"
-msgstr "トラッキング・ブランチをフェッチ"
+#: lib/encoding.tcl:448
+#, tcl-format
+msgid "System (%s)"
+msgstr "システム (%s)"
-#: lib/branch_checkout.tcl:44
-msgid "Detach From Local Branch"
-msgstr "ローカル・ブランチから削除"
+#: lib/encoding.tcl:459 lib/encoding.tcl:465
+msgid "Other"
+msgstr "その他"
-#: lib/branch_create.tcl:22
-msgid "Create Branch"
-msgstr "ブランチを作成"
+#: lib/remote_branch_delete.tcl:29 lib/remote_branch_delete.tcl:34
+msgid "Delete Branch Remotely"
+msgstr "リモートブランチ削除"
-#: lib/branch_create.tcl:27
-msgid "Create New Branch"
-msgstr "ブランチを新規作成"
+#: lib/remote_branch_delete.tcl:48
+msgid "From Repository"
+msgstr "元のリポジトリ"
-#: lib/branch_create.tcl:31 lib/choose_repository.tcl:381
-msgid "Create"
-msgstr "作成"
+#: lib/remote_branch_delete.tcl:51 lib/transport.tcl:165
+msgid "Remote:"
+msgstr "リモート:"
-#: lib/branch_create.tcl:40
-msgid "Branch Name"
-msgstr "ブランチ名"
+#: lib/remote_branch_delete.tcl:72 lib/transport.tcl:187
+msgid "Arbitrary Location:"
+msgstr "任意の位置:"
-#: lib/branch_create.tcl:43 lib/remote_add.tcl:39 lib/tools_dlg.tcl:50
-msgid "Name:"
-msgstr "名前:"
+#: lib/remote_branch_delete.tcl:88
+msgid "Branches"
+msgstr "ブランチ"
-#: lib/branch_create.tcl:58
-msgid "Match Tracking Branch Name"
-msgstr "トラッキング・ブランチ名を合わせる"
+#: lib/remote_branch_delete.tcl:110
+msgid "Delete Only If"
+msgstr "条件付で削除"
-#: lib/branch_create.tcl:66
-msgid "Starting Revision"
-msgstr "初期リビジョン"
+#: lib/remote_branch_delete.tcl:112
+msgid "Merged Into:"
+msgstr "マージ先:"
-#: lib/branch_create.tcl:72
-msgid "Update Existing Branch:"
-msgstr "既存のブランチを更新:"
+#: lib/remote_branch_delete.tcl:120 lib/branch_delete.tcl:53
+msgid "Always (Do not perform merge checks)"
+msgstr "無条件(マージ検査をしない)"
-#: lib/branch_create.tcl:75
-msgid "No"
-msgstr "いいえ"
+#: lib/remote_branch_delete.tcl:153
+msgid "A branch is required for 'Merged Into'."
+msgstr "'マージ先' にはブランチが必要です。"
-#: lib/branch_create.tcl:80
-msgid "Fast Forward Only"
-msgstr "早送りのみ"
+#: lib/remote_branch_delete.tcl:185
+#, tcl-format
+msgid ""
+"The following branches are not completely merged into %s:\n"
+"\n"
+" - %s"
+msgstr ""
+"以下のブランチは %s に完全にマージされていません:\n"
+"\n"
+" - %s"
-#: lib/branch_create.tcl:85 lib/checkout_op.tcl:571
-msgid "Reset"
-msgstr "リセット"
+#: lib/remote_branch_delete.tcl:190
+#, tcl-format
+msgid ""
+"One or more of the merge tests failed because you have not fetched the "
+"necessary commits. Try fetching from %s first."
+msgstr ""
+"必要なコミットが不足しているために、マージ検査が失敗しました。まず %s から"
+"フェッチして下さい。"
-#: lib/branch_create.tcl:97
-msgid "Checkout After Creation"
-msgstr "作成してすぐチェックアウト"
+#: lib/remote_branch_delete.tcl:208
+msgid "Please select one or more branches to delete."
+msgstr "削除するブランチを選択して下さい。"
-#: lib/branch_create.tcl:131
-msgid "Please select a tracking branch."
-msgstr "トラッキング・ブランチを選択して下さい。"
+#: lib/remote_branch_delete.tcl:218 lib/branch_delete.tcl:115
+msgid ""
+"Recovering deleted branches is difficult.\n"
+"\n"
+"Delete the selected branches?"
+msgstr ""
+"削除したブランチを回復するのは困難です。\n"
+"\n"
+"選択したブランチを削除して良いですか?"
-#: lib/branch_create.tcl:140
+#: lib/remote_branch_delete.tcl:227
#, tcl-format
-msgid "Tracking branch %s is not a branch in the remote repository."
-msgstr "トラッキング・ブランチ %s は遠隔リポジトリのブランチではありません。"
+msgid "Deleting branches from %s"
+msgstr "%s からブランチを削除しています。"
-#: lib/branch_create.tcl:153 lib/branch_rename.tcl:86
-msgid "Please supply a branch name."
-msgstr "ブランチ名を指定して下さい。"
+#: lib/remote_branch_delete.tcl:300
+msgid "No repository selected."
+msgstr "リポジトリが選択されていません。"
-#: lib/branch_create.tcl:164 lib/branch_rename.tcl:106
+#: lib/remote_branch_delete.tcl:305
#, tcl-format
-msgid "'%s' is not an acceptable branch name."
-msgstr "'%s' はブランチ名に使えません。"
+msgid "Scanning %s..."
+msgstr "%s をスキャンしています…"
-#: lib/branch_delete.tcl:15
+#: lib/branch_delete.tcl:16
msgid "Delete Branch"
msgstr "ブランチ削除"
-#: lib/branch_delete.tcl:20
+#: lib/branch_delete.tcl:21
msgid "Delete Local Branch"
msgstr "ローカル・ブランチを削除"
-#: lib/branch_delete.tcl:37
+#: lib/branch_delete.tcl:39
msgid "Local Branches"
msgstr "ローカル・ブランチ"
-#: lib/branch_delete.tcl:52
+#: lib/branch_delete.tcl:51
msgid "Delete Only If Merged Into"
msgstr "マージ済みの時のみ削除"
-#: lib/branch_delete.tcl:54 lib/remote_branch_delete.tcl:119
-msgid "Always (Do not perform merge checks)"
-msgstr "無条件(マージ検査をしない)"
-
#: lib/branch_delete.tcl:103
#, tcl-format
msgid "The following branches are not completely merged into %s:"
msgstr "以下のブランチは %s に完全にマージされていません:"
-#: lib/branch_delete.tcl:115 lib/remote_branch_delete.tcl:217
-msgid ""
-"Recovering deleted branches is difficult.\n"
-"\n"
-"Delete the selected branches?"
-msgstr ""
-"削除したブランチを回復するのは困難です。\n"
-"\n"
-"選択したブランチを削除して良いですか?"
-
#: lib/branch_delete.tcl:141
#, tcl-format
msgid ""
@@ -820,62 +895,63 @@ msgstr ""
"以下のブランチを削除できません:\n"
"%s"
-#: lib/branch_rename.tcl:14 lib/branch_rename.tcl:22
-msgid "Rename Branch"
-msgstr "ブランチの名前変更"
+#: lib/choose_rev.tcl:52
+msgid "This Detached Checkout"
+msgstr "分離されたチェックアウト"
-#: lib/branch_rename.tcl:26
-msgid "Rename"
-msgstr "名前変更"
+#: lib/choose_rev.tcl:60
+msgid "Revision Expression:"
+msgstr "リビジョン式:"
-#: lib/branch_rename.tcl:36
-msgid "Branch:"
-msgstr "ブランチ:"
+#: lib/choose_rev.tcl:72
+msgid "Local Branch"
+msgstr "ローカル・ブランチ"
-#: lib/branch_rename.tcl:39
-msgid "New Name:"
-msgstr "新しい名前:"
+#: lib/choose_rev.tcl:77
+msgid "Tracking Branch"
+msgstr "トラッキング・ブランチ"
-#: lib/branch_rename.tcl:75
-msgid "Please select a branch to rename."
-msgstr "名前を変更するブランチを選んで下さい。"
+#: lib/choose_rev.tcl:82 lib/choose_rev.tcl:544
+msgid "Tag"
+msgstr "タグ"
-#: lib/branch_rename.tcl:96 lib/checkout_op.tcl:202
+#: lib/choose_rev.tcl:321
#, tcl-format
-msgid "Branch '%s' already exists."
-msgstr "'%s'というブランチは既に存在します。"
+msgid "Invalid revision: %s"
+msgstr "無効なリビジョン: %s"
-#: lib/branch_rename.tcl:117
-#, tcl-format
-msgid "Failed to rename '%s'."
-msgstr "'%s'の名前変更に失敗しました。"
+#: lib/choose_rev.tcl:342
+msgid "No revision selected."
+msgstr "リビジョンが未選択です。"
-#: lib/browser.tcl:17
-msgid "Starting..."
-msgstr "起動中…"
+#: lib/choose_rev.tcl:350
+msgid "Revision expression is empty."
+msgstr "リビジョン式が空です。"
-#: lib/browser.tcl:26
-msgid "File Browser"
-msgstr "ファイル・ブラウザ"
+#: lib/choose_rev.tcl:537
+msgid "Updated"
+msgstr "更新しました"
-#: lib/browser.tcl:126 lib/browser.tcl:143
-#, tcl-format
-msgid "Loading %s..."
-msgstr "%s をロード中…"
+#: lib/choose_rev.tcl:565
+msgid "URL"
+msgstr "URL"
-#: lib/browser.tcl:187
-msgid "[Up To Parent]"
-msgstr "[上位フォルダへ]"
+#: lib/console.tcl:59
+msgid "Working... please wait..."
+msgstr "実行中…お待ち下さい…"
-#: lib/browser.tcl:267 lib/browser.tcl:273
-msgid "Browse Branch Files"
-msgstr "現在のブランチのファイルを見る"
+#: lib/console.tcl:81 lib/checkout_op.tcl:146 lib/database.tcl:30
+#: lib/sshkey.tcl:55
+msgid "Close"
+msgstr "閉じる"
-#: lib/browser.tcl:278 lib/choose_repository.tcl:398
-#: lib/choose_repository.tcl:486 lib/choose_repository.tcl:497
-#: lib/choose_repository.tcl:1028
-msgid "Browse"
-msgstr "ブラウズ"
+#: lib/console.tcl:186
+msgid "Success"
+msgstr "成功"
+
+#: lib/console.tcl:200
+msgid "Error: Command Failed"
+msgstr "エラー: コマンドが失敗しました"
#: lib/checkout_op.tcl:85
#, tcl-format
@@ -887,11 +963,6 @@ msgstr "%s から %s をフェッチしています"
msgid "fatal: Cannot resolve %s"
msgstr "致命的エラー: %s を解決できません"
-#: lib/checkout_op.tcl:146 lib/console.tcl:81 lib/database.tcl:31
-#: lib/sshkey.tcl:53
-msgid "Close"
-msgstr "閉じる"
-
#: lib/checkout_op.tcl:175
#, tcl-format
msgid "Branch '%s' does not exist."
@@ -902,6 +973,11 @@ msgstr "ブランチ'%s'は存在しません。"
msgid "Failed to configure simplified git-pull for '%s'."
msgstr "'%s' に簡易 git-pull を設定できませんでした"
+#: lib/checkout_op.tcl:202 lib/branch_rename.tcl:102
+#, tcl-format
+msgid "Branch '%s' already exists."
+msgstr "'%s'というブランチは既に存在します。"
+
#: lib/checkout_op.tcl:229
#, tcl-format
msgid ""
@@ -999,9 +1075,9 @@ msgstr "失なわれたコミットを回復するのは簡単ではありませ
msgid "Reset '%s'?"
msgstr "'%s' をリセットしますか?"
-#: lib/checkout_op.tcl:567 lib/merge.tcl:164 lib/tools_dlg.tcl:343
-msgid "Visualize"
-msgstr "可視化"
+#: lib/checkout_op.tcl:571 lib/branch_create.tcl:85
+msgid "Reset"
+msgstr "リセット"
#: lib/checkout_op.tcl:635
#, tcl-format
@@ -1019,509 +1095,838 @@ msgstr ""
"ましたが、 Git の内部データを更新できませんでした。\n"
"起こるはずのないエラーです。あきらめて %s を終了します。"
-#: lib/choose_font.tcl:39
-msgid "Select"
-msgstr "選択"
+#: lib/blame.tcl:73
+msgid "File Viewer"
+msgstr "ファイルピューワ"
-#: lib/choose_font.tcl:53
-msgid "Font Family"
-msgstr "フォント・ファミリー"
+#: lib/blame.tcl:79
+msgid "Commit:"
+msgstr "コミット:"
-#: lib/choose_font.tcl:74
-msgid "Font Size"
-msgstr "フォントの大きさ"
+#: lib/blame.tcl:280
+msgid "Copy Commit"
+msgstr "コミットをコピー"
-#: lib/choose_font.tcl:91
-msgid "Font Example"
-msgstr "フォント・サンプル"
+#: lib/blame.tcl:284
+msgid "Find Text..."
+msgstr "テキストを検索"
-#: lib/choose_font.tcl:103
-msgid ""
-"This is example text.\n"
-"If you like this text, it can be your font."
-msgstr ""
-"これはサンプル文です。\n"
-"このフォントが気に入ればお使いになれます。"
+#: lib/blame.tcl:288
+msgid "Goto Line..."
+msgstr "指定行に移動…"
+
+#: lib/blame.tcl:297
+msgid "Do Full Copy Detection"
+msgstr "コピー検知"
+
+#: lib/blame.tcl:301
+msgid "Show History Context"
+msgstr "文脈を見せる"
+
+#: lib/blame.tcl:304
+msgid "Blame Parent Commit"
+msgstr "親コミットを注釈"
+
+#: lib/blame.tcl:466
+#, tcl-format
+msgid "Reading %s..."
+msgstr "%s を読んでいます…"
+
+#: lib/blame.tcl:594
+msgid "Loading copy/move tracking annotations..."
+msgstr "コピー・移動追跡データを読んでいます…"
+
+#: lib/blame.tcl:614
+msgid "lines annotated"
+msgstr "行を注釈しました"
+
+#: lib/blame.tcl:806
+msgid "Loading original location annotations..."
+msgstr "元位置行の注釈データを読んでいます…"
+
+#: lib/blame.tcl:809
+msgid "Annotation complete."
+msgstr "注釈完了しました"
+
+#: lib/blame.tcl:839
+msgid "Busy"
+msgstr "実行中"
+
+#: lib/blame.tcl:840
+msgid "Annotation process is already running."
+msgstr "すでに blame プロセスを実行中です。"
+
+#: lib/blame.tcl:879
+msgid "Running thorough copy detection..."
+msgstr "コピー検知を実行中…"
+
+#: lib/blame.tcl:947
+msgid "Loading annotation..."
+msgstr "注釈を読み込んでいます…"
-#: lib/choose_repository.tcl:28
+#: lib/blame.tcl:1000
+msgid "Author:"
+msgstr "作者:"
+
+#: lib/blame.tcl:1004
+msgid "Committer:"
+msgstr "コミット者:"
+
+#: lib/blame.tcl:1009
+msgid "Original File:"
+msgstr "元ファイル"
+
+#: lib/blame.tcl:1057
+msgid "Cannot find HEAD commit:"
+msgstr "HEAD コミットが見つかりません"
+
+#: lib/blame.tcl:1112
+msgid "Cannot find parent commit:"
+msgstr "親コミットが見つかりません:"
+
+#: lib/blame.tcl:1127
+msgid "Unable to display parent"
+msgstr "親を表示できません"
+
+#: lib/blame.tcl:1128 lib/diff.tcl:356
+msgid "Error loading diff:"
+msgstr "diff を読む際のエラーです:"
+
+#: lib/blame.tcl:1269
+msgid "Originally By:"
+msgstr "原作者:"
+
+#: lib/blame.tcl:1275
+msgid "In File:"
+msgstr "ファイル:"
+
+#: lib/blame.tcl:1280
+msgid "Copied Or Moved Here By:"
+msgstr "複写・移動者:"
+
+#: lib/about.tcl:26
+msgid "git-gui - a graphical user interface for Git."
+msgstr "Git のグラフィカルUI git-gui"
+
+#: lib/choose_repository.tcl:33
msgid "Git Gui"
msgstr "Git GUI"
-#: lib/choose_repository.tcl:87 lib/choose_repository.tcl:386
+#: lib/choose_repository.tcl:92 lib/choose_repository.tcl:412
msgid "Create New Repository"
msgstr "新しいリポジトリを作る"
-#: lib/choose_repository.tcl:93
+#: lib/choose_repository.tcl:98
msgid "New..."
msgstr "新規…"
-#: lib/choose_repository.tcl:100 lib/choose_repository.tcl:471
+#: lib/choose_repository.tcl:105 lib/choose_repository.tcl:496
msgid "Clone Existing Repository"
msgstr "既存リポジトリを複製する"
-#: lib/choose_repository.tcl:106
+#: lib/choose_repository.tcl:116
msgid "Clone..."
msgstr "複製…"
-#: lib/choose_repository.tcl:113 lib/choose_repository.tcl:1016
+#: lib/choose_repository.tcl:123 lib/choose_repository.tcl:1064
msgid "Open Existing Repository"
msgstr "既存リポジトリを開く"
-#: lib/choose_repository.tcl:119
+#: lib/choose_repository.tcl:129
msgid "Open..."
msgstr "開く…"
-#: lib/choose_repository.tcl:132
+#: lib/choose_repository.tcl:142
msgid "Recent Repositories"
msgstr "最近使ったリポジトリ"
-#: lib/choose_repository.tcl:138
+#: lib/choose_repository.tcl:148
msgid "Open Recent Repository:"
msgstr "最近使ったリポジトリを開く"
-#: lib/choose_repository.tcl:306 lib/choose_repository.tcl:313
-#: lib/choose_repository.tcl:320
+#: lib/choose_repository.tcl:316 lib/choose_repository.tcl:323
+#: lib/choose_repository.tcl:330
#, tcl-format
msgid "Failed to create repository %s:"
msgstr "リポジトリ %s を作製できません:"
-#: lib/choose_repository.tcl:391
+#: lib/choose_repository.tcl:407 lib/branch_create.tcl:33
+msgid "Create"
+msgstr "作成"
+
+#: lib/choose_repository.tcl:417
msgid "Directory:"
msgstr "ディレクトリ:"
-#: lib/choose_repository.tcl:423 lib/choose_repository.tcl:550
-#: lib/choose_repository.tcl:1052
+#: lib/choose_repository.tcl:422 lib/choose_repository.tcl:509
+#: lib/choose_repository.tcl:518 lib/choose_repository.tcl:1074
+#: lib/browser.tcl:288
+msgid "Browse"
+msgstr "ブラウズ"
+
+#: lib/choose_repository.tcl:447 lib/choose_repository.tcl:573
+#: lib/choose_repository.tcl:1098
msgid "Git Repository"
msgstr "GIT リポジトリ"
-#: lib/choose_repository.tcl:448
+#: lib/choose_repository.tcl:472
#, tcl-format
msgid "Directory %s already exists."
msgstr "ディレクトリ '%s' は既に存在します。"
-#: lib/choose_repository.tcl:452
+#: lib/choose_repository.tcl:476
#, tcl-format
msgid "File %s already exists."
msgstr "ファイル '%s' は既に存在します。"
-#: lib/choose_repository.tcl:466
+#: lib/choose_repository.tcl:491
msgid "Clone"
msgstr "複製"
-#: lib/choose_repository.tcl:479
+#: lib/choose_repository.tcl:504
msgid "Source Location:"
msgstr "ソースの位置"
-#: lib/choose_repository.tcl:490
+#: lib/choose_repository.tcl:513
msgid "Target Directory:"
msgstr "先ディレクトリ:"
-#: lib/choose_repository.tcl:502
+#: lib/choose_repository.tcl:523
msgid "Clone Type:"
msgstr "複製方式:"
-#: lib/choose_repository.tcl:508
+#: lib/choose_repository.tcl:528
msgid "Standard (Fast, Semi-Redundant, Hardlinks)"
msgstr "標準(高速・中冗長度・ハードリンク)"
-#: lib/choose_repository.tcl:514
+#: lib/choose_repository.tcl:533
msgid "Full Copy (Slower, Redundant Backup)"
msgstr "全複写(低速・冗長バックアップ)"
-#: lib/choose_repository.tcl:520
+#: lib/choose_repository.tcl:538
msgid "Shared (Fastest, Not Recommended, No Backup)"
msgstr "共有(最高速・非推奨・バックアップ無し)"
-#: lib/choose_repository.tcl:556 lib/choose_repository.tcl:603
-#: lib/choose_repository.tcl:749 lib/choose_repository.tcl:819
-#: lib/choose_repository.tcl:1058 lib/choose_repository.tcl:1066
+#: lib/choose_repository.tcl:545
+msgid "Recursively clone submodules too"
+msgstr "サブモジュールも再帰的に複製する"
+
+#: lib/choose_repository.tcl:579 lib/choose_repository.tcl:626
+#: lib/choose_repository.tcl:772 lib/choose_repository.tcl:842
+#: lib/choose_repository.tcl:1104 lib/choose_repository.tcl:1112
#, tcl-format
msgid "Not a Git repository: %s"
msgstr "Git リポジトリではありません: %s"
-#: lib/choose_repository.tcl:592
+#: lib/choose_repository.tcl:615
msgid "Standard only available for local repository."
msgstr "標準方式は同一計算機上のリポジトリにのみ使えます。"
-#: lib/choose_repository.tcl:596
+#: lib/choose_repository.tcl:619
msgid "Shared only available for local repository."
msgstr "共有方式は同一計算機上のリポジトリにのみ使えます。"
-#: lib/choose_repository.tcl:617
+#: lib/choose_repository.tcl:640
#, tcl-format
msgid "Location %s already exists."
msgstr "'%s' は既に存在します。"
-#: lib/choose_repository.tcl:628
+#: lib/choose_repository.tcl:651
msgid "Failed to configure origin"
msgstr "origin を設定できませんでした"
-#: lib/choose_repository.tcl:640
+#: lib/choose_repository.tcl:663
msgid "Counting objects"
msgstr "オブジェクトを数えています"
-#: lib/choose_repository.tcl:641
+#: lib/choose_repository.tcl:664
msgid "buckets"
msgstr "バケツ"
-#: lib/choose_repository.tcl:665
+#: lib/choose_repository.tcl:688
#, tcl-format
msgid "Unable to copy objects/info/alternates: %s"
msgstr "objects/info/alternates を複写できません: %s"
-#: lib/choose_repository.tcl:701
+#: lib/choose_repository.tcl:724
#, tcl-format
msgid "Nothing to clone from %s."
msgstr "%s から複製する内容はありません"
-#: lib/choose_repository.tcl:703 lib/choose_repository.tcl:917
-#: lib/choose_repository.tcl:929
+#: lib/choose_repository.tcl:726 lib/choose_repository.tcl:940
+#: lib/choose_repository.tcl:952
msgid "The 'master' branch has not been initialized."
msgstr "'master' ブランチが初期化されていません"
-#: lib/choose_repository.tcl:716
+#: lib/choose_repository.tcl:739
msgid "Hardlinks are unavailable. Falling back to copying."
msgstr "ハードリンクが作れないので、コピーします"
-#: lib/choose_repository.tcl:728
+#: lib/choose_repository.tcl:751
#, tcl-format
msgid "Cloning from %s"
msgstr "%s から複製しています"
-#: lib/choose_repository.tcl:759
+#: lib/choose_repository.tcl:782
msgid "Copying objects"
msgstr "オブジェクトを複写しています"
-#: lib/choose_repository.tcl:760
+#: lib/choose_repository.tcl:783
msgid "KiB"
msgstr "KiB"
-#: lib/choose_repository.tcl:784
+#: lib/choose_repository.tcl:807
#, tcl-format
msgid "Unable to copy object: %s"
msgstr "オブジェクトを複写できません: %s"
-#: lib/choose_repository.tcl:794
+#: lib/choose_repository.tcl:817
msgid "Linking objects"
msgstr "オブジェクトを連結しています"
-#: lib/choose_repository.tcl:795
+#: lib/choose_repository.tcl:818
msgid "objects"
msgstr "オブジェクト"
-#: lib/choose_repository.tcl:803
+#: lib/choose_repository.tcl:826
#, tcl-format
msgid "Unable to hardlink object: %s"
msgstr "オブジェクトをハードリンクできません: %s"
-#: lib/choose_repository.tcl:858
+#: lib/choose_repository.tcl:881
msgid "Cannot fetch branches and objects. See console output for details."
msgstr "ブランチやオブジェクトを取得できません。コンソール出力を見て下さい"
-#: lib/choose_repository.tcl:869
+#: lib/choose_repository.tcl:892
msgid "Cannot fetch tags. See console output for details."
msgstr "タグを取得できません。コンソール出力を見て下さい"
-#: lib/choose_repository.tcl:893
+#: lib/choose_repository.tcl:916
msgid "Cannot determine HEAD. See console output for details."
msgstr "HEAD を確定できません。コンソール出力を見て下さい"
-#: lib/choose_repository.tcl:902
+#: lib/choose_repository.tcl:925
#, tcl-format
msgid "Unable to cleanup %s"
msgstr "%s を掃除できません"
-#: lib/choose_repository.tcl:908
+#: lib/choose_repository.tcl:931
msgid "Clone failed."
msgstr "複写に失敗しました。"
-#: lib/choose_repository.tcl:915
+#: lib/choose_repository.tcl:938
msgid "No default branch obtained."
msgstr "デフォールト・ブランチが取得されませんでした"
-#: lib/choose_repository.tcl:926
+#: lib/choose_repository.tcl:949
#, tcl-format
msgid "Cannot resolve %s as a commit."
msgstr "%s をコミットとして解釈できません"
-#: lib/choose_repository.tcl:938
+#: lib/choose_repository.tcl:961
msgid "Creating working directory"
msgstr "作業ディレクトリを作成しています"
-#: lib/choose_repository.tcl:939 lib/index.tcl:67 lib/index.tcl:130
-#: lib/index.tcl:198
+#: lib/choose_repository.tcl:962 lib/index.tcl:70 lib/index.tcl:136
+#: lib/index.tcl:207
msgid "files"
msgstr "ファイル"
-#: lib/choose_repository.tcl:968
+#: lib/choose_repository.tcl:981
+msgid "Cannot clone submodules."
+msgstr "サブモジュールが複製できません。"
+
+#: lib/choose_repository.tcl:990
+msgid "Cloning submodules"
+msgstr "サブモジュールを複製しています"
+
+#: lib/choose_repository.tcl:1015
msgid "Initial file checkout failed."
msgstr "初期チェックアウトに失敗しました"
-#: lib/choose_repository.tcl:1011
+#: lib/choose_repository.tcl:1059
msgid "Open"
msgstr "開く"
-#: lib/choose_repository.tcl:1021
+#: lib/choose_repository.tcl:1069
msgid "Repository:"
msgstr "リポジトリ:"
-#: lib/choose_repository.tcl:1072
+#: lib/choose_repository.tcl:1118
#, tcl-format
msgid "Failed to open repository %s:"
msgstr "リポジトリ %s を開けません:"
-#: lib/choose_rev.tcl:53
-msgid "This Detached Checkout"
-msgstr "分離されたチェックアウト"
+#: lib/branch_rename.tcl:15 lib/branch_rename.tcl:23
+msgid "Rename Branch"
+msgstr "ブランチの名前変更"
-#: lib/choose_rev.tcl:60
-msgid "Revision Expression:"
-msgstr "リビジョン式:"
+#: lib/branch_rename.tcl:28
+msgid "Rename"
+msgstr "名前変更"
-#: lib/choose_rev.tcl:74
-msgid "Local Branch"
-msgstr "ローカル・ブランチ"
+#: lib/branch_rename.tcl:38
+msgid "Branch:"
+msgstr "ブランチ:"
-#: lib/choose_rev.tcl:79
-msgid "Tracking Branch"
-msgstr "トラッキング・ブランチ"
+#: lib/branch_rename.tcl:46
+msgid "New Name:"
+msgstr "新しい名前:"
-#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538
-msgid "Tag"
-msgstr "タグ"
+#: lib/branch_rename.tcl:81
+msgid "Please select a branch to rename."
+msgstr "名前を変更するブランチを選んで下さい。"
+
+#: lib/branch_rename.tcl:92 lib/branch_create.tcl:154
+msgid "Please supply a branch name."
+msgstr "ブランチ名を指定して下さい。"
-#: lib/choose_rev.tcl:317
+#: lib/branch_rename.tcl:112 lib/branch_create.tcl:165
#, tcl-format
-msgid "Invalid revision: %s"
-msgstr "無効なリビジョン: %s"
+msgid "'%s' is not an acceptable branch name."
+msgstr "'%s' はブランチ名に使えません。"
-#: lib/choose_rev.tcl:338
-msgid "No revision selected."
-msgstr "リビジョンが未選択です。"
+#: lib/branch_rename.tcl:123
+#, tcl-format
+msgid "Failed to rename '%s'."
+msgstr "'%s'の名前変更に失敗しました。"
-#: lib/choose_rev.tcl:346
-msgid "Revision expression is empty."
-msgstr "リビジョン式が空です。"
+#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
+msgid "Cannot write shortcut:"
+msgstr "ショートカットが書けません:"
-#: lib/choose_rev.tcl:531
-msgid "Updated"
-msgstr "更新しました"
+#: lib/shortcut.tcl:137
+msgid "Cannot write icon:"
+msgstr "アイコンが書けません:"
-#: lib/choose_rev.tcl:559
-msgid "URL"
-msgstr "URL"
+#: lib/search.tcl:48
+msgid "Find:"
+msgstr "検索:"
-#: lib/commit.tcl:9
-msgid ""
-"There is nothing to amend.\n"
-"\n"
-"You are about to create the initial commit. There is no commit before this "
-"to amend.\n"
-msgstr ""
-"訂正するコミットがそもそもありません。\n"
-"\n"
-"これから作るのは最初のコミットです。その前にはまだ訂正するようなコミットはあ"
-"りません。\n"
+#: lib/search.tcl:50
+msgid "Next"
+msgstr "次"
-#: lib/commit.tcl:18
+#: lib/search.tcl:51
+msgid "Prev"
+msgstr "前"
+
+#: lib/search.tcl:52
+msgid "RegExp"
+msgstr "正規表現"
+
+#: lib/search.tcl:54
+msgid "Case"
+msgstr "大文字小文字を区別"
+
+#: lib/status_bar.tcl:87
+#, tcl-format
+msgid "%s ... %*i of %*i %s (%3i%%)"
+msgstr "%1$s ... %4$*i %6$s 中の %2$*i (%7$3i%%)"
+
+#: lib/tools_dlg.tcl:22
+msgid "Add Tool"
+msgstr "ツールの追加"
+
+#: lib/tools_dlg.tcl:28
+msgid "Add New Tool Command"
+msgstr "新規ツールコマンドの追加"
+
+#: lib/tools_dlg.tcl:34
+msgid "Add globally"
+msgstr "全体に追加"
+
+#: lib/tools_dlg.tcl:37 lib/remote_add.tcl:30
+msgid "Add"
+msgstr "追加"
+
+#: lib/tools_dlg.tcl:46
+msgid "Tool Details"
+msgstr "ツールの詳細"
+
+#: lib/tools_dlg.tcl:49
+msgid "Use '/' separators to create a submenu tree:"
+msgstr "'/' でサブメニューを区切ります:"
+
+#: lib/tools_dlg.tcl:51 lib/remote_add.tcl:41 lib/branch_create.tcl:44
+msgid "Name:"
+msgstr "名前:"
+
+#: lib/tools_dlg.tcl:60
+msgid "Command:"
+msgstr "コマンド:"
+
+#: lib/tools_dlg.tcl:71
+msgid "Show a dialog before running"
+msgstr "起動する前にダイアログを表示"
+
+#: lib/tools_dlg.tcl:77
+msgid "Ask the user to select a revision (sets $REVISION)"
+msgstr "ユーザにコミットを一つ選ばせる ($REVISION にセットします)"
+
+#: lib/tools_dlg.tcl:82
+msgid "Ask the user for additional arguments (sets $ARGS)"
+msgstr "ユーザに他の引数を追加させる ($ARGS にセットします)"
+
+#: lib/tools_dlg.tcl:89
+msgid "Don't show the command output window"
+msgstr "コマンドからの出力ウィンドウを見せない"
+
+#: lib/tools_dlg.tcl:94
+msgid "Run only if a diff is selected ($FILENAME not empty)"
+msgstr "パッチが選ばれているときだけ動かす($FILENAME が空でない)"
+
+#: lib/tools_dlg.tcl:118
+msgid "Please supply a name for the tool."
+msgstr "ツール名を指定して下さい。"
+
+#: lib/tools_dlg.tcl:126
+#, tcl-format
+msgid "Tool '%s' already exists."
+msgstr "ツール '%s' は既に存在します。"
+
+#: lib/tools_dlg.tcl:148
+#, tcl-format
msgid ""
-"Cannot amend while merging.\n"
-"\n"
-"You are currently in the middle of a merge that has not been fully "
-"completed. You cannot amend the prior commit unless you first abort the "
-"current merge activity.\n"
+"Could not add tool:\n"
+"%s"
msgstr ""
-"マージ中にコミットの訂正はできません。\n"
-"\n"
-"現在はまだマージの途中です。先にこのマージを中止しないと、前のコミットの訂正"
-"はできません\n"
+"ツールを追加できません:\n"
+"%s"
-#: lib/commit.tcl:48
-msgid "Error loading commit data for amend:"
-msgstr "訂正するコミットのデータを読めません:"
+#: lib/tools_dlg.tcl:187
+msgid "Remove Tool"
+msgstr "ツールの削除"
-#: lib/commit.tcl:75
-msgid "Unable to obtain your identity:"
-msgstr "ユーザの正体を確認できません:"
+#: lib/tools_dlg.tcl:193
+msgid "Remove Tool Commands"
+msgstr "ツールコマンドの削除"
-#: lib/commit.tcl:80
-msgid "Invalid GIT_COMMITTER_IDENT:"
-msgstr "GIT_COMMITTER_IDENT が無効です:"
+#: lib/tools_dlg.tcl:198
+msgid "Remove"
+msgstr "削除"
-#: lib/commit.tcl:129
+#: lib/tools_dlg.tcl:231
+msgid "(Blue denotes repository-local tools)"
+msgstr "(青色はローカルレポジトリのツールです)"
+
+#: lib/tools_dlg.tcl:292
#, tcl-format
-msgid "warning: Tcl does not support encoding '%s'."
-msgstr "警告: Tcl はエンコーディング '%s' をサポートしていません"
+msgid "Run Command: %s"
+msgstr "コマンドを起動: %s"
-#: lib/commit.tcl:149
+#: lib/tools_dlg.tcl:306
+msgid "Arguments"
+msgstr "引数"
+
+#: lib/tools_dlg.tcl:321 lib/branch_checkout.tcl:35 lib/browser.tcl:297
+msgid "Revision"
+msgstr "リビジョン"
+
+#: lib/tools_dlg.tcl:341
+msgid "OK"
+msgstr "OK"
+
+#: lib/tools.tcl:75
+#, tcl-format
+msgid "Running %s requires a selected file."
+msgstr "ファイルを選択してから %s を起動してください。"
+
+#: lib/tools.tcl:91
+#, tcl-format
+msgid "Are you sure you want to run %1$s on file \"%2$s\"?"
+msgstr "本当にファイル \"%2$s\"で %1$s を起動しますか?"
+
+#: lib/tools.tcl:95
+#, tcl-format
+msgid "Are you sure you want to run %s?"
+msgstr "本当に %s を起動しますか?"
+
+#: lib/tools.tcl:116
+#, tcl-format
+msgid "Tool: %s"
+msgstr "ツール: %s"
+
+#: lib/tools.tcl:117
+#, tcl-format
+msgid "Running: %s"
+msgstr "実行中: %s"
+
+#: lib/tools.tcl:155
+#, tcl-format
+msgid "Tool completed successfully: %s"
+msgstr "ツールが完了しました: %s"
+
+#: lib/tools.tcl:157
+#, tcl-format
+msgid "Tool failed: %s"
+msgstr "ツールが失敗しました: %s"
+
+#: lib/mergetool.tcl:8
+msgid "Force resolution to the base version?"
+msgstr "共通の版を使いますか?"
+
+#: lib/mergetool.tcl:9
+msgid "Force resolution to this branch?"
+msgstr "自分の側の版を使いますか?"
+
+#: lib/mergetool.tcl:10
+msgid "Force resolution to the other branch?"
+msgstr "相手制の版を使いますか?"
+
+#: lib/mergetool.tcl:14
+#, tcl-format
msgid ""
-"Last scanned state does not match repository state.\n"
+"Note that the diff shows only conflicting changes.\n"
"\n"
-"Another Git program has modified this repository since the last scan. A "
-"rescan must be performed before another commit can be created.\n"
+"%s will be overwritten.\n"
"\n"
-"The rescan will be automatically started now.\n"
+"This operation can be undone only by restarting the merge."
msgstr ""
-"最後にスキャンした状態はリポジトリの状態と合致しません。\n"
+"競合する変更点だけが表示されていることに注意してください。\n"
"\n"
-"最後にスキャンして以後、別の Git プログラムがリポジトリを変更しています。新し"
-"くコミットする前に、再スキャンが必要です。\n"
+"%s は上書きされます。\n"
"\n"
-"自動的に再スキャンを開始します。\n"
+"やり直すにはマージ全体をやり直してください。"
-#: lib/commit.tcl:172
+#: lib/mergetool.tcl:45
#, tcl-format
-msgid ""
-"Unmerged files cannot be committed.\n"
-"\n"
-"File %s has merge conflicts. You must resolve them and stage the file "
-"before committing.\n"
+msgid "File %s seems to have unresolved conflicts, still stage?"
msgstr ""
-"マージしていないファイルはコミットできません。\n"
-"\n"
-"ファイル %s にはマージ衝突が残っています。まず解決してコミット予定に加える必"
-"要があります。\n"
+"ファイル %s には解決していない競合部分がまだあるようですが、いいですか?"
+
+#: lib/mergetool.tcl:60
+#, tcl-format
+msgid "Adding resolution for %s"
+msgstr "%s への解決をステージします"
+
+#: lib/mergetool.tcl:141
+msgid "Cannot resolve deletion or link conflicts using a tool"
+msgstr "ツールでは削除やリンク競合は扱えません"
-#: lib/commit.tcl:180
+#: lib/mergetool.tcl:146
+msgid "Conflict file does not exist"
+msgstr "競合ファイルは存在しません。"
+
+#: lib/mergetool.tcl:246
#, tcl-format
-msgid ""
-"Unknown file state %s detected.\n"
-"\n"
-"File %s cannot be committed by this program.\n"
-msgstr ""
-"不明なファイル状態 %s です。\n"
-"\n"
-"ファイル %s は本プログラムではコミットできません。\n"
+msgid "Not a GUI merge tool: '%s'"
+msgstr "GUI マージツールではありません: %s"
-#: lib/commit.tcl:188
+#: lib/mergetool.tcl:275
+#, tcl-format
+msgid "Unsupported merge tool '%s'"
+msgstr "マージツール '%s' はサポートしていません"
+
+#: lib/mergetool.tcl:310
+msgid "Merge tool is already running, terminate it?"
+msgstr "マージツールはすでに起動しています。終了しますか?"
+
+#: lib/mergetool.tcl:330
+#, tcl-format
msgid ""
-"No changes to commit.\n"
-"\n"
-"You must stage at least 1 file before you can commit.\n"
+"Error retrieving versions:\n"
+"%s"
msgstr ""
-"コミットする変更がありません。\n"
-"\n"
-"最低一つの変更をコミット予定に加えてからコミットして下さい。\n"
+"版の取り出し時にエラーが出ました:\n"
+"%s"
-#: lib/commit.tcl:203
+#: lib/mergetool.tcl:350
+#, tcl-format
msgid ""
-"Please supply a commit message.\n"
-"\n"
-"A good commit message has the following format:\n"
+"Could not start the merge tool:\n"
"\n"
-"- First line: Describe in one sentence what you did.\n"
-"- Second line: Blank\n"
-"- Remaining lines: Describe why this change is good.\n"
+"%s"
msgstr ""
-"コミット・メッセージを入力して下さい。\n"
-"\n"
-"正しいコミット・メッセージは:\n"
+"マージツールが起動できません:\n"
"\n"
-"- 第1行: 何をしたか、を1行で要約。\n"
-"- 第2行: 空白\n"
-"- 残りの行: なぜ、この変更が良い変更か、の説明。\n"
-
-#: lib/commit.tcl:234
-msgid "Calling pre-commit hook..."
-msgstr "コミット前フックを実行中・・・"
+"%s"
-#: lib/commit.tcl:249
-msgid "Commit declined by pre-commit hook."
-msgstr "コミット前フックがコミットを拒否しました"
+#: lib/mergetool.tcl:354
+msgid "Running merge tool..."
+msgstr "マージツールを実行しています..."
-#: lib/commit.tcl:272
-msgid "Calling commit-msg hook..."
-msgstr "コミット・メッセージ・フックを実行中・・・"
+#: lib/mergetool.tcl:382 lib/mergetool.tcl:390
+msgid "Merge tool failed."
+msgstr "マージツールが失敗しました。"
-#: lib/commit.tcl:287
-msgid "Commit declined by commit-msg hook."
-msgstr "コミット・メッセージ・フックがコミットを拒否しました"
+#: lib/option.tcl:11
+#, tcl-format
+msgid "Invalid global encoding '%s'"
+msgstr "全体エンコーディングに 無効な %s が指定されています"
-#: lib/commit.tcl:300
-msgid "Committing changes..."
-msgstr "変更点をコミット中・・・"
+#: lib/option.tcl:19
+#, tcl-format
+msgid "Invalid repo encoding '%s'"
+msgstr "リポジトリエンコーディングに 無効な %s が指定されています"
-#: lib/commit.tcl:316
-msgid "write-tree failed:"
-msgstr "write-tree が失敗しました:"
+#: lib/option.tcl:119
+msgid "Restore Defaults"
+msgstr "既定値に戻す"
-#: lib/commit.tcl:317 lib/commit.tcl:361 lib/commit.tcl:382
-msgid "Commit failed."
-msgstr "コミットに失敗しました。"
+#: lib/option.tcl:123
+msgid "Save"
+msgstr "保存"
-#: lib/commit.tcl:334
+#: lib/option.tcl:133
#, tcl-format
-msgid "Commit %s appears to be corrupt"
-msgstr "コミット %s は壊れています"
+msgid "%s Repository"
+msgstr "%s リポジトリ"
-#: lib/commit.tcl:339
-msgid ""
-"No changes to commit.\n"
-"\n"
-"No files were modified by this commit and it was not a merge commit.\n"
-"\n"
-"A rescan will be automatically started now.\n"
-msgstr ""
-"コミットする変更がありません。\n"
-"\n"
-"マージでなく、また、一つも変更点がありません。\n"
-"\n"
-"自動的に再スキャンを開始します。\n"
+#: lib/option.tcl:134
+msgid "Global (All Repositories)"
+msgstr "大域(全てのリポジトリ)"
-#: lib/commit.tcl:346
-msgid "No changes to commit."
-msgstr "コミットする変更がありません。"
+#: lib/option.tcl:140
+msgid "User Name"
+msgstr "ユーザ名"
-#: lib/commit.tcl:360
-msgid "commit-tree failed:"
-msgstr "commit-tree が失敗しました:"
+#: lib/option.tcl:141
+msgid "Email Address"
+msgstr "電子メールアドレス"
-#: lib/commit.tcl:381
-msgid "update-ref failed:"
-msgstr "update-ref が失敗しました:"
+#: lib/option.tcl:143
+msgid "Summarize Merge Commits"
+msgstr "マージコミットの要約"
+
+#: lib/option.tcl:144
+msgid "Merge Verbosity"
+msgstr "マージの冗長度"
+
+#: lib/option.tcl:145
+msgid "Show Diffstat After Merge"
+msgstr "マージ後に diffstat を表示"
+
+#: lib/option.tcl:146
+msgid "Use Merge Tool"
+msgstr "マージツールを使用"
+
+#: lib/option.tcl:148
+msgid "Trust File Modification Timestamps"
+msgstr "ファイル変更時刻を信頼する"
+
+#: lib/option.tcl:149
+msgid "Prune Tracking Branches During Fetch"
+msgstr "フェッチ中にトラッキングブランチを刈る"
-#: lib/commit.tcl:469
+#: lib/option.tcl:150
+msgid "Match Tracking Branches"
+msgstr "トラッキングブランチを合わせる"
+
+#: lib/option.tcl:151
+msgid "Use Textconv For Diffs and Blames"
+msgstr "diff と注釈に textconv を使う"
+
+#: lib/option.tcl:152
+msgid "Blame Copy Only On Changed Files"
+msgstr "変更されたファイルのみコピー検知を行なう"
+
+#: lib/option.tcl:153
+msgid "Maximum Length of Recent Repositories List"
+msgstr "最近使ったリポジトリ一覧の上限"
+
+#: lib/option.tcl:154
+msgid "Minimum Letters To Blame Copy On"
+msgstr "コピーを検知する最少文字数"
+
+#: lib/option.tcl:155
+msgid "Blame History Context Radius (days)"
+msgstr "注釈する履歴半径(日数)"
+
+#: lib/option.tcl:156
+msgid "Number of Diff Context Lines"
+msgstr "diff の文脈行数"
+
+#: lib/option.tcl:157
+msgid "Additional Diff Parameters"
+msgstr "diff の追加引数"
+
+#: lib/option.tcl:158
+msgid "Commit Message Text Width"
+msgstr "コミットメッセージのテキスト幅"
+
+#: lib/option.tcl:159
+msgid "New Branch Name Template"
+msgstr "新しいブランチ名のテンプレート"
+
+#: lib/option.tcl:160
+msgid "Default File Contents Encoding"
+msgstr "ファイル内容のデフォールトエンコーディング"
+
+#: lib/option.tcl:161
+msgid "Warn before committing to a detached head"
+msgstr "分離 HEAD のコミット前に警告する"
+
+#: lib/option.tcl:162
+msgid "Staging of untracked files"
+msgstr "管理外のファイルをコミット予定する"
+
+#: lib/option.tcl:163
+msgid "Show untracked files"
+msgstr "管理外のファイルを表示する"
+
+#: lib/option.tcl:164
+msgid "Tab spacing"
+msgstr "タブ幅"
+
+#: lib/option.tcl:210
+msgid "Change"
+msgstr "変更"
+
+#: lib/option.tcl:254
+msgid "Spelling Dictionary:"
+msgstr "スペルチェック辞書"
+
+#: lib/option.tcl:284
+msgid "Change Font"
+msgstr "フォントを変更"
+
+#: lib/option.tcl:288
#, tcl-format
-msgid "Created commit %s: %s"
-msgstr "コミット %s を作成しました: %s"
+msgid "Choose %s"
+msgstr "%s を選択"
-#: lib/console.tcl:59
-msgid "Working... please wait..."
-msgstr "実行中…お待ち下さい…"
+#: lib/option.tcl:294
+msgid "pt."
+msgstr "ポイント"
-#: lib/console.tcl:186
-msgid "Success"
-msgstr "成功"
+#: lib/option.tcl:308
+msgid "Preferences"
+msgstr "設定"
-#: lib/console.tcl:200
-msgid "Error: Command Failed"
-msgstr "エラー: コマンドが失敗しました"
+#: lib/option.tcl:310 lib/branch_checkout.tcl:39 lib/branch_create.tcl:69
+msgid "Options"
+msgstr "オプション"
-#: lib/database.tcl:43
+#: lib/option.tcl:345
+msgid "Failed to completely save options:"
+msgstr "完全にオプションを保存できません:"
+
+#: lib/database.tcl:42
msgid "Number of loose objects"
msgstr "ばらばらなオブジェクトの数"
-#: lib/database.tcl:44
+#: lib/database.tcl:43
msgid "Disk space used by loose objects"
msgstr "ばらばらなオブジェクトの使用するディスク量"
-#: lib/database.tcl:45
+#: lib/database.tcl:44
msgid "Number of packed objects"
msgstr "パックされたオブジェクトの数"
-#: lib/database.tcl:46
+#: lib/database.tcl:45
msgid "Number of packs"
msgstr "パックの数"
-#: lib/database.tcl:47
+#: lib/database.tcl:46
msgid "Disk space used by packed objects"
msgstr "パックされたオブジェクトの使用するディスク量"
-#: lib/database.tcl:48
+#: lib/database.tcl:47
msgid "Packed objects waiting for pruning"
msgstr "パックに存在するので捨てて良いオブジェクトの数"
-#: lib/database.tcl:49
+#: lib/database.tcl:48
msgid "Garbage files"
msgstr "ゴミファイル"
@@ -1549,12 +1954,132 @@ msgstr ""
"\n"
"データベースを圧縮しますか?"
-#: lib/date.tcl:25
+#: lib/transport.tcl:6 lib/remote_add.tcl:132
#, tcl-format
-msgid "Invalid date from Git: %s"
-msgstr "Git から出た無効な日付: %s"
+msgid "fetch %s"
+msgstr "%s を取得"
-#: lib/diff.tcl:64
+#: lib/transport.tcl:7
+#, tcl-format
+msgid "Fetching new changes from %s"
+msgstr "%s から新しい変更をフェッチしています"
+
+#: lib/transport.tcl:18
+#, tcl-format
+msgid "remote prune %s"
+msgstr "リモート刈込 %s"
+
+#: lib/transport.tcl:19
+#, tcl-format
+msgid "Pruning tracking branches deleted from %s"
+msgstr "%s から削除されたトラッキング・ブランチを刈っています"
+
+#: lib/transport.tcl:25
+msgid "fetch all remotes"
+msgstr "すべてのリモートを取得"
+
+#: lib/transport.tcl:26
+msgid "Fetching new changes from all remotes"
+msgstr "すべてのリモートから新しい変更をフェッチしています"
+
+#: lib/transport.tcl:40
+msgid "remote prune all remotes"
+msgstr "リモート刈込 すべてのリモート"
+
+#: lib/transport.tcl:41
+msgid "Pruning tracking branches deleted from all remotes"
+msgstr "すべてのリモートから削除されたトラッキング・ブランチを刈っています"
+
+#: lib/transport.tcl:54 lib/transport.tcl:92 lib/transport.tcl:110
+#: lib/remote_add.tcl:162
+#, tcl-format
+msgid "push %s"
+msgstr "%s をプッシュ"
+
+#: lib/transport.tcl:55
+#, tcl-format
+msgid "Pushing changes to %s"
+msgstr "%s へ変更をプッシュしています"
+
+#: lib/transport.tcl:93
+#, tcl-format
+msgid "Mirroring to %s"
+msgstr "%s へミラーしています"
+
+#: lib/transport.tcl:111
+#, tcl-format
+msgid "Pushing %s %s to %s"
+msgstr "%3$s へ %1$s %2$s をプッシュしています"
+
+#: lib/transport.tcl:132
+msgid "Push Branches"
+msgstr "ブランチをプッシュ"
+
+#: lib/transport.tcl:147
+msgid "Source Branches"
+msgstr "元のブランチ"
+
+#: lib/transport.tcl:162
+msgid "Destination Repository"
+msgstr "送り先リポジトリ"
+
+#: lib/transport.tcl:205
+msgid "Transfer Options"
+msgstr "通信オプション"
+
+#: lib/transport.tcl:207
+msgid "Force overwrite existing branch (may discard changes)"
+msgstr "既存ブランチを上書き(変更を破棄する可能性があります)"
+
+#: lib/transport.tcl:211
+msgid "Use thin pack (for slow network connections)"
+msgstr "Thin Pack を使う(遅いネットワーク接続)"
+
+#: lib/transport.tcl:215
+msgid "Include tags"
+msgstr "タグを含める"
+
+#: lib/choose_font.tcl:41
+msgid "Select"
+msgstr "選択"
+
+#: lib/choose_font.tcl:55
+msgid "Font Family"
+msgstr "フォント・ファミリー"
+
+#: lib/choose_font.tcl:76
+msgid "Font Size"
+msgstr "フォントの大きさ"
+
+#: lib/choose_font.tcl:93
+msgid "Font Example"
+msgstr "フォント・サンプル"
+
+#: lib/choose_font.tcl:105
+msgid ""
+"This is example text.\n"
+"If you like this text, it can be your font."
+msgstr ""
+"これはサンプル文です。\n"
+"このフォントが気に入ればお使いになれます。"
+
+#: lib/remote.tcl:200
+msgid "Push to"
+msgstr "プッシュ先"
+
+#: lib/remote.tcl:218
+msgid "Remove Remote"
+msgstr "リモートを削除"
+
+#: lib/remote.tcl:223
+msgid "Prune from"
+msgstr "から刈込む…"
+
+#: lib/remote.tcl:228
+msgid "Fetch from"
+msgstr "取得元"
+
+#: lib/diff.tcl:77
#, tcl-format
msgid ""
"No differences detected.\n"
@@ -1576,12 +2101,12 @@ msgstr ""
"\n"
"同様な状態のファイルを探すために、自動的に再スキャンを開始します。"
-#: lib/diff.tcl:104
+#: lib/diff.tcl:117
#, tcl-format
msgid "Loading diff of %s..."
msgstr "%s の変更点をロード中…"
-#: lib/diff.tcl:125
+#: lib/diff.tcl:140
msgid ""
"LOCAL: deleted\n"
"REMOTE:\n"
@@ -1589,7 +2114,7 @@ msgstr ""
"LOCAL: 削除\n"
"Remote:\n"
-#: lib/diff.tcl:130
+#: lib/diff.tcl:145
msgid ""
"REMOTE: deleted\n"
"LOCAL:\n"
@@ -1597,32 +2122,32 @@ msgstr ""
"REMOTE: 削除\n"
"LOCAL:\n"
-#: lib/diff.tcl:137
+#: lib/diff.tcl:152
msgid "LOCAL:\n"
msgstr "LOCAL:\n"
-#: lib/diff.tcl:140
+#: lib/diff.tcl:155
msgid "REMOTE:\n"
msgstr "REMOTE\n"
-#: lib/diff.tcl:202 lib/diff.tcl:319
+#: lib/diff.tcl:217 lib/diff.tcl:355
#, tcl-format
msgid "Unable to display %s"
msgstr "%s を表示できません"
-#: lib/diff.tcl:203
+#: lib/diff.tcl:218
msgid "Error loading file:"
msgstr "ファイルを読む際のエラーです:"
-#: lib/diff.tcl:210
+#: lib/diff.tcl:225
msgid "Git Repository (subproject)"
msgstr "Git リポジトリ(サブプロジェクト)"
-#: lib/diff.tcl:222
+#: lib/diff.tcl:237
msgid "* Binary file (not showing content)."
msgstr "* バイナリファイル(内容は表示しません)"
-#: lib/diff.tcl:227
+#: lib/diff.tcl:242
#, tcl-format
msgid ""
"* Untracked file is %d bytes.\n"
@@ -1631,7 +2156,7 @@ msgstr ""
"* 管理外のファイルの大きさは %d バイトです。\n"
"* 最初の %d バイトだけ表示しています。\n"
-#: lib/diff.tcl:233
+#: lib/diff.tcl:248
#, tcl-format
msgid ""
"\n"
@@ -1643,56 +2168,47 @@ msgstr ""
"* %s は管理外のファイルをここで切りおとしました。\n"
"* 全体を見るには外部エディタを使ってください。\n"
-#: lib/diff.tcl:482
+#: lib/diff.tcl:578
msgid "Failed to unstage selected hunk."
msgstr "選択されたパッチをコミット予定から外せません。"
-#: lib/diff.tcl:489
+#: lib/diff.tcl:585
msgid "Failed to stage selected hunk."
msgstr "選択されたパッチをコミット予定に加えられません。"
-#: lib/diff.tcl:568
+#: lib/diff.tcl:664
msgid "Failed to unstage selected line."
msgstr "選択されたパッチ行をコミット予定から外せません。"
-#: lib/diff.tcl:576
+#: lib/diff.tcl:672
msgid "Failed to stage selected line."
msgstr "選択されたパッチ行をコミット予定に加えられません。"
-#: lib/encoding.tcl:443
-msgid "Default"
-msgstr "デフォールト"
-
-#: lib/encoding.tcl:448
-#, tcl-format
-msgid "System (%s)"
-msgstr "システム (%s)"
-
-#: lib/encoding.tcl:459 lib/encoding.tcl:465
-msgid "Other"
-msgstr "その他"
+#: lib/branch_checkout.tcl:16 lib/branch_checkout.tcl:21
+msgid "Checkout Branch"
+msgstr "ブランチをチェックアウト"
-#: lib/error.tcl:20 lib/error.tcl:114
-msgid "error"
-msgstr "エラー"
+#: lib/branch_checkout.tcl:26
+msgid "Checkout"
+msgstr "チェックアウト"
-#: lib/error.tcl:36
-msgid "warning"
-msgstr "警告"
+#: lib/branch_checkout.tcl:42 lib/branch_create.tcl:92
+msgid "Fetch Tracking Branch"
+msgstr "トラッキング・ブランチをフェッチ"
-#: lib/error.tcl:94
-msgid "You must correct the above errors before committing."
-msgstr "コミットする前に、以上のエラーを修正して下さい"
+#: lib/branch_checkout.tcl:47
+msgid "Detach From Local Branch"
+msgstr "ローカル・ブランチから削除"
#: lib/index.tcl:6
msgid "Unable to unlock the index."
msgstr "インデックスをロックできません"
-#: lib/index.tcl:15
+#: lib/index.tcl:17
msgid "Index Error"
msgstr "索引エラー"
-#: lib/index.tcl:17
+#: lib/index.tcl:19
msgid ""
"Updating the Git index failed. A rescan will be automatically started to "
"resynchronize git-gui."
@@ -1700,433 +2216,330 @@ msgstr ""
"GIT インデックスの更新が失敗しました。git-gui と同期をとるために再スキャンし"
"ます。"
-#: lib/index.tcl:28
+#: lib/index.tcl:30
msgid "Continue"
msgstr "続行"
-#: lib/index.tcl:31
+#: lib/index.tcl:33
msgid "Unlock Index"
msgstr "インデックスのロック解除"
-#: lib/index.tcl:289
+#: lib/index.tcl:298
#, tcl-format
msgid "Unstaging %s from commit"
msgstr "コミットから '%s' を降ろす"
-#: lib/index.tcl:328
+#: lib/index.tcl:337
msgid "Ready to commit."
msgstr "コミット準備完了"
-#: lib/index.tcl:341
+#: lib/index.tcl:350
#, tcl-format
msgid "Adding %s"
msgstr "コミットに %s を加えています"
-#: lib/index.tcl:398
+#: lib/index.tcl:380
+#, tcl-format
+msgid "Stage %d untracked files?"
+msgstr "管理外の %d ファイルをコミット予定としますか?"
+
+#: lib/index.tcl:428
#, tcl-format
msgid "Revert changes in file %s?"
msgstr "ファイル %s にした変更を元に戻しますか?"
-#: lib/index.tcl:400
+#: lib/index.tcl:430
#, tcl-format
msgid "Revert changes in these %i files?"
msgstr "これら %i 個のファイルにした変更を元に戻しますか?"
-#: lib/index.tcl:408
+#: lib/index.tcl:438
msgid "Any unstaged changes will be permanently lost by the revert."
msgstr "変更を元に戻すとコミット予定していない変更は全て失われます。"
-#: lib/index.tcl:411
+#: lib/index.tcl:441
msgid "Do Nothing"
msgstr "何もしない"
-#: lib/index.tcl:429
+#: lib/index.tcl:459
msgid "Reverting selected files"
msgstr "選択されたファイルにした変更を元に戻します"
-#: lib/index.tcl:433
+#: lib/index.tcl:463
#, tcl-format
msgid "Reverting %s"
msgstr "%s にした変更を元に戻します"
-#: lib/merge.tcl:13
+#: lib/sshkey.tcl:31
+msgid "No keys found."
+msgstr "キーがありません。"
+
+#: lib/sshkey.tcl:34
+#, tcl-format
+msgid "Found a public key in: %s"
+msgstr "公開鍵がありました: %s"
+
+#: lib/sshkey.tcl:40
+msgid "Generate Key"
+msgstr "鍵を生成"
+
+#: lib/sshkey.tcl:58
+msgid "Copy To Clipboard"
+msgstr "クリップボードにコピー"
+
+#: lib/sshkey.tcl:72
+msgid "Your OpenSSH Public Key"
+msgstr "あなたの OpenSSH 公開鍵"
+
+#: lib/sshkey.tcl:80
+msgid "Generating..."
+msgstr "生成中..."
+
+#: lib/sshkey.tcl:86
+#, tcl-format
msgid ""
-"Cannot merge while amending.\n"
+"Could not start ssh-keygen:\n"
"\n"
-"You must finish amending this commit before starting any type of merge.\n"
+"%s"
msgstr ""
-"訂正中にはマージできません。\n"
+"ssh-keygen を起動できません:\n"
"\n"
-"訂正処理を完了するまでは新たにマージを開始できません。\n"
+"%s"
-#: lib/merge.tcl:27
+#: lib/sshkey.tcl:113
+msgid "Generation failed."
+msgstr "生成に失敗しました。"
+
+#: lib/sshkey.tcl:120
+msgid "Generation succeeded, but no keys found."
+msgstr "生成には成功しましたが、鍵が見つかりません。"
+
+#: lib/sshkey.tcl:123
+#, tcl-format
+msgid "Your key is in: %s"
+msgstr "あなたの鍵は %s にあります"
+
+#: lib/commit.tcl:9
msgid ""
-"Last scanned state does not match repository state.\n"
-"\n"
-"Another Git program has modified this repository since the last scan. A "
-"rescan must be performed before a merge can be performed.\n"
+"There is nothing to amend.\n"
"\n"
-"The rescan will be automatically started now.\n"
+"You are about to create the initial commit. There is no commit before this "
+"to amend.\n"
msgstr ""
-"最後にスキャンした状態はリポジトリの状態と合致しません。\n"
-"\n"
-"最後にスキャンして以後、別の Git プログラムがリポジトリを変更しています。マー"
-"ジを開始する前に、再スキャンが必要です。\n"
+"訂正するコミットがそもそもありません。\n"
"\n"
-"自動的に再スキャンを開始します。\n"
+"これから作るのは最初のコミットです。その前にはまだ訂正するようなコミットはあ"
+"りません。\n"
-#: lib/merge.tcl:45
-#, tcl-format
+#: lib/commit.tcl:18
msgid ""
-"You are in the middle of a conflicted merge.\n"
-"\n"
-"File %s has merge conflicts.\n"
+"Cannot amend while merging.\n"
"\n"
-"You must resolve them, stage the file, and commit to complete the current "
-"merge. Only then can you begin another merge.\n"
+"You are currently in the middle of a merge that has not been fully "
+"completed. You cannot amend the prior commit unless you first abort the "
+"current merge activity.\n"
msgstr ""
-"衝突のあったマージの途中です。\n"
-"\n"
-"ファイル %s にはマージ中の衝突が残っています。\n"
+"マージ中にコミットの訂正はできません。\n"
"\n"
-"このファイルの衝突を解決し、コミット予定に加えて、コミットすることでマージを"
-"完了します。そうやって始めて、新たなマージを開始できるようになります。\n"
+"現在はまだマージの途中です。先にこのマージを中止しないと、前のコミットの訂正"
+"はできません\n"
-#: lib/merge.tcl:55
+#: lib/commit.tcl:48
+msgid "Error loading commit data for amend:"
+msgstr "訂正するコミットのデータを読めません:"
+
+#: lib/commit.tcl:75
+msgid "Unable to obtain your identity:"
+msgstr "ユーザの正体を確認できません:"
+
+#: lib/commit.tcl:80
+msgid "Invalid GIT_COMMITTER_IDENT:"
+msgstr "GIT_COMMITTER_IDENT が無効です:"
+
+#: lib/commit.tcl:129
#, tcl-format
+msgid "warning: Tcl does not support encoding '%s'."
+msgstr "警告: Tcl はエンコーディング '%s' をサポートしていません"
+
+#: lib/commit.tcl:149
msgid ""
-"You are in the middle of a change.\n"
+"Last scanned state does not match repository state.\n"
"\n"
-"File %s is modified.\n"
+"Another Git program has modified this repository since the last scan. A "
+"rescan must be performed before another commit can be created.\n"
"\n"
-"You should complete the current commit before starting a merge. Doing so "
-"will help you abort a failed merge, should the need arise.\n"
+"The rescan will be automatically started now.\n"
msgstr ""
-"変更の途中です。\n"
+"最後にスキャンした状態はリポジトリの状態と合致しません。\n"
"\n"
-"ファイル %s は変更中です。\n"
+"最後にスキャンして以後、別の Git プログラムがリポジトリを変更しています。新し"
+"くコミットする前に、再スキャンが必要です。\n"
"\n"
-"現在のコミットを完了してからマージを開始して下さい。そうする方がマージに失敗"
-"したときの回復が楽です。\n"
-
-#: lib/merge.tcl:107
-#, tcl-format
-msgid "%s of %s"
-msgstr "%s の %s ブランチ"
+"自動的に再スキャンを開始します。\n"
-#: lib/merge.tcl:120
+#: lib/commit.tcl:173
#, tcl-format
-msgid "Merging %s and %s..."
-msgstr "%s と %s をマージ中・・・"
-
-#: lib/merge.tcl:131
-msgid "Merge completed successfully."
-msgstr "マージが完了しました"
-
-#: lib/merge.tcl:133
-msgid "Merge failed. Conflict resolution is required."
-msgstr "マージが失敗しました。衝突の解決が必要です。"
+msgid ""
+"Unmerged files cannot be committed.\n"
+"\n"
+"File %s has merge conflicts. You must resolve them and stage the file "
+"before committing.\n"
+msgstr ""
+"マージしていないファイルはコミットできません。\n"
+"\n"
+"ファイル %s にはマージ衝突が残っています。まず解決してコミット予定に加える必"
+"要があります。\n"
-#: lib/merge.tcl:158
+#: lib/commit.tcl:181
#, tcl-format
-msgid "Merge Into %s"
-msgstr "%s にマージ"
-
-#: lib/merge.tcl:177
-msgid "Revision To Merge"
-msgstr "マージするリビジョン"
-
-#: lib/merge.tcl:212
msgid ""
-"Cannot abort while amending.\n"
+"Unknown file state %s detected.\n"
"\n"
-"You must finish amending this commit.\n"
+"File %s cannot be committed by this program.\n"
msgstr ""
-"訂正中には中止できません。\n"
+"不明なファイル状態 %s です。\n"
"\n"
-"まず今のコミット訂正を完了させて下さい。\n"
+"ファイル %s は本プログラムではコミットできません。\n"
-#: lib/merge.tcl:222
+#: lib/commit.tcl:189
msgid ""
-"Abort merge?\n"
-"\n"
-"Aborting the current merge will cause *ALL* uncommitted changes to be lost.\n"
+"No changes to commit.\n"
"\n"
-"Continue with aborting the current merge?"
+"You must stage at least 1 file before you can commit.\n"
msgstr ""
-"マージを中断しますか?\n"
-"\n"
-"現在のマージを中断すると、コミットしていない全ての変更が失われます。\n"
+"コミットする変更がありません。\n"
"\n"
-"マージを中断してよろしいですか?"
+"最低一つの変更をコミット予定に加えてからコミットして下さい。\n"
-#: lib/merge.tcl:228
+#: lib/commit.tcl:204
msgid ""
-"Reset changes?\n"
+"Please supply a commit message.\n"
"\n"
-"Resetting the changes will cause *ALL* uncommitted changes to be lost.\n"
+"A good commit message has the following format:\n"
"\n"
-"Continue with resetting the current changes?"
+"- First line: Describe in one sentence what you did.\n"
+"- Second line: Blank\n"
+"- Remaining lines: Describe why this change is good.\n"
msgstr ""
-"変更点をリセットしますか?\n"
+"コミット・メッセージを入力して下さい。\n"
"\n"
-"変更点をリセットすると、コミットしていない全ての変更が失われます。\n"
+"正しいコミット・メッセージは:\n"
"\n"
-"リセットしてよろしいですか?"
-
-#: lib/merge.tcl:239
-msgid "Aborting"
-msgstr "中断しています"
-
-#: lib/merge.tcl:239
-msgid "files reset"
-msgstr "リセットしたファイル"
-
-#: lib/merge.tcl:267
-msgid "Abort failed."
-msgstr "中断に失敗しました。"
-
-#: lib/merge.tcl:269
-msgid "Abort completed. Ready."
-msgstr "中断完了。"
-
-#: lib/mergetool.tcl:8
-msgid "Force resolution to the base version?"
-msgstr "共通の版を使いますか?"
+"- 第1行: 何をしたか、を1行で要約。\n"
+"- 第2行: 空白\n"
+"- 残りの行: なぜ、この変更が良い変更か、の説明。\n"
-#: lib/mergetool.tcl:9
-msgid "Force resolution to this branch?"
-msgstr "自分の側の版を使いますか?"
+#: lib/commit.tcl:235
+msgid "Calling pre-commit hook..."
+msgstr "コミット前フックを実行中・・・"
-#: lib/mergetool.tcl:10
-msgid "Force resolution to the other branch?"
-msgstr "相手制の版を使いますか?"
+#: lib/commit.tcl:250
+msgid "Commit declined by pre-commit hook."
+msgstr "コミット前フックがコミットを拒否しました"
-#: lib/mergetool.tcl:14
-#, tcl-format
+#: lib/commit.tcl:269
msgid ""
-"Note that the diff shows only conflicting changes.\n"
-"\n"
-"%s will be overwritten.\n"
-"\n"
-"This operation can be undone only by restarting the merge."
+"You are about to commit on a detached head. This is a potentially dangerous "
+"thing to do because if you switch to another branch you will lose your "
+"changes and it can be difficult to retrieve them later from the reflog. You "
+"should probably cancel this commit and create a new branch to continue.\n"
+" \n"
+" Do you really want to proceed with your Commit?"
msgstr ""
-"競合する変更点だけが表示されていることに注意してください。\n"
+"分離 HEAD での変更をコミットしようとしています。"
+"これは潜在的に危険な行為で、理由は別のブランチへの切り替えで"
+"変更が消失し、reflog からの事後復旧も困難となるためです。"
+"おそらくこのコミットはキャンセルし新しく作成したブランチで"
+"行うべきです。\n"
"\n"
-"%s は上書きされます。\n"
-"\n"
-"やり直すにはマージ全体をやり直してください。"
+" 本当にコミットを続行しますか?"
-#: lib/mergetool.tcl:45
-#, tcl-format
-msgid "File %s seems to have unresolved conflicts, still stage?"
-msgstr ""
-"ファイル %s には解決していない競合部分がまだあるようですが、いいですか?"
-
-#: lib/mergetool.tcl:60
-#, tcl-format
-msgid "Adding resolution for %s"
-msgstr "%s への解決をステージします"
-
-#: lib/mergetool.tcl:141
-msgid "Cannot resolve deletion or link conflicts using a tool"
-msgstr "ツールでは削除やリンク競合は扱えません"
+#: lib/commit.tcl:290
+msgid "Calling commit-msg hook..."
+msgstr "コミット・メッセージ・フックを実行中・・・"
-#: lib/mergetool.tcl:146
-msgid "Conflict file does not exist"
-msgstr "競合ファイルは存在しません。"
+#: lib/commit.tcl:305
+msgid "Commit declined by commit-msg hook."
+msgstr "コミット・メッセージ・フックがコミットを拒否しました"
-#: lib/mergetool.tcl:264
-#, tcl-format
-msgid "Not a GUI merge tool: '%s'"
-msgstr "GUI マージツールではありません: %s"
+#: lib/commit.tcl:318
+msgid "Committing changes..."
+msgstr "変更点をコミット中・・・"
-#: lib/mergetool.tcl:268
-#, tcl-format
-msgid "Unsupported merge tool '%s'"
-msgstr "マージツール '%s' はサポートしていません"
+#: lib/commit.tcl:334
+msgid "write-tree failed:"
+msgstr "write-tree が失敗しました:"
-#: lib/mergetool.tcl:303
-msgid "Merge tool is already running, terminate it?"
-msgstr "マージツールはすでに起動しています。終了しますか?"
+#: lib/commit.tcl:335 lib/commit.tcl:379 lib/commit.tcl:400
+msgid "Commit failed."
+msgstr "コミットに失敗しました。"
-#: lib/mergetool.tcl:323
+#: lib/commit.tcl:352
#, tcl-format
-msgid ""
-"Error retrieving versions:\n"
-"%s"
-msgstr ""
-"版の取り出し時にエラーが出ました:\n"
-"%s"
+msgid "Commit %s appears to be corrupt"
+msgstr "コミット %s は壊れています"
-#: lib/mergetool.tcl:343
-#, tcl-format
+#: lib/commit.tcl:357
msgid ""
-"Could not start the merge tool:\n"
+"No changes to commit.\n"
"\n"
-"%s"
+"No files were modified by this commit and it was not a merge commit.\n"
+"\n"
+"A rescan will be automatically started now.\n"
msgstr ""
-"マージツールが起動できません:\n"
+"コミットする変更がありません。\n"
"\n"
-"%s"
-
-#: lib/mergetool.tcl:347
-msgid "Running merge tool..."
-msgstr "マージツールを実行しています..."
-
-#: lib/mergetool.tcl:375 lib/mergetool.tcl:383
-msgid "Merge tool failed."
-msgstr "マージツールが失敗しました。"
-
-#: lib/option.tcl:11
-#, tcl-format
-msgid "Invalid global encoding '%s'"
-msgstr "全体エンコーディングに 無効な %s が指定されています"
+"マージでなく、また、一つも変更点がありません。\n"
+"\n"
+"自動的に再スキャンを開始します。\n"
-#: lib/option.tcl:19
-#, tcl-format
-msgid "Invalid repo encoding '%s'"
-msgstr "リポジトリエンコーディングに 無効な %s が指定されています"
+#: lib/commit.tcl:364
+msgid "No changes to commit."
+msgstr "コミットする変更がありません。"
-#: lib/option.tcl:117
-msgid "Restore Defaults"
-msgstr "既定値に戻す"
+#: lib/commit.tcl:378
+msgid "commit-tree failed:"
+msgstr "commit-tree が失敗しました:"
-#: lib/option.tcl:121
-msgid "Save"
-msgstr "保存"
+#: lib/commit.tcl:399
+msgid "update-ref failed:"
+msgstr "update-ref が失敗しました:"
-#: lib/option.tcl:131
+#: lib/commit.tcl:492
#, tcl-format
-msgid "%s Repository"
-msgstr "%s リポジトリ"
-
-#: lib/option.tcl:132
-msgid "Global (All Repositories)"
-msgstr "大域(全てのリポジトリ)"
-
-#: lib/option.tcl:138
-msgid "User Name"
-msgstr "ユーザ名"
-
-#: lib/option.tcl:139
-msgid "Email Address"
-msgstr "電子メールアドレス"
-
-#: lib/option.tcl:141
-msgid "Summarize Merge Commits"
-msgstr "マージコミットの要約"
-
-#: lib/option.tcl:142
-msgid "Merge Verbosity"
-msgstr "マージの冗長度"
-
-#: lib/option.tcl:143
-msgid "Show Diffstat After Merge"
-msgstr "マージ後に diffstat を表示"
-
-#: lib/option.tcl:144
-msgid "Use Merge Tool"
-msgstr "マージツールを使用"
-
-#: lib/option.tcl:146
-msgid "Trust File Modification Timestamps"
-msgstr "ファイル変更時刻を信頼する"
-
-#: lib/option.tcl:147
-msgid "Prune Tracking Branches During Fetch"
-msgstr "フェッチ中にトラッキングブランチを刈る"
-
-#: lib/option.tcl:148
-msgid "Match Tracking Branches"
-msgstr "トラッキングブランチを合わせる"
-
-#: lib/option.tcl:149
-msgid "Blame Copy Only On Changed Files"
-msgstr "変更されたファイルのみコピー検知を行なう"
-
-#: lib/option.tcl:150
-msgid "Minimum Letters To Blame Copy On"
-msgstr "コピーを検知する最少文字数"
-
-#: lib/option.tcl:151
-msgid "Blame History Context Radius (days)"
-msgstr "註釈する履歴半径(日数)"
-
-#: lib/option.tcl:152
-msgid "Number of Diff Context Lines"
-msgstr "diff の文脈行数"
-
-#: lib/option.tcl:153
-msgid "Commit Message Text Width"
-msgstr "コミットメッセージのテキスト幅"
-
-#: lib/option.tcl:154
-msgid "New Branch Name Template"
-msgstr "新しいブランチ名のテンプレート"
-
-#: lib/option.tcl:155
-msgid "Default File Contents Encoding"
-msgstr "ファイル内容のデフォールトエンコーディング"
-
-#: lib/option.tcl:203
-msgid "Change"
-msgstr "変更"
+msgid "Created commit %s: %s"
+msgstr "コミット %s を作成しました: %s"
-#: lib/option.tcl:230
-msgid "Spelling Dictionary:"
-msgstr "スペルチェック辞書"
+#: lib/browser.tcl:17
+msgid "Starting..."
+msgstr "起動中…"
-#: lib/option.tcl:254
-msgid "Change Font"
-msgstr "フォントを変更"
+#: lib/browser.tcl:27
+msgid "File Browser"
+msgstr "ファイル・ブラウザ"
-#: lib/option.tcl:258
+#: lib/browser.tcl:132 lib/browser.tcl:149
#, tcl-format
-msgid "Choose %s"
-msgstr "%s を選択"
-
-#: lib/option.tcl:264
-msgid "pt."
-msgstr "ポイント"
-
-#: lib/option.tcl:278
-msgid "Preferences"
-msgstr "設定"
-
-#: lib/option.tcl:314
-msgid "Failed to completely save options:"
-msgstr "完全にオプションを保存できません:"
-
-#: lib/remote.tcl:163
-msgid "Remove Remote"
-msgstr "リモートを削除"
-
-#: lib/remote.tcl:168
-msgid "Prune from"
-msgstr "から刈込む…"
+msgid "Loading %s..."
+msgstr "%s をロード中…"
-#: lib/remote.tcl:173
-msgid "Fetch from"
-msgstr "取得元"
+#: lib/browser.tcl:193
+msgid "[Up To Parent]"
+msgstr "[上位フォルダへ]"
-#: lib/remote.tcl:215
-msgid "Push to"
-msgstr "プッシュ先"
+#: lib/browser.tcl:275 lib/browser.tcl:282
+msgid "Browse Branch Files"
+msgstr "現在のブランチのファイルを見る"
-#: lib/remote_add.tcl:19
+#: lib/remote_add.tcl:20
msgid "Add Remote"
msgstr "リモートを追加"
-#: lib/remote_add.tcl:24
+#: lib/remote_add.tcl:25
msgid "Add New Remote"
msgstr "リモートを新規に追加"
-#: lib/remote_add.tcl:28 lib/tools_dlg.tcl:36
-msgid "Add"
-msgstr "追加"
-
-#: lib/remote_add.tcl:37
+#: lib/remote_add.tcl:39
msgid "Remote Details"
msgstr "リモートの詳細"
@@ -2134,155 +2547,104 @@ msgstr "リモートの詳細"
msgid "Location:"
msgstr "場所:"
-#: lib/remote_add.tcl:62
+#: lib/remote_add.tcl:60
msgid "Further Action"
msgstr "その他の動作"
-#: lib/remote_add.tcl:65
+#: lib/remote_add.tcl:63
msgid "Fetch Immediately"
msgstr "即座に取得"
-#: lib/remote_add.tcl:71
+#: lib/remote_add.tcl:69
msgid "Initialize Remote Repository and Push"
msgstr "リモートレポジトリを初期化してプッシュ"
-#: lib/remote_add.tcl:77
+#: lib/remote_add.tcl:75
msgid "Do Nothing Else Now"
msgstr "何もしない"
-#: lib/remote_add.tcl:101
+#: lib/remote_add.tcl:100
msgid "Please supply a remote name."
msgstr "リモート名を指定して下さい。"
-#: lib/remote_add.tcl:114
+#: lib/remote_add.tcl:113
#, tcl-format
msgid "'%s' is not an acceptable remote name."
msgstr "'%s' はリモート名に使えません。"
-#: lib/remote_add.tcl:125
+#: lib/remote_add.tcl:124
#, tcl-format
msgid "Failed to add remote '%s' of location '%s'."
msgstr "場所 '%2$s' のリモート '%1$s'の名前変更に失敗しました。"
-#: lib/remote_add.tcl:133 lib/transport.tcl:6
-#, tcl-format
-msgid "fetch %s"
-msgstr "%s を取得"
-
-#: lib/remote_add.tcl:134
+#: lib/remote_add.tcl:133
#, tcl-format
msgid "Fetching the %s"
msgstr "%s からフェッチしています"
-#: lib/remote_add.tcl:157
+#: lib/remote_add.tcl:156
#, tcl-format
msgid "Do not know how to initialize repository at location '%s'."
msgstr "リポジトリ '%s' を初期化できません。"
-#: lib/remote_add.tcl:163 lib/transport.tcl:25 lib/transport.tcl:63
-#: lib/transport.tcl:81
-#, tcl-format
-msgid "push %s"
-msgstr "%s をプッシュ"
-
-#: lib/remote_add.tcl:164
+#: lib/remote_add.tcl:163
#, tcl-format
msgid "Setting up the %s (at %s)"
msgstr "%2$s にある %1$s をセットアップします"
-#: lib/remote_branch_delete.tcl:29 lib/remote_branch_delete.tcl:34
-msgid "Delete Branch Remotely"
-msgstr "遠隔でブランチ削除"
-
-#: lib/remote_branch_delete.tcl:47
-msgid "From Repository"
-msgstr "元のリポジトリ"
+#: lib/line.tcl:17
+msgid "Goto Line:"
+msgstr "行番号"
-#: lib/remote_branch_delete.tcl:50 lib/transport.tcl:134
-msgid "Remote:"
-msgstr "リモート:"
+#: lib/line.tcl:23
+msgid "Go"
+msgstr "移動"
-#: lib/remote_branch_delete.tcl:66 lib/transport.tcl:149
-msgid "Arbitrary Location:"
-msgstr "任意の位置:"
+#: lib/branch_create.tcl:23
+msgid "Create Branch"
+msgstr "ブランチを作成"
-#: lib/remote_branch_delete.tcl:84
-msgid "Branches"
-msgstr "ブランチ"
+#: lib/branch_create.tcl:28
+msgid "Create New Branch"
+msgstr "ブランチを新規作成"
-#: lib/remote_branch_delete.tcl:109
-msgid "Delete Only If"
-msgstr "条件付で削除"
+#: lib/branch_create.tcl:42
+msgid "Branch Name"
+msgstr "ブランチ名"
-#: lib/remote_branch_delete.tcl:111
-msgid "Merged Into:"
-msgstr "マージ先:"
+#: lib/branch_create.tcl:57
+msgid "Match Tracking Branch Name"
+msgstr "トラッキング・ブランチ名を合わせる"
-#: lib/remote_branch_delete.tcl:152
-msgid "A branch is required for 'Merged Into'."
-msgstr "'マージ先' にはブランチが必要です。"
+#: lib/branch_create.tcl:66
+msgid "Starting Revision"
+msgstr "初期リビジョン"
-#: lib/remote_branch_delete.tcl:184
-#, tcl-format
-msgid ""
-"The following branches are not completely merged into %s:\n"
-"\n"
-" - %s"
-msgstr ""
-"以下のブランチは %s に完全にマージされていません:\n"
-"\n"
-" - %s"
+#: lib/branch_create.tcl:72
+msgid "Update Existing Branch:"
+msgstr "既存のブランチを更新:"
-#: lib/remote_branch_delete.tcl:189
-#, tcl-format
-msgid ""
-"One or more of the merge tests failed because you have not fetched the "
-"necessary commits. Try fetching from %s first."
-msgstr ""
-"必要なコミットが不足しているために、マージ検査が失敗しました。まず %s から"
-"フェッチして下さい。"
+#: lib/branch_create.tcl:75
+msgid "No"
+msgstr "いいえ"
-#: lib/remote_branch_delete.tcl:207
-msgid "Please select one or more branches to delete."
-msgstr "削除するブランチを選択して下さい。"
+#: lib/branch_create.tcl:80
+msgid "Fast Forward Only"
+msgstr "早送りのみ"
-#: lib/remote_branch_delete.tcl:226
-#, tcl-format
-msgid "Deleting branches from %s"
-msgstr "%s からブランチを削除しています。"
+#: lib/branch_create.tcl:97
+msgid "Checkout After Creation"
+msgstr "作成してすぐチェックアウト"
-#: lib/remote_branch_delete.tcl:292
-msgid "No repository selected."
-msgstr "リポジトリが選択されていません。"
+#: lib/branch_create.tcl:132
+msgid "Please select a tracking branch."
+msgstr "トラッキング・ブランチを選択して下さい。"
-#: lib/remote_branch_delete.tcl:297
+#: lib/branch_create.tcl:141
#, tcl-format
-msgid "Scanning %s..."
-msgstr "%s をスキャンしています…"
-
-#: lib/search.tcl:21
-msgid "Find:"
-msgstr "検索:"
-
-#: lib/search.tcl:23
-msgid "Next"
-msgstr "次"
-
-#: lib/search.tcl:24
-msgid "Prev"
-msgstr "前"
-
-#: lib/search.tcl:25
-msgid "Case-Sensitive"
-msgstr "大文字小文字を区別"
-
-#: lib/shortcut.tcl:21 lib/shortcut.tcl:62
-msgid "Cannot write shortcut:"
-msgstr "ショートカットが書けません:"
-
-#: lib/shortcut.tcl:137
-msgid "Cannot write icon:"
-msgstr "アイコンが書けません:"
+msgid "Tracking branch %s is not a branch in the remote repository."
+msgstr ""
+"トラッキング・ブランチ %s はリモートリポジトリのブランチではありません。"
#: lib/spellcheck.tcl:57
msgid "Unsupported spell checker"
@@ -2320,236 +2682,3 @@ msgstr "スペルチェッカーが予想外の EOF を返しました"
#: lib/spellcheck.tcl:392
msgid "Spell Checker Failed"
msgstr "スペルチェック失敗"
-
-#: lib/sshkey.tcl:31
-msgid "No keys found."
-msgstr "キーがありません。"
-
-#: lib/sshkey.tcl:34
-#, tcl-format
-msgid "Found a public key in: %s"
-msgstr "公開鍵がありました: %s"
-
-#: lib/sshkey.tcl:40
-msgid "Generate Key"
-msgstr "鍵を生成"
-
-#: lib/sshkey.tcl:56
-msgid "Copy To Clipboard"
-msgstr "クリップボードにコピー"
-
-#: lib/sshkey.tcl:70
-msgid "Your OpenSSH Public Key"
-msgstr "あなたの OpenSSH 公開鍵"
-
-#: lib/sshkey.tcl:78
-msgid "Generating..."
-msgstr "生成中..."
-
-#: lib/sshkey.tcl:84
-#, tcl-format
-msgid ""
-"Could not start ssh-keygen:\n"
-"\n"
-"%s"
-msgstr ""
-"ssh-keygen を起動できません:\n"
-"\n"
-"%s"
-
-#: lib/sshkey.tcl:111
-msgid "Generation failed."
-msgstr "生成に失敗しました。"
-
-#: lib/sshkey.tcl:118
-msgid "Generation succeeded, but no keys found."
-msgstr "生成には成功しましたが、鍵が見つかりません。"
-
-#: lib/sshkey.tcl:121
-#, tcl-format
-msgid "Your key is in: %s"
-msgstr "あなたの鍵は %s にあります"
-
-#: lib/status_bar.tcl:83
-#, tcl-format
-msgid "%s ... %*i of %*i %s (%3i%%)"
-msgstr "%1$s ... %4$*i %6$s 中の %2$*i (%7$3i%%)"
-
-#: lib/tools.tcl:75
-#, tcl-format
-msgid "Running %s requires a selected file."
-msgstr "ファイルを選択してから %s を起動してください。"
-
-#: lib/tools.tcl:90
-#, tcl-format
-msgid "Are you sure you want to run %s?"
-msgstr "本当に %s を起動しますか?"
-
-#: lib/tools.tcl:110
-#, tcl-format
-msgid "Tool: %s"
-msgstr "ツール: %s"
-
-#: lib/tools.tcl:111
-#, tcl-format
-msgid "Running: %s"
-msgstr "実行中: %s"
-
-#: lib/tools.tcl:149
-#, tcl-format
-msgid "Tool completed successfully: %s"
-msgstr "ツールが完了しました: %s"
-
-#: lib/tools.tcl:151
-#, tcl-format
-msgid "Tool failed: %s"
-msgstr "ツールが失敗しました: %s"
-
-#: lib/tools_dlg.tcl:22
-msgid "Add Tool"
-msgstr "ツールの追加"
-
-#: lib/tools_dlg.tcl:28
-msgid "Add New Tool Command"
-msgstr "新規ツールコマンドの追加"
-
-#: lib/tools_dlg.tcl:33
-msgid "Add globally"
-msgstr "全体に追加"
-
-#: lib/tools_dlg.tcl:45
-msgid "Tool Details"
-msgstr "ツールの詳細"
-
-#: lib/tools_dlg.tcl:48
-msgid "Use '/' separators to create a submenu tree:"
-msgstr "'/' でサブメニューを区切ります:"
-
-#: lib/tools_dlg.tcl:61
-msgid "Command:"
-msgstr "コマンド:"
-
-#: lib/tools_dlg.tcl:74
-msgid "Show a dialog before running"
-msgstr "起動する前にダイアログを表示"
-
-#: lib/tools_dlg.tcl:80
-msgid "Ask the user to select a revision (sets $REVISION)"
-msgstr "ユーザにコミットを一つ選ばせる ($REVISION にセットします)"
-
-#: lib/tools_dlg.tcl:85
-msgid "Ask the user for additional arguments (sets $ARGS)"
-msgstr "ユーザに他の引数を追加させる ($ARGS にセットします)"
-
-#: lib/tools_dlg.tcl:92
-msgid "Don't show the command output window"
-msgstr "コマンドからの出力ウィンドウを見せない"
-
-#: lib/tools_dlg.tcl:97
-msgid "Run only if a diff is selected ($FILENAME not empty)"
-msgstr "パッチが選ばれているときだけ動かす($FILENAME が空でない)"
-
-#: lib/tools_dlg.tcl:121
-msgid "Please supply a name for the tool."
-msgstr "ツール名を指定して下さい。"
-
-#: lib/tools_dlg.tcl:129
-#, tcl-format
-msgid "Tool '%s' already exists."
-msgstr "ツール '%s' は既に存在します。"
-
-#: lib/tools_dlg.tcl:151
-#, tcl-format
-msgid ""
-"Could not add tool:\n"
-"%s"
-msgstr ""
-"ツールを追加できません:\n"
-"%s"
-
-#: lib/tools_dlg.tcl:190
-msgid "Remove Tool"
-msgstr "ツールの削除"
-
-#: lib/tools_dlg.tcl:196
-msgid "Remove Tool Commands"
-msgstr "ツールコマンドの削除"
-
-#: lib/tools_dlg.tcl:200
-msgid "Remove"
-msgstr "削除"
-
-#: lib/tools_dlg.tcl:236
-msgid "(Blue denotes repository-local tools)"
-msgstr "(青色はローカルレポジトリのツールです)"
-
-#: lib/tools_dlg.tcl:297
-#, tcl-format
-msgid "Run Command: %s"
-msgstr "コマンドを起動: %s"
-
-#: lib/tools_dlg.tcl:311
-msgid "Arguments"
-msgstr "引数"
-
-#: lib/tools_dlg.tcl:348
-msgid "OK"
-msgstr "OK"
-
-#: lib/transport.tcl:7
-#, tcl-format
-msgid "Fetching new changes from %s"
-msgstr "%s から新しい変更をフェッチしています"
-
-#: lib/transport.tcl:18
-#, tcl-format
-msgid "remote prune %s"
-msgstr "遠隔刈込 %s"
-
-#: lib/transport.tcl:19
-#, tcl-format
-msgid "Pruning tracking branches deleted from %s"
-msgstr "%s から削除されたトラッキング・ブランチを刈っています"
-
-#: lib/transport.tcl:26
-#, tcl-format
-msgid "Pushing changes to %s"
-msgstr "%s へ変更をプッシュしています"
-
-#: lib/transport.tcl:64
-#, tcl-format
-msgid "Mirroring to %s"
-msgstr "%s へミラーしています"
-
-#: lib/transport.tcl:82
-#, tcl-format
-msgid "Pushing %s %s to %s"
-msgstr "%3$s へ %1$s %2$s をプッシュしています"
-
-#: lib/transport.tcl:100
-msgid "Push Branches"
-msgstr "ブランチをプッシュ"
-
-#: lib/transport.tcl:114
-msgid "Source Branches"
-msgstr "元のブランチ"
-
-#: lib/transport.tcl:131
-msgid "Destination Repository"
-msgstr "送り先リポジトリ"
-
-#: lib/transport.tcl:169
-msgid "Transfer Options"
-msgstr "通信オプション"
-
-#: lib/transport.tcl:171
-msgid "Force overwrite existing branch (may discard changes)"
-msgstr "既存ブランチを上書き(変更を破棄する可能性があります)"
-
-#: lib/transport.tcl:175
-msgid "Use thin pack (for slow network connections)"
-msgstr "Thin Pack を使う(遅いネットワーク接続)"
-
-#: lib/transport.tcl:179
-msgid "Include tags"
-msgstr "タグを含める"
diff --git a/git-merge-octopus.sh b/git-merge-octopus.sh
index 308eafd1d3..bcf0d92ec2 100755
--- a/git-merge-octopus.sh
+++ b/git-merge-octopus.sh
@@ -30,7 +30,7 @@ do
esac
done
-# Reject if this is not an Octopus -- resolve should be used instead.
+# Reject if this is not an octopus -- resolve should be used instead.
case "$remotes" in
?*' '?*)
;;
@@ -59,7 +59,7 @@ do
# conflicts. Last round failed and we still had
# a head to merge.
gettextln "Automated merge did not work."
- gettextln "Should not be doing an Octopus."
+ gettextln "Should not be doing an octopus."
exit 2
esac
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 7e558b068c..5e474e4a85 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -1082,7 +1082,7 @@ If they are meant to go into a new commit, run:
git commit \$gpg_sign_opt_quoted
-In both case, once you're done, continue with:
+In both cases, once you're done, continue with:
git rebase --continue
")"
@@ -1141,9 +1141,6 @@ To continue rebase after editing, run:
;;
esac
-git var GIT_COMMITTER_IDENT >/dev/null ||
- die "$(gettext "You need to set your committer info first")"
-
comment_for_reflog start
if test ! -z "$switch_to"
diff --git a/hex.c b/hex.c
index 9619b67af0..ab2610e498 100644
--- a/hex.c
+++ b/hex.c
@@ -39,16 +39,8 @@ int get_sha1_hex(const char *hex, unsigned char *sha1)
{
int i;
for (i = 0; i < GIT_SHA1_RAWSZ; i++) {
- unsigned int val;
- /*
- * hex[1]=='\0' is caught when val is checked below,
- * but if hex[0] is NUL we have to avoid reading
- * past the end of the string:
- */
- if (!hex[0])
- return -1;
- val = (hexval(hex[0]) << 4) | hexval(hex[1]);
- if (val & ~0xff)
+ int val = hex2chr(hex);
+ if (val < 0)
return -1;
*sha1++ = val;
hex += 2;
diff --git a/http.c b/http.c
index cd40b012f8..82ed542690 100644
--- a/http.c
+++ b/http.c
@@ -201,6 +201,13 @@ static void finish_active_slot(struct active_request_slot *slot)
slot->callback_func(slot->callback_data);
}
+static void xmulti_remove_handle(struct active_request_slot *slot)
+{
+#ifdef USE_CURL_MULTI
+ curl_multi_remove_handle(curlm, slot->curl);
+#endif
+}
+
#ifdef USE_CURL_MULTI
static void process_curl_messages(void)
{
@@ -216,7 +223,7 @@ static void process_curl_messages(void)
slot->curl != curl_message->easy_handle)
slot = slot->next;
if (slot != NULL) {
- curl_multi_remove_handle(curlm, slot->curl);
+ xmulti_remove_handle(slot);
slot->curl_result = curl_result;
finish_active_slot(slot);
} else {
@@ -723,7 +730,7 @@ static CURL *get_curl_handle(void)
* precedence here, as in CURL.
*/
if (!curl_http_proxy) {
- if (!strcmp(http_auth.protocol, "https")) {
+ if (http_auth.protocol && !strcmp(http_auth.protocol, "https")) {
var_override(&curl_http_proxy, getenv("HTTPS_PROXY"));
var_override(&curl_http_proxy, getenv("https_proxy"));
} else {
@@ -881,9 +888,7 @@ void http_cleanup(void)
while (slot != NULL) {
struct active_request_slot *next = slot->next;
if (slot->curl != NULL) {
-#ifdef USE_CURL_MULTI
- curl_multi_remove_handle(curlm, slot->curl);
-#endif
+ xmulti_remove_handle(slot);
curl_easy_cleanup(slot->curl);
}
free(slot);
@@ -1022,6 +1027,8 @@ int start_active_slot(struct active_request_slot *slot)
if (curlm_result != CURLM_OK &&
curlm_result != CURLM_CALL_MULTI_PERFORM) {
+ warning("curl_multi_add_handle failed: %s",
+ curl_multi_strerror(curlm_result));
active_requests--;
slot->in_use = 0;
return 0;
@@ -1161,13 +1168,13 @@ void run_active_slot(struct active_request_slot *slot)
static void release_active_slot(struct active_request_slot *slot)
{
closedown_active_slot(slot);
- if (slot->curl && curl_session_count > min_curl_sessions) {
-#ifdef USE_CURL_MULTI
- curl_multi_remove_handle(curlm, slot->curl);
-#endif
- curl_easy_cleanup(slot->curl);
- slot->curl = NULL;
- curl_session_count--;
+ if (slot->curl) {
+ xmulti_remove_handle(slot);
+ if (curl_session_count > min_curl_sessions) {
+ curl_easy_cleanup(slot->curl);
+ slot->curl = NULL;
+ curl_session_count--;
+ }
}
#ifdef USE_CURL_MULTI
fill_active_slots();
diff --git a/patch-ids.c b/patch-ids.c
index 082412aca6..ce285c2e0c 100644
--- a/patch-ids.c
+++ b/patch-ids.c
@@ -4,9 +4,18 @@
#include "sha1-lookup.h"
#include "patch-ids.h"
+static int patch_id_defined(struct commit *commit)
+{
+ /* must be 0 or 1 parents */
+ return !commit->parents || !commit->parents->next;
+}
+
int commit_patch_id(struct commit *commit, struct diff_options *options,
unsigned char *sha1, int diff_header_only)
{
+ if (!patch_id_defined(commit))
+ return -1;
+
if (commit->parents)
diff_tree_sha1(commit->parents->item->object.oid.hash,
commit->object.oid.hash, "", options);
@@ -45,6 +54,7 @@ int init_patch_ids(struct patch_ids *ids)
{
memset(ids, 0, sizeof(*ids));
diff_setup(&ids->diffopts);
+ ids->diffopts.detect_rename = 0;
DIFF_OPT_SET(&ids->diffopts, RECURSIVE);
diff_setup_done(&ids->diffopts);
hashmap_init(&ids->patches, (hashmap_cmp_fn)patch_id_cmp, 256);
@@ -76,6 +86,9 @@ struct patch_id *has_commit_patch_id(struct commit *commit,
{
struct patch_id patch;
+ if (!patch_id_defined(commit))
+ return NULL;
+
memset(&patch, 0, sizeof(patch));
if (init_patch_id_entry(&patch, commit, ids))
return NULL;
@@ -88,6 +101,9 @@ struct patch_id *add_commit_patch_id(struct commit *commit,
{
struct patch_id *key = xcalloc(1, sizeof(*key));
+ if (!patch_id_defined(commit))
+ return NULL;
+
if (init_patch_id_entry(key, commit, ids)) {
free(key);
return NULL;
diff --git a/pathspec.h b/pathspec.h
index 4a80f6fc96..59809e4793 100644
--- a/pathspec.h
+++ b/pathspec.h
@@ -96,7 +96,5 @@ static inline int ps_strcmp(const struct pathspec_item *item,
extern char *find_pathspecs_matching_against_index(const struct pathspec *pathspec);
extern void add_pathspec_matches_against_index(const struct pathspec *pathspec, char *seen);
-extern const char *check_path_for_gitlink(const char *path);
-extern void die_if_path_beyond_symlink(const char *path, const char *prefix);
#endif /* PATHSPEC_H */
diff --git a/pkt-line.c b/pkt-line.c
index 62fdb37079..30489c60b1 100644
--- a/pkt-line.c
+++ b/pkt-line.c
@@ -172,27 +172,8 @@ static int get_packet_data(int fd, char **src_buf, size_t *src_size,
static int packet_length(const char *linelen)
{
- int n;
- int len = 0;
-
- for (n = 0; n < 4; n++) {
- unsigned char c = linelen[n];
- len <<= 4;
- if (c >= '0' && c <= '9') {
- len += c - '0';
- continue;
- }
- if (c >= 'a' && c <= 'f') {
- len += c - 'a' + 10;
- continue;
- }
- if (c >= 'A' && c <= 'F') {
- len += c - 'A' + 10;
- continue;
- }
- return -1;
- }
- return len;
+ int val = hex2chr(linelen);
+ return (val < 0) ? val : (val << 8) | hex2chr(linelen + 2);
}
int packet_read(int fd, char **src_buf, size_t *src_len,
diff --git a/po/TEAMS b/po/TEAMS
index 56274ad4f3..d3e63bc480 100644
--- a/po/TEAMS
+++ b/po/TEAMS
@@ -37,8 +37,9 @@ Repository: https://github.com/changwoo/git-l10n-ko/
Leader: Changwoo Ryu <cwryu@debian.org>
Language: pt_PT (Portuguese - Portugal)
-Repository: https://github.com/marcomsousa/git-l10n-pt_PT/
-Leader: Marco Sousa <marcomsousa AT gmail.com>
+Repository: https://github.com/vascool/git-po-pt/
+Leader: Vasco Almeida <vascomalmeida@sapo.pt>
+Members: Marco Sousa <marcomsousa AT gmail.com>
Language: ru (Russian)
Repository: https://github.com/DJm00n/git-po-ru/
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 13610a0aa9..c8658dfd25 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
-"POT-Creation-Date: 2016-08-15 22:43+0800\n"
-"PO-Revision-Date: 2016-08-24 14:07+0000\n"
+"POT-Creation-Date: 2016-08-27 23:21+0800\n"
+"PO-Revision-Date: 2016-09-03 12:00+0000\n"
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
"Language-Team: Portuguese\n"
"Language: pt\n"
@@ -27,7 +27,8 @@ msgstr "dica: %.*s\n"
#: advice.c:83
msgid "Cherry-picking is not possible because you have unmerged files."
-msgstr "Não é possível efetuar cherry-pick porque tem ficheiros não integrados."
+msgstr ""
+"Não é possível efetuar cherry-pick porque tem ficheiros não integrados."
#: advice.c:85
msgid "Committing is not possible because you have unmerged files."
@@ -614,145 +615,98 @@ msgstr "linha de configuração %d incorreta na linha de comandos %s"
msgid "bad config line %d in %s"
msgstr "linha de configuração %d incorreta em %s"
-#: config.c:660
-#, c-format
-msgid "bad numeric config value '%s' for '%s': out of range"
-msgstr "valor numérico '%s' da configuração '%s' incorreto: fora de intervalo"
+#: config.c:655
+msgid "out of range"
+msgstr "fora de intervalo"
+
+#: config.c:655
+msgid "invalid unit"
+msgstr "unidade inválida"
#: config.c:661
#, c-format
-msgid "bad numeric config value '%s' for '%s': invalid unit"
-msgstr "valor numérico '%s' da configuração '%s' incorreto: unidade inválida"
+msgid "bad numeric config value '%s' for '%s': %s"
+msgstr "valor numérico '%s' da configuração '%s' incorreto: %s"
-#: config.c:667
+#: config.c:666
#, c-format
-msgid "bad numeric config value '%s' for '%s' in blob %s: out of range"
-msgstr ""
-"valor numérico '%s' da configuração '%s' incorreto no blob %s: fora de "
-"intervalo"
+msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
+msgstr "valor numérico '%s' da configuração '%s' incorreto no blob %s: %s"
-#: config.c:668
+#: config.c:669
#, c-format
-msgid "bad numeric config value '%s' for '%s' in blob %s: invalid unit"
-msgstr ""
-"valor numérico '%s' da configuração '%s' incorreto no blob %s: unidade "
-"inválida"
+msgid "bad numeric config value '%s' for '%s' in file %s: %s"
+msgstr "valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: %s"
#: config.c:672
#, c-format
-msgid "bad numeric config value '%s' for '%s' in file %s: out of range"
-msgstr ""
-"valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: fora de "
-"intervalo"
-
-#: config.c:673
-#, c-format
-msgid "bad numeric config value '%s' for '%s' in file %s: invalid unit"
+msgid "bad numeric config value '%s' for '%s' in standard input: %s"
msgstr ""
-"valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: unidade "
-"inválida"
+"valor numérico '%s' da configuração '%s' incorreto na entrada padrão: %s"
-#: config.c:677
+#: config.c:675
#, c-format
-msgid "bad numeric config value '%s' for '%s' in standard input: out of range"
+msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
msgstr ""
-"valor numérico '%s' da configuração '%s' incorreto na entrada padrão: fora "
-"de intervalo"
+"valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: %s"
#: config.c:678
#, c-format
-msgid "bad numeric config value '%s' for '%s' in standard input: invalid unit"
-msgstr ""
-"valor numérico '%s' da configuração '%s' incorreto na entrada padrão: "
-"unidade inválida"
-
-#: config.c:682
-#, c-format
-msgid ""
-"bad numeric config value '%s' for '%s' in submodule-blob %s: out of range"
-msgstr ""
-"valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: "
-"fora de intervalo"
-
-#: config.c:683
-#, c-format
-msgid ""
-"bad numeric config value '%s' for '%s' in submodule-blob %s: invalid unit"
-msgstr ""
-"valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: "
-"unidade inválida"
-
-#: config.c:687
-#, c-format
-msgid "bad numeric config value '%s' for '%s' in command line %s: out of range"
-msgstr ""
-"valor numérico '%s' da configuração '%s' incorreto na linha de comandos %s: "
-"fora de intervalo"
-
-#: config.c:688
-#, c-format
-msgid "bad numeric config value '%s' for '%s' in command line %s: invalid unit"
+msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
msgstr ""
"valor numérico '%s' da configuração '%s' incorreto na linha de comandos %s: "
-"unidade inválida"
-
-#: config.c:692
-#, c-format
-msgid "bad numeric config value '%s' for '%s' in %s: out of range"
-msgstr ""
-"valor numérico '%s' da configuração '%s' incorreto em %s: fora de intervalo"
+"%s"
-#: config.c:693
+#: config.c:681
#, c-format
-msgid "bad numeric config value '%s' for '%s' in %s: invalid unit"
-msgstr ""
-"valor numérico '%s' da configuração '%s' incorreto em %s: unidade inválida"
+msgid "bad numeric config value '%s' for '%s' in %s: %s"
+msgstr "valor numérico '%s' da configuração '%s' incorreto em %s: %s"
-#: config.c:780
+#: config.c:768
#, c-format
msgid "failed to expand user dir in: '%s'"
msgstr "falha ao expandir diretório de utilizador em: '%s'"
-#: config.c:861 config.c:872
+#: config.c:849 config.c:860
#, c-format
msgid "bad zlib compression level %d"
msgstr "nível de compressão zlib %d incorreto"
-#: config.c:990
+#: config.c:978
#, c-format
msgid "invalid mode for object creation: %s"
msgstr "modo inválido para criação de objeto: %s"
-#: config.c:1324
+#: config.c:1312
msgid "unable to parse command-line config"
msgstr "não é possível analisar configuração de linha de comandos"
-#: config.c:1374
+#: config.c:1362
msgid "unknown error occurred while reading the configuration files"
msgstr ""
"ocorreu um erro desconhecido durante a leitura dos ficheiros de configuração"
-#: config.c:1728
+#: config.c:1716
#, c-format
msgid "unable to parse '%s' from command-line config"
msgstr "não é possível analisar '%s' da configuração de linha de comandos"
-#: config.c:1730
+#: config.c:1718
#, c-format
msgid "bad config variable '%s' in file '%s' at line %d"
msgstr "variável de configuração '%s' incorreta no ficheiro '%s' na linha %d"
-#: config.c:1789
+#: config.c:1777
#, c-format
msgid "%s has multiple values"
msgstr "%s tem múltiplos valores"
-#: config.c:2323
+#: config.c:2311
#, c-format
msgid "could not set '%s' to '%s'"
msgstr "não foi possível definir '%s' como '%s'"
-#: config.c:2325
+#: config.c:2313
#, c-format
msgid "could not unset '%s'"
msgstr "não foi possível reiniciar '%s'"
@@ -1030,73 +984,73 @@ msgstr "falha ao ler a cache"
msgid "unable to write new index file"
msgstr "não foi possível escrever novo ficheiro de índice"
-#: merge-recursive.c:212
+#: merge-recursive.c:209
msgid "(bad commit)\n"
msgstr "(commit incorreto)\n"
-#: merge-recursive.c:234
+#: merge-recursive.c:231
#, c-format
msgid "addinfo_cache failed for path '%s'"
msgstr "addinfo_cache falhou no caminho '%s'"
-#: merge-recursive.c:304
+#: merge-recursive.c:301
msgid "error building trees"
msgstr "erro ao construir árvores"
-#: merge-recursive.c:723
+#: merge-recursive.c:720
#, c-format
msgid "failed to create path '%s'%s"
msgstr "falha ao criar o caminho '%s'%s"
-#: merge-recursive.c:734
+#: merge-recursive.c:731
#, c-format
msgid "Removing %s to make room for subdirectory\n"
msgstr "A remover %s para criar espaço para o subdiretório\n"
-#: merge-recursive.c:748 merge-recursive.c:767
+#: merge-recursive.c:745 merge-recursive.c:764
msgid ": perhaps a D/F conflict?"
msgstr ": talvez um conflito D/F?"
-#: merge-recursive.c:757
+#: merge-recursive.c:754
#, c-format
msgid "refusing to lose untracked file at '%s'"
msgstr "perda de ficheiro não controlado em '%s' recusada"
-#: merge-recursive.c:799
+#: merge-recursive.c:796
#, c-format
msgid "cannot read object %s '%s'"
msgstr "não é possível ler o objeto %s: '%s'"
-#: merge-recursive.c:801
+#: merge-recursive.c:798
#, c-format
msgid "blob expected for %s '%s'"
msgstr "blob para %s '%s' esperado"
-#: merge-recursive.c:825
+#: merge-recursive.c:822
#, c-format
msgid "failed to open '%s': %s"
msgstr "falha ao abrir '%s': %s"
-#: merge-recursive.c:836
+#: merge-recursive.c:833
#, c-format
msgid "failed to symlink '%s': %s"
msgstr "falha ao criar a ligação simbólica '%s': %s"
-#: merge-recursive.c:841
+#: merge-recursive.c:838
#, c-format
msgid "do not know what to do with %06o %s '%s'"
msgstr "não sei o que fazer com %06o %s '%s'"
-#: merge-recursive.c:981
+#: merge-recursive.c:978
msgid "Failed to execute internal merge"
msgstr "Falha ao executar integração interna"
-#: merge-recursive.c:985
+#: merge-recursive.c:982
#, c-format
msgid "Unable to add %s to database"
msgstr "Não é possível adicionar %s à base de dados"
-#: merge-recursive.c:1084 merge-recursive.c:1098
+#: merge-recursive.c:1081 merge-recursive.c:1095
#, c-format
msgid ""
"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -1105,7 +1059,7 @@ msgstr ""
"CONFLITO (%s/eliminar): %s eliminado em %s e %s em %s. Versão de %s de %s "
"deixada na árvore."
-#: merge-recursive.c:1090 merge-recursive.c:1103
+#: merge-recursive.c:1087 merge-recursive.c:1100
#, c-format
msgid ""
"CONFLICT (%s/delete): %s deleted in %s and %s in %s. Version %s of %s left "
@@ -1114,160 +1068,160 @@ msgstr ""
"CONFLITO (%s/eliminar): %s eliminado em %s e %s em %s. Versão de %s de %s "
"deixada na árvore em %s."
-#: merge-recursive.c:1146
+#: merge-recursive.c:1143
msgid "rename"
msgstr "mudar nome"
-#: merge-recursive.c:1146
+#: merge-recursive.c:1143
msgid "renamed"
msgstr "nome mudado"
-#: merge-recursive.c:1203
+#: merge-recursive.c:1200
#, c-format
msgid "%s is a directory in %s adding as %s instead"
msgstr "%s é um diretório em %s adicionando %s no seu lugar"
-#: merge-recursive.c:1228
+#: merge-recursive.c:1225
#, c-format
msgid ""
"CONFLICT (rename/rename): Rename \"%s\"->\"%s\" in branch \"%s\" rename \"%s"
"\"->\"%s\" in \"%s\"%s"
msgstr ""
-"CONFLITO (mudar nome/mudar nome): Mudar o nome \"%s\"->\"%s\" no ramo \"%s\" mudar "
-"o nome \"%s\"->\"%s\" em \"%s\"%s"
+"CONFLITO (mudar nome/mudar nome): Mudar o nome \"%s\"->\"%s\" no ramo \"%s\" "
+"mudar o nome \"%s\"->\"%s\" em \"%s\"%s"
-#: merge-recursive.c:1233
+#: merge-recursive.c:1230
msgid " (left unresolved)"
msgstr " (por resolver)"
-#: merge-recursive.c:1295
+#: merge-recursive.c:1292
#, c-format
msgid "CONFLICT (rename/rename): Rename %s->%s in %s. Rename %s->%s in %s"
msgstr ""
-"CONFLITO (mudar nome/mudar nome): Mudar de nome %s->%s em %s. Mudar o nome %"
-"s->%s em %s"
+"CONFLITO (mudar nome/mudar nome): Mudar de nome %s->%s em %s. Mudar o nome "
+"%s->%s em %s"
-#: merge-recursive.c:1328
+#: merge-recursive.c:1325
#, c-format
msgid "Renaming %s to %s and %s to %s instead"
msgstr "A mudar o nome de %s para %s e de %s para %s, em alternativa"
-#: merge-recursive.c:1534
+#: merge-recursive.c:1531
#, c-format
msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s"
msgstr ""
"CONFLITO (mudar nome/adicionar): Mudar o nome %s->%s em %s. %s adicionado em "
"%s"
-#: merge-recursive.c:1549
+#: merge-recursive.c:1546
#, c-format
msgid "Adding merged %s"
msgstr "A adicionar %s integrado"
-#: merge-recursive.c:1556 merge-recursive.c:1769
+#: merge-recursive.c:1553 merge-recursive.c:1766
#, c-format
msgid "Adding as %s instead"
msgstr "A adicionar como %s, em alternativa."
-#: merge-recursive.c:1613
+#: merge-recursive.c:1610
#, c-format
msgid "cannot read object %s"
msgstr "não foi possível ler o objeto %s"
-#: merge-recursive.c:1616
+#: merge-recursive.c:1613
#, c-format
msgid "object %s is not a blob"
msgstr "o objeto %s não é um blob"
-#: merge-recursive.c:1669
+#: merge-recursive.c:1666
msgid "modify"
msgstr "modificar"
-#: merge-recursive.c:1669
+#: merge-recursive.c:1666
msgid "modified"
msgstr "modificado"
-#: merge-recursive.c:1679
+#: merge-recursive.c:1676
msgid "content"
msgstr "conteúdo"
-#: merge-recursive.c:1686
+#: merge-recursive.c:1683
msgid "add/add"
msgstr "adicionar/adicionar"
-#: merge-recursive.c:1721
+#: merge-recursive.c:1718
#, c-format
msgid "Skipped %s (merged same as existing)"
msgstr "%s ignorado (integrado é igual ao existente)"
-#: merge-recursive.c:1735
+#: merge-recursive.c:1732
#, c-format
msgid "Auto-merging %s"
msgstr "A integrar automaticamente %s"
-#: merge-recursive.c:1739 git-submodule.sh:919
+#: merge-recursive.c:1736 git-submodule.sh:919
msgid "submodule"
msgstr "submódulo"
-#: merge-recursive.c:1740
+#: merge-recursive.c:1737
#, c-format
msgid "CONFLICT (%s): Merge conflict in %s"
msgstr "CONFLITO (%s): conflito de integração em %s"
-#: merge-recursive.c:1834
+#: merge-recursive.c:1831
#, c-format
msgid "Removing %s"
msgstr "A remover %s"
-#: merge-recursive.c:1860
+#: merge-recursive.c:1857
msgid "file/directory"
msgstr "ficheiro/diretório"
-#: merge-recursive.c:1866
+#: merge-recursive.c:1863
msgid "directory/file"
msgstr "diretório/ficheiro"
-#: merge-recursive.c:1871
+#: merge-recursive.c:1868
#, c-format
msgid "CONFLICT (%s): There is a directory with name %s in %s. Adding %s as %s"
msgstr ""
"CONFLITO (%s): Há um diretório designado %s em %s. A adicionar %s como %s"
-#: merge-recursive.c:1880
+#: merge-recursive.c:1877
#, c-format
msgid "Adding %s"
msgstr "A adicionar %s"
-#: merge-recursive.c:1917
+#: merge-recursive.c:1914
msgid "Already up-to-date!"
msgstr "Já está atualizado!"
-#: merge-recursive.c:1926
+#: merge-recursive.c:1923
#, c-format
msgid "merging of trees %s and %s failed"
msgstr "falha ao integrar as árvores %s e %s"
-#: merge-recursive.c:2009
+#: merge-recursive.c:2006
msgid "Merging:"
msgstr "A integrar:"
-#: merge-recursive.c:2022
+#: merge-recursive.c:2019
#, c-format
msgid "found %u common ancestor:"
msgid_plural "found %u common ancestors:"
msgstr[0] "%u antecessor comum encontrado:"
msgstr[1] "%u antecessores comuns encontrados:"
-#: merge-recursive.c:2061
+#: merge-recursive.c:2058
msgid "merge returned no commit"
msgstr "a integração não retornou nenhum commit"
-#: merge-recursive.c:2124
+#: merge-recursive.c:2121
#, c-format
msgid "Could not parse object '%s'"
msgstr "Não foi possível analisar o objeto '%s'"
-#: merge-recursive.c:2138 builtin/merge.c:641 builtin/merge.c:788
+#: merge-recursive.c:2135 builtin/merge.c:641 builtin/merge.c:788
msgid "Unable to write index."
msgstr "Não é possível escrever no índice."
@@ -1314,7 +1268,7 @@ msgstr "utilização: %s"
msgid " or: %s"
msgstr " ou: %s"
-#: parse-options.c:598
+#: parse-options.c:597
#, c-format
msgid " %s"
msgstr " %s"
@@ -1328,7 +1282,7 @@ msgstr "-NUM"
msgid "malformed object name '%s'"
msgstr "nome do objeto malformado '%s'"
-#: path.c:796
+#: path.c:798
#, c-format
msgid "Could not make %s writable by group"
msgstr "Não foi possível dar permissão de escrita ao grupo a %s"
@@ -1878,7 +1832,7 @@ msgid "git %s: failed to refresh the index"
msgstr "git %s: falha ao atualizar o índice"
#: sequencer.c:705
-msgid "Cannot revert during a another revert."
+msgid "Cannot revert during another revert."
msgstr "Não é possível reverter durante outra reversão."
#: sequencer.c:706
@@ -2309,8 +2263,8 @@ msgid ""
"Your local changes to the following files would be overwritten by %s:\n"
"%%sPlease commit your changes or stash them before you %s."
msgstr ""
-"As suas alterações locais nos seguintes ficheiros seriam substituídas por %"
-"s:\n"
+"As suas alterações locais nos seguintes ficheiros seriam substituídas por "
+"%s:\n"
"%%sSubmeta as suas alterações ou esconda-as antes de efetuar %s."
#: unpack-trees.c:76
@@ -3120,7 +3074,7 @@ msgstr "ser verboso"
msgid "interactive picking"
msgstr "seleção interativa"
-#: builtin/add.c:257 builtin/checkout.c:1156 builtin/reset.c:286
+#: builtin/add.c:257 builtin/checkout.c:1157 builtin/reset.c:286
msgid "select hunks interactively"
msgstr "selecionar blocos interativamente"
@@ -4680,7 +4634,8 @@ msgstr "não faz sentido criar 'HEAD' manualmente"
#: builtin/branch.c:846
msgid "-a and -r options to 'git branch' do not make sense with a branch name"
-msgstr "as opções -a e -r de 'git branch' não fazem sentido com um nome de ramo"
+msgstr ""
+"as opções -a e -r de 'git branch' não fazem sentido com um nome de ramo"
#: builtin/branch.c:849
#, c-format
@@ -4801,7 +4756,7 @@ msgstr "ler os nomes dos ficheiros da entrada padrão"
msgid "terminate input and output records by a NUL character"
msgstr "terminar registos da entrada e da saída com um carácter NUL"
-#: builtin/check-ignore.c:18 builtin/checkout.c:1137 builtin/gc.c:325
+#: builtin/check-ignore.c:18 builtin/checkout.c:1138 builtin/gc.c:325
msgid "suppress progress reporting"
msgstr "suprimir informação de progresso"
@@ -4976,45 +4931,45 @@ msgstr "primeiro deve resolver o índice atual"
msgid "Can not do reflog for '%s': %s\n"
msgstr "Não é possível efetuar reflog de '%s': %s\n"
-#: builtin/checkout.c:663
+#: builtin/checkout.c:664
msgid "HEAD is now at"
msgstr "HEAD está agora em"
-#: builtin/checkout.c:667 builtin/clone.c:661
+#: builtin/checkout.c:668 builtin/clone.c:661
msgid "unable to update HEAD"
msgstr "não foi possível atualizar HEAD"
-#: builtin/checkout.c:671
+#: builtin/checkout.c:672
#, c-format
msgid "Reset branch '%s'\n"
msgstr "Repor ramo '%s'\n"
-#: builtin/checkout.c:674
+#: builtin/checkout.c:675
#, c-format
msgid "Already on '%s'\n"
msgstr "Já em '%s'\n"
-#: builtin/checkout.c:678
+#: builtin/checkout.c:679
#, c-format
msgid "Switched to and reset branch '%s'\n"
msgstr "Mudou para e repôs o ramo '%s'\n"
-#: builtin/checkout.c:680 builtin/checkout.c:1069
+#: builtin/checkout.c:681 builtin/checkout.c:1070
#, c-format
msgid "Switched to a new branch '%s'\n"
msgstr "Mudou para o novo ramo '%s'\n"
-#: builtin/checkout.c:682
+#: builtin/checkout.c:683
#, c-format
msgid "Switched to branch '%s'\n"
msgstr "Mudou para o ramo '%s'\n"
-#: builtin/checkout.c:733
+#: builtin/checkout.c:734
#, c-format
msgid " ... and %d more.\n"
msgstr " ... e mais %d.\n"
-#: builtin/checkout.c:739
+#: builtin/checkout.c:740
#, c-format
msgid ""
"Warning: you are leaving %d commit behind, not connected to\n"
@@ -5035,7 +4990,7 @@ msgstr[1] ""
"\n"
"%s\n"
-#: builtin/checkout.c:758
+#: builtin/checkout.c:759
#, c-format
msgid ""
"If you want to keep it by creating a new branch, this may be a good time\n"
@@ -5062,151 +5017,151 @@ msgstr[1] ""
" git branch <nome-do-novo-ramo> %s\n"
"\n"
-#: builtin/checkout.c:794
+#: builtin/checkout.c:795
msgid "internal error in revision walk"
msgstr "erro interno durante o curso de revisões"
-#: builtin/checkout.c:798
+#: builtin/checkout.c:799
msgid "Previous HEAD position was"
msgstr "A posição anterior de HEAD era"
-#: builtin/checkout.c:825 builtin/checkout.c:1064
+#: builtin/checkout.c:826 builtin/checkout.c:1065
msgid "You are on a branch yet to be born"
msgstr "Está num ramo ainda não criado"
-#: builtin/checkout.c:970
+#: builtin/checkout.c:971
#, c-format
msgid "only one reference expected, %d given."
msgstr "esperava-se apenas uma referência, %d fornecidas."
-#: builtin/checkout.c:1010 builtin/worktree.c:214
+#: builtin/checkout.c:1011 builtin/worktree.c:214
#, c-format
msgid "invalid reference: %s"
msgstr "referência inválida: %s"
-#: builtin/checkout.c:1039
+#: builtin/checkout.c:1040
#, c-format
msgid "reference is not a tree: %s"
msgstr "a referência não é uma árvore: %s"
-#: builtin/checkout.c:1078
+#: builtin/checkout.c:1079
msgid "paths cannot be used with switching branches"
msgstr "não podem ser usados caminhos ao mudar de ramo"
-#: builtin/checkout.c:1081 builtin/checkout.c:1085
+#: builtin/checkout.c:1082 builtin/checkout.c:1086
#, c-format
msgid "'%s' cannot be used with switching branches"
msgstr "'%s' não pode ser usado ao mudar de ramo"
-#: builtin/checkout.c:1089 builtin/checkout.c:1092 builtin/checkout.c:1097
-#: builtin/checkout.c:1100
+#: builtin/checkout.c:1090 builtin/checkout.c:1093 builtin/checkout.c:1098
+#: builtin/checkout.c:1101
#, c-format
msgid "'%s' cannot be used with '%s'"
msgstr "'%s' não pode ser usado com '%s'"
-#: builtin/checkout.c:1105
+#: builtin/checkout.c:1106
#, c-format
msgid "Cannot switch branch to a non-commit '%s'"
msgstr "Não é possível mudar de ramo para '%s', visto que não é um commit"
-#: builtin/checkout.c:1138 builtin/checkout.c:1140 builtin/clone.c:88
+#: builtin/checkout.c:1139 builtin/checkout.c:1141 builtin/clone.c:88
#: builtin/remote.c:165 builtin/remote.c:167 builtin/worktree.c:324
#: builtin/worktree.c:326
msgid "branch"
msgstr "ramo"
-#: builtin/checkout.c:1139
+#: builtin/checkout.c:1140
msgid "create and checkout a new branch"
msgstr "criar e extrair um novo ramo"
-#: builtin/checkout.c:1141
+#: builtin/checkout.c:1142
msgid "create/reset and checkout a branch"
msgstr "criar/repor e extrair um ramo"
-#: builtin/checkout.c:1142
+#: builtin/checkout.c:1143
msgid "create reflog for new branch"
msgstr "criar reflog do novo ramo"
-#: builtin/checkout.c:1143 builtin/worktree.c:328
+#: builtin/checkout.c:1144 builtin/worktree.c:328
msgid "detach HEAD at named commit"
msgstr "destacar HEAD no commit indicado"
-#: builtin/checkout.c:1144
+#: builtin/checkout.c:1145
msgid "set upstream info for new branch"
msgstr "definir a informação do ramo a montante do novo ramo"
-#: builtin/checkout.c:1146
+#: builtin/checkout.c:1147
msgid "new-branch"
msgstr "novo-ramo"
-#: builtin/checkout.c:1146
+#: builtin/checkout.c:1147
msgid "new unparented branch"
msgstr "novo ramo sem pai"
-#: builtin/checkout.c:1147
+#: builtin/checkout.c:1148
msgid "checkout our version for unmerged files"
msgstr "extrair a nossa versão dos ficheiros não integrados"
-#: builtin/checkout.c:1149
+#: builtin/checkout.c:1150
msgid "checkout their version for unmerged files"
msgstr "extrair a versão deles dos ficheiros não integrados"
-#: builtin/checkout.c:1151
+#: builtin/checkout.c:1152
msgid "force checkout (throw away local modifications)"
msgstr "forçar extração (descartar modificações locais)"
-#: builtin/checkout.c:1152
+#: builtin/checkout.c:1153
msgid "perform a 3-way merge with the new branch"
msgstr "realizar uma integração com 3 pontos com o novo ramo"
-#: builtin/checkout.c:1153 builtin/merge.c:231
+#: builtin/checkout.c:1154 builtin/merge.c:231
msgid "update ignored files (default)"
msgstr "atualizar ficheiros ignorados (predefinição)"
-#: builtin/checkout.c:1154 builtin/log.c:1459 parse-options.h:250
+#: builtin/checkout.c:1155 builtin/log.c:1459 parse-options.h:250
msgid "style"
msgstr "estilo"
-#: builtin/checkout.c:1155
+#: builtin/checkout.c:1156
msgid "conflict style (merge or diff3)"
msgstr "estilo de conflito (merge ou diff3)"
-#: builtin/checkout.c:1158
+#: builtin/checkout.c:1159
msgid "do not limit pathspecs to sparse entries only"
msgstr "não restringir especificadores de caminho a entradas esparsas"
-#: builtin/checkout.c:1160
+#: builtin/checkout.c:1161
msgid "second guess 'git checkout <no-such-branch>'"
msgstr "tentar adivinhar 'git checkout <ramo-inexistente>'"
-#: builtin/checkout.c:1162
+#: builtin/checkout.c:1163
msgid "do not check if another worktree is holding the given ref"
msgstr ""
"não verificar se outra árvore de trabalho contém a referência fornecida"
-#: builtin/checkout.c:1163 builtin/clone.c:60 builtin/fetch.c:117
+#: builtin/checkout.c:1164 builtin/clone.c:60 builtin/fetch.c:117
#: builtin/merge.c:228 builtin/pull.c:116 builtin/push.c:536
#: builtin/send-pack.c:168
msgid "force progress reporting"
msgstr "forçar informação de progresso"
-#: builtin/checkout.c:1194
+#: builtin/checkout.c:1195
msgid "-b, -B and --orphan are mutually exclusive"
msgstr "-b, -B e --orphan são mutuamente exclusivos"
-#: builtin/checkout.c:1211
+#: builtin/checkout.c:1212
msgid "--track needs a branch name"
msgstr "--track requer um nome dum ramo"
-#: builtin/checkout.c:1216
+#: builtin/checkout.c:1217
msgid "Missing branch name; try -b"
msgstr "Falta um nome dum ramo; tente -b"
-#: builtin/checkout.c:1252
+#: builtin/checkout.c:1253
msgid "invalid path specification"
msgstr "especificação de caminho inválida"
-#: builtin/checkout.c:1259
+#: builtin/checkout.c:1260
#, c-format
msgid ""
"Cannot update paths and switch to branch '%s' at the same time.\n"
@@ -5216,12 +5171,12 @@ msgstr ""
"tempo.\n"
"Pretendia extrair '%s' o qual não pode ser resolvido como commit?"
-#: builtin/checkout.c:1264
+#: builtin/checkout.c:1265
#, c-format
msgid "git checkout: --detach does not take a path argument '%s'"
msgstr "git checkout: --detach não aceita um caminho como argumento '%s'"
-#: builtin/checkout.c:1268
+#: builtin/checkout.c:1269
msgid ""
"git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
"checking out of the index."
@@ -5626,7 +5581,7 @@ msgid "cannot unlink temporary alternates file"
msgstr ""
"não é possível invocar unlink sobre o ficheiro sobressalente temporário"
-#: builtin/clone.c:863 builtin/receive-pack.c:1857
+#: builtin/clone.c:863 builtin/receive-pack.c:1855
msgid "Too many arguments."
msgstr "Demasiados argumentos."
@@ -6788,7 +6743,8 @@ msgstr "número de submódulos obtidos em paralelo"
#: builtin/fetch.c:108 builtin/pull.c:187
msgid "prune remote-tracking branches no longer on remote"
-msgstr "eliminar os ramos de monitorização remotos que já não existem no remoto"
+msgstr ""
+"eliminar os ramos de monitorização remotos que já não existem no remoto"
#: builtin/fetch.c:109 builtin/pull.c:190
msgid "on-demand"
@@ -7586,49 +7542,49 @@ msgstr "nenhum visualizador de manual atendeu o pedido"
msgid "no info viewer handled the request"
msgstr "nenhum visualizador de info atendeu o pedido"
-#: builtin/help.c:408
+#: builtin/help.c:401
msgid "Defining attributes per path"
msgstr "Definir atributos por caminho"
-#: builtin/help.c:409
+#: builtin/help.c:402
msgid "Everyday Git With 20 Commands Or So"
msgstr "Diário Git com mais ou menos 20 Comandos"
-#: builtin/help.c:410
+#: builtin/help.c:403
msgid "A Git glossary"
msgstr "Um Glossário do Git"
-#: builtin/help.c:411
+#: builtin/help.c:404
msgid "Specifies intentionally untracked files to ignore"
msgstr ""
"Especificar ficheiros não controlados para serem intencionalmente ignorados"
-#: builtin/help.c:412
+#: builtin/help.c:405
msgid "Defining submodule properties"
msgstr "Definir propriedades de submódulos"
-#: builtin/help.c:413
+#: builtin/help.c:406
msgid "Specifying revisions and ranges for Git"
msgstr "Especificar revisões e intervalos do Git"
-#: builtin/help.c:414
+#: builtin/help.c:407
msgid "A tutorial introduction to Git (for version 1.5.1 or newer)"
msgstr "Uma introdução ao Git (versão 1.5.1 ou mais recente)"
-#: builtin/help.c:415
+#: builtin/help.c:408
msgid "An overview of recommended workflows with Git"
msgstr "Uma descrição geral dos fluxos de trabalho recomendados para o Git"
-#: builtin/help.c:427
+#: builtin/help.c:420
msgid "The common Git guides are:\n"
msgstr "Os guias comuns do Git:\n"
-#: builtin/help.c:448 builtin/help.c:465
+#: builtin/help.c:441 builtin/help.c:458
#, c-format
msgid "usage: %s%s"
msgstr "utilização: %s%s"
-#: builtin/help.c:481
+#: builtin/help.c:474
#, c-format
msgid "`git %s' is aliased to `%s'"
msgstr "'git %s' é um alias de '%s'"
@@ -9066,7 +9022,8 @@ msgstr "O diretório %s está no índice porém nenhum submódulo?"
#: builtin/mv.c:72 builtin/rm.c:317
msgid "Please stage your changes to .gitmodules or stash them to proceed"
-msgstr "Prepare as suas alterações em .gitmodules ou esconda-as para prosseguir"
+msgstr ""
+"Prepare as suas alterações em .gitmodules ou esconda-as para prosseguir"
#: builtin/mv.c:90
#, c-format
@@ -9503,7 +9460,8 @@ msgid ""
"Automatic notes merge failed. Fix conflicts in %s and commit the result with "
"'git notes merge --commit', or abort the merge with 'git notes merge --"
"abort'.\n"
-msgstr "A integração automática de notas falhou. Corrija os conflitos em %s e "
+msgstr ""
+"A integração automática de notas falhou. Corrija os conflitos em %s e "
"submeta o resultado com 'git notes merge --commit' ou aborte a integração "
"com 'git notes merge --abort'.\n"
@@ -10326,11 +10284,11 @@ msgstr "depurar unpack-trees"
msgid "git receive-pack <git-dir>"
msgstr "git receive-pack <git-dir>"
-#: builtin/receive-pack.c:1845
+#: builtin/receive-pack.c:1843
msgid "quiet"
msgstr "silencioso"
-#: builtin/receive-pack.c:1859
+#: builtin/receive-pack.c:1857
msgid "You must specify a directory."
msgstr "Deve especificar um diretório."
@@ -11400,7 +11358,8 @@ msgstr "imprimir estado do programa auxiliar remoto"
#: builtin/shortlog.c:13
msgid "git shortlog [<options>] [<revision-range>] [[--] [<path>...]]"
-msgstr "git shortlog [<opções>] [<intervalo-de-revisões>] [[--] [<caminho>...]]"
+msgstr ""
+"git shortlog [<opções>] [<intervalo-de-revisões>] [[--] [<caminho>...]]"
#: builtin/shortlog.c:242
msgid "sort output according to the number of commits per author"
@@ -12222,8 +12181,7 @@ msgstr "eliminar a referência"
#: builtin/update-ref.c:365
msgid "update <refname> not the one it points to"
msgstr ""
-"atualizar a referência <nome-da-referência>, não a referência que esta "
-"aponta"
+"atualizar a referência <nome-da-referência>, não a referência que esta aponta"
#: builtin/update-ref.c:366
msgid "stdin has NUL-terminated arguments"
@@ -12597,7 +12555,8 @@ msgstr "HEAD incorreta - é necessário uma HEAD"
#, sh-format
msgid ""
"Checking out '$start_head' failed. Try 'git bisect reset <valid-branch>'."
-msgstr "Falha ao extrair '$start_head'. Tente 'git bisect reset <ramo-válido>'."
+msgstr ""
+"Falha ao extrair '$start_head'. Tente 'git bisect reset <ramo-válido>'."
#: git-bisect.sh:177
msgid "won't bisect on cg-seek'ed tree"
@@ -12813,8 +12772,8 @@ msgid ""
msgstr ""
"Depois de resolver este problema, execute \"git rebase --continue\".\n"
"Se prefere ignorar este patch, execute \"git rebase --skip\".\n"
-"Para extrair o ramo original e interromper o rebase, execute \"git rebase "
-"--abort\"."
+"Para extrair o ramo original e interromper o rebase, execute \"git rebase --"
+"abort\"."
#: git-rebase.sh:156 git-rebase.sh:395
#, sh-format
@@ -13477,167 +13436,43 @@ msgstr "Erro ao refazer integração $sha1"
msgid "Could not pick $sha1"
msgstr "Não foi possível apanhar $sha1"
-#: git-rebase--interactive.sh:408 git-rebase--interactive.sh:474
-msgid "This is the 1st commit message:"
-msgstr "Esta é a 1ª mensagem de commit:"
-
-#: git-rebase--interactive.sh:409
-msgid "This is the 2nd commit message:"
-msgstr "Esta é a 2ª mensagem de commit:"
-
-#: git-rebase--interactive.sh:410
-msgid "This is the 3rd commit message:"
-msgstr "Esta é a 3ª mensagem de commit:"
-
-#: git-rebase--interactive.sh:411
-msgid "This is the 4th commit message:"
-msgstr "Esta é a 4ª mensagem de commit:"
+#: git-rebase--interactive.sh:407
+#, sh-format
+msgid "This is the commit message #${n}:"
+msgstr "Esta é a mensagem de commit nº${n}:"
#: git-rebase--interactive.sh:412
-msgid "This is the 5th commit message:"
-msgstr "Esta é a 5ª mensagem de commit:"
-
-#: git-rebase--interactive.sh:413
-msgid "This is the 6th commit message:"
-msgstr "Esta é a 6ª mensagem de commit:"
-
-#: git-rebase--interactive.sh:414
-msgid "This is the 7th commit message:"
-msgstr "Esta é a 7ª mensagem de commit:"
-
-#: git-rebase--interactive.sh:415
-msgid "This is the 8th commit message:"
-msgstr "Esta é a 8ª mensagem de commit:"
-
-#: git-rebase--interactive.sh:416
-msgid "This is the 9th commit message:"
-msgstr "Esta é a 9ª mensagem de commit:"
-
-#: git-rebase--interactive.sh:417
-msgid "This is the 10th commit message:"
-msgstr "Esta é a 10ª mensagem de commit:"
-
-#. TRANSLATORS: if the language you are translating into
-#. doesn't allow you to compose a sentence in this fashion,
-#. consider translating as if this and the following few strings
-#. were "This is the commit message ${n}:"
-#: git-rebase--interactive.sh:422
#, sh-format
-msgid "This is the ${n}th commit message:"
-msgstr "Esta é a ${n}ª mensagem de commit:"
+msgid "The commit message #${n} will be skipped:"
+msgstr "A mensagem de commit nº${n} será ignorada:"
#: git-rebase--interactive.sh:423
#, sh-format
-msgid "This is the ${n}st commit message:"
-msgstr "Está é a ${n}ª mensagem de commit:"
-
-#: git-rebase--interactive.sh:424
-#, sh-format
-msgid "This is the ${n}nd commit message:"
-msgstr "Esta é a ${n}ª mensagem de commit:"
-
-#: git-rebase--interactive.sh:425
-#, sh-format
-msgid "This is the ${n}rd commit message:"
-msgstr "Esta é a ${n}ª mensagem de commit:"
-
-#: git-rebase--interactive.sh:426
-#, sh-format
-msgid "This is the commit message ${n}:"
-msgstr "Esta é a mensagem de commit ${n}:"
-
-#: git-rebase--interactive.sh:432
-msgid "The 1st commit message will be skipped:"
-msgstr "A 1ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:433
-msgid "The 2nd commit message will be skipped:"
-msgstr "A 2ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:434
-msgid "The 3rd commit message will be skipped:"
-msgstr "A 3ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:435
-msgid "The 4th commit message will be skipped:"
-msgstr "A 4ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:436
-msgid "The 5th commit message will be skipped:"
-msgstr "A 5ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:437
-msgid "The 6th commit message will be skipped:"
-msgstr "A 6ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:438
-msgid "The 7th commit message will be skipped:"
-msgstr "A 7ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:439
-msgid "The 8th commit message will be skipped:"
-msgstr "A 8ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:440
-msgid "The 9th commit message will be skipped:"
-msgstr "A 9ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:441
-msgid "The 10th commit message will be skipped:"
-msgstr "A 10ª mensagem de commit será ignorada:"
-
-#. TRANSLATORS: if the language you are translating into
-#. doesn't allow you to compose a sentence in this fashion,
-#. consider translating as if this and the following few strings
-#. were "The commit message ${n} will be skipped:"
-#: git-rebase--interactive.sh:446
-#, sh-format
-msgid "The ${n}th commit message will be skipped:"
-msgstr "A ${n}ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:447
-#, sh-format
-msgid "The ${n}st commit message will be skipped:"
-msgstr "A ${n}ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:448
-#, sh-format
-msgid "The ${n}nd commit message will be skipped:"
-msgstr "A ${n}ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:449
-#, sh-format
-msgid "The ${n}rd commit message will be skipped:"
-msgstr "A ${n}ª mensagem de commit será ignorada:"
-
-#: git-rebase--interactive.sh:450
-#, sh-format
-msgid "The commit message ${n} will be skipped:"
-msgstr "A mensagem de commit ${n} será ignorada:"
-
-#: git-rebase--interactive.sh:462
-#, sh-format
msgid "This is a combination of $count commit."
msgid_plural "This is a combination of $count commits."
msgstr[0] "Isto é a combinação de $count commit."
msgstr[1] "Isto é a combinação de $count commits."
-#: git-rebase--interactive.sh:470
+#: git-rebase--interactive.sh:431
#, sh-format
msgid "Cannot write $fixup_msg"
msgstr "Não é possível escrever $fixup_msg"
-#: git-rebase--interactive.sh:473
+#: git-rebase--interactive.sh:434
msgid "This is a combination of 2 commits."
msgstr "Isto é a combinação de 2 commits."
-#: git-rebase--interactive.sh:514 git-rebase--interactive.sh:557
-#: git-rebase--interactive.sh:560
+#: git-rebase--interactive.sh:435
+msgid "This is the 1st commit message:"
+msgstr "Esta é a 1ª mensagem de commit:"
+
+#: git-rebase--interactive.sh:475 git-rebase--interactive.sh:518
+#: git-rebase--interactive.sh:521
#, sh-format
msgid "Could not apply $sha1... $rest"
msgstr "Não foi possível aplicar $sha1... $rest"
-#: git-rebase--interactive.sh:588
+#: git-rebase--interactive.sh:549
#, sh-format
msgid ""
"Could not amend commit after successfully picking $sha1... $rest\n"
@@ -13654,31 +13489,31 @@ msgstr ""
"poder\n"
"reformular a mensagem do commit."
-#: git-rebase--interactive.sh:603
+#: git-rebase--interactive.sh:564
#, sh-format
msgid "Stopped at $sha1_abbrev... $rest"
msgstr "Parou em $sha1_abbrev... $rest"
-#: git-rebase--interactive.sh:618
+#: git-rebase--interactive.sh:579
#, sh-format
msgid "Cannot '$squash_style' without a previous commit"
msgstr "Não é possível efetuar '$squash_style' sem um commit anterior"
-#: git-rebase--interactive.sh:660
+#: git-rebase--interactive.sh:621
#, sh-format
msgid "Executing: $rest"
msgstr "A executar: $rest"
-#: git-rebase--interactive.sh:668
+#: git-rebase--interactive.sh:629
#, sh-format
msgid "Execution failed: $rest"
msgstr "Falha ao executar: $rest"
-#: git-rebase--interactive.sh:670
+#: git-rebase--interactive.sh:631
msgid "and made changes to the index and/or the working tree"
msgstr "e fez alterações ao índice e/ou à árvore de trabalho"
-#: git-rebase--interactive.sh:672
+#: git-rebase--interactive.sh:633
msgid ""
"You can fix the problem, and then run\n"
"\n"
@@ -13689,7 +13524,7 @@ msgstr ""
"\tgit rebase --continue"
#. TRANSLATORS: after these lines is a command to be issued by the user
-#: git-rebase--interactive.sh:685
+#: git-rebase--interactive.sh:646
#, sh-format
msgid ""
"Execution succeeded: $rest\n"
@@ -13704,25 +13539,25 @@ msgstr ""
"\n"
"\tgit rebase --continue"
-#: git-rebase--interactive.sh:696
+#: git-rebase--interactive.sh:657
#, sh-format
msgid "Unknown command: $command $sha1 $rest"
msgstr "Comando desconhecido: $command $sha1 $rest"
-#: git-rebase--interactive.sh:697
+#: git-rebase--interactive.sh:658
msgid "Please fix this using 'git rebase --edit-todo'."
msgstr "Corrija-o usando 'git rebase --edit-todo'."
-#: git-rebase--interactive.sh:732
+#: git-rebase--interactive.sh:693
#, sh-format
msgid "Successfully rebased and updated $head_name."
msgstr "$head_name rebaseado e atualizado com sucesso."
-#: git-rebase--interactive.sh:779
+#: git-rebase--interactive.sh:740
msgid "Could not skip unnecessary pick commands"
msgstr "Não foi possível saltar comandos pick desnecessários"
-#: git-rebase--interactive.sh:937
+#: git-rebase--interactive.sh:898
#, sh-format
msgid ""
"Warning: the SHA-1 is missing or isn't a commit in the following line:\n"
@@ -13731,7 +13566,7 @@ msgstr ""
"Aviso: falta o SHA-1 ou a seguinte linha não tem um commit:\n"
" - $line"
-#: git-rebase--interactive.sh:970
+#: git-rebase--interactive.sh:931
#, sh-format
msgid ""
"Warning: the command isn't recognized in the following line:\n"
@@ -13740,11 +13575,11 @@ msgstr ""
"Aviso: o comando não é reconhecido na seguinte linha:\n"
" - $line"
-#: git-rebase--interactive.sh:1009
+#: git-rebase--interactive.sh:970
msgid "could not detach HEAD"
msgstr "não foi possível destacar HEAD"
-#: git-rebase--interactive.sh:1047
+#: git-rebase--interactive.sh:1008
msgid ""
"Warning: some commits may have been dropped accidentally.\n"
"Dropped commits (newer to older):"
@@ -13752,7 +13587,7 @@ msgstr ""
"Aviso: alguns commits podem ter sido descartados acidentalmente.\n"
"Commits descartados (mais novo para o mais velho):"
-#: git-rebase--interactive.sh:1055
+#: git-rebase--interactive.sh:1016
msgid ""
"To avoid this message, use \"drop\" to explicitly remove a commit.\n"
"\n"
@@ -13760,12 +13595,13 @@ msgid ""
"warnings.\n"
"The possible behaviours are: ignore, warn, error."
msgstr ""
-"Para evitar esta mensagem, use \"drop\" para remover um commit explicitamente.\n"
+"Para evitar esta mensagem, use \"drop\" para remover um commit "
+"explicitamente.\n"
"\n"
"Use 'git config rebase.missingCommitsCheck' para mudar o nível de avisos.\n"
"O comportamentos possíveis são: ignore, warn, error."
-#: git-rebase--interactive.sh:1066
+#: git-rebase--interactive.sh:1027
#, sh-format
msgid ""
"Unrecognized setting $check_level for option rebase.missingCommitsCheck. "
@@ -13774,19 +13610,19 @@ msgstr ""
"Definição $check_level desconhecida da opção rebase.missingCommitsCheck. "
"Ignorado."
-#: git-rebase--interactive.sh:1083
+#: git-rebase--interactive.sh:1044
msgid "You can fix this with 'git rebase --edit-todo'."
msgstr "Pode corrí-lo com 'git rebase --edit-todo'."
-#: git-rebase--interactive.sh:1084
+#: git-rebase--interactive.sh:1045
msgid "Or you can abort the rebase with 'git rebase --abort'."
msgstr "Ou pode abortar o rebase com 'git rebase --abort'."
-#: git-rebase--interactive.sh:1108
+#: git-rebase--interactive.sh:1069
msgid "Could not remove CHERRY_PICK_HEAD"
msgstr "Não foi possível remover CHERRY_PICK_HEAD"
-#: git-rebase--interactive.sh:1113
+#: git-rebase--interactive.sh:1074
#, sh-format
msgid ""
"You have staged changes in your working tree.\n"
@@ -13817,11 +13653,11 @@ msgstr ""
"\n"
" git rebase --continue\n"
-#: git-rebase--interactive.sh:1130
+#: git-rebase--interactive.sh:1091
msgid "Error trying to find the author identity to amend commit"
msgstr "Erro ao tentar encontrar a identidade do autor para emendar o commit"
-#: git-rebase--interactive.sh:1135
+#: git-rebase--interactive.sh:1096
msgid ""
"You have uncommitted changes in your working tree. Please commit them\n"
"first and then run 'git rebase --continue' again."
@@ -13829,11 +13665,11 @@ msgstr ""
"Tem alterações por submeter na árvore de trabalho. Submeta-as primeiro\n"
"e execute 'git rebase --continue' de novo."
-#: git-rebase--interactive.sh:1140 git-rebase--interactive.sh:1144
+#: git-rebase--interactive.sh:1101 git-rebase--interactive.sh:1105
msgid "Could not commit staged changes."
msgstr "Não foi possível submeter as alterações preparadas."
-#: git-rebase--interactive.sh:1168
+#: git-rebase--interactive.sh:1129
msgid ""
"\n"
"You are editing the todo file of an ongoing interactive rebase.\n"
@@ -13847,44 +13683,44 @@ msgstr ""
" git rebase --continue\n"
"\n"
-#: git-rebase--interactive.sh:1176 git-rebase--interactive.sh:1337
+#: git-rebase--interactive.sh:1137 git-rebase--interactive.sh:1298
msgid "Could not execute editor"
msgstr "Não foi possível executar o editor"
-#: git-rebase--interactive.sh:1184
+#: git-rebase--interactive.sh:1145
msgid "You need to set your committer info first"
msgstr "Primeiro tem de definir a sua informação de committer"
-#: git-rebase--interactive.sh:1192
+#: git-rebase--interactive.sh:1153
#, sh-format
msgid "Could not checkout $switch_to"
msgstr "Não foi possível extrair $switch_to"
-#: git-rebase--interactive.sh:1197
+#: git-rebase--interactive.sh:1158
msgid "No HEAD?"
msgstr "Sem HEAD?"
-#: git-rebase--interactive.sh:1198
+#: git-rebase--interactive.sh:1159
#, sh-format
msgid "Could not create temporary $state_dir"
msgstr "Não foi possível criar $state_dir temporário"
-#: git-rebase--interactive.sh:1200
+#: git-rebase--interactive.sh:1161
msgid "Could not mark as interactive"
msgstr "Não foi possível marcar como interativo"
-#: git-rebase--interactive.sh:1210 git-rebase--interactive.sh:1215
+#: git-rebase--interactive.sh:1171 git-rebase--interactive.sh:1176
msgid "Could not init rewritten commits"
msgstr "Não foi possível inicializar commits reescritos"
-#: git-rebase--interactive.sh:1315
+#: git-rebase--interactive.sh:1276
#, sh-format
msgid "Rebase $shortrevisions onto $shortonto ($todocount command)"
msgid_plural "Rebase $shortrevisions onto $shortonto ($todocount commands)"
msgstr[0] "Rebase $shortrevisions sobre $shortonto ($todocount comando)"
msgstr[1] "Rebase $shortrevisions sobre $shortonto ($todocount comandos)"
-#: git-rebase--interactive.sh:1320
+#: git-rebase--interactive.sh:1281
msgid ""
"\n"
"However, if you remove everything, the rebase will be aborted.\n"
@@ -13894,7 +13730,7 @@ msgstr ""
"No entanto, se remover tudo, o rebase será abortado.\n"
"\n"
-#: git-rebase--interactive.sh:1327
+#: git-rebase--interactive.sh:1288
msgid "Note that empty commits are commented out"
msgstr "Note que commits vazios são comentados"
@@ -13946,6 +13782,123 @@ msgstr ""
msgid "Unable to determine absolute path of git directory"
msgstr "Não é possível determinar o caminho absoluto do diretório git"
+#~ msgid "bad numeric config value '%s' for '%s': invalid unit"
+#~ msgstr ""
+#~ "valor numérico '%s' da configuração '%s' incorreto: unidade inválida"
+
+#~ msgid "bad numeric config value '%s' for '%s' in blob %s: invalid unit"
+#~ msgstr ""
+#~ "valor numérico '%s' da configuração '%s' incorreto no blob %s: unidade "
+#~ "inválida"
+
+#~ msgid "bad numeric config value '%s' for '%s' in file %s: invalid unit"
+#~ msgstr ""
+#~ "valor numérico '%s' da configuração '%s' incorreto no ficheiro %s: "
+#~ "unidade inválida"
+
+#~ msgid ""
+#~ "bad numeric config value '%s' for '%s' in standard input: invalid unit"
+#~ msgstr ""
+#~ "valor numérico '%s' da configuração '%s' incorreto na entrada padrão: "
+#~ "unidade inválida"
+
+#~ msgid ""
+#~ "bad numeric config value '%s' for '%s' in submodule-blob %s: invalid unit"
+#~ msgstr ""
+#~ "valor numérico '%s' da configuração '%s' incorreto no submódulo-blob %s: "
+#~ "unidade inválida"
+
+#~ msgid ""
+#~ "bad numeric config value '%s' for '%s' in command line %s: invalid unit"
+#~ msgstr ""
+#~ "valor numérico '%s' da configuração '%s' incorreto na linha de comandos "
+#~ "%s: unidade inválida"
+
+#~ msgid "bad numeric config value '%s' for '%s' in %s: invalid unit"
+#~ msgstr ""
+#~ "valor numérico '%s' da configuração '%s' incorreto em %s: unidade inválida"
+
+#~ msgid "This is the 2nd commit message:"
+#~ msgstr "Esta é a 2ª mensagem de commit:"
+
+#~ msgid "This is the 3rd commit message:"
+#~ msgstr "Esta é a 3ª mensagem de commit:"
+
+#~ msgid "This is the 4th commit message:"
+#~ msgstr "Esta é a 4ª mensagem de commit:"
+
+#~ msgid "This is the 5th commit message:"
+#~ msgstr "Esta é a 5ª mensagem de commit:"
+
+#~ msgid "This is the 6th commit message:"
+#~ msgstr "Esta é a 6ª mensagem de commit:"
+
+#~ msgid "This is the 7th commit message:"
+#~ msgstr "Esta é a 7ª mensagem de commit:"
+
+#~ msgid "This is the 8th commit message:"
+#~ msgstr "Esta é a 8ª mensagem de commit:"
+
+#~ msgid "This is the 9th commit message:"
+#~ msgstr "Esta é a 9ª mensagem de commit:"
+
+#~ msgid "This is the 10th commit message:"
+#~ msgstr "Esta é a 10ª mensagem de commit:"
+
+#~ msgid "This is the ${n}th commit message:"
+#~ msgstr "Esta é a ${n}ª mensagem de commit:"
+
+#~ msgid "This is the ${n}st commit message:"
+#~ msgstr "Está é a ${n}ª mensagem de commit:"
+
+#~ msgid "This is the ${n}nd commit message:"
+#~ msgstr "Esta é a ${n}ª mensagem de commit:"
+
+#~ msgid "This is the ${n}rd commit message:"
+#~ msgstr "Esta é a ${n}ª mensagem de commit:"
+
+#~ msgid "The 1st commit message will be skipped:"
+#~ msgstr "A 1ª mensagem de commit será ignorada:"
+
+#~ msgid "The 2nd commit message will be skipped:"
+#~ msgstr "A 2ª mensagem de commit será ignorada:"
+
+#~ msgid "The 3rd commit message will be skipped:"
+#~ msgstr "A 3ª mensagem de commit será ignorada:"
+
+#~ msgid "The 4th commit message will be skipped:"
+#~ msgstr "A 4ª mensagem de commit será ignorada:"
+
+#~ msgid "The 5th commit message will be skipped:"
+#~ msgstr "A 5ª mensagem de commit será ignorada:"
+
+#~ msgid "The 6th commit message will be skipped:"
+#~ msgstr "A 6ª mensagem de commit será ignorada:"
+
+#~ msgid "The 7th commit message will be skipped:"
+#~ msgstr "A 7ª mensagem de commit será ignorada:"
+
+#~ msgid "The 8th commit message will be skipped:"
+#~ msgstr "A 8ª mensagem de commit será ignorada:"
+
+#~ msgid "The 9th commit message will be skipped:"
+#~ msgstr "A 9ª mensagem de commit será ignorada:"
+
+#~ msgid "The 10th commit message will be skipped:"
+#~ msgstr "A 10ª mensagem de commit será ignorada:"
+
+#~ msgid "The ${n}th commit message will be skipped:"
+#~ msgstr "A ${n}ª mensagem de commit será ignorada:"
+
+#~ msgid "The ${n}st commit message will be skipped:"
+#~ msgstr "A ${n}ª mensagem de commit será ignorada:"
+
+#~ msgid "The ${n}nd commit message will be skipped:"
+#~ msgstr "A ${n}ª mensagem de commit será ignorada:"
+
+#~ msgid "The ${n}rd commit message will be skipped:"
+#~ msgstr "A ${n}ª mensagem de commit será ignorada:"
+
#~ msgid "could not run gpg."
#~ msgstr "não foi possível executar gpg."
@@ -14034,7 +13987,8 @@ msgstr "Não é possível determinar o caminho absoluto do diretório git"
#~ "use the '--force' option. If the local git directory is not the correct "
#~ "repo"
#~ msgstr ""
-#~ "use a opção '--force'. Se o diretório git local não é o repositório correto"
+#~ "use a opção '--force'. Se o diretório git local não é o repositório "
+#~ "correto"
#~ msgid ""
#~ "or you are unsure what this means choose another name with the '--name' "
@@ -14140,7 +14094,8 @@ msgstr "Não é possível determinar o caminho absoluto do diretório git"
#~ "Quando push.default está definido como 'matching', o Git publica\n"
#~ "os ramos locais nos ramos remotos que já existam com o mesmo nome.\n"
#~ "\n"
-#~ "Desde a versão 2.0, o Git assume o comportamento mais conservativo 'simple',\n"
+#~ "Desde a versão 2.0, o Git assume o comportamento mais conservativo "
+#~ "'simple',\n"
#~ "publicando só o ramo atual no ramo remoto correspondente, que é usado\n"
#~ "para atualizar o ramo atual com 'git pull'.\n"
#~ "Consulte 'git help config' e procure por 'push.default' para mais "
diff --git a/po/zh_CN.po b/po/zh_CN.po
index ac7f5b4cb1..dc312227e0 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -136,7 +136,7 @@ msgstr ""
"Project-Id-Version: Git\n"
"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
"POT-Creation-Date: 2016-08-27 23:21+0800\n"
-"PO-Revision-Date: 2016-08-31 00:11+0800\n"
+"PO-Revision-Date: 2016-09-05 23:36+0800\n"
"Last-Translator: Jiang Xin <worldhello.net@gmail.com>\n"
"Language-Team: GitHub <https://github.com/jiangxin/git/>\n"
"Language: zh_CN\n"
@@ -319,7 +319,7 @@ msgstr "远程 git-upload-archive 命令的路径"
#: archive.c:461
msgid "Unexpected option --remote"
-msgstr "意外的选项 --remote"
+msgstr "未知参数 --remote"
#: archive.c:463
msgid "Option --exec can only be used together with --remote"
@@ -419,7 +419,7 @@ msgstr ""
#: bisect.c:798
#, c-format
msgid "Bisecting: a merge base must be tested\n"
-msgstr "二分查找中:合并基线必须要测试\n"
+msgstr "二分查找中:合并基线必须是经过测试的\n"
#: bisect.c:849
#, c-format
@@ -467,8 +467,8 @@ msgstr[1] "(大概 %d 步)"
#, c-format
msgid "Bisecting: %d revision left to test after this %s\n"
msgid_plural "Bisecting: %d revisions left to test after this %s\n"
-msgstr[0] "二分查找中:在 %2$s 之后还剩下 %1$d 个版本\n"
-msgstr[1] "二分查找中:在 %2$s 之后还剩下 %1$d 个版本\n"
+msgstr[0] "二分查找中:在此之后,还剩 %d 个版本待测试 %s\n"
+msgstr[1] "二分查找中:在此之后,还剩 %d 个版本待测试 %s\n"
#: branch.c:53
#, c-format
@@ -720,7 +720,7 @@ msgstr "标准输入中错误的配置行 %d"
#: config.c:528
#, c-format
msgid "bad config line %d in submodule-blob %s"
-msgstr "子模组数据 %2$s 中错误的配置行 %1$d"
+msgstr "子模组数据对象 %2$s 中错误的配置行 %1$d"
#: config.c:532
#, c-format
@@ -743,37 +743,37 @@ msgstr "无效的单位"
#: config.c:661
#, c-format
msgid "bad numeric config value '%s' for '%s': %s"
-msgstr "配置变量 '%2$s' 的数字取值 '%1$s' 设置错误: %3$s"
+msgstr "配置变量 '%2$s' 的数字取值 '%1$s' 设置错误:%3$s"
#: config.c:666
#, c-format
msgid "bad numeric config value '%s' for '%s' in blob %s: %s"
-msgstr "数据对象 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s': %4$s"
+msgstr "数据对象 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s"
#: config.c:669
#, c-format
msgid "bad numeric config value '%s' for '%s' in file %s: %s"
-msgstr "文件 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s': %4$s"
+msgstr "文件 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s"
#: config.c:672
#, c-format
msgid "bad numeric config value '%s' for '%s' in standard input: %s"
-msgstr "标准输入中配置变量 '%2$s' 错误的取值 '%1$s': %3$s"
+msgstr "标准输入中配置变量 '%2$s' 错误的取值 '%1$s':%3$s"
#: config.c:675
#, c-format
msgid "bad numeric config value '%s' for '%s' in submodule-blob %s: %s"
-msgstr "子模组数据 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s': %4$s"
+msgstr "子模组数据 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s"
#: config.c:678
#, c-format
msgid "bad numeric config value '%s' for '%s' in command line %s: %s"
-msgstr "命令行 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s': %4$s"
+msgstr "命令行 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s"
#: config.c:681
#, c-format
msgid "bad numeric config value '%s' for '%s' in %s: %s"
-msgstr "在 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s': %4$s"
+msgstr "在 %3$s 中配置变量 '%2$s' 错误的取值 '%1$s':%4$s"
#: config.c:768
#, c-format
@@ -949,7 +949,7 @@ msgstr "外部 diff 退出,停止在 %s"
#: diff.c:3415
msgid "--follow requires exactly one pathspec"
-msgstr "--follow 参数后只跟一个 pathspec"
+msgstr "--follow 明确要求只跟一个路径规格"
#: diff.c:3578
#, c-format
@@ -1033,7 +1033,7 @@ msgid ""
"WARNING: You called a Git command named '%s', which does not exist.\n"
"Continuing under the assumption that you meant '%s'"
msgstr ""
-"警告:您运行一个不存在的 Git 命令 '%s'。继续执行假定您要要运行的\n"
+"警告:您运行一个不存在的 Git 命令 '%s'。继续执行假定您要运行的\n"
"是 '%s'"
#: help.c:393
@@ -2059,7 +2059,7 @@ msgid ""
"Use '--' to separate paths from revisions, like this:\n"
"'git <command> [<revision>...] -- [<file>...]'"
msgstr ""
-"有歧义的参数 '%s':工作区中未知的版本或路径。\n"
+"有歧义的参数 '%s':未知的版本或路径不存在于工作区中。\n"
"使用 '--' 来分隔版本和路径,例如:\n"
"'git <command> [<revision>...] -- [<file>...]'"
@@ -2070,7 +2070,7 @@ msgid ""
"Use '--' to separate paths from revisions, like this:\n"
"'git <command> [<revision>...] -- [<file>...]'"
msgstr ""
-"有歧义的参数 '%s':两者均为版本和文件\n"
+"有歧义的参数 '%s':可同时是版本和文件\n"
"使用 '--' 来分隔版本和路径,例如:\n"
"'git <command> [<revision>...] -- [<file>...]'"
@@ -2107,7 +2107,7 @@ msgid ""
"Not a git repository (or any parent up to mount point %s)\n"
"Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set)."
msgstr ""
-"不是一个 git 仓库(或者任何向上递归到挂载点 %s)\n"
+"不是一个 git 仓库(或者向上递归至挂载点 %s 的任何祖先目录)\n"
"停止在文件系统边界(未设置 GIT_DISCOVERY_ACROSS_FILESYSTEM)。"
#: setup.c:927
@@ -2121,7 +2121,7 @@ msgid ""
"Problem with core.sharedRepository filemode value (0%.3o).\n"
"The owner of files must always have read and write permissions."
msgstr ""
-"参数 core.sharedRepository 的文件权限值有错(0%.3o)。\n"
+"参数 core.sharedRepository 的文件权限值有错(0%.3o)。\n"
"文件属主必须始终拥有读写权限。"
#: sha1_file.c:1046
@@ -2260,7 +2260,7 @@ msgstr "传输:无效的深度选项 '%s'"
msgid ""
"The following submodule paths contain changes that can\n"
"not be found on any remote:\n"
-msgstr "如下的子模组路径的修改在任何远程源中都找不到:\n"
+msgstr "下列子模组路径所包含的修改在任何远程源中都找不到:\n"
#: transport.c:775
#, c-format
@@ -2286,7 +2286,7 @@ msgstr ""
"\n"
"\tgit push\n"
"\n"
-"来推送到远程源。\n"
+"以推送至远程。\n"
"\n"
#: transport.c:783
@@ -6815,7 +6815,7 @@ msgstr "[已拒绝]"
#: builtin/fetch.c:610
msgid "can't fetch in current branch"
-msgstr "不能获取到当前分支"
+msgstr "当前分支下不能执行获取操作"
#: builtin/fetch.c:619
msgid "[tag update]"
@@ -7922,12 +7922,12 @@ msgstr "重新初始化已存在的 Git 仓库于 %s%s\n"
#: builtin/init-db.c:407
#, c-format
msgid "Initialized empty shared Git repository in %s%s\n"
-msgstr "初始化空的共享 Git 仓库于 %s%s\n"
+msgstr "已初始化空的共享 Git 仓库于 %s%s\n"
#: builtin/init-db.c:408
#, c-format
msgid "Initialized empty Git repository in %s%s\n"
-msgstr "初始化空的 Git 仓库于 %s%s\n"
+msgstr "已初始化空的 Git 仓库于 %s%s\n"
#: builtin/init-db.c:455
msgid ""
@@ -8718,7 +8718,7 @@ msgstr "对于 %s 没有来自 %s 的远程跟踪分支"
#: builtin/merge.c:960
#, c-format
msgid "Bad value '%s' in environment '%s'"
-msgstr "环境 '%2$s' 坏的取值 '%1$s'"
+msgstr "环境 '%2$s' 中存在坏的取值 '%1$s'"
#: builtin/merge.c:1034
#, c-format
@@ -9378,7 +9378,7 @@ msgstr "不能混用 --commit、--abort 或 -s/--strategy"
#: builtin/notes.c:797
msgid "Must specify a notes ref to merge"
-msgstr "您必须指定一个注解引用来合并"
+msgstr "必须指定一个注解引用来合并"
#: builtin/notes.c:821
#, c-format
@@ -10091,7 +10091,7 @@ msgstr "server-specific"
#: builtin/push.c:546
msgid "option to transmit"
-msgstr "传输的选项"
+msgstr "传输选项"
#: builtin/push.c:560
msgid "--delete is incompatible with --all, --mirror and --tags"
@@ -11566,7 +11566,7 @@ msgstr "并发任务"
#: builtin/submodule--helper.c:840
msgid "whether the initial clone should follow the shallow recommendation"
-msgstr "是否初始克隆应该遵守推荐的浅克隆选项"
+msgstr "初始克隆是否应该遵守推荐的浅克隆选项"
#: builtin/submodule--helper.c:841
msgid "don't print cloning progress"
@@ -12422,17 +12422,17 @@ msgstr "坏的 bisect_write 参数:$state"
#: git-bisect.sh:262
#, sh-format
msgid "Bad rev input: $arg"
-msgstr "输入坏的版本:$arg"
+msgstr "坏的输入版本:$arg"
#: git-bisect.sh:281
#, sh-format
msgid "Bad rev input: $bisected_head"
-msgstr "输入坏的版本:$bisected_head"
+msgstr "坏的输入版本:$bisected_head"
#: git-bisect.sh:290
#, sh-format
msgid "Bad rev input: $rev"
-msgstr "输入坏的版本:$rev"
+msgstr "坏的输入版本:$rev"
#: git-bisect.sh:299
#, sh-format
@@ -12579,7 +12579,7 @@ msgstr "错误:您对下列文件的本地修改将被合并操作覆盖"
#: git-merge-octopus.sh:61
msgid "Automated merge did not work."
-msgstr "自动合并不工作"
+msgstr "自动合并未生效。"
#: git-merge-octopus.sh:62
msgid "Should not be doing an Octopus."
@@ -12607,7 +12607,7 @@ msgstr "尝试和 $pretty_name 的简单合并"
#: git-merge-octopus.sh:102
msgid "Simple merge did not work, trying automatic merge."
-msgstr "简单合并不行,尝试自动合并。"
+msgstr "简单合并未生效,尝试自动合并。"
#: git-rebase.sh:56
msgid ""
@@ -12881,7 +12881,7 @@ msgstr "索引的进度没有被恢复。"
#: git-stash.sh:551
msgid "The stash is kept in case you need it again."
-msgstr "进度保存以免您再需要。"
+msgstr "暂存被保留以备您再次需要。"
#: git-stash.sh:560
#, sh-format
@@ -13003,7 +13003,7 @@ msgid ""
"(use 'rm -rf' if you really want to remove it including all of its history)"
msgstr ""
"子模组工作区 '$displaypath' 包含一个 .git 目录\n"
-"(使用 'rm -rf' 命令如果您真的想删除它及其全部历史)"
+"(如果您真的想删除它及其全部历史,使用 'rm -rf' 命令)"
#: git-submodule.sh:447
#, sh-format
@@ -13047,7 +13047,7 @@ msgstr "无法在子模组路径 '$sm_path' 中获取"
msgid ""
"Unable to find current ${remote_name}/${branch} revision in submodule path "
"'$sm_path'"
-msgstr "无法在子模组路径 '$sm_path' 中找到当前 ${remote_name}/${branch} 版本"
+msgstr "无法在子模组路径 '$sm_path' 中找到当前版本 ${remote_name}/${branch}"
#: git-submodule.sh:645
#, sh-format
@@ -13181,7 +13181,7 @@ msgstr ""
" x, exec = 使用 shell 运行命令(此行剩余部分)\n"
" d, drop = 删除提交\n"
"\n"
-"这些行可以重新排序,从上至下地执行。\n"
+"这些行可以被重新排序;它们会被从上至下地执行。\n"
"\n"
#: git-rebase--interactive.sh:162
@@ -13194,7 +13194,7 @@ msgstr "\n不要删除任意一行。使用 'drop' 显式地删除一个提交
msgid ""
"\n"
"If you remove a line here THAT COMMIT WILL BE LOST.\n"
-msgstr "\n如果您在这里删除一行,这个提交将会丢失。\n"
+msgstr "\n如果您在这里删除一行,对应的提交将会丢失。\n"
#: git-rebase--interactive.sh:202
#, sh-format
@@ -13211,7 +13211,7 @@ msgstr ""
"\n"
"\tgit commit --amend $gpg_sign_opt_quoted\n"
"\n"
-"一旦您对变更满意,执行\n"
+"当您对变更感到满意,执行\n"
"\n"
"\tgit rebase --continue"
@@ -13262,12 +13262,12 @@ msgstr "不能拣选 $sha1"
#: git-rebase--interactive.sh:407
#, sh-format
msgid "This is the commit message #${n}:"
-msgstr "这是提交信息 #${n}:"
+msgstr "这是提交说明 #${n}:"
#: git-rebase--interactive.sh:412
#, sh-format
msgid "The commit message #${n} will be skipped:"
-msgstr "提交信息 #${n} 将被跳过:"
+msgstr "提交说明 #${n} 将被跳过:"
#: git-rebase--interactive.sh:423
#, sh-format
@@ -13316,7 +13316,7 @@ msgstr "停止在 $sha1_abbrev... $rest"
#: git-rebase--interactive.sh:579
#, sh-format
msgid "Cannot '$squash_style' without a previous commit"
-msgstr "不能在没有前一个提交的情况下 '$squash_style'"
+msgstr "没有父提交的情况下不能 '$squash_style'"
#: git-rebase--interactive.sh:621
#, sh-format
@@ -13370,7 +13370,7 @@ msgstr "要修改请使用命令 'git rebase --edit-todo'。"
#: git-rebase--interactive.sh:693
#, sh-format
msgid "Successfully rebased and updated $head_name."
-msgstr "成功变基并更新 $head_name."
+msgstr "成功变基并更新 $head_name。"
#: git-rebase--interactive.sh:740
msgid "Could not skip unnecessary pick commands"
@@ -13412,17 +13412,17 @@ msgid ""
"warnings.\n"
"The possible behaviours are: ignore, warn, error."
msgstr ""
-"为避免这条信息,使用 drop 指令显式地删除一个提交。\n"
+"为避免这条信息,使用 \"drop\" 指令显式地删除一个提交。\n"
"\n"
-"使用 'git config rebase.missingCommitsCheck' 来修改这个级别的警告。\n"
-"可以使用:ignore、warn、error。"
+"使用 'git config rebase.missingCommitsCheck' 来修改警告级别。\n"
+"可选值有:ignore、warn、error。"
#: git-rebase--interactive.sh:1027
#, sh-format
msgid ""
"Unrecognized setting $check_level for option rebase.missingCommitsCheck. "
"Ignoring."
-msgstr "选项 rebase.missingCommitsCheck 中无法识别的设置 $check_level。忽略。"
+msgstr "选项 rebase.missingCommitsCheck 的值 $check_level 无法被识别。已忽略。"
#: git-rebase--interactive.sh:1044
msgid "You can fix this with 'git rebase --edit-todo'."
@@ -13461,19 +13461,19 @@ msgstr ""
"\n"
" git commit $gpg_sign_opt_quoted\n"
"\n"
-"两种情况下,一旦执行完毕,继续执行:\n"
+"无论哪种情况,当您完成提交,继续执行:\n"
"\n"
" git rebase --continue\n"
#: git-rebase--interactive.sh:1091
msgid "Error trying to find the author identity to amend commit"
-msgstr "当在修补提交中查找作者信息时遇到错误"
+msgstr "在修补提交中查找作者信息时遇到错误"
#: git-rebase--interactive.sh:1096
msgid ""
"You have uncommitted changes in your working tree. Please commit them\n"
"first and then run 'git rebase --continue' again."
-msgstr "您的工作区中有未提交的变更。请先提交然后再运行 'git rebase --continue'。"
+msgstr "您的工作区中有未提交的变更。请先提交然后再次运行 'git rebase --continue'。"
#: git-rebase--interactive.sh:1101 git-rebase--interactive.sh:1105
msgid "Could not commit staged changes."
@@ -13488,7 +13488,7 @@ msgid ""
"\n"
msgstr ""
"\n"
-"您正在修改运行中的交互式变基的 todo 文件。编辑结束后继续变基,\n"
+"您正在修改运行中的交互式变基的 todo 文件。若要在编辑结束后继续变基,\n"
"请执行:\n"
" git rebase --continue\n"
"\n"
@@ -13549,7 +13549,7 @@ msgstr "用法:$dashless $USAGE"
#: git-sh-setup.sh:190
#, sh-format
msgid "Cannot chdir to $cdup, the toplevel of the working tree"
-msgstr "不能更换目录到 $cdup,工作区的顶级目录"
+msgstr "不能切换目录到 $cdup,工作区的顶级目录"
#: git-sh-setup.sh:199 git-sh-setup.sh:206
#, sh-format
diff --git a/pretty.c b/pretty.c
index 9609afb510..9788bd8f3f 100644
--- a/pretty.c
+++ b/pretty.c
@@ -1065,7 +1065,7 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
const struct commit *commit = c->commit;
const char *msg = c->message;
struct commit_list *p;
- int h1, h2;
+ int ch;
/* these are independent of the commit */
switch (placeholder[0]) {
@@ -1089,14 +1089,11 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
return 1;
case 'x':
/* %x00 == NUL, %x0a == LF, etc. */
- if (0 <= (h1 = hexval_table[0xff & placeholder[1]]) &&
- h1 <= 16 &&
- 0 <= (h2 = hexval_table[0xff & placeholder[2]]) &&
- h2 <= 16) {
- strbuf_addch(sb, (h1<<4)|h2);
- return 3;
- } else
+ ch = hex2chr(placeholder + 1);
+ if (ch < 0)
return 0;
+ strbuf_addch(sb, ch);
+ return 3;
case 'w':
if (placeholder[1] == '(') {
unsigned long width = 0, indent1 = 0, indent2 = 0;
diff --git a/ref-filter.c b/ref-filter.c
index bc551a752c..9adbb8af3e 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -1576,24 +1576,6 @@ void ref_array_sort(struct ref_sorting *sorting, struct ref_array *array)
qsort(array->items, array->nr, sizeof(struct ref_array_item *), compare_refs);
}
-static int hex1(char ch)
-{
- if ('0' <= ch && ch <= '9')
- return ch - '0';
- else if ('a' <= ch && ch <= 'f')
- return ch - 'a' + 10;
- else if ('A' <= ch && ch <= 'F')
- return ch - 'A' + 10;
- return -1;
-}
-static int hex2(const char *cp)
-{
- if (cp[0] && cp[1])
- return (hex1(cp[0]) << 4) | hex1(cp[1]);
- else
- return -1;
-}
-
static void append_literal(const char *cp, const char *ep, struct ref_formatting_state *state)
{
struct strbuf *s = &state->stack->output;
@@ -1603,7 +1585,7 @@ static void append_literal(const char *cp, const char *ep, struct ref_formatting
if (cp[1] == '%')
cp++;
else {
- int ch = hex2(cp + 1);
+ int ch = hex2chr(cp + 1);
if (0 <= ch) {
strbuf_addch(s, ch);
cp += 3;
diff --git a/strbuf.c b/strbuf.c
index f3bd5719c6..b839be491b 100644
--- a/strbuf.c
+++ b/strbuf.c
@@ -187,7 +187,7 @@ void strbuf_insert(struct strbuf *sb, size_t pos, const void *data, size_t len)
void strbuf_remove(struct strbuf *sb, size_t pos, size_t len)
{
- strbuf_splice(sb, pos, len, NULL, 0);
+ strbuf_splice(sb, pos, len, "", 0);
}
void strbuf_add(struct strbuf *sb, const void *data, size_t len)
diff --git a/submodule.c b/submodule.c
index 1b5cdfb7e7..e8258f061a 100644
--- a/submodule.c
+++ b/submodule.c
@@ -1160,4 +1160,5 @@ void prepare_submodule_repo_env(struct argv_array *out)
if (strcmp(*var, CONFIG_DATA_ENVIRONMENT))
argv_array_push(out, *var);
}
+ argv_array_push(out, "GIT_DIR=.git");
}
diff --git a/t/perf/run b/t/perf/run
index cfd70129bb..e8adedadfd 100755
--- a/t/perf/run
+++ b/t/perf/run
@@ -30,7 +30,13 @@ unpack_git_rev () {
}
build_git_rev () {
rev=$1
- cp ../../config.mak build/$rev/config.mak
+ for config in config.mak config.mak.autogen config.status
+ do
+ if test -e "../../$config"
+ then
+ cp "../../$config" "build/$rev/"
+ fi
+ done
(cd build/$rev && make $GIT_PERF_MAKE_OPTS) ||
die "failed to build revision '$mydir'"
}
diff --git a/t/t1401-symbolic-ref.sh b/t/t1401-symbolic-ref.sh
index ca3fa406c3..eec3e90f9c 100755
--- a/t/t1401-symbolic-ref.sh
+++ b/t/t1401-symbolic-ref.sh
@@ -33,18 +33,25 @@ test_expect_success 'symbolic-ref refuses bare sha1' '
'
reset_to_sane
-test_expect_success 'symbolic-ref deletes HEAD' '
- git symbolic-ref -d HEAD &&
+test_expect_success 'HEAD cannot be removed' '
+ test_must_fail git symbolic-ref -d HEAD
+'
+
+reset_to_sane
+
+test_expect_success 'symbolic-ref can be deleted' '
+ git symbolic-ref NOTHEAD refs/heads/foo &&
+ git symbolic-ref -d NOTHEAD &&
test_path_is_file .git/refs/heads/foo &&
- test_path_is_missing .git/HEAD
+ test_path_is_missing .git/NOTHEAD
'
reset_to_sane
-test_expect_success 'symbolic-ref deletes dangling HEAD' '
- git symbolic-ref HEAD refs/heads/missing &&
- git symbolic-ref -d HEAD &&
+test_expect_success 'symbolic-ref can delete dangling symref' '
+ git symbolic-ref NOTHEAD refs/heads/missing &&
+ git symbolic-ref -d NOTHEAD &&
test_path_is_missing .git/refs/heads/missing &&
- test_path_is_missing .git/HEAD
+ test_path_is_missing .git/NOTHEAD
'
reset_to_sane
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index b0579dd452..8d90a6e500 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -754,9 +754,22 @@ test_expect_success 'format-patch --ignore-if-in-upstream HEAD' '
git format-patch --ignore-if-in-upstream HEAD
'
+git_version="$(git --version | sed "s/.* //")"
+
+signature() {
+ printf "%s\n%s\n\n" "-- " "${1:-$git_version}"
+}
+
+test_expect_success 'format-patch default signature' '
+ git format-patch --stdout -1 | tail -n 3 >output &&
+ signature >expect &&
+ test_cmp expect output
+'
+
test_expect_success 'format-patch --signature' '
- git format-patch --stdout --signature="my sig" -1 >output &&
- grep "my sig" output
+ git format-patch --stdout --signature="my sig" -1 | tail -n 3 >output &&
+ signature "my sig" >expect &&
+ test_cmp expect output
'
test_expect_success 'format-patch with format.signature config' '
@@ -1502,12 +1515,12 @@ test_expect_success 'format-patch -o overrides format.outputDirectory' '
test_expect_success 'format-patch --base' '
git checkout side &&
- git format-patch --stdout --base=HEAD~3 -1 >patch &&
- grep "^base-commit:" patch >actual &&
- grep "^prerequisite-patch-id:" patch >>actual &&
- echo "base-commit: $(git rev-parse HEAD~3)" >expected &&
+ git format-patch --stdout --base=HEAD~3 -1 | tail -n 7 >actual &&
+ echo >expected &&
+ echo "base-commit: $(git rev-parse HEAD~3)" >>expected &&
echo "prerequisite-patch-id: $(git show --patch HEAD~2 | git patch-id --stable | awk "{print \$1}")" >>expected &&
echo "prerequisite-patch-id: $(git show --patch HEAD~1 | git patch-id --stable | awk "{print \$1}")" >>expected &&
+ signature >> expected &&
test_cmp expected actual
'
@@ -1605,6 +1618,14 @@ test_expect_success 'format-patch --base overrides format.useAutoBase' '
test_cmp expected actual
'
+test_expect_success 'format-patch --base with --attach' '
+ git format-patch --attach=mimemime --stdout --base=HEAD~ -1 >patch &&
+ sed -n -e "/^base-commit:/s/.*/1/p" -e "/^---*mimemime--$/s/.*/2/p" \
+ patch >actual &&
+ test_write_lines 1 2 >expect &&
+ test_cmp expect actual
+'
+
test_expect_success 'format-patch --pretty=mboxrd' '
sp=" " &&
cat >msg <<-INPUT_END &&
diff --git a/t/t4051-diff-function-context.sh b/t/t4051-diff-function-context.sh
index b79b87790b..6154acb456 100755
--- a/t/t4051-diff-function-context.sh
+++ b/t/t4051-diff-function-context.sh
@@ -67,6 +67,15 @@ test_expect_success 'setup' '
commit_and_tag long_common_tail file.c &&
git checkout initial &&
+ cat "$dir/hello.c" "$dir/dummy.c" >file.c &&
+ commit_and_tag hello_dummy file.c &&
+
+ # overlap function context of 1st change and -u context of 2nd change
+ grep -v "delete me from hello" <"$dir/hello.c" >file.c &&
+ sed 2p <"$dir/dummy.c" >>file.c &&
+ commit_and_tag changed_hello_dummy file.c &&
+
+ git checkout initial &&
grep -v "delete me from hello" <file.c >file.c.new &&
mv file.c.new file.c &&
cat "$dir/appended1.c" >>file.c &&
@@ -179,4 +188,20 @@ test_expect_success ' context does not include other functions' '
test $(grep -c "^[ +-].*Begin" changed_hello_appended.diff) -le 2
'
+check_diff changed_hello_dummy 'changed two consecutive functions'
+
+test_expect_success ' context includes begin' '
+ grep "^ .*Begin of hello" changed_hello_dummy.diff &&
+ grep "^ .*Begin of dummy" changed_hello_dummy.diff
+'
+
+test_expect_success ' context includes end' '
+ grep "^ .*End of hello" changed_hello_dummy.diff &&
+ grep "^ .*End of dummy" changed_hello_dummy.diff
+'
+
+test_expect_success ' overlapping hunks are merged' '
+ test $(grep -c "^@@" changed_hello_dummy.diff) -eq 1
+'
+
test_done
diff --git a/t/t5526-fetch-submodules.sh b/t/t5526-fetch-submodules.sh
index 954d0e43f5..f3b0a8d30a 100755
--- a/t/t5526-fetch-submodules.sh
+++ b/t/t5526-fetch-submodules.sh
@@ -485,4 +485,39 @@ test_expect_success 'fetching submodules respects parallel settings' '
)
'
+test_expect_success 'fetching submodule into a broken repository' '
+ # Prepare src and src/sub nested in it
+ git init src &&
+ (
+ cd src &&
+ git init sub &&
+ git -C sub commit --allow-empty -m "initial in sub" &&
+ git submodule add -- ./sub sub &&
+ git commit -m "initial in top"
+ ) &&
+
+ # Clone the old-fashoned way
+ git clone src dst &&
+ git -C dst clone ../src/sub sub &&
+
+ # Make sure that old-fashoned layout is still supported
+ git -C dst status &&
+
+ # "diff" would find no change
+ git -C dst diff --exit-code &&
+
+ # Recursive-fetch works fine
+ git -C dst fetch --recurse-submodules &&
+
+ # Break the receiving submodule
+ rm -f dst/sub/.git/HEAD &&
+
+ # NOTE: without the fix the following tests will recurse forever!
+ # They should terminate with an error.
+
+ test_must_fail git -C dst status &&
+ test_must_fail git -C dst diff &&
+ test_must_fail git -C dst fetch --recurse-submodules
+'
+
test_done
diff --git a/t/t5541-http-push-smart.sh b/t/t5541-http-push-smart.sh
index 4840c71f02..d38bf32470 100755
--- a/t/t5541-http-push-smart.sh
+++ b/t/t5541-http-push-smart.sh
@@ -74,7 +74,7 @@ test_expect_success 'push to remote repository (standard)' '
test_tick &&
git commit -m path2 &&
HEAD=$(git rev-parse --verify HEAD) &&
- GIT_CURL_VERBOSE=1 git push -v -v 2>err &&
+ GIT_TRACE_CURL=true git push -v -v 2>err &&
! grep "Expect: 100-continue" err &&
grep "POST git-receive-pack ([0-9]* bytes)" err &&
(cd "$HTTPD_DOCUMENT_ROOT_PATH"/test_repo.git &&
diff --git a/t/t5550-http-fetch-dumb.sh b/t/t5550-http-fetch-dumb.sh
index 3484b6f0f3..7641417b4a 100755
--- a/t/t5550-http-fetch-dumb.sh
+++ b/t/t5550-http-fetch-dumb.sh
@@ -263,15 +263,15 @@ check_language () {
>expect
;;
?*)
- echo "Accept-Language: $1" >expect
+ echo "=> Send header: Accept-Language: $1" >expect
;;
esac &&
- GIT_CURL_VERBOSE=1 \
+ GIT_TRACE_CURL=true \
LANGUAGE=$2 \
git ls-remote "$HTTPD_URL/dumb/repo.git" >output 2>&1 &&
tr -d '\015' <output |
sort -u |
- sed -ne '/^Accept-Language:/ p' >actual &&
+ sed -ne '/^=> Send header: Accept-Language:/ p' >actual &&
test_cmp expect actual
}
@@ -295,8 +295,16 @@ ja;q=0.95, zh;q=0.94, sv;q=0.93, pt;q=0.92, nb;q=0.91, *;q=0.90" \
'
test_expect_success 'git client does not send an empty Accept-Language' '
- GIT_CURL_VERBOSE=1 LANGUAGE= git ls-remote "$HTTPD_URL/dumb/repo.git" 2>stderr &&
- ! grep "^Accept-Language:" stderr
+ GIT_TRACE_CURL=true LANGUAGE= git ls-remote "$HTTPD_URL/dumb/repo.git" 2>stderr &&
+ ! grep "^=> Send header: Accept-Language:" stderr
+'
+
+test_expect_success 'remote-http complains cleanly about malformed urls' '
+ # do not actually issue "list" or other commands, as we do not
+ # want to rely on what curl would actually do with such a broken
+ # URL. This is just about making sure we do not segfault during
+ # initialization.
+ test_must_fail git remote-http http::/example.com/repo.git
'
stop_httpd
diff --git a/t/t5551-http-fetch-smart.sh b/t/t5551-http-fetch-smart.sh
index 2f375eb94d..1ec5b2747a 100755
--- a/t/t5551-http-fetch-smart.sh
+++ b/t/t5551-http-fetch-smart.sh
@@ -43,12 +43,21 @@ cat >exp <<EOF
< Content-Type: application/x-git-upload-pack-result
EOF
test_expect_success 'clone http repository' '
- GIT_CURL_VERBOSE=1 git clone --quiet $HTTPD_URL/smart/repo.git clone 2>err &&
+ GIT_TRACE_CURL=true git clone --quiet $HTTPD_URL/smart/repo.git clone 2>err &&
test_cmp file clone/file &&
tr '\''\015'\'' Q <err |
sed -e "
s/Q\$//
/^[*] /d
+ /^== Info:/d
+ /^=> Send header, /d
+ /^=> Send header:$/d
+ /^<= Recv header, /d
+ /^<= Recv header:$/d
+ s/=> Send header: //
+ s/= Recv header://
+ /^<= Recv data/d
+ /^=> Send data/d
/^$/d
/^< $/d
@@ -261,9 +270,9 @@ test_expect_success CMDLINE_LIMIT \
'
test_expect_success 'large fetch-pack requests can be split across POSTs' '
- GIT_CURL_VERBOSE=1 git -c http.postbuffer=65536 \
+ GIT_TRACE_CURL=true git -c http.postbuffer=65536 \
clone --bare "$HTTPD_URL/smart/repo.git" split.git 2>err &&
- grep "^> POST" err >posts &&
+ grep "^=> Send header: POST" err >posts &&
test_line_count = 2 posts
'
diff --git a/t/t6026-merge-attr.sh b/t/t6026-merge-attr.sh
index dd8f88d187..7a6e33e673 100755
--- a/t/t6026-merge-attr.sh
+++ b/t/t6026-merge-attr.sh
@@ -185,7 +185,9 @@ test_expect_success 'custom merge does not lock index' '
git reset --hard anchor &&
write_script sleep-one-second.sh <<-\EOF &&
sleep 1 &
+ echo $! >sleep.pid
EOF
+ test_when_finished "kill \$(cat sleep.pid)" &&
test_write_lines >.gitattributes \
"* merge=ours" "text merge=sleep-one-second" &&
diff --git a/t/t7517-per-repo-email.sh b/t/t7517-per-repo-email.sh
index 337e6e30c3..2a22fa7588 100755
--- a/t/t7517-per-repo-email.sh
+++ b/t/t7517-per-repo-email.sh
@@ -36,4 +36,51 @@ test_expect_success 'succeeds cloning if global email is not set' '
git clone . clone
'
+test_expect_success 'set up rebase scenarios' '
+ # temporarily enable an actual ident for this setup
+ test_config user.email foo@example.com &&
+ test_commit new &&
+ git branch side-without-commit HEAD^ &&
+ git checkout -b side-with-commit HEAD^ &&
+ test_commit side
+'
+
+test_expect_success 'fast-forward rebase does not care about ident' '
+ git checkout -B tmp side-without-commit &&
+ git rebase master
+'
+
+test_expect_success 'non-fast-forward rebase refuses to write commits' '
+ test_when_finished "git rebase --abort || true" &&
+ git checkout -B tmp side-with-commit &&
+ test_must_fail git rebase master
+'
+
+test_expect_success 'fast-forward rebase does not care about ident (interactive)' '
+ git checkout -B tmp side-without-commit &&
+ git rebase -i master
+'
+
+test_expect_success 'non-fast-forward rebase refuses to write commits (interactive)' '
+ test_when_finished "git rebase --abort || true" &&
+ git checkout -B tmp side-with-commit &&
+ test_must_fail git rebase -i master
+'
+
+test_expect_success 'noop interactive rebase does not care about ident' '
+ git checkout -B tmp side-with-commit &&
+ git rebase -i HEAD^
+'
+
+test_expect_success 'fast-forward rebase does not care about ident (preserve)' '
+ git checkout -B tmp side-without-commit &&
+ git rebase -p master
+'
+
+test_expect_success 'non-fast-forward rebase refuses to write commits (preserve)' '
+ test_when_finished "git rebase --abort || true" &&
+ git checkout -B tmp side-with-commit &&
+ test_must_fail git rebase -p master
+'
+
test_done
diff --git a/t/t9903-bash-prompt.sh b/t/t9903-bash-prompt.sh
index 0db4469c89..97c9b32c2e 100755
--- a/t/t9903-bash-prompt.sh
+++ b/t/t9903-bash-prompt.sh
@@ -177,7 +177,7 @@ test_expect_success 'prompt - interactive rebase' '
git checkout b1 &&
test_when_finished "git checkout master" &&
git rebase -i HEAD^ &&
- test_when_finished "git rebase --abort"
+ test_when_finished "git rebase --abort" &&
__git_ps1 >"$actual" &&
test_cmp expected "$actual"
'
diff --git a/t/test-lib.sh b/t/test-lib.sh
index d731d66e36..ac56512a1c 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -89,6 +89,7 @@ unset VISUAL EMAIL LANGUAGE COLUMNS $("$PERL_PATH" -e '
UNZIP
PERF_
CURL_VERBOSE
+ TRACE_CURL
));
my @vars = grep(/^GIT_/ && !/^GIT_($ok)/o, @env);
print join("\n", @vars);
@@ -687,9 +688,9 @@ test_done () {
test_results_dir="$TEST_OUTPUT_DIRECTORY/test-results"
mkdir -p "$test_results_dir"
base=${0##*/}
- test_results_path="$test_results_dir/${base%.sh}-$$.counts"
+ test_results_path="$test_results_dir/${base%.sh}.counts"
- cat >>"$test_results_path" <<-EOF
+ cat >"$test_results_path" <<-EOF
total $test_count
success $test_success
fixed $test_fixed
diff --git a/transport.c b/transport.c
index cf8de6e888..94d6dc3725 100644
--- a/transport.c
+++ b/transport.c
@@ -771,7 +771,7 @@ static void die_with_unpushed_submodules(struct string_list *needs_pushing)
fprintf(stderr, _("The following submodule paths contain changes that can\n"
"not be found on any remote:\n"));
for (i = 0; i < needs_pushing->nr; i++)
- printf(" %s\n", needs_pushing->items[i].string);
+ fprintf(stderr, " %s\n", needs_pushing->items[i].string);
fprintf(stderr, _("\nPlease try\n\n"
" git push --recurse-submodules=on-demand\n\n"
"or cd to the path and use\n\n"
diff --git a/unpack-trees.c b/unpack-trees.c
index 11c37fbc58..2a963f9a7f 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -123,9 +123,9 @@ void setup_unpack_trees_porcelain(struct unpack_trees_options *opts,
msgs[ERROR_SPARSE_NOT_UPTODATE_FILE] =
_("Cannot update sparse checkout: the following entries are not up-to-date:\n%s");
msgs[ERROR_WOULD_LOSE_ORPHANED_OVERWRITTEN] =
- _("The following Working tree files would be overwritten by sparse checkout update:\n%s");
+ _("The following working tree files would be overwritten by sparse checkout update:\n%s");
msgs[ERROR_WOULD_LOSE_ORPHANED_REMOVED] =
- _("The following Working tree files would be removed by sparse checkout update:\n%s");
+ _("The following working tree files would be removed by sparse checkout update:\n%s");
opts->show_all_errors = 1;
/* rejected paths may not have a static buffer */
@@ -218,8 +218,8 @@ static void unlink_entry(const struct cache_entry *ce)
schedule_dir_for_removal(ce->name, ce_namelen(ce));
}
-static struct checkout state;
-static int check_updates(struct unpack_trees_options *o)
+static int check_updates(struct unpack_trees_options *o,
+ const struct checkout *state)
{
unsigned cnt = 0, total = 0;
struct progress *progress = NULL;
@@ -264,7 +264,7 @@ static int check_updates(struct unpack_trees_options *o)
display_progress(progress, ++cnt);
ce->ce_flags &= ~CE_UPDATE;
if (o->update && !o->dry_run) {
- errs |= checkout_entry(ce, &state, NULL);
+ errs |= checkout_entry(ce, state, NULL);
}
}
}
@@ -1094,6 +1094,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
int i, ret;
static struct cache_entry *dfc;
struct exclude_list el;
+ struct checkout state;
if (len > MAX_UNPACK_TREES)
die("unpack_trees takes at most %d trees", MAX_UNPACK_TREES);
@@ -1239,7 +1240,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
}
o->src_index = NULL;
- ret = check_updates(o) ? (-2) : 0;
+ ret = check_updates(o, &state) ? (-2) : 0;
if (o->dst_index) {
if (!ret) {
if (!o->result.cache_tree)
diff --git a/url.c b/url.c
index 2d89ad190c..eaf4f07081 100644
--- a/url.c
+++ b/url.c
@@ -29,25 +29,6 @@ int is_url(const char *url)
return (url[0] == ':' && url[1] == '/' && url[2] == '/');
}
-static int url_decode_char(const char *q)
-{
- int i;
- unsigned char val = 0;
- for (i = 0; i < 2; i++) {
- unsigned char c = *q++;
- val <<= 4;
- if (c >= '0' && c <= '9')
- val += c - '0';
- else if (c >= 'a' && c <= 'f')
- val += c - 'a' + 10;
- else if (c >= 'A' && c <= 'F')
- val += c - 'A' + 10;
- else
- return -1;
- }
- return val;
-}
-
static char *url_decode_internal(const char **query, int len,
const char *stop_at, struct strbuf *out,
int decode_plus)
@@ -66,7 +47,7 @@ static char *url_decode_internal(const char **query, int len,
}
if (c == '%') {
- int val = url_decode_char(q + 1);
+ int val = hex2chr(q + 1);
if (0 <= val) {
strbuf_addch(out, val);
q += 3;
diff --git a/usage.c b/usage.c
index 1dad03fb5c..0efa3faf60 100644
--- a/usage.c
+++ b/usage.c
@@ -148,6 +148,7 @@ void NORETURN die_errno(const char *fmt, ...)
va_end(params);
}
+#undef error_errno
int error_errno(const char *fmt, ...)
{
char buf[1024];
diff --git a/vcs-svn/fast_export.c b/vcs-svn/fast_export.c
index bd0f2c2b86..97cba39cdf 100644
--- a/vcs-svn/fast_export.c
+++ b/vcs-svn/fast_export.c
@@ -73,7 +73,7 @@ void fast_export_begin_note(uint32_t revision, const char *author,
static int firstnote = 1;
size_t loglen = strlen(log);
printf("commit %s\n", note_ref);
- printf("committer %s <%s@%s> %ld +0000\n", author, author, "local", timestamp);
+ printf("committer %s <%s@%s> %lu +0000\n", author, author, "local", timestamp);
printf("data %"PRIuMAX"\n", (uintmax_t)loglen);
fwrite(log, loglen, 1, stdout);
if (firstnote) {
@@ -107,7 +107,7 @@ void fast_export_begin_commit(uint32_t revision, const char *author,
}
printf("commit %s\n", local_ref);
printf("mark :%"PRIu32"\n", revision);
- printf("committer %s <%s@%s> %ld +0000\n",
+ printf("committer %s <%s@%s> %lu +0000\n",
*author ? author : "nobody",
*author ? author : "nobody",
*uuid ? uuid : "local", timestamp);
diff --git a/xdiff/xemit.c b/xdiff/xemit.c
index 49aa16ff78..7389ce4102 100644
--- a/xdiff/xemit.c
+++ b/xdiff/xemit.c
@@ -22,15 +22,6 @@
#include "xinclude.h"
-
-
-
-static long xdl_get_rec(xdfile_t *xdf, long ri, char const **rec);
-static int xdl_emit_record(xdfile_t *xdf, long ri, char const *pre, xdemitcb_t *ecb);
-
-
-
-
static long xdl_get_rec(xdfile_t *xdf, long ri, char const **rec) {
*rec = xdf->recs[ri]->ptr;
@@ -248,7 +239,7 @@ int xdl_emit_diff(xdfenv_t *xe, xdchange_t *xscr, xdemitcb_t *ecb,
if (xche->next) {
long l = XDL_MIN(xche->next->i1,
xe->xdf1.nrec - 1);
- if (l <= e1 ||
+ if (l - xecfg->ctxlen <= e1 ||
get_func_line(xe, xecfg, NULL, l, e1) < 0) {
xche = xche->next;
goto post_context_calculation;