summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/RelNotes/2.6.5.txt39
-rw-r--r--Documentation/RelNotes/2.7.0.txt117
-rw-r--r--Documentation/config.txt14
-rw-r--r--Documentation/git-format-patch.txt4
-rw-r--r--Documentation/git-p4.txt4
-rw-r--r--Documentation/git-push.txt24
-rw-r--r--Documentation/git-submodule.txt5
-rwxr-xr-xGIT-VERSION-GEN2
-rw-r--r--builtin/log.c5
-rw-r--r--builtin/push.c35
-rw-r--r--cache.h1
-rw-r--r--config.c6
-rw-r--r--contrib/completion/git-completion.bash3
-rw-r--r--credential-store.c2
-rw-r--r--fast-import.c2
-rw-r--r--git-compat-util.h3
-rwxr-xr-xgit-p4.py44
-rw-r--r--git-rebase--interactive.sh18
-rwxr-xr-xgit-send-email.perl7
-rwxr-xr-xgitk-git/gitk38
-rw-r--r--gitk-git/po/ja.po692
-rw-r--r--gitk-git/po/sv.po614
-rw-r--r--ident.c51
-rw-r--r--log-tree.c3
-rw-r--r--refs/files-backend.c2
-rw-r--r--revision.c4
-rw-r--r--revision.h1
-rw-r--r--sha1_file.c5
-rw-r--r--submodule-config.c29
-rw-r--r--submodule-config.h1
-rw-r--r--submodule.h1
-rwxr-xr-xt/t3404-rebase-interactive.sh18
-rwxr-xr-xt/t4014-format-patch.sh14
-rwxr-xr-xt/t5531-deep-submodule-push.sh217
-rwxr-xr-xt/t9826-git-p4-keep-empty-commits.sh134
-rw-r--r--wrapper.c12
36 files changed, 1340 insertions, 831 deletions
diff --git a/Documentation/RelNotes/2.6.5.txt b/Documentation/RelNotes/2.6.5.txt
new file mode 100644
index 0000000000..3e6331d9dc
--- /dev/null
+++ b/Documentation/RelNotes/2.6.5.txt
@@ -0,0 +1,39 @@
+Git v2.6.5 Release Notes
+========================
+
+Fixes since v2.6.4
+------------------
+
+ * Because "test_when_finished" in our test framework queues the
+ clean-up tasks to be done in a shell variable, it should not be
+ used inside a subshell. Add a mechanism to allow 'bash' to catch
+ such uses, and fix the ones that were found.
+
+ * Update "git subtree" (in contrib/) so that it can take whitespaces
+ in the pathnames, not only in the in-tree pathname but the name of
+ the directory that the repository is in.
+
+ * Cosmetic improvement to lock-file error messages.
+
+ * mark_tree_uninteresting() has code to handle the case where it gets
+ passed a NULL pointer in its 'tree' parameter, but the function had
+ 'object = &tree->object' assignment before checking if tree is
+ NULL. This gives a compiler an excuse to declare that tree will
+ never be NULL and apply a wrong optimization. Avoid it.
+
+ * The helper used to iterate over loose object directories to prune
+ stale objects did not closedir() immediately when it is done with a
+ directory--a callback such as the one used for "git prune" may want
+ to do rmdir(), but it would fail on open directory on platforms
+ such as WinXP.
+
+ * "git p4" used to import Perforce CLs that touch only paths outside
+ the client spec as empty commits. It has been corrected to ignore
+ them instead, with a new configuration git-p4.keepEmptyCommits as a
+ backward compatibility knob.
+
+ * The exit code of git-fsck did not reflect some types of errors
+ found in packed objects, which has been corrected.
+
+Also contains typofixes, documentation updates and trivial code
+clean-ups.
diff --git a/Documentation/RelNotes/2.7.0.txt b/Documentation/RelNotes/2.7.0.txt
index 761f697f10..215528b4b8 100644
--- a/Documentation/RelNotes/2.7.0.txt
+++ b/Documentation/RelNotes/2.7.0.txt
@@ -6,6 +6,10 @@ Updates since v2.6
UI, Workflows & Features
+ * The appearance of "gitk", particularly on high DPI monitors, have
+ been improved. "gitk" also comes with an undated translation for
+ Swedish and Japanese.
+
* "git remote" learned "get-url" subcommand to show the URL for a
given remote name used for fetching and pushing.
@@ -22,7 +26,7 @@ UI, Workflows & Features
* Users who are too busy to type three extra keystrokes to ask for
"git stash show -p" can now set stash.showPatch configuration
- varible to true to always see the actual patch, not just the list
+ variable to true to always see the actual patch, not just the list
of paths affected with feel for the extent of damage via diffstat.
* "quiltimport" allows to specify the series file by honoring the
@@ -51,7 +55,6 @@ UI, Workflows & Features
* Prepare for Git on-disk repository representation to undergo
backward incompatible changes by introducing a new repository
format version "1", with an extension mechanism.
- (merge 067fbd4 jk/repository-extension later to maint).
* "git worktree" learned a "list" subcommand.
@@ -66,7 +69,7 @@ UI, Workflows & Features
a superset of "--no-progress". Extend the command to support the
usual "--[no-]progress".
- * The semantics of tranfer.hideRefs configuration variable have been
+ * The semantics of transfer.hideRefs configuration variable have been
extended to work better with the ref "namespace" feature that lets
you throw unrelated bunches of repositories in a single physical
repository and virtually serve them as separate ones.
@@ -80,6 +83,12 @@ UI, Workflows & Features
* The credential-cache daemon can be told to ignore SIGHUP to work
around issue when running Git from inside emacs.
+ * "git push" learned new configuration for doing "--recurse-submodules"
+ on each push.
+
+ * "format-patch" has learned a new option to zero-out the commit
+ object name on the mbox "From " line.
+
Performance, Internal Implementation, Development Support etc.
@@ -98,11 +107,9 @@ Performance, Internal Implementation, Development Support etc.
clean-up tasks to be done in a shell variable, it should not be
used inside a subshell. Add a mechanism to allow 'bash' to catch
such uses, and fix the ones that were found.
- (merge 0968f12 jk/test-lint-forbid-when-finished-in-subshell later to maint).
* The debugging infrastructure for pkt-line based communication has
been improved to mark the side-band communication specifically.
- (merge fd89433 jk/async-pkt-line later to maint).
* Update "git branch" that list existing branches, using the
ref-filter API that is shared with "git tag" and "git
@@ -120,7 +127,6 @@ Performance, Internal Implementation, Development Support etc.
* The internal stripspace() function has been moved to where it
logically belongs to, i.e. strbuf API, and the command line parser
of "git stripspace" has been updated to use the parse_options API.
- (merge bed4452 tk/stripspace later to maint).
* "git am" used to spawn "git mailinfo" via run_command() API once
per each patch, but learned to make a direct call to mailinfo()
@@ -180,63 +186,51 @@ notes for details).
(which is not a great UI element as they can only appear at the end
of the command line). Add notice to documentation of each and
every one of them.
- (merge 2b594bf mm/keyid-docs later to maint).
* "git blame --first-parent v1.0..v2.0" was not rejected but did not
limit the blame to commits on the first parent chain.
- (merge 95a4fb0 jk/blame-first-parent later to maint).
* "git subtree" (in contrib/) now can take whitespaces in the
pathnames, not only in the in-tree pathname but the name of the
- directory that the repository is in. (merge 5b6ab38
- as/subtree-with-spaces later to maint).
+ directory that the repository is in.
* The ssh transport, just like any other transport over the network,
did not clear GIT_* environment variables, but it is possible to
use SendEnv and AcceptEnv to leak them to the remote invocation of
Git, which is not a good idea at all. Explicitly clear them just
like we do for the local transport.
- (merge a48b409 jk/connect-clear-env later to maint).
* Correct "git p4 --detect-labels" so that it does not fail to create
a tag that points at a commit that is also being imported.
- (merge b43702a ld/p4-import-labels later to maint).
* The Makefile always runs the library archiver with hardcoded "crs"
options, which was inconvenient for exotic platforms on which
people want to use programs with totally different set of command
line options.
- (merge ac179b4 jw/make-arflags-customizable later to maint).
* Customization to change the behaviour with "make -w" and "make -s"
in our Makefile was broken when they were used together.
- (merge ef49e05 jk/make-findstring-makeflags-fix later to maint).
* Allocation related functions and stdio are unsafe things to call
inside a signal handler, and indeed killing the pager can cause
glibc to deadlock waiting on allocation mutex as our signal handler
tries to free() some data structures in wait_for_pager(). Reduce
these unsafe calls.
- (merge 507d780 ti/glibc-stdio-mutex-from-signal-handler later to maint).
* The way how --ref/--notes to specify the notes tree reference are
DWIMmed was not clearly documented.
- (merge e14c92e jk/notes-dwim-doc later to maint).
* "git gc" used to barf when a symbolic ref has gone dangling
(e.g. the branch that used to be your upstream's default when you
cloned from it is now gone, and you did "fetch --prune").
- (merge 14886b4 js/gc-with-stale-symref later to maint).
* "git clone --dissociate" runs a big "git repack" process at the
end, and it helps to close file descriptors that are open on the
packs and their idx files before doing so on filesystems that
cannot remove a file that is still open.
- (merge 786b150 js/clone-dissociate later to maint).
* Description of the "log.follow" configuration variable in "git log"
documentation is now also copied to "git config" documentation.
- (merge fd8d07e dt/log-follow-config later to maint).
* "git rebase -i" had a minor regression recently, which stopped
considering a line that begins with an indented '#' in its insn
@@ -244,93 +238,73 @@ notes for details).
Windows where CRLF left by the editor is turned into a trailing CR
on the line read via the "read" built-in command of bash. Both of
these issues are now fixed.
- (merge 39743cf gr/rebase-i-drop-warn later to maint).
* After "git checkout --detach", "git status" reported a fairly
useless "HEAD detached at HEAD", instead of saying at which exact
commit.
- (merge 0eb8548 mm/detach-at-HEAD-reflog later to maint).
* When "git send-email" wanted to talk over Net::SMTP::SSL,
Net::Cmd::datasend() did not like to be fed too many bytes at the
same time and failed to send messages. Send the payload one line
at a time to work around the problem.
- (merge f60c483 sa/send-email-smtp-batch-data-limit later to maint).
* When "git am" was rewritten as a built-in, it stopped paying
attention to user.signingkey, which was fixed.
- (merge 434c64d pt/am-builtin later to maint).
* It was not possible to use a repository-lookalike created by "git
worktree add" as a local source of "git clone".
- (merge d78db84 nd/clone-linked-checkout later to maint).
* On a case insensitive filesystems, setting GIT_WORK_TREE variable
using a random cases that does not agree with what the filesystem
thinks confused Git that it wasn't inside the working tree.
- (merge 63ec5e1 js/icase-wt-detection later to maint).
* Performance-measurement tests did not work without an installed Git.
- (merge 31cd128 sb/perf-without-installed-git later to maint).
* A test script for the HTTP service had a timing dependent bug,
which was fixed.
- (merge 362d8b6 sb/http-flaky-test-fix later to maint).
* There were some classes of errors that "git fsck" diagnosed to its
standard error that did not cause it to exit with non-zero status.
- (merge 122f76f jc/fsck-dropped-errors later to maint).
* Work around "git p4" failing when the P4 depot records the contents
in UTF-16 without UTF-16 BOM.
- (merge 1f5f390 ls/p4-translation-failure later to maint).
* When "git gc --auto" is backgrounded, its diagnosis message is
lost. Save it to a file in $GIT_DIR and show it next time the "gc
--auto" is run.
- (merge 329e6e8 nd/gc-auto-background-fix later to maint).
* The submodule code has been taught to work better with separate
work trees created via "git worktree add".
- (merge 11f9dd7 mk/submodule-gitdir-path later to maint).
* "git gc" is safe to run anytime only because it has the built-in
grace period to protect young objects. In order to run with no
grace period, the user must make sure that the repository is
quiescent.
- (merge fae1a90 jc/doc-gc-prune-now later to maint).
* A recent "filter-branch --msg-filter" broke skipping of the commit
object header, which is fixed.
- (merge a5a4b3f jk/filter-branch-use-of-sed-on-incomplete-line later to maint).
* The normalize_ceiling_entry() function does not muck with the end
of the path it accepts, and the real world callers do rely on that,
but a test insisted that the function drops a trailing slash.
- (merge b2a7123 rd/test-path-utils later to maint).
* A test for interaction between untracked cache and sparse checkout
added in Git 2.5 days were flaky.
- (merge 9b680fb dt/t7063-fix-flaky-test later to maint).
* A couple of commands still showed "[options]" in their usage string
to note where options should come on their command line, but we
spell that "[<options>]" in most places these days.
- (merge d96a031 rt/placeholder-in-usage later to maint).
* The synopsis text and the usage string of subcommands that read
list of things from the standard input are often shown as if they
only take input from a file on a filesystem, which was misleading.
- (merge 33e8fc8 jc/usage-stdin later to maint).
* "git am -3" had a small regression where it is aborted in its error
handling codepath when underlying merge-recursive failed in certain
ways, as it assumed that the internal call to merge-recursive will
never die, which is not the case (yet).
- (merge c63d4b2 jc/am-3-fallback-regression-fix later to maint).
* The linkage order of libraries was wrong in places around libcurl.
- (merge 7e91e8d rp/link-curl-before-ssl later to maint).
* The name-hash subsystem that is used to cope with case insensitive
filesystems keeps track of directories and their on-filesystem
@@ -340,40 +314,31 @@ notes for details).
cache entry was removed from the index, leading to use after free.
This was fixed by recording the path for each directory instead of
borrowing cache entries and restructuring the API somewhat.
- (merge 41284eb dt/name-hash-dir-entry-fix later to maint).
* "git merge-file" tried to signal how many conflicts it found, which
obviously would not work well when there are too many of them.
- (merge e34f802 jk/merge-file-exit-code later to maint).
* The error message from "git blame --contents --reverse" incorrectly
talked about "--contents --children".
- (merge 9526197 mk/blame-error-message later to maint).
* "git imap-send" did not compile well with older version of cURL library.
- (merge 71d9257 js/imap-send-curl-compilation-fix later to maint).
* Merging a branch that removes a path and another that changes the
mode bits on the same path should have conflicted at the path, but
it didn't and silently favoured the removal.
- (merge 72fac66 jk/delete-modechange-conflict later to maint).
* "git --literal-pathspecs add -u/-A" without any command line
argument misbehaved ever since Git 2.0.
- (merge 29abb33 jc/add-u-A-default-to-top later to maint).
* "git daemon" uses "run_command()" without "finish_command()", so it
needs to release resources itself, which it forgot to do.
- (merge b1b49ff rs/daemon-plug-child-leak later to maint).
* "git status --branch --short" accessed beyond the constant string
"HEAD", which has been corrected.
- (merge c72b49d rs/wt-status-detached-branch-fix later to maint).
* We peek objects from submodule's object store by linking it to the
list of alternate object databases, but the code to do so forgot to
correctly initialize the list.
- (merge 9a6e4f0 jk/initialization-fix-to-add-submodule-odb later to maint).
* The code to prepare the working tree side of temporary directory
for the "dir-diff" feature forgot that symbolic links need not be
@@ -381,7 +346,6 @@ notes for details).
special cases and overwrites them. Besides, it was wrong to try
computing the object name of the target of symbolic link, which may
not even exist or may be a directory.
- (merge cfe2d4b da/difftool later to maint).
* A Range: request can be responded with a full response and when
asked properly libcurl knows how to strip the result down to the
@@ -390,42 +354,47 @@ notes for details).
* Having a leftover .idx file without corresponding .pack file in
the repository hurts performance; "git gc" learned to prune them.
- (merge 478f34d dk/gc-idx-wo-pack later to maint).
* Apple's common crypto implementation of SHA1_Update() does not take
more than 4GB at a time, and we now have a compile-time workaround
for it.
- (merge 001fd7a ad/sha1-update-chunked later to maint).
* Produce correct "dirty" marker for shell prompts, even when we
are on an orphan or an unborn branch.
- (merge c26f70c sg/bash-prompt-dirty-orphan later to maint).
* A build without NO_IPv6 used to use gethostbyname() when guessing
user's hostname, instead of getaddrinfo() that is used in other
codepaths in such a build.
- (merge 00bce77 ep/ident-with-getaddrinfo later to maint).
- * The exit code of git-fsck didnot reflect some types of errors found
- in packed objects, which has been corrected.
- (merge 8c24d83 dt/fsck-verify-pack-error later to maint).
+ * The exit code of git-fsck did not reflect some types of errors
+ found in packed objects, which has been corrected.
+
+ * The helper used to iterate over loose object directories to prune
+ stale objects did not closedir() immediately when it is done with a
+ directory--a callback such as the one used for "git prune" may want
+ to do rmdir(), but it would fail on open directory on platforms
+ such as WinXP.
+
+ * "git p4" used to import Perforce CLs that touch only paths outside
+ the client spec as empty commits. It has been corrected to ignore
+ them instead, with a new configuration git-p4.keepEmptyCommits as a
+ backward compatibility knob.
+
+ * The completion script (in contrib/) used to list "git column"
+ (which is not an end-user facing command) as one of the choices
+ (merge 160fcdb sg/completion-no-column later to maint).
+
+ * The error reporting from "git send-email", when SMTP TLS fails, has
+ been improved.
+ (merge 9d60524 jk/send-email-ssl-errors later to maint).
+
+ * When getpwuid() on the system returned NULL (e.g. the user is not
+ in the /etc/passwd file or other uid-to-name mappings), the
+ codepath to find who the user is to record it in the reflog barfed
+ and died. Loosen the check in this codepath, which already accepts
+ questionable ident string (e.g. host part of the e-mail address is
+ obviously bogus), and in general when we operate fmt_ident() function
+ in non-strict mode.
+ (merge 92bcbb9 jk/ident-loosen-getpwuid later to maint).
* Code clean-up, minor fixes etc.
- (merge 15ed07d jc/rerere later to maint).
- (merge e7a7401 pt/pull-builtin later to maint).
- (merge 29bc480 nd/ls-remote-does-not-have-u-option later to maint).
- (merge be510e0 jk/asciidoctor-section-heading-markup-fix later to maint).
- (merge 83e6bda tk/typofix-connect-unknown-proto-error later to maint).
- (merge a43eb67 tk/doc-interpret-trailers-grammo later to maint).
- (merge ba128e2 es/worktree-add-cleanup later to maint).
- (merge 44cd91e cc/quote-comments later to maint).
- (merge 147875f sb/submodule-config-parse later to maint).
- (merge ae9f274 es/worktree-add later to maint).
- (merge 3b19dba jc/em-dash-in-doc later to maint).
- (merge f3f38c7 jc/everyday-markup later to maint).
- (merge 77d5f71 xf/user-manual-markup later to maint).
- (merge b2af482 xf/user-manual-ff later to maint).
- (merge e510ab8 rs/pop-commit later to maint).
- (merge fdcdb77 js/misc-fixes later to maint).
- (merge c949b00 rs/show-branch-argv-array later to maint).
- (merge 56a8aea nd/doc-check-ref-format-typo later to maint).
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 2d06b11f25..f61788668e 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -2229,6 +2229,20 @@ push.gpgSign::
override a value from a lower-priority config file. An explicit
command-line flag always overrides this config option.
+push.recurseSubmodules::
+ Make sure all submodule commits used by the revisions to be pushed
+ are available on a remote-tracking branch. If the value is 'check'
+ then Git will verify that all submodule commits that changed in the
+ revisions to be pushed are available on at least one remote of the
+ submodule. If any commits are missing, the push will be aborted and
+ exit with non-zero status. If the value is 'on-demand' then all
+ submodules that changed in the revisions to be pushed will be
+ pushed. If on-demand was not able to push all necessary revisions
+ it will also be aborted and exit with non-zero status. If the value
+ is 'no' then default behavior of ignoring submodules when pushing
+ is retained. You may override this configuration at time of push by
+ specifying '--recurse-submodules=check|on-demand|no'.
+
rebase.stat::
Whether to show a diffstat of what changed upstream since the last
rebase. False by default.
diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
index 4035649117..e3cdaeb958 100644
--- a/Documentation/git-format-patch.txt
+++ b/Documentation/git-format-patch.txt
@@ -256,6 +256,10 @@ you can use `--suffix=-patch` to get `0001-description-of-my-change-patch`.
using this option cannot be applied properly, but they are
still useful for code review.
+--zero-commit::
+ Output an all-zero hash in each patch's From header instead
+ of the hash of the commit.
+
--root::
Treat the revision argument as a <revision range>, even if it
is just a single commit (that would normally be treated as a
diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
index c3ff7d0d9b..738cfde10c 100644
--- a/Documentation/git-p4.txt
+++ b/Documentation/git-p4.txt
@@ -549,6 +549,10 @@ git-p4.largeFilePush::
Boolean variable which defines if large files are automatically
pushed to a server.
+git-p4.keepEmptyCommits::
+ A changelist that contains only excluded files will be imported
+ as an empty commit if this boolean option is set to true.
+
Submit variables
~~~~~~~~~~~~~~~~
git-p4.detectRenames::
diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt
index 85a4d7d6d5..4c775bcec4 100644
--- a/Documentation/git-push.txt
+++ b/Documentation/git-push.txt
@@ -257,16 +257,20 @@ origin +master` to force a push to the `master` branch). See the
is specified. This flag forces progress status even if the
standard error stream is not directed to a terminal.
---recurse-submodules=check|on-demand::
- Make sure all submodule commits used by the revisions to be
- pushed are available on a remote-tracking branch. If 'check' is
- used Git will verify that all submodule commits that changed in
- the revisions to be pushed are available on at least one remote
- of the submodule. If any commits are missing the push will be
- aborted and exit with non-zero status. If 'on-demand' is used
- all submodules that changed in the revisions to be pushed will
- be pushed. If on-demand was not able to push all necessary
- revisions it will also be aborted and exit with non-zero status.
+--no-recurse-submodules::
+--recurse-submodules=check|on-demand|no::
+ May be used to make sure all submodule commits used by the
+ revisions to be pushed are available on a remote-tracking branch.
+ If 'check' is used Git will verify that all submodule commits that
+ changed in the revisions to be pushed are available on at least one
+ remote of the submodule. If any commits are missing the push will
+ be aborted and exit with non-zero status. If 'on-demand' is used
+ all submodules that changed in the revisions to be pushed will be
+ pushed. If on-demand was not able to push all necessary revisions
+ it will also be aborted and exit with non-zero status. A value of
+ 'no' or using '--no-recurse-submodules' can be used to override the
+ push.recurseSubmodules configuration variable when no submodule
+ recursion is required.
--[no-]verify::
Toggle the pre-push hook (see linkgit:githooks[5]). The
diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt
index f17687e09d..1572f058f5 100644
--- a/Documentation/git-submodule.txt
+++ b/Documentation/git-submodule.txt
@@ -237,6 +237,9 @@ sync::
+
"git submodule sync" synchronizes all submodules while
"git submodule sync \-- A" synchronizes submodule "A" only.
++
+If `--recursive` is specified, this command will recurse into the
+registered submodules, and sync any nested submodules within.
OPTIONS
-------
@@ -364,7 +367,7 @@ the submodule itself.
for linkgit:git-clone[1]'s `--reference` and `--shared` options carefully.
--recursive::
- This option is only valid for foreach, update and status commands.
+ This option is only valid for foreach, update, status and sync commands.
Traverse submodules recursively. The operation is performed not
only in the submodules of the current repo, but also
in any nested submodules inside those submodules (and so on).
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 29c43c21e1..4478007b01 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -1,7 +1,7 @@
#!/bin/sh
GVF=GIT-VERSION-FILE
-DEF_VER=v2.7.0-rc0
+DEF_VER=v2.7.0-rc1
LF='
'
diff --git a/builtin/log.c b/builtin/log.c
index 069bd3a909..e00cea75cc 100644
--- a/builtin/log.c
+++ b/builtin/log.c
@@ -1196,6 +1196,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
int cover_letter = -1;
int boundary_count = 0;
int no_binary_diff = 0;
+ int zero_commit = 0;
struct commit *origin = NULL;
const char *in_reply_to = NULL;
struct patch_ids ids;
@@ -1236,6 +1237,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
PARSE_OPT_NOARG | PARSE_OPT_NONEG, keep_callback },
OPT_BOOL(0, "no-binary", &no_binary_diff,
N_("don't output binary diffs")),
+ OPT_BOOL(0, "zero-commit", &zero_commit,
+ N_("output all-zero hash in From header")),
OPT_BOOL(0, "ignore-if-in-upstream", &ignore_if_in_upstream,
N_("don't include a patch matching a commit upstream")),
{ OPTION_SET_INT, 'p', "no-stat", &use_patch_format, NULL,
@@ -1380,6 +1383,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
/* Always generate a patch */
rev.diffopt.output_format |= DIFF_FORMAT_PATCH;
+ rev.zero_commit = zero_commit;
+
if (!DIFF_OPT_TST(&rev.diffopt, TEXT) && !no_binary_diff)
DIFF_OPT_SET(&rev.diffopt, BINARY);
diff --git a/builtin/push.c b/builtin/push.c
index 3bda430b6b..cc29277ea2 100644
--- a/builtin/push.c
+++ b/builtin/push.c
@@ -9,6 +9,7 @@
#include "transport.h"
#include "parse-options.h"
#include "submodule.h"
+#include "submodule-config.h"
#include "send-pack.h"
static const char * const push_usage[] = {
@@ -21,6 +22,7 @@ static int deleterefs;
static const char *receivepack;
static int verbosity;
static int progress = -1;
+static int recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
static struct push_cas_option cas;
@@ -452,22 +454,14 @@ static int do_push(const char *repo, int flags)
static int option_parse_recurse_submodules(const struct option *opt,
const char *arg, int unset)
{
- int *flags = opt->value;
+ int *recurse_submodules = opt->value;
- if (*flags & (TRANSPORT_RECURSE_SUBMODULES_CHECK |
- TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND))
- die("%s can only be used once.", opt->long_name);
-
- if (arg) {
- if (!strcmp(arg, "check"))
- *flags |= TRANSPORT_RECURSE_SUBMODULES_CHECK;
- else if (!strcmp(arg, "on-demand"))
- *flags |= TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND;
- else
- die("bad %s argument: %s", opt->long_name, arg);
- } else
- die("option %s needs an argument (check|on-demand)",
- opt->long_name);
+ if (unset)
+ *recurse_submodules = RECURSE_SUBMODULES_OFF;
+ else if (arg)
+ *recurse_submodules = parse_push_recurse_submodules_arg(opt->long_name, arg);
+ else
+ die("%s missing parameter", opt->long_name);
return 0;
}
@@ -522,6 +516,10 @@ static int git_push_config(const char *k, const char *v, void *cb)
return error("Invalid value for '%s'", k);
}
}
+ } else if (!strcmp(k, "push.recursesubmodules")) {
+ const char *value;
+ if (!git_config_get_value("push.recursesubmodules", &value))
+ recurse_submodules = parse_push_recurse_submodules_arg(k, value);
}
return git_default_config(k, v, NULL);
@@ -549,7 +547,7 @@ int cmd_push(int argc, const char **argv, const char *prefix)
0, CAS_OPT_NAME, &cas, N_("refname>:<expect"),
N_("require old value of ref to be at this value"),
PARSE_OPT_OPTARG, parseopt_push_cas_option },
- { OPTION_CALLBACK, 0, "recurse-submodules", &flags, "check|on-demand",
+ { OPTION_CALLBACK, 0, "recurse-submodules", &recurse_submodules, N_("check|on-demand|no"),
N_("control recursive pushing of submodules"),
PARSE_OPT_OPTARG, option_parse_recurse_submodules },
OPT_BOOL( 0 , "thin", &thin, N_("use thin pack")),
@@ -580,6 +578,11 @@ int cmd_push(int argc, const char **argv, const char *prefix)
if (deleterefs && argc < 2)
die(_("--delete doesn't make sense without any refs"));
+ if (recurse_submodules == RECURSE_SUBMODULES_CHECK)
+ flags |= TRANSPORT_RECURSE_SUBMODULES_CHECK;
+ else if (recurse_submodules == RECURSE_SUBMODULES_ON_DEMAND)
+ flags |= TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND;
+
if (tags)
add_refspec("refs/tags/*");
diff --git a/cache.h b/cache.h
index 5ab6cb50a6..c63fcc113a 100644
--- a/cache.h
+++ b/cache.h
@@ -831,6 +831,7 @@ extern const char *find_unique_abbrev(const unsigned char *sha1, int len);
extern int find_unique_abbrev_r(char *hex, const unsigned char *sha1, int len);
extern const unsigned char null_sha1[GIT_SHA1_RAWSZ];
+extern const struct object_id null_oid;
static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2)
{
diff --git a/config.c b/config.c
index 248a21ab94..86a5eb2571 100644
--- a/config.c
+++ b/config.c
@@ -2144,7 +2144,8 @@ int git_config_set_multivar_in_file(const char *config_filename,
}
if (commit_lock_file(lock) < 0) {
- error("could not commit config file %s", config_filename);
+ error("could not write config file %s: %s", config_filename,
+ strerror(errno));
ret = CONFIG_NO_WRITE;
lock = NULL;
goto out_free;
@@ -2330,7 +2331,8 @@ int git_config_rename_section_in_file(const char *config_filename,
fclose(config_file);
unlock_and_out:
if (commit_lock_file(lock) < 0)
- ret = error("could not commit config file %s", config_filename);
+ ret = error("could not write config file %s: %s",
+ config_filename, strerror(errno));
out:
free(filename_buf);
return ret;
diff --git a/contrib/completion/git-completion.bash b/contrib/completion/git-completion.bash
index 111b05302b..6956807519 100644
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -664,6 +664,7 @@ __git_list_porcelain_commands ()
check-mailmap) : plumbing;;
check-ref-format) : plumbing;;
checkout-index) : plumbing;;
+ column) : internal helper;;
commit-tree) : plumbing;;
count-objects) : infrequent;;
credential) : credentials;;
@@ -1716,7 +1717,7 @@ _git_send_email ()
--to|--cc|--bcc|--from)
__gitcomp "
$(git --git-dir="$(__gitdir)" send-email --dump-aliases 2>/dev/null)
- " "" ""
+ "
return
;;
esac
diff --git a/credential-store.c b/credential-store.c
index 00aea3aa30..54c4e04737 100644
--- a/credential-store.c
+++ b/credential-store.c
@@ -64,7 +64,7 @@ static void rewrite_credential_file(const char *fn, struct credential *c,
print_line(extra);
parse_credential_file(fn, c, NULL, print_line);
if (commit_lock_file(&credential_lock) < 0)
- die_errno("unable to commit credential store");
+ die_errno("unable to write credential store");
}
static void store_credential_file(const char *fn, struct credential *c)
diff --git a/fast-import.c b/fast-import.c
index e3b421d514..3c65edb5c4 100644
--- a/fast-import.c
+++ b/fast-import.c
@@ -1824,7 +1824,7 @@ static void dump_marks(void)
dump_marks_helper(f, 0, marks);
if (commit_lock_file(&mark_lock)) {
- failure |= error("Unable to commit marks file %s: %s",
+ failure |= error("Unable to write file %s: %s",
export_marks_file, strerror(errno));
return;
}
diff --git a/git-compat-util.h b/git-compat-util.h
index 8e3986791d..2da0a75a38 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -929,9 +929,6 @@ int access_or_die(const char *path, int mode, unsigned flag);
/* Warn on an inaccessible file that ought to be accessible */
void warn_on_inaccessible(const char *path);
-/* Get the passwd entry for the UID of the current process. */
-struct passwd *xgetpwuid_self(void);
-
#ifdef GMTIME_UNRELIABLE_ERRORS
struct tm *git_gmtime(const time_t *);
struct tm *git_gmtime_r(const time_t *, struct tm *);
diff --git a/git-p4.py b/git-p4.py
index 13f124061f..7a9dd6ad74 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -2556,12 +2556,6 @@ class P4Sync(Command, P4UserMap):
filesToDelete = []
for f in files:
- # if using a client spec, only add the files that have
- # a path in the client
- if self.clientSpecDirs:
- if self.clientSpecDirs.map_in_client(f['path']) == "":
- continue
-
filesForCommit.append(f)
if f['action'] in self.delete_actions:
filesToDelete.append(f)
@@ -2632,25 +2626,41 @@ class P4Sync(Command, P4UserMap):
gitStream.write(description)
gitStream.write("\n")
+ def inClientSpec(self, path):
+ if not self.clientSpecDirs:
+ return True
+ inClientSpec = self.clientSpecDirs.map_in_client(path)
+ if not inClientSpec and self.verbose:
+ print('Ignoring file outside of client spec: {0}'.format(path))
+ return inClientSpec
+
+ def hasBranchPrefix(self, path):
+ if not self.branchPrefixes:
+ return True
+ hasPrefix = [p for p in self.branchPrefixes
+ if p4PathStartsWith(path, p)]
+ if hasPrefix and self.verbose:
+ print('Ignoring file outside of prefix: {0}'.format(path))
+ return hasPrefix
+
def commit(self, details, files, branch, parent = ""):
epoch = details["time"]
author = details["user"]
if self.verbose:
- print "commit into %s" % branch
-
- # start with reading files; if that fails, we should not
- # create a commit.
- new_files = []
- for f in files:
- if [p for p in self.branchPrefixes if p4PathStartsWith(f['path'], p)]:
- new_files.append (f)
- else:
- sys.stderr.write("Ignoring file outside of prefix: %s\n" % f['path'])
+ print('commit into {0}'.format(branch))
if self.clientSpecDirs:
self.clientSpecDirs.update_client_spec_path_cache(files)
+ files = [f for f in files
+ if self.inClientSpec(f['path']) and self.hasBranchPrefix(f['path'])]
+
+ if not files and not gitConfigBool('git-p4.keepEmptyCommits'):
+ print('Ignoring revision {0} as it would produce an empty commit.'
+ .format(details['change']))
+ return
+
self.gitStream.write("commit %s\n" % branch)
self.gitStream.write("mark :%s\n" % details["change"])
self.committedChanges.add(int(details["change"]))
@@ -2674,7 +2684,7 @@ class P4Sync(Command, P4UserMap):
print "parent %s" % parent
self.gitStream.write("from %s\n" % parent)
- self.streamP4Files(new_files)
+ self.streamP4Files(files)
self.gitStream.write("\n")
change = int(details["change"])
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index b938a6d4aa..c0cfe88a3d 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -81,17 +81,13 @@ rewritten_pending="$state_dir"/rewritten-pending
# and leaves CR at the end instead.
cr=$(printf "\015")
-strategy_args=
-if test -n "$do_merge"
-then
- strategy_args=${strategy:+--strategy=$strategy}
- eval '
- for strategy_opt in '"$strategy_opts"'
- do
- strategy_args="$strategy_args -X$(git rev-parse --sq-quote "${strategy_opt#--}")"
- done
- '
-fi
+strategy_args=${strategy:+--strategy=$strategy}
+eval '
+ for strategy_opt in '"$strategy_opts"'
+ do
+ strategy_args="$strategy_args -X$(git rev-parse --sq-quote "${strategy_opt#--}")"
+ done
+'
GIT_CHERRY_PICK_HELP="$resolvemsg"
export GIT_CHERRY_PICK_HELP
diff --git a/git-send-email.perl b/git-send-email.perl
index 2a3873b744..6caa5b563f 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -1332,6 +1332,13 @@ Message-Id: $message_id
require Net::SMTP::SSL;
$smtp_domain ||= maildomain();
require IO::Socket::SSL;
+
+ # Suppress "variable accessed once" warning.
+ {
+ no warnings 'once';
+ $IO::Socket::SSL::DEBUG = 1;
+ }
+
# Net::SMTP::SSL->new() does not forward any SSL options
IO::Socket::SSL::set_client_defaults(
ssl_verify_params());
diff --git a/gitk-git/gitk b/gitk-git/gitk
index fcc606eab7..5f1255c860 100755
--- a/gitk-git/gitk
+++ b/gitk-git/gitk
@@ -1943,6 +1943,8 @@ proc confirm_popup {msg {owner .}} {
}
proc setoptions {} {
+ global use_ttk
+
if {[tk windowingsystem] ne "win32"} {
option add *Panedwindow.showHandle 1 startupFile
option add *Panedwindow.sashRelief raised startupFile
@@ -1965,6 +1967,18 @@ proc setoptions {} {
option add *Listbox.font mainfont startupFile
}
+proc setttkstyle {} {
+ eval font configure TkDefaultFont [fontflags mainfont]
+ eval font configure TkTextFont [fontflags textfont]
+ eval font configure TkHeadingFont [fontflags mainfont]
+ eval font configure TkCaptionFont [fontflags mainfont] -weight bold
+ eval font configure TkTooltipFont [fontflags uifont]
+ eval font configure TkFixedFont [fontflags textfont]
+ eval font configure TkIconFont [fontflags uifont]
+ eval font configure TkMenuFont [fontflags uifont]
+ eval font configure TkSmallCaptionFont [fontflags uifont]
+}
+
# Make a menu and submenus.
# m is the window name for the menu, items is the list of menu items to add.
# Each item is a list {mc label type description options...}
@@ -2251,7 +2265,7 @@ proc makewindow {} {
set h [expr {[font metrics uifont -linespace] + 2}]
set progresscanv .tf.bar.progress
canvas $progresscanv -relief sunken -height $h -borderwidth 2
- set progressitem [$progresscanv create rect -1 0 0 $h -fill green]
+ set progressitem [$progresscanv create rect -1 0 0 $h -fill lime]
set fprogitem [$progresscanv create rect -1 0 0 $h -fill yellow]
set rprogitem [$progresscanv create rect -1 0 0 $h -fill red]
}
@@ -2347,6 +2361,9 @@ proc makewindow {} {
${NS}::frame .bleft.mid
${NS}::frame .bleft.bottom
+ # gap between sub-widgets
+ set wgap [font measure uifont "i"]
+
${NS}::button .bleft.top.search -text [mc "Search"] -command dosearch
pack .bleft.top.search -side left -padx 5
set sstring .bleft.top.sstring
@@ -2361,8 +2378,9 @@ proc makewindow {} {
-command changediffdisp -variable diffelide -value {0 1}
${NS}::radiobutton .bleft.mid.new -text [mc "New version"] \
-command changediffdisp -variable diffelide -value {1 0}
+
${NS}::label .bleft.mid.labeldiffcontext -text " [mc "Lines of context"]: "
- pack .bleft.mid.diff .bleft.mid.old .bleft.mid.new -side left
+ pack .bleft.mid.diff .bleft.mid.old .bleft.mid.new -side left -ipadx $wgap
spinbox .bleft.mid.diffcontext -width 5 \
-from 0 -increment 1 -to 10000000 \
-validate all -validatecommand "diffcontextvalidate %P" \
@@ -2370,7 +2388,7 @@ proc makewindow {} {
.bleft.mid.diffcontext set $diffcontext
trace add variable diffcontextstring write diffcontextchange
lappend entries .bleft.mid.diffcontext
- pack .bleft.mid.labeldiffcontext .bleft.mid.diffcontext -side left
+ pack .bleft.mid.labeldiffcontext .bleft.mid.diffcontext -side left -ipadx $wgap
${NS}::checkbutton .bleft.mid.ignspace -text [mc "Ignore space change"] \
-command changeignorespace -variable ignorespace
pack .bleft.mid.ignspace -side left -padx 5
@@ -3379,7 +3397,7 @@ set rectmask {
0x00, 0x00, 0xfc, 0x0f, 0xfc, 0x0f, 0xfc, 0x0f,
0xfc, 0x0f, 0xfc, 0x0f, 0xfc, 0x0f, 0xfc, 0x0f, 0x00, 0x00};
}
-image create bitmap reficon-H -background black -foreground green \
+image create bitmap reficon-H -background black -foreground lime \
-data $rectdata -maskdata $rectmask
image create bitmap reficon-o -background black -foreground "#ddddff" \
-data $rectdata -maskdata $rectmask
@@ -12170,7 +12188,7 @@ if {[tk windowingsystem] eq "aqua"} {
set extdifftool "meld"
}
-set colors {green red blue magenta darkgrey brown orange}
+set colors {lime red blue magenta darkgrey brown orange}
if {[tk windowingsystem] eq "win32"} {
set uicolor SystemButtonFace
set uifgcolor SystemButtonText
@@ -12188,12 +12206,12 @@ if {[tk windowingsystem] eq "win32"} {
}
set diffcolors {red "#00a000" blue}
set diffcontext 3
-set mergecolors {red blue green purple brown "#009090" magenta "#808000" "#009000" "#ff0080" cyan "#b07070" "#70b0f0" "#70f0b0" "#f0b070" "#ff70b0"}
+set mergecolors {red blue lime purple brown "#009090" magenta "#808000" "#009000" "#ff0080" cyan "#b07070" "#70b0f0" "#70f0b0" "#f0b070" "#ff70b0"}
set ignorespace 0
set worddiff ""
set markbgcolor "#e0e0ff"
-set headbgcolor green
+set headbgcolor lime
set headfgcolor black
set headoutlinecolor black
set remotebgcolor #ffddaa
@@ -12208,7 +12226,7 @@ set linehoverfgcolor black
set linehoveroutlinecolor black
set mainheadcirclecolor yellow
set workingfilescirclecolor red
-set indexcirclecolor green
+set indexcirclecolor lime
set circlecolors {white blue gray blue blue}
set linkfgcolor blue
set circleoutlinecolor $fgcolor
@@ -12356,6 +12374,10 @@ if {![info exists have_ttk]} {
set use_ttk [expr {$have_ttk && $want_ttk}]
set NS [expr {$use_ttk ? "ttk" : ""}]
+if {$use_ttk} {
+ setttkstyle
+}
+
regexp {^git version ([\d.]*\d)} [exec git version] _ git_version
set show_notes {}
diff --git a/gitk-git/po/ja.po b/gitk-git/po/ja.po
index 59e42a89fd..f143753db0 100644
--- a/gitk-git/po/ja.po
+++ b/gitk-git/po/ja.po
@@ -1,7 +1,8 @@
# Japanese translations for gitk package.
-# Copyright (C) 2005-2009 Paul Mackerras
+# Copyright (C) 2005-2015 Paul Mackerras
# This file is distributed under the same license as the gitk package.
#
+# YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>, 2015.
# Mizar <mizar.jp@gmail.com>, 2009.
# Junio C Hamano <gitster@pobox.com>, 2009.
msgid ""
@@ -9,10 +10,10 @@ msgstr ""
"Project-Id-Version: gitk\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-05-17 14:32+1000\n"
-"PO-Revision-Date: 2009-11-06 01:45+0900\n"
-"Last-Translator: Mizar <mizar.jp@gmail.com>\n"
+"PO-Revision-Date: 2015-11-12 13:00+0900\n"
+"Last-Translator: YOKOTA Hiroshi <yokota@netlab.cs.tsukuba.ac.jp>\n"
"Language-Team: Japanese\n"
-"Language: \n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -24,11 +25,11 @@ msgstr "マージされていないファイルのリストを取得できませ
#: gitk:212 gitk:2381
msgid "Color words"
-msgstr ""
+msgstr "変更を着色"
-#: gitk:217 gitk:2381 gitk:8220 gitk:8253
+#: gitk:217 gitk:2381 gitk:8221 gitk:8254
msgid "Markup words"
-msgstr ""
+msgstr "変更をマークアップ"
#: gitk:324
msgid "Error parsing revisions:"
@@ -60,15 +61,15 @@ msgstr "git log 実行エラー:"
msgid "Reading"
msgstr "読み込み中"
-#: gitk:496 gitk:4525
+#: gitk:496 gitk:4526
msgid "Reading commits..."
msgstr "コミット読み込み中..."
-#: gitk:499 gitk:1637 gitk:4528
+#: gitk:499 gitk:1637 gitk:4529
msgid "No commits selected"
msgstr "コミットが選択されていません"
-#: gitk:1445 gitk:4045 gitk:12432
+#: gitk:1445 gitk:4046 gitk:12447
msgid "Command line"
msgstr "コマンド行"
@@ -80,12 +81,12 @@ msgstr "git log の出力を解析できません:"
msgid "No commit information available"
msgstr "有効なコミットの情報がありません"
-#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521
+#: gitk:1903 gitk:1932 gitk:4316 gitk:9684 gitk:11256 gitk:11536
msgid "OK"
msgstr "OK"
-#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671
-#: gitk:11242 gitk:11522
+#: gitk:1934 gitk:4318 gitk:9197 gitk:9276 gitk:9406 gitk:9455 gitk:9686
+#: gitk:11257 gitk:11537
msgid "Cancel"
msgstr "キャンセル"
@@ -127,25 +128,25 @@ msgstr "編集(&E)"
#: gitk:2084
msgid "&New view..."
-msgstr "新規ビュー...(&N)"
+msgstr "新規ビュー(&N)..."
#: gitk:2085
msgid "&Edit view..."
-msgstr "ビュー編集...(&E)"
+msgstr "ビュー編集(&E)..."
#: gitk:2086
msgid "&Delete view"
msgstr "ビュー削除(&D)"
-#: gitk:2088 gitk:4043
+#: gitk:2088
msgid "&All files"
msgstr "全てのファイル(&A)"
-#: gitk:2083 gitk:4067
+#: gitk:2083
msgid "&View"
msgstr "ビュー(&V)"
-#: gitk:2093 gitk:2103 gitk:3012
+#: gitk:2093 gitk:2103
msgid "&About gitk"
msgstr "gitk について(&A)"
@@ -157,7 +158,7 @@ msgstr "キーバインディング(&K)"
msgid "&Help"
msgstr "ヘルプ(&H)"
-#: gitk:2185 gitk:8652
+#: gitk:2185 gitk:8653
msgid "SHA1 ID:"
msgstr "SHA1 ID:"
@@ -173,53 +174,53 @@ msgstr "検索"
msgid "commit"
msgstr "コミット"
-#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827
-#: gitk:6912
+#: gitk:2299 gitk:2301 gitk:4688 gitk:4711 gitk:4735 gitk:6756 gitk:6828
+#: gitk:6913
msgid "containing:"
msgstr "含む:"
-#: gitk:2302 gitk:3526 gitk:3531 gitk:4763
+#: gitk:2302 gitk:3527 gitk:3532 gitk:4764
msgid "touching paths:"
msgstr "パスの一部:"
-#: gitk:2303 gitk:4777
+#: gitk:2303 gitk:4778
msgid "adding/removing string:"
-msgstr "追加/除去する文字列:"
+msgstr "追加/除去される文字列:"
-#: gitk:2304 gitk:4779
+#: gitk:2304 gitk:4780
msgid "changing lines matching:"
-msgstr ""
+msgstr "変更される文字列"
-#: gitk:2313 gitk:2315 gitk:4766
+#: gitk:2313 gitk:2315 gitk:4767
msgid "Exact"
msgstr "英字の大小を区別する"
-#: gitk:2315 gitk:4854 gitk:6723
+#: gitk:2315 gitk:4855 gitk:6724
msgid "IgnCase"
msgstr "英字の大小を区別しない"
-#: gitk:2315 gitk:4736 gitk:4852 gitk:6719
+#: gitk:2315 gitk:4737 gitk:4853 gitk:6720
msgid "Regexp"
msgstr "正規表現"
-#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916
+#: gitk:2317 gitk:2318 gitk:4875 gitk:4905 gitk:4912 gitk:6849 gitk:6917
msgid "All fields"
msgstr "全ての項目"
-#: gitk:2318 gitk:4871 gitk:4904 gitk:6786
+#: gitk:2318 gitk:4872 gitk:4905 gitk:6787
msgid "Headline"
msgstr "ヘッドライン"
-#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389
+#: gitk:2319 gitk:4872 gitk:6787 gitk:6917 gitk:7390
msgid "Comments"
msgstr "コメント"
-#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830
-#: gitk:8845
+#: gitk:2319 gitk:4872 gitk:4877 gitk:4912 gitk:6787 gitk:7325 gitk:8831
+#: gitk:8846
msgid "Author"
msgstr "作者"
-#: gitk:2319 gitk:4871 gitk:6786 gitk:7326
+#: gitk:2319 gitk:4872 gitk:6787 gitk:7327
msgid "Committer"
msgstr "コミット者"
@@ -247,9 +248,9 @@ msgstr "文脈行数"
msgid "Ignore space change"
msgstr "空白の違いを無視"
-#: gitk:2378 gitk:2380 gitk:7959 gitk:8206
+#: gitk:2378 gitk:2380 gitk:7960 gitk:8207
msgid "Line diff"
-msgstr ""
+msgstr "行毎のdiff"
#: gitk:2445
msgid "Patch"
@@ -259,111 +260,115 @@ msgstr "パッチ"
msgid "Tree"
msgstr "ツリー"
-#: gitk:2617 gitk:2637
+#: gitk:2617 gitk:2638
msgid "Diff this -> selected"
msgstr "これと選択したコミットのdiffを見る"
-#: gitk:2618 gitk:2638
+#: gitk:2618 gitk:2639
msgid "Diff selected -> this"
msgstr "選択したコミットとこれのdiffを見る"
-#: gitk:2619 gitk:2639
+#: gitk:2619 gitk:2640
msgid "Make patch"
msgstr "パッチ作成"
-#: gitk:2620 gitk:9254
+#: gitk:2620 gitk:9255
msgid "Create tag"
msgstr "タグ生成"
-#: gitk:2621 gitk:9371
+#: gitk:2621
+msgid "Copy commit summary"
+msgstr "コミットの要約をコピーする"
+
+#: gitk:2622 gitk:9386
msgid "Write commit to file"
msgstr "コミットをファイルに書き出す"
-#: gitk:2622 gitk:9428
+#: gitk:2623 gitk:9443
msgid "Create new branch"
msgstr "新規ブランチ生成"
-#: gitk:2623
+#: gitk:2624
msgid "Cherry-pick this commit"
msgstr "このコミットをチェリーピックする"
-#: gitk:2624
+#: gitk:2625
msgid "Reset HEAD branch to here"
msgstr "ブランチのHEADをここにリセットする"
-#: gitk:2625
+#: gitk:2626
msgid "Mark this commit"
msgstr "このコミットにマークをつける"
-#: gitk:2626
+#: gitk:2627
msgid "Return to mark"
msgstr "マークを付けた所に戻る"
-#: gitk:2627
+#: gitk:2628
msgid "Find descendant of this and mark"
msgstr "これとマークをつけた所との子孫を見つける"
-#: gitk:2628
+#: gitk:2629
msgid "Compare with marked commit"
msgstr "マークを付けたコミットと比較する"
-#: gitk:2629 gitk:2640
-#, fuzzy
+#: gitk:2630 gitk:2641
msgid "Diff this -> marked commit"
msgstr "これと選択したコミットのdiffを見る"
-#: gitk:2630 gitk:2641
-#, fuzzy
+#: gitk:2631 gitk:2642
msgid "Diff marked commit -> this"
msgstr "選択したコミットとこれのdiffを見る"
-#: gitk:2631
-#, fuzzy
+#: gitk:2632
msgid "Revert this commit"
-msgstr "このコミットにマークをつける"
+msgstr "このコミットを撤回する"
-#: gitk:2647
+#: gitk:2648
msgid "Check out this branch"
msgstr "このブランチをチェックアウトする"
-#: gitk:2648
+#: gitk:2649
msgid "Remove this branch"
msgstr "このブランチを除去する"
-#: gitk:2649
+#: gitk:2650
msgid "Copy branch name"
-msgstr ""
+msgstr "ブランチ名をコピーする"
-#: gitk:2656
+#: gitk:2657
msgid "Highlight this too"
msgstr "これもハイライトさせる"
-#: gitk:2657
+#: gitk:2658
msgid "Highlight this only"
msgstr "これだけをハイライトさせる"
-#: gitk:2658
+#: gitk:2659
msgid "External diff"
msgstr "外部diffツール"
-#: gitk:2659
+#: gitk:2660
msgid "Blame parent commit"
msgstr "親コミットから blame をかける"
-#: gitk:2660
+#: gitk:2661
msgid "Copy path"
-msgstr ""
+msgstr "パス名をコピーする"
-#: gitk:2667
+#: gitk:2668
msgid "Show origin of this line"
msgstr "この行の出自を表示する"
-#: gitk:2668
+#: gitk:2669
msgid "Run git gui blame on this line"
msgstr "この行に git gui で blame をかける"
-#: gitk:3014
-#, fuzzy
+#: gitk:3013
+msgid "About gitk"
+msgstr "gitk について"
+
+#: gitk:3015
msgid ""
"\n"
"Gitk - a commit viewer for git\n"
@@ -375,324 +380,327 @@ msgstr ""
"\n"
"Gitk - gitコミットビューア\n"
"\n"
-"Copyright \\u00a9 2005-2010 Paul Mackerras\n"
+"Copyright © 2005-2014 Paul Mackerras\n"
"\n"
"使用および再配布は GNU General Public License に従ってください"
-#: gitk:3022 gitk:3089 gitk:9857
+#: gitk:3023 gitk:3090 gitk:9872
msgid "Close"
msgstr "閉じる"
-#: gitk:3043
+#: gitk:3044
msgid "Gitk key bindings"
msgstr "Gitk キーバインディング"
-#: gitk:3046
+#: gitk:3047
msgid "Gitk key bindings:"
msgstr "Gitk キーバインディング:"
-#: gitk:3048
+#: gitk:3049
#, tcl-format
msgid "<%s-Q>\t\tQuit"
msgstr "<%s-Q>\t\t終了"
-#: gitk:3049
-#, fuzzy, tcl-format
+#: gitk:3050
+#, tcl-format
msgid "<%s-W>\t\tClose window"
-msgstr "<%s-F>\t\t検索"
+msgstr "<%s-W>\t\tウィンドウを閉じる"
-#: gitk:3050
+#: gitk:3051
msgid "<Home>\t\tMove to first commit"
msgstr "<Home>\t\t最初のコミットに移動"
-#: gitk:3051
+#: gitk:3052
msgid "<End>\t\tMove to last commit"
msgstr "<End>\t\t最後のコミットに移動"
-#: gitk:3052
-#, fuzzy
+#: gitk:3053
msgid "<Up>, p, k\tMove up one commit"
-msgstr "<Up>, p, i\t一つ上のコミットに移動"
+msgstr "<Up>, p, k\t一つ上のコミットに移動"
-#: gitk:3053
-#, fuzzy
+#: gitk:3054
msgid "<Down>, n, j\tMove down one commit"
-msgstr "<Down>, n, k\t一つ下のコミットに移動"
+msgstr "<Down>, n, j\t一つ下のコミットに移動"
-#: gitk:3054
-#, fuzzy
+#: gitk:3055
msgid "<Left>, z, h\tGo back in history list"
-msgstr "<Left>, z, j\t履歴の前に戻る"
+msgstr "<Left>, z, h\t履歴の前に戻る"
-#: gitk:3055
+#: gitk:3056
msgid "<Right>, x, l\tGo forward in history list"
msgstr "<Right>, x, l\t履歴の次へ進む"
-#: gitk:3056
+#: gitk:3057
#, tcl-format
msgid "<%s-n>\tGo to n-th parent of current commit in history list"
-msgstr ""
+msgstr "<%s-n(数字)>\t履歴上で現在のコミットの親コミットの内のn(数字)番目のコミットへ移動"
-#: gitk:3057
+#: gitk:3058
msgid "<PageUp>\tMove up one page in commit list"
msgstr "<PageUp>\tコミットリストの一つ上のページに移動"
-#: gitk:3058
+#: gitk:3059
msgid "<PageDown>\tMove down one page in commit list"
msgstr "<PageDown>\tコミットリストの一つ下のページに移動"
-#: gitk:3059
+#: gitk:3060
#, tcl-format
msgid "<%s-Home>\tScroll to top of commit list"
msgstr "<%s-Home>\tコミットリストの一番上にスクロールする"
-#: gitk:3060
+#: gitk:3061
#, tcl-format
msgid "<%s-End>\tScroll to bottom of commit list"
msgstr "<%s-End>\tコミットリストの一番下にスクロールする"
-#: gitk:3061
+#: gitk:3062
#, tcl-format
msgid "<%s-Up>\tScroll commit list up one line"
msgstr "<%s-Up>\tコミットリストの一つ下の行にスクロールする"
-#: gitk:3062
+#: gitk:3063
#, tcl-format
msgid "<%s-Down>\tScroll commit list down one line"
msgstr "<%s-Down>\tコミットリストの一つ下の行にスクロールする"
-#: gitk:3063
+#: gitk:3064
#, tcl-format
msgid "<%s-PageUp>\tScroll commit list up one page"
msgstr "<%s-PageUp>\tコミットリストの上のページにスクロールする"
-#: gitk:3064
+#: gitk:3065
#, tcl-format
msgid "<%s-PageDown>\tScroll commit list down one page"
msgstr "<%s-PageDown>\tコミットリストの下のページにスクロールする"
-#: gitk:3065
+#: gitk:3066
msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
msgstr "<Shift-Up>\t後方を検索 (上方の・新しいコミット)"
-#: gitk:3066
+#: gitk:3067
msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
msgstr "<Shift-Down>\t前方を検索(下方の・古いコミット)"
-#: gitk:3067
+#: gitk:3068
msgid "<Delete>, b\tScroll diff view up one page"
msgstr "<Delete>, b\tdiff画面を上のページにスクロールする"
-#: gitk:3068
+#: gitk:3069
msgid "<Backspace>\tScroll diff view up one page"
msgstr "<Backspace>\tdiff画面を上のページにスクロールする"
-#: gitk:3069
+#: gitk:3070
msgid "<Space>\t\tScroll diff view down one page"
msgstr "<Space>\t\tdiff画面を下のページにスクロールする"
-#: gitk:3070
+#: gitk:3071
msgid "u\t\tScroll diff view up 18 lines"
msgstr "u\t\tdiff画面を上に18行スクロールする"
-#: gitk:3071
+#: gitk:3072
msgid "d\t\tScroll diff view down 18 lines"
msgstr "d\t\tdiff画面を下に18行スクロールする"
-#: gitk:3072
+#: gitk:3073
#, tcl-format
msgid "<%s-F>\t\tFind"
msgstr "<%s-F>\t\t検索"
-#: gitk:3073
+#: gitk:3074
#, tcl-format
msgid "<%s-G>\t\tMove to next find hit"
msgstr "<%s-G>\t\t次を検索して移動"
-#: gitk:3074
+#: gitk:3075
msgid "<Return>\tMove to next find hit"
msgstr "<Return>\t次を検索して移動"
-#: gitk:3075
-#, fuzzy
+#: gitk:3076
msgid "g\t\tGo to commit"
-msgstr "<End>\t\t最後のコミットに移動"
+msgstr "g\t\t指定してコミットに移動"
-#: gitk:3076
+#: gitk:3077
msgid "/\t\tFocus the search box"
msgstr "/\t\t検索ボックスにフォーカス"
-#: gitk:3077
+#: gitk:3078
msgid "?\t\tMove to previous find hit"
msgstr "?\t\t前を検索して移動"
-#: gitk:3078
+#: gitk:3079
msgid "f\t\tScroll diff view to next file"
msgstr "f\t\t次のファイルにdiff画面をスクロールする"
-#: gitk:3079
+#: gitk:3080
#, tcl-format
msgid "<%s-S>\t\tSearch for next hit in diff view"
msgstr "<%s-S>\t\tdiff画面の次を検索"
-#: gitk:3080
+#: gitk:3081
#, tcl-format
msgid "<%s-R>\t\tSearch for previous hit in diff view"
msgstr "<%s-R>\t\tdiff画面の前を検索"
-#: gitk:3081
+#: gitk:3082
#, tcl-format
msgid "<%s-KP+>\tIncrease font size"
msgstr "<%s-KP+>\t文字サイズを拡大"
-#: gitk:3082
+#: gitk:3083
#, tcl-format
msgid "<%s-plus>\tIncrease font size"
msgstr "<%s-plus>\t文字サイズを拡大"
-#: gitk:3083
+#: gitk:3084
#, tcl-format
msgid "<%s-KP->\tDecrease font size"
msgstr "<%s-KP->\t文字サイズを縮小"
-#: gitk:3084
+#: gitk:3085
#, tcl-format
msgid "<%s-minus>\tDecrease font size"
msgstr "<%s-minus>\t文字サイズを縮小"
-#: gitk:3085
+#: gitk:3086
msgid "<F5>\t\tUpdate"
msgstr "<F5>\t\t更新"
-#: gitk:3550 gitk:3559
+#: gitk:3551 gitk:3560
#, tcl-format
msgid "Error creating temporary directory %s:"
msgstr "一時ディレクトリ %s 生成時エラー:"
-#: gitk:3572
+#: gitk:3573
#, tcl-format
msgid "Error getting \"%s\" from %s:"
msgstr "\"%s\" のエラーが %s に発生:"
-#: gitk:3635
+#: gitk:3636
msgid "command failed:"
msgstr "コマンド失敗:"
-#: gitk:3784
+#: gitk:3785
msgid "No such commit"
msgstr "そのようなコミットはありません"
-#: gitk:3798
+#: gitk:3799
msgid "git gui blame: command failed:"
msgstr "git gui blame: コマンド失敗:"
-#: gitk:3829
+#: gitk:3830
#, tcl-format
msgid "Couldn't read merge head: %s"
msgstr "マージする HEAD を読み込めません: %s"
-#: gitk:3837
+#: gitk:3838
#, tcl-format
msgid "Error reading index: %s"
msgstr "インデックス読み込みエラー: %s"
-#: gitk:3862
+#: gitk:3863
#, tcl-format
msgid "Couldn't start git blame: %s"
msgstr "git blame を始められません: %s"
-#: gitk:3865 gitk:6754
+#: gitk:3866 gitk:6755
msgid "Searching"
msgstr "検索中"
-#: gitk:3897
+#: gitk:3898
#, tcl-format
msgid "Error running git blame: %s"
msgstr "git blame 実行エラー: %s"
-#: gitk:3925
+#: gitk:3926
#, tcl-format
msgid "That line comes from commit %s, which is not in this view"
msgstr "コミット %s に由来するその行は、このビューに表示されていません"
-#: gitk:3939
+#: gitk:3940
msgid "External diff viewer failed:"
msgstr "外部diffビューアが失敗:"
-#: gitk:4070
+#: gitk:4044
+msgid "All files"
+msgstr "全てのファイル"
+
+#: gitk:4068
+msgid "View"
+msgstr "ビュー"
+
+#: gitk:4071
msgid "Gitk view definition"
msgstr "Gitk ビュー定義"
-#: gitk:4074
+#: gitk:4075
msgid "Remember this view"
msgstr "このビューを記憶する"
-#: gitk:4075
+#: gitk:4076
msgid "References (space separated list):"
msgstr "リファレンス(スペース区切りのリスト):"
-#: gitk:4076
+#: gitk:4077
msgid "Branches & tags:"
msgstr "ブランチ&タグ:"
-#: gitk:4077
+#: gitk:4078
msgid "All refs"
msgstr "全てのリファレンス"
-#: gitk:4078
+#: gitk:4079
msgid "All (local) branches"
msgstr "全ての(ローカルな)ブランチ"
-#: gitk:4079
+#: gitk:4080
msgid "All tags"
msgstr "全てのタグ"
-#: gitk:4080
+#: gitk:4081
msgid "All remote-tracking branches"
msgstr "全てのリモート追跡ブランチ"
-#: gitk:4081
+#: gitk:4082
msgid "Commit Info (regular expressions):"
msgstr "コミット情報(正規表現):"
-#: gitk:4082
+#: gitk:4083
msgid "Author:"
msgstr "作者:"
-#: gitk:4083
+#: gitk:4084
msgid "Committer:"
msgstr "コミット者:"
-#: gitk:4084
+#: gitk:4085
msgid "Commit Message:"
msgstr "コミットメッセージ:"
-#: gitk:4085
+#: gitk:4086
msgid "Matches all Commit Info criteria"
msgstr "コミット情報の全ての条件に一致"
-#: gitk:4086
-#, fuzzy
+#: gitk:4087
msgid "Matches no Commit Info criteria"
-msgstr "コミット情報の全ての条件に一致"
+msgstr "コミット情報の全ての条件に不一致"
-#: gitk:4087
+#: gitk:4088
msgid "Changes to Files:"
msgstr "変更したファイル:"
-#: gitk:4088
+#: gitk:4089
msgid "Fixed String"
msgstr "固定文字列"
-#: gitk:4089
+#: gitk:4090
msgid "Regular Expression"
msgstr "正規表現"
-#: gitk:4090
+#: gitk:4091
msgid "Search string:"
msgstr "検索文字列:"
-#: gitk:4091
+#: gitk:4092
msgid ""
"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
"15:27:38\"):"
@@ -700,202 +708,201 @@ msgstr ""
"コミット日時 (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
"15:27:38\"):"
-#: gitk:4092
+#: gitk:4093
msgid "Since:"
msgstr "期間の始め:"
-#: gitk:4093
+#: gitk:4094
msgid "Until:"
msgstr "期間の終わり:"
-#: gitk:4094
+#: gitk:4095
msgid "Limit and/or skip a number of revisions (positive integer):"
msgstr "制限・省略するリビジョンの数(正の整数):"
-#: gitk:4095
+#: gitk:4096
msgid "Number to show:"
msgstr "表示する数:"
-#: gitk:4096
+#: gitk:4097
msgid "Number to skip:"
msgstr "省略する数:"
-#: gitk:4097
+#: gitk:4098
msgid "Miscellaneous options:"
msgstr "その他のオプション:"
-#: gitk:4098
+#: gitk:4099
msgid "Strictly sort by date"
msgstr "厳密に日付順で並び替え"
-#: gitk:4099
+#: gitk:4100
msgid "Mark branch sides"
msgstr "側枝マーク"
-#: gitk:4100
+#: gitk:4101
msgid "Limit to first parent"
msgstr "最初の親に制限"
-#: gitk:4101
+#: gitk:4102
msgid "Simple history"
msgstr "簡易な履歴"
-#: gitk:4102
+#: gitk:4103
msgid "Additional arguments to git log:"
msgstr "git log への追加の引数:"
-#: gitk:4103
+#: gitk:4104
msgid "Enter files and directories to include, one per line:"
msgstr "含まれるファイル・ディレクトリを一行ごとに入力:"
-#: gitk:4104
+#: gitk:4105
msgid "Command to generate more commits to include:"
msgstr "コミット追加コマンド:"
-#: gitk:4228
+#: gitk:4229
msgid "Gitk: edit view"
msgstr "Gitk: ビュー編集"
-#: gitk:4236
+#: gitk:4237
msgid "-- criteria for selecting revisions"
msgstr "― リビジョンの選択条件"
-#: gitk:4241
-#, fuzzy
+#: gitk:4242
msgid "View Name"
msgstr "ビュー名:"
-#: gitk:4316
+#: gitk:4317
msgid "Apply (F5)"
msgstr "適用 (F5)"
-#: gitk:4354
+#: gitk:4355
msgid "Error in commit selection arguments:"
msgstr "コミット選択引数のエラー:"
-#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374
+#: gitk:4410 gitk:4463 gitk:4925 gitk:4939 gitk:6209 gitk:12388 gitk:12389
msgid "None"
msgstr "無し"
-#: gitk:5021 gitk:5026
+#: gitk:5022 gitk:5027
msgid "Descendant"
msgstr "子孫"
-#: gitk:5022
+#: gitk:5023
msgid "Not descendant"
msgstr "非子孫"
-#: gitk:5029 gitk:5034
+#: gitk:5030 gitk:5035
msgid "Ancestor"
msgstr "祖先"
-#: gitk:5030
+#: gitk:5031
msgid "Not ancestor"
msgstr "非祖先"
-#: gitk:5324
+#: gitk:5325
msgid "Local changes checked in to index but not committed"
msgstr "ステージされた、コミット前のローカルな変更"
-#: gitk:5360
+#: gitk:5361
msgid "Local uncommitted changes, not checked in to index"
msgstr "ステージされていない、コミット前のローカルな変更"
-#: gitk:7134
+#: gitk:7135
msgid "and many more"
-msgstr ""
+msgstr "他多数"
-#: gitk:7137
+#: gitk:7138
msgid "many"
msgstr "多数"
-#: gitk:7328
+#: gitk:7329
msgid "Tags:"
msgstr "タグ:"
-#: gitk:7345 gitk:7351 gitk:8825
+#: gitk:7346 gitk:7352 gitk:8826
msgid "Parent"
msgstr "親"
-#: gitk:7356
+#: gitk:7357
msgid "Child"
msgstr "子"
-#: gitk:7365
+#: gitk:7366
msgid "Branch"
msgstr "ブランチ"
-#: gitk:7368
+#: gitk:7369
msgid "Follows"
msgstr "下位"
-#: gitk:7371
+#: gitk:7372
msgid "Precedes"
msgstr "上位"
-#: gitk:7966
+#: gitk:7967
#, tcl-format
msgid "Error getting diffs: %s"
msgstr "diff取得エラー: %s"
-#: gitk:8650
+#: gitk:8651
msgid "Goto:"
msgstr "Goto:"
-#: gitk:8671
+#: gitk:8672
#, tcl-format
msgid "Short SHA1 id %s is ambiguous"
msgstr "%s を含む SHA1 ID は複数存在します"
-#: gitk:8678
+#: gitk:8679
#, tcl-format
msgid "Revision %s is not known"
msgstr "リビジョン %s は不明です"
-#: gitk:8688
+#: gitk:8689
#, tcl-format
msgid "SHA1 id %s is not known"
msgstr "SHA1 id %s は不明です"
-#: gitk:8690
+#: gitk:8691
#, tcl-format
msgid "Revision %s is not in the current view"
msgstr "リビジョン %s は現在のビューにはありません"
-#: gitk:8832 gitk:8847
+#: gitk:8833 gitk:8848
msgid "Date"
msgstr "日付"
-#: gitk:8835
+#: gitk:8836
msgid "Children"
msgstr "子"
-#: gitk:8898
+#: gitk:8899
#, tcl-format
msgid "Reset %s branch to here"
msgstr "%s ブランチをここにリセットする"
-#: gitk:8900
+#: gitk:8901
msgid "Detached head: can't reset"
msgstr "切り離されたHEAD: リセットできません"
-#: gitk:9005 gitk:9011
+#: gitk:9006 gitk:9012
msgid "Skipping merge commit "
msgstr "コミットマージをスキップ: "
-#: gitk:9020 gitk:9025
+#: gitk:9021 gitk:9026
msgid "Error getting patch ID for "
msgstr "パッチ取得エラー: ID "
-#: gitk:9021 gitk:9026
+#: gitk:9022 gitk:9027
msgid " - stopping\n"
msgstr " - 停止\n"
-#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065
+#: gitk:9032 gitk:9035 gitk:9043 gitk:9057 gitk:9066
msgid "Commit "
msgstr "コミット "
-#: gitk:9035
+#: gitk:9036
msgid ""
" is the same patch as\n"
" "
@@ -903,7 +910,7 @@ msgstr ""
" は下記のパッチと同等\n"
" "
-#: gitk:9043
+#: gitk:9044
msgid ""
" differs from\n"
" "
@@ -911,7 +918,7 @@ msgstr ""
" 下記からのdiff\n"
" "
-#: gitk:9045
+#: gitk:9046
msgid ""
"Diff of commits:\n"
"\n"
@@ -919,131 +926,130 @@ msgstr ""
"コミットのdiff:\n"
"\n"
-#: gitk:9057 gitk:9066
+#: gitk:9058 gitk:9067
#, tcl-format
msgid " has %s children - stopping\n"
msgstr " には %s の子があります - 停止\n"
-#: gitk:9085
+#: gitk:9086
#, tcl-format
msgid "Error writing commit to file: %s"
msgstr "ファイルへのコミット書き出しエラー: %s"
-#: gitk:9091
+#: gitk:9092
#, tcl-format
msgid "Error diffing commits: %s"
msgstr "コミットのdiff実行エラー: %s"
-#: gitk:9137
+#: gitk:9138
msgid "Top"
msgstr "Top"
-#: gitk:9138
+#: gitk:9139
msgid "From"
msgstr "From"
-#: gitk:9143
+#: gitk:9144
msgid "To"
msgstr "To"
-#: gitk:9167
+#: gitk:9168
msgid "Generate patch"
msgstr "パッチ生成"
-#: gitk:9169
+#: gitk:9170
msgid "From:"
msgstr "From:"
-#: gitk:9178
+#: gitk:9179
msgid "To:"
msgstr "To:"
-#: gitk:9187
+#: gitk:9188
msgid "Reverse"
msgstr "逆"
-#: gitk:9189 gitk:9385
+#: gitk:9190 gitk:9400
msgid "Output file:"
msgstr "出力ファイル:"
-#: gitk:9195
+#: gitk:9196
msgid "Generate"
msgstr "生成"
-#: gitk:9233
+#: gitk:9234
msgid "Error creating patch:"
msgstr "パッチ生成エラー:"
-#: gitk:9256 gitk:9373 gitk:9430
+#: gitk:9257 gitk:9388 gitk:9445
msgid "ID:"
msgstr "ID:"
-#: gitk:9265
+#: gitk:9266
msgid "Tag name:"
msgstr "タグ名:"
-#: gitk:9268
+#: gitk:9269
msgid "Tag message is optional"
-msgstr ""
+msgstr "タグメッセージを付ける事も出来ます"
-#: gitk:9270
-#, fuzzy
+#: gitk:9271
msgid "Tag message:"
-msgstr "タグ名:"
+msgstr "タグメッセージ:"
-#: gitk:9274 gitk:9439
+#: gitk:9275 gitk:9454
msgid "Create"
msgstr "生成"
-#: gitk:9292
+#: gitk:9293
msgid "No tag name specified"
msgstr "タグの名称が指定されていません"
-#: gitk:9296
+#: gitk:9297
#, tcl-format
msgid "Tag \"%s\" already exists"
msgstr "タグ \"%s\" は既に存在します"
-#: gitk:9306
+#: gitk:9307
msgid "Error creating tag:"
msgstr "タグ生成エラー:"
-#: gitk:9382
+#: gitk:9397
msgid "Command:"
msgstr "コマンド:"
-#: gitk:9390
+#: gitk:9405
msgid "Write"
msgstr "書き出し"
-#: gitk:9408
+#: gitk:9423
msgid "Error writing commit:"
msgstr "コミット書き出しエラー:"
-#: gitk:9435
+#: gitk:9450
msgid "Name:"
msgstr "名前:"
-#: gitk:9458
+#: gitk:9473
msgid "Please specify a name for the new branch"
msgstr "新しいブランチの名前を指定してください"
-#: gitk:9463
+#: gitk:9478
#, tcl-format
msgid "Branch '%s' already exists. Overwrite?"
msgstr "ブランチ '%s' は既に存在します。上書きしますか?"
-#: gitk:9530
+#: gitk:9545
#, tcl-format
msgid "Commit %s is already included in branch %s -- really re-apply it?"
msgstr ""
"コミット %s は既にブランチ %s に含まれています ― 本当にこれを再適用しますか?"
-#: gitk:9535
+#: gitk:9550
msgid "Cherry-picking"
msgstr "チェリーピック中"
-#: gitk:9544
+#: gitk:9559
#, tcl-format
msgid ""
"Cherry-pick failed because of local changes to file '%s'.\n"
@@ -1053,7 +1059,7 @@ msgstr ""
"あなたの変更に commit, reset, stash のいずれかを行ってからやり直してくださ"
"い。"
-#: gitk:9550
+#: gitk:9565
msgid ""
"Cherry-pick failed because of merge conflict.\n"
"Do you wish to run git citool to resolve it?"
@@ -1061,62 +1067,56 @@ msgstr ""
"マージの衝突によってチェリーピックは失敗しました。\n"
"この解決のために git citool を実行したいですか?"
-#: gitk:9566 gitk:9624
+#: gitk:9581 gitk:9639
msgid "No changes committed"
msgstr "何の変更もコミットされていません"
-#: gitk:9593
-#, fuzzy, tcl-format
+#: gitk:9608
+#, tcl-format
msgid "Commit %s is not included in branch %s -- really revert it?"
-msgstr ""
-"コミット %s は既にブランチ %s に含まれています ― 本当にこれを再適用しますか?"
+msgstr "コミット %s は既にブランチ %s に含まれています ― 本当にこれを撤回しますか?"
-#: gitk:9598
-#, fuzzy
+#: gitk:9613
msgid "Reverting"
-msgstr "リセット中"
+msgstr "撤回中"
-#: gitk:9606
-#, fuzzy, tcl-format
+#: gitk:9621
+#, tcl-format
msgid ""
"Revert failed because of local changes to the following files:%s Please "
"commit, reset or stash your changes and try again."
-msgstr ""
-"ファイル '%s' のローカルな変更のためにチェリーピックは失敗しました。\n"
-"あなたの変更に commit, reset, stash のいずれかを行ってからやり直してくださ"
-"い。"
+msgstr "ファイル '%s' のローカルな変更のために撤回は失敗しました。 あなたの変更に commit, reset, stash のいずれかを行ってからやり直してください。"
-#: gitk:9610
-#, fuzzy
+#: gitk:9625
msgid ""
"Revert failed because of merge conflict.\n"
" Do you wish to run git citool to resolve it?"
msgstr ""
-"マージの衝突によってチェリーピックは失敗しました。\n"
+"マージの衝突によって撤回は失敗しました。\n"
"この解決のために git citool を実行したいですか?"
-#: gitk:9653
+#: gitk:9668
msgid "Confirm reset"
msgstr "確認を取り消す"
-#: gitk:9655
+#: gitk:9670
#, tcl-format
msgid "Reset branch %s to %s?"
msgstr "ブランチ %s を %s にリセットしますか?"
-#: gitk:9657
+#: gitk:9672
msgid "Reset type:"
msgstr "Reset タイプ:"
-#: gitk:9660
+#: gitk:9675
msgid "Soft: Leave working tree and index untouched"
msgstr "Soft: 作業ツリーもインデックスもそのままにする"
-#: gitk:9663
+#: gitk:9678
msgid "Mixed: Leave working tree untouched, reset index"
msgstr "Mixed: 作業ツリーをそのままにして、インデックスをリセット"
-#: gitk:9666
+#: gitk:9681
msgid ""
"Hard: Reset working tree and index\n"
"(discard ALL local changes)"
@@ -1124,19 +1124,19 @@ msgstr ""
"Hard: 作業ツリーやインデックスをリセット\n"
"(「全ての」ローカルな変更を破棄)"
-#: gitk:9683
+#: gitk:9698
msgid "Resetting"
msgstr "リセット中"
-#: gitk:9743
+#: gitk:9758
msgid "Checking out"
msgstr "チェックアウト"
-#: gitk:9796
+#: gitk:9811
msgid "Cannot delete the currently checked-out branch"
msgstr "現在チェックアウトされているブランチを削除することはできません"
-#: gitk:9802
+#: gitk:9817
#, tcl-format
msgid ""
"The commits on branch %s aren't on any other branch.\n"
@@ -1145,16 +1145,16 @@ msgstr ""
"ブランチ %s には他のブランチに存在しないコミットがあります。\n"
"本当にブランチ %s を削除しますか?"
-#: gitk:9833
+#: gitk:9848
#, tcl-format
msgid "Tags and heads: %s"
msgstr "タグとHEAD: %s"
-#: gitk:9850
+#: gitk:9865
msgid "Filter"
msgstr "フィルター"
-#: gitk:10146
+#: gitk:10161
msgid ""
"Error reading commit topology information; branch and preceding/following "
"tag information will be incomplete."
@@ -1162,237 +1162,217 @@ msgstr ""
"コミット構造情報読み込みエラー; ブランチ及び上位/下位のタグ情報が不完全である"
"ようです。"
-#: gitk:11123
+#: gitk:11138
msgid "Tag"
msgstr "タグ"
-#: gitk:11127
+#: gitk:11142
msgid "Id"
msgstr "ID"
-#: gitk:11210
+#: gitk:11225
msgid "Gitk font chooser"
msgstr "Gitk フォント選択"
-#: gitk:11227
+#: gitk:11242
msgid "B"
msgstr "B"
-#: gitk:11230
+#: gitk:11245
msgid "I"
msgstr "I"
-#: gitk:11348
+#: gitk:11363
msgid "Commit list display options"
msgstr "コミットリスト表示オプション"
-#: gitk:11351
+#: gitk:11366
msgid "Maximum graph width (lines)"
msgstr "最大グラフ幅(線の本数)"
-#: gitk:11355
+#: gitk:11370
#, no-tcl-format
msgid "Maximum graph width (% of pane)"
msgstr "最大グラフ幅(ペインに対する%)"
-#: gitk:11358
+#: gitk:11373
msgid "Show local changes"
msgstr "ローカルな変更を表示"
-#: gitk:11361
-#, fuzzy
+#: gitk:11376
msgid "Auto-select SHA1 (length)"
-msgstr "SHA1 の自動選択"
+msgstr "SHA1 の自動選択 (選択文字数指定)"
-#: gitk:11365
+#: gitk:11380
msgid "Hide remote refs"
msgstr "リモートリファレンスを隠す"
-#: gitk:11369
+#: gitk:11384
msgid "Diff display options"
msgstr "diff表示オプション"
-#: gitk:11371
+#: gitk:11386
msgid "Tab spacing"
msgstr "タブ空白幅"
-#: gitk:11374
-#, fuzzy
+#: gitk:11389
msgid "Display nearby tags/heads"
-msgstr "近くのタグを表示する"
+msgstr "近くの タグ/head を表示する"
-#: gitk:11377
+#: gitk:11392
msgid "Maximum # tags/heads to show"
-msgstr ""
+msgstr "タグ/head の最大表示数"
-#: gitk:11380
+#: gitk:11395
msgid "Limit diffs to listed paths"
msgstr "diff をリストのパスに制限"
-#: gitk:11383
+#: gitk:11398
msgid "Support per-file encodings"
msgstr "ファイルごとのエンコーディングのサポート"
-#: gitk:11389 gitk:11536
+#: gitk:11404 gitk:11551
msgid "External diff tool"
msgstr "外部diffツール"
-#: gitk:11390
+#: gitk:11405
msgid "Choose..."
msgstr "選択..."
-#: gitk:11395
-#, fuzzy
+#: gitk:11410
msgid "General options"
-msgstr "パッチ生成"
+msgstr "全体設定"
-#: gitk:11398
+#: gitk:11413
msgid "Use themed widgets"
-msgstr ""
+msgstr "テーマウィジェットを使用する"
-#: gitk:11400
+#: gitk:11415
msgid "(change requires restart)"
-msgstr ""
+msgstr "(変更には再起動が必要です)"
-#: gitk:11402
+#: gitk:11417
msgid "(currently unavailable)"
-msgstr ""
+msgstr "(現在は使用出来ません)"
-#: gitk:11413
+#: gitk:11428
msgid "Colors: press to choose"
msgstr "色: ボタンを押して選択"
-#: gitk:11416
+#: gitk:11431
msgid "Interface"
msgstr "インターフェイス"
-#: gitk:11417
+#: gitk:11432
msgid "interface"
msgstr "インターフェイス"
-#: gitk:11420
+#: gitk:11435
msgid "Background"
msgstr "背景"
-#: gitk:11421 gitk:11451
+#: gitk:11436 gitk:11466
msgid "background"
msgstr "背景"
-#: gitk:11424
+#: gitk:11439
msgid "Foreground"
msgstr "前景"
-#: gitk:11425
+#: gitk:11440
msgid "foreground"
msgstr "前景"
-#: gitk:11428
+#: gitk:11443
msgid "Diff: old lines"
msgstr "Diff: 旧バージョン"
-#: gitk:11429
+#: gitk:11444
msgid "diff old lines"
msgstr "diff 旧バージョン"
-#: gitk:11433
+#: gitk:11448
msgid "Diff: new lines"
msgstr "Diff: 新バージョン"
-#: gitk:11434
+#: gitk:11449
msgid "diff new lines"
msgstr "diff 新バージョン"
-#: gitk:11438
+#: gitk:11453
msgid "Diff: hunk header"
msgstr "Diff: hunkヘッダ"
-#: gitk:11440
+#: gitk:11455
msgid "diff hunk header"
msgstr "diff hunkヘッダ"
-#: gitk:11444
+#: gitk:11459
msgid "Marked line bg"
msgstr "マーク行の背景"
-#: gitk:11446
+#: gitk:11461
msgid "marked line background"
msgstr "マーク行の背景"
-#: gitk:11450
+#: gitk:11465
msgid "Select bg"
msgstr "選択の背景"
-#: gitk:11459
+#: gitk:11474
msgid "Fonts: press to choose"
msgstr "フォント: ボタンを押して選択"
-#: gitk:11461
+#: gitk:11476
msgid "Main font"
msgstr "主フォント"
-#: gitk:11462
+#: gitk:11477
msgid "Diff display font"
msgstr "Diff表示用フォント"
-#: gitk:11463
+#: gitk:11478
msgid "User interface font"
msgstr "UI用フォント"
-#: gitk:11485
+#: gitk:11500
msgid "Gitk preferences"
msgstr "Gitk 設定"
-#: gitk:11494
-#, fuzzy
+#: gitk:11509
msgid "General"
-msgstr "生成"
+msgstr "一般"
-#: gitk:11495
+#: gitk:11510
msgid "Colors"
-msgstr ""
+msgstr "色"
-#: gitk:11496
+#: gitk:11511
msgid "Fonts"
-msgstr ""
+msgstr "フォント"
-#: gitk:11546
+#: gitk:11561
#, tcl-format
msgid "Gitk: choose color for %s"
msgstr "Gitk: 「%s」 の色を選択"
-#: gitk:12059
+#: gitk:12074
msgid ""
"Sorry, gitk cannot run with this version of Tcl/Tk.\n"
" Gitk requires at least Tcl/Tk 8.4."
msgstr ""
+"申し訳ありませんが、このバージョンの Tcl/Tk では gitk を実行出来ません。\n"
+"Gitkの実行には Tcl/Tk 8.4 以上が必要です。"
-#: gitk:12269
+#: gitk:12284
msgid "Cannot find a git repository here."
msgstr "ここにはgitリポジトリがありません。"
-#: gitk:12316
+#: gitk:12331
#, tcl-format
msgid "Ambiguous argument '%s': both revision and filename"
msgstr "あいまいな引数 '%s': リビジョンとファイル名の両方に解釈できます"
-#: gitk:12328
+#: gitk:12343
msgid "Bad arguments to gitk:"
msgstr "gitkへの不正な引数:"
-
-#~ msgid "mc"
-#~ msgstr "mc"
-
-#~ msgid "SHA1 ID: "
-#~ msgstr "SHA1 ID: "
-
-#~ msgid "next"
-#~ msgstr "次"
-
-#~ msgid "prev"
-#~ msgstr "前"
-
-#~ msgid "CDate"
-#~ msgstr "作成日"
-
-#~ msgid "Cannot find the git directory \"%s\"."
-#~ msgstr "gitディレクトリ \"%s\" を見つけられません。"
diff --git a/gitk-git/po/sv.po b/gitk-git/po/sv.po
index 75317f4396..d9d4e87a44 100644
--- a/gitk-git/po/sv.po
+++ b/gitk-git/po/sv.po
@@ -1,5 +1,5 @@
# Swedish translation for gitk
-# Copyright (C) 2005-2013 Paul Mackerras
+# Copyright (C) 2005-2015 Paul Mackerras
# This file is distributed under the same license as the gitk package.
#
# Mikael Magnusson <mikachu@gmail.com>, 2008.
@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: sv\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2015-05-17 14:32+1000\n"
-"PO-Revision-Date: 2015-03-27 10:31+0100\n"
+"POT-Creation-Date: 2015-12-09 09:40+0100\n"
+"PO-Revision-Date: 2015-12-11 09:46+0100\n"
"Last-Translator: Peter Krefting <peter@softwolves.pp.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@@ -28,7 +28,7 @@ msgstr "Kunde inte hämta lista över ej sammanslagna filer:"
msgid "Color words"
msgstr "Färga ord"
-#: gitk:217 gitk:2381 gitk:8220 gitk:8253
+#: gitk:217 gitk:2381 gitk:8221 gitk:8254
msgid "Markup words"
msgstr "Märk upp ord"
@@ -62,15 +62,15 @@ msgstr "Fel vid körning av git log:"
msgid "Reading"
msgstr "Läser"
-#: gitk:496 gitk:4525
+#: gitk:496 gitk:4526
msgid "Reading commits..."
msgstr "Läser incheckningar..."
-#: gitk:499 gitk:1637 gitk:4528
+#: gitk:499 gitk:1637 gitk:4529
msgid "No commits selected"
msgstr "Inga incheckningar markerade"
-#: gitk:1445 gitk:4045 gitk:12432
+#: gitk:1445 gitk:4046 gitk:12447
msgid "Command line"
msgstr "Kommandorad"
@@ -82,84 +82,84 @@ msgstr "Kan inte tolka utdata från git log:"
msgid "No commit information available"
msgstr "Ingen incheckningsinformation är tillgänglig"
-#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521
+#: gitk:1903 gitk:1932 gitk:4316 gitk:9684 gitk:11256 gitk:11536
msgid "OK"
msgstr "OK"
-#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671
-#: gitk:11242 gitk:11522
+#: gitk:1934 gitk:4318 gitk:9197 gitk:9276 gitk:9406 gitk:9455 gitk:9686
+#: gitk:11257 gitk:11537
msgid "Cancel"
msgstr "Avbryt"
#: gitk:2069
msgid "&Update"
-msgstr "Uppdatera"
+msgstr "&Uppdatera"
#: gitk:2070
msgid "&Reload"
-msgstr "Ladda om"
+msgstr "Läs &om"
#: gitk:2071
msgid "Reread re&ferences"
-msgstr "Läs om referenser"
+msgstr "Läs om &referenser"
#: gitk:2072
msgid "&List references"
-msgstr "Visa referenser"
+msgstr "&Visa referenser"
#: gitk:2074
msgid "Start git &gui"
-msgstr "Starta git gui"
+msgstr "Starta git &gui"
#: gitk:2076
msgid "&Quit"
-msgstr "Avsluta"
+msgstr "&Avsluta"
#: gitk:2068
msgid "&File"
-msgstr "Arkiv"
+msgstr "&Arkiv"
#: gitk:2080
msgid "&Preferences"
-msgstr "Inställningar"
+msgstr "&Inställningar"
#: gitk:2079
msgid "&Edit"
-msgstr "Redigera"
+msgstr "&Redigera"
#: gitk:2084
msgid "&New view..."
-msgstr "Ny vy..."
+msgstr "&Ny vy..."
#: gitk:2085
msgid "&Edit view..."
-msgstr "Ändra vy..."
+msgstr "&Ändra vy..."
#: gitk:2086
msgid "&Delete view"
-msgstr "Ta bort vy"
+msgstr "&Ta bort vy"
-#: gitk:2088 gitk:4043
+#: gitk:2088
msgid "&All files"
-msgstr "Alla filer"
+msgstr "&Alla filer"
-#: gitk:2083 gitk:4067
+#: gitk:2083
msgid "&View"
-msgstr "Visa"
+msgstr "&Visa"
-#: gitk:2093 gitk:2103 gitk:3012
+#: gitk:2093 gitk:2103
msgid "&About gitk"
-msgstr "Om gitk"
+msgstr "&Om gitk"
#: gitk:2094 gitk:2108
msgid "&Key bindings"
-msgstr "Tangentbordsbindningar"
+msgstr "&Tangentbordsbindningar"
#: gitk:2092 gitk:2107
msgid "&Help"
-msgstr "Hjälp"
+msgstr "&Hjälp"
-#: gitk:2185 gitk:8652
+#: gitk:2185 gitk:8653
msgid "SHA1 ID:"
msgstr "SHA1-id:"
@@ -175,53 +175,53 @@ msgstr "Sök"
msgid "commit"
msgstr "incheckning"
-#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827
-#: gitk:6912
+#: gitk:2299 gitk:2301 gitk:4688 gitk:4711 gitk:4735 gitk:6756 gitk:6828
+#: gitk:6913
msgid "containing:"
msgstr "som innehåller:"
-#: gitk:2302 gitk:3526 gitk:3531 gitk:4763
+#: gitk:2302 gitk:3527 gitk:3532 gitk:4764
msgid "touching paths:"
msgstr "som rör sökväg:"
-#: gitk:2303 gitk:4777
+#: gitk:2303 gitk:4778
msgid "adding/removing string:"
msgstr "som lägger/till tar bort sträng:"
-#: gitk:2304 gitk:4779
+#: gitk:2304 gitk:4780
msgid "changing lines matching:"
msgstr "ändrar rader som matchar:"
-#: gitk:2313 gitk:2315 gitk:4766
+#: gitk:2313 gitk:2315 gitk:4767
msgid "Exact"
msgstr "Exakt"
-#: gitk:2315 gitk:4854 gitk:6723
+#: gitk:2315 gitk:4855 gitk:6724
msgid "IgnCase"
msgstr "IgnVersaler"
-#: gitk:2315 gitk:4736 gitk:4852 gitk:6719
+#: gitk:2315 gitk:4737 gitk:4853 gitk:6720
msgid "Regexp"
msgstr "Reg.uttr."
-#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916
+#: gitk:2317 gitk:2318 gitk:4875 gitk:4905 gitk:4912 gitk:6849 gitk:6917
msgid "All fields"
msgstr "Alla fält"
-#: gitk:2318 gitk:4871 gitk:4904 gitk:6786
+#: gitk:2318 gitk:4872 gitk:4905 gitk:6787
msgid "Headline"
msgstr "Rubrik"
-#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389
+#: gitk:2319 gitk:4872 gitk:6787 gitk:6917 gitk:7390
msgid "Comments"
msgstr "Kommentarer"
-#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830
-#: gitk:8845
+#: gitk:2319 gitk:4872 gitk:4877 gitk:4912 gitk:6787 gitk:7325 gitk:8831
+#: gitk:8846
msgid "Author"
msgstr "Författare"
-#: gitk:2319 gitk:4871 gitk:6786 gitk:7326
+#: gitk:2319 gitk:4872 gitk:6787 gitk:7327
msgid "Committer"
msgstr "Incheckare"
@@ -249,7 +249,7 @@ msgstr "Rader sammanhang"
msgid "Ignore space change"
msgstr "Ignorera ändringar i blanksteg"
-#: gitk:2378 gitk:2380 gitk:7959 gitk:8206
+#: gitk:2378 gitk:2380 gitk:7960 gitk:8207
msgid "Line diff"
msgstr "Rad-diff"
@@ -261,107 +261,115 @@ msgstr "Patch"
msgid "Tree"
msgstr "Träd"
-#: gitk:2617 gitk:2637
+#: gitk:2617 gitk:2638
msgid "Diff this -> selected"
msgstr "Diff denna -> markerad"
-#: gitk:2618 gitk:2638
+#: gitk:2618 gitk:2639
msgid "Diff selected -> this"
msgstr "Diff markerad -> denna"
-#: gitk:2619 gitk:2639
+#: gitk:2619 gitk:2640
msgid "Make patch"
msgstr "Skapa patch"
-#: gitk:2620 gitk:9254
+#: gitk:2620 gitk:9255
msgid "Create tag"
msgstr "Skapa tagg"
-#: gitk:2621 gitk:9371
+#: gitk:2621
+msgid "Copy commit summary"
+msgstr "Kopiera incheckningssammanfattning"
+
+#: gitk:2622 gitk:9386
msgid "Write commit to file"
msgstr "Skriv incheckning till fil"
-#: gitk:2622 gitk:9428
+#: gitk:2623 gitk:9443
msgid "Create new branch"
msgstr "Skapa ny gren"
-#: gitk:2623
+#: gitk:2624
msgid "Cherry-pick this commit"
msgstr "Plocka denna incheckning"
-#: gitk:2624
+#: gitk:2625
msgid "Reset HEAD branch to here"
msgstr "Återställ HEAD-grenen hit"
-#: gitk:2625
+#: gitk:2626
msgid "Mark this commit"
msgstr "Markera denna incheckning"
-#: gitk:2626
+#: gitk:2627
msgid "Return to mark"
msgstr "Återgå till markering"
-#: gitk:2627
+#: gitk:2628
msgid "Find descendant of this and mark"
msgstr "Hitta efterföljare till denna och markera"
-#: gitk:2628
+#: gitk:2629
msgid "Compare with marked commit"
msgstr "Jämför med markerad incheckning"
-#: gitk:2629 gitk:2640
+#: gitk:2630 gitk:2641
msgid "Diff this -> marked commit"
msgstr "Diff denna -> markerad incheckning"
-#: gitk:2630 gitk:2641
+#: gitk:2631 gitk:2642
msgid "Diff marked commit -> this"
msgstr "Diff markerad incheckning -> denna"
-#: gitk:2631
+#: gitk:2632
msgid "Revert this commit"
msgstr "Ångra denna incheckning"
-#: gitk:2647
+#: gitk:2648
msgid "Check out this branch"
msgstr "Checka ut denna gren"
-#: gitk:2648
+#: gitk:2649
msgid "Remove this branch"
msgstr "Ta bort denna gren"
-#: gitk:2649
+#: gitk:2650
msgid "Copy branch name"
-msgstr ""
+msgstr "Kopiera namn på gren"
-#: gitk:2656
+#: gitk:2657
msgid "Highlight this too"
msgstr "Markera även detta"
-#: gitk:2657
+#: gitk:2658
msgid "Highlight this only"
msgstr "Markera bara detta"
-#: gitk:2658
+#: gitk:2659
msgid "External diff"
msgstr "Extern diff"
-#: gitk:2659
+#: gitk:2660
msgid "Blame parent commit"
msgstr "Klandra föräldraincheckning"
-#: gitk:2660
+#: gitk:2661
msgid "Copy path"
-msgstr ""
+msgstr "Kopiera sökväg"
-#: gitk:2667
+#: gitk:2668
msgid "Show origin of this line"
msgstr "Visa ursprunget för den här raden"
-#: gitk:2668
+#: gitk:2669
msgid "Run git gui blame on this line"
msgstr "Kör git gui blame på den här raden"
-#: gitk:3014
+#: gitk:3013
+msgid "About gitk"
+msgstr "Om gitk"
+
+#: gitk:3015
msgid ""
"\n"
"Gitk - a commit viewer for git\n"
@@ -377,317 +385,323 @@ msgstr ""
"\n"
"Använd och vidareförmedla enligt villkoren i GNU General Public License"
-#: gitk:3022 gitk:3089 gitk:9857
+#: gitk:3023 gitk:3090 gitk:9872
msgid "Close"
msgstr "Stäng"
-#: gitk:3043
+#: gitk:3044
msgid "Gitk key bindings"
msgstr "Tangentbordsbindningar för Gitk"
-#: gitk:3046
+#: gitk:3047
msgid "Gitk key bindings:"
msgstr "Tangentbordsbindningar för Gitk:"
-#: gitk:3048
+#: gitk:3049
#, tcl-format
msgid "<%s-Q>\t\tQuit"
msgstr "<%s-Q>\t\tAvsluta"
-#: gitk:3049
+#: gitk:3050
#, tcl-format
msgid "<%s-W>\t\tClose window"
msgstr "<%s-W>\t\tStäng fönster"
-#: gitk:3050
+#: gitk:3051
msgid "<Home>\t\tMove to first commit"
msgstr "<Home>\t\tGå till första incheckning"
-#: gitk:3051
+#: gitk:3052
msgid "<End>\t\tMove to last commit"
msgstr "<End>\t\tGå till sista incheckning"
-#: gitk:3052
+#: gitk:3053
msgid "<Up>, p, k\tMove up one commit"
msgstr "<Upp>, p, k\tGå en incheckning upp"
-#: gitk:3053
+#: gitk:3054
msgid "<Down>, n, j\tMove down one commit"
msgstr "<Ned>, n, j\tGå en incheckning ned"
-#: gitk:3054
+#: gitk:3055
msgid "<Left>, z, h\tGo back in history list"
msgstr "<Vänster>, z, h\tGå bakåt i historiken"
-#: gitk:3055
+#: gitk:3056
msgid "<Right>, x, l\tGo forward in history list"
msgstr "<Höger>, x, l\tGå framåt i historiken"
-#: gitk:3056
+#: gitk:3057
#, tcl-format
msgid "<%s-n>\tGo to n-th parent of current commit in history list"
msgstr "<%s-n>\tGå till aktuell inchecknings n:te förälder i historielistan"
-#: gitk:3057
+#: gitk:3058
msgid "<PageUp>\tMove up one page in commit list"
msgstr "<PageUp>\tGå upp en sida i incheckningslistan"
-#: gitk:3058
+#: gitk:3059
msgid "<PageDown>\tMove down one page in commit list"
msgstr "<PageDown>\tGå ned en sida i incheckningslistan"
-#: gitk:3059
+#: gitk:3060
#, tcl-format
msgid "<%s-Home>\tScroll to top of commit list"
msgstr "<%s-Home>\tRulla till början av incheckningslistan"
-#: gitk:3060
+#: gitk:3061
#, tcl-format
msgid "<%s-End>\tScroll to bottom of commit list"
msgstr "<%s-End>\tRulla till slutet av incheckningslistan"
-#: gitk:3061
+#: gitk:3062
#, tcl-format
msgid "<%s-Up>\tScroll commit list up one line"
msgstr "<%s-Upp>\tRulla incheckningslistan upp ett steg"
-#: gitk:3062
+#: gitk:3063
#, tcl-format
msgid "<%s-Down>\tScroll commit list down one line"
msgstr "<%s-Ned>\tRulla incheckningslistan ned ett steg"
-#: gitk:3063
+#: gitk:3064
#, tcl-format
msgid "<%s-PageUp>\tScroll commit list up one page"
msgstr "<%s-PageUp>\tRulla incheckningslistan upp en sida"
-#: gitk:3064
+#: gitk:3065
#, tcl-format
msgid "<%s-PageDown>\tScroll commit list down one page"
msgstr "<%s-PageDown>\tRulla incheckningslistan ned en sida"
-#: gitk:3065
+#: gitk:3066
msgid "<Shift-Up>\tFind backwards (upwards, later commits)"
msgstr "<Skift-Upp>\tSök bakåt (uppåt, senare incheckningar)"
-#: gitk:3066
+#: gitk:3067
msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)"
msgstr "<Skift-Ned>\tSök framåt (nedåt, tidigare incheckningar)"
-#: gitk:3067
+#: gitk:3068
msgid "<Delete>, b\tScroll diff view up one page"
msgstr "<Delete>, b\tRulla diffvisningen upp en sida"
-#: gitk:3068
+#: gitk:3069
msgid "<Backspace>\tScroll diff view up one page"
msgstr "<Baksteg>\tRulla diffvisningen upp en sida"
-#: gitk:3069
+#: gitk:3070
msgid "<Space>\t\tScroll diff view down one page"
msgstr "<Blanksteg>\tRulla diffvisningen ned en sida"
-#: gitk:3070
+#: gitk:3071
msgid "u\t\tScroll diff view up 18 lines"
msgstr "u\t\tRulla diffvisningen upp 18 rader"
-#: gitk:3071
+#: gitk:3072
msgid "d\t\tScroll diff view down 18 lines"
msgstr "d\t\tRulla diffvisningen ned 18 rader"
-#: gitk:3072
+#: gitk:3073
#, tcl-format
msgid "<%s-F>\t\tFind"
msgstr "<%s-F>\t\tSök"
-#: gitk:3073
+#: gitk:3074
#, tcl-format
msgid "<%s-G>\t\tMove to next find hit"
msgstr "<%s-G>\t\tGå till nästa sökträff"
-#: gitk:3074
+#: gitk:3075
msgid "<Return>\tMove to next find hit"
msgstr "<Return>\t\tGå till nästa sökträff"
-#: gitk:3075
-#, fuzzy
+#: gitk:3076
msgid "g\t\tGo to commit"
-msgstr "<End>\t\tGå till sista incheckning"
+msgstr "g\t\tGå till incheckning"
-#: gitk:3076
+#: gitk:3077
msgid "/\t\tFocus the search box"
msgstr "/\t\tFokusera sökrutan"
-#: gitk:3077
+#: gitk:3078
msgid "?\t\tMove to previous find hit"
msgstr "?\t\tGå till föregående sökträff"
-#: gitk:3078
+#: gitk:3079
msgid "f\t\tScroll diff view to next file"
msgstr "f\t\tRulla diffvisningen till nästa fil"
-#: gitk:3079
+#: gitk:3080
#, tcl-format
msgid "<%s-S>\t\tSearch for next hit in diff view"
msgstr "<%s-S>\t\tGå till nästa sökträff i diffvisningen"
-#: gitk:3080
+#: gitk:3081
#, tcl-format
msgid "<%s-R>\t\tSearch for previous hit in diff view"
msgstr "<%s-R>\t\tGå till föregående sökträff i diffvisningen"
-#: gitk:3081
+#: gitk:3082
#, tcl-format
msgid "<%s-KP+>\tIncrease font size"
msgstr "<%s-Num+>\tÖka teckenstorlek"
-#: gitk:3082
+#: gitk:3083
#, tcl-format
msgid "<%s-plus>\tIncrease font size"
msgstr "<%s-plus>\tÖka teckenstorlek"
-#: gitk:3083
+#: gitk:3084
#, tcl-format
msgid "<%s-KP->\tDecrease font size"
msgstr "<%s-Num->\tMinska teckenstorlek"
-#: gitk:3084
+#: gitk:3085
#, tcl-format
msgid "<%s-minus>\tDecrease font size"
msgstr "<%s-minus>\tMinska teckenstorlek"
-#: gitk:3085
+#: gitk:3086
msgid "<F5>\t\tUpdate"
msgstr "<F5>\t\tUppdatera"
-#: gitk:3550 gitk:3559
+#: gitk:3551 gitk:3560
#, tcl-format
msgid "Error creating temporary directory %s:"
msgstr "Fel vid skapande av temporär katalog %s:"
-#: gitk:3572
+#: gitk:3573
#, tcl-format
msgid "Error getting \"%s\" from %s:"
msgstr "Fel vid hämtning av \"%s\" från %s:"
-#: gitk:3635
+#: gitk:3636
msgid "command failed:"
msgstr "kommando misslyckades:"
-#: gitk:3784
+#: gitk:3785
msgid "No such commit"
msgstr "Incheckning saknas"
-#: gitk:3798
+#: gitk:3799
msgid "git gui blame: command failed:"
msgstr "git gui blame: kommando misslyckades:"
-#: gitk:3829
+#: gitk:3830
#, tcl-format
msgid "Couldn't read merge head: %s"
msgstr "Kunde inte läsa sammanslagningshuvud: %s"
-#: gitk:3837
+#: gitk:3838
#, tcl-format
msgid "Error reading index: %s"
msgstr "Fel vid läsning av index: %s"
-#: gitk:3862
+#: gitk:3863
#, tcl-format
msgid "Couldn't start git blame: %s"
msgstr "Kunde inte starta git blame: %s"
-#: gitk:3865 gitk:6754
+#: gitk:3866 gitk:6755
msgid "Searching"
msgstr "Söker"
-#: gitk:3897
+#: gitk:3898
#, tcl-format
msgid "Error running git blame: %s"
msgstr "Fel vid körning av git blame: %s"
-#: gitk:3925
+#: gitk:3926
#, tcl-format
msgid "That line comes from commit %s, which is not in this view"
msgstr "Raden kommer från incheckningen %s, som inte finns i denna vy"
-#: gitk:3939
+#: gitk:3940
msgid "External diff viewer failed:"
msgstr "Externt diff-verktyg misslyckades:"
-#: gitk:4070
+#: gitk:4044
+msgid "All files"
+msgstr "Alla filer"
+
+#: gitk:4068
+msgid "View"
+msgstr "Visa"
+
+#: gitk:4071
msgid "Gitk view definition"
msgstr "Definition av Gitk-vy"
-#: gitk:4074
+#: gitk:4075
msgid "Remember this view"
msgstr "Spara denna vy"
-#: gitk:4075
+#: gitk:4076
msgid "References (space separated list):"
msgstr "Referenser (blankstegsavdelad lista):"
-#: gitk:4076
+#: gitk:4077
msgid "Branches & tags:"
msgstr "Grenar & taggar:"
-#: gitk:4077
+#: gitk:4078
msgid "All refs"
msgstr "Alla referenser"
-#: gitk:4078
+#: gitk:4079
msgid "All (local) branches"
msgstr "Alla (lokala) grenar"
-#: gitk:4079
+#: gitk:4080
msgid "All tags"
msgstr "Alla taggar"
-#: gitk:4080
+#: gitk:4081
msgid "All remote-tracking branches"
msgstr "Alla fjärrspårande grenar"
-#: gitk:4081
+#: gitk:4082
msgid "Commit Info (regular expressions):"
msgstr "Incheckningsinfo (reguljära uttryck):"
-#: gitk:4082
+#: gitk:4083
msgid "Author:"
msgstr "Författare:"
-#: gitk:4083
+#: gitk:4084
msgid "Committer:"
msgstr "Incheckare:"
-#: gitk:4084
+#: gitk:4085
msgid "Commit Message:"
msgstr "Incheckningsmeddelande:"
-#: gitk:4085
+#: gitk:4086
msgid "Matches all Commit Info criteria"
msgstr "Motsvarar alla kriterier för incheckningsinfo"
-#: gitk:4086
-#, fuzzy
+#: gitk:4087
msgid "Matches no Commit Info criteria"
msgstr "Motsvarar inga kriterier för incheckningsinfo"
-#: gitk:4087
+#: gitk:4088
msgid "Changes to Files:"
msgstr "Ändringar av filer:"
-#: gitk:4088
+#: gitk:4089
msgid "Fixed String"
msgstr "Fast sträng"
-#: gitk:4089
+#: gitk:4090
msgid "Regular Expression"
msgstr "Reguljärt uttryck"
-#: gitk:4090
+#: gitk:4091
msgid "Search string:"
msgstr "Söksträng:"
-#: gitk:4091
+#: gitk:4092
msgid ""
"Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
"15:27:38\"):"
@@ -695,201 +709,201 @@ msgstr ""
"Incheckingsdatum (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 "
"15:27:38\"):"
-#: gitk:4092
+#: gitk:4093
msgid "Since:"
msgstr "Från:"
-#: gitk:4093
+#: gitk:4094
msgid "Until:"
msgstr "Till:"
-#: gitk:4094
+#: gitk:4095
msgid "Limit and/or skip a number of revisions (positive integer):"
msgstr "Begränsa och/eller hoppa över ett antal revisioner (positivt heltal):"
-#: gitk:4095
+#: gitk:4096
msgid "Number to show:"
msgstr "Antal att visa:"
-#: gitk:4096
+#: gitk:4097
msgid "Number to skip:"
msgstr "Antal att hoppa över:"
-#: gitk:4097
+#: gitk:4098
msgid "Miscellaneous options:"
msgstr "Diverse alternativ:"
-#: gitk:4098
+#: gitk:4099
msgid "Strictly sort by date"
msgstr "Strikt datumsortering"
-#: gitk:4099
+#: gitk:4100
msgid "Mark branch sides"
msgstr "Markera sidogrenar"
-#: gitk:4100
+#: gitk:4101
msgid "Limit to first parent"
msgstr "Begränsa till första förälder"
-#: gitk:4101
+#: gitk:4102
msgid "Simple history"
msgstr "Enkel historik"
-#: gitk:4102
+#: gitk:4103
msgid "Additional arguments to git log:"
msgstr "Ytterligare argument till git log:"
-#: gitk:4103
+#: gitk:4104
msgid "Enter files and directories to include, one per line:"
msgstr "Ange filer och kataloger att ta med, en per rad:"
-#: gitk:4104
+#: gitk:4105
msgid "Command to generate more commits to include:"
msgstr "Kommando för att generera fler incheckningar att ta med:"
-#: gitk:4228
+#: gitk:4229
msgid "Gitk: edit view"
msgstr "Gitk: redigera vy"
-#: gitk:4236
+#: gitk:4237
msgid "-- criteria for selecting revisions"
msgstr " - kriterier för val av revisioner"
-#: gitk:4241
+#: gitk:4242
msgid "View Name"
msgstr "Namn på vy"
-#: gitk:4316
+#: gitk:4317
msgid "Apply (F5)"
msgstr "Använd (F5)"
-#: gitk:4354
+#: gitk:4355
msgid "Error in commit selection arguments:"
msgstr "Fel i argument för val av incheckningar:"
-#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374
+#: gitk:4410 gitk:4463 gitk:4925 gitk:4939 gitk:6209 gitk:12388 gitk:12389
msgid "None"
msgstr "Inget"
-#: gitk:5021 gitk:5026
+#: gitk:5022 gitk:5027
msgid "Descendant"
msgstr "Avkomling"
-#: gitk:5022
+#: gitk:5023
msgid "Not descendant"
msgstr "Inte avkomling"
-#: gitk:5029 gitk:5034
+#: gitk:5030 gitk:5035
msgid "Ancestor"
msgstr "Förfader"
-#: gitk:5030
+#: gitk:5031
msgid "Not ancestor"
msgstr "Inte förfader"
-#: gitk:5324
+#: gitk:5325
msgid "Local changes checked in to index but not committed"
msgstr "Lokala ändringar sparade i indexet men inte incheckade"
-#: gitk:5360
+#: gitk:5361
msgid "Local uncommitted changes, not checked in to index"
msgstr "Lokala ändringar, ej sparade i indexet"
-#: gitk:7134
+#: gitk:7135
msgid "and many more"
msgstr "med många flera"
-#: gitk:7137
+#: gitk:7138
msgid "many"
msgstr "många"
-#: gitk:7328
+#: gitk:7329
msgid "Tags:"
msgstr "Taggar:"
-#: gitk:7345 gitk:7351 gitk:8825
+#: gitk:7346 gitk:7352 gitk:8826
msgid "Parent"
msgstr "Förälder"
-#: gitk:7356
+#: gitk:7357
msgid "Child"
msgstr "Barn"
-#: gitk:7365
+#: gitk:7366
msgid "Branch"
msgstr "Gren"
-#: gitk:7368
+#: gitk:7369
msgid "Follows"
msgstr "Följer"
-#: gitk:7371
+#: gitk:7372
msgid "Precedes"
msgstr "Föregår"
-#: gitk:7966
+#: gitk:7967
#, tcl-format
msgid "Error getting diffs: %s"
msgstr "Fel vid hämtning av diff: %s"
-#: gitk:8650
+#: gitk:8651
msgid "Goto:"
msgstr "Gå till:"
-#: gitk:8671
+#: gitk:8672
#, tcl-format
msgid "Short SHA1 id %s is ambiguous"
msgstr "Förkortat SHA1-id %s är tvetydigt"
-#: gitk:8678
+#: gitk:8679
#, tcl-format
msgid "Revision %s is not known"
msgstr "Revisionen %s är inte känd"
-#: gitk:8688
+#: gitk:8689
#, tcl-format
msgid "SHA1 id %s is not known"
msgstr "SHA-id:t %s är inte känt"
-#: gitk:8690
+#: gitk:8691
#, tcl-format
msgid "Revision %s is not in the current view"
msgstr "Revisionen %s finns inte i den nuvarande vyn"
-#: gitk:8832 gitk:8847
+#: gitk:8833 gitk:8848
msgid "Date"
msgstr "Datum"
-#: gitk:8835
+#: gitk:8836
msgid "Children"
msgstr "Barn"
-#: gitk:8898
+#: gitk:8899
#, tcl-format
msgid "Reset %s branch to here"
msgstr "Återställ grenen %s hit"
-#: gitk:8900
+#: gitk:8901
msgid "Detached head: can't reset"
msgstr "Frånkopplad head: kan inte återställa"
-#: gitk:9005 gitk:9011
+#: gitk:9006 gitk:9012
msgid "Skipping merge commit "
msgstr "Hoppar över sammanslagningsincheckning "
-#: gitk:9020 gitk:9025
+#: gitk:9021 gitk:9026
msgid "Error getting patch ID for "
msgstr "Fel vid hämtning av patch-id för "
-#: gitk:9021 gitk:9026
+#: gitk:9022 gitk:9027
msgid " - stopping\n"
msgstr " - stannar\n"
-#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065
+#: gitk:9032 gitk:9035 gitk:9043 gitk:9057 gitk:9066
msgid "Commit "
msgstr "Incheckning "
-#: gitk:9035
+#: gitk:9036
msgid ""
" is the same patch as\n"
" "
@@ -897,7 +911,7 @@ msgstr ""
" är samma patch som\n"
" "
-#: gitk:9043
+#: gitk:9044
msgid ""
" differs from\n"
" "
@@ -905,7 +919,7 @@ msgstr ""
" skiljer sig från\n"
" "
-#: gitk:9045
+#: gitk:9046
msgid ""
"Diff of commits:\n"
"\n"
@@ -913,131 +927,131 @@ msgstr ""
"Skillnad mellan incheckningar:\n"
"\n"
-#: gitk:9057 gitk:9066
+#: gitk:9058 gitk:9067
#, tcl-format
msgid " has %s children - stopping\n"
msgstr " har %s barn - stannar\n"
-#: gitk:9085
+#: gitk:9086
#, tcl-format
msgid "Error writing commit to file: %s"
msgstr "Fel vid skrivning av incheckning till fil: %s"
-#: gitk:9091
+#: gitk:9092
#, tcl-format
msgid "Error diffing commits: %s"
msgstr "Fel vid jämförelse av incheckningar: %s"
-#: gitk:9137
+#: gitk:9138
msgid "Top"
msgstr "Topp"
-#: gitk:9138
+#: gitk:9139
msgid "From"
msgstr "Från"
-#: gitk:9143
+#: gitk:9144
msgid "To"
msgstr "Till"
-#: gitk:9167
+#: gitk:9168
msgid "Generate patch"
msgstr "Generera patch"
-#: gitk:9169
+#: gitk:9170
msgid "From:"
msgstr "Från:"
-#: gitk:9178
+#: gitk:9179
msgid "To:"
msgstr "Till:"
-#: gitk:9187
+#: gitk:9188
msgid "Reverse"
msgstr "Vänd"
-#: gitk:9189 gitk:9385
+#: gitk:9190 gitk:9400
msgid "Output file:"
msgstr "Utdatafil:"
-#: gitk:9195
+#: gitk:9196
msgid "Generate"
msgstr "Generera"
-#: gitk:9233
+#: gitk:9234
msgid "Error creating patch:"
msgstr "Fel vid generering av patch:"
-#: gitk:9256 gitk:9373 gitk:9430
+#: gitk:9257 gitk:9388 gitk:9445
msgid "ID:"
msgstr "Id:"
-#: gitk:9265
+#: gitk:9266
msgid "Tag name:"
msgstr "Taggnamn:"
-#: gitk:9268
+#: gitk:9269
msgid "Tag message is optional"
msgstr "Taggmeddelandet är valfritt"
-#: gitk:9270
+#: gitk:9271
msgid "Tag message:"
msgstr "Taggmeddelande:"
-#: gitk:9274 gitk:9439
+#: gitk:9275 gitk:9454
msgid "Create"
msgstr "Skapa"
-#: gitk:9292
+#: gitk:9293
msgid "No tag name specified"
msgstr "Inget taggnamn angavs"
-#: gitk:9296
+#: gitk:9297
#, tcl-format
msgid "Tag \"%s\" already exists"
msgstr "Taggen \"%s\" finns redan"
-#: gitk:9306
+#: gitk:9307
msgid "Error creating tag:"
msgstr "Fel vid skapande av tagg:"
-#: gitk:9382
+#: gitk:9397
msgid "Command:"
msgstr "Kommando:"
-#: gitk:9390
+#: gitk:9405
msgid "Write"
msgstr "Skriv"
-#: gitk:9408
+#: gitk:9423
msgid "Error writing commit:"
msgstr "Fel vid skrivning av incheckning:"
-#: gitk:9435
+#: gitk:9450
msgid "Name:"
msgstr "Namn:"
-#: gitk:9458
+#: gitk:9473
msgid "Please specify a name for the new branch"
msgstr "Ange ett namn för den nya grenen"
-#: gitk:9463
+#: gitk:9478
#, tcl-format
msgid "Branch '%s' already exists. Overwrite?"
msgstr "Grenen \"%s\" finns redan. Skriva över?"
-#: gitk:9530
+#: gitk:9545
#, tcl-format
msgid "Commit %s is already included in branch %s -- really re-apply it?"
msgstr ""
"Incheckningen %s finns redan på grenen %s -- skall den verkligen appliceras "
"på nytt?"
-#: gitk:9535
+#: gitk:9550
msgid "Cherry-picking"
msgstr "Plockar"
-#: gitk:9544
+#: gitk:9559
#, tcl-format
msgid ""
"Cherry-pick failed because of local changes to file '%s'.\n"
@@ -1047,7 +1061,7 @@ msgstr ""
"Checka in, återställ eller spara undan (stash) dina ändringar och försök "
"igen."
-#: gitk:9550
+#: gitk:9565
msgid ""
"Cherry-pick failed because of merge conflict.\n"
"Do you wish to run git citool to resolve it?"
@@ -1055,20 +1069,20 @@ msgstr ""
"Cherry-pick misslyckades på grund av en sammanslagningskonflikt.\n"
"Vill du köra git citool för att lösa den?"
-#: gitk:9566 gitk:9624
+#: gitk:9581 gitk:9639
msgid "No changes committed"
msgstr "Inga ändringar incheckade"
-#: gitk:9593
+#: gitk:9608
#, tcl-format
msgid "Commit %s is not included in branch %s -- really revert it?"
msgstr "Incheckningen %s finns inte på grenen %s -- vill du verkligen ångra?"
-#: gitk:9598
+#: gitk:9613
msgid "Reverting"
msgstr "Ångrar"
-#: gitk:9606
+#: gitk:9621
#, tcl-format
msgid ""
"Revert failed because of local changes to the following files:%s Please "
@@ -1078,7 +1092,7 @@ msgstr ""
"Checka in, återställ eller spara undan (stash) dina ändringar och försök "
"igen."
-#: gitk:9610
+#: gitk:9625
msgid ""
"Revert failed because of merge conflict.\n"
" Do you wish to run git citool to resolve it?"
@@ -1086,28 +1100,28 @@ msgstr ""
"Misslyckades med att ångra på grund av en sammanslagningskonflikt.\n"
" Vill du köra git citool för att lösa den?"
-#: gitk:9653
+#: gitk:9668
msgid "Confirm reset"
msgstr "Bekräfta återställning"
-#: gitk:9655
+#: gitk:9670
#, tcl-format
msgid "Reset branch %s to %s?"
msgstr "Återställa grenen %s till %s?"
-#: gitk:9657
+#: gitk:9672
msgid "Reset type:"
msgstr "Typ av återställning:"
-#: gitk:9660
+#: gitk:9675
msgid "Soft: Leave working tree and index untouched"
msgstr "Mjuk: Rör inte utcheckning och index"
-#: gitk:9663
+#: gitk:9678
msgid "Mixed: Leave working tree untouched, reset index"
msgstr "Blandad: Rör inte utcheckning, återställ index"
-#: gitk:9666
+#: gitk:9681
msgid ""
"Hard: Reset working tree and index\n"
"(discard ALL local changes)"
@@ -1115,19 +1129,19 @@ msgstr ""
"Hård: Återställ utcheckning och index\n"
"(förkastar ALLA lokala ändringar)"
-#: gitk:9683
+#: gitk:9698
msgid "Resetting"
msgstr "Återställer"
-#: gitk:9743
+#: gitk:9758
msgid "Checking out"
msgstr "Checkar ut"
-#: gitk:9796
+#: gitk:9811
msgid "Cannot delete the currently checked-out branch"
msgstr "Kan inte ta bort den just nu utcheckade grenen"
-#: gitk:9802
+#: gitk:9817
#, tcl-format
msgid ""
"The commits on branch %s aren't on any other branch.\n"
@@ -1136,16 +1150,16 @@ msgstr ""
"Incheckningarna på grenen %s existerar inte på någon annan gren.\n"
"Vill du verkligen ta bort grenen %s?"
-#: gitk:9833
+#: gitk:9848
#, tcl-format
msgid "Tags and heads: %s"
msgstr "Taggar och huvuden: %s"
-#: gitk:9850
+#: gitk:9865
msgid "Filter"
msgstr "Filter"
-#: gitk:10146
+#: gitk:10161
msgid ""
"Error reading commit topology information; branch and preceding/following "
"tag information will be incomplete."
@@ -1153,201 +1167,201 @@ msgstr ""
"Fel vid läsning av information om incheckningstopologi; information om "
"grenar och föregående/senare taggar kommer inte vara komplett."
-#: gitk:11123
+#: gitk:11138
msgid "Tag"
msgstr "Tagg"
-#: gitk:11127
+#: gitk:11142
msgid "Id"
msgstr "Id"
-#: gitk:11210
+#: gitk:11225
msgid "Gitk font chooser"
msgstr "Teckensnittsväljare för Gitk"
-#: gitk:11227
+#: gitk:11242
msgid "B"
msgstr "F"
-#: gitk:11230
+#: gitk:11245
msgid "I"
msgstr "K"
-#: gitk:11348
+#: gitk:11363
msgid "Commit list display options"
msgstr "Alternativ för incheckningslistvy"
-#: gitk:11351
+#: gitk:11366
msgid "Maximum graph width (lines)"
msgstr "Maximal grafbredd (rader)"
-#: gitk:11355
+#: gitk:11370
#, no-tcl-format
msgid "Maximum graph width (% of pane)"
msgstr "Maximal grafbredd (% av ruta)"
-#: gitk:11358
+#: gitk:11373
msgid "Show local changes"
msgstr "Visa lokala ändringar"
-#: gitk:11361
+#: gitk:11376
msgid "Auto-select SHA1 (length)"
msgstr "Välj SHA1 (längd) automatiskt"
-#: gitk:11365
+#: gitk:11380
msgid "Hide remote refs"
msgstr "Dölj fjärr-referenser"
-#: gitk:11369
+#: gitk:11384
msgid "Diff display options"
msgstr "Alternativ för diffvy"
-#: gitk:11371
+#: gitk:11386
msgid "Tab spacing"
msgstr "Blanksteg för tabulatortecken"
-#: gitk:11374
+#: gitk:11389
msgid "Display nearby tags/heads"
msgstr "Visa närliggande taggar/huvuden"
-#: gitk:11377
+#: gitk:11392
msgid "Maximum # tags/heads to show"
msgstr "Maximalt antal taggar/huvuden att visa"
-#: gitk:11380
+#: gitk:11395
msgid "Limit diffs to listed paths"
msgstr "Begränsa diff till listade sökvägar"
-#: gitk:11383
+#: gitk:11398
msgid "Support per-file encodings"
msgstr "Stöd för filspecifika teckenkodningar"
-#: gitk:11389 gitk:11536
+#: gitk:11404 gitk:11551
msgid "External diff tool"
msgstr "Externt diff-verktyg"
-#: gitk:11390
+#: gitk:11405
msgid "Choose..."
msgstr "Välj..."
-#: gitk:11395
+#: gitk:11410
msgid "General options"
msgstr "Allmänna inställningar"
-#: gitk:11398
+#: gitk:11413
msgid "Use themed widgets"
msgstr "Använd tema på fönsterelement"
-#: gitk:11400
+#: gitk:11415
msgid "(change requires restart)"
msgstr "(ändringen kräver omstart)"
-#: gitk:11402
+#: gitk:11417
msgid "(currently unavailable)"
msgstr "(för närvarande inte tillgängligt)"
-#: gitk:11413
+#: gitk:11428
msgid "Colors: press to choose"
msgstr "Färger: tryck för att välja"
-#: gitk:11416
+#: gitk:11431
msgid "Interface"
msgstr "Gränssnitt"
-#: gitk:11417
+#: gitk:11432
msgid "interface"
msgstr "gränssnitt"
-#: gitk:11420
+#: gitk:11435
msgid "Background"
msgstr "Bakgrund"
-#: gitk:11421 gitk:11451
+#: gitk:11436 gitk:11466
msgid "background"
msgstr "bakgrund"
-#: gitk:11424
+#: gitk:11439
msgid "Foreground"
msgstr "Förgrund"
-#: gitk:11425
+#: gitk:11440
msgid "foreground"
msgstr "förgrund"
-#: gitk:11428
+#: gitk:11443
msgid "Diff: old lines"
msgstr "Diff: gamla rader"
-#: gitk:11429
+#: gitk:11444
msgid "diff old lines"
msgstr "diff gamla rader"
-#: gitk:11433
+#: gitk:11448
msgid "Diff: new lines"
msgstr "Diff: nya rader"
-#: gitk:11434
+#: gitk:11449
msgid "diff new lines"
msgstr "diff nya rader"
-#: gitk:11438
+#: gitk:11453
msgid "Diff: hunk header"
msgstr "Diff: delhuvud"
-#: gitk:11440
+#: gitk:11455
msgid "diff hunk header"
msgstr "diff delhuvud"
-#: gitk:11444
+#: gitk:11459
msgid "Marked line bg"
msgstr "Markerad rad bakgrund"
-#: gitk:11446
+#: gitk:11461
msgid "marked line background"
msgstr "markerad rad bakgrund"
-#: gitk:11450
+#: gitk:11465
msgid "Select bg"
msgstr "Markerad bakgrund"
-#: gitk:11459
+#: gitk:11474
msgid "Fonts: press to choose"
msgstr "Teckensnitt: tryck för att välja"
-#: gitk:11461
+#: gitk:11476
msgid "Main font"
msgstr "Huvudteckensnitt"
-#: gitk:11462
+#: gitk:11477
msgid "Diff display font"
msgstr "Teckensnitt för diffvisning"
-#: gitk:11463
+#: gitk:11478
msgid "User interface font"
msgstr "Teckensnitt för användargränssnitt"
-#: gitk:11485
+#: gitk:11500
msgid "Gitk preferences"
msgstr "Inställningar för Gitk"
-#: gitk:11494
+#: gitk:11509
msgid "General"
msgstr "Allmänt"
-#: gitk:11495
+#: gitk:11510
msgid "Colors"
msgstr "Färger"
-#: gitk:11496
+#: gitk:11511
msgid "Fonts"
msgstr "Teckensnitt"
-#: gitk:11546
+#: gitk:11561
#, tcl-format
msgid "Gitk: choose color for %s"
msgstr "Gitk: välj färg för %s"
-#: gitk:12059
+#: gitk:12074
msgid ""
"Sorry, gitk cannot run with this version of Tcl/Tk.\n"
" Gitk requires at least Tcl/Tk 8.4."
@@ -1355,16 +1369,16 @@ msgstr ""
"Gitk kan tyvärr inte köra med denna version av Tcl/Tk.\n"
" Gitk kräver åtminstone Tcl/Tk 8.4."
-#: gitk:12269
+#: gitk:12284
msgid "Cannot find a git repository here."
msgstr "Hittar inget git-arkiv här."
-#: gitk:12316
+#: gitk:12331
#, tcl-format
msgid "Ambiguous argument '%s': both revision and filename"
msgstr "Tvetydigt argument \"%s\": både revision och filnamn"
-#: gitk:12328
+#: gitk:12343
msgid "Bad arguments to gitk:"
msgstr "Felaktiga argument till gitk:"
diff --git a/ident.c b/ident.c
index 4e7f99d5dd..daf7e1ea83 100644
--- a/ident.c
+++ b/ident.c
@@ -10,6 +10,8 @@
static struct strbuf git_default_name = STRBUF_INIT;
static struct strbuf git_default_email = STRBUF_INIT;
static struct strbuf git_default_date = STRBUF_INIT;
+static int default_email_is_bogus;
+static int default_name_is_bogus;
#define IDENT_NAME_GIVEN 01
#define IDENT_MAIL_GIVEN 02
@@ -23,6 +25,25 @@ static int author_ident_explicitly_given;
#define get_gecos(struct_passwd) ((struct_passwd)->pw_gecos)
#endif
+static struct passwd *xgetpwuid_self(int *is_bogus)
+{
+ struct passwd *pw;
+
+ errno = 0;
+ pw = getpwuid(getuid());
+ if (!pw) {
+ static struct passwd fallback;
+ fallback.pw_name = "unknown";
+#ifndef NO_GECOS_IN_PWENT
+ fallback.pw_gecos = "Unknown";
+#endif
+ pw = &fallback;
+ if (is_bogus)
+ *is_bogus = 1;
+ }
+ return pw;
+}
+
static void copy_gecos(const struct passwd *w, struct strbuf *name)
{
char *src;
@@ -86,7 +107,7 @@ static int canonical_name(const char *host, struct strbuf *out)
freeaddrinfo(ai);
}
#else
- struct hostent *he = gethostbyname(buf);
+ struct hostent *he = gethostbyname(host);
if (he && strchr(he->h_name, '.')) {
strbuf_addstr(out, he->h_name);
status = 0;
@@ -96,22 +117,26 @@ static int canonical_name(const char *host, struct strbuf *out)
return status;
}
-static void add_domainname(struct strbuf *out)
+static void add_domainname(struct strbuf *out, int *is_bogus)
{
char buf[1024];
if (gethostname(buf, sizeof(buf))) {
warning("cannot get host name: %s", strerror(errno));
strbuf_addstr(out, "(none)");
+ *is_bogus = 1;
return;
}
if (strchr(buf, '.'))
strbuf_addstr(out, buf);
- else if (canonical_name(buf, out) < 0)
+ else if (canonical_name(buf, out) < 0) {
strbuf_addf(out, "%s.(none)", buf);
+ *is_bogus = 1;
+ }
}
-static void copy_email(const struct passwd *pw, struct strbuf *email)
+static void copy_email(const struct passwd *pw, struct strbuf *email,
+ int *is_bogus)
{
/*
* Make up a fake email address
@@ -122,13 +147,13 @@ static void copy_email(const struct passwd *pw, struct strbuf *email)
if (!add_mailname_host(email))
return; /* read from "/etc/mailname" (Debian) */
- add_domainname(email);
+ add_domainname(email, is_bogus);
}
const char *ident_default_name(void)
{
if (!git_default_name.len) {
- copy_gecos(xgetpwuid_self(), &git_default_name);
+ copy_gecos(xgetpwuid_self(&default_name_is_bogus), &git_default_name);
strbuf_trim(&git_default_name);
}
return git_default_name.buf;
@@ -144,7 +169,8 @@ const char *ident_default_email(void)
committer_ident_explicitly_given |= IDENT_MAIL_GIVEN;
author_ident_explicitly_given |= IDENT_MAIL_GIVEN;
} else
- copy_email(xgetpwuid_self(), &git_default_email);
+ copy_email(xgetpwuid_self(&default_email_is_bogus),
+ &git_default_email, &default_email_is_bogus);
strbuf_trim(&git_default_email);
}
return git_default_email.buf;
@@ -332,12 +358,17 @@ const char *fmt_ident(const char *name, const char *email,
fputs(env_hint, stderr);
die("empty ident name (for <%s>) not allowed", email);
}
- pw = xgetpwuid_self();
+ pw = xgetpwuid_self(NULL);
name = pw->pw_name;
}
- if (strict && email == git_default_email.buf &&
- strstr(email, "(none)")) {
+ if (want_name && strict &&
+ name == git_default_name.buf && default_name_is_bogus) {
+ fputs(env_hint, stderr);
+ die("unable to auto-detect name (got '%s')", name);
+ }
+
+ if (strict && email == git_default_email.buf && default_email_is_bogus) {
fputs(env_hint, stderr);
die("unable to auto-detect email address (got '%s')", email);
}
diff --git a/log-tree.c b/log-tree.c
index 35e780170a..f70a30e127 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -342,7 +342,8 @@ void log_write_email_headers(struct rev_info *opt, struct commit *commit,
{
const char *subject = NULL;
const char *extra_headers = opt->extra_headers;
- const char *name = oid_to_hex(&commit->object.oid);
+ const char *name = oid_to_hex(opt->zero_commit ?
+ &null_oid : &commit->object.oid);
*need_8bit_cte_p = 0; /* unknown */
if (opt->total > 0) {
diff --git a/refs/files-backend.c b/refs/files-backend.c
index 4db3e36f89..c648b5e853 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -3494,7 +3494,7 @@ int reflog_expire(const char *refname, const unsigned char *sha1,
get_lock_file_path(lock->lk));
rollback_lock_file(&reflog_lock);
} else if (commit_lock_file(&reflog_lock)) {
- status |= error("unable to commit reflog '%s' (%s)",
+ status |= error("unable to write reflog '%s' (%s)",
log_file, strerror(errno));
} else if (update && commit_ref(lock)) {
status |= error("couldn't set %s", lock->ref_name);
diff --git a/revision.c b/revision.c
index 2a9463bd67..9404a05eeb 100644
--- a/revision.c
+++ b/revision.c
@@ -135,10 +135,12 @@ static void mark_tree_contents_uninteresting(struct tree *tree)
void mark_tree_uninteresting(struct tree *tree)
{
- struct object *obj = &tree->object;
+ struct object *obj;
if (!tree)
return;
+
+ obj = &tree->object;
if (obj->flags & UNINTERESTING)
return;
obj->flags |= UNINTERESTING;
diff --git a/revision.h b/revision.h
index 5bc9686846..23857c0ed1 100644
--- a/revision.h
+++ b/revision.h
@@ -135,6 +135,7 @@ struct rev_info {
pretty_given:1,
abbrev_commit:1,
abbrev_commit_given:1,
+ zero_commit:1,
use_terminator:1,
missing_newline:1,
date_mode_explicit:1,
diff --git a/sha1_file.c b/sha1_file.c
index 27ce7b705e..73ccd49a46 100644
--- a/sha1_file.c
+++ b/sha1_file.c
@@ -36,6 +36,7 @@
static inline uintmax_t sz_fmt(size_t s) { return s; }
const unsigned char null_sha1[20];
+const struct object_id null_oid;
/*
* This is meant to hold a *small* number of objects that you would
@@ -3504,12 +3505,12 @@ static int for_each_file_in_obj_subdir(int subdir_nr,
break;
}
}
- strbuf_setlen(path, baselen);
+ closedir(dir);
+ strbuf_setlen(path, baselen);
if (!r && subdir_cb)
r = subdir_cb(subdir_nr, path->buf, data);
- closedir(dir);
return r;
}
diff --git a/submodule-config.c b/submodule-config.c
index afe0ea8156..fe8ceabf30 100644
--- a/submodule-config.c
+++ b/submodule-config.c
@@ -228,6 +228,35 @@ int parse_fetch_recurse_submodules_arg(const char *opt, const char *arg)
return parse_fetch_recurse(opt, arg, 1);
}
+static int parse_push_recurse(const char *opt, const char *arg,
+ int die_on_error)
+{
+ switch (git_config_maybe_bool(opt, arg)) {
+ case 1:
+ /* There's no simple "on" value when pushing */
+ if (die_on_error)
+ die("bad %s argument: %s", opt, arg);
+ else
+ return RECURSE_SUBMODULES_ERROR;
+ case 0:
+ return RECURSE_SUBMODULES_OFF;
+ default:
+ if (!strcmp(arg, "on-demand"))
+ return RECURSE_SUBMODULES_ON_DEMAND;
+ else if (!strcmp(arg, "check"))
+ return RECURSE_SUBMODULES_CHECK;
+ else if (die_on_error)
+ die("bad %s argument: %s", opt, arg);
+ else
+ return RECURSE_SUBMODULES_ERROR;
+ }
+}
+
+int parse_push_recurse_submodules_arg(const char *opt, const char *arg)
+{
+ return parse_push_recurse(opt, arg, 1);
+}
+
static void warn_multiple_config(const unsigned char *commit_sha1,
const char *name, const char *option)
{
diff --git a/submodule-config.h b/submodule-config.h
index 9061e4ed38..9bfa65af03 100644
--- a/submodule-config.h
+++ b/submodule-config.h
@@ -19,6 +19,7 @@ struct submodule {
};
int parse_fetch_recurse_submodules_arg(const char *opt, const char *arg);
+int parse_push_recurse_submodules_arg(const char *opt, const char *arg);
int parse_submodule_config_option(const char *var, const char *value);
const struct submodule *submodule_from_name(const unsigned char *commit_sha1,
const char *name);
diff --git a/submodule.h b/submodule.h
index 5507c3d9a0..ddff512109 100644
--- a/submodule.h
+++ b/submodule.h
@@ -5,6 +5,7 @@ struct diff_options;
struct argv_array;
enum {
+ RECURSE_SUBMODULES_CHECK = -4,
RECURSE_SUBMODULES_ERROR = -3,
RECURSE_SUBMODULES_NONE = -2,
RECURSE_SUBMODULES_ON_DEMAND = -1,
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 98eb49ac23..544f9ad508 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -1006,6 +1006,22 @@ test_expect_success 'rebase -i with --strategy and -X' '
test $(cat file1) = Z
'
+test_expect_success 'interrupted rebase -i with --strategy and -X' '
+ git checkout -b conflict-merge-use-theirs-interrupted conflict-branch &&
+ git reset --hard HEAD^ &&
+ >breakpoint &&
+ git add breakpoint &&
+ git commit -m "breakpoint for interactive mode" &&
+ echo five >conflict &&
+ echo Z >file1 &&
+ git commit -a -m "one file conflict" &&
+ set_fake_editor &&
+ FAKE_LINES="edit 1 2" git rebase -i --strategy=recursive -Xours conflict-branch &&
+ git rebase --continue &&
+ test $(git show conflict-branch:conflict) = $(cat conflict) &&
+ test $(cat file1) = Z
+'
+
test_expect_success 'rebase -i error on commits with \ in message' '
current_head=$(git rev-parse HEAD) &&
test_when_finished "git rebase --abort; git reset --hard $current_head; rm -f error" &&
@@ -1234,7 +1250,7 @@ test_expect_success 'tabs and spaces are accepted in the todolist' '
# Turn single spaces into space/tab mix
sed "1s/ / /g; 2s/ / /g; 3s/ / /g" "$1"
printf "\n\t# comment\n #more\n\t # comment\n"
- ) >$1.new
+ ) >"$1.new"
mv "$1.new" "$1"
EOF
test_set_editor "$(pwd)/add-indent.sh" &&
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index 890db1174f..646c4750ec 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -1431,4 +1431,18 @@ test_expect_success 'cover letter auto user override' '
test_line_count = 2 list
'
+test_expect_success 'format-patch --zero-commit' '
+ git format-patch --zero-commit --stdout v2..v1 >patch2 &&
+ grep "^From " patch2 | sort | uniq >actual &&
+ echo "From $_z40 Mon Sep 17 00:00:00 2001" >expect &&
+ test_cmp expect actual
+'
+
+test_expect_success 'From line has expected format' '
+ git format-patch --stdout v2..v1 >patch2 &&
+ grep "^From " patch2 >from &&
+ grep "^From $_x40 Mon Sep 17 00:00:00 2001$" patch2 >filtered &&
+ test_cmp from filtered
+'
+
test_done
diff --git a/t/t5531-deep-submodule-push.sh b/t/t5531-deep-submodule-push.sh
index 6507487c1a..198ce84754 100755
--- a/t/t5531-deep-submodule-push.sh
+++ b/t/t5531-deep-submodule-push.sh
@@ -64,7 +64,12 @@ test_expect_success 'push fails if submodule commit not on remote' '
cd work &&
git add gar/bage &&
git commit -m "Third commit for gar/bage" &&
- test_must_fail git push --recurse-submodules=check ../pub.git master
+ # the push should fail with --recurse-submodules=check
+ # on the command line...
+ test_must_fail git push --recurse-submodules=check ../pub.git master &&
+
+ # ...or if specified in the configuration..
+ test_must_fail git -c push.recurseSubmodules=check push ../pub.git master
)
'
@@ -79,6 +84,216 @@ test_expect_success 'push succeeds after commit was pushed to remote' '
)
'
+test_expect_success 'push succeeds if submodule commit not on remote but using on-demand on command line' '
+ (
+ cd work/gar/bage &&
+ >recurse-on-demand-on-command-line &&
+ git add recurse-on-demand-on-command-line &&
+ git commit -m "Recurse on-demand on command line junk"
+ ) &&
+ (
+ cd work &&
+ git add gar/bage &&
+ git commit -m "Recurse on-demand on command line for gar/bage" &&
+ git push --recurse-submodules=on-demand ../pub.git master &&
+ # Check that the supermodule commit got there
+ git fetch ../pub.git &&
+ git diff --quiet FETCH_HEAD master &&
+ # Check that the submodule commit got there too
+ cd gar/bage &&
+ git diff --quiet origin/master master
+ )
+'
+
+test_expect_success 'push succeeds if submodule commit not on remote but using on-demand from config' '
+ (
+ cd work/gar/bage &&
+ >recurse-on-demand-from-config &&
+ git add recurse-on-demand-from-config &&
+ git commit -m "Recurse on-demand from config junk"
+ ) &&
+ (
+ cd work &&
+ git add gar/bage &&
+ git commit -m "Recurse on-demand from config for gar/bage" &&
+ git -c push.recurseSubmodules=on-demand push ../pub.git master &&
+ # Check that the supermodule commit got there
+ git fetch ../pub.git &&
+ git diff --quiet FETCH_HEAD master &&
+ # Check that the submodule commit got there too
+ cd gar/bage &&
+ git diff --quiet origin/master master
+ )
+'
+
+test_expect_success 'push recurse-submodules on command line overrides config' '
+ (
+ cd work/gar/bage &&
+ >recurse-check-on-command-line-overriding-config &&
+ git add recurse-check-on-command-line-overriding-config &&
+ git commit -m "Recurse on command-line overriding config junk"
+ ) &&
+ (
+ cd work &&
+ git add gar/bage &&
+ git commit -m "Recurse on command-line overriding config for gar/bage" &&
+
+ # Ensure that we can override on-demand in the config
+ # to just check submodules
+ test_must_fail git -c push.recurseSubmodules=on-demand push --recurse-submodules=check ../pub.git master &&
+ # Check that the supermodule commit did not get there
+ git fetch ../pub.git &&
+ git diff --quiet FETCH_HEAD master^ &&
+ # Check that the submodule commit did not get there
+ (cd gar/bage && git diff --quiet origin/master master^) &&
+
+ # Ensure that we can override check in the config to
+ # disable submodule recursion entirely
+ (cd gar/bage && git diff --quiet origin/master master^) &&
+ git -c push.recurseSubmodules=on-demand push --recurse-submodules=no ../pub.git master &&
+ git fetch ../pub.git &&
+ git diff --quiet FETCH_HEAD master &&
+ (cd gar/bage && git diff --quiet origin/master master^) &&
+
+ # Ensure that we can override check in the config to
+ # disable submodule recursion entirely (alternative form)
+ git -c push.recurseSubmodules=on-demand push --no-recurse-submodules ../pub.git master &&
+ git fetch ../pub.git &&
+ git diff --quiet FETCH_HEAD master &&
+ (cd gar/bage && git diff --quiet origin/master master^) &&
+
+ # Ensure that we can override check in the config to
+ # push the submodule too
+ git -c push.recurseSubmodules=check push --recurse-submodules=on-demand ../pub.git master &&
+ git fetch ../pub.git &&
+ git diff --quiet FETCH_HEAD master &&
+ (cd gar/bage && git diff --quiet origin/master master)
+ )
+'
+
+test_expect_success 'push recurse-submodules last one wins on command line' '
+ (
+ cd work/gar/bage &&
+ >recurse-check-on-command-line-overriding-earlier-command-line &&
+ git add recurse-check-on-command-line-overriding-earlier-command-line &&
+ git commit -m "Recurse on command-line overridiing earlier command-line junk"
+ ) &&
+ (
+ cd work &&
+ git add gar/bage &&
+ git commit -m "Recurse on command-line overriding earlier command-line for gar/bage" &&
+
+ # should result in "check"
+ test_must_fail git push --recurse-submodules=on-demand --recurse-submodules=check ../pub.git master &&
+ # Check that the supermodule commit did not get there
+ git fetch ../pub.git &&
+ git diff --quiet FETCH_HEAD master^ &&
+ # Check that the submodule commit did not get there
+ (cd gar/bage && git diff --quiet origin/master master^) &&
+
+ # should result in "no"
+ git push --recurse-submodules=on-demand --recurse-submodules=no ../pub.git master &&
+ # Check that the supermodule commit did get there
+ git fetch ../pub.git &&
+ git diff --quiet FETCH_HEAD master &&
+ # Check that the submodule commit did not get there
+ (cd gar/bage && git diff --quiet origin/master master^) &&
+
+ # should result in "no"
+ git push --recurse-submodules=on-demand --no-recurse-submodules ../pub.git master &&
+ # Check that the submodule commit did not get there
+ (cd gar/bage && git diff --quiet origin/master master^) &&
+
+ # But the options in the other order should push the submodule
+ git push --recurse-submodules=check --recurse-submodules=on-demand ../pub.git master &&
+ # Check that the submodule commit did get there
+ git fetch ../pub.git &&
+ (cd gar/bage && git diff --quiet origin/master master)
+ )
+'
+
+test_expect_success 'push succeeds if submodule commit not on remote using on-demand from cmdline overriding config' '
+ (
+ cd work/gar/bage &&
+ >recurse-on-demand-on-command-line-overriding-config &&
+ git add recurse-on-demand-on-command-line-overriding-config &&
+ git commit -m "Recurse on-demand on command-line overriding config junk"
+ ) &&
+ (
+ cd work &&
+ git add gar/bage &&
+ git commit -m "Recurse on-demand on command-line overriding config for gar/bage" &&
+ git -c push.recurseSubmodules=check push --recurse-submodules=on-demand ../pub.git master &&
+ # Check that the supermodule commit got there
+ git fetch ../pub.git &&
+ git diff --quiet FETCH_HEAD master &&
+ # Check that the submodule commit got there
+ cd gar/bage &&
+ git diff --quiet origin/master master
+ )
+'
+
+test_expect_success 'push succeeds if submodule commit disabling recursion from cmdline overriding config' '
+ (
+ cd work/gar/bage &&
+ >recurse-disable-on-command-line-overriding-config &&
+ git add recurse-disable-on-command-line-overriding-config &&
+ git commit -m "Recurse disable on command-line overriding config junk"
+ ) &&
+ (
+ cd work &&
+ git add gar/bage &&
+ git commit -m "Recurse disable on command-line overriding config for gar/bage" &&
+ git -c push.recurseSubmodules=check push --recurse-submodules=no ../pub.git master &&
+ # Check that the supermodule commit got there
+ git fetch ../pub.git &&
+ git diff --quiet FETCH_HEAD master &&
+ # But that the submodule commit did not
+ ( cd gar/bage && git diff --quiet origin/master master^ ) &&
+ # Now push it to avoid confusing future tests
+ git push --recurse-submodules=on-demand ../pub.git master
+ )
+'
+
+test_expect_success 'push succeeds if submodule commit disabling recursion from cmdline (alternative form) overriding config' '
+ (
+ cd work/gar/bage &&
+ >recurse-disable-on-command-line-alt-overriding-config &&
+ git add recurse-disable-on-command-line-alt-overriding-config &&
+ git commit -m "Recurse disable on command-line alternative overriding config junk"
+ ) &&
+ (
+ cd work &&
+ git add gar/bage &&
+ git commit -m "Recurse disable on command-line alternative overriding config for gar/bage" &&
+ git -c push.recurseSubmodules=check push --no-recurse-submodules ../pub.git master &&
+ # Check that the supermodule commit got there
+ git fetch ../pub.git &&
+ git diff --quiet FETCH_HEAD master &&
+ # But that the submodule commit did not
+ ( cd gar/bage && git diff --quiet origin/master master^ ) &&
+ # Now push it to avoid confusing future tests
+ git push --recurse-submodules=on-demand ../pub.git master
+ )
+'
+
+test_expect_success 'push fails if recurse submodules option passed as yes' '
+ (
+ cd work/gar/bage &&
+ >recurse-push-fails-if-recurse-submodules-passed-as-yes &&
+ git add recurse-push-fails-if-recurse-submodules-passed-as-yes &&
+ git commit -m "Recurse push fails if recurse submodules option passed as yes"
+ ) &&
+ (
+ cd work &&
+ git add gar/bage &&
+ git commit -m "Recurse push fails if recurse submodules option passed as yes for gar/bage" &&
+ test_must_fail git push --recurse-submodules=yes ../pub.git master &&
+ test_must_fail git -c push.recurseSubmodules=yes push ../pub.git master &&
+ git push --recurse-submodules=on-demand ../pub.git master
+ )
+'
+
test_expect_success 'push fails when commit on multiple branches if one branch has no remote' '
(
cd work/gar/bage &&
diff --git a/t/t9826-git-p4-keep-empty-commits.sh b/t/t9826-git-p4-keep-empty-commits.sh
new file mode 100755
index 0000000000..be12960d39
--- /dev/null
+++ b/t/t9826-git-p4-keep-empty-commits.sh
@@ -0,0 +1,134 @@
+#!/bin/sh
+
+test_description='Clone repositories and keep empty commits'
+
+. ./lib-git-p4.sh
+
+test_expect_success 'start p4d' '
+ start_p4d
+'
+
+test_expect_success 'Create a repo' '
+ client_view "//depot/... //client/..." &&
+ (
+ cd "$cli" &&
+
+ mkdir -p subdir &&
+
+ >subdir/file1.txt &&
+ p4 add subdir/file1.txt &&
+ p4 submit -d "Add file 1" &&
+
+ >file2.txt &&
+ p4 add file2.txt &&
+ p4 submit -d "Add file 2" &&
+
+ >subdir/file3.txt &&
+ p4 add subdir/file3.txt &&
+ p4 submit -d "Add file 3" &&
+
+ >file4.txt &&
+ p4 add file4.txt &&
+ p4 submit -d "Add file 4" &&
+
+ p4 delete subdir/file3.txt &&
+ p4 submit -d "Remove file 3" &&
+
+ p4 delete file4.txt &&
+ p4 submit -d "Remove file 4"
+ )
+'
+
+test_expect_success 'Clone repo root path with all history' '
+ client_view "//depot/... //client/..." &&
+ test_when_finished cleanup_git &&
+ (
+ cd "$git" &&
+ git init . &&
+ git p4 clone --use-client-spec --destination="$git" //depot@all &&
+ cat >expect <<-\EOF &&
+Remove file 4
+[git-p4: depot-paths = "//depot/": change = 6]
+
+Remove file 3
+[git-p4: depot-paths = "//depot/": change = 5]
+
+Add file 4
+[git-p4: depot-paths = "//depot/": change = 4]
+
+Add file 3
+[git-p4: depot-paths = "//depot/": change = 3]
+
+Add file 2
+[git-p4: depot-paths = "//depot/": change = 2]
+
+Add file 1
+[git-p4: depot-paths = "//depot/": change = 1]
+
+ EOF
+ git log --format=%B >actual &&
+ test_cmp expect actual
+ )
+'
+
+test_expect_success 'Clone repo subdir with all history but keep empty commits' '
+ client_view "//depot/subdir/... //client/subdir/..." &&
+ test_when_finished cleanup_git &&
+ (
+ cd "$git" &&
+ git init . &&
+ git config git-p4.keepEmptyCommits true &&
+ git p4 clone --use-client-spec --destination="$git" //depot@all &&
+ cat >expect <<-\EOF &&
+Remove file 4
+[git-p4: depot-paths = "//depot/": change = 6]
+
+Remove file 3
+[git-p4: depot-paths = "//depot/": change = 5]
+
+Add file 4
+[git-p4: depot-paths = "//depot/": change = 4]
+
+Add file 3
+[git-p4: depot-paths = "//depot/": change = 3]
+
+Add file 2
+[git-p4: depot-paths = "//depot/": change = 2]
+
+Add file 1
+[git-p4: depot-paths = "//depot/": change = 1]
+
+ EOF
+ git log --format=%B >actual &&
+ test_cmp expect actual
+ )
+'
+
+test_expect_success 'Clone repo subdir with all history' '
+ client_view "//depot/subdir/... //client/subdir/..." &&
+ test_when_finished cleanup_git &&
+ (
+ cd "$git" &&
+ git init . &&
+ git p4 clone --use-client-spec --destination="$git" --verbose //depot@all &&
+ cat >expect <<-\EOF &&
+Remove file 3
+[git-p4: depot-paths = "//depot/": change = 5]
+
+Add file 3
+[git-p4: depot-paths = "//depot/": change = 3]
+
+Add file 1
+[git-p4: depot-paths = "//depot/": change = 1]
+
+ EOF
+ git log --format=%B >actual &&
+ test_cmp expect actual
+ )
+'
+
+test_expect_success 'kill p4d' '
+ kill_p4d
+'
+
+test_done
diff --git a/wrapper.c b/wrapper.c
index 6fcaa4dc62..c95e2906b8 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -601,18 +601,6 @@ int access_or_die(const char *path, int mode, unsigned flag)
return ret;
}
-struct passwd *xgetpwuid_self(void)
-{
- struct passwd *pw;
-
- errno = 0;
- pw = getpwuid(getuid());
- if (!pw)
- die(_("unable to look up current user in the passwd file: %s"),
- errno ? strerror(errno) : _("no such user"));
- return pw;
-}
-
char *xgetcwd(void)
{
struct strbuf sb = STRBUF_INIT;