From: Junio C Hamano Date: Thu, 15 Oct 2015 22:43:52 +0000 (-0700) Subject: Merge branch 'ls/p4-lfs' X-Git-Tag: v2.7.0-rc0~96 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/6ff518f593729a39f1314c9c05e3758f5ec19162?hp=b47d807d20374d8dc929ba4c0ca3bd7e8a4ce1f7 Merge branch 'ls/p4-lfs' Teach "git p4" to send large blobs outside the repository by talking to Git LFS. * ls/p4-lfs: git-p4: add Git LFS backend for large file system git-p4: add support for large file systems git-p4: check free space during streaming git-p4: add file streaming progress in verbose mode git-p4: return an empty list if a list config has no values git-p4: add gitConfigInt reader git-p4: add optional type specifier to gitConfig reader --- diff --git a/.gitignore b/.gitignore index 4fd81baf85..1c2f832138 100644 --- a/.gitignore +++ b/.gitignore @@ -155,6 +155,7 @@ /git-status /git-stripspace /git-submodule +/git-submodule--helper /git-svn /git-symbolic-ref /git-tag diff --git a/.mailmap b/.mailmap index ece2951a2b..e5b4126bec 100644 --- a/.mailmap +++ b/.mailmap @@ -186,7 +186,7 @@ Philip Jägenstedt Philipp A. Hartmann Philippe Bruhat Ralf Thielow -Ramsay Allan Jones +Ramsay Jones René Scharfe Robert Fitzsimons Robert Shearman diff --git a/Documentation/RelNotes/2.2.3.txt b/Documentation/RelNotes/2.2.3.txt new file mode 100644 index 0000000000..5bfffa4106 --- /dev/null +++ b/Documentation/RelNotes/2.2.3.txt @@ -0,0 +1,9 @@ +Git v2.2.3 Release Notes +======================== + +Fixes since v2.2.2 +------------------ + + * A handful of codepaths that used to use fixed-sized arrays to hold + pathnames have been corrected to use strbuf and other mechanisms to + allow longer pathnames without fearing overflows. diff --git a/Documentation/RelNotes/2.3.10.txt b/Documentation/RelNotes/2.3.10.txt new file mode 100644 index 0000000000..9d425d814d --- /dev/null +++ b/Documentation/RelNotes/2.3.10.txt @@ -0,0 +1,18 @@ +Git v2.3.10 Release Notes +========================= + +Fixes since v2.3.9 +------------------ + + * xdiff code we use to generate diffs is not prepared to handle + extremely large files. It uses "int" in many places, which can + overflow if we have a very large number of lines or even bytes in + our input files, for example. Cap the input size to soemwhere + around 1GB for now. + + * Some protocols (like git-remote-ext) can execute arbitrary code + found in the URL. The URLs that submodules use may come from + arbitrary sources (e.g., .gitmodules files in a remote + repository), and can hurt those who blindly enable recursive + fetch. Restrict the allowed protocols to well known and safe + ones. diff --git a/Documentation/RelNotes/2.3.9.txt b/Documentation/RelNotes/2.3.9.txt new file mode 100644 index 0000000000..1a2ad3235a --- /dev/null +++ b/Documentation/RelNotes/2.3.9.txt @@ -0,0 +1,9 @@ +Git v2.3.9 Release Notes +======================== + +Fixes since v2.3.8 +------------------ + + * A handful of codepaths that used to use fixed-sized arrays to hold + pathnames have been corrected to use strbuf and other mechanisms to + allow longer pathnames without fearing overflows. diff --git a/Documentation/RelNotes/2.4.10.txt b/Documentation/RelNotes/2.4.10.txt new file mode 100644 index 0000000000..8621199bc6 --- /dev/null +++ b/Documentation/RelNotes/2.4.10.txt @@ -0,0 +1,18 @@ +Git v2.4.10 Release Notes +========================= + +Fixes since v2.4.9 +------------------ + + * xdiff code we use to generate diffs is not prepared to handle + extremely large files. It uses "int" in many places, which can + overflow if we have a very large number of lines or even bytes in + our input files, for example. Cap the input size to soemwhere + around 1GB for now. + + * Some protocols (like git-remote-ext) can execute arbitrary code + found in the URL. The URLs that submodules use may come from + arbitrary sources (e.g., .gitmodules files in a remote + repository), and can hurt those who blindly enable recursive + fetch. Restrict the allowed protocols to well known and safe + ones. diff --git a/Documentation/RelNotes/2.4.9.txt b/Documentation/RelNotes/2.4.9.txt new file mode 100644 index 0000000000..09af9ddbc7 --- /dev/null +++ b/Documentation/RelNotes/2.4.9.txt @@ -0,0 +1,9 @@ +Git v2.4.9 Release Notes +======================== + +Fixes since v2.4.9 +------------------ + + * A handful of codepaths that used to use fixed-sized arrays to hold + pathnames have been corrected to use strbuf and other mechanisms to + allow longer pathnames without fearing overflows. diff --git a/Documentation/RelNotes/2.5.2.txt b/Documentation/RelNotes/2.5.2.txt new file mode 100644 index 0000000000..3f749398bb --- /dev/null +++ b/Documentation/RelNotes/2.5.2.txt @@ -0,0 +1,63 @@ +Git v2.5.2 Release Notes +======================== + +Fixes since v2.5.1 +------------------ + + * "git init empty && git -C empty log" said "bad default revision 'HEAD'", + which was found to be a bit confusing to new users. + + * The "interpret-trailers" helper mistook a multi-paragraph title of + a commit log message with a colon in it as the end of the trailer + block. + + * When re-priming the cache-tree opportunistically while committing + the in-core index as-is, we mistakenly invalidated the in-core + index too aggressively, causing the experimental split-index code + to unnecessarily rewrite the on-disk index file(s). + + * "git archive" did not use zip64 extension when creating an archive + with more than 64k entries, which nobody should need, right ;-)? + + * The code in "multiple-worktree" support that attempted to recover + from an inconsistent state updated an incorrect file. + + * "git rev-list" does not take "--notes" option, but did not complain + when one is given. + + * Because the configuration system does not allow "alias.0foo" and + "pager.0foo" as the configuration key, the user cannot use '0foo' + as a custom command name anyway, but "git 0foo" tried to look these + keys up and emitted useless warnings before saying '0foo is not a + git command'. These warning messages have been squelched. + + * We recently rewrote one of the build scripts in Perl, which made it + necessary to have Perl to build Git. Reduced Perl dependency by + rewriting it again using sed. + + * t1509 test that requires a dedicated VM environment had some + bitrot, which has been corrected. + + * strbuf_read() used to have one extra iteration (and an unnecessary + strbuf_grow() of 8kB), which was eliminated. + + * The codepath to produce error messages had a hard-coded limit to + the size of the message, primarily to avoid memory allocation while + calling die(). + + * When trying to see that an object does not exist, a state errno + leaked from our "first try to open a packfile with O_NOATIME and + then if it fails retry without it" logic on a system that refuses + O_NOATIME. This confused us and caused us to die, saying that the + packfile is unreadable, when we should have just reported that the + object does not exist in that packfile to the caller. + + * An off-by-one error made "git remote" to mishandle a remote with a + single letter nickname. + + * A handful of codepaths that used to use fixed-sized arrays to hold + pathnames have been corrected to use strbuf and other mechanisms to + allow longer pathnames without fearing overflows. + +Also contains typofixes, documentation updates and trivial code +clean-ups. diff --git a/Documentation/RelNotes/2.5.3.txt b/Documentation/RelNotes/2.5.3.txt new file mode 100644 index 0000000000..d1436857cb --- /dev/null +++ b/Documentation/RelNotes/2.5.3.txt @@ -0,0 +1,17 @@ +Git v2.5.3 Release Notes +======================== + +Fixes since v2.5.2 +------------------ + + * The experimental untracked-cache feature were buggy when paths with + a few levels of subdirectories are involved. + + * Recent versions of scripted "git am" has a performance regression + in "git am --skip" codepath, which no longer exists in the + built-in version on the 'master' front. Fix the regression in + the last scripted version that appear in 2.5.x maintenance track + and older. + +Also contains typofixes, documentation updates and trivial code +clean-ups. diff --git a/Documentation/RelNotes/2.5.4.txt b/Documentation/RelNotes/2.5.4.txt new file mode 100644 index 0000000000..a5e8477a4a --- /dev/null +++ b/Documentation/RelNotes/2.5.4.txt @@ -0,0 +1,18 @@ +Git v2.5.4 Release Notes +======================== + +Fixes since v2.5.4 +------------------ + + * xdiff code we use to generate diffs is not prepared to handle + extremely large files. It uses "int" in many places, which can + overflow if we have a very large number of lines or even bytes in + our input files, for example. Cap the input size to soemwhere + around 1GB for now. + + * Some protocols (like git-remote-ext) can execute arbitrary code + found in the URL. The URLs that submodules use may come from + arbitrary sources (e.g., .gitmodules files in a remote + repository), and can hurt those who blindly enable recursive + fetch. Restrict the allowed protocols to well known and safe + ones. diff --git a/Documentation/RelNotes/2.6.0.txt b/Documentation/RelNotes/2.6.0.txt index eb79a1815d..7288aaf716 100644 --- a/Documentation/RelNotes/2.6.0.txt +++ b/Documentation/RelNotes/2.6.0.txt @@ -56,7 +56,7 @@ UI, Workflows & Features * A negative !ref entry in multi-value transfer.hideRefs configuration can be used to say "don't hide this one". - * After "git am" without "-3" stops, running "git am -" pays attention + * After "git am" without "-3" stops, running "git am -3" pays attention to "-3" only for the patch that caused the original invocation to stop. @@ -84,6 +84,12 @@ UI, Workflows & Features * "git config --list" output was hard to parse when values consist of multiple lines. "--name-only" option is added to help this. + * A handful of usability & cosmetic fixes to gitk and l10n updates. + + * A completely empty e-mail address <> is now allowed in the authors + file used by git-svn, to match the way it accepts the output from + authors-prog. + Performance, Internal Implementation, Development Support etc. @@ -269,7 +275,7 @@ notes for details). * We rewrote one of the build scripts in Perl but this reimplements in Bourne shell. - (merge 82aec45 sg/help-group later to maint). + (merge 57cee8a sg/help-group later to maint). * The experimental untracked-cache feature were buggy when paths with a few levels of subdirectories are involved. @@ -327,6 +333,16 @@ notes for details). which was found to be a bit confusing to new users. (merge ce11360 jk/log-missing-default-HEAD later to maint). + * Recent versions of scripted "git am" has a performance regression in + "git am --skip" codepath, which no longer exists in the built-in + version on the 'master' front. Fix the regression in the last + scripted version that appear in 2.5.x maintenance track and older. + (merge b9d6689 js/maint-am-skip-performance-regression later to maint). + + * The branch descriptions that are set with "git branch --edit-description" + option were used in many places but they weren't clearly documented. + (merge 561d2b7 po/doc-branch-desc later to maint). + * Code cleanups and documentation updates. (merge 1c601af es/doc-clean-outdated-tools later to maint). (merge 3581304 kn/tag-doc-fix later to maint). @@ -349,3 +365,6 @@ notes for details). (merge b8c1d27 ah/pack-objects-usage-strings later to maint). (merge 486e1e1 br/svn-doc-include-paths-config later to maint). (merge 1733ed3 ee/clean-test-fixes later to maint). + (merge 5fcadc3 gb/apply-comment-typofix later to maint). + (merge b894d3e mp/t7060-diff-index-test later to maint). + (merge d238710 as/config-doc-markup-fix later to maint). diff --git a/Documentation/RelNotes/2.6.1.txt b/Documentation/RelNotes/2.6.1.txt new file mode 100644 index 0000000000..1e51363e3c --- /dev/null +++ b/Documentation/RelNotes/2.6.1.txt @@ -0,0 +1,18 @@ +Git v2.6.1 Release Notes +======================== + +Fixes since v2.6 +---------------- + + * xdiff code we use to generate diffs is not prepared to handle + extremely large files. It uses "int" in many places, which can + overflow if we have a very large number of lines or even bytes in + our input files, for example. Cap the input size to soemwhere + around 1GB for now. + + * Some protocols (like git-remote-ext) can execute arbitrary code + found in the URL. The URLs that submodules use may come from + arbitrary sources (e.g., .gitmodules files in a remote + repository), and can hurt those who blindly enable recursive + fetch. Restrict the allowed protocols to well known and safe + ones. diff --git a/Documentation/RelNotes/2.7.0.txt b/Documentation/RelNotes/2.7.0.txt new file mode 100644 index 0000000000..11b61222d0 --- /dev/null +++ b/Documentation/RelNotes/2.7.0.txt @@ -0,0 +1,133 @@ +Git 2.7 Release Notes +===================== + +Updates since v2.6 +------------------ + +UI, Workflows & Features + + * "git remote" learned "get-url" subcommand to show the URL for a + given remote name used for fetching and pushing. + + * There was no way to defeat a configured rebase.autostash variable + from the command line, as "git rebase --no-autostash" was missing. + + * "git log --date=local" used to only show the normal (default) + format in the local timezone. The command learned to take 'local' + as an instruction to use the local timezone with other formats, + + * The refs used during a "git bisect" session is now per-worktree so + that independent bisect sessions can be done in different worktrees + created with "git worktree add". + + * 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 + of paths affected with feel for the extent of damage via diffstat. + + * "quiltimport" allows to specify the series file by honoring the + $QUILT_SERIES environment and also --series command line option. + + * The use of 'good/bad' in "git bisect" made it confusing to use when + hunting for a state change that is not a regression (e.g. bugfix). + The command learned 'old/new' and then allows the end user to + say e.g. "bisect start --term-old=fast --term=new=slow" to find a + performance regression. + + * "git interpret-trailers" can now run outside of a Git repository. + + * "git p4" learned to reencode the pathname it uses to communicate + with the p4 depot with a new option. + + * Give progress meter to "git filter-branch". + + * Allow a later "!/abc/def" to override an earlier "/abc" that + appears in the same .gitignore file to make it easier to express + "everything in /abc directory is ignored, except for ...". + + +Performance, Internal Implementation, Development Support etc. + + * The infrastructure to rewrite "git submodule" in C is being built + incrementally. Let's polish these early parts well enough and make + them graduate to 'next' and 'master', so that the more involved + follow-up can start cooking on a solid ground. + + * Some features from "git tag -l" and "git branch -l" have been made + available to "git for-each-ref" so that eventually the unified + implementation can be shared across all three. + + * 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. + (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). + + +Also contains various documentation updates and code clean-ups. + + +Fixes since v2.6 +---------------- + +Unless otherwise noted, all the fixes since v2.6 in the maintenance +track are contained in this release (see the maintenance releases' +notes for details). + + * Very small number of options take a parameter that is optional + (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). + + * 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). + + * Code clean-up and minor fixes. + (merge 15ed07d jc/rerere later to maint). + (merge b744767 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). diff --git a/Documentation/blame-options.txt b/Documentation/blame-options.txt index a09969ba08..760eab7428 100644 --- a/Documentation/blame-options.txt +++ b/Documentation/blame-options.txt @@ -63,11 +63,10 @@ include::line-range-format.txt[] `-` to make the command read from the standard input). --date :: - The value is one of the following alternatives: - {relative,local,default,iso,rfc,short}. If --date is not + Specifies the format used to output dates. If --date is not provided, the value of the blame.date config variable is used. If the blame.date config variable is also not set, the - iso format is used. For more information, See the discussion + iso format is used. For supported values, see the discussion of the --date option at linkgit:git-log[1]. -M||:: diff --git a/Documentation/config.txt b/Documentation/config.txt index 0c351b9bcf..391a0c3c85 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -866,9 +866,9 @@ branch..rebase:: "git pull" is run. See "pull.rebase" for doing this in a non branch-specific manner. + - When preserve, also pass `--preserve-merges` along to 'git rebase' - so that locally committed merge commits will not be flattened - by running 'git pull'. +When preserve, also pass `--preserve-merges` along to 'git rebase' +so that locally committed merge commits will not be flattened +by running 'git pull'. + *NOTE*: this is a possibly dangerous operation; do *not* use it unless you understand the implications (see linkgit:git-rebase[1] @@ -1829,9 +1829,7 @@ log.abbrevCommit:: log.date:: Set the default date-time mode for the 'log' command. Setting a value for log.date is similar to using 'git log''s - `--date` option. Possible values are `relative`, `local`, - `default`, `iso`, `rfc`, and `short`; see linkgit:git-log[1] - for details. + `--date` option. See linkgit:git-log[1] for details. log.decorate:: Print out the ref names of any commits that are shown by the log @@ -1840,6 +1838,12 @@ log.decorate:: specified, the full ref name (including prefix) will be printed. This is the same as the log commands '--decorate' option. +log.follow:: + If `true`, `git log` will act as if the `--follow` option was used when + a single is given. This has the same limitations as `--follow`, + i.e. it cannot be used to follow multiple files and does not work well + on non-linear history. + log.showRoot:: If true, the initial commit will be shown as a big creation event. This is equivalent to a diff against an empty tree. @@ -2138,9 +2142,9 @@ pull.rebase:: pull" is run. See "branch..rebase" for setting this on a per-branch basis. + - When preserve, also pass `--preserve-merges` along to 'git rebase' - so that locally committed merge commits will not be flattened - by running 'git pull'. +When preserve, also pass `--preserve-merges` along to 'git rebase' +so that locally committed merge commits will not be flattened +by running 'git pull'. + *NOTE*: this is a possibly dangerous operation; do *not* use it unless you understand the implications (see linkgit:git-rebase[1] @@ -2587,6 +2591,16 @@ status.submoduleSummary:: submodule summary' command, which shows a similar output but does not honor these settings. +stash.showPatch:: + If this is set to true, the `git stash show` command without an + option will show the stash in patch form. Defaults to false. + See description of 'show' command in linkgit:git-stash[1]. + +stash.showStat:: + If this is set to true, the `git stash show` command without an + option will show diffstat of the stash. Defaults to true. + See description of 'show' command in linkgit:git-stash[1]. + submodule..path:: submodule..url:: The path within this project and URL for a submodule. These diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt index dbea6e7ae9..452c1feb23 100644 --- a/Documentation/git-am.txt +++ b/Documentation/git-am.txt @@ -141,7 +141,9 @@ default. You can use `--no-utf8` to override this. -S[]:: --gpg-sign[=]:: - GPG-sign commits. + GPG-sign commits. The `keyid` argument is optional and + defaults to the committer identity; if specified, it must be + stuck to the option without a space. --continue:: -r:: diff --git a/Documentation/git-bisect-lk2009.txt b/Documentation/git-bisect-lk2009.txt index 0f0c6ff082..c06efbd42a 100644 --- a/Documentation/git-bisect-lk2009.txt +++ b/Documentation/git-bisect-lk2009.txt @@ -1321,7 +1321,7 @@ So git bisect is unconditional goodness - and feel free to quote that _____________ Acknowledgments ----------------- +--------------- Many thanks to Junio Hamano for his help in reviewing this paper, for reviewing the patches I sent to the Git mailing list, for discussing diff --git a/Documentation/git-bisect.txt b/Documentation/git-bisect.txt index e97f2de21b..2044fe6820 100644 --- a/Documentation/git-bisect.txt +++ b/Documentation/git-bisect.txt @@ -16,9 +16,11 @@ DESCRIPTION The command takes various subcommands, and different options depending on the subcommand: - git bisect start [--no-checkout] [ [...]] [--] [...] - git bisect bad [] - git bisect good [...] + git bisect start [--term-{old,good}= --term-{new,bad}=] + [--no-checkout] [ [...]] [--] [...] + git bisect (bad|new) [] + git bisect (good|old) [...] + git bisect terms [--term-good | --term-bad] git bisect skip [(|)...] git bisect reset [] git bisect visualize @@ -36,6 +38,13 @@ whether the selected commit is "good" or "bad". It continues narrowing down the range until it finds the exact commit that introduced the change. +In fact, `git bisect` can be used to find the commit that changed +*any* property of your project; e.g., the commit that fixed a bug, or +the commit that caused a benchmark's performance to improve. To +support this more general usage, the terms "old" and "new" can be used +in place of "good" and "bad", or you can choose your own terms. See +section "Alternate terms" below for more information. + Basic bisect commands: start, bad, good ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -111,6 +120,79 @@ bad revision, while `git bisect reset HEAD` will leave you on the current bisection commit and avoid switching commits at all. +Alternate terms +~~~~~~~~~~~~~~~ + +Sometimes you are not looking for the commit that introduced a +breakage, but rather for a commit that caused a change between some +other "old" state and "new" state. For example, you might be looking +for the commit that introduced a particular fix. Or you might be +looking for the first commit in which the source-code filenames were +finally all converted to your company's naming standard. Or whatever. + +In such cases it can be very confusing to use the terms "good" and +"bad" to refer to "the state before the change" and "the state after +the change". So instead, you can use the terms "old" and "new", +respectively, in place of "good" and "bad". (But note that you cannot +mix "good" and "bad" with "old" and "new" in a single session.) + +In this more general usage, you provide `git bisect` with a "new" +commit has some property and an "old" commit that doesn't have that +property. Each time `git bisect` checks out a commit, you test if that +commit has the property. If it does, mark the commit as "new"; +otherwise, mark it as "old". When the bisection is done, `git bisect` +will report which commit introduced the property. + +To use "old" and "new" instead of "good" and bad, you must run `git +bisect start` without commits as argument and then run the following +commands to add the commits: + +------------------------------------------------ +git bisect old [] +------------------------------------------------ + +to indicate that a commit was before the sought change, or + +------------------------------------------------ +git bisect new [...] +------------------------------------------------ + +to indicate that it was after. + +To get a reminder of the currently used terms, use + +------------------------------------------------ +git bisect terms +------------------------------------------------ + +You can get just the old (respectively new) term with `git bisect term +--term-old` or `git bisect term --term-good`. + +If you would like to use your own terms instead of "bad"/"good" or +"new"/"old", you can choose any names you like (except existing bisect +subcommands like `reset`, `start`, ...) by starting the +bisection using + +------------------------------------------------ +git bisect start --term-old --term-new +------------------------------------------------ + +For example, if you are looking for a commit that introduced a +performance regression, you might use + +------------------------------------------------ +git bisect start --term-old fast --term-new slow +------------------------------------------------ + +Or if you are looking for the commit that fixed a bug, you might use + +------------------------------------------------ +git bisect start --term-new fixed --term-old broken +------------------------------------------------ + +Then, use `git bisect ` and `git bisect ` instead +of `git bisect good` and `git bisect bad` to mark commits. + Bisect visualize ~~~~~~~~~~~~~~~~ @@ -387,6 +469,21 @@ In this case, when 'git bisect run' finishes, bisect/bad will refer to a commit has at least one parent whose reachable graph is fully traversable in the sense required by 'git pack objects'. +* Look for a fix instead of a regression in the code ++ +------------ +$ git bisect start +$ git bisect new HEAD # current commit is marked as new +$ git bisect old HEAD~10 # the tenth commit from now is marked as old +------------ ++ +or: +------------ +$ git bisect start --term-old broken --term-new fixed +$ git bisect fixed +$ git bisect broken HEAD~10 +------------ + Getting help ~~~~~~~~~~~~ diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt index a67138a022..4a7037f1c8 100644 --- a/Documentation/git-branch.txt +++ b/Documentation/git-branch.txt @@ -11,7 +11,8 @@ SYNOPSIS 'git branch' [--color[=] | --no-color] [-r | -a] [--list] [-v [--abbrev= | --no-abbrev]] [--column[=] | --no-column] - [(--merged | --no-merged | --contains) []] [...] + [(--merged | --no-merged | --contains) []] [--sort=] + [--points-at ] [...] 'git branch' [--set-upstream | --track | --no-track] [-l] [-f] [] 'git branch' (--set-upstream-to= | -u ) [] 'git branch' --unset-upstream [] @@ -197,7 +198,9 @@ start-point is either a local or remote-tracking branch. --edit-description:: Open an editor and edit the text to explain what the branch is - for, to be used by various other commands (e.g. `request-pull`). + for, to be used by various other commands (e.g. `format-patch`, + `request-pull`, and `merge` (if enabled)). Multi-line explanations + may be used. --contains []:: Only list branches which contain the specified commit (HEAD @@ -229,6 +232,19 @@ start-point is either a local or remote-tracking branch. The new name for an existing branch. The same restrictions as for apply. +--sort=:: + Sort based on the key given. Prefix `-` to sort in descending + order of the value. You may use the --sort= option + multiple times, in which case the last key becomes the primary + key. The keys supported are the same as those in `git + for-each-ref`. Sort order defaults to sorting based on the + full refname (including `refs/...` prefix). This lists + detached HEAD (if present) first, then local branches and + finally remote-tracking branches. + + +--points-at :: + Only list branches of the given object. Examples -------- diff --git a/Documentation/git-cherry-pick.txt b/Documentation/git-cherry-pick.txt index 1147c71da6..77da29a474 100644 --- a/Documentation/git-cherry-pick.txt +++ b/Documentation/git-cherry-pick.txt @@ -9,7 +9,7 @@ SYNOPSIS -------- [verse] 'git cherry-pick' [--edit] [-n] [-m parent-number] [-s] [-x] [--ff] - [-S[]] ... + [-S[]] ... 'git cherry-pick' --continue 'git cherry-pick' --quit 'git cherry-pick' --abort @@ -101,9 +101,11 @@ effect to your index in a row. --signoff:: Add Signed-off-by line at the end of the commit message. --S[]:: ---gpg-sign[=]:: - GPG-sign commits. +-S[]:: +--gpg-sign[=]:: + GPG-sign commits. The `keyid` argument is optional and + defaults to the committer identity; if specified, it must be + stuck to the option without a space. --ff:: If the current HEAD is the same as the parent of the diff --git a/Documentation/git-commit-tree.txt b/Documentation/git-commit-tree.txt index f5f2a8d326..a0b5457304 100644 --- a/Documentation/git-commit-tree.txt +++ b/Documentation/git-commit-tree.txt @@ -56,7 +56,9 @@ OPTIONS -S[]:: --gpg-sign[=]:: - GPG-sign commit. + GPG-sign commits. The `keyid` argument is optional and + defaults to the committer identity; if specified, it must be + stuck to the option without a space. --no-gpg-sign:: Countermand `commit.gpgSign` configuration variable that is diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt index 904dafa0f7..7f34a5b331 100644 --- a/Documentation/git-commit.txt +++ b/Documentation/git-commit.txt @@ -13,7 +13,7 @@ SYNOPSIS [-F | -m ] [--reset-author] [--allow-empty] [--allow-empty-message] [--no-verify] [-e] [--author=] [--date=] [--cleanup=] [--[no-]status] - [-i | -o] [-S[]] [--] [...] + [-i | -o] [-S[]] [--] [...] DESCRIPTION ----------- @@ -314,7 +314,9 @@ changes to tracked files. -S[]:: --gpg-sign[=]:: - GPG-sign commit. + GPG-sign commits. The `keyid` argument is optional and + defaults to the committer identity; if specified, it must be + stuck to the option without a space. --no-gpg-sign:: Countermand `commit.gpgSign` configuration variable that is diff --git a/Documentation/git-for-each-ref.txt b/Documentation/git-for-each-ref.txt index 7f8d9a5b5f..c6f073cea4 100644 --- a/Documentation/git-for-each-ref.txt +++ b/Documentation/git-for-each-ref.txt @@ -10,6 +10,8 @@ SYNOPSIS [verse] 'git for-each-ref' [--count=] [--shell|--perl|--python|--tcl] [(--sort=)...] [--format=] [...] + [--points-at ] [(--merged | --no-merged) []] + [--contains []] DESCRIPTION ----------- @@ -62,6 +64,20 @@ OPTIONS the specified host language. This is meant to produce a scriptlet that can directly be `eval`ed. +--points-at :: + Only list refs which points at the given object. + +--merged []:: + Only list refs whose tips are reachable from the + specified commit (HEAD if not specified). + +--no-merged []:: + Only list refs whose tips are not reachable from the + specified commit (HEAD if not specified). + +--contains []:: + Only list tags which contain the specified commit (HEAD if not + specified). FIELD NAMES ----------- @@ -111,6 +127,17 @@ color:: Change output color. Followed by `:`, where names are described in `color.branch.*`. +align:: + Left-, middle-, or right-align the content between + %(align:...) and %(end). The "align:" is followed by `` + and `` in any order separated by a comma, where the + `` is either left, right or middle, default being + left and `` is the total length of the content with + alignment. If the contents length is more than the width then + no alignment is performed. If used with '--quote' everything + in between %(align:...) and %(end) is quoted, but if nested + then only the topmost level performs quoting. + In addition to the above, for commit and tag objects, the header field names (`tree`, `parent`, `object`, `type`, and `tag`) can be used to specify the value in the header field. @@ -123,20 +150,23 @@ The complete message in a commit and tag object is `contents`. Its first line is `contents:subject`, where subject is the concatenation of all lines of the commit message up to the first blank line. The next line is 'contents:body', where body is all of the lines after the first -blank line. Finally, the optional GPG signature is `contents:signature`. +blank line. The optional GPG signature is `contents:signature`. The +first `N` lines of the message is obtained using `contents:lines=N`. For sorting purposes, fields with numeric values sort in numeric order (`objectsize`, `authordate`, `committerdate`, `taggerdate`). All other fields are used to sort in their byte-value order. +There is also an option to sort by versions, this can be done by using +the fieldname `version:refname` or its alias `v:refname`. + In any case, a field name that refers to a field inapplicable to the object referred by the ref does not cause an error. It returns an empty string instead. As a special case for the date-type fields, you may specify a format for -the date by adding one of `:default`, `:relative`, `:short`, `:local`, -`:iso8601`, `:rfc2822` or `:raw` to the end of the fieldname; e.g. -`%(taggerdate:relative)`. +the date by adding `:` followed by date format name (see the +values the `--date` option to linkgit::git-rev-list[1] takes). EXAMPLES diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt index 0dac4e9b86..4035649117 100644 --- a/Documentation/git-format-patch.txt +++ b/Documentation/git-format-patch.txt @@ -213,7 +213,7 @@ feeding the result to `git send-email`. --[no-]cover-letter:: In addition to the patches, generate a cover letter file - containing the shortlog and the overall diffstat. You can + containing the branch description, shortlog and the overall diffstat. You can fill in a description in the file before sending it out. --notes[=]:: diff --git a/Documentation/git-grep.txt b/Documentation/git-grep.txt index 31811f16bd..4a44d6da13 100644 --- a/Documentation/git-grep.txt +++ b/Documentation/git-grep.txt @@ -160,12 +160,15 @@ OPTIONS For better compatibility with 'git diff', `--name-only` is a synonym for `--files-with-matches`. --O []:: ---open-files-in-pager []:: +-O[]:: +--open-files-in-pager[=]:: Open the matching files in the pager (not the output of 'grep'). If the pager happens to be "less" or "vi", and the user specified only one pattern, the first file is positioned at - the first match automatically. + the first match automatically. The `pager` argument is + optional; if specified, it must be stuck to the option + without a space. If `pager` is unspecified, the default pager + will be used (see `core.pager` in linkgit:git-config[1]). -z:: --null:: diff --git a/Documentation/git-interpret-trailers.txt b/Documentation/git-interpret-trailers.txt index d6d9231b50..0ecd497c4d 100644 --- a/Documentation/git-interpret-trailers.txt +++ b/Documentation/git-interpret-trailers.txt @@ -67,7 +67,7 @@ OPTIONS --trim-empty:: If the part of any trailer contains only whitespace, the whole trailer will be removed from the resulting message. - This apply to existing trailers as well as new trailers. + This applies to existing trailers as well as new trailers. --trailer [(=|:)]:: Specify a (, ) pair that should be applied as a diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt index 97b9993ee8..03f958029a 100644 --- a/Documentation/git-log.txt +++ b/Documentation/git-log.txt @@ -185,10 +185,10 @@ log.date:: dates like `Sat May 8 19:35:34 2010 -0500`. log.follow:: - If a single is given to git log, it will act as - if the `--follow` option was also used. This has the same - limitations as `--follow`, i.e. it cannot be used to follow - multiple files and does not work well on non-linear history. + If `true`, `git log` will act as if the `--follow` option was used when + a single is given. This has the same limitations as `--follow`, + i.e. it cannot be used to follow multiple files and does not work well + on non-linear history. log.showRoot:: If `false`, `git log` and related commands will not treat the diff --git a/Documentation/git-ls-remote.txt b/Documentation/git-ls-remote.txt index 2e22915eb8..d510c05e11 100644 --- a/Documentation/git-ls-remote.txt +++ b/Documentation/git-ls-remote.txt @@ -9,7 +9,7 @@ git-ls-remote - List references in a remote repository SYNOPSIS -------- [verse] -'git ls-remote' [--heads] [--tags] [-u | --upload-pack ] +'git ls-remote' [--heads] [--tags] [--upload-pack=] [--exit-code] [...] DESCRIPTION @@ -29,7 +29,6 @@ OPTIONS both, references stored in refs/heads and refs/tags are displayed. --u :: --upload-pack=:: Specify the full path of 'git-upload-pack' on the remote host. This allows listing references from repositories accessed via diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt index 273a1009be..07f7295ec8 100644 --- a/Documentation/git-merge.txt +++ b/Documentation/git-merge.txt @@ -10,7 +10,7 @@ SYNOPSIS -------- [verse] 'git merge' [-n] [--stat] [--no-commit] [--squash] [--[no-]edit] - [-s ] [-X ] [-S[]] + [-s ] [-X ] [-S[]] [--[no-]rerere-autoupdate] [-m ] [...] 'git merge' HEAD ... 'git merge' --abort @@ -67,7 +67,9 @@ include::merge-options.txt[] -S[]:: --gpg-sign[=]:: - GPG-sign the resulting merge commit. + GPG-sign the resulting merge commit. The `keyid` argument is + optional and defaults to the committer identity; if specified, + it must be stuck to the option without a space. -m :: Set the commit message to be used for the merge commit (in @@ -78,7 +80,7 @@ will be appended to the specified message. + The 'git fmt-merge-msg' command can be used to give a good default for automated 'git merge' -invocations. +invocations. The automated message can include the branch description. --[no-]rerere-autoupdate:: Allow the rerere mechanism to update the index with the diff --git a/Documentation/git-notes.txt b/Documentation/git-notes.txt index a9a916f360..8de349968a 100644 --- a/Documentation/git-notes.txt +++ b/Documentation/git-notes.txt @@ -162,7 +162,9 @@ OPTIONS --ref :: Manipulate the notes tree in . This overrides 'GIT_NOTES_REF' and the "core.notesRef" configuration. The ref - is taken to be in `refs/notes/` if it is not qualified. + specifies the full refname when it begins with `refs/notes/`; when it + begins with `notes/`, `refs/` and otherwise `refs/notes/` is prefixed + to form a full name of the ref. --ignore-missing:: Do not consider it an error to request removing notes from an diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt index f34d16d71c..c3ff7d0d9b 100644 --- a/Documentation/git-p4.txt +++ b/Documentation/git-p4.txt @@ -510,6 +510,13 @@ git-p4.useClientSpec:: option '--use-client-spec'. See the "CLIENT SPEC" section above. This variable is a boolean, not the name of a p4 client. +git-p4.pathEncoding:: + Perforce keeps the encoding of a path as given by the originating OS. + Git expects paths encoded as UTF-8. Use this config to tell git-p4 + what encoding Perforce had used for the paths. This encoding is used + to transcode the paths to UTF-8. As an example, Perforce on Windows + often uses “cp1252” to encode path names. + git-p4.largeFileSystem:: Specify the system that is used for large (binary) files. Please note that large file systems do not support the 'git p4 submit' command. diff --git a/Documentation/git-quiltimport.txt b/Documentation/git-quiltimport.txt index d64388cb8e..ff633b0db7 100644 --- a/Documentation/git-quiltimport.txt +++ b/Documentation/git-quiltimport.txt @@ -10,6 +10,7 @@ SYNOPSIS -------- [verse] 'git quiltimport' [--dry-run | -n] [--author ] [--patches ] + [--series ] DESCRIPTION @@ -42,13 +43,19 @@ OPTIONS information can be found in the patch description. --patches :: - The directory to find the quilt patches and the - quilt series file. + The directory to find the quilt patches. + The default for the patch directory is patches or the value of the $QUILT_PATCHES environment variable. +--series :: + The quilt series file. ++ +The default for the series file is /series +or the value of the $QUILT_SERIES environment +variable. + GIT --- Part of the linkgit:git[1] suite diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt index ca039546a4..6cca8bb51d 100644 --- a/Documentation/git-rebase.txt +++ b/Documentation/git-rebase.txt @@ -294,7 +294,9 @@ which makes little sense. -S[]:: --gpg-sign[=]:: - GPG-sign commits. + GPG-sign commits. The `keyid` argument is optional and + defaults to the committer identity; if specified, it must be + stuck to the option without a space. -q:: --quiet:: @@ -432,7 +434,8 @@ If the '--autosquash' option is enabled by default using the configuration variable `rebase.autoSquash`, this option can be used to override and disable this setting. ---[no-]autostash:: +--autostash:: +--no-autostash:: Automatically create a temporary stash before the operation begins, and apply it after the operation ends. This means that you can run rebase on a dirty worktree. However, use diff --git a/Documentation/git-remote.txt b/Documentation/git-remote.txt index 4c6d6de7b7..3c9bf45829 100644 --- a/Documentation/git-remote.txt +++ b/Documentation/git-remote.txt @@ -15,6 +15,7 @@ SYNOPSIS 'git remote remove' 'git remote set-head' (-a | --auto | -d | --delete | ) 'git remote set-branches' [--add] ... +'git remote get-url' [--push] [--all] 'git remote set-url' [--push] [] 'git remote set-url --add' [--push] 'git remote set-url --delete' [--push] @@ -131,6 +132,15 @@ The named branches will be interpreted as if specified with the With `--add`, instead of replacing the list of currently tracked branches, adds to that list. +'get-url':: + +Retrieves the URLs for a remote. Configurations for `insteadOf` and +`pushInsteadOf` are expanded here. By default, only the first URL is listed. ++ +With '--push', push URLs are queried rather than fetch URLs. ++ +With '--all', all URLs for the remote will be listed. + 'set-url':: Changes URLs for the remote. Sets first URL for remote that matches diff --git a/Documentation/git-request-pull.txt b/Documentation/git-request-pull.txt index 283577b0b6..c32cb0bea1 100644 --- a/Documentation/git-request-pull.txt +++ b/Documentation/git-request-pull.txt @@ -14,7 +14,8 @@ DESCRIPTION ----------- Generate a request asking your upstream project to pull changes into -their tree. The request, printed to the standard output, summarizes +their tree. The request, printed to the standard output, +begins with the branch description, summarizes the changes and indicates from where they can be pulled. The upstream project is expected to have the commit named by diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt index 7b49c85347..ef22f1775b 100644 --- a/Documentation/git-rev-list.txt +++ b/Documentation/git-rev-list.txt @@ -45,7 +45,7 @@ SYNOPSIS [ --regexp-ignore-case | -i ] [ --extended-regexp | -E ] [ --fixed-strings | -F ] - [ --date=(local|relative|default|iso|iso-strict|rfc|short) ] + [ --date=] [ [ --objects | --objects-edge | --objects-edge-aggressive ] [ --unpacked ] ] [ --pretty | --header ] diff --git a/Documentation/git-revert.txt b/Documentation/git-revert.txt index cceb5f2f7f..b15139ffdc 100644 --- a/Documentation/git-revert.txt +++ b/Documentation/git-revert.txt @@ -8,7 +8,7 @@ git-revert - Revert some existing commits SYNOPSIS -------- [verse] -'git revert' [--[no-]edit] [-n] [-m parent-number] [-s] [-S[]] ... +'git revert' [--[no-]edit] [-n] [-m parent-number] [-s] [-S[]] ... 'git revert' --continue 'git revert' --quit 'git revert' --abort @@ -80,9 +80,11 @@ more details. This is useful when reverting more than one commits' effect to your index in a row. --S[]:: ---gpg-sign[=]:: - GPG-sign commits. +-S[]:: +--gpg-sign[=]:: + GPG-sign commits. The `keyid` argument is optional and + defaults to the committer identity; if specified, it must be + stuck to the option without a space. -s:: --signoff:: diff --git a/Documentation/git-stash.txt b/Documentation/git-stash.txt index 375213fe46..92df596e5f 100644 --- a/Documentation/git-stash.txt +++ b/Documentation/git-stash.txt @@ -95,6 +95,8 @@ show []:: shows the latest one. By default, the command shows the diffstat, but it will accept any format known to 'git diff' (e.g., `git stash show -p stash@{1}` to view the second most recent stash in patch form). + You can use stash.showStat and/or stash.showPatch config variables + to change the default behavior. pop [--index] [-q|--quiet] []:: diff --git a/Documentation/git-status.txt b/Documentation/git-status.txt index 335f312335..e1e8f57cdd 100644 --- a/Documentation/git-status.txt +++ b/Documentation/git-status.txt @@ -53,8 +53,9 @@ OPTIONS --untracked-files[=]:: Show untracked files. + -The mode parameter is optional (defaults to 'all'), and is used to -specify the handling of untracked files. +The mode parameter is used to specify the handling of untracked files. +It is optional: it defaults to 'all', and if specified, it must be +stuck to the option (e.g. `-uno`, but not `-u no`). + The possible options are: + diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt index 84f6496bf2..7220e5eca1 100644 --- a/Documentation/git-tag.txt +++ b/Documentation/git-tag.txt @@ -9,11 +9,12 @@ git-tag - Create, list, delete or verify a tag object signed with GPG SYNOPSIS -------- [verse] -'git tag' [-a | -s | -u ] [-f] [-m | -F ] +'git tag' [-a | -s | -u ] [-f] [-m | -F ] [ | ] 'git tag' -d ... 'git tag' [-n[]] -l [--contains ] [--points-at ] - [--column[=] | --no-column] [--create-reflog] [...] + [--column[=] | --no-column] [--create-reflog] [--sort=] + [--format=] [--[no-]merged []] [...] 'git tag' -v ... DESCRIPTION @@ -24,19 +25,19 @@ to delete, list or verify tags. Unless `-f` is given, the named tag must not yet exist. -If one of `-a`, `-s`, or `-u ` is passed, the command +If one of `-a`, `-s`, or `-u ` is passed, the command creates a 'tag' object, and requires a tag message. Unless `-m ` or `-F ` is given, an editor is started for the user to type in the tag message. -If `-m ` or `-F ` is given and `-a`, `-s`, and `-u ` +If `-m ` or `-F ` is given and `-a`, `-s`, and `-u ` are absent, `-a` is implied. Otherwise just a tag reference for the SHA-1 object name of the commit object is created (i.e. a lightweight tag). A GnuPG signed tag object will be created when `-s` or `-u -` is used. When `-u ` is not used, the +` is used. When `-u ` is not used, the committer identity for the current user is used to find the GnuPG key for signing. The configuration variable `gpg.program` is used to specify custom GnuPG binary. @@ -63,8 +64,8 @@ OPTIONS --sign:: Make a GPG-signed tag, using the default e-mail address's key. --u :: ---local-user=:: +-u :: +--local-user=:: Make a GPG-signed tag, using the given key. -f:: @@ -94,14 +95,16 @@ OPTIONS using fnmatch(3)). Multiple patterns may be given; if any of them matches, the tag is shown. ---sort=:: - Sort in a specific order. Supported type is "refname" - (lexicographic order), "version:refname" or "v:refname" (tag +--sort=:: + Sort based on the key given. Prefix `-` to sort in + descending order of the value. You may use the --sort= option + multiple times, in which case the last key becomes the primary + key. Also supports "version:refname" or "v:refname" (tag names are treated as versions). The "version:refname" sort order can also be affected by the - "versionsort.prereleaseSuffix" configuration variable. Prepend - "-" to reverse sort order. When this option is not given, the - sort order defaults to the value configured for the 'tag.sort' + "versionsort.prereleaseSuffix" configuration variable. + The keys supported are the same as those in `git for-each-ref`. + Sort order defaults to the value configured for the 'tag.sort' variable if it exists, or lexicographic order otherwise. See linkgit:git-config[1]. @@ -125,14 +128,14 @@ This option is only applicable when listing tags without annotation lines. Use the given tag message (instead of prompting). If multiple `-m` options are given, their values are concatenated as separate paragraphs. - Implies `-a` if none of `-a`, `-s`, or `-u ` + Implies `-a` if none of `-a`, `-s`, or `-u ` is given. -F :: --file=:: Take the tag message from the given file. Use '-' to read the message from the standard input. - Implies `-a` if none of `-a`, `-s`, or `-u ` + Implies `-a` if none of `-a`, `-s`, or `-u ` is given. --cleanup=:: @@ -156,6 +159,16 @@ This option is only applicable when listing tags without annotation lines. The object that the new tag will refer to, usually a commit. Defaults to HEAD. +:: + A string that interpolates `%(fieldname)` from the object + pointed at by a ref being shown. The format is the same as + that of linkgit:git-for-each-ref[1]. When unspecified, + defaults to `%(refname:short)`. + +--[no-]merged []:: + Only list tags whose tips are reachable, or not reachable + if '--no-merged' is used, from the specified commit ('HEAD' + if not specified). CONFIGURATION ------------- @@ -166,7 +179,7 @@ it in the repository configuration as follows: ------------------------------------- [user] - signingKey = + signingKey = ------------------------------------- diff --git a/Documentation/git.txt b/Documentation/git.txt index 4e5d55be6a..1a42631117 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -43,15 +43,26 @@ unreleased) version of Git, that is available from the 'master' branch of the `git.git` repository. Documentation for older releases are available here: -* link:v2.5.1/git.html[documentation for release 2.5.1] +* link:v2.6.1/git.html[documentation for release 2.6.1] * release notes for + link:RelNotes/2.6.1.txt[2.6.1], + link:RelNotes/2.6.0.txt[2.6]. + +* link:v2.5.4/git.html[documentation for release 2.5.4] + +* release notes for + link:RelNotes/2.5.4.txt[2.5.4], + link:RelNotes/2.5.3.txt[2.5.3], + link:RelNotes/2.5.2.txt[2.5.2], link:RelNotes/2.5.1.txt[2.5.1], link:RelNotes/2.5.0.txt[2.5]. -* link:v2.4.8/git.html[documentation for release 2.4.8] +* link:v2.4.10/git.html[documentation for release 2.4.10] * release notes for + link:RelNotes/2.4.10.txt[2.4.10], + link:RelNotes/2.4.9.txt[2.4.9], link:RelNotes/2.4.8.txt[2.4.8], link:RelNotes/2.4.7.txt[2.4.7], link:RelNotes/2.4.6.txt[2.4.6], @@ -62,9 +73,11 @@ Documentation for older releases are available here: link:RelNotes/2.4.1.txt[2.4.1], link:RelNotes/2.4.0.txt[2.4]. -* link:v2.3.8/git.html[documentation for release 2.3.8] +* link:v2.3.10/git.html[documentation for release 2.3.10] * release notes for + link:RelNotes/2.3.10.txt[2.3.10], + link:RelNotes/2.3.9.txt[2.3.9], link:RelNotes/2.3.8.txt[2.3.8], link:RelNotes/2.3.7.txt[2.3.7], link:RelNotes/2.3.6.txt[2.3.6], @@ -75,9 +88,10 @@ Documentation for older releases are available here: link:RelNotes/2.3.1.txt[2.3.1], link:RelNotes/2.3.0.txt[2.3]. -* link:v2.2.2/git.html[documentation for release 2.2.2] +* link:v2.2.3/git.html[documentation for release 2.2.3] * release notes for + link:RelNotes/2.2.3.txt[2.2.3], link:RelNotes/2.2.2.txt[2.2.2], link:RelNotes/2.2.1.txt[2.2.1], link:RelNotes/2.2.0.txt[2.2]. @@ -1082,6 +1096,33 @@ GIT_ICASE_PATHSPECS:: an operation has touched every ref (e.g., because you are cloning a repository to make a backup). +`GIT_ALLOW_PROTOCOL`:: + If set, provide a colon-separated list of protocols which are + allowed to be used with fetch/push/clone. This is useful to + restrict recursive submodule initialization from an untrusted + repository. Any protocol not mentioned will be disallowed (i.e., + this is a whitelist, not a blacklist). If the variable is not + set at all, all protocols are enabled. The protocol names + currently used by git are: + + - `file`: any local file-based path (including `file://` URLs, + or local paths) + + - `git`: the anonymous git protocol over a direct TCP + connection (or proxy, if configured) + + - `ssh`: git over ssh (including `host:path` syntax, + `git+ssh://`, etc). + + - `rsync`: git over rsync + + - `http`: git over http, both "smart http" and "dumb http". + Note that this does _not_ include `https`; if you want both, + you should specify both as `http:https`. + + - any external helpers are named by their protocol (e.g., use + `hg` to allow the `git-remote-hg` helper) + Discussion[[Discussion]] ------------------------ diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt index 473623d631..79a1948a0b 100644 --- a/Documentation/gitignore.txt +++ b/Documentation/gitignore.txt @@ -82,12 +82,12 @@ PATTERN FORMAT - An optional prefix "`!`" which negates the pattern; any matching file excluded by a previous pattern will become - included again. It is not possible to re-include a file if a parent - directory of that file is excluded. Git doesn't list excluded - directories for performance reasons, so any patterns on contained - files have no effect, no matter where they are defined. + included again. Put a backslash ("`\`") in front of the first "`!`" for patterns that begin with a literal "`!`", for example, "`\!important!.txt`". + It is possible to re-include a file if a parent directory of that + file is excluded if certain conditions are met. See section NOTES + for detail. - If the pattern ends with a slash, it is removed for the purpose of the following description, but it would only find @@ -141,6 +141,21 @@ not tracked by Git remain untracked. To stop tracking a file that is currently tracked, use 'git rm --cached'. +To re-include files or directories when their parent directory is +excluded, the following conditions must be met: + + - The rules to exclude a directory and re-include a subset back must + be in the same .gitignore file. + + - The directory part in the re-include rules must be literal (i.e. no + wildcards) + + - The rules to exclude the parent directory must not end with a + trailing slash. + + - The rules to exclude the parent directory must have at least one + slash. + EXAMPLES -------- diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt index 8c6478b2f2..e225974253 100644 --- a/Documentation/glossary-content.txt +++ b/Documentation/glossary-content.txt @@ -413,8 +413,9 @@ exclude;; [[def_per_worktree_ref]]per-worktree ref:: Refs that are per-<>, rather than - global. This is presently only <>, but might - later include other unusual refs. + global. This is presently only <> and any refs + that start with `refs/bisect/`, but might later include other + unusual refs. [[def_pseudoref]]pseudoref:: Pseudorefs are a class of files under `$GIT_DIR` which behave diff --git a/Documentation/pretty-options.txt b/Documentation/pretty-options.txt index 8d6c5cec4c..4b659ac1a6 100644 --- a/Documentation/pretty-options.txt +++ b/Documentation/pretty-options.txt @@ -55,8 +55,9 @@ By default, the notes shown are from the notes refs listed in the environment overrides). See linkgit:git-config[1] for more details. + With an optional '' argument, show this notes ref instead of the -default notes ref(s). The ref is taken to be in `refs/notes/` if it -is not qualified. +default notes ref(s). The ref specifies the full refname when it begins +with `refs/notes/`; when it begins with `notes/`, `refs/` and otherwise +`refs/notes/` is prefixed to form a full name of the ref. + Multiple --notes options can be combined to control which notes are being displayed. Examples: "--notes=foo" will show only notes from diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt index f1c52208f0..4f009d4424 100644 --- a/Documentation/rev-list-options.txt +++ b/Documentation/rev-list-options.txt @@ -701,15 +701,19 @@ include::pretty-options.txt[] --relative-date:: Synonym for `--date=relative`. ---date=(relative|local|default|iso|iso-strict|rfc|short|raw):: +--date=:: Only takes effect for dates shown in human-readable format, such as when using `--pretty`. `log.date` config variable sets a default - value for the log command's `--date` option. + value for the log command's `--date` option. By default, dates + are shown in the original time zone (either committer's or + author's). If `-local` is appended to the format (e.g., + `iso-local`), the user's local time zone is used instead. + `--date=relative` shows dates relative to the current time, -e.g. ``2 hours ago''. +e.g. ``2 hours ago''. The `-local` option cannot be used with +`--raw` or `--relative`. + -`--date=local` shows timestamps in user's local time zone. +`--date=local` is an alias for `--date=default-local`. + `--date=iso` (or `--date=iso8601`) shows timestamps in a ISO 8601-like format. The differences to the strict ISO 8601 format are: @@ -732,10 +736,15 @@ format, often found in email messages. `--date=format:...` feeds the format `...` to your system `strftime`. Use `--date=format:%c` to show the date in your system locale's preferred format. See the `strftime` manual for a complete list of -format placeholders. +format placeholders. When using `-local`, the correct syntax is +`--date=format-local:...`. + -`--date=default` shows timestamps in the original time zone -(either committer's or author's). +`--date=default` is the default format, and is similar to +`--date=rfc2822`, with a few exceptions: + + - there is no comma after the day-of-week + + - the time zone is omitted when the local time zone is used ifdef::git-rev-list[] --header:: diff --git a/Documentation/technical/pack-protocol.txt b/Documentation/technical/pack-protocol.txt index 4064fc796f..c6977bbc5a 100644 --- a/Documentation/technical/pack-protocol.txt +++ b/Documentation/technical/pack-protocol.txt @@ -14,6 +14,14 @@ data. The protocol functions to have a server tell a client what is currently on the server, then for the two to negotiate the smallest amount of data to send in order to fully update one or the other. +pkt-line Format +--------------- + +The descriptions below build on the pkt-line format described in +protocol-common.txt. When the grammar indicate `PKT-LINE(...)`, unless +otherwise noted the usual pkt-line LF rules apply: the sender SHOULD +include a LF, but the receiver MUST NOT complain if it is not present. + Transports ---------- There are three transports over which the packfile protocol is @@ -143,9 +151,6 @@ with the object name that each reference currently points to. 003fe92df48743b7bc7d26bcaabfddde0a1e20cae47c refs/tags/v1.0^{} 0000 -Server SHOULD terminate each non-flush line using LF ("\n") terminator; -client MUST NOT complain if there is no terminator. - The returned response is a pkt-line stream describing each ref and its current value. The stream MUST be sorted by name according to the C locale ordering. @@ -165,15 +170,15 @@ MUST peel the ref if it's an annotated tag. flush-pkt no-refs = PKT-LINE(zero-id SP "capabilities^{}" - NUL capability-list LF) + NUL capability-list) list-of-refs = first-ref *other-ref first-ref = PKT-LINE(obj-id SP refname - NUL capability-list LF) + NUL capability-list) other-ref = PKT-LINE(other-tip / other-peeled) - other-tip = obj-id SP refname LF - other-peeled = obj-id SP refname "^{}" LF + other-tip = obj-id SP refname + other-peeled = obj-id SP refname "^{}" shallow = PKT-LINE("shallow" SP obj-id) @@ -216,8 +221,8 @@ out of what the server said it could do with the first 'want' line. depth-request = PKT-LINE("deepen" SP depth) - first-want = PKT-LINE("want" SP obj-id SP capability-list LF) - additional-want = PKT-LINE("want" SP obj-id LF) + first-want = PKT-LINE("want" SP obj-id SP capability-list) + additional-want = PKT-LINE("want" SP obj-id) depth = 1*DIGIT ---- @@ -284,7 +289,7 @@ so that there is always a block of 32 "in-flight on the wire" at a time. compute-end have-list = *have-line - have-line = PKT-LINE("have" SP obj-id LF) + have-line = PKT-LINE("have" SP obj-id) compute-end = flush-pkt / PKT-LINE("done") ---- @@ -348,10 +353,10 @@ Then the server will start sending its packfile data. ---- server-response = *ack_multi ack / nak - ack_multi = PKT-LINE("ACK" SP obj-id ack_status LF) + ack_multi = PKT-LINE("ACK" SP obj-id ack_status) ack_status = "continue" / "common" / "ready" - ack = PKT-LINE("ACK SP obj-id LF) - nak = PKT-LINE("NAK" LF) + ack = PKT-LINE("ACK" SP obj-id) + nak = PKT-LINE("NAK") ---- A simple clone may look like this (with no 'have' lines): @@ -467,10 +472,10 @@ references. ---- update-request = *shallow ( command-list | push-cert ) [packfile] - shallow = PKT-LINE("shallow" SP obj-id LF) + shallow = PKT-LINE("shallow" SP obj-id) - command-list = PKT-LINE(command NUL capability-list LF) - *PKT-LINE(command LF) + command-list = PKT-LINE(command NUL capability-list) + *PKT-LINE(command) flush-pkt command = create / delete / update @@ -521,7 +526,8 @@ Push Certificate A push certificate begins with a set of header lines. After the header and an empty line, the protocol commands follow, one per -line. +line. Note that the the trailing LF in push-cert PKT-LINEs is _not_ +optional; it must be present. Currently, the following header fields are defined: @@ -560,12 +566,12 @@ update was successful, or 'ng [refname] [error]' if the update was not. 1*(command-status) flush-pkt - unpack-status = PKT-LINE("unpack" SP unpack-result LF) + unpack-status = PKT-LINE("unpack" SP unpack-result) unpack-result = "ok" / error-msg command-status = command-ok / command-fail - command-ok = PKT-LINE("ok" SP refname LF) - command-fail = PKT-LINE("ng" SP refname SP error-msg LF) + command-ok = PKT-LINE("ok" SP refname) + command-fail = PKT-LINE("ng" SP refname SP error-msg) error-msg = 1*(OCTECT) ; where not "ok" ---- diff --git a/Documentation/technical/protocol-common.txt b/Documentation/technical/protocol-common.txt index 889985f707..bf30167ae3 100644 --- a/Documentation/technical/protocol-common.txt +++ b/Documentation/technical/protocol-common.txt @@ -62,7 +62,10 @@ A pkt-line MAY contain binary data, so implementors MUST ensure pkt-line parsing/formatting routines are 8-bit clean. A non-binary line SHOULD BE terminated by an LF, which if present -MUST be included in the total length. +MUST be included in the total length. Receivers MUST treat pkt-lines +with non-binary data the same whether or not they contain the trailing +LF (stripping the LF if present, and not complaining when it is +missing). The maximum length of a pkt-line's data component is 65520 bytes. Implementations MUST NOT send pkt-line whose length exceeds 65524 diff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt index 68978f5338..1b7987e737 100644 --- a/Documentation/user-manual.txt +++ b/Documentation/user-manual.txt @@ -3424,7 +3424,7 @@ just missing one particular blob version. [[the-index]] The index ------------ +--------- The index is a binary file (generally kept in `.git/index`) containing a sorted list of path names, each with permissions and the SHA-1 of a blob diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN index 181f397bd4..94e40c4000 100755 --- a/GIT-VERSION-GEN +++ b/GIT-VERSION-GEN @@ -1,7 +1,7 @@ #!/bin/sh GVF=GIT-VERSION-FILE -DEF_VER=v2.6.0-rc1 +DEF_VER=v2.6.0.GIT LF=' ' diff --git a/Makefile b/Makefile index e326fa09c0..36bc54ccd1 100644 --- a/Makefile +++ b/Makefile @@ -375,6 +375,9 @@ ALL_CFLAGS = $(CPPFLAGS) $(CFLAGS) ALL_LDFLAGS = $(LDFLAGS) STRIP ?= strip +# Create as necessary, replace existing, make ranlib unneeded. +ARFLAGS = rcs + # Among the variables below, these: # gitexecdir # template_dir @@ -902,6 +905,7 @@ BUILTIN_OBJS += builtin/shortlog.o BUILTIN_OBJS += builtin/show-branch.o BUILTIN_OBJS += builtin/show-ref.o BUILTIN_OBJS += builtin/stripspace.o +BUILTIN_OBJS += builtin/submodule--helper.o BUILTIN_OBJS += builtin/symbolic-ref.o BUILTIN_OBJS += builtin/tag.o BUILTIN_OBJS += builtin/unpack-file.o @@ -1465,13 +1469,13 @@ endif QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir QUIET_SUBDIR1 = -ifneq ($(findstring $(MAKEFLAGS),w),w) +ifneq ($(findstring w,$(MAKEFLAGS)),w) PRINT_DIR = --no-print-directory else # "make -w" NO_SUBDIR = : endif -ifneq ($(findstring $(MAKEFLAGS),s),s) +ifneq ($(findstring s,$(MAKEFLAGS)),s) ifndef V QUIET_CC = @echo ' ' CC $@; QUIET_AR = @echo ' ' AR $@; @@ -1703,7 +1707,7 @@ $(BUILT_INS): git$X common-cmds.h: generate-cmdlist.sh command-list.txt common-cmds.h: $(wildcard Documentation/git-*.txt) - $(QUIET_GEN)./generate-cmdlist.sh command-list.txt >$@+ && mv $@+ $@ + $(QUIET_GEN)$(SHELL_PATH) ./generate-cmdlist.sh command-list.txt >$@+ && mv $@+ $@ SCRIPT_DEFINES = $(SHELL_PATH_SQ):$(DIFF_SQ):$(GIT_VERSION):\ $(localedir_SQ):$(NO_CURL):$(USE_GETTEXT_SCHEME):$(SANE_TOOL_PATH_SQ):\ @@ -1995,13 +1999,13 @@ $(REMOTE_CURL_PRIMARY): remote-curl.o http.o http-walker.o GIT-LDFLAGS $(GITLIBS $(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT) $(LIB_FILE): $(LIB_OBJS) - $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $^ + $(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS) $@ $^ $(XDIFF_LIB): $(XDIFF_OBJS) - $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $^ + $(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS) $@ $^ $(VCSSVN_LIB): $(VCSSVN_OBJS) - $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $^ + $(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS) $@ $^ export DEFAULT_EDITOR DEFAULT_PAGER diff --git a/RelNotes b/RelNotes index 84a20c84c6..3ba13ce253 120000 --- a/RelNotes +++ b/RelNotes @@ -1 +1 @@ -Documentation/RelNotes/2.6.0.txt \ No newline at end of file +Documentation/RelNotes/2.7.0.txt \ No newline at end of file diff --git a/advice.c b/advice.c index 4965686e19..4dc5cf10a8 100644 --- a/advice.c +++ b/advice.c @@ -100,7 +100,7 @@ void NORETURN die_conclude_merge(void) { error(_("You have not concluded your merge (MERGE_HEAD exists).")); if (advice_resolve_conflict) - advise(_("Please, commit your changes before you can merge.")); + advise(_("Please, commit your changes before merging.")); die(_("Exiting because of unfinished merge.")); } diff --git a/bisect.c b/bisect.c index 041a13d093..053d1a2ab9 100644 --- a/bisect.c +++ b/bisect.c @@ -730,6 +730,11 @@ static void handle_bad_merge_base(void) "This means the bug has been fixed " "between %s and [%s].\n", bad_hex, bad_hex, good_hex); + } else if (!strcmp(term_bad, "new") && !strcmp(term_good, "old")) { + fprintf(stderr, "The merge base %s is new.\n" + "The property has changed " + "between %s and [%s].\n", + bad_hex, bad_hex, good_hex); } else { fprintf(stderr, "The merge base %s is %s.\n" "This means the first '%s' commit is " @@ -762,11 +767,11 @@ static void handle_skipped_merge_base(const unsigned char *mb) } /* - * "check_merge_bases" checks that merge bases are not "bad". + * "check_merge_bases" checks that merge bases are not "bad" (or "new"). * - * - If one is "bad", it means the user assumed something wrong + * - If one is "bad" (or "new"), it means the user assumed something wrong * and we must exit with a non 0 error code. - * - If one is "good", that's good, we have nothing to do. + * - If one is "good" (or "old"), that's good, we have nothing to do. * - If one is "skipped", we can't know but we should warn. * - If we don't know, we should check it out and ask the user to test. */ diff --git a/builtin.h b/builtin.h index 79aaf0afe8..6b95006a0a 100644 --- a/builtin.h +++ b/builtin.h @@ -120,6 +120,7 @@ extern int cmd_show(int argc, const char **argv, const char *prefix); extern int cmd_show_branch(int argc, const char **argv, const char *prefix); extern int cmd_status(int argc, const char **argv, const char *prefix); extern int cmd_stripspace(int argc, const char **argv, const char *prefix); +extern int cmd_submodule__helper(int argc, const char **argv, const char *prefix); extern int cmd_symbolic_ref(int argc, const char **argv, const char *prefix); extern int cmd_tag(int argc, const char **argv, const char *prefix); extern int cmd_tar_tree(int argc, const char **argv, const char *prefix); diff --git a/builtin/am.c b/builtin/am.c index 4f77e07b95..3bd4fd701b 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -2208,6 +2208,17 @@ enum resume_mode { RESUME_ABORT }; +static int git_am_config(const char *k, const char *v, void *cb) +{ + int status; + + status = git_gpg_config(k, v, NULL); + if (status) + return status; + + return git_default_config(k, v, NULL); +} + int cmd_am(int argc, const char **argv, const char *prefix) { struct am_state state; @@ -2308,7 +2319,7 @@ int cmd_am(int argc, const char **argv, const char *prefix) OPT_END() }; - git_config(git_default_config, NULL); + git_config(git_am_config, NULL); am_state_init(&state, git_path("rebase-apply")); diff --git a/builtin/apply.c b/builtin/apply.c index 54aba4e351..4aa53f7fd8 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -785,7 +785,7 @@ static int guess_p_value(const char *nameline) } /* - * Does the ---/+++ line has the POSIX timestamp after the last HT? + * Does the ---/+++ line have the POSIX timestamp after the last HT? * GNU diff puts epoch there to signal a creation/deletion event. Is * this such a timestamp? */ diff --git a/builtin/blame.c b/builtin/blame.c index 4db01c195c..203a981cd0 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -974,7 +974,10 @@ static void pass_blame_to_parent(struct scoreboard *sb, fill_origin_blob(&sb->revs->diffopt, target, &file_o); num_get_patch++; - diff_hunks(&file_p, &file_o, 0, blame_chunk_cb, &d); + if (diff_hunks(&file_p, &file_o, 0, blame_chunk_cb, &d)) + die("unable to generate diff (%s -> %s)", + sha1_to_hex(parent->commit->object.sha1), + sha1_to_hex(target->commit->object.sha1)); /* The rest are the same as the parent */ blame_chunk(&d.dstq, &d.srcq, INT_MAX, d.offset, INT_MAX, parent); *d.dstq = NULL; @@ -1120,7 +1123,9 @@ static void find_copy_in_blob(struct scoreboard *sb, * file_p partially may match that image. */ memset(split, 0, sizeof(struct blame_entry [3])); - diff_hunks(file_p, &file_o, 1, handle_split_cb, &d); + if (diff_hunks(file_p, &file_o, 1, handle_split_cb, &d)) + die("unable to generate diff (%s)", + sha1_to_hex(parent->commit->object.sha1)); /* remainder, if any, all match the preimage */ handle_split(sb, ent, d.tlno, d.plno, ent->num_lines, parent, split); } @@ -1366,8 +1371,15 @@ static void pass_whole_blame(struct scoreboard *sb, */ static struct commit_list *first_scapegoat(struct rev_info *revs, struct commit *commit) { - if (!reverse) + if (!reverse) { + if (revs->first_parent_only && + commit->parents && + commit->parents->next) { + free_commit_list(commit->parents->next); + commit->parents->next = NULL; + } return commit->parents; + } return lookup_decoration(&revs->children, &commit->object); } @@ -2600,7 +2612,6 @@ int cmd_blame(int argc, const char **argv, const char *prefix) fewer display columns. */ blame_date_width = utf8_strwidth(_("4 years, 11 months ago")) + 1; /* add the null */ break; - case DATE_LOCAL: case DATE_NORMAL: blame_date_width = sizeof("Thu Oct 19 16:00:04 2006 -0700"); break; @@ -2680,6 +2691,8 @@ int cmd_blame(int argc, const char **argv, const char *prefix) } else if (contents_from) die("--contents and --children do not blend well."); + else if (revs.first_parent_only) + die("combining --first-parent and --reverse is not supported"); else { final_commit_name = prepare_initial(&sb); sb.commits.compare = compare_commits_by_reverse_commit_date; diff --git a/builtin/branch.c b/builtin/branch.c index ff05869949..01f9530822 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -19,18 +19,17 @@ #include "column.h" #include "utf8.h" #include "wt-status.h" +#include "ref-filter.h" static const char * const builtin_branch_usage[] = { N_("git branch [] [-r | -a] [--merged | --no-merged]"), N_("git branch [] [-l] [-f] []"), N_("git branch [] [-r] (-d | -D) ..."), N_("git branch [] (-m | -M) [] "), + N_("git branch [] [-r | -a] [--points-at]"), NULL }; -#define REF_LOCAL_BRANCH 0x01 -#define REF_REMOTE_BRANCH 0x02 - static const char *head; static unsigned char head_sha1[20]; @@ -52,13 +51,6 @@ enum color_branch { BRANCH_COLOR_UPSTREAM = 5 }; -static enum merge_filter { - NO_FILTER = 0, - SHOW_NOT_MERGED, - SHOW_MERGED -} merge_filter; -static unsigned char merge_filter_ref[20]; - static struct string_list output = STRING_LIST_INIT_DUP; static unsigned int colopts; @@ -121,7 +113,7 @@ static int branch_merged(int kind, const char *name, void *reference_name_to_free = NULL; int merged; - if (kind == REF_LOCAL_BRANCH) { + if (kind == FILTER_REFS_BRANCHES) { struct branch *branch = branch_get(name); const char *upstream = branch_get_upstream(branch, NULL); unsigned char sha1[20]; @@ -199,14 +191,14 @@ static int delete_branches(int argc, const char **argv, int force, int kinds, struct strbuf bname = STRBUF_INIT; switch (kinds) { - case REF_REMOTE_BRANCH: + case FILTER_REFS_REMOTES: fmt = "refs/remotes/%s"; /* For subsequent UI messages */ remote_branch = 1; force = 1; break; - case REF_LOCAL_BRANCH: + case FILTER_REFS_BRANCHES: fmt = "refs/heads/%s"; break; default: @@ -223,7 +215,7 @@ static int delete_branches(int argc, const char **argv, int force, int kinds, int flags = 0; strbuf_branchname(&bname, argv[i]); - if (kinds == REF_LOCAL_BRANCH && !strcmp(head, bname.buf)) { + if (kinds == FILTER_REFS_BRANCHES && !strcmp(head, bname.buf)) { error(_("Cannot delete the branch '%s' " "which you are currently on."), bname.buf); ret = 1; @@ -279,147 +271,6 @@ static int delete_branches(int argc, const char **argv, int force, int kinds, return(ret); } -struct ref_item { - char *name; - char *dest; - unsigned int kind, width; - struct commit *commit; - int ignore; -}; - -struct ref_list { - struct rev_info revs; - int index, alloc, maxwidth, verbose, abbrev; - struct ref_item *list; - struct commit_list *with_commit; - int kinds; -}; - -static char *resolve_symref(const char *src, const char *prefix) -{ - unsigned char sha1[20]; - int flag; - const char *dst; - - dst = resolve_ref_unsafe(src, 0, sha1, &flag); - if (!(dst && (flag & REF_ISSYMREF))) - return NULL; - if (prefix) - skip_prefix(dst, prefix, &dst); - return xstrdup(dst); -} - -struct append_ref_cb { - struct ref_list *ref_list; - const char **pattern; - int ret; -}; - -static int match_patterns(const char **pattern, const char *refname) -{ - if (!*pattern) - return 1; /* no pattern always matches */ - while (*pattern) { - if (!wildmatch(*pattern, refname, 0, NULL)) - return 1; - pattern++; - } - return 0; -} - -static int append_ref(const char *refname, const struct object_id *oid, int flags, void *cb_data) -{ - struct append_ref_cb *cb = (struct append_ref_cb *)(cb_data); - struct ref_list *ref_list = cb->ref_list; - struct ref_item *newitem; - struct commit *commit; - int kind, i; - const char *prefix, *orig_refname = refname; - - static struct { - int kind; - const char *prefix; - } ref_kind[] = { - { REF_LOCAL_BRANCH, "refs/heads/" }, - { REF_REMOTE_BRANCH, "refs/remotes/" }, - }; - - /* Detect kind */ - for (i = 0; i < ARRAY_SIZE(ref_kind); i++) { - prefix = ref_kind[i].prefix; - if (skip_prefix(refname, prefix, &refname)) { - kind = ref_kind[i].kind; - break; - } - } - if (ARRAY_SIZE(ref_kind) <= i) - return 0; - - /* Don't add types the caller doesn't want */ - if ((kind & ref_list->kinds) == 0) - return 0; - - if (!match_patterns(cb->pattern, refname)) - return 0; - - commit = NULL; - if (ref_list->verbose || ref_list->with_commit || merge_filter != NO_FILTER) { - commit = lookup_commit_reference_gently(oid->hash, 1); - if (!commit) { - cb->ret = error(_("branch '%s' does not point at a commit"), refname); - return 0; - } - - /* Filter with with_commit if specified */ - if (!is_descendant_of(commit, ref_list->with_commit)) - return 0; - - if (merge_filter != NO_FILTER) - add_pending_object(&ref_list->revs, - (struct object *)commit, refname); - } - - ALLOC_GROW(ref_list->list, ref_list->index + 1, ref_list->alloc); - - /* Record the new item */ - newitem = &(ref_list->list[ref_list->index++]); - newitem->name = xstrdup(refname); - newitem->kind = kind; - newitem->commit = commit; - newitem->width = utf8_strwidth(refname); - newitem->dest = resolve_symref(orig_refname, prefix); - newitem->ignore = 0; - /* adjust for "remotes/" */ - if (newitem->kind == REF_REMOTE_BRANCH && - ref_list->kinds != REF_REMOTE_BRANCH) - newitem->width += 8; - if (newitem->width > ref_list->maxwidth) - ref_list->maxwidth = newitem->width; - - return 0; -} - -static void free_ref_list(struct ref_list *ref_list) -{ - int i; - - for (i = 0; i < ref_list->index; i++) { - free(ref_list->list[i].name); - free(ref_list->list[i].dest); - } - free(ref_list->list); -} - -static int ref_cmp(const void *r1, const void *r2) -{ - struct ref_item *c1 = (struct ref_item *)(r1); - struct ref_item *c2 = (struct ref_item *)(r2); - - if (c1->kind != c2->kind) - return c1->kind - c2->kind; - return strcmp(c1->name, c2->name); -} - static void fill_tracking_info(struct strbuf *stat, const char *branch_name, int show_upstream_ref) { @@ -482,8 +333,8 @@ static void fill_tracking_info(struct strbuf *stat, const char *branch_name, free(ref); } -static void add_verbose_info(struct strbuf *out, struct ref_item *item, - int verbose, int abbrev) +static void add_verbose_info(struct strbuf *out, struct ref_array_item *item, + struct ref_filter *filter, const char *refname) { struct strbuf subject = STRBUF_INIT, stat = STRBUF_INIT; const char *sub = _(" **** invalid ref ****"); @@ -494,32 +345,74 @@ static void add_verbose_info(struct strbuf *out, struct ref_item *item, sub = subject.buf; } - if (item->kind == REF_LOCAL_BRANCH) - fill_tracking_info(&stat, item->name, verbose > 1); + if (item->kind == FILTER_REFS_BRANCHES) + fill_tracking_info(&stat, refname, filter->verbose > 1); strbuf_addf(out, " %s %s%s", - find_unique_abbrev(item->commit->object.sha1, abbrev), + find_unique_abbrev(item->commit->object.sha1, filter->abbrev), stat.buf, sub); strbuf_release(&stat); strbuf_release(&subject); } -static void print_ref_item(struct ref_item *item, int maxwidth, int verbose, - int abbrev, int current, char *prefix) +static char *get_head_description(void) +{ + struct strbuf desc = STRBUF_INIT; + struct wt_status_state state; + memset(&state, 0, sizeof(state)); + wt_status_get_state(&state, 1); + if (state.rebase_in_progress || + state.rebase_interactive_in_progress) + strbuf_addf(&desc, _("(no branch, rebasing %s)"), + state.branch); + else if (state.bisect_in_progress) + strbuf_addf(&desc, _("(no branch, bisect started on %s)"), + state.branch); + else if (state.detached_from) { + /* TRANSLATORS: make sure these match _("HEAD detached at ") + and _("HEAD detached from ") in wt-status.c */ + if (state.detached_at) + strbuf_addf(&desc, _("(HEAD detached at %s)"), + state.detached_from); + else + strbuf_addf(&desc, _("(HEAD detached from %s)"), + state.detached_from); + } + else + strbuf_addstr(&desc, _("(no branch)")); + free(state.branch); + free(state.onto); + free(state.detached_from); + return strbuf_detach(&desc, NULL); +} + +static void format_and_print_ref_item(struct ref_array_item *item, int maxwidth, + struct ref_filter *filter, const char *remote_prefix) { char c; + int current = 0; int color; struct strbuf out = STRBUF_INIT, name = STRBUF_INIT; - - if (item->ignore) - return; + const char *prefix = ""; + const char *desc = item->refname; + char *to_free = NULL; switch (item->kind) { - case REF_LOCAL_BRANCH: - color = BRANCH_COLOR_LOCAL; + case FILTER_REFS_BRANCHES: + skip_prefix(desc, "refs/heads/", &desc); + if (!filter->detached && !strcmp(desc, head)) + current = 1; + else + color = BRANCH_COLOR_LOCAL; break; - case REF_REMOTE_BRANCH: + case FILTER_REFS_REMOTES: + skip_prefix(desc, "refs/remotes/", &desc); color = BRANCH_COLOR_REMOTE; + prefix = remote_prefix; + break; + case FILTER_REFS_DETACHED_HEAD: + desc = to_free = get_head_description(); + current = 1; break; default: color = BRANCH_COLOR_PLAIN; @@ -532,8 +425,8 @@ static void print_ref_item(struct ref_item *item, int maxwidth, int verbose, color = BRANCH_COLOR_CURRENT; } - strbuf_addf(&name, "%s%s", prefix, item->name); - if (verbose) { + strbuf_addf(&name, "%s%s", prefix, desc); + if (filter->verbose) { int utf8_compensation = strlen(name.buf) - utf8_strwidth(name.buf); strbuf_addf(&out, "%c %s%-*s%s", c, branch_get_color(color), maxwidth + utf8_compensation, name.buf, @@ -542,155 +435,82 @@ static void print_ref_item(struct ref_item *item, int maxwidth, int verbose, strbuf_addf(&out, "%c %s%s%s", c, branch_get_color(color), name.buf, branch_get_color(BRANCH_COLOR_RESET)); - if (item->dest) - strbuf_addf(&out, " -> %s", item->dest); - else if (verbose) + if (item->symref) { + skip_prefix(item->symref, "refs/remotes/", &desc); + strbuf_addf(&out, " -> %s", desc); + } + else if (filter->verbose) /* " f7c0c00 [ahead 58, behind 197] vcs-svn: drop obj_pool.h" */ - add_verbose_info(&out, item, verbose, abbrev); + add_verbose_info(&out, item, filter, desc); if (column_active(colopts)) { - assert(!verbose && "--column and --verbose are incompatible"); + assert(!filter->verbose && "--column and --verbose are incompatible"); string_list_append(&output, out.buf); } else { printf("%s\n", out.buf); } strbuf_release(&name); strbuf_release(&out); + free(to_free); } -static int calc_maxwidth(struct ref_list *refs) -{ - int i, w = 0; - for (i = 0; i < refs->index; i++) { - if (refs->list[i].ignore) - continue; - if (refs->list[i].width > w) - w = refs->list[i].width; - } - return w; -} - -static char *get_head_description(void) -{ - struct strbuf desc = STRBUF_INIT; - struct wt_status_state state; - memset(&state, 0, sizeof(state)); - wt_status_get_state(&state, 1); - if (state.rebase_in_progress || - state.rebase_interactive_in_progress) - strbuf_addf(&desc, _("(no branch, rebasing %s)"), - state.branch); - else if (state.bisect_in_progress) - strbuf_addf(&desc, _("(no branch, bisect started on %s)"), - state.branch); - else if (state.detached_from) { - /* TRANSLATORS: make sure these match _("HEAD detached at ") - and _("HEAD detached from ") in wt-status.c */ - if (state.detached_at) - strbuf_addf(&desc, _("(HEAD detached at %s)"), - state.detached_from); - else - strbuf_addf(&desc, _("(HEAD detached from %s)"), - state.detached_from); - } - else - strbuf_addstr(&desc, _("(no branch)")); - free(state.branch); - free(state.onto); - free(state.detached_from); - return strbuf_detach(&desc, NULL); -} - -static void show_detached(struct ref_list *ref_list) +static int calc_maxwidth(struct ref_array *refs, int remote_bonus) { - struct commit *head_commit = lookup_commit_reference_gently(head_sha1, 1); - - if (head_commit && is_descendant_of(head_commit, ref_list->with_commit)) { - struct ref_item item; - item.name = get_head_description(); - item.width = utf8_strwidth(item.name); - item.kind = REF_LOCAL_BRANCH; - item.dest = NULL; - item.commit = head_commit; - item.ignore = 0; - if (item.width > ref_list->maxwidth) - ref_list->maxwidth = item.width; - print_ref_item(&item, ref_list->maxwidth, ref_list->verbose, ref_list->abbrev, 1, ""); - free(item.name); + int i, max = 0; + for (i = 0; i < refs->nr; i++) { + struct ref_array_item *it = refs->items[i]; + const char *desc = it->refname; + int w; + + skip_prefix(it->refname, "refs/heads/", &desc); + skip_prefix(it->refname, "refs/remotes/", &desc); + w = utf8_strwidth(desc); + + if (it->kind == FILTER_REFS_REMOTES) + w += remote_bonus; + if (w > max) + max = w; } + return max; } -static int print_ref_list(int kinds, int detached, int verbose, int abbrev, struct commit_list *with_commit, const char **pattern) +static void print_ref_list(struct ref_filter *filter, struct ref_sorting *sorting) { int i; - struct append_ref_cb cb; - struct ref_list ref_list; - - memset(&ref_list, 0, sizeof(ref_list)); - ref_list.kinds = kinds; - ref_list.verbose = verbose; - ref_list.abbrev = abbrev; - ref_list.with_commit = with_commit; - if (merge_filter != NO_FILTER) - init_revisions(&ref_list.revs, NULL); - cb.ref_list = &ref_list; - cb.pattern = pattern; - cb.ret = 0; - for_each_rawref(append_ref, &cb); - if (merge_filter != NO_FILTER) { - struct commit *filter; - filter = lookup_commit_reference_gently(merge_filter_ref, 0); - if (!filter) - die(_("object '%s' does not point to a commit"), - sha1_to_hex(merge_filter_ref)); - - filter->object.flags |= UNINTERESTING; - add_pending_object(&ref_list.revs, - (struct object *) filter, ""); - ref_list.revs.limited = 1; - - if (prepare_revision_walk(&ref_list.revs)) - die(_("revision walk setup failed")); - - for (i = 0; i < ref_list.index; i++) { - struct ref_item *item = &ref_list.list[i]; - struct commit *commit = item->commit; - int is_merged = !!(commit->object.flags & UNINTERESTING); - item->ignore = is_merged != (merge_filter == SHOW_MERGED); - } + struct ref_array array; + int maxwidth = 0; + const char *remote_prefix = ""; - for (i = 0; i < ref_list.index; i++) { - struct ref_item *item = &ref_list.list[i]; - clear_commit_marks(item->commit, ALL_REV_FLAGS); - } - clear_commit_marks(filter, ALL_REV_FLAGS); + /* + * If we are listing more than just remote branches, + * then remote branches will have a "remotes/" prefix. + * We need to account for this in the width. + */ + if (filter->kind != FILTER_REFS_REMOTES) + remote_prefix = "remotes/"; - if (verbose) - ref_list.maxwidth = calc_maxwidth(&ref_list); - } + memset(&array, 0, sizeof(array)); - qsort(ref_list.list, ref_list.index, sizeof(struct ref_item), ref_cmp); - - detached = (detached && (kinds & REF_LOCAL_BRANCH)); - if (detached && match_patterns(pattern, "HEAD")) - show_detached(&ref_list); - - for (i = 0; i < ref_list.index; i++) { - int current = !detached && - (ref_list.list[i].kind == REF_LOCAL_BRANCH) && - !strcmp(ref_list.list[i].name, head); - char *prefix = (kinds != REF_REMOTE_BRANCH && - ref_list.list[i].kind == REF_REMOTE_BRANCH) - ? "remotes/" : ""; - print_ref_item(&ref_list.list[i], ref_list.maxwidth, verbose, - abbrev, current, prefix); - } + verify_ref_format("%(refname)%(symref)"); + filter_refs(&array, filter, filter->kind | FILTER_REFS_INCLUDE_BROKEN); - free_ref_list(&ref_list); + if (filter->verbose) + maxwidth = calc_maxwidth(&array, strlen(remote_prefix)); - if (cb.ret) - error(_("some refs could not be read")); + /* + * If no sorting parameter is given then we default to sorting + * by 'refname'. This would give us an alphabetically sorted + * array with the 'HEAD' ref at the beginning followed by + * local branches 'refs/heads/...' and finally remote-tacking + * branches 'refs/remotes/...'. + */ + if (!sorting) + sorting = ref_default_sorting(); + ref_array_sort(sorting, &array); + + for (i = 0; i < array.nr; i++) + format_and_print_ref_item(array.items[i], maxwidth, filter, remote_prefix); - return cb.ret; + ref_array_clear(&array); } static void rename_branch(const char *oldname, const char *newname, int force) @@ -746,20 +566,6 @@ static void rename_branch(const char *oldname, const char *newname, int force) strbuf_release(&newsection); } -static int opt_parse_merge_filter(const struct option *opt, const char *arg, int unset) -{ - merge_filter = ((opt->long_name[0] == 'n') - ? SHOW_NOT_MERGED - : SHOW_MERGED); - if (unset) - merge_filter = SHOW_NOT_MERGED; /* b/c for --no-merged */ - if (!arg) - arg = "HEAD"; - if (get_sha1(arg, merge_filter_ref)) - die(_("malformed object name %s"), arg); - return 0; -} - static const char edit_description[] = "BRANCH_DESCRIPTION"; static int edit_branch_description(const char *branch_name) @@ -799,17 +605,16 @@ static int edit_branch_description(const char *branch_name) int cmd_branch(int argc, const char **argv, const char *prefix) { int delete = 0, rename = 0, force = 0, list = 0; - int verbose = 0, abbrev = -1, detached = 0; int reflog = 0, edit_description = 0; int quiet = 0, unset_upstream = 0; const char *new_upstream = NULL; enum branch_track track; - int kinds = REF_LOCAL_BRANCH; - struct commit_list *with_commit = NULL; + struct ref_filter filter; + static struct ref_sorting *sorting = NULL, **sorting_tail = &sorting; struct option options[] = { OPT_GROUP(N_("Generic options")), - OPT__VERBOSE(&verbose, + OPT__VERBOSE(&filter.verbose, N_("show hash and subject, give twice for upstream branch")), OPT__QUIET(&quiet, N_("suppress informational messages")), OPT_SET_INT('t', "track", &track, N_("set up tracking mode (see git-pull(1))"), @@ -819,25 +624,15 @@ int cmd_branch(int argc, const char **argv, const char *prefix) OPT_STRING('u', "set-upstream-to", &new_upstream, "upstream", "change the upstream info"), OPT_BOOL(0, "unset-upstream", &unset_upstream, "Unset the upstream info"), OPT__COLOR(&branch_use_color, N_("use colored output")), - OPT_SET_INT('r', "remotes", &kinds, N_("act on remote-tracking branches"), - REF_REMOTE_BRANCH), - { - OPTION_CALLBACK, 0, "contains", &with_commit, N_("commit"), - N_("print only branches that contain the commit"), - PARSE_OPT_LASTARG_DEFAULT, - parse_opt_with_commit, (intptr_t)"HEAD", - }, - { - OPTION_CALLBACK, 0, "with", &with_commit, N_("commit"), - N_("print only branches that contain the commit"), - PARSE_OPT_HIDDEN | PARSE_OPT_LASTARG_DEFAULT, - parse_opt_with_commit, (intptr_t) "HEAD", - }, - OPT__ABBREV(&abbrev), + OPT_SET_INT('r', "remotes", &filter.kind, N_("act on remote-tracking branches"), + FILTER_REFS_REMOTES), + OPT_CONTAINS(&filter.with_commit, N_("print only branches that contain the commit")), + OPT_WITH(&filter.with_commit, N_("print only branches that contain the commit")), + OPT__ABBREV(&filter.abbrev), OPT_GROUP(N_("Specific git-branch actions:")), - OPT_SET_INT('a', "all", &kinds, N_("list both remote-tracking and local branches"), - REF_REMOTE_BRANCH | REF_LOCAL_BRANCH), + OPT_SET_INT('a', "all", &filter.kind, N_("list both remote-tracking and local branches"), + FILTER_REFS_REMOTES | FILTER_REFS_BRANCHES), OPT_BIT('d', "delete", &delete, N_("delete fully merged branch"), 1), OPT_BIT('D', NULL, &delete, N_("delete branch (even if not merged)"), 2), OPT_BIT('m', "move", &rename, N_("move/rename a branch and its reflog"), 1), @@ -847,22 +642,22 @@ int cmd_branch(int argc, const char **argv, const char *prefix) OPT_BOOL(0, "edit-description", &edit_description, N_("edit the description for the branch")), OPT__FORCE(&force, N_("force creation, move/rename, deletion")), + OPT_MERGED(&filter, N_("print only branches that are merged")), + OPT_NO_MERGED(&filter, N_("print only branches that are not merged")), + OPT_COLUMN(0, "column", &colopts, N_("list branches in columns")), + OPT_CALLBACK(0 , "sort", sorting_tail, N_("key"), + N_("field name to sort on"), &parse_opt_ref_sorting), { - OPTION_CALLBACK, 0, "no-merged", &merge_filter_ref, - N_("commit"), N_("print only not merged branches"), - PARSE_OPT_LASTARG_DEFAULT | PARSE_OPT_NONEG, - opt_parse_merge_filter, (intptr_t) "HEAD", - }, - { - OPTION_CALLBACK, 0, "merged", &merge_filter_ref, - N_("commit"), N_("print only merged branches"), - PARSE_OPT_LASTARG_DEFAULT | PARSE_OPT_NONEG, - opt_parse_merge_filter, (intptr_t) "HEAD", + OPTION_CALLBACK, 0, "points-at", &filter.points_at, N_("object"), + N_("print only branches of the object"), 0, parse_opt_object_name }, - OPT_COLUMN(0, "column", &colopts, N_("list branches in columns")), OPT_END(), }; + memset(&filter, 0, sizeof(filter)); + filter.kind = FILTER_REFS_BRANCHES; + filter.abbrev = -1; + if (argc == 2 && !strcmp(argv[1], "-h")) usage_with_options(builtin_branch_usage, options); @@ -874,11 +669,9 @@ int cmd_branch(int argc, const char **argv, const char *prefix) if (!head) die(_("Failed to resolve HEAD as a valid ref.")); if (!strcmp(head, "HEAD")) - detached = 1; + filter.detached = 1; else if (!skip_prefix(head, "refs/heads/", &head)) die(_("HEAD not found below refs/heads!")); - hashcpy(merge_filter_ref, head_sha1); - argc = parse_options(argc, argv, prefix, options, builtin_branch_usage, 0); @@ -886,17 +679,17 @@ int cmd_branch(int argc, const char **argv, const char *prefix) if (!delete && !rename && !edit_description && !new_upstream && !unset_upstream && argc == 0) list = 1; - if (with_commit || merge_filter != NO_FILTER) + if (filter.with_commit || filter.merge != REF_FILTER_MERGED_NONE || filter.points_at.nr) list = 1; if (!!delete + !!rename + !!new_upstream + list + unset_upstream > 1) usage_with_options(builtin_branch_usage, options); - if (abbrev == -1) - abbrev = DEFAULT_ABBREV; + if (filter.abbrev == -1) + filter.abbrev = DEFAULT_ABBREV; finalize_colopts(&colopts, -1); - if (verbose) { + if (filter.verbose) { if (explicitly_enable_column(colopts)) die(_("--column and --verbose are incompatible")); colopts = 0; @@ -910,20 +703,23 @@ int cmd_branch(int argc, const char **argv, const char *prefix) if (delete) { if (!argc) die(_("branch name required")); - return delete_branches(argc, argv, delete > 1, kinds, quiet); + return delete_branches(argc, argv, delete > 1, filter.kind, quiet); } else if (list) { - int ret = print_ref_list(kinds, detached, verbose, abbrev, - with_commit, argv); + /* git branch --local also shows HEAD when it is detached */ + if ((filter.kind & FILTER_REFS_BRANCHES) && filter.detached) + filter.kind |= FILTER_REFS_DETACHED_HEAD; + filter.name_patterns = argv; + print_ref_list(&filter, sorting); print_columns(&output, colopts, NULL); string_list_clear(&output, 0); - return ret; + return 0; } else if (edit_description) { const char *branch_name; struct strbuf branch_ref = STRBUF_INIT; if (!argc) { - if (detached) + if (filter.detached) die(_("Cannot give description to detached HEAD")); branch_name = head; } else if (argc == 1) @@ -1011,7 +807,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix) if (!branch) die(_("no such branch '%s'"), argv[0]); - if (kinds != REF_LOCAL_BRANCH) + if (filter.kind != FILTER_REFS_BRANCHES) die(_("-a and -r options to 'git branch' do not make sense with a branch name")); if (track == BRANCH_TRACK_OVERRIDE) diff --git a/builtin/clone.c b/builtin/clone.c index 578da85254..9eaecd9a7c 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -294,9 +294,14 @@ static int add_one_reference(struct string_list_item *item, void *cb_data) char *ref_git_git = mkpathdup("%s/.git", ref_git); free(ref_git); ref_git = ref_git_git; - } else if (!is_directory(mkpath("%s/objects", ref_git))) + } else if (!is_directory(mkpath("%s/objects", ref_git))) { + struct strbuf sb = STRBUF_INIT; + if (get_common_dir(&sb, ref_git)) + die(_("reference repository '%s' as a linked checkout is not supported yet."), + item->string); die(_("reference repository '%s' is not a local repository."), item->string); + } if (!access(mkpath("%s/shallow", ref_git), F_OK)) die(_("reference repository '%s' is shallow"), item->string); @@ -424,8 +429,10 @@ static void clone_local(const char *src_repo, const char *dest_repo) } else { struct strbuf src = STRBUF_INIT; struct strbuf dest = STRBUF_INIT; - strbuf_addf(&src, "%s/objects", src_repo); - strbuf_addf(&dest, "%s/objects", dest_repo); + get_common_dir(&src, src_repo); + get_common_dir(&dest, dest_repo); + strbuf_addstr(&src, "/objects"); + strbuf_addstr(&dest, "/objects"); copy_or_link_directory(&src, &dest, src_repo, src.len); strbuf_release(&src); strbuf_release(&dest); @@ -1064,8 +1071,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix) transport_unlock_pack(transport); transport_disconnect(transport); - if (option_dissociate) + if (option_dissociate) { + close_all_packs(); dissociate_from_references(); + } junk_mode = JUNK_LEAVE_REPO; err = checkout(); diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c index 7919206187..4e9f6c29bf 100644 --- a/builtin/for-each-ref.c +++ b/builtin/for-each-ref.c @@ -7,6 +7,9 @@ static char const * const for_each_ref_usage[] = { N_("git for-each-ref [] []"), + N_("git for-each-ref [--points-at ]"), + N_("git for-each-ref [(--merged | --no-merged) []]"), + N_("git for-each-ref [--contains []]"), NULL }; @@ -34,9 +37,18 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix) OPT_STRING( 0 , "format", &format, N_("format"), N_("format to use for the output")), OPT_CALLBACK(0 , "sort", sorting_tail, N_("key"), N_("field name to sort on"), &parse_opt_ref_sorting), + OPT_CALLBACK(0, "points-at", &filter.points_at, + N_("object"), N_("print only refs which points at the given object"), + parse_opt_object_name), + OPT_MERGED(&filter, N_("print only refs that are merged")), + OPT_NO_MERGED(&filter, N_("print only refs that are not merged")), + OPT_CONTAINS(&filter.with_commit, N_("print only refs which contain the commit")), OPT_END(), }; + memset(&array, 0, sizeof(array)); + memset(&filter, 0, sizeof(filter)); + parse_options(argc, argv, prefix, opts, for_each_ref_usage, 0); if (maxcount < 0) { error("invalid --count argument: `%d'", maxcount); @@ -55,9 +67,8 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix) /* for warn_ambiguous_refs */ git_config(git_default_config, NULL); - memset(&array, 0, sizeof(array)); - memset(&filter, 0, sizeof(filter)); filter.name_patterns = argv; + filter.match_as_path = 1; filter_refs(&array, &filter, FILTER_REFS_ALL | FILTER_REFS_INCLUDE_BROKEN); ref_array_sort(sorting, &array); diff --git a/builtin/fsck.c b/builtin/fsck.c index 079470342f..b9a74f0cf6 100644 --- a/builtin/fsck.c +++ b/builtin/fsck.c @@ -38,6 +38,7 @@ static int show_dangling = 1; #define ERROR_OBJECT 01 #define ERROR_REACHABLE 02 #define ERROR_PACK 04 +#define ERROR_REFS 010 #ifdef NO_D_INO_IN_DIRENT #define SORT_DIRENT 0 @@ -521,8 +522,10 @@ static int fsck_handle_ref(const char *refname, const struct object_id *oid, /* We'll continue with the rest despite the error.. */ return 0; } - if (obj->type != OBJ_COMMIT && is_branch(refname)) + if (obj->type != OBJ_COMMIT && is_branch(refname)) { error("%s: not a commit", refname); + errors_found |= ERROR_REFS; + } default_refs++; obj->used = 1; mark_object_reachable(obj); @@ -585,17 +588,23 @@ static int fsck_head_link(void) fprintf(stderr, "Checking HEAD link\n"); head_points_at = resolve_ref_unsafe("HEAD", 0, head_oid.hash, &flag); - if (!head_points_at) + if (!head_points_at) { + errors_found |= ERROR_REFS; return error("Invalid HEAD"); + } if (!strcmp(head_points_at, "HEAD")) /* detached HEAD */ null_is_error = 1; - else if (!starts_with(head_points_at, "refs/heads/")) + else if (!starts_with(head_points_at, "refs/heads/")) { + errors_found |= ERROR_REFS; return error("HEAD points to something strange (%s)", head_points_at); + } if (is_null_oid(&head_oid)) { - if (null_is_error) + if (null_is_error) { + errors_found |= ERROR_REFS; return error("HEAD: detached HEAD points at nothing"); + } fprintf(stderr, "notice: HEAD points to an unborn branch (%s)\n", head_points_at + 11); } @@ -615,6 +624,7 @@ static int fsck_cache_tree(struct cache_tree *it) if (!obj) { error("%s: invalid sha1 pointer in cache-tree", sha1_to_hex(it->sha1)); + errors_found |= ERROR_REFS; return 1; } obj->used = 1; diff --git a/builtin/gc.c b/builtin/gc.c index 0ad8d30b56..9ff0204940 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -44,6 +44,7 @@ static struct argv_array prune_worktrees = ARGV_ARRAY_INIT; static struct argv_array rerere = ARGV_ARRAY_INIT; static struct tempfile pidfile; +static struct lock_file log_lock; static void git_config_date_string(const char *key, const char **output) { @@ -56,6 +57,28 @@ static void git_config_date_string(const char *key, const char **output) } } +static void process_log_file(void) +{ + struct stat st; + if (!fstat(get_lock_file_fd(&log_lock), &st) && st.st_size) + commit_lock_file(&log_lock); + else + rollback_lock_file(&log_lock); +} + +static void process_log_file_at_exit(void) +{ + fflush(stderr); + process_log_file(); +} + +static void process_log_file_on_signal(int signo) +{ + process_log_file(); + sigchain_pop(signo); + raise(signo); +} + static void gc_config(void) { const char *value; @@ -241,6 +264,24 @@ static const char *lock_repo_for_gc(int force, pid_t* ret_pid) return NULL; } +static int report_last_gc_error(void) +{ + struct strbuf sb = STRBUF_INIT; + int ret; + + ret = strbuf_read_file(&sb, git_path("gc.log"), 0); + if (ret > 0) + return error(_("The last gc run reported the following. " + "Please correct the root cause\n" + "and remove %s.\n" + "Automatic cleanup will not be performed " + "until the file is removed.\n\n" + "%s"), + git_path("gc.log"), sb.buf); + strbuf_release(&sb); + return 0; +} + static int gc_before_repack(void) { if (pack_refs && run_command_v_opt(pack_refs_cmd.argv, RUN_GIT_CMD)) @@ -262,6 +303,7 @@ int cmd_gc(int argc, const char **argv, const char *prefix) int force = 0; const char *name; pid_t pid; + int daemonized = 0; struct option builtin_gc_options[] = { OPT__QUIET(&quiet, N_("suppress progress reporting")), @@ -318,13 +360,16 @@ int cmd_gc(int argc, const char **argv, const char *prefix) fprintf(stderr, _("See \"git help gc\" for manual housekeeping.\n")); } if (detach_auto) { + if (report_last_gc_error()) + return -1; + if (gc_before_repack()) return -1; /* * failure to daemonize is ok, we'll continue * in foreground */ - daemonize(); + daemonized = !daemonize(); } } else add_repack_all_option(); @@ -337,6 +382,15 @@ int cmd_gc(int argc, const char **argv, const char *prefix) name, (uintmax_t)pid); } + if (daemonized) { + hold_lock_file_for_update(&log_lock, + git_path("gc.log"), + LOCK_DIE_ON_ERROR); + dup2(get_lock_file_fd(&log_lock), 2); + sigchain_push_common(process_log_file_on_signal); + atexit(process_log_file_at_exit); + } + if (gc_before_repack()) return -1; diff --git a/builtin/ls-remote.c b/builtin/ls-remote.c index 4554dbc8a9..5e9d5450b7 100644 --- a/builtin/ls-remote.c +++ b/builtin/ls-remote.c @@ -4,7 +4,7 @@ #include "remote.h" static const char ls_remote_usage[] = -"git ls-remote [--heads] [--tags] [-u | --upload-pack ]\n" +"git ls-remote [--heads] [--tags] [--upload-pack=]\n" " [-q | --quiet] [--exit-code] [--get-url] [ [...]]"; /* diff --git a/builtin/merge-file.c b/builtin/merge-file.c index ea8093f676..50d0bc873b 100644 --- a/builtin/merge-file.c +++ b/builtin/merge-file.c @@ -75,7 +75,8 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix) names[i] = argv[i]; if (read_mmfile(mmfs + i, fname)) return -1; - if (buffer_is_binary(mmfs[i].ptr, mmfs[i].size)) + if (mmfs[i].size > MAX_XDIFF_SIZE || + buffer_is_binary(mmfs[i].ptr, mmfs[i].size)) return error("Cannot merge binary files: %s", argv[i]); } diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c index f9ab48597e..2a4aafec6a 100644 --- a/builtin/merge-tree.c +++ b/builtin/merge-tree.c @@ -118,7 +118,8 @@ static void show_diff(struct merge_list *entry) if (!dst.ptr) size = 0; dst.size = size; - xdi_diff(&src, &dst, &xpp, &xecfg, &ecb); + if (xdi_diff(&src, &dst, &xpp, &xecfg, &ecb)) + die("unable to generate diff"); free(src.ptr); free(dst.ptr); } diff --git a/builtin/pull.c b/builtin/pull.c index 7e3c11ea63..a39bb0a11f 100644 --- a/builtin/pull.c +++ b/builtin/pull.c @@ -112,7 +112,7 @@ static struct option pull_options[] = { /* Options passed to git-merge or git-rebase */ OPT_GROUP(N_("Options related to merging")), { OPTION_CALLBACK, 'r', "rebase", &opt_rebase, - N_("false|true|preserve"), + "false|true|preserve", N_("incorporate changes by rebasing rather than merging"), PARSE_OPT_OPTARG, parse_opt_rebase }, OPT_PASSTHRU('n', NULL, &opt_diffstat, NULL, diff --git a/builtin/remote.c b/builtin/remote.c index 181668dedd..e4c3ea130c 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -18,6 +18,7 @@ static const char * const builtin_remote_usage[] = { N_("git remote prune [-n | --dry-run] "), N_("git remote [-v | --verbose] update [-p | --prune] [( | )...]"), N_("git remote set-branches [--add] ..."), + N_("git remote get-url [--push] [--all] "), N_("git remote set-url [--push] []"), N_("git remote set-url --add "), N_("git remote set-url --delete "), @@ -65,6 +66,11 @@ static const char * const builtin_remote_update_usage[] = { NULL }; +static const char * const builtin_remote_geturl_usage[] = { + N_("git remote get-url [--push] [--all] "), + NULL +}; + static const char * const builtin_remote_seturl_usage[] = { N_("git remote set-url [--push] []"), N_("git remote set-url --add "), @@ -1467,6 +1473,57 @@ static int set_branches(int argc, const char **argv) return set_remote_branches(argv[0], argv + 1, add_mode); } +static int get_url(int argc, const char **argv) +{ + int i, push_mode = 0, all_mode = 0; + const char *remotename = NULL; + struct remote *remote; + const char **url; + int url_nr; + struct option options[] = { + OPT_BOOL('\0', "push", &push_mode, + N_("query push URLs rather than fetch URLs")), + OPT_BOOL('\0', "all", &all_mode, + N_("return all URLs")), + OPT_END() + }; + argc = parse_options(argc, argv, NULL, options, builtin_remote_geturl_usage, 0); + + if (argc != 1) + usage_with_options(builtin_remote_geturl_usage, options); + + remotename = argv[0]; + + if (!remote_is_configured(remotename)) + die(_("No such remote '%s'"), remotename); + remote = remote_get(remotename); + + url_nr = 0; + if (push_mode) { + url = remote->pushurl; + url_nr = remote->pushurl_nr; + } + /* else fetch mode */ + + /* Use the fetch URL when no push URLs were found or requested. */ + if (!url_nr) { + url = remote->url; + url_nr = remote->url_nr; + } + + if (!url_nr) + die(_("no URLs configured for remote '%s'"), remotename); + + if (all_mode) { + for (i = 0; i < url_nr; i++) + printf_ln("%s", url[i]); + } else { + printf_ln("%s", *url); + } + + return 0; +} + static int set_url(int argc, const char **argv) { int i, push_mode = 0, add_mode = 0, delete_mode = 0; @@ -1576,6 +1633,8 @@ int cmd_remote(int argc, const char **argv, const char *prefix) result = set_head(argc, argv); else if (!strcmp(argv[0], "set-branches")) result = set_branches(argc, argv); + else if (!strcmp(argv[0], "get-url")) + result = get_url(argc, argv); else if (!strcmp(argv[0], "set-url")) result = set_url(argc, argv); else if (!strcmp(argv[0], "show")) diff --git a/builtin/rerere.c b/builtin/rerere.c index 12535c9b4f..1bf72423bf 100644 --- a/builtin/rerere.c +++ b/builtin/rerere.c @@ -29,9 +29,10 @@ static int diff_two(const char *file1, const char *label1, xdemitconf_t xecfg; xdemitcb_t ecb; mmfile_t minus, plus; + int ret; if (read_mmfile(&minus, file1) || read_mmfile(&plus, file2)) - return 1; + return -1; printf("--- a/%s\n+++ b/%s\n", label1, label2); fflush(stdout); @@ -40,11 +41,11 @@ static int diff_two(const char *file1, const char *label1, memset(&xecfg, 0, sizeof(xecfg)); xecfg.ctxlen = 3; ecb.outf = outf; - xdi_diff(&minus, &plus, &xpp, &xecfg, &ecb); + ret = xdi_diff(&minus, &plus, &xpp, &xecfg, &ecb); free(minus.ptr); free(plus.ptr); - return 0; + return ret; } int cmd_rerere(int argc, const char **argv, const char *prefix) @@ -103,8 +104,9 @@ int cmd_rerere(int argc, const char **argv, const char *prefix) return 0; for (i = 0; i < merge_rr.nr; i++) { const char *path = merge_rr.items[i].string; - const char *name = (const char *)merge_rr.items[i].util; - diff_two(rerere_path(name, "preimage"), path, path, path); + const struct rerere_id *id = merge_rr.items[i].util; + if (diff_two(rerere_path(id, "preimage"), path, path, path)) + die("unable to generate diff for %s", rerere_path(id, NULL)); } } else usage_with_options(rerere_usage, options); diff --git a/builtin/show-branch.c b/builtin/show-branch.c index c87c46eb38..408ce70307 100644 --- a/builtin/show-branch.c +++ b/builtin/show-branch.c @@ -730,7 +730,6 @@ int cmd_show_branch(int ac, const char **av, const char *prefix) if (reflog) { struct object_id oid; - char nth_desc[256]; char *ref; int base = 0; unsigned int flags = 0; @@ -769,6 +768,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix) for (i = 0; i < reflog; i++) { char *logmsg; + char *nth_desc; const char *msg; unsigned long timestamp; int tz; @@ -788,8 +788,10 @@ int cmd_show_branch(int ac, const char **av, const char *prefix) DATE_MODE(RELATIVE)), msg); free(logmsg); - sprintf(nth_desc, "%s@{%d}", *av, base+i); + + nth_desc = xstrfmt("%s@{%d}", *av, base+i); append_ref(nth_desc, &oid, 1); + free(nth_desc); } free(ref); } diff --git a/builtin/show-ref.c b/builtin/show-ref.c index dfbc314ac2..131ef28e5c 100644 --- a/builtin/show-ref.c +++ b/builtin/show-ref.c @@ -8,7 +8,7 @@ static const char * const show_ref_usage[] = { N_("git show-ref [-q | --quiet] [--verify] [--head] [-d | --dereference] [-s | --hash[=]] [--abbrev[=]] [--tags] [--heads] [--] [...]"), - N_("git show-ref --exclude-existing[=pattern] < ref-list"), + N_("git show-ref --exclude-existing[=] < "), NULL }; diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c new file mode 100644 index 0000000000..f4c3eff179 --- /dev/null +++ b/builtin/submodule--helper.c @@ -0,0 +1,282 @@ +#include "builtin.h" +#include "cache.h" +#include "parse-options.h" +#include "quote.h" +#include "pathspec.h" +#include "dir.h" +#include "utf8.h" +#include "submodule.h" +#include "submodule-config.h" +#include "string-list.h" +#include "run-command.h" + +struct module_list { + const struct cache_entry **entries; + int alloc, nr; +}; +#define MODULE_LIST_INIT { NULL, 0, 0 } + +static int module_list_compute(int argc, const char **argv, + const char *prefix, + struct pathspec *pathspec, + struct module_list *list) +{ + int i, result = 0; + char *max_prefix, *ps_matched = NULL; + int max_prefix_len; + parse_pathspec(pathspec, 0, + PATHSPEC_PREFER_FULL | + PATHSPEC_STRIP_SUBMODULE_SLASH_CHEAP, + prefix, argv); + + /* Find common prefix for all pathspec's */ + max_prefix = common_prefix(pathspec); + max_prefix_len = max_prefix ? strlen(max_prefix) : 0; + + if (pathspec->nr) + ps_matched = xcalloc(pathspec->nr, 1); + + if (read_cache() < 0) + die(_("index file corrupt")); + + for (i = 0; i < active_nr; i++) { + const struct cache_entry *ce = active_cache[i]; + + if (!S_ISGITLINK(ce->ce_mode) || + !match_pathspec(pathspec, ce->name, ce_namelen(ce), + max_prefix_len, ps_matched, 1)) + continue; + + ALLOC_GROW(list->entries, list->nr + 1, list->alloc); + list->entries[list->nr++] = ce; + while (i + 1 < active_nr && + !strcmp(ce->name, active_cache[i + 1]->name)) + /* + * Skip entries with the same name in different stages + * to make sure an entry is returned only once. + */ + i++; + } + free(max_prefix); + + if (ps_matched && report_path_error(ps_matched, pathspec, prefix)) + result = -1; + + free(ps_matched); + + return result; +} + +static int module_list(int argc, const char **argv, const char *prefix) +{ + int i; + struct pathspec pathspec; + struct module_list list = MODULE_LIST_INIT; + + struct option module_list_options[] = { + OPT_STRING(0, "prefix", &prefix, + N_("path"), + N_("alternative anchor for relative paths")), + OPT_END() + }; + + const char *const git_submodule_helper_usage[] = { + N_("git submodule--helper list [--prefix=] [...]"), + NULL + }; + + argc = parse_options(argc, argv, prefix, module_list_options, + git_submodule_helper_usage, 0); + + if (module_list_compute(argc, argv, prefix, &pathspec, &list) < 0) { + printf("#unmatched\n"); + return 1; + } + + for (i = 0; i < list.nr; i++) { + const struct cache_entry *ce = list.entries[i]; + + if (ce_stage(ce)) + printf("%06o %s U\t", ce->ce_mode, sha1_to_hex(null_sha1)); + else + printf("%06o %s %d\t", ce->ce_mode, sha1_to_hex(ce->sha1), ce_stage(ce)); + + utf8_fprintf(stdout, "%s\n", ce->name); + } + return 0; +} + +static int module_name(int argc, const char **argv, const char *prefix) +{ + const struct submodule *sub; + + if (argc != 2) + usage(_("git submodule--helper name ")); + + gitmodules_config(); + sub = submodule_from_path(null_sha1, argv[1]); + + if (!sub) + die(_("no submodule mapping found in .gitmodules for path '%s'"), + argv[1]); + + printf("%s\n", sub->name); + + return 0; +} +static int clone_submodule(const char *path, const char *gitdir, const char *url, + const char *depth, const char *reference, int quiet) +{ + struct child_process cp; + child_process_init(&cp); + + argv_array_push(&cp.args, "clone"); + argv_array_push(&cp.args, "--no-checkout"); + if (quiet) + argv_array_push(&cp.args, "--quiet"); + if (depth && *depth) + argv_array_pushl(&cp.args, "--depth", depth, NULL); + if (reference && *reference) + argv_array_pushl(&cp.args, "--reference", reference, NULL); + if (gitdir && *gitdir) + argv_array_pushl(&cp.args, "--separate-git-dir", gitdir, NULL); + + argv_array_push(&cp.args, url); + argv_array_push(&cp.args, path); + + cp.git_cmd = 1; + cp.env = local_repo_env; + cp.no_stdin = 1; + + return run_command(&cp); +} + +static int module_clone(int argc, const char **argv, const char *prefix) +{ + const char *path = NULL, *name = NULL, *url = NULL; + const char *reference = NULL, *depth = NULL; + int quiet = 0; + FILE *submodule_dot_git; + char *sm_gitdir, *cwd, *p; + struct strbuf rel_path = STRBUF_INIT; + struct strbuf sb = STRBUF_INIT; + + struct option module_clone_options[] = { + OPT_STRING(0, "prefix", &prefix, + N_("path"), + N_("alternative anchor for relative paths")), + OPT_STRING(0, "path", &path, + N_("path"), + N_("where the new submodule will be cloned to")), + OPT_STRING(0, "name", &name, + N_("string"), + N_("name of the new submodule")), + OPT_STRING(0, "url", &url, + N_("string"), + N_("url where to clone the submodule from")), + OPT_STRING(0, "reference", &reference, + N_("string"), + N_("reference repository")), + OPT_STRING(0, "depth", &depth, + N_("string"), + N_("depth for shallow clones")), + OPT__QUIET(&quiet, "Suppress output for cloning a submodule"), + OPT_END() + }; + + const char *const git_submodule_helper_usage[] = { + N_("git submodule--helper clone [--prefix=] [--quiet] " + "[--reference ] [--name ] [--url ]" + "[--depth ] [--] [...]"), + NULL + }; + + argc = parse_options(argc, argv, prefix, module_clone_options, + git_submodule_helper_usage, 0); + + strbuf_addf(&sb, "%s/modules/%s", get_git_dir(), name); + sm_gitdir = strbuf_detach(&sb, NULL); + + if (!file_exists(sm_gitdir)) { + if (safe_create_leading_directories_const(sm_gitdir) < 0) + die(_("could not create directory '%s'"), sm_gitdir); + if (clone_submodule(path, sm_gitdir, url, depth, reference, quiet)) + die(_("clone of '%s' into submodule path '%s' failed"), + url, path); + } else { + if (safe_create_leading_directories_const(path) < 0) + die(_("could not create directory '%s'"), path); + strbuf_addf(&sb, "%s/index", sm_gitdir); + unlink_or_warn(sb.buf); + strbuf_reset(&sb); + } + + /* Write a .git file in the submodule to redirect to the superproject. */ + if (safe_create_leading_directories_const(path) < 0) + die(_("could not create directory '%s'"), path); + + if (path && *path) + strbuf_addf(&sb, "%s/.git", path); + else + strbuf_addstr(&sb, ".git"); + + if (safe_create_leading_directories_const(sb.buf) < 0) + die(_("could not create leading directories of '%s'"), sb.buf); + submodule_dot_git = fopen(sb.buf, "w"); + if (!submodule_dot_git) + die_errno(_("cannot open file '%s'"), sb.buf); + + fprintf(submodule_dot_git, "gitdir: %s\n", + relative_path(sm_gitdir, path, &rel_path)); + if (fclose(submodule_dot_git)) + die(_("could not close file %s"), sb.buf); + strbuf_reset(&sb); + strbuf_reset(&rel_path); + + cwd = xgetcwd(); + /* Redirect the worktree of the submodule in the superproject's config */ + if (!is_absolute_path(sm_gitdir)) { + strbuf_addf(&sb, "%s/%s", cwd, sm_gitdir); + free(sm_gitdir); + sm_gitdir = strbuf_detach(&sb, NULL); + } + + strbuf_addf(&sb, "%s/%s", cwd, path); + p = git_pathdup_submodule(path, "config"); + if (!p) + die(_("could not get submodule directory for '%s'"), path); + git_config_set_in_file(p, "core.worktree", + relative_path(sb.buf, sm_gitdir, &rel_path)); + strbuf_release(&sb); + strbuf_release(&rel_path); + free(sm_gitdir); + free(cwd); + free(p); + return 0; +} + +struct cmd_struct { + const char *cmd; + int (*fn)(int, const char **, const char *); +}; + +static struct cmd_struct commands[] = { + {"list", module_list}, + {"name", module_name}, + {"clone", module_clone}, +}; + +int cmd_submodule__helper(int argc, const char **argv, const char *prefix) +{ + int i; + if (argc < 2) + die(_("fatal: submodule--helper subcommand must be " + "called with a subcommand")); + + for (i = 0; i < ARRAY_SIZE(commands); i++) + if (!strcmp(argv[1], commands[i].cmd)) + return commands[i].fn(argc - 1, argv + 1, prefix); + + die(_("fatal: '%s' is not a valid submodule--helper " + "subcommand"), argv[1]); +} diff --git a/builtin/tag.c b/builtin/tag.c index cccca99104..9e17dca7ca 100644 --- a/builtin/tag.c +++ b/builtin/tag.c @@ -17,271 +17,49 @@ #include "gpg-interface.h" #include "sha1-array.h" #include "column.h" +#include "ref-filter.h" static const char * const git_tag_usage[] = { N_("git tag [-a | -s | -u ] [-f] [-m | -F ] []"), N_("git tag -d ..."), N_("git tag -l [-n[]] [--contains ] [--points-at ]" - "\n\t\t[...]"), + "\n\t\t[--format=] [--[no-]merged []] [...]"), N_("git tag -v ..."), NULL }; -#define STRCMP_SORT 0 /* must be zero */ -#define VERCMP_SORT 1 -#define SORT_MASK 0x7fff -#define REVERSE_SORT 0x8000 - -static int tag_sort; - -struct tag_filter { - const char **patterns; - int lines; - int sort; - struct string_list tags; - struct commit_list *with_commit; -}; - -static struct sha1_array points_at; static unsigned int colopts; -static int match_pattern(const char **patterns, const char *ref) -{ - /* no pattern means match everything */ - if (!*patterns) - return 1; - for (; *patterns; patterns++) - if (!wildmatch(*patterns, ref, 0, NULL)) - return 1; - return 0; -} - -static const unsigned char *match_points_at(const char *refname, - const unsigned char *sha1) -{ - const unsigned char *tagged_sha1 = NULL; - struct object *obj; - - if (sha1_array_lookup(&points_at, sha1) >= 0) - return sha1; - obj = parse_object(sha1); - if (!obj) - die(_("malformed object at '%s'"), refname); - if (obj->type == OBJ_TAG) - tagged_sha1 = ((struct tag *)obj)->tagged->sha1; - if (tagged_sha1 && sha1_array_lookup(&points_at, tagged_sha1) >= 0) - return tagged_sha1; - return NULL; -} - -static int in_commit_list(const struct commit_list *want, struct commit *c) -{ - for (; want; want = want->next) - if (!hashcmp(want->item->object.sha1, c->object.sha1)) - return 1; - return 0; -} - -enum contains_result { - CONTAINS_UNKNOWN = -1, - CONTAINS_NO = 0, - CONTAINS_YES = 1 -}; - -/* - * Test whether the candidate or one of its parents is contained in the list. - * Do not recurse to find out, though, but return -1 if inconclusive. - */ -static enum contains_result contains_test(struct commit *candidate, - const struct commit_list *want) -{ - /* was it previously marked as containing a want commit? */ - if (candidate->object.flags & TMP_MARK) - return 1; - /* or marked as not possibly containing a want commit? */ - if (candidate->object.flags & UNINTERESTING) - return 0; - /* or are we it? */ - if (in_commit_list(want, candidate)) { - candidate->object.flags |= TMP_MARK; - return 1; - } - - if (parse_commit(candidate) < 0) - return 0; - - return -1; -} - -/* - * Mimicking the real stack, this stack lives on the heap, avoiding stack - * overflows. - * - * At each recursion step, the stack items points to the commits whose - * ancestors are to be inspected. - */ -struct stack { - int nr, alloc; - struct stack_entry { - struct commit *commit; - struct commit_list *parents; - } *stack; -}; - -static void push_to_stack(struct commit *candidate, struct stack *stack) -{ - int index = stack->nr++; - ALLOC_GROW(stack->stack, stack->nr, stack->alloc); - stack->stack[index].commit = candidate; - stack->stack[index].parents = candidate->parents; -} - -static enum contains_result contains(struct commit *candidate, - const struct commit_list *want) -{ - struct stack stack = { 0, 0, NULL }; - int result = contains_test(candidate, want); - - if (result != CONTAINS_UNKNOWN) - return result; - - push_to_stack(candidate, &stack); - while (stack.nr) { - struct stack_entry *entry = &stack.stack[stack.nr - 1]; - struct commit *commit = entry->commit; - struct commit_list *parents = entry->parents; - - if (!parents) { - commit->object.flags |= UNINTERESTING; - stack.nr--; - } - /* - * If we just popped the stack, parents->item has been marked, - * therefore contains_test will return a meaningful 0 or 1. - */ - else switch (contains_test(parents->item, want)) { - case CONTAINS_YES: - commit->object.flags |= TMP_MARK; - stack.nr--; - break; - case CONTAINS_NO: - entry->parents = parents->next; - break; - case CONTAINS_UNKNOWN: - push_to_stack(parents->item, &stack); - break; - } - } - free(stack.stack); - return contains_test(candidate, want); -} - -static void show_tag_lines(const struct object_id *oid, int lines) +static int list_tags(struct ref_filter *filter, struct ref_sorting *sorting, const char *format) { + struct ref_array array; + char *to_free = NULL; int i; - unsigned long size; - enum object_type type; - char *buf, *sp, *eol; - size_t len; - - buf = read_sha1_file(oid->hash, &type, &size); - if (!buf) - die_errno("unable to read object %s", oid_to_hex(oid)); - if (type != OBJ_COMMIT && type != OBJ_TAG) - goto free_return; - if (!size) - die("an empty %s object %s?", - typename(type), oid_to_hex(oid)); - - /* skip header */ - sp = strstr(buf, "\n\n"); - if (!sp) - goto free_return; - - /* only take up to "lines" lines, and strip the signature from a tag */ - if (type == OBJ_TAG) - size = parse_signature(buf, size); - for (i = 0, sp += 2; i < lines && sp < buf + size; i++) { - if (i) - printf("\n "); - eol = memchr(sp, '\n', size - (sp - buf)); - len = eol ? eol - sp : size - (sp - buf); - fwrite(sp, len, 1, stdout); - if (!eol) - break; - sp = eol + 1; - } -free_return: - free(buf); -} - -static int show_reference(const char *refname, const struct object_id *oid, - int flag, void *cb_data) -{ - struct tag_filter *filter = cb_data; - if (match_pattern(filter->patterns, refname)) { - if (filter->with_commit) { - struct commit *commit; + memset(&array, 0, sizeof(array)); - commit = lookup_commit_reference_gently(oid->hash, 1); - if (!commit) - return 0; - if (!contains(commit, filter->with_commit)) - return 0; - } - - if (points_at.nr && !match_points_at(refname, oid->hash)) - return 0; + if (filter->lines == -1) + filter->lines = 0; - if (!filter->lines) { - if (filter->sort) - string_list_append(&filter->tags, refname); - else - printf("%s\n", refname); - return 0; - } - printf("%-15s ", refname); - show_tag_lines(oid, filter->lines); - putchar('\n'); + if (!format) { + if (filter->lines) { + to_free = xstrfmt("%s %%(contents:lines=%d)", + "%(align:15)%(refname:short)%(end)", + filter->lines); + format = to_free; + } else + format = "%(refname:short)"; } - return 0; -} + verify_ref_format(format); + filter_refs(&array, filter, FILTER_REFS_TAGS); + ref_array_sort(sorting, &array); -static int sort_by_version(const void *a_, const void *b_) -{ - const struct string_list_item *a = a_; - const struct string_list_item *b = b_; - return versioncmp(a->string, b->string); -} + for (i = 0; i < array.nr; i++) + show_ref_array_item(array.items[i], format, 0); + ref_array_clear(&array); + free(to_free); -static int list_tags(const char **patterns, int lines, - struct commit_list *with_commit, int sort) -{ - struct tag_filter filter; - - filter.patterns = patterns; - filter.lines = lines; - filter.sort = sort; - filter.with_commit = with_commit; - memset(&filter.tags, 0, sizeof(filter.tags)); - filter.tags.strdup_strings = 1; - - for_each_tag_ref(show_reference, (void *)&filter); - if (sort) { - int i; - if ((sort & SORT_MASK) == VERCMP_SORT) - qsort(filter.tags.items, filter.tags.nr, - sizeof(struct string_list_item), sort_by_version); - if (sort & REVERSE_SORT) - for (i = filter.tags.nr - 1; i >= 0; i--) - printf("%s\n", filter.tags.items[i].string); - else - for (i = 0; i < filter.tags.nr; i++) - printf("%s\n", filter.tags.items[i].string); - string_list_clear(&filter.tags, 0); - } return 0; } @@ -348,35 +126,26 @@ static const char tag_template_nocleanup[] = "Lines starting with '%c' will be kept; you may remove them" " yourself if you want to.\n"); -/* - * Parse a sort string, and return 0 if parsed successfully. Will return - * non-zero when the sort string does not parse into a known type. If var is - * given, the error message becomes a warning and includes information about - * the configuration value. - */ -static int parse_sort_string(const char *var, const char *arg, int *sort) +/* Parse arg given and add it the ref_sorting array */ +static int parse_sorting_string(const char *arg, struct ref_sorting **sorting_tail) { - int type = 0, flags = 0; + struct ref_sorting *s; + int len; - if (skip_prefix(arg, "-", &arg)) - flags |= REVERSE_SORT; + s = xcalloc(1, sizeof(*s)); + s->next = *sorting_tail; + *sorting_tail = s; - if (skip_prefix(arg, "version:", &arg) || skip_prefix(arg, "v:", &arg)) - type = VERCMP_SORT; - else - type = STRCMP_SORT; - - if (strcmp(arg, "refname")) { - if (!var) - return error(_("unsupported sort specification '%s'"), arg); - else { - warning(_("unsupported sort specification '%s' in variable '%s'"), - var, arg); - return -1; - } + if (*arg == '-') { + s->reverse = 1; + arg++; } + if (skip_prefix(arg, "version:", &arg) || + skip_prefix(arg, "v:", &arg)) + s->version = 1; - *sort = (type | flags); + len = strlen(arg); + s->atom = parse_ref_filter_atom(arg, arg+len); return 0; } @@ -384,11 +153,12 @@ static int parse_sort_string(const char *var, const char *arg, int *sort) static int git_tag_config(const char *var, const char *value, void *cb) { int status; + struct ref_sorting **sorting_tail = (struct ref_sorting **)cb; if (!strcmp(var, "tag.sort")) { if (!value) return config_error_nonbool(var); - parse_sort_string(var, value, &tag_sort); + parse_sorting_string(value, sorting_tail); return 0; } @@ -546,30 +316,6 @@ static int strbuf_check_tag_ref(struct strbuf *sb, const char *name) return check_refname_format(sb->buf, 0); } -static int parse_opt_points_at(const struct option *opt __attribute__((unused)), - const char *arg, int unset) -{ - unsigned char sha1[20]; - - if (unset) { - sha1_array_clear(&points_at); - return 0; - } - if (!arg) - return error(_("switch 'points-at' requires an object")); - if (get_sha1(arg, sha1)) - return error(_("malformed object name '%s'"), arg); - sha1_array_append(&points_at, sha1); - return 0; -} - -static int parse_opt_sort(const struct option *opt, const char *arg, int unset) -{ - int *sort = opt->value; - - return parse_sort_string(NULL, arg, sort); -} - int cmd_tag(int argc, const char **argv, const char *prefix) { struct strbuf buf = STRBUF_INIT; @@ -578,17 +324,19 @@ int cmd_tag(int argc, const char **argv, const char *prefix) const char *object_ref, *tag; struct create_tag_options opt; char *cleanup_arg = NULL; - int annotate = 0, force = 0, lines = -1; int create_reflog = 0; + int annotate = 0, force = 0; int cmdmode = 0; const char *msgfile = NULL, *keyid = NULL; struct msg_arg msg = { 0, STRBUF_INIT }; - struct commit_list *with_commit = NULL; struct ref_transaction *transaction; struct strbuf err = STRBUF_INIT; + struct ref_filter filter; + static struct ref_sorting *sorting = NULL, **sorting_tail = &sorting; + const char *format = NULL; struct option options[] = { OPT_CMDMODE('l', "list", &cmdmode, N_("list tag names"), 'l'), - { OPTION_INTEGER, 'n', NULL, &lines, N_("n"), + { OPTION_INTEGER, 'n', NULL, &filter.lines, N_("n"), N_("print lines of each tag message"), PARSE_OPT_OPTARG, NULL, 1 }, OPT_CMDMODE('d', "delete", &cmdmode, N_("delete tags"), 'd'), @@ -606,36 +354,29 @@ int cmd_tag(int argc, const char **argv, const char *prefix) OPT_STRING('u', "local-user", &keyid, N_("key-id"), N_("use another key to sign the tag")), OPT__FORCE(&force, N_("replace the tag if exists")), - OPT_BOOL(0, "create-reflog", &create_reflog, N_("create_reflog")), + OPT_BOOL(0, "create-reflog", &create_reflog, N_("create a reflog")), OPT_GROUP(N_("Tag listing options")), OPT_COLUMN(0, "column", &colopts, N_("show tag list in columns")), + OPT_CONTAINS(&filter.with_commit, N_("print only tags that contain the commit")), + OPT_WITH(&filter.with_commit, N_("print only tags that contain the commit")), + OPT_MERGED(&filter, N_("print only tags that are merged")), + OPT_NO_MERGED(&filter, N_("print only tags that are not merged")), + OPT_CALLBACK(0 , "sort", sorting_tail, N_("key"), + N_("field name to sort on"), &parse_opt_ref_sorting), { - OPTION_CALLBACK, 0, "sort", &tag_sort, N_("type"), N_("sort tags"), - PARSE_OPT_NONEG, parse_opt_sort - }, - { - OPTION_CALLBACK, 0, "contains", &with_commit, N_("commit"), - N_("print only tags that contain the commit"), - PARSE_OPT_LASTARG_DEFAULT, - parse_opt_with_commit, (intptr_t)"HEAD", - }, - { - OPTION_CALLBACK, 0, "with", &with_commit, N_("commit"), - N_("print only tags that contain the commit"), - PARSE_OPT_HIDDEN | PARSE_OPT_LASTARG_DEFAULT, - parse_opt_with_commit, (intptr_t)"HEAD", - }, - { - OPTION_CALLBACK, 0, "points-at", NULL, N_("object"), - N_("print only tags of the object"), 0, parse_opt_points_at + OPTION_CALLBACK, 0, "points-at", &filter.points_at, N_("object"), + N_("print only tags of the object"), 0, parse_opt_object_name }, + OPT_STRING( 0 , "format", &format, N_("format"), N_("format to use for the output")), OPT_END() }; - git_config(git_tag_config, NULL); + git_config(git_tag_config, sorting_tail); memset(&opt, 0, sizeof(opt)); + memset(&filter, 0, sizeof(filter)); + filter.lines = -1; argc = parse_options(argc, argv, prefix, options, git_tag_usage, 0); @@ -652,11 +393,13 @@ int cmd_tag(int argc, const char **argv, const char *prefix) usage_with_options(git_tag_usage, options); finalize_colopts(&colopts, -1); - if (cmdmode == 'l' && lines != -1) { + if (cmdmode == 'l' && filter.lines != -1) { if (explicitly_enable_column(colopts)) die(_("--column and -n are incompatible")); colopts = 0; } + if (!sorting) + sorting = ref_default_sorting(); if (cmdmode == 'l') { int ret; if (column_active(colopts)) { @@ -665,19 +408,20 @@ int cmd_tag(int argc, const char **argv, const char *prefix) copts.padding = 2; run_column_filter(colopts, &copts); } - if (lines != -1 && tag_sort) - die(_("--sort and -n are incompatible")); - ret = list_tags(argv, lines == -1 ? 0 : lines, with_commit, tag_sort); + filter.name_patterns = argv; + ret = list_tags(&filter, sorting, format); if (column_active(colopts)) stop_column_filter(); return ret; } - if (lines != -1) + if (filter.lines != -1) die(_("-n option is only allowed with -l.")); - if (with_commit) + if (filter.with_commit) die(_("--contains option is only allowed with -l.")); - if (points_at.nr) + if (filter.points_at.nr) die(_("--points-at option is only allowed with -l.")); + if (filter.merge_commit) + die(_("--merged and --no-merged option are only allowed with -l")); if (cmdmode == 'd') return for_each_tag_name(argv, delete_tag); if (cmdmode == 'v') diff --git a/builtin/update-ref.c b/builtin/update-ref.c index 04dd00f734..7f30d3a76f 100644 --- a/builtin/update-ref.c +++ b/builtin/update-ref.c @@ -365,7 +365,7 @@ int cmd_update_ref(int argc, const char **argv, const char *prefix) N_("update not the one it points to")), OPT_BOOL('z', NULL, &end_null, N_("stdin has NUL-terminated arguments")), OPT_BOOL( 0 , "stdin", &read_stdin, N_("read updates from stdin")), - OPT_BOOL( 0 , "create-reflog", &create_reflog, N_("create_reflog")), + OPT_BOOL( 0 , "create-reflog", &create_reflog, N_("create a reflog")), OPT_END(), }; diff --git a/cache.h b/cache.h index 79066e57dc..44c0260000 100644 --- a/cache.h +++ b/cache.h @@ -443,6 +443,7 @@ extern char *get_object_directory(void); extern char *get_index_file(void); extern char *get_graft_file(void); extern int set_git_dir(const char *path); +extern int get_common_dir_noenv(struct strbuf *sb, const char *gitdir); extern int get_common_dir(struct strbuf *sb, const char *gitdir); extern const char *get_git_namespace(void); extern const char *strip_namespace(const char *namespaced_ref); @@ -1091,7 +1092,6 @@ struct date_mode { DATE_NORMAL = 0, DATE_RELATIVE, DATE_SHORT, - DATE_LOCAL, DATE_ISO8601, DATE_ISO8601_STRICT, DATE_RFC2822, @@ -1099,6 +1099,7 @@ struct date_mode { DATE_RAW } type; const char *strftime_fmt; + int local; }; /* @@ -1275,6 +1276,7 @@ extern void close_pack_index(struct packed_git *); extern unsigned char *use_pack(struct packed_git *, struct pack_window **, off_t, unsigned long *); extern void close_pack_windows(struct packed_git *); +extern void close_all_packs(void); extern void unuse_pack(struct pack_window **); extern void free_pack_by_name(const char *); extern void clear_delta_base_cache(void); diff --git a/combine-diff.c b/combine-diff.c index 30c7eb6d3c..0f62f54b5e 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -419,8 +419,10 @@ static void combine_diff(const struct object_id *parent, unsigned int mode, state.num_parent = num_parent; state.n = n; - xdi_diff_outf(&parent_file, result_file, consume_line, &state, - &xpp, &xecfg); + if (xdi_diff_outf(&parent_file, result_file, consume_line, &state, + &xpp, &xecfg)) + die("unable to generate combined diff for %s", + oid_to_hex(parent)); free(parent_file.ptr); /* Assign line numbers for this parent. diff --git a/compat/poll/poll.c b/compat/poll/poll.c index a9b41d89f4..db4e03ed79 100644 --- a/compat/poll/poll.c +++ b/compat/poll/poll.c @@ -446,7 +446,7 @@ poll (struct pollfd *pfd, nfds_t nfd, int timeout) static HANDLE hEvent; WSANETWORKEVENTS ev; HANDLE h, handle_array[FD_SETSIZE + 2]; - DWORD ret, wait_timeout, nhandles; + DWORD ret, wait_timeout, nhandles, start = 0, elapsed, orig_timeout = 0; fd_set rfds, wfds, xfds; BOOL poll_again; MSG msg; @@ -459,6 +459,12 @@ poll (struct pollfd *pfd, nfds_t nfd, int timeout) return -1; } + if (timeout != INFTIM) + { + orig_timeout = timeout; + start = GetTickCount(); + } + if (!hEvent) hEvent = CreateEvent (NULL, FALSE, FALSE, NULL); @@ -603,7 +609,13 @@ poll (struct pollfd *pfd, nfds_t nfd, int timeout) rc++; } - if (!rc && timeout == INFTIM) + if (!rc && orig_timeout && timeout != INFTIM) + { + elapsed = GetTickCount() - start; + timeout = elapsed >= orig_timeout ? 0 : orig_timeout - elapsed; + } + + if (!rc && timeout) { SleepEx (1, TRUE); goto restart; diff --git a/connect.c b/connect.c index c0144d859a..d3283b8a4f 100644 --- a/connect.c +++ b/connect.c @@ -9,6 +9,7 @@ #include "url.h" #include "string-list.h" #include "sha1-array.h" +#include "transport.h" static char *server_capabilities; static const char *parse_feature_value(const char *, const char *, int *); @@ -254,7 +255,7 @@ static const char *prot_name(enum protocol protocol) case PROTO_GIT: return "git"; default: - return "unkown protocol"; + return "unknown protocol"; } } @@ -694,6 +695,8 @@ struct child_process *git_connect(int fd[2], const char *url, else target_host = xstrdup(hostandport); + transport_check_allowed("git"); + /* These underlying connection commands die() if they * cannot connect. */ @@ -721,12 +724,16 @@ struct child_process *git_connect(int fd[2], const char *url, strbuf_addch(&cmd, ' '); sq_quote_buf(&cmd, path); + /* remove repo-local variables from the environment */ + conn->env = local_repo_env; + conn->use_shell = 1; conn->in = conn->out = -1; if (protocol == PROTO_SSH) { const char *ssh; - int putty, tortoiseplink = 0; + int putty = 0, tortoiseplink = 0; char *ssh_host = hostandport; const char *port = NULL; + transport_check_allowed("ssh"); get_host_and_port(&ssh_host, &port); if (!port) @@ -746,13 +753,17 @@ struct child_process *git_connect(int fd[2], const char *url, } ssh = getenv("GIT_SSH_COMMAND"); - if (ssh) { - conn->use_shell = 1; - putty = 0; - } else { + if (!ssh) { const char *base; char *ssh_dup; + /* + * GIT_SSH is the no-shell version of + * GIT_SSH_COMMAND (and must remain so for + * historical compatibility). + */ + conn->use_shell = 0; + ssh = getenv("GIT_SSH"); if (!ssh) ssh = "ssh"; @@ -762,8 +773,9 @@ struct child_process *git_connect(int fd[2], const char *url, tortoiseplink = !strcasecmp(base, "tortoiseplink") || !strcasecmp(base, "tortoiseplink.exe"); - putty = !strcasecmp(base, "plink") || - !strcasecmp(base, "plink.exe") || tortoiseplink; + putty = tortoiseplink || + !strcasecmp(base, "plink") || + !strcasecmp(base, "plink.exe"); free(ssh_dup); } @@ -778,9 +790,7 @@ struct child_process *git_connect(int fd[2], const char *url, } argv_array_push(&conn->args, ssh_host); } else { - /* remove repo-local variables from the environment */ - conn->env = local_repo_env; - conn->use_shell = 1; + transport_check_allowed("file"); } argv_array_push(&conn->args, cmd.buf); diff --git a/contrib/examples/git-am.sh b/contrib/examples/git-am.sh index 3b77028123..dd539f1a8a 100755 --- a/contrib/examples/git-am.sh +++ b/contrib/examples/git-am.sh @@ -512,7 +512,7 @@ then git read-tree --reset -u $head_tree $head_tree && index_tree=$(git write-tree) && git read-tree -m -u $index_tree $head_tree - git read-tree $head_tree + git read-tree -m $head_tree ;; ,t) if test -f "$dotest/rebasing" diff --git a/contrib/examples/git-pull.sh b/contrib/examples/git-pull.sh index e8dc2e0e7d..6b3a03f9b0 100755 --- a/contrib/examples/git-pull.sh +++ b/contrib/examples/git-pull.sh @@ -69,7 +69,7 @@ as appropriate to mark resolution and make a commit.")" die_merge () { if [ $(git config --bool --get advice.resolveConflict || echo true) = "true" ]; then die "$(gettext "You have not concluded your merge (MERGE_HEAD exists). -Please, commit your changes before you can merge.")" +Please, commit your changes before merging.")" else die "$(gettext "You have not concluded your merge (MERGE_HEAD exists).")" fi diff --git a/contrib/hooks/multimail/CHANGES b/contrib/hooks/multimail/CHANGES index 6bb12306b8..bc77e66b85 100644 --- a/contrib/hooks/multimail/CHANGES +++ b/contrib/hooks/multimail/CHANGES @@ -1,3 +1,44 @@ +Release 1.2.0 +============= + +* It is now possible to exclude some refs (e.g. exclude some branches + or tags). See refFilterDoSendRegex, refFilterDontSendRegex, + refFilterInclusionRegex and refFilterExclusionRegex. + +* New commitEmailFormat option which can be set to "html" to generate + simple colorized diffs using HTML for the commit emails. + +* git-multimail can now be ran as a Gerrit ref-updated hook, or from + Atlassian BitBucket Server (formerly known as Atlassian Stash). + +* The From: field is now more customizeable. It can be set + independently for refchange emails and commit emails (see + fromCommit, fromRefChange). The special values pusher and author can + be used in these configuration variable. + +* A new command-line option, --version, was added. The version is also + available in the X-Git-Multimail-Version header of sent emails. + +* Set X-Git-NotificationType header to differentiate the various types + of notifications. Current values are: diff, ref_changed_plus_diff, + ref_changed. + +* Preliminary support for Python 3. The testsuite passes with Python 3, + but it has not received as much testing as the Python 2 version yet. + +* Several encoding-related fixes. UTF-8 characters work in more + situations (but non-ascii characters in email address are still not + supported). + +* The testsuite and its documentation has been greatly improved. + +Plus all the bugfixes from version 1.1.1. + +This version has been tested with Python 2.4 and 2.6 to 3.5, and Git +v1.7.10-406-gdc801e7, git-1.8.2.3 and 2.6.0. Git versions prior to +v1.7.10-406-gdc801e7 probably work, but cannot run the testsuite +properly. + Release 1.1.1 (bugfix-only release) =================================== diff --git a/contrib/hooks/multimail/CONTRIBUTING.rst b/contrib/hooks/multimail/CONTRIBUTING.rst new file mode 100644 index 0000000000..09efdb059c --- /dev/null +++ b/contrib/hooks/multimail/CONTRIBUTING.rst @@ -0,0 +1,30 @@ +git-multimail is an open-source project, built by volunteers. We would +welcome your help! + +The current maintainers are Michael Haggerty +and Matthieu Moy . + +Please note that although a copy of git-multimail is distributed in +the "contrib" section of the main Git project, development takes place +in a separate git-multimail repository on GitHub: + + https://github.com/git-multimail/git-multimail + +Whenever enough changes to git-multimail have accumulated, a new +code-drop of git-multimail will be submitted for inclusion in the Git +project. + +We use the GitHub issue tracker to keep track of bugs and feature +requests, and we use GitHub pull requests to exchange patches (though, +if you prefer, you can send patches via the Git mailing list with CC +to the maintainers). Please sign off your patches as per the `Git +project practice +`__. + +General discussion of git-multimail can take place on the main Git +mailing list, + + git@vger.kernel.org + +Please CC emails regarding git-multimail to the maintainers so that we +don't overlook them. diff --git a/contrib/hooks/multimail/README b/contrib/hooks/multimail/README index e552c90c45..55120685f0 100644 --- a/contrib/hooks/multimail/README +++ b/contrib/hooks/multimail/README @@ -1,5 +1,5 @@ -git-multimail Version 1.1.1 -=========================== +git-multimail (version 1.2.0) +============================= .. image:: https://travis-ci.org/git-multimail/git-multimail.svg?branch=master :target: https://travis-ci.org/git-multimail/git-multimail @@ -53,11 +53,13 @@ By default, for each push received by the repository, git-multimail: + [git] 07/08: Merge branch 'mm/api-credentials-doc' + [git] 08/08: Git 1.7.11-rc2 - Each commit appears in exactly one commit email, the first time - that it is pushed to the repository. If a commit is later merged - into another branch, then a one-line summary of the commit is - included in the reference change email (as usual), but no - additional commit email is generated. + By default, each commit appears in exactly one commit email, the + first time that it is pushed to the repository. If a commit is later + merged into another branch, then a one-line summary of the commit + is included in the reference change email (as usual), but no + additional commit email is generated. See + `multimailhook.refFilter(Inclusion|Exclusion|DoSend|DontSend)Regex` + below to configure which branches and tags are watched by the hook. By default, reference change emails have their "Reply-To" field set to the person who pushed the change, and commit emails have their @@ -73,21 +75,8 @@ Requirements ------------ * Python 2.x, version 2.4 or later. No non-standard Python modules - are required. git-multimail does *not* currently work with Python - 3.x. - - The example scripts invoke Python using the following shebang line - (following PEP 394 [1]_):: - - #! /usr/bin/env python2 - - If your system's Python2 interpreter is not in your PATH or is not - called ``python2``, you can change the lines accordingly. Or you can - invoke the Python interpreter explicitly, for example via a tiny - shell script like:: - - #! /bin/sh - /usr/local/bin/python /path/to/git_multimail.py "$@" + are required. git-multimail has preliminary support for Python 3 + (but it has been better tested with Python 2). * The ``git`` command must be in your PATH. git-multimail is known to work with Git versions back to 1.7.1. (Earlier versions have not @@ -146,7 +135,9 @@ following ``git config`` settings: multimailhook.environment - This describes the general environment of the repository. + This describes the general environment of the repository. In most + cases, you do not need to specify a value for this variable: + `git-multimail` will autodetect which environment to use. Currently supported values: * generic @@ -161,18 +152,57 @@ multimailhook.environment optionally read from gitolite.conf (see multimailhook.from). For more information about gitolite and git-multimail, read - doc/gitolite.rst + ``__ + + * stash + + Environment to use when ``git-multimail`` is ran as an Atlassian + BitBucket Server (formerly known as Atlassian Stash) hook. + + **Warning:** this mode was provided by a third-party contributor + and never tested by the git-multimail maintainers. It is + provided as-is and may or may not work for you. + + This value is automatically assumed when the stash-specific + flags (``--stash-user`` and ``--stash-repo``) are specified on + the command line. When this environment is active, the username + and repo come from these two command line flags, which must be + specified. + + * gerrit + + Environment to use when ``git-multimail`` is ran as a + ``ref-updated`` Gerrit hook. + + This value is used when the gerrit-specific command line flags + (``--oldrev``, ``--newrev``, ``--refname``, ``--project``) for + gerrit's ref-updated hook are present. When this environment is + active, the username of the pusher is taken from the + ``--submitter`` argument if that command line option is passed, + otherwise 'Gerrit' is used. The repository name is taken from + the ``--project`` option on the command line, which must be passed. + + For more information about gerrit and git-multimail, read + ``__ - If neither of these environments is suitable for your setup, then - you can implement a Python class that inherits from Environment - and instantiate it via a script that looks like the example + If none of these environments is suitable for your setup, then you + can implement a Python class that inherits from Environment and + instantiate it via a script that looks like the example post-receive script. The environment value can be specified on the command line using - the --environment option. If it is not specified on the command - line or by multimailhook.environment, then it defaults to - ``gitolite`` if the environment contains variables $GL_USER and - $GL_REPO; otherwise ``generic``. + the ``--environment`` option. If it is not specified on the + command line or by ``multimailhook.environment``, the value is + guessed as follows: + + * If stash-specific (respectively gerrit-specific) command flags + are present on the command-line, then ``stash`` (respectively + ``gerrit``) is used. + + * If the environment variables $GL_USER and $GL_REPO are set, then + ``gitolite`` is used. + + * If none of the above apply, then ``generic`` is used. multimailhook.repoName @@ -196,8 +226,8 @@ multimailhook.refchangeList reference changes should be sent, as RFC 2822 email addresses separated by commas. This configuration option can be multivalued. The default is the value in - multimailhook.mailingList. Set this value to the empty string to - prevent reference change emails from being sent even if + multimailhook.mailingList. Set this value to "none" (or the empty + string) to prevent reference change emails from being sent even if multimailhook.mailingList is set. multimailhook.announceList @@ -206,9 +236,9 @@ multimailhook.announceList tags should be sent, as RFC 2822 email addresses separated by commas. This configuration option can be multivalued. The default is the value in multimailhook.refchangeList or - multimailhook.mailingList. Set this value to the empty string to - prevent annotated tag announcement emails from being sent even if - one of the other values is set. + multimailhook.mailingList. Set this value to "none" (or the empty + string) to prevent annotated tag announcement emails from being sent + even if one of the other values is set. multimailhook.commitList @@ -216,7 +246,7 @@ multimailhook.commitList commits should be sent, as RFC 2822 email addresses separated by commas. This configuration option can be multivalued. The default is the value in multimailhook.mailingList. Set this value - to the empty string to prevent notification emails about + to "none" (or the empty string) to prevent notification emails about individual commits from being sent even if multimailhook.mailingList is set. @@ -230,6 +260,20 @@ multimailhook.announceShortlog not so straightforward, then the shortlog might be confusing rather than useful. Default is false. +multimailhook.commitEmailFormat + + The format of email messages for the individual commits, can be "text" or + "html". In the latter case, the emails will include diffs using colorized + HTML instead of plain text used by default. Note that this currently the + ref change emails are always sent in plain text. + + Note that when using "html", the formatting is done by parsing the + output of ``git log`` with ``-p``. When using + ``multimailhook.commitLogOpts`` to specify a ``--format`` for + ``git log``, one may get false positive (e.g. lines in the body of + the message starting with ``+++`` or ``---`` colored in red or + green). + multimailhook.refchangeShowGraph If this option is set to true, then summary emails about reference @@ -305,7 +349,7 @@ multimailhook.mailer * multimailhook.smtpEncryption - Set the security type. Allowed values: none, ssl. + Set the security type. Allowed values: none, ssl, tls. Default=none. * multimailhook.smtpServerDebugLevel @@ -313,9 +357,26 @@ multimailhook.mailer Integer number. Set to greater than 0 to activate debugging. multimailhook.from +multimailhook.fromCommit +multimailhook.fromRefchange + + If set, use this value in the From: field of generated emails. + ``fromCommit`` is used for commit emails, ``fromRefchange`` is + used for refchange emails, and ``from`` is used as fall-back in + all cases. + + The value for these variables can be either: + + - An email address, which will be used directly. + + - The value ``pusher``, in which case the pusher's address (if + available) will be used. - If set, use this value in the From: field of generated emails. If - unset, the value of the From: header is determined as follows: + - The value ``author`` (meaningful only for replyToCommit), in which + case the commit author's address will be used. + + If config values are unset, the value of the From: header is + determined as follows: 1. (gitolite environment only) Parse gitolite.conf, looking for a block of comments that looks like this:: @@ -425,6 +486,15 @@ multimailhook.commitLogOpts --stat -p --cc``. Shell quoting is allowed; see multimailhook.logOpts for details. +multimailhook.dateSubstitute + + String to use as a substitute for ``Date:`` in the output of ``git + log`` while formatting commit messages. This is usefull to avoid + emitting a line that can be interpreted by mailers as the start of + a cited message (Zimbra webmail in particular). Defaults to + ``CommitDate: ``. Set to an empty string or ``none`` to deactivate + the behavior. + multimailhook.emailDomain Domain name appended to the username of the person doing the push @@ -440,21 +510,13 @@ multimailhook.replyToRefchange Addresses to use in the Reply-To: field for commit emails (replyToCommit) and refchange emails (replyToRefchange). multimailhook.replyTo is used as default when replyToCommit or - replyToRefchange is not set. The value for these variables can be - either: - - - An email address, which will be used directly. - - - The value `pusher`, in which case the pusher's address (if - available) will be used. This is the default for refchange - emails. + replyToRefchange is not set. The shortcuts ``pusher`` and + ``author`` are allowed with the same semantics as for + ``multimailhook.from``. In addition, the value ``none`` can be + used to omit the ``Reply-To:`` field. - - The value `author` (meaningful only for replyToCommit), in which - case the commit author's address will be used. This is the - default for commit emails. - - - The value `none`, in which case the Reply-To: field will be - omitted. + The default is ``pusher`` for refchange emails, and ``author`` for + commit emails. multimailhook.quiet @@ -478,6 +540,63 @@ multimailhook.combineWhenSingleCommit single email. Default: true +multimailhook.refFilterInclusionRegex +multimailhook.refFilterExclusionRegex +multimailhook.refFilterDoSendRegex +multimailhook.refFilterDontSendRegex + + **Warning:** these options are experimental. They should work, but + the user-interface is not stable yet (in particular, the option + names may change). If you want to participate in stabilizing the + feature, please contact the maintainers and/or send pull-requests. + + Regular expressions that can be used to limit refs for which email + updates will be sent. It is an error to specify both an inclusion + and an exclusion regex. If a ``refFilterInclusionRegex`` is + specified, emails will only be sent for refs which match this + regex. If a ``refFilterExclusionRegex`` regex is specified, + emails will be sent for all refs except those that match this + regex (or that match a predefined regex specific to the + environment, such as "^refs/notes" for most environments and + "^refs/notes|^refs/changes" for the gerrit environment). + + The expressions are matched against the complete refname, and is + considered to match if any substring matches. For example, to + filter-out all tags, set ``refFilterExclusionRegex`` to + ``^refs/tags/`` (note the leading ``^`` but no trailing ``$``). If + you set ``refFilterExclusionRegex`` to ``master``, then any ref + containing ``master`` will be excluded (the ``master`` branch, but + also ``refs/tags/master`` or ``refs/heads/foo-master-bar``). + + ``refFilterDoSendRegex`` and ``refFilterDontSendRegex`` are + analogous to ``refFilterInclusionRegex`` and + ``refFilterExclusionRegex`` with one difference: with + ``refFilterDoSendRegex`` and ``refFilterDontSendRegex``, commits + introduced by one excluded ref will not be considered as new when + they reach an included ref. Typically, if you add a branch ``foo`` + to ``refFilterDontSendRegex``, push commits to this branch, and + later merge branch ``foo`` into ``master``, then the notification + email for ``master`` will contain a commit email only for the + merge commit. If you include ``foo`` in + ``refFilterExclusionRegex``, then at the time of merge, you will + receive one commit email per commit in the branch. + + These variables can be multi-valued, like:: + + [multimailhook] + refFilterExclusionRegex = ^refs/tags/ + refFilterExclusionRegex = ^refs/heads/master$ + + You can also provide a whitespace-separated list like:: + + [multimailhook] + refFilterExclusionRegex = ^refs/tags/ ^refs/heads/master$ + + Both examples exclude tags and the master branch, and are + equivalent to:: + + [multimailhook] + refFilterExclusionRegex = ^refs/tags/|^refs/heads/master$ Email filtering aids -------------------- @@ -547,35 +666,8 @@ consider sharing them with the community! Getting involved ---------------- -git-multimail is an open-source project, built by volunteers. We would -welcome your help! - -The current maintainers are Michael Haggerty -and Matthieu Moy . - -Please note that although a copy of git-multimail is distributed in -the "contrib" section of the main Git project, development takes place -in a separate git-multimail repository on GitHub: - - https://github.com/git-multimail/git-multimail - -Whenever enough changes to git-multimail have accumulated, a new -code-drop of git-multimail will be submitted for inclusion in the Git -project. - -We use the GitHub issue tracker to keep track of bugs and feature -requests, and we use GitHub pull requests to exchange patches (though, -if you prefer, you can send patches via the Git mailing list with CC -to the maintainers). Please sign off your patches as per the Git -project practice. - -General discussion of git-multimail can take place on the main Git -mailing list, - - git@vger.kernel.org - -Please CC emails regarding git-multimail to the maintainers so that we -don't overlook them. +Please, read ``__ for instructions on how to +contribute to git-multimail. Footnotes diff --git a/contrib/hooks/multimail/README.Git b/contrib/hooks/multimail/README.Git index f5d59a8d31..300a2a4d2d 100644 --- a/contrib/hooks/multimail/README.Git +++ b/contrib/hooks/multimail/README.Git @@ -6,10 +6,10 @@ website: https://github.com/git-multimail/git-multimail The version in this directory was obtained from the upstream project -on July 03 2015 and consists of the "git-multimail" subdirectory from +on October 11 2015 and consists of the "git-multimail" subdirectory from revision - 6d6c9eb62a054143322cfaecde3949189c065b46 refs/tags/1.1.1 + c0791b9ef5821a746fc3475c25765e640452eaae refs/tags/1.2.0 Please see the README file in this directory for information about how to report bugs or contribute to git-multimail. diff --git a/contrib/hooks/multimail/doc/gerrit.rst b/contrib/hooks/multimail/doc/gerrit.rst new file mode 100644 index 0000000000..8011d05dec --- /dev/null +++ b/contrib/hooks/multimail/doc/gerrit.rst @@ -0,0 +1,56 @@ +Setting up git-multimail on Gerrit +================================== + +Gerrit has its own email-sending system, but you may prefer using +``git-multimail`` instead. It supports Gerrit natively as a Gerrit +``ref-updated`` hook (Warning: `Gerrit hooks +`__ +are distinct from Git hooks). Setting up ``git-multimail`` on a Gerrit +installation can be done following the instructions below. + +The explanations show an easy way to set up ``git-multimail``, +but leave ``git-multimail`` installed and unconfigured for a while. If +you run Gerrit on a production server, it is advised that you +execute the step "Set up the hook" last to avoid confusing your users +in the meantime. + +Set up the hook +--------------- + +Create a directory ``$site_path/hooks/`` if it does not exist (if you +don't know what ``$site_path`` is, run ``gerrit.sh status`` and look +for a ``GERRIT_SITE`` line). Either copy ``git_multimail.py`` to +``$site_path/hooks/ref-updated`` or create a wrapper script like +this:: + + #! /bin/sh + exec /path/to/git_multimail.py "$@" + +In both cases, make sure the file is named exactly +``$site_path/hooks/ref-updated`` and is executable. + +(Alternatively, you may configure the ``[hooks]`` section of +gerrit.config) + +Configuration +------------- + +Log on the gerrit server and edit ``$site_path/git/$project/config`` +to configure ``git-multimail``. + +Troubleshooting +--------------- + +Warning: this will disable ``git-multimail`` during the debug, and +could confuse your users. Don't run on a production server. + +To debug configuration issues with ``git-multimail``, you can add the +``--stdout`` option when calling ``git_multimail.py`` like this:: + + #!/bin/sh + exec /path/to/git-multimail/git-multimail/git_multimail.py \ + --stdout "$@" >> /tmp/log.txt + +and try pushing from a test repository. You should see the source of +the email that would have been sent in the output of ``git push`` in +the file ``/tmp/log.txt``. diff --git a/contrib/hooks/multimail/doc/gitolite.rst b/contrib/hooks/multimail/doc/gitolite.rst new file mode 100644 index 0000000000..00aedd9c57 --- /dev/null +++ b/contrib/hooks/multimail/doc/gitolite.rst @@ -0,0 +1,109 @@ +Setting up git-multimail on gitolite +==================================== + +``git-multimail`` supports gitolite 3 natively. +The explanations below show an easy way to set up ``git-multimail``, +but leave ``git-multimail`` installed and unconfigured for a while. If +you run gitolite on a production server, it is advised that you +execute the step "Set up the hook" last to avoid confusing your users +in the meantime. + +Set up the hook +--------------- + +Log in as your gitolite user. + +Create a file ``.gitolite/hooks/common/post-receive`` on your gitolite +account containing (adapt the path, obviously):: + + #!/bin/sh + exec /path/to/git-multimail/git-multimail/git_multimail.py "$@" + +Make sure it's executable (``chmod +x``). Record the hook in +gitolite:: + + gitolite setup + +Configuration +------------- + +First, you have to allow the admin to set Git configuration variables. + +As gitolite user, edit the line containing ``GIT_CONFIG_KEYS`` in file +``.gitolite.rc``, to make it look like:: + + GIT_CONFIG_KEYS => 'multimailhook\..*', + +You can now log out and return to your normal user. + +In the ``gitolite-admin`` clone, edit the file ``conf/gitolite.conf`` +and add:: + + repo @all + # Not strictly needed as git_multimail.py will chose gitolite if + # $GL_USER is set. + config multimailhook.environment = gitolite + config multimailhook.mailingList = # Where emails should be sent + config multimailhook.from = # From address to use + +Obviously, you can customize all parameters on a per-repository basis by +adding these ``config multimailhook.*`` lines in the section +corresponding to a repository or set of repositories. + +To activate ``git-multimail`` on a per-repository basis, do not set +``multimailhook.mailingList`` in the ``@all`` section and set it only +for repositories for which you want ``git-multimail``. + +Alternatively, you can set up the ``From:`` field on a per-user basis +by adding a ``BEGIN USER EMAILS``/``END USER EMAILS`` section (see +``../README``). + +Specificities of Gitolite for Configuration +------------------------------------------- + +Empty configuration variables +............................. + +With gitolite, the syntax ``config multimailhook.commitList = ""`` +unsets the variable instead of setting it to an empty string (see +`here +`__). +As a result, there is no way to set a variable to the empty string. +In all most places where an empty value is required, git-multimail +now allows to specify special ``"none"`` value (case-sensitive) to +mean the same. + +Alternatively, one can use ``" "`` (a single space) instead of ``""``. +In most cases (in particular ``multimailhook.*List`` variables), this +will be equivalent to an empty string. + +If you have a use-case where ``"none"`` is not an acceptable value and +you need ``" "`` or ``""`` instead, please report it as a bug to +git-multimail. + +Allowing Regular Expressions in Configuration +............................................. + +gitolite has a mechanism to prevent unsafe configuration variable +values, which prevent characters like ``|`` commonly used in regular +expressions. If you do not need the safety feature of gitolite and +need to use regular expressions in your configuration (e.g. for +``multimailhook.refFilter*`` variables), set +`UNSAFE_PATT +`__ to a +less restrictive value. + +Troubleshooting +--------------- + +Warning: this will disable ``git-multimail`` during the debug, and +could confuse your users. Don't run on a production server. + +To debug configuration issues with ``git-multimail``, you can add the +``--stdout`` option when calling ``git_multimail.py`` like this:: + + #!/bin/sh + exec /path/to/git-multimail/git-multimail/git_multimail.py --stdout "$@" + +and try pushing from a test repository. You should see the source of +the email that would have been sent in the output of ``git push``. diff --git a/contrib/hooks/multimail/git_multimail.py b/contrib/hooks/multimail/git_multimail.py index c06ce7a515..0180dba431 100755 --- a/contrib/hooks/multimail/git_multimail.py +++ b/contrib/hooks/multimail/git_multimail.py @@ -1,4 +1,6 @@ -#! /usr/bin/env python2 +#! /usr/bin/env python + +__version__ = '1.2.0' # Copyright (c) 2015 Matthieu Moy and others # Copyright (c) 2012-2014 Michael Haggerty and others @@ -56,8 +58,54 @@ import optparse import smtplib import time +import cgi + +PYTHON3 = sys.version_info >= (3, 0) + +if sys.version_info <= (2, 5): + def all(iterable): + for element in iterable: + if not element: + return False + return True + + +def is_ascii(s): + return all(ord(c) < 128 and ord(c) > 0 for c in s) + + +if PYTHON3: + def str_to_bytes(s): + return s.encode(ENCODING) + + def bytes_to_str(s): + return s.decode(ENCODING) + + unicode = str + + def write_str(f, msg): + # Try outputing with the default encoding. If it fails, + # try UTF-8. + try: + f.buffer.write(msg.encode(sys.getdefaultencoding())) + except UnicodeEncodeError: + f.buffer.write(msg.encode(ENCODING)) +else: + def str_to_bytes(s): + return s + + def bytes_to_str(s): + return s + + def write_str(f, msg): + f.write(msg) + + def next(it): + return it.next() + try: + from email.charset import Charset from email.utils import make_msgid from email.utils import getaddresses from email.utils import formataddr @@ -65,6 +113,7 @@ from email.header import Header except ImportError: # Prior to Python 2.5, the email module used different names: + from email.Charset import Charset from email.Utils import make_msgid from email.Utils import getaddresses from email.Utils import formataddr @@ -109,7 +158,7 @@ To: %(recipients)s Subject: %(subject)s MIME-Version: 1.0 -Content-Type: text/plain; charset=%(charset)s +Content-Type: text/%(contenttype)s; charset=%(charset)s Content-Transfer-Encoding: 8bit Message-ID: %(msgid)s From: %(fromaddr)s @@ -120,6 +169,8 @@ X-Git-Reftype: %(refname_type)s X-Git-Oldrev: %(oldrev)s X-Git-Newrev: %(newrev)s +X-Git-NotificationType: ref_changed +X-Git-Multimail-Version: %(multimail_version)s Auto-Submitted: auto-generated """ @@ -238,7 +289,7 @@ Cc: %(cc_recipients)s Subject: %(emailprefix)s%(num)02d/%(tot)02d: %(oneline)s MIME-Version: 1.0 -Content-Type: text/plain; charset=%(charset)s +Content-Type: text/%(contenttype)s; charset=%(charset)s Content-Transfer-Encoding: 8bit From: %(fromaddr)s Reply-To: %(reply_to)s @@ -249,6 +300,8 @@ X-Git-Refname: %(refname)s X-Git-Reftype: %(refname_type)s X-Git-Rev: %(rev)s +X-Git-NotificationType: diff +X-Git-Multimail-Version: %(multimail_version)s Auto-Submitted: auto-generated """ @@ -270,7 +323,7 @@ To: %(recipients)s Subject: %(subject)s MIME-Version: 1.0 -Content-Type: text/plain; charset=%(charset)s +Content-Type: text/%(contenttype)s; charset=%(charset)s Content-Transfer-Encoding: 8bit Message-ID: %(msgid)s From: %(fromaddr)s @@ -282,6 +335,8 @@ X-Git-Oldrev: %(oldrev)s X-Git-Newrev: %(newrev)s X-Git-Rev: %(rev)s +X-Git-NotificationType: ref_changed_plus_diff +X-Git-Multimail-Version: %(multimail_version)s Auto-Submitted: auto-generated """ @@ -352,12 +407,14 @@ def read_git_output(args, input=None, keepends=False, **kw): def read_output(cmd, input=None, keepends=False, **kw): if input: stdin = subprocess.PIPE + input = str_to_bytes(input) else: stdin = None p = subprocess.Popen( cmd, stdin=stdin, stdout=subprocess.PIPE, stderr=subprocess.PIPE, **kw ) (out, err) = p.communicate(input) + out = bytes_to_str(out) retcode = p.wait() if retcode: raise CommandError(cmd, retcode) @@ -418,26 +475,37 @@ def git_log(spec, **kw): def header_encode(text, header_name=None): """Encode and line-wrap the value of an email header field.""" - try: - if isinstance(text, str): - text = text.decode(ENCODING, 'replace') - return Header(text, header_name=header_name).encode() - except UnicodeEncodeError: - return Header(text, header_name=header_name, charset=CHARSET, - errors='replace').encode() + # Convert to unicode, if required. + if not isinstance(text, unicode): + text = unicode(text, 'utf-8') + + if is_ascii(text): + charset = 'ascii' + else: + charset = 'utf-8' + + return Header(text, header_name=header_name, charset=Charset(charset)).encode() def addr_header_encode(text, header_name=None): """Encode and line-wrap the value of an email header field containing email addresses.""" - return Header( - ', '.join( - formataddr((header_encode(name), emailaddr)) - for name, emailaddr in getaddresses([text]) - ), - header_name=header_name - ).encode() + # Convert to unicode, if required. + if not isinstance(text, unicode): + text = unicode(text, 'utf-8') + + text = ', '.join( + formataddr((header_encode(name), emailaddr)) + for name, emailaddr in getaddresses([text]) + ) + + if is_ascii(text): + charset = 'ascii' + else: + charset = 'utf-8' + + return Header(text, header_name=header_name, charset=Charset(charset)).encode() class Config(object): @@ -496,7 +564,8 @@ def get_all(self, name, default=None): ['config', '--get-all', '--null', '%s.%s' % (self.section, name)], env=self.env, keepends=True, )) - except CommandError, e: + except CommandError: + t, e, traceback = sys.exc_info() if e.retcode == 1: # "the section or key is invalid"; i.e., there is no # value for the specified key. @@ -504,18 +573,6 @@ def get_all(self, name, default=None): else: raise - def get_recipients(self, name, default=None): - """Read a recipients list from the configuration. - - Return the result as a comma-separated list of email - addresses, or default if the option is unset. If the setting - has multiple values, concatenate them with comma separators.""" - - lines = self.get_all(name, default=None) - if lines is None: - return default - return ', '.join(line.strip() for line in lines) - def set(self, name, value): read_git_output( ['config', '%s.%s' % (self.section, name), value], @@ -542,7 +599,8 @@ def unset_all(self, name): ['config', '--unset-all', '%s.%s' % (self.section, name)], env=self.env, ) - except CommandError, e: + except CommandError: + t, e, traceback = sys.exc_info() if e.retcode == 5: # The name doesn't exist, which is what we wanted anyway... pass @@ -636,7 +694,7 @@ def get_summary(self): if not self.sha1: raise ValueError('Empty commit has no summary') - return iter(generate_summaries('--no-walk', self.sha1)).next() + return next(iter(generate_summaries('--no-walk', self.sha1))) def __eq__(self, other): return isinstance(other, GitObject) and self.sha1 == other.sha1 @@ -647,6 +705,10 @@ def __hash__(self): def __nonzero__(self): return bool(self.sha1) + def __bool__(self): + """Python 2 backward compatibility""" + return self.__nonzero__() + def __str__(self): return self.sha1 or ZEROS @@ -661,6 +723,12 @@ class Change(object): def __init__(self, environment): self.environment = environment self._values = None + self._contains_html_diff = False + + def _contains_diff(self): + # We do contain a diff, should it be rendered in HTML? + if self.environment.commit_email_format == "html": + self._contains_html_diff = True def _compute_values(self): """Return a dictionary {keyword: expansion} for this Change. @@ -670,7 +738,12 @@ def _compute_values(self): get_values(). The return value should always be a new dictionary.""" - return self.environment.get_values() + values = self.environment.get_values() + fromaddr = self.environment.get_fromaddr(change=self) + if fromaddr is not None: + values['fromaddr'] = fromaddr + values['multimail_version'] = get_version() + return values def get_values(self, **extra_values): """Return a dictionary {keyword: expansion} for this Change. @@ -713,12 +786,18 @@ def expand_header_lines(self, template, **extra_values): skip lines that contain references to unknown variables.""" values = self.get_values(**extra_values) + if self._contains_html_diff: + values['contenttype'] = 'html' + else: + values['contenttype'] = 'plain' + for line in template.splitlines(): - (name, value) = line.split(':', 1) + (name, value) = line.split(': ', 1) try: value = value % values - except KeyError, e: + except KeyError: + t, e, traceback = sys.exc_info() if DEBUG: self.environment.log_warning( 'Warning: unknown variable %r in the following line; line skipped:\n' @@ -764,6 +843,24 @@ def generate_email_footer(self): raise NotImplementedError() + def _wrap_for_html(self, lines): + """Wrap the lines in HTML
 tag when using HTML format.
+
+        Escape special HTML characters and add 
 and 
tags around + the given lines if we should be generating HTML as indicated by + self._contains_html_diff being set to true. + """ + if self._contains_html_diff: + yield "
\n"
+
+            for line in lines:
+                yield cgi.escape(line)
+
+            yield '
\n' + else: + for line in lines: + yield line + def generate_email(self, push, body_filter=None, extra_header_values={}): """Generate an email describing this change. @@ -779,18 +876,76 @@ def generate_email(self, push, body_filter=None, extra_header_values={}): for line in self.generate_email_header(**extra_header_values): yield line yield '\n' - for line in self.generate_email_intro(): + for line in self._wrap_for_html(self.generate_email_intro()): yield line body = self.generate_email_body(push) if body_filter is not None: body = body_filter(body) + + diff_started = False + if self._contains_html_diff: + # "white-space: pre" is the default, but we need to + # specify it again in case the message is viewed in a + # webmail which wraps it in an element setting white-space + # to something else (Zimbra does this and sets + # white-space: pre-line). + yield '
'
         for line in body:
+            if self._contains_html_diff:
+                # This is very, very naive. It would be much better to really
+                # parse the diff, i.e. look at how many lines do we have in
+                # the hunk headers instead of blindly highlighting everything
+                # that looks like it might be part of a diff.
+                bgcolor = ''
+                fgcolor = ''
+                if line.startswith('--- a/'):
+                    diff_started = True
+                    bgcolor = 'e0e0ff'
+                elif line.startswith('diff ') or line.startswith('index '):
+                    diff_started = True
+                    fgcolor = '808080'
+                elif diff_started:
+                    if line.startswith('+++ '):
+                        bgcolor = 'e0e0ff'
+                    elif line.startswith('@@'):
+                        bgcolor = 'e0e0e0'
+                    elif line.startswith('+'):
+                        bgcolor = 'e0ffe0'
+                    elif line.startswith('-'):
+                        bgcolor = 'ffe0e0'
+                elif line.startswith('commit '):
+                    fgcolor = '808000'
+                elif line.startswith('    '):
+                    fgcolor = '404040'
+
+                # Chop the trailing LF, we don't want it inside 
.
+                line = cgi.escape(line[:-1])
+
+                if bgcolor or fgcolor:
+                    style = 'display:block; white-space:pre;'
+                    if bgcolor:
+                        style += 'background:#' + bgcolor + ';'
+                    if fgcolor:
+                        style += 'color:#' + fgcolor + ';'
+                    # Use a %s\n" % (style, line)
+                else:
+                    line = line + '\n'
+
             yield line
+        if self._contains_html_diff:
+            yield '
' - for line in self.generate_email_footer(): + for line in self._wrap_for_html(self.generate_email_footer()): yield line + def get_alt_fromaddr(self): + return None + class Revision(Change): """A Change consisting of a single git commit.""" @@ -867,14 +1022,25 @@ def generate_email_intro(self): def generate_email_body(self, push): """Show this revision.""" - return read_git_lines( - ['log'] + self.environment.commitlogopts + ['-1', self.rev.sha1], - keepends=True, - ) + for line in read_git_lines( + ['log'] + self.environment.commitlogopts + ['-1', self.rev.sha1], + keepends=True, + ): + if line.startswith('Date: ') and self.environment.date_substitute: + yield self.environment.date_substitute + line[len('Date: '):] + else: + yield line def generate_email_footer(self): return self.expand_lines(REVISION_FOOTER_TEMPLATE) + def generate_email(self, push, body_filter=None, extra_header_values={}): + self._contains_diff() + return Change.generate_email(self, push, body_filter, extra_header_values) + + def get_alt_fromaddr(self): + return self.environment.from_commit + class ReferenceChange(Change): """A Change to a Git reference. @@ -1096,10 +1262,10 @@ def generate_revision_change_log(self, new_commits_list): yield '\n' yield 'Detailed log of new commits:\n\n' for line in read_git_lines( - ['log', '--no-walk'] - + self.logopts - + new_commits_list - + ['--'], + ['log', '--no-walk'] + + self.logopts + + new_commits_list + + ['--'], keepends=True, ): yield line @@ -1253,9 +1419,9 @@ def generate_revision_change_summary(self, push): yield '\n' yield 'Summary of changes:\n' for line in read_git_lines( - ['diff-tree'] - + self.diffopts - + ['%s..%s' % (self.old.commit_sha1, self.new.commit_sha1,)], + ['diff-tree'] + + self.diffopts + + ['%s..%s' % (self.old.commit_sha1, self.new.commit_sha1,)], keepends=True, ): yield line @@ -1316,6 +1482,9 @@ def generate_delete_summary(self, push): ) yield '\n' + def get_alt_fromaddr(self): + return self.environment.from_refchange + class BranchChange(ReferenceChange): refname_type = 'branch' @@ -1397,9 +1566,9 @@ def split_line(line): # commit is a non-merge commit, though it may make sense to # combine if it is a merge as well. if not ( - len(new_commits) == 1 - and len(new_commits[0][1]) == 1 - and new_commits[0][0] in known_added_sha1s + len(new_commits) == 1 and + len(new_commits[0][1]) == 1 and + new_commits[0][0] in known_added_sha1s ): return None @@ -1432,6 +1601,7 @@ def generate_combined_email(self, push, revision, body_filter=None, extra_header values['subject'] = self.expand(COMBINED_REFCHANGE_REVISION_SUBJECT_TEMPLATE, **values) self._single_revision = revision + self._contains_diff() self.header_template = COMBINED_HEADER_TEMPLATE self.intro_template = COMBINED_INTRO_TEMPLATE self.footer_template = COMBINED_FOOTER_TEMPLATE @@ -1690,17 +1860,18 @@ def __init__(self, command=None, envelopesender=None): def send(self, lines, to_addrs): try: p = subprocess.Popen(self.command, stdin=subprocess.PIPE) - except OSError, e: + except OSError: sys.stderr.write( - '*** Cannot execute command: %s\n' % ' '.join(self.command) - + '*** %s\n' % str(e) - + '*** Try setting multimailhook.mailer to "smtp"\n' + '*** Cannot execute command: %s\n' % ' '.join(self.command) + + '*** %s\n' % sys.exc_info()[1] + + '*** Try setting multimailhook.mailer to "smtp"\n' + '*** to send emails without using the sendmail command.\n' ) sys.exit(1) try: + lines = (str_to_bytes(line) for line in lines) p.stdin.writelines(lines) - except Exception, e: + except Exception: sys.stderr.write( '*** Error while generating commit email\n' '*** - mail sending aborted.\n' @@ -1710,7 +1881,7 @@ def send(self, lines, to_addrs): p.terminate() except AttributeError: pass - raise e + raise else: p.stdin.close() retcode = p.wait() @@ -1770,11 +1941,11 @@ def call(klass, server, timeout): "*** Setting debug on for SMTP server connection (%s) ***\n" % self.smtpserverdebuglevel) self.smtp.set_debuglevel(self.smtpserverdebuglevel) - except Exception, e: + except Exception: sys.stderr.write( '*** Error establishing SMTP connection to %s ***\n' % self.smtpserver) - sys.stderr.write('*** %s\n' % str(e)) + sys.stderr.write('*** %s\n' % sys.exc_info()[1]) sys.exit(1) def __del__(self): @@ -1784,16 +1955,15 @@ def __del__(self): def send(self, lines, to_addrs): try: if self.username or self.password: - sys.stderr.write("*** Authenticating as %s ***\n" % self.username) self.smtp.login(self.username, self.password) msg = ''.join(lines) # turn comma-separated list into Python list if needed. if isinstance(to_addrs, basestring): to_addrs = [email for (name, email) in getaddresses([to_addrs])] self.smtp.sendmail(self.envelopesender, to_addrs, msg) - except Exception, e: + except Exception: sys.stderr.write('*** Error sending email ***\n') - sys.stderr.write('*** %s\n' % str(e)) + sys.stderr.write('*** %s\n' % sys.exc_info()[1]) self.smtp.quit() sys.exit(1) @@ -1809,9 +1979,10 @@ def __init__(self, f): self.f = f def send(self, lines, to_addrs): - self.f.write(self.SEPARATOR) - self.f.writelines(lines) - self.f.write(self.SEPARATOR) + write_str(self.f, self.SEPARATOR) + for line in lines: + write_str(self.f, line) + write_str(self.f, self.SEPARATOR) def get_git_dir(): @@ -1877,11 +2048,13 @@ class Environment(object): Return the address to be used as the 'From' email address in the email envelope. - get_fromaddr() + get_fromaddr(change=None) Return the 'From' email address used in the email 'From:' - headers. (May be a full RFC 2822 email address like 'Joe - User '.) + headers. If the change is known when this function is + called, it is passed in as the 'change' parameter. (May + be a full RFC 2822 email address like 'Joe User + '.) get_administrator() @@ -1901,12 +2074,29 @@ class Environment(object): get_reply_to_commit() is used for individual commit emails. + get_ref_filter_regex() + + Return a tuple -- a compiled regex, and a boolean indicating + whether the regex picks refs to include (if False, the regex + matches on refs to exclude). + + get_default_ref_ignore_regex() + + Return a regex that should be ignored for both what emails + to send and when computing what commits are considered new + to the repository. Default is "^refs/notes/". + They should also define the following attributes: announce_show_shortlog (bool) True iff announce emails should include a shortlog. + commit_email_format (string) + + If "html", generate commit emails in HTML instead of plain text + used by default. + refchange_showgraph (bool) True iff refchanges emails should include a detailed graph. @@ -1939,6 +2129,11 @@ class Environment(object): commit mail. The value should be a list of strings representing words to be passed to the command. + date_substitute (string) + + String to be used in substitution for 'Date:' at start of + line in the output of 'git log'. + quiet (bool) On success do not write to stderr @@ -1950,6 +2145,13 @@ class Environment(object): True if a combined email should be produced when a single new commit is pushed to a branch, False otherwise. + from_refchange, from_commit (strings) + + Addresses to use for the From: field for refchange emails + and commit emails respectively. Set from + multimailhook.fromRefchange and multimailhook.fromCommit + by ConfigEnvironmentMixin. + """ REPO_NAME_RE = re.compile(r'^(?P.+?)(?:\.git)$') @@ -1957,6 +2159,7 @@ class Environment(object): def __init__(self, osenv=None): self.osenv = osenv or os.environ self.announce_show_shortlog = False + self.commit_email_format = "text" self.maxcommitemails = 500 self.diffopts = ['--stat', '--summary', '--find-copies-harder'] self.graphopts = ['--oneline', '--decorate'] @@ -1964,6 +2167,7 @@ def __init__(self, osenv=None): self.refchange_showgraph = False self.refchange_showlog = False self.commitlogopts = ['-C', '--stat', '-p', '--cc'] + self.date_substitute = 'AuthorDate: ' self.quiet = False self.stdout = False self.combine_when_single_commit = True @@ -1972,7 +2176,6 @@ def __init__(self, osenv=None): 'administrator', 'charset', 'emailprefix', - 'fromaddr', 'pusher', 'pusher_email', 'repo_path', @@ -1998,7 +2201,7 @@ def get_pusher(self): def get_pusher_email(self): return None - def get_fromaddr(self): + def get_fromaddr(self, change=None): config = Config('user') fromname = config.get('name', default='') fromemail = config.get('email', default='') @@ -2080,6 +2283,15 @@ def get_revision_recipients(self, revision): def get_reply_to_commit(self, revision): return revision.author + def get_default_ref_ignore_regex(self): + # The commit messages of git notes are essentially meaningless + # and "filenames" in git notes commits are an implementational + # detail that might surprise users at first. As such, we + # would need a completely different method for handling emails + # of git notes in order for them to be of benefit for users, + # which we simply do not have right now. + return "^refs/notes/" + def filter_body(self, lines): """Filter the lines intended for an email body. @@ -2095,19 +2307,19 @@ def log_msg(self, msg): """Write the string msg on a log file or on stderr. Sends the text to stderr by default, override to change the behavior.""" - sys.stderr.write(msg) + write_str(sys.stderr, msg) def log_warning(self, msg): """Write the string msg on a log file or on stderr. Sends the text to stderr by default, override to change the behavior.""" - sys.stderr.write(msg) + write_str(sys.stderr, msg) def log_error(self, msg): """Write the string msg on a log file or on stderr. Sends the text to stderr by default, override to change the behavior.""" - sys.stderr.write(msg) + write_str(sys.stderr, msg) class ConfigEnvironmentMixin(Environment): @@ -2128,6 +2340,14 @@ def __init__(self, config, **kw): class ConfigOptionsEnvironmentMixin(ConfigEnvironmentMixin): """An Environment that reads most of its information from "git config".""" + @staticmethod + def forbid_field_values(name, value, forbidden): + for forbidden_val in forbidden: + if value is not None and value.lower() == forbidden: + raise ConfigurationException( + '"%s" is not an allowed setting for %s' % (value, name) + ) + def __init__(self, config, **kw): super(ConfigOptionsEnvironmentMixin, self).__init__( config=config, **kw @@ -2144,14 +2364,26 @@ def __init__(self, config, **kw): if val is not None: setattr(self, var, val) + commit_email_format = config.get('commitEmailFormat') + if commit_email_format is not None: + if commit_email_format != "html" and commit_email_format != "text": + self.log_warning( + '*** Unknown value for multimailhook.commitEmailFormat: %s\n' % + commit_email_format + + '*** Expected either "text" or "html". Ignoring.\n' + ) + else: + self.commit_email_format = commit_email_format + maxcommitemails = config.get('maxcommitemails') if maxcommitemails is not None: try: self.maxcommitemails = int(maxcommitemails) except ValueError: self.log_warning( - '*** Malformed value for multimailhook.maxCommitEmails: %s\n' % maxcommitemails - + '*** Expected a number. Ignoring.\n' + '*** Malformed value for multimailhook.maxCommitEmails: %s\n' + % maxcommitemails + + '*** Expected a number. Ignoring.\n' ) diffopts = config.get('diffopts') @@ -2170,32 +2402,44 @@ def __init__(self, config, **kw): if commitlogopts is not None: self.commitlogopts = shlex.split(commitlogopts) + date_substitute = config.get('dateSubstitute') + if date_substitute == 'none': + self.date_substitute = None + elif date_substitute is not None: + self.date_substitute = date_substitute + reply_to = config.get('replyTo') self.__reply_to_refchange = config.get('replyToRefchange', default=reply_to) - if ( - self.__reply_to_refchange is not None - and self.__reply_to_refchange.lower() == 'author' - ): - raise ConfigurationException( - '"author" is not an allowed setting for replyToRefchange' - ) + self.forbid_field_values('replyToRefchange', + self.__reply_to_refchange, + ['author']) self.__reply_to_commit = config.get('replyToCommit', default=reply_to) + from_addr = self.config.get('from') + self.from_refchange = config.get('fromRefchange') + self.forbid_field_values('fromRefchange', + self.from_refchange, + ['author', 'none']) + self.from_commit = config.get('fromCommit') + self.forbid_field_values('fromCommit', + self.from_commit, + ['none']) + combine = config.get_bool('combineWhenSingleCommit') if combine is not None: self.combine_when_single_commit = combine def get_administrator(self): return ( - self.config.get('administrator') - or self.get_sender() - or super(ConfigOptionsEnvironmentMixin, self).get_administrator() + self.config.get('administrator') or + self.get_sender() or + super(ConfigOptionsEnvironmentMixin, self).get_administrator() ) def get_repo_shortname(self): return ( - self.config.get('reponame') - or super(ConfigOptionsEnvironmentMixin, self).get_repo_shortname() + self.config.get('reponame') or + super(ConfigOptionsEnvironmentMixin, self).get_repo_shortname() ) def get_emailprefix(self): @@ -2212,33 +2456,42 @@ def get_emailprefix(self): def get_sender(self): return self.config.get('envelopesender') - def get_fromaddr(self): + def process_addr(self, addr, change): + if addr.lower() == 'author': + if hasattr(change, 'author'): + return change.author + else: + return None + elif addr.lower() == 'pusher': + return self.get_pusher_email() + elif addr.lower() == 'none': + return None + else: + return addr + + def get_fromaddr(self, change=None): fromaddr = self.config.get('from') + if change: + alt_fromaddr = change.get_alt_fromaddr() + if alt_fromaddr: + fromaddr = alt_fromaddr + if fromaddr: + fromaddr = self.process_addr(fromaddr, change) if fromaddr: return fromaddr - return super(ConfigOptionsEnvironmentMixin, self).get_fromaddr() + return super(ConfigOptionsEnvironmentMixin, self).get_fromaddr(change) def get_reply_to_refchange(self, refchange): if self.__reply_to_refchange is None: return super(ConfigOptionsEnvironmentMixin, self).get_reply_to_refchange(refchange) - elif self.__reply_to_refchange.lower() == 'pusher': - return self.get_pusher_email() - elif self.__reply_to_refchange.lower() == 'none': - return None else: - return self.__reply_to_refchange + return self.process_addr(self.__reply_to_refchange, refchange) def get_reply_to_commit(self, revision): if self.__reply_to_commit is None: return super(ConfigOptionsEnvironmentMixin, self).get_reply_to_commit(revision) - elif self.__reply_to_commit.lower() == 'author': - return revision.author - elif self.__reply_to_commit.lower() == 'pusher': - return self.get_pusher_email() - elif self.__reply_to_commit.lower() == 'none': - return None else: - return self.__reply_to_commit + return self.process_addr(self.__reply_to_commit, revision) def get_scancommitforcc(self): return self.config.get('scancommitforcc') @@ -2270,12 +2523,14 @@ def __init__(self, strict_utf8=True, emailmaxlinelength=500, **kw): def filter_body(self, lines): lines = super(FilterLinesEnvironmentMixin, self).filter_body(lines) if self.__strict_utf8: - lines = (line.decode(ENCODING, 'replace') for line in lines) + if not PYTHON3: + lines = (line.decode(ENCODING, 'replace') for line in lines) # Limit the line length in Unicode-space to avoid # splitting characters: if self.__emailmaxlinelength: lines = limit_linelength(lines, self.__emailmaxlinelength) - lines = (line.encode(ENCODING, 'replace') for line in lines) + if not PYTHON3: + lines = (line.encode(ENCODING, 'replace') for line in lines) elif self.__emailmaxlinelength: lines = limit_linelength(lines, self.__emailmaxlinelength) @@ -2404,10 +2659,10 @@ def __init__( # actual *contents* of the change being reported, we only # choose based on the *type* of the change. Therefore we can # compute them once and for all: - if not (refchange_recipients - or announce_recipients - or revision_recipients - or scancommitforcc): + if not (refchange_recipients or + announce_recipients or + revision_recipients or + scancommitforcc): raise ConfigurationException('No email recipients configured!') self.__refchange_recipients = refchange_recipients self.__announce_recipients = announce_recipients @@ -2457,13 +2712,104 @@ def _get_recipients(self, config, *names): found, raise a ConfigurationException.""" for name in names: - retval = config.get_recipients(name) - if retval is not None: - return retval + lines = config.get_all(name) + if lines is not None: + lines = [line.strip() for line in lines] + # Single "none" is a special value equivalen to empty string. + if lines == ['none']: + lines = [''] + return ', '.join(lines) else: return '' +class StaticRefFilterEnvironmentMixin(Environment): + """Set branch filter statically based on constructor parameters.""" + + def __init__(self, ref_filter_incl_regex, ref_filter_excl_regex, + ref_filter_do_send_regex, ref_filter_dont_send_regex, + **kw): + super(StaticRefFilterEnvironmentMixin, self).__init__(**kw) + + if ref_filter_incl_regex and ref_filter_excl_regex: + raise ConfigurationException( + "Cannot specify both a ref inclusion and exclusion regex.") + self.__is_inclusion_filter = bool(ref_filter_incl_regex) + default_exclude = self.get_default_ref_ignore_regex() + if ref_filter_incl_regex: + ref_filter_regex = ref_filter_incl_regex + elif ref_filter_excl_regex: + ref_filter_regex = ref_filter_excl_regex + '|' + default_exclude + else: + ref_filter_regex = default_exclude + try: + self.__compiled_regex = re.compile(ref_filter_regex) + except Exception: + raise ConfigurationException( + 'Invalid Ref Filter Regex "%s": %s' % (ref_filter_regex, sys.exc_info()[1])) + + if ref_filter_do_send_regex and ref_filter_dont_send_regex: + raise ConfigurationException( + "Cannot specify both a ref doSend and dontSend regex.") + if ref_filter_do_send_regex or ref_filter_dont_send_regex: + self.__is_do_send_filter = bool(ref_filter_do_send_regex) + if ref_filter_incl_regex: + ref_filter_send_regex = ref_filter_incl_regex + elif ref_filter_excl_regex: + ref_filter_send_regex = ref_filter_excl_regex + else: + ref_filter_send_regex = '.*' + self.__is_do_send_filter = True + try: + self.__send_compiled_regex = re.compile(ref_filter_send_regex) + except Exception: + raise ConfigurationException( + 'Invalid Ref Filter Regex "%s": %s' % + (ref_filter_send_regex, sys.exc_info()[1])) + else: + self.__send_compiled_regex = self.__compiled_regex + self.__is_do_send_filter = self.__is_inclusion_filter + + def get_ref_filter_regex(self, send_filter=False): + if send_filter: + return self.__send_compiled_regex, self.__is_do_send_filter + else: + return self.__compiled_regex, self.__is_inclusion_filter + + +class ConfigRefFilterEnvironmentMixin( + ConfigEnvironmentMixin, + StaticRefFilterEnvironmentMixin + ): + """Determine branch filtering statically based on config.""" + + def _get_regex(self, config, key): + """Get a list of whitespace-separated regex. The refFilter* config + variables are multivalued (hence the use of get_all), and we + allow each entry to be a whitespace-separated list (hence the + split on each line). The whole thing is glued into a single regex.""" + values = config.get_all(key) + if values is None: + return values + items = [] + for line in values: + for i in line.split(): + items.append(i) + if items == []: + return None + return '|'.join(items) + + def __init__(self, config, **kw): + super(ConfigRefFilterEnvironmentMixin, self).__init__( + config=config, + ref_filter_incl_regex=self._get_regex(config, 'refFilterInclusionRegex'), + ref_filter_excl_regex=self._get_regex(config, 'refFilterExclusionRegex'), + ref_filter_do_send_regex=self._get_regex(config, 'refFilterDoSendRegex'), + ref_filter_dont_send_regex=self._get_regex(config, 'refFilterDontSendRegex'), + **kw + ) + + class ProjectdescEnvironmentMixin(Environment): """Make a "projectdesc" value available for templates. @@ -2499,6 +2845,7 @@ class GenericEnvironment( ComputeFQDNEnvironmentMixin, ConfigFilterLinesEnvironmentMixin, ConfigRecipientsEnvironmentMixin, + ConfigRefFilterEnvironmentMixin, PusherDomainEnvironmentMixin, ConfigOptionsEnvironmentMixin, GenericEnvironmentMixin, @@ -2513,14 +2860,14 @@ def get_repo_shortname(self): # repo_shortname (though it's probably not as good as a value # the user might have explicitly put in his config). return ( - self.osenv.get('GL_REPO', None) - or super(GitoliteEnvironmentMixin, self).get_repo_shortname() + self.osenv.get('GL_REPO', None) or + super(GitoliteEnvironmentMixin, self).get_repo_shortname() ) def get_pusher(self): return self.osenv.get('GL_USER', 'unknown user') - def get_fromaddr(self): + def get_fromaddr(self, change=None): GL_USER = self.osenv.get('GL_USER') if GL_USER is not None: # Find the path to gitolite.conf. Note that gitolite v3 @@ -2536,9 +2883,9 @@ def get_fromaddr(self): f = open(GL_CONF, 'rU') try: in_user_emails_section = False - re_template = r'^\s*#\s*{}\s*$' + re_template = r'^\s*#\s*%s\s*$' re_begin, re_user, re_end = ( - re.compile(re_template.format(x)) + re.compile(re_template % x) for x in ( r'BEGIN\s+USER\s+EMAILS', re.escape(GL_USER) + r'\s+(.*)', @@ -2557,7 +2904,7 @@ def get_fromaddr(self): return m.group(1) finally: f.close() - return super(GitoliteEnvironmentMixin, self).get_fromaddr() + return super(GitoliteEnvironmentMixin, self).get_fromaddr(change) class IncrementalDateTime(object): @@ -2570,8 +2917,9 @@ class IncrementalDateTime(object): def __init__(self): self.time = time.time() + self.next = self.__next__ # Python 2 backward compatibility - def next(self): + def __next__(self): formatted = formatdate(self.time, True) self.time += 1 return formatted @@ -2583,6 +2931,7 @@ class GitoliteEnvironment( ComputeFQDNEnvironmentMixin, ConfigFilterLinesEnvironmentMixin, ConfigRecipientsEnvironmentMixin, + ConfigRefFilterEnvironmentMixin, PusherDomainEnvironmentMixin, ConfigOptionsEnvironmentMixin, GitoliteEnvironmentMixin, @@ -2591,6 +2940,117 @@ class GitoliteEnvironment( pass +class StashEnvironmentMixin(Environment): + def __init__(self, user=None, repo=None, **kw): + super(StashEnvironmentMixin, self).__init__(**kw) + self.__user = user + self.__repo = repo + + def get_repo_shortname(self): + return self.__repo + + def get_pusher(self): + return re.match('(.*?)\s*<', self.__user).group(1) + + def get_pusher_email(self): + return self.__user + + def get_fromaddr(self, change=None): + return self.__user + + +class StashEnvironment( + StashEnvironmentMixin, + ProjectdescEnvironmentMixin, + ConfigMaxlinesEnvironmentMixin, + ComputeFQDNEnvironmentMixin, + ConfigFilterLinesEnvironmentMixin, + ConfigRecipientsEnvironmentMixin, + ConfigRefFilterEnvironmentMixin, + PusherDomainEnvironmentMixin, + ConfigOptionsEnvironmentMixin, + Environment, + ): + pass + + +class GerritEnvironmentMixin(Environment): + def __init__(self, project=None, submitter=None, update_method=None, **kw): + super(GerritEnvironmentMixin, self).__init__(**kw) + self.__project = project + self.__submitter = submitter + self.__update_method = update_method + "Make an 'update_method' value available for templates." + self.COMPUTED_KEYS += ['update_method'] + + def get_repo_shortname(self): + return self.__project + + def get_pusher(self): + if self.__submitter: + if self.__submitter.find('<') != -1: + # Submitter has a configured email, we transformed + # __submitter into an RFC 2822 string already. + return re.match('(.*?)\s*<', self.__submitter).group(1) + else: + # Submitter has no configured email, it's just his name. + return self.__submitter + else: + # If we arrive here, this means someone pushed "Submit" from + # the gerrit web UI for the CR (or used one of the programmatic + # APIs to do the same, such as gerrit review) and the + # merge/push was done by the Gerrit user. It was technically + # triggered by someone else, but sadly we have no way of + # determining who that someone else is at this point. + return 'Gerrit' # 'unknown user'? + + def get_pusher_email(self): + if self.__submitter: + return self.__submitter + else: + return super(GerritEnvironmentMixin, self).get_pusher_email() + + def get_fromaddr(self, change=None): + if self.__submitter and self.__submitter.find('<') != -1: + return self.__submitter + else: + return super(GerritEnvironmentMixin, self).get_fromaddr(change) + + def get_default_ref_ignore_regex(self): + default = super(GerritEnvironmentMixin, self).get_default_ref_ignore_regex() + return default + '|^refs/changes/|^refs/cache-automerge/|^refs/meta/' + + def get_revision_recipients(self, revision): + # Merge commits created by Gerrit when users hit "Submit this patchset" + # in the Web UI (or do equivalently with REST APIs or the gerrit review + # command) are not something users want to see an individual email for. + # Filter them out. + committer = read_git_output(['log', '--no-walk', '--format=%cN', + revision.rev.sha1]) + if committer == 'Gerrit Code Review': + return [] + else: + return super(GerritEnvironmentMixin, self).get_revision_recipients(revision) + + def get_update_method(self): + return self.__update_method + + +class GerritEnvironment( + GerritEnvironmentMixin, + ProjectdescEnvironmentMixin, + ConfigMaxlinesEnvironmentMixin, + ComputeFQDNEnvironmentMixin, + ConfigFilterLinesEnvironmentMixin, + ConfigRecipientsEnvironmentMixin, + ConfigRefFilterEnvironmentMixin, + PusherDomainEnvironmentMixin, + ConfigOptionsEnvironmentMixin, + Environment, + ): + pass + + class Push(object): """Represent an entire push (i.e., a group of ReferenceChanges). @@ -2673,10 +3133,11 @@ class is to figure out these things, and to make sure that new ]) ) - def __init__(self, changes, ignore_other_refs=False): + def __init__(self, environment, changes, ignore_other_refs=False): self.changes = sorted(changes, key=self._sort_key) self.__other_ref_sha1s = None self.__cached_commits_spec = {} + self.environment = environment if ignore_other_refs: self.__other_ref_sha1s = set() @@ -2703,10 +3164,14 @@ def _other_ref_sha1s(self): '%(objectname) %(objecttype) %(refname)\n' '%(*objectname) %(*objecttype) %(refname)' ) + ref_filter_regex, is_inclusion_filter = \ + self.environment.get_ref_filter_regex() for line in read_git_lines( ['for-each-ref', '--format=%s' % (fmt,)]): (sha1, type, name) = line.split(' ', 2) - if sha1 and type == 'commit' and name not in updated_refs: + if (sha1 and type == 'commit' and + name not in updated_refs and + include_ref(name, ref_filter_regex, is_inclusion_filter)): sha1s.add(sha1) self.__other_ref_sha1s = sha1s @@ -2856,7 +3321,7 @@ def send_emails(self, mailer, body_filter=None): if not change.environment.quiet: change.environment.log_msg( 'Sending notification emails to: %s\n' % (change.recipients,)) - extra_values = {'send_date': send_date.next()} + extra_values = {'send_date': next(send_date)} rev = change.send_single_combined_email(sha1s) if rev: @@ -2876,9 +3341,9 @@ def send_emails(self, mailer, body_filter=None): max_emails = change.environment.maxcommitemails if max_emails and len(sha1s) > max_emails: change.environment.log_warning( - '*** Too many new commits (%d), not sending commit emails.\n' % len(sha1s) - + '*** Try setting multimailhook.maxCommitEmails to a greater value\n' - + '*** Currently, multimailhook.maxCommitEmails=%d\n' % max_emails + '*** Too many new commits (%d), not sending commit emails.\n' % len(sha1s) + + '*** Try setting multimailhook.maxCommitEmails to a greater value\n' + + '*** Currently, multimailhook.maxCommitEmails=%d\n' % max_emails ) return @@ -2889,7 +3354,7 @@ def send_emails(self, mailer, body_filter=None): rev.recipients = rev.cc_recipients rev.cc_recipients = None if rev.recipients: - extra_values = {'send_date': send_date.next()} + extra_values = {'send_date': next(send_date)} mailer.send( rev.generate_email(self, body_filter, extra_values), rev.recipients, @@ -2904,18 +3369,33 @@ def send_emails(self, mailer, body_filter=None): ) +def include_ref(refname, ref_filter_regex, is_inclusion_filter): + does_match = bool(ref_filter_regex.search(refname)) + if is_inclusion_filter: + return does_match + else: # exclusion filter -- we include the ref if the regex doesn't match + return not does_match + + def run_as_post_receive_hook(environment, mailer): + ref_filter_regex, is_inclusion_filter = environment.get_ref_filter_regex(True) changes = [] for line in sys.stdin: (oldrev, newrev, refname) = line.strip().split(' ', 2) + if not include_ref(refname, ref_filter_regex, is_inclusion_filter): + continue changes.append( ReferenceChange.create(environment, oldrev, newrev, refname) ) - push = Push(changes) - push.send_emails(mailer, body_filter=environment.filter_body) + if changes: + push = Push(environment, changes) + push.send_emails(mailer, body_filter=environment.filter_body) def run_as_update_hook(environment, mailer, refname, oldrev, newrev, force_send=False): + ref_filter_regex, is_inclusion_filter = environment.get_ref_filter_regex(True) + if not include_ref(refname, ref_filter_regex, is_inclusion_filter): + return changes = [ ReferenceChange.create( environment, @@ -2924,7 +3404,7 @@ def run_as_update_hook(environment, mailer, refname, oldrev, newrev, force_send= refname, ), ] - push = Push(changes, force_send) + push = Push(environment, changes, force_send) push.send_emails(mailer, body_filter=environment.filter_body) @@ -2953,8 +3433,8 @@ def choose_mailer(config, environment): mailer = SendMailer(command=command, envelopesender=environment.get_sender()) else: environment.log_error( - 'fatal: multimailhook.mailer is set to an incorrect value: "%s"\n' % mailer - + 'please use one of "smtp" or "sendmail".\n' + 'fatal: multimailhook.mailer is set to an incorrect value: "%s"\n' % mailer + + 'please use one of "smtp" or "sendmail".\n' ) sys.exit(1) return mailer @@ -2963,14 +3443,18 @@ def choose_mailer(config, environment): KNOWN_ENVIRONMENTS = { 'generic': GenericEnvironmentMixin, 'gitolite': GitoliteEnvironmentMixin, + 'stash': StashEnvironmentMixin, + 'gerrit': GerritEnvironmentMixin, } -def choose_environment(config, osenv=None, env=None, recipients=None): +def choose_environment(config, osenv=None, env=None, recipients=None, + hook_info=None): if not osenv: osenv = os.environ environment_mixins = [ + ConfigRefFilterEnvironmentMixin, ProjectdescEnvironmentMixin, ConfigMaxlinesEnvironmentMixin, ComputeFQDNEnvironmentMixin, @@ -2992,7 +3476,15 @@ def choose_environment(config, osenv=None, env=None, recipients=None): else: env = 'generic' - environment_mixins.append(KNOWN_ENVIRONMENTS[env]) + environment_mixins.insert(0, KNOWN_ENVIRONMENTS[env]) + + if env == 'stash': + environment_kw['user'] = hook_info['stash_user'] + environment_kw['repo'] = hook_info['stash_repo'] + elif env == 'gerrit': + environment_kw['project'] = hook_info['project'] + environment_kw['submitter'] = hook_info['submitter'] + environment_kw['update_method'] = hook_info['update_method'] if recipients: environment_mixins.insert(0, StaticRecipientsEnvironmentMixin) @@ -3011,6 +3503,116 @@ def choose_environment(config, osenv=None, env=None, recipients=None): return environment_klass(**environment_kw) +def get_version(): + oldcwd = os.getcwd() + try: + try: + os.chdir(os.path.dirname(os.path.realpath(__file__))) + git_version = read_git_output(['describe', '--tags', 'HEAD']) + if git_version == __version__: + return git_version + else: + return '%s (%s)' % (__version__, git_version) + except: + pass + finally: + os.chdir(oldcwd) + return __version__ + + +def compute_gerrit_options(options, args, required_gerrit_options): + if None in required_gerrit_options: + raise SystemExit("Error: Specify all of --oldrev, --newrev, --refname, " + "and --project; or none of them.") + + if options.environment not in (None, 'gerrit'): + raise SystemExit("Non-gerrit environments incompatible with --oldrev, " + "--newrev, --refname, and --project") + options.environment = 'gerrit' + + if args: + raise SystemExit("Error: Positional parameters not allowed with " + "--oldrev, --newrev, and --refname.") + + # Gerrit oddly omits 'refs/heads/' in the refname when calling + # ref-updated hook; put it back. + git_dir = get_git_dir() + if (not os.path.exists(os.path.join(git_dir, options.refname)) and + os.path.exists(os.path.join(git_dir, 'refs', 'heads', + options.refname))): + options.refname = 'refs/heads/' + options.refname + + # Convert each string option unicode for Python3. + if PYTHON3: + opts = ['environment', 'recipients', 'oldrev', 'newrev', 'refname', + 'project', 'submitter', 'stash-user', 'stash-repo'] + for opt in opts: + if not hasattr(options, opt): + continue + obj = getattr(options, opt) + if obj: + enc = obj.encode('utf-8', 'surrogateescape') + dec = enc.decode('utf-8', 'replace') + setattr(options, opt, dec) + + # New revisions can appear in a gerrit repository either due to someone + # pushing directly (in which case options.submitter will be set), or they + # can press "Submit this patchset" in the web UI for some CR (in which + # case options.submitter will not be set and gerrit will not have provided + # us the information about who pressed the button). + # + # Note for the nit-picky: I'm lumping in REST API calls and the ssh + # gerrit review command in with "Submit this patchset" button, since they + # have the same effect. + if options.submitter: + update_method = 'pushed' + # The submitter argument is almost an RFC 2822 email address; change it + # from 'User Name (email@domain)' to 'User Name ' so it is + options.submitter = options.submitter.replace('(', '<').replace(')', '>') + else: + update_method = 'submitted' + # Gerrit knew who submitted this patchset, but threw that information + # away when it invoked this hook. However, *IF* Gerrit created a + # merge to bring the patchset in (project 'Submit Type' is either + # "Always Merge", or is "Merge if Necessary" and happens to be + # necessary for this particular CR), then it will have the committer + # of that merge be 'Gerrit Code Review' and the author will be the + # person who requested the submission of the CR. Since this is fairly + # likely for most gerrit installations (of a reasonable size), it's + # worth the extra effort to try to determine the actual submitter. + rev_info = read_git_lines(['log', '--no-walk', '--merges', + '--format=%cN%n%aN <%aE>', options.newrev]) + if rev_info and rev_info[0] == 'Gerrit Code Review': + options.submitter = rev_info[1] + + # We pass back refname, oldrev, newrev as args because then the + # gerrit ref-updated hook is much like the git update hook + return (options, + [options.refname, options.oldrev, options.newrev], + {'project': options.project, 'submitter': options.submitter, + 'update_method': update_method}) + + +def check_hook_specific_args(options, args): + # First check for stash arguments + if (options.stash_user is None) != (options.stash_repo is None): + raise SystemExit("Error: Specify both of --stash-user and " + "--stash-repo or neither.") + if options.stash_user: + options.environment = 'stash' + return options, args, {'stash_user': options.stash_user, + 'stash_repo': options.stash_repo} + + # Finally, check for gerrit specific arguments + required_gerrit_options = (options.oldrev, options.newrev, options.refname, + options.project) + if required_gerrit_options != (None,) * 4: + return compute_gerrit_options(options, args, required_gerrit_options) + + # No special options in use, just return what we started with + return options, args, {} + + def main(args): parser = optparse.OptionParser( description=__doc__, @@ -3019,7 +3621,7 @@ def main(args): parser.add_option( '--environment', '--env', action='store', type='choice', - choices=['generic', 'gitolite'], default=None, + choices=list(KNOWN_ENVIRONMENTS.keys()), default=None, help=( 'Choose type of environment is in use. Default is taken from ' 'multimailhook.environment if set; otherwise "generic".' @@ -3048,8 +3650,58 @@ def main(args): 'detection in this mode.' ), ) + parser.add_option( + '-c', metavar="=", action='append', + help=( + 'Pass a configuration parameter through to git. The value given ' + 'will override values from configuration files. See the -c option ' + 'of git(1) for more details. (Only works with git >= 1.7.3)' + ), + ) + parser.add_option( + '--version', '-v', action='store_true', default=False, + help=( + "Display git-multimail's version" + ), + ) + # The following options permit this script to be run as a gerrit + # ref-updated hook. See e.g. + # code.google.com/p/gerrit/source/browse/Documentation/config-hooks.txt + # We suppress help for these items, since these are specific to gerrit, + # and we don't want users directly using them any way other than how the + # gerrit ref-updated hook is called. + parser.add_option('--oldrev', action='store', help=optparse.SUPPRESS_HELP) + parser.add_option('--newrev', action='store', help=optparse.SUPPRESS_HELP) + parser.add_option('--refname', action='store', help=optparse.SUPPRESS_HELP) + parser.add_option('--project', action='store', help=optparse.SUPPRESS_HELP) + parser.add_option('--submitter', action='store', help=optparse.SUPPRESS_HELP) + + # The following allow this to be run as a stash asynchronous post-receive + # hook (almost identical to a git post-receive hook but triggered also for + # merges of pull requests from the UI). We suppress help for these items, + # since these are specific to stash. + parser.add_option('--stash-user', action='store', help=optparse.SUPPRESS_HELP) + parser.add_option('--stash-repo', action='store', help=optparse.SUPPRESS_HELP) (options, args) = parser.parse_args(args) + (options, args, hook_info) = check_hook_specific_args(options, args) + + if options.version: + sys.stdout.write('git-multimail version ' + get_version() + '\n') + return + + if options.c: + parameters = os.environ.get('GIT_CONFIG_PARAMETERS', '') + if parameters: + parameters += ' ' + # git expects GIT_CONFIG_PARAMETERS to be of the form + # "'name1=value1' 'name2=value2' 'name3=value3'" + # including everything inside the double quotes (but not the double + # quotes themselves). Spacing is critical. Also, if a value contains + # a literal single quote that quote must be represented using the + # four character sequence: '\'' + parameters += ' '.join("'" + x.replace("'", "'\\''") + "'" for x in options.c) + os.environ['GIT_CONFIG_PARAMETERS'] = parameters config = Config('multimailhook') @@ -3058,6 +3710,7 @@ def main(args): config, osenv=os.environ, env=options.environment, recipients=options.recipients, + hook_info=hook_info, ) if options.show_env: @@ -3080,9 +3733,20 @@ def main(args): run_as_update_hook(environment, mailer, refname, oldrev, newrev, options.force_send) else: run_as_post_receive_hook(environment, mailer) - except ConfigurationException, e: - sys.exit(str(e)) - + except ConfigurationException: + sys.exit(sys.exc_info()[1]) + except Exception: + t, e, tb = sys.exc_info() + import traceback + sys.stdout.write('\n') + sys.stdout.write('Exception \'' + t.__name__ + + '\' raised. Please report this as a bug to\n') + sys.stdout.write('https://github.com/git-multimail/git-multimail/issues\n') + sys.stdout.write('with the information below:\n\n') + sys.stdout.write('git-multimail version ' + get_version() + '\n') + sys.stdout.write('Python version ' + sys.version + '\n') + traceback.print_exc(file=sys.stdout) + sys.exit(1) if __name__ == '__main__': main(sys.argv[1:]) diff --git a/contrib/hooks/multimail/migrate-mailhook-config b/contrib/hooks/multimail/migrate-mailhook-config index d0e9b39201..992657bbdc 100755 --- a/contrib/hooks/multimail/migrate-mailhook-config +++ b/contrib/hooks/multimail/migrate-mailhook-config @@ -1,4 +1,4 @@ -#! /usr/bin/env python2 +#! /usr/bin/env python """Migrate a post-receive-email configuration to be usable with git_multimail.py. diff --git a/contrib/hooks/multimail/post-receive.example b/contrib/hooks/multimail/post-receive.example index 43f7b6b635..9975df7107 100755 --- a/contrib/hooks/multimail/post-receive.example +++ b/contrib/hooks/multimail/post-receive.example @@ -1,4 +1,4 @@ -#! /usr/bin/env python2 +#! /usr/bin/env python """Example post-receive hook based on git-multimail. @@ -42,7 +42,6 @@ import os import git_multimail - # It is possible to modify the output templates here; e.g.: #git_multimail.FOOTER_TEMPLATE = """\ @@ -61,8 +60,9 @@ config = git_multimail.Config('multimailhook') try: environment = git_multimail.GenericEnvironment(config=config) #environment = git_multimail.GitoliteEnvironment(config=config) -except git_multimail.ConfigurationException, e: - sys.exit(str(e)) +except git_multimail.ConfigurationException: + sys.stderr.write('*** %s\n' % sys.exc_info()[1]) + sys.exit(1) # Choose the method of sending emails based on the git config: diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh index 9f06571851..308b777b0a 100755 --- a/contrib/subtree/git-subtree.sh +++ b/contrib/subtree/git-subtree.sh @@ -648,7 +648,7 @@ cmd_split() debug "Merging split branch into HEAD..." latest_old=$(cache_get latest_old) git merge -s ours \ - -m "$(rejoin_msg $dir $latest_old $latest_new)" \ + -m "$(rejoin_msg "$dir" $latest_old $latest_new)" \ $latest_new >&2 || exit $? fi if [ -n "$branch" ]; then @@ -735,7 +735,7 @@ cmd_push() refspec=$2 echo "git push using: " $repository $refspec localrev=$(git subtree split --prefix="$prefix") || die - git push $repository $localrev:refs/heads/$refspec + git push "$repository" $localrev:refs/heads/$refspec else die "'$dir' must already exist. Try 'git subtree add'." fi diff --git a/contrib/subtree/t/t7900-subtree.sh b/contrib/subtree/t/t7900-subtree.sh index 90519823be..dfbe443dea 100755 --- a/contrib/subtree/t/t7900-subtree.sh +++ b/contrib/subtree/t/t7900-subtree.sh @@ -1,6 +1,7 @@ #!/bin/sh # # Copyright (c) 2012 Avery Pennaraum +# Copyright (c) 2015 Alexey Shumkin # test_description='Basic porcelain support for subtrees @@ -32,25 +33,6 @@ check_equal() fi } -fixnl() -{ - t="" - while read x; do - t="$t$x " - done - echo $t -} - -multiline() -{ - while read x; do - set -- $x - for d in "$@"; do - echo "$d" - done - done -} - undo() { git reset --hard HEAD~ @@ -62,11 +44,11 @@ last_commit_message() } test_expect_success 'init subproj' ' - test_create_repo subproj + test_create_repo "sub proj" ' # To the subproject! -cd subproj +cd ./"sub proj" test_expect_success 'add sub1' ' create sub1 && @@ -106,39 +88,39 @@ test_expect_success 'add main4' ' ' test_expect_success 'fetch subproj history' ' - git fetch ./subproj sub1 && + git fetch ./"sub proj" sub1 && git branch sub1 FETCH_HEAD ' test_expect_success 'no subtree exists in main tree' ' - test_must_fail git subtree merge --prefix=subdir sub1 + test_must_fail git subtree merge --prefix="sub dir" sub1 ' test_expect_success 'no pull from non-existant subtree' ' - test_must_fail git subtree pull --prefix=subdir ./subproj sub1 + test_must_fail git subtree pull --prefix="sub dir" ./"sub proj" sub1 ' test_expect_success 'check if --message works for add' ' - git subtree add --prefix=subdir --message="Added subproject" sub1 && + git subtree add --prefix="sub dir" --message="Added subproject" sub1 && check_equal ''"$(last_commit_message)"'' "Added subproject" && undo ' test_expect_success 'check if --message works as -m and --prefix as -P' ' - git subtree add -P subdir -m "Added subproject using git subtree" sub1 && + git subtree add -P "sub dir" -m "Added subproject using git subtree" sub1 && check_equal ''"$(last_commit_message)"'' "Added subproject using git subtree" && undo ' test_expect_success 'check if --message works with squash too' ' - git subtree add -P subdir -m "Added subproject with squash" --squash sub1 && + git subtree add -P "sub dir" -m "Added subproject with squash" --squash sub1 && check_equal ''"$(last_commit_message)"'' "Added subproject with squash" && undo ' test_expect_success 'add subproj to mainline' ' - git subtree add --prefix=subdir/ FETCH_HEAD && - check_equal ''"$(last_commit_message)"'' "Add '"'subdir/'"' from commit '"'"'''"$(git rev-parse sub1)"'''"'"'" + git subtree add --prefix="sub dir"/ FETCH_HEAD && + check_equal ''"$(last_commit_message)"'' "Add '"'sub dir/'"' from commit '"'"'''"$(git rev-parse sub1)"'''"'"'" ' # this shouldn't actually do anything, since FETCH_HEAD is already a parent @@ -147,7 +129,7 @@ test_expect_success 'merge fetched subproj' ' ' test_expect_success 'add main-sub5' ' - create subdir/main-sub5 && + create "sub dir/main-sub5" && git commit -m "main-sub5" ' @@ -157,29 +139,29 @@ test_expect_success 'add main6' ' ' test_expect_success 'add main-sub7' ' - create subdir/main-sub7 && + create "sub dir/main-sub7" && git commit -m "main-sub7" ' test_expect_success 'fetch new subproj history' ' - git fetch ./subproj sub2 && + git fetch ./"sub proj" sub2 && git branch sub2 FETCH_HEAD ' test_expect_success 'check if --message works for merge' ' - git subtree merge --prefix=subdir -m "Merged changes from subproject" sub2 && + git subtree merge --prefix="sub dir" -m "Merged changes from subproject" sub2 && check_equal ''"$(last_commit_message)"'' "Merged changes from subproject" && undo ' test_expect_success 'check if --message for merge works with squash too' ' - git subtree merge --prefix subdir -m "Merged changes from subproject using squash" --squash sub2 && + git subtree merge --prefix "sub dir" -m "Merged changes from subproject using squash" --squash sub2 && check_equal ''"$(last_commit_message)"'' "Merged changes from subproject using squash" && undo ' test_expect_success 'merge new subproj history into subdir' ' - git subtree merge --prefix=subdir FETCH_HEAD && + git subtree merge --prefix="sub dir" FETCH_HEAD && git branch pre-split && check_equal ''"$(last_commit_message)"'' "Merge commit '"'"'"$(git rev-parse sub2)"'"'"' into mainline" && undo @@ -208,53 +190,53 @@ test_expect_success 'Check that the exists for a split' ' ' test_expect_success 'check if --message works for split+rejoin' ' - spl1=''"$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' && + spl1=''"$(git subtree split --annotate='"'*'"' --prefix "sub dir" --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' && git branch spl1 "$spl1" && check_equal ''"$(last_commit_message)"'' "Split & rejoin" && undo ' test_expect_success 'check split with --branch' ' - spl1=$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin) && + spl1=$(git subtree split --annotate='"'*'"' --prefix "sub dir" --onto FETCH_HEAD --message "Split & rejoin" --rejoin) && undo && - git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --branch splitbr1 && + git subtree split --annotate='"'*'"' --prefix "sub dir" --onto FETCH_HEAD --branch splitbr1 && check_equal ''"$(git rev-parse splitbr1)"'' "$spl1" ' test_expect_success 'check hash of split' ' - spl1=$(git subtree split --prefix subdir) && - git subtree split --prefix subdir --branch splitbr1test && + spl1=$(git subtree split --prefix "sub dir") && + git subtree split --prefix "sub dir" --branch splitbr1test && check_equal ''"$(git rev-parse splitbr1test)"'' "$spl1" && new_hash=$(git rev-parse splitbr1test~2) && check_equal ''"$new_hash"'' "$subdir_hash" ' test_expect_success 'check split with --branch for an existing branch' ' - spl1=''"$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' && + spl1=''"$(git subtree split --annotate='"'*'"' --prefix "sub dir" --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' && undo && git branch splitbr2 sub1 && - git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --branch splitbr2 && + git subtree split --annotate='"'*'"' --prefix "sub dir" --onto FETCH_HEAD --branch splitbr2 && check_equal ''"$(git rev-parse splitbr2)"'' "$spl1" ' test_expect_success 'check split with --branch for an incompatible branch' ' - test_must_fail git subtree split --prefix subdir --onto FETCH_HEAD --branch subdir + test_must_fail git subtree split --prefix "sub dir" --onto FETCH_HEAD --branch subdir ' test_expect_success 'check split+rejoin' ' - spl1=''"$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' && + spl1=''"$(git subtree split --annotate='"'*'"' --prefix "sub dir" --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' && undo && - git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --rejoin && - check_equal ''"$(last_commit_message)"'' "Split '"'"'subdir/'"'"' into commit '"'"'"$spl1"'"'"'" + git subtree split --annotate='"'*'"' --prefix "sub dir" --onto FETCH_HEAD --rejoin && + check_equal ''"$(last_commit_message)"'' "Split '"'"'sub dir/'"'"' into commit '"'"'"$spl1"'"'"'" ' test_expect_success 'add main-sub8' ' - create subdir/main-sub8 && + create "sub dir/main-sub8" && git commit -m "main-sub8" ' # To the subproject! -cd ./subproj +cd ./"sub proj" test_expect_success 'merge split into subproj' ' git fetch .. spl1 && @@ -271,22 +253,22 @@ test_expect_success 'add sub9' ' cd .. test_expect_success 'split for sub8' ' - split2=''"$(git subtree split --annotate='"'*'"' --prefix subdir/ --rejoin)"'' && + split2=''"$(git subtree split --annotate='"'*'"' --prefix "sub dir/" --rejoin)"'' && git branch split2 "$split2" ' test_expect_success 'add main-sub10' ' - create subdir/main-sub10 && + create "sub dir/main-sub10" && git commit -m "main-sub10" ' test_expect_success 'split for sub10' ' - spl3=''"$(git subtree split --annotate='"'*'"' --prefix subdir --rejoin)"'' && + spl3=''"$(git subtree split --annotate='"'*'"' --prefix "sub dir" --rejoin)"'' && git branch spl3 "$spl3" ' # To the subproject! -cd ./subproj +cd ./"sub proj" test_expect_success 'merge split into subproj' ' git fetch .. spl3 && @@ -295,42 +277,64 @@ test_expect_success 'merge split into subproj' ' git branch subproj-merge-spl3 ' -chkm="main4 main6" -chkms="main-sub10 main-sub5 main-sub7 main-sub8" -chkms_sub=$(echo $chkms | multiline | sed 's,^,subdir/,' | fixnl) -chks="sub1 sub2 sub3 sub9" -chks_sub=$(echo $chks | multiline | sed 's,^,subdir/,' | fixnl) +chkm="main4 +main6" +chkms="main-sub10 +main-sub5 +main-sub7 +main-sub8" +chkms_sub=$(cat <local) + tz = local_tzoffset(time); + if (mode->type == DATE_RAW) { strbuf_reset(&timebuf); strbuf_addf(&timebuf, "%lu %+05d", time, tz); @@ -189,9 +193,6 @@ const char *show_date(unsigned long time, int tz, const struct date_mode *mode) return timebuf.buf; } - if (mode->type == DATE_LOCAL) - tz = local_tzoffset(time); - tm = time_to_tm(time, tz); if (!tm) { tm = time_to_tm(0, 0); @@ -232,7 +233,7 @@ const char *show_date(unsigned long time, int tz, const struct date_mode *mode) tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, tm->tm_year + 1900, - (mode->type == DATE_LOCAL) ? 0 : ' ', + mode->local ? 0 : ' ', tz); return timebuf.buf; } @@ -770,31 +771,50 @@ int parse_date(const char *date, struct strbuf *result) return 0; } +static enum date_mode_type parse_date_type(const char *format, const char **end) +{ + if (skip_prefix(format, "relative", end)) + return DATE_RELATIVE; + if (skip_prefix(format, "iso8601-strict", end) || + skip_prefix(format, "iso-strict", end)) + return DATE_ISO8601_STRICT; + if (skip_prefix(format, "iso8601", end) || + skip_prefix(format, "iso", end)) + return DATE_ISO8601; + if (skip_prefix(format, "rfc2822", end) || + skip_prefix(format, "rfc", end)) + return DATE_RFC2822; + if (skip_prefix(format, "short", end)) + return DATE_SHORT; + if (skip_prefix(format, "default", end)) + return DATE_NORMAL; + if (skip_prefix(format, "raw", end)) + return DATE_RAW; + if (skip_prefix(format, "format", end)) + return DATE_STRFTIME; + + die("unknown date format %s", format); +} + void parse_date_format(const char *format, struct date_mode *mode) { - if (!strcmp(format, "relative")) - mode->type = DATE_RELATIVE; - else if (!strcmp(format, "iso8601") || - !strcmp(format, "iso")) - mode->type = DATE_ISO8601; - else if (!strcmp(format, "iso8601-strict") || - !strcmp(format, "iso-strict")) - mode->type = DATE_ISO8601_STRICT; - else if (!strcmp(format, "rfc2822") || - !strcmp(format, "rfc")) - mode->type = DATE_RFC2822; - else if (!strcmp(format, "short")) - mode->type = DATE_SHORT; - else if (!strcmp(format, "local")) - mode->type = DATE_LOCAL; - else if (!strcmp(format, "default")) - mode->type = DATE_NORMAL; - else if (!strcmp(format, "raw")) - mode->type = DATE_RAW; - else if (skip_prefix(format, "format:", &format)) { - mode->type = DATE_STRFTIME; - mode->strftime_fmt = xstrdup(format); - } else + const char *p; + + /* historical alias */ + if (!strcmp(format, "local")) + format = "default-local"; + + mode->type = parse_date_type(format, &p); + mode->local = 0; + + if (skip_prefix(p, "-local", &p)) + mode->local = 1; + + if (mode->type == DATE_STRFTIME) { + if (!skip_prefix(p, ":", &p)) + die("date format missing colon separator: %s", format); + mode->strftime_fmt = xstrdup(p); + } else if (*p) die("unknown date format %s", format); } diff --git a/diff.c b/diff.c index 08508f6a20..46260ed7a1 100644 --- a/diff.c +++ b/diff.c @@ -1041,8 +1041,9 @@ static void diff_words_show(struct diff_words_data *diff_words) xpp.flags = 0; /* as only the hunk header will be parsed, we need a 0-context */ xecfg.ctxlen = 0; - xdi_diff_outf(&minus, &plus, fn_out_diff_words_aux, diff_words, - &xpp, &xecfg); + if (xdi_diff_outf(&minus, &plus, fn_out_diff_words_aux, diff_words, + &xpp, &xecfg)) + die("unable to generate word diff"); free(minus.ptr); free(plus.ptr); if (diff_words->current_plus != diff_words->plus.text.ptr + @@ -2449,8 +2450,9 @@ static void builtin_diff(const char *name_a, xecfg.ctxlen = strtoul(v, NULL, 10); if (o->word_diff) init_diff_words_data(&ecbdata, o, one, two); - xdi_diff_outf(&mf1, &mf2, fn_out_consume, &ecbdata, - &xpp, &xecfg); + if (xdi_diff_outf(&mf1, &mf2, fn_out_consume, &ecbdata, + &xpp, &xecfg)) + die("unable to generate diff for %s", one->path); if (o->word_diff) free_diff_words_data(&ecbdata); if (textconv_one) @@ -2527,8 +2529,9 @@ static void builtin_diffstat(const char *name_a, const char *name_b, xpp.flags = o->xdl_opts; xecfg.ctxlen = o->context; xecfg.interhunkctxlen = o->interhunkcontext; - xdi_diff_outf(&mf1, &mf2, diffstat_consume, diffstat, - &xpp, &xecfg); + if (xdi_diff_outf(&mf1, &mf2, diffstat_consume, diffstat, + &xpp, &xecfg)) + die("unable to generate diffstat for %s", one->path); } diff_free_filespec_data(one); @@ -2574,8 +2577,9 @@ static void builtin_checkdiff(const char *name_a, const char *name_b, memset(&xecfg, 0, sizeof(xecfg)); xecfg.ctxlen = 1; /* at least one context line */ xpp.flags = 0; - xdi_diff_outf(&mf1, &mf2, checkdiff_consume, &data, - &xpp, &xecfg); + if (xdi_diff_outf(&mf1, &mf2, checkdiff_consume, &data, + &xpp, &xecfg)) + die("unable to generate checkdiff for %s", one->path); if (data.ws_rule & WS_BLANK_AT_EOF) { struct emit_callback ecbdata; @@ -4510,8 +4514,10 @@ static int diff_get_patch_id(struct diff_options *options, unsigned char *sha1) xpp.flags = 0; xecfg.ctxlen = 3; xecfg.flags = 0; - xdi_diff_outf(&mf1, &mf2, patch_id_consume, &data, - &xpp, &xecfg); + if (xdi_diff_outf(&mf1, &mf2, patch_id_consume, &data, + &xpp, &xecfg)) + return error("unable to generate patch-id diff for %s", + p->one->path); } git_SHA1_Final(sha1, &ctx); diff --git a/diffcore-pickaxe.c b/diffcore-pickaxe.c index 185f86b284..7715c13ec4 100644 --- a/diffcore-pickaxe.c +++ b/diffcore-pickaxe.c @@ -62,8 +62,8 @@ static int diff_grep(mmfile_t *one, mmfile_t *two, ecbdata.hit = 0; xecfg.ctxlen = o->context; xecfg.interhunkctxlen = o->interhunkcontext; - xdi_diff_outf(one, two, diffgrep_consume, &ecbdata, - &xpp, &xecfg); + if (xdi_diff_outf(one, two, diffgrep_consume, &ecbdata, &xpp, &xecfg)) + return 0; return ecbdata.hit; } diff --git a/dir.c b/dir.c index 7b25634832..fba938b701 100644 --- a/dir.c +++ b/dir.c @@ -882,6 +882,25 @@ int match_pathname(const char *pathname, int pathlen, */ if (!patternlen && !namelen) return 1; + /* + * This can happen when we ignore some exclude rules + * on directories in other to see if negative rules + * may match. E.g. + * + * /abc + * !/abc/def/ghi + * + * The pattern of interest is "/abc". On the first + * try, we should match path "abc" with this pattern + * in the "if" statement right above, but the caller + * ignores it. + * + * On the second try with paths within "abc", + * e.g. "abc/xyz", we come here and try to match it + * with "/abc". + */ + if (!patternlen && namelen && *name == '/') + return 1; } return fnmatch_icase_mem(pattern, patternlen, @@ -889,6 +908,48 @@ int match_pathname(const char *pathname, int pathlen, WM_PATHNAME) == 0; } +/* + * Return non-zero if pathname is a directory and an ancestor of the + * literal path in a (negative) pattern. This is used to keep + * descending in "foo" and "foo/bar" when the pattern is + * "!foo/bar/.gitignore". "foo/notbar" will not be descended however. + */ +static int match_neg_path(const char *pathname, int pathlen, int *dtype, + const char *base, int baselen, + const char *pattern, int prefix, int patternlen, + int flags) +{ + assert((flags & EXC_FLAG_NEGATIVE) && !(flags & EXC_FLAG_NODIR)); + + if (*dtype == DT_UNKNOWN) + *dtype = get_dtype(NULL, pathname, pathlen); + if (*dtype != DT_DIR) + return 0; + + if (*pattern == '/') { + pattern++; + patternlen--; + prefix--; + } + + if (baselen) { + if (((pathlen < baselen && base[pathlen] == '/') || + pathlen == baselen) && + !strncmp_icase(pathname, base, pathlen)) + return 1; + pathname += baselen + 1; + pathlen -= baselen + 1; + } + + + if (prefix && + ((pathlen < prefix && pattern[pathlen] == '/') && + !strncmp_icase(pathname, pattern, pathlen))) + return 1; + + return 0; +} + /* * Scan the given exclude list in reverse to see whether pathname * should be ignored. The first match (i.e. the last on the list), if @@ -901,7 +962,8 @@ static struct exclude *last_exclude_matching_from_list(const char *pathname, int *dtype, struct exclude_list *el) { - int i; + struct exclude *exc = NULL; /* undecided */ + int i, matched_negative_path = 0; if (!el->nr) return NULL; /* undefined */ @@ -922,18 +984,33 @@ static struct exclude *last_exclude_matching_from_list(const char *pathname, if (match_basename(basename, pathlen - (basename - pathname), exclude, prefix, x->patternlen, - x->flags)) - return x; + x->flags)) { + exc = x; + break; + } continue; } assert(x->baselen == 0 || x->base[x->baselen - 1] == '/'); if (match_pathname(pathname, pathlen, x->base, x->baselen ? x->baselen - 1 : 0, + exclude, prefix, x->patternlen, x->flags)) { + exc = x; + break; + } + + if ((x->flags & EXC_FLAG_NEGATIVE) && !matched_negative_path && + match_neg_path(pathname, pathlen, dtype, x->base, + x->baselen ? x->baselen - 1 : 0, exclude, prefix, x->patternlen, x->flags)) - return x; + matched_negative_path = 1; } - return NULL; /* undecided */ + if (exc && + !(exc->flags & EXC_FLAG_NEGATIVE) && + !(exc->flags & EXC_FLAG_NODIR) && + matched_negative_path) + exc = NULL; + return exc; } /* @@ -2030,6 +2107,15 @@ int file_exists(const char *f) return lstat(f, &sb) == 0; } +static int cmp_icase(char a, char b) +{ + if (a == b) + return 0; + if (ignore_case) + return toupper(a) - toupper(b); + return a - b; +} + /* * Given two normalized paths (a trailing slash is ok), if subdir is * outside dir, return -1. Otherwise return the offset in subdir that @@ -2041,7 +2127,7 @@ int dir_inside_of(const char *subdir, const char *dir) assert(dir && subdir && *dir && *subdir); - while (*dir && *subdir && *dir == *subdir) { + while (*dir && *subdir && !cmp_icase(*dir, *subdir)) { dir++; subdir++; offset++; diff --git a/fast-import.c b/fast-import.c index 6c7c3c9b66..adcbfc67dc 100644 --- a/fast-import.c +++ b/fast-import.c @@ -424,7 +424,7 @@ static void write_crash_report(const char *err) fprintf(rpt, "fast-import crash report:\n"); fprintf(rpt, " fast-import process: %"PRIuMAX"\n", (uintmax_t) getpid()); fprintf(rpt, " parent process : %"PRIuMAX"\n", (uintmax_t) getppid()); - fprintf(rpt, " at %s\n", show_date(time(NULL), 0, DATE_MODE(LOCAL))); + fprintf(rpt, " at %s\n", show_date(time(NULL), 0, DATE_MODE(ISO8601))); fputc('\n', rpt); fputs("fatal: ", rpt); diff --git a/git-bisect.sh b/git-bisect.sh index ea63223ab3..5d1cb00d86 100755 --- a/git-bisect.sh +++ b/git-bisect.sh @@ -1,14 +1,19 @@ #!/bin/sh -USAGE='[help|start|bad|good|skip|next|reset|visualize|replay|log|run]' +USAGE='[help|start|bad|good|new|old|terms|skip|next|reset|visualize|replay|log|run]' LONG_USAGE='git bisect help print this long help message. -git bisect start [--no-checkout] [ [...]] [--] [...] +git bisect start [--term-{old,good}= --term-{new,bad}=] + [--no-checkout] [ [...]] [--] [...] reset bisect state and start bisection. -git bisect bad [] - mark a known-bad revision. -git bisect good [...] - mark ... known-good revisions. +git bisect (bad|new) [] + mark a known-bad revision/ + a revision after change in a given property. +git bisect (good|old) [...] + mark ... known-good revisions/ + revisions before change in a given property. +git bisect terms [--term-good | --term-bad] + show the terms used for old and new commits (default: bad, good) git bisect skip [(|)...] mark ... untestable revisions. git bisect next @@ -95,6 +100,24 @@ bisect_start() { --no-checkout) mode=--no-checkout shift ;; + --term-good|--term-old) + shift + must_write_terms=1 + TERM_GOOD=$1 + shift ;; + --term-good=*|--term-old=*) + must_write_terms=1 + TERM_GOOD=${1#*=} + shift ;; + --term-bad|--term-new) + shift + must_write_terms=1 + TERM_BAD=$1 + shift ;; + --term-bad=*|--term-new=*) + must_write_terms=1 + TERM_BAD=${1#*=} + shift ;; --*) die "$(eval_gettext "unrecognised option: '\$arg'")" ;; *) @@ -294,7 +317,7 @@ bisect_next_check() { false ;; t,,"$TERM_GOOD") - # have bad but not good. we could bisect although + # have bad (or new) but not good (or old). we could bisect although # this is less optimum. eval_gettextln "Warning: bisecting only with a \$TERM_BAD commit." >&2 if test -t 0 @@ -451,6 +474,8 @@ bisect_replay () { eval "$cmd" ;; "$TERM_GOOD"|"$TERM_BAD"|skip) bisect_write "$command" "$rev" ;; + terms) + bisect_terms $rev ;; *) die "$(gettext "?? what are you talking about?")" ;; esac @@ -535,9 +560,42 @@ get_terms () { write_terms () { TERM_BAD=$1 TERM_GOOD=$2 + if test "$TERM_BAD" = "$TERM_GOOD" + then + die "$(gettext "please use two different terms")" + fi + check_term_format "$TERM_BAD" bad + check_term_format "$TERM_GOOD" good printf '%s\n%s\n' "$TERM_BAD" "$TERM_GOOD" >"$GIT_DIR/BISECT_TERMS" } +check_term_format () { + term=$1 + git check-ref-format refs/bisect/"$term" || + die "$(eval_gettext "'\$term' is not a valid term")" + case "$term" in + help|start|terms|skip|next|reset|visualize|replay|log|run) + die "$(eval_gettext "can't use the builtin command '\$term' as a term")" + ;; + bad|new) + if test "$2" != bad + then + # In theory, nothing prevents swapping + # completely good and bad, but this situation + # could be confusing and hasn't been tested + # enough. Forbid it for now. + die "$(eval_gettext "can't change the meaning of term '\$term'")" + fi + ;; + good|old) + if test "$2" != good + then + die "$(eval_gettext "can't change the meaning of term '\$term'")" + fi + ;; + esac +} + check_and_set_terms () { cmd="$1" case "$cmd" in @@ -554,14 +612,51 @@ check_and_set_terms () { write_terms bad good fi ;; + new|old) + if ! test -s "$GIT_DIR/BISECT_TERMS" + then + write_terms new old + fi + ;; esac ;; esac } bisect_voc () { case "$1" in - bad) echo "bad" ;; - good) echo "good" ;; + bad) echo "bad|new" ;; + good) echo "good|old" ;; + esac +} + +bisect_terms () { + get_terms + if ! test -s "$GIT_DIR/BISECT_TERMS" + then + die "$(gettext "no terms defined")" + fi + case "$#" in + 0) + gettextln "Your current terms are $TERM_GOOD for the old state +and $TERM_BAD for the new state." + ;; + 1) + arg=$1 + case "$arg" in + --term-good|--term-old) + printf '%s\n' "$TERM_GOOD" + ;; + --term-bad|--term-new) + printf '%s\n' "$TERM_BAD" + ;; + *) + die "$(eval_gettext "invalid argument \$arg for 'git bisect terms'. +Supported options are: --term-good|--term-old and --term-bad|--term-new.")" + ;; + esac + ;; + *) + usage ;; esac } @@ -577,7 +672,7 @@ case "$#" in git bisect -h ;; start) bisect_start "$@" ;; - bad|good|"$TERM_BAD"|"$TERM_GOOD") + bad|good|new|old|"$TERM_BAD"|"$TERM_GOOD") bisect_state "$cmd" "$@" ;; skip) bisect_skip "$@" ;; @@ -594,6 +689,8 @@ case "$#" in bisect_log ;; run) bisect_run "$@" ;; + terms) + bisect_terms "$@" ;; *) usage ;; esac diff --git a/git-compat-util.h b/git-compat-util.h index f649e81f11..1df82fa598 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -814,6 +814,9 @@ static inline int strtoul_ui(char const *s, int base, unsigned int *result) char *p; errno = 0; + /* negative values would be accepted by strtoul */ + if (strchr(s, '-')) + return -1; ul = strtoul(s, &p, base); if (errno || *p || p == s || (unsigned int) ul != ul) return -1; diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 5b3f63d8bb..5777947a5d 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -275,11 +275,41 @@ commits=$(wc -l <../revs | tr -d " ") test $commits -eq 0 && die "Found nothing to rewrite" # Rewrite the commits +report_progress () +{ + if test -n "$progress" && + test $git_filter_branch__commit_count -gt $next_sample_at + then + count=$git_filter_branch__commit_count + + now=$(date +%s) + elapsed=$(($now - $start_timestamp)) + remaining=$(( ($commits - $count) * $elapsed / $count )) + if test $elapsed -gt 0 + then + next_sample_at=$(( ($elapsed + 1) * $count / $elapsed )) + else + next_sample_at=$(($next_sample_at + 1)) + fi + progress=" ($elapsed seconds passed, remaining $remaining predicted)" + fi + printf "\rRewrite $commit ($count/$commits)$progress " +} git_filter_branch__commit_count=0 + +progress= start_timestamp= +if date '+%s' 2>/dev/null | grep -q '^[0-9][0-9]*$' +then + next_sample_at=0 + progress="dummy to ensure this is not empty" + start_timestamp=$(date '+%s') +fi + while read commit parents; do git_filter_branch__commit_count=$(($git_filter_branch__commit_count+1)) - printf "\rRewrite $commit ($git_filter_branch__commit_count/$commits)" + + report_progress case "$filter_subdir" in "") diff --git a/git-p4.py b/git-p4.py index 765ea5f064..daa60c60d6 100755 --- a/git-p4.py +++ b/git-p4.py @@ -146,13 +146,11 @@ def read_pipe(c, ignore_error=False): sys.stderr.write('Reading pipe: %s\n' % str(c)) expand = isinstance(c,basestring) - p = subprocess.Popen(c, stdout=subprocess.PIPE, shell=expand) - pipe = p.stdout - val = pipe.read() - if p.wait() and not ignore_error: - die('Command failed: %s' % str(c)) - - return val + p = subprocess.Popen(c, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=expand) + (out, err) = p.communicate() + if p.returncode != 0 and not ignore_error: + die('Command failed: %s\nError: %s' % (str(c), err)) + return out def p4_read_pipe(c, ignore_error=False): real_cmd = p4_build_cmd(c) @@ -2413,10 +2411,17 @@ def streamOneP4File(self, file, contents): # them back too. This is not needed to the cygwin windows version, # just the native "NT" type. # - text = p4_read_pipe(['print', '-q', '-o', '-', "%s@%s" % (file['depotFile'], file['change']) ]) - if p4_version_string().find("/NT") >= 0: - text = text.replace("\r\n", "\n") - contents = [ text ] + try: + text = p4_read_pipe(['print', '-q', '-o', '-', '%s@%s' % (file['depotFile'], file['change'])]) + except Exception as e: + if 'Translation of file content failed' in str(e): + type_base = 'binary' + else: + raise e + else: + if p4_version_string().find('/NT') >= 0: + text = text.replace('\r\n', '\n') + contents = [ text ] if type_base == "apple": # Apple filetype files will be streamed as a concatenation of @@ -2440,6 +2445,16 @@ def streamOneP4File(self, file, contents): text = regexp.sub(r'$\1$', text) contents = [ text ] + try: + relPath.decode('ascii') + except: + encoding = 'utf8' + if gitConfig('git-p4.pathEncoding'): + encoding = gitConfig('git-p4.pathEncoding') + relPath = relPath.decode(encoding, 'replace').encode('utf8', 'replace') + if self.verbose: + print 'Path with non-ASCII characters detected. Used %s to encode: %s ' % (encoding, relPath) + if self.largeFileSystem: (git_mode, contents) = self.largeFileSystem.processContent(git_mode, relPath, contents) @@ -2567,8 +2582,11 @@ def make_email(self, userid): else: return "%s " % userid - # Stream a p4 tag def streamTag(self, gitStream, labelName, labelDetails, commit, epoch): + """ Stream a p4 tag. + commit is either a git commit, or a fast-import mark, ":" + """ + if verbose: print "writing tag %s for commit %s" % (labelName, commit) gitStream.write("tag %s\n" % labelName) @@ -2619,7 +2637,7 @@ def commit(self, details, files, branch, parent = ""): self.clientSpecDirs.update_client_spec_path_cache(files) self.gitStream.write("commit %s\n" % branch) -# gitStream.write("mark :%s\n" % details["change"]) + self.gitStream.write("mark :%s\n" % details["change"]) self.committedChanges.add(int(details["change"])) committer = "" if author not in self.users: @@ -2738,13 +2756,19 @@ def importP4Labels(self, stream, p4Labels): if change.has_key('change'): # find the corresponding git commit; take the oldest commit changelist = int(change['change']) - gitCommit = read_pipe(["git", "rev-list", "--max-count=1", - "--reverse", ":/\[git-p4:.*change = %d\]" % changelist]) - if len(gitCommit) == 0: - print "could not find git commit for changelist %d" % changelist - else: - gitCommit = gitCommit.strip() + if changelist in self.committedChanges: + gitCommit = ":%d" % changelist # use a fast-import mark commitFound = True + else: + gitCommit = read_pipe(["git", "rev-list", "--max-count=1", + "--reverse", ":/\[git-p4:.*change = %d\]" % changelist], ignore_error=True) + if len(gitCommit) == 0: + print "importing label %s: could not find git commit for changelist %d" % (name, changelist) + else: + commitFound = True + gitCommit = gitCommit.strip() + + if commitFound: # Convert from p4 time format try: tmwhen = time.strptime(labelDetails['Update'], "%Y/%m/%d %H:%M:%S") diff --git a/git-quiltimport.sh b/git-quiltimport.sh index 167d79fea8..6d3a88decd 100755 --- a/git-quiltimport.sh +++ b/git-quiltimport.sh @@ -6,7 +6,8 @@ git quiltimport [options] -- n,dry-run dry run author= author name and email address for patches without any -patches= path to the quilt series and patches +patches= path to the quilt patches +series= path to the quilt series file " SUBDIRECTORY_ON=Yes . git-sh-setup @@ -27,6 +28,10 @@ do shift QUILT_PATCHES="$1" ;; + --series) + shift + QUILT_SERIES="$1" + ;; --) shift break;; @@ -53,6 +58,13 @@ if ! [ -d "$QUILT_PATCHES" ] ; then exit 1 fi +# Quilt series file +: ${QUILT_SERIES:=$QUILT_PATCHES/series} +if ! [ -e "$QUILT_SERIES" ] ; then + echo "The \"$QUILT_SERIES\" file does not exist." + exit 1 +fi + # Temporary directories tmp_dir="$GIT_DIR"/rebase-apply tmp_msg="$tmp_dir/msg" @@ -135,5 +147,5 @@ do commit=$( (echo "$SUBJECT"; echo; cat "$tmp_msg") | git commit-tree $tree -p $commit) && git update-ref -m "quiltimport: $patch_name" HEAD $commit || exit 4 fi -done 3<"$QUILT_PATCHES/series" +done 3<"$QUILT_SERIES" rm -rf $tmp_dir || exit 5 diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index f01637b1fd..d65c06eff3 100644 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -729,8 +729,8 @@ transform_todo_ids () { # that do not have a SHA-1 at the beginning of $rest. ;; *) - sha1=$(git rev-parse --verify --quiet "$@" ${rest%% *}) && - rest="$sha1 ${rest#* }" + sha1=$(git rev-parse --verify --quiet "$@" ${rest%%[ ]*}) && + rest="$sha1 ${rest#*[ ]}" ;; esac printf '%s\n' "$command${rest:+ }$rest" @@ -857,7 +857,8 @@ add_exec_commands () { # Check if the SHA-1 passed as an argument is a # correct one, if not then print $2 in "$todo".badsha # $1: the SHA-1 to test -# $2: the line to display if incorrect SHA-1 +# $2: the line number of the input +# $3: the input filename check_commit_sha () { badsha=0 if test -z $1 @@ -873,9 +874,10 @@ check_commit_sha () { if test $badsha -ne 0 then + line="$(sed -n -e "${2}p" "$3")" warn "Warning: the SHA-1 is missing or isn't" \ "a commit in the following line:" - warn " - $2" + warn " - $line" warn fi @@ -886,37 +888,31 @@ check_commit_sha () { # from the todolist in stdin check_bad_cmd_and_sha () { retval=0 - git stripspace --strip-comments | - ( - while read -r line - do - IFS=' ' - set -- $line - command=$1 - sha1=$2 - - case $command in - ''|noop|x|"exec") - # Doesn't expect a SHA-1 - ;; - pick|p|drop|d|reword|r|edit|e|squash|s|fixup|f) - if ! check_commit_sha $sha1 "$line" - then - retval=1 - fi - ;; - *) - warn "Warning: the command isn't recognized" \ - "in the following line:" - warn " - $line" - warn + lineno=0 + while read -r command rest + do + lineno=$(( $lineno + 1 )) + case $command in + "$comment_char"*|''|noop|x|exec) + # Doesn't expect a SHA-1 + ;; + pick|p|drop|d|reword|r|edit|e|squash|s|fixup|f) + if ! check_commit_sha "${rest%%[ ]*}" "$lineno" "$1" + then retval=1 - ;; - esac - done - - return $retval - ) + fi + ;; + *) + line="$(sed -n -e "${lineno}p" "$1")" + warn "Warning: the command isn't recognized" \ + "in the following line:" + warn " - $line" + warn + retval=1 + ;; + esac + done <"$1" + return $retval } # Print the list of the SHA-1 of the commits @@ -1010,7 +1006,7 @@ check_todo_list () { ;; esac - if ! check_bad_cmd_and_sha <"$todo" + if ! check_bad_cmd_and_sha "$todo" then raise_error=t fi diff --git a/git-rebase.sh b/git-rebase.sh index 1757404bc2..af7ba5fd90 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -14,7 +14,7 @@ git-rebase --continue | --abort | --skip | --edit-todo Available options are v,verbose! display a diffstat of what changed upstream q,quiet! be quiet. implies --no-stat -autostash! automatically stash/stash pop before and after +autostash automatically stash/stash pop before and after fork-point use 'merge-base --fork-point' to refine upstream onto=! rebase onto given branch instead of upstream p,preserve-merges! try to recreate merges instead of ignoring them @@ -292,6 +292,9 @@ do --autostash) autostash=true ;; + --no-autostash) + autostash=false + ;; --verbose) verbose=t diffstat=t diff --git a/git-send-email.perl b/git-send-email.perl index c5a3f766f7..e907e0eacf 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -1136,7 +1136,7 @@ sub smtp_auth_maybe { # Check mechanism naming as defined in: # https://tools.ietf.org/html/rfc4422#page-8 - if ($smtp_auth !~ /^(\b[A-Z0-9-_]{1,20}\s*)*$/) { + if ($smtp_auth && $smtp_auth !~ /^(\b[A-Z0-9-_]{1,20}\s*)*$/) { die "invalid smtp auth: '${smtp_auth}'"; } @@ -1365,7 +1365,11 @@ sub send_message { $smtp->mail( $raw_from ) or die $smtp->message; $smtp->to( @recipients ) or die $smtp->message; $smtp->data or die $smtp->message; - $smtp->datasend("$header\n$message") or die $smtp->message; + $smtp->datasend("$header\n") or die $smtp->message; + my @lines = split /^/, $message; + foreach my $line (@lines) { + $smtp->datasend("$line") or die $smtp->message; + } $smtp->dataend() or die $smtp->message; $smtp->code =~ /250|200/ or die "Failed to send $subject\n".$smtp->message; } diff --git a/git-stash.sh b/git-stash.sh index 1d5ba7a4f9..c7c65e25f5 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -305,7 +305,25 @@ show_stash () { ALLOW_UNKNOWN_FLAGS=t assert_stash_like "$@" - git diff ${FLAGS:---stat} $b_commit $w_commit + if test -z "$FLAGS" + then + if test "$(git config --bool stash.showStat || echo true)" = "true" + then + FLAGS=--stat + fi + + if test "$(git config --bool stash.showPatch || echo false)" = "true" + then + FLAGS=${FLAGS}${FLAGS:+ }-p + fi + + if test -z "$FLAGS" + then + return 0 + fi + fi + + git diff ${FLAGS} $b_commit $w_commit } show_help () { diff --git a/git-submodule.sh b/git-submodule.sh index 25b1ddf252..9bc5c5f94d 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -22,6 +22,15 @@ require_work_tree wt_prefix=$(git rev-parse --show-prefix) cd_to_toplevel +# Restrict ourselves to a vanilla subset of protocols; the URLs +# we get are under control of a remote repository, and we do not +# want them kicking off arbitrary git-remote-* programs. +# +# If the user has already specified a set of allowed protocols, +# we assume they know what they're doing and use that instead. +: ${GIT_ALLOW_PROTOCOL=file:git:http:https:ssh} +export GIT_ALLOW_PROTOCOL + command= branch= force= @@ -145,48 +154,6 @@ relative_path () echo "$result$target" } -# -# Get submodule info for registered submodules -# $@ = path to limit submodule list -# -module_list() -{ - eval "set $(git rev-parse --sq --prefix "$wt_prefix" -- "$@")" - ( - git ls-files -z --error-unmatch --stage -- "$@" || - echo "unmatched pathspec exists" - ) | - @@PERL@@ -e ' - my %unmerged = (); - my ($null_sha1) = ("0" x 40); - my @out = (); - my $unmatched = 0; - $/ = "\0"; - while () { - if (/^unmatched pathspec/) { - $unmatched = 1; - next; - } - chomp; - my ($mode, $sha1, $stage, $path) = - /^([0-7]+) ([0-9a-f]{40}) ([0-3])\t(.*)$/; - next unless $mode eq "160000"; - if ($stage ne "0") { - if (!$unmerged{$path}++) { - push @out, "$mode $null_sha1 U\t$path\n"; - } - next; - } - push @out, "$_\n"; - } - if ($unmatched) { - print "#unmatched\n"; - } else { - print for (@out); - } - ' -} - die_if_unmatched () { if test "$1" = "#unmatched" @@ -220,98 +187,6 @@ get_submodule_config () { printf '%s' "${value:-$default}" } - -# -# Map submodule path to submodule name -# -# $1 = path -# -module_name() -{ - # Do we have "submodule..path = $1" defined in .gitmodules file? - sm_path="$1" - re=$(printf '%s\n' "$1" | sed -e 's/[].[^$\\*]/\\&/g') - name=$( git config -f .gitmodules --get-regexp '^submodule\..*\.path$' | - sed -n -e 's|^submodule\.\(.*\)\.path '"$re"'$|\1|p' ) - test -z "$name" && - die "$(eval_gettext "No submodule mapping found in .gitmodules for path '\$sm_path'")" - printf '%s\n' "$name" -} - -# -# Clone a submodule -# -# $1 = submodule path -# $2 = submodule name -# $3 = URL to clone -# $4 = reference repository to reuse (empty for independent) -# $5 = depth argument for shallow clones (empty for deep) -# -# Prior to calling, cmd_update checks that a possibly existing -# path is not a git repository. -# Likewise, cmd_add checks that path does not exist at all, -# since it is the location of a new submodule. -# -module_clone() -{ - sm_path=$1 - name=$2 - url=$3 - reference="$4" - depth="$5" - quiet= - if test -n "$GIT_QUIET" - then - quiet=-q - fi - - gitdir= - gitdir_base= - base_name=$(dirname "$name") - - gitdir=$(git rev-parse --git-dir) - gitdir_base="$gitdir/modules/$base_name" - gitdir="$gitdir/modules/$name" - - if test -d "$gitdir" - then - mkdir -p "$sm_path" - rm -f "$gitdir/index" - else - mkdir -p "$gitdir_base" - ( - clear_local_git_env - git clone $quiet ${depth:+"$depth"} -n ${reference:+"$reference"} \ - --separate-git-dir "$gitdir" "$url" "$sm_path" - ) || - die "$(eval_gettext "Clone of '\$url' into submodule path '\$sm_path' failed")" - fi - - # We already are at the root of the work tree but cd_to_toplevel will - # resolve any symlinks that might be present in $PWD - a=$(cd_to_toplevel && cd "$gitdir" && pwd)/ - b=$(cd_to_toplevel && cd "$sm_path" && pwd)/ - # Remove all common leading directories after a sanity check - if test "${a#$b}" != "$a" || test "${b#$a}" != "$b"; then - die "$(eval_gettext "Gitdir '\$a' is part of the submodule path '\$b' or vice versa")" - fi - while test "${a%%/*}" = "${b%%/*}" - do - a=${a#*/} - b=${b#*/} - done - # Now chop off the trailing '/'s that were added in the beginning - a=${a%/} - b=${b%/} - - # Turn each leading "*/" component into "../" - rel=$(printf '%s\n' "$b" | sed -e 's|[^/][^/]*|..|g') - printf '%s\n' "gitdir: $rel/$a" >"$sm_path/.git" - - rel=$(printf '%s\n' "$a" | sed -e 's|[^/][^/]*|..|g') - (clear_local_git_env; cd "$sm_path" && GIT_WORK_TREE=. git config core.worktree "$rel/$b") -} - isnumber() { n=$(($1 + 0)) 2>/dev/null && test "$n" = "$1" @@ -472,7 +347,7 @@ Use -f if you really want to add it." >&2 echo "$(eval_gettext "Reactivating local git directory for submodule '\$sm_name'.")" fi fi - module_clone "$sm_path" "$sm_name" "$realrepo" "$reference" "$depth" || exit + git submodule--helper clone ${GIT_QUIET:+--quiet} --prefix "$wt_prefix" --path "$sm_path" --name "$sm_name" --url "$realrepo" "$reference" "$depth" || exit ( clear_local_git_env cd "$sm_path" && @@ -532,7 +407,7 @@ cmd_foreach() # command in the subshell (and a recursive call to this function) exec 3<&0 - module_list | + git submodule--helper list --prefix "$wt_prefix"| while read mode sha1 stage sm_path do die_if_unmatched "$mode" @@ -540,7 +415,7 @@ cmd_foreach() then displaypath=$(relative_path "$sm_path") say "$(eval_gettext "Entering '\$prefix\$displaypath'")" - name=$(module_name "$sm_path") + name=$(git submodule--helper name "$sm_path") ( prefix="$prefix$sm_path/" clear_local_git_env @@ -592,11 +467,11 @@ cmd_init() shift done - module_list "$@" | + git submodule--helper list --prefix "$wt_prefix" "$@" | while read mode sha1 stage sm_path do die_if_unmatched "$mode" - name=$(module_name "$sm_path") || exit + name=$(git submodule--helper name "$sm_path") || exit displaypath=$(relative_path "$sm_path") @@ -674,11 +549,11 @@ cmd_deinit() die "$(eval_gettext "Use '.' if you really want to deinitialize all submodules")" fi - module_list "$@" | + git submodule--helper list --prefix "$wt_prefix" "$@" | while read mode sha1 stage sm_path do die_if_unmatched "$mode" - name=$(module_name "$sm_path") || exit + name=$(git submodule--helper name "$sm_path") || exit displaypath=$(relative_path "$sm_path") @@ -790,7 +665,7 @@ cmd_update() fi cloned_modules= - module_list "$@" | { + git submodule--helper list --prefix "$wt_prefix" "$@" | { err= while read mode sha1 stage sm_path do @@ -800,7 +675,7 @@ cmd_update() echo >&2 "Skipping unmerged submodule $prefix$sm_path" continue fi - name=$(module_name "$sm_path") || exit + name=$(git submodule--helper name "$sm_path") || exit url=$(git config submodule."$name".url) branch=$(get_submodule_config "$name" branch master) if ! test -z "$update" @@ -834,7 +709,7 @@ Maybe you want to use 'update --init'?")" if ! test -d "$sm_path"/.git && ! test -f "$sm_path"/.git then - module_clone "$sm_path" "$name" "$url" "$reference" "$depth" || exit + git submodule--helper clone ${GIT_QUIET:+--quiet} --prefix "$prefix" --path "$sm_path" --name "$name" --url "$url" "$reference" "$depth" || exit cloned_modules="$cloned_modules;$name" subsha1= else @@ -1064,7 +939,7 @@ cmd_summary() { # Respect the ignore setting for --for-status. if test -n "$for_status" then - name=$(module_name "$sm_path") + name=$(git submodule--helper name "$sm_path") ignore_config=$(get_submodule_config "$name" ignore none) test $status != A && test $ignore_config = all && continue fi @@ -1222,11 +1097,11 @@ cmd_status() shift done - module_list "$@" | + git submodule--helper list --prefix "$wt_prefix" "$@" | while read mode sha1 stage sm_path do die_if_unmatched "$mode" - name=$(module_name "$sm_path") || exit + name=$(git submodule--helper name "$sm_path") || exit url=$(git config submodule."$name".url) displaypath=$(relative_path "$prefix$sm_path") if test "$stage" = U @@ -1299,11 +1174,11 @@ cmd_sync() esac done cd_to_toplevel - module_list "$@" | + git submodule--helper list --prefix "$wt_prefix" "$@" | while read mode sha1 stage sm_path do die_if_unmatched "$mode" - name=$(module_name "$sm_path") + name=$(git submodule--helper name "$sm_path") url=$(git config -f .gitmodules --get submodule."$name".url) # Possibly a url relative to parent diff --git a/git-svn.perl b/git-svn.perl index 36f7240c99..fa5f253065 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -1924,7 +1924,7 @@ sub load_authors { my $log = $cmd eq 'log'; while (<$authors>) { chomp; - next unless /^(.+?|\(no author\))\s*=\s*(.+?)\s*<(.+)>\s*$/; + next unless /^(.+?|\(no author\))\s*=\s*(.+?)\s*<(.*)>\s*$/; my ($user, $name, $email) = ($1, $2, $3); if ($log) { $Git::SVN::Log::rusers{"$name <$email>"} = $user; diff --git a/git.c b/git.c index 5feba410ca..6ed824cacf 100644 --- a/git.c +++ b/git.c @@ -417,7 +417,7 @@ static struct cmd_struct commands[] = { { "index-pack", cmd_index_pack, RUN_SETUP_GENTLY }, { "init", cmd_init_db, NO_SETUP }, { "init-db", cmd_init_db, NO_SETUP }, - { "interpret-trailers", cmd_interpret_trailers, RUN_SETUP }, + { "interpret-trailers", cmd_interpret_trailers, RUN_SETUP_GENTLY }, { "log", cmd_log, RUN_SETUP }, { "ls-files", cmd_ls_files, RUN_SETUP }, { "ls-remote", cmd_ls_remote, RUN_SETUP_GENTLY }, @@ -470,6 +470,7 @@ static struct cmd_struct commands[] = { { "stage", cmd_add, RUN_SETUP | NEED_WORK_TREE }, { "status", cmd_status, RUN_SETUP | NEED_WORK_TREE }, { "stripspace", cmd_stripspace }, + { "submodule--helper", cmd_submodule__helper, RUN_SETUP }, { "symbolic-ref", cmd_symbolic_ref, RUN_SETUP }, { "tag", cmd_tag, RUN_SETUP }, { "unpack-file", cmd_unpack_file, RUN_SETUP }, diff --git a/gitk-git/gitk b/gitk-git/gitk index 9a2daf3c55..2028b554f4 100755 --- a/gitk-git/gitk +++ b/gitk-git/gitk @@ -600,18 +600,18 @@ proc reloadcommits {} { } resetvarcs $curview set selectedline {} - catch {unset currentid} - catch {unset thickerline} - catch {unset treediffs} + unset -nocomplain currentid + unset -nocomplain thickerline + unset -nocomplain treediffs readrefs changedrefs if {$showneartags} { getallcommits } clear_display - catch {unset commitinterest} - catch {unset cached_commitrow} - catch {unset targetid} + unset -nocomplain commitinterest + unset -nocomplain cached_commitrow + unset -nocomplain targetid setcanvscroll getcommits $selid return 0 @@ -673,7 +673,7 @@ proc resetvarcs {view} { foreach vd [array names vseedcount $view,*] { unset vseedcount($vd) } - catch {unset ordertok} + unset -nocomplain ordertok } # returns a list of the commits with no children @@ -966,7 +966,7 @@ proc insertrow {id p v} { set vp $v,$p if {[llength [lappend children($vp) $id]] > 1} { set children($vp) [lsort -command [list vtokcmp $v] $children($vp)] - catch {unset ordertok} + unset -nocomplain ordertok } fix_reversal $p $a $v incr commitidx($v) @@ -1136,7 +1136,7 @@ proc update_arcrows {v} { set displayorder [lrange $displayorder 0 [expr {$vrowmod($v) - 1}]] set parentlist [lrange $parentlist 0 [expr {$vrowmod($v) - 1}]] } - catch {unset cached_commitrow} + unset -nocomplain cached_commitrow } set narctot [expr {[llength $varctok($v)] - 1}] set a $varcmod($v) @@ -1442,7 +1442,7 @@ proc getcommitlines {fd inst view updating} { if {[string range $err 0 4] == "usage"} { set err "Gitk: error reading commits$fv:\ bad arguments to git log." - if {$viewname($view) eq "Command line"} { + if {$viewname($view) eq [mc "Command line"]} { append err \ " (Note: arguments to gitk are passed to git log\ to allow selection of commits to be displayed.)" @@ -1579,7 +1579,7 @@ proc getcommitlines {fd inst view updating} { [vtokcmp $view [lindex $children($vp) end-1] $id] > 0} { set children($vp) [lsort -command [list vtokcmp $view] \ $children($vp)] - catch {unset ordertok} + unset -nocomplain ordertok } if {[info exists varcid($view,$p)]} { fix_reversal $p $a $view @@ -1778,7 +1778,7 @@ proc readrefs {} { global hideremotes foreach v {tagids idtags headids idheads otherrefids idotherrefs} { - catch {unset $v} + unset -nocomplain $v } set refd [open [list | git show-ref -d] r] while {[gets $refd line] >= 0} { @@ -1894,13 +1894,13 @@ proc make_transient {window origin} { } } -proc show_error {w top msg {mc mc}} { +proc show_error {w top msg} { global NS if {![info exists NS]} {set NS ""} if {[wm state $top] eq "withdrawn"} { wm deiconify $top } message $w.m -text $msg -justify center -aspect 400 pack $w.m -side top -fill x -padx 20 -pady 20 - ${NS}::button $w.ok -default active -text [$mc OK] -command "destroy $top" + ${NS}::button $w.ok -default active -text [mc OK] -command "destroy $top" pack $w.ok -side bottom -fill x bind $top "grab $top; focus $top" bind $top "destroy $top" @@ -2065,33 +2065,33 @@ proc makewindow {} { # The "mc" arguments here are purely so that xgettext # sees the following string as needing to be translated set file { - mc "File" cascade { - {mc "Update" command updatecommits -accelerator F5} - {mc "Reload" command reloadcommits -accelerator Shift-F5} - {mc "Reread references" command rereadrefs} - {mc "List references" command showrefs -accelerator F2} + mc "&File" cascade { + {mc "&Update" command updatecommits -accelerator F5} + {mc "&Reload" command reloadcommits -accelerator Shift-F5} + {mc "Reread re&ferences" command rereadrefs} + {mc "&List references" command showrefs -accelerator F2} {xx "" separator} - {mc "Start git gui" command {exec git gui &}} + {mc "Start git &gui" command {exec git gui &}} {xx "" separator} - {mc "Quit" command doquit -accelerator Meta1-Q} + {mc "&Quit" command doquit -accelerator Meta1-Q} }} set edit { - mc "Edit" cascade { - {mc "Preferences" command doprefs} + mc "&Edit" cascade { + {mc "&Preferences" command doprefs} }} set view { - mc "View" cascade { - {mc "New view..." command {newview 0} -accelerator Shift-F4} - {mc "Edit view..." command editview -state disabled -accelerator F4} - {mc "Delete view" command delview -state disabled} + mc "&View" cascade { + {mc "&New view..." command {newview 0} -accelerator Shift-F4} + {mc "&Edit view..." command editview -state disabled -accelerator F4} + {mc "&Delete view" command delview -state disabled} {xx "" separator} - {mc "All files" radiobutton {selectedview 0} -command {showview 0}} + {mc "&All files" radiobutton {selectedview 0} -command {showview 0}} }} if {[tk windowingsystem] ne "aqua"} { set help { - mc "Help" cascade { - {mc "About gitk" command about} - {mc "Key bindings" command keys} + mc "&Help" cascade { + {mc "&About gitk" command about} + {mc "&Key bindings" command keys} }} set bar [list $file $edit $view $help] } else { @@ -2099,13 +2099,13 @@ proc makewindow {} { proc ::tk::mac::Quit {} {doquit} lset file end [lreplace [lindex $file end] end-1 end] set apple { - xx "Apple" cascade { - {mc "About gitk" command about} + xx "&Apple" cascade { + {mc "&About gitk" command about} {xx "" separator} }} set help { - mc "Help" cascade { - {mc "Key bindings" command keys} + mc "&Help" cascade { + {mc "&Key bindings" command keys} }} set bar [list $apple $file $view $help] } @@ -2568,6 +2568,7 @@ proc makewindow {} { bindkey b prevfile bindkey d "$ctext yview scroll 18 units" bindkey u "$ctext yview scroll -18 units" + bindkey g {$sha1entry delete 0 end; focus $sha1entry} bindkey / {focus $fstring} bindkey {focus $fstring} bindkey {dofind 1 1} @@ -2617,6 +2618,7 @@ proc makewindow {} { {mc "Diff selected -> this" command {diffvssel 1}} {mc "Make patch" command mkpatch} {mc "Create tag" command mktag} + {mc "Copy commit summary" command copysummary} {mc "Write commit to file" command writecommit} {mc "Create new branch" command mkbranch} {mc "Cherry-pick this commit" command cherrypick} @@ -2645,6 +2647,7 @@ proc makewindow {} { makemenu $headctxmenu { {mc "Check out this branch" command cobranch} {mc "Remove this branch" command rmbranch} + {mc "Copy branch name" command {clipboard clear; clipboard append $headmenuhead}} } $headctxmenu configure -tearoff 0 @@ -2655,6 +2658,7 @@ proc makewindow {} { {mc "Highlight this only" command {flist_hl 1}} {mc "External diff" command {external_diff}} {mc "Blame parent commit" command {external_blame 1}} + {mc "Copy path" command {clipboard clear; clipboard append $flist_menu_file}} } $flist_menu configure -tearoff 0 @@ -3069,6 +3073,7 @@ proc keys {} { [mc "<%s-F> Find" $M1T] [mc "<%s-G> Move to next find hit" $M1T] [mc " Move to next find hit"] +[mc "g Go to commit"] [mc "/ Focus the search box"] [mc "? Move to previous find hit"] [mc "f Scroll diff view to next file"] @@ -3389,7 +3394,7 @@ proc init_flist {first} { set cflist_top 1 $cflist tag add highlight 1.0 "1.0 lineend" } else { - catch {unset cflist_top} + unset -nocomplain cflist_top } $cflist conf -state disabled set difffilestart {} @@ -4034,6 +4039,19 @@ proc shellsplit {str} { return $l } +proc set_window_title {} { + global appname curview viewname vrevs + set rev [mc "All files"] + if {$curview ne 0} { + if {$viewname($curview) eq [mc "Command line"]} { + set rev [string map {"--gitk-symmetric-diff-marker" "--merge"} $vrevs($curview)] + } else { + set rev $viewname($curview) + } + } + wm title . "[reponame]: $rev - $appname" +} + # Code to implement multiple views proc newview {ishighlight} { @@ -4066,7 +4084,7 @@ set known_view_options { {committer t15 . "--committer=*" {mc "Committer:"}} {loginfo t15 .. "--grep=*" {mc "Commit Message:"}} {allmatch b .. "--all-match" {mc "Matches all Commit Info criteria"}} - {igrep b .. "--invert-grep" {mc "Matches none Commit Info criteria"}} + {igrep b .. "--invert-grep" {mc "Matches no Commit Info criteria"}} {changes_l l + {} {mc "Changes to Files:"}} {pickaxe_s r0 . {} {mc "Fixed String"}} {pickaxe_t r1 . "--pickaxe-regex" {mc "Regular Expression"}} @@ -4438,20 +4456,20 @@ proc showview {n} { } unselectline normalline - catch {unset treediffs} + unset -nocomplain treediffs clear_display if {[info exists hlview] && $hlview == $n} { unset hlview set selectedhlview [mc "None"] } - catch {unset commitinterest} - catch {unset cached_commitrow} - catch {unset ordertok} + unset -nocomplain commitinterest + unset -nocomplain cached_commitrow + unset -nocomplain ordertok set curview $n set selectedview $n - .bar.view entryconf [mca "Edit view..."] -state [expr {$n == 0? "disabled": "normal"}] - .bar.view entryconf [mca "Delete view"] -state [expr {$n == 0? "disabled": "normal"}] + .bar.view entryconf [mca "&Edit view..."] -state [expr {$n == 0? "disabled": "normal"}] + .bar.view entryconf [mca "&Delete view"] -state [expr {$n == 0? "disabled": "normal"}] run refill_reflist if {![info exists viewcomplete($n)]} { @@ -4466,8 +4484,8 @@ proc showview {n} { set rowfinal {} set numcommits $commitidx($n) - catch {unset colormap} - catch {unset rowtextx} + unset -nocomplain colormap + unset -nocomplain rowtextx set nextcolor 0 set canvxmax [$canv cget -width] set curview $n @@ -4510,6 +4528,7 @@ proc showview {n} { } elseif {$numcommits == 0} { show_status [mc "No commits selected"] } + set_window_title } # Stuff relating to the highlighting facility @@ -4601,7 +4620,7 @@ proc delvhighlight {} { if {![info exists hlview]} return unset hlview - catch {unset vhighlights} + unset -nocomplain vhighlights unbolden } @@ -4649,7 +4668,7 @@ proc hfiles_change {} { # delete previous highlights catch {close $filehighlight} unset filehighlight - catch {unset fhighlights} + unset -nocomplain fhighlights unbolden unhighlight_filelist } @@ -4710,7 +4729,7 @@ proc findcom_change args { bolden_name $id mainfont } set boldnameids {} - catch {unset nhighlights} + unset -nocomplain nhighlights unbolden unmarkmatches if {$gdttype ne [mc "containing:"] || $findstring eq {}} { @@ -4913,9 +4932,9 @@ proc rhighlight_sel {a} { global descendent desc_todo ancestor anc_todo global highlight_related - catch {unset descendent} + unset -nocomplain descendent set desc_todo [list $a] - catch {unset ancestor} + unset -nocomplain ancestor set anc_todo [list $a] if {$highlight_related ne [mc "None"]} { rhighlight_none @@ -4926,7 +4945,7 @@ proc rhighlight_sel {a} { proc rhighlight_none {} { global rhighlights - catch {unset rhighlights} + unset -nocomplain rhighlights unbolden } @@ -5134,8 +5153,8 @@ proc initlayout {} { set rowisopt {} set rowfinal {} set canvxmax [$canv cget -width] - catch {unset colormap} - catch {unset rowtextx} + unset -nocomplain colormap + unset -nocomplain rowtextx setcanvscroll } @@ -6368,17 +6387,17 @@ proc clear_display {} { global linehtag linentag linedtag boldids boldnameids allcanvs delete all - catch {unset iddrawn} - catch {unset linesegs} - catch {unset linehtag} - catch {unset linentag} - catch {unset linedtag} + unset -nocomplain iddrawn + unset -nocomplain linesegs + unset -nocomplain linehtag + unset -nocomplain linentag + unset -nocomplain linedtag set boldids {} set boldnameids {} - catch {unset vhighlights} - catch {unset fhighlights} - catch {unset nhighlights} - catch {unset rhighlights} + unset -nocomplain vhighlights + unset -nocomplain fhighlights + unset -nocomplain nhighlights + unset -nocomplain rhighlights set need_redisplay 0 set nrows_drawn 0 } @@ -6650,6 +6669,7 @@ proc show_status {msg} { global canv fgcolor clear_display + set_window_title $canv create text 3 3 -anchor nw -text $msg -font mainfont \ -tags text -fill $fgcolor } @@ -7226,7 +7246,7 @@ proc selectline {l isnew {desired_loc {}} {switch_to_patch 0}} { global autoselect autosellen jump_to_here global vinlinediff - catch {unset pending_select} + unset -nocomplain pending_select $canv delete hover normalline unsel_reflist @@ -7424,7 +7444,7 @@ proc unselectline {} { global selectedline currentid set selectedline {} - catch {unset currentid} + unset -nocomplain currentid allcanvs delete secsel rhighlight_none } @@ -7480,7 +7500,7 @@ proc unset_posvars {} { if {[info exists last_posvars]} { foreach {var val} $last_posvars { global $var - catch {unset $var} + unset -nocomplain $var } unset last_posvars } @@ -7548,7 +7568,7 @@ proc gettree {id} { global nullid nullid2 set diffids $id - catch {unset diffmergeid} + unset -nocomplain diffmergeid if {![info exists treefilelist($id)]} { if {![info exists treepending]} { if {$id eq $nullid} { @@ -7704,7 +7724,7 @@ proc startdiff {ids} { settabs 1 set diffids $ids - catch {unset diffmergeid} + unset -nocomplain diffmergeid if {![info exists treediffs($ids)] || [lsearch -exact $ids $nullid] >= 0 || [lsearch -exact $ids $nullid2] >= 0} { @@ -8325,7 +8345,7 @@ proc clear_ctext {{first 1.0}} { } $ctext delete $first end if {$first eq "1.0"} { - catch {unset pendinglinks} + unset -nocomplain pendinglinks } set ctext_file_names {} set ctext_file_lines {} @@ -8501,7 +8521,7 @@ proc scrolltext {f0 f1} { highlightfile_for_scrollpos $topidx } - catch {unset suppress_highlighting_file_for_this_scrollpos} + unset -nocomplain suppress_highlighting_file_for_this_scrollpos .bleft.bottom.sb set $f0 $f1 if {$searchstring ne {}} { @@ -8876,13 +8896,13 @@ proc rowmenu {x y id} { if {$id ne $nullid && $id ne $nullid2} { set menu $rowctxmenu if {$mainhead ne {}} { - $menu entryconfigure 7 -label [mc "Reset %s branch to here" $mainhead] -state normal + $menu entryconfigure 8 -label [mc "Reset %s branch to here" $mainhead] -state normal } else { - $menu entryconfigure 7 -label [mc "Detached head: can't reset" $mainhead] -state disabled + $menu entryconfigure 8 -label [mc "Detached head: can't reset" $mainhead] -state disabled } - $menu entryconfigure 9 -state $mstate $menu entryconfigure 10 -state $mstate $menu entryconfigure 11 -state $mstate + $menu entryconfigure 12 -state $mstate } else { set menu $fakerowmenu } @@ -9341,6 +9361,20 @@ proc mktaggo {} { mktagcan } +proc copysummary {} { + global rowmenuid autosellen + + set format "%h (\"%s\", %ad)" + set cmd [list git show -s --pretty=format:$format --date=short] + if {$autosellen < 40} { + lappend cmd --abbrev=$autosellen + } + set summary [eval exec $cmd $rowmenuid] + + clipboard clear + clipboard append $summary +} + proc writecommit {} { global rowmenuid wrcomtop commitinfo wrcomcmd NS @@ -9819,8 +9853,10 @@ proc showrefs {} { -width 30 -height 20 -cursor $maincursor \ -spacing1 1 -spacing3 1 -state disabled $top.list tag configure highlight -background $selectbgcolor - lappend bglist $top.list - lappend fglist $top.list + if {![lsearch -exact $bglist $top.list]} { + lappend bglist $top.list + lappend fglist $top.list + } ${NS}::scrollbar $top.ysb -command "$top.list yview" -orient vertical ${NS}::scrollbar $top.xsb -command "$top.list xview" -orient horizontal grid $top.list $top.ysb -sticky nsew @@ -10103,9 +10139,9 @@ proc getallclines {fd} { } if {$nid > 0} { global cached_dheads cached_dtags cached_atags - catch {unset cached_dheads} - catch {unset cached_dtags} - catch {unset cached_atags} + unset -nocomplain cached_dheads + unset -nocomplain cached_dtags + unset -nocomplain cached_atags } if {![eof $fd]} { return [expr {$nid >= 1000? 2: 1}] @@ -10345,7 +10381,7 @@ proc dropcache {err} { foreach v {arcnos arcout arcids arcstart arcend growing \ arctags archeads allparents allchildren} { global $v - catch {unset $v} + unset -nocomplain $v } set allcwait 0 set nextarc 0 @@ -10996,8 +11032,8 @@ proc addedtag {id} { if {![info exists arcout($id)]} { recalcarc [lindex $arcnos($id) 0] } - catch {unset cached_dtags} - catch {unset cached_atags} + unset -nocomplain cached_dtags + unset -nocomplain cached_atags } proc addedhead {hid head} { @@ -11007,13 +11043,13 @@ proc addedhead {hid head} { if {![info exists arcout($hid)]} { recalcarc [lindex $arcnos($hid) 0] } - catch {unset cached_dheads} + unset -nocomplain cached_dheads } proc removedhead {hid head} { global cached_dheads - catch {unset cached_dheads} + unset -nocomplain cached_dheads } proc movedhead {hid head} { @@ -11023,7 +11059,7 @@ proc movedhead {hid head} { if {![info exists arcout($hid)]} { recalcarc [lindex $arcnos($hid) 0] } - catch {unset cached_dheads} + unset -nocomplain cached_dheads } proc changedrefs {} { @@ -11039,10 +11075,10 @@ proc changedrefs {} { } } } - catch {unset cached_tagcontent} - catch {unset cached_dtags} - catch {unset cached_atags} - catch {unset cached_dheads} + unset -nocomplain cached_tagcontent + unset -nocomplain cached_dtags + unset -nocomplain cached_atags + unset -nocomplain cached_dheads } proc rereadrefs {} { @@ -11532,7 +11568,9 @@ proc choosecolor {v vi w x cmd} { proc setselbg {c} { global bglist cflist foreach w $bglist { - $w configure -selectbackground $c + if {[winfo exists $w]} { + $w configure -selectbackground $c + } } $cflist tag configure highlight \ -background [$cflist cget -selectbackground] @@ -11558,7 +11596,9 @@ proc setbg {c} { global bglist foreach w $bglist { - $w conf -background $c + if {[winfo exists $w]} { + $w conf -background $c + } } } @@ -11566,7 +11606,9 @@ proc setfg {c} { global fglist canv foreach w $fglist { - $w conf -foreground $c + if {[winfo exists $w]} { + $w conf -foreground $c + } } allcanvs itemconf text -fill $c $canv itemconf circle -outline $c @@ -11628,7 +11670,7 @@ proc prefsok {} { ($perfile_attrs && !$oldprefs(perfile_attrs))} { # treediffs elements are limited by path; # won't have encodings cached if perfile_attrs was just turned on - catch {unset treediffs} + unset -nocomplain treediffs } if {$fontchanged || $maxwidth != $oldprefs(maxwidth) || $maxgraphpct != $oldprefs(maxgraphpct)} { @@ -12008,10 +12050,29 @@ proc get_path_encoding {path} { return $tcl_enc } +## For msgcat loading, first locate the installation location. +if { [info exists ::env(GITK_MSGSDIR)] } { + ## Msgsdir was manually set in the environment. + set gitk_msgsdir $::env(GITK_MSGSDIR) +} else { + ## Let's guess the prefix from argv0. + set gitk_prefix [file dirname [file dirname [file normalize $argv0]]] + set gitk_libdir [file join $gitk_prefix share gitk lib] + set gitk_msgsdir [file join $gitk_libdir msgs] + unset gitk_prefix +} + +## Internationalization (i18n) through msgcat and gettext. See +## http://www.gnu.org/software/gettext/manual/html_node/Tcl.html +package require msgcat +namespace import ::msgcat::mc +## And eventually load the actual message catalog +::msgcat::mcload $gitk_msgsdir + # First check that Tcl/Tk is recent enough if {[catch {package require Tk 8.4} err]} { - show_error {} . "Sorry, gitk cannot run with this version of Tcl/Tk.\n\ - Gitk requires at least Tcl/Tk 8.4." list + show_error {} . [mc "Sorry, gitk cannot run with this version of Tcl/Tk.\n\ + Gitk requires at least Tcl/Tk 8.4."] exit 1 } @@ -12161,25 +12222,6 @@ if {[tk windowingsystem] eq "aqua"} { set ctxbut } -## For msgcat loading, first locate the installation location. -if { [info exists ::env(GITK_MSGSDIR)] } { - ## Msgsdir was manually set in the environment. - set gitk_msgsdir $::env(GITK_MSGSDIR) -} else { - ## Let's guess the prefix from argv0. - set gitk_prefix [file dirname [file dirname [file normalize $argv0]]] - set gitk_libdir [file join $gitk_prefix share gitk lib] - set gitk_msgsdir [file join $gitk_libdir msgs] - unset gitk_prefix -} - -## Internationalization (i18n) through msgcat and gettext. See -## http://www.gnu.org/software/gettext/manual/html_node/Tcl.html -package require msgcat -namespace import ::msgcat::mc -## And eventually load the actual message catalog -::msgcat::mcload $gitk_msgsdir - catch { # follow the XDG base directory specification by default. See # http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html @@ -12393,7 +12435,7 @@ catch { } # wait for the window to become visible tkwait visibility . -wm title . "$appname: [reponame]" +set_window_title update readrefs diff --git a/gitk-git/po/bg.po b/gitk-git/po/bg.po index 1df0716c38..61073ebf6b 100644 --- a/gitk-git/po/bg.po +++ b/gitk-git/po/bg.po @@ -1,15 +1,15 @@ # Bulgarian translation of gitk po-file. -# Copyright (C) 2014 Alexander Shopov . +# Copyright (C) 2014, 2015 Alexander Shopov . # This file is distributed under the same license as the git package. -# Alexander Shopov , 2014. +# Alexander Shopov , 2014, 2015. # # msgid "" msgstr "" "Project-Id-Version: gitk master\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" -"PO-Revision-Date: 2014-07-28 07:32+0300\n" +"POT-Creation-Date: 2015-06-27 20:44+0300\n" +"PO-Revision-Date: 2015-06-27 20:46+0300\n" "Last-Translator: Alexander Shopov \n" "Language-Team: Bulgarian \n" "Language: bg\n" @@ -26,7 +26,7 @@ msgstr "Списъкът с неслети файлове не може да б msgid "Color words" msgstr "Оцветяване на думите" -#: gitk:217 gitk:2381 gitk:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "Отбелязване на думите" @@ -59,14 +59,18 @@ msgstr "Грешка при изпълнение на „git log“:" msgid "Reading" msgstr "Прочитане" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "Прочитане на подаванията…" -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "Не са избрани подавания" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "Команден ред" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "Изходът от „git log“ не може да се анализира:" @@ -75,16 +79,12 @@ msgstr "Изходът от „git log“ не може да се анализи msgid "No commit information available" msgstr "Липсва информация за подавания" -#: gitk:1897 -msgid "mc" -msgstr "mc" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "Добре" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "Отказ" @@ -136,15 +136,15 @@ msgstr "Редактиране на изгледа…" msgid "Delete view" msgstr "Изтриване на изгледа" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "Всички файлове" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "Изглед" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "Относно gitk" @@ -156,7 +156,7 @@ msgstr "Клавишни комбинации" msgid "Help" msgstr "Помощ" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "SHA1:" @@ -172,53 +172,53 @@ msgstr "Търсене" msgid "commit" msgstr "подаване" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "съдържащо:" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "засягащо пътищата:" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "добавящо/премахващо низ" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "променящо редове напасващи:" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "Точно" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "Без регистър" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "Рег. израз" -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "Всички полета" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "Първи ред" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "Коментари" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "Автор" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "Подаващ" @@ -246,7 +246,7 @@ msgstr "Контекст в редове" msgid "Ignore space change" msgstr "Празните знаци без значение" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "Поредови разлики" @@ -258,99 +258,107 @@ msgstr "Кръпка" msgid "Tree" msgstr "Дърво" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "Разлики между това и избраното" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "Разлики между избраното и това" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "Създаване на кръпка" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "Създаване на етикет" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "Запазване на подаването във файл" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "Създаване на нов клон" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "Отбиране на това подаване" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "Привеждане на върха на клона към текущото подаване" -#: gitk:2624 +#: gitk:2625 msgid "Mark this commit" msgstr "Отбелязване на това подаване" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "Връщане към отбелязаното подаване" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "Откриване и отбелязване на наследниците" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "Сравнение с отбелязаното подаване" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 msgid "Diff this -> marked commit" msgstr "Разлики между това и отбелязаното" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 msgid "Diff marked commit -> this" msgstr "Разлики между отбелязаното и това" -#: gitk:2630 +#: gitk:2631 msgid "Revert this commit" msgstr "Отмяна на това подаване" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "Изтегляне на този клон" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "Изтриване на този клон" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "Копиране на името на клона" + +#: gitk:2656 msgid "Highlight this too" msgstr "Отбелязване и на това" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "Отбелязване само на това" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "Външна програма за разлики" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "Анотиране на родителското подаване" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "Копиране на пътя" + +#: gitk:2667 msgid "Show origin of this line" msgstr "Показване на произхода на този ред" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "Изпълнение на „git gui blame“ върху този ред" -#: gitk:3011 +#: gitk:3014 msgid "" "\n" "Gitk - a commit viewer for git\n" @@ -366,313 +374,316 @@ msgstr "" "\n" "Използвайте и разпространявайте при условията на ОПЛ на ГНУ" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "Затваряне" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Клавишни комбинации" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Клавишни комбинации:" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tСпиране на програмата" -#: gitk:3046 +#: gitk:3049 #, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-W>\t\tЗатваряне на прозореца" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\tКъм първото подаване" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\tКъм последното подаване" -#: gitk:3049 +#: gitk:3052 msgid ", p, k\tMove up one commit" msgstr ", p, k\tЕдно подаване нагоре" -#: gitk:3050 +#: gitk:3053 msgid ", n, j\tMove down one commit" msgstr ", n, j\tЕдно подаване надолу" -#: gitk:3051 +#: gitk:3054 msgid ", z, h\tGo back in history list" msgstr ", z, h\tНазад в историята" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tНапред в историята" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" -msgstr "" +msgstr "<%s-n>\tКъм n-тия родител на текущото подаване в историята" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tСтраница нагоре в списъка с подаванията" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "\tСтраница надолу в списъка с подаванията" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tКъм началото на списъка с подаванията" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tКъм края на списъка с подаванията" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Up>\tРед нагоре в списъка с подавания" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Down>\tРед надолу в списъка с подавания" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-PageUp>\tСтраница нагоре в списъка с подавания" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-PageDown>\tСтраница надолу в списъка с подавания" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "\tТърсене назад (визуално нагоре, исторически — последващи)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr "" "\tТърсене напред (визуално надолу, исторически — предхождащи)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\tСтраница нагоре в изгледа за разлики" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tСтраница надолу в изгледа за разлики" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\t\tСтраница надолу в изгледа за разлики" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\t18 реда нагоре в изгледа за разлики" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\t18 реда надолу в изгледа за разлики" -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tТърсене" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tКъм следващата поява" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\tКъм следващата поява" -#: gitk:3072 +#: gitk:3075 +msgid "g\t\tGo to commit" +msgstr "g\t\tКъм последното подаване" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "/\t\tФокус върху полето за търсене" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\tКъм предишната поява" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tСледващ файл в изгледа за разлики" -#: gitk:3075 +#: gitk:3079 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tТърсене на следващата поява в изгледа за разлики" -#: gitk:3076 +#: gitk:3080 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tТърсене на предишната поява в изгледа за разлики" -#: gitk:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-KP+>\tПо-голям размер на шрифта" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-plus>\tПо-голям размер на шрифта" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-KP->\tПо-малък размер на шрифта" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-minus>\tПо-малък размер на шрифта" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\tОбновяване" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Грешка при създаването на временната директория „%s“:" -#: gitk:3568 +#: gitk:3572 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Грешка при получаването на „%s“ от %s:" -#: gitk:3631 +#: gitk:3635 msgid "command failed:" msgstr "неуспешно изпълнение на команда:" -#: gitk:3780 +#: gitk:3784 msgid "No such commit" msgstr "Такова подаване няма" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "„git gui blame“: неуспешно изпълнение на команда:" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Върхът за сливане не може да бъде прочетен: %s" -#: gitk:3833 +#: gitk:3837 #, tcl-format msgid "Error reading index: %s" msgstr "Грешка при прочитане на индекса: %s" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "Командата „git blame“ не може да бъде стартирана: %s" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "Търсене" -#: gitk:3893 +#: gitk:3897 #, tcl-format msgid "Error running git blame: %s" msgstr "Грешка при изпълнението на „git blame“: %s" -#: gitk:3921 +#: gitk:3925 #, tcl-format msgid "That line comes from commit %s, which is not in this view" -msgstr "Този ред идва от подаването %s, което не е в изгледа" +msgstr "Този ред идва от подаването %s, което не е в изгледа" -#: gitk:3935 +#: gitk:3939 msgid "External diff viewer failed:" msgstr "Неуспешно изпълнение на външната програма за разлики:" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Дефиниция на изглед в Gitk" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "Запазване на този изглед" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "Указатели (списък с разделител интервал):" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "Клони и етикети:" -#: gitk:4060 +#: gitk:4077 msgid "All refs" msgstr "Всички указатели" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "Всички (локални) клони" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "Всички етикети" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "Всички следящи клони" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "Информация за подаване (рег. изр.):" -#: gitk:4065 +#: gitk:4082 msgid "Author:" msgstr "Автор:" -#: gitk:4066 +#: gitk:4083 msgid "Committer:" msgstr "Подал:" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "Съобщение при подаване:" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" -msgstr "Съвпадение по коя да е информация за подаването" +msgstr "Съвпадение по всички характеристики на подаването" -#: gitk:4069 -#, fuzzy -msgid "Matches none Commit Info criteria" -msgstr "Съвпадение по коя да е информация за подаването" +#: gitk:4086 +msgid "Matches no Commit Info criteria" +msgstr "Не съвпада по никоя от характеристиките на подаването" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "Промени по файловете:" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "Дословен низ" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "Регулярен израз" -#: gitk:4073 +#: gitk:4090 msgid "Search string:" msgstr "Низ за търсене:" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" @@ -680,204 +691,204 @@ msgstr "" "Дата на подаване („2 weeks ago“ (преди 2 седмици), „2009-03-17 15:27:38“, " "„March 17, 2009 15:27:38“):" -#: gitk:4075 +#: gitk:4092 msgid "Since:" msgstr "От:" -#: gitk:4076 +#: gitk:4093 msgid "Until:" msgstr "До:" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "" "Ограничаване и/или прескачане на определен брой версии (неотрицателно цяло " "число):" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "Брой показани:" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "Брой прескочени:" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "Разни:" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "Подреждане по дата" -#: gitk:4082 +#: gitk:4099 msgid "Mark branch sides" msgstr "Отбелязване на страните по клона" -#: gitk:4083 +#: gitk:4100 msgid "Limit to first parent" msgstr "Само първия родител" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "Опростена история" -#: gitk:4085 +#: gitk:4102 msgid "Additional arguments to git log:" msgstr "Допълнителни аргументи към „git log“:" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "Въведете файловете и директориите за включване, по елемент на ред" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "" "Команда за генерирането на допълнителни подавания, които да бъдат включени:" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "Gitk: редактиране на изглед" -#: gitk:4219 +#: gitk:4236 msgid "-- criteria for selecting revisions" msgstr "— критерии за избор на версии" -#: gitk:4224 +#: gitk:4241 msgid "View Name" msgstr "Име на изглед" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "Прилагане (F5)" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "Грешка в аргументите за избор на подавания:" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "Няма" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "Наследник" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "Не е наследник" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "Предшественик" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "Не е предшественик" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "Локални промени добавени към индекса, но неподадени" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "Локални промени извън индекса" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "и още много" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "много" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "Етикети:" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "Родител" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "Дете" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "Клон" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "Следва" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "Предшества" -#: gitk:7947 +#: gitk:7966 #, tcl-format msgid "Error getting diffs: %s" msgstr "Грешка при получаването на разликите: %s" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Към ред:" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "Съкратената сума по SHA1 %s не е еднозначна" -#: gitk:8659 +#: gitk:8678 #, tcl-format msgid "Revision %s is not known" msgstr "Непозната версия %s" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "Непозната сума по SHA1 %s" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "Версия %s не е в текущия изглед" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "Дата" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "Деца" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "Зануляване на клона „%s“ към текущото подаване" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "Несвързан връх: невъзможно зануляване" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "Пропускане на подаването на сливането" -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 msgid "Error getting patch ID for " msgstr "Грешка при получаването на идентификатора на " -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr " — спиране\n" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 msgid "Commit " msgstr "Подаване" -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " @@ -885,7 +896,7 @@ msgstr "" " е същата кръпка като\n" " " -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " @@ -893,7 +904,7 @@ msgstr "" " се различава от\n" " " -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" @@ -901,130 +912,130 @@ msgstr "" "Разлика между подаванията:\n" "\n" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr " има %s деца — спиране\n" -#: gitk:9066 +#: gitk:9085 #, tcl-format msgid "Error writing commit to file: %s" msgstr "Грешка при запазването на подаването във файл: %s" -#: gitk:9072 +#: gitk:9091 #, tcl-format msgid "Error diffing commits: %s" msgstr "Грешка при изчисляването на разликите между подаванията: %s" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Най-горе" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "От" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "До" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "Генериране на кръпка" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "От:" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "До:" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "Обръщане" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "Запазване във файла:" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "Генериране" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "Грешка при създаването на кръпка:" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "Идентификатор:" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "Име на етикет:" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "Съобщението за етикет е незадължително" -#: gitk:9251 +#: gitk:9270 msgid "Tag message:" msgstr "Съобщение за етикет:" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "Създаване" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "Липсва име на етикет" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "Етикетът „%s“ вече съществува" -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "Грешка при създаването на етикет:" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "Команда:" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "Запазване" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "Грешка при запазването на подаването:" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "Име:" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "Укажете име за новия клон" -#: gitk:9444 +#: gitk:9463 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "Клонът „%s“ вече съществува. Да бъде ли презаписан?" -#: gitk:9511 +#: gitk:9530 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "" "Подаването „%s“ вече е включено в клона „%s“ — да бъде ли приложено отново?" -#: gitk:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "Отбиране" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1033,7 +1044,7 @@ msgstr "" "Неуспешно отбиране, защото във файла „%s“ има локални промени.\n" "Подайте, занулете или ги скатайте и пробвайте отново." -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1041,20 +1052,20 @@ msgstr "" "Неуспешно отбиране поради конфликти при сливане.\n" "Искате ли да ги коригирате чрез „git citool“?" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "Не са подадени промени" -#: gitk:9574 +#: gitk:9593 #, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "Подаването „%s“ не е включено в клона „%s“. Да бъде ли отменено?" -#: gitk:9579 +#: gitk:9598 msgid "Reverting" msgstr "Отмяна" -#: gitk:9587 +#: gitk:9606 #, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1063,7 +1074,7 @@ msgstr "" "Неуспешна отмяна, защото във файла „%s“ има локални промени.\n" "Подайте, занулете или ги скатайте и пробвайте отново.<" -#: gitk:9591 +#: gitk:9610 msgid "" "Revert failed because of merge conflict.\n" " Do you wish to run git citool to resolve it?" @@ -1071,28 +1082,28 @@ msgstr "" "Неуспешно отмяна поради конфликти при сливане.\n" "Искате ли да ги коригирате чрез „git citool“?" -#: gitk:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "Потвърждаване на зануляването" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Да се занули ли клонът „%s“ към „%s“?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Вид зануляване:" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Слабо: работното дърво и индекса остават същите" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Смесено: работното дърво остава същото, индексът се занулява" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1100,19 +1111,19 @@ msgstr "" "Силно: зануляване и на работното дърво, и на индекса\n" "(*ВСИЧКИ* локални промени ще бъдат безвъзвратно загубени)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "Зануляване" -#: gitk:9724 +#: gitk:9743 msgid "Checking out" msgstr "Изтегляне" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "Текущо изтегленият клон не може да бъде изтрит" -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1121,16 +1132,16 @@ msgstr "" "Подаванията на клона „%s“ не са на никой друг клон.\n" "Наистина ли да се изтрие клонът „%s“?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "Етикети и върхове: %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "Филтриране" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1138,213 +1149,217 @@ msgstr "" "Грешка при прочитането на топологията на подаванията. Информацията за клона " "и предшестващите/следващите етикети ще е непълна." -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "Етикет" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "Идентификатор" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Избор на шрифт за Gitk" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "Ч" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "К" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "Настройки на списъка с подавания" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "Максимална широчина на графа (в редове)" -#: gitk:11334 +#: gitk:11355 #, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "Максимална широчина на графа (% от панела)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "Показване на локалните промени" -#: gitk:11340 +#: gitk:11361 msgid "Auto-select SHA1 (length)" msgstr "Автоматично избиране на SHA1 (дължина)" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "Скриване на отдалечените указатели" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "Настройки на показването на разликите" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "Широчина на табулатора" -#: gitk:11353 +#: gitk:11374 msgid "Display nearby tags/heads" msgstr "Извеждане на близките етикети и върхове" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "Максимален брой етикети/върхове за показване" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "Разлика само в избраните пътища" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "Поддръжка на различни кодирания за всеки файл" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "Външен инструмент за разлики" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "Избор…" -#: gitk:11374 +#: gitk:11395 msgid "General options" msgstr "Общи настройки" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "Използване на тема за графичните обекти" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "(промяната изисква рестартиране на Gitk)" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "(в момента недостъпно)" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "Цветове: избира се с натискане" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "Интерфейс" -#: gitk:11396 +#: gitk:11417 msgid "interface" msgstr "интерфейс" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "Фон" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 msgid "background" msgstr "фон" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "Знаци" -#: gitk:11404 +#: gitk:11425 msgid "foreground" msgstr "знаци" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "Разлика: стари редове" -#: gitk:11408 +#: gitk:11429 msgid "diff old lines" msgstr "разлика, стари редове" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "Разлика: нови редове" -#: gitk:11413 +#: gitk:11434 msgid "diff new lines" msgstr "разлика, нови редове" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "Разлика: начало на парче" -#: gitk:11419 +#: gitk:11440 msgid "diff hunk header" msgstr "разлика, начало на парче" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "Фон на отбелязан ред" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "фон на отбелязан ред" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "Избор на фон" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "Шрифтове: избира се с натискане" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "Основен шрифт" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Шрифт за разликите" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "Шрифт на интерфейса" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Настройки на Gitk" -#: gitk:11473 +#: gitk:11494 msgid "General" msgstr "Общи" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "Цветове" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "Шрифтове" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: избор на цвят на „%s“" -#: gitk:12242 +#: gitk:12059 +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" +" Необходима ви е поне Tcl/Tk 8.4." + +#: gitk:12269 msgid "Cannot find a git repository here." msgstr "Тук липсва хранилище на Git." -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Нееднозначен аргумент „%s“: има и такава версия, и такъв файл" -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "Неправилни аргументи на gitk:" - -#: gitk:12405 -msgid "Command line" -msgstr "Команден ред" diff --git a/gitk-git/po/ca.po b/gitk-git/po/ca.po index 2c1f60683c..976037a645 100644 --- a/gitk-git/po/ca.po +++ b/gitk-git/po/ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" +"POT-Creation-Date: 2015-05-17 14:32+1000\n" "PO-Revision-Date: 2015-02-01 22:49-0700\n" "Last-Translator: Alex Henrie \n" "Language-Team: Catalan\n" @@ -27,7 +27,7 @@ msgstr "No s'ha pogut obtenir la llista de fitxers no fusionats:" msgid "Color words" msgstr "Colora les paraules" -#: gitk:217 gitk:2381 gitk:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "Marca les paraules" @@ -61,14 +61,18 @@ msgstr "Error en executar git log:" msgid "Reading" msgstr "Llegint" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "Llegint les revisions..." -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "Cap comissió seleccionada" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "Línia d'ordres" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "No es pot analitzar la sortida del git log:" @@ -77,16 +81,12 @@ msgstr "No es pot analitzar la sortida del git log:" msgid "No commit information available" msgstr "Cap informació de comissió disponible" -#: gitk:1897 -msgid "mc" -msgstr "mc" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "D'acord" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "Cancel·la" @@ -138,15 +138,15 @@ msgstr "Edita la vista..." msgid "Delete view" msgstr "Suprimeix vista" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "Tots els fitxers" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "Vista" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "Quant al gitk" @@ -158,7 +158,7 @@ msgstr "Associacions de tecles" msgid "Help" msgstr "Ajuda" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "ID SHA1:" @@ -174,53 +174,53 @@ msgstr "Cerca" msgid "commit" msgstr "comissió" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "que contingui:" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "que toqui els camins:" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "que afegeixi/elimini la cadena:" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "que tingui línies canviades coincidents amb:" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "Exacte" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "Ignora majúscula i minúscula" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "Regexp" -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "Tots els camps" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "Titular" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "Comentaris" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "Autor" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "Comitent" @@ -248,7 +248,7 @@ msgstr "Línies de context" msgid "Ignore space change" msgstr "Ignora canvis d'espai" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "Diferència de línies" @@ -260,99 +260,107 @@ msgstr "Pedaç" msgid "Tree" msgstr "Arbre" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "Diferencia aquesta -> la seleccionada" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "Diferencia la seleccionada -> aquesta" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "Fes pedaç" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "Crea etiqueta" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "Escriu la comissió a un fitxer" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "Crea una branca nova" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "Recull aquesta comissió com a cirera" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "Restableix la branca HEAD aquí" -#: gitk:2624 +#: gitk:2625 msgid "Mark this commit" msgstr "Marca aquesta comissió" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "Torna a la marca" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "Troba la descendent d'aquesta i marca-la" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "Compara amb la comissió marcada" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 msgid "Diff this -> marked commit" msgstr "Diferencia aquesta -> la comissió marcada" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 msgid "Diff marked commit -> this" msgstr "Diferencia la comissió seleccionada -> aquesta" -#: gitk:2630 +#: gitk:2631 msgid "Revert this commit" msgstr "Reverteix aquesta comissió" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "Agafa aquesta branca" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "Elimina aquesta branca" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "" + +#: gitk:2656 msgid "Highlight this too" msgstr "Ressalta aquest també" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "Ressalta només aquest" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "Diferència externa" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "Culpabilitat de la comissió mare" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "" + +#: gitk:2667 msgid "Show origin of this line" msgstr "Mostra l'origen d'aquesta línia" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "Executa git gui blame en aquesta línia" -#: gitk:3011 +#: gitk:3014 msgid "" "\n" "Gitk - a commit viewer for git\n" @@ -368,314 +376,319 @@ msgstr "" "\n" "Useu-lo i redistribuïu-lo sota els termes de la Llicència Pública General GNU" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "Tanca" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Associacions de tecles del Gitk" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Associacions de tecles del Gitk:" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tSurt" -#: gitk:3046 +#: gitk:3049 #, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-W>\t\tTanca la finestra" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\tVés a la primera comissió" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\tVés a l'última comissió" -#: gitk:3049 +#: gitk:3052 msgid ", p, k\tMove up one commit" msgstr ", p, k\tMou-te una comissió amunt" -#: gitk:3050 +#: gitk:3053 msgid ", n, j\tMove down one commit" msgstr ", n, j\tMou-te una comissió avall" -#: gitk:3051 +#: gitk:3054 msgid ", z, h\tGo back in history list" msgstr ", z, h\tRetrocedeix en la llista d'història" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tAvança en la llista d'història" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" msgstr "" "<%s-n>\tVés a l'enèsima mare de la comissió actual en la llista d'història" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tBaixa una pàgina en la llista de comissions" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "\tBaixa per una pàgina en la llista de comissions" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Inici>\tDesplaça't a la part superior de la llista de comissions" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-Fi>\tDesplaça't a la part inferior de la llista de comissions" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Amunt>\tDesplaça la llista de comissions una línia cap amunt" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Avall>\tDesplaça la llista de comissions una línia cap avall" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-RePàg>\tDesplaça la llista de comissions amunt per una pàgina" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-AvPàg>\tDesplaça la llista de comissions una pàgina cap avall" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "\tCerca cap enrere (amunt, les comissions més noves)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr "\tCerca cap endavant (avall, les comissions més velles)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\tDesplaça la vista de diferència una pàgina cap amunt" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tDesplaça la vista de diferència una pàgina cap amunt" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\t\tDesplaça la vista de diferència una pàgina cap avall" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tDesplaça la vista de diferència 18 línies cap amunt" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tDesplaça la vista de diferència 18 línies cap avall " -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tCerca" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tMou-te a la propera coincidència de la cerca" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\tMou-te a la propera coincidència de la cerca" -#: gitk:3072 +#: gitk:3075 +#, fuzzy +msgid "g\t\tGo to commit" +msgstr "\t\tVés a l'última comissió" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "/\t\tPosa el focus a la caixa de cerca" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\tMou a la coincidència prèvia de la cerca" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tDesplaça la vista de diferència al proper fitxer" -#: gitk:3075 +#: gitk:3079 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tCerca la propera coincidència en la vista de diferència" -#: gitk:3076 +#: gitk:3080 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tCerca la coincidència prèvia en la vista de diferència" -#: gitk:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-KP+>\tAugmenta la mida de lletra" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-més>\tAugmenta la mida de lletra" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-KP->\tDisminueix la mida de lletra" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-menys>\tDisminueix la mida de lletra" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\tActualitza" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Error en crear el directori temporal %s:" -#: gitk:3568 +#: gitk:3572 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Error en obtenir \"%s\" de %s:" -#: gitk:3631 +#: gitk:3635 msgid "command failed:" msgstr "l'ordre ha fallat:" -#: gitk:3780 +#: gitk:3784 msgid "No such commit" msgstr "Cap comissió així" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "git gui blame: l'ordre ha fallat:" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "No s'ha pogut llegir el cap de fusió: %s" -#: gitk:3833 +#: gitk:3837 #, tcl-format msgid "Error reading index: %s" msgstr "Error en llegir l'índex: %s" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "No s'ha pogut iniciar el git blame: %s" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "Cercant" -#: gitk:3893 +#: gitk:3897 #, tcl-format msgid "Error running git blame: %s" msgstr "Error en executar el git blame: %s" -#: gitk:3921 +#: gitk:3925 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "" "Aquella línia ve de la comissió %s, la qual no és en aquesta visualització" -#: gitk:3935 +#: gitk:3939 msgid "External diff viewer failed:" msgstr "El visualitzador de diferència extern ha fallat:" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Definició de vista del Gitk" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "Recorda aquesta vista" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "Referències (llista separada per espais)" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "Branques i etiquetes:" -#: gitk:4060 +#: gitk:4077 msgid "All refs" msgstr "Totes les referències" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "Totes les branques (locals)" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "Totes les etiquetes" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "Totes les branques amb seguiment remot" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "Informació de comissió (expressions regulars):" -#: gitk:4065 +#: gitk:4082 msgid "Author:" msgstr "Autor:" -#: gitk:4066 +#: gitk:4083 msgid "Committer:" msgstr "Comitent:" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "Missatge de comissió:" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" msgstr "Coincideix amb tots els criteris d'informació de comissió" -#: gitk:4069 +#: gitk:4086 #, fuzzy -msgid "Matches none Commit Info criteria" +msgid "Matches no Commit Info criteria" msgstr "Coincideix amb tots els criteris d'informació de comissió" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "Canvis als fitxers:" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "Cadena fixa" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "Expressió regular" -#: gitk:4073 +#: gitk:4090 msgid "Search string:" msgstr "Cadena de cerca:" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" @@ -683,201 +696,201 @@ msgstr "" "Dates de comissió (\"fa 2 setmanes\", \"2009-03-17 15:27:38\", \"17 abr 2009 " "15:27:38\"):" -#: gitk:4075 +#: gitk:4092 msgid "Since:" msgstr "Des de:" -#: gitk:4076 +#: gitk:4093 msgid "Until:" msgstr "Fins:" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "Limita o salta un nombre de revisions (nombre enter positiu)" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "Nombre a mostrar:" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "Nombre a saltar:" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "Opcions miscel·lànies:" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "Ordena estrictament per data" -#: gitk:4082 +#: gitk:4099 msgid "Mark branch sides" msgstr "Marca els costats de les branques" -#: gitk:4083 +#: gitk:4100 msgid "Limit to first parent" msgstr "Limita a la primera mare" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "Història senzilla" -#: gitk:4085 +#: gitk:4102 msgid "Additional arguments to git log:" msgstr "Paràmetres addicionals al git log:" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "Introduïu els fitxers i directoris a incloure, un per línia:" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "Ordre per a generar més comissions a incloure:" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "Gitk: vista d'edició" -#: gitk:4219 +#: gitk:4236 msgid "-- criteria for selecting revisions" msgstr "-- criteris per a seleccionar les revisions" -#: gitk:4224 +#: gitk:4241 msgid "View Name" msgstr "Nom de vista" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "Aplica (F5)" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "Error en els paràmetres de selecció de comissions:" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "Cap" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "Descendent" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "No descendent" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "Avantpassat" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "No avantpassat" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "Canvis locals registrats en l'índex però no comesos" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "Canvis locals sense cometre, no registrats en l'índex" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "i moltes més" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "moltes" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "Etiquetes:" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "Mare" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "Filla" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "Branca" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "Segueix" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "Precedeix" -#: gitk:7947 +#: gitk:7966 #, tcl-format msgid "Error getting diffs: %s" msgstr "Error en obtenir les diferències: %s" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Vés a:" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "L'id SHA1 curta %s és ambigua" -#: gitk:8659 +#: gitk:8678 #, tcl-format msgid "Revision %s is not known" msgstr "La revisió %s és desconeguda" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "L'id SHA1 %s és desconeguda" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "La revisió %s no és en la vista actual" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "Data" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "Filles" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "Restableix la branca %s aquí" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "Cap separat: no es pot restablir" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "Saltant la comissió de fusió " -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 msgid "Error getting patch ID for " msgstr "Error en obtenir l'ID de pedaç de " -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr " - aturant\n" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 msgid "Commit " msgstr "Comissió " -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " @@ -885,7 +898,7 @@ msgstr "" " és el mateix pedaç que\n" " " -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " @@ -893,7 +906,7 @@ msgstr "" " difereix de\n" " " -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" @@ -901,131 +914,131 @@ msgstr "" "Diferència entre comissions:\n" "\n" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr " té %s filles - aturant\n" -#: gitk:9066 +#: gitk:9085 #, tcl-format msgid "Error writing commit to file: %s" msgstr "Error en escriure la comissió al fitxer: %s" -#: gitk:9072 +#: gitk:9091 #, tcl-format msgid "Error diffing commits: %s" msgstr "Error en diferenciar les comissions: %s" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Part superior" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "De" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "A" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "Genera pedaç" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "De:" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "A:" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "Inverteix" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "Fitxer de sortida:" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "Genera" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "Error en crear el pedaç:" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "ID:" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "Nom d'etiqueta:" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "El missatge d'etiqueta és opcional" -#: gitk:9251 +#: gitk:9270 msgid "Tag message:" msgstr "Missatge d'etiqueta:" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "Crea" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "No s'ha especificat cap nom d'etiqueta" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "L'etiqueta \"%s\" ja existeix" -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "Error en crear l'etiqueta:" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "Ordre:" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "Escriu" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "Error en escriure la comissió:" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "Nom:" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "Si us plau, especifiqueu un nom per a la branca nova" -#: gitk:9444 +#: gitk:9463 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "La branca '%s' ja existeix. Voleu sobreescriure?" -#: gitk:9511 +#: gitk:9530 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "" "La comissió %s ja està inclosa en la branca %s -- realment voleu tornar a " "aplicar-la?" -#: gitk:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "Recollint cireres" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1035,7 +1048,7 @@ msgstr "" "Si us plau, cometeu, restabliu o emmagatzemeu els vostres canvis i torneu a " "intentar." -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1043,21 +1056,21 @@ msgstr "" "El recull de cireres ha fallat a causa d'un conflicte de fusió.\n" "Voleu executar el git citool per a resoldre'l?" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "Cap canvi comès" -#: gitk:9574 +#: gitk:9593 #, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "" "La comissió %s no s'inclou en la branca %s -- realment voleu revertir-la?" -#: gitk:9579 +#: gitk:9598 msgid "Reverting" msgstr "Revertint" -#: gitk:9587 +#: gitk:9606 #, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1067,7 +1080,7 @@ msgstr "" "plau, cometeu, restabliu o emmagatzemeu els vostres canvis i torneu-ho a " "intentar." -#: gitk:9591 +#: gitk:9610 msgid "" "Revert failed because of merge conflict.\n" " Do you wish to run git citool to resolve it?" @@ -1075,28 +1088,28 @@ msgstr "" "La reversió ha fallat a causa d'un conflicte de fusió.\n" " Voleu executar el git citool per a resoldre'l?" -#: gitk:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "Confirma el restabliment" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Voleu restablir la branca %s a %s?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Tipus de restabliment:" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Suau: Deixa l'arbre de treball i l'índex sense tocar" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Mixt: Deixa l'arbre de treball sense tocar, restableix l'índex" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1104,19 +1117,19 @@ msgstr "" "Dur: Restableix l'arbre de treball i l'índex\n" "(descarta TOTS els canvis locals)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "Restablint" -#: gitk:9724 +#: gitk:9743 msgid "Checking out" msgstr "Agafant" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "No es pot suprimir la branca actualment agafada" -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1125,16 +1138,16 @@ msgstr "" "Les comissions en la branca %s no són en cap altra branca.\n" "Realment voleu suprimir la branca %s?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "Etiquetes i caps: %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "Filtre" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1142,213 +1155,218 @@ msgstr "" "Error en llegir la informació de topologia de comissió; la informació sobre " "branques i etiquetes precedents/següents serà incompleta." -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "Etiqueta" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "Id" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Selector de tipus de lletra del Gitk" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "B" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "I" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "Opcions de visualització de la llista de comissions" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "Amplada màxima del gràfic (línies)" -#: gitk:11334 +#: gitk:11355 #, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "Amplada màxima del gràfic (% del panell)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "Mostra els canvis locals" -#: gitk:11340 +#: gitk:11361 msgid "Auto-select SHA1 (length)" msgstr "Selecciona automàticament l'SHA1 (longitud)" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "Amaga les referències remotes" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "Opcions de visualització de diferència" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "Espaiat de tabulació" -#: gitk:11353 +#: gitk:11374 msgid "Display nearby tags/heads" msgstr "Mostra etiquetes/caps propers" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "Nombre màxim d'etiquetes/caps a mostrar" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "Limita les diferències als camins llistats" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "Admet codificacions específiques per a cada fitxer" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "Eina de diferència externa" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "Trieu..." -#: gitk:11374 +#: gitk:11395 msgid "General options" msgstr "Opcions generals" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "Usa els ginys tematitzats" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "(el canvi requereix reiniciar)" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "(actualment no disponible)" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "Colors: pressiona per a triar" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "Interfície" -#: gitk:11396 +#: gitk:11417 msgid "interface" msgstr "interfície" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "Fons" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 msgid "background" msgstr "fons" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "Primer pla" -#: gitk:11404 +#: gitk:11425 msgid "foreground" msgstr "primer pla" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "Diferència: línies velles" -#: gitk:11408 +#: gitk:11429 msgid "diff old lines" msgstr "diferencia les línies velles" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "Diferència: línies noves" -#: gitk:11413 +#: gitk:11434 msgid "diff new lines" msgstr "diferencia les línies noves" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "Diferència: capçalera de tros" -#: gitk:11419 +#: gitk:11440 msgid "diff hunk header" msgstr "diferencia la capçalera de tros" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "Fons de la línia marcada" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "fons de la línia marcada" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "fons de la selecció" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "Tipus de lletra: pressiona per a triar" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "Tipus de lletra principal" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Tipus de lletra de visualització de diferència" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "Tipus de lletra de la interfície d'usuari" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Preferències del Gitk" -#: gitk:11473 +#: gitk:11494 msgid "General" msgstr "General" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "Colors" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "Tipus de lletra" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: tria el color per a %s" -#: gitk:12242 +#: gitk:12059 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" + +#: gitk:12269 msgid "Cannot find a git repository here." msgstr "No es pot trobar cap dipòsit de git aquí." -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Paràmetre ambigu '%s': és tant revisió com nom de fitxer" -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "Paràmetres dolents al gitk:" -#: gitk:12405 -msgid "Command line" -msgstr "Línia d'ordres" +#~ msgid "mc" +#~ msgstr "mc" diff --git a/gitk-git/po/de.po b/gitk-git/po/de.po index dabd4eefb5..1a3264b2b0 100644 --- a/gitk-git/po/de.po +++ b/gitk-git/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" +"POT-Creation-Date: 2015-05-17 14:32+1000\n" "PO-Revision-Date: 2010-01-27 20:27+0100\n" "Last-Translator: Christian Stimming \n" "Language-Team: German\n" @@ -25,7 +25,7 @@ msgstr "Liste der nicht zusammengeführten Dateien nicht gefunden:" msgid "Color words" msgstr "" -#: gitk:217 gitk:2381 gitk:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "" @@ -59,14 +59,18 @@ msgstr "Fehler beim Ausführen von »git log«:" msgid "Reading" msgstr "Lesen" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "Versionen werden gelesen ..." -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "Keine Versionen ausgewählt" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "Kommandozeile" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "Ausgabe von »git log« kann nicht erkannt werden:" @@ -75,16 +79,12 @@ msgstr "Ausgabe von »git log« kann nicht erkannt werden:" msgid "No commit information available" msgstr "Keine Versionsinformation verfügbar" -#: gitk:1897 -msgid "mc" -msgstr "mc" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "Ok" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "Abbrechen" @@ -136,15 +136,15 @@ msgstr "Ansicht bearbeiten ..." msgid "Delete view" msgstr "Ansicht entfernen" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "Alle Dateien" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "Ansicht" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "Über gitk" @@ -156,7 +156,7 @@ msgstr "Tastenkürzel" msgid "Help" msgstr "Hilfe" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "SHA1 ID:" @@ -172,53 +172,53 @@ msgstr "Suche" msgid "commit" msgstr "Version nach" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "Beschreibung:" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "Dateien:" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "Änderungen:" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "Exakt" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "Kein Groß/Klein" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "Regexp" -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "Alle Felder" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "Überschrift" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "Beschreibung" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "Autor" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "Eintragender" @@ -246,7 +246,7 @@ msgstr "Kontextzeilen" msgid "Ignore space change" msgstr "Leerzeichenänderungen ignorieren" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "" @@ -258,102 +258,110 @@ msgstr "Patch" msgid "Tree" msgstr "Baum" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "Vergleich: diese -> gewählte" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "Vergleich: gewählte -> diese" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "Patch erstellen" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "Markierung erstellen" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "Version in Datei schreiben" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "Neuen Zweig erstellen" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "Diese Version pflücken" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "HEAD-Zweig auf diese Version zurücksetzen" -#: gitk:2624 +#: gitk:2625 msgid "Mark this commit" msgstr "Lesezeichen setzen" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "Zum Lesezeichen" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "Abkömmling von Lesezeichen und dieser Version finden" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "Mit Lesezeichen vergleichen" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 #, fuzzy msgid "Diff this -> marked commit" msgstr "Vergleich: diese -> gewählte" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 #, fuzzy msgid "Diff marked commit -> this" msgstr "Vergleich: gewählte -> diese" -#: gitk:2630 +#: gitk:2631 #, fuzzy msgid "Revert this commit" msgstr "Lesezeichen setzen" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "Auf diesen Zweig umstellen" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "Zweig löschen" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "" + +#: gitk:2656 msgid "Highlight this too" msgstr "Diesen auch hervorheben" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "Nur diesen hervorheben" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "Externes Diff-Programm" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "Annotieren der Elternversion" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "" + +#: gitk:2667 msgid "Show origin of this line" msgstr "Herkunft dieser Zeile anzeigen" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "Diese Zeile annotieren (»git gui blame«)" -#: gitk:3011 +#: gitk:3014 #, fuzzy msgid "" "\n" @@ -371,517 +379,522 @@ msgstr "" "Benutzung und Weiterverbreitung gemäß den Bedingungen der GNU General Public " "License" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "Schließen" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Gitk-Tastaturbelegung" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Gitk-Tastaturbelegung:" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tBeenden" -#: gitk:3046 +#: gitk:3049 #, fuzzy, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-F>\t\tSuchen" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\tZur neuesten Version springen" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\tZur ältesten Version springen" -#: gitk:3049 +#: gitk:3052 #, fuzzy msgid ", p, k\tMove up one commit" msgstr ", p, i\tNächste neuere Version" -#: gitk:3050 +#: gitk:3053 #, fuzzy msgid ", n, j\tMove down one commit" msgstr ", n, k\tNächste ältere Version" -#: gitk:3051 +#: gitk:3054 #, fuzzy msgid ", z, h\tGo back in history list" msgstr ", z, j\tEine Version zurückgehen" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tEine Version weitergehen" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" msgstr "" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tEine Seite nach oben blättern" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "\tEine Seite nach unten blättern" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Pos1>\tZum oberen Ende der Versionsliste blättern" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-Ende>\tZum unteren Ende der Versionsliste blättern" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Hoch>\tVersionsliste eine Zeile nach oben blättern" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Runter>\tVersionsliste eine Zeile nach unten blättern" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-BildHoch>\tVersionsliste eine Seite nach oben blättern" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-BildRunter>\tVersionsliste eine Seite nach unten blättern" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "\tRückwärts suchen (nach oben; neuere Versionen)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr " Suchen (nach unten; ältere Versionen)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\t\tVergleich eine Seite nach oben blättern" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tVergleich eine Seite nach oben blättern" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\tVergleich eine Seite nach unten blättern" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tVergleich um 18 Zeilen nach oben blättern" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tVergleich um 18 Zeilen nach unten blättern" -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tSuchen" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tWeitersuchen" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\tWeitersuchen" -#: gitk:3072 +#: gitk:3075 +#, fuzzy +msgid "g\t\tGo to commit" +msgstr "\t\tZur ältesten Version springen" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "/\t\tTastaturfokus ins Suchfeld" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\tRückwärts weitersuchen" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tVergleich zur nächsten Datei blättern" -#: gitk:3075 +#: gitk:3079 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tWeitersuchen im Vergleich" -#: gitk:3076 +#: gitk:3080 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tRückwärts weitersuchen im Vergleich" -#: gitk:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-Nummerblock-Plus>\tSchrift vergrößern" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-Plus>\tSchrift vergrößern" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-Nummernblock-Minus> Schrift verkleinern" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-Minus>\tSchrift verkleinern" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\tAktualisieren" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Fehler beim Erzeugen des temporären Verzeichnisses »%s«:" -#: gitk:3568 +#: gitk:3572 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Fehler beim Holen von »%s« von »%s«:" -#: gitk:3631 +#: gitk:3635 msgid "command failed:" msgstr "Kommando fehlgeschlagen:" -#: gitk:3780 +#: gitk:3784 msgid "No such commit" msgstr "Version nicht gefunden" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "git gui blame: Kommando fehlgeschlagen:" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Zusammenführungs-Spitze konnte nicht gelesen werden: %s" -#: gitk:3833 +#: gitk:3837 #, tcl-format msgid "Error reading index: %s" msgstr "Fehler beim Lesen der Bereitstellung (»index«): %s" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "»git blame« konnte nicht gestartet werden: %s" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "Suchen" -#: gitk:3893 +#: gitk:3897 #, tcl-format msgid "Error running git blame: %s" msgstr "Fehler beim Ausführen von »git blame«: %s" -#: gitk:3921 +#: gitk:3925 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "" "Diese Zeile stammt aus Version %s, die nicht in dieser Ansicht gezeigt wird" -#: gitk:3935 +#: gitk:3939 msgid "External diff viewer failed:" msgstr "Externes Diff-Programm fehlgeschlagen:" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Gitk-Ansichten" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "Diese Ansicht speichern" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "Zweige/Markierungen (durch Leerzeichen getrennte Liste):" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "Zweige/Markierungen:" -#: gitk:4060 +#: gitk:4077 msgid "All refs" msgstr "Alle Markierungen und Zweige" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "Alle (lokalen) Zweige" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "Alle Markierungen" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "Alle Übernahmezweige" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "Versionsinformationen (reguläre Ausdrücke):" -#: gitk:4065 +#: gitk:4082 msgid "Author:" msgstr "Autor:" -#: gitk:4066 +#: gitk:4083 msgid "Committer:" msgstr "Eintragender:" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "Versionsbeschreibung:" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" msgstr "Alle Versionsinformationen-Kriterien erfüllen" -#: gitk:4069 +#: gitk:4086 #, fuzzy -msgid "Matches none Commit Info criteria" +msgid "Matches no Commit Info criteria" msgstr "Alle Versionsinformationen-Kriterien erfüllen" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "Dateien:" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "Zeichenkette" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "Regulärer Ausdruck" -#: gitk:4073 +#: gitk:4090 msgid "Search string:" msgstr "Suchausdruck:" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" msgstr "" "Datum (»2 weeks ago«, »2009-03-17 15:27:38«, »March 17, 2009 15:27:38«)" -#: gitk:4075 +#: gitk:4092 msgid "Since:" msgstr "Von:" -#: gitk:4076 +#: gitk:4093 msgid "Until:" msgstr "Bis:" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "Versionsanzahl begrenzen oder einige überspringen (ganzzahliger Wert):" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "Anzeigen:" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "Überspringen:" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "Sonstiges:" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "Streng nach Datum sortieren" -#: gitk:4082 +#: gitk:4099 msgid "Mark branch sides" msgstr "Zweig-Seiten markieren" -#: gitk:4083 +#: gitk:4100 msgid "Limit to first parent" msgstr "Auf erste Elternversion beschränken" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "Einfache Historie" -#: gitk:4085 +#: gitk:4102 msgid "Additional arguments to git log:" msgstr "Zusätzliche Argumente für »git log«:" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "Folgende Dateien und Verzeichnisse anzeigen (eine pro Zeile):" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "Versionsliste durch folgendes Kommando erzeugen lassen:" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "Gitk: Ansicht bearbeiten" -#: gitk:4219 +#: gitk:4236 msgid "-- criteria for selecting revisions" msgstr "-- Auswahl der angezeigten Versionen" -#: gitk:4224 +#: gitk:4241 msgid "View Name" msgstr "Ansichtsname" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "Anwenden (F5)" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "Fehler in den ausgewählten Versionen:" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "Keine" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "Abkömmling" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "Kein Abkömmling" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "Vorgänger" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "Kein Vorgänger" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "Lokale Änderungen bereitgestellt, aber nicht eingetragen" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "Lokale Änderungen, nicht bereitgestellt" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "viele" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "Markierungen:" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "Eltern" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "Kind" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "Zweig" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "Folgt auf" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "Vorgänger von" -#: gitk:7947 +#: gitk:7966 #, tcl-format msgid "Error getting diffs: %s" msgstr "Fehler beim Laden des Vergleichs: %s" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Gehe zu:" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "Kurzer SHA1-Hashwert »%s« ist mehrdeutig" -#: gitk:8659 +#: gitk:8678 #, tcl-format msgid "Revision %s is not known" msgstr "Version »%s« ist unbekannt" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "SHA1-Hashwert »%s« ist unbekannt" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "Version »%s« wird in der aktuellen Ansicht nicht angezeigt" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "Datum" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "Kinder" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "Zweig »%s« hierher zurücksetzen" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "Zweigspitze ist abgetrennt: Zurücksetzen nicht möglich" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "Überspringe Zusammenführungs-Version " -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 msgid "Error getting patch ID for " msgstr "Fehler beim Holen der Patch-ID für " -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr " - Abbruch.\n" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 msgid "Commit " msgstr "Version " -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " @@ -889,7 +902,7 @@ msgstr "" " ist das gleiche Patch wie\n" " " -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " @@ -897,7 +910,7 @@ msgstr "" " ist unterschiedlich von\n" " " -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" @@ -905,131 +918,131 @@ msgstr "" "Vergleich der Versionen:\n" "\n" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr " hat %s Kinder. Abbruch\n" -#: gitk:9066 +#: gitk:9085 #, tcl-format msgid "Error writing commit to file: %s" msgstr "Fehler beim Schreiben der Version in Datei: %s" -#: gitk:9072 +#: gitk:9091 #, tcl-format msgid "Error diffing commits: %s" msgstr "Fehler beim Vergleichen der Versionen: %s" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Oben" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "Von" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "bis" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "Patch erstellen" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "Von:" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "bis:" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "Umgekehrt" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "Ausgabedatei:" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "Erzeugen" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "Fehler beim Erzeugen des Patches:" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "ID:" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "Markierungsname:" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "Eine Markierungsbeschreibung ist optional" -#: gitk:9251 +#: gitk:9270 msgid "Tag message:" msgstr "Markierungsbeschreibung:" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "Erstellen" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "Kein Markierungsname angegeben" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "Markierung »%s« existiert bereits." -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "Fehler beim Erstellen der Markierung:" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "Kommando:" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "Schreiben" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "Fehler beim Schreiben der Version:" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "Name:" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "Bitte geben Sie einen Namen für den neuen Zweig an." -#: gitk:9444 +#: gitk:9463 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "Zweig »%s« existiert bereits. Soll er überschrieben werden?" -#: gitk:9511 +#: gitk:9530 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "" "Version »%s« ist bereits im Zweig »%s« enthalten -- trotzdem erneut " "eintragen?" -#: gitk:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "Version pflücken" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1039,7 +1052,7 @@ msgstr "" "vorliegen. Bitte diese Änderungen eintragen, zurücksetzen oder\n" "zwischenspeichern (»git stash«) und dann erneut versuchen." -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1048,23 +1061,23 @@ msgstr "" "ist. Soll das Zusammenführungs-Werkzeug (»git citool«) aufgerufen\n" "werden, um diesen Konflikt aufzulösen?" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "Keine Änderungen eingetragen" -#: gitk:9574 +#: gitk:9593 #, fuzzy, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "" "Version »%s« ist bereits im Zweig »%s« enthalten -- trotzdem erneut " "eintragen?" -#: gitk:9579 +#: gitk:9598 #, fuzzy msgid "Reverting" msgstr "Zurücksetzen" -#: gitk:9587 +#: gitk:9606 #, fuzzy, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1074,7 +1087,7 @@ msgstr "" "vorliegen. Bitte diese Änderungen eintragen, zurücksetzen oder\n" "zwischenspeichern (»git stash«) und dann erneut versuchen." -#: gitk:9591 +#: gitk:9610 #, fuzzy msgid "" "Revert failed because of merge conflict.\n" @@ -1084,30 +1097,30 @@ msgstr "" "ist. Soll das Zusammenführungs-Werkzeug (»git citool«) aufgerufen\n" "werden, um diesen Konflikt aufzulösen?" -#: gitk:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "Zurücksetzen bestätigen" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Zweig »%s« auf »%s« zurücksetzen?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Art des Zurücksetzens:" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Harmlos: Arbeitskopie und Bereitstellung unverändert" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "" "Gemischt: Arbeitskopie unverändert,\n" "Bereitstellung zurückgesetzt" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1115,21 +1128,21 @@ msgstr "" "Hart: Arbeitskopie und Bereitstellung\n" "(Alle lokalen Änderungen werden gelöscht)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "Zurücksetzen" -#: gitk:9724 +#: gitk:9743 msgid "Checking out" msgstr "Umstellen" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "" "Der Zweig, auf den die Arbeitskopie momentan umgestellt ist, kann nicht " "gelöscht werden." -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1138,16 +1151,16 @@ msgstr "" "Die Versionen auf Zweig »%s« existieren auf keinem anderen Zweig.\n" "Zweig »%s« trotzdem löschen?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "Markierungen und Zweige: %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "Filtern" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1155,219 +1168,224 @@ msgstr "" "Fehler beim Lesen der Strukturinformationen; Zweige und Informationen zu " "Vorgänger/Nachfolger werden unvollständig sein." -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "Markierung" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "Id" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Gitk-Schriften wählen" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "F" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "K" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "Anzeige der Versionsliste" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "Maximale Graphenbreite (Zeilen)" -#: gitk:11334 +#: gitk:11355 #, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "Maximale Graphenbreite (% des Fensters)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "Lokale Änderungen anzeigen" -#: gitk:11340 +#: gitk:11361 #, fuzzy msgid "Auto-select SHA1 (length)" msgstr "SHA1-Hashwert automatisch auswählen" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "Entfernte Zweige/Markierungen ausblenden" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "Anzeige des Vergleichs" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "Tabulatorbreite" -#: gitk:11353 +#: gitk:11374 #, fuzzy msgid "Display nearby tags/heads" msgstr "Naheliegende Markierungen anzeigen" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "Vergleich nur für angezeigte Pfade" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "Zeichenkodierung pro Datei ermitteln" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "Externes Diff-Programm" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "Wählen ..." -#: gitk:11374 +#: gitk:11395 msgid "General options" msgstr "Allgemeine Optionen" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "Aussehen der Benutzeroberfläche durch Thema bestimmen" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "(Änderungen werden erst nach Neustart wirksam)" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "(Momentan nicht verfügbar)" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "Farben: Klicken zum Wählen" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "Benutzeroberfläche" -#: gitk:11396 +#: gitk:11417 msgid "interface" msgstr "Benutzeroberfläche" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "Hintergrund" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 msgid "background" msgstr "Hintergrund" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "Vordergrund" -#: gitk:11404 +#: gitk:11425 msgid "foreground" msgstr "Vordergrund" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "Vergleich: Alte Zeilen" -#: gitk:11408 +#: gitk:11429 msgid "diff old lines" msgstr "Vergleich - Alte Zeilen" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "Vergleich: Neue Zeilen" -#: gitk:11413 +#: gitk:11434 msgid "diff new lines" msgstr "Vergleich - Neue Zeilen" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "Vergleich: Änderungstitel" -#: gitk:11419 +#: gitk:11440 msgid "diff hunk header" msgstr "Vergleich - Änderungstitel" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "Hintergrund für markierte Zeile" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "Hintergrund für markierte Zeile" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "Hintergrundfarbe auswählen" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "Schriftart: Klicken zum Wählen" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "Programmschriftart" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Schriftart für Vergleich" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "Beschriftungen" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Gitk-Einstellungen" -#: gitk:11473 +#: gitk:11494 #, fuzzy msgid "General" msgstr "Erzeugen" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: Farbe wählen für %s" -#: gitk:12242 +#: gitk:12059 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" + +#: gitk:12269 msgid "Cannot find a git repository here." msgstr "Kein Git-Projektarchiv gefunden." -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Mehrdeutige Angabe »%s«: Sowohl Version als auch Dateiname existiert." -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "Falsche Kommandozeilen-Parameter für gitk:" -#: gitk:12405 -msgid "Command line" -msgstr "Kommandozeile" +#~ msgid "mc" +#~ msgstr "mc" #~ msgid "next" #~ msgstr "nächste" diff --git a/gitk-git/po/es.po b/gitk-git/po/es.po index cfc10e13ea..6402a411a6 100644 --- a/gitk-git/po/es.po +++ b/gitk-git/po/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" +"POT-Creation-Date: 2015-05-17 14:32+1000\n" "PO-Revision-Date: 2008-03-25 11:20+0100\n" "Last-Translator: Santiago Gala \n" "Language-Team: Spanish\n" @@ -25,7 +25,7 @@ msgstr "Imposible obtener la lista de archivos pendientes de fusión:" msgid "Color words" msgstr "" -#: gitk:217 gitk:2381 gitk:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "" @@ -61,14 +61,18 @@ msgstr "Error al crear la etiqueta:" msgid "Reading" msgstr "Leyendo" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "Leyendo revisiones..." -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "No se seleccionaron revisiones" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "Línea de comandos" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "Error analizando la salida de git log:" @@ -77,16 +81,12 @@ msgstr "Error analizando la salida de git log:" msgid "No commit information available" msgstr "Falta información sobre las revisiones" -#: gitk:1897 -msgid "mc" -msgstr "" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "Aceptar" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "Cancelar" @@ -138,15 +138,15 @@ msgstr "Modificar vista..." msgid "Delete view" msgstr "Eliminar vista" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "Todos los archivos" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "Vista" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "Acerca de gitk" @@ -158,7 +158,7 @@ msgstr "Combinaciones de teclas" msgid "Help" msgstr "Ayuda" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "SHA1 ID:" @@ -174,53 +174,53 @@ msgstr "Buscar" msgid "commit" msgstr "revisión" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "que contiene:" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "que modifica la ruta:" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "que añade/elimina cadena:" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "Exacto" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "NoMayús" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "Regex" -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "Todos los campos" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "Título" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "Comentarios" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "Autor" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "" @@ -248,7 +248,7 @@ msgstr "Líneas de contexto" msgid "Ignore space change" msgstr "Ignora cambios de espaciado" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "" @@ -260,103 +260,111 @@ msgstr "Parche" msgid "Tree" msgstr "Árbol" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "Diferencia de esta -> seleccionada" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "Diferencia de seleccionada -> esta" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "Crear patch" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "Crear etiqueta" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "Escribir revisiones a archivo" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "Crear nueva rama" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "Añadir esta revisión a la rama actual (cherry-pick)" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "Traer la rama HEAD aquí" -#: gitk:2624 +#: gitk:2625 #, fuzzy msgid "Mark this commit" msgstr "Añadir esta revisión a la rama actual (cherry-pick)" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 #, fuzzy msgid "Diff this -> marked commit" msgstr "Diferencia de esta -> seleccionada" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 #, fuzzy msgid "Diff marked commit -> this" msgstr "Diferencia de seleccionada -> esta" -#: gitk:2630 +#: gitk:2631 #, fuzzy msgid "Revert this commit" msgstr "Añadir esta revisión a la rama actual (cherry-pick)" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "Cambiar a esta rama" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "Eliminar esta rama" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "" + +#: gitk:2656 msgid "Highlight this too" msgstr "Seleccionar también" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "Seleccionar sólo" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "" + +#: gitk:2667 msgid "Show origin of this line" msgstr "" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "" -#: gitk:3011 +#: gitk:3014 #, fuzzy msgid "" "\n" @@ -374,728 +382,733 @@ msgstr "" "Uso y redistribución permitidos según los términos de la Licencia Pública " "General de GNU (GNU GPL)" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "Cerrar" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Combinaciones de tecla de Gitk" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Combinaciones de tecla de Gitk:" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tSalir" -#: gitk:3046 +#: gitk:3049 #, fuzzy, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-F>\t\tBuscar" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\tIr a la primera revisión" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\tIr a la última revisión" -#: gitk:3049 +#: gitk:3052 #, fuzzy msgid ", p, k\tMove up one commit" msgstr ", p, i\tSubir una revisión" -#: gitk:3050 +#: gitk:3053 #, fuzzy msgid ", n, j\tMove down one commit" msgstr ", n, k\tBajar una revisión" -#: gitk:3051 +#: gitk:3054 #, fuzzy msgid ", z, h\tGo back in history list" msgstr ", z, j\tRetroceder en la historia" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tAvanzar en la historia" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" msgstr "" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tSubir una página en la lista de revisiones" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "\tBajar una página en la lista de revisiones" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tDesplazarse al inicio de la lista de revisiones" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tDesplazarse al final de la lista de revisiones" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Up>\tDesplazar una línea hacia arriba la lista de revisiones" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Down>\tDesplazar una línea hacia abajo la lista de revisiones" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-PageUp>\tDesplazar una página hacia arriba la lista de revisiones" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-PageDown>\tDesplazar una página hacia abajo la lista de revisiones" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "\tBuscar hacia atrás (arriba, revisiones siguientes)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr "\tBuscar hacia adelante (abajo, revisiones anteriores)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\tDesplaza hacia arriba una página la vista de diferencias" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tDesplaza hacia arriba una página la vista de diferencias" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\t\tDesplaza hacia abajo una página la vista de diferencias" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tDesplaza hacia arriba 18 líneas la vista de diferencias" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tDesplaza hacia abajo 18 líneas la vista de diferencias" -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tBuscar" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tBuscar el siguiente" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\tBuscar el siguiente" -#: gitk:3072 +#: gitk:3075 +#, fuzzy +msgid "g\t\tGo to commit" +msgstr "\t\tIr a la última revisión" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\tBuscar el anterior" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tDesplazar la vista de diferencias al archivo siguiente" -#: gitk:3075 +#: gitk:3079 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tBuscar siguiente en la vista de diferencias" -#: gitk:3076 +#: gitk:3080 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tBuscar anterior en la vista de diferencias" -#: gitk:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-KP+>\tAumentar tamaño del texto" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-plus>\tAumentar tamaño del texto" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-KP->\tDisminuir tamaño del texto" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-minus>\tDisminuir tamaño del texto" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\tActualizar" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, fuzzy, tcl-format msgid "Error creating temporary directory %s:" msgstr "Error en la creación del parche:" -#: gitk:3568 +#: gitk:3572 #, fuzzy, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Error al leer las diferencias de fusión:" -#: gitk:3631 +#: gitk:3635 #, fuzzy msgid "command failed:" msgstr "Línea de comandos" -#: gitk:3780 +#: gitk:3784 #, fuzzy msgid "No such commit" msgstr "No se han guardado cambios" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "" -#: gitk:3833 +#: gitk:3837 #, fuzzy, tcl-format msgid "Error reading index: %s" msgstr "Error al crear la etiqueta:" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "Buscando" -#: gitk:3893 +#: gitk:3897 #, fuzzy, tcl-format msgid "Error running git blame: %s" msgstr "Error al crear la etiqueta:" -#: gitk:3921 +#: gitk:3925 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "" -#: gitk:3935 +#: gitk:3939 #, fuzzy msgid "External diff viewer failed:" msgstr "f\t\tDesplazar la vista de diferencias al archivo siguiente" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Definición de vistas de Gitk" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "Recordar esta vista" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "" -#: gitk:4060 +#: gitk:4077 #, fuzzy msgid "All refs" msgstr "Todos los archivos" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "" -#: gitk:4065 +#: gitk:4082 #, fuzzy msgid "Author:" msgstr "Autor" -#: gitk:4066 +#: gitk:4083 #, fuzzy msgid "Committer:" msgstr "revisión" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" msgstr "" -#: gitk:4069 -msgid "Matches none Commit Info criteria" +#: gitk:4086 +msgid "Matches no Commit Info criteria" msgstr "" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "" -#: gitk:4073 +#: gitk:4090 #, fuzzy msgid "Search string:" msgstr "Buscando" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" msgstr "" -#: gitk:4075 +#: gitk:4092 msgid "Since:" msgstr "" -#: gitk:4076 +#: gitk:4093 msgid "Until:" msgstr "" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "" -#: gitk:4082 +#: gitk:4099 msgid "Mark branch sides" msgstr "" -#: gitk:4083 +#: gitk:4100 #, fuzzy msgid "Limit to first parent" msgstr "Limitar las diferencias a las rutas seleccionadas" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "" -#: gitk:4085 +#: gitk:4102 #, fuzzy msgid "Additional arguments to git log:" msgstr "Revisiones a incluir (argumentos a git log):" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "Introducir archivos y directorios a incluir, uno por línea:" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "Comando que genera más revisiones a incluir:" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "" -#: gitk:4219 +#: gitk:4236 msgid "-- criteria for selecting revisions" msgstr "" -#: gitk:4224 +#: gitk:4241 #, fuzzy msgid "View Name" msgstr "Vista" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "Error en los argumentos de selección de las revisiones:" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "Ninguno" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "Descendiente" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "No descendiente" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "Antepasado" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "No antepasado" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "Cambios locales añadidos al índice pero sin completar revisión" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "Cambios locales sin añadir al índice" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "Etiquetas:" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "Padre" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "Hija" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "Rama" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "Sigue-a" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "Precede-a" -#: gitk:7947 +#: gitk:7966 #, fuzzy, tcl-format msgid "Error getting diffs: %s" msgstr "Error al leer las diferencias de fusión:" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Ir a:" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "La id SHA1 abreviada %s es ambigua" -#: gitk:8659 +#: gitk:8678 #, fuzzy, tcl-format msgid "Revision %s is not known" msgstr "La id SHA1 %s es desconocida" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "La id SHA1 %s es desconocida" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "Fecha" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "Hijas" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "Poner la rama %s en esta revisión" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "" -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 #, fuzzy msgid "Error getting patch ID for " msgstr "Error en la creación del parche:" -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr "" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 #, fuzzy msgid "Commit " msgstr "revisión" -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " msgstr "" -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " msgstr "" -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" msgstr "" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr "" -#: gitk:9066 +#: gitk:9085 #, fuzzy, tcl-format msgid "Error writing commit to file: %s" msgstr "Error al escribir revisión:" -#: gitk:9072 +#: gitk:9091 #, fuzzy, tcl-format msgid "Error diffing commits: %s" msgstr "Error al escribir revisión:" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Origen" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "De" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "A" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "Generar parche" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "De:" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "Para:" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "Invertir" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "Escribir a archivo:" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "Generar" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "Error en la creación del parche:" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "ID:" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "Nombre de etiqueta:" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "" -#: gitk:9251 +#: gitk:9270 #, fuzzy msgid "Tag message:" msgstr "Nombre de etiqueta:" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "Crear" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "No se ha especificado etiqueta" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "La etiqueta \"%s\" ya existe" -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "Error al crear la etiqueta:" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "Comando:" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "Escribir" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "Error al escribir revisión:" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "Nombre:" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "Especifique un nombre para la nueva rama" -#: gitk:9444 +#: gitk:9463 #, fuzzy, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "La etiqueta \"%s\" ya existe" -#: gitk:9511 +#: gitk:9530 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "La revisión %s ya está incluida en la rama %s -- ¿Volver a aplicarla?" -#: gitk:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "Eligiendo revisiones (cherry-picking)" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" "Please commit, reset or stash your changes and try again." msgstr "" -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" msgstr "" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "No se han guardado cambios" -#: gitk:9574 +#: gitk:9593 #, fuzzy, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "La revisión %s ya está incluida en la rama %s -- ¿Volver a aplicarla?" -#: gitk:9579 +#: gitk:9598 #, fuzzy msgid "Reverting" msgstr "Reponiendo" -#: gitk:9587 +#: gitk:9606 #, 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 "" -#: gitk:9591 +#: gitk:9610 msgid "" "Revert failed because of merge conflict.\n" " Do you wish to run git citool to resolve it?" msgstr "" -#: gitk:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "Confirmar git reset" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "¿Reponer la rama %s a %s?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Tipo de reposición:" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Suave: No altera la copia de trabajo ni el índice" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Mixta: Actualiza el índice, no altera la copia de trabajo" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1103,19 +1116,19 @@ msgstr "" "Dura: Actualiza el índice y la copia de trabajo\n" "(abandona TODAS las modificaciones locales)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "Reponiendo" -#: gitk:9724 +#: gitk:9743 msgid "Checking out" msgstr "Creando copia de trabajo" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "No se puede borrar la rama actual" -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1124,16 +1137,16 @@ msgstr "" "Las revisiones de la rama %s no están presentes en otras ramas.\n" "¿Borrar la rama %s?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "Etiquetas y ramas: %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "Filtro" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1141,228 +1154,232 @@ msgstr "" "Error al leer la topología de revisiones: la información sobre las ramas y " "etiquetas precedentes y siguientes será incompleta." -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "Etiqueta" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "Id" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Selector de tipografías gitk" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "B" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "I" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "Opciones de visualización de la lista de revisiones" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "Ancho máximo del gráfico (en líneas)" -#: gitk:11334 +#: gitk:11355 #, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "Ancho máximo del gráfico (en % del panel)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "Mostrar cambios locales" -#: gitk:11340 +#: gitk:11361 #, fuzzy msgid "Auto-select SHA1 (length)" msgstr "Seleccionar automáticamente SHA1 hash" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "Opciones de visualización de diferencias" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "Espaciado de tabulador" -#: gitk:11353 +#: gitk:11374 #, fuzzy msgid "Display nearby tags/heads" msgstr "Mostrar etiquetas cercanas" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "Limitar las diferencias a las rutas seleccionadas" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "" -#: gitk:11374 +#: gitk:11395 #, fuzzy msgid "General options" msgstr "Generar parche" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "Colores: pulse para seleccionar" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "" -#: gitk:11396 +#: gitk:11417 #, fuzzy msgid "interface" msgstr "Tipografía para interfaz de usuario" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "Fondo" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 #, fuzzy msgid "background" msgstr "Fondo" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "Primer plano" -#: gitk:11404 +#: gitk:11425 #, fuzzy msgid "foreground" msgstr "Primer plano" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "Diff: líneas viejas" -#: gitk:11408 +#: gitk:11429 #, fuzzy msgid "diff old lines" msgstr "Diff: líneas viejas" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "Diff: líneas nuevas" -#: gitk:11413 +#: gitk:11434 #, fuzzy msgid "diff new lines" msgstr "Diff: líneas nuevas" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "Diff: cabecera de fragmento" -#: gitk:11419 +#: gitk:11440 #, fuzzy msgid "diff hunk header" msgstr "Diff: cabecera de fragmento" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "Color de fondo de la selección" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "Tipografías: pulse para elegir" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "Tipografía principal" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Tipografía para diferencias" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "Tipografía para interfaz de usuario" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Preferencias de gitk" -#: gitk:11473 +#: gitk:11494 #, fuzzy msgid "General" msgstr "Generar" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: elegir color para %s" -#: gitk:12242 +#: gitk:12059 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" +"Esta versión de Tcl/Tk es demasiado antigua.\n" +" Gitk requiere Tcl/Tk versión 8.4 o superior." + +#: gitk:12269 msgid "Cannot find a git repository here." msgstr "No hay un repositorio git aquí." -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "" "Argumento ambiguo: '%s' es tanto una revisión como un nombre de archivo" -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "Argumentos incorrectos a Gitk:" -#: gitk:12405 -msgid "Command line" -msgstr "Línea de comandos" - #~ msgid "SHA1 ID: " #~ msgstr "SHA1 ID: " @@ -1384,12 +1401,5 @@ msgstr "Línea de comandos" #~ msgid "Tag/Head %s is not known" #~ msgstr "La etiqueta/rama %s es deconocida" -#~ msgid "" -#~ "Sorry, gitk cannot run with this version of Tcl/Tk.\n" -#~ " Gitk requires at least Tcl/Tk 8.4." -#~ msgstr "" -#~ "Esta versión de Tcl/Tk es demasiado antigua.\n" -#~ " Gitk requiere Tcl/Tk versión 8.4 o superior." - #~ msgid "Cannot find the git directory \"%s\"." #~ msgstr "No hay directorio git \"%s\"." diff --git a/gitk-git/po/fr.po b/gitk-git/po/fr.po index 747ee190f2..6b1f05c6b9 100644 --- a/gitk-git/po/fr.po +++ b/gitk-git/po/fr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" +"POT-Creation-Date: 2015-05-17 14:32+1000\n" "PO-Revision-Date: 2009-11-19 22:13+0100\n" "Last-Translator: Emmanuel Trillaud \n" "Language-Team: git@vger.kernel.org\n" @@ -27,7 +27,7 @@ msgstr "Impossible de récupérer la liste des fichiers non fusionnés :" msgid "Color words" msgstr "" -#: gitk:217 gitk:2381 gitk:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "" @@ -63,14 +63,18 @@ msgstr "Erreur à l'exécution de git log :" msgid "Reading" msgstr "Lecture en cours" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "Lecture des commits..." -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "Aucun commit sélectionné" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "Ligne de commande" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "Impossible de lire la sortie de git log :" @@ -79,16 +83,12 @@ msgstr "Impossible de lire la sortie de git log :" msgid "No commit information available" msgstr "Aucune information disponible sur le commit" -#: gitk:1897 -msgid "mc" -msgstr "" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "OK" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "Annuler" @@ -140,15 +140,15 @@ msgstr "Éditer la vue..." msgid "Delete view" msgstr "Supprimer la vue" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "Tous les fichiers" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "Vue" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "À propos de gitk" @@ -160,7 +160,7 @@ msgstr "Raccourcis clavier" msgid "Help" msgstr "Aide" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "Id SHA1 :" @@ -176,53 +176,53 @@ msgstr "Recherche" msgid "commit" msgstr "commit" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "contient :" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "chemins modifiés :" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "ajoute/supprime la chaîne :" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "Exact" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "Ignorer la casse" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "Expression régulière" -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "Tous les champs" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "Surligner" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "Commentaires" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "Auteur" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "Auteur du commit" @@ -250,7 +250,7 @@ msgstr "Lignes de contexte" msgid "Ignore space change" msgstr "Ignorer les modifications d'espace" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "" @@ -262,102 +262,110 @@ msgstr "Patch" msgid "Tree" msgstr "Arbre" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "Diff entre ceci et la sélection" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "Diff entre sélection et ceci" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "Créer patch" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "Créer tag" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "Écrire le commit dans un fichier" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "Créer une nouvelle branche" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "Cueillir (cherry-pick) ce commit" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "Réinitialiser la branche HEAD vers cet état" -#: gitk:2624 +#: gitk:2625 msgid "Mark this commit" msgstr "Marquer ce commit" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "Retourner à la marque" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "Chercher le descendant de ceci et le marquer" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "Comparer avec le commit marqué" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 #, fuzzy msgid "Diff this -> marked commit" msgstr "Diff entre ceci et la sélection" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 #, fuzzy msgid "Diff marked commit -> this" msgstr "Diff entre sélection et ceci" -#: gitk:2630 +#: gitk:2631 #, fuzzy msgid "Revert this commit" msgstr "Marquer ce commit" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "Récupérer cette branche" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "Supprimer cette branche" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "" + +#: gitk:2656 msgid "Highlight this too" msgstr "Surligner également ceci" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "Surligner seulement ceci" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "Diff externe" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "Blâmer le commit parent" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "" + +#: gitk:2667 msgid "Show origin of this line" msgstr "Montrer l'origine de cette ligne" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "Exécuter git gui blame sur cette ligne" -#: gitk:3011 +#: gitk:3014 #, fuzzy msgid "" "\n" @@ -375,317 +383,322 @@ msgstr "" "Utilisation et redistribution soumises aux termes de la GNU General Public " "License" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "Fermer" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Raccourcis clavier de Gitk" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Raccourcis clavier de Gitk :" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tQuitter" -#: gitk:3046 +#: gitk:3049 #, fuzzy, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-F>\t\tRechercher" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\tAller au premier commit" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\tAller au dernier commit" -#: gitk:3049 +#: gitk:3052 #, fuzzy msgid ", p, k\tMove up one commit" msgstr ", p, i\t Aller au commit suivant" -#: gitk:3050 +#: gitk:3053 #, fuzzy msgid ", n, j\tMove down one commit" msgstr ", n, k\t Aller au commit précédent" -#: gitk:3051 +#: gitk:3054 #, fuzzy msgid ", z, h\tGo back in history list" msgstr ", z, j\tReculer dans l'historique" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tAvancer dans l'historique" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" msgstr "" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tMonter d'une page dans la liste des commits" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "\tDescendre d'une page dans la liste des commits" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Début>\tAller en haut de la liste des commits" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tAller en bas de la liste des commits" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Up>\tMonter d'une ligne dans la liste des commits" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Down>\tDescendre d'une ligne dans la liste des commits" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-PageUp>\tMonter d'une page dans la liste des commits" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-PageDown>\tDescendre d'une page dans la liste des commits" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "" "\tRecherche en arrière (vers l'avant, commits les plus anciens)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr "" "\tRecherche en avant (vers l'arrière, commit les plus récents)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\tMonter d'une page dans la vue des diff" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tMonter d'une page dans la vue des diff" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\t\tDescendre d'une page dans la vue des diff" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tMonter de 18 lignes dans la vue des diff" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tDescendre de 18 lignes dans la vue des diff" -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tRechercher" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tAller au résultat de recherche suivant" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\t\tAller au résultat de recherche suivant" -#: gitk:3072 +#: gitk:3075 +#, fuzzy +msgid "g\t\tGo to commit" +msgstr "\t\tAller au dernier commit" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "/\t\tFocus sur la zone de recherche" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\tAller au résultat de recherche précédent" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tAller au prochain fichier dans la vue des diff" -#: gitk:3075 +#: gitk:3079 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tAller au résultat suivant dans la vue des diff" -#: gitk:3076 +#: gitk:3080 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tAller au résultat précédent dans la vue des diff" -#: gitk:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-KP+>\tAugmenter la taille de la police" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-plus>\tAugmenter la taille de la police" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-KP->\tDiminuer la taille de la police" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-minus>\tDiminuer la taille de la police" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\tMise à jour" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Erreur lors de la création du répertoire temporaire %s :" -#: gitk:3568 +#: gitk:3572 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Erreur en obtenant \"%s\" de %s:" -#: gitk:3631 +#: gitk:3635 msgid "command failed:" msgstr "échec de la commande :" -#: gitk:3780 +#: gitk:3784 msgid "No such commit" msgstr "Commit inexistant" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "git gui blame : échec de la commande :" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Impossible de lire le head de la fusion : %s" -#: gitk:3833 +#: gitk:3837 #, tcl-format msgid "Error reading index: %s" msgstr "Erreur à la lecture de l'index : %s" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "Impossible de démarrer git blame : %s" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "Recherche en cours" -#: gitk:3893 +#: gitk:3897 #, tcl-format msgid "Error running git blame: %s" msgstr "Erreur à l'exécution de git blame : %s" -#: gitk:3921 +#: gitk:3925 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "Cette ligne est issue du commit %s, qui n'est pas dans cette vue" -#: gitk:3935 +#: gitk:3939 msgid "External diff viewer failed:" msgstr "Échec de l'outil externe de visualisation des diff" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Définition des vues de Gitk" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "Se souvenir de cette vue" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "Références (liste d'éléments séparés par des espaces) :" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "Branches & tags :" -#: gitk:4060 +#: gitk:4077 msgid "All refs" msgstr "Toutes les références" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "Toutes les branches (locales)" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "Tous les tags" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "Toutes les branches de suivi à distance" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "Info sur les commits (expressions régulières) :" -#: gitk:4065 +#: gitk:4082 msgid "Author:" msgstr "Auteur :" -#: gitk:4066 +#: gitk:4083 msgid "Committer:" msgstr "Commiteur :" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "Message de commit :" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" msgstr "Correspond à tous les critères d'Info sur les commits" -#: gitk:4069 +#: gitk:4086 #, fuzzy -msgid "Matches none Commit Info criteria" +msgid "Matches no Commit Info criteria" msgstr "Correspond à tous les critères d'Info sur les commits" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "Changements des fichiers :" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "Chaîne Figée" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "Expression Régulière" -#: gitk:4073 +#: gitk:4090 msgid "Search string:" msgstr "Recherche de la chaîne :" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" @@ -693,204 +706,204 @@ msgstr "" "Dates des commits (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, " "2009 15:27:38\") :" -#: gitk:4075 +#: gitk:4092 msgid "Since:" msgstr "De :" -#: gitk:4076 +#: gitk:4093 msgid "Until:" msgstr "Jusqu'au :" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "Limiter et/ou sauter un certain nombre (entier positif) de révisions :" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "Nombre à afficher :" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "Nombre à sauter :" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "Options diverses :" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "Trier par date" # FIXME : traduction de "branch sides" -#: gitk:4082 +#: gitk:4099 #, fuzzy msgid "Mark branch sides" msgstr "Marquer les extrémités des branches" -#: gitk:4083 +#: gitk:4100 msgid "Limit to first parent" msgstr "Limiter au premier ancêtre" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "Historique simple" -#: gitk:4085 +#: gitk:4102 msgid "Additional arguments to git log:" msgstr "Arguments supplémentaires de git log :" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "Saisir les fichiers et répertoires à inclure, un par ligne :" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "Commande pour générer plus de commits à inclure :" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "Gitk : éditer la vue" -#: gitk:4219 +#: gitk:4236 msgid "-- criteria for selecting revisions" msgstr "-- critère pour la sélection des révisions" -#: gitk:4224 +#: gitk:4241 #, fuzzy msgid "View Name" msgstr "Nom de la vue :" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "Appliquer (F5)" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "Erreur dans les arguments de sélection des commits :" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "Aucun" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "Descendant" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "Pas un descendant" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "Ancêtre" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "Pas un ancêtre" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "Modifications locales enregistrées dans l'index mais non commitées" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "Modifications locales non enregistrées dans l'index et non commitées" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "nombreux" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "Tags :" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "Parent" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "Enfant" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "Branche" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "Suit" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "Précède" -#: gitk:7947 +#: gitk:7966 #, tcl-format msgid "Error getting diffs: %s" msgstr "Erreur lors de la récupération des diff : %s" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Aller à :" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "Id SHA1 court %s est ambigu" -#: gitk:8659 +#: gitk:8678 #, tcl-format msgid "Revision %s is not known" msgstr "Id SHA1 %s est inconnu" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "Id SHA1 %s est inconnu" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "La révision %s n'est pas dans la vue courante" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "Date" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "Enfants" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "Réinitialiser la branche %s vers cet état" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "Head détaché : impossible de réinitialiser" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "Éviter le commit de la fusion " -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 msgid "Error getting patch ID for " msgstr "Erreur à l'obtention de l'ID du patch pour " -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr " - arrêt en cours\n" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 msgid "Commit " msgstr "Commit " -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " @@ -898,7 +911,7 @@ msgstr "" "est le même patch que \n" " " -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " @@ -906,138 +919,138 @@ msgstr "" " diffère de\n" " " -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" msgstr "" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr "a %s enfants - arrêt en cours\n" -#: gitk:9066 +#: gitk:9085 #, fuzzy, tcl-format msgid "Error writing commit to file: %s" msgstr "Erreur à l'ecriture du commit :" -#: gitk:9072 +#: gitk:9091 #, fuzzy, tcl-format msgid "Error diffing commits: %s" msgstr "Erreur à l'ecriture du commit :" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Haut" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "De" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "À" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "Générer le patch" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "De :" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "À :" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "Inverser" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "Fichier de sortie :" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "Générer" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "Erreur à la création du patch :" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "ID :" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "Nom du Tag :" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "" -#: gitk:9251 +#: gitk:9270 #, fuzzy msgid "Tag message:" msgstr "Nom du Tag :" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "Créer" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "Aucun nom de tag spécifié" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "Le tag \"%s\" existe déjà" -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "Erreur à la création du tag :" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "Commande :" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "Écrire" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "Erreur à l'ecriture du commit :" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "Nom :" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "Veuillez spécifier un nom pour la nouvelle branche" -#: gitk:9444 +#: gitk:9463 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "La branche '%s' existe déjà. Écraser?" -#: gitk:9511 +#: gitk:9530 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "" "Le Commit %s est déjà inclus dans la branche %s -- le ré-appliquer malgré " "tout?" -#: gitk:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "Cueillir (Cherry-picking)" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1048,7 +1061,7 @@ msgstr "" "Veuillez commiter, réinitialiser ou stasher vos changements et essayer de " "nouveau." -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1057,23 +1070,23 @@ msgstr "" "fusion.\n" "Souhaitez-vous exécuter git citool pour le résoudre ?" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "Aucun changement commité" -#: gitk:9574 +#: gitk:9593 #, fuzzy, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "" "Le Commit %s est déjà inclus dans la branche %s -- le ré-appliquer malgré " "tout?" -#: gitk:9579 +#: gitk:9598 #, fuzzy msgid "Reverting" msgstr "Réinitialisation" -#: gitk:9587 +#: gitk:9606 #, fuzzy, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1084,7 +1097,7 @@ msgstr "" "Veuillez commiter, réinitialiser ou stasher vos changements et essayer de " "nouveau." -#: gitk:9591 +#: gitk:9610 #, fuzzy msgid "" "Revert failed because of merge conflict.\n" @@ -1094,30 +1107,30 @@ msgstr "" "fusion.\n" "Souhaitez-vous exécuter git citool pour le résoudre ?" -#: gitk:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "Confirmer la réinitialisation" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Réinitialiser la branche %s à %s?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Type de réinitialisation :" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Douce : Laisse le répertoire de travail et l'index intacts" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "" "Hybride : Laisse le répertoire de travail dans son état courant, " "réinitialise l'index" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1125,21 +1138,21 @@ msgstr "" "Dure : Réinitialise le répertoire de travail et l'index\n" "(abandonne TOUS les changements locaux)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "Réinitialisation" # Fixme: Récupération est-il vraiment une mauvaise traduction? -#: gitk:9724 +#: gitk:9743 #, fuzzy msgid "Checking out" msgstr "Récupération" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "Impossible de supprimer la branche en cours" -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1148,16 +1161,16 @@ msgstr "" "Les commits de la branche %s ne sont dans aucune autre branche.\n" "Voulez-vous vraiment supprimer cette branche %s ?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "Tags et heads : %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "Filtrer" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1166,223 +1179,227 @@ msgstr "" "informations sur les branches et les tags précédents/suivants seront " "incomplètes." -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "Tag" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "Id" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Sélecteur de police de Gitk" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "B" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "I" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "Options d'affichage de la liste des commits" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "Longueur maximum du graphe (lignes)" # FIXME : Traduction standard de "pane"? -#: gitk:11334 +#: gitk:11355 #, fuzzy, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "Longueur maximum du graphe (% du panneau)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "Montrer les changements locaux" -#: gitk:11340 +#: gitk:11361 #, fuzzy msgid "Auto-select SHA1 (length)" msgstr "Sélection auto. du SHA1" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "Cacher les refs distantes" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "Options d'affichage des diff" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "Taille des tabulations" -#: gitk:11353 +#: gitk:11374 #, fuzzy msgid "Display nearby tags/heads" msgstr "Afficher les tags les plus proches" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "Limiter les différences aux chemins listés" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "Support pour un encodage des caractères par fichier" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "Outil diff externe" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "Choisir..." -#: gitk:11374 +#: gitk:11395 #, fuzzy msgid "General options" msgstr "Générer le patch" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "Couleurs : cliquer pour choisir" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "" -#: gitk:11396 +#: gitk:11417 #, fuzzy msgid "interface" msgstr "Police de l'interface utilisateur" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "Arrière-plan" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 msgid "background" msgstr "arrière-plan" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "Premier plan" -#: gitk:11404 +#: gitk:11425 msgid "foreground" msgstr "premier plan" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "Diff : anciennes lignes" -#: gitk:11408 +#: gitk:11429 msgid "diff old lines" msgstr "diff anciennes lignes" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "Diff : nouvelles lignes" -#: gitk:11413 +#: gitk:11434 msgid "diff new lines" msgstr "diff nouvelles lignes" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "Diff : entête du hunk" -#: gitk:11419 +#: gitk:11440 msgid "diff hunk header" msgstr "diff : entête du hunk" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "Arrière-plan de la ligne marquée" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "Arrière-plan de la ligne marquée" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "Sélectionner l'arrière-plan" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "Polices : cliquer pour choisir" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "Police principale" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Police d'affichage des diff" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "Police de l'interface utilisateur" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Préférences de Gitk" -#: gitk:11473 +#: gitk:11494 #, fuzzy msgid "General" msgstr "Générer" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk : choisir la couleur de %s" -#: gitk:12242 +#: gitk:12059 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" +"Désolé, gitk ne peut être exécuté avec cette version de Tcl/Tk.\n" +" Gitk requiert Tcl/Tk version 8.4 ou supérieur." + +#: gitk:12269 msgid "Cannot find a git repository here." msgstr "Impossible de trouver un dépôt git ici." -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Argument '%s' ambigu : à la fois une révision et un nom de fichier" -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "Arguments invalides pour gitk :" -#: gitk:12405 -msgid "Command line" -msgstr "Ligne de commande" - #~ msgid "SHA1 ID: " #~ msgstr "ID SHA1 :" @@ -1398,12 +1415,5 @@ msgstr "Ligne de commande" #~ msgid "- stopping\n" #~ msgstr "- arrêt en cours\n" -#~ msgid "" -#~ "Sorry, gitk cannot run with this version of Tcl/Tk.\n" -#~ " Gitk requires at least Tcl/Tk 8.4." -#~ msgstr "" -#~ "Désolé, gitk ne peut être exécuté avec cette version de Tcl/Tk.\n" -#~ " Gitk requiert Tcl/Tk version 8.4 ou supérieur." - #~ msgid "Cannot find the git directory \"%s\"." #~ msgstr "Impossible de trouver le répertoire git \"%s\"." diff --git a/gitk-git/po/hu.po b/gitk-git/po/hu.po index 5e3e9468c0..00023f1cab 100644 --- a/gitk-git/po/hu.po +++ b/gitk-git/po/hu.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" +"POT-Creation-Date: 2015-05-17 14:32+1000\n" "PO-Revision-Date: 2009-12-14 14:04+0100\n" "Last-Translator: Laszlo Papp \n" "Language-Team: Hungarian\n" @@ -25,7 +25,7 @@ msgstr "Nem sikerült letölteni az unmerged fájl listát:" msgid "Color words" msgstr "" -#: gitk:217 gitk:2381 gitk:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "" @@ -58,14 +58,18 @@ msgstr "Hiba történt a git log végrehajtása közben:" msgid "Reading" msgstr "Olvasás" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "Commitok olvasása ..." -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "Nincsen commit kiválasztva" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "Parancs sor" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "Nem lehet értelmezni a git log kimenetét:" @@ -74,16 +78,12 @@ msgstr "Nem lehet értelmezni a git log kimenetét:" msgid "No commit information available" msgstr "Nincsen elérhető commit információ" -#: gitk:1897 -msgid "mc" -msgstr "mc" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "OK" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "Visszavonás" @@ -135,15 +135,15 @@ msgstr "Nézet szerkesztése ..." msgid "Delete view" msgstr "Nézet törlése" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "Minden fájl" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "Nézet" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "Gitk névjegy" @@ -155,7 +155,7 @@ msgstr "Billentyűkombináció" msgid "Help" msgstr "Segítség" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "SHA1 ID:" @@ -171,53 +171,53 @@ msgstr "Keresés" msgid "commit" msgstr "commit" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "tartalmazás:" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "érintendő útvonalak:" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "string hozzáadása/törlése:" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "Pontos" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "Kis/nagy betű nem számít" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "Regexp" -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "Minden mező" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "Főcím" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "Megjegyzések" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "Szerző" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "Commitoló" @@ -245,7 +245,7 @@ msgstr "Tartalmi sorok" msgid "Ignore space change" msgstr "Space váltás mellőzése" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "" @@ -257,102 +257,110 @@ msgstr "Patch" msgid "Tree" msgstr "Tree" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "Diff ezeket -> kiválasztott" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "Diff kiválasztottakat -> ezt" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "Patch készítése" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "Tag készítése" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "Commit fáljba írása" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "Új branch készítése" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "Cherry-pick erre a commitra" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "HEAD branch újraindítása ide" -#: gitk:2624 +#: gitk:2625 msgid "Mark this commit" msgstr "Ezen commit megjelölése" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "Visszatérés a megjelöléshez" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "Találd meg ezen utódokat és jelöld meg" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "Összehasonlítás a megjelölt commit-tal" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 #, fuzzy msgid "Diff this -> marked commit" msgstr "Diff ezeket -> kiválasztott" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 #, fuzzy msgid "Diff marked commit -> this" msgstr "Diff kiválasztottakat -> ezt" -#: gitk:2630 +#: gitk:2631 #, fuzzy msgid "Revert this commit" msgstr "Ezen commit megjelölése" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "Check out ezt a branchot" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "Töröld ezt a branch-ot" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "" + +#: gitk:2656 msgid "Highlight this too" msgstr "Emeld ki ezt is" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "Csak ezt emeld ki" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "Külső diff" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "Blame szülő kommitra" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "" + +#: gitk:2667 msgid "Show origin of this line" msgstr "Mutasd meg ennek a sornak az eredetét" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "Futtasd a git gui blame-t ezen a soron" -#: gitk:3011 +#: gitk:3014 #, fuzzy msgid "" "\n" @@ -369,316 +377,321 @@ msgstr "" "\n" "Használd és terjeszd a GNU General Public License feltételei mellett" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "Bezárás" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Gitk-billentyű hozzárendelés" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Gitk-billentyű hozzaárendelés:" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tKilépés" -#: gitk:3046 +#: gitk:3049 #, fuzzy, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-F>\t\tKeresés" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\tElső commithoz" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\tUtolsó commithoz" -#: gitk:3049 +#: gitk:3052 #, fuzzy msgid ", p, k\tMove up one commit" msgstr ", p, i\tEgy committal feljebb" -#: gitk:3050 +#: gitk:3053 #, fuzzy msgid ", n, j\tMove down one commit" msgstr ", n, k\tEgy committal lejjebb" -#: gitk:3051 +#: gitk:3054 #, fuzzy msgid ", z, h\tGo back in history list" msgstr ", z, j\tVissza a history listába" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tElőre a history listába" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" msgstr "" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tEgy lappal feljebb a commit listába" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "\tEgy lappal lejjebb a commit listába" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Pos1>\tGörgetés a commit lista tetejéhez" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-Ende>\tGörgetés a commit lista aljához" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Hoch>\tEgy sorral feljebb görgetés a commit listában" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Runter>\tEgy sorral lejjebb görgetés a commit listában" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-BildHoch>\tEgy lappal feljebb görgetés a commit listában" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-BildRunter>\tEgy sorral lejjebb görgetés a commit listában" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "\tKeresés visszafele (felfele, utolsó commitok)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr "\tKeresés előre (lefelé; korábbi commitok)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\t\tEgy lappal feljebb görgetés a diff nézetben" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tEgy lappal feljebb görgetés a diff nézetben" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\tEgy lappal lejjebb görgetés a diff nézetben" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\t18 sorral felfelé görgetés diff nézetben" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\t18 sorral lejjebb görgetés a diff nézetben" -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tKeresés" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tKövetkező találathoz" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\tKövetkező találathoz" -#: gitk:3072 +#: gitk:3075 +#, fuzzy +msgid "g\t\tGo to commit" +msgstr "\t\tUtolsó commithoz" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "/\t\tLépj a keresési mezőre" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\tElőző találathoz" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tKövetkező fájlra görgetés diff nézetben" -#: gitk:3075 +#: gitk:3079 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tKövetkező találatra keresés diff nézetben" -#: gitk:3076 +#: gitk:3080 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tElőző találatra keresés diff nézetben" -#: gitk:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-Nummerblock-Plus>\tBetűméret növelése" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-Plus>\tBetűméret növelése" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-Nummernblock-Minus> Betűméret csökkentése" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-Minus>\tBetűméret csökkentése" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\tFrissítés" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Hiba történt az ideiglenes könyvtár létrehozása közben %s:" -#: gitk:3568 +#: gitk:3572 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Hiba történt \"%s\" letöltése közben %s-ről:" -#: gitk:3631 +#: gitk:3635 msgid "command failed:" msgstr "parancs hiba:" -#: gitk:3780 +#: gitk:3784 msgid "No such commit" msgstr "Nincs ilyen commit" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "git gui blame: parancs hiba:" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Nem sikerült a Merge head olvasása: %s" -#: gitk:3833 +#: gitk:3837 #, tcl-format msgid "Error reading index: %s" msgstr "Hiba történt az index olvasása közben: %s" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "Nem sikerült a git blame indítása: %s" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "Keresés" -#: gitk:3893 +#: gitk:3897 #, tcl-format msgid "Error running git blame: %s" msgstr "Hiba történt a git blame futtatása közben: %s" -#: gitk:3921 +#: gitk:3925 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "" "A %s commitból származik az a sor, amelyik nem található ebben a nézetben" -#: gitk:3935 +#: gitk:3939 msgid "External diff viewer failed:" msgstr "Külső diff nézegető hiba:" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Gitk nézet meghatározása" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "Maradj ennél a nézetnél" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "Referenciák (szóközzel tagolt lista" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "Branch-ek & tagek:" -#: gitk:4060 +#: gitk:4077 msgid "All refs" msgstr "Minden ref" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "Minden (helyi) branch" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "Minden tag" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "Minden távoli követő branch" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "Commit Infó (reguláris kifejezés):" -#: gitk:4065 +#: gitk:4082 msgid "Author:" msgstr "Szerző:" -#: gitk:4066 +#: gitk:4083 msgid "Committer:" msgstr "Commitoló:" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "Commit üzenet:" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" msgstr "Egyezik minen Commit Infó feltétellel" -#: gitk:4069 +#: gitk:4086 #, fuzzy -msgid "Matches none Commit Info criteria" +msgid "Matches no Commit Info criteria" msgstr "Egyezik minen Commit Infó feltétellel" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "Fájl változások:" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "Fix String" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "Reguláris kifejezés" -#: gitk:4073 +#: gitk:4090 msgid "Search string:" msgstr "Keresés szöveg:" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" @@ -686,203 +699,203 @@ msgstr "" "Commit Dátumok (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" -#: gitk:4075 +#: gitk:4092 msgid "Since:" msgstr "Ettől:" -#: gitk:4076 +#: gitk:4093 msgid "Until:" msgstr "Eddig:" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "Limitálva és/vagy kihagyva egy adott számú revíziót (pozitív egész):" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "Mutatandó szám:" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "Kihagyandó szám:" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "Különféle opciók:" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "Szigorú rendezás dátum alapján" -#: gitk:4082 +#: gitk:4099 msgid "Mark branch sides" msgstr "Jelölje meg az ágakat" -#: gitk:4083 +#: gitk:4100 msgid "Limit to first parent" msgstr "Korlátozás az első szülőre" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "Egyszerű history" -#: gitk:4085 +#: gitk:4102 msgid "Additional arguments to git log:" msgstr "További argumentok a git log-hoz:" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "Fájlok és könyvtárak bejegyzése amiket tartalmaz, soronként:" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "Parancs több tartalmazó commit generálására:" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "Gitk: szerkesztés nézet" -#: gitk:4219 +#: gitk:4236 msgid "-- criteria for selecting revisions" msgstr "-- kritériumok a revíziók kiválasztásához" -#: gitk:4224 +#: gitk:4241 msgid "View Name" msgstr "Nézet neve" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "Alkalmaz (F5)" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "Hiba történt a commit argumentumok kiválasztása közben:" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "Keine" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "Leszármazott" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "Nem leszármazott" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "Előd" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "Nem előd" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "" "Lokális változtatások, melyek be vannak téve az indexbe, de még nincsenek " "commitolva" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "Lokális nem commitolt változások, nincsenek betéve az indexbe" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "sok" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "Tagek:" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "Eltern" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "Gyerek" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "Ág" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "Következők" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "Megelőzők" -#: gitk:7947 +#: gitk:7966 #, tcl-format msgid "Error getting diffs: %s" msgstr "Hiba történt a diff-ek letöltése közben: %s" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Menj:" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "Rövid SHA1 id %s félreérthető" -#: gitk:8659 +#: gitk:8678 #, tcl-format msgid "Revision %s is not known" msgstr "A(z) %s revízió nem ismert" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "SHA1 id %s nem ismert" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "A(z) %s revízió nincs a jelenlegi nézetben" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "Dátum" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "Gyerekek" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "Állítsd vissza a %s branch-ot ide" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "Elkülönített head: nem lehet visszaállítani" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "Merge commit kihagyása " -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 msgid "Error getting patch ID for " msgstr "Hiba történt a patch ID megszerzése közben a következőnél " -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr " - abbahagyás\n" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 msgid "Commit " msgstr "Commit " -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " @@ -890,7 +903,7 @@ msgstr "" " Ugyanaz a patch mint\n" " " -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " @@ -898,7 +911,7 @@ msgstr "" " különbözik innentől\n" " " -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" @@ -906,132 +919,132 @@ msgstr "" "A commitok diffje:\n" "\n" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr " %s gyereke van. abbahagyás\n" -#: gitk:9066 +#: gitk:9085 #, tcl-format msgid "Error writing commit to file: %s" msgstr "Hiba történt a commit fájlba írása közben: %s" -#: gitk:9072 +#: gitk:9091 #, tcl-format msgid "Error diffing commits: %s" msgstr "Hiba történt a commitok diffelése közben: %s" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Teteje" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "Innen" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "Ide" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "Patch generálása" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "Innen:" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "Ide:" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "Visszafele" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "Kimeneti fájl:" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "Generálás" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "Hiba törtét a patch készítése közben:" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "ID:" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "Tag név:" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "" -#: gitk:9251 +#: gitk:9270 #, fuzzy msgid "Tag message:" msgstr "Tag név:" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "Létrehozás" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "A tag neve nincsen megadva" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "%s Tag már létezik" -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "Hiba történt a tag létrehozása közben:" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "Parancs:" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "Írás" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "Hiba történt a commit írása közben:" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "Név:" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "Kérem adja meg a nevét az új branchhoz" -#: gitk:9444 +#: gitk:9463 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "%s branch már létezik. Felülírja?" -#: gitk:9511 +#: gitk:9530 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "" "%s commit már benne van a %s branchban -- biztos hogy újra csinálja ?" "eintragen?" -#: gitk:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "Cherry-picking" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1041,7 +1054,7 @@ msgstr "" "Kérem commitolja, indítsa újra vagy rejtse el a változtatásait és próbálja " "újra." -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1049,23 +1062,23 @@ msgstr "" "Cherry-pick hiba történt merge konfliktus miatt.\n" "Kívánja futtatni a git citool-t a probléma megoldásához?" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "Nincsen változás commitolva" -#: gitk:9574 +#: gitk:9593 #, fuzzy, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "" "%s commit már benne van a %s branchban -- biztos hogy újra csinálja ?" "eintragen?" -#: gitk:9579 +#: gitk:9598 #, fuzzy msgid "Reverting" msgstr "Újraindítás" -#: gitk:9587 +#: gitk:9606 #, fuzzy, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1075,7 +1088,7 @@ msgstr "" "Kérem commitolja, indítsa újra vagy rejtse el a változtatásait és próbálja " "újra." -#: gitk:9591 +#: gitk:9610 #, fuzzy msgid "" "Revert failed because of merge conflict.\n" @@ -1084,28 +1097,28 @@ msgstr "" "Cherry-pick hiba történt merge konfliktus miatt.\n" "Kívánja futtatni a git citool-t a probléma megoldásához?" -#: gitk:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "Újraindítás megerősítése" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Újraindítja a %s branchot %s-ig?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Újraindítás típusa:" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Soft: Hagyd a working tree-t és az indexet érintetlenül" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Kevert: Hagyd a working tree-t érintetlenül, töröld az indexet" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1113,19 +1126,19 @@ msgstr "" "Hard: Indítsd újra a working tree-t és az indexet\n" "(MINDEN lokális változás eldobása)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "Újraindítás" -#: gitk:9724 +#: gitk:9743 msgid "Checking out" msgstr "Kivesz" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "Nem lehet a jelenleg kivett branch-ot törölni" -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1134,16 +1147,16 @@ msgstr "" "A %s branchon található commit nem található meg semelyik másik branchon.\n" "Tényleg törli a %s branchot?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "Tagek és headek: %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "Szűrő" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1151,219 +1164,226 @@ msgstr "" "Hiba történt a commit topológiai információ olvasása közben; branch ésa " "megelőző/következő információ nem lesz teljes." -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "Tag" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "Id" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Gitk-betű kiválasztó" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "F" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "K" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "Commit lista kijelzési opciók" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "Maximális grafikon szélesség (sorok)" -#: gitk:11334 +#: gitk:11355 #, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "Maximális grafikon szélesség (táble %-je)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "Mutasd a lokális változtatásokat" -#: gitk:11340 +#: gitk:11361 #, fuzzy msgid "Auto-select SHA1 (length)" msgstr "SHA1 Automatikus kiválasztása" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "A távoli refek elrejtése" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "Diff kijelző opciók" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "Tab sorköz" -#: gitk:11353 +#: gitk:11374 #, fuzzy msgid "Display nearby tags/heads" msgstr "Szomszédos tagek kijelzése" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "Korlátozott diffek a kilistázott útvonalakhoz" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "Fájlonkénti kódolás támgatása" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "Külső diff alkalmazás" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "Válaszd ..." -#: gitk:11374 +#: gitk:11395 msgid "General options" msgstr "Általános opciók" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "Témázott vezérlők használata" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "(a változás újraindítást igényel)" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "(jelenleg nem elérhető)" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "Színek: nyomja meg a kiválasztáshoz" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "Interfész" -#: gitk:11396 +#: gitk:11417 msgid "interface" msgstr "interfész" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "Háttér" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 msgid "background" msgstr "háttér" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "Előtér" -#: gitk:11404 +#: gitk:11425 msgid "foreground" msgstr "előtér" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "Diff: régi sorok" -#: gitk:11408 +#: gitk:11429 msgid "diff old lines" msgstr "diff régi sorok" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "Diff: új sorok" -#: gitk:11413 +#: gitk:11434 msgid "diff new lines" msgstr "diff - új sorok" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "Diff: nagy headerök" -#: gitk:11419 +#: gitk:11440 msgid "diff hunk header" msgstr "diff - nagy headerök" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "Megjelölt sor háttér" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "megjelölt sor háttér" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "Válasszon hátteret" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "Betű: nyomja meg a kiválasztáshoz" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "Fő betű" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Diff kijelző betű" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "Felhasználói interfész betű" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Gitk beállítások" -#: gitk:11473 +#: gitk:11494 #, fuzzy msgid "General" msgstr "Generálás" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: válasszon színt a %s-ra" -#: gitk:12242 +#: gitk:12059 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" +"Sajnáljuk, de a gitk nem futtatható ezzel a Tcl/Tk verzióval.\n" +"Gitk futtatásához legalább Tcl/Tk 8.4 szükséges." + +#: gitk:12269 msgid "Cannot find a git repository here." msgstr "Nem találhatü git repository itt." -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Félreérthető argumentum '%s': revízió és fájlnév is" -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "Rossz gitk argumentumok:" -#: gitk:12405 -msgid "Command line" -msgstr "Parancs sor" +#~ msgid "mc" +#~ msgstr "mc" #~ msgid "SHA1 ID: " #~ msgstr "SHA1 ID: " @@ -1397,10 +1417,3 @@ msgstr "Parancs sor" #~ msgid "- stopping\n" #~ msgstr "- abbahagyás.\n" - -#~ msgid "" -#~ "Sorry, gitk cannot run with this version of Tcl/Tk.\n" -#~ " Gitk requires at least Tcl/Tk 8.4." -#~ msgstr "" -#~ "Sajnáljuk, de a gitk nem futtatható ezzel a Tcl/Tk verzióval.\n" -#~ "Gitk futtatásához legalább Tcl/Tk 8.4 szükséges." diff --git a/gitk-git/po/it.po b/gitk-git/po/it.po index d630bb086d..b8212b1700 100644 --- a/gitk-git/po/it.po +++ b/gitk-git/po/it.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" +"POT-Creation-Date: 2015-05-17 14:32+1000\n" "PO-Revision-Date: 2010-01-28 18:41+0100\n" "Last-Translator: Michele Ballabio \n" "Language-Team: Italian\n" @@ -25,7 +25,7 @@ msgstr "Impossibile ottenere l'elenco dei file in attesa di fusione:" msgid "Color words" msgstr "" -#: gitk:217 gitk:2381 gitk:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "" @@ -59,14 +59,18 @@ msgstr "Errore nell'esecuzione di git log:" msgid "Reading" msgstr "Lettura in corso" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "Lettura delle revisioni in corso..." -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "Nessuna revisione selezionata" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "Linea di comando" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "Impossibile elaborare i dati di git log:" @@ -75,16 +79,12 @@ msgstr "Impossibile elaborare i dati di git log:" msgid "No commit information available" msgstr "Nessuna informazione disponibile sulle revisioni" -#: gitk:1897 -msgid "mc" -msgstr "" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "OK" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "Annulla" @@ -136,15 +136,15 @@ msgstr "Modifica vista..." msgid "Delete view" msgstr "Elimina vista" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "Tutti i file" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "Vista" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "Informazioni su gitk" @@ -156,7 +156,7 @@ msgstr "Scorciatoie da tastiera" msgid "Help" msgstr "Aiuto" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "SHA1 ID:" @@ -172,53 +172,53 @@ msgstr "Trova" msgid "commit" msgstr "revisione" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "contenente:" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "che riguarda i percorsi:" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "che aggiunge/rimuove la stringa:" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "Esatto" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "" -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "Tutti i campi" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "Titolo" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "Commenti" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "Autore" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "Revisione creata da" @@ -246,7 +246,7 @@ msgstr "Linee di contesto" msgid "Ignore space change" msgstr "Ignora modifiche agli spazi" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "" @@ -258,102 +258,110 @@ msgstr "Modifiche" msgid "Tree" msgstr "Directory" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "Diff questo -> selezionato" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "Diff selezionato -> questo" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "Crea patch" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "Crea etichetta" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "Scrivi revisione in un file" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "Crea un nuovo ramo" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "Porta questa revisione in cima al ramo attuale" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "Aggiorna il ramo HEAD a questa revisione" -#: gitk:2624 +#: gitk:2625 msgid "Mark this commit" msgstr "Segna questa revisione" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "Torna alla revisione segnata" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "Trova il discendente di questa revisione e di quella segnata" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "Confronta con la revisione segnata" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 #, fuzzy msgid "Diff this -> marked commit" msgstr "Diff questo -> selezionato" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 #, fuzzy msgid "Diff marked commit -> this" msgstr "Diff selezionato -> questo" -#: gitk:2630 +#: gitk:2631 #, fuzzy msgid "Revert this commit" msgstr "Segna questa revisione" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "Attiva questo ramo" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "Elimina questo ramo" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "" + +#: gitk:2656 msgid "Highlight this too" msgstr "Evidenzia anche questo" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "Evidenzia solo questo" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "Visualizza differenze in un altro programma" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "Annota la revisione precedente" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "" + +#: gitk:2667 msgid "Show origin of this line" msgstr "Mostra la provenienza di questa riga" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "Esegui git gui blame su questa riga" -#: gitk:3011 +#: gitk:3014 #, fuzzy msgid "" "\n" @@ -371,316 +379,321 @@ msgstr "" "Utilizzo e redistribuzione permessi sotto i termini della GNU General Public " "License" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "Chiudi" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Scorciatoie da tastiera di Gitk" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Scorciatoie da tastiera di Gitk:" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tEsci" -#: gitk:3046 +#: gitk:3049 #, fuzzy, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-F>\t\tTrova" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\tVai alla prima revisione" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\tVai all'ultima revisione" -#: gitk:3049 +#: gitk:3052 #, fuzzy msgid ", p, k\tMove up one commit" msgstr ", p, i\tVai più in alto di una revisione" -#: gitk:3050 +#: gitk:3053 #, fuzzy msgid ", n, j\tMove down one commit" msgstr ", n, k\tVai più in basso di una revisione" -#: gitk:3051 +#: gitk:3054 #, fuzzy msgid ", z, h\tGo back in history list" msgstr ", z, j\tTorna indietro nella cronologia" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tVai avanti nella cronologia" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" msgstr "" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tVai più in alto di una pagina nella lista delle revisioni" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "" "\tVai più in basso di una pagina nella lista delle revisioni" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tScorri alla cima della lista delle revisioni" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tScorri alla fine della lista delle revisioni" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Su>\tScorri la lista delle revisioni in alto di una riga" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Giù>\tScorri la lista delle revisioni in basso di una riga" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-PaginaSu>\tScorri la lista delle revisioni in alto di una pagina" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-PaginaGiù>\tScorri la lista delle revisioni in basso di una pagina" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "\tTrova all'indietro (verso l'alto, revisioni successive)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr "\tTrova in avanti (verso il basso, revisioni precedenti)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\tScorri la vista delle differenze in alto di una pagina" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tScorri la vista delle differenze in alto di una pagina" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\t\tScorri la vista delle differenze in basso di una pagina" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tScorri la vista delle differenze in alto di 18 linee" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tScorri la vista delle differenze in basso di 18 linee" -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tTrova" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tTrova in avanti" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\tTrova in avanti" -#: gitk:3072 +#: gitk:3075 +#, fuzzy +msgid "g\t\tGo to commit" +msgstr "\t\tVai all'ultima revisione" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "/\t\tCursore nel box di ricerca" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\tTrova all'indietro" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tScorri la vista delle differenze al file successivo" -#: gitk:3075 +#: gitk:3079 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tCerca in avanti nella vista delle differenze" -#: gitk:3076 +#: gitk:3080 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tCerca all'indietro nella vista delle differenze" -#: gitk:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-KP+>\tAumenta dimensione carattere" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-più>\tAumenta dimensione carattere" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-KP->\tDiminuisci dimensione carattere" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-meno>\tDiminuisci dimensione carattere" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\tAggiorna" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Errore durante la creazione della directory temporanea %s:" -#: gitk:3568 +#: gitk:3572 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Errore nella lettura di \"%s\" da %s:" -#: gitk:3631 +#: gitk:3635 msgid "command failed:" msgstr "impossibile eseguire il comando:" -#: gitk:3780 +#: gitk:3784 msgid "No such commit" msgstr "Revisione inesistente" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "git gui blame: impossibile eseguire il comando:" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Impossibile leggere merge head: %s" -#: gitk:3833 +#: gitk:3837 #, tcl-format msgid "Error reading index: %s" msgstr "Errore nella lettura dell'indice: %s" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "Impossibile eseguire git blame: %s" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "Ricerca in corso" -#: gitk:3893 +#: gitk:3897 #, tcl-format msgid "Error running git blame: %s" msgstr "Errore nell'esecuzione di git blame: %s" -#: gitk:3921 +#: gitk:3925 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "Quella riga proviene dalla revisione %s, non presente in questa vista" -#: gitk:3935 +#: gitk:3939 msgid "External diff viewer failed:" msgstr "Impossibile eseguire il visualizzatore di differenze:" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Scelta vista Gitk" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "Ricorda questa vista" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "Riferimenti (lista di elementi separati da spazi)" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "Rami ed etichette" -#: gitk:4060 +#: gitk:4077 msgid "All refs" msgstr "Tutti i riferimenti" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "Tutti i rami (locali)" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "Tutte le etichette" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "Tutti i rami remoti" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "Informazioni sulla revisione (espressioni regolari):" -#: gitk:4065 +#: gitk:4082 msgid "Author:" msgstr "Autore:" -#: gitk:4066 +#: gitk:4083 msgid "Committer:" msgstr "Revisione creata da:" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "Messaggio di revisione:" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" msgstr "Risponde a tutti i criteri di ricerca sulle revisioni" -#: gitk:4069 +#: gitk:4086 #, fuzzy -msgid "Matches none Commit Info criteria" +msgid "Matches no Commit Info criteria" msgstr "Risponde a tutti i criteri di ricerca sulle revisioni" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "Modifiche ai file:" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "Stringa fissa" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "Espressione regolare" -#: gitk:4073 +#: gitk:4090 msgid "Search string:" msgstr "Cerca stringa:" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" @@ -688,201 +701,201 @@ msgstr "" "Date di revisione (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, " "2009 15:27:38\"):" -#: gitk:4075 +#: gitk:4092 msgid "Since:" msgstr "Da:" -#: gitk:4076 +#: gitk:4093 msgid "Until:" msgstr "A:" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "Limita e/o salta N revisioni (intero positivo):" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "Numero di revisioni da mostrare:" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "Numero di revisioni da saltare:" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "Altre opzioni:" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "Ordina solo per data" -#: gitk:4082 +#: gitk:4099 msgid "Mark branch sides" msgstr "Segna i lati del ramo" -#: gitk:4083 +#: gitk:4100 msgid "Limit to first parent" msgstr "Limita al primo genitore" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "Cronologia semplificata" -#: gitk:4085 +#: gitk:4102 msgid "Additional arguments to git log:" msgstr "Ulteriori argomenti da passare a git log:" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "Inserire file e directory da includere, uno per riga:" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "Comando che genera altre revisioni da visualizzare:" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "Gitk: modifica vista" -#: gitk:4219 +#: gitk:4236 msgid "-- criteria for selecting revisions" msgstr "-- criteri per la scelta delle revisioni" -#: gitk:4224 +#: gitk:4241 msgid "View Name" msgstr "Nome vista" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "Applica (F5)" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "Errore negli argomenti di selezione delle revisioni:" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "Nessuno" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "Discendente" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "Non discendente" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "Ascendente" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "Non ascendente" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "Modifiche locali presenti nell'indice ma non nell'archivio" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "Modifiche locali non presenti né nell'archivio né nell'indice" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "molti" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "Etichette:" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "Genitore" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "Figlio" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "Ramo" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "Segue" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "Precede" -#: gitk:7947 +#: gitk:7966 #, tcl-format msgid "Error getting diffs: %s" msgstr "Errore nella lettura delle differenze:" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Vai a:" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "La SHA1 id abbreviata %s è ambigua" -#: gitk:8659 +#: gitk:8678 #, tcl-format msgid "Revision %s is not known" msgstr "La revisione %s è sconosciuta" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "La SHA1 id %s è sconosciuta" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "La revisione %s non è presente nella vista attuale" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "Data" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "Figli" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "Aggiorna il ramo %s a questa revisione" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "Nessun ramo attivo: reset impossibile" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "Salto la revisione di fusione " -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 msgid "Error getting patch ID for " msgstr "Errore nella identificazione della patch per " -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr " - fine\n" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 msgid "Commit " msgstr "La revisione " -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " @@ -890,7 +903,7 @@ msgstr "" " ha le stesse differenze di\n" " " -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " @@ -898,7 +911,7 @@ msgstr "" " è diversa da\n" " " -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" @@ -906,129 +919,129 @@ msgstr "" "Differenze tra le revisioni:\n" "\n" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr " ha %s figli - fine\n" -#: gitk:9066 +#: gitk:9085 #, tcl-format msgid "Error writing commit to file: %s" msgstr "Errore nella scrittura della revisione nel file: %s" -#: gitk:9072 +#: gitk:9091 #, tcl-format msgid "Error diffing commits: %s" msgstr "Errore nelle differenze tra le revisioni: %s" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Inizio" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "Da" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "A" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "Genera patch" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "Da:" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "A:" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "Inverti" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "Scrivi sul file:" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "Genera" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "Errore nella creazione della patch:" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "ID:" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "Nome etichetta:" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "Il messaggio dell'etichetta è opzionale" -#: gitk:9251 +#: gitk:9270 msgid "Tag message:" msgstr "Messaggio dell'etichetta:" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "Crea" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "Nessuna etichetta specificata" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "L'etichetta \"%s\" esiste già" -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "Errore nella creazione dell'etichetta:" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "Comando:" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "Scrivi" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "Errore nella scrittura della revisione:" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "Nome:" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "Specificare un nome per il nuovo ramo" -#: gitk:9444 +#: gitk:9463 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "Il ramo '%s' esiste già. Sovrascrivere?" -#: gitk:9511 +#: gitk:9530 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "La revisione %s è già inclusa nel ramo %s -- applicarla di nuovo?" -#: gitk:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1039,7 +1052,7 @@ msgstr "" "Prima di riprovare, bisogna creare una nuova revisione, annullare le " "modifiche o usare 'git stash'." -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1047,21 +1060,21 @@ msgstr "" "Impossibile eseguire cherry-pick a causa di un conflitto nella fusione.\n" "Vuoi avviare git citool per risolverlo?" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "Nessuna modifica archiviata" -#: gitk:9574 +#: gitk:9593 #, fuzzy, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "La revisione %s è già inclusa nel ramo %s -- applicarla di nuovo?" -#: gitk:9579 +#: gitk:9598 #, fuzzy msgid "Reverting" msgstr "git reset in corso" -#: gitk:9587 +#: gitk:9606 #, fuzzy, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1072,7 +1085,7 @@ msgstr "" "Prima di riprovare, bisogna creare una nuova revisione, annullare le " "modifiche o usare 'git stash'." -#: gitk:9591 +#: gitk:9610 #, fuzzy msgid "" "Revert failed because of merge conflict.\n" @@ -1081,28 +1094,28 @@ msgstr "" "Impossibile eseguire cherry-pick a causa di un conflitto nella fusione.\n" "Vuoi avviare git citool per risolverlo?" -#: gitk:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "Conferma git reset" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Aggiornare il ramo %s a %s?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Tipo di aggiornamento:" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Soft: Lascia la direcory di lavoro e l'indice come sono" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Mixed: Lascia la directory di lavoro come è, aggiorna l'indice" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1110,19 +1123,19 @@ msgstr "" "Hard: Aggiorna la directory di lavoro e l'indice\n" "(abbandona TUTTE le modifiche locali)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "git reset in corso" -#: gitk:9724 +#: gitk:9743 msgid "Checking out" msgstr "Attivazione in corso" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "Impossibile cancellare il ramo attualmente attivo" -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1131,16 +1144,16 @@ msgstr "" "Le revisioni nel ramo %s non sono presenti su altri rami.\n" "Cancellare il ramo %s?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "Etichette e rami: %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "Filtro" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1148,220 +1161,222 @@ msgstr "" "Errore nella lettura della topologia delle revisioni: le informazioni sul " "ramo e le etichette precedenti e seguenti saranno incomplete." -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "Etichetta" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "Id" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Scelta caratteri gitk" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "B" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "I" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "Opzioni visualizzazione dell'elenco revisioni" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "Larghezza massima del grafico (in linee)" -#: gitk:11334 +#: gitk:11355 #, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "Larghezza massima del grafico (% del pannello)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "Mostra modifiche locali" -#: gitk:11340 +#: gitk:11361 #, fuzzy msgid "Auto-select SHA1 (length)" msgstr "Seleziona automaticamente SHA1 hash" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "Nascondi i riferimenti remoti" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "Opzioni di visualizzazione delle differenze" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "Spaziatura tabulazioni" -#: gitk:11353 +#: gitk:11374 #, fuzzy msgid "Display nearby tags/heads" msgstr "Mostra etichette vicine" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "Limita le differenze ai percorsi elencati" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "Attiva codifica file per file" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "Visualizzatore di differenze" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "Scegli..." -#: gitk:11374 +#: gitk:11395 msgid "General options" msgstr "Opzioni generali" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "Utilizza interfaccia a tema" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "(una modifica richiede il riavvio)" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "(momentaneamente non disponibile)" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "Colori: premere per scegliere" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "Interfaccia" -#: gitk:11396 +#: gitk:11417 msgid "interface" msgstr "interfaccia" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "Sfondo" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 msgid "background" msgstr "sfondo" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "Primo piano" -#: gitk:11404 +#: gitk:11425 msgid "foreground" msgstr "primo piano" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "Diff: vecchie linee" -#: gitk:11408 +#: gitk:11429 msgid "diff old lines" msgstr "vecchie linee" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "Diff: nuove linee" -#: gitk:11413 +#: gitk:11434 msgid "diff new lines" msgstr "nuove linee" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "Diff: intestazione della sezione" -#: gitk:11419 +#: gitk:11440 msgid "diff hunk header" msgstr "intestazione della sezione" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "Sfondo riga selezionata" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "sfondo riga selezionata" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "Sfondo" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "Carattere: premere per scegliere" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "Carattere principale" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Carattere per differenze" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "Carattere per interfaccia utente" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Preferenze gitk" -#: gitk:11473 +#: gitk:11494 #, fuzzy msgid "General" msgstr "Genera" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: scegliere un colore per %s" -#: gitk:12242 +#: gitk:12059 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" + +#: gitk:12269 msgid "Cannot find a git repository here." msgstr "Archivio git non trovato." -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Argomento ambiguo: '%s' è sia revisione che nome di file" -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "Gitk: argomenti errati:" -#: gitk:12405 -msgid "Command line" -msgstr "Linea di comando" - #~ msgid "next" #~ msgstr "succ" diff --git a/gitk-git/po/ja.po b/gitk-git/po/ja.po index db47a4c2b6..8bbc67f6b5 100644 --- a/gitk-git/po/ja.po +++ b/gitk-git/po/ja.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" +"POT-Creation-Date: 2015-05-17 14:32+1000\n" "PO-Revision-Date: 2009-11-06 01:45+0900\n" "Last-Translator: Mizar \n" "Language-Team: Japanese\n" @@ -26,7 +26,7 @@ msgstr "マージされていないファイルのリストを取得できませ msgid "Color words" msgstr "" -#: gitk:217 gitk:2381 gitk:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "" @@ -60,14 +60,18 @@ msgstr "git log 実行エラー:" msgid "Reading" msgstr "読み込み中" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "コミット読み込み中..." -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "コミットが選択されていません" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "コマンド行" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "git log の出力を解析できません:" @@ -76,16 +80,12 @@ msgstr "git log の出力を解析できません:" msgid "No commit information available" msgstr "有効なコミットの情報がありません" -#: gitk:1897 -msgid "mc" -msgstr "mc" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "OK" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "キャンセル" @@ -137,15 +137,15 @@ msgstr "ビュー編集..." msgid "Delete view" msgstr "ビュー削除" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "全てのファイル" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "ビュー" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "gitk について" @@ -157,7 +157,7 @@ msgstr "キーバインディング" msgid "Help" msgstr "ヘルプ" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "SHA1 ID:" @@ -173,53 +173,53 @@ msgstr "検索" msgid "commit" msgstr "コミット" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "含む:" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "パスの一部:" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "追加/除去する文字列:" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "英字の大小を区別する" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "英字の大小を区別しない" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "正規表現" -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "全ての項目" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "ヘッドライン" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "コメント" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "作者" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "コミット者" @@ -247,7 +247,7 @@ msgstr "文脈行数" msgid "Ignore space change" msgstr "空白の違いを無視" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "" @@ -259,102 +259,110 @@ msgstr "パッチ" msgid "Tree" msgstr "ツリー" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "これと選択したコミットのdiffを見る" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "選択したコミットとこれのdiffを見る" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "パッチ作成" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "タグ生成" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "コミットをファイルに書き出す" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "新規ブランチ生成" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "このコミットをチェリーピックする" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "ブランチのHEADをここにリセットする" -#: gitk:2624 +#: gitk:2625 msgid "Mark this commit" msgstr "このコミットにマークをつける" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "マークを付けた所に戻る" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "これとマークをつけた所との子孫を見つける" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "マークを付けたコミットと比較する" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 #, fuzzy msgid "Diff this -> marked commit" msgstr "これと選択したコミットのdiffを見る" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 #, fuzzy msgid "Diff marked commit -> this" msgstr "選択したコミットとこれのdiffを見る" -#: gitk:2630 +#: gitk:2631 #, fuzzy msgid "Revert this commit" msgstr "このコミットにマークをつける" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "このブランチをチェックアウトする" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "このブランチを除去する" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "" + +#: gitk:2656 msgid "Highlight this too" msgstr "これもハイライトさせる" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "これだけをハイライトさせる" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "外部diffツール" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "親コミットから blame をかける" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "" + +#: gitk:2667 msgid "Show origin of this line" msgstr "この行の出自を表示する" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "この行に git gui で blame をかける" -#: gitk:3011 +#: gitk:3014 #, fuzzy msgid "" "\n" @@ -371,315 +379,320 @@ msgstr "" "\n" "使用および再配布は GNU General Public License に従ってください" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "閉じる" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Gitk キーバインディング" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Gitk キーバインディング:" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\t終了" -#: gitk:3046 +#: gitk:3049 #, fuzzy, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-F>\t\t検索" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\t最初のコミットに移動" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\t最後のコミットに移動" -#: gitk:3049 +#: gitk:3052 #, fuzzy msgid ", p, k\tMove up one commit" msgstr ", p, i\t一つ上のコミットに移動" -#: gitk:3050 +#: gitk:3053 #, fuzzy msgid ", n, j\tMove down one commit" msgstr ", n, k\t一つ下のコミットに移動" -#: gitk:3051 +#: gitk:3054 #, fuzzy msgid ", z, h\tGo back in history list" msgstr ", z, j\t履歴の前に戻る" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\t履歴の次へ進む" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" msgstr "" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tコミットリストの一つ上のページに移動" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "\tコミットリストの一つ下のページに移動" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tコミットリストの一番上にスクロールする" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tコミットリストの一番下にスクロールする" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Up>\tコミットリストの一つ下の行にスクロールする" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Down>\tコミットリストの一つ下の行にスクロールする" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-PageUp>\tコミットリストの上のページにスクロールする" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-PageDown>\tコミットリストの下のページにスクロールする" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "\t後方を検索 (上方の・新しいコミット)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr "\t前方を検索(下方の・古いコミット)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\tdiff画面を上のページにスクロールする" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tdiff画面を上のページにスクロールする" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\t\tdiff画面を下のページにスクロールする" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tdiff画面を上に18行スクロールする" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tdiff画面を下に18行スクロールする" -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\t検索" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\t次を検索して移動" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\t次を検索して移動" -#: gitk:3072 +#: gitk:3075 +#, fuzzy +msgid "g\t\tGo to commit" +msgstr "\t\t最後のコミットに移動" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "/\t\t検索ボックスにフォーカス" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\t前を検索して移動" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\t次のファイルにdiff画面をスクロールする" -#: gitk:3075 +#: gitk:3079 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tdiff画面の次を検索" -#: gitk:3076 +#: gitk:3080 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tdiff画面の前を検索" -#: gitk:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-KP+>\t文字サイズを拡大" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-plus>\t文字サイズを拡大" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-KP->\t文字サイズを縮小" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-minus>\t文字サイズを縮小" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\t更新" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "一時ディレクトリ %s 生成時エラー:" -#: gitk:3568 +#: gitk:3572 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "\"%s\" のエラーが %s に発生:" -#: gitk:3631 +#: gitk:3635 msgid "command failed:" msgstr "コマンド失敗:" -#: gitk:3780 +#: gitk:3784 msgid "No such commit" msgstr "そのようなコミットはありません" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "git gui blame: コマンド失敗:" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "マージする HEAD を読み込めません: %s" -#: gitk:3833 +#: gitk:3837 #, tcl-format msgid "Error reading index: %s" msgstr "インデックス読み込みエラー: %s" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "git blame を始められません: %s" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "検索中" -#: gitk:3893 +#: gitk:3897 #, tcl-format msgid "Error running git blame: %s" msgstr "git blame 実行エラー: %s" -#: gitk:3921 +#: gitk:3925 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "コミット %s に由来するその行は、このビューに表示されていません" -#: gitk:3935 +#: gitk:3939 msgid "External diff viewer failed:" msgstr "外部diffビューアが失敗:" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Gitk ビュー定義" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "このビューを記憶する" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "リファレンス(スペース区切りのリスト):" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "ブランチ&タグ:" -#: gitk:4060 +#: gitk:4077 msgid "All refs" msgstr "全てのリファレンス" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "全ての(ローカルな)ブランチ" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "全てのタグ" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "全てのリモート追跡ブランチ" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "コミット情報(正規表現):" -#: gitk:4065 +#: gitk:4082 msgid "Author:" msgstr "作者:" -#: gitk:4066 +#: gitk:4083 msgid "Committer:" msgstr "コミット者:" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "コミットメッセージ:" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" msgstr "コミット情報の全ての条件に一致" -#: gitk:4069 +#: gitk:4086 #, fuzzy -msgid "Matches none Commit Info criteria" +msgid "Matches no Commit Info criteria" msgstr "コミット情報の全ての条件に一致" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "変更したファイル:" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "固定文字列" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "正規表現" -#: gitk:4073 +#: gitk:4090 msgid "Search string:" msgstr "検索文字列:" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" @@ -687,202 +700,202 @@ msgstr "" "コミット日時 (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" -#: gitk:4075 +#: gitk:4092 msgid "Since:" msgstr "期間の始め:" -#: gitk:4076 +#: gitk:4093 msgid "Until:" msgstr "期間の終わり:" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "制限・省略するリビジョンの数(正の整数):" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "表示する数:" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "省略する数:" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "その他のオプション:" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "厳密に日付順で並び替え" -#: gitk:4082 +#: gitk:4099 msgid "Mark branch sides" msgstr "側枝マーク" -#: gitk:4083 +#: gitk:4100 msgid "Limit to first parent" msgstr "最初の親に制限" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "簡易な履歴" -#: gitk:4085 +#: gitk:4102 msgid "Additional arguments to git log:" msgstr "git log への追加の引数:" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "含まれるファイル・ディレクトリを一行ごとに入力:" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "コミット追加コマンド:" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "Gitk: ビュー編集" -#: gitk:4219 +#: gitk:4236 msgid "-- criteria for selecting revisions" msgstr "― リビジョンの選択条件" -#: gitk:4224 +#: gitk:4241 #, fuzzy msgid "View Name" msgstr "ビュー名:" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "適用 (F5)" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "コミット選択引数のエラー:" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "無し" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "子孫" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "非子孫" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "祖先" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "非祖先" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "ステージされた、コミット前のローカルな変更" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "ステージされていない、コミット前のローカルな変更" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "多数" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "タグ:" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "親" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "子" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "ブランチ" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "下位" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "上位" -#: gitk:7947 +#: gitk:7966 #, tcl-format msgid "Error getting diffs: %s" msgstr "diff取得エラー: %s" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Goto:" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "%s を含む SHA1 ID は複数存在します" -#: gitk:8659 +#: gitk:8678 #, tcl-format msgid "Revision %s is not known" msgstr "リビジョン %s は不明です" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "SHA1 id %s は不明です" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "リビジョン %s は現在のビューにはありません" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "日付" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "子" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "%s ブランチをここにリセットする" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "切り離されたHEAD: リセットできません" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "コミットマージをスキップ: " -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 msgid "Error getting patch ID for " msgstr "パッチ取得エラー: ID " -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr " - 停止\n" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 msgid "Commit " msgstr "コミット " -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " @@ -890,7 +903,7 @@ msgstr "" " は下記のパッチと同等\n" " " -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " @@ -898,7 +911,7 @@ msgstr "" " 下記からのdiff\n" " " -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" @@ -906,131 +919,131 @@ msgstr "" "コミットのdiff:\n" "\n" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr " には %s の子があります - 停止\n" -#: gitk:9066 +#: gitk:9085 #, tcl-format msgid "Error writing commit to file: %s" msgstr "ファイルへのコミット書き出しエラー: %s" -#: gitk:9072 +#: gitk:9091 #, tcl-format msgid "Error diffing commits: %s" msgstr "コミットのdiff実行エラー: %s" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Top" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "From" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "To" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "パッチ生成" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "From:" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "To:" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "逆" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "出力ファイル:" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "生成" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "パッチ生成エラー:" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "ID:" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "タグ名:" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "" -#: gitk:9251 +#: gitk:9270 #, fuzzy msgid "Tag message:" msgstr "タグ名:" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "生成" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "タグの名称が指定されていません" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "タグ \"%s\" は既に存在します" -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "タグ生成エラー:" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "コマンド:" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "書き出し" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "コミット書き出しエラー:" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "名前:" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "新しいブランチの名前を指定してください" -#: gitk:9444 +#: gitk:9463 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "ブランチ '%s' は既に存在します。上書きしますか?" -#: gitk:9511 +#: gitk:9530 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "" "コミット %s は既にブランチ %s に含まれています ― 本当にこれを再適用しますか?" -#: gitk:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "チェリーピック中" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1040,7 +1053,7 @@ msgstr "" "あなたの変更に commit, reset, stash のいずれかを行ってからやり直してくださ" "い。" -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1048,22 +1061,22 @@ msgstr "" "マージの衝突によってチェリーピックは失敗しました。\n" "この解決のために git citool を実行したいですか?" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "何の変更もコミットされていません" -#: gitk:9574 +#: gitk:9593 #, fuzzy, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "" "コミット %s は既にブランチ %s に含まれています ― 本当にこれを再適用しますか?" -#: gitk:9579 +#: gitk:9598 #, fuzzy msgid "Reverting" msgstr "リセット中" -#: gitk:9587 +#: gitk:9606 #, fuzzy, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1073,7 +1086,7 @@ msgstr "" "あなたの変更に commit, reset, stash のいずれかを行ってからやり直してくださ" "い。" -#: gitk:9591 +#: gitk:9610 #, fuzzy msgid "" "Revert failed because of merge conflict.\n" @@ -1082,28 +1095,28 @@ msgstr "" "マージの衝突によってチェリーピックは失敗しました。\n" "この解決のために git citool を実行したいですか?" -#: gitk:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "確認を取り消す" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "ブランチ %s を %s にリセットしますか?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Reset タイプ:" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Soft: 作業ツリーもインデックスもそのままにする" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Mixed: 作業ツリーをそのままにして、インデックスをリセット" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1111,19 +1124,19 @@ msgstr "" "Hard: 作業ツリーやインデックスをリセット\n" "(「全ての」ローカルな変更を破棄)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "リセット中" -#: gitk:9724 +#: gitk:9743 msgid "Checking out" msgstr "チェックアウト" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "現在チェックアウトされているブランチを削除することはできません" -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1132,16 +1145,16 @@ msgstr "" "ブランチ %s には他のブランチに存在しないコミットがあります。\n" "本当にブランチ %s を削除しますか?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "タグとHEAD: %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "フィルター" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1149,220 +1162,225 @@ msgstr "" "コミット構造情報読み込みエラー; ブランチ及び上位/下位のタグ情報が不完全である" "ようです。" -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "タグ" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "ID" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Gitk フォント選択" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "B" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "I" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "コミットリスト表示オプション" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "最大グラフ幅(線の本数)" -#: gitk:11334 +#: gitk:11355 #, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "最大グラフ幅(ペインに対する%)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "ローカルな変更を表示" -#: gitk:11340 +#: gitk:11361 #, fuzzy msgid "Auto-select SHA1 (length)" msgstr "SHA1 の自動選択" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "リモートリファレンスを隠す" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "diff表示オプション" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "タブ空白幅" -#: gitk:11353 +#: gitk:11374 #, fuzzy msgid "Display nearby tags/heads" msgstr "近くのタグを表示する" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "diff をリストのパスに制限" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "ファイルごとのエンコーディングのサポート" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "外部diffツール" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "選択..." -#: gitk:11374 +#: gitk:11395 #, fuzzy msgid "General options" msgstr "パッチ生成" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "色: ボタンを押して選択" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "インターフェイス" -#: gitk:11396 +#: gitk:11417 msgid "interface" msgstr "インターフェイス" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "背景" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 msgid "background" msgstr "背景" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "前景" -#: gitk:11404 +#: gitk:11425 msgid "foreground" msgstr "前景" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "Diff: 旧バージョン" -#: gitk:11408 +#: gitk:11429 msgid "diff old lines" msgstr "diff 旧バージョン" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "Diff: 新バージョン" -#: gitk:11413 +#: gitk:11434 msgid "diff new lines" msgstr "diff 新バージョン" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "Diff: hunkヘッダ" -#: gitk:11419 +#: gitk:11440 msgid "diff hunk header" msgstr "diff hunkヘッダ" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "マーク行の背景" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "マーク行の背景" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "選択の背景" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "フォント: ボタンを押して選択" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "主フォント" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Diff表示用フォント" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "UI用フォント" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Gitk 設定" -#: gitk:11473 +#: gitk:11494 #, fuzzy msgid "General" msgstr "生成" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: 「%s」 の色を選択" -#: gitk:12242 +#: gitk:12059 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" + +#: gitk:12269 msgid "Cannot find a git repository here." msgstr "ここにはgitリポジトリがありません。" -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "あいまいな引数 '%s': リビジョンとファイル名の両方に解釈できます" -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "gitkへの不正な引数:" -#: gitk:12405 -msgid "Command line" -msgstr "コマンド行" +#~ msgid "mc" +#~ msgstr "mc" #~ msgid "SHA1 ID: " #~ msgstr "SHA1 ID: " diff --git a/gitk-git/po/pt_br.po b/gitk-git/po/pt_br.po index 80d24bcad8..07e5d63b65 100644 --- a/gitk-git/po/pt_br.po +++ b/gitk-git/po/pt_br.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" +"POT-Creation-Date: 2015-05-17 14:32+1000\n" "PO-Revision-Date: 2010-12-06 23:39-0200\n" "Last-Translator: Alexandre Erwin Ittner \n" "Language-Team: Brazilian Portuguese <>\n" @@ -26,7 +26,7 @@ msgstr "Não foi possível obter a lista dos arquivos não mesclados:" msgid "Color words" msgstr "" -#: gitk:217 gitk:2381 gitk:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "" @@ -60,14 +60,18 @@ msgstr "Erro ao executar git log:" msgid "Reading" msgstr "Lendo" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "Lendo revisões..." -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "Nenhuma revisão foi selecionada" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "Linha de comando" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "Não foi possível interpretar a saída do \"git log\":" @@ -76,16 +80,12 @@ msgstr "Não foi possível interpretar a saída do \"git log\":" msgid "No commit information available" msgstr "Não há informações disponíveis sobre a revisão" -#: gitk:1897 -msgid "mc" -msgstr "mc" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "Ok" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "Cancelar" @@ -137,15 +137,15 @@ msgstr "Editar vista..." msgid "Delete view" msgstr "Apagar vista" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "Todos os arquivos" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "Exibir" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "Sobre o gitk" @@ -157,7 +157,7 @@ msgstr "Atalhos de teclado" msgid "Help" msgstr "Ajuda" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "SHA1 ID:" @@ -173,53 +173,53 @@ msgstr "Encontrar" msgid "commit" msgstr "Revisão" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "contendo:" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "envolvendo os caminhos:" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "Adicionando/removendo texto:" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "Exatamente" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "Ignorar maiúsculas/minúsculas" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "Expressão regular" -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "Todos os campos" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "Assunto" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "Descrição da revisão" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "Autor" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "Revisor" @@ -247,7 +247,7 @@ msgstr "Número de linhas de contexto" msgid "Ignore space change" msgstr "Ignorar mudanças de caixa" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "" @@ -259,102 +259,110 @@ msgstr "Diferenças" msgid "Tree" msgstr "Árvore" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "Comparar esta revisão com a selecionada" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "Comparar a revisão selecionada com esta" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "Criar patch" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "Criar etiqueta" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "Salvar revisão para um arquivo" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "Criar novo ramo" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "Fazer cherry-pick desta revisão" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "Redefinir HEAD para cá" -#: gitk:2624 +#: gitk:2625 msgid "Mark this commit" msgstr "Marcar esta revisão" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "Voltar à marca" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "Encontrar descendente e marcar" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "Comparar com a revisão marcada" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 #, fuzzy msgid "Diff this -> marked commit" msgstr "Comparar esta revisão com a selecionada" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 #, fuzzy msgid "Diff marked commit -> this" msgstr "Comparar a revisão selecionada com esta" -#: gitk:2630 +#: gitk:2631 #, fuzzy msgid "Revert this commit" msgstr "Marcar esta revisão" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "Efetuar checkout deste ramo" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "Excluir este ramo" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "" + +#: gitk:2656 msgid "Highlight this too" msgstr "Marcar este também" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "Marcar apenas este" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "Diff externo" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "Anotar revisão anterior" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "" + +#: gitk:2667 msgid "Show origin of this line" msgstr "Exibir origem desta linha" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "Executar 'git blame' nesta linha" -#: gitk:3011 +#: gitk:3014 #, fuzzy msgid "" "\n" @@ -371,315 +379,320 @@ msgstr "" "\n" "Uso e distribuição segundo os termos da Licença Pública Geral GNU" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "Fechar" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Atalhos de teclado" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Atalhos de teclado:" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tSair" -#: gitk:3046 +#: gitk:3049 #, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-W>\t\tFechar janela" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\tIr para a primeira revisão" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\tIr para a última revisão" -#: gitk:3049 +#: gitk:3052 #, fuzzy msgid ", p, k\tMove up one commit" msgstr ", p, i\tIr para uma revisão acima" -#: gitk:3050 +#: gitk:3053 #, fuzzy msgid ", n, j\tMove down one commit" msgstr ", n, k\tIr para uma revisão abaixo" -#: gitk:3051 +#: gitk:3054 #, fuzzy msgid ", z, h\tGo back in history list" msgstr ", z, j\tVoltar no histórico" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tAvançar no histórico" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" msgstr "" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tSubir uma página na lista de revisões" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "\tDescer uma página na lista de revisões" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tRolar para o início da lista de revisões" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tRolar para o final da lista de revisões" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Up>\tRolar uma linha acima na lista de revisões" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Down>\tRolar uma linha abaixo na lista de revisões" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-PageUp>\tRolar uma página acima na lista de revisões" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-PageDown>\tRolar uma página abaixo na lista de revisões" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "\tProcurar próxima (revisões mas recentes)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr "\tProcurar anterior (revisões mais antigas)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\tRola alterações uma página acima" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tRolar alterações uma página abaixo" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\t\tRolar alterações uma página abaixo" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tRolar alterações 18 linhas acima" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tRolar alterações 18 linhas abaixo" -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tProcurar" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tIr para a próxima ocorrência" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\tIr para a próxima ocorrência" -#: gitk:3072 +#: gitk:3075 +#, fuzzy +msgid "g\t\tGo to commit" +msgstr "\t\tIr para a última revisão" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "/\t\tPor foco na caixa de busca" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\tIr para a ocorrência anterior" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tRolar alterações para o próximo arquivo" -#: gitk:3075 +#: gitk:3079 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tProcurar a próxima ocorrência na lista de alterações" -#: gitk:3076 +#: gitk:3080 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tProcurar ocorrência anterior na lista de alterações" -#: gitk:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-KP+>\tAumentar tamanho da fonte" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-plus>\tAumentar tamanho da fonte" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-KP->\tReduzir tamanho da fonte" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-minus>\tReduzir tamanho da fonte" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\tAtualizar" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Erro ao criar o diretório temporário %s:" -#: gitk:3568 +#: gitk:3572 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Erro ao ler \"%s\" de %s:" -#: gitk:3631 +#: gitk:3635 msgid "command failed:" msgstr "O comando falhou:" -#: gitk:3780 +#: gitk:3784 msgid "No such commit" msgstr "Revisão não encontrada" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "Comando 'git gui blame' falhou:" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Impossível ler merge head: %s" -#: gitk:3833 +#: gitk:3837 #, tcl-format msgid "Error reading index: %s" msgstr "Erro ao ler o índice: %s" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "Não foi possível inciar o 'git blame': %s" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "Procurando" -#: gitk:3893 +#: gitk:3897 #, tcl-format msgid "Error running git blame: %s" msgstr "Erro ao executar 'git blame': %s" -#: gitk:3921 +#: gitk:3925 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "Esta linha vem da revisão %s, que não está nesta vista" -#: gitk:3935 +#: gitk:3939 msgid "External diff viewer failed:" msgstr "Erro do visualizador de alterações externo:" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Definir vista" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "Lembrar esta vista" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "Referências (separar a lista com um espaço):" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "Ramos & etiquetas:" -#: gitk:4060 +#: gitk:4077 msgid "All refs" msgstr "Todas as referências" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "Todos os ramos locais" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "Todas as etiquetas" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "Todos os ramos de rastreio" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "Informações da revisão (expressões regulares):" -#: gitk:4065 +#: gitk:4082 msgid "Author:" msgstr "Autor:" -#: gitk:4066 +#: gitk:4083 msgid "Committer:" msgstr "Revisor:" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "Descrição da revisão:" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" msgstr "Coincidir todos os critérios de informações da revisão" -#: gitk:4069 +#: gitk:4086 #, fuzzy -msgid "Matches none Commit Info criteria" +msgid "Matches no Commit Info criteria" msgstr "Coincidir todos os critérios de informações da revisão" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "Mudanças para os arquivos:" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "Texto fixo" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "Expressão regular" -#: gitk:4073 +#: gitk:4090 msgid "Search string:" msgstr "Texto de busca" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" @@ -687,201 +700,201 @@ msgstr "" "Datas de revisão (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" -#: gitk:4075 +#: gitk:4092 msgid "Since:" msgstr "Desde:" -#: gitk:4076 +#: gitk:4093 msgid "Until:" msgstr "Até:" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "Limitar e/ou ignorar um número de revisões (inteiro positivo):" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "Número para mostrar:" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "Número para ignorar:" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "Opções diversas:" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "Ordenar estritamente pela data" -#: gitk:4082 +#: gitk:4099 msgid "Mark branch sides" msgstr "Marcar os dois lados do ramo" -#: gitk:4083 +#: gitk:4100 msgid "Limit to first parent" msgstr "Limitar ao primeiro antecessor" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "Histórico simplificado" -#: gitk:4085 +#: gitk:4102 msgid "Additional arguments to git log:" msgstr "Argumentos adicionais para o 'git log':" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "Arquivos e diretórios para incluir, um por linha" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "Comando para gerar mais revisões para incluir:" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "Gitk: editar vista" -#: gitk:4219 +#: gitk:4236 msgid "-- criteria for selecting revisions" msgstr "-- critérios para selecionar revisões" -#: gitk:4224 +#: gitk:4241 msgid "View Name" msgstr "Nome da vista" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "Aplicar (F5)" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "Erro nos argumentos de seleção de revisões:" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "Nenhum" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "Descendente de" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "Não descendente de" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "Antecessor de" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "Não antecessor de" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "Mudanças locais marcadas, porém não salvas" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "Mudanças locais não marcadas" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "muitas" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "Etiquetas:" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "Antecessor" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "Descendente" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "Ramo" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "Segue" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "Precede" -#: gitk:7947 +#: gitk:7966 #, tcl-format msgid "Error getting diffs: %s" msgstr "Erro ao obter diferenças: %s" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Ir para:" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "O id SHA1 %s é ambíguo" -#: gitk:8659 +#: gitk:8678 #, tcl-format msgid "Revision %s is not known" msgstr "Revisão %s desconhecida" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "Id SHA1 %s desconhecido" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "A revisão %s não está na vista atual" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "Data" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "Descendentes" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "Redefinir ramo %s para este ponto" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "Detached head: impossível redefinir" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "Saltando revisão de mesclagem" -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 msgid "Error getting patch ID for " msgstr "Erro ao obter patch ID para" -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr "- parando\n" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 msgid "Commit " msgstr "Revisão" -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " @@ -889,13 +902,13 @@ msgstr "" "é o mesmo patch que\n" " " -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " msgstr "difere de" -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" @@ -903,129 +916,129 @@ msgstr "" "Diferença de revisões:\n" "\n" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr "possui %s descendentes - parando\n" -#: gitk:9066 +#: gitk:9085 #, tcl-format msgid "Error writing commit to file: %s" msgstr "Erro ao salvar revisão para o arquivo: %s" -#: gitk:9072 +#: gitk:9091 #, tcl-format msgid "Error diffing commits: %s" msgstr "Erro ao comparar revisões: %s" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Início" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "De" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "Para" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "Gerar patch" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "De:" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "Para:" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "Inverter" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "Arquivo de saída:" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "Gerar" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "Erro ao criar patch:" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "ID:" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "Nome da etiqueta:" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "A descrição da etiqueta é opcional" -#: gitk:9251 +#: gitk:9270 msgid "Tag message:" msgstr "Descrição da etiqueta" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "Criar" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "Nome da etiqueta não indicado" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "Etiqueta \"%s\" já existe" -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "Erro ao criar etiqueta:" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "Comando:" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "Exportar" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "Erro ao exportar revisão" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "Nome:" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "Indique um nome para o novo ramo" -#: gitk:9444 +#: gitk:9463 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "O ramo \"%s\" já existe. Sobrescrever?" -#: gitk:9511 +#: gitk:9530 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "Revisão %s já inclusa no ramo %s -- você realmente deseja reaplicá-la?" -#: gitk:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "Cherry-picking" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1035,7 +1048,7 @@ msgstr "" "Salve a uma revisão, redefina ou armazene (stash) suas mudanças e tente " "novamente." -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1043,21 +1056,21 @@ msgstr "" "O cherry-pick falhou porque houve um conflito na mesclagem.\n" "Executar o 'git citool' para resolvê-lo?" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "Nenhuma revisão foi salva" -#: gitk:9574 +#: gitk:9593 #, fuzzy, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "Revisão %s já inclusa no ramo %s -- você realmente deseja reaplicá-la?" -#: gitk:9579 +#: gitk:9598 #, fuzzy msgid "Reverting" msgstr "Redefinindo" -#: gitk:9587 +#: gitk:9606 #, fuzzy, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1067,7 +1080,7 @@ msgstr "" "Salve a uma revisão, redefina ou armazene (stash) suas mudanças e tente " "novamente." -#: gitk:9591 +#: gitk:9610 #, fuzzy msgid "" "Revert failed because of merge conflict.\n" @@ -1076,28 +1089,28 @@ msgstr "" "O cherry-pick falhou porque houve um conflito na mesclagem.\n" "Executar o 'git citool' para resolvê-lo?" -#: gitk:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "Confirmar redefinição" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Você realmente deseja redefinir o ramo %s para %s?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Tipo de redefinição" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Soft: deixa a árvore de trabalho e o índice intocados" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Misto: Deixa a árvore de trabalho intocada, redefine o índice" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1105,19 +1118,19 @@ msgstr "" "Hard: Redefine a árvore de trabalho e o índice\n" "(descarta TODAS as mudanças locais)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "Redefinindo" -#: gitk:9724 +#: gitk:9743 msgid "Checking out" msgstr "Abrindo" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "Impossível excluir o ramo atualmente aberto" -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1126,16 +1139,16 @@ msgstr "" "As revisões do ramo \"%s\" não existem em nenhum outro ramo.\n" "Você realmente deseja excluir ramo \"%s\"?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "Referências: %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "Filtro" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1143,221 +1156,226 @@ msgstr "" "Erro ao ler a topologia das revisões; as informações dos ramos e etiquetas " "antecessoras/sucessoras estarão incompletas" -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "Etiqueta" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "Id" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Selecionar fontes do Gitk" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "B" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "I" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "Opções da lista de revisões" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "Largura máxima do grafo (linhas)" -#: gitk:11334 +#: gitk:11355 #, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "Largura máxima do grafo (% do painel)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "Exibir mudanças locais" -#: gitk:11340 +#: gitk:11361 #, fuzzy msgid "Auto-select SHA1 (length)" msgstr "Selecionar o SHA1 automaticamente" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "Ocultar referências remotas" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "Opções de exibição das alterações" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "Espaços por tabulação" -#: gitk:11353 +#: gitk:11374 #, fuzzy msgid "Display nearby tags/heads" msgstr "Exibir etiquetas próximas" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "Limitar diferenças aos caminhos listados" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "Usar codificações distintas por arquivo" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "Ferramenta 'diff' externa" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "Selecionar..." -#: gitk:11374 +#: gitk:11395 msgid "General options" msgstr "Opções gerais" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "Usar temas para as janelas" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "(exige reinicialização)" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "(atualmente indisponível)" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "Cores: clique para escolher" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "Interface" -#: gitk:11396 +#: gitk:11417 msgid "interface" msgstr "interface" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "Segundo plano" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 msgid "background" msgstr "segundo plano" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "Primeiro plano" -#: gitk:11404 +#: gitk:11425 msgid "foreground" msgstr "primeiro plano" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "Diff: linhas excluídas" -#: gitk:11408 +#: gitk:11429 msgid "diff old lines" msgstr "linhas excluídas" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "Diff: linhas adicionadas" -#: gitk:11413 +#: gitk:11434 msgid "diff new lines" msgstr "linhas adicionadas" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "Diff: cabeçalho do bloco" -#: gitk:11419 +#: gitk:11440 msgid "diff hunk header" msgstr "cabeçalho do bloco" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "2º plano da linha marcada" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "segundo plano da linha marcada" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "2º plano da seleção" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "Fontes: clique para escolher" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "Fonte principal" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Fonte da lista de mudanças" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "Fonte da interface" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Preferências do Gitk" -#: gitk:11473 +#: gitk:11494 #, fuzzy msgid "General" msgstr "Gerar" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: selecionar cor para %s" -#: gitk:12242 +#: gitk:12059 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" + +#: gitk:12269 msgid "Cannot find a git repository here." msgstr "Não há nenhum repositório git aqui." -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "" "O argumento \"%s\" é ambíguo (especifica tanto uma revisão e um nome de " "arquivo)" -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "Argumentos incorretos para o gitk:" -#: gitk:12405 -msgid "Command line" -msgstr "Linha de comando" +#~ msgid "mc" +#~ msgstr "mc" #~ msgid "next" #~ msgstr "Próximo" diff --git a/gitk-git/po/ru.po b/gitk-git/po/ru.po index faba6721c1..f1bac879e3 100644 --- a/gitk-git/po/ru.po +++ b/gitk-git/po/ru.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: gitk\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" +"POT-Creation-Date: 2015-05-17 14:32+1000\n" "PO-Revision-Date: 2009-04-24 16:00+0200\n" "Last-Translator: Alex Riesen \n" "Language-Team: Russian\n" @@ -22,7 +22,7 @@ msgstr "Невозможно получить список файлов неза msgid "Color words" msgstr "" -#: gitk:217 gitk:2381 gitk:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "" @@ -56,14 +56,18 @@ msgstr "Ошибка запуска git log:" msgid "Reading" msgstr "Чтение" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "Чтение версий..." -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "Ничего не выбрано" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "Командная строка" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "Ошибка обработки вывода команды git log:" @@ -72,16 +76,12 @@ msgstr "Ошибка обработки вывода команды git log:" msgid "No commit information available" msgstr "Нет информации о состоянии" -#: gitk:1897 -msgid "mc" -msgstr "" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "Ok" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "Отмена" @@ -133,15 +133,15 @@ msgstr "Редактировать представление..." msgid "Delete view" msgstr "Удалить представление" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "Все файлы" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "Представление" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "О gitk" @@ -153,7 +153,7 @@ msgstr "Назначения клавиатуры" msgid "Help" msgstr "Подсказка" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "SHA1 ID:" @@ -169,53 +169,53 @@ msgstr "Поиск" msgid "commit" msgstr "состояние" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "содержащее:" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "касательно файлов:" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "добавив/удалив строку:" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "Точно" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "Игнорировать большие/маленькие" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "Регулярные выражения" -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "Во всех полях" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "Заголовок" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "Комментарии" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "Автор" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "Сохранивший состояние" @@ -243,7 +243,7 @@ msgstr "Строк контекста" msgid "Ignore space change" msgstr "Игнорировать пробелы" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "" @@ -255,103 +255,111 @@ msgstr "Патч" msgid "Tree" msgstr "Файлы" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "Сравнить это состояние с выделенным" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "Сравнить выделенное с этим состоянием" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "Создать патч" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "Создать метку" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "Сохранить изменения в файл" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "Создать ветвь" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "Скопировать это состояние" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "Установить HEAD на это состояние" -#: gitk:2624 +#: gitk:2625 #, fuzzy msgid "Mark this commit" msgstr "Скопировать это состояние" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 #, fuzzy msgid "Diff this -> marked commit" msgstr "Сравнить это состояние с выделенным" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 #, fuzzy msgid "Diff marked commit -> this" msgstr "Сравнить выделенное с этим состоянием" -#: gitk:2630 +#: gitk:2631 #, fuzzy msgid "Revert this commit" msgstr "Скопировать это состояние" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "Перейти на эту ветвь" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "Удалить эту ветвь" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "" + +#: gitk:2656 msgid "Highlight this too" msgstr "Подсветить этот тоже" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "Подсветить только этот" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "Программа сравнения" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "Аннотировать родительское состояние" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "" + +#: gitk:2667 msgid "Show origin of this line" msgstr "Показать источник этой строки" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "Запустить git gui blame для этой строки" -#: gitk:3011 +#: gitk:3014 #, fuzzy msgid "" "\n" @@ -368,667 +376,672 @@ msgstr "" "\n" "Использование и распространение согласно условиям GNU General Public License" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "Закрыть" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Назначения клавиатуры в Gitk" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Назначения клавиатуры в Gitk:" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tЗавершить" -#: gitk:3046 +#: gitk:3049 #, fuzzy, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-F>\t\tПоиск" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\tПерейти к первому состоянию" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\tПерейти к последнему состоянию" -#: gitk:3049 +#: gitk:3052 #, fuzzy msgid ", p, k\tMove up one commit" msgstr ", p, i\tПерейти к следующему состоянию" -#: gitk:3050 +#: gitk:3053 #, fuzzy msgid ", n, j\tMove down one commit" msgstr ", n, k\tПерейти к предыдущему состоянию" -#: gitk:3051 +#: gitk:3054 #, fuzzy msgid ", z, h\tGo back in history list" msgstr ", z, j\tПоказать ранее посещённое состояние" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tПоказать следующее посещённое состояние" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" msgstr "" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tПерейти на страницу выше в списке состояний" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "\tПерейти на страницу ниже в списке состояний" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tПоказать начало списка состояний" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tПоказать конец списка состояний" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Up>\tПровернуть список состояний вверх" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Down>\tПровернуть список состояний вниз" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-PageUp>\tПровернуть список состояний на страницу вверх" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-PageDown>\tПровернуть список состояний на страницу вниз" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "\tПоиск в обратном порядке (вверх, среди новых состояний)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr "\tПоиск (вниз, среди старых состояний)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\tПрокрутить список изменений на страницу выше" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tПрокрутить список изменений на страницу выше" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\t\tПрокрутить список изменений на страницу ниже" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tПрокрутить список изменений на 18 строк вверх" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tПрокрутить список изменений на 18 строк вниз" -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tПоиск" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tПерейти к следующему найденному состоянию" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\tПерейти к следующему найденному состоянию" -#: gitk:3072 +#: gitk:3075 +#, fuzzy +msgid "g\t\tGo to commit" +msgstr "\t\tПерейти к последнему состоянию" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "/\t\tПерейти к полю поиска" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\tПерейти к предыдущему найденному состоянию" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tПрокрутить список изменений к следующему файлу" -#: gitk:3075 +#: gitk:3079 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tПродолжить поиск в списке изменений" -#: gitk:3076 +#: gitk:3080 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tПерейти к предыдущему найденному тексту в списке изменений" -#: gitk:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-KP+>\tУвеличить размер шрифта" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-plus>\tУвеличить размер шрифта" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-KP->\tУменьшить размер шрифта" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-minus>\tУменьшить размер шрифта" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\tОбновить" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Ошибка создания временного каталога %s:" -#: gitk:3568 +#: gitk:3572 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Ошибка получения \"%s\" из %s:" -#: gitk:3631 +#: gitk:3635 msgid "command failed:" msgstr "ошибка выполнения команды:" -#: gitk:3780 +#: gitk:3784 msgid "No such commit" msgstr "Состояние не найдено" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "git gui blame: ошибка выполнения команды:" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Ошибка чтения MERGE_HEAD: %s" -#: gitk:3833 +#: gitk:3837 #, tcl-format msgid "Error reading index: %s" msgstr "Ошибка чтения индекса: %s" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "Ошибка запуска git blame: %s" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "Поиск" -#: gitk:3893 +#: gitk:3897 #, tcl-format msgid "Error running git blame: %s" msgstr "Ошибка выполнения git blame: %s" -#: gitk:3921 +#: gitk:3925 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "" "Эта строка принадлежит состоянию %s, которое не показано в этом представлении" -#: gitk:3935 +#: gitk:3939 msgid "External diff viewer failed:" msgstr "Ошибка выполнения программы сравнения:" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Gitk определение представлений" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "Запомнить представление" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "" -#: gitk:4060 +#: gitk:4077 #, fuzzy msgid "All refs" msgstr "Все файлы" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "" -#: gitk:4065 +#: gitk:4082 #, fuzzy msgid "Author:" msgstr "Автор" -#: gitk:4066 +#: gitk:4083 #, fuzzy msgid "Committer:" msgstr "Сохранивший состояние" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" msgstr "" -#: gitk:4069 -msgid "Matches none Commit Info criteria" +#: gitk:4086 +msgid "Matches no Commit Info criteria" msgstr "" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "" -#: gitk:4073 +#: gitk:4090 #, fuzzy msgid "Search string:" msgstr "Поиск" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" msgstr "" -#: gitk:4075 +#: gitk:4092 #, fuzzy msgid "Since:" msgstr "С даты:" -#: gitk:4076 +#: gitk:4093 #, fuzzy msgid "Until:" msgstr "По дату:" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "Строгая сортировка по дате" -#: gitk:4082 +#: gitk:4099 msgid "Mark branch sides" msgstr "Отметить стороны ветвей" -#: gitk:4083 +#: gitk:4100 msgid "Limit to first parent" msgstr "Ограничить первым предком" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "" -#: gitk:4085 +#: gitk:4102 #, fuzzy msgid "Additional arguments to git log:" msgstr "Включить состояния (аргументы для git-log):" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "Файлы и каталоги для ограничения истории, по одному на строку:" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "Дополнительная команда для списка состояний:" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "" -#: gitk:4219 +#: gitk:4236 #, fuzzy msgid "-- criteria for selecting revisions" msgstr "Ошибка в идентификаторе версии:" -#: gitk:4224 +#: gitk:4241 #, fuzzy msgid "View Name" msgstr "Представление" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "Применить (F5)" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "Ошибка в параметрах выбора состояний:" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "Ни одного" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "Порождённое" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "Не порождённое" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "Предок" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "Не предок" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "Изменения зарегистрированные в индексе, но не сохранённые" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "Изменения в рабочем каталоге, не зарегистрированные в индексе" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "Таги:" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "Предок" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "Потомок" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "Ветвь" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "Следует за" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "Предшествует" -#: gitk:7947 +#: gitk:7966 #, tcl-format msgid "Error getting diffs: %s" msgstr "Ошибка получения изменений: %s" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Перейти к:" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "Сокращённый SHA1 идентификатор %s неоднозначен" -#: gitk:8659 +#: gitk:8678 #, fuzzy, tcl-format msgid "Revision %s is not known" msgstr "SHA1 идентификатор %s не найден" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "SHA1 идентификатор %s не найден" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "Дата" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "Потомки" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "Установить ветвь %s на это состояние" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "Состояние не принадлежит ни одной ветви, переход невозможен" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "" -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 #, fuzzy msgid "Error getting patch ID for " msgstr "Ошибка создания патча:" -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr "" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 #, fuzzy msgid "Commit " msgstr "состояние" -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " msgstr "" -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " msgstr "" -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" msgstr "" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr "" -#: gitk:9066 +#: gitk:9085 #, fuzzy, tcl-format msgid "Error writing commit to file: %s" msgstr "Ошибка сохранения состояния:" -#: gitk:9072 +#: gitk:9091 #, fuzzy, tcl-format msgid "Error diffing commits: %s" msgstr "Ошибка сохранения состояния:" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Верх" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "От" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "До" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "Создать патч" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "От:" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "До:" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "В обратном порядке" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "Файл для сохранения:" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "Создать" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "Ошибка создания патча:" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "ID:" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "Имя метки:" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "" -#: gitk:9251 +#: gitk:9270 #, fuzzy msgid "Tag message:" msgstr "Имя метки:" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "Создать" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "Не задано имя метки" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "Метка \"%s\" уже существует" -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "Ошибка создания метки:" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "Команда:" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "Запись" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "Ошибка сохранения состояния:" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "Имя:" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "Укажите имя для новой ветви" -#: gitk:9444 +#: gitk:9463 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "Ветвь '%s' уже существует. Переписать?" -#: gitk:9511 +#: gitk:9530 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "Состояние %s уже принадлежит ветви %s. Продолжить операцию?" -#: gitk:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "Копирование изменений" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1037,7 +1050,7 @@ msgstr "" "Копирование невозможно из-за изменений в файле '%s'.\n" "Сохраните или отмените изменения и повторите операцию." -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1045,21 +1058,21 @@ msgstr "" "Копирование изменений невозможно из-за незавершённой операции слияния.\n" "Запустить git citool для завершения этой операции?" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "Изменения не сохранены" -#: gitk:9574 +#: gitk:9593 #, fuzzy, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "Состояние %s уже принадлежит ветви %s. Продолжить операцию?" -#: gitk:9579 +#: gitk:9598 #, fuzzy msgid "Reverting" msgstr "Установка" -#: gitk:9587 +#: gitk:9606 #, fuzzy, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1068,7 +1081,7 @@ msgstr "" "Копирование невозможно из-за изменений в файле '%s'.\n" "Сохраните или отмените изменения и повторите операцию." -#: gitk:9591 +#: gitk:9610 #, fuzzy msgid "" "Revert failed because of merge conflict.\n" @@ -1077,28 +1090,28 @@ msgstr "" "Копирование изменений невозможно из-за незавершённой операции слияния.\n" "Запустить git citool для завершения этой операции?" -#: gitk:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "Подтвердите операцию перехода" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Установить ветвь %s на состояние %s?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Тип операции перехода:" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Лёгкий: оставить рабочий каталог и индекс неизменными" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Смешанный: оставить рабочий каталог неизменным, установить индекс" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1106,19 +1119,19 @@ msgstr "" "Жесткий: переписать индекс и рабочий каталог\n" "(все изменения в рабочем каталоге будут потеряны)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "Установка" -#: gitk:9724 +#: gitk:9743 msgid "Checking out" msgstr "Переход" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "Активная ветвь не может быть удалена" -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1127,16 +1140,16 @@ msgstr "" "Состояния ветви %s больше не принадлежат никакой другой ветви.\n" "Действительно удалить ветвь %s?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "Метки и ветви: %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "Фильтровать" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1144,222 +1157,226 @@ msgstr "" "Ошибка чтения истории проекта; информация о ветвях и состояниях вокруг меток " "(до/после) может быть неполной." -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "Метка" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "Id" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Шрифт Gitk" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "Ж" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "К" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "Параметры показа списка состояний" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "Макс. ширина графа (строк)" -#: gitk:11334 +#: gitk:11355 #, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "Макс. ширина графа (% ширины панели)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "Показывать изменения в рабочем каталоге" -#: gitk:11340 +#: gitk:11361 #, fuzzy msgid "Auto-select SHA1 (length)" msgstr "Выделить SHA1" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "Параметры показа изменений" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "Ширина табуляции" -#: gitk:11353 +#: gitk:11374 #, fuzzy msgid "Display nearby tags/heads" msgstr "Показывать близкие метки" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "Ограничить показ изменений выбранными файлами" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "Поддержка кодировок в отдельных файлах" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "Программа для показа изменений" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "Выберите..." -#: gitk:11374 +#: gitk:11395 #, fuzzy msgid "General options" msgstr "Создать патч" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "Цвета: нажмите для выбора" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "" -#: gitk:11396 +#: gitk:11417 #, fuzzy msgid "interface" msgstr "Шрифт интерфейса" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "Фон" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 msgid "background" msgstr "фон" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "Передний план" -#: gitk:11404 +#: gitk:11425 msgid "foreground" msgstr "передний план" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "Изменения: старый текст" -#: gitk:11408 +#: gitk:11429 msgid "diff old lines" msgstr "старый текст изменения" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "Изменения: новый текст" -#: gitk:11413 +#: gitk:11434 msgid "diff new lines" msgstr "новый текст изменения" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "Изменения: заголовок блока" -#: gitk:11419 +#: gitk:11440 msgid "diff hunk header" msgstr "заголовок блока изменений" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "Фон выбранной строки" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "фон выбранной строки" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "Выберите фон" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "Шрифт: нажмите для выбора" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "Основной шрифт" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Шрифт показа изменений" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "Шрифт интерфейса" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Настройки Gitk" -#: gitk:11473 +#: gitk:11494 #, fuzzy msgid "General" msgstr "Создать" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: выберите цвет для %s" -#: gitk:12242 +#: gitk:12059 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" +"К сожалению gitk не может работать с этой версий Tcl/Tk.\n" +"Требуется как минимум Tcl/Tk 8.4." + +#: gitk:12269 msgid "Cannot find a git repository here." msgstr "Git-репозитарий не найден в текущем каталоге." -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Неоднозначный аргумент '%s': существует как версия и имя файла" -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "Неправильные аргументы для gitk:" -#: gitk:12405 -msgid "Command line" -msgstr "Командная строка" - #~ msgid "SHA1 ID: " #~ msgstr "SHA1:" @@ -1387,12 +1404,5 @@ msgstr "Командная строка" #~ msgid "Tag/Head %s is not known" #~ msgstr "Метка или ветвь %s не найдена" -#~ msgid "" -#~ "Sorry, gitk cannot run with this version of Tcl/Tk.\n" -#~ " Gitk requires at least Tcl/Tk 8.4." -#~ msgstr "" -#~ "К сожалению gitk не может работать с этой версий Tcl/Tk.\n" -#~ "Требуется как минимум Tcl/Tk 8.4." - #~ 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 0994d87c28..0bd46d7881 100644 --- a/gitk-git/po/sv.po +++ b/gitk-git/po/sv.po @@ -3,20 +3,22 @@ # This file is distributed under the same license as the gitk package. # # Mikael Magnusson , 2008. -# Peter Krefting , 2008, 2009, 2010, 2012, 2013. +# Peter Krefting , 2008, 2009, 2010, 2012, 2013, 2015. # msgid "" msgstr "" "Project-Id-Version: sv\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" -"PO-Revision-Date: 2013-05-16 08:12+0100\n" +"POT-Creation-Date: 2015-05-17 14:32+1000\n" +"PO-Revision-Date: 2015-03-27 10:31+0100\n" "Last-Translator: Peter Krefting \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Gtranslator 2.91.6\n" #: gitk:140 msgid "Couldn't get list of unmerged files:" @@ -26,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:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "Märk upp ord" @@ -60,14 +62,18 @@ msgstr "Fel vid körning av git log:" msgid "Reading" msgstr "Läser" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "Läser incheckningar..." -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "Inga incheckningar markerade" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "Kommandorad" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "Kan inte tolka utdata från git log:" @@ -76,16 +82,12 @@ msgstr "Kan inte tolka utdata från git log:" msgid "No commit information available" msgstr "Ingen incheckningsinformation är tillgänglig" -#: gitk:1897 -msgid "mc" -msgstr "mc" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "OK" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "Avbryt" @@ -137,15 +139,15 @@ msgstr "Ändra vy..." msgid "Delete view" msgstr "Ta bort vy" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "Alla filer" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "Visa" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "Om gitk" @@ -157,7 +159,7 @@ msgstr "Tangentbordsbindningar" msgid "Help" msgstr "Hjälp" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "SHA1-id:" @@ -173,53 +175,53 @@ msgstr "Sök" msgid "commit" msgstr "incheckning" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "som innehåller:" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "som rör sökväg:" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "som lägger/till tar bort sträng:" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "ändrar rader som matchar:" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "Exakt" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "IgnVersaler" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "Reg.uttr." -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "Alla fält" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "Rubrik" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "Kommentarer" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "Författare" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "Incheckare" @@ -247,7 +249,7 @@ msgstr "Rader sammanhang" msgid "Ignore space change" msgstr "Ignorera ändringar i blanksteg" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "Rad-diff" @@ -259,100 +261,107 @@ msgstr "Patch" msgid "Tree" msgstr "Träd" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "Diff denna -> markerad" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "Diff markerad -> denna" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "Skapa patch" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "Skapa tagg" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "Skriv incheckning till fil" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "Skapa ny gren" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "Plocka denna incheckning" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "Återställ HEAD-grenen hit" -#: gitk:2624 +#: gitk:2625 msgid "Mark this commit" msgstr "Markera denna incheckning" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "Återgå till markering" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "Hitta efterföljare till denna och markera" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "Jämför med markerad incheckning" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 msgid "Diff this -> marked commit" msgstr "Diff denna -> markerad incheckning" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 msgid "Diff marked commit -> this" msgstr "Diff markerad incheckning -> denna" -#: gitk:2630 +#: gitk:2631 msgid "Revert this commit" msgstr "Ångra denna incheckning" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "Checka ut denna gren" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "Ta bort denna gren" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "" + +#: gitk:2656 msgid "Highlight this too" msgstr "Markera även detta" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "Markera bara detta" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "Extern diff" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "Klandra föräldraincheckning" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "" + +#: gitk:2667 msgid "Show origin of this line" msgstr "Visa ursprunget för den här raden" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "Kör git gui blame på den här raden" -#: gitk:3011 -#, fuzzy +#: gitk:3014 msgid "" "\n" "Gitk - a commit viewer for git\n" @@ -364,316 +373,321 @@ msgstr "" "\n" "Gitk - en incheckningsvisare för git\n" "\n" -"Copyright ©9 2005-2011 Paul Mackerras\n" +"Copyright © 2005-2014 Paul Mackerras\n" "\n" "Använd och vidareförmedla enligt villkoren i GNU General Public License" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "Stäng" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Tangentbordsbindningar för Gitk" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Tangentbordsbindningar för Gitk:" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tAvsluta" -#: gitk:3046 +#: gitk:3049 #, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-W>\t\tStäng fönster" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\tGå till första incheckning" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\tGå till sista incheckning" -#: gitk:3049 +#: gitk:3052 msgid ", p, k\tMove up one commit" msgstr ", p, k\tGå en incheckning upp" -#: gitk:3050 +#: gitk:3053 msgid ", n, j\tMove down one commit" msgstr ", n, j\tGå en incheckning ned" -#: gitk:3051 +#: gitk:3054 msgid ", z, h\tGo back in history list" msgstr ", z, h\tGå bakåt i historiken" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tGå framåt i historiken" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" -msgstr "" +msgstr "<%s-n>\tGå till aktuell inchecknings n:te förälder i historielistan" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tGå upp en sida i incheckningslistan" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "\tGå ned en sida i incheckningslistan" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tRulla till början av incheckningslistan" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tRulla till slutet av incheckningslistan" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Upp>\tRulla incheckningslistan upp ett steg" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Ned>\tRulla incheckningslistan ned ett steg" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-PageUp>\tRulla incheckningslistan upp en sida" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-PageDown>\tRulla incheckningslistan ned en sida" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "\tSök bakåt (uppåt, senare incheckningar)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr "\tSök framåt (nedåt, tidigare incheckningar)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\tRulla diffvisningen upp en sida" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tRulla diffvisningen upp en sida" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\tRulla diffvisningen ned en sida" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tRulla diffvisningen upp 18 rader" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tRulla diffvisningen ned 18 rader" -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tSök" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tGå till nästa sökträff" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\t\tGå till nästa sökträff" -#: gitk:3072 +#: gitk:3075 +#, fuzzy +msgid "g\t\tGo to commit" +msgstr "\t\tGå till sista incheckning" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "/\t\tFokusera sökrutan" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\tGå till föregående sökträff" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tRulla diffvisningen till nästa fil" -#: gitk:3075 +#: gitk:3079 #, 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:3076 +#: gitk:3080 #, 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:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-Num+>\tÖka teckenstorlek" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-plus>\tÖka teckenstorlek" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-Num->\tMinska teckenstorlek" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-minus>\tMinska teckenstorlek" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\tUppdatera" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Fel vid skapande av temporär katalog %s:" -#: gitk:3568 +#: gitk:3572 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Fel vid hämtning av \"%s\" från %s:" -#: gitk:3631 +#: gitk:3635 msgid "command failed:" msgstr "kommando misslyckades:" -#: gitk:3780 +#: gitk:3784 msgid "No such commit" msgstr "Incheckning saknas" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "git gui blame: kommando misslyckades:" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Kunde inte läsa sammanslagningshuvud: %s" -#: gitk:3833 +#: gitk:3837 #, tcl-format msgid "Error reading index: %s" msgstr "Fel vid läsning av index: %s" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "Kunde inte starta git blame: %s" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "Söker" -#: gitk:3893 +#: gitk:3897 #, tcl-format msgid "Error running git blame: %s" msgstr "Fel vid körning av git blame: %s" -#: gitk:3921 +#: gitk:3925 #, 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:3935 +#: gitk:3939 msgid "External diff viewer failed:" msgstr "Externt diff-verktyg misslyckades:" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Definition av Gitk-vy" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "Spara denna vy" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "Referenser (blankstegsavdelad lista):" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "Grenar & taggar:" -#: gitk:4060 +#: gitk:4077 msgid "All refs" msgstr "Alla referenser" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "Alla (lokala) grenar" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "Alla taggar" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "Alla fjärrspårande grenar" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "Incheckningsinfo (reguljära uttryck):" -#: gitk:4065 +#: gitk:4082 msgid "Author:" msgstr "Författare:" -#: gitk:4066 +#: gitk:4083 msgid "Committer:" msgstr "Incheckare:" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "Incheckningsmeddelande:" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" msgstr "Motsvarar alla kriterier för incheckningsinfo" -#: gitk:4069 +#: gitk:4086 #, fuzzy -msgid "Matches none Commit Info criteria" -msgstr "Motsvarar alla kriterier för incheckningsinfo" +msgid "Matches no Commit Info criteria" +msgstr "Motsvarar inga kriterier för incheckningsinfo" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "Ändringar av filer:" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "Fast sträng" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "Reguljärt uttryck" -#: gitk:4073 +#: gitk:4090 msgid "Search string:" msgstr "Söksträng:" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" @@ -681,201 +695,201 @@ msgstr "" "Incheckingsdatum (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" -#: gitk:4075 +#: gitk:4092 msgid "Since:" msgstr "Från:" -#: gitk:4076 +#: gitk:4093 msgid "Until:" msgstr "Till:" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "Begränsa och/eller hoppa över ett antal revisioner (positivt heltal):" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "Antal att visa:" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "Antal att hoppa över:" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "Diverse alternativ:" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "Strikt datumsortering" -#: gitk:4082 +#: gitk:4099 msgid "Mark branch sides" msgstr "Markera sidogrenar" -#: gitk:4083 +#: gitk:4100 msgid "Limit to first parent" msgstr "Begränsa till första förälder" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "Enkel historik" -#: gitk:4085 +#: gitk:4102 msgid "Additional arguments to git log:" msgstr "Ytterligare argument till git log:" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "Ange filer och kataloger att ta med, en per rad:" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "Kommando för att generera fler incheckningar att ta med:" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "Gitk: redigera vy" -#: gitk:4219 +#: gitk:4236 msgid "-- criteria for selecting revisions" msgstr " - kriterier för val av revisioner" -#: gitk:4224 +#: gitk:4241 msgid "View Name" msgstr "Namn på vy" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "Använd (F5)" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "Fel i argument för val av incheckningar:" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "Inget" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "Avkomling" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "Inte avkomling" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "Förfader" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "Inte förfader" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "Lokala ändringar sparade i indexet men inte incheckade" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "Lokala ändringar, ej sparade i indexet" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "med många flera" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "många" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "Taggar:" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "Förälder" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "Barn" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "Gren" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "Följer" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "Föregår" -#: gitk:7947 +#: gitk:7966 #, tcl-format msgid "Error getting diffs: %s" msgstr "Fel vid hämtning av diff: %s" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Gå till:" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "Förkortat SHA1-id %s är tvetydigt" -#: gitk:8659 +#: gitk:8678 #, tcl-format msgid "Revision %s is not known" msgstr "Revisionen %s är inte känd" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "SHA-id:t %s är inte känt" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "Revisionen %s finns inte i den nuvarande vyn" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "Datum" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "Barn" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "Återställ grenen %s hit" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "Frånkopplad head: kan inte återställa" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "Hoppar över sammanslagningsincheckning " -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 msgid "Error getting patch ID for " msgstr "Fel vid hämtning av patch-id för " -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr " - stannar\n" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 msgid "Commit " msgstr "Incheckning " -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " @@ -883,7 +897,7 @@ msgstr "" " är samma patch som\n" " " -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " @@ -891,7 +905,7 @@ msgstr "" " skiljer sig från\n" " " -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" @@ -899,131 +913,131 @@ msgstr "" "Skillnad mellan incheckningar:\n" "\n" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr " har %s barn - stannar\n" -#: gitk:9066 +#: gitk:9085 #, tcl-format msgid "Error writing commit to file: %s" msgstr "Fel vid skrivning av incheckning till fil: %s" -#: gitk:9072 +#: gitk:9091 #, tcl-format msgid "Error diffing commits: %s" msgstr "Fel vid jämförelse av incheckningar: %s" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Topp" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "Från" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "Till" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "Generera patch" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "Från:" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "Till:" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "Vänd" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "Utdatafil:" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "Generera" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "Fel vid generering av patch:" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "Id:" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "Taggnamn:" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "Taggmeddelandet är valfritt" -#: gitk:9251 +#: gitk:9270 msgid "Tag message:" msgstr "Taggmeddelande:" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "Skapa" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "Inget taggnamn angavs" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "Taggen \"%s\" finns redan" -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "Fel vid skapande av tagg:" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "Kommando:" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "Skriv" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "Fel vid skrivning av incheckning:" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "Namn:" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "Ange ett namn för den nya grenen" -#: gitk:9444 +#: gitk:9463 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "Grenen \"%s\" finns redan. Skriva över?" -#: gitk:9511 +#: gitk:9530 #, 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:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "Plockar" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1033,7 +1047,7 @@ msgstr "" "Checka in, återställ eller spara undan (stash) dina ändringar och försök " "igen." -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1041,20 +1055,20 @@ msgstr "" "Cherry-pick misslyckades på grund av en sammanslagningskonflikt.\n" "Vill du köra git citool för att lösa den?" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "Inga ändringar incheckade" -#: gitk:9574 +#: gitk:9593 #, 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:9579 +#: gitk:9598 msgid "Reverting" msgstr "Ångrar" -#: gitk:9587 +#: gitk:9606 #, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1064,7 +1078,7 @@ msgstr "" "Checka in, återställ eller spara undan (stash) dina ändringar och försök " "igen." -#: gitk:9591 +#: gitk:9610 msgid "" "Revert failed because of merge conflict.\n" " Do you wish to run git citool to resolve it?" @@ -1072,28 +1086,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:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "Bekräfta återställning" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Återställa grenen %s till %s?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Typ av återställning:" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Mjuk: Rör inte utcheckning och index" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "Blandad: Rör inte utcheckning, återställ index" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1101,19 +1115,19 @@ msgstr "" "Hård: Återställ utcheckning och index\n" "(förkastar ALLA lokala ändringar)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "Återställer" -#: gitk:9724 +#: gitk:9743 msgid "Checking out" msgstr "Checkar ut" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "Kan inte ta bort den just nu utcheckade grenen" -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1122,16 +1136,16 @@ msgstr "" "Incheckningarna på grenen %s existerar inte på någon annan gren.\n" "Vill du verkligen ta bort grenen %s?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "Taggar och huvuden: %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "Filter" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1139,216 +1153,238 @@ msgstr "" "Fel vid läsning av information om incheckningstopologi; information om " "grenar och föregående/senare taggar kommer inte vara komplett." -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "Tagg" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "Id" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Teckensnittsväljare för Gitk" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "F" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "K" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "Alternativ för incheckningslistvy" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "Maximal grafbredd (rader)" -#: gitk:11334 +#: gitk:11355 #, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "Maximal grafbredd (% av ruta)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "Visa lokala ändringar" -#: gitk:11340 +#: gitk:11361 msgid "Auto-select SHA1 (length)" msgstr "Välj SHA1 (längd) automatiskt" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "Dölj fjärr-referenser" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "Alternativ för diffvy" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "Blanksteg för tabulatortecken" -#: gitk:11353 +#: gitk:11374 msgid "Display nearby tags/heads" msgstr "Visa närliggande taggar/huvuden" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "Maximalt antal taggar/huvuden att visa" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "Begränsa diff till listade sökvägar" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "Stöd för filspecifika teckenkodningar" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "Externt diff-verktyg" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "Välj..." -#: gitk:11374 +#: gitk:11395 msgid "General options" msgstr "Allmänna inställningar" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "Använd tema på fönsterelement" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "(ändringen kräver omstart)" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "(för närvarande inte tillgängligt)" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "Färger: tryck för att välja" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "Gränssnitt" -#: gitk:11396 +#: gitk:11417 msgid "interface" msgstr "gränssnitt" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "Bakgrund" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 msgid "background" msgstr "bakgrund" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "Förgrund" -#: gitk:11404 +#: gitk:11425 msgid "foreground" msgstr "förgrund" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "Diff: gamla rader" -#: gitk:11408 +#: gitk:11429 msgid "diff old lines" msgstr "diff gamla rader" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "Diff: nya rader" -#: gitk:11413 +#: gitk:11434 msgid "diff new lines" msgstr "diff nya rader" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "Diff: delhuvud" -#: gitk:11419 +#: gitk:11440 msgid "diff hunk header" msgstr "diff delhuvud" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "Markerad rad bakgrund" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "markerad rad bakgrund" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "Markerad bakgrund" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "Teckensnitt: tryck för att välja" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "Huvudteckensnitt" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Teckensnitt för diffvisning" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "Teckensnitt för användargränssnitt" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Inställningar för Gitk" -#: gitk:11473 +#: gitk:11494 msgid "General" msgstr "Allmänt" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "Färger" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "Teckensnitt" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: välj färg för %s" -#: gitk:12242 +#: gitk:12059 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +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 msgid "Cannot find a git repository here." msgstr "Hittar inget git-arkiv här." -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Tvetydigt argument \"%s\": både revision och filnamn" -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "Felaktiga argument till gitk:" -#: gitk:12405 -msgid "Command line" -msgstr "Kommandorad" +#~ msgid "mc" +#~ msgstr "mc" + +#~ msgid "" +#~ "\n" +#~ "Gitk - a commit viewer for git\n" +#~ "\n" +#~ "Copyright © 2005-2015 Paul Mackerras\n" +#~ "\n" +#~ "Use and redistribute under the terms of the GNU General Public License" +#~ msgstr "" +#~ "\n" +#~ "Gitk - en incheckningsvisare för git\n" +#~ "\n" +#~ "Copyright © 2005-2015 Paul Mackerras\n" +#~ "\n" +#~ "Använd och vidareförmedla enligt villkoren i GNU General Public License" #~ msgid "next" #~ msgstr "nästa" @@ -1368,13 +1404,6 @@ msgstr "Kommandorad" #~ msgid "- stopping\n" #~ msgstr "- stannar\n" -#~ msgid "" -#~ "Sorry, gitk cannot run with this version of Tcl/Tk.\n" -#~ " Gitk requires at least Tcl/Tk 8.4." -#~ msgstr "" -#~ "Gitk kan tyvärr inte köra med denna version av Tcl/Tk.\n" -#~ " Gitk kräver åtminstone Tcl/Tk 8.4." - #~ msgid "Tag/Head %s is not known" #~ msgstr "Tagg/huvud %s är okänt" diff --git a/gitk-git/po/vi.po b/gitk-git/po/vi.po index ade9cb70cb..7133c422b7 100644 --- a/gitk-git/po/vi.po +++ b/gitk-git/po/vi.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: gitk @@GIT_VERSION@@\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-03-15 14:37+1100\n" +"POT-Creation-Date: 2015-05-17 14:32+1000\n" "PO-Revision-Date: 2013-12-14 14:40+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -25,7 +25,7 @@ msgstr "Không thể lấy danh sách các tập-tin chưa được hòa trộn: msgid "Color words" msgstr "Tô màu chữ" -#: gitk:217 gitk:2381 gitk:8201 gitk:8234 +#: gitk:217 gitk:2381 gitk:8220 gitk:8253 msgid "Markup words" msgstr "Đánh dấu chữ" @@ -58,14 +58,18 @@ msgstr "Gặp lỗi khi thực hiện lệnh git log:" msgid "Reading" msgstr "Đang đọc" -#: gitk:496 gitk:4508 +#: gitk:496 gitk:4525 msgid "Reading commits..." msgstr "Đang đọc các lần chuyển giao..." -#: gitk:499 gitk:1637 gitk:4511 +#: gitk:499 gitk:1637 gitk:4528 msgid "No commits selected" msgstr "Chưa chọn các lần chuyển giao" +#: gitk:1445 gitk:4045 gitk:12432 +msgid "Command line" +msgstr "Dòng lệnh" + #: gitk:1511 msgid "Can't parse git log output:" msgstr "Không thể phân tích kết xuất từ lệnh git log:" @@ -74,16 +78,12 @@ msgstr "Không thể phân tích kết xuất từ lệnh git log:" msgid "No commit information available" msgstr "Không có thông tin về lần chuyển giao nào" -#: gitk:1897 -msgid "mc" -msgstr "mc" - -#: gitk:1932 gitk:4298 gitk:9650 gitk:11220 gitk:11500 +#: gitk:1903 gitk:1932 gitk:4315 gitk:9669 gitk:11241 gitk:11521 msgid "OK" msgstr "Đồng ý" -#: gitk:1934 gitk:4300 gitk:9177 gitk:9256 gitk:9372 gitk:9421 gitk:9652 -#: gitk:11221 gitk:11501 +#: gitk:1934 gitk:4317 gitk:9196 gitk:9275 gitk:9391 gitk:9440 gitk:9671 +#: gitk:11242 gitk:11522 msgid "Cancel" msgstr "Thôi" @@ -135,15 +135,15 @@ msgstr "Sửa cách trình bày..." msgid "Delete view" msgstr "Xóa cách trình bày" -#: gitk:2088 +#: gitk:2088 gitk:4043 msgid "All files" msgstr "Mọi tập tin" -#: gitk:2083 gitk:4050 +#: gitk:2083 gitk:4067 msgid "View" msgstr "Trình bày" -#: gitk:2093 gitk:2103 gitk:3009 +#: gitk:2093 gitk:2103 gitk:3012 msgid "About gitk" msgstr "Giới thiệu về gitk" @@ -155,7 +155,7 @@ msgstr "Tổ hợp phím" msgid "Help" msgstr "Trợ giúp" -#: gitk:2185 gitk:8633 +#: gitk:2185 gitk:8652 msgid "SHA1 ID:" msgstr "SHA1 ID:" @@ -171,53 +171,53 @@ msgstr "Tìm" msgid "commit" msgstr "lần chuyển giao" -#: gitk:2299 gitk:2301 gitk:4669 gitk:4692 gitk:4716 gitk:6736 gitk:6808 -#: gitk:6893 +#: gitk:2299 gitk:2301 gitk:4687 gitk:4710 gitk:4734 gitk:6755 gitk:6827 +#: gitk:6912 msgid "containing:" msgstr "có chứa:" -#: gitk:2302 gitk:3522 gitk:3527 gitk:4745 +#: gitk:2302 gitk:3526 gitk:3531 gitk:4763 msgid "touching paths:" msgstr "đang chạm đường dẫn:" -#: gitk:2303 gitk:4759 +#: gitk:2303 gitk:4777 msgid "adding/removing string:" msgstr "thêm/gỡ bỏ chuỗi:" -#: gitk:2304 gitk:4761 +#: gitk:2304 gitk:4779 msgid "changing lines matching:" msgstr "những dòng thay đổi khớp mẫu:" -#: gitk:2313 gitk:2315 gitk:4748 +#: gitk:2313 gitk:2315 gitk:4766 msgid "Exact" msgstr "Chính xác" -#: gitk:2315 gitk:4836 gitk:6704 +#: gitk:2315 gitk:4854 gitk:6723 msgid "IgnCase" msgstr "BquaHt" -#: gitk:2315 gitk:4718 gitk:4834 gitk:6700 +#: gitk:2315 gitk:4736 gitk:4852 gitk:6719 msgid "Regexp" msgstr "BTCQ" -#: gitk:2317 gitk:2318 gitk:4856 gitk:4886 gitk:4893 gitk:6829 gitk:6897 +#: gitk:2317 gitk:2318 gitk:4874 gitk:4904 gitk:4911 gitk:6848 gitk:6916 msgid "All fields" msgstr "Mọi trường" -#: gitk:2318 gitk:4853 gitk:4886 gitk:6767 +#: gitk:2318 gitk:4871 gitk:4904 gitk:6786 msgid "Headline" msgstr "Nội dung chính" -#: gitk:2319 gitk:4853 gitk:6767 gitk:6897 gitk:7370 +#: gitk:2319 gitk:4871 gitk:6786 gitk:6916 gitk:7389 msgid "Comments" msgstr "Ghi chú" -#: gitk:2319 gitk:4853 gitk:4858 gitk:4893 gitk:6767 gitk:7305 gitk:8811 -#: gitk:8826 +#: gitk:2319 gitk:4871 gitk:4876 gitk:4911 gitk:6786 gitk:7324 gitk:8830 +#: gitk:8845 msgid "Author" msgstr "Tác giả" -#: gitk:2319 gitk:4853 gitk:6767 gitk:7307 +#: gitk:2319 gitk:4871 gitk:6786 gitk:7326 msgid "Committer" msgstr "Người chuyển giao" @@ -245,7 +245,7 @@ msgstr "Các dòng của nội dung" msgid "Ignore space change" msgstr "Không xét đến thay đổi do khoảng trắng" -#: gitk:2378 gitk:2380 gitk:7940 gitk:8187 +#: gitk:2378 gitk:2380 gitk:7959 gitk:8206 msgid "Line diff" msgstr "Khác biệt theo dòng" @@ -257,99 +257,107 @@ msgstr "Vá" msgid "Tree" msgstr "Cây" -#: gitk:2616 gitk:2636 +#: gitk:2617 gitk:2637 msgid "Diff this -> selected" msgstr "So sánh cái này -> cái đã chọn" -#: gitk:2617 gitk:2637 +#: gitk:2618 gitk:2638 msgid "Diff selected -> this" msgstr "So sánh cái đã chọn -> cái này" -#: gitk:2618 gitk:2638 +#: gitk:2619 gitk:2639 msgid "Make patch" msgstr "Tạo miếng vá" -#: gitk:2619 gitk:9235 +#: gitk:2620 gitk:9254 msgid "Create tag" msgstr "Tạo thẻ" -#: gitk:2620 gitk:9352 +#: gitk:2621 gitk:9371 msgid "Write commit to file" msgstr "Ghi lần chuyển giao ra tập tin" -#: gitk:2621 gitk:9409 +#: gitk:2622 gitk:9428 msgid "Create new branch" msgstr "Tạo nhánh mới" -#: gitk:2622 +#: gitk:2623 msgid "Cherry-pick this commit" msgstr "Cherry-pick lần chuyển giao này" -#: gitk:2623 +#: gitk:2624 msgid "Reset HEAD branch to here" msgstr "Đặt lại HEAD của nhánh vào đây" -#: gitk:2624 +#: gitk:2625 msgid "Mark this commit" msgstr "Đánh dấu lần chuyển giao này" -#: gitk:2625 +#: gitk:2626 msgid "Return to mark" msgstr "Quay lại vị trí dấu" -#: gitk:2626 +#: gitk:2627 msgid "Find descendant of this and mark" msgstr "Tìm con cháu của cái này và cái đã đánh dấu" -#: gitk:2627 +#: gitk:2628 msgid "Compare with marked commit" msgstr "So sánh với lần chuyển giao đã đánh dấu" -#: gitk:2628 gitk:2639 +#: gitk:2629 gitk:2640 msgid "Diff this -> marked commit" msgstr "So sánh cái này -> lần chuyển giao đã đánh dấu" -#: gitk:2629 gitk:2640 +#: gitk:2630 gitk:2641 msgid "Diff marked commit -> this" msgstr "So sánh lần chuyển giao đã đánh dấu -> cái này" -#: gitk:2630 +#: gitk:2631 msgid "Revert this commit" msgstr "Hoàn lại lần chuyển giao này" -#: gitk:2646 +#: gitk:2647 msgid "Check out this branch" msgstr "Checkout nhánh này" -#: gitk:2647 +#: gitk:2648 msgid "Remove this branch" msgstr "Gỡ bỏ nhánh này" -#: gitk:2654 +#: gitk:2649 +msgid "Copy branch name" +msgstr "" + +#: gitk:2656 msgid "Highlight this too" msgstr "Cũng tô sáng nó" -#: gitk:2655 +#: gitk:2657 msgid "Highlight this only" msgstr "Chỉ tô sáng cái này" -#: gitk:2656 +#: gitk:2658 msgid "External diff" msgstr "diff từ bên ngoài" -#: gitk:2657 +#: gitk:2659 msgid "Blame parent commit" msgstr "Xem công trạng lần chuyển giao cha mẹ" -#: gitk:2664 +#: gitk:2660 +msgid "Copy path" +msgstr "" + +#: gitk:2667 msgid "Show origin of this line" msgstr "Hiển thị nguyên gốc của dòng này" -#: gitk:2665 +#: gitk:2668 msgid "Run git gui blame on this line" msgstr "Chạy lệnh git gui blame cho dòng này" -#: gitk:3011 +#: gitk:3014 #, fuzzy msgid "" "\n" @@ -366,314 +374,319 @@ msgstr "" "\n" "Dùng và phân phối lại phần mềm này theo các điều khoản của Giấy Phép Công GNU" -#: gitk:3019 gitk:3085 gitk:9836 +#: gitk:3022 gitk:3089 gitk:9857 msgid "Close" msgstr "Đóng" -#: gitk:3040 +#: gitk:3043 msgid "Gitk key bindings" msgstr "Tổ hợp phím gitk" -#: gitk:3043 +#: gitk:3046 msgid "Gitk key bindings:" msgstr "Tổ hợp phím gitk:" -#: gitk:3045 +#: gitk:3048 #, tcl-format msgid "<%s-Q>\t\tQuit" msgstr "<%s-Q>\t\tThoát" -#: gitk:3046 +#: gitk:3049 #, tcl-format msgid "<%s-W>\t\tClose window" msgstr "<%s-W>\t\tĐóng cửa sổ" -#: gitk:3047 +#: gitk:3050 msgid "\t\tMove to first commit" msgstr "\t\tChuyển đến lần chuyển giao đầu tiên" -#: gitk:3048 +#: gitk:3051 msgid "\t\tMove to last commit" msgstr "\t\tChuyển đến lần chuyển giao cuối" -#: gitk:3049 +#: gitk:3052 msgid ", p, k\tMove up one commit" msgstr ", p, k\tDi chuyển lên một lần chuyển giao" -#: gitk:3050 +#: gitk:3053 msgid ", n, j\tMove down one commit" msgstr ", n, j\tDi chuyển xuống một lần chuyển giao" -#: gitk:3051 +#: gitk:3054 msgid ", z, h\tGo back in history list" msgstr ", z, h\tQuay trở lại danh sách lịch sử" -#: gitk:3052 +#: gitk:3055 msgid ", x, l\tGo forward in history list" msgstr ", x, l\tDi chuyển tiếp trong danh sách lịch sử" -#: gitk:3053 +#: gitk:3056 #, tcl-format msgid "<%s-n>\tGo to n-th parent of current commit in history list" msgstr "" -#: gitk:3054 +#: gitk:3057 msgid "\tMove up one page in commit list" msgstr "\tDi chuyển lên một trang trong danh sách lần chuyển giao" -#: gitk:3055 +#: gitk:3058 msgid "\tMove down one page in commit list" msgstr "\tDi chuyển xuống một trang trong danh sách lần chuyển giao" -#: gitk:3056 +#: gitk:3059 #, tcl-format msgid "<%s-Home>\tScroll to top of commit list" msgstr "<%s-Home>\tCuộn lên trên cùng của danh sách lần chuyển giao" -#: gitk:3057 +#: gitk:3060 #, tcl-format msgid "<%s-End>\tScroll to bottom of commit list" msgstr "<%s-End>\tCuộn xuống dưới cùng của danh sách lần chuyển giao" -#: gitk:3058 +#: gitk:3061 #, tcl-format msgid "<%s-Up>\tScroll commit list up one line" msgstr "<%s-Up>\tCuộn danh sách lần chuyển giao lên một dòng" -#: gitk:3059 +#: gitk:3062 #, tcl-format msgid "<%s-Down>\tScroll commit list down one line" msgstr "<%s-Down>\tCuộn danh sách lần chuyển giao xuống một dòng" -#: gitk:3060 +#: gitk:3063 #, tcl-format msgid "<%s-PageUp>\tScroll commit list up one page" msgstr "<%s-PageUp>\tCuộn danh sách lần chuyển giao lên một trang" -#: gitk:3061 +#: gitk:3064 #, tcl-format msgid "<%s-PageDown>\tScroll commit list down one page" msgstr "<%s-PageDown>\tCuộn danh sách lần chuyển giao xuống một trang" -#: gitk:3062 +#: gitk:3065 msgid "\tFind backwards (upwards, later commits)" msgstr "\tTìm về phía sau (hướng lên trên, lần chuyển giao sau này)" -#: gitk:3063 +#: gitk:3066 msgid "\tFind forwards (downwards, earlier commits)" msgstr "" "\tTìm về phía trước (hướng xuống dưới, lần chuyển giao trước đây)" -#: gitk:3064 +#: gitk:3067 msgid ", b\tScroll diff view up one page" msgstr ", b\tCuộn phần trình bày diff lên một trang" -#: gitk:3065 +#: gitk:3068 msgid "\tScroll diff view up one page" msgstr "\tCuộn phần trình bày diff lên một trang" -#: gitk:3066 +#: gitk:3069 msgid "\t\tScroll diff view down one page" msgstr "\t\tCuộn phần trình bày diff xuống một trang" -#: gitk:3067 +#: gitk:3070 msgid "u\t\tScroll diff view up 18 lines" msgstr "u\t\tCuộn phần trình bày diff lên 18 dòng" -#: gitk:3068 +#: gitk:3071 msgid "d\t\tScroll diff view down 18 lines" msgstr "d\t\tCuộn phần trình bày diff xuống 18 dòng" -#: gitk:3069 +#: gitk:3072 #, tcl-format msgid "<%s-F>\t\tFind" msgstr "<%s-F>\t\tTìm kiếm" -#: gitk:3070 +#: gitk:3073 #, tcl-format msgid "<%s-G>\t\tMove to next find hit" msgstr "<%s-G>\t\tDi chuyển đến chỗ gặp kế tiếp" -#: gitk:3071 +#: gitk:3074 msgid "\tMove to next find hit" msgstr "\t\tDi chuyển đến chỗ gặp kế tiếp" -#: gitk:3072 +#: gitk:3075 +#, fuzzy +msgid "g\t\tGo to commit" +msgstr "\t\tChuyển đến lần chuyển giao cuối" + +#: gitk:3076 msgid "/\t\tFocus the search box" msgstr "/\t\tĐưa con trỏ chuột vào ô tìm kiếm" -#: gitk:3073 +#: gitk:3077 msgid "?\t\tMove to previous find hit" msgstr "?\t\tDi chuyển đến chỗ gặp kế trước" -#: gitk:3074 +#: gitk:3078 msgid "f\t\tScroll diff view to next file" msgstr "f\t\tCuộn phần trình bày diff sang tập-tin kế" -#: gitk:3075 +#: gitk:3079 #, tcl-format msgid "<%s-S>\t\tSearch for next hit in diff view" msgstr "<%s-S>\t\tTìm đến chỗ khác biệt kế tiếp" -#: gitk:3076 +#: gitk:3080 #, tcl-format msgid "<%s-R>\t\tSearch for previous hit in diff view" msgstr "<%s-R>\t\tTìm đến chỗ khác biệt kế trước" -#: gitk:3077 +#: gitk:3081 #, tcl-format msgid "<%s-KP+>\tIncrease font size" msgstr "<%s-KP+>\tTăng cỡ chữ" -#: gitk:3078 +#: gitk:3082 #, tcl-format msgid "<%s-plus>\tIncrease font size" msgstr "<%s-plus>\tTăng cỡ chữ" -#: gitk:3079 +#: gitk:3083 #, tcl-format msgid "<%s-KP->\tDecrease font size" msgstr "<%s-KP->\tGiảm cỡ chữ" -#: gitk:3080 +#: gitk:3084 #, tcl-format msgid "<%s-minus>\tDecrease font size" msgstr "<%s-minus>\tGiảm cỡ chữ" -#: gitk:3081 +#: gitk:3085 msgid "\t\tUpdate" msgstr "\t\tCập nhật" -#: gitk:3546 gitk:3555 +#: gitk:3550 gitk:3559 #, tcl-format msgid "Error creating temporary directory %s:" msgstr "Gặp lỗi khi tạo thư mục tạm %s:" -#: gitk:3568 +#: gitk:3572 #, tcl-format msgid "Error getting \"%s\" from %s:" msgstr "Lỗi chào hỏi \"%s\" từ %s:" -#: gitk:3631 +#: gitk:3635 msgid "command failed:" msgstr "lệnh gặp lỗi:" -#: gitk:3780 +#: gitk:3784 msgid "No such commit" msgstr "Không có lần chuyển giao như vậy" -#: gitk:3794 +#: gitk:3798 msgid "git gui blame: command failed:" msgstr "git gui blame: lệnh gặp lỗi:" -#: gitk:3825 +#: gitk:3829 #, tcl-format msgid "Couldn't read merge head: %s" msgstr "Không thể độc đầu của hòa trộn: %s" # tcl-format -#: gitk:3833 +#: gitk:3837 #, tcl-format msgid "Error reading index: %s" msgstr "Gặp lỗi khi đọc chỉ mục: %s" -#: gitk:3858 +#: gitk:3862 #, tcl-format msgid "Couldn't start git blame: %s" msgstr "Không thể khởi chạy git blame: %s" -#: gitk:3861 gitk:6735 +#: gitk:3865 gitk:6754 msgid "Searching" msgstr "Đang tìm kiếm" -#: gitk:3893 +#: gitk:3897 #, tcl-format msgid "Error running git blame: %s" msgstr "Gặp lỗi khi chạy git blame: %s" -#: gitk:3921 +#: gitk:3925 #, tcl-format msgid "That line comes from commit %s, which is not in this view" msgstr "Dòng đến từ lần chuyển giao %s, cái mà không trong trình bày này" -#: gitk:3935 +#: gitk:3939 msgid "External diff viewer failed:" msgstr "Bộ trình bày diff từ bên ngoài gặp lỗi:" -#: gitk:4053 +#: gitk:4070 msgid "Gitk view definition" msgstr "Định nghĩa cách trình bày gitk" -#: gitk:4057 +#: gitk:4074 msgid "Remember this view" msgstr "Nhớ cách trình bày này" -#: gitk:4058 +#: gitk:4075 msgid "References (space separated list):" msgstr "Tham chiếu (danh sách ngăn cách bằng dấu cách):" -#: gitk:4059 +#: gitk:4076 msgid "Branches & tags:" msgstr "Nhánh & thẻ:" -#: gitk:4060 +#: gitk:4077 msgid "All refs" msgstr "Mọi tham chiếu" -#: gitk:4061 +#: gitk:4078 msgid "All (local) branches" msgstr "Mọi nhánh (nội bộ)" -#: gitk:4062 +#: gitk:4079 msgid "All tags" msgstr "Mọi thẻ" -#: gitk:4063 +#: gitk:4080 msgid "All remote-tracking branches" msgstr "Mọi nhánh remote-tracking" -#: gitk:4064 +#: gitk:4081 msgid "Commit Info (regular expressions):" msgstr "Thông tin chuyển giao (biểu thức chính quy):" -#: gitk:4065 +#: gitk:4082 msgid "Author:" msgstr "Tác giả:" -#: gitk:4066 +#: gitk:4083 msgid "Committer:" msgstr "Người chuyển giao:" -#: gitk:4067 +#: gitk:4084 msgid "Commit Message:" msgstr "Chú thích của lần chuyển giao:" -#: gitk:4068 +#: gitk:4085 msgid "Matches all Commit Info criteria" msgstr "Khớp mọi điều kiện Thông tin Chuyển giao" -#: gitk:4069 +#: gitk:4086 #, fuzzy -msgid "Matches none Commit Info criteria" +msgid "Matches no Commit Info criteria" msgstr "Khớp mọi điều kiện Thông tin Chuyển giao" -#: gitk:4070 +#: gitk:4087 msgid "Changes to Files:" msgstr "Đổi thành Tập tin:" -#: gitk:4071 +#: gitk:4088 msgid "Fixed String" msgstr "Chuỗi cố định" -#: gitk:4072 +#: gitk:4089 msgid "Regular Expression" msgstr "Biểu thức chính quy" -#: gitk:4073 +#: gitk:4090 msgid "Search string:" msgstr "Chuỗi tìm kiếm:" -#: gitk:4074 +#: gitk:4091 msgid "" "Commit Dates (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" @@ -681,203 +694,203 @@ msgstr "" "Ngày chuyển giao (\"2 weeks ago\", \"2009-03-17 15:27:38\", \"March 17, 2009 " "15:27:38\"):" -#: gitk:4075 +#: gitk:4092 msgid "Since:" msgstr "Kể từ:" -#: gitk:4076 +#: gitk:4093 msgid "Until:" msgstr "Đến:" -#: gitk:4077 +#: gitk:4094 msgid "Limit and/or skip a number of revisions (positive integer):" msgstr "Giới hạn và/hoặc bỏ số của điểm xét (số nguyên âm):" -#: gitk:4078 +#: gitk:4095 msgid "Number to show:" msgstr "Số lượng hiển thị:" -#: gitk:4079 +#: gitk:4096 msgid "Number to skip:" msgstr "Số lượng sẽ bỏ qua:" -#: gitk:4080 +#: gitk:4097 msgid "Miscellaneous options:" msgstr "Tuỳ chọn hỗn hợp:" -#: gitk:4081 +#: gitk:4098 msgid "Strictly sort by date" msgstr "Sắp xếp chặt chẽ theo ngày" -#: gitk:4082 +#: gitk:4099 msgid "Mark branch sides" msgstr "Đánh dấu các cạnh nhánh" -#: gitk:4083 +#: gitk:4100 msgid "Limit to first parent" msgstr "Giới hạn thành cha mẹ đầu tiên" -#: gitk:4084 +#: gitk:4101 msgid "Simple history" msgstr "Lịch sử dạng đơn giản" -#: gitk:4085 +#: gitk:4102 msgid "Additional arguments to git log:" msgstr "Đối số bổ xung cho lệnh git log:" -#: gitk:4086 +#: gitk:4103 msgid "Enter files and directories to include, one per line:" msgstr "Nhập vào các tập tin và thư mục bao gồm, mỗi dòng một cái:" -#: gitk:4087 +#: gitk:4104 msgid "Command to generate more commits to include:" msgstr "Lệnh tạo ra nhiều lần chuyển giao hơn bao gồm:" -#: gitk:4211 +#: gitk:4228 msgid "Gitk: edit view" msgstr "Gitk: sửa cách trình bày" -#: gitk:4219 +#: gitk:4236 msgid "-- criteria for selecting revisions" msgstr "-- tiêu chuẩn chọn điểm xét duyệt" -#: gitk:4224 +#: gitk:4241 msgid "View Name" msgstr "Tên cách trình bày" -#: gitk:4299 +#: gitk:4316 msgid "Apply (F5)" msgstr "Áp dụng (F5)" -#: gitk:4337 +#: gitk:4354 msgid "Error in commit selection arguments:" msgstr "Lỗi trong các đối số chọn chuyển giao:" -#: gitk:4392 gitk:4445 gitk:4906 gitk:4920 gitk:6190 gitk:12346 gitk:12347 +#: gitk:4409 gitk:4462 gitk:4924 gitk:4938 gitk:6208 gitk:12373 gitk:12374 msgid "None" msgstr "Không" -#: gitk:5003 gitk:5008 +#: gitk:5021 gitk:5026 msgid "Descendant" msgstr "Con cháu" -#: gitk:5004 +#: gitk:5022 msgid "Not descendant" msgstr "Không có con cháu" -#: gitk:5011 gitk:5016 +#: gitk:5029 gitk:5034 msgid "Ancestor" msgstr "Tổ tiên chung" -#: gitk:5012 +#: gitk:5030 msgid "Not ancestor" msgstr "Không có chung tổ tiên" -#: gitk:5306 +#: gitk:5324 msgid "Local changes checked in to index but not committed" msgstr "" "Có thay đổi nội bộ đã được đưa vào bảng mục lục, nhưng chưa được chuyển giao" -#: gitk:5342 +#: gitk:5360 msgid "Local uncommitted changes, not checked in to index" msgstr "Có thay đổi nội bộ, nhưng chưa được đưa vào bảng mục lục" -#: gitk:7115 +#: gitk:7134 msgid "and many more" msgstr "và nhiều nữa" -#: gitk:7118 +#: gitk:7137 msgid "many" msgstr "nhiều" -#: gitk:7309 +#: gitk:7328 msgid "Tags:" msgstr "Thẻ:" -#: gitk:7326 gitk:7332 gitk:8806 +#: gitk:7345 gitk:7351 gitk:8825 msgid "Parent" msgstr "Cha" -#: gitk:7337 +#: gitk:7356 msgid "Child" msgstr "Con" -#: gitk:7346 +#: gitk:7365 msgid "Branch" msgstr "Nhánh" -#: gitk:7349 +#: gitk:7368 msgid "Follows" msgstr "Đứng sau" -#: gitk:7352 +#: gitk:7371 msgid "Precedes" msgstr "Đứng trước" # tcl-format -#: gitk:7947 +#: gitk:7966 #, tcl-format msgid "Error getting diffs: %s" msgstr "Lỗi lấy diff: %s" -#: gitk:8631 +#: gitk:8650 msgid "Goto:" msgstr "Nhảy tới:" -#: gitk:8652 +#: gitk:8671 #, tcl-format msgid "Short SHA1 id %s is ambiguous" msgstr "Định danh SHA1 dạng ngắn %s là chưa đủ rõ ràng" -#: gitk:8659 +#: gitk:8678 #, tcl-format msgid "Revision %s is not known" msgstr "Không hiểu điểm xét duyệt %s" -#: gitk:8669 +#: gitk:8688 #, tcl-format msgid "SHA1 id %s is not known" msgstr "Không hiểu định danh SHA1 %s" -#: gitk:8671 +#: gitk:8690 #, tcl-format msgid "Revision %s is not in the current view" msgstr "Điểm %s không ở trong phần hiển thị hiện tại" -#: gitk:8813 gitk:8828 +#: gitk:8832 gitk:8847 msgid "Date" msgstr "Ngày" -#: gitk:8816 +#: gitk:8835 msgid "Children" msgstr "Con cháu" -#: gitk:8879 +#: gitk:8898 #, tcl-format msgid "Reset %s branch to here" msgstr "Đặt lại nhánh %s tại đây" -#: gitk:8881 +#: gitk:8900 msgid "Detached head: can't reset" msgstr "Head đã bị tách rời: không thể đặt lại" -#: gitk:8986 gitk:8992 +#: gitk:9005 gitk:9011 msgid "Skipping merge commit " msgstr "Bỏ qua lần chuyển giao hòa trộn " -#: gitk:9001 gitk:9006 +#: gitk:9020 gitk:9025 msgid "Error getting patch ID for " msgstr "Gặp lỗi khi lấy ID miếng vá cho " -#: gitk:9002 gitk:9007 +#: gitk:9021 gitk:9026 msgid " - stopping\n" msgstr " - dừng\n" -#: gitk:9012 gitk:9015 gitk:9023 gitk:9037 gitk:9046 +#: gitk:9031 gitk:9034 gitk:9042 gitk:9056 gitk:9065 msgid "Commit " msgstr "Commit " -#: gitk:9016 +#: gitk:9035 msgid "" " is the same patch as\n" " " @@ -885,7 +898,7 @@ msgstr "" " là cùng một miếng vá với\n" " " -#: gitk:9024 +#: gitk:9043 msgid "" " differs from\n" " " @@ -893,7 +906,7 @@ msgstr "" " khác biệt từ\n" " " -#: gitk:9026 +#: gitk:9045 msgid "" "Diff of commits:\n" "\n" @@ -901,131 +914,131 @@ msgstr "" "Khác biệt của lần chuyển giao (commit):\n" "\n" -#: gitk:9038 gitk:9047 +#: gitk:9057 gitk:9066 #, tcl-format msgid " has %s children - stopping\n" msgstr " có %s con - dừng\n" -#: gitk:9066 +#: gitk:9085 #, tcl-format msgid "Error writing commit to file: %s" msgstr "Gặp lỗi trong quá trình ghi lần chuyển giao vào tập tin: %s" -#: gitk:9072 +#: gitk:9091 #, tcl-format msgid "Error diffing commits: %s" msgstr "Gặp lỗi khi so sánh sự khác biệt giữa các lần chuyển giao: %s" -#: gitk:9118 +#: gitk:9137 msgid "Top" msgstr "Đỉnh" -#: gitk:9119 +#: gitk:9138 msgid "From" msgstr "Từ" -#: gitk:9124 +#: gitk:9143 msgid "To" msgstr "Đến" -#: gitk:9148 +#: gitk:9167 msgid "Generate patch" msgstr "Tạo miếng vá" -#: gitk:9150 +#: gitk:9169 msgid "From:" msgstr "Từ:" -#: gitk:9159 +#: gitk:9178 msgid "To:" msgstr "Đến:" -#: gitk:9168 +#: gitk:9187 msgid "Reverse" msgstr "Đảo ngược" -#: gitk:9170 gitk:9366 +#: gitk:9189 gitk:9385 msgid "Output file:" msgstr "Tập tin kết xuất:" -#: gitk:9176 +#: gitk:9195 msgid "Generate" msgstr "Tạo" -#: gitk:9214 +#: gitk:9233 msgid "Error creating patch:" msgstr "Gặp lỗi khi tạo miếng vá:" -#: gitk:9237 gitk:9354 gitk:9411 +#: gitk:9256 gitk:9373 gitk:9430 msgid "ID:" msgstr "ID:" -#: gitk:9246 +#: gitk:9265 msgid "Tag name:" msgstr "Tên thẻ:" -#: gitk:9249 +#: gitk:9268 msgid "Tag message is optional" msgstr "Ghi chú thẻ chỉ là tùy chọn" -#: gitk:9251 +#: gitk:9270 msgid "Tag message:" msgstr "Ghi chú cho thẻ:" -#: gitk:9255 gitk:9420 +#: gitk:9274 gitk:9439 msgid "Create" msgstr "Tạo" -#: gitk:9273 +#: gitk:9292 msgid "No tag name specified" msgstr "Chưa chỉ ra tên của thẻ" -#: gitk:9277 +#: gitk:9296 #, tcl-format msgid "Tag \"%s\" already exists" msgstr "Thẻ “%s” đã có sẵn rồi" -#: gitk:9287 +#: gitk:9306 msgid "Error creating tag:" msgstr "Gặp lỗi khi tạo thẻ:" -#: gitk:9363 +#: gitk:9382 msgid "Command:" msgstr "Lệnh:" -#: gitk:9371 +#: gitk:9390 msgid "Write" msgstr "Ghi" -#: gitk:9389 +#: gitk:9408 msgid "Error writing commit:" msgstr "Gặp lỗi trong quá trình ghi chuyển giao:" -#: gitk:9416 +#: gitk:9435 msgid "Name:" msgstr "Tên:" -#: gitk:9439 +#: gitk:9458 msgid "Please specify a name for the new branch" msgstr "Vui lòng chỉ định tên cho nhánh mới" -#: gitk:9444 +#: gitk:9463 #, tcl-format msgid "Branch '%s' already exists. Overwrite?" msgstr "Nhánh “%s” đã có từ trước rồi. Ghi đè?" -#: gitk:9511 +#: gitk:9530 #, tcl-format msgid "Commit %s is already included in branch %s -- really re-apply it?" msgstr "" "Lần chuyển giao %s đã sẵn được bao gồm trong nhánh %s -- bạn có thực sự muốn " "áp dụng lại nó không?" -#: gitk:9516 +#: gitk:9535 msgid "Cherry-picking" msgstr "Đang cherry-pick" -#: gitk:9525 +#: gitk:9544 #, tcl-format msgid "" "Cherry-pick failed because of local changes to file '%s'.\n" @@ -1034,7 +1047,7 @@ msgstr "" "Cherry-pick gặp lỗi bởi vì các thay đổi nội bộ tập tin “%s”.\n" "Xin hãy chuyển giao, reset hay stash các thay đổi của bạn sau đó thử lại." -#: gitk:9531 +#: gitk:9550 msgid "" "Cherry-pick failed because of merge conflict.\n" "Do you wish to run git citool to resolve it?" @@ -1042,22 +1055,22 @@ msgstr "" "Cherry-pick gặp lỗi bởi vì xung đột trong hòa trộn.\n" "Bạn có muốn chạy lệnh “git citool” để giải quyết vấn đề này không?" -#: gitk:9547 gitk:9605 +#: gitk:9566 gitk:9624 msgid "No changes committed" msgstr "Không có thay đổi nào cần chuyển giao" -#: gitk:9574 +#: gitk:9593 #, tcl-format msgid "Commit %s is not included in branch %s -- really revert it?" msgstr "" "Lần chuyển giao %s không được bao gồm trong nhánh %s -- bạn có thực sự muốn " "“revert” nó không?" -#: gitk:9579 +#: gitk:9598 msgid "Reverting" msgstr "Đang hoàn tác" -#: gitk:9587 +#: gitk:9606 #, tcl-format msgid "" "Revert failed because of local changes to the following files:%s Please " @@ -1066,7 +1079,7 @@ msgstr "" "Revert gặp lỗi bởi vì tập tin sau đã được thay đổi nội bộ:%s\n" "Xin hãy chạy lệnh “commit”, “reset” hoặc “stash” rồi thử lại." -#: gitk:9591 +#: gitk:9610 msgid "" "Revert failed because of merge conflict.\n" " Do you wish to run git citool to resolve it?" @@ -1074,29 +1087,29 @@ msgstr "" "Revert gặp lỗi bởi vì xung đột hòa trộn.\n" " Bạn có muốn chạy lệnh “git citool” để phân giải nó không?" -#: gitk:9634 +#: gitk:9653 msgid "Confirm reset" msgstr "Xác nhật đặt lại" -#: gitk:9636 +#: gitk:9655 #, tcl-format msgid "Reset branch %s to %s?" msgstr "Đặt lại nhánh “%s” thành “%s”?" -#: gitk:9638 +#: gitk:9657 msgid "Reset type:" msgstr "Kiểu đặt lại:" -#: gitk:9641 +#: gitk:9660 msgid "Soft: Leave working tree and index untouched" msgstr "Mềm: Không động đến thư mục làm việc và bảng mục lục" -#: gitk:9644 +#: gitk:9663 msgid "Mixed: Leave working tree untouched, reset index" msgstr "" "Pha trộn: Không động chạm đến thư mục làm việc nhưng đặt lại bảng mục lục" -#: gitk:9647 +#: gitk:9666 msgid "" "Hard: Reset working tree and index\n" "(discard ALL local changes)" @@ -1104,19 +1117,19 @@ msgstr "" "Hard: Đặt lại cây làm việc và mục lục\n" "(hủy bỏ MỌI thay đổi nội bộ)" -#: gitk:9664 +#: gitk:9683 msgid "Resetting" msgstr "Đang đặt lại" -#: gitk:9724 +#: gitk:9743 msgid "Checking out" msgstr "Đang checkout" -#: gitk:9777 +#: gitk:9796 msgid "Cannot delete the currently checked-out branch" msgstr "Không thể xóa nhánh hiện tại đang được lấy ra" -#: gitk:9783 +#: gitk:9802 #, tcl-format msgid "" "The commits on branch %s aren't on any other branch.\n" @@ -1125,16 +1138,16 @@ msgstr "" "Các lần chuyển giao trên nhánh %s không ở trên nhánh khác.\n" "Thực sự muốn xóa nhánh %s?" -#: gitk:9814 +#: gitk:9833 #, tcl-format msgid "Tags and heads: %s" msgstr "Thẻ và Đầu: %s" -#: gitk:9829 +#: gitk:9850 msgid "Filter" msgstr "Bộ lọc" -#: gitk:10125 +#: gitk:10146 msgid "" "Error reading commit topology information; branch and preceding/following " "tag information will be incomplete." @@ -1142,216 +1155,221 @@ msgstr "" "Gặp lỗi khi đọc thông tin hình học lần chuyển giao; thông tin nhánh và thẻ " "trước/sau sẽ không hoàn thiện." -#: gitk:11102 +#: gitk:11123 msgid "Tag" msgstr "Thẻ" -#: gitk:11106 +#: gitk:11127 msgid "Id" msgstr "Id" -#: gitk:11189 +#: gitk:11210 msgid "Gitk font chooser" msgstr "Hộp thoại chọn phông Gitk" -#: gitk:11206 +#: gitk:11227 msgid "B" msgstr "B" -#: gitk:11209 +#: gitk:11230 msgid "I" msgstr "I" -#: gitk:11327 +#: gitk:11348 msgid "Commit list display options" msgstr "Các tùy chọn về hiển thị danh sách lần chuyển giao" -#: gitk:11330 +#: gitk:11351 msgid "Maximum graph width (lines)" msgstr "Độ rộng biểu đồ tối đa (dòng)" -#: gitk:11334 +#: gitk:11355 #, no-tcl-format msgid "Maximum graph width (% of pane)" msgstr "Độ rộng biểu đồ tối đa (% của bảng)" -#: gitk:11337 +#: gitk:11358 msgid "Show local changes" msgstr "Hiển thị các thay đổi nội bộ" -#: gitk:11340 +#: gitk:11361 msgid "Auto-select SHA1 (length)" msgstr "Tự chọn SHA1 (độ dài)" -#: gitk:11344 +#: gitk:11365 msgid "Hide remote refs" msgstr "Ẩn tham chiếu đến máy chủ" -#: gitk:11348 +#: gitk:11369 msgid "Diff display options" msgstr "Các tùy chọn trình bày các khác biệt" -#: gitk:11350 +#: gitk:11371 msgid "Tab spacing" msgstr "Khoảng cách tab" -#: gitk:11353 +#: gitk:11374 msgid "Display nearby tags/heads" msgstr "Hiển thị các thẻ/đầu xung quanh" -#: gitk:11356 +#: gitk:11377 msgid "Maximum # tags/heads to show" msgstr "Số lượng thẻ/đầu tối đa sẽ hiển thị" -#: gitk:11359 +#: gitk:11380 msgid "Limit diffs to listed paths" msgstr "Giới hạn các khác biệt cho đường dẫn đã liệt kê" -#: gitk:11362 +#: gitk:11383 msgid "Support per-file encodings" msgstr "Hỗ trợ mã hóa mỗi-dòng" -#: gitk:11368 gitk:11515 +#: gitk:11389 gitk:11536 msgid "External diff tool" msgstr "Công cụ so sánh từ bên ngoài" -#: gitk:11369 +#: gitk:11390 msgid "Choose..." msgstr "Chọn..." -#: gitk:11374 +#: gitk:11395 msgid "General options" msgstr "Các tùy chọn chung" -#: gitk:11377 +#: gitk:11398 msgid "Use themed widgets" msgstr "Dùng các widget chủ đề" -#: gitk:11379 +#: gitk:11400 msgid "(change requires restart)" msgstr "(để thay đổi cần khởi động lại)" -#: gitk:11381 +#: gitk:11402 msgid "(currently unavailable)" msgstr "(hiện tại không sẵn sàng)" -#: gitk:11392 +#: gitk:11413 msgid "Colors: press to choose" msgstr "Màu sắc: bấm vào nút phía dưới để chọn màu" -#: gitk:11395 +#: gitk:11416 msgid "Interface" msgstr "Giao diện" -#: gitk:11396 +#: gitk:11417 msgid "interface" msgstr "giao diện" -#: gitk:11399 +#: gitk:11420 msgid "Background" msgstr "Nền" -#: gitk:11400 gitk:11430 +#: gitk:11421 gitk:11451 msgid "background" msgstr "nền" -#: gitk:11403 +#: gitk:11424 msgid "Foreground" msgstr "Tiền cảnh" -#: gitk:11404 +#: gitk:11425 msgid "foreground" msgstr "tiền cảnh" -#: gitk:11407 +#: gitk:11428 msgid "Diff: old lines" msgstr "So sánh: dòng cũ" -#: gitk:11408 +#: gitk:11429 msgid "diff old lines" msgstr "diff dòng cũ" -#: gitk:11412 +#: gitk:11433 msgid "Diff: new lines" msgstr "So sánh: dòng mới" -#: gitk:11413 +#: gitk:11434 msgid "diff new lines" msgstr "màu dòng mới" -#: gitk:11417 +#: gitk:11438 msgid "Diff: hunk header" msgstr "So sánh: phần đầu của đoạn" -#: gitk:11419 +#: gitk:11440 msgid "diff hunk header" msgstr "màu của phần đầu của đoạn khi so sánh" -#: gitk:11423 +#: gitk:11444 msgid "Marked line bg" msgstr "Nền dòng đánh dấu" -#: gitk:11425 +#: gitk:11446 msgid "marked line background" msgstr "nền dòng được đánh dấu" -#: gitk:11429 +#: gitk:11450 msgid "Select bg" msgstr "Màu nền" -#: gitk:11438 +#: gitk:11459 msgid "Fonts: press to choose" msgstr "Phông chữ: bấm vào các nút ở dưới để chọn" -#: gitk:11440 +#: gitk:11461 msgid "Main font" msgstr "Phông chữ chính" -#: gitk:11441 +#: gitk:11462 msgid "Diff display font" msgstr "Phông chữ dùng khi so sánh" -#: gitk:11442 +#: gitk:11463 msgid "User interface font" msgstr "Phông chữ giao diện" -#: gitk:11464 +#: gitk:11485 msgid "Gitk preferences" msgstr "Cá nhân hóa các cài đặt cho Gitk" -#: gitk:11473 +#: gitk:11494 msgid "General" msgstr "Chung" -#: gitk:11474 +#: gitk:11495 msgid "Colors" msgstr "Màu sắc" -#: gitk:11475 +#: gitk:11496 msgid "Fonts" msgstr "Phông chữ" -#: gitk:11525 +#: gitk:11546 #, tcl-format msgid "Gitk: choose color for %s" msgstr "Gitk: chọn màu cho %s" -#: gitk:12242 +#: gitk:12059 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" + +#: gitk:12269 msgid "Cannot find a git repository here." msgstr "Không thể tìm thấy kho git ở đây." -#: gitk:12289 +#: gitk:12316 #, tcl-format msgid "Ambiguous argument '%s': both revision and filename" msgstr "Đối số “%s” chưa rõ ràng: vừa là điểm xét duyệt vừa là tên tập tin" -#: gitk:12301 +#: gitk:12328 msgid "Bad arguments to gitk:" msgstr "Đối số không hợp lệ cho gitk:" -#: gitk:12405 -msgid "Command line" -msgstr "Dòng lệnh" +#~ msgid "mc" +#~ msgstr "mc" #~ msgid "next" #~ msgstr "tiếp" diff --git a/http.c b/http.c index 9dce38025c..0f924a8b48 100644 --- a/http.c +++ b/http.c @@ -9,6 +9,7 @@ #include "version.h" #include "pkt-line.h" #include "gettext.h" +#include "transport.h" int active_requests; int http_is_verbose; @@ -356,6 +357,7 @@ static void set_curl_keepalive(CURL *c) static CURL *get_curl_handle(void) { CURL *result = curl_easy_init(); + long allowed_protocols = 0; if (!result) die("curl_easy_init failed"); @@ -425,11 +427,27 @@ static CURL *get_curl_handle(void) } curl_easy_setopt(result, CURLOPT_FOLLOWLOCATION, 1); + curl_easy_setopt(result, CURLOPT_MAXREDIRS, 20); #if LIBCURL_VERSION_NUM >= 0x071301 curl_easy_setopt(result, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL); #elif LIBCURL_VERSION_NUM >= 0x071101 curl_easy_setopt(result, CURLOPT_POST301, 1); #endif +#if LIBCURL_VERSION_NUM >= 0x071304 + if (is_transport_allowed("http")) + allowed_protocols |= CURLPROTO_HTTP; + if (is_transport_allowed("https")) + allowed_protocols |= CURLPROTO_HTTPS; + if (is_transport_allowed("ftp")) + allowed_protocols |= CURLPROTO_FTP; + if (is_transport_allowed("ftps")) + allowed_protocols |= CURLPROTO_FTPS; + curl_easy_setopt(result, CURLOPT_REDIR_PROTOCOLS, allowed_protocols); +#else + if (transport_restrict_protocols()) + warning("protocol restrictions not applied to curl redirects because\n" + "your curl version is too old (>= 7.19.4)"); +#endif if (getenv("GIT_CURL_VERBOSE")) curl_easy_setopt(result, CURLOPT_VERBOSE, 1); diff --git a/line-log.c b/line-log.c index c12c69f05a..626b22cc31 100644 --- a/line-log.c +++ b/line-log.c @@ -325,7 +325,7 @@ static int collect_diff_cb(long start_a, long count_a, return 0; } -static void collect_diff(mmfile_t *parent, mmfile_t *target, struct diff_ranges *out) +static int collect_diff(mmfile_t *parent, mmfile_t *target, struct diff_ranges *out) { struct collect_diff_cbdata cbdata = {NULL}; xpparam_t xpp; @@ -340,7 +340,7 @@ static void collect_diff(mmfile_t *parent, mmfile_t *target, struct diff_ranges xecfg.hunk_func = collect_diff_cb; memset(&ecb, 0, sizeof(ecb)); ecb.priv = &cbdata; - xdi_diff(parent, target, &xpp, &xecfg, &ecb); + return xdi_diff(parent, target, &xpp, &xecfg, &ecb); } /* @@ -1030,7 +1030,8 @@ static int process_diff_filepair(struct rev_info *rev, } diff_ranges_init(&diff); - collect_diff(&file_parent, &file_target, &diff); + if (collect_diff(&file_parent, &file_target, &diff)) + die("unable to generate diff for %s", pair->one->path); /* NEEDSWORK should apply some heuristics to prevent mismatches */ free(rg->path); diff --git a/ll-merge.c b/ll-merge.c index fc3c049594..bf83290793 100644 --- a/ll-merge.c +++ b/ll-merge.c @@ -89,7 +89,10 @@ static int ll_xdl_merge(const struct ll_merge_driver *drv_unused, xmparam_t xmp; assert(opts); - if (buffer_is_binary(orig->ptr, orig->size) || + if (orig->size > MAX_XDIFF_SIZE || + src1->size > MAX_XDIFF_SIZE || + src2->size > MAX_XDIFF_SIZE || + buffer_is_binary(orig->ptr, orig->size) || buffer_is_binary(src1->ptr, src1->size) || buffer_is_binary(src2->ptr, src2->size)) { return ll_binary_merge(drv_unused, result, diff --git a/notes.c b/notes.c index df08209dee..eacd2a61da 100644 --- a/notes.c +++ b/notes.c @@ -362,13 +362,14 @@ static int non_note_cmp(const struct non_note *a, const struct non_note *b) return strcmp(a->path, b->path); } -static void add_non_note(struct notes_tree *t, const char *path, +/* note: takes ownership of path string */ +static void add_non_note(struct notes_tree *t, char *path, unsigned int mode, const unsigned char *sha1) { struct non_note *p = t->prev_non_note, *n; n = (struct non_note *) xmalloc(sizeof(struct non_note)); n->next = NULL; - n->path = xstrdup(path); + n->path = path; n->mode = mode; hashcpy(n->sha1, sha1); t->prev_non_note = n; @@ -482,17 +483,17 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree, * component. */ { - char non_note_path[PATH_MAX]; - char *p = non_note_path; + struct strbuf non_note_path = STRBUF_INIT; const char *q = sha1_to_hex(subtree->key_sha1); int i; for (i = 0; i < prefix_len; i++) { - *p++ = *q++; - *p++ = *q++; - *p++ = '/'; + strbuf_addch(&non_note_path, *q++); + strbuf_addch(&non_note_path, *q++); + strbuf_addch(&non_note_path, '/'); } - strcpy(p, entry.path); - add_non_note(t, non_note_path, entry.mode, entry.sha1); + strbuf_addstr(&non_note_path, entry.path); + add_non_note(t, strbuf_detach(&non_note_path, NULL), + entry.mode, entry.sha1); } } free(buf); diff --git a/pager.c b/pager.c index 27d4c8a17a..e425070528 100644 --- a/pager.c +++ b/pager.c @@ -14,19 +14,29 @@ static const char *pager_argv[] = { NULL, NULL }; static struct child_process pager_process = CHILD_PROCESS_INIT; -static void wait_for_pager(void) +static void wait_for_pager(int in_signal) { - fflush(stdout); - fflush(stderr); + if (!in_signal) { + fflush(stdout); + fflush(stderr); + } /* signal EOF to pager */ close(1); close(2); - finish_command(&pager_process); + if (in_signal) + finish_command_in_signal(&pager_process); + else + finish_command(&pager_process); +} + +static void wait_for_pager_atexit(void) +{ + wait_for_pager(0); } static void wait_for_pager_signal(int signo) { - wait_for_pager(); + wait_for_pager(1); sigchain_pop(signo); raise(signo); } @@ -90,7 +100,7 @@ void setup_pager(void) /* this makes sure that the parent terminates after the pager */ sigchain_push_common(wait_for_pager_signal); - atexit(wait_for_pager); + atexit(wait_for_pager_atexit); } int pager_in_use(void) diff --git a/parse-options-cb.c b/parse-options-cb.c index 5ab6ed6b08..239898d946 100644 --- a/parse-options-cb.c +++ b/parse-options-cb.c @@ -5,6 +5,7 @@ #include "color.h" #include "string-list.h" #include "argv-array.h" +#include "sha1-array.h" /*----- some often used options -----*/ @@ -77,7 +78,7 @@ int parse_opt_verbosity_cb(const struct option *opt, const char *arg, return 0; } -int parse_opt_with_commit(const struct option *opt, const char *arg, int unset) +int parse_opt_commits(const struct option *opt, const char *arg, int unset) { unsigned char sha1[20]; struct commit *commit; @@ -93,6 +94,22 @@ int parse_opt_with_commit(const struct option *opt, const char *arg, int unset) return 0; } +int parse_opt_object_name(const struct option *opt, const char *arg, int unset) +{ + unsigned char sha1[20]; + + if (unset) { + sha1_array_clear(opt->value); + return 0; + } + if (!arg) + return -1; + if (get_sha1(arg, sha1)) + return error(_("malformed object name '%s'"), arg); + sha1_array_append(opt->value, sha1); + return 0; +} + int parse_opt_tertiary(const struct option *opt, const char *arg, int unset) { int *target = opt->value; diff --git a/parse-options.h b/parse-options.h index 3f1cc3aee0..e8b55ea87a 100644 --- a/parse-options.h +++ b/parse-options.h @@ -223,7 +223,8 @@ extern int parse_opt_approxidate_cb(const struct option *, const char *, int); extern int parse_opt_expiry_date_cb(const struct option *, const char *, int); extern int parse_opt_color_flag_cb(const struct option *, const char *, int); extern int parse_opt_verbosity_cb(const struct option *, const char *, int); -extern int parse_opt_with_commit(const struct option *, const char *, int); +extern int parse_opt_object_name(const struct option *, const char *, int); +extern int parse_opt_commits(const struct option *, const char *, int); extern int parse_opt_tertiary(const struct option *, const char *, int); extern int parse_opt_string_list(const struct option *, const char *, int); extern int parse_opt_noop_cb(const struct option *, const char *, int); @@ -251,5 +252,12 @@ extern int parse_opt_passthru_argv(const struct option *, const char *, int); { OPTION_CALLBACK, (s), (l), (v), (a), (h), (f), parse_opt_passthru } #define OPT_PASSTHRU_ARGV(s, l, v, a, h, f) \ { OPTION_CALLBACK, (s), (l), (v), (a), (h), (f), parse_opt_passthru_argv } +#define _OPT_CONTAINS_OR_WITH(name, variable, help, flag) \ + { OPTION_CALLBACK, 0, name, (variable), N_("commit"), (help), \ + PARSE_OPT_LASTARG_DEFAULT | flag, \ + parse_opt_commits, (intptr_t) "HEAD" \ + } +#define OPT_CONTAINS(v, h) _OPT_CONTAINS_OR_WITH("contains", v, h, 0) +#define OPT_WITH(v, h) _OPT_CONTAINS_OR_WITH("with", v, h, PARSE_OPT_HIDDEN) #endif diff --git a/path.c b/path.c index 95acbafa68..62a2ae82dd 100644 --- a/path.c +++ b/path.c @@ -91,54 +91,274 @@ static void replace_dir(struct strbuf *buf, int len, const char *newdir) buf->buf[newlen] = '/'; } -static const char *common_list[] = { - "/branches", "/hooks", "/info", "!/logs", "/lost-found", - "/objects", "/refs", "/remotes", "/worktrees", "/rr-cache", "/svn", - "config", "!gc.pid", "packed-refs", "shallow", - NULL +struct common_dir { + /* Not considered garbage for report_linked_checkout_garbage */ + unsigned ignore_garbage:1; + unsigned is_dir:1; + /* Not common even though its parent is */ + unsigned exclude:1; + const char *dirname; }; -static void update_common_dir(struct strbuf *buf, int git_dir_len) +static struct common_dir common_list[] = { + { 0, 1, 0, "branches" }, + { 0, 1, 0, "hooks" }, + { 0, 1, 0, "info" }, + { 0, 0, 1, "info/sparse-checkout" }, + { 1, 1, 0, "logs" }, + { 1, 1, 1, "logs/HEAD" }, + { 0, 1, 1, "logs/refs/bisect" }, + { 0, 1, 0, "lost-found" }, + { 0, 1, 0, "objects" }, + { 0, 1, 0, "refs" }, + { 0, 1, 1, "refs/bisect" }, + { 0, 1, 0, "remotes" }, + { 0, 1, 0, "worktrees" }, + { 0, 1, 0, "rr-cache" }, + { 0, 1, 0, "svn" }, + { 0, 0, 0, "config" }, + { 1, 0, 0, "gc.pid" }, + { 0, 0, 0, "packed-refs" }, + { 0, 0, 0, "shallow" }, + { 0, 0, 0, NULL } +}; + +/* + * A compressed trie. A trie node consists of zero or more characters that + * are common to all elements with this prefix, optionally followed by some + * children. If value is not NULL, the trie node is a terminal node. + * + * For example, consider the following set of strings: + * abc + * def + * definite + * definition + * + * The trie would look look like: + * root: len = 0, children a and d non-NULL, value = NULL. + * a: len = 2, contents = bc, value = (data for "abc") + * d: len = 2, contents = ef, children i non-NULL, value = (data for "def") + * i: len = 3, contents = nit, children e and i non-NULL, value = NULL + * e: len = 0, children all NULL, value = (data for "definite") + * i: len = 2, contents = on, children all NULL, + * value = (data for "definition") + */ +struct trie { + struct trie *children[256]; + int len; + char *contents; + void *value; +}; + +static struct trie *make_trie_node(const char *key, void *value) { - char *base = buf->buf + git_dir_len; - const char **p; - - if (is_dir_file(base, "logs", "HEAD") || - is_dir_file(base, "info", "sparse-checkout")) - return; /* keep this in $GIT_DIR */ - for (p = common_list; *p; p++) { - const char *path = *p; - int is_dir = 0; - if (*path == '!') - path++; - if (*path == '/') { - path++; - is_dir = 1; + struct trie *new_node = xcalloc(1, sizeof(*new_node)); + new_node->len = strlen(key); + if (new_node->len) { + new_node->contents = xmalloc(new_node->len); + memcpy(new_node->contents, key, new_node->len); + } + new_node->value = value; + return new_node; +} + +/* + * Add a key/value pair to a trie. The key is assumed to be \0-terminated. + * If there was an existing value for this key, return it. + */ +static void *add_to_trie(struct trie *root, const char *key, void *value) +{ + struct trie *child; + void *old; + int i; + + if (!*key) { + /* we have reached the end of the key */ + old = root->value; + root->value = value; + return old; + } + + for (i = 0; i < root->len; i++) { + if (root->contents[i] == key[i]) + continue; + + /* + * Split this node: child will contain this node's + * existing children. + */ + child = malloc(sizeof(*child)); + memcpy(child->children, root->children, sizeof(root->children)); + + child->len = root->len - i - 1; + if (child->len) { + child->contents = xstrndup(root->contents + i + 1, + child->len); } - if (is_dir && dir_prefix(base, path)) { - replace_dir(buf, git_dir_len, get_git_common_dir()); - return; + child->value = root->value; + root->value = NULL; + root->len = i; + + memset(root->children, 0, sizeof(root->children)); + root->children[(unsigned char)root->contents[i]] = child; + + /* This is the newly-added child. */ + root->children[(unsigned char)key[i]] = + make_trie_node(key + i + 1, value); + return NULL; + } + + /* We have matched the entire compressed section */ + if (key[i]) { + child = root->children[(unsigned char)key[root->len]]; + if (child) { + return add_to_trie(child, key + root->len + 1, value); + } else { + child = make_trie_node(key + root->len + 1, value); + root->children[(unsigned char)key[root->len]] = child; + return NULL; } - if (!is_dir && !strcmp(base, path)) { - replace_dir(buf, git_dir_len, get_git_common_dir()); - return; + } + + old = root->value; + root->value = value; + return old; +} + +typedef int (*match_fn)(const char *unmatched, void *data, void *baton); + +/* + * Search a trie for some key. Find the longest /-or-\0-terminated + * prefix of the key for which the trie contains a value. Call fn + * with the unmatched portion of the key and the found value, and + * return its return value. If there is no such prefix, return -1. + * + * The key is partially normalized: consecutive slashes are skipped. + * + * For example, consider the trie containing only [refs, + * refs/worktree] (both with values). + * + * | key | unmatched | val from node | return value | + * |-----------------|------------|---------------|--------------| + * | a | not called | n/a | -1 | + * | refs | \0 | refs | as per fn | + * | refs/ | / | refs | as per fn | + * | refs/w | /w | refs | as per fn | + * | refs/worktree | \0 | refs/worktree | as per fn | + * | refs/worktree/ | / | refs/worktree | as per fn | + * | refs/worktree/a | /a | refs/worktree | as per fn | + * |-----------------|------------|---------------|--------------| + * + */ +static int trie_find(struct trie *root, const char *key, match_fn fn, + void *baton) +{ + int i; + int result; + struct trie *child; + + if (!*key) { + /* we have reached the end of the key */ + if (root->value && !root->len) + return fn(key, root->value, baton); + else + return -1; + } + + for (i = 0; i < root->len; i++) { + /* Partial path normalization: skip consecutive slashes. */ + if (key[i] == '/' && key[i+1] == '/') { + key++; + continue; } + if (root->contents[i] != key[i]) + return -1; } + + /* Matched the entire compressed section */ + key += i; + if (!*key) + /* End of key */ + return fn(key, root->value, baton); + + /* Partial path normalization: skip consecutive slashes */ + while (key[0] == '/' && key[1] == '/') + key++; + + child = root->children[(unsigned char)*key]; + if (child) + result = trie_find(child, key + 1, fn, baton); + else + result = -1; + + if (result >= 0 || (*key != '/' && *key != 0)) + return result; + if (root->value) + return fn(key, root->value, baton); + else + return -1; +} + +static struct trie common_trie; +static int common_trie_done_setup; + +static void init_common_trie(void) +{ + struct common_dir *p; + + if (common_trie_done_setup) + return; + + for (p = common_list; p->dirname; p++) + add_to_trie(&common_trie, p->dirname, p); + + common_trie_done_setup = 1; +} + +/* + * Helper function for update_common_dir: returns 1 if the dir + * prefix is common. + */ +static int check_common(const char *unmatched, void *value, void *baton) +{ + struct common_dir *dir = value; + + if (!dir) + return 0; + + if (dir->is_dir && (unmatched[0] == 0 || unmatched[0] == '/')) + return !dir->exclude; + + if (!dir->is_dir && unmatched[0] == 0) + return !dir->exclude; + + return 0; +} + +static void update_common_dir(struct strbuf *buf, int git_dir_len, + const char *common_dir) +{ + char *base = buf->buf + git_dir_len; + init_common_trie(); + if (!common_dir) + common_dir = get_git_common_dir(); + if (trie_find(&common_trie, base, check_common, NULL) > 0) + replace_dir(buf, git_dir_len, common_dir); } void report_linked_checkout_garbage(void) { struct strbuf sb = STRBUF_INIT; - const char **p; + const struct common_dir *p; int len; if (!git_common_dir_env) return; strbuf_addf(&sb, "%s/", get_git_dir()); len = sb.len; - for (p = common_list; *p; p++) { - const char *path = *p; - if (*path == '!') + for (p = common_list; p->dirname; p++) { + const char *path = p->dirname; + if (p->ignore_garbage) continue; strbuf_setlen(&sb, len); strbuf_addstr(&sb, path); @@ -160,7 +380,7 @@ static void adjust_git_path(struct strbuf *buf, int git_dir_len) else if (git_db_env && dir_prefix(base, "objects")) replace_dir(buf, git_dir_len + 7, get_object_directory()); else if (git_common_dir_env) - update_common_dir(buf, git_dir_len); + update_common_dir(buf, git_dir_len, NULL); } static void do_git_path(struct strbuf *buf, const char *fmt, va_list args) @@ -228,6 +448,8 @@ static void do_submodule_path(struct strbuf *buf, const char *path, const char *fmt, va_list args) { const char *git_dir; + struct strbuf git_submodule_common_dir = STRBUF_INIT; + struct strbuf git_submodule_dir = STRBUF_INIT; strbuf_addstr(buf, path); if (buf->len && buf->buf[buf->len - 1] != '/') @@ -240,9 +462,17 @@ static void do_submodule_path(struct strbuf *buf, const char *path, strbuf_addstr(buf, git_dir); } strbuf_addch(buf, '/'); + strbuf_addstr(&git_submodule_dir, buf->buf); strbuf_vaddf(buf, fmt, args); + + if (get_common_dir_noenv(&git_submodule_common_dir, git_submodule_dir.buf)) + update_common_dir(buf, git_submodule_dir.len, git_submodule_common_dir.buf); + strbuf_cleanup_path(buf); + + strbuf_release(&git_submodule_dir); + strbuf_release(&git_submodule_common_dir); } char *git_pathdup_submodule(const char *path, const char *fmt, ...) @@ -431,18 +661,22 @@ const char *enter_repo(const char *path, int strict) } if (!suffix[i]) return NULL; - gitfile = read_gitfile(used_path) ; + gitfile = read_gitfile(used_path); if (gitfile) strcpy(used_path, gitfile); if (chdir(used_path)) return NULL; path = validated_path; } - else if (chdir(path)) - return NULL; + else { + const char *gitfile = read_gitfile(path); + if (gitfile) + path = gitfile; + if (chdir(path)) + return NULL; + } - if (access("objects", X_OK) == 0 && access("refs", X_OK) == 0 && - validate_headref("HEAD") == 0) { + if (is_git_directory(".")) { set_git_dir("."); check_repository_format(); return path; diff --git a/pkt-line.c b/pkt-line.c index 08a1427c0d..62fdb37079 100644 --- a/pkt-line.c +++ b/pkt-line.c @@ -1,5 +1,6 @@ #include "cache.h" #include "pkt-line.h" +#include "run-command.h" char packet_buffer[LARGE_PACKET_MAX]; static const char *packet_trace_prefix = "git"; @@ -11,6 +12,11 @@ void packet_trace_identity(const char *prog) packet_trace_prefix = xstrdup(prog); } +static const char *get_trace_prefix(void) +{ + return in_async() ? "sideband" : packet_trace_prefix; +} + static int packet_trace_pack(const char *buf, unsigned int len, int sideband) { if (!sideband) { @@ -57,7 +63,7 @@ static void packet_trace(const char *buf, unsigned int len, int write) strbuf_init(&out, len+32); strbuf_addf(&out, "packet: %12s%c ", - packet_trace_prefix, write ? '>' : '<'); + get_trace_prefix(), write ? '>' : '<'); /* XXX we should really handle printable utf8 */ for (i = 0; i < len; i++) { diff --git a/po/TEAMS b/po/TEAMS index d277171d06..5e1f7e0b50 100644 --- a/po/TEAMS +++ b/po/TEAMS @@ -53,10 +53,4 @@ Members: Nguyễn Thái Ngọc Duy Language: zh_CN (Simplified Chinese) Repository: https://github.com/jiangxin/git/ Leader: Jiang Xin -Members: Riku - Zhuang Ya - Lian Cheng - Yichao Yu - ws3389 - Thynson - Wang Sheng +Members: Ray Chen diff --git a/po/ca.po b/po/ca.po index b0d21602fd..c92a18cea0 100644 --- a/po/ca.po +++ b/po/ca.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: Git\n" "Report-Msgid-Bugs-To: Git Mailing List \n" -"POT-Creation-Date: 2015-07-14 07:19+0800\n" -"PO-Revision-Date: 2015-07-20 11:54-0600\n" +"POT-Creation-Date: 2015-09-15 06:45+0800\n" +"PO-Revision-Date: 2015-09-14 21:05-0600\n" "Last-Translator: Alex Henrie \n" "Language-Team: Catalan\n" "Language: ca\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.8.2\n" +"X-Generator: Poedit 1.8.4\n" #: advice.c:55 #, c-format @@ -32,95 +32,107 @@ msgstr "" "'git add/rm ' segons sigui apropiat per a marcar la\n" "resolució i feu una comissió." -#: archive.c:11 +#: advice.c:101 builtin/merge.c:1227 +msgid "You have not concluded your merge (MERGE_HEAD exists)." +msgstr "No heu conclòs la vostra fusió (MERGE_HEAD existeix)." + +#: advice.c:103 +msgid "Please, commit your changes before you can merge." +msgstr "Si us plau, cometeu els vostres canvis abans de fusionar." + +#: advice.c:104 +msgid "Exiting because of unfinished merge." +msgstr "Sortint a causa d'una fusió no terminada." + +#: archive.c:12 msgid "git archive [] [...]" msgstr "git archive [] [...]" -#: archive.c:12 +#: archive.c:13 msgid "git archive --list" msgstr "git archive --list" -#: archive.c:13 +#: archive.c:14 msgid "" "git archive --remote [--exec ] [] [...]" msgstr "" "git archive --remote [--exec ] [] " "[...]" -#: archive.c:14 +#: archive.c:15 msgid "git archive --remote [--exec ] --list" msgstr "git archive --remote [--exec ] --list" -#: archive.c:342 builtin/add.c:137 builtin/add.c:428 builtin/rm.c:327 +#: archive.c:343 builtin/add.c:137 builtin/add.c:426 builtin/rm.c:327 #, c-format msgid "pathspec '%s' did not match any files" msgstr "L'especificació de camí '%s' no ha coincidit amb cap fitxer" -#: archive.c:427 +#: archive.c:428 msgid "fmt" msgstr "format" -#: archive.c:427 +#: archive.c:428 msgid "archive format" msgstr "format d'arxiu" -#: archive.c:428 builtin/log.c:1204 +#: archive.c:429 builtin/log.c:1229 msgid "prefix" msgstr "prefix" -#: archive.c:429 +#: archive.c:430 msgid "prepend prefix to each pathname in the archive" msgstr "anteposa el prefix a cada nom de camí en l'arxiu" -#: archive.c:430 builtin/archive.c:88 builtin/blame.c:2516 -#: builtin/blame.c:2517 builtin/config.c:57 builtin/fast-export.c:986 -#: builtin/fast-export.c:988 builtin/grep.c:712 builtin/hash-object.c:99 -#: builtin/ls-files.c:446 builtin/ls-files.c:449 builtin/notes.c:394 -#: builtin/notes.c:557 builtin/read-tree.c:109 parse-options.h:150 +#: archive.c:431 builtin/archive.c:88 builtin/blame.c:2516 builtin/blame.c:2517 +#: builtin/config.c:58 builtin/fast-export.c:987 builtin/fast-export.c:989 +#: builtin/grep.c:712 builtin/hash-object.c:99 builtin/ls-files.c:446 +#: builtin/ls-files.c:449 builtin/notes.c:395 builtin/notes.c:558 +#: builtin/read-tree.c:109 parse-options.h:153 msgid "file" msgstr "fitxer" -#: archive.c:431 builtin/archive.c:89 +#: archive.c:432 builtin/archive.c:89 msgid "write the archive to this file" msgstr "escriu l'arxiu a aquest fitxer" -#: archive.c:433 +#: archive.c:434 msgid "read .gitattributes in working directory" msgstr "llegeix .gitattributes en el directori de treball" -#: archive.c:434 +#: archive.c:435 msgid "report archived files on stderr" msgstr "informa de fitxers arxivats en stderr" -#: archive.c:435 +#: archive.c:436 msgid "store only" -msgstr "només emmagatzemar" +msgstr "només emmagatzema" -#: archive.c:436 +#: archive.c:437 msgid "compress faster" msgstr "comprimeix més ràpid" -#: archive.c:444 +#: archive.c:445 msgid "compress better" msgstr "comprimeix millor" -#: archive.c:447 +#: archive.c:448 msgid "list supported archive formats" msgstr "allista els formats d'arxiu admesos" -#: archive.c:449 builtin/archive.c:90 builtin/clone.c:77 +#: archive.c:450 builtin/archive.c:90 builtin/clone.c:77 msgid "repo" msgstr "dipòsit" -#: archive.c:450 builtin/archive.c:91 +#: archive.c:451 builtin/archive.c:91 msgid "retrieve the archive from remote repository " msgstr "recupera l'arxiu del dipòsit remot " -#: archive.c:451 builtin/archive.c:92 builtin/notes.c:478 +#: archive.c:452 builtin/archive.c:92 builtin/notes.c:479 msgid "command" msgstr "ordre" -#: archive.c:452 builtin/archive.c:93 +#: archive.c:453 builtin/archive.c:93 msgid "path to the remote git-upload-archive command" msgstr "camí a l'ordre git-upload-archive remot" @@ -251,6 +263,11 @@ msgstr "Nom d'objecte ambigu: '%s'." msgid "Not a valid branch point: '%s'." msgstr "No és un punt de ramificació vàlid: '%s'." +#: branch.c:399 +#, c-format +msgid "'%s' is already checked out at '%s'" +msgstr "'%s' ja s'ha agafat a '%s'" + #: bundle.c:34 #, c-format msgid "'%s' does not look like a v2 bundle file" @@ -261,7 +278,7 @@ msgstr "'%s' no sembla un fitxer de farcell v2" msgid "unrecognized header: %s%s (%d)" msgstr "capçalera no reconeguda: %s%s (%d)" -#: bundle.c:87 builtin/commit.c:766 +#: bundle.c:87 builtin/commit.c:765 #, c-format msgid "could not open '%s'" msgstr "no s'ha pogut obrir '%s'" @@ -270,9 +287,9 @@ msgstr "no s'ha pogut obrir '%s'" msgid "Repository lacks these prerequisite commits:" msgstr "Al dipòsit li manquen aquestes comissions prerequisits:" -#: bundle.c:163 sequencer.c:650 sequencer.c:1105 builtin/blame.c:2705 -#: builtin/branch.c:651 builtin/commit.c:1045 builtin/log.c:330 -#: builtin/log.c:825 builtin/log.c:1432 builtin/log.c:1666 builtin/merge.c:358 +#: bundle.c:163 sequencer.c:636 sequencer.c:1083 builtin/blame.c:2708 +#: builtin/branch.c:652 builtin/commit.c:1044 builtin/log.c:334 +#: builtin/log.c:850 builtin/log.c:1457 builtin/log.c:1690 builtin/merge.c:358 #: builtin/shortlog.c:158 msgid "revision walk setup failed" msgstr "la configuració del passeig per revisions ha fallat" @@ -295,38 +312,38 @@ msgid_plural "The bundle requires these %d refs:" msgstr[0] "El farcell requereix aquesta referència:" msgstr[1] "El farcell requereix aquestes %d referències:" -#: bundle.c:251 +#: bundle.c:253 msgid "Could not spawn pack-objects" msgstr "No s'ha pogut executar el pack-objects" -#: bundle.c:269 +#: bundle.c:264 msgid "pack-objects died" msgstr "El pack-objects s'ha mort" -#: bundle.c:309 +#: bundle.c:304 msgid "rev-list died" msgstr "El rev-list s'ha mort" -#: bundle.c:358 +#: bundle.c:353 #, c-format msgid "ref '%s' is excluded by the rev-list options" msgstr "les opcions de la llista de revisions exclouen la referència '%s'" -#: bundle.c:437 builtin/log.c:153 builtin/log.c:1342 builtin/shortlog.c:261 +#: bundle.c:443 builtin/log.c:157 builtin/log.c:1367 builtin/shortlog.c:261 #, c-format msgid "unrecognized argument: %s" msgstr "paràmetre no reconegut: %s" -#: bundle.c:443 +#: bundle.c:449 msgid "Refusing to create empty bundle." msgstr "Refusant crear un farcell buit." -#: bundle.c:453 +#: bundle.c:459 #, c-format msgid "cannot create '%s'" msgstr "no es pot crear '%s'" -#: bundle.c:474 +#: bundle.c:480 msgid "index-pack died" msgstr "L'index-pack s'ha mort" @@ -335,7 +352,8 @@ msgstr "L'index-pack s'ha mort" msgid "invalid color value: %.*s" msgstr "valor de color no vàlid: %.*s" -#: commit.c:40 +#: commit.c:40 builtin/am.c:451 builtin/am.c:487 builtin/am.c:1516 +#: builtin/am.c:2128 #, c-format msgid "could not parse %s" msgstr "no s'ha pogut analitzar %s" @@ -493,23 +511,23 @@ msgstr "s'ha fallat en llegir el fitxer d'ordres '%s'" msgid "Performing inexact rename detection" msgstr "Realitzant detecció inexacta de canvis de nom" -#: diff.c:114 +#: diff.c:116 #, c-format msgid " Failed to parse dirstat cut-off percentage '%s'\n" msgstr " S'ha fallat en analitzar el percentatge limitant de dirstat '%s'\n" -#: diff.c:119 +#: diff.c:121 #, c-format msgid " Unknown dirstat parameter '%s'\n" msgstr " Paràmetre de dirstat desconegut '%s'\n" -#: diff.c:214 +#: diff.c:216 #, c-format msgid "Unknown value for 'diff.submodule' config variable: '%s'" msgstr "" "Valor desconegut de la variable de configuració de 'diff.submodule': '%s'" -#: diff.c:266 +#: diff.c:268 #, c-format msgid "" "Found errors in 'diff.dirstat' config variable:\n" @@ -518,16 +536,16 @@ msgstr "" "Errors trobats en la variable de configuració 'diff.dirstat':\n" "%s" -#: diff.c:2997 +#: diff.c:2998 #, c-format msgid "external diff died, stopping at %s" msgstr "El diff external s'ha mort, aturant a %s" -#: diff.c:3393 +#: diff.c:3394 msgid "--follow requires exactly one pathspec" msgstr "--follow requereix exactament una especificació de camí" -#: diff.c:3556 +#: diff.c:3557 #, c-format msgid "" "Failed to parse --dirstat/-X option parameter:\n" @@ -536,37 +554,37 @@ msgstr "" "S'ha fallat en analitzar el paràmetre d'opció de --dirstat/-X:\n" "%s" -#: diff.c:3570 +#: diff.c:3571 #, c-format msgid "Failed to parse --submodule option parameter: '%s'" msgstr "S'ha fallat en analitzar el paràmetre d'opció de --submodule: %s" -#: dir.c:1852 +#: dir.c:1853 msgid "failed to get kernel name and information" msgstr "s'ha fallat en obtenir el nombre i la informació del nucli" -#: dir.c:1945 +#: dir.c:1936 msgid "Untracked cache is disabled on this system." msgstr "La memòria cau no seguida està deshabilitada en aquest sistema." -#: gpg-interface.c:129 gpg-interface.c:200 +#: gpg-interface.c:166 gpg-interface.c:237 msgid "could not run gpg." msgstr "no s'ha pogut executar el gpg." -#: gpg-interface.c:141 +#: gpg-interface.c:178 msgid "gpg did not accept the data" msgstr "El gpg no ha acceptat les dades" -#: gpg-interface.c:152 +#: gpg-interface.c:189 msgid "gpg failed to sign the data" msgstr "gpg ha fallat en firmar les dades" -#: gpg-interface.c:185 +#: gpg-interface.c:222 #, c-format msgid "could not create temporary file '%s': %s" msgstr "no s'ha pogut crear el fitxer temporal '%s': %s" -#: gpg-interface.c:188 +#: gpg-interface.c:225 #, c-format msgid "failed writing detached signature to '%s': %s" msgstr "s'ha fallat en escriure la firma separada a '%s': %s" @@ -650,20 +668,12 @@ msgstr[1] "" msgid "%s: %s - %s" msgstr "%s: %s - %s" -#: lockfile.c:345 -msgid "BUG: reopen a lockfile that is still open" -msgstr "BUG: reobrir un fitxer de bloqueig que encara està obert" - -#: lockfile.c:347 -msgid "BUG: reopen a lockfile that has been committed" -msgstr "BUG: reobrir un fitxer de bloqueig que s'ha comès" - #: merge.c:41 msgid "failed to read the cache" msgstr "s'ha fallat en llegir la memòria cau" -#: merge.c:94 builtin/checkout.c:376 builtin/checkout.c:587 -#: builtin/clone.c:647 +#: merge.c:94 builtin/am.c:2001 builtin/am.c:2036 builtin/checkout.c:375 +#: builtin/checkout.c:586 builtin/clone.c:715 msgid "unable to write new index file" msgstr "no s'ha pogut escriure un fitxer d'índex nou" @@ -710,7 +720,7 @@ msgstr "no es pot llegir l'objecte %s '%s'" msgid "blob expected for %s '%s'" msgstr "blob esperat per a %s '%s'" -#: merge-recursive.c:788 builtin/clone.c:306 +#: merge-recursive.c:788 builtin/clone.c:364 #, c-format msgid "failed to open '%s'" msgstr "s'ha fallat en obrir '%s'" @@ -723,7 +733,7 @@ msgstr "s'ha fallat en fer l'enllaç simbòlic '%s'" #: merge-recursive.c:799 #, c-format msgid "do not know what to do with %06o %s '%s'" -msgstr "no es sap què fer amb %06o %s '%s'" +msgstr "no se sap què fer amb %06o %s '%s'" #: merge-recursive.c:937 msgid "Failed to execute internal merge" @@ -798,7 +808,8 @@ msgstr "Canviant el nom de %s a %s i %s a %s en lloc d'això" #, c-format msgid "CONFLICT (rename/add): Rename %s->%s in %s. %s added in %s" msgstr "" -"CONFLICTE (supressió/afegiment): Canvi de nom %s->%s en %s. %s afegit en %s" +"CONFLICTE (canvi de nom/afegiment): Canvi de nom %s->%s en %s. %s afegit en " +"%s" #: merge-recursive.c:1468 #, c-format @@ -925,19 +936,19 @@ msgstr "No s'ha pogut escriure l'índex." msgid "Cannot commit uninitialized/unreferenced notes tree" msgstr "No es pot cometre un arbre de notes no inicialitzat / no referenciat" -#: notes-utils.c:82 +#: notes-utils.c:100 #, c-format msgid "Bad notes.rewriteMode value: '%s'" msgstr "Valor de notes.rewriteMode dolent: '%s'" -#: notes-utils.c:92 +#: notes-utils.c:110 #, c-format msgid "Refusing to rewrite notes in %s (outside of refs/notes/)" msgstr "Refusant reescriure les notes en %s (fora de refs/notes/)" #. TRANSLATORS: The first %s is the name of the #. environment variable, the second %s is its value -#: notes-utils.c:119 +#: notes-utils.c:137 #, c-format msgid "Bad %s value: '%s'" msgstr "Valor dolent de %s: '%s'" @@ -947,28 +958,28 @@ msgstr "Valor dolent de %s: '%s'" msgid "unable to parse object: %s" msgstr "no s'ha pogut analitzar l'objecte: %s" -#: parse-options.c:546 +#: parse-options.c:563 msgid "..." msgstr "..." -#: parse-options.c:564 +#: parse-options.c:581 #, c-format msgid "usage: %s" msgstr "ús: %s" #. TRANSLATORS: the colon here should align with the #. one in "usage: %s" translation -#: parse-options.c:568 +#: parse-options.c:585 #, c-format msgid " or: %s" msgstr " o: %s" -#: parse-options.c:571 +#: parse-options.c:588 #, c-format msgid " %s" msgstr " %s" -#: parse-options.c:605 +#: parse-options.c:622 msgid "-NUM" msgstr "-NUM" @@ -1039,7 +1050,7 @@ msgstr "" "No hi ha res a excloure per patrons :(exclusió).\n" "Potser heu oblidat afegir o ':/' o '.' ?" -#: pretty.c:968 +#: pretty.c:969 msgid "unable to parse --pretty format" msgstr "no s'ha pogut analitzar el format --pretty" @@ -1047,7 +1058,7 @@ msgstr "no s'ha pogut analitzar el format --pretty" msgid "done" msgstr "fet" -#: read-cache.c:1295 +#: read-cache.c:1296 #, c-format msgid "" "index.version set, but the value is invalid.\n" @@ -1056,7 +1067,7 @@ msgstr "" "index.version establert, però el valor no és vàlid.\n" "Usant la versió %i" -#: read-cache.c:1305 +#: read-cache.c:1306 #, c-format msgid "" "GIT_INDEX_VERSION set, but the value is invalid.\n" @@ -1065,6 +1076,31 @@ msgstr "" "GIT_INDEX_VERSION establert, però el valor no és vàlid.\n" "Usant la versió %i" +#: refs.c:2941 builtin/merge.c:760 builtin/merge.c:871 builtin/merge.c:973 +#: builtin/merge.c:983 +#, c-format +msgid "Could not open '%s' for writing" +msgstr "No s'ha pogut obrir '%s' per a escriptura" + +#: refs.c:3001 +#, c-format +msgid "could not delete reference %s: %s" +msgstr "no s'ha pogut suprimir la referència %s: %s" + +#: refs.c:3004 +#, c-format +msgid "could not delete references: %s" +msgstr "no s'ha pogut suprimir les referències: %s" + +#: refs.c:3013 +#, c-format +msgid "could not remove reference %s" +msgstr "no s'ha pogut eliminar la referència %s" + +#: ref-filter.c:660 +msgid "unable to parse format" +msgstr "no s'ha pogut analitzar el format" + #: remote.c:792 #, c-format msgid "Cannot fetch both %s and %s to %s" @@ -1187,7 +1223,16 @@ msgstr[1] "" msgid " (use \"git pull\" to merge the remote branch into yours)\n" msgstr " (useu \"git pull\" per a fusionar la branca remota a la vostra)\n" -#: revision.c:2366 +#: revision.c:2198 +msgid "your current branch appears to be broken" +msgstr "la vostra branca actual sembla trencada" + +#: revision.c:2201 +#, c-format +msgid "your current branch '%s' does not have any commits yet" +msgstr "la vostra branca actual '%s' encara no té cap comissió" + +#: revision.c:2395 msgid "--first-parent is incompatible with --bisect" msgstr "--first-parent és incompatible amb --bisect" @@ -1200,31 +1245,27 @@ msgstr "s'ha fallat en obrir /dev/null" msgid "dup2(%d,%d) failed" msgstr "dup2(%d,%d) ha fallat" -#: send-pack.c:272 +#: send-pack.c:295 msgid "failed to sign the push certificate" msgstr "s'ha fallat en firmar el certificat de pujada" -#: send-pack.c:378 +#: send-pack.c:404 msgid "the receiving end does not support --signed push" msgstr "el destí receptor no admet pujar --signed" -#: send-pack.c:389 +#: send-pack.c:406 +msgid "" +"not sending a push certificate since the receiving end does not support --" +"signed push" +msgstr "" +"no enviant una certificació de pujada perquè el destí receptor no admet " +"pujar --signed" + +#: send-pack.c:418 msgid "the receiving end does not support --atomic push" msgstr "el destí receptor no admet pujar --atomic" -#: sequencer.c:172 builtin/merge.c:760 builtin/merge.c:871 builtin/merge.c:973 -#: builtin/merge.c:983 -#, c-format -msgid "Could not open '%s' for writing" -msgstr "No s'ha pogut obrir '%s' per a escriptura" - -#: sequencer.c:174 builtin/merge.c:344 builtin/merge.c:763 builtin/merge.c:975 -#: builtin/merge.c:988 -#, c-format -msgid "Could not write to '%s'" -msgstr "No s'ha pogut escriure al '%s'" - -#: sequencer.c:195 +#: sequencer.c:183 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add ' or 'git rm '" @@ -1232,7 +1273,7 @@ msgstr "" "després de resoldre els conflictes, marqueu els camins\n" "corregits amb 'git add ' o 'git rm '" -#: sequencer.c:198 +#: sequencer.c:186 msgid "" "after resolving the conflicts, mark the corrected paths\n" "with 'git add ' or 'git rm '\n" @@ -1242,67 +1283,67 @@ msgstr "" "corregits amb 'git add ' o 'git rm '\n" "i cometeu el resultat amb 'git commit'" -#: sequencer.c:211 sequencer.c:861 sequencer.c:944 +#: sequencer.c:199 sequencer.c:842 sequencer.c:922 #, c-format msgid "Could not write to %s" msgstr "No s'ha pogut escriure a %s" -#: sequencer.c:214 +#: sequencer.c:202 #, c-format msgid "Error wrapping up %s" msgstr "Error en finalitzar %s" -#: sequencer.c:229 +#: sequencer.c:217 msgid "Your local changes would be overwritten by cherry-pick." -msgstr "Els vostres canvis locals es sobreescriurien pel recull de cireres." +msgstr "Els vostres canvis locals se sobreescriurien pel recull de cireres." -#: sequencer.c:231 +#: sequencer.c:219 msgid "Your local changes would be overwritten by revert." -msgstr "Els vostres canvis locals es sobreescriurien per la reversió." +msgstr "Els vostres canvis locals se sobreescriurien per la reversió." -#: sequencer.c:234 +#: sequencer.c:222 msgid "Commit your changes or stash them to proceed." msgstr "Cometeu els vostres canvis o emmagatzemeu-los per a procedir." #. TRANSLATORS: %s will be "revert" or "cherry-pick" -#: sequencer.c:321 +#: sequencer.c:309 #, c-format msgid "%s: Unable to write new index file" msgstr "%s: No s'ha pogut escriure un fitxer d'índex nou" -#: sequencer.c:339 +#: sequencer.c:327 msgid "Could not resolve HEAD commit\n" msgstr "No s'ha pogut resoldre la comissió HEAD\n" -#: sequencer.c:359 +#: sequencer.c:347 msgid "Unable to update cache tree\n" msgstr "No s'ha pogut actualitzar l'arbre cau\n" -#: sequencer.c:411 +#: sequencer.c:399 #, c-format msgid "Could not parse commit %s\n" msgstr "No s'ha pogut analitzar la comissió %s\n" -#: sequencer.c:416 +#: sequencer.c:404 #, c-format msgid "Could not parse parent commit %s\n" msgstr "No s'ha pogut analitzar la comissió mare %s\n" -#: sequencer.c:482 +#: sequencer.c:469 msgid "Your index file is unmerged." msgstr "El vostre fitxer d'índex està sense fusionar." -#: sequencer.c:501 +#: sequencer.c:488 #, c-format msgid "Commit %s is a merge but no -m option was given." msgstr "La comissió %s és una fusió però no s'ha donat cap opció -m." -#: sequencer.c:509 +#: sequencer.c:496 #, c-format msgid "Commit %s does not have parent %d" msgstr "La comissió %s no té mare %d" -#: sequencer.c:513 +#: sequencer.c:500 #, c-format msgid "Mainline was specified but commit %s is not a merge." msgstr "" @@ -1310,154 +1351,153 @@ msgstr "" #. TRANSLATORS: The first %s will be "revert" or #. "cherry-pick", the second %s a SHA1 -#: sequencer.c:526 +#: sequencer.c:513 #, c-format msgid "%s: cannot parse parent commit %s" msgstr "%s: no es pot analitzar la comissió mare %s" -#: sequencer.c:530 +#: sequencer.c:517 #, c-format msgid "Cannot get commit message for %s" msgstr "No es pot obtenir el missatge de comissió de %s" -#: sequencer.c:616 +#: sequencer.c:603 #, c-format msgid "could not revert %s... %s" msgstr "no s'ha pogut revertir %s...%s" -#: sequencer.c:617 +#: sequencer.c:604 #, c-format msgid "could not apply %s... %s" msgstr "no s'ha pogut aplicar %s...%s" -#: sequencer.c:653 +#: sequencer.c:639 msgid "empty commit set passed" msgstr "conjunt de comissions buit passat" -#: sequencer.c:661 +#: sequencer.c:647 #, c-format msgid "git %s: failed to read the index" msgstr "git %s: s'ha fallat en llegir l'índex" -#: sequencer.c:665 +#: sequencer.c:651 #, c-format msgid "git %s: failed to refresh the index" msgstr "git %s: s'ha fallat en actualitzar l'índex" -#: sequencer.c:725 +#: sequencer.c:711 #, c-format msgid "Cannot %s during a %s" msgstr "No es pot %s durant un %s" -#: sequencer.c:747 +#: sequencer.c:733 #, c-format msgid "Could not parse line %d." msgstr "No s'ha pogut analitzar la línia %d." -#: sequencer.c:752 +#: sequencer.c:738 msgid "No commits parsed." msgstr "Cap comissió analitzada." -#: sequencer.c:765 +#: sequencer.c:750 #, c-format msgid "Could not open %s" msgstr "No s'ha pogut obrir %s" -#: sequencer.c:769 +#: sequencer.c:754 #, c-format msgid "Could not read %s." msgstr "No s'ha pogut llegir %s." -#: sequencer.c:776 +#: sequencer.c:761 #, c-format msgid "Unusable instruction sheet: %s" msgstr "Full d'instruccions inusable: %s" -#: sequencer.c:806 +#: sequencer.c:791 #, c-format msgid "Invalid key: %s" msgstr "Clau no vàlida: %s" -#: sequencer.c:809 +#: sequencer.c:794 builtin/pull.c:47 builtin/pull.c:49 #, c-format msgid "Invalid value for %s: %s" msgstr "Valor no vàlid per a %s: %s" -#: sequencer.c:821 +#: sequencer.c:804 #, c-format msgid "Malformed options sheet: %s" msgstr "Full d'opcions mal format: %s" -#: sequencer.c:842 +#: sequencer.c:823 msgid "a cherry-pick or revert is already in progress" msgstr "un recull de cireres o una reversió ja està en curs" -#: sequencer.c:843 +#: sequencer.c:824 msgid "try \"git cherry-pick (--continue | --quit | --abort)\"" msgstr "intenteu \"git cherry-pick (--continue | --quit | --abort)\"" -#: sequencer.c:847 +#: sequencer.c:828 #, c-format msgid "Could not create sequencer directory %s" msgstr "No s'ha pogut crear el directori de seqüenciador %s" -#: sequencer.c:863 sequencer.c:948 +#: sequencer.c:844 sequencer.c:926 #, c-format msgid "Error wrapping up %s." msgstr "Error en finalitzar %s." -#: sequencer.c:882 sequencer.c:1018 +#: sequencer.c:863 sequencer.c:996 msgid "no cherry-pick or revert in progress" msgstr "ni hi ha cap recull de cireres ni cap reversió en curs" -#: sequencer.c:884 +#: sequencer.c:865 msgid "cannot resolve HEAD" msgstr "no es pot resoldre HEAD" -#: sequencer.c:886 +#: sequencer.c:867 msgid "cannot abort from a branch yet to be born" msgstr "no es pot avortar des d'una branca que encara ha de nàixer" -#: sequencer.c:908 builtin/apply.c:4291 +#: sequencer.c:887 builtin/apply.c:4291 #, c-format msgid "cannot open %s: %s" msgstr "no es pot obrir %s: %s" -#: sequencer.c:911 +#: sequencer.c:890 #, c-format msgid "cannot read %s: %s" msgstr "no es pot llegir %s: %s" -#: sequencer.c:912 +#: sequencer.c:891 msgid "unexpected end of file" msgstr "final de fitxer inesperat" -#: sequencer.c:918 +#: sequencer.c:897 #, c-format msgid "stored pre-cherry-pick HEAD file '%s' is corrupt" -msgstr "" -"el fitxer HEAD emmagatzemat abans del recull de cireres '%s' és corrupte" +msgstr "el fitxer HEAD emmagatzemat abans del recull de cireres '%s' és malmès" -#: sequencer.c:941 +#: sequencer.c:919 #, c-format msgid "Could not format %s." msgstr "No s'ha pogut formatar %s." -#: sequencer.c:1086 +#: sequencer.c:1064 #, c-format msgid "%s: can't cherry-pick a %s" msgstr "%s: no es pot recollir com a cirera un %s" -#: sequencer.c:1089 +#: sequencer.c:1067 #, c-format msgid "%s: bad revision" msgstr "%s: revisió dolenta" -#: sequencer.c:1123 +#: sequencer.c:1101 msgid "Can't revert as initial commit" msgstr "No es pot revertir com a comissió inicial" -#: sequencer.c:1124 +#: sequencer.c:1102 msgid "Can't cherry-pick into empty head" msgstr "No es pot recollir cireres en un cap buit" @@ -1486,36 +1526,36 @@ msgstr "" " git checkout -b $br $(git rev-parse ...)\n" "\n" "on \"$br\" és d'alguna manera buit i una referència de 40 caràcters\n" -"hexadecimals. Si us plau, examineu aquests referències i potser\n" +"hexadecimals. Si us plau, examineu aquestes referències i potser\n" "suprimiu-les. Desactiveu aquest missatge executant\n" "\"git config advice.objectNameWarning false\"" -#: submodule.c:64 submodule.c:98 +#: submodule.c:61 submodule.c:95 msgid "Cannot change unmerged .gitmodules, resolve merge conflicts first" msgstr "" "No es pot canviar un .gitmodules no fusionat, primer resoldreu els " "conflictes de fusió" -#: submodule.c:68 submodule.c:102 +#: submodule.c:65 submodule.c:99 #, c-format msgid "Could not find section in .gitmodules where path=%s" msgstr "No s'ha pogut trobar la secció en .gitmodules on path=%s" -#: submodule.c:76 +#: submodule.c:73 #, c-format msgid "Could not update .gitmodules entry %s" msgstr "No s'ha pogut actualitzar l'entrada de .gitmodules %s" -#: submodule.c:109 +#: submodule.c:106 #, c-format msgid "Could not remove .gitmodules entry for %s" msgstr "No s'ha pogut eliminar l'entrada de .gitmodules per a %s" -#: submodule.c:120 +#: submodule.c:117 msgid "staging updated .gitmodules failed" msgstr "L'allistament del .gitmodules actualitzat ha fallat" -#: submodule.c:1115 +#: submodule.c:1045 #, c-format msgid "Could not set core.worktree in %s" msgstr "No s'ha pogut establir core.worktree en %s" @@ -1545,6 +1585,11 @@ msgstr "no s'ha pogut llegir el fitxer d'entrada '%s'" msgid "could not read from stdin" msgstr "No s'ha pogut llegir des d'stdin" +#: transport-helper.c:1025 +#, c-format +msgid "Could not read ref %s" +msgstr "No s'ha pogut llegir la referència %s" + #: unpack-trees.c:203 msgid "Checking out files" msgstr "Agafant fitxers" @@ -1560,7 +1605,7 @@ msgstr "seqüència d'escapament %XX no vàlida" #: urlmatch.c:172 msgid "missing host and scheme is not 'file:'" -msgstr "manca l'host i l'esquema no és 'file:'" +msgstr "manca la màquina i l'esquema no és 'file:'" #: urlmatch.c:189 msgid "a 'file:' URL may not have a port number" @@ -1568,7 +1613,7 @@ msgstr "un URL 'file:' no pot tenir número de port" #: urlmatch.c:199 msgid "invalid characters in host name" -msgstr "hi ha caràcters no vàlids en el nom de host" +msgstr "hi ha caràcters no vàlids en el nom de màquina" #: urlmatch.c:244 urlmatch.c:255 msgid "invalid port number" @@ -1578,195 +1623,211 @@ msgstr "número de port no vàlid" msgid "invalid '..' path segment" msgstr "segment de camí '..' no vàlid" -#: wrapper.c:523 +#: wrapper.c:219 wrapper.c:362 +#, c-format +msgid "could not open '%s' for reading and writing" +msgstr "no s'ha pogut obrir '%s' per a lectura i escriptura" + +#: wrapper.c:221 wrapper.c:364 +#, c-format +msgid "could not open '%s' for writing" +msgstr "no s'ha pogut obrir '%s' per a escriptura" + +#: wrapper.c:223 wrapper.c:366 builtin/am.c:337 builtin/commit.c:1688 +#: builtin/merge.c:1076 builtin/pull.c:380 +#, c-format +msgid "could not open '%s' for reading" +msgstr "no s'ha pogut obrir '%s' per a lectura" + +#: wrapper.c:579 #, c-format msgid "unable to access '%s': %s" msgstr "no s'ha pogut accedir a '%s': %s" -#: wrapper.c:544 +#: wrapper.c:600 #, c-format msgid "unable to access '%s'" msgstr "no s'ha pogut accedir a '%s'" -#: wrapper.c:555 +#: wrapper.c:611 #, c-format msgid "unable to look up current user in the passwd file: %s" msgstr "no s'ha pogut trobar l'usuari actual en el fitxer passwd: %s" -#: wrapper.c:556 +#: wrapper.c:612 msgid "no such user" msgstr "no hi ha tal usuari" -#: wrapper.c:564 +#: wrapper.c:620 msgid "unable to get current working directory" msgstr "no s'ha pogut obtenir el directori de treball actual" -#: wrapper.c:575 +#: wrapper.c:631 #, c-format msgid "could not open %s for writing" msgstr "no s'ha pogut obrir '%s' per a escriptura" -#: wrapper.c:587 +#: wrapper.c:642 builtin/am.c:424 #, c-format msgid "could not write to %s" msgstr "no s'ha pogut escriure a %s" -#: wrapper.c:593 +#: wrapper.c:648 #, c-format msgid "could not close %s" msgstr "no s'ha pogut tancar %s" -#: wt-status.c:150 +#: wt-status.c:149 msgid "Unmerged paths:" msgstr "Camins sense fusionar:" -#: wt-status.c:177 wt-status.c:204 +#: wt-status.c:176 wt-status.c:203 #, c-format msgid " (use \"git reset %s ...\" to unstage)" msgstr " (useu \"git reset %s ...\" per a desallistar)" -#: wt-status.c:179 wt-status.c:206 +#: wt-status.c:178 wt-status.c:205 msgid " (use \"git rm --cached ...\" to unstage)" msgstr " (useu \"git rm --cached ...\" per a desallistar)" -#: wt-status.c:183 +#: wt-status.c:182 msgid " (use \"git add ...\" to mark resolution)" msgstr " (useu \"git add ...\" per a senyalar resolució)" -#: wt-status.c:185 wt-status.c:189 +#: wt-status.c:184 wt-status.c:188 msgid " (use \"git add/rm ...\" as appropriate to mark resolution)" msgstr "" " (useu \"git add/rm ...\" segons sigui apropiat per a senyalar " "resolució)" -#: wt-status.c:187 +#: wt-status.c:186 msgid " (use \"git rm ...\" to mark resolution)" msgstr " (useu \"git rm ...\" per a senyalar resolució)" -#: wt-status.c:198 wt-status.c:881 +#: wt-status.c:197 wt-status.c:880 msgid "Changes to be committed:" msgstr "Canvis a cometre:" -#: wt-status.c:216 wt-status.c:890 +#: wt-status.c:215 wt-status.c:889 msgid "Changes not staged for commit:" msgstr "Canvis no allistats per a cometre:" -#: wt-status.c:220 +#: wt-status.c:219 msgid " (use \"git add ...\" to update what will be committed)" msgstr " (useu \"git add ...\" per a actualitzar què es cometrà)" -#: wt-status.c:222 +#: wt-status.c:221 msgid " (use \"git add/rm ...\" to update what will be committed)" msgstr " (useu \"git add/rm ...\" per a actualitzar què es cometrà)" -#: wt-status.c:223 +#: wt-status.c:222 msgid "" " (use \"git checkout -- ...\" to discard changes in working directory)" msgstr "" " (useu \"git checkout -- ...\" per a descartar els canvis en el " "directori de treball)" -#: wt-status.c:225 +#: wt-status.c:224 msgid " (commit or discard the untracked or modified content in submodules)" msgstr "" " (cometeu o descarteu el contingut modificat o no seguit en els submòduls)" -#: wt-status.c:237 +#: wt-status.c:236 #, c-format msgid " (use \"git %s ...\" to include in what will be committed)" msgstr " (useu \"git %s ...\" per a incloure-ho en què es cometrà)" -#: wt-status.c:252 +#: wt-status.c:251 msgid "both deleted:" msgstr "suprimit per ambdós:" -#: wt-status.c:254 +#: wt-status.c:253 msgid "added by us:" msgstr "afegit per nosaltres:" -#: wt-status.c:256 +#: wt-status.c:255 msgid "deleted by them:" msgstr "suprimit per ells:" -#: wt-status.c:258 +#: wt-status.c:257 msgid "added by them:" msgstr "afegit per ells:" -#: wt-status.c:260 +#: wt-status.c:259 msgid "deleted by us:" msgstr "suprimit per nosaltres:" -#: wt-status.c:262 +#: wt-status.c:261 msgid "both added:" msgstr "afegit per ambdós:" -#: wt-status.c:264 +#: wt-status.c:263 msgid "both modified:" msgstr "modificat per ambdós:" -#: wt-status.c:266 +#: wt-status.c:265 #, c-format msgid "bug: unhandled unmerged status %x" msgstr "bug: estat no fusionat no gestionat %x" -#: wt-status.c:274 +#: wt-status.c:273 msgid "new file:" msgstr "fitxer nou:" -#: wt-status.c:276 +#: wt-status.c:275 msgid "copied:" msgstr "copiat:" -#: wt-status.c:278 +#: wt-status.c:277 msgid "deleted:" msgstr "suprimit:" -#: wt-status.c:280 +#: wt-status.c:279 msgid "modified:" msgstr "modificat:" -#: wt-status.c:282 +#: wt-status.c:281 msgid "renamed:" msgstr "canviat de nom:" -#: wt-status.c:284 +#: wt-status.c:283 msgid "typechange:" msgstr "canviat de tipus:" -#: wt-status.c:286 +#: wt-status.c:285 msgid "unknown:" msgstr "desconegut:" -#: wt-status.c:288 +#: wt-status.c:287 msgid "unmerged:" msgstr "sense fusionar:" -#: wt-status.c:370 +#: wt-status.c:369 msgid "new commits, " msgstr "comissions noves, " -#: wt-status.c:372 +#: wt-status.c:371 msgid "modified content, " msgstr "contingut modificat, " -#: wt-status.c:374 +#: wt-status.c:373 msgid "untracked content, " msgstr "contingut no seguit, " -#: wt-status.c:391 +#: wt-status.c:390 #, c-format msgid "bug: unhandled diff status %c" msgstr "bug: estat de diferència no gestionat %c" -#: wt-status.c:755 +#: wt-status.c:754 msgid "Submodules changed but not updated:" msgstr "Submòduls canviats però no actualitzats:" -#: wt-status.c:757 +#: wt-status.c:756 msgid "Submodule changes to be committed:" msgstr "Canvis de submòdul a cometre:" -#: wt-status.c:838 +#: wt-status.c:837 msgid "" "Do not touch the line above.\n" "Everything below will be removed." @@ -1774,191 +1835,226 @@ msgstr "" "No toqueu la línia de sobre.\n" "Tot el que hi ha a sota s'eliminarà." -#: wt-status.c:949 +#: wt-status.c:948 msgid "You have unmerged paths." msgstr "Teniu camins sense fusionar." -#: wt-status.c:952 +#: wt-status.c:951 msgid " (fix conflicts and run \"git commit\")" msgstr " (arregleu els conflictes i executeu \"git commit\")" -#: wt-status.c:955 +#: wt-status.c:954 msgid "All conflicts fixed but you are still merging." msgstr "Tots els conflictes estan arreglats però encara esteu fusionant." -#: wt-status.c:958 +#: wt-status.c:957 msgid " (use \"git commit\" to conclude merge)" msgstr " (useu \"git commit\" per a concloure la fusió)" -#: wt-status.c:968 +#: wt-status.c:967 msgid "You are in the middle of an am session." msgstr "Esteu enmig d'una sessió am." -#: wt-status.c:971 +#: wt-status.c:970 msgid "The current patch is empty." msgstr "El pedaç actual està buit." -#: wt-status.c:975 +#: wt-status.c:974 msgid " (fix conflicts and then run \"git am --continue\")" msgstr " (arregleu els conflictes i després executeu \"git am --continue\")" -#: wt-status.c:977 +#: wt-status.c:976 msgid " (use \"git am --skip\" to skip this patch)" msgstr " (useu \"git am --skip\" per a ometre aquest pedaç)" -#: wt-status.c:979 +#: wt-status.c:978 msgid " (use \"git am --abort\" to restore the original branch)" msgstr " (useu \"git am --abort\" per a restaurar la branca original)" -#: wt-status.c:1039 wt-status.c:1056 +#: wt-status.c:1105 +msgid "No commands done." +msgstr "No s'ha fet cap ordre." + +#: wt-status.c:1108 +#, c-format +msgid "Last command done (%d command done):" +msgid_plural "Last commands done (%d commands done):" +msgstr[0] "Últim ordre fet (%d ordre fet):" +msgstr[1] "Últims ordres fets (%d ordres fets):" + +#: wt-status.c:1119 +#, c-format +msgid " (see more in file %s)" +msgstr " (vegeu més en el fitxer %s)" + +#: wt-status.c:1124 +msgid "No commands remaining." +msgstr "No manca cap ordre." + +#: wt-status.c:1127 +#, c-format +msgid "Next command to do (%d remaining command):" +msgid_plural "Next commands to do (%d remaining commands):" +msgstr[0] "Ordre següent a fer (manca %d ordre):" +msgstr[1] "Ordres següents a fer (manquen %d ordres):" + +#: wt-status.c:1135 +msgid " (use \"git rebase --edit-todo\" to view and edit)" +msgstr " (useu \"git rebase --edit-todo\" per a veure i editar)" + +#: wt-status.c:1148 #, c-format msgid "You are currently rebasing branch '%s' on '%s'." msgstr "Actualment esteu rebasant la branca '%s' en '%s'." -#: wt-status.c:1044 wt-status.c:1061 +#: wt-status.c:1153 msgid "You are currently rebasing." msgstr "Actualment esteu rebasant." -#: wt-status.c:1047 +#: wt-status.c:1167 msgid " (fix conflicts and then run \"git rebase --continue\")" msgstr "" " (arregleu els conflictes i després executeu \"git rebase --continue\")" -#: wt-status.c:1049 +#: wt-status.c:1169 msgid " (use \"git rebase --skip\" to skip this patch)" msgstr " (useu \"git rebase --skip\" per a saltar aquest pedaç)" -#: wt-status.c:1051 +#: wt-status.c:1171 msgid " (use \"git rebase --abort\" to check out the original branch)" msgstr " (useu \"git rebase --abort\" per a agafar la branca original)" -#: wt-status.c:1064 +#: wt-status.c:1177 msgid " (all conflicts fixed: run \"git rebase --continue\")" msgstr " (tots els conflictes arreglats: executeu \"git rebase --continue\")" -#: wt-status.c:1068 +#: wt-status.c:1181 #, c-format msgid "" "You are currently splitting a commit while rebasing branch '%s' on '%s'." msgstr "" "Actualment esteu dividint una comissió mentre rebaseu la branca '%s' en '%s'." -#: wt-status.c:1073 +#: wt-status.c:1186 msgid "You are currently splitting a commit during a rebase." -msgstr "Actualment esteu dividint una comissió durant una rebase." +msgstr "Actualment esteu dividint una comissió durant un rebasament." -#: wt-status.c:1076 +#: wt-status.c:1189 msgid " (Once your working directory is clean, run \"git rebase --continue\")" msgstr "" " (Una vegada que el vostre directori de treball sigui net, executeu \"git " "rebase --continue\")" -#: wt-status.c:1080 +#: wt-status.c:1193 #, c-format msgid "You are currently editing a commit while rebasing branch '%s' on '%s'." msgstr "" "Actualment esteu editant una comissió mentre rebaseu la branca '%s' en '%s'." -#: wt-status.c:1085 +#: wt-status.c:1198 msgid "You are currently editing a commit during a rebase." -msgstr "Actualment esteu editant una comissió durant una rebase." +msgstr "Actualment esteu editant una comissió durant un rebasament." -#: wt-status.c:1088 +#: wt-status.c:1201 msgid " (use \"git commit --amend\" to amend the current commit)" msgstr " (useu \"git commit --amend\" per a esmenar la comissió actual)" -#: wt-status.c:1090 +#: wt-status.c:1203 msgid "" " (use \"git rebase --continue\" once you are satisfied with your changes)" msgstr "" " (useu \"git rebase --continue\" una vegada que esteu satisfet amb els " "vostres canvis)" -#: wt-status.c:1100 +#: wt-status.c:1213 #, c-format msgid "You are currently cherry-picking commit %s." msgstr "Actualment esteu recollint com a cirera la comissió %s." -#: wt-status.c:1105 +#: wt-status.c:1218 msgid " (fix conflicts and run \"git cherry-pick --continue\")" msgstr " (arregleu els conflictes i executeu \"git cherry-pick --continue\")" -#: wt-status.c:1108 +#: wt-status.c:1221 msgid " (all conflicts fixed: run \"git cherry-pick --continue\")" msgstr "" " (tots els conflictes arreglats: executeu \"git cherry-pick --continue\")" -#: wt-status.c:1110 +#: wt-status.c:1223 msgid " (use \"git cherry-pick --abort\" to cancel the cherry-pick operation)" msgstr "" " (useu \"git cherry-pick --abort\" per a cancel·lar l'operació de recull de " "cireres)" -#: wt-status.c:1119 +#: wt-status.c:1232 #, c-format msgid "You are currently reverting commit %s." msgstr "Actualment esteu revertint la comissió %s." -#: wt-status.c:1124 +#: wt-status.c:1237 msgid " (fix conflicts and run \"git revert --continue\")" msgstr " (arregleu els conflictes i executeu \"git revert --continue\")" -#: wt-status.c:1127 +#: wt-status.c:1240 msgid " (all conflicts fixed: run \"git revert --continue\")" msgstr "" " (tots els conflictes estan arreglats: executeu \"git revert --continue\")" -#: wt-status.c:1129 +#: wt-status.c:1242 msgid " (use \"git revert --abort\" to cancel the revert operation)" msgstr "" " (useu \"git revert --abort\" per a cancel·lar l'operació de reversió)" -#: wt-status.c:1140 +#: wt-status.c:1253 #, c-format msgid "You are currently bisecting, started from branch '%s'." msgstr "Actualment esteu bisecant, heu començat des de la branca '%s'." -#: wt-status.c:1144 +#: wt-status.c:1257 msgid "You are currently bisecting." msgstr "Actualment esteu bisecant." -#: wt-status.c:1147 +#: wt-status.c:1260 msgid " (use \"git bisect reset\" to get back to the original branch)" msgstr " (useu \"git bisect reset\" per a tornar a la branca original)" -#: wt-status.c:1324 +#: wt-status.c:1437 msgid "On branch " msgstr "En la branca " -#: wt-status.c:1331 +#: wt-status.c:1445 +msgid "interactive rebase in progress; onto " +msgstr "rebasament interactiu en progrés; sobre " + +#: wt-status.c:1447 msgid "rebase in progress; onto " -msgstr "rebase en progrés; en " +msgstr "rebasament en progrés; sobre " -#: wt-status.c:1336 +#: wt-status.c:1452 msgid "HEAD detached at " msgstr "HEAD separat a " -#: wt-status.c:1338 +#: wt-status.c:1454 msgid "HEAD detached from " msgstr "HEAD separat de " -#: wt-status.c:1341 +#: wt-status.c:1457 msgid "Not currently on any branch." msgstr "Actualment no en cap branca." -#: wt-status.c:1358 +#: wt-status.c:1474 msgid "Initial commit" msgstr "Comissió inicial" -#: wt-status.c:1372 +#: wt-status.c:1488 msgid "Untracked files" msgstr "Fitxers no seguits" -#: wt-status.c:1374 +#: wt-status.c:1490 msgid "Ignored files" msgstr "Fitxers ignorats" -#: wt-status.c:1378 +#: wt-status.c:1494 #, c-format msgid "" "It took %.2f seconds to enumerate untracked files. 'status -uno'\n" @@ -1970,31 +2066,31 @@ msgstr "" "oblidar-vos d'afegir fitxers nous per vós mateix (vegeu\n" "'git help status')." -#: wt-status.c:1384 +#: wt-status.c:1500 #, c-format msgid "Untracked files not listed%s" msgstr "Els fitxers no seguits no estan llistats%s" -#: wt-status.c:1386 +#: wt-status.c:1502 msgid " (use -u option to show untracked files)" msgstr " (useu l'opció -u per a mostrar els fitxers no seguits)" -#: wt-status.c:1392 +#: wt-status.c:1508 msgid "No changes" msgstr "Sense canvis" -#: wt-status.c:1397 +#: wt-status.c:1513 #, c-format msgid "no changes added to commit (use \"git add\" and/or \"git commit -a\")\n" msgstr "" "no hi ha canvis afegits a cometre (useu \"git add\" o \"git commit -a\")\n" -#: wt-status.c:1400 +#: wt-status.c:1516 #, c-format msgid "no changes added to commit\n" msgstr "no hi ha canvis afegits a cometre\n" -#: wt-status.c:1403 +#: wt-status.c:1519 #, c-format msgid "" "nothing added to commit but untracked files present (use \"git add\" to " @@ -2003,51 +2099,51 @@ msgstr "" "no hi ha res afegit a cometre però fitxers no seguits estan presents (useu " "\"git add\" per a seguir-los)\n" -#: wt-status.c:1406 +#: wt-status.c:1522 #, c-format msgid "nothing added to commit but untracked files present\n" msgstr "no hi ha res afegit a cometre però fitxers no seguits estan presents\n" -#: wt-status.c:1409 +#: wt-status.c:1525 #, c-format msgid "nothing to commit (create/copy files and use \"git add\" to track)\n" msgstr "" "no hi ha res a cometre (creeu/copieu fitxers i useu \"git add\" per a seguir-" "los)\n" -#: wt-status.c:1412 wt-status.c:1417 +#: wt-status.c:1528 wt-status.c:1533 #, c-format msgid "nothing to commit\n" msgstr "no hi ha res a cometre\n" -#: wt-status.c:1415 +#: wt-status.c:1531 #, c-format msgid "nothing to commit (use -u to show untracked files)\n" msgstr "" "no hi ha res a cometre (useu -u per a mostrar els fitxers no seguits)\n" -#: wt-status.c:1419 +#: wt-status.c:1535 #, c-format msgid "nothing to commit, working directory clean\n" msgstr "no hi ha res a cometre, directori de treball net\n" -#: wt-status.c:1528 +#: wt-status.c:1644 msgid "HEAD (no branch)" msgstr "HEAD (sense branca)" -#: wt-status.c:1534 +#: wt-status.c:1650 msgid "Initial commit on " msgstr "Comissió inicial en " -#: wt-status.c:1561 +#: wt-status.c:1677 msgid "gone" msgstr "no hi és" -#: wt-status.c:1563 wt-status.c:1571 +#: wt-status.c:1679 wt-status.c:1687 msgid "behind " msgstr "darrere " -#: compat/precompose_utf8.c:55 builtin/clone.c:345 +#: compat/precompose_utf8.c:55 builtin/clone.c:403 #, c-format msgid "failed to unlink '%s'" msgstr "s'ha fallat en desenllaçar '%s'" @@ -2074,7 +2170,7 @@ msgstr "elimina '%s'\n" msgid "Unstaged changes after refreshing the index:" msgstr "Canvis no allistats després d'actualitzar l'índex:" -#: builtin/add.c:194 builtin/rev-parse.c:796 +#: builtin/add.c:194 builtin/rev-parse.c:799 msgid "Could not read the index" msgstr "No s'ha pogut llegir l'índex" @@ -2110,15 +2206,15 @@ msgid "The following paths are ignored by one of your .gitignore files:\n" msgstr "" "Els camins següents s'ignoren per un dels vostres fitxers .gitignore:\n" -#: builtin/add.c:249 builtin/clean.c:874 builtin/fetch.c:107 builtin/mv.c:110 -#: builtin/prune-packed.c:55 builtin/push.c:508 builtin/remote.c:1369 -#: builtin/rm.c:268 +#: builtin/add.c:249 builtin/clean.c:896 builtin/fetch.c:108 builtin/mv.c:110 +#: builtin/prune-packed.c:55 builtin/pull.c:182 builtin/push.c:545 +#: builtin/remote.c:1339 builtin/rm.c:268 builtin/send-pack.c:162 msgid "dry run" msgstr "marxa en sec" #: builtin/add.c:250 builtin/apply.c:4580 builtin/check-ignore.c:19 -#: builtin/commit.c:1322 builtin/count-objects.c:63 builtin/fsck.c:616 -#: builtin/log.c:1617 builtin/mv.c:109 builtin/read-tree.c:114 +#: builtin/commit.c:1321 builtin/count-objects.c:63 builtin/fsck.c:636 +#: builtin/log.c:1641 builtin/mv.c:109 builtin/read-tree.c:114 msgid "be verbose" msgstr "sigues detallat" @@ -2126,7 +2222,7 @@ msgstr "sigues detallat" msgid "interactive picking" msgstr "recull interactiu" -#: builtin/add.c:253 builtin/checkout.c:1221 builtin/reset.c:286 +#: builtin/add.c:253 builtin/checkout.c:1152 builtin/reset.c:286 msgid "select hunks interactively" msgstr "selecciona els trossos interactivament" @@ -2195,15 +2291,427 @@ msgstr "Res especificat, res afegit.\n" msgid "Maybe you wanted to say 'git add .'?\n" msgstr "Potser volíeu dir 'git add .'?\n" -#: builtin/add.c:364 builtin/check-ignore.c:172 builtin/clean.c:918 -#: builtin/commit.c:335 builtin/mv.c:130 builtin/reset.c:235 builtin/rm.c:298 +#: builtin/add.c:364 builtin/check-ignore.c:172 builtin/clean.c:940 +#: builtin/commit.c:336 builtin/mv.c:130 builtin/reset.c:235 builtin/rm.c:298 msgid "index file corrupt" msgstr "fitxer d'índex malmès" -#: builtin/add.c:447 builtin/apply.c:4678 builtin/mv.c:279 builtin/rm.c:430 +#: builtin/add.c:445 builtin/apply.c:4678 builtin/mv.c:279 builtin/rm.c:430 msgid "Unable to write new index file" msgstr "no s'ha pogut escriure un fitxer d'índex nou" +#: builtin/am.c:41 +#, c-format +msgid "could not stat %s" +msgstr "no s'ha pogut fer stat a '%s'" + +#: builtin/am.c:270 builtin/am.c:1345 builtin/commit.c:737 builtin/merge.c:1079 +#, c-format +msgid "could not read '%s'" +msgstr "no s'ha pogut llegir '%s'" + +#: builtin/am.c:444 +msgid "could not parse author script" +msgstr "no s'ha pogut analitzar l'script d'autor" + +#: builtin/am.c:521 +#, c-format +msgid "'%s' was deleted by the applypatch-msg hook" +msgstr "s'ha suprimit '%s' per el ganxo applypatch-msg" + +#: builtin/am.c:562 builtin/notes.c:300 +#, c-format +msgid "Malformed input line: '%s'." +msgstr "Línia d'entrada mal formada: '%s'." + +#: builtin/am.c:599 builtin/notes.c:315 +#, c-format +msgid "Failed to copy notes from '%s' to '%s'" +msgstr "S'ha fallat en copiar les notes de '%s' a '%s'" + +#: builtin/am.c:625 +msgid "fseek failed" +msgstr "fseek ha fallat" + +#: builtin/am.c:786 builtin/am.c:874 +#, c-format +msgid "could not open '%s' for reading: %s" +msgstr "no s'ha pogut obrir '%s' per a lectura: %s" + +#: builtin/am.c:793 +#, c-format +msgid "could not open '%s' for writing: %s" +msgstr "no s'ha pogut obrir '%s' per a escriptura: %s" + +#: builtin/am.c:802 +#, c-format +msgid "could not parse patch '%s'" +msgstr "no s'ha pogut analitzar el pedaç '%s'" + +#: builtin/am.c:867 +msgid "Only one StGIT patch series can be applied at once" +msgstr "només una sèrie de pedaços StGIT es pot aplicar a la vegada" + +#: builtin/am.c:915 +msgid "invalid timestamp" +msgstr "marca de temps no vàlida" + +#: builtin/am.c:918 builtin/am.c:926 +msgid "invalid Date line" +msgstr "línia Date no vàlida" + +#: builtin/am.c:923 +msgid "invalid timezone offset" +msgstr "desplaçament de zona de temps no vàlid" + +#: builtin/am.c:1010 +msgid "Patch format detection failed." +msgstr "La detecció de format de pedaç ha fallat." + +#: builtin/am.c:1015 builtin/clone.c:368 +#, c-format +msgid "failed to create directory '%s'" +msgstr "s'ha fallat en crear el directori '%s'" + +#: builtin/am.c:1019 +msgid "Failed to split patches." +msgstr "S'ha fallat en dividir els pedaços." + +#: builtin/am.c:1151 builtin/commit.c:362 +msgid "unable to write index file" +msgstr "no s'ha pogut escriure el fitxer d'índex" + +#: builtin/am.c:1202 +#, c-format +msgid "When you have resolved this problem, run \"%s --continue\"." +msgstr "Quan hàgiu resolt aquest problema, executeu \"%s --continue\"." + +#: builtin/am.c:1203 +#, c-format +msgid "If you prefer to skip this patch, run \"%s --skip\" instead." +msgstr "Si preferiu saltar aquest pedaç, executeu \"%s --skip\" en lloc." + +#: builtin/am.c:1204 +#, c-format +msgid "To restore the original branch and stop patching, run \"%s --abort\"." +msgstr "" +"Per a restaurar la branca original i deixar d'apedaçar, executeu \"%s --abort" +"\"." + +#: builtin/am.c:1339 +msgid "Patch is empty. Was it split wrong?" +msgstr "El pedaç és buit. S'ha dividit malament?" + +#: builtin/am.c:1413 builtin/log.c:1345 +#, c-format +msgid "invalid ident line: %s" +msgstr "línia d'identitat no vàlida: %s" + +#: builtin/am.c:1440 +#, c-format +msgid "unable to parse commit %s" +msgstr "no s'ha pogut analitzar la comissió %s" + +#: builtin/am.c:1614 +msgid "Repository lacks necessary blobs to fall back on 3-way merge." +msgstr "" +"Al dipòsit li manquen els blobs necessaris per a retrocedir a una fusió de 3 " +"vies." + +#: builtin/am.c:1616 +msgid "Using index info to reconstruct a base tree..." +msgstr "Usant la informació d'índex per a reconstruir un arbre base..." + +#: builtin/am.c:1635 +msgid "" +"Did you hand edit your patch?\n" +"It does not apply to blobs recorded in its index." +msgstr "" +"Heu editat el vostre pedaç a mà?\n" +"No s'aplica als blobs recordats en el seu índex." + +#: builtin/am.c:1641 +msgid "Falling back to patching base and 3-way merge..." +msgstr "Retrocedint a apedaçar la base i fusionar de 3 vies..." + +#: builtin/am.c:1666 +msgid "Failed to merge in the changes." +msgstr "S'ha fallat en fusionar els canvis." + +#: builtin/am.c:1691 builtin/merge.c:632 +msgid "git write-tree failed to write a tree" +msgstr "git write-tree ha fallat en escriure un arbre" + +#: builtin/am.c:1698 +msgid "applying to an empty history" +msgstr "aplicant a una història buida" + +#: builtin/am.c:1711 builtin/commit.c:1752 builtin/merge.c:829 +#: builtin/merge.c:854 +msgid "failed to write commit object" +msgstr "s'ha fallat en escriure l'objecte de comissió" + +#: builtin/am.c:1743 builtin/am.c:1747 +#, c-format +msgid "cannot resume: %s does not exist." +msgstr "no es pot reprendre: %s no existeix." + +#: builtin/am.c:1763 +msgid "cannot be interactive without stdin connected to a terminal." +msgstr "" +"no es pot ser interactiu sense que stdin sigui connectat a un terminal." + +#: builtin/am.c:1768 +msgid "Commit Body is:" +msgstr "El cos de la comissió és:" + +#. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a] +#. in your translation. The program will only accept English +#. input at this point. +#. +#: builtin/am.c:1778 +msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all: " +msgstr "" +"Voleu aplicar-lo? [y]es/[n]o/[e]dita/[v]isualitza el pedaç/[a]ccepta'ls " +"tots: " + +#: builtin/am.c:1828 +#, c-format +msgid "Dirty index: cannot apply patches (dirty: %s)" +msgstr "Índex brut: no es pot aplicar pedaços (bruts: %s)" + +#: builtin/am.c:1863 builtin/am.c:1934 +#, c-format +msgid "Applying: %.*s" +msgstr "Aplicant: %.*s" + +#: builtin/am.c:1879 +msgid "No changes -- Patch already applied." +msgstr "Sense canvis -- El pedaç ja s'ha aplicat." + +#: builtin/am.c:1887 +#, c-format +msgid "Patch failed at %s %.*s" +msgstr "El pedaç ha fallat a %s %.*s" + +#: builtin/am.c:1893 +#, c-format +msgid "The copy of the patch that failed is found in: %s" +msgstr "La còpia del pedaç que ha fallat es troba en: %s" + +#: builtin/am.c:1937 +msgid "" +"No changes - did you forget to use 'git add'?\n" +"If there is nothing left to stage, chances are that something else\n" +"already introduced the same changes; you might want to skip this patch." +msgstr "" +"Cap canvi - heu oblidat d'usar 'git add'?\n" +"Si no hi ha res a allistar, probablement alguna altra cosa\n" +"ja ha introduït els mateixos canvis; potser voleu ometre aquest pedaç." + +#: builtin/am.c:1944 +msgid "" +"You still have unmerged paths in your index.\n" +"Did you forget to use 'git add'?" +msgstr "" +"Encara teniu camins sense fusionar en el vostre índex.\n" +"Heu oblidat d'usar 'git add'?" + +#: builtin/am.c:2052 builtin/am.c:2056 builtin/am.c:2068 builtin/reset.c:308 +#: builtin/reset.c:316 +#, c-format +msgid "Could not parse object '%s'." +msgstr "No s'ha pogut analitzar l'objecte '%s'." + +#: builtin/am.c:2104 +msgid "failed to clean index" +msgstr "s'ha fallat en netejar l'índex" + +#: builtin/am.c:2138 +msgid "" +"You seem to have moved HEAD since the last 'am' failure.\n" +"Not rewinding to ORIG_HEAD" +msgstr "" +"Sembla que heu mogut HEAD després de l'última fallada de 'am'.\n" +"No rebobinant a ORIG_HEAD" + +#: builtin/am.c:2199 +#, c-format +msgid "Invalid value for --patch-format: %s" +msgstr "Valor no vàlid per a --patch-format: %s" + +#: builtin/am.c:2221 +msgid "git am [options] [(|)...]" +msgstr "git am [opcions] [(|)...]" + +#: builtin/am.c:2222 +msgid "git am [options] (--continue | --skip | --abort)" +msgstr "git am [opcions] (--continue | --skip | --abort)" + +#: builtin/am.c:2228 +msgid "run interactively" +msgstr "executa interactivament" + +#: builtin/am.c:2230 +msgid "historical option -- no-op" +msgstr "opció històrica -- no-op" + +#: builtin/am.c:2232 +msgid "allow fall back on 3way merging if needed" +msgstr "permet retrocedir a una fusió de 3 vies si és necessari" + +#: builtin/am.c:2233 builtin/init-db.c:509 builtin/prune-packed.c:57 +#: builtin/repack.c:171 +msgid "be quiet" +msgstr "calla" + +#: builtin/am.c:2235 +msgid "add a Signed-off-by line to the commit message" +msgstr "afegeix una línia Signed-off-by al missatge de comissió" + +#: builtin/am.c:2238 +msgid "recode into utf8 (default)" +msgstr "recodifica en utf8 (per defecte)" + +#: builtin/am.c:2240 +msgid "pass -k flag to git-mailinfo" +msgstr "passa la bandera -k al git-mailinfo" + +#: builtin/am.c:2242 +msgid "pass -b flag to git-mailinfo" +msgstr "passa la bandera -b al git-mailinfo" + +#: builtin/am.c:2244 +msgid "pass -m flag to git-mailinfo" +msgstr "passa la bandera -m al git-mailinfo" + +#: builtin/am.c:2246 +msgid "pass --keep-cr flag to git-mailsplit for mbox format" +msgstr "passa la bandera --keep-cr al git-mailsplit pel format mbox" + +#: builtin/am.c:2249 +msgid "do not pass --keep-cr flag to git-mailsplit independent of am.keepcr" +msgstr "" +"no passis la bandera --keep-cr al git-mailsplit independent de am.keepcr" + +#: builtin/am.c:2252 +msgid "strip everything before a scissors line" +msgstr "despulla tot abans d'una línia de tissores" + +#: builtin/am.c:2253 builtin/apply.c:4563 +msgid "action" +msgstr "acció" + +#: builtin/am.c:2254 builtin/am.c:2257 builtin/am.c:2260 builtin/am.c:2263 +#: builtin/am.c:2266 builtin/am.c:2269 builtin/am.c:2272 builtin/am.c:2275 +#: builtin/am.c:2281 +msgid "pass it through git-apply" +msgstr "passa-ho a través del git-apply" + +#: builtin/am.c:2262 builtin/apply.c:4587 +msgid "root" +msgstr "arrel" + +#: builtin/am.c:2265 builtin/am.c:2268 builtin/apply.c:4525 +#: builtin/apply.c:4528 builtin/clone.c:85 builtin/fetch.c:93 +#: builtin/pull.c:167 +msgid "path" +msgstr "camí" + +#: builtin/am.c:2271 builtin/fmt-merge-msg.c:669 builtin/fmt-merge-msg.c:672 +#: builtin/grep.c:698 builtin/merge.c:198 builtin/pull.c:127 +#: builtin/repack.c:178 builtin/repack.c:182 builtin/show-branch.c:664 +#: builtin/show-ref.c:180 builtin/tag.c:591 parse-options.h:132 +#: parse-options.h:134 parse-options.h:243 +msgid "n" +msgstr "n" + +#: builtin/am.c:2274 builtin/apply.c:4531 +msgid "num" +msgstr "número" + +#: builtin/am.c:2277 builtin/for-each-ref.c:34 builtin/replace.c:438 +msgid "format" +msgstr "format" + +#: builtin/am.c:2278 +msgid "format the patch(es) are in" +msgstr "el format en el qual estan els pedaços" + +#: builtin/am.c:2284 +msgid "override error message when patch failure occurs" +msgstr "" +"passa per alt el missatge d'error quan s'ocorre una fallada en apedaçar" + +#: builtin/am.c:2286 +msgid "continue applying patches after resolving a conflict" +msgstr "segueix aplicant pedaços després de resoldre un conflicte" + +#: builtin/am.c:2289 +msgid "synonyms for --continue" +msgstr "sinònims de --continue" + +#: builtin/am.c:2292 +msgid "skip the current patch" +msgstr "salta el pedaç actual" + +#: builtin/am.c:2295 +msgid "restore the original branch and abort the patching operation." +msgstr "restaura la branca original i avorta l'operació d'apedaçament." + +#: builtin/am.c:2299 +msgid "lie about committer date" +msgstr "menteix sobre la data del comitent" + +#: builtin/am.c:2301 +msgid "use current timestamp for author date" +msgstr "usa el marc de temps actual per la data d'autor" + +#: builtin/am.c:2303 builtin/commit.c:1590 builtin/merge.c:225 +#: builtin/pull.c:155 builtin/revert.c:92 builtin/tag.c:606 +msgid "key-id" +msgstr "ID de clau" + +#: builtin/am.c:2304 +msgid "GPG-sign commits" +msgstr "firma les comissions amb GPG" + +#: builtin/am.c:2307 +msgid "(internal use for git-rebase)" +msgstr "(ús intern per al git-rebase)" + +#: builtin/am.c:2322 +msgid "" +"The -b/--binary option has been a no-op for long time, and\n" +"it will be removed. Please do not use it anymore." +msgstr "" +"Fa molt que l'opció -b/--binary no ha fet res, i\n" +"s'eliminarà. Si us plau, no l'useu més." + +#: builtin/am.c:2329 +msgid "failed to read the index" +msgstr "s'ha fallat en llegir l'índex" + +#: builtin/am.c:2344 +#, c-format +msgid "previous rebase directory %s still exists but mbox given." +msgstr "" +"un directori de rebasament anterior %s encara existeix però s'ha donat una " +"bústia." + +#: builtin/am.c:2368 +#, c-format +msgid "" +"Stray %s directory found.\n" +"Use \"git am --abort\" to remove it." +msgstr "" +"Directori %s extraviat trobat.\n" +"Useu \"git am --abort\" per a eliminar-lo." + +#: builtin/am.c:2374 +msgid "Resolve operation not in progress, we are not resuming." +msgstr "Operació de resolució no en curs; no reprenem." + #: builtin/apply.c:59 msgid "git apply [] [...]" msgstr "git apply [] [...]" @@ -2307,7 +2815,7 @@ msgstr "el fitxer suprimit %s encara té continguts" #: builtin/apply.c:1728 #, c-format msgid "** warning: file %s becomes empty but is not deleted" -msgstr "** avís: el fitxer %s queda buit però no es suprimeix" +msgstr "** avís: el fitxer %s queda buit però no se suprimeix" #: builtin/apply.c:1874 #, c-format @@ -2343,8 +2851,8 @@ msgstr "inici de línia no vàlid: '%c'" #, c-format msgid "Hunk #%d succeeded at %d (offset %d line)." msgid_plural "Hunk #%d succeeded at %d (offset %d lines)." -msgstr[0] "El tros #%d ha tingut éxit a %d (desplaçament %d línia)." -msgstr[1] "El tros #%d ha tingut éxit a %d (desplaçament %d línies)." +msgstr[0] "El tros #%d ha tingut èxit a %d (desplaçament %d línia)." +msgstr[1] "El tros #%d ha tingut èxit a %d (desplaçament %d línies)." #: builtin/apply.c:2912 #, c-format @@ -2418,7 +2926,7 @@ msgstr "%s: no coincideix amb l'índex" #: builtin/apply.c:3463 msgid "removal patch leaves file contents" -msgstr "el pedaç de supressió deixa els continguts dels fitxers" +msgstr "el pedaç d'eliminació deixa els continguts dels fitxers" #: builtin/apply.c:3532 #, c-format @@ -2463,14 +2971,14 @@ msgstr "el fitxer afectat '%s' és més enllà d'un enllaç simbòlic" #: builtin/apply.c:3802 #, c-format msgid "%s: patch does not apply" -msgstr "%s: el pedaç no aplica" +msgstr "%s: el pedaç no s'aplica" #: builtin/apply.c:3816 #, c-format msgid "Checking patch %s..." msgstr "Comprovant el pedaç %s..." -#: builtin/apply.c:3909 builtin/checkout.c:233 builtin/reset.c:135 +#: builtin/apply.c:3909 builtin/checkout.c:232 builtin/reset.c:135 #, c-format msgid "make_cache_entry failed for path '%s'" msgstr "make_cache_entry ha fallat per al camí '%s'" @@ -2483,7 +2991,7 @@ msgstr "no s'ha pogut eliminar %s de l'índex" #: builtin/apply.c:4081 #, c-format msgid "corrupt patch for submodule %s" -msgstr "pedaç corrupte per al submòdul %s" +msgstr "pedaç malmès per al submòdul %s" #: builtin/apply.c:4085 #, c-format @@ -2551,11 +3059,6 @@ msgstr "entrada no reconeguda" msgid "unable to read index file" msgstr "no es pot llegir el fitxer d'índex" -#: builtin/apply.c:4525 builtin/apply.c:4528 builtin/clone.c:85 -#: builtin/fetch.c:92 -msgid "path" -msgstr "camí" - #: builtin/apply.c:4526 msgid "don't apply changes matching the given path" msgstr "no apliquis els canvis que coincideixin amb el camí donat" @@ -2564,10 +3067,6 @@ msgstr "no apliquis els canvis que coincideixin amb el camí donat" msgid "apply changes matching the given path" msgstr "aplica els canvis que coincideixin amb el camí donat" -#: builtin/apply.c:4531 -msgid "num" -msgstr "número" - #: builtin/apply.c:4532 msgid "remove leading slashes from traditional diff paths" msgstr "" @@ -2621,16 +3120,12 @@ msgstr "construeix un índex temporal basat en la informació d'índex incrustad #: builtin/apply.c:4559 builtin/checkout-index.c:198 builtin/ls-files.c:412 msgid "paths are separated with NUL character" -msgstr "els camins es separen amb el caràcter NUL" +msgstr "els camins se separen amb el caràcter NUL" #: builtin/apply.c:4562 msgid "ensure at least lines of context match" msgstr "assegura't que almenys línies de context coincideixin" -#: builtin/apply.c:4563 -msgid "action" -msgstr "acció" - #: builtin/apply.c:4564 msgid "detect new or modified lines that have whitespace errors" msgstr "" @@ -2664,10 +3159,6 @@ msgstr "tolera una línia nova incorrectament detectada al final del fitxer" msgid "do not trust the line counts in the hunk headers" msgstr "no confiïs en els recomptes de línia en les capçaleres dels trossos" -#: builtin/apply.c:4587 -msgid "root" -msgstr "arrel" - #: builtin/apply.c:4588 msgid "prepend to all filenames" msgstr "anteposa a tots els noms de fitxer" @@ -2750,11 +3241,11 @@ msgstr "realitza 'git bisect next'" msgid "update BISECT_HEAD instead of checking out the current commit" msgstr "actualitza BISECT_HEAD en lloc d'agafar la comissió actual" -#: builtin/blame.c:31 +#: builtin/blame.c:32 msgid "git blame [] [] [] [--] " msgstr "git blame [] [] [] [--] fitxer" -#: builtin/blame.c:36 +#: builtin/blame.c:37 msgid " are documented in git-rev-list(1)" msgstr "es documenten les en git-rev-list(1)" @@ -2822,7 +3313,7 @@ msgstr "" #: builtin/blame.c:2514 msgid "Ignore whitespace differences" -msgstr "Ignora les diferencies d'espai en blanc" +msgstr "Ignora les diferències d'espai en blanc" #: builtin/blame.c:2515 msgid "Spend extra cycles to find better match" @@ -2854,7 +3345,7 @@ msgstr "n,m" #: builtin/blame.c:2520 msgid "Process only line range n,m, counting from 1" -msgstr "Processa només el rang de línies n,m, comptant des de 1" +msgstr "Processa només el rang de línies n,m, comptant des d'1" #. TRANSLATORS: This string is used to tell us the maximum #. display width for a relative timestamp in "git blame" @@ -2943,321 +3434,321 @@ msgstr "no s'ha trobat la branca amb seguiment remot '%s'." msgid "branch '%s' not found." msgstr "no s'ha trobat la branca '%s'." -#: builtin/branch.c:258 +#: builtin/branch.c:259 #, c-format msgid "Error deleting remote-tracking branch '%s'" msgstr "Error en suprimir la branca amb seguiment remot '%s'" -#: builtin/branch.c:259 +#: builtin/branch.c:260 #, c-format msgid "Error deleting branch '%s'" msgstr "Error en suprimir la branca '%s'" -#: builtin/branch.c:266 +#: builtin/branch.c:267 #, c-format msgid "Deleted remote-tracking branch %s (was %s).\n" msgstr "S'ha suprimit la branca amb seguiment remot %s (era %s).\n" -#: builtin/branch.c:267 +#: builtin/branch.c:268 #, c-format msgid "Deleted branch %s (was %s).\n" msgstr "S'ha suprimit la branca %s (era %s).\n" -#: builtin/branch.c:368 +#: builtin/branch.c:369 #, c-format msgid "branch '%s' does not point at a commit" msgstr "la branca '%s' no assenyala cap comissió" -#: builtin/branch.c:451 +#: builtin/branch.c:452 #, c-format msgid "[%s: gone]" msgstr "[%s: no hi és]" -#: builtin/branch.c:456 +#: builtin/branch.c:457 #, c-format msgid "[%s]" msgstr "[%s]" -#: builtin/branch.c:461 +#: builtin/branch.c:462 #, c-format msgid "[%s: behind %d]" msgstr "[%s: darrere per %d]" -#: builtin/branch.c:463 +#: builtin/branch.c:464 #, c-format msgid "[behind %d]" msgstr "[darrere de %d]" -#: builtin/branch.c:467 +#: builtin/branch.c:468 #, c-format msgid "[%s: ahead %d]" msgstr "[%s: davant per %d]" -#: builtin/branch.c:469 +#: builtin/branch.c:470 #, c-format msgid "[ahead %d]" msgstr "[davant de %d]" -#: builtin/branch.c:472 +#: builtin/branch.c:473 #, c-format msgid "[%s: ahead %d, behind %d]" msgstr "[%s: davant per %d, darrere per %d]" -#: builtin/branch.c:475 +#: builtin/branch.c:476 #, c-format msgid "[ahead %d, behind %d]" msgstr "[davant %d, darrere %d]" -#: builtin/branch.c:488 +#: builtin/branch.c:489 msgid " **** invalid ref ****" msgstr " **** referència no vàlida ****" -#: builtin/branch.c:579 +#: builtin/branch.c:580 #, c-format msgid "(no branch, rebasing %s)" msgstr "(cap branca, rebasant %s)" -#: builtin/branch.c:582 +#: builtin/branch.c:583 #, c-format msgid "(no branch, bisect started on %s)" msgstr "(cap branca, bisecció començada en %s)" -#: builtin/branch.c:588 +#: builtin/branch.c:589 #, c-format msgid "(HEAD detached at %s)" msgstr "(HEAD separat a %s)" -#: builtin/branch.c:591 +#: builtin/branch.c:592 #, c-format msgid "(HEAD detached from %s)" msgstr "(HEAD separat de %s)" -#: builtin/branch.c:595 +#: builtin/branch.c:596 msgid "(no branch)" msgstr "(cap branca)" -#: builtin/branch.c:642 +#: builtin/branch.c:643 #, c-format msgid "object '%s' does not point to a commit" msgstr "l'objecte '%s' no assenyala cap comissió" -#: builtin/branch.c:690 +#: builtin/branch.c:691 msgid "some refs could not be read" msgstr "no s'han pogut llegir algunes referències" -#: builtin/branch.c:703 +#: builtin/branch.c:704 msgid "cannot rename the current branch while not on any." msgstr "no es pot canviar el nom de la branca actual mentre no s'és a cap." -#: builtin/branch.c:713 +#: builtin/branch.c:714 #, c-format msgid "Invalid branch name: '%s'" msgstr "Nom de branca no vàlid: '%s'" -#: builtin/branch.c:728 +#: builtin/branch.c:729 msgid "Branch rename failed" msgstr "El canvi de nom de branca ha fallat" -#: builtin/branch.c:732 +#: builtin/branch.c:733 #, c-format msgid "Renamed a misnamed branch '%s' away" msgstr "S'ha canviat el nom de la branca malanomenada '%s'" -#: builtin/branch.c:736 +#: builtin/branch.c:737 #, c-format msgid "Branch renamed to %s, but HEAD is not updated!" msgstr "S'ha canviat el nom de la branca a %s, però HEAD no està actualitzat!" -#: builtin/branch.c:743 +#: builtin/branch.c:744 msgid "Branch is renamed, but update of config-file failed" msgstr "" "La branca està canviada de nom, però l'actualització del fitxer de " "configuració ha fallat" -#: builtin/branch.c:758 +#: builtin/branch.c:759 #, c-format msgid "malformed object name %s" msgstr "nom d'objecte %s mal format" -#: builtin/branch.c:780 +#: builtin/branch.c:781 #, c-format msgid "could not write branch description template: %s" msgstr "no s'ha pogut escriure la plantilla de descripció de branca: %s" -#: builtin/branch.c:810 +#: builtin/branch.c:811 msgid "Generic options" msgstr "Opcions genèriques" -#: builtin/branch.c:812 +#: builtin/branch.c:813 msgid "show hash and subject, give twice for upstream branch" -msgstr "mostra el hash i el tema, doneu dues vegades per la branca font" +msgstr "mostra el hash i l'assumpte, doneu dues vegades per la branca font" -#: builtin/branch.c:813 +#: builtin/branch.c:814 msgid "suppress informational messages" msgstr "omet els missatges informatius" -#: builtin/branch.c:814 +#: builtin/branch.c:815 msgid "set up tracking mode (see git-pull(1))" msgstr "configura el mode de seguiment (vegeu git-pull(1))" -#: builtin/branch.c:816 +#: builtin/branch.c:817 msgid "change upstream info" msgstr "canvia la informació de font" -#: builtin/branch.c:820 +#: builtin/branch.c:821 msgid "use colored output" msgstr "usa sortida colorada" -#: builtin/branch.c:821 +#: builtin/branch.c:822 msgid "act on remote-tracking branches" msgstr "actua en branques amb seguiment remot" -#: builtin/branch.c:824 builtin/branch.c:830 builtin/branch.c:851 -#: builtin/branch.c:857 builtin/commit.c:1581 builtin/commit.c:1582 -#: builtin/commit.c:1583 builtin/commit.c:1584 builtin/tag.c:616 -#: builtin/tag.c:622 +#: builtin/branch.c:825 builtin/branch.c:831 builtin/branch.c:852 +#: builtin/branch.c:858 builtin/commit.c:1580 builtin/commit.c:1581 +#: builtin/commit.c:1582 builtin/commit.c:1583 builtin/tag.c:618 +#: builtin/tag.c:624 msgid "commit" msgstr "comissió" -#: builtin/branch.c:825 builtin/branch.c:831 +#: builtin/branch.c:826 builtin/branch.c:832 msgid "print only branches that contain the commit" msgstr "imprimeix només les branques que continguin la comissió" -#: builtin/branch.c:837 +#: builtin/branch.c:838 msgid "Specific git-branch actions:" msgstr "Accions de git-branch específiques:" -#: builtin/branch.c:838 +#: builtin/branch.c:839 msgid "list both remote-tracking and local branches" msgstr "llista les branques amb seguiment remot i les locals" -#: builtin/branch.c:840 +#: builtin/branch.c:841 msgid "delete fully merged branch" -msgstr "suprimeix la branca si és completament fusionada" +msgstr "suprimeix la branca si està completament fusionada" -#: builtin/branch.c:841 +#: builtin/branch.c:842 msgid "delete branch (even if not merged)" msgstr "suprimeix la branca (encara que no estigui fusionada)" -#: builtin/branch.c:842 +#: builtin/branch.c:843 msgid "move/rename a branch and its reflog" msgstr "mou/canvia de nom una branca i el seu registre de referència" -#: builtin/branch.c:843 +#: builtin/branch.c:844 msgid "move/rename a branch, even if target exists" msgstr "mou/canvia de nom una branca, encara que el destí existeixi" -#: builtin/branch.c:844 +#: builtin/branch.c:845 msgid "list branch names" msgstr "llista els noms de branca" -#: builtin/branch.c:845 +#: builtin/branch.c:846 msgid "create the branch's reflog" msgstr "crea el registre de referència de la branca" -#: builtin/branch.c:847 +#: builtin/branch.c:848 msgid "edit the description for the branch" msgstr "edita la descripció de la branca" -#: builtin/branch.c:848 +#: builtin/branch.c:849 msgid "force creation, move/rename, deletion" msgstr "força creació, moviment/canvi de nom, supressió" -#: builtin/branch.c:851 +#: builtin/branch.c:852 msgid "print only not merged branches" msgstr "imprimeix només les branques sense fusionar" -#: builtin/branch.c:857 +#: builtin/branch.c:858 msgid "print only merged branches" msgstr "imprimeix només les branques fusionades" -#: builtin/branch.c:861 +#: builtin/branch.c:862 msgid "list branches in columns" msgstr "llista les branques en columnes" -#: builtin/branch.c:874 +#: builtin/branch.c:875 msgid "Failed to resolve HEAD as a valid ref." msgstr "S'ha fallat en resoldre HEAD com a referència vàlida." -#: builtin/branch.c:878 builtin/clone.c:622 +#: builtin/branch.c:879 builtin/clone.c:690 msgid "HEAD not found below refs/heads!" msgstr "HEAD no trobat sota refs/heads!" -#: builtin/branch.c:900 +#: builtin/branch.c:901 msgid "--column and --verbose are incompatible" msgstr "--column i --verbose són incompatibles" -#: builtin/branch.c:911 builtin/branch.c:950 +#: builtin/branch.c:912 builtin/branch.c:951 msgid "branch name required" msgstr "cal el nom de branca" -#: builtin/branch.c:926 +#: builtin/branch.c:927 msgid "Cannot give description to detached HEAD" msgstr "No es pot donar descripció a un HEAD separat" -#: builtin/branch.c:931 +#: builtin/branch.c:932 msgid "cannot edit description of more than one branch" msgstr "no es pot editar la descripció de més d'una branca" -#: builtin/branch.c:938 +#: builtin/branch.c:939 #, c-format msgid "No commit on branch '%s' yet." msgstr "Encara no hi ha comissió en la branca '%s'." -#: builtin/branch.c:941 +#: builtin/branch.c:942 #, c-format msgid "No branch named '%s'." msgstr "No hi ha branca amb nom '%s'." -#: builtin/branch.c:956 +#: builtin/branch.c:957 msgid "too many branches for a rename operation" msgstr "hi ha massa branques per a una operació de canvi de nom" -#: builtin/branch.c:961 +#: builtin/branch.c:962 msgid "too many branches to set new upstream" msgstr "hi ha massa branques per a establir una nova font" -#: builtin/branch.c:965 +#: builtin/branch.c:966 #, c-format msgid "" "could not set upstream of HEAD to %s when it does not point to any branch." msgstr "" "no s'ha pogut establir la font de HEAD com a %s quan no assenyala cap branca." -#: builtin/branch.c:968 builtin/branch.c:990 builtin/branch.c:1011 +#: builtin/branch.c:969 builtin/branch.c:991 builtin/branch.c:1012 #, c-format msgid "no such branch '%s'" msgstr "no hi ha tal branca '%s'" -#: builtin/branch.c:972 +#: builtin/branch.c:973 #, c-format msgid "branch '%s' does not exist" msgstr "la branca '%s' no existeix" -#: builtin/branch.c:984 +#: builtin/branch.c:985 msgid "too many branches to unset upstream" msgstr "hi ha massa branques per a desestablir la font" -#: builtin/branch.c:988 +#: builtin/branch.c:989 msgid "could not unset upstream of HEAD when it does not point to any branch." msgstr "" "no s'ha pogut desestablir la font de HEAD perquè no assenyala cap branca." -#: builtin/branch.c:994 +#: builtin/branch.c:995 #, c-format msgid "Branch '%s' has no upstream information" msgstr "La branca '%s' no té informació de font" -#: builtin/branch.c:1008 +#: builtin/branch.c:1009 msgid "it does not make sense to create 'HEAD' manually" msgstr "no té sentit crear 'HEAD' manualment" -#: builtin/branch.c:1014 +#: builtin/branch.c:1015 msgid "-a and -r options to 'git branch' do not make sense with a branch name" msgstr "" "les opcions -a i -r a 'git branch' no tenen sentit amb un nom de branca" -#: builtin/branch.c:1017 +#: builtin/branch.c:1018 #, c-format msgid "" "The --set-upstream flag is deprecated and will be removed. Consider using --" @@ -3266,7 +3757,7 @@ msgstr "" "La bandera --set-upstream està desaprovada i s'eliminarà. Considereu usar --" "track o --set-upstream-to\n" -#: builtin/branch.c:1034 +#: builtin/branch.c:1035 #, c-format msgid "" "\n" @@ -3277,12 +3768,12 @@ msgstr "" "Si volíeu fer '%s' seguir '%s', feu això:\n" "\n" -#: builtin/branch.c:1035 +#: builtin/branch.c:1036 #, c-format msgid " git branch -d %s\n" msgstr " git branch -d %s\n" -#: builtin/branch.c:1036 +#: builtin/branch.c:1037 #, c-format msgid " git branch --set-upstream-to %s\n" msgstr " git branch --set-upstream-to %s\n" @@ -3300,7 +3791,7 @@ msgstr "Cal un dipòsit per a fer un farcell." msgid "Need a repository to unbundle." msgstr "Cal un dipòsit per a desfer un farcell." -#: builtin/cat-file.c:369 +#: builtin/cat-file.c:428 msgid "" "git cat-file (-t [--allow-unknown-type]|-s [--allow-unknown-type]|-e|-p|" "|--textconv) " @@ -3308,7 +3799,7 @@ msgstr "" "git cat-file (-t [--allow-unknown-type]|-s [--allow-unknown-type]|-e|-p|" "|--textconv) " -#: builtin/cat-file.c:370 +#: builtin/cat-file.c:429 msgid "" "git cat-file (--batch | --batch-check) [--follow-symlinks] < " @@ -3316,48 +3807,56 @@ msgstr "" "git cat-file (--batch | --batch-check) [--follow-symlinks] < " -#: builtin/cat-file.c:407 +#: builtin/cat-file.c:466 msgid " can be one of: blob, tree, commit, tag" msgstr " pot ser un de: blob, tree, commit, tag" -#: builtin/cat-file.c:408 +#: builtin/cat-file.c:467 msgid "show object type" msgstr "mostra el tipus de l'objecte" -#: builtin/cat-file.c:409 +#: builtin/cat-file.c:468 msgid "show object size" msgstr "mostra la mida de l'objecte" -#: builtin/cat-file.c:411 +#: builtin/cat-file.c:470 msgid "exit with zero when there's no error" msgstr "surt amb zero quan no hi ha error" -#: builtin/cat-file.c:412 +#: builtin/cat-file.c:471 msgid "pretty-print object's content" msgstr "imprimeix bellament el contingut de l'objecte" -#: builtin/cat-file.c:414 +#: builtin/cat-file.c:473 msgid "for blob objects, run textconv on object's content" msgstr "en els objectes de blob, executa textconv en el contingut de l'objecte" -#: builtin/cat-file.c:416 +#: builtin/cat-file.c:475 msgid "allow -s and -t to work with broken/corrupt objects" -msgstr "permet que -s i -t funcionin amb objectes trencats/corruptes" +msgstr "permet que -s i -t funcionin amb objectes trencats/malmesos" + +#: builtin/cat-file.c:476 +msgid "buffer --batch output" +msgstr "posa la sortida de --batch en memòria intermèdia" -#: builtin/cat-file.c:418 +#: builtin/cat-file.c:478 msgid "show info and content of objects fed from the standard input" msgstr "" "mostra la informació i contingut dels objectes rebuts de l'entrada estàndard" -#: builtin/cat-file.c:421 +#: builtin/cat-file.c:481 msgid "show info about objects fed from the standard input" msgstr "mostra informació sobre els objectes rebuts de l'entrada estàndard" -#: builtin/cat-file.c:424 +#: builtin/cat-file.c:484 msgid "follow in-tree symlinks (used with --batch or --batch-check)" msgstr "" "segueix els enllaços simbòlics en l'arbre (s'usa amb --batch o --batch-check)" +#: builtin/cat-file.c:486 +msgid "show all objects with --batch or --batch-check" +msgstr "mostra tots els objectes amb --batch o --batch-check" + #: builtin/check-attr.c:11 msgid "git check-attr [-a | --all | ...] [--] ..." msgstr "git check-attr [-a | --all | ...] [--] ..." @@ -3383,7 +3882,7 @@ msgstr "llegeix els noms de fitxer d'stdin" msgid "terminate input and output records by a NUL character" msgstr "acaba els registres d'entrada i de sortida amb un caràcter NUL" -#: builtin/check-ignore.c:18 builtin/checkout.c:1202 builtin/gc.c:279 +#: builtin/check-ignore.c:18 builtin/checkout.c:1133 builtin/gc.c:267 msgid "suppress progress reporting" msgstr "omet el reportatge de progrés" @@ -3480,114 +3979,114 @@ msgstr "en crear fitxers, anteposa " msgid "copy out the files from named stage" msgstr "copia els fitxers des de l'etapa anomenada" -#: builtin/checkout.c:24 +#: builtin/checkout.c:25 msgid "git checkout [] " msgstr "git checkout [] " -#: builtin/checkout.c:25 +#: builtin/checkout.c:26 msgid "git checkout [] [] -- ..." msgstr "git checkout [] [] -- ..." -#: builtin/checkout.c:134 builtin/checkout.c:167 +#: builtin/checkout.c:133 builtin/checkout.c:166 #, c-format msgid "path '%s' does not have our version" msgstr "el camí '%s' no té la versió nostra" -#: builtin/checkout.c:136 builtin/checkout.c:169 +#: builtin/checkout.c:135 builtin/checkout.c:168 #, c-format msgid "path '%s' does not have their version" msgstr "el camí '%s' no té la versió seva" -#: builtin/checkout.c:152 +#: builtin/checkout.c:151 #, c-format msgid "path '%s' does not have all necessary versions" msgstr "el camí '%s' no té totes les versions necessàries" -#: builtin/checkout.c:196 +#: builtin/checkout.c:195 #, c-format msgid "path '%s' does not have necessary versions" msgstr "el camí '%s' no té les versions necessàries" -#: builtin/checkout.c:213 +#: builtin/checkout.c:212 #, c-format msgid "path '%s': cannot merge" msgstr "camí '%s': no es pot fusionar" -#: builtin/checkout.c:230 +#: builtin/checkout.c:229 #, c-format msgid "Unable to add merge result for '%s'" msgstr "no s'ha pogut afegir el resultat de fusió per a '%s'" -#: builtin/checkout.c:251 builtin/checkout.c:254 builtin/checkout.c:257 -#: builtin/checkout.c:260 +#: builtin/checkout.c:250 builtin/checkout.c:253 builtin/checkout.c:256 +#: builtin/checkout.c:259 #, c-format msgid "'%s' cannot be used with updating paths" msgstr "'%s' no es pot usar amb actualització de camins" -#: builtin/checkout.c:263 builtin/checkout.c:266 +#: builtin/checkout.c:262 builtin/checkout.c:265 #, c-format msgid "'%s' cannot be used with %s" msgstr "'%s' no es pot usar amb %s" -#: builtin/checkout.c:269 +#: builtin/checkout.c:268 #, c-format msgid "Cannot update paths and switch to branch '%s' at the same time." msgstr "" "No es pot actualitzar els camins i canviar a la branca '%s' a la vegada." -#: builtin/checkout.c:280 builtin/checkout.c:474 +#: builtin/checkout.c:279 builtin/checkout.c:473 msgid "corrupt index file" -msgstr "fitxer d'índex corrupte" +msgstr "fitxer d'índex malmès" -#: builtin/checkout.c:340 builtin/checkout.c:347 +#: builtin/checkout.c:339 builtin/checkout.c:346 #, c-format msgid "path '%s' is unmerged" msgstr "el camí '%s' està sense fusionar" -#: builtin/checkout.c:496 +#: builtin/checkout.c:495 msgid "you need to resolve your current index first" msgstr "heu de resoldre el vostre índex actual primer" -#: builtin/checkout.c:627 +#: builtin/checkout.c:622 #, c-format -msgid "Can not do reflog for '%s'\n" -msgstr "No es pot fer reflog per a '%s'\n" +msgid "Can not do reflog for '%s': %s\n" +msgstr "No es pot fer reflog per a '%s': %s\n" -#: builtin/checkout.c:663 +#: builtin/checkout.c:660 msgid "HEAD is now at" msgstr "HEAD ara és a" -#: builtin/checkout.c:670 +#: builtin/checkout.c:667 #, c-format msgid "Reset branch '%s'\n" msgstr "Restableix la branca '%s'\n" -#: builtin/checkout.c:673 +#: builtin/checkout.c:670 #, c-format msgid "Already on '%s'\n" msgstr "Ja en '%s'\n" -#: builtin/checkout.c:677 +#: builtin/checkout.c:674 #, c-format msgid "Switched to and reset branch '%s'\n" msgstr "S'ha agafat i restablert la branca '%s'\n" -#: builtin/checkout.c:679 builtin/checkout.c:1134 +#: builtin/checkout.c:676 builtin/checkout.c:1065 #, c-format msgid "Switched to a new branch '%s'\n" msgstr "S'ha agafat la branca nova '%s'\n" -#: builtin/checkout.c:681 +#: builtin/checkout.c:678 #, c-format msgid "Switched to branch '%s'\n" msgstr "S'ha agafat la branca '%s'\n" -#: builtin/checkout.c:733 +#: builtin/checkout.c:730 #, c-format msgid " ... and %d more.\n" msgstr " ... i %d més.\n" -#: builtin/checkout.c:739 +#: builtin/checkout.c:736 #, c-format msgid "" "Warning: you are leaving %d commit behind, not connected to\n" @@ -3610,7 +4109,7 @@ msgstr[1] "" "\n" "%s\n" -#: builtin/checkout.c:758 +#: builtin/checkout.c:755 #, c-format msgid "" "If you want to keep it by creating a new branch, this may be a good time\n" @@ -3637,149 +4136,144 @@ msgstr[1] "" " git branch %s\n" "\n" -#: builtin/checkout.c:794 +#: builtin/checkout.c:791 msgid "internal error in revision walk" msgstr "error intern en el passeig per revisions" -#: builtin/checkout.c:798 +#: builtin/checkout.c:795 msgid "Previous HEAD position was" msgstr "La posició de HEAD anterior era" -#: builtin/checkout.c:825 builtin/checkout.c:1129 +#: builtin/checkout.c:822 builtin/checkout.c:1060 msgid "You are on a branch yet to be born" msgstr "Sou en una branca que encara ha de nàixer" -#: builtin/checkout.c:931 -#, c-format -msgid "'%s' is already checked out at '%s'" -msgstr "'%s' ja s'ha agafat a '%s'" - -#: builtin/checkout.c:1036 +#: builtin/checkout.c:967 #, c-format msgid "only one reference expected, %d given." msgstr "només una referència esperada, %d donades." -#: builtin/checkout.c:1075 +#: builtin/checkout.c:1006 builtin/worktree.c:210 #, c-format msgid "invalid reference: %s" msgstr "referència no vàlida: %s" -#: builtin/checkout.c:1104 +#: builtin/checkout.c:1035 #, c-format msgid "reference is not a tree: %s" msgstr "la referència no és un arbre: %s" -#: builtin/checkout.c:1143 +#: builtin/checkout.c:1074 msgid "paths cannot be used with switching branches" msgstr "els camins no es poden usar amb canvi de branca" -#: builtin/checkout.c:1146 builtin/checkout.c:1150 +#: builtin/checkout.c:1077 builtin/checkout.c:1081 #, c-format msgid "'%s' cannot be used with switching branches" msgstr "'%s' no es pot usar amb canvi de branca" -#: builtin/checkout.c:1154 builtin/checkout.c:1157 builtin/checkout.c:1162 -#: builtin/checkout.c:1165 +#: builtin/checkout.c:1085 builtin/checkout.c:1088 builtin/checkout.c:1093 +#: builtin/checkout.c:1096 #, c-format msgid "'%s' cannot be used with '%s'" msgstr "'%s' no es pot usar amb '%s'" -#: builtin/checkout.c:1170 +#: builtin/checkout.c:1101 #, c-format msgid "Cannot switch branch to a non-commit '%s'" -msgstr "No es pot canviar la branca a una no comissió '%s'" +msgstr "No es pot canviar la branca a la no comissió '%s'" -#: builtin/checkout.c:1203 builtin/checkout.c:1205 builtin/clone.c:83 -#: builtin/remote.c:159 builtin/remote.c:161 builtin/worktree.c:282 -#: builtin/worktree.c:284 +#: builtin/checkout.c:1134 builtin/checkout.c:1136 builtin/clone.c:83 +#: builtin/remote.c:159 builtin/remote.c:161 builtin/worktree.c:317 +#: builtin/worktree.c:319 msgid "branch" msgstr "branca" -#: builtin/checkout.c:1204 +#: builtin/checkout.c:1135 msgid "create and checkout a new branch" msgstr "crea i agafa una branca nova" -#: builtin/checkout.c:1206 +#: builtin/checkout.c:1137 msgid "create/reset and checkout a branch" msgstr "crea/restableix i agafa una branca" -#: builtin/checkout.c:1207 +#: builtin/checkout.c:1138 msgid "create reflog for new branch" msgstr "crea un registre de referència per a la branca nova" -#: builtin/checkout.c:1208 +#: builtin/checkout.c:1139 msgid "detach the HEAD at named commit" msgstr "separa el HEAD a la comissió anomenada" -#: builtin/checkout.c:1209 +#: builtin/checkout.c:1140 msgid "set upstream info for new branch" msgstr "estableix la informació de font de la branca nova" -#: builtin/checkout.c:1211 +#: builtin/checkout.c:1142 msgid "new-branch" msgstr "branca-nova" -#: builtin/checkout.c:1211 +#: builtin/checkout.c:1142 msgid "new unparented branch" -msgstr "branca nova sense mare" +msgstr "branca òrfena nova" -#: builtin/checkout.c:1212 +#: builtin/checkout.c:1143 msgid "checkout our version for unmerged files" msgstr "agafa la versió nostra dels fitxers sense fusionar" -#: builtin/checkout.c:1214 +#: builtin/checkout.c:1145 msgid "checkout their version for unmerged files" msgstr "agafa la versió seva dels fitxers sense fusionar" -#: builtin/checkout.c:1216 +#: builtin/checkout.c:1147 msgid "force checkout (throw away local modifications)" -msgstr "agafa a la força (descarta qualsevulles modificacions locals)" +msgstr "agafa a la força (descarta qualsevulla modificació local)" -#: builtin/checkout.c:1217 +#: builtin/checkout.c:1148 msgid "perform a 3-way merge with the new branch" msgstr "realitza una fusió de 3 vies amb la branca nova" -#: builtin/checkout.c:1218 builtin/merge.c:227 +#: builtin/checkout.c:1149 builtin/merge.c:227 msgid "update ignored files (default)" msgstr "actualitza els fitxers ignorats (per defecte)" -#: builtin/checkout.c:1219 builtin/log.c:1239 parse-options.h:244 +#: builtin/checkout.c:1150 builtin/log.c:1264 parse-options.h:249 msgid "style" msgstr "estil" -#: builtin/checkout.c:1220 +#: builtin/checkout.c:1151 msgid "conflict style (merge or diff3)" msgstr "estil de conflicte (fusió o diff3)" -#: builtin/checkout.c:1223 +#: builtin/checkout.c:1154 msgid "do not limit pathspecs to sparse entries only" -msgstr "no limitis les especificacions de camí només a entrades escasses" +msgstr "no limitis les especificacions de camí només a entrades disperses" -#: builtin/checkout.c:1225 +#: builtin/checkout.c:1156 msgid "second guess 'git checkout '" msgstr "dubta 'git checkout '" -#: builtin/checkout.c:1227 +#: builtin/checkout.c:1158 msgid "do not check if another worktree is holding the given ref" msgstr "no comprovis si altre arbre de treball té la referència donada" -#: builtin/checkout.c:1252 +#: builtin/checkout.c:1181 msgid "-b, -B and --orphan are mutually exclusive" msgstr "-b, -B i --orphan són mutualment exclusius" -#: builtin/checkout.c:1269 +#: builtin/checkout.c:1198 msgid "--track needs a branch name" msgstr "--track necessita un nom de branca" -#: builtin/checkout.c:1274 +#: builtin/checkout.c:1203 msgid "Missing branch name; try -b" msgstr "Manca el nom de branca; proveu -b" -#: builtin/checkout.c:1310 +#: builtin/checkout.c:1239 msgid "invalid path specification" msgstr "especificació de camí no vàlida" -#: builtin/checkout.c:1317 +#: builtin/checkout.c:1246 #, c-format msgid "" "Cannot update paths and switch to branch '%s' at the same time.\n" @@ -3788,12 +4282,12 @@ msgstr "" "No es poden actualitzar els camins i canviar a la branca '%s' a la vegada.\n" "Volíeu agafar '%s', la qual no es pot resoldre com a comissió?" -#: builtin/checkout.c:1322 +#: builtin/checkout.c:1251 #, c-format msgid "git checkout: --detach does not take a path argument '%s'" msgstr "git checkout: --detach no accepta un paràmetre de camí '%s'" -#: builtin/checkout.c:1326 +#: builtin/checkout.c:1255 msgid "" "git checkout: --ours/--theirs, --force and --merge are incompatible when\n" "checking out of the index." @@ -3801,38 +4295,38 @@ msgstr "" "git checkout: --ours/--theirs, --force i --merge són incompatibles en\n" "agafar de l'índex." -#: builtin/clean.c:26 +#: builtin/clean.c:25 msgid "" "git clean [-d] [-f] [-i] [-n] [-q] [-e ] [-x | -X] [--] ..." msgstr "" "git clean [-d] [-f] [-i] [-n] [-q] [-e ] [-x | -X] [--] ..." -#: builtin/clean.c:30 +#: builtin/clean.c:29 #, c-format msgid "Removing %s\n" msgstr "Eliminant %s\n" -#: builtin/clean.c:31 +#: builtin/clean.c:30 #, c-format msgid "Would remove %s\n" msgstr "Eliminaria %s\n" -#: builtin/clean.c:32 +#: builtin/clean.c:31 #, c-format msgid "Skipping repository %s\n" msgstr "Saltant el dipòsit %s\n" -#: builtin/clean.c:33 +#: builtin/clean.c:32 #, c-format msgid "Would skip repository %s\n" msgstr "Saltaria el dipòsit %s\n" -#: builtin/clean.c:34 +#: builtin/clean.c:33 #, c-format msgid "failed to remove %s" msgstr "s'ha fallat en eliminar %s" -#: builtin/clean.c:295 +#: builtin/clean.c:317 msgid "" "Prompt help:\n" "1 - select a numbered item\n" @@ -3844,7 +4338,7 @@ msgstr "" "foo - selecciona un ítem basat en un prefix únic\n" " - (buit) no seleccionis res" -#: builtin/clean.c:299 +#: builtin/clean.c:321 msgid "" "Prompt help:\n" "1 - select a single item\n" @@ -3864,36 +4358,36 @@ msgstr "" "* - tria tots els ítems\n" " - (buit) finalitza la selecció" -#: builtin/clean.c:515 +#: builtin/clean.c:537 #, c-format msgid "Huh (%s)?" msgstr "Perdó (%s)?" -#: builtin/clean.c:657 +#: builtin/clean.c:679 #, c-format msgid "Input ignore patterns>> " msgstr "Introduïu els patrons a ignorar>> " -#: builtin/clean.c:694 +#: builtin/clean.c:716 #, c-format msgid "WARNING: Cannot find items matched by: %s" msgstr "AVÍS: No es pot trobar ítems que coincideixin amb: %s" -#: builtin/clean.c:715 +#: builtin/clean.c:737 msgid "Select items to delete" msgstr "Selecciona els ítems a suprimir" #. TRANSLATORS: Make sure to keep [y/N] as is -#: builtin/clean.c:756 +#: builtin/clean.c:778 #, c-format msgid "Remove %s [y/N]? " msgstr "Voleu eliminar %s [y/N]? " -#: builtin/clean.c:781 +#: builtin/clean.c:803 msgid "Bye." msgstr "Adéu." -#: builtin/clean.c:789 +#: builtin/clean.c:811 msgid "" "clean - start cleaning\n" "filter by pattern - exclude items from deletion\n" @@ -3911,62 +4405,62 @@ msgstr "" "help - aquesta pantalla\n" "? - ajuda de selecció de l'avís" -#: builtin/clean.c:816 +#: builtin/clean.c:838 msgid "*** Commands ***" msgstr "*** Ordres ***" -#: builtin/clean.c:817 +#: builtin/clean.c:839 msgid "What now" -msgstr "Què ara" +msgstr "I ara què" -#: builtin/clean.c:825 +#: builtin/clean.c:847 msgid "Would remove the following item:" msgid_plural "Would remove the following items:" msgstr[0] "Eliminaria l'ítem següent:" msgstr[1] "Eliminaria els ítems següents:" -#: builtin/clean.c:842 +#: builtin/clean.c:864 msgid "No more files to clean, exiting." msgstr "No hi ha més fitxers a netejar; sortint." -#: builtin/clean.c:873 +#: builtin/clean.c:895 msgid "do not print names of files removed" msgstr "no imprimeixis els noms dels fitxers eliminats" -#: builtin/clean.c:875 +#: builtin/clean.c:897 msgid "force" msgstr "força" -#: builtin/clean.c:876 +#: builtin/clean.c:898 msgid "interactive cleaning" msgstr "neteja interactiva" -#: builtin/clean.c:878 +#: builtin/clean.c:900 msgid "remove whole directories" msgstr "elimina directoris sencers" -#: builtin/clean.c:879 builtin/describe.c:407 builtin/grep.c:714 +#: builtin/clean.c:901 builtin/describe.c:407 builtin/grep.c:714 #: builtin/ls-files.c:443 builtin/name-rev.c:311 builtin/show-ref.c:187 msgid "pattern" msgstr "patró" -#: builtin/clean.c:880 +#: builtin/clean.c:902 msgid "add to ignore rules" msgstr "afegiu per a ignorar les regles" -#: builtin/clean.c:881 +#: builtin/clean.c:903 msgid "remove ignored files, too" msgstr "elimina els fitxers ignorats, també" -#: builtin/clean.c:883 +#: builtin/clean.c:905 msgid "remove only ignored files" msgstr "elimina només els fitxers ignorats" -#: builtin/clean.c:901 +#: builtin/clean.c:923 msgid "-x and -X cannot be used together" msgstr "-x i -X no es poden usar junts" -#: builtin/clean.c:905 +#: builtin/clean.c:927 msgid "" "clean.requireForce set to true and neither -i, -n, nor -f given; refusing to " "clean" @@ -3974,7 +4468,7 @@ msgstr "" "clean.requireForce està establerta a veritat i ni -i, -n ni -f s'ha donat; " "refusant netejar" -#: builtin/clean.c:908 +#: builtin/clean.c:930 msgid "" "clean.requireForce defaults to true and neither -i, -n, nor -f given; " "refusing to clean" @@ -3986,8 +4480,8 @@ msgstr "" msgid "git clone [] [--] []" msgstr "git clone [] [--] []" -#: builtin/clone.c:57 builtin/fetch.c:111 builtin/merge.c:224 -#: builtin/push.c:523 +#: builtin/clone.c:57 builtin/fetch.c:112 builtin/merge.c:224 +#: builtin/pull.c:109 builtin/push.c:560 builtin/send-pack.c:168 msgid "force progress reporting" msgstr "força l'informe de progrés" @@ -3995,7 +4489,7 @@ msgstr "força l'informe de progrés" msgid "don't create a checkout" msgstr "no facis cap agafada" -#: builtin/clone.c:60 builtin/clone.c:62 builtin/init-db.c:503 +#: builtin/clone.c:60 builtin/clone.c:62 builtin/init-db.c:504 msgid "create a bare repository" msgstr "crea un dipòsit nu" @@ -4017,13 +4511,13 @@ msgstr "configura com a dipòsit compartit" #: builtin/clone.c:72 builtin/clone.c:74 msgid "initialize submodules in the clone" -msgstr "initialitza els submòduls en el clon" +msgstr "inicialitza els submòduls en el clon" -#: builtin/clone.c:75 builtin/init-db.c:500 +#: builtin/clone.c:75 builtin/init-db.c:501 msgid "template-directory" msgstr "directori-de-plantilla" -#: builtin/clone.c:76 builtin/init-db.c:501 +#: builtin/clone.c:76 builtin/init-db.c:502 msgid "directory from which templates will be used" msgstr "directori del qual les plantilles s'usaran" @@ -4051,7 +4545,7 @@ msgstr "agafa en lloc del HEAD del remot" msgid "path to git-upload-pack on the remote" msgstr "camí a git-upload-pack en el remot" -#: builtin/clone.c:87 builtin/fetch.c:112 builtin/grep.c:659 +#: builtin/clone.c:87 builtin/fetch.c:113 builtin/grep.c:659 builtin/pull.c:186 msgid "depth" msgstr "profunditat" @@ -4063,73 +4557,68 @@ msgstr "crea un clon superficial de tal profunditat" msgid "clone only one branch, HEAD or --branch" msgstr "clona només una branca, HEAD o --branch" -#: builtin/clone.c:91 builtin/init-db.c:509 +#: builtin/clone.c:91 builtin/init-db.c:510 msgid "gitdir" msgstr "directori de git" -#: builtin/clone.c:92 builtin/init-db.c:510 +#: builtin/clone.c:92 builtin/init-db.c:511 msgid "separate git dir from working tree" msgstr "separa el directori de git de l'arbre de treball" #: builtin/clone.c:93 msgid "key=value" -msgstr "calu=valor" +msgstr "clau=valor" #: builtin/clone.c:94 msgid "set config inside the new repository" msgstr "estableix la configuració dins del dipòsit nou" -#: builtin/clone.c:240 +#: builtin/clone.c:298 #, c-format msgid "reference repository '%s' is not a local repository." msgstr "el dipòsit de referència '%s' no és un dipòsit local." -#: builtin/clone.c:244 +#: builtin/clone.c:302 #, c-format msgid "reference repository '%s' is shallow" msgstr "el dipòsit de referència '%s' és superficial" -#: builtin/clone.c:247 +#: builtin/clone.c:305 #, c-format msgid "reference repository '%s' is grafted" msgstr "el dipòsit de referència '%s' és empeltat" -#: builtin/clone.c:310 -#, c-format -msgid "failed to create directory '%s'" -msgstr "s'ha fallat en crear el directori '%s'" - -#: builtin/clone.c:312 builtin/diff.c:84 +#: builtin/clone.c:370 builtin/diff.c:84 #, c-format msgid "failed to stat '%s'" msgstr "s'ha fallat en fer stat a '%s'" -#: builtin/clone.c:314 +#: builtin/clone.c:372 #, c-format msgid "%s exists and is not a directory" -msgstr "%s existeix i no és un directori" +msgstr "%s existeix i no és directori" -#: builtin/clone.c:328 +#: builtin/clone.c:386 #, c-format msgid "failed to stat %s\n" msgstr "s'ha fallat en fer stat a '%s'\n" -#: builtin/clone.c:350 +#: builtin/clone.c:408 #, c-format msgid "failed to create link '%s'" msgstr "s'ha fallat en crear l'enllaç '%s'" -#: builtin/clone.c:354 +#: builtin/clone.c:412 #, c-format msgid "failed to copy file to '%s'" msgstr "s'ha fallat en copiar el fitxer a '%s'" -#: builtin/clone.c:377 builtin/clone.c:551 +#: builtin/clone.c:435 builtin/clone.c:619 #, c-format msgid "done.\n" msgstr "fet.\n" -#: builtin/clone.c:389 +#: builtin/clone.c:447 msgid "" "Clone succeeded, but checkout failed.\n" "You can inspect what was checked out with 'git status'\n" @@ -4139,123 +4628,123 @@ msgstr "" "Podeu inspeccionar què s'ha agafat amb 'git status' i\n" "tornar a intentar l'agafada amb 'git checkout -f HEAD'\n" -#: builtin/clone.c:466 +#: builtin/clone.c:524 #, c-format msgid "Could not find remote branch %s to clone." msgstr "No s'ha pogut trobar la branca remota %s per a clonar." -#: builtin/clone.c:546 +#: builtin/clone.c:614 #, c-format msgid "Checking connectivity... " msgstr "Provant connectivitat... " -#: builtin/clone.c:549 +#: builtin/clone.c:617 msgid "remote did not send all necessary objects" msgstr "el remot no ha enviat tots els objectes necessaris" -#: builtin/clone.c:613 +#: builtin/clone.c:681 msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n" msgstr "" "el HEAD remot es refereix a una referència que no existeix; no s'ha pogut " "agafar.\n" -#: builtin/clone.c:644 +#: builtin/clone.c:712 msgid "unable to checkout working tree" msgstr "no s'ha pogut agafar l'arbre de treball" -#: builtin/clone.c:731 +#: builtin/clone.c:799 msgid "cannot repack to clean up" msgstr "no es pot reempaquetar per a netejar" -#: builtin/clone.c:733 +#: builtin/clone.c:801 msgid "cannot unlink temporary alternates file" msgstr "no es pot desenllaçar el fitxer d'alternatives temporal" -#: builtin/clone.c:763 +#: builtin/clone.c:831 msgid "Too many arguments." msgstr "Hi ha massa paràmetres." -#: builtin/clone.c:767 +#: builtin/clone.c:835 msgid "You must specify a repository to clone." msgstr "Heu d'especificar un dipòsit per a clonar." -#: builtin/clone.c:778 +#: builtin/clone.c:846 #, c-format msgid "--bare and --origin %s options are incompatible." msgstr "les opcions --bare i --origin %s són incompatibles." -#: builtin/clone.c:781 +#: builtin/clone.c:849 msgid "--bare and --separate-git-dir are incompatible." msgstr "--bare i --separate-git-dir són incompatibles." -#: builtin/clone.c:794 +#: builtin/clone.c:862 #, c-format msgid "repository '%s' does not exist" msgstr "el dipòsit '%s' no existeix" -#: builtin/clone.c:800 builtin/fetch.c:1160 +#: builtin/clone.c:868 builtin/fetch.c:1168 #, c-format msgid "depth %s is not a positive number" msgstr "la profunditat %s no és nombre positiu" -#: builtin/clone.c:810 +#: builtin/clone.c:878 #, c-format msgid "destination path '%s' already exists and is not an empty directory." msgstr "el camí destí '%s' ja existeix i no és un directori buit." -#: builtin/clone.c:820 +#: builtin/clone.c:888 #, c-format msgid "working tree '%s' already exists." msgstr "l'arbre de treball '%s' ja existeix." -#: builtin/clone.c:835 builtin/clone.c:846 builtin/worktree.c:193 -#: builtin/worktree.c:220 +#: builtin/clone.c:903 builtin/clone.c:914 builtin/worktree.c:218 +#: builtin/worktree.c:245 #, c-format msgid "could not create leading directories of '%s'" msgstr "no s'ha pogut crear els directoris inicials de '%s'" -#: builtin/clone.c:838 +#: builtin/clone.c:906 #, c-format msgid "could not create work tree dir '%s'" msgstr "no s'ha pogut crear el directori d'arbre de treball '%s'" -#: builtin/clone.c:856 +#: builtin/clone.c:924 #, c-format msgid "Cloning into bare repository '%s'...\n" msgstr "Clonant al dipòsit nu '%s'...\n" -#: builtin/clone.c:858 +#: builtin/clone.c:926 #, c-format msgid "Cloning into '%s'...\n" msgstr "Clonant a '%s'...\n" -#: builtin/clone.c:883 +#: builtin/clone.c:951 msgid "--dissociate given, but there is no --reference" msgstr "s'ha donat --dissociate, però no hi ha --reference" -#: builtin/clone.c:900 +#: builtin/clone.c:968 msgid "--depth is ignored in local clones; use file:// instead." msgstr "--depth s'ignora en els clons locals; useu file:// en lloc d'això." -#: builtin/clone.c:903 +#: builtin/clone.c:971 msgid "source repository is shallow, ignoring --local" msgstr "el dipòsit font és superficial, ignorant --local" -#: builtin/clone.c:908 +#: builtin/clone.c:976 msgid "--local is ignored" msgstr "--local s'ignora" -#: builtin/clone.c:912 +#: builtin/clone.c:980 #, c-format msgid "Don't know how to clone %s" -msgstr "No es sap com clonar %s" +msgstr "No se sap com clonar %s" -#: builtin/clone.c:961 builtin/clone.c:969 +#: builtin/clone.c:1029 builtin/clone.c:1037 #, c-format msgid "Remote branch %s not found in upstream %s" msgstr "La branca remota %s no es troba en la font %s" -#: builtin/clone.c:972 +#: builtin/clone.c:1040 msgid "You appear to have cloned an empty repository." msgstr "Sembla que heu clonat un dipòsit buit." @@ -4269,7 +4758,7 @@ msgstr "cerca les variables de configuració" #: builtin/column.c:27 builtin/column.c:28 msgid "layout to use" -msgstr "pla a usar" +msgstr "disposició a usar" #: builtin/column.c:29 msgid "Maximum width" @@ -4314,11 +4803,11 @@ msgid "" " git commit --amend --reset-author\n" msgstr "" "S'han configurat el vostre nom i adreça de correu electrònic\n" -"automàticament basats en el vostre nom d'usuari i nom de host. Si us\n" -"plau, comproveu que siguin correctes. Podeu suprimir aquest missatge\n" -"establint-los explícitament. Executeu l'ordre següent i seguiu les\n" -"instruccions en el vostre editor per editar el vostre fitxer de\n" -"configuració:\n" +"automàticament basats en el vostre nom d'usuari i nom de màquina. Si\n" +"us plau, comproveu que siguin correctes. Podeu suprimir aquest\n" +"missatge establint-los explícitament. Executeu l'ordre següent i\n" +"seguiu les instruccions en el vostre editor per editar el vostre\n" +"fitxer de configuració:\n" "\n" " git config --global --edit\n" "Després de fer això, podeu arreglar la identitat usada per a aquesta\n" @@ -4340,9 +4829,9 @@ msgid "" " git commit --amend --reset-author\n" msgstr "" "S'han configurat el vostre nom i adreça de correu electrònic\n" -"automàticament basats en el vostre nom d'usuari i nom de host. Si us\n" -"plau, comproveu que siguin correctes. Podeu suprimir aquest missatge\n" -"establint-los explícitament:\n" +"automàticament basats en el vostre nom d'usuari i nom de màquina. Si\n" +"us plau, comproveu que siguin correctes. Podeu suprimir aquest\n" +"missatge establint-los explícitament:\n" "\n" " git config --global user.name \"El Vostre Nom\"\n" " git config --global user.email tu@example.com\n" @@ -4401,66 +4890,62 @@ msgstr "" msgid "failed to unpack HEAD tree object" msgstr "s'ha fallat en desempaquetar l'objecte d'arbre HEAD" -#: builtin/commit.c:344 +#: builtin/commit.c:345 msgid "unable to create temporary index" msgstr "no s'ha pogut crear un índex temporal" -#: builtin/commit.c:350 +#: builtin/commit.c:351 msgid "interactive add failed" msgstr "l'afegiment interactiu ha fallat" -#: builtin/commit.c:361 -msgid "unable to write index file" -msgstr "no s'ha pogut escriure el fitxer d'índex" - -#: builtin/commit.c:363 +#: builtin/commit.c:364 msgid "unable to update temporary index" msgstr "no s'ha pogut actualitzar l'índex temporal" -#: builtin/commit.c:365 +#: builtin/commit.c:366 msgid "Failed to update main cache tree" msgstr "S'ha fallat en actualitzar l'arbre principal de memòria cau" -#: builtin/commit.c:389 builtin/commit.c:414 builtin/commit.c:463 +#: builtin/commit.c:390 builtin/commit.c:413 builtin/commit.c:462 msgid "unable to write new_index file" msgstr "no s'ha pogut escriure el fitxer new_index" -#: builtin/commit.c:445 +#: builtin/commit.c:444 msgid "cannot do a partial commit during a merge." msgstr "no es pot fer una comissió parcial durant una fusió." -#: builtin/commit.c:447 +#: builtin/commit.c:446 msgid "cannot do a partial commit during a cherry-pick." msgstr "no es pot fer una comissió parcial durant un recull de cireres." -#: builtin/commit.c:456 +#: builtin/commit.c:455 msgid "cannot read the index" msgstr "no es pot llegir l'índex" -#: builtin/commit.c:475 +#: builtin/commit.c:474 msgid "unable to write temporary index file" msgstr "no s'ha pogut escriure un fitxer d'índex temporal" -#: builtin/commit.c:580 +#: builtin/commit.c:579 #, c-format msgid "commit '%s' lacks author header" msgstr "a la comissió '%s' li manca la capçalera d'autor" -#: builtin/commit.c:582 +#: builtin/commit.c:581 #, c-format msgid "commit '%s' has malformed author line" msgstr "la comissió '%s' té una línia d'autor mal formada" -#: builtin/commit.c:601 +#: builtin/commit.c:600 msgid "malformed --author parameter" msgstr "paràmetre --author mal format" -#: builtin/commit.c:609 +#: builtin/commit.c:608 #, c-format msgid "invalid date format: %s" msgstr "format de data no vàlid: %s" -#: builtin/commit.c:653 +#: builtin/commit.c:652 msgid "" "unable to select a comment character that is not used\n" "in the current commit message" @@ -4468,43 +4953,38 @@ msgstr "" "no es pot seleccionar un caràcter de comentari que\n" "no sigui usat en el missatge de comissió actual" -#: builtin/commit.c:690 builtin/commit.c:723 builtin/commit.c:1080 +#: builtin/commit.c:689 builtin/commit.c:722 builtin/commit.c:1079 #, c-format msgid "could not lookup commit %s" msgstr "no s'ha pogut trobar la comissió %s" -#: builtin/commit.c:702 builtin/shortlog.c:273 +#: builtin/commit.c:701 builtin/shortlog.c:273 #, c-format msgid "(reading log message from standard input)\n" -msgstr "(llegint el missatge de registre de l'entrada estàndard)\n" +msgstr "(llegint el missatge de registre des de l'entrada estàndard)\n" -#: builtin/commit.c:704 +#: builtin/commit.c:703 msgid "could not read log from standard input" -msgstr "no s'ha pogut llegir de l'entrada estàndard" +msgstr "no s'ha pogut llegir el registre des de l'entrada estàndard" -#: builtin/commit.c:708 +#: builtin/commit.c:707 #, c-format msgid "could not read log file '%s'" msgstr "no s'ha pogut llegir el fitxer de registre '%s'" -#: builtin/commit.c:730 +#: builtin/commit.c:729 msgid "could not read MERGE_MSG" msgstr "no s'ha pogut llegir MERGE_MSG" -#: builtin/commit.c:734 +#: builtin/commit.c:733 msgid "could not read SQUASH_MSG" -msgstr "no s'ha pogur llegir SQUASH_MSG" +msgstr "no s'ha pogut llegir SQUASH_MSG" -#: builtin/commit.c:738 builtin/merge.c:1079 -#, c-format -msgid "could not read '%s'" -msgstr "no s'ha pogut llegir '%s'" - -#: builtin/commit.c:785 +#: builtin/commit.c:784 msgid "could not write commit template" msgstr "no s'ha pogut escriure la plantilla de comissió" -#: builtin/commit.c:803 +#: builtin/commit.c:802 #, c-format msgid "" "\n" @@ -4519,7 +4999,7 @@ msgstr "" "\t%s\n" "i intenteu-ho de nou.\n" -#: builtin/commit.c:808 +#: builtin/commit.c:807 #, c-format msgid "" "\n" @@ -4534,7 +5014,7 @@ msgstr "" "\t%s\n" "i intenteu-ho de nou.\n" -#: builtin/commit.c:821 +#: builtin/commit.c:820 #, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" @@ -4544,7 +5024,7 @@ msgstr "" "S'ignoraran les línies començant amb '%c', i un missatge de\n" "comissió buit avorta la comissió.\n" -#: builtin/commit.c:828 +#: builtin/commit.c:827 #, c-format msgid "" "Please enter the commit message for your changes. Lines starting\n" @@ -4555,148 +5035,148 @@ msgstr "" "Es retindran les línies començants amb '%c'; podeu eliminar-les per vós\n" "mateix si voleu. Un missatge buit avorta la comissió.\n" -#: builtin/commit.c:848 +#: builtin/commit.c:847 #, c-format msgid "%sAuthor: %.*s <%.*s>" msgstr "%sAutor: %.*s <%.*s>" -#: builtin/commit.c:856 +#: builtin/commit.c:855 #, c-format msgid "%sDate: %s" msgstr "%sData: %s" -#: builtin/commit.c:863 +#: builtin/commit.c:862 #, c-format msgid "%sCommitter: %.*s <%.*s>" msgstr "%sComitent: %.*s <%.*s>" -#: builtin/commit.c:881 +#: builtin/commit.c:880 msgid "Cannot read index" msgstr "No es pot llegir l'índex" -#: builtin/commit.c:938 +#: builtin/commit.c:937 msgid "Error building trees" msgstr "Error en construir arbres" -#: builtin/commit.c:953 builtin/tag.c:495 +#: builtin/commit.c:952 builtin/tag.c:495 #, c-format msgid "Please supply the message using either -m or -F option.\n" msgstr "Si us plau, proveïu el missatge per usar o l'opció -m o l'opció -F.\n" -#: builtin/commit.c:1055 +#: builtin/commit.c:1054 #, c-format msgid "--author '%s' is not 'Name ' and matches no existing author" msgstr "" "--author '%s' no és 'Nom ' i no coincideix amb\n" "cap autor existent" -#: builtin/commit.c:1070 builtin/commit.c:1310 +#: builtin/commit.c:1069 builtin/commit.c:1309 #, c-format msgid "Invalid untracked files mode '%s'" msgstr "Mode de fitxers no seguits no vàlid '%s'" -#: builtin/commit.c:1107 +#: builtin/commit.c:1106 msgid "--long and -z are incompatible" msgstr "--long i -z són incompatibles" -#: builtin/commit.c:1137 +#: builtin/commit.c:1136 msgid "Using both --reset-author and --author does not make sense" msgstr "Usar ambdós --reset-author i --author no té sentit" -#: builtin/commit.c:1146 +#: builtin/commit.c:1145 msgid "You have nothing to amend." msgstr "No teniu res a esmenar." -#: builtin/commit.c:1149 +#: builtin/commit.c:1148 msgid "You are in the middle of a merge -- cannot amend." msgstr "Esteu enmig d'una fusió -- no es pot esmenar." -#: builtin/commit.c:1151 +#: builtin/commit.c:1150 msgid "You are in the middle of a cherry-pick -- cannot amend." msgstr "Esteu enmig d'un recull de cireres -- no es pot esmenar." -#: builtin/commit.c:1154 +#: builtin/commit.c:1153 msgid "Options --squash and --fixup cannot be used together" msgstr "Les opcions --squash i --fixup no es poden usar juntes" -#: builtin/commit.c:1164 +#: builtin/commit.c:1163 msgid "Only one of -c/-C/-F/--fixup can be used." msgstr "Només un de -c/-C/-F/--fixup es pot usar." -#: builtin/commit.c:1166 +#: builtin/commit.c:1165 msgid "Option -m cannot be combined with -c/-C/-F/--fixup." msgstr "L'opció -m no es pot combinar amb -c/-C/-F/--fixup." -#: builtin/commit.c:1174 +#: builtin/commit.c:1173 msgid "--reset-author can be used only with -C, -c or --amend." msgstr "--reset-author només es pot usar amb -C, -c o --amend." -#: builtin/commit.c:1191 +#: builtin/commit.c:1190 msgid "Only one of --include/--only/--all/--interactive/--patch can be used." msgstr "Només un de --include/--only/--all/--interactive/--patch es pot usar." -#: builtin/commit.c:1193 +#: builtin/commit.c:1192 msgid "No paths with --include/--only does not make sense." msgstr "--include/--only no té sentit sense camí." -#: builtin/commit.c:1195 +#: builtin/commit.c:1194 msgid "Clever... amending the last one with dirty index." msgstr "Intel·ligent... esmenant l'últim amb índex brut." -#: builtin/commit.c:1197 +#: builtin/commit.c:1196 msgid "Explicit paths specified without -i or -o; assuming --only paths..." msgstr "" "S'han especificat camins explícits sense -i o -o; presumint camins --only..." -#: builtin/commit.c:1209 builtin/tag.c:728 +#: builtin/commit.c:1208 builtin/tag.c:730 #, c-format msgid "Invalid cleanup mode %s" msgstr "Mode de neteja no vàlid %s" -#: builtin/commit.c:1214 +#: builtin/commit.c:1213 msgid "Paths with -a does not make sense." msgstr "-a no té sentit amb camins." -#: builtin/commit.c:1324 builtin/commit.c:1603 +#: builtin/commit.c:1323 builtin/commit.c:1602 msgid "show status concisely" msgstr "mostra l'estat concisament" -#: builtin/commit.c:1326 builtin/commit.c:1605 +#: builtin/commit.c:1325 builtin/commit.c:1604 msgid "show branch information" msgstr "mostra la informació de branca" -#: builtin/commit.c:1328 builtin/commit.c:1607 builtin/push.c:509 +#: builtin/commit.c:1327 builtin/commit.c:1606 builtin/push.c:546 msgid "machine-readable output" msgstr "sortida llegible per màquina" -#: builtin/commit.c:1331 builtin/commit.c:1609 +#: builtin/commit.c:1330 builtin/commit.c:1608 msgid "show status in long format (default)" msgstr "mostra l'estat en format llarg (per defecte)" -#: builtin/commit.c:1334 builtin/commit.c:1612 +#: builtin/commit.c:1333 builtin/commit.c:1611 msgid "terminate entries with NUL" msgstr "acaba les entrades amb NUL" -#: builtin/commit.c:1336 builtin/commit.c:1615 builtin/fast-export.c:980 -#: builtin/fast-export.c:983 builtin/tag.c:603 +#: builtin/commit.c:1335 builtin/commit.c:1614 builtin/fast-export.c:981 +#: builtin/fast-export.c:984 builtin/tag.c:604 msgid "mode" msgstr "mode" -#: builtin/commit.c:1337 builtin/commit.c:1615 +#: builtin/commit.c:1336 builtin/commit.c:1614 msgid "show untracked files, optional modes: all, normal, no. (Default: all)" msgstr "" -"mostra els fitxers no seguits, modes opcional: all, normal, no. (Per " +"mostra els fitxers no seguits, modes opcionals: all, normal, no. (Per " "defecte: all)" -#: builtin/commit.c:1340 +#: builtin/commit.c:1339 msgid "show ignored files" msgstr "mostra els fitxers ignorats" -#: builtin/commit.c:1341 parse-options.h:152 +#: builtin/commit.c:1340 parse-options.h:155 msgid "when" msgstr "quan" -#: builtin/commit.c:1342 +#: builtin/commit.c:1341 msgid "" "ignore changes to submodules, optional when: all, dirty, untracked. " "(Default: all)" @@ -4704,210 +5184,197 @@ msgstr "" "ignora els canvis als submòduls, opcional quan: all, dirty, untracked. (Per " "defecte: all)" -#: builtin/commit.c:1344 +#: builtin/commit.c:1343 msgid "list untracked files in columns" msgstr "mostra els fitxers no seguits en columnes" -#: builtin/commit.c:1430 +#: builtin/commit.c:1429 msgid "couldn't look up newly created commit" msgstr "no s'ha pogut trobar la comissió novament creada" -#: builtin/commit.c:1432 +#: builtin/commit.c:1431 msgid "could not parse newly created commit" msgstr "no s'ha pogut analitzar la comissió novament creada" -#: builtin/commit.c:1477 +#: builtin/commit.c:1476 msgid "detached HEAD" msgstr "HEAD separat" -#: builtin/commit.c:1480 +#: builtin/commit.c:1479 msgid " (root-commit)" msgstr " (comissió d'arrel)" -#: builtin/commit.c:1573 +#: builtin/commit.c:1572 msgid "suppress summary after successful commit" msgstr "omet el resum després d'una comissió reeixida" -#: builtin/commit.c:1574 +#: builtin/commit.c:1573 msgid "show diff in commit message template" msgstr "mostra la diferència en la plantilla de missatge de comissió" -#: builtin/commit.c:1576 +#: builtin/commit.c:1575 msgid "Commit message options" msgstr "Opcions de missatge de comissió" -#: builtin/commit.c:1577 builtin/tag.c:601 +#: builtin/commit.c:1576 builtin/tag.c:602 msgid "read message from file" msgstr "llegiu el missatge des d'un fitxer" -#: builtin/commit.c:1578 +#: builtin/commit.c:1577 msgid "author" msgstr "autor" -#: builtin/commit.c:1578 +#: builtin/commit.c:1577 msgid "override author for commit" msgstr "autor corregit de la comissió" -#: builtin/commit.c:1579 builtin/gc.c:280 +#: builtin/commit.c:1578 builtin/gc.c:268 msgid "date" msgstr "data" -#: builtin/commit.c:1579 +#: builtin/commit.c:1578 msgid "override date for commit" msgstr "data corregida de la comissió" -#: builtin/commit.c:1580 builtin/merge.c:218 builtin/notes.c:391 -#: builtin/notes.c:554 builtin/tag.c:599 +#: builtin/commit.c:1579 builtin/merge.c:218 builtin/notes.c:392 +#: builtin/notes.c:555 builtin/tag.c:600 msgid "message" msgstr "missatge" -#: builtin/commit.c:1580 +#: builtin/commit.c:1579 msgid "commit message" msgstr "missatge de comissió" -#: builtin/commit.c:1581 +#: builtin/commit.c:1580 msgid "reuse and edit message from specified commit" msgstr "reusa i edita el missatge de la comissió especificada" -#: builtin/commit.c:1582 +#: builtin/commit.c:1581 msgid "reuse message from specified commit" msgstr "reusa el missatge de la comissió especificada" -#: builtin/commit.c:1583 +#: builtin/commit.c:1582 msgid "use autosquash formatted message to fixup specified commit" msgstr "" "usa el missatge formatat d'aixafada automàtica per a arreglar la comissió " "especificada" -#: builtin/commit.c:1584 +#: builtin/commit.c:1583 msgid "use autosquash formatted message to squash specified commit" msgstr "" "usa el missatge formatat d'aixafada automàtica per a aixafar la comissió " "especificada" -#: builtin/commit.c:1585 +#: builtin/commit.c:1584 msgid "the commit is authored by me now (used with -C/-c/--amend)" msgstr "l'autor de la comissió ja sóc jo (s'usa amb -C/-c/--amend)" -#: builtin/commit.c:1586 builtin/log.c:1191 builtin/revert.c:86 +#: builtin/commit.c:1585 builtin/log.c:1216 builtin/revert.c:86 msgid "add Signed-off-by:" msgstr "afegeix Signed-off-by:" -#: builtin/commit.c:1587 +#: builtin/commit.c:1586 msgid "use specified template file" msgstr "usa el fitxer de plantilla especificat" -#: builtin/commit.c:1588 +#: builtin/commit.c:1587 msgid "force edit of commit" msgstr "força l'edició de la comissió" -#: builtin/commit.c:1589 +#: builtin/commit.c:1588 msgid "default" msgstr "per defecte" -#: builtin/commit.c:1589 builtin/tag.c:604 +#: builtin/commit.c:1588 builtin/tag.c:605 msgid "how to strip spaces and #comments from message" msgstr "com despullar els espais i #comentaris del missatge" -#: builtin/commit.c:1590 +#: builtin/commit.c:1589 msgid "include status in commit message template" msgstr "inclou l'estat en la plantilla de missatge de comissió" -#: builtin/commit.c:1591 builtin/merge.c:225 builtin/revert.c:92 -#: builtin/tag.c:605 -msgid "key-id" -msgstr "ID de clau" - -#: builtin/commit.c:1592 builtin/merge.c:226 builtin/revert.c:93 +#: builtin/commit.c:1591 builtin/merge.c:226 builtin/pull.c:156 +#: builtin/revert.c:93 msgid "GPG sign commit" msgstr "firma la comissió amb GPG" -#: builtin/commit.c:1595 +#: builtin/commit.c:1594 msgid "Commit contents options" msgstr "Opcions dels continguts de les comissions" -#: builtin/commit.c:1596 +#: builtin/commit.c:1595 msgid "commit all changed files" msgstr "comet tots els fitxers canviats" -#: builtin/commit.c:1597 +#: builtin/commit.c:1596 msgid "add specified files to index for commit" msgstr "afegeix els fitxers especificats a l'índex per a cometre" -#: builtin/commit.c:1598 +#: builtin/commit.c:1597 msgid "interactively add files" msgstr "afegeix els fitxers interactivament" -#: builtin/commit.c:1599 +#: builtin/commit.c:1598 msgid "interactively add changes" msgstr "afegeix els canvis interactivament" -#: builtin/commit.c:1600 +#: builtin/commit.c:1599 msgid "commit only specified files" msgstr "comet només els fitxers especificats" -#: builtin/commit.c:1601 +#: builtin/commit.c:1600 msgid "bypass pre-commit hook" msgstr "evita el ganxo de precomissió" -#: builtin/commit.c:1602 +#: builtin/commit.c:1601 msgid "show what would be committed" msgstr "mostra què es cometria" -#: builtin/commit.c:1613 +#: builtin/commit.c:1612 msgid "amend previous commit" msgstr "esmena la comissió anterior" -#: builtin/commit.c:1614 +#: builtin/commit.c:1613 msgid "bypass post-rewrite hook" msgstr "evita el ganxo de postreescriure" -#: builtin/commit.c:1619 +#: builtin/commit.c:1618 msgid "ok to record an empty change" msgstr "està bé registrar un canvi buit" -#: builtin/commit.c:1621 +#: builtin/commit.c:1620 msgid "ok to record a change with an empty message" msgstr "està bé registrar un canvi amb missatge buit" -#: builtin/commit.c:1650 +#: builtin/commit.c:1649 msgid "could not parse HEAD commit" msgstr "no s'ha pogut analitzar la comissió HEAD" -#: builtin/commit.c:1689 builtin/merge.c:1076 -#, c-format -msgid "could not open '%s' for reading" -msgstr "no s'ha pogut obrir '%s' per a lectura" - -#: builtin/commit.c:1696 +#: builtin/commit.c:1695 #, c-format msgid "Corrupt MERGE_HEAD file (%s)" -msgstr "Fitxer MERGE_HEAD corrupte (%s)" +msgstr "Fitxer MERGE_HEAD malmès (%s)" -#: builtin/commit.c:1703 +#: builtin/commit.c:1702 msgid "could not read MERGE_MODE" msgstr "no s'ha pogut llegir MERGE_MODE" -#: builtin/commit.c:1722 +#: builtin/commit.c:1721 #, c-format msgid "could not read commit message: %s" msgstr "no s'ha pogut llegir el missatge de comissió: %s" -#: builtin/commit.c:1733 +#: builtin/commit.c:1732 #, c-format msgid "Aborting commit; you did not edit the message.\n" msgstr "Avortant la comissió; no heu editat el missatge.\n" -#: builtin/commit.c:1738 +#: builtin/commit.c:1737 #, c-format msgid "Aborting commit due to empty commit message.\n" msgstr "Avortant la comissió a causa d'un missatge de comissió buit.\n" -#: builtin/commit.c:1753 builtin/merge.c:829 builtin/merge.c:854 -msgid "failed to write commit object" -msgstr "s'ha fallat en escriure l'objecte de comissió" - -#: builtin/commit.c:1786 +#: builtin/commit.c:1785 msgid "" "Repository has been updated, but unable to write\n" "new_index file. Check that disk is not full and quota is\n" @@ -4922,132 +5389,136 @@ msgstr "" msgid "git config []" msgstr "git config []" -#: builtin/config.c:53 +#: builtin/config.c:54 msgid "Config file location" msgstr "Ubicació del fitxer de configuració" -#: builtin/config.c:54 +#: builtin/config.c:55 msgid "use global config file" msgstr "usa el fitxer de configuració global" -#: builtin/config.c:55 +#: builtin/config.c:56 msgid "use system config file" msgstr "usa el fitxer de configuració del sistema" -#: builtin/config.c:56 +#: builtin/config.c:57 msgid "use repository config file" msgstr "usa el fitxer de configuració del dipòsit" -#: builtin/config.c:57 +#: builtin/config.c:58 msgid "use given config file" msgstr "usa el fitxer de configuració donat" -#: builtin/config.c:58 +#: builtin/config.c:59 msgid "blob-id" msgstr "ID de blob" -#: builtin/config.c:58 +#: builtin/config.c:59 msgid "read config from given blob object" msgstr "llegeix la configuració de l'objecte de blob donat" -#: builtin/config.c:59 +#: builtin/config.c:60 msgid "Action" msgstr "Acció" -#: builtin/config.c:60 +#: builtin/config.c:61 msgid "get value: name [value-regex]" msgstr "obtén valor: nom [regex-de-valors]" -#: builtin/config.c:61 +#: builtin/config.c:62 msgid "get all values: key [value-regex]" msgstr "obtén tots els valors: clau [regex-de-valors]" -#: builtin/config.c:62 +#: builtin/config.c:63 msgid "get values for regexp: name-regex [value-regex]" msgstr "obtén valors de regexp: regex-de-noms [regex-de-valors]" -#: builtin/config.c:63 +#: builtin/config.c:64 msgid "get value specific for the URL: section[.var] URL" -msgstr "obtén el valor especific per a l'URL: secció[.variable] URL" +msgstr "obtén el valor específic per a l'URL: secció[.variable] URL" -#: builtin/config.c:64 +#: builtin/config.c:65 msgid "replace all matching variables: name value [value_regex]" msgstr "" "reemplaça totes les variables que coincideixen: nom valor [regex_de_valors]" -#: builtin/config.c:65 +#: builtin/config.c:66 msgid "add a new variable: name value" msgstr "afegeix una variable nova: nom valor" -#: builtin/config.c:66 +#: builtin/config.c:67 msgid "remove a variable: name [value-regex]" msgstr "elimina una variable: nom [regex-de-valors]" -#: builtin/config.c:67 +#: builtin/config.c:68 msgid "remove all matches: name [value-regex]" msgstr "elimina totes les coincidències: nom [regex-de-valors]" -#: builtin/config.c:68 +#: builtin/config.c:69 msgid "rename section: old-name new-name" msgstr "canvia el nom de secció: nom-antic nom-nou" -#: builtin/config.c:69 +#: builtin/config.c:70 msgid "remove a section: name" msgstr "elimina una secció: nom" -#: builtin/config.c:70 +#: builtin/config.c:71 msgid "list all" msgstr "llista tots" -#: builtin/config.c:71 +#: builtin/config.c:72 msgid "open an editor" msgstr "obre un editor" -#: builtin/config.c:72 +#: builtin/config.c:73 msgid "find the color configured: slot [default]" msgstr "troba el color configurat: ranura [per defecte]" -#: builtin/config.c:73 +#: builtin/config.c:74 msgid "find the color setting: slot [stdout-is-tty]" msgstr "troba l'ajust de color: ranura [stdout-és-tty]" -#: builtin/config.c:74 +#: builtin/config.c:75 msgid "Type" msgstr "Tipus" -#: builtin/config.c:75 +#: builtin/config.c:76 msgid "value is \"true\" or \"false\"" msgstr "el valor és \"true\" o \"false\"" -#: builtin/config.c:76 +#: builtin/config.c:77 msgid "value is decimal number" msgstr "el valor és un nombre decimal" -#: builtin/config.c:77 +#: builtin/config.c:78 msgid "value is --bool or --int" msgstr "el valor és --bool o --int" -#: builtin/config.c:78 +#: builtin/config.c:79 msgid "value is a path (file or directory name)" msgstr "el valor és un camí (nom de fitxer o directori)" -#: builtin/config.c:79 +#: builtin/config.c:80 msgid "Other" msgstr "Altre" -#: builtin/config.c:80 +#: builtin/config.c:81 msgid "terminate values with NUL byte" msgstr "acaba els valors amb un octet NUL" -#: builtin/config.c:81 +#: builtin/config.c:82 +msgid "show variable names only" +msgstr "mostra només els noms de variable" + +#: builtin/config.c:83 msgid "respect include directives on lookup" msgstr "respecta les directives d'inclusió en cercar" -#: builtin/config.c:316 +#: builtin/config.c:311 msgid "unable to parse default color value" msgstr "no s'ha pogut analitzar el valor de color per defecte" -#: builtin/config.c:457 +#: builtin/config.c:449 #, c-format msgid "" "# This is Git's per-user configuration file.\n" @@ -5062,7 +5533,7 @@ msgstr "" "#\tname = %s\n" "#\temail = %s\n" -#: builtin/config.c:587 +#: builtin/config.c:583 #, c-format msgid "cannot create configuration file %s" msgstr "no es pot crear el fitxer de configuració '%s'" @@ -5073,7 +5544,7 @@ msgstr "git count-objects [-v] [-H | --human-readable]" #: builtin/count-objects.c:65 msgid "print sizes in human readable format" -msgstr "imprimeix les mides en un format llegible per humans" +msgstr "imprimeix les mides en un format llegible pels humans" #: builtin/describe.c:17 msgid "git describe [] [...]" @@ -5098,7 +5569,7 @@ msgstr "l'etiqueta anotada %s no té nom incrustat" msgid "tag '%s' is really '%s' here" msgstr "l'etiqueta '%s' realment és '%s' aquí" -#: builtin/describe.c:250 builtin/log.c:452 +#: builtin/describe.c:250 builtin/log.c:459 #, c-format msgid "Not a valid object name %s" msgstr "%s no és un nom d'objecte vàlid" @@ -5152,7 +5623,7 @@ msgid "" "more than %i tags found; listed %i most recent\n" "gave up search at %s\n" msgstr "" -"s'ha trobat més de %i etiquetes: s'ha llistat les %i més recents\n" +"s'han trobat més de %i etiquetes: s'han llistat les %i més recents\n" "s'ha renunciat la cerca a %s\n" #: builtin/describe.c:396 @@ -5244,230 +5715,230 @@ msgstr "s'ha donat més de dos blobs: '%s" msgid "unhandled object '%s' given." msgstr "s'ha donat l'objecte no gestionat '%s'." -#: builtin/fast-export.c:24 +#: builtin/fast-export.c:25 msgid "git fast-export [rev-list-opts]" msgstr "git fast-export [opcions-de-llista-de-revisions]" -#: builtin/fast-export.c:979 +#: builtin/fast-export.c:980 msgid "show progress after objects" msgstr "mostra el progrés després de objectes" -#: builtin/fast-export.c:981 +#: builtin/fast-export.c:982 msgid "select handling of signed tags" msgstr "selecciona la gestió de les etiquetes firmades" -#: builtin/fast-export.c:984 +#: builtin/fast-export.c:985 msgid "select handling of tags that tag filtered objects" msgstr "selecciona la gestió de les etiquetes que etiquetin objectes filtrats" -#: builtin/fast-export.c:987 +#: builtin/fast-export.c:988 msgid "Dump marks to this file" msgstr "Bolca les marques a aquest fitxer" -#: builtin/fast-export.c:989 +#: builtin/fast-export.c:990 msgid "Import marks from this file" msgstr "Importa les marques d'aquest fitxer" -#: builtin/fast-export.c:991 +#: builtin/fast-export.c:992 msgid "Fake a tagger when tags lack one" msgstr "Fingeix un etiquetador quan els en manca un a les etiquetes" -#: builtin/fast-export.c:993 +#: builtin/fast-export.c:994 msgid "Output full tree for each commit" msgstr "Imprimeix l'arbre complet de cada comissió" -#: builtin/fast-export.c:995 +#: builtin/fast-export.c:996 msgid "Use the done feature to terminate the stream" msgstr "Usa la característica done per a acabar el corrent" -#: builtin/fast-export.c:996 +#: builtin/fast-export.c:997 msgid "Skip output of blob data" msgstr "Salta l'emissió de dades de blob" -#: builtin/fast-export.c:997 +#: builtin/fast-export.c:998 msgid "refspec" msgstr "especificació de referència" -#: builtin/fast-export.c:998 +#: builtin/fast-export.c:999 msgid "Apply refspec to exported refs" msgstr "Aplica l'especificació de referència a les referències exportades" -#: builtin/fast-export.c:999 +#: builtin/fast-export.c:1000 msgid "anonymize output" msgstr "anonimitza la sortida" -#: builtin/fetch.c:19 +#: builtin/fetch.c:20 msgid "git fetch [] [ [...]]" msgstr "git fetch [] [ [...]]" -#: builtin/fetch.c:20 +#: builtin/fetch.c:21 msgid "git fetch [] " msgstr "git fetch [] " -#: builtin/fetch.c:21 +#: builtin/fetch.c:22 msgid "git fetch --multiple [] [( | )...]" msgstr "git fetch --multiple [] [( | )...]" -#: builtin/fetch.c:22 +#: builtin/fetch.c:23 msgid "git fetch --all []" msgstr "git fetch --all []" -#: builtin/fetch.c:89 +#: builtin/fetch.c:90 builtin/pull.c:162 msgid "fetch from all remotes" msgstr "obtén de tots els remots" -#: builtin/fetch.c:91 +#: builtin/fetch.c:92 builtin/pull.c:165 msgid "append to .git/FETCH_HEAD instead of overwriting" msgstr "annexa a .git/FETCH_HEAD en lloc de sobreescriure" -#: builtin/fetch.c:93 +#: builtin/fetch.c:94 builtin/pull.c:168 msgid "path to upload pack on remote end" msgstr "camí al qual pujar el paquet al costat remot" -#: builtin/fetch.c:94 +#: builtin/fetch.c:95 builtin/pull.c:170 msgid "force overwrite of local branch" msgstr "força la sobreescriptura de la branca local" -#: builtin/fetch.c:96 +#: builtin/fetch.c:97 msgid "fetch from multiple remotes" msgstr "obtén de múltiples remots" -#: builtin/fetch.c:98 +#: builtin/fetch.c:99 builtin/pull.c:172 msgid "fetch all tags and associated objects" msgstr "obtén totes les etiquetes i tots els objectes associats" -#: builtin/fetch.c:100 +#: builtin/fetch.c:101 msgid "do not fetch all tags (--no-tags)" msgstr "no obtinguis les etiquetes (--no-tags)" -#: builtin/fetch.c:102 +#: builtin/fetch.c:103 builtin/pull.c:175 msgid "prune remote-tracking branches no longer on remote" msgstr "poda les branques amb seguiment remot que ja no estiguin en el remot" -#: builtin/fetch.c:103 +#: builtin/fetch.c:104 builtin/pull.c:178 msgid "on-demand" msgstr "sota demanda" -#: builtin/fetch.c:104 +#: builtin/fetch.c:105 builtin/pull.c:179 msgid "control recursive fetching of submodules" -msgstr "controla l'obteniment recursiu de submòduls" +msgstr "controla l'obtenció recursiva de submòduls" -#: builtin/fetch.c:108 +#: builtin/fetch.c:109 builtin/pull.c:184 msgid "keep downloaded pack" -msgstr "desa el paquet baixat" +msgstr "retén el paquet baixat" -#: builtin/fetch.c:110 +#: builtin/fetch.c:111 msgid "allow updating of HEAD ref" msgstr "permet l'actualització de la referència HEAD" -#: builtin/fetch.c:113 +#: builtin/fetch.c:114 builtin/pull.c:187 msgid "deepen history of shallow clone" msgstr "aprofundeix la història d'un clon superficial" -#: builtin/fetch.c:115 +#: builtin/fetch.c:116 builtin/pull.c:190 msgid "convert to a complete repository" msgstr "converteix en un dipòsit complet" -#: builtin/fetch.c:117 builtin/log.c:1208 +#: builtin/fetch.c:118 builtin/log.c:1233 msgid "dir" msgstr "directori" -#: builtin/fetch.c:118 +#: builtin/fetch.c:119 msgid "prepend this to submodule path output" msgstr "anteposa això a la sortida de camí del submòdul" -#: builtin/fetch.c:121 +#: builtin/fetch.c:122 msgid "default mode for recursion" msgstr "mode de recursivitat per defecte" -#: builtin/fetch.c:123 +#: builtin/fetch.c:124 builtin/pull.c:193 msgid "accept refs that update .git/shallow" msgstr "accepta les referències que actualitzin .git/shallow" -#: builtin/fetch.c:124 +#: builtin/fetch.c:125 builtin/pull.c:195 msgid "refmap" msgstr "mapa de referències" -#: builtin/fetch.c:125 +#: builtin/fetch.c:126 builtin/pull.c:196 msgid "specify fetch refmap" -msgstr "mostra el mapa de referències d'obteniment" +msgstr "mostra el mapa de referències d'obtenció" -#: builtin/fetch.c:377 +#: builtin/fetch.c:378 msgid "Couldn't find remote ref HEAD" msgstr "No s'ha pogut trobar la referència HEAD remota" -#: builtin/fetch.c:457 +#: builtin/fetch.c:458 #, c-format msgid "object %s not found" msgstr "objecte %s no trobat" -#: builtin/fetch.c:462 +#: builtin/fetch.c:463 msgid "[up to date]" msgstr "[al dia]" -#: builtin/fetch.c:476 +#: builtin/fetch.c:477 #, c-format msgid "! %-*s %-*s -> %s (can't fetch in current branch)" msgstr "! %-*s %-*s -> %s (no es pot obtenir en la branca actual)" -#: builtin/fetch.c:477 builtin/fetch.c:563 +#: builtin/fetch.c:478 builtin/fetch.c:564 msgid "[rejected]" msgstr "[rebutjat]" -#: builtin/fetch.c:488 +#: builtin/fetch.c:489 msgid "[tag update]" msgstr "[actualització d'etiqueta]" -#: builtin/fetch.c:490 builtin/fetch.c:525 builtin/fetch.c:543 +#: builtin/fetch.c:491 builtin/fetch.c:526 builtin/fetch.c:544 msgid " (unable to update local ref)" msgstr " (no s'ha pogut actualitzar la referència local)" -#: builtin/fetch.c:508 +#: builtin/fetch.c:509 msgid "[new tag]" msgstr "[etiqueta nova]" -#: builtin/fetch.c:511 +#: builtin/fetch.c:512 msgid "[new branch]" msgstr "[branca nova]" -#: builtin/fetch.c:514 +#: builtin/fetch.c:515 msgid "[new ref]" msgstr "[referència nova]" -#: builtin/fetch.c:559 +#: builtin/fetch.c:560 msgid "unable to update local ref" msgstr "no s'ha pogut actualitzar la referència local" -#: builtin/fetch.c:559 +#: builtin/fetch.c:560 msgid "forced update" msgstr "actualització forçada" -#: builtin/fetch.c:565 +#: builtin/fetch.c:566 msgid "(non-fast-forward)" msgstr "(sense avanç ràpid)" -#: builtin/fetch.c:599 builtin/fetch.c:832 +#: builtin/fetch.c:600 builtin/fetch.c:842 #, c-format msgid "cannot open %s: %s\n" msgstr "no es pot obrir %s: %s\n" -#: builtin/fetch.c:608 +#: builtin/fetch.c:609 #, c-format msgid "%s did not send all necessary objects\n" msgstr "%s no ha enviat tots els objectes necessaris\n" -#: builtin/fetch.c:626 +#: builtin/fetch.c:627 #, c-format msgid "reject %s because shallow roots are not allowed to be updated" msgstr "" "rebutja %s perquè no es permet que les arrels superficials s'actualitzin" -#: builtin/fetch.c:714 builtin/fetch.c:797 +#: builtin/fetch.c:715 builtin/fetch.c:807 #, c-format msgid "From %.*s\n" msgstr "De %.*s\n" -#: builtin/fetch.c:725 +#: builtin/fetch.c:726 #, c-format msgid "" "some local refs could not be updated; try running\n" @@ -5477,55 +5948,55 @@ msgstr "" " intenteu executar 'git remote prune %s' per a eliminar\n" " qualsevulla branca antiga o conflictiva" -#: builtin/fetch.c:777 +#: builtin/fetch.c:778 #, c-format msgid " (%s will become dangling)" msgstr " (%s es tornarà penjant)" -#: builtin/fetch.c:778 +#: builtin/fetch.c:779 #, c-format msgid " (%s has become dangling)" msgstr " (%s s'ha tornat penjant)" -#: builtin/fetch.c:802 +#: builtin/fetch.c:811 msgid "[deleted]" msgstr "[suprimit]" -#: builtin/fetch.c:803 builtin/remote.c:1057 +#: builtin/fetch.c:812 builtin/remote.c:1034 msgid "(none)" msgstr "(cap)" -#: builtin/fetch.c:822 +#: builtin/fetch.c:832 #, c-format msgid "Refusing to fetch into current branch %s of non-bare repository" msgstr "Refusant obtenir en la branca actual %s d'un dipòsit no nu" -#: builtin/fetch.c:841 +#: builtin/fetch.c:851 #, c-format msgid "Option \"%s\" value \"%s\" is not valid for %s" msgstr "L'opció \"%s\" amb valor \"%s\" no és vàlida per a %s" -#: builtin/fetch.c:844 +#: builtin/fetch.c:854 #, c-format msgid "Option \"%s\" is ignored for %s\n" msgstr "S'ignora l'opció \"%s\" per a %s\n" -#: builtin/fetch.c:900 +#: builtin/fetch.c:910 #, c-format msgid "Don't know how to fetch from %s" -msgstr "No es sap com obtenir de %s" +msgstr "No se sap com obtenir de %s" -#: builtin/fetch.c:1063 +#: builtin/fetch.c:1071 #, c-format msgid "Fetching %s\n" msgstr "Obtenint %s\n" -#: builtin/fetch.c:1065 builtin/remote.c:90 +#: builtin/fetch.c:1073 builtin/remote.c:90 #, c-format msgid "Could not fetch %s" msgstr "No s'ha pogut obtenir %s" -#: builtin/fetch.c:1083 +#: builtin/fetch.c:1091 msgid "" "No remote repository specified. Please, specify either a URL or a\n" "remote name from which new revisions should be fetched." @@ -5533,223 +6004,213 @@ msgstr "" "Cap dipòsit remot especificat. Si us plau, especifiqueu o un URL o\n" "un nom remot del qual es deuen obtenir les revisions noves." -#: builtin/fetch.c:1106 +#: builtin/fetch.c:1114 msgid "You need to specify a tag name." msgstr "Necessiteu especificar un nom d'etiqueta." -#: builtin/fetch.c:1148 +#: builtin/fetch.c:1156 msgid "--depth and --unshallow cannot be used together" msgstr "--depth i --unshallow no es poden usar junts" -#: builtin/fetch.c:1150 +#: builtin/fetch.c:1158 msgid "--unshallow on a complete repository does not make sense" msgstr "--unshallow en un dipòsit complet no té sentit" -#: builtin/fetch.c:1173 +#: builtin/fetch.c:1181 msgid "fetch --all does not take a repository argument" msgstr "fetch --all no accepta un paràmetre de dipòsit" -#: builtin/fetch.c:1175 +#: builtin/fetch.c:1183 msgid "fetch --all does not make sense with refspecs" msgstr "fetch --all no té sentit amb especificacions de referència" -#: builtin/fetch.c:1186 +#: builtin/fetch.c:1194 #, c-format msgid "No such remote or remote group: %s" msgstr "No hi ha tal remot ni tal grup remot: %s" -#: builtin/fetch.c:1194 +#: builtin/fetch.c:1202 msgid "Fetching a group and specifying refspecs does not make sense" msgstr "Obtenir un grup i especificar referències no té sentit" -#: builtin/fmt-merge-msg.c:13 +#: builtin/fmt-merge-msg.c:14 msgid "" "git fmt-merge-msg [-m ] [--log[=] | --no-log] [--file ]" msgstr "" "git fmt-merge-msg [-m ] [--log[=] | --no-log] [--file ]" -#: builtin/fmt-merge-msg.c:668 builtin/fmt-merge-msg.c:671 builtin/grep.c:698 -#: builtin/merge.c:198 builtin/repack.c:178 builtin/repack.c:182 -#: builtin/show-branch.c:664 builtin/show-ref.c:180 builtin/tag.c:590 -#: parse-options.h:131 parse-options.h:238 -msgid "n" -msgstr "n" - -#: builtin/fmt-merge-msg.c:669 +#: builtin/fmt-merge-msg.c:670 msgid "populate log with at most entries from shortlog" msgstr "emplena el registre amb entrades del registre curt com a màxim" -#: builtin/fmt-merge-msg.c:672 +#: builtin/fmt-merge-msg.c:673 msgid "alias for --log (deprecated)" msgstr "àlies per --log (desaprovat)" -#: builtin/fmt-merge-msg.c:675 +#: builtin/fmt-merge-msg.c:676 msgid "text" msgstr "text" -#: builtin/fmt-merge-msg.c:676 +#: builtin/fmt-merge-msg.c:677 msgid "use as start of message" msgstr "usa com a inici de missatge" -#: builtin/fmt-merge-msg.c:677 +#: builtin/fmt-merge-msg.c:678 msgid "file to read from" msgstr "fitxer del qual llegir" -#: builtin/for-each-ref.c:687 -msgid "unable to parse format" -msgstr "no s'ha pogut analitzar el format" - -#: builtin/for-each-ref.c:1083 +#: builtin/for-each-ref.c:9 msgid "git for-each-ref [] []" msgstr "git for-each-ref [] []" -#: builtin/for-each-ref.c:1098 +#: builtin/for-each-ref.c:24 msgid "quote placeholders suitably for shells" msgstr "" -"posa els marcadors de posició entre cometes adequades per als terminals" +"posa els marcadors de posició entre cometes de forma adequada per a " +"intèrprets d'ordres" -#: builtin/for-each-ref.c:1100 +#: builtin/for-each-ref.c:26 msgid "quote placeholders suitably for perl" -msgstr "posa els marcadors de posició entre cometes adequades per a perl" +msgstr "posa els marcadors de posició entre cometes adequades per al perl" -#: builtin/for-each-ref.c:1102 +#: builtin/for-each-ref.c:28 msgid "quote placeholders suitably for python" -msgstr "posa els marcadors de posició entre cometes adequades per a python" +msgstr "posa els marcadors de posició entre cometes adequades per al python" -#: builtin/for-each-ref.c:1104 +#: builtin/for-each-ref.c:30 msgid "quote placeholders suitably for Tcl" -msgstr "posa els marcadors de posició entre cometes adequades per a Tcl" +msgstr "posa els marcadors de posició entre cometes adequades per al Tcl" -#: builtin/for-each-ref.c:1107 +#: builtin/for-each-ref.c:33 msgid "show only matched refs" msgstr "mostra només referències coincidents" -#: builtin/for-each-ref.c:1108 builtin/replace.c:438 -msgid "format" -msgstr "format" - -#: builtin/for-each-ref.c:1108 +#: builtin/for-each-ref.c:34 msgid "format to use for the output" msgstr "format a usar en la sortida" -#: builtin/for-each-ref.c:1109 +#: builtin/for-each-ref.c:35 msgid "key" msgstr "clau" -#: builtin/for-each-ref.c:1110 +#: builtin/for-each-ref.c:36 msgid "field name to sort on" msgstr "nom de camp en el qual ordenar" -#: builtin/fsck.c:147 builtin/prune.c:137 +#: builtin/fsck.c:163 builtin/prune.c:137 msgid "Checking connectivity" msgstr "Comprovant connectivitat" -#: builtin/fsck.c:548 +#: builtin/fsck.c:568 msgid "Checking object directories" msgstr "Comprovant els directoris d'objecte" -#: builtin/fsck.c:611 +#: builtin/fsck.c:631 msgid "git fsck [] [...]" msgstr "git fsck [] [...]" -#: builtin/fsck.c:617 +#: builtin/fsck.c:637 msgid "show unreachable objects" msgstr "mostra els objectes inabastables" -#: builtin/fsck.c:618 +#: builtin/fsck.c:638 msgid "show dangling objects" msgstr "mostra els objectes penjants" -#: builtin/fsck.c:619 +#: builtin/fsck.c:639 msgid "report tags" msgstr "informa de les etiquetes" -#: builtin/fsck.c:620 +#: builtin/fsck.c:640 msgid "report root nodes" msgstr "informa dels nodes d'arrel" -#: builtin/fsck.c:621 +#: builtin/fsck.c:641 msgid "make index objects head nodes" msgstr "fes els objectes d'índex nodes de cap" -#: builtin/fsck.c:622 +#: builtin/fsck.c:642 msgid "make reflogs head nodes (default)" msgstr "fes que els registres de referències siguin nodes de cap (per defecte)" -#: builtin/fsck.c:623 +#: builtin/fsck.c:643 msgid "also consider packs and alternate objects" msgstr "també considera els paquets i els objectes alternatius" -#: builtin/fsck.c:624 +#: builtin/fsck.c:644 +msgid "check only connectivity" +msgstr "comprova només la connectivitat" + +#: builtin/fsck.c:645 msgid "enable more strict checking" msgstr "habilita la comprovació més estricta" -#: builtin/fsck.c:626 +#: builtin/fsck.c:647 msgid "write dangling objects in .git/lost-found" msgstr "escriu objectes penjants a .git/lost-found" -#: builtin/fsck.c:627 builtin/prune.c:107 +#: builtin/fsck.c:648 builtin/prune.c:107 msgid "show progress" msgstr "mostra el progrés" -#: builtin/fsck.c:677 +#: builtin/fsck.c:707 msgid "Checking objects" msgstr "Comprovant els objectes" -#: builtin/gc.c:24 +#: builtin/gc.c:25 msgid "git gc []" msgstr "git gc []" -#: builtin/gc.c:67 +#: builtin/gc.c:55 #, c-format msgid "Invalid %s: '%s'" msgstr "%s no vàlid: %s" -#: builtin/gc.c:112 +#: builtin/gc.c:100 #, c-format msgid "insanely long object directory %.*s" msgstr "directori d'objectes increïblement llarg %.*s" -#: builtin/gc.c:281 +#: builtin/gc.c:269 msgid "prune unreferenced objects" msgstr "poda objectes sense referència" -#: builtin/gc.c:283 +#: builtin/gc.c:271 msgid "be more thorough (increased runtime)" msgstr "sigues més exhaustiu (el temps d'execució augmenta)" -#: builtin/gc.c:284 +#: builtin/gc.c:272 msgid "enable auto-gc mode" msgstr "habilita el mode de recollida d'escombraries automàtica" -#: builtin/gc.c:285 +#: builtin/gc.c:273 msgid "force running gc even if there may be another gc running" msgstr "força l'execució de gc encara que hi pugui haver un altre gc executant" -#: builtin/gc.c:327 +#: builtin/gc.c:315 #, c-format msgid "Auto packing the repository in background for optimum performance.\n" msgstr "" "Empaquetant automàticament el dipòsit en el fons per rendiment òptim.\n" -#: builtin/gc.c:329 +#: builtin/gc.c:317 #, c-format msgid "Auto packing the repository for optimum performance.\n" msgstr "Empaquetant automàticament el dipòsit per rendiment òptim.\n" -#: builtin/gc.c:330 +#: builtin/gc.c:318 #, c-format msgid "See \"git help gc\" for manual housekeeping.\n" msgstr "Vegeu \"git help gc\" per neteja manual.\n" -#: builtin/gc.c:348 +#: builtin/gc.c:336 #, c-format msgid "" "gc is already running on machine '%s' pid % (use --force if not)" msgstr "" "gc ja està executant en la màquina '%s' pid % (useu --force si no)" -#: builtin/gc.c:376 +#: builtin/gc.c:364 msgid "" "There are too many unreachable loose objects; run 'git prune' to remove them." msgstr "" @@ -5839,7 +6300,7 @@ msgstr "usa les expressions regulars POSIX bàsiques (per defecte)" #: builtin/grep.c:670 msgid "interpret patterns as fixed strings" -msgstr "interpreta els patrons com a cadenes fixades" +msgstr "interpreta els patrons com a cadenes fixes" #: builtin/grep.c:673 msgid "use Perl-compatible regular expressions" @@ -5875,7 +6336,7 @@ msgstr "mostra només els noms dels fitxers sense coincidència" #: builtin/grep.c:689 msgid "print NUL after filenames" -msgstr "imprimeix NUL desprès dels noms de fitxer" +msgstr "imprimeix NUL després dels noms de fitxer" #: builtin/grep.c:691 msgid "show the number of matches instead of matching lines" @@ -5997,7 +6458,7 @@ msgstr "" msgid "git hash-object --stdin-paths < " msgstr "git hash-object --stdin-paths < " -#: builtin/hash-object.c:92 builtin/tag.c:612 +#: builtin/hash-object.c:92 builtin/tag.c:614 msgid "type" msgstr "tipus" @@ -6011,7 +6472,7 @@ msgstr "escriu l'objecte a la base de dades d'objectes" #: builtin/hash-object.c:95 msgid "read the object from stdin" -msgstr "llegiu l'objecte des d'stdin" +msgstr "llegeix l'objecte des d'stdin" #: builtin/hash-object.c:97 msgid "store file as is without filters" @@ -6021,7 +6482,7 @@ msgstr "emmagatzema el fitxer tal com és sense filtres" msgid "" "just hash any random garbage to create corrupt objects for debugging Git" msgstr "" -"només suma qualsevulla brossa aleatòria per a crear objectes corruptes per a " +"només suma qualsevulla brossa aleatòria per a crear objectes malmesos per a " "depurar al Git" #: builtin/hash-object.c:99 @@ -6152,129 +6613,129 @@ msgstr "ús: %s%s" msgid "`git %s' is aliased to `%s'" msgstr "`git %s' és un àlies de `%s'" -#: builtin/index-pack.c:151 +#: builtin/index-pack.c:152 #, c-format msgid "unable to open %s" msgstr "no s'ha pogut obrir %s" -#: builtin/index-pack.c:201 +#: builtin/index-pack.c:202 #, c-format msgid "object type mismatch at %s" msgstr "hi ha una discordança de tipus d'objecte a %s" -#: builtin/index-pack.c:221 +#: builtin/index-pack.c:222 #, c-format msgid "did not receive expected object %s" msgstr "no s'ha rebut l'objecte esperat %s" -#: builtin/index-pack.c:224 +#: builtin/index-pack.c:225 #, c-format msgid "object %s: expected type %s, found %s" msgstr "objecte %s: tipus %s esperat, %s trobat" -#: builtin/index-pack.c:266 +#: builtin/index-pack.c:267 #, c-format msgid "cannot fill %d byte" msgid_plural "cannot fill %d bytes" msgstr[0] "no es pot omplir %d octet" msgstr[1] "no es pot omplir %d octets" -#: builtin/index-pack.c:276 +#: builtin/index-pack.c:277 msgid "early EOF" msgstr "EOF prematur" -#: builtin/index-pack.c:277 +#: builtin/index-pack.c:278 msgid "read error on input" msgstr "error de lectura d'entrada" -#: builtin/index-pack.c:289 +#: builtin/index-pack.c:290 msgid "used more bytes than were available" msgstr "s'han usat més octets que hi havia disponibles" -#: builtin/index-pack.c:296 +#: builtin/index-pack.c:297 msgid "pack too large for current definition of off_t" msgstr "paquet massa gran per a la definició actual d'off_t" -#: builtin/index-pack.c:312 +#: builtin/index-pack.c:313 #, c-format msgid "unable to create '%s'" msgstr "no es pot crear '%s'" -#: builtin/index-pack.c:317 +#: builtin/index-pack.c:318 #, c-format msgid "cannot open packfile '%s'" msgstr "no es pot obrir el fitxer de paquet '%s'" -#: builtin/index-pack.c:331 +#: builtin/index-pack.c:332 msgid "pack signature mismatch" msgstr "hi ha una discordança de firma de paquet" -#: builtin/index-pack.c:333 +#: builtin/index-pack.c:334 #, c-format msgid "pack version % unsupported" msgstr "la versió de paquet % no és compatible" -#: builtin/index-pack.c:351 +#: builtin/index-pack.c:352 #, c-format msgid "pack has bad object at offset %lu: %s" msgstr "el paquet té un objecte dolent a la posició %lu: %s" -#: builtin/index-pack.c:472 +#: builtin/index-pack.c:473 #, c-format msgid "inflate returned %d" msgstr "la inflació ha retornat %d" -#: builtin/index-pack.c:521 +#: builtin/index-pack.c:522 msgid "offset value overflow for delta base object" msgstr "desbordament de valor de desplaçament per a l'objecte base de delta" -#: builtin/index-pack.c:529 +#: builtin/index-pack.c:530 msgid "delta base offset is out of bound" msgstr "el desplaçament de base de delta està fora de límits" -#: builtin/index-pack.c:537 +#: builtin/index-pack.c:538 #, c-format msgid "unknown object type %d" msgstr "tipus d'objecte desconegut %d" -#: builtin/index-pack.c:568 +#: builtin/index-pack.c:569 msgid "cannot pread pack file" msgstr "no es pot fer pread en el fitxer de paquet" -#: builtin/index-pack.c:570 +#: builtin/index-pack.c:571 #, c-format msgid "premature end of pack file, %lu byte missing" msgid_plural "premature end of pack file, %lu bytes missing" msgstr[0] "final prematur de fitxer de paquet, manca %lu octet" msgstr[1] "final prematur de fitxer de paquet, manquen %lu octets" -#: builtin/index-pack.c:596 +#: builtin/index-pack.c:597 msgid "serious inflate inconsistency" msgstr "hi ha una inconsistència seriosa d'inflació" -#: builtin/index-pack.c:742 builtin/index-pack.c:748 builtin/index-pack.c:771 -#: builtin/index-pack.c:805 builtin/index-pack.c:814 +#: builtin/index-pack.c:743 builtin/index-pack.c:749 builtin/index-pack.c:772 +#: builtin/index-pack.c:806 builtin/index-pack.c:815 #, c-format msgid "SHA1 COLLISION FOUND WITH %s !" msgstr "S'HA TROBAT UNA COL·LISIÓ SHA1 AMB %s !" -#: builtin/index-pack.c:745 builtin/pack-objects.c:162 +#: builtin/index-pack.c:746 builtin/pack-objects.c:162 #: builtin/pack-objects.c:254 #, c-format msgid "unable to read %s" msgstr "no s'ha pogut llegir %s" -#: builtin/index-pack.c:811 +#: builtin/index-pack.c:812 #, c-format msgid "cannot read existing object %s" msgstr "no es pot llegir l'objecte existent %s" -#: builtin/index-pack.c:825 +#: builtin/index-pack.c:826 #, c-format msgid "invalid blob object %s" msgstr "objecte de blob no vàlid %s" -#: builtin/index-pack.c:839 +#: builtin/index-pack.c:840 #, c-format msgid "invalid %s" msgstr "%s no vàlid" @@ -6302,7 +6763,7 @@ msgstr "Indexant objectes" #: builtin/index-pack.c:1150 msgid "pack is corrupted (SHA1 mismatch)" -msgstr "el paquet és corromput (discordança SHA1)" +msgstr "el paquet és malmès (discordança SHA1)" #: builtin/index-pack.c:1155 msgid "cannot fstat packfile" @@ -6314,7 +6775,7 @@ msgstr "el paquet té brossa al seu final" #: builtin/index-pack.c:1169 msgid "confusion beyond insanity in parse_pack_objects()" -msgstr "confusió més enllà de la insanitat en parse_pack_objects()" +msgstr "confusió més enllà de la bogeria en parse_pack_objects()" #: builtin/index-pack.c:1194 msgid "Resolving deltas" @@ -6327,7 +6788,7 @@ msgstr "no s'ha pogut crear fil: %s" #: builtin/index-pack.c:1247 msgid "confusion beyond insanity" -msgstr "confusió més enllà de la insanitat" +msgstr "confusió més enllà de la bogeria" #: builtin/index-pack.c:1253 #, c-format @@ -6354,7 +6815,7 @@ msgstr "no s'ha pogut desinflar l'objecte annexat (%d)" #: builtin/index-pack.c:1367 #, c-format msgid "local object %s is corrupt" -msgstr "l'objecte local %s és corrupte" +msgstr "l'objecte local %s és malmès" #: builtin/index-pack.c:1391 msgid "error while closing pack file" @@ -6388,7 +6849,7 @@ msgstr "pack.indexversion=% dolent" msgid "invalid number of threads specified (%d)" msgstr "s'ha especificat un nombre de fils no vàlid (%d)" -#: builtin/index-pack.c:1479 builtin/index-pack.c:1658 +#: builtin/index-pack.c:1479 builtin/index-pack.c:1663 #, c-format msgid "no threads support, ignoring %s" msgstr "no hi ha suport de fils, ignorant %s" @@ -6417,110 +6878,110 @@ msgid_plural "chain length = %d: %lu objects" msgstr[0] "longitud de cadena = %d: %lu objecte" msgstr[1] "longitud de cadena = %d: %lu objectes" -#: builtin/index-pack.c:1622 +#: builtin/index-pack.c:1623 msgid "Cannot come back to cwd" msgstr "No es pot tornar al directori de treball actual" -#: builtin/index-pack.c:1670 builtin/index-pack.c:1673 -#: builtin/index-pack.c:1685 builtin/index-pack.c:1689 +#: builtin/index-pack.c:1675 builtin/index-pack.c:1678 +#: builtin/index-pack.c:1690 builtin/index-pack.c:1694 #, c-format msgid "bad %s" msgstr "%s dolent" -#: builtin/index-pack.c:1703 +#: builtin/index-pack.c:1708 msgid "--fix-thin cannot be used without --stdin" msgstr "--fix-thin no es pot usar sense --stdin" -#: builtin/index-pack.c:1707 builtin/index-pack.c:1716 +#: builtin/index-pack.c:1712 builtin/index-pack.c:1721 #, c-format msgid "packfile name '%s' does not end with '.pack'" msgstr "el nom de fitxer de paquet '%s' no acaba amb '.pack'" -#: builtin/index-pack.c:1724 +#: builtin/index-pack.c:1729 msgid "--verify with no packfile name given" msgstr "s'ha donat --verify sense nom de fitxer de paquet" -#: builtin/init-db.c:35 +#: builtin/init-db.c:36 #, c-format msgid "Could not make %s writable by group" -msgstr "No s'ha pogut fer %s gravable per al grup" +msgstr "No s'ha pogut fer %s escrivible pel grup" -#: builtin/init-db.c:62 +#: builtin/init-db.c:63 #, c-format msgid "insanely long template name %s" msgstr "nom de plantilla increïblement llarg %s" -#: builtin/init-db.c:67 +#: builtin/init-db.c:68 #, c-format msgid "cannot stat '%s'" msgstr "no es pot fer stat en '%s'" -#: builtin/init-db.c:73 +#: builtin/init-db.c:74 #, c-format msgid "cannot stat template '%s'" msgstr "no es pot fer stat en la plantilla '%s'" -#: builtin/init-db.c:80 +#: builtin/init-db.c:81 #, c-format msgid "cannot opendir '%s'" msgstr "no es pot fer opendir en el directori '%s'" -#: builtin/init-db.c:97 +#: builtin/init-db.c:98 #, c-format msgid "cannot readlink '%s'" msgstr "no es pot fer readlink en '%s'" -#: builtin/init-db.c:99 +#: builtin/init-db.c:100 #, c-format msgid "insanely long symlink %s" msgstr "enllaç simbòlic increïblement llarg %s" -#: builtin/init-db.c:102 +#: builtin/init-db.c:103 #, c-format msgid "cannot symlink '%s' '%s'" msgstr "no es pot fer symlink en '%s' '%s'" -#: builtin/init-db.c:106 +#: builtin/init-db.c:107 #, c-format msgid "cannot copy '%s' to '%s'" msgstr "no es pot copiar '%s' a '%s'" -#: builtin/init-db.c:110 +#: builtin/init-db.c:111 #, c-format msgid "ignoring template %s" msgstr "ignorant la plantilla %s" -#: builtin/init-db.c:136 +#: builtin/init-db.c:137 #, c-format msgid "insanely long template path %s" msgstr "camí de plantilla increïblement llarg %s" -#: builtin/init-db.c:144 +#: builtin/init-db.c:145 #, c-format msgid "templates not found %s" msgstr "no s'han trobat les plantilles %s" -#: builtin/init-db.c:157 +#: builtin/init-db.c:158 #, c-format msgid "not copying templates of a wrong format version %d from '%s'" msgstr "no copiant plantilles d'una versió de format errònia %d de '%s'" -#: builtin/init-db.c:211 +#: builtin/init-db.c:212 #, c-format msgid "insane git directory %s" msgstr "directori de git boig %s" -#: builtin/init-db.c:343 builtin/init-db.c:346 +#: builtin/init-db.c:344 builtin/init-db.c:347 #, c-format msgid "%s already exists" msgstr "%s ja existeix" -#: builtin/init-db.c:374 +#: builtin/init-db.c:375 #, c-format msgid "unable to handle file type %d" msgstr "no s'ha pogut gestionar el tipus de fitxer %d" -#: builtin/init-db.c:377 +#: builtin/init-db.c:378 #, c-format msgid "unable to move %s to %s" msgstr "no s'ha pogut moure %s a %s" @@ -6528,24 +6989,24 @@ msgstr "no s'ha pogut moure %s a %s" #. TRANSLATORS: The first '%s' is either "Reinitialized #. existing" or "Initialized empty", the second " shared" or #. "", and the last '%s%s' is the verbatim directory name. -#: builtin/init-db.c:433 +#: builtin/init-db.c:434 #, c-format msgid "%s%s Git repository in %s%s\n" msgstr "%s dipòsit de Git%s a %s%s\n" -#: builtin/init-db.c:434 +#: builtin/init-db.c:435 msgid "Reinitialized existing" msgstr "S'ha reinicialitzat un existent" -#: builtin/init-db.c:434 +#: builtin/init-db.c:435 msgid "Initialized empty" msgstr "S'ha inicialitzat un buit" -#: builtin/init-db.c:435 +#: builtin/init-db.c:436 msgid " shared" msgstr " compartit" -#: builtin/init-db.c:482 +#: builtin/init-db.c:483 msgid "" "git init [-q | --quiet] [--bare] [--template=] [--" "shared[=]] []" @@ -6553,29 +7014,25 @@ msgstr "" "git init [-q | --quiet] [--bare] [--template=] [--" "shared[=]] []" -#: builtin/init-db.c:505 +#: builtin/init-db.c:506 msgid "permissions" msgstr "permisos" -#: builtin/init-db.c:506 +#: builtin/init-db.c:507 msgid "specify that the git repository is to be shared amongst several users" msgstr "especifica que el dipòsit de git es compartirà entre diversos usuaris" -#: builtin/init-db.c:508 builtin/prune-packed.c:57 builtin/repack.c:171 -msgid "be quiet" -msgstr "calla" - -#: builtin/init-db.c:540 builtin/init-db.c:545 +#: builtin/init-db.c:541 builtin/init-db.c:546 #, c-format msgid "cannot mkdir %s" msgstr "no es pot mkdir %s" -#: builtin/init-db.c:549 +#: builtin/init-db.c:550 #, c-format msgid "cannot chdir to %s" msgstr "no es pot chdir a %s" -#: builtin/init-db.c:570 +#: builtin/init-db.c:571 #, c-format msgid "" "%s (or --work-tree=) not allowed without specifying %s (or --git-" @@ -6584,7 +7041,7 @@ msgstr "" "no es permet %s (o --work-tree=) sense especificar %s (o --git-" "dir=)" -#: builtin/init-db.c:598 +#: builtin/init-db.c:599 #, c-format msgid "Cannot access work tree '%s'" msgstr "No es pot accedir a l'arbre de treball '%s'" @@ -6609,279 +7066,274 @@ msgstr "remolc" msgid "trailer(s) to add" msgstr "remolcs a afegir" -#: builtin/log.c:41 +#: builtin/log.c:43 msgid "git log [] [] [[--] ...]" msgstr "git log [] [] [[--] ...]" -#: builtin/log.c:42 +#: builtin/log.c:44 msgid "git show [] ..." msgstr "git show [] ..." -#: builtin/log.c:81 +#: builtin/log.c:83 #, c-format msgid "invalid --decorate option: %s" msgstr "opció --decorate no vàlida: %s" -#: builtin/log.c:127 +#: builtin/log.c:131 msgid "suppress diff output" msgstr "omet la sortida de diferències" -#: builtin/log.c:128 +#: builtin/log.c:132 msgid "show source" -msgstr "mostra el font" +msgstr "mostra la font" -#: builtin/log.c:129 +#: builtin/log.c:133 msgid "Use mail map file" msgstr "Usa el fitxer de mapa de correu" -#: builtin/log.c:130 +#: builtin/log.c:134 msgid "decorate options" msgstr "opcions de decoració" -#: builtin/log.c:133 +#: builtin/log.c:137 msgid "Process line range n,m in file, counting from 1" -msgstr "Processa el rang de línies n,m en el fitxer, comptant des de 1" +msgstr "Processa el rang de línies n,m en el fitxer, comptant des d'1" -#: builtin/log.c:229 +#: builtin/log.c:233 #, c-format msgid "Final output: %d %s\n" msgstr "Sortida final: %d %s\n" -#: builtin/log.c:458 +#: builtin/log.c:465 #, c-format msgid "git show %s: bad file" msgstr "git show %s: fitxer dolent" -#: builtin/log.c:472 builtin/log.c:564 +#: builtin/log.c:479 builtin/log.c:572 #, c-format msgid "Could not read object %s" msgstr "No es pot llegir l'objecte %s" -#: builtin/log.c:588 +#: builtin/log.c:596 #, c-format msgid "Unknown type: %d" msgstr "Tipus desconegut: %d" -#: builtin/log.c:689 +#: builtin/log.c:714 msgid "format.headers without value" msgstr "format.headers sense valor" -#: builtin/log.c:773 +#: builtin/log.c:798 msgid "name of output directory is too long" msgstr "el nom del directori de sortida és massa llarg" -#: builtin/log.c:789 +#: builtin/log.c:814 #, c-format msgid "Cannot open patch file %s" msgstr "No es pot obrir el fitxer de pedaç %s" -#: builtin/log.c:803 +#: builtin/log.c:828 msgid "Need exactly one range." msgstr "Cal exactament un rang." -#: builtin/log.c:813 +#: builtin/log.c:838 msgid "Not a range." msgstr "No és un rang." -#: builtin/log.c:919 +#: builtin/log.c:944 msgid "Cover letter needs email format" msgstr "La carta de presentació necessita el format de correu electrònic" -#: builtin/log.c:998 +#: builtin/log.c:1023 #, c-format msgid "insane in-reply-to: %s" msgstr "in-reply-to boig: %s" -#: builtin/log.c:1026 +#: builtin/log.c:1051 msgid "git format-patch [] [ | ]" msgstr "git format-patch [] [ | ]" -#: builtin/log.c:1071 +#: builtin/log.c:1096 msgid "Two output directories?" msgstr "Dos directoris de sortida?" -#: builtin/log.c:1186 +#: builtin/log.c:1211 msgid "use [PATCH n/m] even with a single patch" msgstr "usa [PATCH n/m] fins i tot amb un sol pedaç" -#: builtin/log.c:1189 +#: builtin/log.c:1214 msgid "use [PATCH] even with multiple patches" msgstr "usa [PATCH] fins i tot amb múltiples pedaços" -#: builtin/log.c:1193 +#: builtin/log.c:1218 msgid "print patches to standard out" msgstr "imprimeix els pedaços a la sortida estàndard" -#: builtin/log.c:1195 +#: builtin/log.c:1220 msgid "generate a cover letter" msgstr "genera una carta de presentació" -#: builtin/log.c:1197 +#: builtin/log.c:1222 msgid "use simple number sequence for output file names" msgstr "usa una seqüència de números per als noms dels fitxers de sortida" -#: builtin/log.c:1198 +#: builtin/log.c:1223 msgid "sfx" msgstr "sufix" -#: builtin/log.c:1199 +#: builtin/log.c:1224 msgid "use instead of '.patch'" msgstr "usa en lloc de '.patch'" -#: builtin/log.c:1201 +#: builtin/log.c:1226 msgid "start numbering patches at instead of 1" -msgstr "comença nombrant els pedaços a en lloc d'1" +msgstr "comença numerant els pedaços a en lloc d'1" -#: builtin/log.c:1203 +#: builtin/log.c:1228 msgid "mark the series as Nth re-roll" msgstr "marca la sèrie com a l'enèsima llançada" -#: builtin/log.c:1205 +#: builtin/log.c:1230 msgid "Use [] instead of [PATCH]" msgstr "Usa [] en lloc de [PATCH]" -#: builtin/log.c:1208 +#: builtin/log.c:1233 msgid "store resulting files in " msgstr "emmagatzema els fitxers resultants a " -#: builtin/log.c:1211 +#: builtin/log.c:1236 msgid "don't strip/add [PATCH]" msgstr "no despullis/afegeixis [PATCH]" -#: builtin/log.c:1214 +#: builtin/log.c:1239 msgid "don't output binary diffs" msgstr "no emetis diferències binàries" -#: builtin/log.c:1216 +#: builtin/log.c:1241 msgid "don't include a patch matching a commit upstream" msgstr "no incloguis pedaços que coincideixin amb comissions a la font" -#: builtin/log.c:1218 +#: builtin/log.c:1243 msgid "show patch format instead of default (patch + stat)" msgstr "" "mostra el format de pedaç en lloc del per defecte (pedaç + estadístiques)" -#: builtin/log.c:1220 +#: builtin/log.c:1245 msgid "Messaging" msgstr "Missatgeria" -#: builtin/log.c:1221 +#: builtin/log.c:1246 msgid "header" msgstr "capçalera" -#: builtin/log.c:1222 +#: builtin/log.c:1247 msgid "add email header" msgstr "afegeix una capçalera de correu electrònic" -#: builtin/log.c:1223 builtin/log.c:1225 +#: builtin/log.c:1248 builtin/log.c:1250 msgid "email" msgstr "correu electrònic" -#: builtin/log.c:1223 +#: builtin/log.c:1248 msgid "add To: header" msgstr "afegeix la capçalera To:" -#: builtin/log.c:1225 +#: builtin/log.c:1250 msgid "add Cc: header" msgstr "afegeix la capçalera Cc:" -#: builtin/log.c:1227 +#: builtin/log.c:1252 msgid "ident" msgstr "identitat" -#: builtin/log.c:1228 +#: builtin/log.c:1253 msgid "set From address to (or committer ident if absent)" msgstr "" "estableix l'adreça From a (o la identitat del comitent si manca)" -#: builtin/log.c:1230 +#: builtin/log.c:1255 msgid "message-id" msgstr "ID de missatge" -#: builtin/log.c:1231 +#: builtin/log.c:1256 msgid "make first mail a reply to " msgstr "fes del primer missatge una resposta a " -#: builtin/log.c:1232 builtin/log.c:1235 +#: builtin/log.c:1257 builtin/log.c:1260 msgid "boundary" msgstr "límit" -#: builtin/log.c:1233 +#: builtin/log.c:1258 msgid "attach the patch" msgstr "ajunta el pedaç" -#: builtin/log.c:1236 +#: builtin/log.c:1261 msgid "inline the patch" msgstr "posa el pedaç en el cos" -#: builtin/log.c:1240 +#: builtin/log.c:1265 msgid "enable message threading, styles: shallow, deep" msgstr "habilita l'enfilada de missatges, estils: shallow, deep" -#: builtin/log.c:1242 +#: builtin/log.c:1267 msgid "signature" msgstr "firma" -#: builtin/log.c:1243 +#: builtin/log.c:1268 msgid "add a signature" msgstr "afegeix una firma" -#: builtin/log.c:1245 +#: builtin/log.c:1270 msgid "add a signature from a file" msgstr "afegeix una firma des d'un fitxer" -#: builtin/log.c:1246 +#: builtin/log.c:1271 msgid "don't print the patch filenames" msgstr "no imprimeixis els noms de fitxer del pedaç" -#: builtin/log.c:1320 -#, c-format -msgid "invalid ident line: %s" -msgstr "línia d'identitat no vàlida: %s" - -#: builtin/log.c:1335 +#: builtin/log.c:1360 msgid "-n and -k are mutually exclusive." msgstr "-n i -k són mutualment exclusius." -#: builtin/log.c:1337 +#: builtin/log.c:1362 msgid "--subject-prefix and -k are mutually exclusive." msgstr "--subject-prefix i -k són mutualment exclusius." -#: builtin/log.c:1345 +#: builtin/log.c:1370 msgid "--name-only does not make sense" msgstr "--name-only no té sentit" -#: builtin/log.c:1347 +#: builtin/log.c:1372 msgid "--name-status does not make sense" msgstr "--name-status no té sentit" -#: builtin/log.c:1349 +#: builtin/log.c:1374 msgid "--check does not make sense" msgstr "--check no té sentit" -#: builtin/log.c:1372 +#: builtin/log.c:1397 msgid "standard output, or directory, which one?" msgstr "sortida estàndard o directori, quin dels dos?" -#: builtin/log.c:1374 +#: builtin/log.c:1399 #, c-format msgid "Could not create directory '%s'" msgstr "No s'ha pogut crear el directori '%s'" -#: builtin/log.c:1472 +#: builtin/log.c:1496 #, c-format msgid "unable to read signature file '%s'" msgstr "no s'ha pogut llegir el fitxer de firma '%s'" -#: builtin/log.c:1535 +#: builtin/log.c:1559 msgid "Failed to create output files" msgstr "S'ha fallat en crear els fitxers de sortida" -#: builtin/log.c:1583 +#: builtin/log.c:1607 msgid "git cherry [-v] [ [ []]]" msgstr "git cherry [-v] [ [ []]]" -#: builtin/log.c:1637 +#: builtin/log.c:1661 #, c-format msgid "" "Could not find a tracked remote branch, please specify manually.\n" @@ -6889,7 +7341,7 @@ msgstr "" "No s'ha pogut trobar una branca remota seguida. Si us plau, especifiqueu " " manualment.\n" -#: builtin/log.c:1648 builtin/log.c:1650 builtin/log.c:1662 +#: builtin/log.c:1672 builtin/log.c:1674 builtin/log.c:1686 #, c-format msgid "Unknown commit %s" msgstr "Comissió desconeguda %s" @@ -6982,7 +7434,7 @@ msgstr "arbre" #: builtin/ls-files.c:460 msgid "pretend that paths removed since are still present" msgstr "" -"pretén que els camins eliminats després de encara estiguin presents" +"pretén que els camins eliminats després de encara siguin presents" #: builtin/ls-files.c:462 msgid "show debugging data" @@ -7056,33 +7508,33 @@ msgstr "Les estratègies disponibles són:" msgid "Available custom strategies are:" msgstr "Les estratègies personalitzades disponibles són:" -#: builtin/merge.c:193 +#: builtin/merge.c:193 builtin/pull.c:119 msgid "do not show a diffstat at the end of the merge" msgstr "no mostris les estadístiques de diferència al final de la fusió" -#: builtin/merge.c:196 +#: builtin/merge.c:196 builtin/pull.c:122 msgid "show a diffstat at the end of the merge" msgstr "mostra les estadístiques de diferència al final de la fusió" -#: builtin/merge.c:197 +#: builtin/merge.c:197 builtin/pull.c:125 msgid "(synonym to --stat)" msgstr "(sinònim de --stat)" -#: builtin/merge.c:199 +#: builtin/merge.c:199 builtin/pull.c:128 msgid "add (at most ) entries from shortlog to merge commit message" msgstr "" -"afegeix (com a màxim ) entrades del registre curt per a fusionar el " -"missatge de comissió" +"afegeix (com a màxim ) entrades del registre curt al missatge de comissió " +"de fusió" -#: builtin/merge.c:202 +#: builtin/merge.c:202 builtin/pull.c:131 msgid "create a single commit instead of doing a merge" msgstr "crea una única comissió en lloc de fusionar" -#: builtin/merge.c:204 +#: builtin/merge.c:204 builtin/pull.c:134 msgid "perform a commit if the merge succeeds (default)" msgstr "realitza una comissió si la fusió té èxit (per defecte)" -#: builtin/merge.c:206 +#: builtin/merge.c:206 builtin/pull.c:137 msgid "edit message before committing" msgstr "edita el missatge abans de cometre" @@ -7090,7 +7542,7 @@ msgstr "edita el missatge abans de cometre" msgid "allow fast-forward (default)" msgstr "permet l'avanç ràpid (per defecte)" -#: builtin/merge.c:209 +#: builtin/merge.c:209 builtin/pull.c:143 msgid "abort if fast-forward is not possible" msgstr "avorta si l'avanç ràpid no és possible" @@ -7098,19 +7550,20 @@ msgstr "avorta si l'avanç ràpid no és possible" msgid "Verify that the named commit has a valid GPG signature" msgstr "Verifica que la comissió anomenada tingui una firma GPG vàlida" -#: builtin/merge.c:214 builtin/notes.c:753 builtin/revert.c:89 +#: builtin/merge.c:214 builtin/notes.c:767 builtin/pull.c:148 +#: builtin/revert.c:89 msgid "strategy" msgstr "estratègia" -#: builtin/merge.c:215 +#: builtin/merge.c:215 builtin/pull.c:149 msgid "merge strategy to use" msgstr "estratègia de fusió a usar" -#: builtin/merge.c:216 +#: builtin/merge.c:216 builtin/pull.c:152 msgid "option=value" msgstr "opció=valor" -#: builtin/merge.c:217 +#: builtin/merge.c:217 builtin/pull.c:153 msgid "option for selected merge strategy" msgstr "opció per a l'estratègia de fusió seleccionada" @@ -7128,7 +7581,7 @@ msgstr "no s'ha pogut executar stash." #: builtin/merge.c:256 msgid "stash failed" -msgstr "L'emmagatzemament ha fallat." +msgstr "l'emmagatzemament ha fallat" #: builtin/merge.c:261 #, c-format @@ -7148,6 +7601,12 @@ msgstr " (res a aixafar)" msgid "Squash commit -- not updating HEAD\n" msgstr "Comissió d'aixafada -- no actualitzant HEAD\n" +#: builtin/merge.c:344 builtin/merge.c:763 builtin/merge.c:975 +#: builtin/merge.c:988 +#, c-format +msgid "Could not write to '%s'" +msgstr "No s'ha pogut escriure al '%s'" + #: builtin/merge.c:372 msgid "Writing SQUASH_MSG" msgstr "Escrivint SQUASH_MSG" @@ -7171,10 +7630,6 @@ msgstr "'%s' no assenyala una comissió" msgid "Bad branch.%s.mergeoptions string: %s" msgstr "Cadena branch.%s.mergeoptions dolenta: %s" -#: builtin/merge.c:632 -msgid "git write-tree failed to write a tree" -msgstr "git write-tree ha fallat en escriure un arbre" - #: builtin/merge.c:656 msgid "Not handling anything other than two heads merge." msgstr "No gestionant res a part de la fusió de dos caps." @@ -7267,25 +7722,21 @@ msgid "" "You have not concluded your merge (MERGE_HEAD exists).\n" "Please, commit your changes before you merge." msgstr "" -"No heu completat la vostra fusió (MERGE_HEAD existeix).\n" +"No heu conclòs la vostra fusió (MERGE_HEAD existeix).\n" "Si us plau, cometeu els vostres canvis abans de fusionar." -#: builtin/merge.c:1227 git-pull.sh:74 -msgid "You have not concluded your merge (MERGE_HEAD exists)." -msgstr "No heu completat la vostra fusió (MERGE_HEAD existeix)." - #: builtin/merge.c:1231 msgid "" "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n" "Please, commit your changes before you merge." msgstr "" -"No heu completat el vostre recull de cireres (CHERRY_PICK_HEAD existeix).\n" +"No heu conclòs el vostre recull de cireres (CHERRY_PICK_HEAD existeix).\n" "Si us plau, cometeu els vostres canvis abans de fusionar." #: builtin/merge.c:1234 msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)." msgstr "" -"No heu completat el vostre recull de cireres (CHERRY_PICK_HEAD existeix)." +"No heu conclòs el vostre recull de cireres (CHERRY_PICK_HEAD existeix)." #: builtin/merge.c:1243 msgid "You cannot combine --squash with --no-ff." @@ -7312,7 +7763,7 @@ msgstr "%s - no és una cosa que puguem fusionar" #: builtin/merge.c:1278 msgid "Can merge only exactly one commit into empty head" -msgstr "Es pot fusionar només exactament una comissió a un cap buit" +msgstr "Es pot fusionar no més d'exactament una comissió a un cap buit" #: builtin/merge.c:1333 #, c-format @@ -7411,7 +7862,7 @@ msgstr "emet tots els avantpassats comuns" #: builtin/merge-base.c:216 msgid "find ancestors for a single n-way merge" -msgstr "troba els avantpassats per a una sola fusió de n vies" +msgstr "troba els avantpassats per a una sola fusió d'n vies" #: builtin/merge-base.c:218 msgid "list revs not reachable from others" @@ -7419,7 +7870,7 @@ msgstr "llista les revisions no abastables d'altres" #: builtin/merge-base.c:220 msgid "is the first one ancestor of the other?" -msgstr "és el primer un avantpassat de l'altre?" +msgstr "és la primera un avantpassat de l'altre?" #: builtin/merge-base.c:222 msgid "find where forked from reflog of " @@ -7571,7 +8022,7 @@ msgstr "%s, origen=%s, destí=%s" msgid "Renaming %s to %s\n" msgstr "Canviant el nom de %s a %s\n" -#: builtin/mv.c:256 builtin/remote.c:725 builtin/repack.c:361 +#: builtin/mv.c:256 builtin/remote.c:722 builtin/repack.c:362 #, c-format msgid "renaming '%s' failed" msgstr "el canvi del nom de '%s' ha fallat" @@ -7616,11 +8067,11 @@ msgstr "permet imprimir els noms `undefined` (per defecte)" msgid "dereference tags in the input (internal use)" msgstr "dereferencia les etiquetes en l'entrada (ús intern)" -#: builtin/notes.c:24 +#: builtin/notes.c:25 msgid "git notes [--ref ] [list []]" msgstr "git notes [--ref ] [llista []]" -#: builtin/notes.c:25 +#: builtin/notes.c:26 msgid "" "git notes [--ref ] add [-f] [--allow-empty] [-m | -F " "| (-c | -C) ] []" @@ -7628,12 +8079,12 @@ msgstr "" "git notes [--ref ] add [-f] [--allow-empty] [-m " " | -F | (-c | -C) ] []" -#: builtin/notes.c:26 +#: builtin/notes.c:27 msgid "git notes [--ref ] copy [-f] " msgstr "" "git notes [--ref ] copy [-f] " -#: builtin/notes.c:27 +#: builtin/notes.c:28 msgid "" "git notes [--ref ] append [--allow-empty] [-m | -F | " "(-c | -C) ] []" @@ -7641,239 +8092,229 @@ msgstr "" "git notes [--ref ] append [--allow-empty] [-m " " | -F | (-c | -C) ] []" -#: builtin/notes.c:28 +#: builtin/notes.c:29 msgid "git notes [--ref ] edit [--allow-empty] []" msgstr "" "git notes [--ref ] edit [--allow-empty] []" -#: builtin/notes.c:29 +#: builtin/notes.c:30 msgid "git notes [--ref ] show []" msgstr "git notes [--ref ] show []" -#: builtin/notes.c:30 +#: builtin/notes.c:31 msgid "" "git notes [--ref ] merge [-v | -q] [-s ] " msgstr "" "git notes [--ref ] merge [-v | -q] [-s ] " "" -#: builtin/notes.c:31 +#: builtin/notes.c:32 msgid "git notes merge --commit [-v | -q]" msgstr "git notes merge --commit [-v | -q]" -#: builtin/notes.c:32 +#: builtin/notes.c:33 msgid "git notes merge --abort [-v | -q]" msgstr "git notes merge --abort [-v | -q]" -#: builtin/notes.c:33 +#: builtin/notes.c:34 msgid "git notes [--ref ] remove [...]" msgstr "git notes [--ref ] remove [...]" -#: builtin/notes.c:34 +#: builtin/notes.c:35 msgid "git notes [--ref ] prune [-n | -v]" msgstr "git notes [--ref ] prune [-n | -v]" -#: builtin/notes.c:35 +#: builtin/notes.c:36 msgid "git notes [--ref ] get-ref" msgstr "git notes [--ref ] get-ref" -#: builtin/notes.c:40 +#: builtin/notes.c:41 msgid "git notes [list []]" msgstr "git notes [llista []]" -#: builtin/notes.c:45 +#: builtin/notes.c:46 msgid "git notes add [] []" msgstr "git notes add [] []" -#: builtin/notes.c:50 +#: builtin/notes.c:51 msgid "git notes copy [] " msgstr "git notes copy [] " -#: builtin/notes.c:51 +#: builtin/notes.c:52 msgid "git notes copy --stdin [ ]..." msgstr "git notes copy --stdin [ ]..." -#: builtin/notes.c:56 +#: builtin/notes.c:57 msgid "git notes append [] []" msgstr "git notes append [] []" -#: builtin/notes.c:61 +#: builtin/notes.c:62 msgid "git notes edit []" msgstr "git notes edit []" -#: builtin/notes.c:66 +#: builtin/notes.c:67 msgid "git notes show []" msgstr "git notes show []" -#: builtin/notes.c:71 +#: builtin/notes.c:72 msgid "git notes merge [] " msgstr "git notes merge [] " -#: builtin/notes.c:72 +#: builtin/notes.c:73 msgid "git notes merge --commit []" msgstr "git notes merge --commit []" -#: builtin/notes.c:73 +#: builtin/notes.c:74 msgid "git notes merge --abort []" msgstr "git notes merge --abort []" -#: builtin/notes.c:78 +#: builtin/notes.c:79 msgid "git notes remove []" msgstr "git notes remove []" -#: builtin/notes.c:83 +#: builtin/notes.c:84 msgid "git notes prune []" msgstr "git notes prune []" -#: builtin/notes.c:88 +#: builtin/notes.c:89 msgid "git notes get-ref" msgstr "git notes get-ref" -#: builtin/notes.c:146 +#: builtin/notes.c:147 #, c-format msgid "unable to start 'show' for object '%s'" msgstr "no s'ha pogut iniciar 'show' per a l'objecte '%s'" -#: builtin/notes.c:150 +#: builtin/notes.c:151 msgid "could not read 'show' output" msgstr "no s'ha pogut llegir la sortida de 'show'" -#: builtin/notes.c:158 +#: builtin/notes.c:159 #, c-format msgid "failed to finish 'show' for object '%s'" msgstr "s'ha fallat en finalitzar 'show' per a l'objecte '%s'" -#: builtin/notes.c:173 builtin/tag.c:477 +#: builtin/notes.c:174 builtin/tag.c:477 #, c-format msgid "could not create file '%s'" msgstr "no s'ha pogut crear el fitxer '%s'" -#: builtin/notes.c:192 +#: builtin/notes.c:193 msgid "Please supply the note contents using either -m or -F option" msgstr "" "Si us plau, proveïu els continguts de la nota fent servir l'opció -m o " "l'opció -F" -#: builtin/notes.c:201 +#: builtin/notes.c:202 msgid "unable to write note object" msgstr "no s'ha pogut escriure l'objecte de nota" -#: builtin/notes.c:203 +#: builtin/notes.c:204 #, c-format msgid "The note contents have been left in %s" msgstr "Els continguts de la nota s'han deixat en %s" -#: builtin/notes.c:231 builtin/tag.c:693 +#: builtin/notes.c:232 builtin/tag.c:695 #, c-format msgid "cannot read '%s'" msgstr "no es pot llegir '%s'" -#: builtin/notes.c:233 builtin/tag.c:696 +#: builtin/notes.c:234 builtin/tag.c:698 #, c-format msgid "could not open or read '%s'" -msgstr "no s'ha pogut obrir ni llegir '%s'" +msgstr "no s'ha pogut obrir o llegir '%s'" -#: builtin/notes.c:252 builtin/notes.c:303 builtin/notes.c:305 -#: builtin/notes.c:365 builtin/notes.c:420 builtin/notes.c:506 -#: builtin/notes.c:511 builtin/notes.c:589 builtin/notes.c:652 -#: builtin/notes.c:854 builtin/tag.c:709 +#: builtin/notes.c:253 builtin/notes.c:304 builtin/notes.c:306 +#: builtin/notes.c:366 builtin/notes.c:421 builtin/notes.c:507 +#: builtin/notes.c:512 builtin/notes.c:590 builtin/notes.c:653 +#: builtin/notes.c:877 builtin/tag.c:711 #, c-format msgid "Failed to resolve '%s' as a valid ref." msgstr "S'ha fallat en resoldre '%s' com a referència vàlida." -#: builtin/notes.c:255 +#: builtin/notes.c:256 #, c-format msgid "Failed to read object '%s'." msgstr "S'ha fallat en llegir l'objecte '%s'." -#: builtin/notes.c:259 +#: builtin/notes.c:260 #, c-format msgid "Cannot read note data from non-blob object '%s'." msgstr "No es pot llegir les dades de node de l'objecte no de blob '%s'." -#: builtin/notes.c:299 -#, c-format -msgid "Malformed input line: '%s'." -msgstr "Línia d'entrada mal formada: '%s'." - -#: builtin/notes.c:314 -#, c-format -msgid "Failed to copy notes from '%s' to '%s'" -msgstr "S'ha fallat en copiar les notes de '%s' a '%s'" - -#: builtin/notes.c:358 builtin/notes.c:413 builtin/notes.c:489 -#: builtin/notes.c:501 builtin/notes.c:577 builtin/notes.c:645 -#: builtin/notes.c:919 +#: builtin/notes.c:359 builtin/notes.c:414 builtin/notes.c:490 +#: builtin/notes.c:502 builtin/notes.c:578 builtin/notes.c:646 +#: builtin/notes.c:942 msgid "too many parameters" msgstr "massa paràmetres" -#: builtin/notes.c:371 builtin/notes.c:658 +#: builtin/notes.c:372 builtin/notes.c:659 #, c-format msgid "No note found for object %s." msgstr "No s'ha trobat cap nota per a l'objecte %s." -#: builtin/notes.c:392 builtin/notes.c:555 +#: builtin/notes.c:393 builtin/notes.c:556 msgid "note contents as a string" msgstr "anota els continguts com a cadena" -#: builtin/notes.c:395 builtin/notes.c:558 +#: builtin/notes.c:396 builtin/notes.c:559 msgid "note contents in a file" msgstr "anota els continguts en un fitxer" -#: builtin/notes.c:397 builtin/notes.c:400 builtin/notes.c:560 -#: builtin/notes.c:563 builtin/tag.c:628 +#: builtin/notes.c:398 builtin/notes.c:401 builtin/notes.c:561 +#: builtin/notes.c:564 builtin/tag.c:630 msgid "object" msgstr "objecte" -#: builtin/notes.c:398 builtin/notes.c:561 +#: builtin/notes.c:399 builtin/notes.c:562 msgid "reuse and edit specified note object" msgstr "reusa i edita l'objecte de nota especificat" -#: builtin/notes.c:401 builtin/notes.c:564 +#: builtin/notes.c:402 builtin/notes.c:565 msgid "reuse specified note object" msgstr "reusa l'objecte de nota especificat" -#: builtin/notes.c:404 builtin/notes.c:567 +#: builtin/notes.c:405 builtin/notes.c:568 msgid "allow storing empty note" msgstr "permet l'emmagatzematge d'una nota buida" -#: builtin/notes.c:405 builtin/notes.c:476 +#: builtin/notes.c:406 builtin/notes.c:477 msgid "replace existing notes" msgstr "reemplaça les notes existents" -#: builtin/notes.c:430 +#: builtin/notes.c:431 #, c-format msgid "" "Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite " "existing notes" msgstr "" -"No es pot afegir les notes. S'ha trobat notes existents de l'objecte %s. " +"No es pot afegir les notes. S'han trobat notes existents de l'objecte %s. " "Useu '-f' per a sobreescriure les notes existents." -#: builtin/notes.c:445 builtin/notes.c:524 +#: builtin/notes.c:446 builtin/notes.c:525 #, c-format msgid "Overwriting existing notes for object %s\n" msgstr "Sobreescrivint les notes existents de l'objecte %s\n" -#: builtin/notes.c:456 builtin/notes.c:617 builtin/notes.c:859 +#: builtin/notes.c:457 builtin/notes.c:618 builtin/notes.c:882 #, c-format msgid "Removing note for object %s\n" msgstr "Eliminant la nota de l'objecte %s\n" -#: builtin/notes.c:477 +#: builtin/notes.c:478 msgid "read objects from stdin" msgstr "llegeix els objectes des d'stdin" -#: builtin/notes.c:479 +#: builtin/notes.c:480 msgid "load rewriting config for (implies --stdin)" msgstr "" "carrega la configuració de reescriptura per a (implica --stdin)" -#: builtin/notes.c:497 +#: builtin/notes.c:498 msgid "too few parameters" msgstr "hi ha massa pocs paràmetres" -#: builtin/notes.c:518 +#: builtin/notes.c:519 #, c-format msgid "" "Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite " @@ -7882,29 +8323,29 @@ msgstr "" "No es pot copiar les notes. S'han trobat notes existents de l'objecte %s. " "Useu '-f' per a sobreescriure les notes existents." -#: builtin/notes.c:530 +#: builtin/notes.c:531 #, c-format msgid "Missing notes on source object %s. Cannot copy." msgstr "Manquen notes a l'objecte font %s. No es pot copiar." -#: builtin/notes.c:582 +#: builtin/notes.c:583 #, c-format msgid "" "The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n" "Please use 'git notes add -f -m/-F/-c/-C' instead.\n" msgstr "" -"S'han desaprovat les opcions -m/-F/-c/-C en favor de la subordre 'edit'.\n" +"S'han desaprovat les opcions -m/-F/-c/-C en favor del subordre 'edit'.\n" "Si us plau, useu 'git notes add -f -m/-F/-c/-C' en lloc d'això.\n" -#: builtin/notes.c:750 +#: builtin/notes.c:764 msgid "General options" msgstr "Opcions generals" -#: builtin/notes.c:752 +#: builtin/notes.c:766 msgid "Merge options" msgstr "Opcions de fusió" -#: builtin/notes.c:754 +#: builtin/notes.c:768 msgid "" "resolve notes conflicts using the given strategy (manual/ours/theirs/union/" "cat_sort_uniq)" @@ -7912,59 +8353,66 @@ msgstr "" "resol els conflictes de nota usant l'estratègia donada (manual/ours/theirs/" "union/cat_sort_uniq)" -#: builtin/notes.c:756 +#: builtin/notes.c:770 msgid "Committing unmerged notes" msgstr "Cometent les notes sense fusionar" -#: builtin/notes.c:758 +#: builtin/notes.c:772 msgid "finalize notes merge by committing unmerged notes" msgstr "finalitza la fusió de notes cometent les notes sense fusionar" -#: builtin/notes.c:760 +#: builtin/notes.c:774 msgid "Aborting notes merge resolution" msgstr "Avortant la resolució de fusió de notes" -#: builtin/notes.c:762 +#: builtin/notes.c:776 msgid "abort notes merge" msgstr "avorta la fusió de notes" -#: builtin/notes.c:857 +#: builtin/notes.c:853 +#, c-format +msgid "A notes merge into %s is already in-progress at %s" +msgstr "Una fusió de notes a %s ja està en curs a %s" + +#: builtin/notes.c:880 #, c-format msgid "Object %s has no note\n" msgstr "L'objecte %s no té cap nota\n" -#: builtin/notes.c:869 +#: builtin/notes.c:892 msgid "attempt to remove non-existent note is not an error" msgstr "l'intent d'eliminar una nota no existent no és un error" -#: builtin/notes.c:872 +#: builtin/notes.c:895 msgid "read object names from the standard input" msgstr "llegeix els noms d'objecte des de l'entrada estàndard" -#: builtin/notes.c:953 +#: builtin/notes.c:976 msgid "notes-ref" msgstr "referència de notes" -#: builtin/notes.c:954 +#: builtin/notes.c:977 msgid "use notes from " msgstr "usa les notes de " -#: builtin/notes.c:989 builtin/remote.c:1618 +#: builtin/notes.c:1012 builtin/remote.c:1588 #, c-format msgid "Unknown subcommand: %s" msgstr "Subordre desconegut: %s" #: builtin/pack-objects.c:28 -msgid "git pack-objects --stdout [options...] [< ref-list | < object-list]" +msgid "" +"git pack-objects --stdout [...] [< | < ]" msgstr "" -"git pack-objects --stdout [opcions...] [< llista-de-referències | < llista-" -"de-objectes]" +"git pack-objects --stdout [...] [< | < " +"]" #: builtin/pack-objects.c:29 -msgid "git pack-objects [options...] base-name [< ref-list | < object-list]" +msgid "" +"git pack-objects [...] [< | < ]" msgstr "" -"git pack-objects [opcions...] nom-base [< llista-de-referències | < llista-" -"de-objectes]" +"git pack-objects [...] [< | < " +"]" #: builtin/pack-objects.c:175 builtin/pack-objects.c:178 #, c-format @@ -7995,162 +8443,152 @@ msgstr "versió d'índex no compatible %s" msgid "bad index version '%s'" msgstr "versió d'índex dolenta '%s'" -#: builtin/pack-objects.c:2595 -#, c-format -msgid "option %s does not accept negative form" -msgstr "l'opció %s no accepta la forma negativa" - -#: builtin/pack-objects.c:2599 -#, c-format -msgid "unable to parse value '%s' for option %s" -msgstr "no s'ha pogut analitzar el valor '%s' per a l'opció %s" - -#: builtin/pack-objects.c:2619 +#: builtin/pack-objects.c:2602 msgid "do not show progress meter" msgstr "no mostris l'indicador de progrés" -#: builtin/pack-objects.c:2621 +#: builtin/pack-objects.c:2604 msgid "show progress meter" msgstr "mostra l'indicador de progrés" -#: builtin/pack-objects.c:2623 +#: builtin/pack-objects.c:2606 msgid "show progress meter during object writing phase" msgstr "mostra l'indicador de progrés durant la fase d'escriptura d'objectes" -#: builtin/pack-objects.c:2626 +#: builtin/pack-objects.c:2609 msgid "similar to --all-progress when progress meter is shown" msgstr "similar a --all-progress quan l'indicador de progrés es mostra" -#: builtin/pack-objects.c:2627 +#: builtin/pack-objects.c:2610 msgid "version[,offset]" msgstr "versió[,desplaçament]" -#: builtin/pack-objects.c:2628 +#: builtin/pack-objects.c:2611 msgid "write the pack index file in the specified idx format version" msgstr "" "escriu el fitxer d'índex de paquet en la versió de format d'índex " "especificada" -#: builtin/pack-objects.c:2631 +#: builtin/pack-objects.c:2614 msgid "maximum size of each output pack file" msgstr "mida màxima de cada fitxer de paquet de sortida" -#: builtin/pack-objects.c:2633 +#: builtin/pack-objects.c:2616 msgid "ignore borrowed objects from alternate object store" msgstr "" "ignora els objectes prestats d'un emmagatzemament d'objectes alternatiu" -#: builtin/pack-objects.c:2635 +#: builtin/pack-objects.c:2618 msgid "ignore packed objects" msgstr "ignora els objectes empaquetats" -#: builtin/pack-objects.c:2637 +#: builtin/pack-objects.c:2620 msgid "limit pack window by objects" msgstr "limita la finestra d'empaquetament per objectes" -#: builtin/pack-objects.c:2639 +#: builtin/pack-objects.c:2622 msgid "limit pack window by memory in addition to object limit" msgstr "" "limita la finestra d'empaquetament per memòria a més del límit d'objectes" -#: builtin/pack-objects.c:2641 +#: builtin/pack-objects.c:2624 msgid "maximum length of delta chain allowed in the resulting pack" msgstr "longitud màxima de la cadena de deltes permesa en el paquet resultant" -#: builtin/pack-objects.c:2643 +#: builtin/pack-objects.c:2626 msgid "reuse existing deltas" msgstr "reusa les deltes existents" -#: builtin/pack-objects.c:2645 +#: builtin/pack-objects.c:2628 msgid "reuse existing objects" msgstr "reusa els objectes existents" -#: builtin/pack-objects.c:2647 +#: builtin/pack-objects.c:2630 msgid "use OFS_DELTA objects" msgstr "usa objectes OFS_DELTA" -#: builtin/pack-objects.c:2649 +#: builtin/pack-objects.c:2632 msgid "use threads when searching for best delta matches" msgstr "usa fils en cercar les millores coincidències de delta" -#: builtin/pack-objects.c:2651 +#: builtin/pack-objects.c:2634 msgid "do not create an empty pack output" msgstr "no creïs una emissió de paquet buida" -#: builtin/pack-objects.c:2653 +#: builtin/pack-objects.c:2636 msgid "read revision arguments from standard input" msgstr "llegeix els paràmetres de revisió des de l'entrada estàndard" -#: builtin/pack-objects.c:2655 +#: builtin/pack-objects.c:2638 msgid "limit the objects to those that are not yet packed" -msgstr "limita els objectes als que encara no s'hagin empaquetat" +msgstr "limita els objectes als quals encara no s'hagin empaquetat" -#: builtin/pack-objects.c:2658 +#: builtin/pack-objects.c:2641 msgid "include objects reachable from any reference" msgstr "inclou els objectes abastables de qualsevulla referència" -#: builtin/pack-objects.c:2661 +#: builtin/pack-objects.c:2644 msgid "include objects referred by reflog entries" msgstr "" "inclou els objectes als quals facin referència les entrades del registre de " "referències" -#: builtin/pack-objects.c:2664 +#: builtin/pack-objects.c:2647 msgid "include objects referred to by the index" msgstr "inclou els objectes als quals faci referència l'índex" -#: builtin/pack-objects.c:2667 +#: builtin/pack-objects.c:2650 msgid "output pack to stdout" msgstr "emet el paquet a stdout" -#: builtin/pack-objects.c:2669 +#: builtin/pack-objects.c:2652 msgid "include tag objects that refer to objects to be packed" msgstr "" "inclou els objectes d'etiqueta que facin referència als objectes a empaquetar" -#: builtin/pack-objects.c:2671 +#: builtin/pack-objects.c:2654 msgid "keep unreachable objects" msgstr "retén els objectes inabastables" -#: builtin/pack-objects.c:2672 parse-options.h:139 +#: builtin/pack-objects.c:2655 parse-options.h:142 msgid "time" msgstr "hora" -#: builtin/pack-objects.c:2673 +#: builtin/pack-objects.c:2656 msgid "unpack unreachable objects newer than