diff options
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/*"); @@ -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) { @@ -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 *); @@ -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:" @@ -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 @@ -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; |