diff options
151 files changed, 6692 insertions, 3216 deletions
diff --git a/Documentation/RelNotes-1.5.4.5.txt b/Documentation/RelNotes-1.5.4.5.txt new file mode 100644 index 0000000000..fe768d497f --- /dev/null +++ b/Documentation/RelNotes-1.5.4.5.txt @@ -0,0 +1,53 @@ +GIT v1.5.4.5 Release Notes +========================== + +Fixes since v1.5.4.4 +-------------------- + + * You couldn't specify a custom editor whose path contains a whitespace + via GIT_EDITOR (and core.editor). + + * The subdirectory filter to "git filter-branch" mishandled a history + where the subdirectory becomes empty and then later becomes non-empty. + + * "git shortlog" gave an empty line if the original commit message was + malformed (e.g. a botched import from foreign SCM). Now it finds the + first non-empty line and uses it for better information. + + * When the user fails to give a revision parameter to "git svn", an error + from the Perl interpreter was issued because the script lacked proper + error checking. + + * After "git rebase" stopped due to conflicts, if the user played with + "git reset" and friends, "git rebase --abort" failed to go back to the + correct commit. + + * Additional work trees prepared with git-new-workdir (in contrib/) did + not share git-svn metadata directory .git/svn with the original. + + * "git-merge-recursive" did not mark addition of the same path with + different filemodes correctly as a conflict. + + * "gitweb" gave malformed URL when pathinfo stype paths are in use. + + * "-n" stands for "--no-tags" again for "git fetch". + + * "git format-patch" did not detect the need to add 8-bit MIME header + when the user used format.header configuration. + + * "rev~" revision specifier used to mean "rev", which was inconsistent + with how "rev^" worked. Now "rev~" is the same as "rev~1" (hence it + also is the same as "rev^1"), and "rev~0" is the same as "rev^0" + (i.e. it has to be a commit). + + * "git quiltimport" did not grok empty lines, lines in "file -pNNN" + format to specify the prefix levels and lines with trailing comments. + + * "git rebase -m" triggered pre-commit verification, which made + "rebase --continue" impossible. + +-- +exec >/var/tmp/1 +echo O=$(git describe maint) +O=v1.5.4.4-25-ga6f7728 +git shortlog --no-merges $O..maint diff --git a/Documentation/RelNotes-1.5.5.txt b/Documentation/RelNotes-1.5.5.txt index 874dad9a4f..e31ae6a293 100644 --- a/Documentation/RelNotes-1.5.5.txt +++ b/Documentation/RelNotes-1.5.5.txt @@ -6,7 +6,16 @@ Updates since v1.5.4 (subsystems) - * Comes with git-gui 0.9.3 + * Comes with git-gui 0.9.3. + +(portability) + + * We shouldn't ask for BSD group ownership semantics by setting g+s bit + on directories on older BSD systems that refuses chmod() by non root + users. BSD semantics is the default there anyway. + + * Bunch of portability improvement patches coming from an effort to port + to Solaris has been applied. (performance) @@ -27,6 +36,9 @@ Updates since v1.5.4 (usability, bells and whistles) + * Bash completion script (in contrib) are aware of more commands and + options. + * You can be warned when core.autocrlf conversion is applied in such a way that results in an irreversible conversion. @@ -54,11 +66,6 @@ Updates since v1.5.4 used to tell "git-fetch" and "git-push" to use different URL than what is given from the command line. - * "git push <somewhere> HEAD" and "git push <somewhere> +HEAD" works as - expected; they push the current branch (and only the current branch). - In addition, HEAD can be written as the value of "remote.<there>.push" - configuration variable. - * "git add -i" behaves better even before you make an initial commit. * "git am" refused to run from a subdirectory without a good reason. @@ -114,24 +121,46 @@ Updates since v1.5.4 * "git gc" learned --quiet option. + * "git gc" now automatically prunes unreachable objects that are two + weeks old or older. + * "git grep" now knows "--name-only" is a synonym for the "-l" option. * "git help <alias>" now reports "'git <alias>' is alias to <what>", instead of saying "No manual entry for git-<alias>". + * "git help" can use different backends to show manual pages and this can + be configured using "man.viewer" configuration. + + * "gitk" does not restore window position from $HOME/.gitk anymore (it + still restores the size). + * "git log --grep=<what>" learned "--fixed-strings" option to look for <what> without treating it as a regular expression. * "git gui" learned an auto-spell checking. + * "git push <somewhere> HEAD" and "git push <somewhere> +HEAD" works as + expected; they push the current branch (and only the current branch). + In addition, HEAD can be written as the value of "remote.<there>.push" + configuration variable. + + * When the configuration variable "pack.threads" is set to 0, "git + repack" auto detects the number of CPUs and uses that many threads. + * "git send-email" learned to prompt for passwords interactively. * "git send-email" learned an easier way to suppress CC recipients. - * When the configuration variable "pack.threads" is set to 0, "git - repack" auto detects the number of CPUs and uses that many threads. + * "git stash" learned "pop" command, that applies the latest stash and + removes it from the stash, and "drop" command to discard the named + stash entry. + + * "git submodule" learned a new subcommand "summary" to show the + symmetric difference between the HEAD version and the work tree version + of the submodule commits. * Various "git cvsimport", "git cvsexportcommit", "git svn" and "git p4" improvements. @@ -146,6 +175,8 @@ Updates since v1.5.4 * "git checkout" is rewritten in C. + * "git remote" is rewritten in C. + * Two conflict hunks that are separated by a very short span of common lines are now coalesced into one larger hunk, to make the result easier to read. @@ -153,6 +184,8 @@ Updates since v1.5.4 * Run-command API's use of file descriptors is documented clearer and is more consistent now. + * diff output can be sent to FILE * that is different from stdout. This + will help reimplementing more things in C. Fixes since v1.5.4 ------------------ @@ -168,6 +201,6 @@ this release, unless otherwise noted. --- exec >/var/tmp/1 -O=v1.5.4.3-428-g6b48990 +O=v1.5.4.4-620-gc817faa echo O=`git describe refs/heads/master` git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint diff --git a/Documentation/config.txt b/Documentation/config.txt index c5e094a9c4..0865f4e01a 100644 --- a/Documentation/config.txt +++ b/Documentation/config.txt @@ -420,6 +420,11 @@ branch.<name>.rebase:: it unless you understand the implications (see linkgit:git-rebase[1] for details). +browser.<tool>.cmd:: + Specify the command to invoke the specified browser. The + specified command is evaluated in shell with the URLs passed + as arguments. (See linkgit:git-web--browse[1].) + browser.<tool>.path:: Override the path for the given tool that may be used to browse HTML help (see '-w' option in linkgit:git-help[1]) or a @@ -590,6 +595,10 @@ gc.packrefs:: at some stage, and setting this to `false` will continue to prevent `git pack-refs` from being run from `git gc`. +gc.pruneexpire:: + When `git gc` is run, it will call `prune --expire 2.weeks.ago`. + Override the grace period with this config variable. + gc.reflogexpire:: `git reflog expire` removes reflog entries older than this time; defaults to 90 days. @@ -748,6 +757,10 @@ log.showroot:: Tools like linkgit:git-log[1] or linkgit:git-whatchanged[1], which normally hide the root commit will now show it. True by default. +man.viewer:: + Specify the programs that may be used to display help in the + 'man' format. See linkgit:git-help[1]. + merge.summary:: Whether to include summaries of merged commits in newly created merge commit messages. False by default. @@ -860,7 +873,7 @@ pack.indexVersion:: whenever the corresponding pack is larger than 2 GB. Otherwise the default is 1. -pack.packSizeLimit: +pack.packSizeLimit:: The default maximum size of a pack. This setting only affects packing to a file, i.e. the git:// protocol is unaffected. It can be overridden by the `\--max-pack-size` option of diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt index 47799097ce..c751a17d07 100644 --- a/Documentation/git-add.txt +++ b/Documentation/git-add.txt @@ -207,16 +207,14 @@ patch:: and the working tree file and asks you if you want to stage the change of each hunk. You can say: - y - add the change from that hunk to index - n - do not add the change from that hunk to index - a - add the change from that hunk and all the rest to index - d - do not the change from that hunk nor any of the rest to index - j - do not decide on this hunk now, and view the next - undecided hunk - J - do not decide on this hunk now, and view the next hunk - k - do not decide on this hunk now, and view the previous - undecided hunk - K - do not decide on this hunk now, and view the previous hunk + y - stage this hunk + n - do not stage this hunk + a - stage this and all the remaining hunks in the file + d - do not stage this hunk nor any of the remaining hunks in the file + j - leave this hunk undecided, see next undecided hunk + J - leave this hunk undecided, see next hunk + k - leave this hunk undecided, see previous undecided hunk + K - leave this hunk undecided, see previous hunk s - split the current hunk into smaller hunks ? - print help + diff --git a/Documentation/git-fast-import.txt b/Documentation/git-fast-import.txt index 96f6767075..c29a4f8126 100644 --- a/Documentation/git-fast-import.txt +++ b/Documentation/git-fast-import.txt @@ -385,6 +385,9 @@ new commit. Omitting the `from` command in the first commit of a new branch will cause fast-import to create that commit with no ancestor. This tends to be desired only for the initial commit of a project. +If the frontend creates all files from scratch when making a new +branch, a `merge` command may be used instead of `from` to start +the commit with an empty tree. Omitting the `from` command on existing branches is usually desired, as the current commit on that branch is automatically assumed to be the first ancestor of the new commit. @@ -427,13 +430,15 @@ existing value of the branch. `merge` ^^^^^^^ -Includes one additional ancestor commit, and makes the current -commit a merge commit. An unlimited number of `merge` commands per +Includes one additional ancestor commit. If the `from` command is +omitted when creating a new branch, the first `merge` commit will be +the first ancestor of the current commit, and the branch will start +out with no files. An unlimited number of `merge` commands per commit are permitted by fast-import, thereby establishing an n-way merge. However Git's other tools never create commits with more than 15 additional ancestors (forming a 16-way merge). For this reason it is suggested that frontends do not use more than 15 `merge` -commands per commit. +commands per commit; 16, if starting a new, empty branch. Here `<committish>` is any of the commit specification expressions also accepted by `from` (see above). diff --git a/Documentation/git-filter-branch.txt b/Documentation/git-filter-branch.txt index 543a1cf105..2a78549be5 100644 --- a/Documentation/git-filter-branch.txt +++ b/Documentation/git-filter-branch.txt @@ -25,7 +25,7 @@ Otherwise, all information (including original commit times or merge information) will be preserved. The command will only rewrite the _positive_ refs mentioned in the -command line (i.e. if you pass 'a..b', only 'b' will be rewritten). +command line (e.g. if you pass 'a..b', only 'b' will be rewritten). If you specify no filters, the commits will be recommitted without any changes, which would normally have no effect. Nevertheless, this may be useful in the future for compensating for some git bugs or such, @@ -42,7 +42,7 @@ Always verify that the rewritten version is correct: The original refs, if different from the rewritten ones, will be stored in the namespace 'refs/original/'. -Note that since this operation is extensively I/O expensive, it might +Note that since this operation is very I/O expensive, it might be a good idea to redirect the temporary directory off-disk with the '-d' option, e.g. on tmpfs. Reportedly the speedup is very noticeable. @@ -51,14 +51,15 @@ Filters ~~~~~~~ The filters are applied in the order as listed below. The <command> -argument is always evaluated in shell using the 'eval' command (with the -notable exception of the commit filter, for technical reasons). +argument is always evaluated in the shell context using the 'eval' command +(with the notable exception of the commit filter, for technical reasons). Prior to that, the $GIT_COMMIT environment variable will be set to contain the id of the commit being rewritten. Also, GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL, GIT_AUTHOR_DATE, GIT_COMMITTER_NAME, GIT_COMMITTER_EMAIL, -and GIT_COMMITTER_DATE are set according to the current commit. If any -evaluation of <command> returns a non-zero exit status, the whole operation -will be aborted. +and GIT_COMMITTER_DATE are set according to the current commit. The values +of these variables after the filters have run, are used for the new commit. +If any evaluation of <command> returns a non-zero exit status, the whole +operation will be aborted. A 'map' function is available that takes an "original sha1 id" argument and outputs a "rewritten sha1 id" if the commit has been already @@ -71,9 +72,9 @@ OPTIONS ------- --env-filter <command>:: - This is the filter for modifying the environment in which - the commit will be performed. Specifically, you might want - to rewrite the author/committer name/email/time environment + This filter may be used if you only need to modify the environment + in which the commit will be performed. Specifically, you might + want to rewrite the author/committer name/email/time environment variables (see linkgit:git-commit[1] for details). Do not forget to re-export the variables. @@ -149,7 +150,7 @@ definition impossible to preserve signatures at any rate.) -d <directory>:: Use this option to set the path to the temporary directory used for rewriting. When applying a tree filter, the command needs to - temporary checkout the tree to some directory, which may consume + temporarily check out the tree to some directory, which may consume considerable space in case of large projects. By default it does this in the '.git-rewrite/' directory but you can override that choice by this parameter. diff --git a/Documentation/git-gc.txt b/Documentation/git-gc.txt index 2e7be916aa..d424a4ecbe 100644 --- a/Documentation/git-gc.txt +++ b/Documentation/git-gc.txt @@ -8,7 +8,7 @@ git-gc - Cleanup unnecessary files and optimize the local repository SYNOPSIS -------- -'git-gc' [--prune] [--aggressive] [--auto] [--quiet] +'git-gc' [--aggressive] [--auto] [--quiet] DESCRIPTION ----------- @@ -19,23 +19,19 @@ created from prior invocations of linkgit:git-add[1]. Users are encouraged to run this task on a regular basis within each repository to maintain good disk space utilization and good -operating performance. Some git commands may automatically run -`git-gc`; see the `--auto` flag below for details. +operating performance. + +Some git commands may automatically run `git-gc`; see the `--auto` flag +below for details. If you know what you're doing and all you want is to +disable this behavior permanently without further considerations, just do: + +---------------------- +$ git config --global gc.auto 0 +---------------------- OPTIONS ------- ---prune:: - Usually `git-gc` packs refs, expires old reflog entries, - packs loose objects, - and removes old 'rerere' records. Removal - of unreferenced loose objects is an unsafe operation - while other git operations are in progress, so it is not - done by default. Pass this option if you want it, and only - when you know nobody else is creating new objects in the - repository at the same time (e.g. never use this option - in a cron script). - --aggressive:: Usually 'git-gc' runs very quickly while providing good disk space utilization and performance. This option will cause @@ -104,6 +100,10 @@ the value, the more time is spent optimizing the delta compression. See the documentation for the --window' option in linkgit:git-repack[1] for more details. This defaults to 10. +The optional configuration variable 'gc.pruneExpire' controls how old +the unreferenced loose objects have to be before they are pruned. The +default is "2 weeks ago". + See Also -------- linkgit:git-prune[1] diff --git a/Documentation/git-help.txt b/Documentation/git-help.txt index 0926dc12ba..be2ae53b90 100644 --- a/Documentation/git-help.txt +++ b/Documentation/git-help.txt @@ -33,17 +33,21 @@ OPTIONS option supersedes any other option. -i|--info:: - Use the 'info' program to display the manual page, instead of - the 'man' program that is used by default. + Display manual page for the command in the 'info' format. The + 'info' program will be used for that purpose. -m|--man:: - Use the 'man' program to display the manual page. This may be - used to override a value set in the 'help.format' - configuration variable. + Display manual page for the command in the 'man' format. This + option may be used to override a value set in the + 'help.format' configuration variable. ++ +By default the 'man' program will be used to display the manual page, +but the 'man.viewer' configuration variable may be used to choose +other display programs (see below). -w|--web:: - Use a web browser to display the HTML manual page, instead of - the 'man' program that is used by default. + Display manual page for the command in the 'web' (HTML) + format. A web browser will be used for that purpose. + The web browser can be specified using the configuration variable 'help.browser', or 'web.browser' if the former is not set. If none of @@ -54,6 +58,9 @@ linkgit:git-web--browse[1] for more information about this. CONFIGURATION VARIABLES ----------------------- +help.format +~~~~~~~~~~~ + If no command line option is passed, the 'help.format' configuration variable will be checked. The following values are supported for this variable; they make 'git-help' behave as their corresponding command @@ -61,15 +68,47 @@ line option: * "man" corresponds to '-m|--man', * "info" corresponds to '-i|--info', -* "web" or "html" correspond to '-w|--web', +* "web" or "html" correspond to '-w|--web'. + +help.browser, web.browser and browser.<tool>.path +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The 'help.browser', 'web.browser' and 'browser.<tool>.path' will also be checked if the 'web' format is chosen (either by command line option or configuration variable). See '-w|--web' in the OPTIONS section above and linkgit:git-web--browse[1]. -Note that these configuration variables should probably be set using -the '--global' flag, for example like this: +man.viewer +~~~~~~~~~~ + +The 'man.viewer' config variable will be checked if the 'man' format +is chosen. Only the following values are currently supported: + +* "man": use the 'man' program as usual, +* "woman": use 'emacsclient' to launch the "woman" mode in emacs +(this only works starting with emacsclient versions 22), +* "konqueror": use a man KIO slave in konqueror. + +Multiple values may be given to this configuration variable. Their +corresponding programs will be tried in the order listed in the +configuration file. + +For example, this configuration: + + [man] + viewer = konqueror + viewer = woman + +will try to use konqueror first. But this may fail (for example if +DISPLAY is not set) and in that case emacs' woman mode will be tried. + +If everything fails the 'man' program will be tried anyway. + +Note about git config --global +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Note that all these configuration variables should probably be set +using the '--global' flag, for example like this: ------------------------------------------------ $ git config --global help.format web diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt index 336d797e80..9d0a10c562 100644 --- a/Documentation/git-send-email.txt +++ b/Documentation/git-send-email.txt @@ -216,6 +216,9 @@ sendemail.chainreplyto:: sendemail.smtpserver:: Default SMTP server to use. +sendemail.smtpserverport:: + Default SMTP server port to use. + sendemail.smtpuser:: Default SMTP-AUTH username. diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt index b4d01605a5..41f9f63566 100644 --- a/Documentation/git-submodule.txt +++ b/Documentation/git-submodule.txt @@ -12,6 +12,7 @@ SYNOPSIS 'git-submodule' [--quiet] add [-b branch] [--] <repository> [<path>] 'git-submodule' [--quiet] status [--cached] [--] [<path>...] 'git-submodule' [--quiet] [init|update] [--] [<path>...] +'git-submodule' [--quiet] summary [--summary-limit <n>] [commit] [--] [<path>...] COMMANDS @@ -47,6 +48,11 @@ update:: checkout the commit specified in the index of the containing repository. This will make the submodules HEAD be detached. +summary:: + Show commit summary between the given commit (defaults to HEAD) and + working tree/index. For a submodule in question, a series of commits + in the submodule between the given super project commit and the + index or working tree (switched by --cached) are shown. OPTIONS ------- @@ -57,9 +63,16 @@ OPTIONS Branch of repository to add as submodule. --cached:: - Display the SHA-1 stored in the index, not the SHA-1 of the currently - checked out submodule commit. This option is only valid for the - status command. + This option is only valid for status and summary commands. These + commands typically use the commit found in the submodule HEAD, but + with this option, the commit stored in the index is used instead. + +-n, --summary-limit:: + This option is only valid for the summary command. + Limit the summary size (number of commits shown in total). + Giving 0 will disable the summary; a negative number means unlimted + (the default). This limit only applies to modified submodules. The + size is always limited to 1 for added/deleted/typechanged submodules. <path>:: Path to submodule(s). When specified this will restrict the command diff --git a/Documentation/git-web--browse.txt b/Documentation/git-web--browse.txt index df57d010e5..ddbae5b194 100644 --- a/Documentation/git-web--browse.txt +++ b/Documentation/git-web--browse.txt @@ -27,6 +27,8 @@ The following browsers (or commands) are currently supported: * dillo * open (this is the default under Mac OS X GUI) +Custom commands may also be specified. + OPTIONS ------- -b BROWSER|--browser=BROWSER:: @@ -43,16 +45,35 @@ OPTIONS CONFIGURATION VARIABLES ----------------------- +CONF.VAR (from -c option) and web.browser +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + The web browser can be specified using a configuration variable passed with the -c (or --config) command line option, or the 'web.browser' configuration variable if the former is not used. +browser.<tool>.path +~~~~~~~~~~~~~~~~~~~ + You can explicitly provide a full path to your preferred browser by setting the configuration variable 'browser.<tool>.path'. For example, you can configure the absolute path to firefox by setting 'browser.firefox.path'. Otherwise, 'git-web--browse' assumes the tool is available in PATH. +browser.<tool>.cmd +~~~~~~~~~~~~~~~~~~ + +When the browser, specified by options or configuration variables, is +not among the supported ones, then the corresponding +'browser.<tool>.cmd' configuration variable will be looked up. If this +variable exists then "git web--browse" will treat the specified tool +as a custom command and will use a shell eval to run the command with +the URLs passed as arguments. + +Note about git config --global +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Note that these configuration variables should probably be set using the '--global' flag, for example like this: diff --git a/Documentation/manpage-1.72.xsl b/Documentation/manpage-1.72.xsl index fe3cd72d6f..4065a3a27a 100644 --- a/Documentation/manpage-1.72.xsl +++ b/Documentation/manpage-1.72.xsl @@ -1,5 +1,9 @@ -<!-- callout.xsl: converts asciidoc callouts to man page format --> +<!-- Based on callouts.xsl. Fixes man page callouts for DocBook 1.72 XSL --> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + +<xsl:param name="man.output.quietly" select="1"/> +<xsl:param name="refentry.meta.get.quietly" select="1"/> + <xsl:template match="co"> <xsl:value-of select="concat('▓fB(',substring-after(@id,'-'),')▓fR')"/> </xsl:template> diff --git a/Documentation/merge-strategies.txt b/Documentation/merge-strategies.txt index 7df0266ba8..1276f858ad 100644 --- a/Documentation/merge-strategies.txt +++ b/Documentation/merge-strategies.txt @@ -33,3 +33,10 @@ ours:: merge is always the current branch head. It is meant to be used to supersede old development history of side branches. + +subtree:: + This is a modified recursive strategy. When merging trees A and + B, if B corresponds to a subtree of A, B is first adjusted to + match the tree structure of A, instead of reading the trees at + the same level. This adjustment is also done to the common + ancestor tree. @@ -148,6 +148,9 @@ all:: # is a simplified version of the merge sort used in glibc. This is # recommended if Git triggers O(n^2) behavior in your platform's qsort(). # +# Define NO_EXTERNAL_GREP if you don't want "git grep" to ever call +# your external grep (e.g., if your system lacks grep, if its grep is +# broken, or spawning external process is slower than built-in grep git has). GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE @$(SHELL_PATH) ./GIT-VERSION-GEN @@ -229,59 +232,84 @@ SPARSE_FLAGS = -D__BIG_ENDIAN__ -D__powerpc__ BASIC_CFLAGS = BASIC_LDFLAGS = -SCRIPT_SH = \ - git-bisect.sh \ - git-clone.sh \ - git-merge-one-file.sh git-mergetool.sh git-parse-remote.sh \ - git-pull.sh git-rebase.sh git-rebase--interactive.sh \ - git-repack.sh git-request-pull.sh \ - git-sh-setup.sh \ - git-am.sh \ - git-merge.sh git-merge-stupid.sh git-merge-octopus.sh \ - git-merge-resolve.sh \ - git-lost-found.sh git-quiltimport.sh git-submodule.sh \ - git-filter-branch.sh \ - git-stash.sh \ - git-web--browse.sh - -SCRIPT_PERL = \ - git-add--interactive.perl \ - git-archimport.perl git-cvsimport.perl git-relink.perl \ - git-cvsserver.perl git-cvsexportcommit.perl \ - git-send-email.perl git-svn.perl +SCRIPT_SH += git-am.sh +SCRIPT_SH += git-bisect.sh +SCRIPT_SH += git-clone.sh +SCRIPT_SH += git-filter-branch.sh +SCRIPT_SH += git-lost-found.sh +SCRIPT_SH += git-merge-octopus.sh +SCRIPT_SH += git-merge-one-file.sh +SCRIPT_SH += git-merge-resolve.sh +SCRIPT_SH += git-merge.sh +SCRIPT_SH += git-merge-stupid.sh +SCRIPT_SH += git-mergetool.sh +SCRIPT_SH += git-parse-remote.sh +SCRIPT_SH += git-pull.sh +SCRIPT_SH += git-quiltimport.sh +SCRIPT_SH += git-rebase--interactive.sh +SCRIPT_SH += git-rebase.sh +SCRIPT_SH += git-repack.sh +SCRIPT_SH += git-request-pull.sh +SCRIPT_SH += git-sh-setup.sh +SCRIPT_SH += git-stash.sh +SCRIPT_SH += git-submodule.sh +SCRIPT_SH += git-web--browse.sh + +SCRIPT_PERL += git-add--interactive.perl +SCRIPT_PERL += git-archimport.perl +SCRIPT_PERL += git-cvsexportcommit.perl +SCRIPT_PERL += git-cvsimport.perl +SCRIPT_PERL += git-cvsserver.perl +SCRIPT_PERL += git-relink.perl +SCRIPT_PERL += git-send-email.perl +SCRIPT_PERL += git-svn.perl SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH)) \ $(patsubst %.perl,%,$(SCRIPT_PERL)) \ git-instaweb -# ... and all the rest that could be moved out of bindir to gitexecdir -PROGRAMS = \ - git-fetch-pack$X \ - git-hash-object$X git-index-pack$X \ - git-fast-import$X \ - git-daemon$X \ - git-merge-index$X git-mktag$X git-mktree$X git-patch-id$X \ - git-receive-pack$X \ - git-send-pack$X git-shell$X \ - git-show-index$X \ - git-unpack-file$X \ - git-update-server-info$X \ - git-upload-pack$X \ - git-pack-redundant$X git-var$X \ - git-merge-tree$X git-imap-send$X \ - $(EXTRA_PROGRAMS) - # Empty... EXTRA_PROGRAMS = +# ... and all the rest that could be moved out of bindir to gitexecdir +PROGRAMS += $(EXTRA_PROGRAMS) +PROGRAMS += git-daemon$X +PROGRAMS += git-fast-import$X +PROGRAMS += git-fetch-pack$X +PROGRAMS += git-hash-object$X +PROGRAMS += git-imap-send$X +PROGRAMS += git-index-pack$X +PROGRAMS += git-merge-index$X +PROGRAMS += git-merge-tree$X +PROGRAMS += git-mktag$X +PROGRAMS += git-mktree$X +PROGRAMS += git-pack-redundant$X +PROGRAMS += git-patch-id$X +PROGRAMS += git-receive-pack$X +PROGRAMS += git-send-pack$X +PROGRAMS += git-shell$X +PROGRAMS += git-show-index$X +PROGRAMS += git-unpack-file$X +PROGRAMS += git-update-server-info$X +PROGRAMS += git-upload-pack$X +PROGRAMS += git-var$X + # List built-in command $C whose implementation cmd_$C() is not in # builtin-$C.o but is linked in as part of some other command. -BUILT_INS = \ - git-format-patch$X git-show$X git-whatchanged$X git-cherry$X \ - git-get-tar-commit-id$X git-init$X git-repo-config$X \ - git-fsck-objects$X git-cherry-pick$X git-peek-remote$X git-status$X \ - git-merge-subtree$X \ - $(patsubst builtin-%.o,git-%$X,$(BUILTIN_OBJS)) +BUILT_INS += $(patsubst builtin-%.o,git-%$X,$(BUILTIN_OBJS)) + +BUILT_INS += git-cherry-pick$X +BUILT_INS += git-cherry$X +BUILT_INS += git-format-patch$X +BUILT_INS += git-fsck-objects$X +BUILT_INS += git-get-tar-commit-id$X +BUILT_INS += git-init$X +BUILT_INS += git-merge-subtree$X +BUILT_INS += git-peek-remote$X +BUILT_INS += git-repo-config$X +BUILT_INS += git-show$X +BUILT_INS += git-status$X +BUILT_INS += git-whatchanged$X # what 'all' will build and 'install' will install, in gitexecdir ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS) @@ -302,113 +330,214 @@ export PERL_PATH LIB_FILE=libgit.a XDIFF_LIB=xdiff/lib.a -LIB_H = \ - archive.h blob.h cache.h cache-tree.h commit.h csum-file.h delta.h grep.h \ - diff.h object.h pack.h pkt-line.h quote.h refs.h list-objects.h sideband.h \ - run-command.h strbuf.h tag.h tree.h git-compat-util.h revision.h \ - tree-walk.h log-tree.h dir.h path-list.h unpack-trees.h builtin.h \ - utf8.h reflog-walk.h patch-ids.h attr.h decorate.h progress.h \ - mailmap.h remote.h parse-options.h transport.h diffcore.h hash.h ll-merge.h fsck.h \ - pack-revindex.h - -DIFF_OBJS = \ - diff.o diff-lib.o diffcore-break.o diffcore-order.o \ - diffcore-pickaxe.o diffcore-rename.o tree-diff.o combine-diff.o \ - diffcore-delta.o log-tree.o - -LIB_OBJS = \ - blob.o commit.o connect.o csum-file.o cache-tree.o base85.o \ - date.o diff-delta.o entry.o exec_cmd.o ident.o \ - pretty.o interpolate.o hash.o \ - lockfile.o \ - patch-ids.o \ - object.o pack-check.o pack-write.o patch-delta.o path.o pkt-line.o \ - sideband.o reachable.o reflog-walk.o \ - quote.o read-cache.o refs.o run-command.o dir.o \ - server-info.o setup.o sha1_file.o sha1_name.o strbuf.o \ - tag.o tree.o usage.o config.o environment.o ctype.o copy.o \ - revision.o pager.o tree-walk.o xdiff-interface.o \ - write_or_die.o trace.o list-objects.o grep.o match-trees.o \ - alloc.o merge-file.o path-list.o help.o unpack-trees.o $(DIFF_OBJS) \ - color.o wt-status.o archive-zip.o archive-tar.o shallow.o utf8.o \ - convert.o attr.o decorate.o progress.o mailmap.o symlinks.o remote.o \ - transport.o bundle.o walker.o parse-options.o ws.o archive.o branch.o \ - ll-merge.o alias.o fsck.o pack-revindex.o - -BUILTIN_OBJS = \ - builtin-add.o \ - builtin-annotate.o \ - builtin-apply.o \ - builtin-archive.o \ - builtin-blame.o \ - builtin-branch.o \ - builtin-bundle.o \ - builtin-cat-file.o \ - builtin-check-attr.o \ - builtin-checkout.o \ - builtin-checkout-index.o \ - builtin-check-ref-format.o \ - builtin-clean.o \ - builtin-commit.o \ - builtin-commit-tree.o \ - builtin-count-objects.o \ - builtin-describe.o \ - builtin-diff.o \ - builtin-diff-files.o \ - builtin-diff-index.o \ - builtin-diff-tree.o \ - builtin-fast-export.o \ - builtin-fetch.o \ - builtin-fetch-pack.o \ - builtin-fetch--tool.o \ - builtin-fmt-merge-msg.o \ - builtin-for-each-ref.o \ - builtin-fsck.o \ - builtin-gc.o \ - builtin-grep.o \ - builtin-init-db.o \ - builtin-log.o \ - builtin-ls-files.o \ - builtin-ls-tree.o \ - builtin-ls-remote.o \ - builtin-mailinfo.o \ - builtin-mailsplit.o \ - builtin-merge-base.o \ - builtin-merge-file.o \ - builtin-merge-ours.o \ - builtin-merge-recursive.o \ - builtin-mv.o \ - builtin-name-rev.o \ - builtin-pack-objects.o \ - builtin-prune.o \ - builtin-prune-packed.o \ - builtin-push.o \ - builtin-read-tree.o \ - builtin-reflog.o \ - builtin-remote.o \ - builtin-send-pack.o \ - builtin-config.o \ - builtin-rerere.o \ - builtin-reset.o \ - builtin-rev-list.o \ - builtin-rev-parse.o \ - builtin-revert.o \ - builtin-rm.o \ - builtin-shortlog.o \ - builtin-show-branch.o \ - builtin-stripspace.o \ - builtin-symbolic-ref.o \ - builtin-tag.o \ - builtin-tar-tree.o \ - builtin-unpack-objects.o \ - builtin-update-index.o \ - builtin-update-ref.o \ - builtin-upload-archive.o \ - builtin-verify-pack.o \ - builtin-verify-tag.o \ - builtin-write-tree.o \ - builtin-show-ref.o \ - builtin-pack-refs.o +LIB_H += archive.h +LIB_H += attr.h +LIB_H += blob.h +LIB_H += builtin.h +LIB_H += cache.h +LIB_H += cache-tree.h +LIB_H += commit.h +LIB_H += csum-file.h +LIB_H += decorate.h +LIB_H += delta.h +LIB_H += diffcore.h +LIB_H += diff.h +LIB_H += dir.h +LIB_H += fsck.h +LIB_H += git-compat-util.h +LIB_H += grep.h +LIB_H += hash.h +LIB_H += list-objects.h +LIB_H += ll-merge.h +LIB_H += log-tree.h +LIB_H += mailmap.h +LIB_H += object.h +LIB_H += pack.h +LIB_H += pack-revindex.h +LIB_H += parse-options.h +LIB_H += patch-ids.h +LIB_H += path-list.h +LIB_H += pkt-line.h +LIB_H += progress.h +LIB_H += quote.h +LIB_H += reflog-walk.h +LIB_H += refs.h +LIB_H += remote.h +LIB_H += revision.h +LIB_H += run-command.h +LIB_H += sideband.h +LIB_H += strbuf.h +LIB_H += tag.h +LIB_H += transport.h +LIB_H += tree.h +LIB_H += tree-walk.h +LIB_H += unpack-trees.h +LIB_H += utf8.h + +LIB_OBJS += alias.o +LIB_OBJS += alloc.o +LIB_OBJS += archive.o +LIB_OBJS += archive-tar.o +LIB_OBJS += archive-zip.o +LIB_OBJS += attr.o +LIB_OBJS += base85.o +LIB_OBJS += blob.o +LIB_OBJS += branch.o +LIB_OBJS += bundle.o +LIB_OBJS += cache-tree.o +LIB_OBJS += color.o +LIB_OBJS += combine-diff.o +LIB_OBJS += commit.o +LIB_OBJS += config.o +LIB_OBJS += connect.o +LIB_OBJS += convert.o +LIB_OBJS += copy.o +LIB_OBJS += csum-file.o +LIB_OBJS += ctype.o +LIB_OBJS += date.o +LIB_OBJS += decorate.o +LIB_OBJS += diffcore-break.o +LIB_OBJS += diffcore-delta.o +LIB_OBJS += diffcore-order.o +LIB_OBJS += diffcore-pickaxe.o +LIB_OBJS += diffcore-rename.o +LIB_OBJS += diff-delta.o +LIB_OBJS += diff-lib.o +LIB_OBJS += diff.o +LIB_OBJS += dir.o +LIB_OBJS += entry.o +LIB_OBJS += environment.o +LIB_OBJS += exec_cmd.o +LIB_OBJS += fsck.o +LIB_OBJS += grep.o +LIB_OBJS += hash.o +LIB_OBJS += help.o +LIB_OBJS += ident.o +LIB_OBJS += interpolate.o +LIB_OBJS += list-objects.o +LIB_OBJS += ll-merge.o +LIB_OBJS += lockfile.o +LIB_OBJS += log-tree.o +LIB_OBJS += mailmap.o +LIB_OBJS += match-trees.o +LIB_OBJS += merge-file.o +LIB_OBJS += object.o +LIB_OBJS += pack-check.o +LIB_OBJS += pack-revindex.o +LIB_OBJS += pack-write.o +LIB_OBJS += pager.o +LIB_OBJS += parse-options.o +LIB_OBJS += patch-delta.o +LIB_OBJS += patch-ids.o +LIB_OBJS += path-list.o +LIB_OBJS += path.o +LIB_OBJS += pkt-line.o +LIB_OBJS += pretty.o +LIB_OBJS += progress.o +LIB_OBJS += quote.o +LIB_OBJS += reachable.o +LIB_OBJS += read-cache.o +LIB_OBJS += reflog-walk.o +LIB_OBJS += refs.o +LIB_OBJS += remote.o +LIB_OBJS += revision.o +LIB_OBJS += run-command.o +LIB_OBJS += server-info.o +LIB_OBJS += setup.o +LIB_OBJS += sha1_file.o +LIB_OBJS += sha1_name.o +LIB_OBJS += shallow.o +LIB_OBJS += sideband.o +LIB_OBJS += strbuf.o +LIB_OBJS += symlinks.o +LIB_OBJS += tag.o +LIB_OBJS += trace.o +LIB_OBJS += transport.o +LIB_OBJS += tree-diff.o +LIB_OBJS += tree.o +LIB_OBJS += tree-walk.o +LIB_OBJS += unpack-trees.o +LIB_OBJS += usage.o +LIB_OBJS += utf8.o +LIB_OBJS += walker.o +LIB_OBJS += write_or_die.o +LIB_OBJS += ws.o +LIB_OBJS += wt-status.o +LIB_OBJS += xdiff-interface.o + +BUILTIN_OBJS += builtin-add.o +BUILTIN_OBJS += builtin-annotate.o +BUILTIN_OBJS += builtin-apply.o +BUILTIN_OBJS += builtin-archive.o +BUILTIN_OBJS += builtin-blame.o +BUILTIN_OBJS += builtin-branch.o +BUILTIN_OBJS += builtin-bundle.o +BUILTIN_OBJS += builtin-cat-file.o +BUILTIN_OBJS += builtin-check-attr.o +BUILTIN_OBJS += builtin-check-ref-format.o +BUILTIN_OBJS += builtin-checkout-index.o +BUILTIN_OBJS += builtin-checkout.o +BUILTIN_OBJS += builtin-clean.o +BUILTIN_OBJS += builtin-commit-tree.o +BUILTIN_OBJS += builtin-commit.o +BUILTIN_OBJS += builtin-config.o +BUILTIN_OBJS += builtin-count-objects.o +BUILTIN_OBJS += builtin-describe.o +BUILTIN_OBJS += builtin-diff-files.o +BUILTIN_OBJS += builtin-diff-index.o +BUILTIN_OBJS += builtin-diff-tree.o +BUILTIN_OBJS += builtin-diff.o +BUILTIN_OBJS += builtin-fast-export.o +BUILTIN_OBJS += builtin-fetch--tool.o +BUILTIN_OBJS += builtin-fetch-pack.o +BUILTIN_OBJS += builtin-fetch.o +BUILTIN_OBJS += builtin-fmt-merge-msg.o +BUILTIN_OBJS += builtin-for-each-ref.o +BUILTIN_OBJS += builtin-fsck.o +BUILTIN_OBJS += builtin-gc.o +BUILTIN_OBJS += builtin-grep.o +BUILTIN_OBJS += builtin-init-db.o +BUILTIN_OBJS += builtin-log.o +BUILTIN_OBJS += builtin-ls-files.o +BUILTIN_OBJS += builtin-ls-remote.o +BUILTIN_OBJS += builtin-ls-tree.o +BUILTIN_OBJS += builtin-mailinfo.o +BUILTIN_OBJS += builtin-mailsplit.o +BUILTIN_OBJS += builtin-merge-base.o +BUILTIN_OBJS += builtin-merge-file.o +BUILTIN_OBJS += builtin-merge-ours.o +BUILTIN_OBJS += builtin-merge-recursive.o +BUILTIN_OBJS += builtin-mv.o +BUILTIN_OBJS += builtin-name-rev.o +BUILTIN_OBJS += builtin-pack-objects.o +BUILTIN_OBJS += builtin-pack-refs.o +BUILTIN_OBJS += builtin-prune-packed.o +BUILTIN_OBJS += builtin-prune.o +BUILTIN_OBJS += builtin-push.o +BUILTIN_OBJS += builtin-read-tree.o +BUILTIN_OBJS += builtin-reflog.o +BUILTIN_OBJS += builtin-remote.o +BUILTIN_OBJS += builtin-rerere.o +BUILTIN_OBJS += builtin-reset.o +BUILTIN_OBJS += builtin-rev-list.o +BUILTIN_OBJS += builtin-rev-parse.o +BUILTIN_OBJS += builtin-revert.o +BUILTIN_OBJS += builtin-rm.o +BUILTIN_OBJS += builtin-send-pack.o +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-symbolic-ref.o +BUILTIN_OBJS += builtin-tag.o +BUILTIN_OBJS += builtin-tar-tree.o +BUILTIN_OBJS += builtin-unpack-objects.o +BUILTIN_OBJS += builtin-update-index.o +BUILTIN_OBJS += builtin-update-ref.o +BUILTIN_OBJS += builtin-upload-archive.o +BUILTIN_OBJS += builtin-verify-pack.o +BUILTIN_OBJS += builtin-verify-tag.o +BUILTIN_OBJS += builtin-write-tree.o GITLIBS = $(LIB_FILE) $(XDIFF_LIB) EXTLIBS = @@ -760,6 +889,9 @@ endif ifdef DIR_HAS_BSD_GROUP_SEMANTICS COMPAT_CFLAGS += -DDIR_HAS_BSD_GROUP_SEMANTICS endif +ifdef NO_EXTERNAL_GREP + BASIC_CFLAGS += -DNO_EXTERNAL_GREP +endif ifeq ($(TCLTK_PATH),) NO_TCLTK=NoThanks @@ -867,6 +999,7 @@ common-cmds.h: $(wildcard Documentation/git-*.txt) $(patsubst %.sh,%,$(SCRIPT_SH)) : % : %.sh $(QUIET_GEN)$(RM) $@ $@+ && \ sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ + -e 's|@SHELL_PATH@|$(SHELL_PATH_SQ)|' \ -e 's|@@PERL@@|$(PERL_PATH_SQ)|g' \ -e 's/@@GIT_VERSION@@/$(GIT_VERSION)/g' \ -e 's/@@NO_CURL@@/$(NO_CURL)/g' \ diff --git a/builtin-fetch-pack.c b/builtin-fetch-pack.c index 7b28024224..65350ca522 100644 --- a/builtin-fetch-pack.c +++ b/builtin-fetch-pack.c @@ -26,6 +26,8 @@ static const char fetch_pack_usage[] = #define SEEN (1U << 3) #define POPPED (1U << 4) +static int marked; + /* * After sending this many "have"s if we do not get any new ACK , we * give up traversing our history. @@ -61,6 +63,16 @@ static int rev_list_insert_ref(const char *path, const unsigned char *sha1, int return 0; } +static int clear_marks(const char *path, const unsigned char *sha1, int flag, void *cb_data) +{ + struct object *o = deref_tag(parse_object(sha1), path, 0); + + if (o && o->type == OBJ_COMMIT) + clear_commit_marks((struct commit *)o, + COMMON | COMMON_REF | SEEN | POPPED); + return 0; +} + /* This function marks a rev and its ancestors as common. In some cases, it is desirable to mark only the ancestors (for example @@ -153,6 +165,10 @@ static int find_common(int fd[2], unsigned char *result_sha1, unsigned in_vain = 0; int got_continue = 0; + if (marked) + for_each_ref(clear_marks, NULL); + marked = 1; + for_each_ref(rev_list_insert_ref, NULL); fetching = 0; diff --git a/builtin-fetch.c b/builtin-fetch.c index 55f611e3c2..a11548c894 100644 --- a/builtin-fetch.c +++ b/builtin-fetch.c @@ -40,6 +40,8 @@ static struct option builtin_fetch_options[] = { "force overwrite of local branch"), OPT_SET_INT('t', "tags", &tags, "fetch all tags and associated objects", TAGS_SET), + OPT_SET_INT('n', NULL, &tags, + "do not fetch all tags (--no-tags)", TAGS_UNSET), OPT_BOOLEAN('k', "keep", &keep, "keep downloaded pack"), OPT_BOOLEAN('u', "update-head-ok", &update_head_ok, "allow updating of HEAD ref"), @@ -650,5 +652,6 @@ int cmd_fetch(int argc, const char **argv, const char *prefix) signal(SIGINT, unlock_pack_on_signal); atexit(unlock_pack); - return do_fetch(transport, parse_ref_spec(ref_nr, refs), ref_nr); + return do_fetch(transport, + parse_fetch_refspec(ref_nr, refs), ref_nr); } diff --git a/builtin-gc.c b/builtin-gc.c index 045bf0e487..509bb9c6b3 100644 --- a/builtin-gc.c +++ b/builtin-gc.c @@ -26,12 +26,13 @@ static int pack_refs = 1; static int aggressive_window = -1; static int gc_auto_threshold = 6700; static int gc_auto_pack_limit = 20; +static char *prune_expire = "2.weeks.ago"; #define MAX_ADD 10 static const char *argv_pack_refs[] = {"pack-refs", "--all", "--prune", NULL}; static const char *argv_reflog[] = {"reflog", "expire", "--all", NULL}; static const char *argv_repack[MAX_ADD] = {"repack", "-d", "-l", NULL}; -static const char *argv_prune[] = {"prune", NULL}; +static const char *argv_prune[] = {"prune", "--expire", NULL, NULL}; static const char *argv_rerere[] = {"rerere", "gc", NULL}; static int gc_config(const char *var, const char *value) @@ -55,6 +56,17 @@ static int gc_config(const char *var, const char *value) gc_auto_pack_limit = git_config_int(var, value); return 0; } + if (!strcmp(var, "gc.pruneexpire")) { + if (!value) + return config_error_nonbool(var); + if (strcmp(value, "now")) { + unsigned long now = approxidate("now"); + if (approxidate(value) >= now) + return error("Invalid %s: '%s'", var, value); + } + prune_expire = xstrdup(value); + return 0; + } return git_default_config(var, value); } @@ -148,10 +160,10 @@ static int too_many_packs(void) static int need_to_gc(void) { /* - * Setting gc.auto and gc.autopacklimit to 0 or negative can - * disable the automatic gc. + * Setting gc.auto to 0 or negative can disable the + * automatic gc. */ - if (gc_auto_threshold <= 0 && gc_auto_pack_limit <= 0) + if (gc_auto_threshold <= 0) return 0; /* @@ -234,7 +246,8 @@ int cmd_gc(int argc, const char **argv, const char *prefix) if (run_command_v_opt(argv_repack, RUN_GIT_CMD)) return error(FAILED_RUN, argv_repack[0]); - if (prune && run_command_v_opt(argv_prune, RUN_GIT_CMD)) + argv_prune[2] = prune_expire; + if (run_command_v_opt(argv_prune, RUN_GIT_CMD)) return error(FAILED_RUN, argv_prune[0]); if (run_command_v_opt(argv_rerere, RUN_GIT_CMD)) diff --git a/builtin-grep.c b/builtin-grep.c index f4f4ecb11b..ef299108f5 100644 --- a/builtin-grep.c +++ b/builtin-grep.c @@ -12,6 +12,14 @@ #include "builtin.h" #include "grep.h" +#ifndef NO_EXTERNAL_GREP +#ifdef __unix__ +#define NO_EXTERNAL_GREP 0 +#else +#define NO_EXTERNAL_GREP 1 +#endif +#endif + /* * git grep pathspecs are somewhat different from diff-tree pathspecs; * pathname wildcards are allowed. @@ -153,7 +161,7 @@ static int grep_file(struct grep_opt *opt, const char *filename) return i; } -#ifdef __unix__ +#if !NO_EXTERNAL_GREP static int exec_grep(int argc, const char **argv) { pid_t pid; @@ -372,7 +380,7 @@ static int grep_cache(struct grep_opt *opt, const char **paths, int cached) int nr; read_cache(); -#ifdef __unix__ +#if !NO_EXTERNAL_GREP /* * Use the external "grep" command for the case where * we grep through the checked-out files. It tends to diff --git a/builtin-log.c b/builtin-log.c index d983cbc7bc..5c00725f03 100644 --- a/builtin-log.c +++ b/builtin-log.c @@ -662,6 +662,7 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout, int i; const char *encoding = "utf-8"; struct diff_options opts; + int need_8bit_cte = 0; if (rev->commit_format != CMIT_FMT_EMAIL) die("Cover letter needs email format"); @@ -672,7 +673,8 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout, head_sha1 = sha1_to_hex(head->object.sha1); - log_write_email_headers(rev, head_sha1, &subject_start, &extra_headers); + log_write_email_headers(rev, head_sha1, &subject_start, &extra_headers, + &need_8bit_cte); committer = git_committer_info(0); @@ -681,7 +683,7 @@ static void make_cover_letter(struct rev_info *rev, int use_stdout, pp_user_info(NULL, CMIT_FMT_EMAIL, &sb, committer, DATE_RFC2822, encoding); pp_title_line(CMIT_FMT_EMAIL, &msg, &sb, subject_start, extra_headers, - encoding, 0); + encoding, need_8bit_cte); pp_remainder(CMIT_FMT_EMAIL, &msg, &sb, 0); printf("%s\n", sb.buf); diff --git a/builtin-merge-file.c b/builtin-merge-file.c index adce6d4635..3605960c2d 100644 --- a/builtin-merge-file.c +++ b/builtin-merge-file.c @@ -57,7 +57,8 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix) if (!f) ret = error("Could not open %s for writing", filename); - else if (fwrite(result.ptr, result.size, 1, f) != 1) + else if (result.size && + fwrite(result.ptr, result.size, 1, f) != 1) ret = error("Could not write to %s", filename); else if (fclose(f)) ret = error("Could not close %s", filename); diff --git a/builtin-merge-recursive.c b/builtin-merge-recursive.c index 5c7fbb2599..910c0d20e7 100644 --- a/builtin-merge-recursive.c +++ b/builtin-merge-recursive.c @@ -668,9 +668,20 @@ static struct merge_file_info merge_file(struct diff_filespec *o, if (!sha_eq(a->sha1, o->sha1) && !sha_eq(b->sha1, o->sha1)) result.merge = 1; - result.mode = a->mode == o->mode ? b->mode: a->mode; + /* + * Merge modes + */ + if (a->mode == b->mode || a->mode == o->mode) + result.mode = b->mode; + else { + result.mode = a->mode; + if (b->mode != o->mode) { + result.clean = 0; + result.merge = 1; + } + } - if (sha_eq(a->sha1, o->sha1)) + if (sha_eq(a->sha1, b->sha1) || sha_eq(a->sha1, o->sha1)) hashcpy(result.sha, b->sha1); else if (sha_eq(b->sha1, o->sha1)) hashcpy(result.sha, a->sha1); diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c index f504cff756..777f272668 100644 --- a/builtin-pack-objects.c +++ b/builtin-pack-objects.c @@ -454,6 +454,7 @@ static void write_pack_file(void) struct pack_header hdr; int do_progress = progress >> pack_to_stdout; uint32_t nr_remaining = nr_result; + time_t last_mtime = 0; if (do_progress) progress_state = start_progress("Writing objects", nr_result); @@ -504,6 +505,7 @@ static void write_pack_file(void) if (!pack_to_stdout) { mode_t mode = umask(0); + struct stat st; char *idx_tmp_name, tmpname[PATH_MAX]; umask(mode); @@ -511,6 +513,7 @@ static void write_pack_file(void) idx_tmp_name = write_idx_file(NULL, written_list, nr_written, sha1); + snprintf(tmpname, sizeof(tmpname), "%s-%s.pack", base_name, sha1_to_hex(sha1)); if (adjust_perm(pack_tmp_name, mode)) @@ -519,6 +522,28 @@ static void write_pack_file(void) if (rename(pack_tmp_name, tmpname)) die("unable to rename temporary pack file: %s", strerror(errno)); + + /* + * Packs are runtime accessed in their mtime + * order since newer packs are more likely to contain + * younger objects. So if we are creating multiple + * packs then we should modify the mtime of later ones + * to preserve this property. + */ + if (stat(tmpname, &st) < 0) { + warning("failed to stat %s: %s", + tmpname, strerror(errno)); + } else if (!last_mtime) { + last_mtime = st.st_mtime; + } else { + struct utimbuf utb; + utb.actime = st.st_atime; + utb.modtime = --last_mtime; + if (utime(tmpname, &utb) < 0) + warning("failed utime() on %s: %s", + tmpname, strerror(errno)); + } + snprintf(tmpname, sizeof(tmpname), "%s-%s.idx", base_name, sha1_to_hex(sha1)); if (adjust_perm(idx_tmp_name, mode)) @@ -527,6 +552,7 @@ static void write_pack_file(void) if (rename(idx_tmp_name, tmpname)) die("unable to rename temporary index file: %s", strerror(errno)); + free(idx_tmp_name); free(pack_tmp_name); puts(sha1_to_hex(sha1)); diff --git a/builtin-read-tree.c b/builtin-read-tree.c index 160456dad1..e9cfd2bbc5 100644 --- a/builtin-read-tree.c +++ b/builtin-read-tree.c @@ -13,16 +13,15 @@ #include "dir.h" #include "builtin.h" -#define MAX_TREES 8 static int nr_trees; -static struct tree *trees[MAX_TREES]; +static struct tree *trees[MAX_UNPACK_TREES]; static int list_tree(unsigned char *sha1) { struct tree *tree; - if (nr_trees >= MAX_TREES) - die("I cannot read more than %d trees", MAX_TREES); + if (nr_trees >= MAX_UNPACK_TREES) + die("I cannot read more than %d trees", MAX_UNPACK_TREES); tree = parse_tree_indirect(sha1); if (!tree) return -1; @@ -97,7 +96,7 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix) { int i, newfd, stage = 0; unsigned char sha1[20]; - struct tree_desc t[MAX_TREES]; + struct tree_desc t[MAX_UNPACK_TREES]; struct unpack_trees_options opts; memset(&opts, 0, sizeof(opts)); diff --git a/builtin-remote.c b/builtin-remote.c index 24e692953b..9c15173032 100644 --- a/builtin-remote.c +++ b/builtin-remote.c @@ -207,7 +207,10 @@ static int handle_one_branch(const char *refname, if (!remote_find_tracking(states->remote, &refspec)) { struct path_list_item *item; const char *name = skip_prefix(refspec.src, "refs/heads/"); - if (unsorted_path_list_has_path(&states->tracked, name) || + /* symbolic refs pointing nowhere were handled already */ + if ((flags & REF_ISSYMREF) || + unsorted_path_list_has_path(&states->tracked, + name) || unsorted_path_list_has_path(&states->new, name)) return 0; diff --git a/builtin-rev-list.c b/builtin-rev-list.c index d0a1416921..edc0bd35bb 100644 --- a/builtin-rev-list.c +++ b/builtin-rev-list.c @@ -33,6 +33,7 @@ static const char rev_list_usage[] = " ordering output:\n" " --topo-order\n" " --date-order\n" +" --reverse\n" " formatting output:\n" " --parents\n" " --objects | --objects-edge\n" diff --git a/builtin-send-pack.c b/builtin-send-pack.c index 930e0fb3fd..bb9c33a650 100644 --- a/builtin-send-pack.c +++ b/builtin-send-pack.c @@ -537,7 +537,7 @@ static void verify_remote_names(int nr_heads, const char **heads) int i; for (i = 0; i < nr_heads; i++) { - const char *remote = strchr(heads[i], ':'); + const char *remote = strrchr(heads[i], ':'); remote = remote ? (remote + 1) : heads[i]; switch (check_ref_format(remote)) { diff --git a/builtin-shortlog.c b/builtin-shortlog.c index b22b0edd65..bd795b1db7 100644 --- a/builtin-shortlog.c +++ b/builtin-shortlog.c @@ -229,7 +229,9 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix) { struct shortlog log; struct rev_info rev; + int nongit; + prefix = setup_git_directory_gently(&nongit); shortlog_init(&log); /* since -n is a shadowed rev argument, parse our args first */ @@ -259,7 +261,7 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix) die ("unrecognized argument: %s", argv[1]); /* assume HEAD if from a tty */ - if (!rev.pending.nr && isatty(0)) + if (!nongit && !rev.pending.nr && isatty(0)) add_head_to_pending(&rev); if (rev.pending.nr == 0) { read_from_stdin(&log); @@ -70,7 +70,7 @@ extern void pretty_print_commit(enum cmit_fmt fmt, const struct commit*, struct strbuf *, int abbrev, const char *subject, const char *after_subject, enum date_mode, - int non_ascii_present); + int need_8bit_cte); void pp_user_info(const char *what, enum cmit_fmt fmt, struct strbuf *sb, const char *line, enum date_mode dmode, const char *encoding); @@ -80,7 +80,7 @@ void pp_title_line(enum cmit_fmt fmt, const char *subject, const char *after_subject, const char *encoding, - int plain_non_ascii); + int need_8bit_cte); void pp_remainder(enum cmit_fmt fmt, const char **msg_p, struct strbuf *sb, diff --git a/config.mak.in b/config.mak.in index 8e1cd5f03d..7868dfd93a 100644 --- a/config.mak.in +++ b/config.mak.in @@ -46,4 +46,5 @@ NO_MKDTEMP=@NO_MKDTEMP@ NO_ICONV=@NO_ICONV@ OLD_ICONV=@OLD_ICONV@ NO_DEFLATE_BOUND=@NO_DEFLATE_BOUND@ +FREAD_READS_DIRECTORIES=@FREAD_READS_DIRECTORIES@ SNPRINTF_RETURNS_BOGUS=@SNPRINTF_RETURNS_BOGUS@ diff --git a/configure.ac b/configure.ac index 287149d304..82584e9153 100644 --- a/configure.ac +++ b/configure.ac @@ -327,6 +327,26 @@ else fi AC_SUBST(NO_C99_FORMAT) # +# Define FREAD_READS_DIRECTORIES if your are on a system which succeeds +# when attempting to read from an fopen'ed directory. +AC_CACHE_CHECK([whether system succeeds to read fopen'ed directory], + [ac_cv_fread_reads_directories], +[ +AC_RUN_IFELSE( + [AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT], + [[char c; + FILE *f = fopen(".", "r"); + return f && fread(&c, 1, 1, f)]])], + [ac_cv_fread_reads_directories=no], + [ac_cv_fread_reads_directories=yes]) +]) +if test $ac_cv_fread_reads_directories = yes; then + FREAD_READS_DIRECTORIES=UnfortunatelyYes +else + FREAD_READS_DIRECTORIES= +fi +AC_SUBST(FREAD_READS_DIRECTORIES) +# # Define SNPRINTF_RETURNS_BOGUS if your are on a system which snprintf() # or vsnprintf() return -1 instead of number of characters which would # have been written to the final string if enough space had been available. diff --git a/contrib/examples/git-rerere.perl b/contrib/examples/git-rerere.perl new file mode 100755 index 0000000000..4f692091e7 --- /dev/null +++ b/contrib/examples/git-rerere.perl @@ -0,0 +1,284 @@ +#!/usr/bin/perl +# +# REuse REcorded REsolve. This tool records a conflicted automerge +# result and its hand resolution, and helps to resolve future +# automerge that results in the same conflict. +# +# To enable this feature, create a directory 'rr-cache' under your +# .git/ directory. + +use Digest; +use File::Path; +use File::Copy; + +my $git_dir = $::ENV{GIT_DIR} || ".git"; +my $rr_dir = "$git_dir/rr-cache"; +my $merge_rr = "$git_dir/rr-cache/MERGE_RR"; + +my %merge_rr = (); + +sub read_rr { + if (!-f $merge_rr) { + %merge_rr = (); + return; + } + my $in; + local $/ = "\0"; + open $in, "<$merge_rr" or die "$!: $merge_rr"; + while (<$in>) { + chomp; + my ($name, $path) = /^([0-9a-f]{40})\t(.*)$/s; + $merge_rr{$path} = $name; + } + close $in; +} + +sub write_rr { + my $out; + open $out, ">$merge_rr" or die "$!: $merge_rr"; + for my $path (sort keys %merge_rr) { + my $name = $merge_rr{$path}; + print $out "$name\t$path\0"; + } + close $out; +} + +sub compute_conflict_name { + my ($path) = @_; + my @side = (); + my $in; + open $in, "<$path" or die "$!: $path"; + + my $sha1 = Digest->new("SHA-1"); + my $hunk = 0; + while (<$in>) { + if (/^<<<<<<< .*/) { + $hunk++; + @side = ([], undef); + } + elsif (/^=======$/) { + $side[1] = []; + } + elsif (/^>>>>>>> .*/) { + my ($one, $two); + $one = join('', @{$side[0]}); + $two = join('', @{$side[1]}); + if ($two le $one) { + ($one, $two) = ($two, $one); + } + $sha1->add($one); + $sha1->add("\0"); + $sha1->add($two); + $sha1->add("\0"); + @side = (); + } + elsif (@side == 0) { + next; + } + elsif (defined $side[1]) { + push @{$side[1]}, $_; + } + else { + push @{$side[0]}, $_; + } + } + close $in; + return ($sha1->hexdigest, $hunk); +} + +sub record_preimage { + my ($path, $name) = @_; + my @side = (); + my ($in, $out); + open $in, "<$path" or die "$!: $path"; + open $out, ">$name" or die "$!: $name"; + + while (<$in>) { + if (/^<<<<<<< .*/) { + @side = ([], undef); + } + elsif (/^=======$/) { + $side[1] = []; + } + elsif (/^>>>>>>> .*/) { + my ($one, $two); + $one = join('', @{$side[0]}); + $two = join('', @{$side[1]}); + if ($two le $one) { + ($one, $two) = ($two, $one); + } + print $out "<<<<<<<\n"; + print $out $one; + print $out "=======\n"; + print $out $two; + print $out ">>>>>>>\n"; + @side = (); + } + elsif (@side == 0) { + print $out $_; + } + elsif (defined $side[1]) { + push @{$side[1]}, $_; + } + else { + push @{$side[0]}, $_; + } + } + close $out; + close $in; +} + +sub find_conflict { + my $in; + local $/ = "\0"; + my $pid = open($in, '-|'); + die "$!" unless defined $pid; + if (!$pid) { + exec(qw(git ls-files -z -u)) or die "$!: ls-files"; + } + my %path = (); + my @path = (); + while (<$in>) { + chomp; + my ($mode, $sha1, $stage, $path) = + /^([0-7]+) ([0-9a-f]{40}) ([123])\t(.*)$/s; + $path{$path} |= (1 << $stage); + } + close $in; + while (my ($path, $status) = each %path) { + if ($status == 14) { push @path, $path; } + } + return @path; +} + +sub merge { + my ($name, $path) = @_; + record_preimage($path, "$rr_dir/$name/thisimage"); + unless (system('git', 'merge-file', map { "$rr_dir/$name/${_}image" } + qw(this pre post))) { + my $in; + open $in, "<$rr_dir/$name/thisimage" or + die "$!: $name/thisimage"; + my $out; + open $out, ">$path" or die "$!: $path"; + while (<$in>) { print $out $_; } + close $in; + close $out; + return 1; + } + return 0; +} + +sub garbage_collect_rerere { + # We should allow specifying these from the command line and + # that is why the caller gives @ARGV to us, but I am lazy. + + my $cutoff_noresolve = 15; # two weeks + my $cutoff_resolve = 60; # two months + my @to_remove; + while (<$rr_dir/*/preimage>) { + my ($dir) = /^(.*)\/preimage$/; + my $cutoff = ((-f "$dir/postimage") + ? $cutoff_resolve + : $cutoff_noresolve); + my $age = -M "$_"; + if ($cutoff <= $age) { + push @to_remove, $dir; + } + } + if (@to_remove) { + rmtree(\@to_remove); + } +} + +-d "$rr_dir" || exit(0); + +read_rr(); + +if (@ARGV) { + my $arg = shift @ARGV; + if ($arg eq 'clear') { + for my $path (keys %merge_rr) { + my $name = $merge_rr{$path}; + if (-d "$rr_dir/$name" && + ! -f "$rr_dir/$name/postimage") { + rmtree(["$rr_dir/$name"]); + } + } + unlink $merge_rr; + } + elsif ($arg eq 'status') { + for my $path (keys %merge_rr) { + print $path, "\n"; + } + } + elsif ($arg eq 'diff') { + for my $path (keys %merge_rr) { + my $name = $merge_rr{$path}; + system('diff', ((@ARGV == 0) ? ('-u') : @ARGV), + '-L', "a/$path", '-L', "b/$path", + "$rr_dir/$name/preimage", $path); + } + } + elsif ($arg eq 'gc') { + garbage_collect_rerere(@ARGV); + } + else { + die "$0 unknown command: $arg\n"; + } + exit 0; +} + +my %conflict = map { $_ => 1 } find_conflict(); + +# MERGE_RR records paths with conflicts immediately after merge +# failed. Some of the conflicted paths might have been hand resolved +# in the working tree since then, but the initial run would catch all +# and register their preimages. + +for my $path (keys %conflict) { + # This path has conflict. If it is not recorded yet, + # record the pre-image. + if (!exists $merge_rr{$path}) { + my ($name, $hunk) = compute_conflict_name($path); + next unless ($hunk); + $merge_rr{$path} = $name; + if (! -d "$rr_dir/$name") { + mkpath("$rr_dir/$name", 0, 0777); + print STDERR "Recorded preimage for '$path'\n"; + record_preimage($path, "$rr_dir/$name/preimage"); + } + } +} + +# Now some of the paths that had conflicts earlier might have been +# hand resolved. Others may be similar to a conflict already that +# was resolved before. + +for my $path (keys %merge_rr) { + my $name = $merge_rr{$path}; + + # We could resolve this automatically if we have images. + if (-f "$rr_dir/$name/preimage" && + -f "$rr_dir/$name/postimage") { + if (merge($name, $path)) { + print STDERR "Resolved '$path' using previous resolution.\n"; + # Then we do not have to worry about this path + # anymore. + delete $merge_rr{$path}; + next; + } + } + + # Let's see if we have resolved it. + (undef, my $hunk) = compute_conflict_name($path); + next if ($hunk); + + print STDERR "Recorded resolution for '$path'.\n"; + copy($path, "$rr_dir/$name/postimage"); + # And we do not have to worry about this path anymore. + delete $merge_rr{$path}; +} + +# Write out the rest. +write_rr(); diff --git a/contrib/workdir/git-new-workdir b/contrib/workdir/git-new-workdir index 2838546d16..7959eab902 100755 --- a/contrib/workdir/git-new-workdir +++ b/contrib/workdir/git-new-workdir @@ -63,7 +63,7 @@ mkdir -p "$new_workdir/.git" || die "unable to create \"$new_workdir\"!" # create the links to the original repo. explictly exclude index, HEAD and # logs/HEAD from the list since they are purely related to the current working # directory, and should not be shared. -for x in config refs logs/refs objects info hooks packed-refs remotes rr-cache +for x in config refs logs/refs objects info hooks packed-refs remotes rr-cache svn do case $x in */*) @@ -256,40 +256,41 @@ static int count_lines(const char *data, int size) return count; } -static void print_line_count(int count) +static void print_line_count(FILE *file, int count) { switch (count) { case 0: - printf("0,0"); + fprintf(file, "0,0"); break; case 1: - printf("1"); + fprintf(file, "1"); break; default: - printf("1,%d", count); + fprintf(file, "1,%d", count); break; } } -static void copy_file_with_prefix(int prefix, const char *data, int size, +static void copy_file_with_prefix(FILE *file, + int prefix, const char *data, int size, const char *set, const char *reset) { int ch, nl_just_seen = 1; while (0 < size--) { ch = *data++; if (nl_just_seen) { - fputs(set, stdout); - putchar(prefix); + fputs(set, file); + putc(prefix, file); } if (ch == '\n') { nl_just_seen = 1; - fputs(reset, stdout); + fputs(reset, file); } else nl_just_seen = 0; - putchar(ch); + putc(ch, file); } if (!nl_just_seen) - printf("%s\n\\ No newline at end of file\n", reset); + fprintf(file, "%s\n\\ No newline at end of file\n", reset); } static void emit_rewrite_diff(const char *name_a, @@ -322,17 +323,18 @@ static void emit_rewrite_diff(const char *name_a, diff_populate_filespec(two, 0); lc_a = count_lines(one->data, one->size); lc_b = count_lines(two->data, two->size); - printf("%s--- %s%s%s\n%s+++ %s%s%s\n%s@@ -", - metainfo, a_name.buf, name_a_tab, reset, - metainfo, b_name.buf, name_b_tab, reset, fraginfo); - print_line_count(lc_a); - printf(" +"); - print_line_count(lc_b); - printf(" @@%s\n", reset); + fprintf(o->file, + "%s--- %s%s%s\n%s+++ %s%s%s\n%s@@ -", + metainfo, a_name.buf, name_a_tab, reset, + metainfo, b_name.buf, name_b_tab, reset, fraginfo); + print_line_count(o->file, lc_a); + fprintf(o->file, " +"); + print_line_count(o->file, lc_b); + fprintf(o->file, " @@%s\n", reset); if (lc_a) - copy_file_with_prefix('-', one->data, one->size, old, reset); + copy_file_with_prefix(o->file, '-', one->data, one->size, old, reset); if (lc_b) - copy_file_with_prefix('+', two->data, two->size, new, reset); + copy_file_with_prefix(o->file, '+', two->data, two->size, new, reset); } static int fill_mmfile(mmfile_t *mf, struct diff_filespec *one) @@ -372,9 +374,10 @@ static void diff_words_append(char *line, unsigned long len, struct diff_words_data { struct xdiff_emit_state xm; struct diff_words_buffer minus, plus; + FILE *file; }; -static void print_word(struct diff_words_buffer *buffer, int len, int color, +static void print_word(FILE *file, struct diff_words_buffer *buffer, int len, int color, int suppress_newline) { const char *ptr; @@ -391,15 +394,15 @@ static void print_word(struct diff_words_buffer *buffer, int len, int color, len--; } - fputs(diff_get_color(1, color), stdout); - fwrite(ptr, len, 1, stdout); - fputs(diff_get_color(1, DIFF_RESET), stdout); + fputs(diff_get_color(1, color), file); + fwrite(ptr, len, 1, file); + fputs(diff_get_color(1, DIFF_RESET), file); if (eol) { if (suppress_newline) buffer->suppressed_newline = 1; else - putchar('\n'); + putc('\n', file); } } @@ -409,20 +412,23 @@ static void fn_out_diff_words_aux(void *priv, char *line, unsigned long len) if (diff_words->minus.suppressed_newline) { if (line[0] != '+') - putchar('\n'); + putc('\n', diff_words->file); diff_words->minus.suppressed_newline = 0; } len--; switch (line[0]) { case '-': - print_word(&diff_words->minus, len, DIFF_FILE_OLD, 1); + print_word(diff_words->file, + &diff_words->minus, len, DIFF_FILE_OLD, 1); break; case '+': - print_word(&diff_words->plus, len, DIFF_FILE_NEW, 0); + print_word(diff_words->file, + &diff_words->plus, len, DIFF_FILE_NEW, 0); break; case ' ': - print_word(&diff_words->plus, len, DIFF_PLAIN, 0); + print_word(diff_words->file, + &diff_words->plus, len, DIFF_PLAIN, 0); diff_words->minus.current += len; break; } @@ -466,7 +472,7 @@ static void diff_words_show(struct diff_words_data *diff_words) diff_words->minus.text.size = diff_words->plus.text.size = 0; if (diff_words->minus.suppressed_newline) { - putchar('\n'); + putc('\n', diff_words->file); diff_words->minus.suppressed_newline = 0; } } @@ -481,6 +487,7 @@ struct emit_callback { const char **label_path; struct diff_words_data *diff_words; int *found_changesp; + FILE *file; }; static void free_diff_words_data(struct emit_callback *ecbdata) @@ -505,11 +512,11 @@ const char *diff_get_color(int diff_use_color, enum color_diff ix) return ""; } -static void emit_line(const char *set, const char *reset, const char *line, int len) +static void emit_line(FILE *file, const char *set, const char *reset, const char *line, int len) { - fputs(set, stdout); - fwrite(line, len, 1, stdout); - fputs(reset, stdout); + fputs(set, file); + fwrite(line, len, 1, file); + fputs(reset, file); } static void emit_add_line(const char *reset, struct emit_callback *ecbdata, const char *line, int len) @@ -518,13 +525,13 @@ static void emit_add_line(const char *reset, struct emit_callback *ecbdata, cons const char *set = diff_get_color(ecbdata->color_diff, DIFF_FILE_NEW); if (!*ws) - emit_line(set, reset, line, len); + emit_line(ecbdata->file, set, reset, line, len); else { /* Emit just the prefix, then the rest. */ - emit_line(set, reset, line, ecbdata->nparents); + emit_line(ecbdata->file, set, reset, line, ecbdata->nparents); (void)check_and_emit_line(line + ecbdata->nparents, len - ecbdata->nparents, ecbdata->ws_rule, - stdout, set, reset, ws); + ecbdata->file, set, reset, ws); } } @@ -563,10 +570,10 @@ static void fn_out_consume(void *priv, char *line, unsigned long len) name_a_tab = strchr(ecbdata->label_path[0], ' ') ? "\t" : ""; name_b_tab = strchr(ecbdata->label_path[1], ' ') ? "\t" : ""; - printf("%s--- %s%s%s\n", - meta, ecbdata->label_path[0], reset, name_a_tab); - printf("%s+++ %s%s%s\n", - meta, ecbdata->label_path[1], reset, name_b_tab); + fprintf(ecbdata->file, "%s--- %s%s%s\n", + meta, ecbdata->label_path[0], reset, name_a_tab); + fprintf(ecbdata->file, "%s+++ %s%s%s\n", + meta, ecbdata->label_path[1], reset, name_b_tab); ecbdata->label_path[0] = ecbdata->label_path[1] = NULL; } @@ -578,15 +585,16 @@ static void fn_out_consume(void *priv, char *line, unsigned long len) if (2 <= i && i < len && line[i] == ' ') { ecbdata->nparents = i - 1; len = sane_truncate_line(ecbdata, line, len); - emit_line(diff_get_color(ecbdata->color_diff, DIFF_FRAGINFO), + emit_line(ecbdata->file, + diff_get_color(ecbdata->color_diff, DIFF_FRAGINFO), reset, line, len); if (line[len-1] != '\n') - putchar('\n'); + putc('\n', ecbdata->file); return; } if (len < ecbdata->nparents) { - emit_line(reset, reset, line, len); + emit_line(ecbdata->file, reset, reset, line, len); return; } @@ -609,7 +617,7 @@ static void fn_out_consume(void *priv, char *line, unsigned long len) diff_words_show(ecbdata->diff_words); line++; len--; - emit_line(plain, reset, line, len); + emit_line(ecbdata->file, plain, reset, line, len); return; } for (i = 0; i < ecbdata->nparents && len; i++) { @@ -620,7 +628,8 @@ static void fn_out_consume(void *priv, char *line, unsigned long len) } if (color != DIFF_FILE_NEW) { - emit_line(diff_get_color(ecbdata->color_diff, color), + emit_line(ecbdata->file, + diff_get_color(ecbdata->color_diff, color), reset, line, len); return; } @@ -759,20 +768,21 @@ static int scale_linear(int it, int width, int max_change) return ((it - 1) * (width - 1) + max_change - 1) / (max_change - 1); } -static void show_name(const char *prefix, const char *name, int len, +static void show_name(FILE *file, + const char *prefix, const char *name, int len, const char *reset, const char *set) { - printf(" %s%s%-*s%s |", set, prefix, len, name, reset); + fprintf(file, " %s%s%-*s%s |", set, prefix, len, name, reset); } -static void show_graph(char ch, int cnt, const char *set, const char *reset) +static void show_graph(FILE *file, char ch, int cnt, const char *set, const char *reset) { if (cnt <= 0) return; - printf("%s", set); + fprintf(file, "%s", set); while (cnt--) - putchar(ch); - printf("%s", reset); + putc(ch, file); + fprintf(file, "%s", reset); } static void fill_print_name(struct diffstat_file *file) @@ -877,18 +887,18 @@ static void show_stats(struct diffstat_t* data, struct diff_options *options) } if (data->files[i]->is_binary) { - show_name(prefix, name, len, reset, set); - printf(" Bin "); - printf("%s%d%s", del_c, deleted, reset); - printf(" -> "); - printf("%s%d%s", add_c, added, reset); - printf(" bytes"); - printf("\n"); + show_name(options->file, prefix, name, len, reset, set); + fprintf(options->file, " Bin "); + fprintf(options->file, "%s%d%s", del_c, deleted, reset); + fprintf(options->file, " -> "); + fprintf(options->file, "%s%d%s", add_c, added, reset); + fprintf(options->file, " bytes"); + fprintf(options->file, "\n"); continue; } else if (data->files[i]->is_unmerged) { - show_name(prefix, name, len, reset, set); - printf(" Unmerged\n"); + show_name(options->file, prefix, name, len, reset, set); + fprintf(options->file, " Unmerged\n"); continue; } else if (!data->files[i]->is_renamed && @@ -911,17 +921,18 @@ static void show_stats(struct diffstat_t* data, struct diff_options *options) del = scale_linear(del, width, max_change); total = add + del; } - show_name(prefix, name, len, reset, set); - printf("%5d ", added + deleted); - show_graph('+', add, add_c, reset); - show_graph('-', del, del_c, reset); - putchar('\n'); - } - printf("%s %d files changed, %d insertions(+), %d deletions(-)%s\n", + show_name(options->file, prefix, name, len, reset, set); + fprintf(options->file, "%5d ", added + deleted); + show_graph(options->file, '+', add, add_c, reset); + show_graph(options->file, '-', del, del_c, reset); + fprintf(options->file, "\n"); + } + fprintf(options->file, + "%s %d files changed, %d insertions(+), %d deletions(-)%s\n", set, total_files, adds, dels, reset); } -static void show_shortstats(struct diffstat_t* data) +static void show_shortstats(struct diffstat_t* data, struct diff_options *options) { int i, adds = 0, dels = 0, total_files = data->nr; @@ -942,7 +953,7 @@ static void show_shortstats(struct diffstat_t* data) } } } - printf(" %d files changed, %d insertions(+), %d deletions(-)\n", + fprintf(options->file, " %d files changed, %d insertions(+), %d deletions(-)\n", total_files, adds, dels); } @@ -957,24 +968,25 @@ static void show_numstat(struct diffstat_t* data, struct diff_options *options) struct diffstat_file *file = data->files[i]; if (file->is_binary) - printf("-\t-\t"); + fprintf(options->file, "-\t-\t"); else - printf("%d\t%d\t", file->added, file->deleted); + fprintf(options->file, + "%d\t%d\t", file->added, file->deleted); if (options->line_termination) { fill_print_name(file); if (!file->is_renamed) - write_name_quoted(file->name, stdout, + write_name_quoted(file->name, options->file, options->line_termination); else { - fputs(file->print_name, stdout); - putchar(options->line_termination); + fputs(file->print_name, options->file); + putc(options->line_termination, options->file); } } else { if (file->is_renamed) { - putchar('\0'); - write_name_quoted(file->from_name, stdout, '\0'); + putc('\0', options->file); + write_name_quoted(file->from_name, options->file, '\0'); } - write_name_quoted(file->name, stdout, '\0'); + write_name_quoted(file->name, options->file, '\0'); } } } @@ -984,7 +996,7 @@ struct diffstat_dir { int nr, percent, cumulative; }; -static long gather_dirstat(struct diffstat_dir *dir, unsigned long changed, const char *base, int baselen) +static long gather_dirstat(FILE *file, struct diffstat_dir *dir, unsigned long changed, const char *base, int baselen) { unsigned long this_dir = 0; unsigned int sources = 0; @@ -1002,7 +1014,7 @@ static long gather_dirstat(struct diffstat_dir *dir, unsigned long changed, cons slash = strchr(f->name + baselen, '/'); if (slash) { int newbaselen = slash + 1 - f->name; - this = gather_dirstat(dir, changed, f->name, newbaselen); + this = gather_dirstat(file, dir, changed, f->name, newbaselen); sources++; } else { if (f->is_unmerged || f->is_binary) @@ -1027,7 +1039,7 @@ static long gather_dirstat(struct diffstat_dir *dir, unsigned long changed, cons if (permille) { int percent = permille / 10; if (percent >= dir->percent) { - printf("%4d.%01d%% %.*s\n", percent, permille % 10, baselen, base); + fprintf(file, "%4d.%01d%% %.*s\n", percent, permille % 10, baselen, base); if (!dir->cumulative) return 0; } @@ -1060,7 +1072,7 @@ static void show_dirstat(struct diffstat_t *data, struct diff_options *options) dir.nr = data->nr; dir.percent = options->dirstat_percent; dir.cumulative = options->output_format & DIFF_FORMAT_CUMULATIVE; - gather_dirstat(&dir, changed, "", 0); + gather_dirstat(options->file, &dir, changed, "", 0); } static void free_diffstat_info(struct diffstat_t *diffstat) @@ -1083,6 +1095,7 @@ struct checkdiff_t { int lineno, color_diff; unsigned ws_rule; unsigned status; + FILE *file; }; static void checkdiff_consume(void *priv, char *line, unsigned long len) @@ -1100,11 +1113,11 @@ static void checkdiff_consume(void *priv, char *line, unsigned long len) if (!data->status) return; err = whitespace_error_string(data->status); - printf("%s:%d: %s.\n", data->filename, data->lineno, err); + fprintf(data->file, "%s:%d: %s.\n", data->filename, data->lineno, err); free(err); - emit_line(set, reset, line, 1); + emit_line(data->file, set, reset, line, 1); (void)check_and_emit_line(line + 1, len - 1, data->ws_rule, - stdout, set, reset, ws); + data->file, set, reset, ws); } else if (line[0] == ' ') data->lineno++; else if (line[0] == '@') { @@ -1140,7 +1153,7 @@ static unsigned char *deflate_it(char *data, return deflated; } -static void emit_binary_diff_body(mmfile_t *one, mmfile_t *two) +static void emit_binary_diff_body(FILE *file, mmfile_t *one, mmfile_t *two) { void *cp; void *delta; @@ -1169,13 +1182,13 @@ static void emit_binary_diff_body(mmfile_t *one, mmfile_t *two) } if (delta && delta_size < deflate_size) { - printf("delta %lu\n", orig_size); + fprintf(file, "delta %lu\n", orig_size); free(deflated); data = delta; data_size = delta_size; } else { - printf("literal %lu\n", two->size); + fprintf(file, "literal %lu\n", two->size); free(delta); data = deflated; data_size = deflate_size; @@ -1193,17 +1206,18 @@ static void emit_binary_diff_body(mmfile_t *one, mmfile_t *two) line[0] = bytes - 26 + 'a' - 1; encode_85(line + 1, cp, bytes); cp = (char *) cp + bytes; - puts(line); + fputs(line, file); + fputc('\n', file); } - printf("\n"); + fprintf(file, "\n"); free(data); } -static void emit_binary_diff(mmfile_t *one, mmfile_t *two) +static void emit_binary_diff(FILE *file, mmfile_t *one, mmfile_t *two) { - printf("GIT binary patch\n"); - emit_binary_diff_body(one, two); - emit_binary_diff_body(two, one); + fprintf(file, "GIT binary patch\n"); + emit_binary_diff_body(file, one, two); + emit_binary_diff_body(file, two, one); } static void setup_diff_attr_check(struct git_attr_check *check) @@ -1334,25 +1348,25 @@ static void builtin_diff(const char *name_a, b_two = quote_two(o->b_prefix, name_b + (*name_b == '/')); lbl[0] = DIFF_FILE_VALID(one) ? a_one : "/dev/null"; lbl[1] = DIFF_FILE_VALID(two) ? b_two : "/dev/null"; - printf("%sdiff --git %s %s%s\n", set, a_one, b_two, reset); + fprintf(o->file, "%sdiff --git %s %s%s\n", set, a_one, b_two, reset); if (lbl[0][0] == '/') { /* /dev/null */ - printf("%snew file mode %06o%s\n", set, two->mode, reset); + fprintf(o->file, "%snew file mode %06o%s\n", set, two->mode, reset); if (xfrm_msg && xfrm_msg[0]) - printf("%s%s%s\n", set, xfrm_msg, reset); + fprintf(o->file, "%s%s%s\n", set, xfrm_msg, reset); } else if (lbl[1][0] == '/') { - printf("%sdeleted file mode %06o%s\n", set, one->mode, reset); + fprintf(o->file, "%sdeleted file mode %06o%s\n", set, one->mode, reset); if (xfrm_msg && xfrm_msg[0]) - printf("%s%s%s\n", set, xfrm_msg, reset); + fprintf(o->file, "%s%s%s\n", set, xfrm_msg, reset); } else { if (one->mode != two->mode) { - printf("%sold mode %06o%s\n", set, one->mode, reset); - printf("%snew mode %06o%s\n", set, two->mode, reset); + fprintf(o->file, "%sold mode %06o%s\n", set, one->mode, reset); + fprintf(o->file, "%snew mode %06o%s\n", set, two->mode, reset); } if (xfrm_msg && xfrm_msg[0]) - printf("%s%s%s\n", set, xfrm_msg, reset); + fprintf(o->file, "%s%s%s\n", set, xfrm_msg, reset); /* * we do not run diff between different kind * of objects. @@ -1376,10 +1390,10 @@ static void builtin_diff(const char *name_a, !memcmp(mf1.ptr, mf2.ptr, mf1.size)) goto free_ab_and_return; if (DIFF_OPT_TST(o, BINARY)) - emit_binary_diff(&mf1, &mf2); + emit_binary_diff(o->file, &mf1, &mf2); else - printf("Binary files %s and %s differ\n", - lbl[0], lbl[1]); + fprintf(o->file, "Binary files %s and %s differ\n", + lbl[0], lbl[1]); o->found_changes = 1; } else { @@ -1401,6 +1415,7 @@ static void builtin_diff(const char *name_a, ecbdata.color_diff = DIFF_OPT_TST(o, COLOR_DIFF); ecbdata.found_changesp = &o->found_changes; ecbdata.ws_rule = whitespace_rule(name_b ? name_b : name_a); + ecbdata.file = o->file; xpp.flags = XDF_NEED_MINIMAL | o->xdl_opts; xecfg.ctxlen = o->context; xecfg.flags = XDL_EMIT_FUNCNAMES; @@ -1415,9 +1430,11 @@ static void builtin_diff(const char *name_a, ecb.outf = xdiff_outf; ecb.priv = &ecbdata; ecbdata.xm.consume = fn_out_consume; - if (DIFF_OPT_TST(o, COLOR_DIFF_WORDS)) + if (DIFF_OPT_TST(o, COLOR_DIFF_WORDS)) { ecbdata.diff_words = xcalloc(1, sizeof(struct diff_words_data)); + ecbdata.diff_words->file = o->file; + } xdi_diff(&mf1, &mf2, &xpp, &xecfg, &ecb); if (DIFF_OPT_TST(o, COLOR_DIFF_WORDS)) free_diff_words_data(&ecbdata); @@ -1496,6 +1513,7 @@ static void builtin_checkdiff(const char *name_a, const char *name_b, data.lineno = 0; data.color_diff = DIFF_OPT_TST(o, COLOR_DIFF); data.ws_rule = whitespace_rule(attr_path); + data.file = o->file; if (fill_mmfile(&mf1, one) < 0 || fill_mmfile(&mf2, two) < 0) die("unable to read files to diff"); @@ -1966,7 +1984,7 @@ static void run_diff_cmd(const char *pgm, builtin_diff(name, other ? other : name, one, two, xfrm_msg, o, complete_rewrite); else - printf("* Unmerged path %s\n", name); + fprintf(o->file, "* Unmerged path %s\n", name); } static void diff_fill_sha1_info(struct diff_filespec *one) @@ -2157,6 +2175,9 @@ static void run_checkdiff(struct diff_filepair *p, struct diff_options *o) void diff_setup(struct diff_options *options) { memset(options, 0, sizeof(*options)); + + options->file = stdout; + options->line_termination = '\n'; options->break_opt = -1; options->rename_limit = -1; @@ -2470,7 +2491,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) options->b_prefix = arg + 13; else if (!strcmp(arg, "--no-prefix")) options->a_prefix = options->b_prefix = ""; - else + else if (!prefixcmp(arg, "--output=")) { + options->file = fopen(arg + strlen("--output="), "w"); + options->close_file = 1; + } else return 0; return 1; } @@ -2599,15 +2623,15 @@ static void diff_flush_raw(struct diff_filepair *p, struct diff_options *opt) int inter_name_termination = line_termination ? '\t' : '\0'; if (!(opt->output_format & DIFF_FORMAT_NAME_STATUS)) { - printf(":%06o %06o %s ", p->one->mode, p->two->mode, - diff_unique_abbrev(p->one->sha1, opt->abbrev)); - printf("%s ", diff_unique_abbrev(p->two->sha1, opt->abbrev)); + fprintf(opt->file, ":%06o %06o %s ", p->one->mode, p->two->mode, + diff_unique_abbrev(p->one->sha1, opt->abbrev)); + fprintf(opt->file, "%s ", diff_unique_abbrev(p->two->sha1, opt->abbrev)); } if (p->score) { - printf("%c%03d%c", p->status, similarity_index(p), - inter_name_termination); + fprintf(opt->file, "%c%03d%c", p->status, similarity_index(p), + inter_name_termination); } else { - printf("%c%c", p->status, inter_name_termination); + fprintf(opt->file, "%c%c", p->status, inter_name_termination); } if (p->status == DIFF_STATUS_COPIED || @@ -2616,14 +2640,14 @@ static void diff_flush_raw(struct diff_filepair *p, struct diff_options *opt) name_a = p->one->path; name_b = p->two->path; strip_prefix(opt->prefix_length, &name_a, &name_b); - write_name_quoted(name_a, stdout, inter_name_termination); - write_name_quoted(name_b, stdout, line_termination); + write_name_quoted(name_a, opt->file, inter_name_termination); + write_name_quoted(name_b, opt->file, line_termination); } else { const char *name_a, *name_b; name_a = p->one->mode ? p->one->path : p->two->path; name_b = NULL; strip_prefix(opt->prefix_length, &name_a, &name_b); - write_name_quoted(name_a, stdout, line_termination); + write_name_quoted(name_a, opt->file, line_termination); } } @@ -2825,62 +2849,62 @@ static void flush_one_pair(struct diff_filepair *p, struct diff_options *opt) name_a = p->two->path; name_b = NULL; strip_prefix(opt->prefix_length, &name_a, &name_b); - write_name_quoted(name_a, stdout, opt->line_termination); + write_name_quoted(name_a, opt->file, opt->line_termination); } } -static void show_file_mode_name(const char *newdelete, struct diff_filespec *fs) +static void show_file_mode_name(FILE *file, const char *newdelete, struct diff_filespec *fs) { if (fs->mode) - printf(" %s mode %06o ", newdelete, fs->mode); + fprintf(file, " %s mode %06o ", newdelete, fs->mode); else - printf(" %s ", newdelete); - write_name_quoted(fs->path, stdout, '\n'); + fprintf(file, " %s ", newdelete); + write_name_quoted(fs->path, file, '\n'); } -static void show_mode_change(struct diff_filepair *p, int show_name) +static void show_mode_change(FILE *file, struct diff_filepair *p, int show_name) { if (p->one->mode && p->two->mode && p->one->mode != p->two->mode) { - printf(" mode change %06o => %06o%c", p->one->mode, p->two->mode, + fprintf(file, " mode change %06o => %06o%c", p->one->mode, p->two->mode, show_name ? ' ' : '\n'); if (show_name) { - write_name_quoted(p->two->path, stdout, '\n'); + write_name_quoted(p->two->path, file, '\n'); } } } -static void show_rename_copy(const char *renamecopy, struct diff_filepair *p) +static void show_rename_copy(FILE *file, const char *renamecopy, struct diff_filepair *p) { char *names = pprint_rename(p->one->path, p->two->path); - printf(" %s %s (%d%%)\n", renamecopy, names, similarity_index(p)); + fprintf(file, " %s %s (%d%%)\n", renamecopy, names, similarity_index(p)); free(names); - show_mode_change(p, 0); + show_mode_change(file, p, 0); } -static void diff_summary(struct diff_filepair *p) +static void diff_summary(FILE *file, struct diff_filepair *p) { switch(p->status) { case DIFF_STATUS_DELETED: - show_file_mode_name("delete", p->one); + show_file_mode_name(file, "delete", p->one); break; case DIFF_STATUS_ADDED: - show_file_mode_name("create", p->two); + show_file_mode_name(file, "create", p->two); break; case DIFF_STATUS_COPIED: - show_rename_copy("copy", p); + show_rename_copy(file, "copy", p); break; case DIFF_STATUS_RENAMED: - show_rename_copy("rename", p); + show_rename_copy(file, "rename", p); break; default: if (p->score) { - fputs(" rewrite ", stdout); - write_name_quoted(p->two->path, stdout, ' '); - printf("(%d%%)\n", similarity_index(p)); + fputs(" rewrite ", file); + write_name_quoted(p->two->path, file, ' '); + fprintf(file, "(%d%%)\n", similarity_index(p)); } - show_mode_change(p, !p->score); + show_mode_change(file, p, !p->score); break; } } @@ -3088,14 +3112,14 @@ void diff_flush(struct diff_options *options) if (output_format & DIFF_FORMAT_DIFFSTAT) show_stats(&diffstat, options); if (output_format & DIFF_FORMAT_SHORTSTAT) - show_shortstats(&diffstat); + show_shortstats(&diffstat, options); free_diffstat_info(&diffstat); separator++; } if (output_format & DIFF_FORMAT_SUMMARY && !is_summary_empty(q)) { for (i = 0; i < q->nr; i++) - diff_summary(q->queue[i]); + diff_summary(options->file, q->queue[i]); separator++; } @@ -3103,9 +3127,9 @@ void diff_flush(struct diff_options *options) if (separator) { if (options->stat_sep) { /* attach patch instead of inline */ - fputs(options->stat_sep, stdout); + fputs(options->stat_sep, options->file); } else { - putchar(options->line_termination); + putc(options->line_termination, options->file); } } @@ -3125,6 +3149,8 @@ free_queue: free(q->queue); q->queue = NULL; q->nr = q->alloc = 0; + if (options->close_file) + fclose(options->file); } static void diffcore_apply_filter(const char *filter) @@ -98,6 +98,9 @@ struct diff_options { /* this is set by diffcore for DIFF_FORMAT_PATCH */ int found_changes; + FILE *file; + int close_file; + int nr_paths; const char **paths; int *pathlens; @@ -218,7 +218,6 @@ int checkout_entry(struct cache_entry *ce, const struct checkout *state, char *t * to emulate by hand - much easier to let the system * just do the right thing) */ - unlink(path); if (S_ISDIR(st.st_mode)) { /* If it is a gitlink, leave it alone! */ if (S_ISGITLINK(ce->ce_mode)) @@ -226,7 +225,8 @@ int checkout_entry(struct cache_entry *ce, const struct checkout *state, char *t if (!state->force) return error("%s is a directory", path); remove_subtree(path); - } + } else if (unlink(path)) + return error("unable to unlink old '%s' (%s)", path, strerror(errno)); } else if (state->not_new) return 0; create_directories(path, state); diff --git a/fast-import.c b/fast-import.c index 655913ddb2..73e5439d97 100644 --- a/fast-import.c +++ b/fast-import.c @@ -1516,6 +1516,8 @@ static int update_branch(struct branch *b) struct ref_lock *lock; unsigned char old_sha1[20]; + if (is_null_sha1(b->sha1)) + return 0; if (read_ref(b->name, old_sha1)) hashclr(old_sha1); lock = lock_any_ref_for_update(b->name, old_sha1, 0); @@ -357,7 +357,7 @@ do LAST_SIGNED_OFF_BY=` sed -ne '/^Signed-off-by: /p' \ "$dotest/msg-clean" | - tail -n 1 + sed -ne '$p' ` ADD_SIGNOFF=` test "$LAST_SIGNED_OFF_BY" = "$SIGNOFF" || { diff --git a/git-bisect.sh b/git-bisect.sh index 2c32d0b9eb..48fb92d612 100755 --- a/git-bisect.sh +++ b/git-bisect.sh @@ -293,14 +293,14 @@ bisect_next() { bisect_next_check good skip=$(git for-each-ref --format='%(objectname)' \ - "refs/bisect/skip-*" | tr '[\012]' ' ') || exit + "refs/bisect/skip-*" | tr '\012' ' ') || exit BISECT_OPT='' test -n "$skip" && BISECT_OPT='--bisect-all' bad=$(git rev-parse --verify refs/bisect/bad) && good=$(git for-each-ref --format='^%(objectname)' \ - "refs/bisect/good-*" | tr '[\012]' ' ') && + "refs/bisect/good-*" | tr '\012' ' ') && eval="git rev-list --bisect-vars $BISECT_OPT $good $bad --" && eval="$eval $(cat "$GIT_DIR/BISECT_NAMES")" && eval=$(filter_skipped "$eval" "$skip") && diff --git a/git-compat-util.h b/git-compat-util.h index 73968e02b0..a18235e6d0 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -68,6 +68,7 @@ #include <sys/poll.h> #include <sys/socket.h> #include <sys/ioctl.h> +#include <utime.h> #ifndef NO_SYS_SELECT_H #include <sys/select.h> #endif diff --git a/git-cvsimport.perl b/git-cvsimport.perl index 47f116f37e..95c5eec51e 100755 --- a/git-cvsimport.perl +++ b/git-cvsimport.perl @@ -735,7 +735,7 @@ sub commit { next unless $logmsg =~ $rx && $1; my $mparent = $1 eq 'HEAD' ? $opt_o : $1; if (my $sha1 = get_headref("$remote/$mparent")) { - push @commit_args, '-p', $mparent; + push @commit_args, '-p', "$remote/$mparent"; print "Merge parent branch: $mparent\n" if $opt_v; } } diff --git a/git-filter-branch.sh b/git-filter-branch.sh index 010353ad82..22b6ed4a78 100755 --- a/git-filter-branch.sh +++ b/git-filter-branch.sh @@ -58,8 +58,8 @@ eval "$functions" # "author" or "committer set_ident () { - lid="$(echo "$1" | tr "A-Z" "a-z")" - uid="$(echo "$1" | tr "a-z" "A-Z")" + lid="$(echo "$1" | tr "[A-Z]" "[a-z]")" + uid="$(echo "$1" | tr "[a-z]" "[A-Z]")" pick_id_script=' /^'$lid' /{ s/'\''/'\''\\'\'\''/g @@ -281,7 +281,7 @@ while read commit parents; do die "Could not checkout the index" # files that $commit removed are now still in the working tree; # remove them, else they would be added again - git ls-files -z --others | xargs -0 rm -f + git clean -q -f -x eval "$filter_tree" < /dev/null || die "tree filter failed: $filter_tree" @@ -309,7 +309,7 @@ while read commit parents; do sed -e '1,/^$/d' <../commit | \ eval "$filter_msg" > ../message || die "msg filter failed: $filter_msg" - sh -c "$filter_commit" "git commit-tree" \ + @SHELL_PATH@ -c "$filter_commit" "git commit-tree" \ $(git write-tree) $parentstr < ../message > ../map/$commit done <../revs diff --git a/git-gui/git-gui.sh b/git-gui/git-gui.sh index 3a58cd2c6b..5e97fbf03e 100755 --- a/git-gui/git-gui.sh +++ b/git-gui/git-gui.sh @@ -2089,7 +2089,7 @@ if {[is_enabled transport]} { if {[is_MacOSX]} { # -- Apple Menu (Mac OS X only) # - .mbar add cascade -label [mc Apple] -menu .mbar.apple + .mbar add cascade -label Apple -menu .mbar.apple menu .mbar.apple .mbar.apple add command -label [mc "About %s" [appname]] \ diff --git a/git-gui/lib/choose_repository.tcl b/git-gui/lib/choose_repository.tcl index 0adcf9d958..ae4a4cd0a8 100644 --- a/git-gui/lib/choose_repository.tcl +++ b/git-gui/lib/choose_repository.tcl @@ -38,7 +38,7 @@ constructor pick {} { menu $m_repo if {[is_MacOSX]} { - $w.mbar add cascade -label [mc Apple] -menu .mbar.apple + $w.mbar add cascade -label Apple -menu .mbar.apple menu $w.mbar.apple $w.mbar.apple add command \ -label [mc "About %s" [appname]] \ diff --git a/git-gui/po/README b/git-gui/po/README index 9d8b7364fd..5e77a7d7d2 100644 --- a/git-gui/po/README +++ b/git-gui/po/README @@ -178,18 +178,6 @@ step. $ msgmerge -U po/af.po po/git-gui.pot -[NEEDSWORK: who is responsible for updating po/git-gui.pot file by -running xgettext? IIRC, Christian recommended against running it -nilly-willy because it can become a source of unnecessary merge -conflicts. Perhaps we should mention something like " - -The po/git-gui.pot file is updated by the internationalization -coordinator from time to time. You _could_ update it yourself, but -translators are discouraged from doing so because we would want all -language teams to be working off of the same version of git-gui.pot. - -" here?] - This updates po/af.po (again, replace "af" with your language code) so that it contains msgid lines (i.e. the original) that your translation did not have before. There are a few things to @@ -207,3 +195,53 @@ watch out for: - New messages added to the software will have msgstr lines with empty strings. You would need to translate them. + +The po/git-gui.pot file is updated by the internationalization +coordinator from time to time. You _could_ update it yourself, but +translators are discouraged from doing so because we would want all +language teams to be working off of the same version of git-gui.pot. + +**************************************************************** + +This section is a note to the internationalization coordinator, and +translators do not have to worry about it too much. + +The message template file po/git-gui.pot needs to be kept up to date +relative to the software the translations apply to, and it is the +responsibility of the internationalization coordinator. + +When updating po/git-gui.pot file, however, _never_ run "msgmerge -U +po/xx.po" for individual language translations, unless you are absolutely +sure that there is no outstanding work on translation for language xx. +Doing so will create unnecessary merge conflicts and force needless +re-translation on translators. The translator however may not have access +to the msgmerge tool, in which case the coordinator may run it for the +translator as a service. + +But mistakes do happen. Suppose a translation was based on an older +version X, the POT file was updated at version Y and then msgmerge was run +at version Z for the language, and the translator sent in a patch based on +version X: + + ? translated + / + ---X---Y---Z (master) + +The coordinator could recover from such a mistake by first applying the +patch to X, replace the translated file in Z, and then running msgmerge +again based on the updated POT file and commit the result. The sequence +would look like this: + + $ git checkout X + $ git am -s xx.patch + $ git checkout master + $ git checkout HEAD@{1} po/xx.po + $ msgmerge -U po/xx.po po/git-gui.pot + $ git commit -c HEAD@{1} po/xx.po + +State in the message that the translated messages are based on a slightly +older version, and msgmerge was run to incorporate changes to message +templates from the updated POT file. The result needs to be further +translated, but at least the messages that were updated by the patch that +were not changed by the POT update will survive the process and do not +need to be re-translated. diff --git a/git-gui/po/de.po b/git-gui/po/de.po index e84e1c7e08..022b816ae1 100644 --- a/git-gui/po/de.po +++ b/git-gui/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-02-16 21:24+0100\n" +"POT-Creation-Date: 2008-03-14 07:18+0100\n" "PO-Revision-Date: 2008-02-16 21:52+0100\n" "Last-Translator: Christian Stimming <stimming@tuhh.de>\n" "Language-Team: German\n" @@ -15,33 +15,33 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: git-gui.sh:41 git-gui.sh:604 git-gui.sh:618 git-gui.sh:631 git-gui.sh:714 -#: git-gui.sh:733 +#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 +#: git-gui.sh:763 msgid "git-gui: fatal error" msgstr "git-gui: Programmfehler" -#: git-gui.sh:565 +#: git-gui.sh:593 #, tcl-format msgid "Invalid font specified in %s:" msgstr "Ungültige Zeichensatz-Angabe in %s:" -#: git-gui.sh:590 +#: git-gui.sh:620 msgid "Main Font" msgstr "Programmschriftart" -#: git-gui.sh:591 +#: git-gui.sh:621 msgid "Diff/Console Font" msgstr "Vergleich-Schriftart" -#: git-gui.sh:605 +#: git-gui.sh:635 msgid "Cannot find git in PATH." msgstr "Git kann im PATH nicht gefunden werden." -#: git-gui.sh:632 +#: git-gui.sh:662 msgid "Cannot parse Git version string:" msgstr "Git Versionsangabe kann nicht erkannt werden:" -#: git-gui.sh:650 +#: git-gui.sh:680 #, tcl-format msgid "" "Git version cannot be determined.\n" @@ -60,81 +60,81 @@ msgstr "" "\n" "Soll angenommen werden, »%s« sei Version 1.5.0?\n" -#: git-gui.sh:888 +#: git-gui.sh:918 msgid "Git directory not found:" msgstr "Git-Verzeichnis nicht gefunden:" -#: git-gui.sh:895 +#: git-gui.sh:925 msgid "Cannot move to top of working directory:" msgstr "" "Es konnte nicht in das oberste Verzeichnis der Arbeitskopie gewechselt " "werden:" -#: git-gui.sh:902 +#: git-gui.sh:932 msgid "Cannot use funny .git directory:" msgstr "Unerwartete Struktur des .git Verzeichnis:" -#: git-gui.sh:907 +#: git-gui.sh:937 msgid "No working directory" msgstr "Kein Arbeitsverzeichnis" -#: git-gui.sh:1054 +#: git-gui.sh:1084 lib/checkout_op.tcl:283 msgid "Refreshing file status..." msgstr "Dateistatus aktualisieren..." -#: git-gui.sh:1119 +#: git-gui.sh:1149 msgid "Scanning for modified files ..." msgstr "Nach geänderten Dateien suchen..." -#: git-gui.sh:1294 lib/browser.tcl:245 +#: git-gui.sh:1324 lib/browser.tcl:246 msgid "Ready." msgstr "Bereit." -#: git-gui.sh:1560 +#: git-gui.sh:1590 msgid "Unmodified" msgstr "Unverändert" -#: git-gui.sh:1562 +#: git-gui.sh:1592 msgid "Modified, not staged" msgstr "Verändert, nicht bereitgestellt" -#: git-gui.sh:1563 git-gui.sh:1568 +#: git-gui.sh:1593 git-gui.sh:1598 msgid "Staged for commit" msgstr "Bereitgestellt zum Eintragen" -#: git-gui.sh:1564 git-gui.sh:1569 +#: git-gui.sh:1594 git-gui.sh:1599 msgid "Portions staged for commit" msgstr "Teilweise bereitgestellt zum Eintragen" -#: git-gui.sh:1565 git-gui.sh:1570 +#: git-gui.sh:1595 git-gui.sh:1600 msgid "Staged for commit, missing" msgstr "Bereitgestellt zum Eintragen, fehlend" -#: git-gui.sh:1567 +#: git-gui.sh:1597 msgid "Untracked, not staged" msgstr "Nicht unter Versionskontrolle, nicht bereitgestellt" -#: git-gui.sh:1572 +#: git-gui.sh:1602 msgid "Missing" msgstr "Fehlend" -#: git-gui.sh:1573 +#: git-gui.sh:1603 msgid "Staged for removal" msgstr "Bereitgestellt zum Löschen" -#: git-gui.sh:1574 +#: git-gui.sh:1604 msgid "Staged for removal, still present" msgstr "Bereitgestellt zum Löschen, trotzdem vorhanden" -#: git-gui.sh:1576 git-gui.sh:1577 git-gui.sh:1578 git-gui.sh:1579 +#: git-gui.sh:1606 git-gui.sh:1607 git-gui.sh:1608 git-gui.sh:1609 msgid "Requires merge resolution" msgstr "Konfliktauflösung nötig" -#: git-gui.sh:1614 +#: git-gui.sh:1644 msgid "Starting gitk... please wait..." msgstr "Gitk wird gestartet... bitte warten." -#: git-gui.sh:1623 +#: git-gui.sh:1653 #, tcl-format msgid "" "Unable to start gitk:\n" @@ -145,297 +145,297 @@ msgstr "" "\n" "%s existiert nicht" -#: git-gui.sh:1823 lib/choose_repository.tcl:35 +#: git-gui.sh:1860 lib/choose_repository.tcl:36 msgid "Repository" msgstr "Projektarchiv" -#: git-gui.sh:1824 +#: git-gui.sh:1861 msgid "Edit" msgstr "Bearbeiten" -#: git-gui.sh:1826 lib/choose_rev.tcl:560 +#: git-gui.sh:1863 lib/choose_rev.tcl:561 msgid "Branch" msgstr "Zweig" -#: git-gui.sh:1829 lib/choose_rev.tcl:547 +#: git-gui.sh:1866 lib/choose_rev.tcl:548 msgid "Commit@@noun" msgstr "Version" -#: git-gui.sh:1832 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 +#: git-gui.sh:1869 lib/merge.tcl:120 lib/merge.tcl:149 lib/merge.tcl:167 msgid "Merge" msgstr "Zusammenführen" -#: git-gui.sh:1833 lib/choose_rev.tcl:556 +#: git-gui.sh:1870 lib/choose_rev.tcl:557 msgid "Remote" msgstr "Andere Archive" -#: git-gui.sh:1842 +#: git-gui.sh:1879 msgid "Browse Current Branch's Files" msgstr "Aktuellen Zweig durchblättern" -#: git-gui.sh:1846 +#: git-gui.sh:1883 msgid "Browse Branch Files..." msgstr "Einen Zweig durchblättern..." -#: git-gui.sh:1851 +#: git-gui.sh:1888 msgid "Visualize Current Branch's History" msgstr "Aktuellen Zweig darstellen" -#: git-gui.sh:1855 +#: git-gui.sh:1892 msgid "Visualize All Branch History" msgstr "Alle Zweige darstellen" -#: git-gui.sh:1862 +#: git-gui.sh:1899 #, tcl-format msgid "Browse %s's Files" msgstr "Zweig »%s« durchblättern" -#: git-gui.sh:1864 +#: git-gui.sh:1901 #, tcl-format msgid "Visualize %s's History" msgstr "Historie von »%s« darstellen" -#: git-gui.sh:1869 lib/database.tcl:27 lib/database.tcl:67 +#: git-gui.sh:1906 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" msgstr "Datenbankstatistik" -#: git-gui.sh:1872 lib/database.tcl:34 +#: git-gui.sh:1909 lib/database.tcl:34 msgid "Compress Database" msgstr "Datenbank komprimieren" -#: git-gui.sh:1875 +#: git-gui.sh:1912 msgid "Verify Database" msgstr "Datenbank überprüfen" -#: git-gui.sh:1882 git-gui.sh:1886 git-gui.sh:1890 lib/shortcut.tcl:7 +#: git-gui.sh:1919 git-gui.sh:1923 git-gui.sh:1927 lib/shortcut.tcl:7 #: lib/shortcut.tcl:39 lib/shortcut.tcl:71 msgid "Create Desktop Icon" msgstr "Desktop-Icon erstellen" -#: git-gui.sh:1895 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184 +#: git-gui.sh:1932 lib/choose_repository.tcl:177 lib/choose_repository.tcl:185 msgid "Quit" msgstr "Beenden" -#: git-gui.sh:1902 +#: git-gui.sh:1939 msgid "Undo" msgstr "Rückgängig" -#: git-gui.sh:1905 +#: git-gui.sh:1942 msgid "Redo" msgstr "Wiederholen" -#: git-gui.sh:1909 git-gui.sh:2403 +#: git-gui.sh:1946 git-gui.sh:2443 msgid "Cut" msgstr "Ausschneiden" -#: git-gui.sh:1912 git-gui.sh:2406 git-gui.sh:2477 git-gui.sh:2549 -#: lib/console.tcl:67 +#: git-gui.sh:1949 git-gui.sh:2446 git-gui.sh:2520 git-gui.sh:2614 +#: lib/console.tcl:69 msgid "Copy" msgstr "Kopieren" -#: git-gui.sh:1915 git-gui.sh:2409 +#: git-gui.sh:1952 git-gui.sh:2449 msgid "Paste" msgstr "Einfügen" -#: git-gui.sh:1918 git-gui.sh:2412 lib/branch_delete.tcl:26 +#: git-gui.sh:1955 git-gui.sh:2452 lib/branch_delete.tcl:26 #: lib/remote_branch_delete.tcl:38 msgid "Delete" msgstr "Löschen" -#: git-gui.sh:1922 git-gui.sh:2416 git-gui.sh:2553 lib/console.tcl:69 +#: git-gui.sh:1959 git-gui.sh:2456 git-gui.sh:2618 lib/console.tcl:71 msgid "Select All" msgstr "Alle auswählen" -#: git-gui.sh:1931 +#: git-gui.sh:1968 msgid "Create..." msgstr "Erstellen..." -#: git-gui.sh:1937 +#: git-gui.sh:1974 msgid "Checkout..." msgstr "Umstellen..." -#: git-gui.sh:1943 +#: git-gui.sh:1980 msgid "Rename..." msgstr "Umbenennen..." -#: git-gui.sh:1948 git-gui.sh:2048 +#: git-gui.sh:1985 git-gui.sh:2085 msgid "Delete..." msgstr "Löschen..." -#: git-gui.sh:1953 +#: git-gui.sh:1990 msgid "Reset..." msgstr "Zurücksetzen..." -#: git-gui.sh:1965 git-gui.sh:2350 +#: git-gui.sh:2002 git-gui.sh:2389 msgid "New Commit" msgstr "Neue Version" -#: git-gui.sh:1973 git-gui.sh:2357 +#: git-gui.sh:2010 git-gui.sh:2396 msgid "Amend Last Commit" msgstr "Letzte nachbessern" -#: git-gui.sh:1982 git-gui.sh:2317 lib/remote_branch_delete.tcl:99 +#: git-gui.sh:2019 git-gui.sh:2356 lib/remote_branch_delete.tcl:99 msgid "Rescan" msgstr "Neu laden" -#: git-gui.sh:1988 +#: git-gui.sh:2025 msgid "Stage To Commit" msgstr "Zum Eintragen bereitstellen" -#: git-gui.sh:1994 +#: git-gui.sh:2031 msgid "Stage Changed Files To Commit" msgstr "Geänderte Dateien bereitstellen" -#: git-gui.sh:2000 +#: git-gui.sh:2037 msgid "Unstage From Commit" msgstr "Aus der Bereitstellung herausnehmen" -#: git-gui.sh:2005 lib/index.tcl:393 +#: git-gui.sh:2042 lib/index.tcl:395 msgid "Revert Changes" msgstr "Änderungen verwerfen" -#: git-gui.sh:2012 git-gui.sh:2329 git-gui.sh:2427 +#: git-gui.sh:2049 git-gui.sh:2368 git-gui.sh:2467 msgid "Sign Off" msgstr "Abzeichnen" -#: git-gui.sh:2016 git-gui.sh:2333 +#: git-gui.sh:2053 git-gui.sh:2372 msgid "Commit@@verb" msgstr "Eintragen" -#: git-gui.sh:2027 +#: git-gui.sh:2064 msgid "Local Merge..." msgstr "Lokales Zusammenführen..." -#: git-gui.sh:2032 +#: git-gui.sh:2069 msgid "Abort Merge..." msgstr "Zusammenführen abbrechen..." -#: git-gui.sh:2044 +#: git-gui.sh:2081 msgid "Push..." msgstr "Versenden..." -#: git-gui.sh:2055 lib/choose_repository.tcl:40 +#: git-gui.sh:2092 lib/choose_repository.tcl:41 msgid "Apple" msgstr "Apple" -#: git-gui.sh:2058 git-gui.sh:2080 lib/about.tcl:13 -#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49 +#: git-gui.sh:2095 git-gui.sh:2117 lib/about.tcl:14 +#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 #, tcl-format msgid "About %s" msgstr "Ãœber %s" -#: git-gui.sh:2062 +#: git-gui.sh:2099 msgid "Preferences..." msgstr "Einstellungen..." -#: git-gui.sh:2070 git-gui.sh:2595 +#: git-gui.sh:2107 git-gui.sh:2639 msgid "Options..." msgstr "Optionen..." -#: git-gui.sh:2076 lib/choose_repository.tcl:46 +#: git-gui.sh:2113 lib/choose_repository.tcl:47 msgid "Help" msgstr "Hilfe" -#: git-gui.sh:2117 +#: git-gui.sh:2154 msgid "Online Documentation" msgstr "Online-Dokumentation" -#: git-gui.sh:2201 +#: git-gui.sh:2238 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" msgstr "" "Fehler: Verzeichnis »%s« kann nicht gelesen werden: Datei oder Verzeichnis " "nicht gefunden" -#: git-gui.sh:2234 +#: git-gui.sh:2271 msgid "Current Branch:" msgstr "Aktueller Zweig:" -#: git-gui.sh:2255 +#: git-gui.sh:2292 msgid "Staged Changes (Will Commit)" msgstr "Bereitstellung (zum Eintragen)" -#: git-gui.sh:2274 +#: git-gui.sh:2312 msgid "Unstaged Changes" msgstr "Nicht bereitgestellte Änderungen" -#: git-gui.sh:2323 +#: git-gui.sh:2362 msgid "Stage Changed" msgstr "Alles bereitstellen" -#: git-gui.sh:2339 lib/transport.tcl:93 lib/transport.tcl:182 +#: git-gui.sh:2378 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" msgstr "Versenden" -#: git-gui.sh:2369 +#: git-gui.sh:2408 msgid "Initial Commit Message:" msgstr "Erste Versionsbeschreibung:" -#: git-gui.sh:2370 +#: git-gui.sh:2409 msgid "Amended Commit Message:" msgstr "Nachgebesserte Beschreibung:" -#: git-gui.sh:2371 +#: git-gui.sh:2410 msgid "Amended Initial Commit Message:" msgstr "Nachgebesserte erste Beschreibung:" -#: git-gui.sh:2372 +#: git-gui.sh:2411 msgid "Amended Merge Commit Message:" msgstr "Nachgebesserte Zusammenführungs-Beschreibung:" -#: git-gui.sh:2373 +#: git-gui.sh:2412 msgid "Merge Commit Message:" msgstr "Zusammenführungs-Beschreibung:" -#: git-gui.sh:2374 +#: git-gui.sh:2413 msgid "Commit Message:" msgstr "Versionsbeschreibung:" -#: git-gui.sh:2419 git-gui.sh:2557 lib/console.tcl:71 +#: git-gui.sh:2459 git-gui.sh:2622 lib/console.tcl:73 msgid "Copy All" msgstr "Alle kopieren" -#: git-gui.sh:2443 lib/blame.tcl:104 +#: git-gui.sh:2483 lib/blame.tcl:107 msgid "File:" msgstr "Datei:" -#: git-gui.sh:2573 +#: git-gui.sh:2589 msgid "Apply/Reverse Hunk" msgstr "Kontext anwenden/umkehren" -#: git-gui.sh:2579 +#: git-gui.sh:2595 msgid "Show Less Context" msgstr "Weniger Zeilen anzeigen" -#: git-gui.sh:2586 +#: git-gui.sh:2602 msgid "Show More Context" msgstr "Mehr Zeilen anzeigen" -#: git-gui.sh:2594 +#: git-gui.sh:2610 msgid "Refresh" msgstr "Aktualisieren" -#: git-gui.sh:2615 +#: git-gui.sh:2631 msgid "Decrease Font Size" msgstr "Schriftgröße verkleinern" -#: git-gui.sh:2619 +#: git-gui.sh:2635 msgid "Increase Font Size" msgstr "Schriftgröße vergrößern" -#: git-gui.sh:2630 +#: git-gui.sh:2646 msgid "Unstage Hunk From Commit" msgstr "Kontext aus Bereitstellung herausnehmen" -#: git-gui.sh:2604 +#: git-gui.sh:2648 msgid "Stage Hunk For Commit" msgstr "Kontext zur Bereitstellung hinzufügen" -#: git-gui.sh:2623 +#: git-gui.sh:2667 msgid "Initializing..." msgstr "Initialisieren..." -#: git-gui.sh:2718 +#: git-gui.sh:2762 #, tcl-format msgid "" "Possible environment issues exist.\n" @@ -451,7 +451,7 @@ msgstr "" "von %s an Git weitergegeben werden:\n" "\n" -#: git-gui.sh:2748 +#: git-gui.sh:2792 msgid "" "\n" "This is due to a known issue with the\n" @@ -461,7 +461,7 @@ msgstr "" "Dies ist ein bekanntes Problem der Tcl-Version, die\n" "in Cygwin mitgeliefert wird." -#: git-gui.sh:2753 +#: git-gui.sh:2797 #, tcl-format msgid "" "\n" @@ -477,7 +477,7 @@ msgstr "" "gewünschten Werte für die Einstellung user.name und \n" "user.email in Ihre Datei ~/.gitconfig einfügen.\n" -#: lib/about.tcl:25 +#: lib/about.tcl:26 msgid "git-gui - a graphical user interface for Git." msgstr "git-gui - eine grafische Oberfläche für Git." @@ -489,56 +489,56 @@ msgstr "Datei-Browser" msgid "Commit:" msgstr "Version:" -#: lib/blame.tcl:249 +#: lib/blame.tcl:264 msgid "Copy Commit" msgstr "Version kopieren" -#: lib/blame.tcl:369 +#: lib/blame.tcl:384 #, tcl-format msgid "Reading %s..." msgstr "%s lesen..." -#: lib/blame.tcl:473 +#: lib/blame.tcl:488 msgid "Loading copy/move tracking annotations..." msgstr "Annotierungen für Kopieren/Verschieben werden geladen..." -#: lib/blame.tcl:493 +#: lib/blame.tcl:508 msgid "lines annotated" msgstr "Zeilen annotiert" -#: lib/blame.tcl:674 +#: lib/blame.tcl:689 msgid "Loading original location annotations..." msgstr "Annotierungen für ursprünglichen Ort werden geladen..." -#: lib/blame.tcl:677 +#: lib/blame.tcl:692 msgid "Annotation complete." msgstr "Annotierung vollständig." -#: lib/blame.tcl:731 +#: lib/blame.tcl:746 msgid "Loading annotation..." msgstr "Annotierung laden..." -#: lib/blame.tcl:787 +#: lib/blame.tcl:802 msgid "Author:" msgstr "Autor:" -#: lib/blame.tcl:791 +#: lib/blame.tcl:806 msgid "Committer:" msgstr "Eintragender:" -#: lib/blame.tcl:796 +#: lib/blame.tcl:811 msgid "Original File:" msgstr "Ursprüngliche Datei:" -#: lib/blame.tcl:910 +#: lib/blame.tcl:925 msgid "Originally By:" msgstr "Ursprünglich von:" -#: lib/blame.tcl:916 +#: lib/blame.tcl:931 msgid "In File:" msgstr "In Datei:" -#: lib/blame.tcl:921 +#: lib/blame.tcl:936 msgid "Copied Or Moved Here By:" msgstr "Kopiert oder verschoben durch:" @@ -551,17 +551,17 @@ msgid "Checkout" msgstr "Umstellen" #: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35 -#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:281 -#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:172 -#: lib/option.tcl:90 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 +#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282 +#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:171 +#: lib/option.tcl:103 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 msgid "Cancel" msgstr "Abbrechen" -#: lib/branch_checkout.tcl:32 lib/browser.tcl:286 +#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 msgid "Revision" msgstr "Version" -#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:202 +#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:242 msgid "Options" msgstr "Optionen" @@ -581,7 +581,7 @@ msgstr "Zweig erstellen" msgid "Create New Branch" msgstr "Neuen Zweig erstellen" -#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375 +#: lib/branch_create.tcl:31 lib/choose_repository.tcl:371 msgid "Create" msgstr "Erstellen" @@ -721,22 +721,22 @@ msgstr "Starten..." msgid "File Browser" msgstr "Datei-Browser" -#: lib/browser.tcl:125 lib/browser.tcl:142 +#: lib/browser.tcl:126 lib/browser.tcl:143 #, tcl-format msgid "Loading %s..." msgstr "%s laden..." -#: lib/browser.tcl:186 +#: lib/browser.tcl:187 msgid "[Up To Parent]" msgstr "[Nach oben]" -#: lib/browser.tcl:266 lib/browser.tcl:272 +#: lib/browser.tcl:267 lib/browser.tcl:273 msgid "Browse Branch Files" msgstr "Dateien des Zweigs durchblättern" -#: lib/browser.tcl:277 lib/choose_repository.tcl:391 -#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492 -#: lib/choose_repository.tcl:989 +#: lib/browser.tcl:278 lib/choose_repository.tcl:387 +#: lib/choose_repository.tcl:474 lib/choose_repository.tcl:484 +#: lib/choose_repository.tcl:987 msgid "Browse" msgstr "Blättern" @@ -750,7 +750,7 @@ msgstr "Änderungen »%s« von »%s« anfordern" msgid "fatal: Cannot resolve %s" msgstr "Fehler: »%s« kann nicht als Zweig oder Version erkannt werden" -#: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 +#: lib/checkout_op.tcl:140 lib/console.tcl:81 lib/database.tcl:31 msgid "Close" msgstr "Schließen" @@ -839,7 +839,7 @@ msgstr "" "Wenn Sie auf einem Zweig arbeiten möchten, erstellen Sie bitte jetzt einen " "Zweig mit der Auswahl »Abgetrennte Arbeitskopie-Version«." -#: lib/checkout_op.tcl:446 +#: lib/checkout_op.tcl:446 lib/checkout_op.tcl:450 #, tcl-format msgid "Checked out '%s'." msgstr "Umgestellt auf »%s«." @@ -860,7 +860,7 @@ msgstr "" msgid "Reset '%s'?" msgstr "»%s« zurücksetzen?" -#: lib/checkout_op.tcl:510 lib/merge.tcl:164 +#: lib/checkout_op.tcl:510 lib/merge.tcl:163 msgid "Visualize" msgstr "Darstellen" @@ -890,15 +890,15 @@ msgstr "Auswählen" msgid "Font Family" msgstr "Schriftfamilie" -#: lib/choose_font.tcl:73 +#: lib/choose_font.tcl:74 msgid "Font Size" msgstr "Schriftgröße" -#: lib/choose_font.tcl:90 +#: lib/choose_font.tcl:91 msgid "Font Example" msgstr "Schriftbeispiel" -#: lib/choose_font.tcl:101 +#: lib/choose_font.tcl:103 msgid "" "This is example text.\n" "If you like this text, it can be your font." @@ -906,231 +906,231 @@ msgstr "" "Dies ist ein Beispieltext.\n" "Wenn Ihnen dieser Text gefällt, sollten Sie diese Schriftart wählen." -#: lib/choose_repository.tcl:27 +#: lib/choose_repository.tcl:28 msgid "Git Gui" msgstr "Git Gui" -#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380 +#: lib/choose_repository.tcl:81 lib/choose_repository.tcl:376 msgid "Create New Repository" msgstr "Neues Projektarchiv" -#: lib/choose_repository.tcl:86 +#: lib/choose_repository.tcl:87 msgid "New..." msgstr "Neu..." -#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468 +#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:460 msgid "Clone Existing Repository" msgstr "Projektarchiv klonen" -#: lib/choose_repository.tcl:99 +#: lib/choose_repository.tcl:100 msgid "Clone..." msgstr "Klonen..." -#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978 +#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:976 msgid "Open Existing Repository" msgstr "Projektarchiv öffnen" -#: lib/choose_repository.tcl:112 +#: lib/choose_repository.tcl:113 msgid "Open..." msgstr "Öffnen..." -#: lib/choose_repository.tcl:125 +#: lib/choose_repository.tcl:126 msgid "Recent Repositories" msgstr "Zuletzt benutzte Projektarchive" -#: lib/choose_repository.tcl:131 +#: lib/choose_repository.tcl:132 msgid "Open Recent Repository:" msgstr "Zuletzt benutztes Projektarchiv öffnen:" -#: lib/choose_repository.tcl:294 -#, tcl-format -msgid "Location %s already exists." -msgstr "Projektarchiv »%s« existiert bereits." - -#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307 -#: lib/choose_repository.tcl:314 +#: lib/choose_repository.tcl:296 lib/choose_repository.tcl:303 +#: lib/choose_repository.tcl:310 #, tcl-format msgid "Failed to create repository %s:" msgstr "Projektarchiv »%s« konnte nicht erstellt werden:" -#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486 +#: lib/choose_repository.tcl:381 lib/choose_repository.tcl:478 msgid "Directory:" msgstr "Verzeichnis:" -#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544 -#: lib/choose_repository.tcl:1013 +#: lib/choose_repository.tcl:412 lib/choose_repository.tcl:537 +#: lib/choose_repository.tcl:1011 msgid "Git Repository" msgstr "Git Projektarchiv" -#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437 +#: lib/choose_repository.tcl:437 #, tcl-format msgid "Directory %s already exists." msgstr "Verzeichnis »%s« existiert bereits." -#: lib/choose_repository.tcl:442 +#: lib/choose_repository.tcl:441 #, tcl-format msgid "File %s already exists." msgstr "Datei »%s« existiert bereits." -#: lib/choose_repository.tcl:463 +#: lib/choose_repository.tcl:455 msgid "Clone" msgstr "Klonen" -#: lib/choose_repository.tcl:476 +#: lib/choose_repository.tcl:468 msgid "URL:" msgstr "URL:" -#: lib/choose_repository.tcl:496 +#: lib/choose_repository.tcl:489 msgid "Clone Type:" msgstr "Art des Klonens:" -#: lib/choose_repository.tcl:502 +#: lib/choose_repository.tcl:495 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "Standard (schnell, teilweise redundant, Hardlinks)" -#: lib/choose_repository.tcl:508 +#: lib/choose_repository.tcl:501 msgid "Full Copy (Slower, Redundant Backup)" msgstr "Alles kopieren (langsamer, volle Redundanz)" -#: lib/choose_repository.tcl:514 +#: lib/choose_repository.tcl:507 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "Verknüpft (schnell, nicht empfohlen, kein Backup)" -#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597 -#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808 -#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027 +#: lib/choose_repository.tcl:543 lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:736 lib/choose_repository.tcl:806 +#: lib/choose_repository.tcl:1017 lib/choose_repository.tcl:1025 #, tcl-format msgid "Not a Git repository: %s" msgstr "Kein Git-Projektarchiv in »%s« gefunden." -#: lib/choose_repository.tcl:586 +#: lib/choose_repository.tcl:579 msgid "Standard only available for local repository." msgstr "Standard ist nur für lokale Projektarchive verfügbar." -#: lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:583 msgid "Shared only available for local repository." msgstr "Verknüpft ist nur für lokale Projektarchive verfügbar." -#: lib/choose_repository.tcl:617 +#: lib/choose_repository.tcl:604 +#, tcl-format +msgid "Location %s already exists." +msgstr "Projektarchiv »%s« existiert bereits." + +#: lib/choose_repository.tcl:615 msgid "Failed to configure origin" msgstr "Der Ursprungsort konnte nicht eingerichtet werden" -#: lib/choose_repository.tcl:629 +#: lib/choose_repository.tcl:627 msgid "Counting objects" msgstr "Objekte werden gezählt" -#: lib/choose_repository.tcl:630 +#: lib/choose_repository.tcl:628 msgid "buckets" msgstr "Buckets" -#: lib/choose_repository.tcl:654 +#: lib/choose_repository.tcl:652 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" msgstr "Kopien von Objekten/Info/Alternates konnten nicht erstellt werden: %s" -#: lib/choose_repository.tcl:690 +#: lib/choose_repository.tcl:688 #, tcl-format msgid "Nothing to clone from %s." msgstr "Von »%s« konnte nichts geklont werden." -#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906 -#: lib/choose_repository.tcl:918 +#: lib/choose_repository.tcl:690 lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:916 msgid "The 'master' branch has not been initialized." msgstr "Der »master«-Zweig wurde noch nicht initialisiert." -#: lib/choose_repository.tcl:705 +#: lib/choose_repository.tcl:703 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "Hardlinks nicht verfügbar. Stattdessen wird kopiert." -#: lib/choose_repository.tcl:717 +#: lib/choose_repository.tcl:715 #, tcl-format msgid "Cloning from %s" msgstr "Kopieren von »%s«" -#: lib/choose_repository.tcl:748 +#: lib/choose_repository.tcl:746 msgid "Copying objects" msgstr "Objektdatenbank kopieren" -#: lib/choose_repository.tcl:749 +#: lib/choose_repository.tcl:747 msgid "KiB" msgstr "KB" -#: lib/choose_repository.tcl:773 +#: lib/choose_repository.tcl:771 #, tcl-format msgid "Unable to copy object: %s" msgstr "Objekt kann nicht kopiert werden: %s" -#: lib/choose_repository.tcl:783 +#: lib/choose_repository.tcl:781 msgid "Linking objects" msgstr "Objekte verlinken" -#: lib/choose_repository.tcl:784 +#: lib/choose_repository.tcl:782 msgid "objects" msgstr "Objekte" -#: lib/choose_repository.tcl:792 +#: lib/choose_repository.tcl:790 #, tcl-format msgid "Unable to hardlink object: %s" msgstr "Für Objekt konnte kein Hardlink erstellt werden: %s" -#: lib/choose_repository.tcl:847 +#: lib/choose_repository.tcl:845 msgid "Cannot fetch branches and objects. See console output for details." msgstr "" "Zweige und Objekte konnten nicht angefordert werden. Kontrollieren Sie die " "Ausgaben auf der Konsole für weitere Angaben." -#: lib/choose_repository.tcl:858 +#: lib/choose_repository.tcl:856 msgid "Cannot fetch tags. See console output for details." msgstr "" "Markierungen konnten nicht angefordert werden. Kontrollieren Sie die " "Ausgaben auf der Konsole für weitere Angaben." -#: lib/choose_repository.tcl:882 +#: lib/choose_repository.tcl:880 msgid "Cannot determine HEAD. See console output for details." msgstr "" "Die Zweigspitze (HEAD) konnte nicht gefunden werden. Kontrollieren Sie die " "Ausgaben auf der Konsole für weitere Angaben." -#: lib/choose_repository.tcl:891 +#: lib/choose_repository.tcl:889 #, tcl-format msgid "Unable to cleanup %s" msgstr "Verzeichnis »%s« kann nicht aufgeräumt werden." -#: lib/choose_repository.tcl:897 +#: lib/choose_repository.tcl:895 msgid "Clone failed." msgstr "Klonen fehlgeschlagen." -#: lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:902 msgid "No default branch obtained." msgstr "Kein voreingestellter Zweig gefunden." -#: lib/choose_repository.tcl:915 +#: lib/choose_repository.tcl:913 #, tcl-format msgid "Cannot resolve %s as a commit." msgstr "»%s« wurde nicht als Version gefunden." -#: lib/choose_repository.tcl:927 +#: lib/choose_repository.tcl:925 msgid "Creating working directory" msgstr "Arbeitskopie erstellen" -#: lib/choose_repository.tcl:928 lib/index.tcl:65 lib/index.tcl:127 +#: lib/choose_repository.tcl:926 lib/index.tcl:65 lib/index.tcl:127 #: lib/index.tcl:193 msgid "files" msgstr "Dateien" -#: lib/choose_repository.tcl:957 +#: lib/choose_repository.tcl:955 msgid "Initial file checkout failed." msgstr "Erstellen der Arbeitskopie fehlgeschlagen." -#: lib/choose_repository.tcl:973 +#: lib/choose_repository.tcl:971 msgid "Open" msgstr "Öffnen" -#: lib/choose_repository.tcl:983 +#: lib/choose_repository.tcl:981 msgid "Repository:" msgstr "Projektarchiv:" -#: lib/choose_repository.tcl:1033 +#: lib/choose_repository.tcl:1031 #, tcl-format msgid "Failed to open repository %s:" msgstr "Projektarchiv »%s« konnte nicht geöffnet werden." @@ -1151,7 +1151,7 @@ msgstr "Lokaler Zweig" msgid "Tracking Branch" msgstr "Ãœbernahmezweig" -#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:537 +#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538 msgid "Tag" msgstr "Markierung" @@ -1168,11 +1168,11 @@ msgstr "Keine Version ausgewählt." msgid "Revision expression is empty." msgstr "Versions-Ausdruck ist leer." -#: lib/choose_rev.tcl:530 +#: lib/choose_rev.tcl:531 msgid "Updated" msgstr "Aktualisiert" -#: lib/choose_rev.tcl:558 +#: lib/choose_rev.tcl:559 msgid "URL" msgstr "URL" @@ -1304,7 +1304,9 @@ msgstr "Aufrufen der Versionsbeschreibungs-Kontrolle..." #: lib/commit.tcl:274 msgid "Commit declined by commit-msg hook." -msgstr "Eintragen abgelehnt durch Versionsbeschreibungs-Kontrolle (»commit-message hook«)." +msgstr "" +"Eintragen abgelehnt durch Versionsbeschreibungs-Kontrolle (»commit-message " +"hook«)." #: lib/commit.tcl:287 msgid "Committing changes..." @@ -1323,7 +1325,7 @@ msgstr "Eintragen fehlgeschlagen." msgid "Commit %s appears to be corrupt" msgstr "Version »%s« scheint beschädigt zu sein" -#: lib/commit.tcl:279 +#: lib/commit.tcl:326 msgid "" "No changes to commit.\n" "\n" @@ -1338,7 +1340,7 @@ msgstr "" "\n" "Das Arbeitsverzeichnis wird daher jetzt neu geladen.\n" -#: lib/commit.tcl:286 +#: lib/commit.tcl:333 msgid "No changes to commit." msgstr "Keine Änderungen, die eingetragen werden können." @@ -1346,24 +1348,24 @@ msgstr "Keine Änderungen, die eingetragen werden können." msgid "commit-tree failed:" msgstr "commit-tree fehlgeschlagen:" -#: lib/commit.tcl:339 +#: lib/commit.tcl:367 msgid "update-ref failed:" msgstr "update-ref fehlgeschlagen:" -#: lib/commit.tcl:430 +#: lib/commit.tcl:454 #, tcl-format msgid "Created commit %s: %s" msgstr "Version %s übertragen: %s" -#: lib/console.tcl:57 +#: lib/console.tcl:59 msgid "Working... please wait..." msgstr "Verarbeitung. Bitte warten..." -#: lib/console.tcl:183 +#: lib/console.tcl:186 msgid "Success" msgstr "Erfolgreich" -#: lib/console.tcl:196 +#: lib/console.tcl:200 msgid "Error: Command Failed" msgstr "Fehler: Kommando fehlgeschlagen" @@ -1474,24 +1476,24 @@ msgstr "* Binärdatei (Inhalt wird nicht angezeigt)" msgid "Error loading diff:" msgstr "Fehler beim Laden des Vergleichs:" -#: lib/diff.tcl:302 +#: lib/diff.tcl:303 msgid "Failed to unstage selected hunk." msgstr "" "Fehler beim Herausnehmen des gewählten Kontexts aus der Bereitstellung." -#: lib/diff.tcl:309 +#: lib/diff.tcl:310 msgid "Failed to stage selected hunk." msgstr "Fehler beim Bereitstellen des gewählten Kontexts." -#: lib/error.tcl:12 lib/error.tcl:102 +#: lib/error.tcl:20 lib/error.tcl:114 msgid "error" msgstr "Fehler" -#: lib/error.tcl:28 +#: lib/error.tcl:36 msgid "warning" msgstr "Warnung" -#: lib/error.tcl:81 +#: lib/error.tcl:94 msgid "You must correct the above errors before committing." msgstr "" "Sie müssen die obigen Fehler zuerst beheben, bevor Sie eintragen können." @@ -1545,12 +1547,12 @@ msgstr "Änderungen in Datei »%s« verwerfen?" msgid "Revert changes in these %i files?" msgstr "Änderungen in den gewählten %i Dateien verwerfen?" -#: lib/index.tcl:389 +#: lib/index.tcl:391 msgid "Any unstaged changes will be permanently lost by the revert." msgstr "" "Alle nicht bereitgestellten Änderungen werden beim Verwerfen verloren gehen." -#: lib/index.tcl:392 +#: lib/index.tcl:394 msgid "Do Nothing" msgstr "Nichts tun" @@ -1629,20 +1631,20 @@ msgstr "Zusammenführen von %s und %s..." msgid "Merge completed successfully." msgstr "Zusammenführen erfolgreich abgeschlossen." -#: lib/merge.tcl:133 +#: lib/merge.tcl:132 msgid "Merge failed. Conflict resolution is required." msgstr "Zusammenführen fehlgeschlagen. Konfliktauflösung ist notwendig." -#: lib/merge.tcl:158 +#: lib/merge.tcl:157 #, tcl-format msgid "Merge Into %s" msgstr "Zusammenführen in »%s«" -#: lib/merge.tcl:177 +#: lib/merge.tcl:176 msgid "Revision To Merge" msgstr "Zusammenzuführende Version" -#: lib/merge.tcl:212 +#: lib/merge.tcl:211 msgid "" "Cannot abort while amending.\n" "\n" @@ -1652,7 +1654,7 @@ msgstr "" "\n" "Sie müssen die Nachbesserung der Version abschließen.\n" -#: lib/merge.tcl:222 +#: lib/merge.tcl:221 msgid "" "Abort merge?\n" "\n" @@ -1667,7 +1669,7 @@ msgstr "" "\n" "Zusammenführen jetzt abbrechen?" -#: lib/merge.tcl:228 +#: lib/merge.tcl:227 msgid "" "Reset changes?\n" "\n" @@ -1682,7 +1684,7 @@ msgstr "" "\n" "Änderungen jetzt zurücksetzen?" -#: lib/merge.tcl:239 +#: lib/merge.tcl:238 msgid "Aborting" msgstr "Abbruch" @@ -1694,89 +1696,94 @@ msgstr "Dateien zurückgesetzt" msgid "Abort failed." msgstr "Abbruch fehlgeschlagen." -#: lib/merge.tcl:268 +#: lib/merge.tcl:267 msgid "Abort completed. Ready." msgstr "Abbruch durchgeführt. Bereit." -#: lib/option.tcl:82 +#: lib/option.tcl:95 msgid "Restore Defaults" msgstr "Voreinstellungen wiederherstellen" -#: lib/option.tcl:86 +#: lib/option.tcl:99 msgid "Save" msgstr "Speichern" -#: lib/option.tcl:96 +#: lib/option.tcl:109 #, tcl-format msgid "%s Repository" msgstr "Projektarchiv %s" -#: lib/option.tcl:97 +#: lib/option.tcl:110 msgid "Global (All Repositories)" msgstr "Global (Alle Projektarchive)" -#: lib/option.tcl:103 +#: lib/option.tcl:116 msgid "User Name" msgstr "Benutzername" -#: lib/option.tcl:104 +#: lib/option.tcl:117 msgid "Email Address" msgstr "E-Mail-Adresse" -#: lib/option.tcl:106 +#: lib/option.tcl:119 msgid "Summarize Merge Commits" msgstr "Zusammenführungs-Versionen zusammenfassen" -#: lib/option.tcl:107 +#: lib/option.tcl:120 msgid "Merge Verbosity" msgstr "Ausführlichkeit der Zusammenführen-Meldungen" -#: lib/option.tcl:108 +#: lib/option.tcl:121 msgid "Show Diffstat After Merge" msgstr "Vergleichsstatistik nach Zusammenführen anzeigen" -#: lib/option.tcl:110 +#: lib/option.tcl:123 msgid "Trust File Modification Timestamps" msgstr "Auf Dateiänderungsdatum verlassen" -#: lib/option.tcl:111 +#: lib/option.tcl:124 msgid "Prune Tracking Branches During Fetch" msgstr "Ãœbernahmezweige aufräumen während Anforderung" -#: lib/option.tcl:112 +#: lib/option.tcl:125 msgid "Match Tracking Branches" msgstr "Passend zu Ãœbernahmezweig" -#: lib/option.tcl:113 +#: lib/option.tcl:126 msgid "Number of Diff Context Lines" msgstr "Anzahl der Kontextzeilen beim Vergleich" -#: lib/option.tcl:114 +#: lib/option.tcl:127 +#, fuzzy +msgid "Commit Message Text Width" +msgstr "Versionsbeschreibung:" + +#: lib/option.tcl:128 msgid "New Branch Name Template" msgstr "Namensvorschlag für neue Zweige" -#: lib/option.tcl:191 +#: lib/option.tcl:192 msgid "Spelling Dictionary:" msgstr "Wörterbuch Rechtschreibprüfung:" -#: lib/option.tcl:215 +#: lib/option.tcl:216 msgid "Change Font" msgstr "Schriftart ändern" -#: lib/option.tcl:180 +#: lib/option.tcl:220 #, tcl-format msgid "Choose %s" msgstr "%s wählen" -#: lib/option.tcl:186 +#: lib/option.tcl:226 msgid "pt." msgstr "pt." -#: lib/option.tcl:200 +#: lib/option.tcl:240 msgid "Preferences" msgstr "Einstellungen" -#: lib/option.tcl:235 +#: lib/option.tcl:275 msgid "Failed to completely save options:" msgstr "Optionen konnten nicht gespeichert werden:" @@ -1886,23 +1893,44 @@ msgstr "Fehler beim Schreiben der Verknüpfung:" msgid "Cannot write icon:" msgstr "Fehler beim Erstellen des Icons:" -#: lib/spellcheck.tcl:37 -msgid "Not connected to aspell" -msgstr "Keine Verbindung zu »aspell«" +#: lib/spellcheck.tcl:57 +msgid "Unsupported spell checker" +msgstr "" + +#: lib/spellcheck.tcl:65 +#, fuzzy +msgid "Spell checking is unavailable" +msgstr "Rechtschreibprüfung fehlgeschlagen" + +#: lib/spellcheck.tcl:68 +msgid "Invalid spell checking configuration" +msgstr "" + +#: lib/spellcheck.tcl:70 +#, tcl-format +msgid "Reverting dictionary to %s." +msgstr "" + +#: lib/spellcheck.tcl:73 +#, fuzzy +msgid "Spell checker silently failed on startup" +msgstr "Rechtschreibprüfung fehlgeschlagen" -#: lib/spellcheck.tcl:41 -msgid "Unrecognized aspell version" +#: lib/spellcheck.tcl:80 +#, fuzzy +msgid "Unrecognized spell checker" msgstr "Unbekannte Version von »aspell«" -#: lib/spellcheck.tcl:135 +#: lib/spellcheck.tcl:180 msgid "No Suggestions" msgstr "Keine Vorschläge" -#: lib/spellcheck.tcl:336 -msgid "Unexpected EOF from aspell" +#: lib/spellcheck.tcl:381 +#, fuzzy +msgid "Unexpected EOF from spell checker" msgstr "Unerwartetes EOF von »aspell«" -#: lib/spellcheck.tcl:340 +#: lib/spellcheck.tcl:385 msgid "Spell Checker Failed" msgstr "Rechtschreibprüfung fehlgeschlagen" @@ -1974,3 +2002,6 @@ msgstr "Kompaktes Datenformat benutzen (für langsame Netzverbindungen)" #: lib/transport.tcl:168 msgid "Include tags" msgstr "Mit Markierungen übertragen" + +#~ msgid "Not connected to aspell" +#~ msgstr "Keine Verbindung zu »aspell«" diff --git a/git-gui/po/fr.po b/git-gui/po/fr.po index d389bdaca1..d281938e33 100644 --- a/git-gui/po/fr.po +++ b/git-gui/po/fr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: fr\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-11-24 10:36+0100\n" +"POT-Creation-Date: 2008-03-14 07:18+0100\n" "PO-Revision-Date: 2008-01-14 21:08+0100\n" "Last-Translator: Christian Couder <chriscool@tuxfamily.org>\n" "Language-Team: French\n" @@ -18,33 +18,33 @@ msgstr "" "X-Generator: KBabel 1.11.4\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: git-gui.sh:41 git-gui.sh:604 git-gui.sh:618 git-gui.sh:631 git-gui.sh:714 -#: git-gui.sh:733 +#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 +#: git-gui.sh:763 msgid "git-gui: fatal error" msgstr "git-gui: erreur fatale" -#: git-gui.sh:565 +#: git-gui.sh:593 #, tcl-format msgid "Invalid font specified in %s:" msgstr "Invalide fonte spécifiée dans %s :" -#: git-gui.sh:590 +#: git-gui.sh:620 msgid "Main Font" msgstr "Fonte principale" -#: git-gui.sh:591 +#: git-gui.sh:621 msgid "Diff/Console Font" msgstr "Fonte diff/console" -#: git-gui.sh:605 +#: git-gui.sh:635 msgid "Cannot find git in PATH." msgstr "Impossible de trouver git dans PATH." -#: git-gui.sh:632 +#: git-gui.sh:662 msgid "Cannot parse Git version string:" msgstr "Impossible de parser la version de Git :" -#: git-gui.sh:650 +#: git-gui.sh:680 #, tcl-format msgid "" "Git version cannot be determined.\n" @@ -63,79 +63,79 @@ msgstr "" "\n" "Peut'on considérer que '%s' est en version 1.5.0 ?\n" -#: git-gui.sh:888 +#: git-gui.sh:918 msgid "Git directory not found:" msgstr "Impossible de trouver le répertoire de Git :" -#: git-gui.sh:895 +#: git-gui.sh:925 msgid "Cannot move to top of working directory:" msgstr "Impossible d'aller à la racine du répertoire de travail :" -#: git-gui.sh:902 +#: git-gui.sh:932 msgid "Cannot use funny .git directory:" msgstr "Impossible d'utiliser un drôle de répertoire git :" -#: git-gui.sh:907 +#: git-gui.sh:937 msgid "No working directory" msgstr "Pas de répertoire de travail" -#: git-gui.sh:1054 +#: git-gui.sh:1084 lib/checkout_op.tcl:283 msgid "Refreshing file status..." msgstr "Rafraichissement du status des fichiers..." -#: git-gui.sh:1119 +#: git-gui.sh:1149 msgid "Scanning for modified files ..." msgstr "Recherche de fichiers modifiés..." -#: git-gui.sh:1294 lib/browser.tcl:245 +#: git-gui.sh:1324 lib/browser.tcl:246 msgid "Ready." msgstr "Prêt." -#: git-gui.sh:1560 +#: git-gui.sh:1590 msgid "Unmodified" msgstr "Non modifié" -#: git-gui.sh:1562 +#: git-gui.sh:1592 msgid "Modified, not staged" msgstr "Modifié, non pré-commité" -#: git-gui.sh:1563 git-gui.sh:1568 +#: git-gui.sh:1593 git-gui.sh:1598 msgid "Staged for commit" msgstr "Pré-commité" -#: git-gui.sh:1564 git-gui.sh:1569 +#: git-gui.sh:1594 git-gui.sh:1599 msgid "Portions staged for commit" msgstr "En partie pré-commité" -#: git-gui.sh:1565 git-gui.sh:1570 +#: git-gui.sh:1595 git-gui.sh:1600 msgid "Staged for commit, missing" msgstr "Pré-commité, manquant" -#: git-gui.sh:1567 +#: git-gui.sh:1597 msgid "Untracked, not staged" msgstr "Non suivi, non pré-commité" -#: git-gui.sh:1572 +#: git-gui.sh:1602 msgid "Missing" msgstr "Manquant" -#: git-gui.sh:1573 +#: git-gui.sh:1603 msgid "Staged for removal" msgstr "Pré-commité pour suppression" -#: git-gui.sh:1574 +#: git-gui.sh:1604 msgid "Staged for removal, still present" msgstr "Pré-commité pour suppression, toujours présent" -#: git-gui.sh:1576 git-gui.sh:1577 git-gui.sh:1578 git-gui.sh:1579 +#: git-gui.sh:1606 git-gui.sh:1607 git-gui.sh:1608 git-gui.sh:1609 msgid "Requires merge resolution" msgstr "Nécessite la résolution d'une fusion" -#: git-gui.sh:1614 +#: git-gui.sh:1644 msgid "Starting gitk... please wait..." msgstr "Lancement de gitk... merci de patienter..." -#: git-gui.sh:1623 +#: git-gui.sh:1653 #, tcl-format msgid "" "Unable to start gitk:\n" @@ -146,295 +146,296 @@ msgstr "" "\n" "%s inexistant" -#: git-gui.sh:1823 lib/choose_repository.tcl:35 +#: git-gui.sh:1860 lib/choose_repository.tcl:36 msgid "Repository" msgstr "Référentiel" -#: git-gui.sh:1824 +#: git-gui.sh:1861 msgid "Edit" msgstr "Editer" -#: git-gui.sh:1826 lib/choose_rev.tcl:560 +#: git-gui.sh:1863 lib/choose_rev.tcl:561 msgid "Branch" msgstr "Branche" -#: git-gui.sh:1829 lib/choose_rev.tcl:547 +#: git-gui.sh:1866 lib/choose_rev.tcl:548 msgid "Commit@@noun" msgstr "Commit" -#: git-gui.sh:1832 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 +#: git-gui.sh:1869 lib/merge.tcl:120 lib/merge.tcl:149 lib/merge.tcl:167 msgid "Merge" msgstr "Fusionner" -#: git-gui.sh:1833 lib/choose_rev.tcl:556 +#: git-gui.sh:1870 lib/choose_rev.tcl:557 msgid "Remote" msgstr "Référentiel distant" -#: git-gui.sh:1842 +#: git-gui.sh:1879 msgid "Browse Current Branch's Files" msgstr "Visionner fichiers dans branche courante" -#: git-gui.sh:1846 +#: git-gui.sh:1883 msgid "Browse Branch Files..." msgstr "Visionner fichiers de branche" -#: git-gui.sh:1851 +#: git-gui.sh:1888 msgid "Visualize Current Branch's History" msgstr "Visualiser historique branche courante" -#: git-gui.sh:1855 +#: git-gui.sh:1892 msgid "Visualize All Branch History" msgstr "Visualiser historique toutes branches" -#: git-gui.sh:1862 +#: git-gui.sh:1899 #, tcl-format msgid "Browse %s's Files" msgstr "Visionner fichiers de %s" -#: git-gui.sh:1864 +#: git-gui.sh:1901 #, tcl-format msgid "Visualize %s's History" msgstr "Visualiser historique de %s" -#: git-gui.sh:1869 lib/database.tcl:27 lib/database.tcl:67 +#: git-gui.sh:1906 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" msgstr "Statistiques base de donnée" -#: git-gui.sh:1872 lib/database.tcl:34 +#: git-gui.sh:1909 lib/database.tcl:34 msgid "Compress Database" msgstr "Comprimer base de donnée" -#: git-gui.sh:1875 +#: git-gui.sh:1912 msgid "Verify Database" msgstr "Vérifier base de donnée" -#: git-gui.sh:1882 git-gui.sh:1886 git-gui.sh:1890 lib/shortcut.tcl:7 +#: git-gui.sh:1919 git-gui.sh:1923 git-gui.sh:1927 lib/shortcut.tcl:7 #: lib/shortcut.tcl:39 lib/shortcut.tcl:71 msgid "Create Desktop Icon" msgstr "Créer icône sur bureau" -#: git-gui.sh:1895 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184 +#: git-gui.sh:1932 lib/choose_repository.tcl:177 lib/choose_repository.tcl:185 msgid "Quit" msgstr "Quitter" -#: git-gui.sh:1902 +#: git-gui.sh:1939 msgid "Undo" msgstr "Défaire" -#: git-gui.sh:1905 +#: git-gui.sh:1942 msgid "Redo" msgstr "Refaire" -#: git-gui.sh:1909 git-gui.sh:2403 +#: git-gui.sh:1946 git-gui.sh:2443 msgid "Cut" msgstr "Couper" -#: git-gui.sh:1912 git-gui.sh:2406 git-gui.sh:2477 git-gui.sh:2549 -#: lib/console.tcl:67 +#: git-gui.sh:1949 git-gui.sh:2446 git-gui.sh:2520 git-gui.sh:2614 +#: lib/console.tcl:69 msgid "Copy" msgstr "Copier" -#: git-gui.sh:1915 git-gui.sh:2409 +#: git-gui.sh:1952 git-gui.sh:2449 msgid "Paste" msgstr "Coller" -#: git-gui.sh:1918 git-gui.sh:2412 lib/branch_delete.tcl:26 +#: git-gui.sh:1955 git-gui.sh:2452 lib/branch_delete.tcl:26 #: lib/remote_branch_delete.tcl:38 msgid "Delete" msgstr "Supprimer" -#: git-gui.sh:1922 git-gui.sh:2416 git-gui.sh:2553 lib/console.tcl:69 +#: git-gui.sh:1959 git-gui.sh:2456 git-gui.sh:2618 lib/console.tcl:71 msgid "Select All" msgstr "Tout sélectionner" -#: git-gui.sh:1931 +#: git-gui.sh:1968 msgid "Create..." msgstr "Créer..." -#: git-gui.sh:1937 +#: git-gui.sh:1974 msgid "Checkout..." msgstr "Emprunter... " -#: git-gui.sh:1943 +#: git-gui.sh:1980 msgid "Rename..." msgstr "Renommer..." -#: git-gui.sh:1948 git-gui.sh:2048 +#: git-gui.sh:1985 git-gui.sh:2085 msgid "Delete..." msgstr "Supprimer..." -#: git-gui.sh:1953 +#: git-gui.sh:1990 msgid "Reset..." msgstr "Réinitialiser..." -#: git-gui.sh:1965 git-gui.sh:2350 +#: git-gui.sh:2002 git-gui.sh:2389 msgid "New Commit" msgstr "Nouveau commit" -#: git-gui.sh:1973 git-gui.sh:2357 +#: git-gui.sh:2010 git-gui.sh:2396 msgid "Amend Last Commit" msgstr "Corriger dernier commit" -#: git-gui.sh:1982 git-gui.sh:2317 lib/remote_branch_delete.tcl:99 +#: git-gui.sh:2019 git-gui.sh:2356 lib/remote_branch_delete.tcl:99 msgid "Rescan" msgstr "Resynchroniser" -#: git-gui.sh:1988 +#: git-gui.sh:2025 msgid "Stage To Commit" msgstr "Commiter un pré-commit" -#: git-gui.sh:1994 +#: git-gui.sh:2031 msgid "Stage Changed Files To Commit" msgstr "Commiter fichiers modifiés dans pré-commit" -#: git-gui.sh:2000 +#: git-gui.sh:2037 msgid "Unstage From Commit" msgstr "Commit vers pré-commit" -#: git-gui.sh:2005 lib/index.tcl:393 +#: git-gui.sh:2042 lib/index.tcl:395 msgid "Revert Changes" msgstr "Inverser modification" -#: git-gui.sh:2012 git-gui.sh:2329 git-gui.sh:2427 +#: git-gui.sh:2049 git-gui.sh:2368 git-gui.sh:2467 msgid "Sign Off" msgstr "Se désinscrire" -#: git-gui.sh:2016 git-gui.sh:2333 +#: git-gui.sh:2053 git-gui.sh:2372 msgid "Commit@@verb" msgstr "Commiter" -#: git-gui.sh:2027 +#: git-gui.sh:2064 msgid "Local Merge..." msgstr "Fusion locale..." -#: git-gui.sh:2032 +#: git-gui.sh:2069 msgid "Abort Merge..." msgstr "Abandonner fusion..." -#: git-gui.sh:2044 +#: git-gui.sh:2081 msgid "Push..." msgstr "Pousser..." -#: git-gui.sh:2055 lib/choose_repository.tcl:40 +#: git-gui.sh:2092 lib/choose_repository.tcl:41 msgid "Apple" msgstr "Pomme" -#: git-gui.sh:2058 git-gui.sh:2080 lib/about.tcl:13 -#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49 +#: git-gui.sh:2095 git-gui.sh:2117 lib/about.tcl:14 +#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 #, tcl-format msgid "About %s" msgstr "A propos de %s" -#: git-gui.sh:2062 +#: git-gui.sh:2099 msgid "Preferences..." msgstr "Préférences..." -#: git-gui.sh:2070 git-gui.sh:2595 +#: git-gui.sh:2107 git-gui.sh:2639 msgid "Options..." msgstr "Options..." -#: git-gui.sh:2076 lib/choose_repository.tcl:46 +#: git-gui.sh:2113 lib/choose_repository.tcl:47 msgid "Help" msgstr "Aide" -#: git-gui.sh:2117 +#: git-gui.sh:2154 msgid "Online Documentation" msgstr "Documentation en ligne" -#: git-gui.sh:2201 +#: git-gui.sh:2238 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" -msgstr "fatale : pas d'infos sur le chemin %s : Fichier ou répertoire inexistant" +msgstr "" +"fatale : pas d'infos sur le chemin %s : Fichier ou répertoire inexistant" -#: git-gui.sh:2234 +#: git-gui.sh:2271 msgid "Current Branch:" msgstr "Branche courante :" -#: git-gui.sh:2255 +#: git-gui.sh:2292 msgid "Staged Changes (Will Commit)" msgstr "Modifications pré-commitées" -#: git-gui.sh:2274 +#: git-gui.sh:2312 msgid "Unstaged Changes" msgstr "Modifications non pré-commitées" -#: git-gui.sh:2323 +#: git-gui.sh:2362 msgid "Stage Changed" msgstr "Pré-commit modifié" -#: git-gui.sh:2339 lib/transport.tcl:93 lib/transport.tcl:182 +#: git-gui.sh:2378 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" msgstr "Pousser" -#: git-gui.sh:2369 +#: git-gui.sh:2408 msgid "Initial Commit Message:" msgstr "Message de commit initial :" -#: git-gui.sh:2370 +#: git-gui.sh:2409 msgid "Amended Commit Message:" msgstr "Message de commit corrigé :" -#: git-gui.sh:2371 +#: git-gui.sh:2410 msgid "Amended Initial Commit Message:" msgstr "Message de commit initial corrigé :" -#: git-gui.sh:2372 +#: git-gui.sh:2411 msgid "Amended Merge Commit Message:" msgstr "Message de commit de fusion corrigé :" -#: git-gui.sh:2373 +#: git-gui.sh:2412 msgid "Merge Commit Message:" msgstr "Message de commit de fusion :" -#: git-gui.sh:2374 +#: git-gui.sh:2413 msgid "Commit Message:" msgstr "Message de commit :" -#: git-gui.sh:2419 git-gui.sh:2557 lib/console.tcl:71 +#: git-gui.sh:2459 git-gui.sh:2622 lib/console.tcl:73 msgid "Copy All" msgstr "Copier tout" -#: git-gui.sh:2443 lib/blame.tcl:104 +#: git-gui.sh:2483 lib/blame.tcl:107 msgid "File:" msgstr "Fichier :" -#: git-gui.sh:2545 -msgid "Refresh" -msgstr "Rafraichir" - -#: git-gui.sh:2566 +#: git-gui.sh:2589 msgid "Apply/Reverse Hunk" msgstr "Appliquer/Inverser section" -#: git-gui.sh:2572 -msgid "Decrease Font Size" -msgstr "Réduire fonte" - -#: git-gui.sh:2576 -msgid "Increase Font Size" -msgstr "Agrandir fonte" - -#: git-gui.sh:2581 +#: git-gui.sh:2595 msgid "Show Less Context" msgstr "Montrer moins de contexte" -#: git-gui.sh:2588 +#: git-gui.sh:2602 msgid "Show More Context" msgstr "Montrer plus de contexte" -#: git-gui.sh:2602 +#: git-gui.sh:2610 +msgid "Refresh" +msgstr "Rafraichir" + +#: git-gui.sh:2631 +msgid "Decrease Font Size" +msgstr "Réduire fonte" + +#: git-gui.sh:2635 +msgid "Increase Font Size" +msgstr "Agrandir fonte" + +#: git-gui.sh:2646 msgid "Unstage Hunk From Commit" msgstr "Enlever section pré-commitée" -#: git-gui.sh:2604 +#: git-gui.sh:2648 msgid "Stage Hunk For Commit" msgstr "Pré-commiter section" -#: git-gui.sh:2623 +#: git-gui.sh:2667 msgid "Initializing..." msgstr "Initialisation..." -#: git-gui.sh:2718 +#: git-gui.sh:2762 #, tcl-format msgid "" "Possible environment issues exist.\n" @@ -451,7 +452,7 @@ msgstr "" "sous-processus de Git lancés par %s\n" "\n" -#: git-gui.sh:2748 +#: git-gui.sh:2792 msgid "" "\n" "This is due to a known issue with the\n" @@ -461,7 +462,7 @@ msgstr "" "Ceci est du à un problème connu avec\n" "le binaire Tcl distribué par Cygwin." -#: git-gui.sh:2753 +#: git-gui.sh:2797 #, tcl-format msgid "" "\n" @@ -478,7 +479,7 @@ msgstr "" "de l'utilisateur) et 'user.email' (addresse email\n" "de l'utilisateur) dans votre fichier '~/.gitconfig'.\n" -#: lib/about.tcl:25 +#: lib/about.tcl:26 msgid "git-gui - a graphical user interface for Git." msgstr "git-gui - une interface graphique utilisateur pour Git" @@ -490,56 +491,56 @@ msgstr "Visionneur de fichier" msgid "Commit:" msgstr "Commit :" -#: lib/blame.tcl:249 +#: lib/blame.tcl:264 msgid "Copy Commit" msgstr "Copier commit" -#: lib/blame.tcl:369 +#: lib/blame.tcl:384 #, tcl-format msgid "Reading %s..." msgstr "Lecture de %s..." -#: lib/blame.tcl:473 +#: lib/blame.tcl:488 msgid "Loading copy/move tracking annotations..." msgstr "Chargement des annotations de suivi des copies/déplacements..." -#: lib/blame.tcl:493 +#: lib/blame.tcl:508 msgid "lines annotated" msgstr "lignes annotées" -#: lib/blame.tcl:674 +#: lib/blame.tcl:689 msgid "Loading original location annotations..." msgstr "Chargement des annotations d'emplacement original" -#: lib/blame.tcl:677 +#: lib/blame.tcl:692 msgid "Annotation complete." msgstr "Annotation terminée." -#: lib/blame.tcl:731 +#: lib/blame.tcl:746 msgid "Loading annotation..." msgstr "Chargement des annotations..." -#: lib/blame.tcl:787 +#: lib/blame.tcl:802 msgid "Author:" msgstr "Auteur :" -#: lib/blame.tcl:791 +#: lib/blame.tcl:806 msgid "Committer:" msgstr "Commiteur :" -#: lib/blame.tcl:796 +#: lib/blame.tcl:811 msgid "Original File:" msgstr "Fichier original :" -#: lib/blame.tcl:910 +#: lib/blame.tcl:925 msgid "Originally By:" msgstr "A l'origine par :" -#: lib/blame.tcl:916 +#: lib/blame.tcl:931 msgid "In File:" msgstr "Dans le fichier :" -#: lib/blame.tcl:921 +#: lib/blame.tcl:936 msgid "Copied Or Moved Here By:" msgstr "Copié ou déplacé ici par :" @@ -552,17 +553,17 @@ msgid "Checkout" msgstr "Emprunter" #: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35 -#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:281 -#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:172 -#: lib/option.tcl:90 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 +#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282 +#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:171 +#: lib/option.tcl:103 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 msgid "Cancel" msgstr "Annuler" -#: lib/branch_checkout.tcl:32 lib/browser.tcl:286 +#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 msgid "Revision" msgstr "Révision" -#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:202 +#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:242 msgid "Options" msgstr "Options" @@ -582,7 +583,7 @@ msgstr "Créer branche" msgid "Create New Branch" msgstr "Créer nouvelle branche" -#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375 +#: lib/branch_create.tcl:31 lib/choose_repository.tcl:371 msgid "Create" msgstr "Créer" @@ -629,7 +630,8 @@ msgstr "Merci de choisir une branche de suivi" #: lib/branch_create.tcl:140 #, tcl-format msgid "Tracking branch %s is not a branch in the remote repository." -msgstr "La branche de suivi %s n'est pas une branche dans le référentiel distant." +msgstr "" +"La branche de suivi %s n'est pas une branche dans le référentiel distant." #: lib/branch_create.tcl:153 lib/branch_rename.tcl:86 msgid "Please supply a branch name." @@ -722,22 +724,22 @@ msgstr "Lancement..." msgid "File Browser" msgstr "Visionneur de fichier" -#: lib/browser.tcl:125 lib/browser.tcl:142 +#: lib/browser.tcl:126 lib/browser.tcl:143 #, tcl-format msgid "Loading %s..." msgstr "Chargement de %s..." -#: lib/browser.tcl:186 +#: lib/browser.tcl:187 msgid "[Up To Parent]" msgstr "[Jusqu'au parent]" -#: lib/browser.tcl:266 lib/browser.tcl:272 +#: lib/browser.tcl:267 lib/browser.tcl:273 msgid "Browse Branch Files" msgstr "Visionner fichiers de branches" -#: lib/browser.tcl:277 lib/choose_repository.tcl:391 -#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492 -#: lib/choose_repository.tcl:989 +#: lib/browser.tcl:278 lib/choose_repository.tcl:387 +#: lib/choose_repository.tcl:474 lib/choose_repository.tcl:484 +#: lib/choose_repository.tcl:987 msgid "Browse" msgstr "Visionner" @@ -751,7 +753,7 @@ msgstr "Récupération de %s à partir de %s" msgid "fatal: Cannot resolve %s" msgstr "Erreur fatale : Impossible de résoudre %s" -#: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 +#: lib/checkout_op.tcl:140 lib/console.tcl:81 lib/database.tcl:31 msgid "Close" msgstr "Fermer" @@ -796,9 +798,12 @@ msgid "" "\n" "The rescan will be automatically started now.\n" msgstr "" -"L'état lors de la dernière synchronisation ne correspond plus à l'état du référentiel.\n" +"L'état lors de la dernière synchronisation ne correspond plus à l'état du " +"référentiel.\n" "\n" -"Un autre programme Git a modifié ce référentiel depuis la dernière synchronisation. Une resynchronisation doit être effectuée avant de pouvoir modifier la branche courante.\n" +"Un autre programme Git a modifié ce référentiel depuis la dernière " +"synchronisation. Une resynchronisation doit être effectuée avant de pouvoir " +"modifier la branche courante.\n" "\n" "Cela va être fait tout de suite automatiquement.\n" @@ -807,10 +812,15 @@ msgstr "" msgid "Updating working directory to '%s'..." msgstr "Mise à jour du répertoire courant avec '%s'..." +#: lib/checkout_op.tcl:323 +msgid "files checked out" +msgstr "" + #: lib/checkout_op.tcl:353 #, tcl-format msgid "Aborted checkout of '%s' (file level merging is required)." -msgstr "Emprunt de '%s' abandonné. (Il est nécessaire de fusionner des fichiers.)" +msgstr "" +"Emprunt de '%s' abandonné. (Il est nécessaire de fusionner des fichiers.)" #: lib/checkout_op.tcl:354 msgid "File level merge required." @@ -830,9 +840,10 @@ msgid "" msgstr "" "Vous n'êtes plus ur une branche locale.\n" "\n" -"Si vous vouliez être sur une branche, créez en une maintenant en partant de 'Cet emprunt détaché'." +"Si vous vouliez être sur une branche, créez en une maintenant en partant de " +"'Cet emprunt détaché'." -#: lib/checkout_op.tcl:446 +#: lib/checkout_op.tcl:446 lib/checkout_op.tcl:450 #, tcl-format msgid "Checked out '%s'." msgstr "'%s' emprunté." @@ -851,7 +862,7 @@ msgstr "Récupérer les commits perdus ne sera peut être pas facile." msgid "Reset '%s'?" msgstr "Réinitialiser '%s' ?" -#: lib/checkout_op.tcl:510 lib/merge.tcl:164 +#: lib/checkout_op.tcl:510 lib/merge.tcl:163 msgid "Visualize" msgstr "Visualiser" @@ -867,7 +878,9 @@ msgid "" msgstr "" "Le changement de la branche courante a échoué.\n" "\n" -"Le répertoire courant n'est que partiellement modifié. Les fichiers ont été mis à jour avec succès, mais la mise à jour d'un fichier interne à Git a échouée.\n" +"Le répertoire courant n'est que partiellement modifié. Les fichiers ont été " +"mis à jour avec succès, mais la mise à jour d'un fichier interne à Git a " +"échouée.\n" "\n" "Cela n'aurait pas du se produire. %s va abandonner et se terminer." @@ -879,15 +892,15 @@ msgstr "Sélectionner" msgid "Font Family" msgstr "Famille de fonte" -#: lib/choose_font.tcl:73 +#: lib/choose_font.tcl:74 msgid "Font Size" msgstr "Taille de fonte" -#: lib/choose_font.tcl:90 +#: lib/choose_font.tcl:91 msgid "Font Example" msgstr "Exemple de fonte" -#: lib/choose_font.tcl:101 +#: lib/choose_font.tcl:103 msgid "" "This is example text.\n" "If you like this text, it can be your font." @@ -895,225 +908,230 @@ msgstr "" "C'est un texte d'exemple.\n" "Si vous aimez ce texte, vous pouvez choisir cette fonte." -#: lib/choose_repository.tcl:27 +#: lib/choose_repository.tcl:28 msgid "Git Gui" msgstr "Git Gui" -#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380 +#: lib/choose_repository.tcl:81 lib/choose_repository.tcl:376 msgid "Create New Repository" msgstr "Créer nouveau référentiel" -#: lib/choose_repository.tcl:86 +#: lib/choose_repository.tcl:87 msgid "New..." msgstr "Nouveau..." -#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468 +#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:460 msgid "Clone Existing Repository" msgstr "Cloner référentiel existant" -#: lib/choose_repository.tcl:99 +#: lib/choose_repository.tcl:100 msgid "Clone..." msgstr "Cloner..." -#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978 +#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:976 msgid "Open Existing Repository" msgstr "Ouvrir référentiel existant" -#: lib/choose_repository.tcl:112 +#: lib/choose_repository.tcl:113 msgid "Open..." msgstr "Ouvrir..." -#: lib/choose_repository.tcl:125 +#: lib/choose_repository.tcl:126 msgid "Recent Repositories" msgstr "Référentiels récents" -#: lib/choose_repository.tcl:131 +#: lib/choose_repository.tcl:132 msgid "Open Recent Repository:" msgstr "Ouvrir référentiel récent :" -#: lib/choose_repository.tcl:294 -#, tcl-format -msgid "Location %s already exists." -msgstr "L'emplacement %s existe déjà ." - -#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307 -#: lib/choose_repository.tcl:314 +#: lib/choose_repository.tcl:296 lib/choose_repository.tcl:303 +#: lib/choose_repository.tcl:310 #, tcl-format msgid "Failed to create repository %s:" msgstr "La création du référentiel %s a échouée :" -#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486 +#: lib/choose_repository.tcl:381 lib/choose_repository.tcl:478 msgid "Directory:" msgstr "Répertoire :" -#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544 -#: lib/choose_repository.tcl:1013 +#: lib/choose_repository.tcl:412 lib/choose_repository.tcl:537 +#: lib/choose_repository.tcl:1011 msgid "Git Repository" msgstr "Référentiel Git" -#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437 +#: lib/choose_repository.tcl:437 #, tcl-format msgid "Directory %s already exists." msgstr "Le répertoire %s existe déjà ." -#: lib/choose_repository.tcl:442 +#: lib/choose_repository.tcl:441 #, tcl-format msgid "File %s already exists." msgstr "Le fichier %s existe déjà ." -#: lib/choose_repository.tcl:463 +#: lib/choose_repository.tcl:455 msgid "Clone" msgstr "Cloner" -#: lib/choose_repository.tcl:476 +#: lib/choose_repository.tcl:468 msgid "URL:" msgstr "URL :" -#: lib/choose_repository.tcl:496 +#: lib/choose_repository.tcl:489 msgid "Clone Type:" msgstr "Type de clonage :" -#: lib/choose_repository.tcl:502 +#: lib/choose_repository.tcl:495 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "Standard (rapide, semi-redondant, liens durs)" -#: lib/choose_repository.tcl:508 +#: lib/choose_repository.tcl:501 msgid "Full Copy (Slower, Redundant Backup)" msgstr "Copy complète (plus lent, sauvegarde redondante)" -#: lib/choose_repository.tcl:514 +#: lib/choose_repository.tcl:507 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "Partagé (le plus rapide, non recommandé, pas de sauvegarde)" -#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597 -#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808 -#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027 +#: lib/choose_repository.tcl:543 lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:736 lib/choose_repository.tcl:806 +#: lib/choose_repository.tcl:1017 lib/choose_repository.tcl:1025 #, tcl-format msgid "Not a Git repository: %s" msgstr "'%s' n'est pas un référentiel Git." -#: lib/choose_repository.tcl:586 +#: lib/choose_repository.tcl:579 msgid "Standard only available for local repository." msgstr "Standard n'est disponible que pour un référentiel local." -#: lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:583 msgid "Shared only available for local repository." msgstr "Partagé n'est disponible que pour un référentiel local." -#: lib/choose_repository.tcl:617 +#: lib/choose_repository.tcl:604 +#, tcl-format +msgid "Location %s already exists." +msgstr "L'emplacement %s existe déjà ." + +#: lib/choose_repository.tcl:615 msgid "Failed to configure origin" msgstr "La configuration de l'origine a échouée." -#: lib/choose_repository.tcl:629 +#: lib/choose_repository.tcl:627 msgid "Counting objects" msgstr "Comptage des objets" -#: lib/choose_repository.tcl:630 +#: lib/choose_repository.tcl:628 msgid "buckets" msgstr "paniers" -#: lib/choose_repository.tcl:654 +#: lib/choose_repository.tcl:652 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" msgstr "Impossible de copier 'objects/info/alternates' : %s" -#: lib/choose_repository.tcl:690 +#: lib/choose_repository.tcl:688 #, tcl-format msgid "Nothing to clone from %s." msgstr "Il n'y a rien à cloner depuis %s." -#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906 -#: lib/choose_repository.tcl:918 +#: lib/choose_repository.tcl:690 lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:916 msgid "The 'master' branch has not been initialized." msgstr "Cette branche 'master' n'a pas été initialisée." -#: lib/choose_repository.tcl:705 +#: lib/choose_repository.tcl:703 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "Les liens durs ne sont pas disponibles. On se résoud à copier." -#: lib/choose_repository.tcl:717 +#: lib/choose_repository.tcl:715 #, tcl-format msgid "Cloning from %s" msgstr "Clonage depuis %s" -#: lib/choose_repository.tcl:748 +#: lib/choose_repository.tcl:746 msgid "Copying objects" msgstr "Copie des objets" -#: lib/choose_repository.tcl:749 +#: lib/choose_repository.tcl:747 msgid "KiB" msgstr "KiB" -#: lib/choose_repository.tcl:773 +#: lib/choose_repository.tcl:771 #, tcl-format msgid "Unable to copy object: %s" msgstr "Impossible de copier l'objet : %s" -#: lib/choose_repository.tcl:783 +#: lib/choose_repository.tcl:781 msgid "Linking objects" msgstr "Liaison des objets" -#: lib/choose_repository.tcl:784 +#: lib/choose_repository.tcl:782 msgid "objects" msgstr "objets" -#: lib/choose_repository.tcl:792 +#: lib/choose_repository.tcl:790 #, tcl-format msgid "Unable to hardlink object: %s" msgstr "Impossible créer un lien dur pour l'objet : %s" -#: lib/choose_repository.tcl:847 +#: lib/choose_repository.tcl:845 msgid "Cannot fetch branches and objects. See console output for details." -msgstr "Impossible de récupérer les branches et objets. Voir la sortie console pour plus de détails." +msgstr "" +"Impossible de récupérer les branches et objets. Voir la sortie console pour " +"plus de détails." -#: lib/choose_repository.tcl:858 +#: lib/choose_repository.tcl:856 msgid "Cannot fetch tags. See console output for details." -msgstr "Impossible de récupérer les marques. Voir la sortie console pour plus de détails." +msgstr "" +"Impossible de récupérer les marques. Voir la sortie console pour plus de " +"détails." -#: lib/choose_repository.tcl:882 +#: lib/choose_repository.tcl:880 msgid "Cannot determine HEAD. See console output for details." -msgstr "Impossible de déterminer HEAD. Voir la sortie console pour plus de détails." +msgstr "" +"Impossible de déterminer HEAD. Voir la sortie console pour plus de détails." -#: lib/choose_repository.tcl:891 +#: lib/choose_repository.tcl:889 #, tcl-format msgid "Unable to cleanup %s" msgstr "Impossible de nettoyer %s" -#: lib/choose_repository.tcl:897 +#: lib/choose_repository.tcl:895 msgid "Clone failed." msgstr "Le clonage a échoué." -#: lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:902 msgid "No default branch obtained." msgstr "Aucune branche par défaut n'a été obtenue." -#: lib/choose_repository.tcl:915 +#: lib/choose_repository.tcl:913 #, tcl-format msgid "Cannot resolve %s as a commit." msgstr "Impossible de résoudre %s comme commit." -#: lib/choose_repository.tcl:927 +#: lib/choose_repository.tcl:925 msgid "Creating working directory" msgstr "Création du répertoire de travail" -#: lib/choose_repository.tcl:928 lib/index.tcl:65 lib/index.tcl:127 +#: lib/choose_repository.tcl:926 lib/index.tcl:65 lib/index.tcl:127 #: lib/index.tcl:193 msgid "files" msgstr "fichiers" -#: lib/choose_repository.tcl:957 +#: lib/choose_repository.tcl:955 msgid "Initial file checkout failed." msgstr "L'emprunt initial de fichier a échoué." -#: lib/choose_repository.tcl:973 +#: lib/choose_repository.tcl:971 msgid "Open" msgstr "Ouvrir" -#: lib/choose_repository.tcl:983 +#: lib/choose_repository.tcl:981 msgid "Repository:" msgstr "Référentiel :" -#: lib/choose_repository.tcl:1033 +#: lib/choose_repository.tcl:1031 #, tcl-format msgid "Failed to open repository %s:" msgstr "Impossible d'ouvrir le référentiel %s :" @@ -1134,7 +1152,7 @@ msgstr "Branche locale" msgid "Tracking Branch" msgstr "Suivi de branche" -#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:537 +#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538 msgid "Tag" msgstr "Marque" @@ -1151,11 +1169,11 @@ msgstr "Pas de révision selectionnée." msgid "Revision expression is empty." msgstr "L'expression de révision est vide." -#: lib/choose_rev.tcl:530 +#: lib/choose_rev.tcl:531 msgid "Updated" msgstr "Misa à jour" -#: lib/choose_rev.tcl:558 +#: lib/choose_rev.tcl:559 msgid "URL" msgstr "URL" @@ -1168,7 +1186,8 @@ msgid "" msgstr "" "Il n'y a rien à corriger.\n" "\n" -"Vous allez créer le commit initial. Il n'y a pas de commit avant celui-ci à corriger.\n" +"Vous allez créer le commit initial. Il n'y a pas de commit avant celui-ci à " +"corriger.\n" #: lib/commit.tcl:18 msgid "" @@ -1180,7 +1199,9 @@ msgid "" msgstr "" "Impossible de corriger pendant une fusion.\n" "\n" -"Vous êtes actuellement au milieu d'une fusion qui n'a pas été completement terminée. Vous ne pouvez pas corriger le commit précédant sauf si vous abandonnez la fusion courante.\n" +"Vous êtes actuellement au milieu d'une fusion qui n'a pas été completement " +"terminée. Vous ne pouvez pas corriger le commit précédant sauf si vous " +"abandonnez la fusion courante.\n" #: lib/commit.tcl:49 msgid "Error loading commit data for amend:" @@ -1203,9 +1224,12 @@ msgid "" "\n" "The rescan will be automatically started now.\n" msgstr "" -"L'état lors de la dernière synchronisation ne correspond plus à l'état du référentiel.\n" +"L'état lors de la dernière synchronisation ne correspond plus à l'état du " +"référentiel.\n" "\n" -"Un autre programme Git a modifié ce référentiel depuis la dernière synchronisation. Une resynshronisation doit être effectuée avant de pouvoir créer un nouveau commit.\n" +"Un autre programme Git a modifié ce référentiel depuis la dernière " +"synchronisation. Une resynshronisation doit être effectuée avant de pouvoir " +"créer un nouveau commit.\n" "\n" "Cela va être fait tout de suite automatiquement.\n" @@ -1219,7 +1243,8 @@ msgid "" msgstr "" "Des fichiers non fusionnés ne peuvent être commités.\n" "\n" -"Le fichier %s a des conflicts de fusion. Vous devez les résoudre et pré-commiter le fichier avant de pouvoir commiter.\n" +"Le fichier %s a des conflicts de fusion. Vous devez les résoudre et pré-" +"commiter le fichier avant de pouvoir commiter.\n" #: lib/commit.tcl:162 #, tcl-format @@ -1260,16 +1285,46 @@ msgstr "" "- Deuxième ligne : rien.\n" "- Lignes suivantes : Décrire pourquoi ces modifications sont bonnes.\n" -#: lib/commit.tcl:257 +#: lib/commit.tcl:207 +#, tcl-format +msgid "warning: Tcl does not support encoding '%s'." +msgstr "attention : Tcl ne supporte pas l'encodage '%s'." + +#: lib/commit.tcl:221 +msgid "Calling pre-commit hook..." +msgstr "" + +#: lib/commit.tcl:236 +msgid "Commit declined by pre-commit hook." +msgstr "" + +#: lib/commit.tcl:259 +msgid "Calling commit-msg hook..." +msgstr "" + +#: lib/commit.tcl:274 +msgid "Commit declined by commit-msg hook." +msgstr "" + +#: lib/commit.tcl:287 +msgid "Committing changes..." +msgstr "" + +#: lib/commit.tcl:303 msgid "write-tree failed:" msgstr "write-tree a échoué :" -#: lib/commit.tcl:275 +#: lib/commit.tcl:304 lib/commit.tcl:348 lib/commit.tcl:368 +#, fuzzy +msgid "Commit failed." +msgstr "Le clonage a échoué." + +#: lib/commit.tcl:321 #, tcl-format msgid "Commit %s appears to be corrupt" msgstr "Le commit %s semble être corrompu" -#: lib/commit.tcl:279 +#: lib/commit.tcl:326 msgid "" "No changes to commit.\n" "\n" @@ -1279,41 +1334,37 @@ msgid "" msgstr "" "Pas de modification à commiter.\n" "\n" -"Aucun fichier n'a été modifié par ce commit et il ne s'agit pas d'un commit de fusion.\n" +"Aucun fichier n'a été modifié par ce commit et il ne s'agit pas d'un commit " +"de fusion.\n" "\n" "Une resynchronisation va être lancée tout de suite automatiquement.\n" -#: lib/commit.tcl:286 +#: lib/commit.tcl:333 msgid "No changes to commit." msgstr "Pas de modifications à commiter." -#: lib/commit.tcl:303 -#, tcl-format -msgid "warning: Tcl does not support encoding '%s'." -msgstr "attention : Tcl ne supporte pas l'encodage '%s'." - -#: lib/commit.tcl:317 +#: lib/commit.tcl:347 msgid "commit-tree failed:" msgstr "commit-tree a échoué :" -#: lib/commit.tcl:339 +#: lib/commit.tcl:367 msgid "update-ref failed:" msgstr "update-ref a échoué" -#: lib/commit.tcl:430 +#: lib/commit.tcl:454 #, tcl-format msgid "Created commit %s: %s" msgstr "Commit créé %s : %s" -#: lib/console.tcl:57 +#: lib/console.tcl:59 msgid "Working... please wait..." msgstr "Travail en cours... merci de patienter..." -#: lib/console.tcl:183 +#: lib/console.tcl:186 msgid "Success" msgstr "Succès" -#: lib/console.tcl:196 +#: lib/console.tcl:200 msgid "Error: Command Failed" msgstr "Erreur : échec de la commande" @@ -1345,7 +1396,7 @@ msgstr "Objets empaquetés attendant d'être supprimés" msgid "Garbage files" msgstr "Fichiers poubelle" -#: lib/database.tcl:72ets +#: lib/database.tcl:72 msgid "Compressing the object database" msgstr "Compression de la base des objets" @@ -1363,9 +1414,12 @@ msgid "" "\n" "Compress the database now?" msgstr "" -"Ce référentiel comprend actuellement environ %i objets ayant leur fichier particulier.\n" +"Ce référentiel comprend actuellement environ %i objets ayant leur fichier " +"particulier.\n" "\n" -"Pour conserver une performance optimale, il est fortement recommandé de comprimer la base quand plus de %i objets ayant leur fichier particulier existent.\n" +"Pour conserver une performance optimale, il est fortement recommandé de " +"comprimer la base quand plus de %i objets ayant leur fichier particulier " +"existent.\n" "\n" "Comprimer la base maintenant ?" @@ -1391,9 +1445,11 @@ msgstr "" "\n" "%s ne comporte aucune modification.\n" "\n" -"La date de modification de ce fichier a été mise à jour par une autre application, mais le contenu du fichier n'a pas changé.\n" +"La date de modification de ce fichier a été mise à jour par une autre " +"application, mais le contenu du fichier n'a pas changé.\n" "\n" -"Une resynchronisation va être lancée automatiquement pour trouver d'autres fichiers qui pourraient se trouver dans le même état." +"Une resynchronisation va être lancée automatiquement pour trouver d'autres " +"fichiers qui pourraient se trouver dans le même état." #: lib/diff.tcl:81 #, tcl-format @@ -1421,23 +1477,24 @@ msgstr "* Fichier binaire (pas d'apperçu du contenu)." msgid "Error loading diff:" msgstr "Erreur lors du chargement des différences :" -#: lib/diff.tcl:302 +#: lib/diff.tcl:303 msgid "Failed to unstage selected hunk." -msgstr "La suppression dans le pré-commit de la section sélectionnée a échouée." +msgstr "" +"La suppression dans le pré-commit de la section sélectionnée a échouée." -#: lib/diff.tcl:309 +#: lib/diff.tcl:310 msgid "Failed to stage selected hunk." msgstr "Le pré-commit de la section sélectionnée a échoué." -#: lib/error.tcl:12 lib/error.tcl:102 +#: lib/error.tcl:20 lib/error.tcl:114 msgid "error" msgstr "erreur" -#: lib/error.tcl:28 +#: lib/error.tcl:36 msgid "warning" msgstr "attention" -#: lib/error.tcl:81 +#: lib/error.tcl:94 msgid "You must correct the above errors before committing." msgstr "Vous devez corriger les erreurs suivantes avant de pouvoir commiter." @@ -1453,7 +1510,8 @@ msgstr "Erreur de pré-commit" msgid "" "Updating the Git index failed. A rescan will be automatically started to " "resynchronize git-gui." -msgstr "Le pré-commit a échoué. Une resynchronisation va être lancée automatiquement." +msgstr "" +"Le pré-commit a échoué. Une resynchronisation va être lancée automatiquement." #: lib/index.tcl:27 msgid "Continue" @@ -1468,6 +1526,11 @@ msgstr "Dévérouiller le pré-commit" msgid "Unstaging %s from commit" msgstr "Supprimer %s du commit" +#: lib/index.tcl:313 +#, fuzzy +msgid "Ready to commit." +msgstr "Pré-commité" + #: lib/index.tcl:326 #, tcl-format msgid "Adding %s" @@ -1483,11 +1546,13 @@ msgstr "Inverser les modifications dans le fichier %s ? " msgid "Revert changes in these %i files?" msgstr "Inverser les modifications dans ces %i fichiers ?" -#: lib/index.tcl:389 +#: lib/index.tcl:391 msgid "Any unstaged changes will be permanently lost by the revert." -msgstr "Toutes les modifications non pré-commitées seront définitivement perdues lors de l'inversion." +msgstr "" +"Toutes les modifications non pré-commitées seront définitivement perdues " +"lors de l'inversion." -#: lib/index.tcl:392 +#: lib/index.tcl:394 msgid "Do Nothing" msgstr "Ne rien faire" @@ -1499,7 +1564,8 @@ msgid "" msgstr "" "Impossible de fucionner pendant une correction.\n" "\n" -"Vous devez finir de corriger ce commit avant de lancer une quelconque fusion.\n" +"Vous devez finir de corriger ce commit avant de lancer une quelconque " +"fusion.\n" #: lib/merge.tcl:27 msgid "" @@ -1510,9 +1576,12 @@ msgid "" "\n" "The rescan will be automatically started now.\n" msgstr "" -"L'état lors de la dernière synchronisation ne correspond plus à l'état du référentiel.\n" +"L'état lors de la dernière synchronisation ne correspond plus à l'état du " +"référentiel.\n" "\n" -"Un autre programme Git a modifié ce référentiel depuis la dernière synchronisation. Une resynchronisation doit être effectuée avant de pouvoir fusionner de nouveau.\n" +"Un autre programme Git a modifié ce référentiel depuis la dernière " +"synchronisation. Une resynchronisation doit être effectuée avant de pouvoir " +"fusionner de nouveau.\n" "\n" "Cela va être fait tout de suite automatiquement\n" @@ -1530,7 +1599,9 @@ msgstr "" "\n" "Le fichier %s a des conflicts de fusion.\n" "\n" -"Vous devez les résoudre, puis pré-commiter le fichier, et enfin commiter pour terminer la fusion courante. Seulementà ce moment là , il sera possible d'effectuer une nouvelle fusion.\n" +"Vous devez les résoudre, puis pré-commiter le fichier, et enfin commiter " +"pour terminer la fusion courante. Seulementà ce moment là , il sera possible " +"d'effectuer une nouvelle fusion.\n" #: lib/merge.tcl:54 #, tcl-format @@ -1546,7 +1617,9 @@ msgstr "" "\n" "Le fichier %s est modifié.\n" "\n" -"Vous devriez terminer le commit courant avant de lancer une fusion. En faisait comme cela, vous éviterez de devoir éventuellement abandonner une fusion ayant échouée.\n" +"Vous devriez terminer le commit courant avant de lancer une fusion. En " +"faisait comme cela, vous éviterez de devoir éventuellement abandonner une " +"fusion ayant échouée.\n" #: lib/merge.tcl:106 #, tcl-format @@ -1554,28 +1627,28 @@ msgid "%s of %s" msgstr "%s de %s" #: lib/merge.tcl:119 -#, tcl-format -msgid "Merging %s and %s" +#, fuzzy, tcl-format +msgid "Merging %s and %s..." msgstr "Fusion de %s et %s" -#: lib/merge.tcl:131 +#: lib/merge.tcl:130 msgid "Merge completed successfully." msgstr "La fusion s'est faite avec succès." -#: lib/merge.tcl:133 +#: lib/merge.tcl:132 msgid "Merge failed. Conflict resolution is required." msgstr "La fusion a echouée. Il est nécessaire de résoudre les conflicts." -#: lib/merge.tcl:158 +#: lib/merge.tcl:157 #, tcl-format msgid "Merge Into %s" msgstr "Fusion dans %s" -#: lib/merge.tcl:177 +#: lib/merge.tcl:176 msgid "Revision To Merge" msgstr "Révision à fusionner" -#: lib/merge.tcl:212 +#: lib/merge.tcl:211 msgid "" "Cannot abort while amending.\n" "\n" @@ -1585,7 +1658,7 @@ msgstr "" "\n" "Vous devez finir de corriger ce commit.\n" -#: lib/merge.tcl:222 +#: lib/merge.tcl:221 msgid "" "Abort merge?\n" "\n" @@ -1595,11 +1668,12 @@ msgid "" msgstr "" "Abandonner la fusion ?\n" "\n" -"Abandonner la fusion courante entrainera la perte de TOUTES les modifications non commitées.\n" +"Abandonner la fusion courante entrainera la perte de TOUTES les " +"modifications non commitées.\n" "\n" "Abandonner quand même la fusion courante ?" -#: lib/merge.tcl:228 +#: lib/merge.tcl:227 msgid "" "Reset changes?\n" "\n" @@ -1609,97 +1683,112 @@ msgid "" msgstr "" "Réinitialiser les modifications ?\n" "\n" -"Réinitialiser les modifications va faire perdre TOUTES les modifications non commitées.\n" +"Réinitialiser les modifications va faire perdre TOUTES les modifications non " +"commitées.\n" "\n" "Réinitialiser quand même les modifications courantes ?" -#: lib/merge.tcl:239 +#: lib/merge.tcl:238 msgid "Aborting" msgstr "Abandon" -#: lib/merge.tcl:266 +#: lib/merge.tcl:238 +#, fuzzy +msgid "files reset" +msgstr "fichiers" + +#: lib/merge.tcl:265 msgid "Abort failed." msgstr "L'abandon a échoué." -#: lib/merge.tcl:268 +#: lib/merge.tcl:267 msgid "Abort completed. Ready." msgstr "Abandon teminé. Prêt." -#: lib/option.tcl:82 +#: lib/option.tcl:95 msgid "Restore Defaults" msgstr "Remettre les valeurs par défaut" -#: lib/option.tcl:86 +#: lib/option.tcl:99 msgid "Save" msgstr "Sauvegarder" -#: lib/option.tcl:96 +#: lib/option.tcl:109 #, tcl-format msgid "%s Repository" msgstr "Référentiel de %s" -#: lib/option.tcl:97 +#: lib/option.tcl:110 msgid "Global (All Repositories)" msgstr "Globales (tous les référentiels)" -#: lib/option.tcl:103 +#: lib/option.tcl:116 msgid "User Name" msgstr "Nom d'utilisateur" -#: lib/option.tcl:104 +#: lib/option.tcl:117 msgid "Email Address" msgstr "Adresse email" -#: lib/option.tcl:106 +#: lib/option.tcl:119 msgid "Summarize Merge Commits" msgstr "Résumer les commits de fusion" -#: lib/option.tcl:107 +#: lib/option.tcl:120 msgid "Merge Verbosity" msgstr "Fusion bavarde" -#: lib/option.tcl:108 +#: lib/option.tcl:121 msgid "Show Diffstat After Merge" msgstr "Montrer statistiques de diff après fusion" -#: lib/option.tcl:110 +#: lib/option.tcl:123 msgid "Trust File Modification Timestamps" msgstr "Faire confiance aux dates de modification de fichiers " -#: lib/option.tcl:111 +#: lib/option.tcl:124 msgid "Prune Tracking Branches During Fetch" msgstr "Nettoyer les branches de suivi pendant la récupération" -#: lib/option.tcl:112 +#: lib/option.tcl:125 msgid "Match Tracking Branches" msgstr "Faire correspondre les branches de suivi" -#: lib/option.tcl:113 +#: lib/option.tcl:126 msgid "Number of Diff Context Lines" msgstr "Nombre de lignes de contexte dans les diffs" -#: lib/option.tcl:114 +#: lib/option.tcl:127 +#, fuzzy +msgid "Commit Message Text Width" +msgstr "Message de commit :" + +#: lib/option.tcl:128 msgid "New Branch Name Template" msgstr "Nouveau modèle de nom de branche" -#: lib/option.tcl:176 +#: lib/option.tcl:192 +msgid "Spelling Dictionary:" +msgstr "" + +#: lib/option.tcl:216 msgid "Change Font" msgstr "Modifier les fontes" -#: lib/option.tcl:180 +#: lib/option.tcl:220 #, tcl-format msgid "Choose %s" msgstr "Choisir %s" -#: lib/option.tcl:186 +#: lib/option.tcl:226 msgid "pt." msgstr "pt." -#: lib/option.tcl:200 +#: lib/option.tcl:240 msgid "Preferences" msgstr "Préférences" -#: lib/option.tcl:235 +#: lib/option.tcl:275 msgid "Failed to completely save options:" msgstr "La sauvegarde complète des options a échouée :" @@ -1755,7 +1844,9 @@ msgstr "" msgid "" "One or more of the merge tests failed because you have not fetched the " "necessary commits. Try fetching from %s first." -msgstr "Une ou plusieurs des tests de fusion ont échoués parce que vous n'avez pas récupéré les commits nécessaires. Essayez de récupéré à partir de %s d'abord." +msgstr "" +"Une ou plusieurs des tests de fusion ont échoués parce que vous n'avez pas " +"récupéré les commits nécessaires. Essayez de récupéré à partir de %s d'abord." #: lib/remote_branch_delete.tcl:207 msgid "Please select one or more branches to delete." @@ -1805,6 +1896,43 @@ msgstr "Impossible d'écrire le raccourcis :" msgid "Cannot write icon:" msgstr "Impossible d'écrire l'icône :" +#: lib/spellcheck.tcl:57 +msgid "Unsupported spell checker" +msgstr "" + +#: lib/spellcheck.tcl:65 +msgid "Spell checking is unavailable" +msgstr "" + +#: lib/spellcheck.tcl:68 +msgid "Invalid spell checking configuration" +msgstr "" + +#: lib/spellcheck.tcl:70 +#, tcl-format +msgid "Reverting dictionary to %s." +msgstr "" + +#: lib/spellcheck.tcl:73 +msgid "Spell checker silently failed on startup" +msgstr "" + +#: lib/spellcheck.tcl:80 +msgid "Unrecognized spell checker" +msgstr "" + +#: lib/spellcheck.tcl:180 +msgid "No Suggestions" +msgstr "" + +#: lib/spellcheck.tcl:381 +msgid "Unexpected EOF from spell checker" +msgstr "" + +#: lib/spellcheck.tcl:385 +msgid "Spell Checker Failed" +msgstr "" + #: lib/status_bar.tcl:83 #, tcl-format msgid "%s ... %*i of %*i %s (%3i%%)" @@ -1863,7 +1991,9 @@ msgstr "Transférer options" #: lib/transport.tcl:160 msgid "Force overwrite existing branch (may discard changes)" -msgstr "Forcer l'écrasement d'une branche existante (peut supprimer des modifications)" +msgstr "" +"Forcer l'écrasement d'une branche existante (peut supprimer des " +"modifications)" #: lib/transport.tcl:164 msgid "Use thin pack (for slow network connections)" @@ -1872,4 +2002,3 @@ msgstr "Utiliser des petits paquets (pour les connexions lentes)" #: lib/transport.tcl:168 msgid "Include tags" msgstr "Inclure les marques" - diff --git a/git-gui/po/git-gui.pot b/git-gui/po/git-gui.pot index 2e332849fb..813199f782 100644 --- a/git-gui/po/git-gui.pot +++ b/git-gui/po/git-gui.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2008-02-16 21:24+0100\n" +"POT-Creation-Date: 2008-03-14 07:18+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -16,33 +16,33 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: git-gui.sh:41 git-gui.sh:604 git-gui.sh:618 git-gui.sh:631 git-gui.sh:714 -#: git-gui.sh:733 +#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 +#: git-gui.sh:763 msgid "git-gui: fatal error" msgstr "" -#: git-gui.sh:565 +#: git-gui.sh:593 #, tcl-format msgid "Invalid font specified in %s:" msgstr "" -#: git-gui.sh:590 +#: git-gui.sh:620 msgid "Main Font" msgstr "" -#: git-gui.sh:591 +#: git-gui.sh:621 msgid "Diff/Console Font" msgstr "" -#: git-gui.sh:605 +#: git-gui.sh:635 msgid "Cannot find git in PATH." msgstr "" -#: git-gui.sh:632 +#: git-gui.sh:662 msgid "Cannot parse Git version string:" msgstr "" -#: git-gui.sh:650 +#: git-gui.sh:680 #, tcl-format msgid "" "Git version cannot be determined.\n" @@ -54,79 +54,79 @@ msgid "" "Assume '%s' is version 1.5.0?\n" msgstr "" -#: git-gui.sh:888 +#: git-gui.sh:918 msgid "Git directory not found:" msgstr "" -#: git-gui.sh:895 +#: git-gui.sh:925 msgid "Cannot move to top of working directory:" msgstr "" -#: git-gui.sh:902 +#: git-gui.sh:932 msgid "Cannot use funny .git directory:" msgstr "" -#: git-gui.sh:907 +#: git-gui.sh:937 msgid "No working directory" msgstr "" -#: git-gui.sh:1054 +#: git-gui.sh:1084 lib/checkout_op.tcl:283 msgid "Refreshing file status..." msgstr "" -#: git-gui.sh:1119 +#: git-gui.sh:1149 msgid "Scanning for modified files ..." msgstr "" -#: git-gui.sh:1294 lib/browser.tcl:245 +#: git-gui.sh:1324 lib/browser.tcl:246 msgid "Ready." msgstr "" -#: git-gui.sh:1560 +#: git-gui.sh:1590 msgid "Unmodified" msgstr "" -#: git-gui.sh:1562 +#: git-gui.sh:1592 msgid "Modified, not staged" msgstr "" -#: git-gui.sh:1563 git-gui.sh:1568 +#: git-gui.sh:1593 git-gui.sh:1598 msgid "Staged for commit" msgstr "" -#: git-gui.sh:1564 git-gui.sh:1569 +#: git-gui.sh:1594 git-gui.sh:1599 msgid "Portions staged for commit" msgstr "" -#: git-gui.sh:1565 git-gui.sh:1570 +#: git-gui.sh:1595 git-gui.sh:1600 msgid "Staged for commit, missing" msgstr "" -#: git-gui.sh:1567 +#: git-gui.sh:1597 msgid "Untracked, not staged" msgstr "" -#: git-gui.sh:1572 +#: git-gui.sh:1602 msgid "Missing" msgstr "" -#: git-gui.sh:1573 +#: git-gui.sh:1603 msgid "Staged for removal" msgstr "" -#: git-gui.sh:1574 +#: git-gui.sh:1604 msgid "Staged for removal, still present" msgstr "" -#: git-gui.sh:1576 git-gui.sh:1577 git-gui.sh:1578 git-gui.sh:1579 +#: git-gui.sh:1606 git-gui.sh:1607 git-gui.sh:1608 git-gui.sh:1609 msgid "Requires merge resolution" msgstr "" -#: git-gui.sh:1614 +#: git-gui.sh:1644 msgid "Starting gitk... please wait..." msgstr "" -#: git-gui.sh:1623 +#: git-gui.sh:1653 #, tcl-format msgid "" "Unable to start gitk:\n" @@ -134,295 +134,295 @@ msgid "" "%s does not exist" msgstr "" -#: git-gui.sh:1823 lib/choose_repository.tcl:35 +#: git-gui.sh:1860 lib/choose_repository.tcl:36 msgid "Repository" msgstr "" -#: git-gui.sh:1824 +#: git-gui.sh:1861 msgid "Edit" msgstr "" -#: git-gui.sh:1826 lib/choose_rev.tcl:560 +#: git-gui.sh:1863 lib/choose_rev.tcl:561 msgid "Branch" msgstr "" -#: git-gui.sh:1829 lib/choose_rev.tcl:547 +#: git-gui.sh:1866 lib/choose_rev.tcl:548 msgid "Commit@@noun" msgstr "" -#: git-gui.sh:1832 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 +#: git-gui.sh:1869 lib/merge.tcl:120 lib/merge.tcl:149 lib/merge.tcl:167 msgid "Merge" msgstr "" -#: git-gui.sh:1833 lib/choose_rev.tcl:556 +#: git-gui.sh:1870 lib/choose_rev.tcl:557 msgid "Remote" msgstr "" -#: git-gui.sh:1842 +#: git-gui.sh:1879 msgid "Browse Current Branch's Files" msgstr "" -#: git-gui.sh:1846 +#: git-gui.sh:1883 msgid "Browse Branch Files..." msgstr "" -#: git-gui.sh:1851 +#: git-gui.sh:1888 msgid "Visualize Current Branch's History" msgstr "" -#: git-gui.sh:1855 +#: git-gui.sh:1892 msgid "Visualize All Branch History" msgstr "" -#: git-gui.sh:1862 +#: git-gui.sh:1899 #, tcl-format msgid "Browse %s's Files" msgstr "" -#: git-gui.sh:1864 +#: git-gui.sh:1901 #, tcl-format msgid "Visualize %s's History" msgstr "" -#: git-gui.sh:1869 lib/database.tcl:27 lib/database.tcl:67 +#: git-gui.sh:1906 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" msgstr "" -#: git-gui.sh:1872 lib/database.tcl:34 +#: git-gui.sh:1909 lib/database.tcl:34 msgid "Compress Database" msgstr "" -#: git-gui.sh:1875 +#: git-gui.sh:1912 msgid "Verify Database" msgstr "" -#: git-gui.sh:1882 git-gui.sh:1886 git-gui.sh:1890 lib/shortcut.tcl:7 +#: git-gui.sh:1919 git-gui.sh:1923 git-gui.sh:1927 lib/shortcut.tcl:7 #: lib/shortcut.tcl:39 lib/shortcut.tcl:71 msgid "Create Desktop Icon" msgstr "" -#: git-gui.sh:1895 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184 +#: git-gui.sh:1932 lib/choose_repository.tcl:177 lib/choose_repository.tcl:185 msgid "Quit" msgstr "" -#: git-gui.sh:1902 +#: git-gui.sh:1939 msgid "Undo" msgstr "" -#: git-gui.sh:1905 +#: git-gui.sh:1942 msgid "Redo" msgstr "" -#: git-gui.sh:1909 git-gui.sh:2403 +#: git-gui.sh:1946 git-gui.sh:2443 msgid "Cut" msgstr "" -#: git-gui.sh:1912 git-gui.sh:2406 git-gui.sh:2477 git-gui.sh:2549 -#: lib/console.tcl:67 +#: git-gui.sh:1949 git-gui.sh:2446 git-gui.sh:2520 git-gui.sh:2614 +#: lib/console.tcl:69 msgid "Copy" msgstr "" -#: git-gui.sh:1915 git-gui.sh:2409 +#: git-gui.sh:1952 git-gui.sh:2449 msgid "Paste" msgstr "" -#: git-gui.sh:1918 git-gui.sh:2412 lib/branch_delete.tcl:26 +#: git-gui.sh:1955 git-gui.sh:2452 lib/branch_delete.tcl:26 #: lib/remote_branch_delete.tcl:38 msgid "Delete" msgstr "" -#: git-gui.sh:1922 git-gui.sh:2416 git-gui.sh:2553 lib/console.tcl:69 +#: git-gui.sh:1959 git-gui.sh:2456 git-gui.sh:2618 lib/console.tcl:71 msgid "Select All" msgstr "" -#: git-gui.sh:1931 +#: git-gui.sh:1968 msgid "Create..." msgstr "" -#: git-gui.sh:1937 +#: git-gui.sh:1974 msgid "Checkout..." msgstr "" -#: git-gui.sh:1943 +#: git-gui.sh:1980 msgid "Rename..." msgstr "" -#: git-gui.sh:1948 git-gui.sh:2048 +#: git-gui.sh:1985 git-gui.sh:2085 msgid "Delete..." msgstr "" -#: git-gui.sh:1953 +#: git-gui.sh:1990 msgid "Reset..." msgstr "" -#: git-gui.sh:1965 git-gui.sh:2350 +#: git-gui.sh:2002 git-gui.sh:2389 msgid "New Commit" msgstr "" -#: git-gui.sh:1973 git-gui.sh:2357 +#: git-gui.sh:2010 git-gui.sh:2396 msgid "Amend Last Commit" msgstr "" -#: git-gui.sh:1982 git-gui.sh:2317 lib/remote_branch_delete.tcl:99 +#: git-gui.sh:2019 git-gui.sh:2356 lib/remote_branch_delete.tcl:99 msgid "Rescan" msgstr "" -#: git-gui.sh:1988 +#: git-gui.sh:2025 msgid "Stage To Commit" msgstr "" -#: git-gui.sh:1994 +#: git-gui.sh:2031 msgid "Stage Changed Files To Commit" msgstr "" -#: git-gui.sh:2000 +#: git-gui.sh:2037 msgid "Unstage From Commit" msgstr "" -#: git-gui.sh:2005 lib/index.tcl:393 +#: git-gui.sh:2042 lib/index.tcl:395 msgid "Revert Changes" msgstr "" -#: git-gui.sh:2012 git-gui.sh:2329 git-gui.sh:2427 +#: git-gui.sh:2049 git-gui.sh:2368 git-gui.sh:2467 msgid "Sign Off" msgstr "" -#: git-gui.sh:2016 git-gui.sh:2333 +#: git-gui.sh:2053 git-gui.sh:2372 msgid "Commit@@verb" msgstr "" -#: git-gui.sh:2027 +#: git-gui.sh:2064 msgid "Local Merge..." msgstr "" -#: git-gui.sh:2032 +#: git-gui.sh:2069 msgid "Abort Merge..." msgstr "" -#: git-gui.sh:2044 +#: git-gui.sh:2081 msgid "Push..." msgstr "" -#: git-gui.sh:2055 lib/choose_repository.tcl:40 +#: git-gui.sh:2092 lib/choose_repository.tcl:41 msgid "Apple" msgstr "" -#: git-gui.sh:2058 git-gui.sh:2080 lib/about.tcl:13 -#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49 +#: git-gui.sh:2095 git-gui.sh:2117 lib/about.tcl:14 +#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 #, tcl-format msgid "About %s" msgstr "" -#: git-gui.sh:2062 +#: git-gui.sh:2099 msgid "Preferences..." msgstr "" -#: git-gui.sh:2070 git-gui.sh:2595 +#: git-gui.sh:2107 git-gui.sh:2639 msgid "Options..." msgstr "" -#: git-gui.sh:2076 lib/choose_repository.tcl:46 +#: git-gui.sh:2113 lib/choose_repository.tcl:47 msgid "Help" msgstr "" -#: git-gui.sh:2117 +#: git-gui.sh:2154 msgid "Online Documentation" msgstr "" -#: git-gui.sh:2201 +#: git-gui.sh:2238 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" msgstr "" -#: git-gui.sh:2234 +#: git-gui.sh:2271 msgid "Current Branch:" msgstr "" -#: git-gui.sh:2255 +#: git-gui.sh:2292 msgid "Staged Changes (Will Commit)" msgstr "" -#: git-gui.sh:2274 +#: git-gui.sh:2312 msgid "Unstaged Changes" msgstr "" -#: git-gui.sh:2323 +#: git-gui.sh:2362 msgid "Stage Changed" msgstr "" -#: git-gui.sh:2339 lib/transport.tcl:93 lib/transport.tcl:182 +#: git-gui.sh:2378 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" msgstr "" -#: git-gui.sh:2369 +#: git-gui.sh:2408 msgid "Initial Commit Message:" msgstr "" -#: git-gui.sh:2370 +#: git-gui.sh:2409 msgid "Amended Commit Message:" msgstr "" -#: git-gui.sh:2371 +#: git-gui.sh:2410 msgid "Amended Initial Commit Message:" msgstr "" -#: git-gui.sh:2372 +#: git-gui.sh:2411 msgid "Amended Merge Commit Message:" msgstr "" -#: git-gui.sh:2373 +#: git-gui.sh:2412 msgid "Merge Commit Message:" msgstr "" -#: git-gui.sh:2374 +#: git-gui.sh:2413 msgid "Commit Message:" msgstr "" -#: git-gui.sh:2419 git-gui.sh:2557 lib/console.tcl:71 +#: git-gui.sh:2459 git-gui.sh:2622 lib/console.tcl:73 msgid "Copy All" msgstr "" -#: git-gui.sh:2443 lib/blame.tcl:104 +#: git-gui.sh:2483 lib/blame.tcl:107 msgid "File:" msgstr "" -#: git-gui.sh:2573 +#: git-gui.sh:2589 msgid "Apply/Reverse Hunk" msgstr "" -#: git-gui.sh:2579 +#: git-gui.sh:2595 msgid "Show Less Context" msgstr "" -#: git-gui.sh:2586 +#: git-gui.sh:2602 msgid "Show More Context" msgstr "" -#: git-gui.sh:2594 +#: git-gui.sh:2610 msgid "Refresh" msgstr "" -#: git-gui.sh:2615 +#: git-gui.sh:2631 msgid "Decrease Font Size" msgstr "" -#: git-gui.sh:2619 +#: git-gui.sh:2635 msgid "Increase Font Size" msgstr "" -#: git-gui.sh:2630 +#: git-gui.sh:2646 msgid "Unstage Hunk From Commit" msgstr "" -#: git-gui.sh:2604 +#: git-gui.sh:2648 msgid "Stage Hunk For Commit" msgstr "" -#: git-gui.sh:2623 +#: git-gui.sh:2667 msgid "Initializing..." msgstr "" -#: git-gui.sh:2718 +#: git-gui.sh:2762 #, tcl-format msgid "" "Possible environment issues exist.\n" @@ -433,14 +433,14 @@ msgid "" "\n" msgstr "" -#: git-gui.sh:2748 +#: git-gui.sh:2792 msgid "" "\n" "This is due to a known issue with the\n" "Tcl binary distributed by Cygwin." msgstr "" -#: git-gui.sh:2753 +#: git-gui.sh:2797 #, tcl-format msgid "" "\n" @@ -451,7 +451,7 @@ msgid "" "~/.gitconfig file.\n" msgstr "" -#: lib/about.tcl:25 +#: lib/about.tcl:26 msgid "git-gui - a graphical user interface for Git." msgstr "" @@ -463,56 +463,56 @@ msgstr "" msgid "Commit:" msgstr "" -#: lib/blame.tcl:249 +#: lib/blame.tcl:264 msgid "Copy Commit" msgstr "" -#: lib/blame.tcl:369 +#: lib/blame.tcl:384 #, tcl-format msgid "Reading %s..." msgstr "" -#: lib/blame.tcl:473 +#: lib/blame.tcl:488 msgid "Loading copy/move tracking annotations..." msgstr "" -#: lib/blame.tcl:493 +#: lib/blame.tcl:508 msgid "lines annotated" msgstr "" -#: lib/blame.tcl:674 +#: lib/blame.tcl:689 msgid "Loading original location annotations..." msgstr "" -#: lib/blame.tcl:677 +#: lib/blame.tcl:692 msgid "Annotation complete." msgstr "" -#: lib/blame.tcl:731 +#: lib/blame.tcl:746 msgid "Loading annotation..." msgstr "" -#: lib/blame.tcl:787 +#: lib/blame.tcl:802 msgid "Author:" msgstr "" -#: lib/blame.tcl:791 +#: lib/blame.tcl:806 msgid "Committer:" msgstr "" -#: lib/blame.tcl:796 +#: lib/blame.tcl:811 msgid "Original File:" msgstr "" -#: lib/blame.tcl:910 +#: lib/blame.tcl:925 msgid "Originally By:" msgstr "" -#: lib/blame.tcl:916 +#: lib/blame.tcl:931 msgid "In File:" msgstr "" -#: lib/blame.tcl:921 +#: lib/blame.tcl:936 msgid "Copied Or Moved Here By:" msgstr "" @@ -525,17 +525,17 @@ msgid "Checkout" msgstr "" #: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35 -#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:281 -#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:172 -#: lib/option.tcl:90 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 +#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282 +#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:171 +#: lib/option.tcl:103 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 msgid "Cancel" msgstr "" -#: lib/branch_checkout.tcl:32 lib/browser.tcl:286 +#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 msgid "Revision" msgstr "" -#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:202 +#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:242 msgid "Options" msgstr "" @@ -555,7 +555,7 @@ msgstr "" msgid "Create New Branch" msgstr "" -#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375 +#: lib/branch_create.tcl:31 lib/choose_repository.tcl:371 msgid "Create" msgstr "" @@ -690,22 +690,22 @@ msgstr "" msgid "File Browser" msgstr "" -#: lib/browser.tcl:125 lib/browser.tcl:142 +#: lib/browser.tcl:126 lib/browser.tcl:143 #, tcl-format msgid "Loading %s..." msgstr "" -#: lib/browser.tcl:186 +#: lib/browser.tcl:187 msgid "[Up To Parent]" msgstr "" -#: lib/browser.tcl:266 lib/browser.tcl:272 +#: lib/browser.tcl:267 lib/browser.tcl:273 msgid "Browse Branch Files" msgstr "" -#: lib/browser.tcl:277 lib/choose_repository.tcl:391 -#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492 -#: lib/choose_repository.tcl:989 +#: lib/browser.tcl:278 lib/choose_repository.tcl:387 +#: lib/choose_repository.tcl:474 lib/choose_repository.tcl:484 +#: lib/choose_repository.tcl:987 msgid "Browse" msgstr "" @@ -719,7 +719,7 @@ msgstr "" msgid "fatal: Cannot resolve %s" msgstr "" -#: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 +#: lib/checkout_op.tcl:140 lib/console.tcl:81 lib/database.tcl:31 msgid "Close" msgstr "" @@ -792,7 +792,7 @@ msgid "" "Checkout'." msgstr "" -#: lib/checkout_op.tcl:446 +#: lib/checkout_op.tcl:446 lib/checkout_op.tcl:450 #, tcl-format msgid "Checked out '%s'." msgstr "" @@ -811,7 +811,7 @@ msgstr "" msgid "Reset '%s'?" msgstr "" -#: lib/checkout_op.tcl:510 lib/merge.tcl:164 +#: lib/checkout_op.tcl:510 lib/merge.tcl:163 msgid "Visualize" msgstr "" @@ -834,239 +834,239 @@ msgstr "" msgid "Font Family" msgstr "" -#: lib/choose_font.tcl:73 +#: lib/choose_font.tcl:74 msgid "Font Size" msgstr "" -#: lib/choose_font.tcl:90 +#: lib/choose_font.tcl:91 msgid "Font Example" msgstr "" -#: lib/choose_font.tcl:101 +#: lib/choose_font.tcl:103 msgid "" "This is example text.\n" "If you like this text, it can be your font." msgstr "" -#: lib/choose_repository.tcl:27 +#: lib/choose_repository.tcl:28 msgid "Git Gui" msgstr "" -#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380 +#: lib/choose_repository.tcl:81 lib/choose_repository.tcl:376 msgid "Create New Repository" msgstr "" -#: lib/choose_repository.tcl:86 +#: lib/choose_repository.tcl:87 msgid "New..." msgstr "" -#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468 +#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:460 msgid "Clone Existing Repository" msgstr "" -#: lib/choose_repository.tcl:99 +#: lib/choose_repository.tcl:100 msgid "Clone..." msgstr "" -#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978 +#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:976 msgid "Open Existing Repository" msgstr "" -#: lib/choose_repository.tcl:112 +#: lib/choose_repository.tcl:113 msgid "Open..." msgstr "" -#: lib/choose_repository.tcl:125 +#: lib/choose_repository.tcl:126 msgid "Recent Repositories" msgstr "" -#: lib/choose_repository.tcl:131 +#: lib/choose_repository.tcl:132 msgid "Open Recent Repository:" msgstr "" -#: lib/choose_repository.tcl:294 -#, tcl-format -msgid "Location %s already exists." -msgstr "" - -#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307 -#: lib/choose_repository.tcl:314 +#: lib/choose_repository.tcl:296 lib/choose_repository.tcl:303 +#: lib/choose_repository.tcl:310 #, tcl-format msgid "Failed to create repository %s:" msgstr "" -#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486 +#: lib/choose_repository.tcl:381 lib/choose_repository.tcl:478 msgid "Directory:" msgstr "" -#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544 -#: lib/choose_repository.tcl:1013 +#: lib/choose_repository.tcl:412 lib/choose_repository.tcl:537 +#: lib/choose_repository.tcl:1011 msgid "Git Repository" msgstr "" -#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437 +#: lib/choose_repository.tcl:437 #, tcl-format msgid "Directory %s already exists." msgstr "" -#: lib/choose_repository.tcl:442 +#: lib/choose_repository.tcl:441 #, tcl-format msgid "File %s already exists." msgstr "" -#: lib/choose_repository.tcl:463 +#: lib/choose_repository.tcl:455 msgid "Clone" msgstr "" -#: lib/choose_repository.tcl:476 +#: lib/choose_repository.tcl:468 msgid "URL:" msgstr "" -#: lib/choose_repository.tcl:496 +#: lib/choose_repository.tcl:489 msgid "Clone Type:" msgstr "" -#: lib/choose_repository.tcl:502 +#: lib/choose_repository.tcl:495 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "" -#: lib/choose_repository.tcl:508 +#: lib/choose_repository.tcl:501 msgid "Full Copy (Slower, Redundant Backup)" msgstr "" -#: lib/choose_repository.tcl:514 +#: lib/choose_repository.tcl:507 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "" -#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597 -#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808 -#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027 +#: lib/choose_repository.tcl:543 lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:736 lib/choose_repository.tcl:806 +#: lib/choose_repository.tcl:1017 lib/choose_repository.tcl:1025 #, tcl-format msgid "Not a Git repository: %s" msgstr "" -#: lib/choose_repository.tcl:586 +#: lib/choose_repository.tcl:579 msgid "Standard only available for local repository." msgstr "" -#: lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:583 msgid "Shared only available for local repository." msgstr "" -#: lib/choose_repository.tcl:617 +#: lib/choose_repository.tcl:604 +#, tcl-format +msgid "Location %s already exists." +msgstr "" + +#: lib/choose_repository.tcl:615 msgid "Failed to configure origin" msgstr "" -#: lib/choose_repository.tcl:629 +#: lib/choose_repository.tcl:627 msgid "Counting objects" msgstr "" -#: lib/choose_repository.tcl:630 +#: lib/choose_repository.tcl:628 msgid "buckets" msgstr "" -#: lib/choose_repository.tcl:654 +#: lib/choose_repository.tcl:652 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" msgstr "" -#: lib/choose_repository.tcl:690 +#: lib/choose_repository.tcl:688 #, tcl-format msgid "Nothing to clone from %s." msgstr "" -#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906 -#: lib/choose_repository.tcl:918 +#: lib/choose_repository.tcl:690 lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:916 msgid "The 'master' branch has not been initialized." msgstr "" -#: lib/choose_repository.tcl:705 +#: lib/choose_repository.tcl:703 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "" -#: lib/choose_repository.tcl:717 +#: lib/choose_repository.tcl:715 #, tcl-format msgid "Cloning from %s" msgstr "" -#: lib/choose_repository.tcl:748 +#: lib/choose_repository.tcl:746 msgid "Copying objects" msgstr "" -#: lib/choose_repository.tcl:749 +#: lib/choose_repository.tcl:747 msgid "KiB" msgstr "" -#: lib/choose_repository.tcl:773 +#: lib/choose_repository.tcl:771 #, tcl-format msgid "Unable to copy object: %s" msgstr "" -#: lib/choose_repository.tcl:783 +#: lib/choose_repository.tcl:781 msgid "Linking objects" msgstr "" -#: lib/choose_repository.tcl:784 +#: lib/choose_repository.tcl:782 msgid "objects" msgstr "" -#: lib/choose_repository.tcl:792 +#: lib/choose_repository.tcl:790 #, tcl-format msgid "Unable to hardlink object: %s" msgstr "" -#: lib/choose_repository.tcl:847 +#: lib/choose_repository.tcl:845 msgid "Cannot fetch branches and objects. See console output for details." msgstr "" -#: lib/choose_repository.tcl:858 +#: lib/choose_repository.tcl:856 msgid "Cannot fetch tags. See console output for details." msgstr "" -#: lib/choose_repository.tcl:882 +#: lib/choose_repository.tcl:880 msgid "Cannot determine HEAD. See console output for details." msgstr "" -#: lib/choose_repository.tcl:891 +#: lib/choose_repository.tcl:889 #, tcl-format msgid "Unable to cleanup %s" msgstr "" -#: lib/choose_repository.tcl:897 +#: lib/choose_repository.tcl:895 msgid "Clone failed." msgstr "" -#: lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:902 msgid "No default branch obtained." msgstr "" -#: lib/choose_repository.tcl:915 +#: lib/choose_repository.tcl:913 #, tcl-format msgid "Cannot resolve %s as a commit." msgstr "" -#: lib/choose_repository.tcl:927 +#: lib/choose_repository.tcl:925 msgid "Creating working directory" msgstr "" -#: lib/choose_repository.tcl:928 lib/index.tcl:65 lib/index.tcl:127 +#: lib/choose_repository.tcl:926 lib/index.tcl:65 lib/index.tcl:127 #: lib/index.tcl:193 msgid "files" msgstr "" -#: lib/choose_repository.tcl:957 +#: lib/choose_repository.tcl:955 msgid "Initial file checkout failed." msgstr "" -#: lib/choose_repository.tcl:973 +#: lib/choose_repository.tcl:971 msgid "Open" msgstr "" -#: lib/choose_repository.tcl:983 +#: lib/choose_repository.tcl:981 msgid "Repository:" msgstr "" -#: lib/choose_repository.tcl:1033 +#: lib/choose_repository.tcl:1031 #, tcl-format msgid "Failed to open repository %s:" msgstr "" @@ -1087,7 +1087,7 @@ msgstr "" msgid "Tracking Branch" msgstr "" -#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:537 +#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538 msgid "Tag" msgstr "" @@ -1104,11 +1104,11 @@ msgstr "" msgid "Revision expression is empty." msgstr "" -#: lib/choose_rev.tcl:530 +#: lib/choose_rev.tcl:531 msgid "Updated" msgstr "" -#: lib/choose_rev.tcl:558 +#: lib/choose_rev.tcl:559 msgid "URL" msgstr "" @@ -1224,7 +1224,7 @@ msgstr "" msgid "Commit %s appears to be corrupt" msgstr "" -#: lib/commit.tcl:279 +#: lib/commit.tcl:326 msgid "" "No changes to commit.\n" "\n" @@ -1233,7 +1233,7 @@ msgid "" "A rescan will be automatically started now.\n" msgstr "" -#: lib/commit.tcl:286 +#: lib/commit.tcl:333 msgid "No changes to commit." msgstr "" @@ -1241,24 +1241,24 @@ msgstr "" msgid "commit-tree failed:" msgstr "" -#: lib/commit.tcl:339 +#: lib/commit.tcl:367 msgid "update-ref failed:" msgstr "" -#: lib/commit.tcl:430 +#: lib/commit.tcl:454 #, tcl-format msgid "Created commit %s: %s" msgstr "" -#: lib/console.tcl:57 +#: lib/console.tcl:59 msgid "Working... please wait..." msgstr "" -#: lib/console.tcl:183 +#: lib/console.tcl:186 msgid "Success" msgstr "" -#: lib/console.tcl:196 +#: lib/console.tcl:200 msgid "Error: Command Failed" msgstr "" @@ -1354,23 +1354,23 @@ msgstr "" msgid "Error loading diff:" msgstr "" -#: lib/diff.tcl:302 +#: lib/diff.tcl:303 msgid "Failed to unstage selected hunk." msgstr "" -#: lib/diff.tcl:309 +#: lib/diff.tcl:310 msgid "Failed to stage selected hunk." msgstr "" -#: lib/error.tcl:12 lib/error.tcl:102 +#: lib/error.tcl:20 lib/error.tcl:114 msgid "error" msgstr "" -#: lib/error.tcl:28 +#: lib/error.tcl:36 msgid "warning" msgstr "" -#: lib/error.tcl:81 +#: lib/error.tcl:94 msgid "You must correct the above errors before committing." msgstr "" @@ -1420,11 +1420,11 @@ msgstr "" msgid "Revert changes in these %i files?" msgstr "" -#: lib/index.tcl:389 +#: lib/index.tcl:391 msgid "Any unstaged changes will be permanently lost by the revert." msgstr "" -#: lib/index.tcl:392 +#: lib/index.tcl:394 msgid "Do Nothing" msgstr "" @@ -1481,27 +1481,27 @@ msgstr "" msgid "Merge completed successfully." msgstr "" -#: lib/merge.tcl:133 +#: lib/merge.tcl:132 msgid "Merge failed. Conflict resolution is required." msgstr "" -#: lib/merge.tcl:158 +#: lib/merge.tcl:157 #, tcl-format msgid "Merge Into %s" msgstr "" -#: lib/merge.tcl:177 +#: lib/merge.tcl:176 msgid "Revision To Merge" msgstr "" -#: lib/merge.tcl:212 +#: lib/merge.tcl:211 msgid "" "Cannot abort while amending.\n" "\n" "You must finish amending this commit.\n" msgstr "" -#: lib/merge.tcl:222 +#: lib/merge.tcl:221 msgid "" "Abort merge?\n" "\n" @@ -1510,7 +1510,7 @@ msgid "" "Continue with aborting the current merge?" msgstr "" -#: lib/merge.tcl:228 +#: lib/merge.tcl:227 msgid "" "Reset changes?\n" "\n" @@ -1519,7 +1519,7 @@ msgid "" "Continue with resetting the current changes?" msgstr "" -#: lib/merge.tcl:239 +#: lib/merge.tcl:238 msgid "Aborting" msgstr "" @@ -1531,89 +1531,93 @@ msgstr "" msgid "Abort failed." msgstr "" -#: lib/merge.tcl:268 +#: lib/merge.tcl:267 msgid "Abort completed. Ready." msgstr "" -#: lib/option.tcl:82 +#: lib/option.tcl:95 msgid "Restore Defaults" msgstr "" -#: lib/option.tcl:86 +#: lib/option.tcl:99 msgid "Save" msgstr "" -#: lib/option.tcl:96 +#: lib/option.tcl:109 #, tcl-format msgid "%s Repository" msgstr "" -#: lib/option.tcl:97 +#: lib/option.tcl:110 msgid "Global (All Repositories)" msgstr "" -#: lib/option.tcl:103 +#: lib/option.tcl:116 msgid "User Name" msgstr "" -#: lib/option.tcl:104 +#: lib/option.tcl:117 msgid "Email Address" msgstr "" -#: lib/option.tcl:106 +#: lib/option.tcl:119 msgid "Summarize Merge Commits" msgstr "" -#: lib/option.tcl:107 +#: lib/option.tcl:120 msgid "Merge Verbosity" msgstr "" -#: lib/option.tcl:108 +#: lib/option.tcl:121 msgid "Show Diffstat After Merge" msgstr "" -#: lib/option.tcl:110 +#: lib/option.tcl:123 msgid "Trust File Modification Timestamps" msgstr "" -#: lib/option.tcl:111 +#: lib/option.tcl:124 msgid "Prune Tracking Branches During Fetch" msgstr "" -#: lib/option.tcl:112 +#: lib/option.tcl:125 msgid "Match Tracking Branches" msgstr "" -#: lib/option.tcl:113 +#: lib/option.tcl:126 msgid "Number of Diff Context Lines" msgstr "" -#: lib/option.tcl:114 +#: lib/option.tcl:127 +msgid "Commit Message Text Width" +msgstr "" + +#: lib/option.tcl:128 msgid "New Branch Name Template" msgstr "" -#: lib/option.tcl:191 +#: lib/option.tcl:192 msgid "Spelling Dictionary:" msgstr "" -#: lib/option.tcl:215 +#: lib/option.tcl:216 msgid "Change Font" msgstr "" -#: lib/option.tcl:180 +#: lib/option.tcl:220 #, tcl-format msgid "Choose %s" msgstr "" -#: lib/option.tcl:186 +#: lib/option.tcl:226 msgid "pt." msgstr "" -#: lib/option.tcl:200 +#: lib/option.tcl:240 msgid "Preferences" msgstr "" -#: lib/option.tcl:235 +#: lib/option.tcl:275 msgid "Failed to completely save options:" msgstr "" @@ -1713,23 +1717,40 @@ msgstr "" msgid "Cannot write icon:" msgstr "" -#: lib/spellcheck.tcl:37 -msgid "Not connected to aspell" +#: lib/spellcheck.tcl:57 +msgid "Unsupported spell checker" +msgstr "" + +#: lib/spellcheck.tcl:65 +msgid "Spell checking is unavailable" +msgstr "" + +#: lib/spellcheck.tcl:68 +msgid "Invalid spell checking configuration" +msgstr "" + +#: lib/spellcheck.tcl:70 +#, tcl-format +msgid "Reverting dictionary to %s." +msgstr "" + +#: lib/spellcheck.tcl:73 +msgid "Spell checker silently failed on startup" msgstr "" -#: lib/spellcheck.tcl:41 -msgid "Unrecognized aspell version" +#: lib/spellcheck.tcl:80 +msgid "Unrecognized spell checker" msgstr "" -#: lib/spellcheck.tcl:135 +#: lib/spellcheck.tcl:180 msgid "No Suggestions" msgstr "" -#: lib/spellcheck.tcl:336 -msgid "Unexpected EOF from aspell" +#: lib/spellcheck.tcl:381 +msgid "Unexpected EOF from spell checker" msgstr "" -#: lib/spellcheck.tcl:340 +#: lib/spellcheck.tcl:385 msgid "Spell Checker Failed" msgstr "" diff --git a/git-gui/po/hu.po b/git-gui/po/hu.po index 627c05eb99..28760ed978 100644 --- a/git-gui/po/hu.po +++ b/git-gui/po/hu.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: git-gui-i 18n\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-11-24 10:36+0100\n" -"PO-Revision-Date: 2007-12-04 01:15+0100\n" +"POT-Creation-Date: 2008-03-14 07:18+0100\n" +"PO-Revision-Date: 2008-03-14 17:24+0100\n" "Last-Translator: Miklos Vajna <vmiklos@frugalware.org>\n" "Language-Team: Hungarian\n" "MIME-Version: 1.0\n" @@ -16,33 +16,33 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: git-gui.sh:41 git-gui.sh:604 git-gui.sh:618 git-gui.sh:631 git-gui.sh:714 -#: git-gui.sh:733 +#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 +#: git-gui.sh:763 msgid "git-gui: fatal error" msgstr "git-gui: végzetes hiba" -#: git-gui.sh:565 +#: git-gui.sh:593 #, tcl-format msgid "Invalid font specified in %s:" msgstr "Érvénytelen font lett megadva itt: %s:" -#: git-gui.sh:590 +#: git-gui.sh:620 msgid "Main Font" msgstr "FÅ‘ betűtÃpus" -#: git-gui.sh:591 +#: git-gui.sh:621 msgid "Diff/Console Font" msgstr "Diff/konzol betűtÃpus" -#: git-gui.sh:605 +#: git-gui.sh:635 msgid "Cannot find git in PATH." msgstr "A git nem található a PATH-ban." -#: git-gui.sh:632 +#: git-gui.sh:662 msgid "Cannot parse Git version string:" msgstr "Nem értelmezhetÅ‘ a Git verzió sztring:" -#: git-gui.sh:650 +#: git-gui.sh:680 #, tcl-format msgid "" "Git version cannot be determined.\n" @@ -61,79 +61,79 @@ msgstr "" "\n" "Feltételezhetjük, hogy a(z) '%s' verziója legalább 1.5.0?\n" -#: git-gui.sh:888 +#: git-gui.sh:918 msgid "Git directory not found:" msgstr "A Git könyvtár nem található:" -#: git-gui.sh:895 +#: git-gui.sh:925 msgid "Cannot move to top of working directory:" msgstr "Nem lehet a munkakönyvtár tetejére lépni:" -#: git-gui.sh:902 +#: git-gui.sh:932 msgid "Cannot use funny .git directory:" msgstr "Nem használható vicces .git könyvtár:" -#: git-gui.sh:907 +#: git-gui.sh:937 msgid "No working directory" msgstr "Nincs munkakönyvtár" -#: git-gui.sh:1054 +#: git-gui.sh:1084 lib/checkout_op.tcl:283 msgid "Refreshing file status..." msgstr "A fájlok státuszának frissÃtése..." -#: git-gui.sh:1119 +#: git-gui.sh:1149 msgid "Scanning for modified files ..." msgstr "MódosÃtott fájlok keresése ..." -#: git-gui.sh:1294 lib/browser.tcl:245 +#: git-gui.sh:1324 lib/browser.tcl:246 msgid "Ready." msgstr "Kész." -#: git-gui.sh:1560 +#: git-gui.sh:1590 msgid "Unmodified" msgstr "Nem módosÃtott" -#: git-gui.sh:1562 +#: git-gui.sh:1592 msgid "Modified, not staged" msgstr "MódosÃtott, de nem kiválasztott" -#: git-gui.sh:1563 git-gui.sh:1568 +#: git-gui.sh:1593 git-gui.sh:1598 msgid "Staged for commit" msgstr "Kiválasztva commitolásra" -#: git-gui.sh:1564 git-gui.sh:1569 +#: git-gui.sh:1594 git-gui.sh:1599 msgid "Portions staged for commit" msgstr "Részek kiválasztva commitolásra" -#: git-gui.sh:1565 git-gui.sh:1570 +#: git-gui.sh:1595 git-gui.sh:1600 msgid "Staged for commit, missing" msgstr "Kiválasztva commitolásra, hiányzó" -#: git-gui.sh:1567 +#: git-gui.sh:1597 msgid "Untracked, not staged" msgstr "Nem követett, nem kiválasztott" -#: git-gui.sh:1572 +#: git-gui.sh:1602 msgid "Missing" msgstr "Hiányzó" -#: git-gui.sh:1573 +#: git-gui.sh:1603 msgid "Staged for removal" msgstr "Kiválasztva eltávolÃtásra" -#: git-gui.sh:1574 +#: git-gui.sh:1604 msgid "Staged for removal, still present" msgstr "Kiválasztva eltávolÃtásra, jelenleg is elérhetÅ‘" -#: git-gui.sh:1576 git-gui.sh:1577 git-gui.sh:1578 git-gui.sh:1579 +#: git-gui.sh:1606 git-gui.sh:1607 git-gui.sh:1608 git-gui.sh:1609 msgid "Requires merge resolution" msgstr "Merge feloldás szükséges" -#: git-gui.sh:1614 +#: git-gui.sh:1644 msgid "Starting gitk... please wait..." msgstr "A gitk indÃtása... várjunk..." -#: git-gui.sh:1623 +#: git-gui.sh:1653 #, tcl-format msgid "" "Unable to start gitk:\n" @@ -144,295 +144,296 @@ msgstr "" "\n" "A(z) %s nem létezik" -#: git-gui.sh:1823 lib/choose_repository.tcl:35 +#: git-gui.sh:1860 lib/choose_repository.tcl:36 msgid "Repository" msgstr "Repó" -#: git-gui.sh:1824 +#: git-gui.sh:1861 msgid "Edit" msgstr "Szerkesztés" -#: git-gui.sh:1826 lib/choose_rev.tcl:560 +#: git-gui.sh:1863 lib/choose_rev.tcl:561 msgid "Branch" msgstr "Branch" -#: git-gui.sh:1829 lib/choose_rev.tcl:547 +#: git-gui.sh:1866 lib/choose_rev.tcl:548 msgid "Commit@@noun" msgstr "Commit@@fÅ‘név" -#: git-gui.sh:1832 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 +#: git-gui.sh:1869 lib/merge.tcl:120 lib/merge.tcl:149 lib/merge.tcl:167 msgid "Merge" msgstr "Merge" -#: git-gui.sh:1833 lib/choose_rev.tcl:556 +#: git-gui.sh:1870 lib/choose_rev.tcl:557 msgid "Remote" msgstr "Távoli" -#: git-gui.sh:1842 +#: git-gui.sh:1879 msgid "Browse Current Branch's Files" msgstr "A jelenlegi branch fájljainak böngészése" -#: git-gui.sh:1846 +#: git-gui.sh:1883 msgid "Browse Branch Files..." msgstr "A branch fájljainak böngészése..." -#: git-gui.sh:1851 +#: git-gui.sh:1888 msgid "Visualize Current Branch's History" msgstr "A jelenlegi branch történetének vizualizálása" -#: git-gui.sh:1855 +#: git-gui.sh:1892 msgid "Visualize All Branch History" msgstr "Az összes branch történetének vizualizálása" -#: git-gui.sh:1862 +#: git-gui.sh:1899 #, tcl-format msgid "Browse %s's Files" msgstr "A(z) %s branch fájljainak böngészése" -#: git-gui.sh:1864 +#: git-gui.sh:1901 #, tcl-format msgid "Visualize %s's History" msgstr "A(z) %s branch történetének vizualizálása" -#: git-gui.sh:1869 lib/database.tcl:27 lib/database.tcl:67 +#: git-gui.sh:1906 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" msgstr "Adatbázis statisztikák" -#: git-gui.sh:1872 lib/database.tcl:34 +#: git-gui.sh:1909 lib/database.tcl:34 msgid "Compress Database" msgstr "Adatbázis tömörÃtése" -#: git-gui.sh:1875 +#: git-gui.sh:1912 msgid "Verify Database" msgstr "Adatbázis ellenÅ‘rzése" -#: git-gui.sh:1882 git-gui.sh:1886 git-gui.sh:1890 lib/shortcut.tcl:7 +#: git-gui.sh:1919 git-gui.sh:1923 git-gui.sh:1927 lib/shortcut.tcl:7 #: lib/shortcut.tcl:39 lib/shortcut.tcl:71 msgid "Create Desktop Icon" msgstr "Asztal ikon létrehozása" -#: git-gui.sh:1895 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184 +#: git-gui.sh:1932 lib/choose_repository.tcl:177 lib/choose_repository.tcl:185 msgid "Quit" msgstr "Kilépés" -#: git-gui.sh:1902 +#: git-gui.sh:1939 msgid "Undo" msgstr "Visszavonás" -#: git-gui.sh:1905 +#: git-gui.sh:1942 msgid "Redo" msgstr "Mégis" -#: git-gui.sh:1909 git-gui.sh:2403 +#: git-gui.sh:1946 git-gui.sh:2443 msgid "Cut" msgstr "Kivágás" -#: git-gui.sh:1912 git-gui.sh:2406 git-gui.sh:2477 git-gui.sh:2549 -#: lib/console.tcl:67 +#: git-gui.sh:1949 git-gui.sh:2446 git-gui.sh:2520 git-gui.sh:2614 +#: lib/console.tcl:69 msgid "Copy" msgstr "Másolás" -#: git-gui.sh:1915 git-gui.sh:2409 +#: git-gui.sh:1952 git-gui.sh:2449 msgid "Paste" msgstr "Beillesztés" -#: git-gui.sh:1918 git-gui.sh:2412 lib/branch_delete.tcl:26 +#: git-gui.sh:1955 git-gui.sh:2452 lib/branch_delete.tcl:26 #: lib/remote_branch_delete.tcl:38 msgid "Delete" msgstr "Törlés" -#: git-gui.sh:1922 git-gui.sh:2416 git-gui.sh:2553 lib/console.tcl:69 +#: git-gui.sh:1959 git-gui.sh:2456 git-gui.sh:2618 lib/console.tcl:71 msgid "Select All" msgstr "Mindent kiválaszt" -#: git-gui.sh:1931 +#: git-gui.sh:1968 msgid "Create..." msgstr "Létrehozás..." -#: git-gui.sh:1937 +#: git-gui.sh:1974 msgid "Checkout..." msgstr "Checkout..." -#: git-gui.sh:1943 +#: git-gui.sh:1980 msgid "Rename..." msgstr "Ãtnevezés..." -#: git-gui.sh:1948 git-gui.sh:2048 +#: git-gui.sh:1985 git-gui.sh:2085 msgid "Delete..." msgstr "Törlés..." -#: git-gui.sh:1953 +#: git-gui.sh:1990 msgid "Reset..." msgstr "VisszaállÃtás..." -#: git-gui.sh:1965 git-gui.sh:2350 +#: git-gui.sh:2002 git-gui.sh:2389 msgid "New Commit" msgstr "Új commit" -#: git-gui.sh:1973 git-gui.sh:2357 +#: git-gui.sh:2010 git-gui.sh:2396 msgid "Amend Last Commit" msgstr "Utolsó commit javÃtása" -#: git-gui.sh:1982 git-gui.sh:2317 lib/remote_branch_delete.tcl:99 +#: git-gui.sh:2019 git-gui.sh:2356 lib/remote_branch_delete.tcl:99 msgid "Rescan" msgstr "Keresés újra" -#: git-gui.sh:1988 +#: git-gui.sh:2025 msgid "Stage To Commit" msgstr "Kiválasztás commitolásra" -#: git-gui.sh:1994 +#: git-gui.sh:2031 msgid "Stage Changed Files To Commit" msgstr "MódosÃtott fájlok kiválasztása commitolásra" -#: git-gui.sh:2000 +#: git-gui.sh:2037 msgid "Unstage From Commit" msgstr "Commitba való kiválasztás visszavonása" -#: git-gui.sh:2005 lib/index.tcl:393 +#: git-gui.sh:2042 lib/index.tcl:395 msgid "Revert Changes" msgstr "Változtatások visszaállÃtása" -#: git-gui.sh:2012 git-gui.sh:2329 git-gui.sh:2427 +#: git-gui.sh:2049 git-gui.sh:2368 git-gui.sh:2467 msgid "Sign Off" msgstr "AláÃr" -#: git-gui.sh:2016 git-gui.sh:2333 +#: git-gui.sh:2053 git-gui.sh:2372 msgid "Commit@@verb" msgstr "Commit@@ige" -#: git-gui.sh:2027 +#: git-gui.sh:2064 msgid "Local Merge..." msgstr "Helyi merge..." -#: git-gui.sh:2032 +#: git-gui.sh:2069 msgid "Abort Merge..." msgstr "Merge megszakÃtása..." -#: git-gui.sh:2044 +#: git-gui.sh:2081 msgid "Push..." msgstr "Push..." -#: git-gui.sh:2055 lib/choose_repository.tcl:40 +#: git-gui.sh:2092 lib/choose_repository.tcl:41 msgid "Apple" msgstr "Apple" -#: git-gui.sh:2058 git-gui.sh:2080 lib/about.tcl:13 -#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49 +#: git-gui.sh:2095 git-gui.sh:2117 lib/about.tcl:14 +#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 #, tcl-format msgid "About %s" msgstr "Névjegy: %s" -#: git-gui.sh:2062 +#: git-gui.sh:2099 msgid "Preferences..." msgstr "BeállÃtások..." -#: git-gui.sh:2070 git-gui.sh:2595 +#: git-gui.sh:2107 git-gui.sh:2639 msgid "Options..." msgstr "Opciók..." -#: git-gui.sh:2076 lib/choose_repository.tcl:46 +#: git-gui.sh:2113 lib/choose_repository.tcl:47 msgid "Help" msgstr "SegÃtség" -#: git-gui.sh:2117 +#: git-gui.sh:2154 msgid "Online Documentation" msgstr "Online dokumentáció" -#: git-gui.sh:2201 +#: git-gui.sh:2238 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" -msgstr "végzetes hiba: nem érhetÅ‘ el a(z) %s útvonal: Nincs ilyen fájl vagy könyvtár" +msgstr "" +"végzetes hiba: nem érhetÅ‘ el a(z) %s útvonal: Nincs ilyen fájl vagy könyvtár" -#: git-gui.sh:2234 +#: git-gui.sh:2271 msgid "Current Branch:" msgstr "Jelenlegi branch:" -#: git-gui.sh:2255 +#: git-gui.sh:2292 msgid "Staged Changes (Will Commit)" msgstr "Kiválasztott változtatások (commitolva lesz)" -#: git-gui.sh:2274 +#: git-gui.sh:2312 msgid "Unstaged Changes" msgstr "Kiválasztatlan változtatások" -#: git-gui.sh:2323 +#: git-gui.sh:2362 msgid "Stage Changed" msgstr "Változtatások kiválasztása" -#: git-gui.sh:2339 lib/transport.tcl:93 lib/transport.tcl:182 +#: git-gui.sh:2378 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" msgstr "Push" -#: git-gui.sh:2369 +#: git-gui.sh:2408 msgid "Initial Commit Message:" msgstr "Kezdeti commit üzenet:" -#: git-gui.sh:2370 +#: git-gui.sh:2409 msgid "Amended Commit Message:" msgstr "JavÃtó commit üzenet:" -#: git-gui.sh:2371 +#: git-gui.sh:2410 msgid "Amended Initial Commit Message:" msgstr "Kezdeti javÃtó commit üzenet:" -#: git-gui.sh:2372 +#: git-gui.sh:2411 msgid "Amended Merge Commit Message:" msgstr "JavÃtó merge commit üzenet:" -#: git-gui.sh:2373 +#: git-gui.sh:2412 msgid "Merge Commit Message:" msgstr "Merge commit üzenet:" -#: git-gui.sh:2374 +#: git-gui.sh:2413 msgid "Commit Message:" msgstr "Commit üzenet:" -#: git-gui.sh:2419 git-gui.sh:2557 lib/console.tcl:71 +#: git-gui.sh:2459 git-gui.sh:2622 lib/console.tcl:73 msgid "Copy All" msgstr "Összes másolása" -#: git-gui.sh:2443 lib/blame.tcl:104 +#: git-gui.sh:2483 lib/blame.tcl:107 msgid "File:" msgstr "Fájl:" -#: git-gui.sh:2545 -msgid "Refresh" -msgstr "FrissÃtés" - -#: git-gui.sh:2566 +#: git-gui.sh:2589 msgid "Apply/Reverse Hunk" msgstr "Hunk alkalmazása/visszaállÃtása" -#: git-gui.sh:2572 -msgid "Decrease Font Size" -msgstr "Font méret csökkentése" - -#: git-gui.sh:2576 -msgid "Increase Font Size" -msgstr "Fönt méret növelése" - -#: git-gui.sh:2581 +#: git-gui.sh:2595 msgid "Show Less Context" msgstr "Kevesebb környezet mutatása" -#: git-gui.sh:2588 +#: git-gui.sh:2602 msgid "Show More Context" msgstr "Több környezet mutatása" -#: git-gui.sh:2602 +#: git-gui.sh:2610 +msgid "Refresh" +msgstr "FrissÃtés" + +#: git-gui.sh:2631 +msgid "Decrease Font Size" +msgstr "Font méret csökkentése" + +#: git-gui.sh:2635 +msgid "Increase Font Size" +msgstr "Fönt méret növelése" + +#: git-gui.sh:2646 msgid "Unstage Hunk From Commit" msgstr "Hunk törlése commitból" -#: git-gui.sh:2604 +#: git-gui.sh:2648 msgid "Stage Hunk For Commit" msgstr "Hunk kiválasztása commitba" -#: git-gui.sh:2623 +#: git-gui.sh:2667 msgid "Initializing..." msgstr "Inicializálás..." -#: git-gui.sh:2718 +#: git-gui.sh:2762 #, tcl-format msgid "" "Possible environment issues exist.\n" @@ -449,7 +450,7 @@ msgstr "" "indÃtott folyamatok által:\n" "\n" -#: git-gui.sh:2748 +#: git-gui.sh:2792 msgid "" "\n" "This is due to a known issue with the\n" @@ -459,7 +460,7 @@ msgstr "" "Ez a Cygwin által terjesztett Tcl binárisban\n" "lévÅ‘ ismert hiba miatt van." -#: git-gui.sh:2753 +#: git-gui.sh:2797 #, tcl-format msgid "" "\n" @@ -476,7 +477,7 @@ msgstr "" "elhelyezése a személyes\n" "~/.gitconfig fájlba.\n" -#: lib/about.tcl:25 +#: lib/about.tcl:26 msgid "git-gui - a graphical user interface for Git." msgstr "git-gui - egy grafikus felület a Githez." @@ -488,56 +489,56 @@ msgstr "Fájl nézÅ‘" msgid "Commit:" msgstr "Commit:" -#: lib/blame.tcl:249 +#: lib/blame.tcl:264 msgid "Copy Commit" msgstr "Commit másolása" -#: lib/blame.tcl:369 +#: lib/blame.tcl:384 #, tcl-format msgid "Reading %s..." msgstr "A(z) %s olvasása..." -#: lib/blame.tcl:473 +#: lib/blame.tcl:488 msgid "Loading copy/move tracking annotations..." msgstr "A másolást/átnevezést követÅ‘ annotációk betöltése..." -#: lib/blame.tcl:493 +#: lib/blame.tcl:508 msgid "lines annotated" msgstr "sor annotálva" -#: lib/blame.tcl:674 +#: lib/blame.tcl:689 msgid "Loading original location annotations..." msgstr "Az eredeti hely annotációk betöltése..." -#: lib/blame.tcl:677 +#: lib/blame.tcl:692 msgid "Annotation complete." msgstr "Az annotáció kész." -#: lib/blame.tcl:731 +#: lib/blame.tcl:746 msgid "Loading annotation..." msgstr "Az annotáció betöltése..." -#: lib/blame.tcl:787 +#: lib/blame.tcl:802 msgid "Author:" msgstr "SzerzÅ‘:" -#: lib/blame.tcl:791 +#: lib/blame.tcl:806 msgid "Committer:" msgstr "Commiter:" -#: lib/blame.tcl:796 +#: lib/blame.tcl:811 msgid "Original File:" msgstr "Eredeti fájl:" -#: lib/blame.tcl:910 +#: lib/blame.tcl:925 msgid "Originally By:" msgstr "Eredeti szerzÅ‘:" -#: lib/blame.tcl:916 +#: lib/blame.tcl:931 msgid "In File:" msgstr "Ebben a fájlban:" -#: lib/blame.tcl:921 +#: lib/blame.tcl:936 msgid "Copied Or Moved Here By:" msgstr "Ide másolta vagy helyezte:" @@ -550,17 +551,17 @@ msgid "Checkout" msgstr "Checkout" #: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35 -#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:281 -#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:172 -#: lib/option.tcl:90 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 +#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282 +#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:171 +#: lib/option.tcl:103 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 msgid "Cancel" msgstr "Mégsem" -#: lib/branch_checkout.tcl:32 lib/browser.tcl:286 +#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 msgid "Revision" msgstr "RevÃzió" -#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:202 +#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:242 msgid "Options" msgstr "Opciók" @@ -580,7 +581,7 @@ msgstr "Branch létrehozása" msgid "Create New Branch" msgstr "Új branch létrehozása" -#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375 +#: lib/branch_create.tcl:31 lib/choose_repository.tcl:371 msgid "Create" msgstr "Létrehozás" @@ -720,22 +721,22 @@ msgstr "IndÃtás..." msgid "File Browser" msgstr "Fájl böngészÅ‘" -#: lib/browser.tcl:125 lib/browser.tcl:142 +#: lib/browser.tcl:126 lib/browser.tcl:143 #, tcl-format msgid "Loading %s..." msgstr "A(z) %s betöltése..." -#: lib/browser.tcl:186 +#: lib/browser.tcl:187 msgid "[Up To Parent]" msgstr "[Fel a szülÅ‘höz]" -#: lib/browser.tcl:266 lib/browser.tcl:272 +#: lib/browser.tcl:267 lib/browser.tcl:273 msgid "Browse Branch Files" msgstr "A branch fájljainak böngészése" -#: lib/browser.tcl:277 lib/choose_repository.tcl:391 -#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492 -#: lib/choose_repository.tcl:989 +#: lib/browser.tcl:278 lib/choose_repository.tcl:387 +#: lib/choose_repository.tcl:474 lib/choose_repository.tcl:484 +#: lib/choose_repository.tcl:987 msgid "Browse" msgstr "Böngészés" @@ -749,7 +750,7 @@ msgstr "A(z) %s letöltése innen: %s" msgid "fatal: Cannot resolve %s" msgstr "végzetes: Nem lehet feloldani a következÅ‘t: %s" -#: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 +#: lib/checkout_op.tcl:140 lib/console.tcl:81 lib/database.tcl:31 msgid "Close" msgstr "Bezárás" @@ -807,6 +808,10 @@ msgstr "" msgid "Updating working directory to '%s'..." msgstr "A munkkönyvtár frissiÃtése a következÅ‘re: '%s'..." +#: lib/checkout_op.tcl:323 +msgid "files checked out" +msgstr "fájl frissÃtve" + #: lib/checkout_op.tcl:353 #, tcl-format msgid "Aborted checkout of '%s' (file level merging is required)." @@ -833,7 +838,7 @@ msgstr "" "Ha egy branchen szeretnénk lenni, hozzunk létre egyet az 'Ez a leválasztott " "checkout'-ból." -#: lib/checkout_op.tcl:446 +#: lib/checkout_op.tcl:446 lib/checkout_op.tcl:450 #, tcl-format msgid "Checked out '%s'." msgstr "'%s' kifejtve." @@ -853,7 +858,7 @@ msgstr "Az elveszett commitok helyreállÃtása nem biztos, hogy egyszerű." msgid "Reset '%s'?" msgstr "VisszaállÃtjuk a következÅ‘t: '%s'?" -#: lib/checkout_op.tcl:510 lib/merge.tcl:164 +#: lib/checkout_op.tcl:510 lib/merge.tcl:163 msgid "Visualize" msgstr "Vizualizálás" @@ -882,15 +887,15 @@ msgstr "Kiválaszt" msgid "Font Family" msgstr "Font család" -#: lib/choose_font.tcl:73 +#: lib/choose_font.tcl:74 msgid "Font Size" msgstr "Font méret" -#: lib/choose_font.tcl:90 +#: lib/choose_font.tcl:91 msgid "Font Example" msgstr "Font példa" -#: lib/choose_font.tcl:101 +#: lib/choose_font.tcl:103 msgid "" "This is example text.\n" "If you like this text, it can be your font." @@ -898,225 +903,227 @@ msgstr "" "Ez egy példa szöveg.\n" "Ha ez megfelel, ez lehet a betűtÃpus." -#: lib/choose_repository.tcl:27 +#: lib/choose_repository.tcl:28 msgid "Git Gui" msgstr "Git Gui" -#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380 +#: lib/choose_repository.tcl:81 lib/choose_repository.tcl:376 msgid "Create New Repository" msgstr "Új repó létrehozása" -#: lib/choose_repository.tcl:86 +#: lib/choose_repository.tcl:87 msgid "New..." msgstr "Új..." -#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468 +#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:460 msgid "Clone Existing Repository" msgstr "LétezÅ‘ repó másolása" -#: lib/choose_repository.tcl:99 +#: lib/choose_repository.tcl:100 msgid "Clone..." msgstr "Másolás..." -#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978 +#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:976 msgid "Open Existing Repository" msgstr "LétezÅ‘ könyvtár megnyitása" -#: lib/choose_repository.tcl:112 +#: lib/choose_repository.tcl:113 msgid "Open..." msgstr "Meggyitás..." -#: lib/choose_repository.tcl:125 +#: lib/choose_repository.tcl:126 msgid "Recent Repositories" msgstr "Legutóbbi repók" -#: lib/choose_repository.tcl:131 +#: lib/choose_repository.tcl:132 msgid "Open Recent Repository:" msgstr "Legutóbbi repók megnyitása:" -#: lib/choose_repository.tcl:294 -#, tcl-format -msgid "Location %s already exists." -msgstr "A(z) '%s' hely már létezik." - -#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307 -#: lib/choose_repository.tcl:314 +#: lib/choose_repository.tcl:296 lib/choose_repository.tcl:303 +#: lib/choose_repository.tcl:310 #, tcl-format msgid "Failed to create repository %s:" msgstr "Nem sikerült letrehozni a(z) %s repót:" -#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486 +#: lib/choose_repository.tcl:381 lib/choose_repository.tcl:478 msgid "Directory:" msgstr "Könyvtár:" -#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544 -#: lib/choose_repository.tcl:1013 +#: lib/choose_repository.tcl:412 lib/choose_repository.tcl:537 +#: lib/choose_repository.tcl:1011 msgid "Git Repository" msgstr "Git repó" -#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437 +#: lib/choose_repository.tcl:437 #, tcl-format msgid "Directory %s already exists." msgstr "A(z) '%s' könyvtár már létezik." -#: lib/choose_repository.tcl:442 +#: lib/choose_repository.tcl:441 #, tcl-format msgid "File %s already exists." msgstr "A(z) '%s' fájl már létezik." -#: lib/choose_repository.tcl:463 +#: lib/choose_repository.tcl:455 msgid "Clone" msgstr "Bezárás" -#: lib/choose_repository.tcl:476 +#: lib/choose_repository.tcl:468 msgid "URL:" msgstr "URL:" -#: lib/choose_repository.tcl:496 +#: lib/choose_repository.tcl:489 msgid "Clone Type:" msgstr "Másolás tÃpusa:" -#: lib/choose_repository.tcl:502 +#: lib/choose_repository.tcl:495 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "Ãltalános (Gyors, félig-redundáns, hardlinkek)" -#: lib/choose_repository.tcl:508 +#: lib/choose_repository.tcl:501 msgid "Full Copy (Slower, Redundant Backup)" msgstr "Teljes másolás (Lassabb, redundáns biztonsági mentés)" -#: lib/choose_repository.tcl:514 +#: lib/choose_repository.tcl:507 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "Megosztott (Leggyorsabb, nem ajánlott, nincs mentés)" -#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597 -#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808 -#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027 +#: lib/choose_repository.tcl:543 lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:736 lib/choose_repository.tcl:806 +#: lib/choose_repository.tcl:1017 lib/choose_repository.tcl:1025 #, tcl-format msgid "Not a Git repository: %s" msgstr "Nem Git repó: %s" -#: lib/choose_repository.tcl:586 +#: lib/choose_repository.tcl:579 msgid "Standard only available for local repository." msgstr "A standard csak helyi repókra érhetÅ‘ el." -#: lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:583 msgid "Shared only available for local repository." msgstr "A megosztott csak helyi repókra érhetÅ‘ el." -#: lib/choose_repository.tcl:617 +#: lib/choose_repository.tcl:604 +#, tcl-format +msgid "Location %s already exists." +msgstr "A(z) '%s' hely már létezik." + +#: lib/choose_repository.tcl:615 msgid "Failed to configure origin" msgstr "Nem sikerült beállÃtani az origint" -#: lib/choose_repository.tcl:629 +#: lib/choose_repository.tcl:627 msgid "Counting objects" msgstr "Objektumok számolása" -#: lib/choose_repository.tcl:630 +#: lib/choose_repository.tcl:628 msgid "buckets" msgstr "vödrök" -#: lib/choose_repository.tcl:654 +#: lib/choose_repository.tcl:652 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" msgstr "Nem sikerült másolni az objects/info/alternates-t: %s" -#: lib/choose_repository.tcl:690 +#: lib/choose_repository.tcl:688 #, tcl-format msgid "Nothing to clone from %s." msgstr "Semmi másolni való nincs innen: %s" -#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906 -#: lib/choose_repository.tcl:918 +#: lib/choose_repository.tcl:690 lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:916 msgid "The 'master' branch has not been initialized." msgstr "A 'master' branch nincs inicializálva." -#: lib/choose_repository.tcl:705 +#: lib/choose_repository.tcl:703 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "Nem érhetÅ‘ek el hardlinkek. Másolás használata." -#: lib/choose_repository.tcl:717 +#: lib/choose_repository.tcl:715 #, tcl-format msgid "Cloning from %s" msgstr "Másolás innen: %s" -#: lib/choose_repository.tcl:748 +#: lib/choose_repository.tcl:746 msgid "Copying objects" msgstr "Objektumok másolása" -#: lib/choose_repository.tcl:749 +#: lib/choose_repository.tcl:747 msgid "KiB" msgstr "KiB" -#: lib/choose_repository.tcl:773 +#: lib/choose_repository.tcl:771 #, tcl-format msgid "Unable to copy object: %s" msgstr "Nem sikerült másolni az objektumot: %s" -#: lib/choose_repository.tcl:783 +#: lib/choose_repository.tcl:781 msgid "Linking objects" msgstr "Objektumok összefűzése" -#: lib/choose_repository.tcl:784 +#: lib/choose_repository.tcl:782 msgid "objects" msgstr "objektum" -#: lib/choose_repository.tcl:792 +#: lib/choose_repository.tcl:790 #, tcl-format msgid "Unable to hardlink object: %s" msgstr "Nem sikerült hardlinkelni az objektumot: %s" -#: lib/choose_repository.tcl:847 +#: lib/choose_repository.tcl:845 msgid "Cannot fetch branches and objects. See console output for details." -msgstr "Nem sikerült letölteni a branch-eket és az objektumokat. BÅ‘vebben a konzolos kimenetben." +msgstr "" +"Nem sikerült letölteni a branch-eket és az objektumokat. BÅ‘vebben a " +"konzolos kimenetben." -#: lib/choose_repository.tcl:858 +#: lib/choose_repository.tcl:856 msgid "Cannot fetch tags. See console output for details." msgstr "Nem sikerült letölteni a tageket. BÅ‘vebben a konzolos kimenetben." -#: lib/choose_repository.tcl:882 +#: lib/choose_repository.tcl:880 msgid "Cannot determine HEAD. See console output for details." msgstr "Nem sikerült megállapÃtani a HEAD-et. BÅ‘vebben a konzolos kimenetben." -#: lib/choose_repository.tcl:891 +#: lib/choose_repository.tcl:889 #, tcl-format msgid "Unable to cleanup %s" msgstr "Nem sikerült tiszÃtani: %s." -#: lib/choose_repository.tcl:897 +#: lib/choose_repository.tcl:895 msgid "Clone failed." msgstr "A másolás nem sikerült." -#: lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:902 msgid "No default branch obtained." msgstr "Nincs alapértelmezett branch." -#: lib/choose_repository.tcl:915 +#: lib/choose_repository.tcl:913 #, tcl-format msgid "Cannot resolve %s as a commit." msgstr "Nem sikerült felöldani a(z) %s objektumot commitként." -#: lib/choose_repository.tcl:927 +#: lib/choose_repository.tcl:925 msgid "Creating working directory" msgstr "Munkakönyvtár létrehozása" -#: lib/choose_repository.tcl:928 lib/index.tcl:65 lib/index.tcl:127 +#: lib/choose_repository.tcl:926 lib/index.tcl:65 lib/index.tcl:127 #: lib/index.tcl:193 msgid "files" msgstr "fájl" -#: lib/choose_repository.tcl:957 +#: lib/choose_repository.tcl:955 msgid "Initial file checkout failed." msgstr "A kezdeti fájl-kibontás sikertelen." -#: lib/choose_repository.tcl:973 +#: lib/choose_repository.tcl:971 msgid "Open" msgstr "Megnyitás" -#: lib/choose_repository.tcl:983 +#: lib/choose_repository.tcl:981 msgid "Repository:" msgstr "Repó:" -#: lib/choose_repository.tcl:1033 +#: lib/choose_repository.tcl:1031 #, tcl-format msgid "Failed to open repository %s:" msgstr "Nem sikerült megnyitni a(z) %s repót:" @@ -1137,7 +1144,7 @@ msgstr "Helyi branch" msgid "Tracking Branch" msgstr "KövetÅ‘ branch" -#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:537 +#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538 msgid "Tag" msgstr "Tag" @@ -1154,11 +1161,11 @@ msgstr "Nincs kiválasztva revÃzió." msgid "Revision expression is empty." msgstr "A revÃzió kifejezés üres." -#: lib/choose_rev.tcl:530 +#: lib/choose_rev.tcl:531 msgid "Updated" msgstr "FrissÃtve" -#: lib/choose_rev.tcl:558 +#: lib/choose_rev.tcl:559 msgid "URL" msgstr "URL" @@ -1268,16 +1275,45 @@ msgstr "" "- Második sor: Ãœres\n" "- A többi sor: LeÃrja, hogy miért jó ez a változtatás.\n" -#: lib/commit.tcl:257 +#: lib/commit.tcl:207 +#, tcl-format +msgid "warning: Tcl does not support encoding '%s'." +msgstr "figyelmeztetés: a Tcl nem támogatja a(z) '%s' kódolást." + +#: lib/commit.tcl:221 +msgid "Calling pre-commit hook..." +msgstr "A pre-commit hurok meghÃvása..." + +#: lib/commit.tcl:236 +msgid "Commit declined by pre-commit hook." +msgstr "A commitot megakadályozta a pre-commit hurok. " + +#: lib/commit.tcl:259 +msgid "Calling commit-msg hook..." +msgstr "A commit-msg hurok meghÃvása..." + +#: lib/commit.tcl:274 +msgid "Commit declined by commit-msg hook." +msgstr "A commiot megakadályozta a commit-msg hurok." + +#: lib/commit.tcl:287 +msgid "Committing changes..." +msgstr "A változtatások commitolása..." + +#: lib/commit.tcl:303 msgid "write-tree failed:" msgstr "a write-tree sikertelen:" -#: lib/commit.tcl:275 +#: lib/commit.tcl:304 lib/commit.tcl:348 lib/commit.tcl:368 +msgid "Commit failed." +msgstr "A commit nem sikerült." + +#: lib/commit.tcl:321 #, tcl-format msgid "Commit %s appears to be corrupt" msgstr "A(z) %s commit sérültnek tűnik" -#: lib/commit.tcl:279 +#: lib/commit.tcl:326 msgid "" "No changes to commit.\n" "\n" @@ -1291,37 +1327,32 @@ msgstr "" "\n" "Az újrakeresés most automatikusan el fog indulni.\n" -#: lib/commit.tcl:286 +#: lib/commit.tcl:333 msgid "No changes to commit." msgstr "Nincs commitolandó változtatás." -#: lib/commit.tcl:303 -#, tcl-format -msgid "warning: Tcl does not support encoding '%s'." -msgstr "figyelmeztetés: a Tcl nem támogatja a(z) '%s' kódolást." - -#: lib/commit.tcl:317 +#: lib/commit.tcl:347 msgid "commit-tree failed:" msgstr "a commit-tree sikertelen:" -#: lib/commit.tcl:339 +#: lib/commit.tcl:367 msgid "update-ref failed:" msgstr "az update-ref sikertelen:" -#: lib/commit.tcl:430 +#: lib/commit.tcl:454 #, tcl-format msgid "Created commit %s: %s" msgstr "Létrejött a %s commit: %s" -#: lib/console.tcl:57 +#: lib/console.tcl:59 msgid "Working... please wait..." msgstr "Munka folyamatban.. Várjunk..." -#: lib/console.tcl:183 +#: lib/console.tcl:186 msgid "Success" msgstr "Siker" -#: lib/console.tcl:196 +#: lib/console.tcl:200 msgid "Error: Command Failed" msgstr "Hiba: a parancs sikertelen" @@ -1431,23 +1462,23 @@ msgstr "* Bináris fájl (tartalom elrejtése)." msgid "Error loading diff:" msgstr "Hiba a diff betöltése közben:" -#: lib/diff.tcl:302 +#: lib/diff.tcl:303 msgid "Failed to unstage selected hunk." msgstr "Nem visszavonni a hunk kiválasztását." -#: lib/diff.tcl:309 +#: lib/diff.tcl:310 msgid "Failed to stage selected hunk." msgstr "Nem sikerült kiválasztani a hunkot." -#: lib/error.tcl:12 lib/error.tcl:102 +#: lib/error.tcl:20 lib/error.tcl:114 msgid "error" msgstr "hiba" -#: lib/error.tcl:28 +#: lib/error.tcl:36 msgid "warning" msgstr "figyelmeztetés" -#: lib/error.tcl:81 +#: lib/error.tcl:94 msgid "You must correct the above errors before committing." msgstr "Ki kell javÃtanunk a fenti hibákat commit elÅ‘tt." @@ -1464,8 +1495,8 @@ msgid "" "Updating the Git index failed. A rescan will be automatically started to " "resynchronize git-gui." msgstr "" -"A Git index frissÃtése sikertelen volt. Egy újraolvasás automatikusan elindult, hogy " -"a git-gui újra szinkonban legyen." +"A Git index frissÃtése sikertelen volt. Egy újraolvasás automatikusan " +"elindult, hogy a git-gui újra szinkonban legyen." #: lib/index.tcl:27 msgid "Continue" @@ -1480,6 +1511,10 @@ msgstr "Index zárolásának feloldása" msgid "Unstaging %s from commit" msgstr "A(z) %s commitba való kiválasztásának visszavonása" +#: lib/index.tcl:313 +msgid "Ready to commit." +msgstr "Commitolásra kész." + #: lib/index.tcl:326 #, tcl-format msgid "Adding %s" @@ -1495,13 +1530,13 @@ msgstr "VisszaállÃtja a változtatásokat a(z) %s fájlban?" msgid "Revert changes in these %i files?" msgstr "VisszaállÃtja a változtatásokat ebben e %i fájlban?" -#: lib/index.tcl:389 +#: lib/index.tcl:391 msgid "Any unstaged changes will be permanently lost by the revert." msgstr "" "Minden nem kiválasztott változtatás el fog veszni ezáltal a visszaállÃtás " "által." -#: lib/index.tcl:392 +#: lib/index.tcl:394 msgid "Do Nothing" msgstr "Ne csináljunk semmit" @@ -1574,27 +1609,27 @@ msgstr "%s / %s" #: lib/merge.tcl:119 #, tcl-format -msgid "Merging %s and %s" -msgstr "A(z) %s és a(z) %s merge-ölése" +msgid "Merging %s and %s..." +msgstr "A(z) %s és a(z) %s merge-ölése..." -#: lib/merge.tcl:131 +#: lib/merge.tcl:130 msgid "Merge completed successfully." msgstr "A merge sikeresen befejezÅ‘dött." -#: lib/merge.tcl:133 +#: lib/merge.tcl:132 msgid "Merge failed. Conflict resolution is required." msgstr "A merge sikertelen. Fel kell oldanunk az ütközéseket." -#: lib/merge.tcl:158 +#: lib/merge.tcl:157 #, tcl-format msgid "Merge Into %s" msgstr "Merge-ölés a következÅ‘be: %s" -#: lib/merge.tcl:177 +#: lib/merge.tcl:176 msgid "Revision To Merge" msgstr "Merge-ölni szándékozott revÃzió" -#: lib/merge.tcl:212 +#: lib/merge.tcl:211 msgid "" "Cannot abort while amending.\n" "\n" @@ -1604,7 +1639,7 @@ msgstr "" "\n" "Be kell fejeznünk ennek a commitnak a javÃtását.\n" -#: lib/merge.tcl:222 +#: lib/merge.tcl:221 msgid "" "Abort merge?\n" "\n" @@ -1619,7 +1654,7 @@ msgstr "" "\n" "Folytatjuk a jelenlegi merge megszakÃtását?" -#: lib/merge.tcl:228 +#: lib/merge.tcl:227 msgid "" "Reset changes?\n" "\n" @@ -1634,93 +1669,105 @@ msgstr "" "\n" "Folytatjuk a jelenlegi módosÃtások visszavonását?" -#: lib/merge.tcl:239 +#: lib/merge.tcl:238 msgid "Aborting" msgstr "FélbeszakÃtás" -#: lib/merge.tcl:266 +#: lib/merge.tcl:238 +msgid "files reset" +msgstr "fájl visszaállÃtva" + +#: lib/merge.tcl:265 msgid "Abort failed." msgstr "A félbeszakÃtás nem sikerült." -#: lib/merge.tcl:268 +#: lib/merge.tcl:267 msgid "Abort completed. Ready." msgstr "A megkeszakÃtás befejezÅ‘dött. Kész." -#: lib/option.tcl:82 +#: lib/option.tcl:95 msgid "Restore Defaults" msgstr "Alapértelmezés visszaállÃtása" -#: lib/option.tcl:86 +#: lib/option.tcl:99 msgid "Save" msgstr "Mentés" -#: lib/option.tcl:96 +#: lib/option.tcl:109 #, tcl-format msgid "%s Repository" msgstr "%s Repó" -#: lib/option.tcl:97 +#: lib/option.tcl:110 msgid "Global (All Repositories)" msgstr "Globális (minden repó)" -#: lib/option.tcl:103 +#: lib/option.tcl:116 msgid "User Name" msgstr "Felhasználónév" -#: lib/option.tcl:104 +#: lib/option.tcl:117 msgid "Email Address" msgstr "Email cÃm" -#: lib/option.tcl:106 +#: lib/option.tcl:119 msgid "Summarize Merge Commits" msgstr "A merge commitok összegzése" -#: lib/option.tcl:107 +#: lib/option.tcl:120 msgid "Merge Verbosity" msgstr "Merge beszédesség" -#: lib/option.tcl:108 +#: lib/option.tcl:121 msgid "Show Diffstat After Merge" msgstr "Diffstat mutatása merge után" -#: lib/option.tcl:110 +#: lib/option.tcl:123 msgid "Trust File Modification Timestamps" msgstr "A fájl módosÃtási dátumok megbÃzhatóak" -#: lib/option.tcl:111 +#: lib/option.tcl:124 msgid "Prune Tracking Branches During Fetch" msgstr "A követÅ‘ branchek eltávolÃtása letöltés alatt" -#: lib/option.tcl:112 +#: lib/option.tcl:125 msgid "Match Tracking Branches" msgstr "A követÅ‘ branchek egyeztetése" -#: lib/option.tcl:113 +#: lib/option.tcl:126 msgid "Number of Diff Context Lines" msgstr "A diff környezeti sorok száma" -#: lib/option.tcl:114 +#: lib/option.tcl:127 +msgid "Commit Message Text Width" +msgstr "Commit üzenet szövegének szélessége" + +#: lib/option.tcl:128 msgid "New Branch Name Template" msgstr "Új branch név sablon" -#: lib/option.tcl:176 +#: lib/option.tcl:192 +msgid "Spelling Dictionary:" +msgstr "HelyesÃrás-ellenÅ‘rzÅ‘ szótár:" + +#: lib/option.tcl:216 msgid "Change Font" msgstr "BetűtÃpus megváltoztatása" -#: lib/option.tcl:180 +#: lib/option.tcl:220 #, tcl-format msgid "Choose %s" msgstr "%s választása" -#: lib/option.tcl:186 +#: lib/option.tcl:226 msgid "pt." msgstr "pt." -#: lib/option.tcl:200 +#: lib/option.tcl:240 msgid "Preferences" msgstr "BeállÃtások" -#: lib/option.tcl:235 +#: lib/option.tcl:275 msgid "Failed to completely save options:" msgstr "Nem sikerült teljesen elmenteni a beállÃtásokat:" @@ -1767,8 +1814,7 @@ msgid "" "\n" " - %s" msgstr "" -"A következÅ‘ branchek nem teljesen lettek merge-ölve ebbe: %s:" -"\n" +"A következÅ‘ branchek nem teljesen lettek merge-ölve ebbe: %s:\n" " - %s" #: lib/remote_branch_delete.tcl:189 @@ -1829,6 +1875,43 @@ msgstr "Nem sikerült Ãrni a gyorsbillentyűt:" msgid "Cannot write icon:" msgstr "Nem sikerült Ãrni az ikont:" +#: lib/spellcheck.tcl:57 +msgid "Unsupported spell checker" +msgstr "Nem támogatott helyesÃrás-ellenÅ‘rzÅ‘" + +#: lib/spellcheck.tcl:65 +msgid "Spell checking is unavailable" +msgstr "A helyesÃrás-ellenÅ‘rzés nem elérhetÅ‘" + +#: lib/spellcheck.tcl:68 +msgid "Invalid spell checking configuration" +msgstr "Érvénytelen a helyesÃrás-ellenÅ‘rzÅ‘ beállÃtása" + +#: lib/spellcheck.tcl:70 +#, tcl-format +msgid "Reverting dictionary to %s." +msgstr "Szótár visszaállÃtása a következÅ‘re: %s." + +#: lib/spellcheck.tcl:73 +msgid "Spell checker silently failed on startup" +msgstr "A helyesÃrás-ellenÅ‘rÅ‘ indÃtása sikertelen" + +#: lib/spellcheck.tcl:80 +msgid "Unrecognized spell checker" +msgstr "Ismeretlen helyesÃrás-ellenÅ‘rzÅ‘" + +#: lib/spellcheck.tcl:180 +msgid "No Suggestions" +msgstr "Nincs javaslat" + +#: lib/spellcheck.tcl:381 +msgid "Unexpected EOF from spell checker" +msgstr "Nem várt EOF a helyesÃrás-ellenÅ‘rzÅ‘tÅ‘l" + +#: lib/spellcheck.tcl:385 +msgid "Spell Checker Failed" +msgstr "A helyesÃrás-ellenÅ‘rzés sikertelen" + #: lib/status_bar.tcl:83 #, tcl-format msgid "%s ... %*i of %*i %s (%3i%%)" @@ -1887,7 +1970,9 @@ msgstr "Ãtviteli opciók" #: lib/transport.tcl:160 msgid "Force overwrite existing branch (may discard changes)" -msgstr "LétezÅ‘ branch felülÃrásának erÅ‘ltetése (lehet, hogy el fog dobni változtatásokat)" +msgstr "" +"LétezÅ‘ branch felülÃrásának erÅ‘ltetése (lehet, hogy el fog dobni " +"változtatásokat)" #: lib/transport.tcl:164 msgid "Use thin pack (for slow network connections)" @@ -1897,6 +1982,9 @@ msgstr "Vékony csomagok használata (lassú hálózati kapcsolatok számára)" msgid "Include tags" msgstr "Tageket is" +#~ msgid "Not connected to aspell" +#~ msgstr "Nincs kapcsolat az aspellhez" + #~ msgid "Cannot find the git directory:" #~ msgstr "Nem található a git könyvtár:" diff --git a/git-gui/po/it.po b/git-gui/po/it.po index 33a8399175..11cc79bb5e 100644 --- a/git-gui/po/it.po +++ b/git-gui/po/it.po @@ -9,41 +9,41 @@ msgid "" msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-11-09 11:18+0100\n" -"PO-Revision-Date: 2007-11-01 21:05+0100\n" +"POT-Creation-Date: 2008-03-14 07:18+0100\n" +"PO-Revision-Date: 2008-03-12 22:12+0100\n" "Last-Translator: Michele Ballabio <barra_cuda@katamail.com>\n" "Language-Team: Italian <tp@lists.linux.it>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: git-gui.sh:41 git-gui.sh:604 git-gui.sh:618 git-gui.sh:631 git-gui.sh:714 -#: git-gui.sh:733 +#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 +#: git-gui.sh:763 msgid "git-gui: fatal error" msgstr "git-gui: errore grave" -#: git-gui.sh:565 +#: git-gui.sh:593 #, tcl-format msgid "Invalid font specified in %s:" msgstr "Caratteri non validi specificati in %s:" -#: git-gui.sh:590 +#: git-gui.sh:620 msgid "Main Font" msgstr "Caratteri principali" -#: git-gui.sh:591 +#: git-gui.sh:621 msgid "Diff/Console Font" msgstr "Caratteri per confronti e terminale" -#: git-gui.sh:605 +#: git-gui.sh:635 msgid "Cannot find git in PATH." msgstr "Impossibile trovare git nel PATH" -#: git-gui.sh:632 +#: git-gui.sh:662 msgid "Cannot parse Git version string:" msgstr "Impossibile determinare la versione di Git:" -#: git-gui.sh:650 +#: git-gui.sh:680 #, tcl-format msgid "" "Git version cannot be determined.\n" @@ -62,79 +62,79 @@ msgstr "" "\n" "Assumere che '%s' sia alla versione 1.5.0?\n" -#: git-gui.sh:888 +#: git-gui.sh:918 msgid "Git directory not found:" msgstr "Non trovo la directory di git: " -#: git-gui.sh:895 +#: git-gui.sh:925 msgid "Cannot move to top of working directory:" msgstr "Impossibile spostarsi sulla directory principale del progetto:" -#: git-gui.sh:902 +#: git-gui.sh:932 msgid "Cannot use funny .git directory:" msgstr "Impossibile usare una .git directory strana:" -#: git-gui.sh:907 +#: git-gui.sh:937 msgid "No working directory" msgstr "Nessuna directory di lavoro" -#: git-gui.sh:1054 +#: git-gui.sh:1084 lib/checkout_op.tcl:283 msgid "Refreshing file status..." msgstr "Controllo dello stato dei file in corso..." -#: git-gui.sh:1119 +#: git-gui.sh:1149 msgid "Scanning for modified files ..." msgstr "Ricerca di file modificati in corso..." -#: git-gui.sh:1294 lib/browser.tcl:245 +#: git-gui.sh:1324 lib/browser.tcl:246 msgid "Ready." msgstr "Pronto." -#: git-gui.sh:1560 +#: git-gui.sh:1590 msgid "Unmodified" msgstr "Non modificato" -#: git-gui.sh:1562 +#: git-gui.sh:1592 msgid "Modified, not staged" msgstr "Modificato, non preparato per una nuova revisione" -#: git-gui.sh:1563 git-gui.sh:1568 +#: git-gui.sh:1593 git-gui.sh:1598 msgid "Staged for commit" msgstr "Preparato per una nuova revisione" -#: git-gui.sh:1564 git-gui.sh:1569 +#: git-gui.sh:1594 git-gui.sh:1599 msgid "Portions staged for commit" msgstr "Parti preparate per una nuova revisione" -#: git-gui.sh:1565 git-gui.sh:1570 +#: git-gui.sh:1595 git-gui.sh:1600 msgid "Staged for commit, missing" msgstr "Preparato per una nuova revisione, mancante" -#: git-gui.sh:1567 +#: git-gui.sh:1597 msgid "Untracked, not staged" msgstr "Non tracciato, non preparato per una nuova revisione" -#: git-gui.sh:1572 +#: git-gui.sh:1602 msgid "Missing" msgstr "Mancante" -#: git-gui.sh:1573 +#: git-gui.sh:1603 msgid "Staged for removal" msgstr "Preparato per la rimozione" -#: git-gui.sh:1574 +#: git-gui.sh:1604 msgid "Staged for removal, still present" msgstr "Preparato alla rimozione, ancora presente" -#: git-gui.sh:1576 git-gui.sh:1577 git-gui.sh:1578 git-gui.sh:1579 +#: git-gui.sh:1606 git-gui.sh:1607 git-gui.sh:1608 git-gui.sh:1609 msgid "Requires merge resolution" msgstr "Richiede risoluzione dei conflitti" -#: git-gui.sh:1614 +#: git-gui.sh:1644 msgid "Starting gitk... please wait..." msgstr "Avvio di gitk... attendere..." -#: git-gui.sh:1623 +#: git-gui.sh:1653 #, tcl-format msgid "" "Unable to start gitk:\n" @@ -145,297 +145,297 @@ msgstr "" "\n" "%s non esiste" -#: git-gui.sh:1823 lib/choose_repository.tcl:35 +#: git-gui.sh:1860 lib/choose_repository.tcl:36 msgid "Repository" msgstr "Archivio" -#: git-gui.sh:1824 +#: git-gui.sh:1861 msgid "Edit" msgstr "Modifica" -#: git-gui.sh:1826 lib/choose_rev.tcl:560 +#: git-gui.sh:1863 lib/choose_rev.tcl:561 msgid "Branch" msgstr "Ramo" -#: git-gui.sh:1829 lib/choose_rev.tcl:547 +#: git-gui.sh:1866 lib/choose_rev.tcl:548 msgid "Commit@@noun" msgstr "Revisione" -#: git-gui.sh:1832 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 +#: git-gui.sh:1869 lib/merge.tcl:120 lib/merge.tcl:149 lib/merge.tcl:167 msgid "Merge" msgstr "Fusione (Merge)" -#: git-gui.sh:1833 lib/choose_rev.tcl:556 +#: git-gui.sh:1870 lib/choose_rev.tcl:557 msgid "Remote" msgstr "Remoto" -#: git-gui.sh:1842 +#: git-gui.sh:1879 msgid "Browse Current Branch's Files" msgstr "Esplora i file del ramo attuale" -#: git-gui.sh:1846 +#: git-gui.sh:1883 msgid "Browse Branch Files..." msgstr "Esplora i file del ramo..." -#: git-gui.sh:1851 +#: git-gui.sh:1888 msgid "Visualize Current Branch's History" msgstr "Visualizza la cronologia del ramo attuale" -#: git-gui.sh:1855 +#: git-gui.sh:1892 msgid "Visualize All Branch History" msgstr "Visualizza la cronologia di tutti i rami" -#: git-gui.sh:1862 +#: git-gui.sh:1899 #, tcl-format msgid "Browse %s's Files" msgstr "Esplora i file di %s" -#: git-gui.sh:1864 +#: git-gui.sh:1901 #, tcl-format msgid "Visualize %s's History" msgstr "Visualizza la cronologia di %s" -#: git-gui.sh:1869 lib/database.tcl:27 lib/database.tcl:67 +#: git-gui.sh:1906 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" msgstr "Statistiche dell'archivio" -#: git-gui.sh:1872 lib/database.tcl:34 +#: git-gui.sh:1909 lib/database.tcl:34 msgid "Compress Database" msgstr "Comprimi l'archivio" -#: git-gui.sh:1875 +#: git-gui.sh:1912 msgid "Verify Database" msgstr "Verifica l'archivio" -#: git-gui.sh:1882 git-gui.sh:1886 git-gui.sh:1890 lib/shortcut.tcl:7 +#: git-gui.sh:1919 git-gui.sh:1923 git-gui.sh:1927 lib/shortcut.tcl:7 #: lib/shortcut.tcl:39 lib/shortcut.tcl:71 msgid "Create Desktop Icon" msgstr "Crea icona desktop" -#: git-gui.sh:1895 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184 +#: git-gui.sh:1932 lib/choose_repository.tcl:177 lib/choose_repository.tcl:185 msgid "Quit" msgstr "Esci" -#: git-gui.sh:1902 +#: git-gui.sh:1939 msgid "Undo" msgstr "Annulla" -#: git-gui.sh:1905 +#: git-gui.sh:1942 msgid "Redo" msgstr "Ripeti" -#: git-gui.sh:1909 git-gui.sh:2403 +#: git-gui.sh:1946 git-gui.sh:2443 msgid "Cut" msgstr "Taglia" -#: git-gui.sh:1912 git-gui.sh:2406 git-gui.sh:2477 git-gui.sh:2549 -#: lib/console.tcl:67 +#: git-gui.sh:1949 git-gui.sh:2446 git-gui.sh:2520 git-gui.sh:2614 +#: lib/console.tcl:69 msgid "Copy" msgstr "Copia" -#: git-gui.sh:1915 git-gui.sh:2409 +#: git-gui.sh:1952 git-gui.sh:2449 msgid "Paste" msgstr "Incolla" -#: git-gui.sh:1918 git-gui.sh:2412 lib/branch_delete.tcl:26 +#: git-gui.sh:1955 git-gui.sh:2452 lib/branch_delete.tcl:26 #: lib/remote_branch_delete.tcl:38 msgid "Delete" msgstr "Elimina" -#: git-gui.sh:1922 git-gui.sh:2416 git-gui.sh:2553 lib/console.tcl:69 +#: git-gui.sh:1959 git-gui.sh:2456 git-gui.sh:2618 lib/console.tcl:71 msgid "Select All" msgstr "Seleziona tutto" -#: git-gui.sh:1931 +#: git-gui.sh:1968 msgid "Create..." msgstr "Crea..." -#: git-gui.sh:1937 +#: git-gui.sh:1974 msgid "Checkout..." msgstr "Attiva..." -#: git-gui.sh:1943 +#: git-gui.sh:1980 msgid "Rename..." msgstr "Rinomina" -#: git-gui.sh:1948 git-gui.sh:2048 +#: git-gui.sh:1985 git-gui.sh:2085 msgid "Delete..." msgstr "Elimina..." -#: git-gui.sh:1953 +#: git-gui.sh:1990 msgid "Reset..." msgstr "Ripristina..." -#: git-gui.sh:1965 git-gui.sh:2350 +#: git-gui.sh:2002 git-gui.sh:2389 msgid "New Commit" msgstr "Nuova revisione" -#: git-gui.sh:1973 git-gui.sh:2357 +#: git-gui.sh:2010 git-gui.sh:2396 msgid "Amend Last Commit" msgstr "Correggi l'ultima revisione" -#: git-gui.sh:1982 git-gui.sh:2317 lib/remote_branch_delete.tcl:99 +#: git-gui.sh:2019 git-gui.sh:2356 lib/remote_branch_delete.tcl:99 msgid "Rescan" msgstr "Analizza nuovamente" -#: git-gui.sh:1988 +#: git-gui.sh:2025 msgid "Stage To Commit" msgstr "Prepara per una nuova revisione" -#: git-gui.sh:1994 +#: git-gui.sh:2031 msgid "Stage Changed Files To Commit" msgstr "Prepara i file modificati per una nuova revisione" -#: git-gui.sh:2000 +#: git-gui.sh:2037 msgid "Unstage From Commit" msgstr "Annulla preparazione" -#: git-gui.sh:2005 lib/index.tcl:393 +#: git-gui.sh:2042 lib/index.tcl:395 msgid "Revert Changes" msgstr "Annulla modifiche" -#: git-gui.sh:2012 git-gui.sh:2329 git-gui.sh:2427 +#: git-gui.sh:2049 git-gui.sh:2368 git-gui.sh:2467 msgid "Sign Off" msgstr "Sign Off" -#: git-gui.sh:2016 git-gui.sh:2333 +#: git-gui.sh:2053 git-gui.sh:2372 msgid "Commit@@verb" msgstr "Nuova revisione" -#: git-gui.sh:2027 +#: git-gui.sh:2064 msgid "Local Merge..." msgstr "Fusione locale..." -#: git-gui.sh:2032 +#: git-gui.sh:2069 msgid "Abort Merge..." msgstr "Interrompi fusione..." -#: git-gui.sh:2044 +#: git-gui.sh:2081 msgid "Push..." msgstr "Propaga..." -#: git-gui.sh:2055 lib/choose_repository.tcl:40 +#: git-gui.sh:2092 lib/choose_repository.tcl:41 msgid "Apple" msgstr "Apple" -#: git-gui.sh:2058 git-gui.sh:2080 lib/about.tcl:13 -#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49 +#: git-gui.sh:2095 git-gui.sh:2117 lib/about.tcl:14 +#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 #, tcl-format msgid "About %s" msgstr "Informazioni su %s" -#: git-gui.sh:2062 +#: git-gui.sh:2099 msgid "Preferences..." msgstr "Preferenze..." -#: git-gui.sh:2070 git-gui.sh:2595 +#: git-gui.sh:2107 git-gui.sh:2639 msgid "Options..." msgstr "Opzioni..." -#: git-gui.sh:2076 lib/choose_repository.tcl:46 +#: git-gui.sh:2113 lib/choose_repository.tcl:47 msgid "Help" msgstr "Aiuto" -#: git-gui.sh:2117 +#: git-gui.sh:2154 msgid "Online Documentation" msgstr "Documentazione sul web" -#: git-gui.sh:2201 +#: git-gui.sh:2238 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" msgstr "" "errore grave: impossibile effettuare lo stat del path %s: file o directory " "non trovata" -#: git-gui.sh:2234 +#: git-gui.sh:2271 msgid "Current Branch:" msgstr "Ramo attuale:" -#: git-gui.sh:2255 +#: git-gui.sh:2292 msgid "Staged Changes (Will Commit)" msgstr "Modifiche preparate (saranno nella nuova revisione)" -#: git-gui.sh:2274 +#: git-gui.sh:2312 msgid "Unstaged Changes" msgstr "Modifiche non preparate" -#: git-gui.sh:2323 +#: git-gui.sh:2362 msgid "Stage Changed" msgstr "Prepara modificati" -#: git-gui.sh:2339 lib/transport.tcl:93 lib/transport.tcl:182 +#: git-gui.sh:2378 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" msgstr "Propaga (Push)" -#: git-gui.sh:2369 +#: git-gui.sh:2408 msgid "Initial Commit Message:" msgstr "Messaggio di revisione iniziale:" -#: git-gui.sh:2370 +#: git-gui.sh:2409 msgid "Amended Commit Message:" msgstr "Messaggio di revisione corretto:" -#: git-gui.sh:2371 +#: git-gui.sh:2410 msgid "Amended Initial Commit Message:" msgstr "Messaggio iniziale di revisione corretto:" -#: git-gui.sh:2372 +#: git-gui.sh:2411 msgid "Amended Merge Commit Message:" msgstr "Messaggio di fusione corretto:" -#: git-gui.sh:2373 +#: git-gui.sh:2412 msgid "Merge Commit Message:" msgstr "Messaggio di fusione:" -#: git-gui.sh:2374 +#: git-gui.sh:2413 msgid "Commit Message:" msgstr "Messaggio di revisione:" -#: git-gui.sh:2419 git-gui.sh:2557 lib/console.tcl:71 +#: git-gui.sh:2459 git-gui.sh:2622 lib/console.tcl:73 msgid "Copy All" msgstr "Copia tutto" -#: git-gui.sh:2443 lib/blame.tcl:104 +#: git-gui.sh:2483 lib/blame.tcl:107 msgid "File:" msgstr "File:" -#: git-gui.sh:2545 -msgid "Refresh" -msgstr "Rinfresca" - -#: git-gui.sh:2566 +#: git-gui.sh:2589 msgid "Apply/Reverse Hunk" msgstr "Applica/Inverti sezione" -#: git-gui.sh:2572 -msgid "Decrease Font Size" -msgstr "Diminuisci dimensione caratteri" - -#: git-gui.sh:2576 -msgid "Increase Font Size" -msgstr "Aumenta dimensione caratteri" - -#: git-gui.sh:2581 +#: git-gui.sh:2595 msgid "Show Less Context" msgstr "Mostra meno contesto" -#: git-gui.sh:2588 +#: git-gui.sh:2602 msgid "Show More Context" msgstr "Mostra più contesto" -#: git-gui.sh:2602 +#: git-gui.sh:2610 +msgid "Refresh" +msgstr "Rinfresca" + +#: git-gui.sh:2631 +msgid "Decrease Font Size" +msgstr "Diminuisci dimensione caratteri" + +#: git-gui.sh:2635 +msgid "Increase Font Size" +msgstr "Aumenta dimensione caratteri" + +#: git-gui.sh:2646 msgid "Unstage Hunk From Commit" msgstr "Sezione non preparata per una nuova revisione" -#: git-gui.sh:2604 +#: git-gui.sh:2648 msgid "Stage Hunk For Commit" msgstr "Prepara sezione per una nuova revisione" -#: git-gui.sh:2623 +#: git-gui.sh:2667 msgid "Initializing..." msgstr "Inizializzazione..." -#: git-gui.sh:2718 +#: git-gui.sh:2762 #, tcl-format msgid "" "Possible environment issues exist.\n" @@ -452,7 +452,7 @@ msgstr "" "da %s:\n" "\n" -#: git-gui.sh:2748 +#: git-gui.sh:2792 msgid "" "\n" "This is due to a known issue with the\n" @@ -462,7 +462,7 @@ msgstr "" "Ciò è dovuto a un problema conosciuto\n" "causato dall'eseguibile Tcl distribuito da Cygwin." -#: git-gui.sh:2753 +#: git-gui.sh:2797 #, tcl-format msgid "" "\n" @@ -478,7 +478,7 @@ msgstr "" "consiste nell'assegnare valori alle variabili di configurazione\n" "user.name e user.email nel tuo file ~/.gitconfig personale.\n" -#: lib/about.tcl:25 +#: lib/about.tcl:26 msgid "git-gui - a graphical user interface for Git." msgstr "git-gui - un'interfaccia grafica per Git." @@ -490,56 +490,56 @@ msgstr "Mostra file" msgid "Commit:" msgstr "Revisione:" -#: lib/blame.tcl:249 +#: lib/blame.tcl:264 msgid "Copy Commit" msgstr "Copia revisione" -#: lib/blame.tcl:369 +#: lib/blame.tcl:384 #, tcl-format msgid "Reading %s..." msgstr "Lettura di %s..." -#: lib/blame.tcl:473 +#: lib/blame.tcl:488 msgid "Loading copy/move tracking annotations..." msgstr "Caricamento annotazioni per copie/spostamenti..." -#: lib/blame.tcl:493 +#: lib/blame.tcl:508 msgid "lines annotated" msgstr "linee annotate" -#: lib/blame.tcl:674 +#: lib/blame.tcl:689 msgid "Loading original location annotations..." msgstr "Caricamento annotazioni per posizione originaria..." -#: lib/blame.tcl:677 +#: lib/blame.tcl:692 msgid "Annotation complete." msgstr "Annotazione completata." -#: lib/blame.tcl:731 +#: lib/blame.tcl:746 msgid "Loading annotation..." msgstr "Caricamento annotazioni..." -#: lib/blame.tcl:787 +#: lib/blame.tcl:802 msgid "Author:" msgstr "Autore:" -#: lib/blame.tcl:791 +#: lib/blame.tcl:806 msgid "Committer:" msgstr "Revisione creata da:" -#: lib/blame.tcl:796 +#: lib/blame.tcl:811 msgid "Original File:" msgstr "File originario:" -#: lib/blame.tcl:910 +#: lib/blame.tcl:925 msgid "Originally By:" msgstr "In origine da:" -#: lib/blame.tcl:916 +#: lib/blame.tcl:931 msgid "In File:" msgstr "Nel file:" -#: lib/blame.tcl:921 +#: lib/blame.tcl:936 msgid "Copied Or Moved Here By:" msgstr "Copiato o spostato qui da:" @@ -552,17 +552,17 @@ msgid "Checkout" msgstr "Attiva" #: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35 -#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:281 -#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:172 -#: lib/option.tcl:90 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 +#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282 +#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:171 +#: lib/option.tcl:103 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 msgid "Cancel" msgstr "Annulla" -#: lib/branch_checkout.tcl:32 lib/browser.tcl:286 +#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 msgid "Revision" msgstr "Revisione" -#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:202 +#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:242 msgid "Options" msgstr "Opzioni" @@ -582,7 +582,7 @@ msgstr "Crea ramo" msgid "Create New Branch" msgstr "Crea nuovo ramo" -#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375 +#: lib/branch_create.tcl:31 lib/choose_repository.tcl:371 msgid "Create" msgstr "Crea" @@ -723,24 +723,24 @@ msgstr "Avvio in corso..." msgid "File Browser" msgstr "File browser" -#: lib/browser.tcl:125 lib/browser.tcl:142 +#: lib/browser.tcl:126 lib/browser.tcl:143 #, tcl-format msgid "Loading %s..." msgstr "Caricamento %s..." -#: lib/browser.tcl:186 +#: lib/browser.tcl:187 msgid "[Up To Parent]" msgstr "[Directory superiore]" -#: lib/browser.tcl:266 lib/browser.tcl:272 +#: lib/browser.tcl:267 lib/browser.tcl:273 msgid "Browse Branch Files" msgstr "Esplora i file del ramo" -#: lib/browser.tcl:277 lib/choose_repository.tcl:391 -#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492 -#: lib/choose_repository.tcl:989 +#: lib/browser.tcl:278 lib/choose_repository.tcl:387 +#: lib/choose_repository.tcl:474 lib/choose_repository.tcl:484 +#: lib/choose_repository.tcl:987 msgid "Browse" -msgstr "Sfoglia" +msgstr "Esplora" #: lib/checkout_op.tcl:79 #, tcl-format @@ -752,7 +752,7 @@ msgstr "Recupero %s da %s" msgid "fatal: Cannot resolve %s" msgstr "errore grave: impossibile risolvere %s" -#: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 +#: lib/checkout_op.tcl:140 lib/console.tcl:81 lib/database.tcl:31 msgid "Close" msgstr "Chiudi" @@ -811,6 +811,10 @@ msgstr "" msgid "Updating working directory to '%s'..." msgstr "Aggiornamento della directory di lavoro a '%s' in corso..." +#: lib/checkout_op.tcl:323 +msgid "files checked out" +msgstr "file presenti nella directory di lavoro" + #: lib/checkout_op.tcl:353 #, tcl-format msgid "Aborted checkout of '%s' (file level merging is required)." @@ -837,7 +841,7 @@ msgstr "" "Se si vuole rimanere su un ramo, crearne uno ora a partire da 'Questa " "revisione attiva staccata'." -#: lib/checkout_op.tcl:446 +#: lib/checkout_op.tcl:446 lib/checkout_op.tcl:450 #, tcl-format msgid "Checked out '%s'." msgstr "Attivazione di '%s' completata." @@ -857,7 +861,7 @@ msgstr "Ricomporre le revisioni perdute potrebbe non essere semplice." msgid "Reset '%s'?" msgstr "Ripristinare '%s'?" -#: lib/checkout_op.tcl:510 lib/merge.tcl:164 +#: lib/checkout_op.tcl:510 lib/merge.tcl:163 msgid "Visualize" msgstr "Visualizza" @@ -887,246 +891,246 @@ msgstr "Seleziona" msgid "Font Family" msgstr "Famiglia di caratteri" -#: lib/choose_font.tcl:73 +#: lib/choose_font.tcl:74 msgid "Font Size" msgstr "Dimensione caratteri" -#: lib/choose_font.tcl:90 +#: lib/choose_font.tcl:91 msgid "Font Example" msgstr "Esempio caratteri" -#: lib/choose_font.tcl:101 +#: lib/choose_font.tcl:103 msgid "" "This is example text.\n" "If you like this text, it can be your font." msgstr "" "Questo è un testo d'esempio.\n" -"Se ti piace questo testo, può essere il carattere giusto." +"Se ti piace questo testo, scegli questo carattere." -#: lib/choose_repository.tcl:27 +#: lib/choose_repository.tcl:28 msgid "Git Gui" msgstr "Git Gui" -#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380 +#: lib/choose_repository.tcl:81 lib/choose_repository.tcl:376 msgid "Create New Repository" msgstr "Crea nuovo archivio" -#: lib/choose_repository.tcl:86 +#: lib/choose_repository.tcl:87 msgid "New..." msgstr "Nuovo..." -#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468 +#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:460 msgid "Clone Existing Repository" msgstr "Clona archivio esistente" -#: lib/choose_repository.tcl:99 +#: lib/choose_repository.tcl:100 msgid "Clone..." msgstr "Clona..." -#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978 +#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:976 msgid "Open Existing Repository" msgstr "Apri archivio esistente" -#: lib/choose_repository.tcl:112 +#: lib/choose_repository.tcl:113 msgid "Open..." msgstr "Apri..." -#: lib/choose_repository.tcl:125 +#: lib/choose_repository.tcl:126 msgid "Recent Repositories" msgstr "Archivi recenti" -#: lib/choose_repository.tcl:131 +#: lib/choose_repository.tcl:132 msgid "Open Recent Repository:" msgstr "Apri archivio recente:" -#: lib/choose_repository.tcl:294 -#, tcl-format -msgid "Location %s already exists." -msgstr "La posizione %s esiste già ." - -#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307 -#: lib/choose_repository.tcl:314 +#: lib/choose_repository.tcl:296 lib/choose_repository.tcl:303 +#: lib/choose_repository.tcl:310 #, tcl-format msgid "Failed to create repository %s:" msgstr "Impossibile creare l'archivio %s:" -#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486 +#: lib/choose_repository.tcl:381 lib/choose_repository.tcl:478 msgid "Directory:" msgstr "Directory:" -#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544 -#: lib/choose_repository.tcl:1013 +#: lib/choose_repository.tcl:412 lib/choose_repository.tcl:537 +#: lib/choose_repository.tcl:1011 msgid "Git Repository" msgstr "Archivio Git" -#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437 +#: lib/choose_repository.tcl:437 #, tcl-format msgid "Directory %s already exists." msgstr "La directory %s esiste già ." -#: lib/choose_repository.tcl:442 +#: lib/choose_repository.tcl:441 #, tcl-format msgid "File %s already exists." msgstr "Il file %s esiste già ." -#: lib/choose_repository.tcl:463 +#: lib/choose_repository.tcl:455 msgid "Clone" msgstr "Clona" -#: lib/choose_repository.tcl:476 +#: lib/choose_repository.tcl:468 msgid "URL:" msgstr "URL:" -#: lib/choose_repository.tcl:496 +#: lib/choose_repository.tcl:489 msgid "Clone Type:" msgstr "Tipo di clone:" -#: lib/choose_repository.tcl:502 +#: lib/choose_repository.tcl:495 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "Standard (veloce, semi-ridondante, con hardlink)" -#: lib/choose_repository.tcl:508 +#: lib/choose_repository.tcl:501 msgid "Full Copy (Slower, Redundant Backup)" msgstr "Copia completa (più lento, backup ridondante)" -#: lib/choose_repository.tcl:514 +#: lib/choose_repository.tcl:507 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "Shared (il più veloce, non raccomandato, nessun backup)" -#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597 -#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808 -#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027 +#: lib/choose_repository.tcl:543 lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:736 lib/choose_repository.tcl:806 +#: lib/choose_repository.tcl:1017 lib/choose_repository.tcl:1025 #, tcl-format msgid "Not a Git repository: %s" msgstr "%s non è un archivio Git." -#: lib/choose_repository.tcl:586 +#: lib/choose_repository.tcl:579 msgid "Standard only available for local repository." msgstr "Standard è disponibile solo per archivi locali." -#: lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:583 msgid "Shared only available for local repository." msgstr "Shared è disponibile solo per archivi locali." -#: lib/choose_repository.tcl:617 +#: lib/choose_repository.tcl:604 +#, tcl-format +msgid "Location %s already exists." +msgstr "Il file/directory %s esiste già ." + +#: lib/choose_repository.tcl:615 msgid "Failed to configure origin" msgstr "Impossibile configurare origin" -#: lib/choose_repository.tcl:629 +#: lib/choose_repository.tcl:627 msgid "Counting objects" msgstr "Calcolo oggetti" -#: lib/choose_repository.tcl:630 +#: lib/choose_repository.tcl:628 msgid "buckets" msgstr "" -#: lib/choose_repository.tcl:654 +#: lib/choose_repository.tcl:652 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" msgstr "Impossibile copiare oggetti/info/alternate: %s" -#: lib/choose_repository.tcl:690 +#: lib/choose_repository.tcl:688 #, tcl-format msgid "Nothing to clone from %s." msgstr "Niente da clonare da %s." -#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906 -#: lib/choose_repository.tcl:918 +#: lib/choose_repository.tcl:690 lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:916 msgid "The 'master' branch has not been initialized." msgstr "Il ramo 'master' non è stato inizializzato." -#: lib/choose_repository.tcl:705 +#: lib/choose_repository.tcl:703 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "Impossibile utilizzare gli hardlink. Si ricorrerà alla copia." -#: lib/choose_repository.tcl:717 +#: lib/choose_repository.tcl:715 #, tcl-format msgid "Cloning from %s" msgstr "Clonazione da %s" -#: lib/choose_repository.tcl:748 +#: lib/choose_repository.tcl:746 msgid "Copying objects" msgstr "Copia degli oggetti" -#: lib/choose_repository.tcl:749 +#: lib/choose_repository.tcl:747 msgid "KiB" msgstr "KiB" -#: lib/choose_repository.tcl:773 +#: lib/choose_repository.tcl:771 #, tcl-format msgid "Unable to copy object: %s" msgstr "Impossibile copiare oggetto: %s" -#: lib/choose_repository.tcl:783 +#: lib/choose_repository.tcl:781 msgid "Linking objects" msgstr "Collegamento oggetti" -#: lib/choose_repository.tcl:784 +#: lib/choose_repository.tcl:782 msgid "objects" msgstr "oggetti" -#: lib/choose_repository.tcl:792 +#: lib/choose_repository.tcl:790 #, tcl-format msgid "Unable to hardlink object: %s" msgstr "Hardlink impossibile sull'oggetto: %s" -#: lib/choose_repository.tcl:847 +#: lib/choose_repository.tcl:845 msgid "Cannot fetch branches and objects. See console output for details." msgstr "" "Impossibile recuperare rami e oggetti. Controllare i dettagli forniti dalla " "console." -#: lib/choose_repository.tcl:858 +#: lib/choose_repository.tcl:856 msgid "Cannot fetch tags. See console output for details." msgstr "" "Impossibile recuperare le etichette. Controllare i dettagli forniti dalla " "console." -#: lib/choose_repository.tcl:882 +#: lib/choose_repository.tcl:880 msgid "Cannot determine HEAD. See console output for details." msgstr "" "Impossibile determinare HEAD. Controllare i dettagli forniti dalla console." -#: lib/choose_repository.tcl:891 +#: lib/choose_repository.tcl:889 #, tcl-format msgid "Unable to cleanup %s" msgstr "Impossibile ripulire %s" -#: lib/choose_repository.tcl:897 +#: lib/choose_repository.tcl:895 msgid "Clone failed." msgstr "Clonazione non riuscita." -#: lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:902 msgid "No default branch obtained." msgstr "Non è stato trovato un ramo predefinito." -#: lib/choose_repository.tcl:915 +#: lib/choose_repository.tcl:913 #, tcl-format msgid "Cannot resolve %s as a commit." msgstr "Impossibile risolvere %s come una revisione." -#: lib/choose_repository.tcl:927 +#: lib/choose_repository.tcl:925 msgid "Creating working directory" msgstr "Creazione directory di lavoro" -#: lib/choose_repository.tcl:928 lib/index.tcl:65 lib/index.tcl:127 +#: lib/choose_repository.tcl:926 lib/index.tcl:65 lib/index.tcl:127 #: lib/index.tcl:193 msgid "files" msgstr "file" -#: lib/choose_repository.tcl:957 +#: lib/choose_repository.tcl:955 msgid "Initial file checkout failed." msgstr "Attivazione iniziale non riuscita." -#: lib/choose_repository.tcl:973 +#: lib/choose_repository.tcl:971 msgid "Open" msgstr "Apri" -#: lib/choose_repository.tcl:983 +#: lib/choose_repository.tcl:981 msgid "Repository:" msgstr "Archivio:" -#: lib/choose_repository.tcl:1033 +#: lib/choose_repository.tcl:1031 #, tcl-format msgid "Failed to open repository %s:" msgstr "Impossibile accedere all'archivio %s:" @@ -1147,7 +1151,7 @@ msgstr "Ramo locale" msgid "Tracking Branch" msgstr "Duplicato locale di ramo remoto" -#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:537 +#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538 msgid "Tag" msgstr "Etichetta" @@ -1164,11 +1168,11 @@ msgstr "Nessuna revisione selezionata." msgid "Revision expression is empty." msgstr "L'espressione di revisione è vuota." -#: lib/choose_rev.tcl:530 +#: lib/choose_rev.tcl:531 msgid "Updated" msgstr "Aggiornato" -#: lib/choose_rev.tcl:558 +#: lib/choose_rev.tcl:559 msgid "URL" msgstr "URL" @@ -1268,7 +1272,7 @@ msgid "" "\n" "A good commit message has the following format:\n" "\n" -"- First line: Describe in one sentance what you did.\n" +"- First line: Describe in one sentence what you did.\n" "- Second line: Blank\n" "- Remaining lines: Describe why this change is good.\n" msgstr "" @@ -1280,16 +1284,45 @@ msgstr "" "- Seconda linea: vuota.\n" "- Terza linea: spiega a cosa serve la tua modifica.\n" -#: lib/commit.tcl:257 +#: lib/commit.tcl:207 +#, tcl-format +msgid "warning: Tcl does not support encoding '%s'." +msgstr "attenzione: Tcl non supporta la codifica '%s'." + +#: lib/commit.tcl:221 +msgid "Calling pre-commit hook..." +msgstr "Avvio pre-commit hook..." + +#: lib/commit.tcl:236 +msgid "Commit declined by pre-commit hook." +msgstr "Revisione rifiutata dal pre-commit hook." + +#: lib/commit.tcl:259 +msgid "Calling commit-msg hook..." +msgstr "Avvio commit-msg hook..." + +#: lib/commit.tcl:274 +msgid "Commit declined by commit-msg hook." +msgstr "Revisione rifiutata dal commit-msg hook." + +#: lib/commit.tcl:287 +msgid "Committing changes..." +msgstr "Archiviazione modifiche..." + +#: lib/commit.tcl:303 msgid "write-tree failed:" msgstr "write-tree non riuscito:" -#: lib/commit.tcl:275 +#: lib/commit.tcl:304 lib/commit.tcl:348 lib/commit.tcl:368 +msgid "Commit failed." +msgstr "Impossibile creare una nuova revisione." + +#: lib/commit.tcl:321 #, tcl-format msgid "Commit %s appears to be corrupt" msgstr "La revisione %s sembra essere danneggiata" -#: lib/commit.tcl:279 +#: lib/commit.tcl:326 msgid "" "No changes to commit.\n" "\n" @@ -1303,37 +1336,32 @@ msgstr "" "\n" "Si procederà subito ad una nuova analisi.\n" -#: lib/commit.tcl:286 +#: lib/commit.tcl:333 msgid "No changes to commit." msgstr "Nessuna modifica per la nuova revisione." -#: lib/commit.tcl:303 -#, tcl-format -msgid "warning: Tcl does not support encoding '%s'." -msgstr "attenzione: Tcl non supporta la codifica '%s'." - -#: lib/commit.tcl:317 +#: lib/commit.tcl:347 msgid "commit-tree failed:" msgstr "commit-tree non riuscito:" -#: lib/commit.tcl:339 +#: lib/commit.tcl:367 msgid "update-ref failed:" msgstr "update-ref non riuscito:" -#: lib/commit.tcl:430 +#: lib/commit.tcl:454 #, tcl-format msgid "Created commit %s: %s" msgstr "Creata revisione %s: %s" -#: lib/console.tcl:57 +#: lib/console.tcl:59 msgid "Working... please wait..." msgstr "Elaborazione in corso... attendere..." -#: lib/console.tcl:183 +#: lib/console.tcl:186 msgid "Success" msgstr "Successo" -#: lib/console.tcl:196 +#: lib/console.tcl:200 msgid "Error: Command Failed" msgstr "Errore: comando non riuscito" @@ -1444,23 +1472,23 @@ msgstr "* File binario (il contenuto non sarà mostrato)." msgid "Error loading diff:" msgstr "Errore nel caricamento delle differenze:" -#: lib/diff.tcl:302 +#: lib/diff.tcl:303 msgid "Failed to unstage selected hunk." msgstr "Impossibile rimuovere la sezione scelta dalla nuova revisione." -#: lib/diff.tcl:309 +#: lib/diff.tcl:310 msgid "Failed to stage selected hunk." msgstr "Impossibile preparare la sezione scelta per una nuova revisione." -#: lib/error.tcl:12 lib/error.tcl:102 +#: lib/error.tcl:20 lib/error.tcl:114 msgid "error" msgstr "errore" -#: lib/error.tcl:28 +#: lib/error.tcl:36 msgid "warning" msgstr "attenzione" -#: lib/error.tcl:81 +#: lib/error.tcl:94 msgid "You must correct the above errors before committing." msgstr "" "Bisogna correggere gli errori suddetti prima di creare una nuova revisione." @@ -1494,6 +1522,10 @@ msgstr "Sblocca l'accesso all'indice" msgid "Unstaging %s from commit" msgstr "%s non farà parte della prossima revisione" +#: lib/index.tcl:313 +msgid "Ready to commit." +msgstr "Pronto per creare una nuova revisione." + #: lib/index.tcl:326 #, tcl-format msgid "Adding %s" @@ -1509,13 +1541,13 @@ msgstr "Annullare le modifiche nel file %s?" msgid "Revert changes in these %i files?" msgstr "Annullare le modifiche in questi %i file?" -#: lib/index.tcl:389 +#: lib/index.tcl:391 msgid "Any unstaged changes will be permanently lost by the revert." msgstr "" "Tutte le modifiche non preparate per una nuova revisione saranno perse per " "sempre." -#: lib/index.tcl:392 +#: lib/index.tcl:394 msgid "Do Nothing" msgstr "Non fare niente" @@ -1589,27 +1621,27 @@ msgstr "%s di %s" #: lib/merge.tcl:119 #, tcl-format -msgid "Merging %s and %s" -msgstr "Fusione di %s e %s in corso" +msgid "Merging %s and %s..." +msgstr "Fusione di %s e %s in corso..." -#: lib/merge.tcl:131 +#: lib/merge.tcl:130 msgid "Merge completed successfully." msgstr "Fusione completata con successo." -#: lib/merge.tcl:133 +#: lib/merge.tcl:132 msgid "Merge failed. Conflict resolution is required." msgstr "Fusione non riuscita. Bisogna risolvere i conflitti." -#: lib/merge.tcl:158 +#: lib/merge.tcl:157 #, tcl-format msgid "Merge Into %s" msgstr "Fusione in %s" -#: lib/merge.tcl:177 +#: lib/merge.tcl:176 msgid "Revision To Merge" msgstr "Revisione da fondere" -#: lib/merge.tcl:212 +#: lib/merge.tcl:211 msgid "" "Cannot abort while amending.\n" "\n" @@ -1619,7 +1651,7 @@ msgstr "" "\n" "Bisogna finire di correggere questa revisione.\n" -#: lib/merge.tcl:222 +#: lib/merge.tcl:221 msgid "" "Abort merge?\n" "\n" @@ -1634,7 +1666,7 @@ msgstr "" "\n" "Continuare con l'interruzione della fusione attuale?" -#: lib/merge.tcl:228 +#: lib/merge.tcl:227 msgid "" "Reset changes?\n" "\n" @@ -1649,109 +1681,109 @@ msgstr "" "\n" "Continuare con l'annullamento delle modifiche attuali?" -#: lib/merge.tcl:239 +#: lib/merge.tcl:238 msgid "Aborting" -msgstr "Interruzione in corso" +msgstr "Interruzione" + +#: lib/merge.tcl:238 +msgid "files reset" +msgstr "ripristino file" -#: lib/merge.tcl:266 +#: lib/merge.tcl:265 msgid "Abort failed." msgstr "Interruzione non riuscita." -#: lib/merge.tcl:268 +#: lib/merge.tcl:267 msgid "Abort completed. Ready." msgstr "Interruzione completata. Pronto." -#: lib/option.tcl:82 +#: lib/option.tcl:95 msgid "Restore Defaults" msgstr "Ripristina valori predefiniti" -#: lib/option.tcl:86 +#: lib/option.tcl:99 msgid "Save" msgstr "Salva" -#: lib/option.tcl:96 +#: lib/option.tcl:109 #, tcl-format msgid "%s Repository" msgstr "Archivio di %s" -#: lib/option.tcl:97 +#: lib/option.tcl:110 msgid "Global (All Repositories)" msgstr "Tutti gli archivi" -#: lib/option.tcl:103 +#: lib/option.tcl:116 msgid "User Name" msgstr "Nome utente" -#: lib/option.tcl:104 +#: lib/option.tcl:117 msgid "Email Address" msgstr "Indirizzo Email" -#: lib/option.tcl:106 +#: lib/option.tcl:119 msgid "Summarize Merge Commits" msgstr "Riepilogo nelle revisioni di fusione" -#: lib/option.tcl:107 +#: lib/option.tcl:120 msgid "Merge Verbosity" msgstr "Prolissità della fusione" -#: lib/option.tcl:108 +#: lib/option.tcl:121 msgid "Show Diffstat After Merge" msgstr "Mostra statistiche delle differenze dopo la fusione" -#: lib/option.tcl:110 +#: lib/option.tcl:123 msgid "Trust File Modification Timestamps" msgstr "Fidati delle date di modifica dei file" -#: lib/option.tcl:111 +#: lib/option.tcl:124 msgid "Prune Tracking Branches During Fetch" msgstr "" "Effettua potatura dei duplicati locali di rami remoti durante il recupero" -#: lib/option.tcl:112 +#: lib/option.tcl:125 msgid "Match Tracking Branches" msgstr "Appaia duplicati locali di rami remoti" -#: lib/option.tcl:113 +#: lib/option.tcl:126 msgid "Number of Diff Context Lines" msgstr "Numero di linee di contesto nelle differenze" -#: lib/option.tcl:114 +#: lib/option.tcl:127 +msgid "Commit Message Text Width" +msgstr "Larghezza del messaggio di revisione" + +#: lib/option.tcl:128 msgid "New Branch Name Template" msgstr "Modello per il nome di un nuovo ramo" -#: lib/option.tcl:176 +#: lib/option.tcl:192 +msgid "Spelling Dictionary:" +msgstr "Lingua dizionario:" + +#: lib/option.tcl:216 msgid "Change Font" msgstr "Cambia caratteri" -#: lib/option.tcl:180 +#: lib/option.tcl:220 #, tcl-format msgid "Choose %s" msgstr "Scegli %s" -#: lib/option.tcl:186 +#: lib/option.tcl:226 msgid "pt." msgstr "pt." -#: lib/option.tcl:200 +#: lib/option.tcl:240 msgid "Preferences" msgstr "Preferenze" -#: lib/option.tcl:235 +#: lib/option.tcl:275 msgid "Failed to completely save options:" msgstr "Impossibile salvare completamente le opzioni:" -#: lib/remote.tcl:165 -msgid "Prune from" -msgstr "Effettua potatura da" - -#: lib/remote.tcl:170 -msgid "Fetch from" -msgstr "Recupera da" - -#: lib/remote.tcl:213 -msgid "Push to" -msgstr "Propaga verso" - #: lib/remote_branch_delete.tcl:29 lib/remote_branch_delete.tcl:34 msgid "Delete Remote Branch" msgstr "Cancella ramo remoto" @@ -1836,6 +1868,18 @@ msgstr "Nessun archivio selezionato." msgid "Scanning %s..." msgstr "Analisi in corso %s..." +#: lib/remote.tcl:165 +msgid "Prune from" +msgstr "Effettua potatura da" + +#: lib/remote.tcl:170 +msgid "Fetch from" +msgstr "Recupera da" + +#: lib/remote.tcl:213 +msgid "Push to" +msgstr "Propaga verso" + #: lib/shortcut.tcl:20 lib/shortcut.tcl:61 msgid "Cannot write shortcut:" msgstr "Impossibile scrivere shortcut:" @@ -1844,6 +1888,43 @@ msgstr "Impossibile scrivere shortcut:" msgid "Cannot write icon:" msgstr "Impossibile scrivere icona:" +#: lib/spellcheck.tcl:57 +msgid "Unsupported spell checker" +msgstr "Correttore ortografico non supportato" + +#: lib/spellcheck.tcl:65 +msgid "Spell checking is unavailable" +msgstr "Correzione ortografica indisponibile" + +#: lib/spellcheck.tcl:68 +msgid "Invalid spell checking configuration" +msgstr "La configurazione del correttore ortografico non è valida" + +#: lib/spellcheck.tcl:70 +#, tcl-format +msgid "Reverting dictionary to %s." +msgstr "Il dizionario è stato reimpostato su %s." + +#: lib/spellcheck.tcl:73 +msgid "Spell checker silently failed on startup" +msgstr "Il correttore ortografico ha riportato un errore all'avvio" + +#: lib/spellcheck.tcl:80 +msgid "Unrecognized spell checker" +msgstr "Correttore ortografico sconosciuto" + +#: lib/spellcheck.tcl:180 +msgid "No Suggestions" +msgstr "Nessun suggerimento" + +#: lib/spellcheck.tcl:381 +msgid "Unexpected EOF from spell checker" +msgstr "Il correttore ortografico ha mandato un EOF inaspettato" + +#: lib/spellcheck.tcl:385 +msgid "Spell Checker Failed" +msgstr "Errore nel correttore ortografico" + #: lib/status_bar.tcl:83 #, tcl-format msgid "%s ... %*i of %*i %s (%3i%%)" diff --git a/git-gui/po/ja.po b/git-gui/po/ja.po index e2cf5bdc06..28e6d6246b 100644 --- a/git-gui/po/ja.po +++ b/git-gui/po/ja.po @@ -8,41 +8,41 @@ msgid "" msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-11-24 10:36+0100\n" -"PO-Revision-Date: 2007-12-05 06:12+0900\n" +"POT-Creation-Date: 2008-03-14 07:18+0100\n" +"PO-Revision-Date: 2008-03-15 20:12+0900\n" "Last-Translator: ã—らã„ã— ãªãªã“ <nanako3@bluebottle.com>\n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: git-gui.sh:41 git-gui.sh:604 git-gui.sh:618 git-gui.sh:631 git-gui.sh:714 -#: git-gui.sh:733 +#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 +#: git-gui.sh:763 msgid "git-gui: fatal error" msgstr "git-gui: 致命的ãªã‚¨ãƒ©ãƒ¼" -#: git-gui.sh:565 +#: git-gui.sh:593 #, tcl-format msgid "Invalid font specified in %s:" msgstr "%s ã«ç„¡åŠ¹ãªãƒ•ã‚©ãƒ³ãƒˆãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã™:" -#: git-gui.sh:590 +#: git-gui.sh:620 msgid "Main Font" msgstr "主フォント" -#: git-gui.sh:591 +#: git-gui.sh:621 msgid "Diff/Console Font" msgstr "diff/コンソール・フォント" -#: git-gui.sh:605 +#: git-gui.sh:635 msgid "Cannot find git in PATH." msgstr "PATH ä¸ã« git ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" -#: git-gui.sh:632 +#: git-gui.sh:662 msgid "Cannot parse Git version string:" msgstr "Git ãƒãƒ¼ã‚¸ãƒ§ãƒ³åãŒç†è§£ã§ãã¾ã›ã‚“:" -#: git-gui.sh:650 +#: git-gui.sh:680 #, tcl-format msgid "" "Git version cannot be determined.\n" @@ -61,79 +61,79 @@ msgstr "" "\n" "'%s' ã¯ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 1.5.0 ã¨æ€ã£ã¦è‰¯ã„ã§ã™ã‹ï¼Ÿ\n" -#: git-gui.sh:888 +#: git-gui.sh:918 msgid "Git directory not found:" msgstr "Git ディレクトリãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“:" -#: git-gui.sh:895 +#: git-gui.sh:925 msgid "Cannot move to top of working directory:" msgstr "作æ¥ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®æœ€ä¸Šä½ã«ç§»å‹•ã§ãã¾ã›ã‚“" -#: git-gui.sh:902 +#: git-gui.sh:932 msgid "Cannot use funny .git directory:" msgstr "変㪠.git ディレクトリã¯ä½¿ãˆã¾ã›ã‚“" -#: git-gui.sh:907 +#: git-gui.sh:937 msgid "No working directory" msgstr "作æ¥ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªãŒã‚ã‚Šã¾ã›ã‚“" -#: git-gui.sh:1054 +#: git-gui.sh:1084 lib/checkout_op.tcl:283 msgid "Refreshing file status..." msgstr "ファイル状態を更新ã—ã¦ã„ã¾ã™â€¦" -#: git-gui.sh:1119 +#: git-gui.sh:1149 msgid "Scanning for modified files ..." msgstr "変更ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’スã‚ャンã—ã¦ã„ã¾ã™â€¦" -#: git-gui.sh:1294 lib/browser.tcl:245 +#: git-gui.sh:1324 lib/browser.tcl:246 msgid "Ready." msgstr "準備完了" -#: git-gui.sh:1560 +#: git-gui.sh:1590 msgid "Unmodified" msgstr "変更無ã—" -#: git-gui.sh:1562 +#: git-gui.sh:1592 msgid "Modified, not staged" msgstr "変更ã‚ã‚Šã€ã‚³ãƒŸãƒƒãƒˆæœªäºˆå®š" -#: git-gui.sh:1563 git-gui.sh:1568 +#: git-gui.sh:1593 git-gui.sh:1598 msgid "Staged for commit" msgstr "コミット予定済" -#: git-gui.sh:1564 git-gui.sh:1569 +#: git-gui.sh:1594 git-gui.sh:1599 msgid "Portions staged for commit" msgstr "部分的ã«ã‚³ãƒŸãƒƒãƒˆäºˆå®šæ¸ˆ" -#: git-gui.sh:1565 git-gui.sh:1570 +#: git-gui.sh:1595 git-gui.sh:1600 msgid "Staged for commit, missing" msgstr "コミット予定済ã€ãƒ•ã‚¡ã‚¤ãƒ«ç„¡ã—" -#: git-gui.sh:1567 +#: git-gui.sh:1597 msgid "Untracked, not staged" msgstr "管ç†å¤–ã€ã‚³ãƒŸãƒƒãƒˆæœªäºˆå®š" -#: git-gui.sh:1572 +#: git-gui.sh:1602 msgid "Missing" msgstr "ファイル無ã—" -#: git-gui.sh:1573 +#: git-gui.sh:1603 msgid "Staged for removal" msgstr "削除予定済" -#: git-gui.sh:1574 +#: git-gui.sh:1604 msgid "Staged for removal, still present" msgstr "削除予定済ã€ãƒ•ã‚¡ã‚¤ãƒ«æœªå‰Šé™¤" -#: git-gui.sh:1576 git-gui.sh:1577 git-gui.sh:1578 git-gui.sh:1579 +#: git-gui.sh:1606 git-gui.sh:1607 git-gui.sh:1608 git-gui.sh:1609 msgid "Requires merge resolution" msgstr "è¦ãƒžãƒ¼ã‚¸è§£æ±º" -#: git-gui.sh:1614 +#: git-gui.sh:1644 msgid "Starting gitk... please wait..." msgstr "gitk ã‚’èµ·å‹•ä¸â€¦ãŠå¾…ã¡ä¸‹ã•ã„…" -#: git-gui.sh:1623 +#: git-gui.sh:1653 #, tcl-format msgid "" "Unable to start gitk:\n" @@ -144,297 +144,297 @@ msgstr "" "\n" "%s ãŒã‚ã‚Šã¾ã›ã‚“" -#: git-gui.sh:1823 lib/choose_repository.tcl:35 +#: git-gui.sh:1860 lib/choose_repository.tcl:36 msgid "Repository" msgstr "リãƒã‚¸ãƒˆãƒª" -#: git-gui.sh:1824 +#: git-gui.sh:1861 msgid "Edit" msgstr "編集" -#: git-gui.sh:1826 lib/choose_rev.tcl:560 +#: git-gui.sh:1863 lib/choose_rev.tcl:561 msgid "Branch" msgstr "ブランãƒ" -#: git-gui.sh:1829 lib/choose_rev.tcl:547 +#: git-gui.sh:1866 lib/choose_rev.tcl:548 msgid "Commit@@noun" msgstr "コミット" -#: git-gui.sh:1832 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 +#: git-gui.sh:1869 lib/merge.tcl:120 lib/merge.tcl:149 lib/merge.tcl:167 msgid "Merge" msgstr "マージ" -#: git-gui.sh:1833 lib/choose_rev.tcl:556 +#: git-gui.sh:1870 lib/choose_rev.tcl:557 msgid "Remote" msgstr "リモート" -#: git-gui.sh:1842 +#: git-gui.sh:1879 msgid "Browse Current Branch's Files" msgstr "ç¾åœ¨ã®ãƒ–ランãƒã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’見る" -#: git-gui.sh:1846 +#: git-gui.sh:1883 msgid "Browse Branch Files..." msgstr "ブランãƒã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’見る…" -#: git-gui.sh:1851 +#: git-gui.sh:1888 msgid "Visualize Current Branch's History" msgstr "ç¾åœ¨ã®ãƒ–ランãƒã®å±¥æ´ã‚’見る" -#: git-gui.sh:1855 +#: git-gui.sh:1892 msgid "Visualize All Branch History" msgstr "å…¨ã¦ã®ãƒ–ランãƒã®å±¥æ´ã‚’見る" -#: git-gui.sh:1862 +#: git-gui.sh:1899 #, tcl-format msgid "Browse %s's Files" msgstr "ブランム%s ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’見る" -#: git-gui.sh:1864 +#: git-gui.sh:1901 #, tcl-format msgid "Visualize %s's History" msgstr "ブランム%s ã®å±¥æ´ã‚’見る" -#: git-gui.sh:1869 lib/database.tcl:27 lib/database.tcl:67 +#: git-gui.sh:1906 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" msgstr "データベース統計" -#: git-gui.sh:1872 lib/database.tcl:34 +#: git-gui.sh:1909 lib/database.tcl:34 msgid "Compress Database" msgstr "データベース圧縮" -#: git-gui.sh:1875 +#: git-gui.sh:1912 msgid "Verify Database" msgstr "データベース検証" -#: git-gui.sh:1882 git-gui.sh:1886 git-gui.sh:1890 lib/shortcut.tcl:7 +#: git-gui.sh:1919 git-gui.sh:1923 git-gui.sh:1927 lib/shortcut.tcl:7 #: lib/shortcut.tcl:39 lib/shortcut.tcl:71 msgid "Create Desktop Icon" msgstr "デスクトップ・アイコンを作る" -#: git-gui.sh:1895 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184 +#: git-gui.sh:1932 lib/choose_repository.tcl:177 lib/choose_repository.tcl:185 msgid "Quit" msgstr "終了" -#: git-gui.sh:1902 +#: git-gui.sh:1939 msgid "Undo" msgstr "å…ƒã«æˆ»ã™" -#: git-gui.sh:1905 +#: git-gui.sh:1942 msgid "Redo" msgstr "ã‚„ã‚Šç›´ã—" -#: git-gui.sh:1909 git-gui.sh:2403 +#: git-gui.sh:1946 git-gui.sh:2443 msgid "Cut" msgstr "切りå–ã‚Š" -#: git-gui.sh:1912 git-gui.sh:2406 git-gui.sh:2477 git-gui.sh:2549 -#: lib/console.tcl:67 +#: git-gui.sh:1949 git-gui.sh:2446 git-gui.sh:2520 git-gui.sh:2614 +#: lib/console.tcl:69 msgid "Copy" msgstr "コピー" -#: git-gui.sh:1915 git-gui.sh:2409 +#: git-gui.sh:1952 git-gui.sh:2449 msgid "Paste" msgstr "貼り付ã‘" -#: git-gui.sh:1918 git-gui.sh:2412 lib/branch_delete.tcl:26 +#: git-gui.sh:1955 git-gui.sh:2452 lib/branch_delete.tcl:26 #: lib/remote_branch_delete.tcl:38 msgid "Delete" msgstr "削除" -#: git-gui.sh:1922 git-gui.sh:2416 git-gui.sh:2553 lib/console.tcl:69 +#: git-gui.sh:1959 git-gui.sh:2456 git-gui.sh:2618 lib/console.tcl:71 msgid "Select All" msgstr "å…¨ã¦é¸æŠž" -#: git-gui.sh:1931 +#: git-gui.sh:1968 msgid "Create..." msgstr "作æˆâ€¦" -#: git-gui.sh:1937 +#: git-gui.sh:1974 msgid "Checkout..." msgstr "ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆ" -#: git-gui.sh:1943 +#: git-gui.sh:1980 msgid "Rename..." msgstr "åå‰å¤‰æ›´â€¦" -#: git-gui.sh:1948 git-gui.sh:2048 +#: git-gui.sh:1985 git-gui.sh:2085 msgid "Delete..." msgstr "削除…" -#: git-gui.sh:1953 +#: git-gui.sh:1990 msgid "Reset..." msgstr "リセット…" -#: git-gui.sh:1965 git-gui.sh:2350 +#: git-gui.sh:2002 git-gui.sh:2389 msgid "New Commit" msgstr "æ–°è¦ã‚³ãƒŸãƒƒãƒˆ" -#: git-gui.sh:1973 git-gui.sh:2357 +#: git-gui.sh:2010 git-gui.sh:2396 msgid "Amend Last Commit" msgstr "最新コミットを訂æ£" -#: git-gui.sh:1982 git-gui.sh:2317 lib/remote_branch_delete.tcl:99 +#: git-gui.sh:2019 git-gui.sh:2356 lib/remote_branch_delete.tcl:99 msgid "Rescan" msgstr "å†ã‚¹ã‚ャン" -#: git-gui.sh:1988 +#: git-gui.sh:2025 msgid "Stage To Commit" msgstr "コミット予定ã™ã‚‹" -#: git-gui.sh:1994 +#: git-gui.sh:2031 msgid "Stage Changed Files To Commit" msgstr "変更ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’コミット予定" -#: git-gui.sh:2000 +#: git-gui.sh:2037 msgid "Unstage From Commit" msgstr "コミットã‹ã‚‰é™ã‚ã™" -#: git-gui.sh:2005 lib/index.tcl:393 +#: git-gui.sh:2042 lib/index.tcl:395 msgid "Revert Changes" msgstr "変更を元ã«æˆ»ã™" -#: git-gui.sh:2012 git-gui.sh:2329 git-gui.sh:2427 +#: git-gui.sh:2049 git-gui.sh:2368 git-gui.sh:2467 msgid "Sign Off" msgstr "ç½²å" -#: git-gui.sh:2016 git-gui.sh:2333 +#: git-gui.sh:2053 git-gui.sh:2372 msgid "Commit@@verb" msgstr "コミット" -#: git-gui.sh:2027 +#: git-gui.sh:2064 msgid "Local Merge..." msgstr "ãƒãƒ¼ã‚«ãƒ«ãƒ»ãƒžãƒ¼ã‚¸â€¦" -#: git-gui.sh:2032 +#: git-gui.sh:2069 msgid "Abort Merge..." msgstr "マージä¸æ¢â€¦" -#: git-gui.sh:2044 +#: git-gui.sh:2081 msgid "Push..." msgstr "プッシュ…" -#: git-gui.sh:2055 lib/choose_repository.tcl:40 +#: git-gui.sh:2092 lib/choose_repository.tcl:41 msgid "Apple" msgstr "ã‚Šã‚“ã”" -#: git-gui.sh:2058 git-gui.sh:2080 lib/about.tcl:13 -#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49 +#: git-gui.sh:2095 git-gui.sh:2117 lib/about.tcl:14 +#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 #, tcl-format msgid "About %s" msgstr "%s ã«ã¤ã„ã¦" -#: git-gui.sh:2062 +#: git-gui.sh:2099 msgid "Preferences..." msgstr "è¨å®šâ€¦" -#: git-gui.sh:2070 git-gui.sh:2595 +#: git-gui.sh:2107 git-gui.sh:2639 msgid "Options..." msgstr "オプション…" -#: git-gui.sh:2076 lib/choose_repository.tcl:46 +#: git-gui.sh:2113 lib/choose_repository.tcl:47 msgid "Help" msgstr "ヘルプ" -#: git-gui.sh:2117 +#: git-gui.sh:2154 msgid "Online Documentation" msgstr "オンライン・ドã‚ュメント" -#: git-gui.sh:2201 +#: git-gui.sh:2238 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" msgstr "" "致命的: パス %s ㌠stat ã§ãã¾ã›ã‚“。ãã®ã‚ˆã†ãªãƒ•ã‚¡ã‚¤ãƒ«ã‚„ディレクトリã¯ã‚ã‚Šã¾" "ã›ã‚“" -#: git-gui.sh:2234 +#: git-gui.sh:2271 msgid "Current Branch:" msgstr "ç¾åœ¨ã®ãƒ–ランãƒ" -#: git-gui.sh:2255 +#: git-gui.sh:2292 msgid "Staged Changes (Will Commit)" msgstr "ステージングã•ã‚ŒãŸï¼ˆã‚³ãƒŸãƒƒãƒˆäºˆå®šæ¸ˆã®ï¼‰å¤‰æ›´" -#: git-gui.sh:2274 +#: git-gui.sh:2312 msgid "Unstaged Changes" msgstr "コミット予定ã«å…¥ã£ã¦ã„ãªã„変更" -#: git-gui.sh:2323 +#: git-gui.sh:2362 msgid "Stage Changed" msgstr "変更をコミット予定ã«å…¥ã‚Œã‚‹" -#: git-gui.sh:2339 lib/transport.tcl:93 lib/transport.tcl:182 +#: git-gui.sh:2378 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" msgstr "プッシュ" -#: git-gui.sh:2369 +#: git-gui.sh:2408 msgid "Initial Commit Message:" msgstr "最åˆã®ã‚³ãƒŸãƒƒãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸:" -#: git-gui.sh:2370 +#: git-gui.sh:2409 msgid "Amended Commit Message:" msgstr "訂æ£ã—ãŸã‚³ãƒŸãƒƒãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸:" -#: git-gui.sh:2371 +#: git-gui.sh:2410 msgid "Amended Initial Commit Message:" msgstr "訂æ£ã—ãŸæœ€åˆã®ã‚³ãƒŸãƒƒãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸:" -#: git-gui.sh:2372 +#: git-gui.sh:2411 msgid "Amended Merge Commit Message:" msgstr "訂æ£ã—ãŸãƒžãƒ¼ã‚¸ã‚³ãƒŸãƒƒãƒˆãƒ¡ãƒƒã‚»ãƒ¼ã‚¸:" -#: git-gui.sh:2373 +#: git-gui.sh:2412 msgid "Merge Commit Message:" msgstr "マージコミットメッセージ:" -#: git-gui.sh:2374 +#: git-gui.sh:2413 msgid "Commit Message:" msgstr "コミットメッセージ:" -#: git-gui.sh:2419 git-gui.sh:2557 lib/console.tcl:71 +#: git-gui.sh:2459 git-gui.sh:2622 lib/console.tcl:73 msgid "Copy All" msgstr "å…¨ã¦ã‚³ãƒ”ー" -#: git-gui.sh:2443 lib/blame.tcl:104 +#: git-gui.sh:2483 lib/blame.tcl:107 msgid "File:" msgstr "ファイル:" -#: git-gui.sh:2545 -msgid "Refresh" -msgstr "å†èªã¿è¾¼ã¿" - -#: git-gui.sh:2566 +#: git-gui.sh:2589 msgid "Apply/Reverse Hunk" msgstr "パッãƒã‚’é©ç”¨/å–り消ã™" -#: git-gui.sh:2572 -msgid "Decrease Font Size" -msgstr "フォントをå°ã•ã" - -#: git-gui.sh:2576 -msgid "Increase Font Size" -msgstr "フォントを大ãã" - -#: git-gui.sh:2581 +#: git-gui.sh:2595 msgid "Show Less Context" msgstr "文脈を少ãªã" -#: git-gui.sh:2588 +#: git-gui.sh:2602 msgid "Show More Context" msgstr "文脈を多ã" -#: git-gui.sh:2602 +#: git-gui.sh:2610 +msgid "Refresh" +msgstr "å†èªã¿è¾¼ã¿" + +#: git-gui.sh:2631 +msgid "Decrease Font Size" +msgstr "フォントをå°ã•ã" + +#: git-gui.sh:2635 +msgid "Increase Font Size" +msgstr "フォントを大ãã" + +#: git-gui.sh:2646 msgid "Unstage Hunk From Commit" msgstr "パッãƒã‚’コミット予定ã‹ã‚‰å¤–ã™" -#: git-gui.sh:2604 +#: git-gui.sh:2648 msgid "Stage Hunk For Commit" msgstr "パッãƒã‚’コミット予定ã«åŠ ãˆã‚‹" -#: git-gui.sh:2623 +#: git-gui.sh:2667 msgid "Initializing..." msgstr "åˆæœŸåŒ–ã—ã¦ã„ã¾ã™â€¦" -#: git-gui.sh:2718 +#: git-gui.sh:2762 #, tcl-format msgid "" "Possible environment issues exist.\n" @@ -449,7 +449,7 @@ msgstr "" "以下ã®ç’°å¢ƒå¤‰æ•°ã¯ %s ãŒèµ·å‹•ã™ã‚‹ Git サブプãƒã‚»ã‚¹ã«ã‚ˆã£ã¦ç„¡è¦–ã•ã‚Œã‚‹ã§ã—ょã†:\n" "\n" -#: git-gui.sh:2748 +#: git-gui.sh:2792 msgid "" "\n" "This is due to a known issue with the\n" @@ -459,7 +459,7 @@ msgstr "" "ã“れ㯠Cygwin ã§é…布ã•ã‚Œã¦ã„ã‚‹ Tcl ãƒã‚¤ãƒŠãƒªã«\n" "é–¢ã—ã¦ã®æ—¢çŸ¥ã®å•é¡Œã«ã‚ˆã‚Šã¾ã™" -#: git-gui.sh:2753 +#: git-gui.sh:2797 #, tcl-format msgid "" "\n" @@ -474,7 +474,7 @@ msgstr "" "個人的㪠~/.gitconfig ファイル内㧠user.name 㨠user.email ã®å€¤ã‚’è¨å®š\n" "ã™ã‚‹ã®ãŒã€%s ã®è‰¯ã„代用ã¨ãªã‚Šã¾ã™\n" -#: lib/about.tcl:25 +#: lib/about.tcl:26 msgid "git-gui - a graphical user interface for Git." msgstr "Git ã®ã‚°ãƒ©ãƒ•ã‚£ã‚«ãƒ«UI git-gui" @@ -486,56 +486,56 @@ msgstr "ファイルピューワ" msgid "Commit:" msgstr "コミット:" -#: lib/blame.tcl:249 +#: lib/blame.tcl:264 msgid "Copy Commit" msgstr "コミットをコピー" -#: lib/blame.tcl:369 +#: lib/blame.tcl:384 #, tcl-format msgid "Reading %s..." msgstr "%s ã‚’èªã‚“ã§ã„ã¾ã™â€¦" -#: lib/blame.tcl:473 +#: lib/blame.tcl:488 msgid "Loading copy/move tracking annotations..." msgstr "コピー・移動追跡データをèªã‚“ã§ã„ã¾ã™â€¦" -#: lib/blame.tcl:493 +#: lib/blame.tcl:508 msgid "lines annotated" msgstr "行を注釈ã—ã¾ã—ãŸ" -#: lib/blame.tcl:674 +#: lib/blame.tcl:689 msgid "Loading original location annotations..." msgstr "å…ƒä½ç½®è¡Œã®æ³¨é‡ˆãƒ‡ãƒ¼ã‚¿ã‚’èªã‚“ã§ã„ã¾ã™â€¦" -#: lib/blame.tcl:677 +#: lib/blame.tcl:692 msgid "Annotation complete." msgstr "注釈完了ã—ã¾ã—ãŸ" -#: lib/blame.tcl:731 +#: lib/blame.tcl:746 msgid "Loading annotation..." msgstr "注釈をèªã¿è¾¼ã‚“ã§ã„ã¾ã™â€¦" -#: lib/blame.tcl:787 +#: lib/blame.tcl:802 msgid "Author:" msgstr "作者:" -#: lib/blame.tcl:791 +#: lib/blame.tcl:806 msgid "Committer:" msgstr "コミット者:" -#: lib/blame.tcl:796 +#: lib/blame.tcl:811 msgid "Original File:" msgstr "元ファイル" -#: lib/blame.tcl:910 +#: lib/blame.tcl:925 msgid "Originally By:" msgstr "原作者:" -#: lib/blame.tcl:916 +#: lib/blame.tcl:931 msgid "In File:" msgstr "ファイル:" -#: lib/blame.tcl:921 +#: lib/blame.tcl:936 msgid "Copied Or Moved Here By:" msgstr "複写・移動者:" @@ -548,17 +548,17 @@ msgid "Checkout" msgstr "ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆ" #: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35 -#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:281 -#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:172 -#: lib/option.tcl:90 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 +#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282 +#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:171 +#: lib/option.tcl:103 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 msgid "Cancel" msgstr "ä¸æ¢" -#: lib/branch_checkout.tcl:32 lib/browser.tcl:286 +#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 msgid "Revision" msgstr "リビジョン" -#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:202 +#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:242 msgid "Options" msgstr "オプション" @@ -578,7 +578,7 @@ msgstr "ブランãƒã‚’作æˆ" msgid "Create New Branch" msgstr "ブランãƒã‚’æ–°è¦ä½œæˆ" -#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375 +#: lib/branch_create.tcl:31 lib/choose_repository.tcl:371 msgid "Create" msgstr "作æˆ" @@ -718,22 +718,22 @@ msgstr "èµ·å‹•ä¸â€¦" msgid "File Browser" msgstr "ファイル・ブラウザ" -#: lib/browser.tcl:125 lib/browser.tcl:142 +#: lib/browser.tcl:126 lib/browser.tcl:143 #, tcl-format msgid "Loading %s..." msgstr "%s ã‚’ãƒãƒ¼ãƒ‰ä¸â€¦" -#: lib/browser.tcl:186 +#: lib/browser.tcl:187 msgid "[Up To Parent]" msgstr "[上ä½ãƒ•ã‚©ãƒ«ãƒ€ã¸]" -#: lib/browser.tcl:266 lib/browser.tcl:272 +#: lib/browser.tcl:267 lib/browser.tcl:273 msgid "Browse Branch Files" msgstr "ç¾åœ¨ã®ãƒ–ランãƒã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’見る" -#: lib/browser.tcl:277 lib/choose_repository.tcl:391 -#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492 -#: lib/choose_repository.tcl:989 +#: lib/browser.tcl:278 lib/choose_repository.tcl:387 +#: lib/choose_repository.tcl:474 lib/choose_repository.tcl:484 +#: lib/choose_repository.tcl:987 msgid "Browse" msgstr "ブラウズ" @@ -747,7 +747,7 @@ msgstr "%s ã‹ã‚‰ %s をフェッãƒã—ã¦ã„ã¾ã™" msgid "fatal: Cannot resolve %s" msgstr "致命的エラー: %s を解決ã§ãã¾ã›ã‚“" -#: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 +#: lib/checkout_op.tcl:140 lib/console.tcl:81 lib/database.tcl:31 msgid "Close" msgstr "é–‰ã˜ã‚‹" @@ -804,6 +804,10 @@ msgstr "" msgid "Updating working directory to '%s'..." msgstr "作æ¥ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’ '%s' ã«æ›´æ–°ã—ã¦ã„ã¾ã™â€¦" +#: lib/checkout_op.tcl:323 +msgid "files checked out" +msgstr "ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«" + #: lib/checkout_op.tcl:353 #, tcl-format msgid "Aborted checkout of '%s' (file level merging is required)." @@ -830,7 +834,7 @@ msgstr "" "ブランãƒä¸Šã«æ»žã¾ã‚ŠãŸã„ã¨ãã¯ã€ã“ã®ã€Œåˆ†é›¢ã•ã‚ŒãŸãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆã€ã‹ã‚‰æ–°è¦ãƒ–ラン" "ãƒã‚’開始ã—ã¦ãã ã•ã„。" -#: lib/checkout_op.tcl:446 +#: lib/checkout_op.tcl:446 lib/checkout_op.tcl:450 #, tcl-format msgid "Checked out '%s'." msgstr "'%s' ã‚’ãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸ" @@ -849,7 +853,7 @@ msgstr "失ãªã‚ã‚ŒãŸã‚³ãƒŸãƒƒãƒˆã‚’回復ã™ã‚‹ã®ã¯ç°¡å˜ã§ã¯ã‚ã‚Šã¾ã› msgid "Reset '%s'?" msgstr "'%s' をリセットã—ã¾ã™ã‹ï¼Ÿ" -#: lib/checkout_op.tcl:510 lib/merge.tcl:164 +#: lib/checkout_op.tcl:510 lib/merge.tcl:163 msgid "Visualize" msgstr "å¯è¦–化" @@ -877,15 +881,15 @@ msgstr "é¸æŠž" msgid "Font Family" msgstr "フォント・ファミリー" -#: lib/choose_font.tcl:73 +#: lib/choose_font.tcl:74 msgid "Font Size" msgstr "フォントã®å¤§ãã•" -#: lib/choose_font.tcl:90 +#: lib/choose_font.tcl:91 msgid "Font Example" msgstr "フォント・サンプル" -#: lib/choose_font.tcl:101 +#: lib/choose_font.tcl:103 msgid "" "This is example text.\n" "If you like this text, it can be your font." @@ -893,225 +897,225 @@ msgstr "" "ã“ã‚Œã¯ã‚µãƒ³ãƒ—ル文ã§ã™ã€‚\n" "ã“ã®ãƒ•ã‚©ãƒ³ãƒˆãŒæ°—ã«å…¥ã‚Œã°ãŠä½¿ã„ã«ãªã‚Œã¾ã™ã€‚" -#: lib/choose_repository.tcl:27 +#: lib/choose_repository.tcl:28 msgid "Git Gui" msgstr "Git GUI" -#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380 +#: lib/choose_repository.tcl:81 lib/choose_repository.tcl:376 msgid "Create New Repository" msgstr "æ–°ã—ã„リãƒã‚¸ãƒˆãƒªã‚’作る" -#: lib/choose_repository.tcl:86 +#: lib/choose_repository.tcl:87 msgid "New..." msgstr "æ–°è¦â€¦" -#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468 +#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:460 msgid "Clone Existing Repository" msgstr "æ—¢å˜ãƒªãƒã‚¸ãƒˆãƒªã‚’複製ã™ã‚‹" -#: lib/choose_repository.tcl:99 +#: lib/choose_repository.tcl:100 msgid "Clone..." msgstr "複製…" -#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978 +#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:976 msgid "Open Existing Repository" msgstr "æ—¢å˜ãƒªãƒã‚¸ãƒˆãƒªã‚’é–‹ã" -#: lib/choose_repository.tcl:112 +#: lib/choose_repository.tcl:113 msgid "Open..." msgstr "é–‹ã…" -#: lib/choose_repository.tcl:125 +#: lib/choose_repository.tcl:126 msgid "Recent Repositories" msgstr "最近使ã£ãŸãƒªãƒã‚¸ãƒˆãƒª" -#: lib/choose_repository.tcl:131 +#: lib/choose_repository.tcl:132 msgid "Open Recent Repository:" msgstr "最近使ã£ãŸãƒªãƒã‚¸ãƒˆãƒªã‚’é–‹ã" -#: lib/choose_repository.tcl:294 -#, tcl-format -msgid "Location %s already exists." -msgstr "'%s' ã¯æ—¢ã«å˜åœ¨ã—ã¾ã™ã€‚" - -#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307 -#: lib/choose_repository.tcl:314 +#: lib/choose_repository.tcl:296 lib/choose_repository.tcl:303 +#: lib/choose_repository.tcl:310 #, tcl-format msgid "Failed to create repository %s:" msgstr "リãƒã‚¸ãƒˆãƒª %s を作製ã§ãã¾ã›ã‚“:" -#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486 +#: lib/choose_repository.tcl:381 lib/choose_repository.tcl:478 msgid "Directory:" msgstr "ディレクトリ:" -#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544 -#: lib/choose_repository.tcl:1013 +#: lib/choose_repository.tcl:412 lib/choose_repository.tcl:537 +#: lib/choose_repository.tcl:1011 msgid "Git Repository" msgstr "GIT リãƒã‚¸ãƒˆãƒª" -#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437 +#: lib/choose_repository.tcl:437 #, tcl-format msgid "Directory %s already exists." msgstr "ディレクトリ '%s' ã¯æ—¢ã«å˜åœ¨ã—ã¾ã™ã€‚" -#: lib/choose_repository.tcl:442 +#: lib/choose_repository.tcl:441 #, tcl-format msgid "File %s already exists." msgstr "ファイル '%s' ã¯æ—¢ã«å˜åœ¨ã—ã¾ã™ã€‚" -#: lib/choose_repository.tcl:463 +#: lib/choose_repository.tcl:455 msgid "Clone" msgstr "複製" -#: lib/choose_repository.tcl:476 +#: lib/choose_repository.tcl:468 msgid "URL:" msgstr "URL:" -#: lib/choose_repository.tcl:496 +#: lib/choose_repository.tcl:489 msgid "Clone Type:" msgstr "複製方å¼:" -#: lib/choose_repository.tcl:502 +#: lib/choose_repository.tcl:495 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "標準(高速・ä¸å†—長度・ãƒãƒ¼ãƒ‰ãƒªãƒ³ã‚¯)" -#: lib/choose_repository.tcl:508 +#: lib/choose_repository.tcl:501 msgid "Full Copy (Slower, Redundant Backup)" msgstr "全複写(低速・冗長ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—)" -#: lib/choose_repository.tcl:514 +#: lib/choose_repository.tcl:507 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "共有(最高速・éžæŽ¨å¥¨ãƒ»ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ç„¡ã—)" -#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597 -#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808 -#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027 +#: lib/choose_repository.tcl:543 lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:736 lib/choose_repository.tcl:806 +#: lib/choose_repository.tcl:1017 lib/choose_repository.tcl:1025 #, tcl-format msgid "Not a Git repository: %s" msgstr "Git リãƒã‚¸ãƒˆãƒªã§ã¯ã‚ã‚Šã¾ã›ã‚“: %s" -#: lib/choose_repository.tcl:586 +#: lib/choose_repository.tcl:579 msgid "Standard only available for local repository." msgstr "標準方å¼ã¯åŒä¸€è¨ˆç®—機上ã®ãƒªãƒã‚¸ãƒˆãƒªã«ã®ã¿ä½¿ãˆã¾ã™ã€‚" -#: lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:583 msgid "Shared only available for local repository." msgstr "共有方å¼ã¯åŒä¸€è¨ˆç®—機上ã®ãƒªãƒã‚¸ãƒˆãƒªã«ã®ã¿ä½¿ãˆã¾ã™ã€‚" -#: lib/choose_repository.tcl:617 +#: lib/choose_repository.tcl:604 +#, tcl-format +msgid "Location %s already exists." +msgstr "'%s' ã¯æ—¢ã«å˜åœ¨ã—ã¾ã™ã€‚" + +#: lib/choose_repository.tcl:615 msgid "Failed to configure origin" msgstr "origin ã‚’è¨å®šã§ãã¾ã›ã‚“ã§ã—ãŸ" -#: lib/choose_repository.tcl:629 +#: lib/choose_repository.tcl:627 msgid "Counting objects" msgstr "オブジェクトを数ãˆã¦ã„ã¾ã™" -#: lib/choose_repository.tcl:630 +#: lib/choose_repository.tcl:628 msgid "buckets" msgstr "ãƒã‚±ãƒ„" -#: lib/choose_repository.tcl:654 +#: lib/choose_repository.tcl:652 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" msgstr "objects/info/alternates を複写ã§ãã¾ã›ã‚“: %s" -#: lib/choose_repository.tcl:690 +#: lib/choose_repository.tcl:688 #, tcl-format msgid "Nothing to clone from %s." msgstr "%s ã‹ã‚‰è¤‡è£½ã™ã‚‹å†…容ã¯ã‚ã‚Šã¾ã›ã‚“" -#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906 -#: lib/choose_repository.tcl:918 +#: lib/choose_repository.tcl:690 lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:916 msgid "The 'master' branch has not been initialized." msgstr "'master' ブランãƒãŒåˆæœŸåŒ–ã•ã‚Œã¦ã„ã¾ã›ã‚“" -#: lib/choose_repository.tcl:705 +#: lib/choose_repository.tcl:703 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "ãƒãƒ¼ãƒ‰ãƒªãƒ³ã‚¯ãŒä½œã‚Œãªã„ã®ã§ã€ã‚³ãƒ”ーã—ã¾ã™" -#: lib/choose_repository.tcl:717 +#: lib/choose_repository.tcl:715 #, tcl-format msgid "Cloning from %s" msgstr "%s ã‹ã‚‰è¤‡è£½ã—ã¦ã„ã¾ã™" -#: lib/choose_repository.tcl:748 +#: lib/choose_repository.tcl:746 msgid "Copying objects" msgstr "オブジェクトを複写ã—ã¦ã„ã¾ã™" -#: lib/choose_repository.tcl:749 +#: lib/choose_repository.tcl:747 msgid "KiB" msgstr "KiB" -#: lib/choose_repository.tcl:773 +#: lib/choose_repository.tcl:771 #, tcl-format msgid "Unable to copy object: %s" msgstr "オブジェクトを複写ã§ãã¾ã›ã‚“: %s" -#: lib/choose_repository.tcl:783 +#: lib/choose_repository.tcl:781 msgid "Linking objects" msgstr "オブジェクトを連çµã—ã¦ã„ã¾ã™" -#: lib/choose_repository.tcl:784 +#: lib/choose_repository.tcl:782 msgid "objects" msgstr "オブジェクト" -#: lib/choose_repository.tcl:792 +#: lib/choose_repository.tcl:790 #, tcl-format msgid "Unable to hardlink object: %s" msgstr "オブジェクトをãƒãƒ¼ãƒ‰ãƒªãƒ³ã‚¯ã§ãã¾ã›ã‚“: %s" -#: lib/choose_repository.tcl:847 +#: lib/choose_repository.tcl:845 msgid "Cannot fetch branches and objects. See console output for details." msgstr "ブランãƒã‚„オブジェクトをå–å¾—ã§ãã¾ã›ã‚“。コンソール出力を見ã¦ä¸‹ã•ã„" -#: lib/choose_repository.tcl:858 +#: lib/choose_repository.tcl:856 msgid "Cannot fetch tags. See console output for details." msgstr "ã‚¿ã‚°ã‚’å–å¾—ã§ãã¾ã›ã‚“。コンソール出力を見ã¦ä¸‹ã•ã„" -#: lib/choose_repository.tcl:882 +#: lib/choose_repository.tcl:880 msgid "Cannot determine HEAD. See console output for details." msgstr "HEAD を確定ã§ãã¾ã›ã‚“。コンソール出力を見ã¦ä¸‹ã•ã„" -#: lib/choose_repository.tcl:891 +#: lib/choose_repository.tcl:889 #, tcl-format msgid "Unable to cleanup %s" msgstr "%s を掃除ã§ãã¾ã›ã‚“" -#: lib/choose_repository.tcl:897 +#: lib/choose_repository.tcl:895 msgid "Clone failed." msgstr "複写ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" -#: lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:902 msgid "No default branch obtained." msgstr "デフォールト・ブランãƒãŒå–å¾—ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ" -#: lib/choose_repository.tcl:915 +#: lib/choose_repository.tcl:913 #, tcl-format msgid "Cannot resolve %s as a commit." msgstr "%s をコミットã¨ã—ã¦è§£é‡ˆã§ãã¾ã›ã‚“" -#: lib/choose_repository.tcl:927 +#: lib/choose_repository.tcl:925 msgid "Creating working directory" msgstr "作æ¥ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚’作æˆã—ã¦ã„ã¾ã™" -#: lib/choose_repository.tcl:928 lib/index.tcl:65 lib/index.tcl:127 +#: lib/choose_repository.tcl:926 lib/index.tcl:65 lib/index.tcl:127 #: lib/index.tcl:193 msgid "files" msgstr "ファイル" -#: lib/choose_repository.tcl:957 +#: lib/choose_repository.tcl:955 msgid "Initial file checkout failed." msgstr "åˆæœŸãƒã‚§ãƒƒã‚¯ã‚¢ã‚¦ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸ" -#: lib/choose_repository.tcl:973 +#: lib/choose_repository.tcl:971 msgid "Open" msgstr "é–‹ã" -#: lib/choose_repository.tcl:983 +#: lib/choose_repository.tcl:981 msgid "Repository:" msgstr "リãƒã‚¸ãƒˆãƒª:" -#: lib/choose_repository.tcl:1033 +#: lib/choose_repository.tcl:1031 #, tcl-format msgid "Failed to open repository %s:" msgstr "リãƒã‚¸ãƒˆãƒª %s ã‚’é–‹ã‘ã¾ã›ã‚“:" @@ -1132,7 +1136,7 @@ msgstr "ãƒãƒ¼ã‚«ãƒ«ãƒ»ãƒ–ランãƒ" msgid "Tracking Branch" msgstr "トラッã‚ング・ブランãƒ" -#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:537 +#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538 msgid "Tag" msgstr "ã‚¿ã‚°" @@ -1149,11 +1153,11 @@ msgstr "リビジョンãŒæœªé¸æŠžã§ã™ã€‚" msgid "Revision expression is empty." msgstr "リビジョンå¼ãŒç©ºã§ã™ã€‚" -#: lib/choose_rev.tcl:530 +#: lib/choose_rev.tcl:531 msgid "Updated" msgstr "æ›´æ–°ã—ã¾ã—ãŸ" -#: lib/choose_rev.tcl:558 +#: lib/choose_rev.tcl:559 msgid "URL" msgstr "URL" @@ -1262,16 +1266,45 @@ msgstr "" "- 第2行: 空白\n" "- 残りã®è¡Œ: ãªãœã€ã“ã®å¤‰æ›´ãŒè‰¯ã„変更ã‹ã€ã®èª¬æ˜Žã€‚\n" -#: lib/commit.tcl:257 +#: lib/commit.tcl:207 +#, tcl-format +msgid "warning: Tcl does not support encoding '%s'." +msgstr "è¦å‘Š: Tcl ã¯ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚° '%s' をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" + +#: lib/commit.tcl:221 +msgid "Calling pre-commit hook..." +msgstr "コミットå‰ãƒ•ãƒƒã‚¯ã‚’実行ä¸ãƒ»ãƒ»ãƒ»" + +#: lib/commit.tcl:236 +msgid "Commit declined by pre-commit hook." +msgstr "コミットå‰ãƒ•ãƒƒã‚¯ãŒã‚³ãƒŸãƒƒãƒˆã‚’æ‹’å¦ã—ã¾ã—ãŸ" + +#: lib/commit.tcl:259 +msgid "Calling commit-msg hook..." +msgstr "コミット・メッセージ・フックを実行ä¸ãƒ»ãƒ»ãƒ»" + +#: lib/commit.tcl:274 +msgid "Commit declined by commit-msg hook." +msgstr "コミット・メッセージ・フックãŒã‚³ãƒŸãƒƒãƒˆã‚’æ‹’å¦ã—ã¾ã—ãŸ" + +#: lib/commit.tcl:287 +msgid "Committing changes..." +msgstr "変更点をコミットä¸ãƒ»ãƒ»ãƒ»" + +#: lib/commit.tcl:303 msgid "write-tree failed:" msgstr "write-tree ãŒå¤±æ•—ã—ã¾ã—ãŸ:" -#: lib/commit.tcl:275 +#: lib/commit.tcl:304 lib/commit.tcl:348 lib/commit.tcl:368 +msgid "Commit failed." +msgstr "コミットã«å¤±æ•—ã—ã¾ã—ãŸã€‚" + +#: lib/commit.tcl:321 #, tcl-format msgid "Commit %s appears to be corrupt" msgstr "コミット %s ã¯å£Šã‚Œã¦ã„ã¾ã™" -#: lib/commit.tcl:279 +#: lib/commit.tcl:326 msgid "" "No changes to commit.\n" "\n" @@ -1285,37 +1318,32 @@ msgstr "" "\n" "自動的ã«å†ã‚¹ã‚ャンを開始ã—ã¾ã™ã€‚\n" -#: lib/commit.tcl:286 +#: lib/commit.tcl:333 msgid "No changes to commit." msgstr "コミットã™ã‚‹å¤‰æ›´ãŒã‚ã‚Šã¾ã›ã‚“。" -#: lib/commit.tcl:303 -#, tcl-format -msgid "warning: Tcl does not support encoding '%s'." -msgstr "è¦å‘Š: Tcl ã¯ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚° '%s' をサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã›ã‚“" - -#: lib/commit.tcl:317 +#: lib/commit.tcl:347 msgid "commit-tree failed:" msgstr "commit-tree ãŒå¤±æ•—ã—ã¾ã—ãŸ:" -#: lib/commit.tcl:339 +#: lib/commit.tcl:367 msgid "update-ref failed:" msgstr "update-ref ãŒå¤±æ•—ã—ã¾ã—ãŸ:" -#: lib/commit.tcl:430 +#: lib/commit.tcl:454 #, tcl-format msgid "Created commit %s: %s" msgstr "コミット %s を作æˆã—ã¾ã—ãŸ: %s" -#: lib/console.tcl:57 +#: lib/console.tcl:59 msgid "Working... please wait..." msgstr "実行ä¸â€¦ãŠå¾…ã¡ä¸‹ã•ã„…" -#: lib/console.tcl:183 +#: lib/console.tcl:186 msgid "Success" msgstr "æˆåŠŸ" -#: lib/console.tcl:196 +#: lib/console.tcl:200 msgid "Error: Command Failed" msgstr "エラー: コマンドãŒå¤±æ•—ã—ã¾ã—ãŸ" @@ -1425,23 +1453,23 @@ msgstr "* ãƒã‚¤ãƒŠãƒªãƒ•ã‚¡ã‚¤ãƒ«(内容ã¯è¡¨ç¤ºã—ã¾ã›ã‚“)" msgid "Error loading diff:" msgstr "diff ã‚’èªã‚€éš›ã®ã‚¨ãƒ©ãƒ¼ã§ã™:" -#: lib/diff.tcl:302 +#: lib/diff.tcl:303 msgid "Failed to unstage selected hunk." msgstr "é¸æŠžã•ã‚ŒãŸãƒ‘ッãƒã‚’コミット予定ã‹ã‚‰å¤–ã›ã¾ã›ã‚“。" -#: lib/diff.tcl:309 +#: lib/diff.tcl:310 msgid "Failed to stage selected hunk." msgstr "é¸æŠžã•ã‚ŒãŸãƒ‘ッãƒã‚’コミット予定ã«åŠ ãˆã‚‰ã‚Œã¾ã›ã‚“。" -#: lib/error.tcl:12 lib/error.tcl:102 +#: lib/error.tcl:20 lib/error.tcl:114 msgid "error" msgstr "エラー" -#: lib/error.tcl:28 +#: lib/error.tcl:36 msgid "warning" msgstr "è¦å‘Š" -#: lib/error.tcl:81 +#: lib/error.tcl:94 msgid "You must correct the above errors before committing." msgstr "コミットã™ã‚‹å‰ã«ã€ä»¥ä¸Šã®ã‚¨ãƒ©ãƒ¼ã‚’ä¿®æ£ã—ã¦ä¸‹ã•ã„" @@ -1457,7 +1485,9 @@ msgstr "索引エラー" msgid "" "Updating the Git index failed. A rescan will be automatically started to " "resynchronize git-gui." -msgstr "GIT インデックスã®æ›´æ–°ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚git-gui ã¨åŒæœŸã‚’ã¨ã‚‹ãŸã‚ã«å†ã‚¹ã‚ャンã—ã¾ã™ã€‚" +msgstr "" +"GIT インデックスã®æ›´æ–°ãŒå¤±æ•—ã—ã¾ã—ãŸã€‚git-gui ã¨åŒæœŸã‚’ã¨ã‚‹ãŸã‚ã«å†ã‚¹ã‚ャンã—" +"ã¾ã™ã€‚" #: lib/index.tcl:27 msgid "Continue" @@ -1472,6 +1502,10 @@ msgstr "インデックスã®ãƒãƒƒã‚¯è§£é™¤" msgid "Unstaging %s from commit" msgstr "コミットã‹ã‚‰ '%s' ã‚’é™ã‚ã™" +#: lib/index.tcl:313 +msgid "Ready to commit." +msgstr "コミット準備完了" + #: lib/index.tcl:326 #, tcl-format msgid "Adding %s" @@ -1487,11 +1521,11 @@ msgstr "ファイル %s ã«ã—ãŸå¤‰æ›´ã‚’å…ƒã«æˆ»ã—ã¾ã™ã‹ï¼Ÿ" msgid "Revert changes in these %i files?" msgstr "ã“れら %i 個ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã—ãŸå¤‰æ›´ã‚’å…ƒã«æˆ»ã—ã¾ã™ã‹ï¼Ÿ" -#: lib/index.tcl:389 +#: lib/index.tcl:391 msgid "Any unstaged changes will be permanently lost by the revert." msgstr "変更を元ã«æˆ»ã™ã¨ã‚³ãƒŸãƒƒãƒˆäºˆå®šã—ã¦ã„ãªã„変更ã¯å…¨ã¦å¤±ã‚ã‚Œã¾ã™ã€‚" -#: lib/index.tcl:392 +#: lib/index.tcl:394 msgid "Do Nothing" msgstr "何もã—ãªã„" @@ -1562,27 +1596,27 @@ msgstr "%s ã® %s ブランãƒ" #: lib/merge.tcl:119 #, tcl-format -msgid "Merging %s and %s" -msgstr "%s 㨠%s をマージã—ã¾ã™" +msgid "Merging %s and %s..." +msgstr "%s 㨠%s をマージä¸ãƒ»ãƒ»ãƒ»" -#: lib/merge.tcl:131 +#: lib/merge.tcl:130 msgid "Merge completed successfully." msgstr "マージãŒå®Œäº†ã—ã¾ã—ãŸ" -#: lib/merge.tcl:133 +#: lib/merge.tcl:132 msgid "Merge failed. Conflict resolution is required." msgstr "マージãŒå¤±æ•—ã—ã¾ã—ãŸã€‚è¡çªã®è§£æ±ºãŒå¿…è¦ã§ã™ã€‚" -#: lib/merge.tcl:158 +#: lib/merge.tcl:157 #, tcl-format msgid "Merge Into %s" msgstr "%s ã«ãƒžãƒ¼ã‚¸" -#: lib/merge.tcl:177 +#: lib/merge.tcl:176 msgid "Revision To Merge" msgstr "マージã™ã‚‹ãƒªãƒ“ジョン" -#: lib/merge.tcl:212 +#: lib/merge.tcl:211 msgid "" "Cannot abort while amending.\n" "\n" @@ -1592,7 +1626,7 @@ msgstr "" "\n" "ã¾ãšä»Šã®ã‚³ãƒŸãƒƒãƒˆè¨‚æ£ã‚’完了ã•ã›ã¦ä¸‹ã•ã„。\n" -#: lib/merge.tcl:222 +#: lib/merge.tcl:221 msgid "" "Abort merge?\n" "\n" @@ -1606,7 +1640,7 @@ msgstr "" "\n" "マージをä¸æ–ã—ã¦ã‚ˆã‚ã—ã„ã§ã™ã‹ï¼Ÿ" -#: lib/merge.tcl:228 +#: lib/merge.tcl:227 msgid "" "Reset changes?\n" "\n" @@ -1620,93 +1654,105 @@ msgstr "" "\n" "リセットã—ã¦ã‚ˆã‚ã—ã„ã§ã™ã‹ï¼Ÿ" -#: lib/merge.tcl:239 +#: lib/merge.tcl:238 msgid "Aborting" msgstr "ä¸æ–ã—ã¦ã„ã¾ã™" -#: lib/merge.tcl:266 +#: lib/merge.tcl:238 +msgid "files reset" +msgstr "リセットã—ãŸãƒ•ã‚¡ã‚¤ãƒ«" + +#: lib/merge.tcl:265 msgid "Abort failed." msgstr "ä¸æ–ã«å¤±æ•—ã—ã¾ã—ãŸã€‚" -#: lib/merge.tcl:268 +#: lib/merge.tcl:267 msgid "Abort completed. Ready." msgstr "ä¸æ–完了。" -#: lib/option.tcl:82 +#: lib/option.tcl:95 msgid "Restore Defaults" msgstr "既定値ã«æˆ»ã™" -#: lib/option.tcl:86 +#: lib/option.tcl:99 msgid "Save" msgstr "ä¿å˜" -#: lib/option.tcl:96 +#: lib/option.tcl:109 #, tcl-format msgid "%s Repository" msgstr "%s リãƒã‚¸ãƒˆãƒª" -#: lib/option.tcl:97 +#: lib/option.tcl:110 msgid "Global (All Repositories)" msgstr "大域(全ã¦ã®ãƒªãƒã‚¸ãƒˆãƒªï¼‰" -#: lib/option.tcl:103 +#: lib/option.tcl:116 msgid "User Name" msgstr "ユーザå" -#: lib/option.tcl:104 +#: lib/option.tcl:117 msgid "Email Address" msgstr "é›»åメールアドレス" -#: lib/option.tcl:106 +#: lib/option.tcl:119 msgid "Summarize Merge Commits" msgstr "マージコミットã®è¦ç´„" -#: lib/option.tcl:107 +#: lib/option.tcl:120 msgid "Merge Verbosity" msgstr "マージã®å†—長度" -#: lib/option.tcl:108 +#: lib/option.tcl:121 msgid "Show Diffstat After Merge" msgstr "マージ後㫠diffstat を表示" -#: lib/option.tcl:110 +#: lib/option.tcl:123 msgid "Trust File Modification Timestamps" msgstr "ãƒ•ã‚¡ã‚¤ãƒ«å¤‰æ›´æ™‚åˆ»ã‚’ä¿¡é ¼ã™ã‚‹" -#: lib/option.tcl:111 +#: lib/option.tcl:124 msgid "Prune Tracking Branches During Fetch" msgstr "フェッãƒä¸ã«ãƒˆãƒ©ãƒƒã‚ングブランãƒã‚’刈る" -#: lib/option.tcl:112 +#: lib/option.tcl:125 msgid "Match Tracking Branches" msgstr "トラッã‚ングブランãƒã‚’åˆã‚ã›ã‚‹" -#: lib/option.tcl:113 +#: lib/option.tcl:126 msgid "Number of Diff Context Lines" msgstr "diff ã®æ–‡è„ˆè¡Œæ•°" -#: lib/option.tcl:114 +#: lib/option.tcl:127 +msgid "Commit Message Text Width" +msgstr "コミットメッセージã®ãƒ†ã‚スト幅" + +#: lib/option.tcl:128 msgid "New Branch Name Template" msgstr "æ–°ã—ã„ブランãƒåã®ãƒ†ãƒ³ãƒ—レート" -#: lib/option.tcl:176 +#: lib/option.tcl:192 +msgid "Spelling Dictionary:" +msgstr "スペルãƒã‚§ãƒƒã‚¯è¾žæ›¸" + +#: lib/option.tcl:216 msgid "Change Font" msgstr "フォントを変更" -#: lib/option.tcl:180 +#: lib/option.tcl:220 #, tcl-format msgid "Choose %s" msgstr "%s ã‚’é¸æŠž" -#: lib/option.tcl:186 +#: lib/option.tcl:226 msgid "pt." msgstr "ãƒã‚¤ãƒ³ãƒˆ" -#: lib/option.tcl:200 +#: lib/option.tcl:240 msgid "Preferences" msgstr "è¨å®š" -#: lib/option.tcl:235 +#: lib/option.tcl:275 msgid "Failed to completely save options:" msgstr "完全ã«ã‚ªãƒ—ションをä¿å˜ã§ãã¾ã›ã‚“:" @@ -1814,6 +1860,43 @@ msgstr "ショートカットãŒæ›¸ã‘ã¾ã›ã‚“:" msgid "Cannot write icon:" msgstr "アイコンãŒæ›¸ã‘ã¾ã›ã‚“:" +#: lib/spellcheck.tcl:57 +msgid "Unsupported spell checker" +msgstr "サãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ãªã„スペルãƒã‚§ãƒƒã‚«ãƒ¼ã§ã™" + +#: lib/spellcheck.tcl:65 +msgid "Spell checking is unavailable" +msgstr "スペルãƒã‚§ãƒƒã‚¯æ©Ÿèƒ½ã¯ä½¿ãˆã¾ã›ã‚“" + +#: lib/spellcheck.tcl:68 +msgid "Invalid spell checking configuration" +msgstr "スペルãƒã‚§ãƒƒã‚¯ã®è¨å®šãŒä¸æ£ã§ã™" + +#: lib/spellcheck.tcl:70 +#, tcl-format +msgid "Reverting dictionary to %s." +msgstr "辞書を %s ã«å·»ã戻ã—ã¾ã™" + +#: lib/spellcheck.tcl:73 +msgid "Spell checker silently failed on startup" +msgstr "スペルãƒã‚§ãƒƒã‚«ãƒ¼ã®èµ·å‹•ã«å¤±æ•—ã—ã¾ã—ãŸ" + +#: lib/spellcheck.tcl:80 +msgid "Unrecognized spell checker" +msgstr "スペルãƒã‚§ãƒƒã‚«ãƒ¼ãŒåˆ¤åˆ¥ã§ãã¾ã›ã‚“" + +#: lib/spellcheck.tcl:180 +msgid "No Suggestions" +msgstr "æ案ãªã—" + +#: lib/spellcheck.tcl:381 +msgid "Unexpected EOF from spell checker" +msgstr "スペルãƒã‚§ãƒƒã‚«ãƒ¼ãŒäºˆæƒ³å¤–ã® EOF ã‚’è¿”ã—ã¾ã—ãŸ" + +#: lib/spellcheck.tcl:385 +msgid "Spell Checker Failed" +msgstr "スペルãƒã‚§ãƒƒã‚¯å¤±æ•—" + #: lib/status_bar.tcl:83 #, tcl-format msgid "%s ... %*i of %*i %s (%3i%%)" @@ -1881,3 +1964,6 @@ msgstr "Thin Pack を使ã†ï¼ˆé…ã„ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æŽ¥ç¶šï¼‰" #: lib/transport.tcl:168 msgid "Include tags" msgstr "ã‚¿ã‚°ã‚’å«ã‚ã‚‹" + +#~ msgid "Not connected to aspell" +#~ msgstr "aspell ã«æŽ¥ç¶šã—ã¦ã„ã¾ã›ã‚“" diff --git a/git-gui/po/ru.po b/git-gui/po/ru.po index 6727a832ea..db55b3e0a6 100644 --- a/git-gui/po/ru.po +++ b/git-gui/po/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-10-31 21:23+0100\n" +"POT-Creation-Date: 2008-03-14 07:18+0100\n" "PO-Revision-Date: 2007-10-22 22:30-0200\n" "Last-Translator: Alex Riesen <raa.lkml@gmail.com>\n" "Language-Team: Russian Translation <git@vger.kernel.org>\n" @@ -15,33 +15,33 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: git-gui.sh:41 git-gui.sh:597 git-gui.sh:611 git-gui.sh:624 git-gui.sh:707 -#: git-gui.sh:726 +#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 +#: git-gui.sh:763 msgid "git-gui: fatal error" msgstr "git-gui: критичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°" -#: git-gui.sh:558 +#: git-gui.sh:593 #, tcl-format msgid "Invalid font specified in %s:" msgstr "Ð’ %s уÑтановлен неверный шрифт:" -#: git-gui.sh:583 +#: git-gui.sh:620 msgid "Main Font" msgstr "Шрифт интерфейÑа" -#: git-gui.sh:584 +#: git-gui.sh:621 msgid "Diff/Console Font" msgstr "Шрифт конÑоли и изменений (diff)" -#: git-gui.sh:598 +#: git-gui.sh:635 msgid "Cannot find git in PATH." msgstr "git не найден в PATH." -#: git-gui.sh:625 +#: git-gui.sh:662 msgid "Cannot parse Git version string:" msgstr "Ðевозможно раÑпознать Ñтроку верÑии Git: " -#: git-gui.sh:643 +#: git-gui.sh:680 #, tcl-format msgid "" "Git version cannot be determined.\n" @@ -59,79 +59,79 @@ msgstr "" "\n" "ПринÑÑ‚ÑŒ '%s' как верÑию 1.5.0?\n" -#: git-gui.sh:881 +#: git-gui.sh:918 msgid "Git directory not found:" msgstr "Каталог Git не найден:" -#: git-gui.sh:888 +#: git-gui.sh:925 msgid "Cannot move to top of working directory:" msgstr "Ðевозможно перейти к корню рабочего каталога репозиториÑ: " -#: git-gui.sh:895 +#: git-gui.sh:932 msgid "Cannot use funny .git directory:" msgstr "Каталог.git иÑпорчен: " -#: git-gui.sh:900 +#: git-gui.sh:937 msgid "No working directory" msgstr "ОтÑутÑтвует рабочий каталог" -#: git-gui.sh:1047 +#: git-gui.sh:1084 lib/checkout_op.tcl:283 msgid "Refreshing file status..." msgstr "Обновление информации о ÑоÑтоÑнии файлов..." -#: git-gui.sh:1112 +#: git-gui.sh:1149 msgid "Scanning for modified files ..." msgstr "ПоиÑк измененных файлов..." -#: git-gui.sh:1287 lib/browser.tcl:245 +#: git-gui.sh:1324 lib/browser.tcl:246 msgid "Ready." msgstr "Готово." -#: git-gui.sh:1553 +#: git-gui.sh:1590 msgid "Unmodified" msgstr "Ðе изменено" -#: git-gui.sh:1555 +#: git-gui.sh:1592 msgid "Modified, not staged" msgstr "Изменено, не подготовлено" -#: git-gui.sh:1556 git-gui.sh:1561 +#: git-gui.sh:1593 git-gui.sh:1598 msgid "Staged for commit" msgstr "Подготовлено Ð´Ð»Ñ ÑохранениÑ" -#: git-gui.sh:1557 git-gui.sh:1562 +#: git-gui.sh:1594 git-gui.sh:1599 msgid "Portions staged for commit" msgstr "ЧаÑти, подготовленные Ð´Ð»Ñ ÑохранениÑ" -#: git-gui.sh:1558 git-gui.sh:1563 +#: git-gui.sh:1595 git-gui.sh:1600 msgid "Staged for commit, missing" msgstr "Подготовлено Ð´Ð»Ñ ÑохранениÑ, отÑутÑтвует" -#: git-gui.sh:1560 +#: git-gui.sh:1597 msgid "Untracked, not staged" msgstr "Ðе отÑлеживаетÑÑ, не подготовлено" -#: git-gui.sh:1565 +#: git-gui.sh:1602 msgid "Missing" msgstr "ОтÑутÑтвует" -#: git-gui.sh:1566 +#: git-gui.sh:1603 msgid "Staged for removal" msgstr "Подготовлено Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ" -#: git-gui.sh:1567 +#: git-gui.sh:1604 msgid "Staged for removal, still present" msgstr "Подготовлено Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ, еще не удалено" -#: git-gui.sh:1569 git-gui.sh:1570 git-gui.sh:1571 git-gui.sh:1572 +#: git-gui.sh:1606 git-gui.sh:1607 git-gui.sh:1608 git-gui.sh:1609 msgid "Requires merge resolution" msgstr "ТребуетÑÑ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ конфликта при объединении" -#: git-gui.sh:1607 +#: git-gui.sh:1644 msgid "Starting gitk... please wait..." msgstr "ЗапуÑкаетÑÑ gitk... пожалуйÑта, ждите..." -#: git-gui.sh:1616 +#: git-gui.sh:1653 #, tcl-format msgid "" "Unable to start gitk:\n" @@ -142,295 +142,295 @@ msgstr "" "\n" "%s не ÑущеÑтвует" -#: git-gui.sh:1816 lib/choose_repository.tcl:35 +#: git-gui.sh:1860 lib/choose_repository.tcl:36 msgid "Repository" msgstr "Репозиторий" -#: git-gui.sh:1817 +#: git-gui.sh:1861 msgid "Edit" msgstr "Редактировать" -#: git-gui.sh:1819 lib/choose_rev.tcl:560 +#: git-gui.sh:1863 lib/choose_rev.tcl:561 msgid "Branch" msgstr "Ветвь" -#: git-gui.sh:1822 lib/choose_rev.tcl:547 +#: git-gui.sh:1866 lib/choose_rev.tcl:548 msgid "Commit@@noun" msgstr "СоÑтоÑние" -#: git-gui.sh:1825 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 +#: git-gui.sh:1869 lib/merge.tcl:120 lib/merge.tcl:149 lib/merge.tcl:167 msgid "Merge" msgstr "Объединить" -#: git-gui.sh:1826 lib/choose_rev.tcl:556 +#: git-gui.sh:1870 lib/choose_rev.tcl:557 msgid "Remote" msgstr "Внешние репозитории" -#: git-gui.sh:1835 +#: git-gui.sh:1879 msgid "Browse Current Branch's Files" msgstr "ПроÑмотреть файлы текущей ветви" -#: git-gui.sh:1839 +#: git-gui.sh:1883 msgid "Browse Branch Files..." msgstr "Показать файлы ветви..." -#: git-gui.sh:1844 +#: git-gui.sh:1888 msgid "Visualize Current Branch's History" msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ ветви наглÑдно" -#: git-gui.sh:1848 +#: git-gui.sh:1892 msgid "Visualize All Branch History" msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²Ñех ветвей наглÑдно" -#: git-gui.sh:1855 +#: git-gui.sh:1899 #, tcl-format msgid "Browse %s's Files" msgstr "Показать файлы ветви %s" -#: git-gui.sh:1857 +#: git-gui.sh:1901 #, tcl-format msgid "Visualize %s's History" msgstr "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð²ÐµÑ‚Ð²Ð¸ %s наглÑдно" -#: git-gui.sh:1862 lib/database.tcl:27 lib/database.tcl:67 +#: git-gui.sh:1906 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" msgstr "СтатиÑтика базы данных" -#: git-gui.sh:1865 lib/database.tcl:34 +#: git-gui.sh:1909 lib/database.tcl:34 msgid "Compress Database" msgstr "Сжать базу данных" -#: git-gui.sh:1868 +#: git-gui.sh:1912 msgid "Verify Database" msgstr "Проверить базу данных" -#: git-gui.sh:1875 git-gui.sh:1879 git-gui.sh:1883 lib/shortcut.tcl:7 +#: git-gui.sh:1919 git-gui.sh:1923 git-gui.sh:1927 lib/shortcut.tcl:7 #: lib/shortcut.tcl:39 lib/shortcut.tcl:71 msgid "Create Desktop Icon" msgstr "Создать Ñрлык на рабочем Ñтоле" -#: git-gui.sh:1888 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184 +#: git-gui.sh:1932 lib/choose_repository.tcl:177 lib/choose_repository.tcl:185 msgid "Quit" msgstr "Выход" -#: git-gui.sh:1895 +#: git-gui.sh:1939 msgid "Undo" msgstr "Отменить" -#: git-gui.sh:1898 +#: git-gui.sh:1942 msgid "Redo" msgstr "Повторить" -#: git-gui.sh:1902 git-gui.sh:2395 +#: git-gui.sh:1946 git-gui.sh:2443 msgid "Cut" msgstr "Вырезать" -#: git-gui.sh:1905 git-gui.sh:2398 git-gui.sh:2469 git-gui.sh:2541 -#: lib/console.tcl:67 +#: git-gui.sh:1949 git-gui.sh:2446 git-gui.sh:2520 git-gui.sh:2614 +#: lib/console.tcl:69 msgid "Copy" msgstr "Копировать" -#: git-gui.sh:1908 git-gui.sh:2401 +#: git-gui.sh:1952 git-gui.sh:2449 msgid "Paste" msgstr "Ð’Ñтавить" -#: git-gui.sh:1911 git-gui.sh:2404 lib/branch_delete.tcl:26 +#: git-gui.sh:1955 git-gui.sh:2452 lib/branch_delete.tcl:26 #: lib/remote_branch_delete.tcl:38 msgid "Delete" msgstr "Удалить" -#: git-gui.sh:1915 git-gui.sh:2408 git-gui.sh:2545 lib/console.tcl:69 +#: git-gui.sh:1959 git-gui.sh:2456 git-gui.sh:2618 lib/console.tcl:71 msgid "Select All" msgstr "Выделить вÑе" -#: git-gui.sh:1924 +#: git-gui.sh:1968 msgid "Create..." msgstr "Создать..." -#: git-gui.sh:1930 +#: git-gui.sh:1974 msgid "Checkout..." msgstr "Перейти..." -#: git-gui.sh:1936 +#: git-gui.sh:1980 msgid "Rename..." msgstr "Переименовать..." -#: git-gui.sh:1941 git-gui.sh:2040 +#: git-gui.sh:1985 git-gui.sh:2085 msgid "Delete..." msgstr "Удалить..." -#: git-gui.sh:1946 +#: git-gui.sh:1990 msgid "Reset..." msgstr "СброÑить..." -#: git-gui.sh:1958 git-gui.sh:2342 +#: git-gui.sh:2002 git-gui.sh:2389 msgid "New Commit" msgstr "Ðовое ÑоÑтоÑние" -#: git-gui.sh:1966 git-gui.sh:2349 +#: git-gui.sh:2010 git-gui.sh:2396 msgid "Amend Last Commit" msgstr "ИÑправить поÑледнее ÑоÑтоÑние" -#: git-gui.sh:1975 git-gui.sh:2309 lib/remote_branch_delete.tcl:99 +#: git-gui.sh:2019 git-gui.sh:2356 lib/remote_branch_delete.tcl:99 msgid "Rescan" msgstr "Перечитать" -#: git-gui.sh:1981 +#: git-gui.sh:2025 msgid "Stage To Commit" msgstr "Подготовить Ð´Ð»Ñ ÑохранениÑ" -#: git-gui.sh:1986 +#: git-gui.sh:2031 msgid "Stage Changed Files To Commit" msgstr "Подготовить измененные файлы Ð´Ð»Ñ ÑохранениÑ" -#: git-gui.sh:1992 +#: git-gui.sh:2037 msgid "Unstage From Commit" msgstr "Убрать из подготовленного" -#: git-gui.sh:1997 lib/index.tcl:393 +#: git-gui.sh:2042 lib/index.tcl:395 msgid "Revert Changes" msgstr "Отменить изменениÑ" -#: git-gui.sh:2004 git-gui.sh:2321 git-gui.sh:2419 +#: git-gui.sh:2049 git-gui.sh:2368 git-gui.sh:2467 msgid "Sign Off" msgstr "ПодпиÑать" -#: git-gui.sh:2008 git-gui.sh:2325 +#: git-gui.sh:2053 git-gui.sh:2372 msgid "Commit@@verb" msgstr "Сохранить" -#: git-gui.sh:2019 +#: git-gui.sh:2064 msgid "Local Merge..." msgstr "Локальное объединение..." -#: git-gui.sh:2024 +#: git-gui.sh:2069 msgid "Abort Merge..." msgstr "Прервать объединение..." -#: git-gui.sh:2036 +#: git-gui.sh:2081 msgid "Push..." msgstr "Отправить..." -#: git-gui.sh:2047 lib/choose_repository.tcl:40 +#: git-gui.sh:2092 lib/choose_repository.tcl:41 msgid "Apple" msgstr "" -#: git-gui.sh:2050 git-gui.sh:2072 lib/about.tcl:13 -#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49 +#: git-gui.sh:2095 git-gui.sh:2117 lib/about.tcl:14 +#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 #, tcl-format msgid "About %s" msgstr "О %s" -#: git-gui.sh:2054 +#: git-gui.sh:2099 msgid "Preferences..." msgstr "ÐаÑтройки..." -#: git-gui.sh:2062 git-gui.sh:2587 +#: git-gui.sh:2107 git-gui.sh:2639 msgid "Options..." msgstr "ÐаÑтройки..." -#: git-gui.sh:2068 lib/choose_repository.tcl:46 +#: git-gui.sh:2113 lib/choose_repository.tcl:47 msgid "Help" msgstr "Помощь" -#: git-gui.sh:2109 +#: git-gui.sh:2154 msgid "Online Documentation" msgstr "Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð² интернете" -#: git-gui.sh:2193 +#: git-gui.sh:2238 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" msgstr "критичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s: нет такого файла или каталога" -#: git-gui.sh:2226 +#: git-gui.sh:2271 msgid "Current Branch:" msgstr "Ð¢ÐµÐºÑƒÑ‰Ð°Ñ Ð²ÐµÑ‚Ð²ÑŒ:" -#: git-gui.sh:2247 +#: git-gui.sh:2292 msgid "Staged Changes (Will Commit)" msgstr "Подготовлено (будет Ñохранено)" -#: git-gui.sh:2266 +#: git-gui.sh:2312 msgid "Unstaged Changes" msgstr "Изменено (не будет Ñохранено)" -#: git-gui.sh:2315 +#: git-gui.sh:2362 msgid "Stage Changed" msgstr "Подготовить вÑе" -#: git-gui.sh:2331 lib/transport.tcl:93 lib/transport.tcl:182 +#: git-gui.sh:2378 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" msgstr "Отправить" -#: git-gui.sh:2361 +#: git-gui.sh:2408 msgid "Initial Commit Message:" msgstr "Комментарий к первому ÑоÑтоÑнию:" -#: git-gui.sh:2362 +#: git-gui.sh:2409 msgid "Amended Commit Message:" msgstr "Комментарий к иÑправленному ÑоÑтоÑнию:" -#: git-gui.sh:2363 +#: git-gui.sh:2410 msgid "Amended Initial Commit Message:" msgstr "Комментарий к иÑправленному первоначальному ÑоÑтоÑнию:" -#: git-gui.sh:2364 +#: git-gui.sh:2411 msgid "Amended Merge Commit Message:" msgstr "Комментарий к иÑправленному объединению:" -#: git-gui.sh:2365 +#: git-gui.sh:2412 msgid "Merge Commit Message:" msgstr "Комментарий к объединению:" -#: git-gui.sh:2366 +#: git-gui.sh:2413 msgid "Commit Message:" msgstr "Комментарий к ÑоÑтоÑнию:" -#: git-gui.sh:2411 git-gui.sh:2549 lib/console.tcl:71 +#: git-gui.sh:2459 git-gui.sh:2622 lib/console.tcl:73 msgid "Copy All" msgstr "Копировать вÑе" -#: git-gui.sh:2435 lib/blame.tcl:104 +#: git-gui.sh:2483 lib/blame.tcl:107 msgid "File:" msgstr "Файл:" -#: git-gui.sh:2537 -msgid "Refresh" -msgstr "Обновить" - -#: git-gui.sh:2558 +#: git-gui.sh:2589 msgid "Apply/Reverse Hunk" msgstr "Применить/Убрать изменение" -#: git-gui.sh:2564 -msgid "Decrease Font Size" -msgstr "Уменьшить размер шрифта" - -#: git-gui.sh:2568 -msgid "Increase Font Size" -msgstr "Увеличить размер шрифта" - -#: git-gui.sh:2573 +#: git-gui.sh:2595 msgid "Show Less Context" msgstr "Меньше контекÑта" -#: git-gui.sh:2580 +#: git-gui.sh:2602 msgid "Show More Context" msgstr "Больше контекÑта" -#: git-gui.sh:2594 +#: git-gui.sh:2610 +msgid "Refresh" +msgstr "Обновить" + +#: git-gui.sh:2631 +msgid "Decrease Font Size" +msgstr "Уменьшить размер шрифта" + +#: git-gui.sh:2635 +msgid "Increase Font Size" +msgstr "Увеличить размер шрифта" + +#: git-gui.sh:2646 msgid "Unstage Hunk From Commit" msgstr "Ðе ÑохранÑÑ‚ÑŒ чаÑÑ‚ÑŒ" -#: git-gui.sh:2596 +#: git-gui.sh:2648 msgid "Stage Hunk For Commit" msgstr "Подготовить чаÑÑ‚ÑŒ Ð´Ð»Ñ ÑохранениÑ" -#: git-gui.sh:2615 +#: git-gui.sh:2667 msgid "Initializing..." msgstr "ИнициализациÑ..." -#: git-gui.sh:2706 +#: git-gui.sh:2762 #, tcl-format msgid "" "Possible environment issues exist.\n" @@ -447,7 +447,7 @@ msgstr "" "запущенными из %s\n" "\n" -#: git-gui.sh:2736 +#: git-gui.sh:2792 msgid "" "\n" "This is due to a known issue with the\n" @@ -457,7 +457,7 @@ msgstr "" "Ðто извеÑÑ‚Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð±Ð»ÐµÐ¼Ð° Ñ Tcl,\n" "раÑпроÑтранÑемым Cygwin." -#: git-gui.sh:2741 +#: git-gui.sh:2797 #, tcl-format msgid "" "\n" @@ -474,7 +474,7 @@ msgstr "" "user.email в Вашем перÑональном\n" "файле ~/.gitconfig.\n" -#: lib/about.tcl:25 +#: lib/about.tcl:26 msgid "git-gui - a graphical user interface for Git." msgstr "git-gui - графичеÑкий пользовательÑкий Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ðº Git." @@ -486,56 +486,56 @@ msgstr "ПроÑмотр файла" msgid "Commit:" msgstr "Сохраненное ÑоÑтоÑние:" -#: lib/blame.tcl:249 +#: lib/blame.tcl:264 msgid "Copy Commit" msgstr "Скопировать SHA-1" -#: lib/blame.tcl:369 +#: lib/blame.tcl:384 #, tcl-format msgid "Reading %s..." msgstr "Чтение %s..." -#: lib/blame.tcl:473 +#: lib/blame.tcl:488 msgid "Loading copy/move tracking annotations..." msgstr "Загрузка аннотации копирований/переименований..." -#: lib/blame.tcl:493 +#: lib/blame.tcl:508 msgid "lines annotated" msgstr "Ñтрок прокомментировано" -#: lib/blame.tcl:674 +#: lib/blame.tcl:689 msgid "Loading original location annotations..." msgstr "Загрузка аннотаций первоначального Ð¿Ð¾Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð°..." -#: lib/blame.tcl:677 +#: lib/blame.tcl:692 msgid "Annotation complete." msgstr "ÐÐ½Ð½Ð¾Ñ‚Ð°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð°." -#: lib/blame.tcl:731 +#: lib/blame.tcl:746 msgid "Loading annotation..." msgstr "Загрузка аннотации..." -#: lib/blame.tcl:787 +#: lib/blame.tcl:802 msgid "Author:" msgstr "Ðвтор:" -#: lib/blame.tcl:791 +#: lib/blame.tcl:806 msgid "Committer:" msgstr "Сохранил:" -#: lib/blame.tcl:796 +#: lib/blame.tcl:811 msgid "Original File:" msgstr "ИÑходный файл:" -#: lib/blame.tcl:910 +#: lib/blame.tcl:925 msgid "Originally By:" msgstr "ИÑточник:" -#: lib/blame.tcl:916 +#: lib/blame.tcl:931 msgid "In File:" msgstr "Файл:" -#: lib/blame.tcl:921 +#: lib/blame.tcl:936 msgid "Copied Or Moved Here By:" msgstr "Скопировано/перемещено в:" @@ -548,17 +548,17 @@ msgid "Checkout" msgstr "Перейти" #: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35 -#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:281 -#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:172 -#: lib/option.tcl:90 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 +#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282 +#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:171 +#: lib/option.tcl:103 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 msgid "Cancel" msgstr "Отменить" -#: lib/branch_checkout.tcl:32 lib/browser.tcl:286 +#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 msgid "Revision" msgstr "ВерÑиÑ" -#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:202 +#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:242 msgid "Options" msgstr "ÐаÑтройки" @@ -578,7 +578,7 @@ msgstr "Создание ветви" msgid "Create New Branch" msgstr "Создать новую ветвь" -#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375 +#: lib/branch_create.tcl:31 lib/choose_repository.tcl:371 msgid "Create" msgstr "Создать" @@ -718,22 +718,22 @@ msgstr "ЗапуÑк..." msgid "File Browser" msgstr "ПроÑмотр ÑпиÑка файлов" -#: lib/browser.tcl:125 lib/browser.tcl:142 +#: lib/browser.tcl:126 lib/browser.tcl:143 #, tcl-format msgid "Loading %s..." msgstr "Загрузка %s..." -#: lib/browser.tcl:186 +#: lib/browser.tcl:187 msgid "[Up To Parent]" msgstr "[Ðа уровень выше]" -#: lib/browser.tcl:266 lib/browser.tcl:272 +#: lib/browser.tcl:267 lib/browser.tcl:273 msgid "Browse Branch Files" msgstr "Показать файлы ветви" -#: lib/browser.tcl:277 lib/choose_repository.tcl:391 -#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492 -#: lib/choose_repository.tcl:989 +#: lib/browser.tcl:278 lib/choose_repository.tcl:387 +#: lib/choose_repository.tcl:474 lib/choose_repository.tcl:484 +#: lib/choose_repository.tcl:987 msgid "Browse" msgstr "Показать" @@ -747,7 +747,7 @@ msgstr "Получение %s из %s " msgid "fatal: Cannot resolve %s" msgstr "критичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: невозможно разрешить %s" -#: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 +#: lib/checkout_op.tcl:140 lib/console.tcl:81 lib/database.tcl:31 msgid "Close" msgstr "Закрыть" @@ -804,6 +804,10 @@ msgstr "" msgid "Updating working directory to '%s'..." msgstr "Обновление рабочего каталога из '%s'..." +#: lib/checkout_op.tcl:323 +msgid "files checked out" +msgstr "файлы извлечены" + #: lib/checkout_op.tcl:353 #, tcl-format msgid "Aborted checkout of '%s' (file level merging is required)." @@ -830,7 +834,7 @@ msgstr "" "ЕÑли вы хотите Ñнова вернутьÑÑ Ðº какой-нибудь ветви, Ñоздайте ее ÑейчаÑ, " "Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ 'Текущего отÑоединенного ÑоÑтоÑниÑ'." -#: lib/checkout_op.tcl:446 +#: lib/checkout_op.tcl:446 lib/checkout_op.tcl:450 #, tcl-format msgid "Checked out '%s'." msgstr "Ветвь '%s' Ñделана текущей." @@ -849,7 +853,7 @@ msgstr "ВоÑÑтановить потерÑнные Ñохраненные ÑÐ msgid "Reset '%s'?" msgstr "СброÑить '%s'?" -#: lib/checkout_op.tcl:510 lib/merge.tcl:164 +#: lib/checkout_op.tcl:510 lib/merge.tcl:163 msgid "Visualize" msgstr "ÐаглÑдно" @@ -878,15 +882,15 @@ msgstr "Выбрать" msgid "Font Family" msgstr "Шрифт" -#: lib/choose_font.tcl:73 +#: lib/choose_font.tcl:74 msgid "Font Size" msgstr "Размер шрифта" -#: lib/choose_font.tcl:90 +#: lib/choose_font.tcl:91 msgid "Font Example" msgstr "Пример текÑта" -#: lib/choose_font.tcl:101 +#: lib/choose_font.tcl:103 msgid "" "This is example text.\n" "If you like this text, it can be your font." @@ -894,226 +898,226 @@ msgstr "" "Ðто пример текÑта.\n" "ЕÑли Вам нравитÑÑ Ñтот текÑÑ‚, Ñто может быть Ваш шрифт." -#: lib/choose_repository.tcl:27 +#: lib/choose_repository.tcl:28 msgid "Git Gui" msgstr "" -#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380 +#: lib/choose_repository.tcl:81 lib/choose_repository.tcl:376 msgid "Create New Repository" msgstr "Создать новый репозиторий" -#: lib/choose_repository.tcl:86 +#: lib/choose_repository.tcl:87 msgid "New..." msgstr "Ðовый..." -#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468 +#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:460 msgid "Clone Existing Repository" msgstr "Склонировать ÑущеÑтвующий репозиторий" -#: lib/choose_repository.tcl:99 +#: lib/choose_repository.tcl:100 msgid "Clone..." msgstr "Склонировать..." -#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978 +#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:976 msgid "Open Existing Repository" msgstr "Выбрать ÑущеÑтвующий репозиторий" -#: lib/choose_repository.tcl:112 +#: lib/choose_repository.tcl:113 msgid "Open..." msgstr "Открыть..." -#: lib/choose_repository.tcl:125 +#: lib/choose_repository.tcl:126 msgid "Recent Repositories" msgstr "Ðедавние репозитории" -#: lib/choose_repository.tcl:131 +#: lib/choose_repository.tcl:132 msgid "Open Recent Repository:" msgstr "Открыть поÑледний репозиторий" -#: lib/choose_repository.tcl:294 -#, tcl-format -msgid "Location %s already exists." -msgstr "Путь '%s' уже ÑущеÑтвует." - -#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307 -#: lib/choose_repository.tcl:314 +#: lib/choose_repository.tcl:296 lib/choose_repository.tcl:303 +#: lib/choose_repository.tcl:310 #, tcl-format msgid "Failed to create repository %s:" msgstr "Ðе удалоÑÑŒ Ñоздать репозиторий %s:" -#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486 +#: lib/choose_repository.tcl:381 lib/choose_repository.tcl:478 msgid "Directory:" msgstr "Каталог:" -#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544 -#: lib/choose_repository.tcl:1013 +#: lib/choose_repository.tcl:412 lib/choose_repository.tcl:537 +#: lib/choose_repository.tcl:1011 msgid "Git Repository" msgstr "Репозиторий" -#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437 +#: lib/choose_repository.tcl:437 #, tcl-format msgid "Directory %s already exists." msgstr "Каталог '%s' уже ÑущеÑтвует." -#: lib/choose_repository.tcl:442 +#: lib/choose_repository.tcl:441 #, tcl-format msgid "File %s already exists." msgstr "Файл '%s' уже ÑущеÑтвует." -#: lib/choose_repository.tcl:463 +#: lib/choose_repository.tcl:455 msgid "Clone" msgstr "Склонировать" -#: lib/choose_repository.tcl:476 +#: lib/choose_repository.tcl:468 msgid "URL:" msgstr "СÑылка:" -#: lib/choose_repository.tcl:496 +#: lib/choose_repository.tcl:489 msgid "Clone Type:" msgstr "Тип клона:" -#: lib/choose_repository.tcl:502 +#: lib/choose_repository.tcl:495 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "Стандартный (БыÑтрый, полуизбыточный, \"жеÑткие\" ÑÑылки)" -#: lib/choose_repository.tcl:508 +#: lib/choose_repository.tcl:501 msgid "Full Copy (Slower, Redundant Backup)" msgstr "ÐŸÐ¾Ð»Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ (Медленный, Ñоздает резервную копию)" -#: lib/choose_repository.tcl:514 +#: lib/choose_repository.tcl:507 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "Общий (Самый быÑтрый, не рекомендуетÑÑ, без резервной копии)" -#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597 -#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808 -#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027 +#: lib/choose_repository.tcl:543 lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:736 lib/choose_repository.tcl:806 +#: lib/choose_repository.tcl:1017 lib/choose_repository.tcl:1025 #, tcl-format msgid "Not a Git repository: %s" msgstr "Каталог не ÑвлÑетÑÑ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸ÐµÐ¼: %s" -#: lib/choose_repository.tcl:586 +#: lib/choose_repository.tcl:579 msgid "Standard only available for local repository." msgstr "Стандартный клон возможен только Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ репозиториÑ." -#: lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:583 msgid "Shared only available for local repository." msgstr "Общий клон возможен только Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ репозиториÑ." -#: lib/choose_repository.tcl:617 +#: lib/choose_repository.tcl:604 +#, tcl-format +msgid "Location %s already exists." +msgstr "Путь '%s' уже ÑущеÑтвует." + +#: lib/choose_repository.tcl:615 msgid "Failed to configure origin" msgstr "Ðе могу Ñконфигурировать иÑходный репозиторий." -#: lib/choose_repository.tcl:629 +#: lib/choose_repository.tcl:627 msgid "Counting objects" msgstr "Считаю объекты" -#: lib/choose_repository.tcl:630 +#: lib/choose_repository.tcl:628 msgid "buckets" msgstr "" -#: lib/choose_repository.tcl:654 +#: lib/choose_repository.tcl:652 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" msgstr "Ðе могу Ñкопировать objects/info/alternates: %s" -#: lib/choose_repository.tcl:690 +#: lib/choose_repository.tcl:688 #, tcl-format msgid "Nothing to clone from %s." msgstr "Ðечего клонировать Ñ %s." -#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906 -#: lib/choose_repository.tcl:918 +#: lib/choose_repository.tcl:690 lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:916 msgid "The 'master' branch has not been initialized." msgstr "Ðе инициализирована ветвь 'master'." -#: lib/choose_repository.tcl:705 +#: lib/choose_repository.tcl:703 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "\"ЖеÑткие ÑÑылки\" не доÑтупны. Буду иÑпользовать копирование." -#: lib/choose_repository.tcl:717 +#: lib/choose_repository.tcl:715 #, tcl-format msgid "Cloning from %s" msgstr "Клонирование %s" -#: lib/choose_repository.tcl:748 +#: lib/choose_repository.tcl:746 msgid "Copying objects" msgstr "Копирование objects" -#: lib/choose_repository.tcl:749 +#: lib/choose_repository.tcl:747 msgid "KiB" msgstr "КБ" -#: lib/choose_repository.tcl:773 +#: lib/choose_repository.tcl:771 #, tcl-format msgid "Unable to copy object: %s" msgstr "Ðе могу Ñкопировать объект: %s" -#: lib/choose_repository.tcl:783 +#: lib/choose_repository.tcl:781 msgid "Linking objects" msgstr "Создание ÑÑылок на objects" -#: lib/choose_repository.tcl:784 +#: lib/choose_repository.tcl:782 msgid "objects" msgstr "объекты" -#: lib/choose_repository.tcl:792 +#: lib/choose_repository.tcl:790 #, tcl-format msgid "Unable to hardlink object: %s" msgstr "Ðе могу \"жеÑтко ÑвÑзать\" объект: %s" -#: lib/choose_repository.tcl:847 +#: lib/choose_repository.tcl:845 msgid "Cannot fetch branches and objects. See console output for details." msgstr "" "Ðе могу получить ветви и объекты. Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° конÑоли." -#: lib/choose_repository.tcl:858 +#: lib/choose_repository.tcl:856 msgid "Cannot fetch tags. See console output for details." msgstr "Ðе могу получить метки. Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° конÑоли." -#: lib/choose_repository.tcl:882 +#: lib/choose_repository.tcl:880 msgid "Cannot determine HEAD. See console output for details." msgstr "Ðе могу определить HEAD. Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð½Ð° конÑоли." -#: lib/choose_repository.tcl:891 +#: lib/choose_repository.tcl:889 #, tcl-format msgid "Unable to cleanup %s" msgstr "Ðе могу очиÑтить %s" -#: lib/choose_repository.tcl:897 +#: lib/choose_repository.tcl:895 msgid "Clone failed." msgstr "Клонирование не удалоÑÑŒ." -#: lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:902 msgid "No default branch obtained." msgstr "Ðе было получено ветви по умолчанию." -#: lib/choose_repository.tcl:915 +#: lib/choose_repository.tcl:913 #, tcl-format msgid "Cannot resolve %s as a commit." msgstr "Ðе могу раÑпознать %s как ÑоÑтоÑние." -#: lib/choose_repository.tcl:927 +#: lib/choose_repository.tcl:925 msgid "Creating working directory" msgstr "Создаю рабочий каталог" -#: lib/choose_repository.tcl:928 lib/index.tcl:65 lib/index.tcl:127 +#: lib/choose_repository.tcl:926 lib/index.tcl:65 lib/index.tcl:127 #: lib/index.tcl:193 msgid "files" msgstr "файлов" -#: lib/choose_repository.tcl:957 +#: lib/choose_repository.tcl:955 msgid "Initial file checkout failed." msgstr "Ðе удалоÑÑŒ получить начальное ÑоÑтоÑние файлов репозиториÑ." -#: lib/choose_repository.tcl:973 +#: lib/choose_repository.tcl:971 msgid "Open" msgstr "Открыть" -#: lib/choose_repository.tcl:983 +#: lib/choose_repository.tcl:981 msgid "Repository:" msgstr "Репозиторий:" -#: lib/choose_repository.tcl:1033 +#: lib/choose_repository.tcl:1031 #, tcl-format msgid "Failed to open repository %s:" msgstr "Ðе удалоÑÑŒ открыть репозиторий %s:" @@ -1134,7 +1138,7 @@ msgstr "Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð²ÐµÑ‚Ð²ÑŒ:" msgid "Tracking Branch" msgstr "Ветвь ÑлежениÑ" -#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:537 +#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538 msgid "Tag" msgstr "Таг" @@ -1151,11 +1155,11 @@ msgstr "ВерÑÐ¸Ñ Ð½Ðµ указана." msgid "Revision expression is empty." msgstr "ПуÑтое выражение Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð²ÐµÑ€Ñии." -#: lib/choose_rev.tcl:530 +#: lib/choose_rev.tcl:531 msgid "Updated" msgstr "Обновлено" -#: lib/choose_rev.tcl:558 +#: lib/choose_rev.tcl:559 msgid "URL" msgstr "СÑылка" @@ -1251,7 +1255,7 @@ msgid "" "\n" "A good commit message has the following format:\n" "\n" -"- First line: Describe in one sentance what you did.\n" +"- First line: Describe in one sentence what you did.\n" "- Second line: Blank\n" "- Remaining lines: Describe why this change is good.\n" msgstr "" @@ -1263,16 +1267,45 @@ msgstr "" "- Ð²Ñ‚Ð¾Ñ€Ð°Ñ Ñтрока пуÑтаÑ\n" "- оÑтавшиеÑÑ Ñтроки: опишите, что дают ваши изменениÑ.\n" -#: lib/commit.tcl:257 +#: lib/commit.tcl:207 +#, tcl-format +msgid "warning: Tcl does not support encoding '%s'." +msgstr "предупреждение: Tcl не поддерживает кодировку '%s'." + +#: lib/commit.tcl:221 +msgid "Calling pre-commit hook..." +msgstr "Вызов программы поддержки Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ pre-commit..." + +#: lib/commit.tcl:236 +msgid "Commit declined by pre-commit hook." +msgstr "Сохранение прервано программой поддержки Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ pre-commit" + +#: lib/commit.tcl:259 +msgid "Calling commit-msg hook..." +msgstr "Вызов программы поддержки Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ commit-msg..." + +#: lib/commit.tcl:274 +msgid "Commit declined by commit-msg hook." +msgstr "Сохранение прервано программой поддержки Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ commit-msg" + +#: lib/commit.tcl:287 +msgid "Committing changes..." +msgstr "Сохранение изменений..." + +#: lib/commit.tcl:303 msgid "write-tree failed:" msgstr "Программа write-tree завершилаÑÑŒ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹:" -#: lib/commit.tcl:275 +#: lib/commit.tcl:304 lib/commit.tcl:348 lib/commit.tcl:368 +msgid "Commit failed." +msgstr "Сохранить ÑоÑтоÑние не удалоÑÑŒ." + +#: lib/commit.tcl:321 #, tcl-format msgid "Commit %s appears to be corrupt" msgstr "СоÑтоÑние %s выглÑдит поврежденным" -#: lib/commit.tcl:279 +#: lib/commit.tcl:326 msgid "" "No changes to commit.\n" "\n" @@ -1286,37 +1319,32 @@ msgstr "" "\n" "Ð¡ÐµÐ¹Ñ‡Ð°Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑки запуÑтитÑÑ Ð¿ÐµÑ€ÐµÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ð½Ð¸Ðµ репозиториÑ.\n" -#: lib/commit.tcl:286 +#: lib/commit.tcl:333 msgid "No changes to commit." msgstr "ОтуÑтвуют Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑохранениÑ." -#: lib/commit.tcl:303 -#, tcl-format -msgid "warning: Tcl does not support encoding '%s'." -msgstr "предупреждение: Tcl не поддерживает кодировку '%s'." - -#: lib/commit.tcl:317 +#: lib/commit.tcl:347 msgid "commit-tree failed:" msgstr "Программа commit-tree завершилаÑÑŒ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹:" -#: lib/commit.tcl:339 +#: lib/commit.tcl:367 msgid "update-ref failed:" msgstr "Программа update-ref завершилаÑÑŒ Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹:" -#: lib/commit.tcl:430 +#: lib/commit.tcl:454 #, tcl-format msgid "Created commit %s: %s" msgstr "Создано ÑоÑтоÑние %s: %s " -#: lib/console.tcl:57 +#: lib/console.tcl:59 msgid "Working... please wait..." msgstr "Ð’ процеÑÑе... пожалуйÑта, ждите..." -#: lib/console.tcl:183 +#: lib/console.tcl:186 msgid "Success" msgstr "ПроцеÑÑ ÑƒÑпешно завершен" -#: lib/console.tcl:196 +#: lib/console.tcl:200 msgid "Error: Command Failed" msgstr "Ошибка: не удалоÑÑŒ выполнить команду" @@ -1426,23 +1454,23 @@ msgstr "* Двоичный файл (Ñодержимое не показано) msgid "Error loading diff:" msgstr "Ошибка загрузки diff:" -#: lib/diff.tcl:302 +#: lib/diff.tcl:303 msgid "Failed to unstage selected hunk." msgstr "Ðе удалоÑÑŒ иÑключить выбранную чаÑÑ‚ÑŒ." -#: lib/diff.tcl:309 +#: lib/diff.tcl:310 msgid "Failed to stage selected hunk." msgstr "Ðе удалоÑÑŒ подготовить к Ñохранению выбранную чаÑÑ‚ÑŒ." -#: lib/error.tcl:12 lib/error.tcl:102 +#: lib/error.tcl:20 lib/error.tcl:114 msgid "error" msgstr "ошибка" -#: lib/error.tcl:28 +#: lib/error.tcl:36 msgid "warning" msgstr "предупреждение" -#: lib/error.tcl:81 +#: lib/error.tcl:94 msgid "You must correct the above errors before committing." msgstr "Прежде чем Ñохранить, иÑправьте вышеуказанные ошибки." @@ -1459,8 +1487,8 @@ msgid "" "Updating the Git index failed. A rescan will be automatically started to " "resynchronize git-gui." msgstr "" -"Ðе удалоÑÑŒ обновить Ð¸Ð½Ð´ÐµÐºÑ Git. СоÑтоÑние Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚" -"перечитано автоматичеÑки." +"Ðе удалоÑÑŒ обновить Ð¸Ð½Ð´ÐµÐºÑ Git. СоÑтоÑние Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚Ð¿ÐµÑ€ÐµÑ‡Ð¸Ñ‚Ð°Ð½Ð¾ " +"автоматичеÑки." #: lib/index.tcl:27 msgid "Continue" @@ -1475,6 +1503,10 @@ msgstr "Разблокировать индекÑ" msgid "Unstaging %s from commit" msgstr "Удаление %s из подготовленного" +#: lib/index.tcl:313 +msgid "Ready to commit." +msgstr "Подготовлено Ð´Ð»Ñ ÑохранениÑ" + #: lib/index.tcl:326 #, tcl-format msgid "Adding %s" @@ -1490,13 +1522,13 @@ msgstr "Отменить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² файле %s?" msgid "Revert changes in these %i files?" msgstr "Отменить Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² %i файле(-ах)?" -#: lib/index.tcl:389 +#: lib/index.tcl:391 msgid "Any unstaged changes will be permanently lost by the revert." msgstr "" "Любые изменениÑ, не подготовленные к Ñохранению, будут потерÑны при данной " "операции." -#: lib/index.tcl:392 +#: lib/index.tcl:394 msgid "Do Nothing" msgstr "Ðичего не делать" @@ -1567,28 +1599,27 @@ msgid "%s of %s" msgstr "%s из %s" #: lib/merge.tcl:119 -#, tcl-format -msgid "Merging %s and %s" -msgstr "Объединение %s и %s" +msgid "Merging %s and %s..." +msgstr "Объединение %s и %s..." -#: lib/merge.tcl:131 +#: lib/merge.tcl:130 msgid "Merge completed successfully." msgstr "Объединение уÑпешно завершено." -#: lib/merge.tcl:133 +#: lib/merge.tcl:132 msgid "Merge failed. Conflict resolution is required." msgstr "Ðе удалоÑÑŒ завершить объединение. ТребуетÑÑ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ðµ конфликта." -#: lib/merge.tcl:158 +#: lib/merge.tcl:157 #, tcl-format msgid "Merge Into %s" msgstr "Объединить Ñ %s" -#: lib/merge.tcl:177 +#: lib/merge.tcl:176 msgid "Revision To Merge" msgstr "ВерÑÐ¸Ñ Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ" -#: lib/merge.tcl:212 +#: lib/merge.tcl:211 msgid "" "Cannot abort while amending.\n" "\n" @@ -1598,7 +1629,7 @@ msgstr "" "\n" "Завершите текущее иÑправление Ñохраненного ÑоÑтоÑниÑ.\n" -#: lib/merge.tcl:222 +#: lib/merge.tcl:221 msgid "" "Abort merge?\n" "\n" @@ -1612,7 +1643,7 @@ msgstr "" "\n" "Продолжить?" -#: lib/merge.tcl:228 +#: lib/merge.tcl:227 msgid "" "Reset changes?\n" "\n" @@ -1626,94 +1657,106 @@ msgstr "" "\n" "Продолжить?" -#: lib/merge.tcl:239 +#: lib/merge.tcl:238 msgid "Aborting" msgstr "Прерываю" -#: lib/merge.tcl:266 +#: lib/merge.tcl:238 +msgid "files reset" +msgstr "Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² файлах отменены" + +#: lib/merge.tcl:265 msgid "Abort failed." msgstr "Прервать не удалоÑÑŒ." -#: lib/merge.tcl:268 +#: lib/merge.tcl:267 msgid "Abort completed. Ready." msgstr "Прервано." -#: lib/option.tcl:82 +#: lib/option.tcl:95 msgid "Restore Defaults" msgstr "ВоÑÑтановить наÑтройки по умолчанию" -#: lib/option.tcl:86 +#: lib/option.tcl:99 msgid "Save" msgstr "Сохранить" -#: lib/option.tcl:96 +#: lib/option.tcl:109 #, tcl-format msgid "%s Repository" msgstr "Ð´Ð»Ñ Ñ€ÐµÐ¿Ð¾Ð·Ð¸Ñ‚Ð¾Ñ€Ð¸Ñ %s" -#: lib/option.tcl:97 +#: lib/option.tcl:110 msgid "Global (All Repositories)" msgstr "Общие (Ð´Ð»Ñ Ð²Ñех репозиториев)" -#: lib/option.tcl:103 +#: lib/option.tcl:116 msgid "User Name" msgstr "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ" -#: lib/option.tcl:104 +#: lib/option.tcl:117 msgid "Email Address" -msgstr "ÐÐ´ÐµÑ Ñлектронной почты" +msgstr "ÐÐ´Ñ€ÐµÑ Ñлектронной почты" -#: lib/option.tcl:106 +#: lib/option.tcl:119 msgid "Summarize Merge Commits" msgstr "Суммарный комментарий при объединении" -#: lib/option.tcl:107 +#: lib/option.tcl:120 msgid "Merge Verbosity" msgstr "Уровень детальноÑти Ñообщений при объединении" -#: lib/option.tcl:108 +#: lib/option.tcl:121 msgid "Show Diffstat After Merge" msgstr "Показать отчет об изменениÑÑ… поÑле объединениÑ" -#: lib/option.tcl:110 +#: lib/option.tcl:123 msgid "Trust File Modification Timestamps" msgstr "ДоверÑÑ‚ÑŒ времени модификации файла" -#: lib/option.tcl:111 +#: lib/option.tcl:124 msgid "Prune Tracking Branches During Fetch" msgstr "ЧиÑтка ветвей ÑÐ»ÐµÐ¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ получении изменений" -#: lib/option.tcl:112 +#: lib/option.tcl:125 msgid "Match Tracking Branches" msgstr "Ð˜Ð¼Ñ Ð½Ð¾Ð²Ð¾Ð¹ ветви взÑÑ‚ÑŒ из имен ветвей ÑлежениÑ" -#: lib/option.tcl:113 +#: lib/option.tcl:126 msgid "Number of Diff Context Lines" msgstr "ЧиÑло Ñтрок в контекÑте diff" -#: lib/option.tcl:114 +#: lib/option.tcl:127 +msgid "Commit Message Text Width" +msgstr "Ширина ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸Ñ Ðº ÑоÑтоÑнию:" + +#: lib/option.tcl:128 msgid "New Branch Name Template" msgstr "Шаблон Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸ новой ветви" -#: lib/option.tcl:176 +#: lib/option.tcl:192 +msgid "Spelling Dictionary:" +msgstr "Словарь Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ правопиÑаниÑ:" + +#: lib/option.tcl:216 msgid "Change Font" msgstr "Изменить шрифт" -#: lib/option.tcl:180 +#: lib/option.tcl:220 #, tcl-format msgid "Choose %s" msgstr "Выберите %s" # carbon copy -#: lib/option.tcl:186 +#: lib/option.tcl:226 msgid "pt." msgstr "" -#: lib/option.tcl:200 +#: lib/option.tcl:240 msgid "Preferences" msgstr "ÐаÑтройки" -#: lib/option.tcl:235 +#: lib/option.tcl:275 msgid "Failed to completely save options:" msgstr "Ðе удалоÑÑŒ полноÑтью Ñохранить наÑтройки:" @@ -1820,6 +1863,43 @@ msgstr "Ðевозможно запиÑать ÑÑылку:" msgid "Cannot write icon:" msgstr "Ðевозможно запиÑать значок:" +#: lib/spellcheck.tcl:57 +msgid "Unsupported spell checker" +msgstr "ÐÐµÐ¿Ð¾Ð´Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° проверки правопиÑаниÑ" + +#: lib/spellcheck.tcl:65 +msgid "Spell checking is unavailable" +msgstr "Проверка правопиÑÐ°Ð½Ð¸Ñ Ð½Ðµ доÑтупна" + +#: lib/spellcheck.tcl:68 +msgid "Invalid spell checking configuration" +msgstr "ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹ проверки правопиÑаниÑ" + +#: lib/spellcheck.tcl:70 +#, tcl-format +msgid "Reverting dictionary to %s." +msgstr "Словарь вернут к %s." + +#: lib/spellcheck.tcl:73 +msgid "Spell checker silently failed on startup" +msgstr "Программа проверки правопиÑÐ°Ð½Ð¸Ñ Ð½Ðµ Ñмогла запуÑтитÑÑ" + +#: lib/spellcheck.tcl:80 +msgid "Unrecognized spell checker" +msgstr "ÐераÑÐ¿Ð¾Ð·Ð½Ð°Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° проверки правопиÑаниÑ" + +#: lib/spellcheck.tcl:180 +msgid "No Suggestions" +msgstr "ИÑправлений не найдено" + +#: lib/spellcheck.tcl:381 +msgid "Unexpected EOF from spell checker" +msgstr "Программа проверки правопиÑÐ°Ð½Ð¸Ñ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð»Ð° передачу данных" + +#: lib/spellcheck.tcl:385 +msgid "Spell Checker Failed" +msgstr "Ошибка проверки правопиÑаниÑ" + #: lib/status_bar.tcl:83 #, tcl-format msgid "%s ... %*i of %*i %s (%3i%%)" diff --git a/git-gui/po/sv.po b/git-gui/po/sv.po index cd3f40b4a8..4da687bb41 100644 --- a/git-gui/po/sv.po +++ b/git-gui/po/sv.po @@ -7,42 +7,41 @@ msgid "" msgstr "" "Project-Id-Version: sv\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-11-24 10:36+0100\n" -"PO-Revision-Date: 2008-01-12 09:27+0100\n" +"POT-Creation-Date: 2008-03-14 07:18+0100\n" +"PO-Revision-Date: 2008-03-14 07:23+0100\n" "Last-Translator: Peter Karlsson <peter@softwolves.pp.se>\n" -"Language-Team: Swedish <sv@li.org>\n" +"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.11.4\n" +"Content-Transfer-Encoding: 8bit" -#: git-gui.sh:41 git-gui.sh:604 git-gui.sh:618 git-gui.sh:631 git-gui.sh:714 -#: git-gui.sh:733 +#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 +#: git-gui.sh:763 msgid "git-gui: fatal error" msgstr "git-gui: ödesdigert fel" -#: git-gui.sh:565 +#: git-gui.sh:593 #, tcl-format msgid "Invalid font specified in %s:" msgstr "Ogiltigt teckensnitt angivet i %s:" -#: git-gui.sh:590 +#: git-gui.sh:620 msgid "Main Font" msgstr "Huvudteckensnitt" -#: git-gui.sh:591 +#: git-gui.sh:621 msgid "Diff/Console Font" msgstr "Diff/konsolteckensnitt" -#: git-gui.sh:605 +#: git-gui.sh:635 msgid "Cannot find git in PATH." msgstr "Hittar inte git i PATH." -#: git-gui.sh:632 +#: git-gui.sh:662 msgid "Cannot parse Git version string:" msgstr "Kan inte tolka versionssträng frÃ¥n Git:" -#: git-gui.sh:650 +#: git-gui.sh:680 #, tcl-format msgid "" "Git version cannot be determined.\n" @@ -61,79 +60,79 @@ msgstr "" "\n" "Anta att \"%s\" är version 1.5.0?\n" -#: git-gui.sh:888 +#: git-gui.sh:918 msgid "Git directory not found:" msgstr "Git-katalogen hittades inte:" -#: git-gui.sh:895 +#: git-gui.sh:925 msgid "Cannot move to top of working directory:" msgstr "Kan inte gÃ¥ till början pÃ¥ arbetskatalogen:" -#: git-gui.sh:902 +#: git-gui.sh:932 msgid "Cannot use funny .git directory:" msgstr "Kan inte använda underlig .git-katalog:" -#: git-gui.sh:907 +#: git-gui.sh:937 msgid "No working directory" msgstr "Ingen arbetskatalog" -#: git-gui.sh:1054 +#: git-gui.sh:1084 lib/checkout_op.tcl:283 msgid "Refreshing file status..." msgstr "Uppdaterar filstatus..." -#: git-gui.sh:1119 +#: git-gui.sh:1149 msgid "Scanning for modified files ..." msgstr "Söker efter ändrade filer..." -#: git-gui.sh:1294 lib/browser.tcl:245 +#: git-gui.sh:1324 lib/browser.tcl:246 msgid "Ready." msgstr "Klar." -#: git-gui.sh:1560 +#: git-gui.sh:1590 msgid "Unmodified" msgstr "Oförändrade" -#: git-gui.sh:1562 +#: git-gui.sh:1592 msgid "Modified, not staged" msgstr "Förändrade, ej köade" -#: git-gui.sh:1563 git-gui.sh:1568 +#: git-gui.sh:1593 git-gui.sh:1598 msgid "Staged for commit" msgstr "Köade för incheckning" -#: git-gui.sh:1564 git-gui.sh:1569 +#: git-gui.sh:1594 git-gui.sh:1599 msgid "Portions staged for commit" msgstr "Delar köade för incheckning" -#: git-gui.sh:1565 git-gui.sh:1570 +#: git-gui.sh:1595 git-gui.sh:1600 msgid "Staged for commit, missing" msgstr "Köade för incheckning, saknade" -#: git-gui.sh:1567 +#: git-gui.sh:1597 msgid "Untracked, not staged" msgstr "Ej spÃ¥rade, ej köade" -#: git-gui.sh:1572 +#: git-gui.sh:1602 msgid "Missing" msgstr "Saknade" -#: git-gui.sh:1573 +#: git-gui.sh:1603 msgid "Staged for removal" msgstr "Köade för borttagning" -#: git-gui.sh:1574 +#: git-gui.sh:1604 msgid "Staged for removal, still present" msgstr "Köade för borttagning, fortfarande närvarande" -#: git-gui.sh:1576 git-gui.sh:1577 git-gui.sh:1578 git-gui.sh:1579 +#: git-gui.sh:1606 git-gui.sh:1607 git-gui.sh:1608 git-gui.sh:1609 msgid "Requires merge resolution" msgstr "Kräver konflikthantering efter sammanslagning" -#: git-gui.sh:1614 +#: git-gui.sh:1644 msgid "Starting gitk... please wait..." msgstr "Startar gitk... vänta..." -#: git-gui.sh:1623 +#: git-gui.sh:1653 #, tcl-format msgid "" "Unable to start gitk:\n" @@ -144,295 +143,296 @@ msgstr "" "\n" "%s finns inte" -#: git-gui.sh:1823 lib/choose_repository.tcl:35 +#: git-gui.sh:1860 lib/choose_repository.tcl:36 msgid "Repository" msgstr "Arkiv" -#: git-gui.sh:1824 +#: git-gui.sh:1861 msgid "Edit" msgstr "Redigera" -#: git-gui.sh:1826 lib/choose_rev.tcl:560 +#: git-gui.sh:1863 lib/choose_rev.tcl:561 msgid "Branch" msgstr "Gren" -#: git-gui.sh:1829 lib/choose_rev.tcl:547 +#: git-gui.sh:1866 lib/choose_rev.tcl:548 msgid "Commit@@noun" msgstr "Incheckning" -#: git-gui.sh:1832 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 +#: git-gui.sh:1869 lib/merge.tcl:120 lib/merge.tcl:149 lib/merge.tcl:167 msgid "Merge" msgstr "SlÃ¥ ihop" -#: git-gui.sh:1833 lib/choose_rev.tcl:556 +#: git-gui.sh:1870 lib/choose_rev.tcl:557 msgid "Remote" msgstr "Fjärr" -#: git-gui.sh:1842 +#: git-gui.sh:1879 msgid "Browse Current Branch's Files" msgstr "Bläddra i grenens filer" -#: git-gui.sh:1846 +#: git-gui.sh:1883 msgid "Browse Branch Files..." msgstr "Bläddra filer pÃ¥ gren..." -#: git-gui.sh:1851 +#: git-gui.sh:1888 msgid "Visualize Current Branch's History" msgstr "Visualisera grenens historik" -#: git-gui.sh:1855 +#: git-gui.sh:1892 msgid "Visualize All Branch History" msgstr "Visualisera alla grenars historik" -#: git-gui.sh:1862 +#: git-gui.sh:1899 #, tcl-format msgid "Browse %s's Files" msgstr "Bläddra i filer för %s" -#: git-gui.sh:1864 +#: git-gui.sh:1901 #, tcl-format msgid "Visualize %s's History" msgstr "Visualisera historik för %s" -#: git-gui.sh:1869 lib/database.tcl:27 lib/database.tcl:67 +#: git-gui.sh:1906 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" msgstr "Databasstatistik" -#: git-gui.sh:1872 lib/database.tcl:34 +#: git-gui.sh:1909 lib/database.tcl:34 msgid "Compress Database" msgstr "Komprimera databas" -#: git-gui.sh:1875 +#: git-gui.sh:1912 msgid "Verify Database" msgstr "Verifiera databas" -#: git-gui.sh:1882 git-gui.sh:1886 git-gui.sh:1890 lib/shortcut.tcl:7 +#: git-gui.sh:1919 git-gui.sh:1923 git-gui.sh:1927 lib/shortcut.tcl:7 #: lib/shortcut.tcl:39 lib/shortcut.tcl:71 msgid "Create Desktop Icon" msgstr "Skapa skrivbordsikon" -#: git-gui.sh:1895 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184 +#: git-gui.sh:1932 lib/choose_repository.tcl:177 lib/choose_repository.tcl:185 msgid "Quit" msgstr "Avsluta" -#: git-gui.sh:1902 +#: git-gui.sh:1939 msgid "Undo" msgstr "Ã…ngra" -#: git-gui.sh:1905 +#: git-gui.sh:1942 msgid "Redo" msgstr "Gör om" -#: git-gui.sh:1909 git-gui.sh:2403 +#: git-gui.sh:1946 git-gui.sh:2443 msgid "Cut" msgstr "Klipp ut" -#: git-gui.sh:1912 git-gui.sh:2406 git-gui.sh:2477 git-gui.sh:2549 -#: lib/console.tcl:67 +#: git-gui.sh:1949 git-gui.sh:2446 git-gui.sh:2520 git-gui.sh:2614 +#: lib/console.tcl:69 msgid "Copy" msgstr "Kopiera" -#: git-gui.sh:1915 git-gui.sh:2409 +#: git-gui.sh:1952 git-gui.sh:2449 msgid "Paste" msgstr "Klistra in" -#: git-gui.sh:1918 git-gui.sh:2412 lib/branch_delete.tcl:26 +#: git-gui.sh:1955 git-gui.sh:2452 lib/branch_delete.tcl:26 #: lib/remote_branch_delete.tcl:38 msgid "Delete" msgstr "Ta bort" -#: git-gui.sh:1922 git-gui.sh:2416 git-gui.sh:2553 lib/console.tcl:69 +#: git-gui.sh:1959 git-gui.sh:2456 git-gui.sh:2618 lib/console.tcl:71 msgid "Select All" msgstr "Markera alla" -#: git-gui.sh:1931 +#: git-gui.sh:1968 msgid "Create..." msgstr "Skapa..." -#: git-gui.sh:1937 +#: git-gui.sh:1974 msgid "Checkout..." msgstr "Checka ut..." -#: git-gui.sh:1943 +#: git-gui.sh:1980 msgid "Rename..." msgstr "Byt namn..." -#: git-gui.sh:1948 git-gui.sh:2048 +#: git-gui.sh:1985 git-gui.sh:2085 msgid "Delete..." msgstr "Ta bort..." -#: git-gui.sh:1953 +#: git-gui.sh:1990 msgid "Reset..." msgstr "Ã…terställ..." -#: git-gui.sh:1965 git-gui.sh:2350 +#: git-gui.sh:2002 git-gui.sh:2389 msgid "New Commit" msgstr "Ny incheckning" -#: git-gui.sh:1973 git-gui.sh:2357 +#: git-gui.sh:2010 git-gui.sh:2396 msgid "Amend Last Commit" msgstr "Lägg till föregÃ¥ende incheckning" -#: git-gui.sh:1982 git-gui.sh:2317 lib/remote_branch_delete.tcl:99 +#: git-gui.sh:2019 git-gui.sh:2356 lib/remote_branch_delete.tcl:99 msgid "Rescan" msgstr "Sök pÃ¥ nytt" -#: git-gui.sh:1988 +#: git-gui.sh:2025 msgid "Stage To Commit" msgstr "Köa för incheckning" -#: git-gui.sh:1994 +#: git-gui.sh:2031 msgid "Stage Changed Files To Commit" msgstr "Köa ändrade filer för incheckning" -#: git-gui.sh:2000 +#: git-gui.sh:2037 msgid "Unstage From Commit" msgstr "Ta bort frÃ¥n incheckningskö" -#: git-gui.sh:2005 lib/index.tcl:393 +#: git-gui.sh:2042 lib/index.tcl:395 msgid "Revert Changes" msgstr "Ã…terställ ändringar" -#: git-gui.sh:2012 git-gui.sh:2329 git-gui.sh:2427 +#: git-gui.sh:2049 git-gui.sh:2368 git-gui.sh:2467 msgid "Sign Off" msgstr "Skriv under" -#: git-gui.sh:2016 git-gui.sh:2333 +#: git-gui.sh:2053 git-gui.sh:2372 msgid "Commit@@verb" msgstr "Checka in" -#: git-gui.sh:2027 +#: git-gui.sh:2064 msgid "Local Merge..." msgstr "Lokal sammanslagning..." -#: git-gui.sh:2032 +#: git-gui.sh:2069 msgid "Abort Merge..." msgstr "Avbryt sammanslagning..." -#: git-gui.sh:2044 +#: git-gui.sh:2081 msgid "Push..." msgstr "Sänd..." -#: git-gui.sh:2055 lib/choose_repository.tcl:40 +#: git-gui.sh:2092 lib/choose_repository.tcl:41 msgid "Apple" msgstr "Äpple" -#: git-gui.sh:2058 git-gui.sh:2080 lib/about.tcl:13 -#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49 +#: git-gui.sh:2095 git-gui.sh:2117 lib/about.tcl:14 +#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 #, tcl-format msgid "About %s" msgstr "Om %s" -#: git-gui.sh:2062 +#: git-gui.sh:2099 msgid "Preferences..." msgstr "Inställningar..." -#: git-gui.sh:2070 git-gui.sh:2595 +#: git-gui.sh:2107 git-gui.sh:2639 msgid "Options..." msgstr "Alternativ..." -#: git-gui.sh:2076 lib/choose_repository.tcl:46 +#: git-gui.sh:2113 lib/choose_repository.tcl:47 msgid "Help" msgstr "Hjälp" -#: git-gui.sh:2117 +#: git-gui.sh:2154 msgid "Online Documentation" msgstr "Webbdokumentation" -#: git-gui.sh:2201 +#: git-gui.sh:2238 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" -msgstr "ödesdigert: kunde inte ta status pÃ¥ sökvägen %s: Fil eller katalog saknas" +msgstr "" +"ödesdigert: kunde inte ta status pÃ¥ sökvägen %s: Fil eller katalog saknas" -#: git-gui.sh:2234 +#: git-gui.sh:2271 msgid "Current Branch:" msgstr "Aktuell gren:" -#: git-gui.sh:2255 +#: git-gui.sh:2292 msgid "Staged Changes (Will Commit)" msgstr "Köade ändringar (kommer att checkas in)" -#: git-gui.sh:2274 +#: git-gui.sh:2312 msgid "Unstaged Changes" msgstr "Oköade ändringar" -#: git-gui.sh:2323 +#: git-gui.sh:2362 msgid "Stage Changed" msgstr "Köa ändrade" -#: git-gui.sh:2339 lib/transport.tcl:93 lib/transport.tcl:182 +#: git-gui.sh:2378 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" msgstr "Sänd" -#: git-gui.sh:2369 +#: git-gui.sh:2408 msgid "Initial Commit Message:" msgstr "Inledande incheckningsmeddelande:" -#: git-gui.sh:2370 +#: git-gui.sh:2409 msgid "Amended Commit Message:" msgstr "Utökat incheckningsmeddelande:" -#: git-gui.sh:2371 +#: git-gui.sh:2410 msgid "Amended Initial Commit Message:" msgstr "Utökat inledande incheckningsmeddelande:" -#: git-gui.sh:2372 +#: git-gui.sh:2411 msgid "Amended Merge Commit Message:" msgstr "Utökat incheckningsmeddelande för sammanslagning:" -#: git-gui.sh:2373 +#: git-gui.sh:2412 msgid "Merge Commit Message:" msgstr "Incheckningsmeddelande för sammanslagning:" -#: git-gui.sh:2374 +#: git-gui.sh:2413 msgid "Commit Message:" msgstr "Incheckningsmeddelande:" -#: git-gui.sh:2419 git-gui.sh:2557 lib/console.tcl:71 +#: git-gui.sh:2459 git-gui.sh:2622 lib/console.tcl:73 msgid "Copy All" msgstr "Kopiera alla" -#: git-gui.sh:2443 lib/blame.tcl:104 +#: git-gui.sh:2483 lib/blame.tcl:107 msgid "File:" msgstr "Fil:" -#: git-gui.sh:2545 -msgid "Refresh" -msgstr "Uppdatera" - -#: git-gui.sh:2566 +#: git-gui.sh:2589 msgid "Apply/Reverse Hunk" msgstr "Använd/Ã¥terställ del" -#: git-gui.sh:2572 -msgid "Decrease Font Size" -msgstr "Minska teckensnittsstorlek" - -#: git-gui.sh:2576 -msgid "Increase Font Size" -msgstr "Öka teckensnittsstorlek" - -#: git-gui.sh:2581 +#: git-gui.sh:2595 msgid "Show Less Context" msgstr "Visa mindre sammanhang" -#: git-gui.sh:2588 +#: git-gui.sh:2602 msgid "Show More Context" msgstr "Visa mer sammanhang" -#: git-gui.sh:2602 +#: git-gui.sh:2610 +msgid "Refresh" +msgstr "Uppdatera" + +#: git-gui.sh:2631 +msgid "Decrease Font Size" +msgstr "Minska teckensnittsstorlek" + +#: git-gui.sh:2635 +msgid "Increase Font Size" +msgstr "Öka teckensnittsstorlek" + +#: git-gui.sh:2646 msgid "Unstage Hunk From Commit" msgstr "Ta bort del ur incheckningskö" -#: git-gui.sh:2604 +#: git-gui.sh:2648 msgid "Stage Hunk For Commit" msgstr "Ställ del i incheckningskö" -#: git-gui.sh:2623 +#: git-gui.sh:2667 msgid "Initializing..." msgstr "Initierar..." -#: git-gui.sh:2718 +#: git-gui.sh:2762 #, tcl-format msgid "" "Possible environment issues exist.\n" @@ -449,7 +449,7 @@ msgstr "" "av %s:\n" "\n" -#: git-gui.sh:2748 +#: git-gui.sh:2792 msgid "" "\n" "This is due to a known issue with the\n" @@ -459,7 +459,7 @@ msgstr "" "Detta beror pÃ¥ ett känt problem med\n" "Tcl-binären som följer med Cygwin." -#: git-gui.sh:2753 +#: git-gui.sh:2797 #, tcl-format msgid "" "\n" @@ -476,7 +476,7 @@ msgstr "" "user.name och user.email i din personliga\n" "~/.gitconfig-fil.\n" -#: lib/about.tcl:25 +#: lib/about.tcl:26 msgid "git-gui - a graphical user interface for Git." msgstr "git-gui - ett grafiskt användargränssnitt för Git." @@ -488,56 +488,56 @@ msgstr "Filvisare" msgid "Commit:" msgstr "Incheckning:" -#: lib/blame.tcl:249 +#: lib/blame.tcl:264 msgid "Copy Commit" msgstr "Kopiera incheckning" -#: lib/blame.tcl:369 +#: lib/blame.tcl:384 #, tcl-format msgid "Reading %s..." msgstr "Läser %s..." -#: lib/blame.tcl:473 +#: lib/blame.tcl:488 msgid "Loading copy/move tracking annotations..." msgstr "Läser annoteringar för kopiering/flyttning..." -#: lib/blame.tcl:493 +#: lib/blame.tcl:508 msgid "lines annotated" msgstr "rader annoterade" -#: lib/blame.tcl:674 +#: lib/blame.tcl:689 msgid "Loading original location annotations..." msgstr "Läser in annotering av originalplacering..." -#: lib/blame.tcl:677 +#: lib/blame.tcl:692 msgid "Annotation complete." msgstr "Annotering fullbordad." -#: lib/blame.tcl:731 +#: lib/blame.tcl:746 msgid "Loading annotation..." msgstr "Läser in annotering..." -#: lib/blame.tcl:787 +#: lib/blame.tcl:802 msgid "Author:" msgstr "Författare:" -#: lib/blame.tcl:791 +#: lib/blame.tcl:806 msgid "Committer:" msgstr "Incheckare:" -#: lib/blame.tcl:796 +#: lib/blame.tcl:811 msgid "Original File:" msgstr "Ursprunglig fil:" -#: lib/blame.tcl:910 +#: lib/blame.tcl:925 msgid "Originally By:" msgstr "Ursprungligen av:" -#: lib/blame.tcl:916 +#: lib/blame.tcl:931 msgid "In File:" msgstr "I filen:" -#: lib/blame.tcl:921 +#: lib/blame.tcl:936 msgid "Copied Or Moved Here By:" msgstr "Kopierad eller flyttad hit av:" @@ -550,17 +550,17 @@ msgid "Checkout" msgstr "Checka ut" #: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35 -#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:281 -#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:172 -#: lib/option.tcl:90 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 +#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282 +#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:171 +#: lib/option.tcl:103 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 msgid "Cancel" msgstr "Avbryt" -#: lib/branch_checkout.tcl:32 lib/browser.tcl:286 +#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 msgid "Revision" msgstr "Revision" -#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:202 +#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:242 msgid "Options" msgstr "Alternativ" @@ -580,7 +580,7 @@ msgstr "Skapa gren" msgid "Create New Branch" msgstr "Skapa ny gren" -#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375 +#: lib/branch_create.tcl:31 lib/choose_repository.tcl:371 msgid "Create" msgstr "Skapa" @@ -720,22 +720,22 @@ msgstr "Startar..." msgid "File Browser" msgstr "Filbläddrare" -#: lib/browser.tcl:125 lib/browser.tcl:142 +#: lib/browser.tcl:126 lib/browser.tcl:143 #, tcl-format msgid "Loading %s..." msgstr "Läser %s..." -#: lib/browser.tcl:186 +#: lib/browser.tcl:187 msgid "[Up To Parent]" msgstr "[Upp till förälder]" -#: lib/browser.tcl:266 lib/browser.tcl:272 +#: lib/browser.tcl:267 lib/browser.tcl:273 msgid "Browse Branch Files" msgstr "Bläddra filer pÃ¥ grenen" -#: lib/browser.tcl:277 lib/choose_repository.tcl:391 -#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492 -#: lib/choose_repository.tcl:989 +#: lib/browser.tcl:278 lib/choose_repository.tcl:387 +#: lib/choose_repository.tcl:474 lib/choose_repository.tcl:484 +#: lib/choose_repository.tcl:987 msgid "Browse" msgstr "Bläddra" @@ -749,7 +749,7 @@ msgstr "Hämtar %s frÃ¥n %s" msgid "fatal: Cannot resolve %s" msgstr "ödesdigert: Kunde inte slÃ¥ upp %s" -#: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 +#: lib/checkout_op.tcl:140 lib/console.tcl:81 lib/database.tcl:31 msgid "Close" msgstr "Stäng" @@ -796,8 +796,8 @@ msgid "" msgstr "" "Det senaste inlästa tillstÃ¥ndet motsvarar inte tillstÃ¥ndet i arkivet.\n" "\n" -"Ett annat Git-program har ändrat arkivet sedan senaste avsökningen. Du " -"mÃ¥ste utföra en ny sökning innan den aktuella grenen kan ändras.\n" +"Ett annat Git-program har ändrat arkivet sedan senaste avsökningen. Du mÃ¥ste " +"utföra en ny sökning innan den aktuella grenen kan ändras.\n" "\n" "Sökningen kommer att startas automatiskt nu.\n" @@ -806,6 +806,10 @@ msgstr "" msgid "Updating working directory to '%s'..." msgstr "Uppdaterar arbetskatalogen till \"%s\"..." +#: lib/checkout_op.tcl:323 +msgid "files checked out" +msgstr "filer utcheckade" + #: lib/checkout_op.tcl:353 #, tcl-format msgid "Aborted checkout of '%s' (file level merging is required)." @@ -829,10 +833,10 @@ msgid "" msgstr "" "Du är inte längre pÃ¥ en lokal gren.\n" "\n" -"Om du ville vara pÃ¥ en gren skapar du en nu, baserad pÃ¥ \"Denna " -"frÃ¥nkopplade utcheckning\"." +"Om du ville vara pÃ¥ en gren skapar du en nu, baserad pÃ¥ \"Denna frÃ¥nkopplade " +"utcheckning\"." -#: lib/checkout_op.tcl:446 +#: lib/checkout_op.tcl:446 lib/checkout_op.tcl:450 #, tcl-format msgid "Checked out '%s'." msgstr "Checkade ut \"%s\"." @@ -840,7 +844,8 @@ msgstr "Checkade ut \"%s\"." #: lib/checkout_op.tcl:478 #, tcl-format msgid "Resetting '%s' to '%s' will lose the following commits:" -msgstr "Om du Ã¥terställer \"%s\" till \"%s\" fÃ¥r följande incheckningar förlorade:" +msgstr "" +"Om du Ã¥terställer \"%s\" till \"%s\" gÃ¥r följande incheckningar förlorade:" #: lib/checkout_op.tcl:500 msgid "Recovering lost commits may not be easy." @@ -851,7 +856,7 @@ msgstr "Det kanske inte är sÃ¥ enkelt att Ã¥terskapa förlorade incheckningar." msgid "Reset '%s'?" msgstr "Ã…terställa \"%s\"?" -#: lib/checkout_op.tcl:510 lib/merge.tcl:164 +#: lib/checkout_op.tcl:510 lib/merge.tcl:163 msgid "Visualize" msgstr "Visualisera" @@ -867,8 +872,8 @@ msgid "" msgstr "" "Kunde inte ställa in aktuell gren.\n" "\n" -"Arbetskatalogen har bara växlats delvis. Vi uppdaterade filerna " -"utan problem, men kunde inte uppdatera en intern fil i Git.\n" +"Arbetskatalogen har bara växlats delvis. Vi uppdaterade filerna utan " +"problem, men kunde inte uppdatera en intern fil i Git.\n" "\n" "Detta skulle inte ha hänt. %s kommer nu stängas och ge upp." @@ -880,15 +885,15 @@ msgstr "Välj" msgid "Font Family" msgstr "Teckensnittsfamilj" -#: lib/choose_font.tcl:73 +#: lib/choose_font.tcl:74 msgid "Font Size" msgstr "Storlek" -#: lib/choose_font.tcl:90 +#: lib/choose_font.tcl:91 msgid "Font Example" msgstr "Exempel" -#: lib/choose_font.tcl:101 +#: lib/choose_font.tcl:103 msgid "" "This is example text.\n" "If you like this text, it can be your font." @@ -896,225 +901,225 @@ msgstr "" "Detta är en exempeltext.\n" "Om du tycker om den här texten kan den vara ditt teckensnitt." -#: lib/choose_repository.tcl:27 +#: lib/choose_repository.tcl:28 msgid "Git Gui" msgstr "Git Gui" -#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380 +#: lib/choose_repository.tcl:81 lib/choose_repository.tcl:376 msgid "Create New Repository" msgstr "Skapa nytt arkiv" -#: lib/choose_repository.tcl:86 +#: lib/choose_repository.tcl:87 msgid "New..." msgstr "Nytt..." -#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468 +#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:460 msgid "Clone Existing Repository" msgstr "Klona befintligt arkiv" -#: lib/choose_repository.tcl:99 +#: lib/choose_repository.tcl:100 msgid "Clone..." msgstr "Klona..." -#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978 +#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:976 msgid "Open Existing Repository" msgstr "Öppna befintligt arkiv" -#: lib/choose_repository.tcl:112 +#: lib/choose_repository.tcl:113 msgid "Open..." msgstr "Öppna..." -#: lib/choose_repository.tcl:125 +#: lib/choose_repository.tcl:126 msgid "Recent Repositories" msgstr "Senaste arkiven" -#: lib/choose_repository.tcl:131 +#: lib/choose_repository.tcl:132 msgid "Open Recent Repository:" msgstr "Öppna tidigare arkiv:" -#: lib/choose_repository.tcl:294 -#, tcl-format -msgid "Location %s already exists." -msgstr "Platsen %s finns redan." - -#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307 -#: lib/choose_repository.tcl:314 +#: lib/choose_repository.tcl:296 lib/choose_repository.tcl:303 +#: lib/choose_repository.tcl:310 #, tcl-format msgid "Failed to create repository %s:" msgstr "Kunde inte skapa arkivet %s:" -#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486 +#: lib/choose_repository.tcl:381 lib/choose_repository.tcl:478 msgid "Directory:" msgstr "Katalog:" -#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544 -#: lib/choose_repository.tcl:1013 +#: lib/choose_repository.tcl:412 lib/choose_repository.tcl:537 +#: lib/choose_repository.tcl:1011 msgid "Git Repository" msgstr "Gitarkiv" -#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437 +#: lib/choose_repository.tcl:437 #, tcl-format msgid "Directory %s already exists." msgstr "Katalogen %s finns redan." -#: lib/choose_repository.tcl:442 +#: lib/choose_repository.tcl:441 #, tcl-format msgid "File %s already exists." msgstr "Filen %s finns redan." -#: lib/choose_repository.tcl:463 +#: lib/choose_repository.tcl:455 msgid "Clone" msgstr "Klona" -#: lib/choose_repository.tcl:476 +#: lib/choose_repository.tcl:468 msgid "URL:" msgstr "Webbadress:" -#: lib/choose_repository.tcl:496 +#: lib/choose_repository.tcl:489 msgid "Clone Type:" msgstr "Typ av klon:" -#: lib/choose_repository.tcl:502 +#: lib/choose_repository.tcl:495 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "Standard (snabb, semiredundant, hÃ¥rda länkar)" -#: lib/choose_repository.tcl:508 +#: lib/choose_repository.tcl:501 msgid "Full Copy (Slower, Redundant Backup)" msgstr "Full kopia (lÃ¥ngsammare, redundant säkerhetskopia)" -#: lib/choose_repository.tcl:514 +#: lib/choose_repository.tcl:507 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "Delad (snabbast, rekommenderas ej, ingen säkerhetskopia)" -#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597 -#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808 -#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027 +#: lib/choose_repository.tcl:543 lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:736 lib/choose_repository.tcl:806 +#: lib/choose_repository.tcl:1017 lib/choose_repository.tcl:1025 #, tcl-format msgid "Not a Git repository: %s" msgstr "Inte ett Gitarkiv: %s" -#: lib/choose_repository.tcl:586 +#: lib/choose_repository.tcl:579 msgid "Standard only available for local repository." msgstr "Standard är endast tillgängligt för lokala arkiv." -#: lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:583 msgid "Shared only available for local repository." msgstr "Delat är endast tillgängligt för lokala arkiv." -#: lib/choose_repository.tcl:617 +#: lib/choose_repository.tcl:604 +#, tcl-format +msgid "Location %s already exists." +msgstr "Platsen %s finns redan." + +#: lib/choose_repository.tcl:615 msgid "Failed to configure origin" msgstr "Kunde inte konfigurera ursprung" -#: lib/choose_repository.tcl:629 +#: lib/choose_repository.tcl:627 msgid "Counting objects" msgstr "Räknar objekt" -#: lib/choose_repository.tcl:630 +#: lib/choose_repository.tcl:628 msgid "buckets" msgstr "hinkar" -#: lib/choose_repository.tcl:654 +#: lib/choose_repository.tcl:652 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" msgstr "Kunde inte kopiera objekt/info/alternativ: %s" -#: lib/choose_repository.tcl:690 +#: lib/choose_repository.tcl:688 #, tcl-format msgid "Nothing to clone from %s." msgstr "Ingenting att klona frÃ¥n %s." -#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906 -#: lib/choose_repository.tcl:918 +#: lib/choose_repository.tcl:690 lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:916 msgid "The 'master' branch has not been initialized." msgstr "Grenen \"master\" har inte initierats." -#: lib/choose_repository.tcl:705 +#: lib/choose_repository.tcl:703 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "HÃ¥rda länkar är inte tillgängliga. Faller tillbaka pÃ¥ kopiering." -#: lib/choose_repository.tcl:717 +#: lib/choose_repository.tcl:715 #, tcl-format msgid "Cloning from %s" msgstr "Klonar frÃ¥n %s" -#: lib/choose_repository.tcl:748 +#: lib/choose_repository.tcl:746 msgid "Copying objects" msgstr "Kopierar objekt" -#: lib/choose_repository.tcl:749 +#: lib/choose_repository.tcl:747 msgid "KiB" msgstr "KiB" -#: lib/choose_repository.tcl:773 +#: lib/choose_repository.tcl:771 #, tcl-format msgid "Unable to copy object: %s" msgstr "Kunde inte kopiera objekt: %s" -#: lib/choose_repository.tcl:783 +#: lib/choose_repository.tcl:781 msgid "Linking objects" msgstr "Länkar objekt" -#: lib/choose_repository.tcl:784 +#: lib/choose_repository.tcl:782 msgid "objects" msgstr "objekt" -#: lib/choose_repository.tcl:792 +#: lib/choose_repository.tcl:790 #, tcl-format msgid "Unable to hardlink object: %s" msgstr "Kunde inte hÃ¥rdlänka objekt: %s" -#: lib/choose_repository.tcl:847 +#: lib/choose_repository.tcl:845 msgid "Cannot fetch branches and objects. See console output for details." msgstr "Kunde inte hämta grenar och objekt. Se konsolutdata för detaljer." -#: lib/choose_repository.tcl:858 +#: lib/choose_repository.tcl:856 msgid "Cannot fetch tags. See console output for details." msgstr "Kunde inte hämta taggar. Se konsolutdata för detaljer." -#: lib/choose_repository.tcl:882 +#: lib/choose_repository.tcl:880 msgid "Cannot determine HEAD. See console output for details." msgstr "Kunde inte avgöra HEAD. Se konsolutdata för detaljer." -#: lib/choose_repository.tcl:891 +#: lib/choose_repository.tcl:889 #, tcl-format msgid "Unable to cleanup %s" msgstr "Kunde inte städa upp %s" -#: lib/choose_repository.tcl:897 +#: lib/choose_repository.tcl:895 msgid "Clone failed." msgstr "Kloning misslyckades." -#: lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:902 msgid "No default branch obtained." msgstr "Hämtade ingen standardgren." -#: lib/choose_repository.tcl:915 +#: lib/choose_repository.tcl:913 #, tcl-format msgid "Cannot resolve %s as a commit." msgstr "Kunde inte slÃ¥ upp %s till nÃ¥gon incheckning." -#: lib/choose_repository.tcl:927 +#: lib/choose_repository.tcl:925 msgid "Creating working directory" msgstr "Skapar arbetskatalog" -#: lib/choose_repository.tcl:928 lib/index.tcl:65 lib/index.tcl:127 +#: lib/choose_repository.tcl:926 lib/index.tcl:65 lib/index.tcl:127 #: lib/index.tcl:193 msgid "files" msgstr "filer" -#: lib/choose_repository.tcl:957 +#: lib/choose_repository.tcl:955 msgid "Initial file checkout failed." msgstr "Inledande filutcheckning misslyckades." -#: lib/choose_repository.tcl:973 +#: lib/choose_repository.tcl:971 msgid "Open" msgstr "Öppna" -#: lib/choose_repository.tcl:983 +#: lib/choose_repository.tcl:981 msgid "Repository:" msgstr "Arkiv:" -#: lib/choose_repository.tcl:1033 +#: lib/choose_repository.tcl:1031 #, tcl-format msgid "Failed to open repository %s:" msgstr "Kunde inte öppna arkivet %s:" @@ -1135,7 +1140,7 @@ msgstr "Lokal gren" msgid "Tracking Branch" msgstr "SpÃ¥rande gren" -#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:537 +#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538 msgid "Tag" msgstr "Tagg" @@ -1152,11 +1157,11 @@ msgstr "Ingen revision vald." msgid "Revision expression is empty." msgstr "Revisionsuttrycket är tomt." -#: lib/choose_rev.tcl:530 +#: lib/choose_rev.tcl:531 msgid "Updated" msgstr "Uppdaterad" -#: lib/choose_rev.tcl:558 +#: lib/choose_rev.tcl:559 msgid "URL" msgstr "Webbadress" @@ -1182,9 +1187,9 @@ msgid "" msgstr "" "Kan inte utöka vid sammanslagning.\n" "\n" -"Du är i mitten av en sammanslagning som inte är fullbordad. Du kan " -"inte utöka tidigare incheckningar om du inte först avbryter den " -"pÃ¥gÃ¥ende sammanslagningen.\n" +"Du är i mitten av en sammanslagning som inte är fullbordad. Du kan inte " +"utöka tidigare incheckningar om du inte först avbryter den pÃ¥gÃ¥ende " +"sammanslagningen.\n" #: lib/commit.tcl:49 msgid "Error loading commit data for amend:" @@ -1209,8 +1214,8 @@ msgid "" msgstr "" "Det senaste inlästa tillstÃ¥ndet motsvarar inte tillstÃ¥ndet i arkivet.\n" "\n" -"Ett annat Git-program har ändrat arkivet sedan senaste avsökningen. Du " -"mÃ¥ste utföra en ny sökning innan du kan göra en ny incheckning.\n" +"Ett annat Git-program har ändrat arkivet sedan senaste avsökningen. Du mÃ¥ste " +"utföra en ny sökning innan du kan göra en ny incheckning.\n" "\n" "Sökningen kommer att startas automatiskt nu.\n" @@ -1266,16 +1271,45 @@ msgstr "" "- Andra raden: Tom\n" "- Följande rader: Beskriv varför det här är en bra ändring.\n" -#: lib/commit.tcl:257 +#: lib/commit.tcl:207 +#, tcl-format +msgid "warning: Tcl does not support encoding '%s'." +msgstr "varning: Tcl stöder inte teckenkodningen \"%s\"." + +#: lib/commit.tcl:221 +msgid "Calling pre-commit hook..." +msgstr "Anropar krok före incheckning..." + +#: lib/commit.tcl:236 +msgid "Commit declined by pre-commit hook." +msgstr "Incheckningen avvisades av krok före incheckning." + +#: lib/commit.tcl:259 +msgid "Calling commit-msg hook..." +msgstr "Anropar krok för incheckningsmeddelande..." + +#: lib/commit.tcl:274 +msgid "Commit declined by commit-msg hook." +msgstr "Incheckning avvisad av krok för incheckningsmeddelande." + +#: lib/commit.tcl:287 +msgid "Committing changes..." +msgstr "Checkar in ändringar..." + +#: lib/commit.tcl:303 msgid "write-tree failed:" msgstr "write-tree misslyckades:" -#: lib/commit.tcl:275 +#: lib/commit.tcl:304 lib/commit.tcl:348 lib/commit.tcl:368 +msgid "Commit failed." +msgstr "Incheckningen misslyckades." + +#: lib/commit.tcl:321 #, tcl-format msgid "Commit %s appears to be corrupt" msgstr "Incheckningen %s verkar vara trasig" -#: lib/commit.tcl:279 +#: lib/commit.tcl:326 msgid "" "No changes to commit.\n" "\n" @@ -1289,37 +1323,32 @@ msgstr "" "\n" "En sökning kommer att startas automatiskt nu.\n" -#: lib/commit.tcl:286 +#: lib/commit.tcl:333 msgid "No changes to commit." msgstr "Inga ändringar att checka in." -#: lib/commit.tcl:303 -#, tcl-format -msgid "warning: Tcl does not support encoding '%s'." -msgstr "varning: Tcl stöder inte teckenkodningen \"%s\"." - -#: lib/commit.tcl:317 +#: lib/commit.tcl:347 msgid "commit-tree failed:" msgstr "commit-tree misslyckades:" -#: lib/commit.tcl:339 +#: lib/commit.tcl:367 msgid "update-ref failed:" msgstr "update-ref misslyckades:" -#: lib/commit.tcl:430 +#: lib/commit.tcl:454 #, tcl-format msgid "Created commit %s: %s" msgstr "Skapade incheckningen %s: %s" -#: lib/console.tcl:57 +#: lib/console.tcl:59 msgid "Working... please wait..." msgstr "Arbetar... vänta..." -#: lib/console.tcl:183 +#: lib/console.tcl:186 msgid "Success" msgstr "Lyckades" -#: lib/console.tcl:196 +#: lib/console.tcl:200 msgid "Error: Command Failed" msgstr "Fel: Kommando misslyckades" @@ -1398,8 +1427,8 @@ msgstr "" "\n" "%s innehÃ¥ller inga ändringar.\n" "\n" -"Modifieringsdatum för filen uppdaterades av ett annat program, men innehÃ¥llet " -"i filen har inte ändrats.\n" +"Modifieringsdatum för filen uppdaterades av ett annat program, men " +"innehÃ¥llet i filen har inte ändrats.\n" "\n" "En sökning kommer automatiskt att startas för att hitta andra filer som kan " "vara i samma tillstÃ¥nd." @@ -1430,23 +1459,23 @@ msgstr "* Binärfil (visar inte innehÃ¥llet)." msgid "Error loading diff:" msgstr "Fel vid inläsning av differens:" -#: lib/diff.tcl:302 +#: lib/diff.tcl:303 msgid "Failed to unstage selected hunk." msgstr "Kunde inte ta bort den valda delen frÃ¥n kön." -#: lib/diff.tcl:309 +#: lib/diff.tcl:310 msgid "Failed to stage selected hunk." msgstr "Kunde inte lägga till den valda delen till kön." -#: lib/error.tcl:12 lib/error.tcl:102 +#: lib/error.tcl:20 lib/error.tcl:114 msgid "error" msgstr "fel" -#: lib/error.tcl:28 +#: lib/error.tcl:36 msgid "warning" msgstr "varning" -#: lib/error.tcl:81 +#: lib/error.tcl:94 msgid "You must correct the above errors before committing." msgstr "Du mÃ¥ste rätta till felen ovan innan du checkar in." @@ -1479,6 +1508,10 @@ msgstr "LÃ¥s upp index" msgid "Unstaging %s from commit" msgstr "Tar bort %s för incheckningskön" +#: lib/index.tcl:313 +msgid "Ready to commit." +msgstr "Redo att checka in." + #: lib/index.tcl:326 #, tcl-format msgid "Adding %s" @@ -1494,11 +1527,12 @@ msgstr "Ã…terställ ändringarna i filen %s?" msgid "Revert changes in these %i files?" msgstr "Ã…terställ ändringarna i dessa %i filer?" -#: lib/index.tcl:389 +#: lib/index.tcl:391 msgid "Any unstaged changes will be permanently lost by the revert." -msgstr "Alla oköade ändringar kommer permanent gÃ¥ förlorade vid Ã¥terställningen." +msgstr "" +"Alla oköade ändringar kommer permanent gÃ¥ förlorade vid Ã¥terställningen." -#: lib/index.tcl:392 +#: lib/index.tcl:394 msgid "Do Nothing" msgstr "Gör ingenting" @@ -1510,7 +1544,7 @@ msgid "" msgstr "" "Kan inte slÃ¥ ihop vid utökning.\n" "\n" -"Du mÃ¥ste föra färdig utökningen av incheckningen innan du pÃ¥börjar nÃ¥gon " +"Du mÃ¥ste göra färdig utökningen av incheckningen innan du pÃ¥börjar nÃ¥gon " "slags sammanslagning.\n" #: lib/merge.tcl:27 @@ -1524,8 +1558,8 @@ msgid "" msgstr "" "Det senaste inlästa tillstÃ¥ndet motsvarar inte tillstÃ¥ndet i arkivet.\n" "\n" -"Ett annat Git-program har ändrat arkivet sedan senaste avsökningen. Du " -"mÃ¥ste utföra en ny sökning innan du kan utföra en sammanslagning.\n" +"Ett annat Git-program har ändrat arkivet sedan senaste avsökningen. Du mÃ¥ste " +"utföra en ny sökning innan du kan utföra en sammanslagning.\n" "\n" "Sökningen kommer att startas automatiskt nu.\n" @@ -1571,27 +1605,27 @@ msgstr "%s av %s" #: lib/merge.tcl:119 #, tcl-format -msgid "Merging %s and %s" -msgstr "SlÃ¥r ihop %s och %s" +msgid "Merging %s and %s..." +msgstr "SlÃ¥r ihop %s och %s..." -#: lib/merge.tcl:131 +#: lib/merge.tcl:130 msgid "Merge completed successfully." msgstr "Sammanslagningen avslutades framgÃ¥ngsrikt." -#: lib/merge.tcl:133 +#: lib/merge.tcl:132 msgid "Merge failed. Conflict resolution is required." msgstr "Sammanslagningen misslyckades. Du mÃ¥ste lösa konflikterna." -#: lib/merge.tcl:158 +#: lib/merge.tcl:157 #, tcl-format msgid "Merge Into %s" msgstr "SlÃ¥ ihop i %s" -#: lib/merge.tcl:177 +#: lib/merge.tcl:176 msgid "Revision To Merge" msgstr "Revisioner att slÃ¥ ihop" -#: lib/merge.tcl:212 +#: lib/merge.tcl:211 msgid "" "Cannot abort while amending.\n" "\n" @@ -1601,7 +1635,7 @@ msgstr "" "\n" "Du mÃ¥ste göra dig färdig med att utöka incheckningen.\n" -#: lib/merge.tcl:222 +#: lib/merge.tcl:221 msgid "" "Abort merge?\n" "\n" @@ -1611,12 +1645,12 @@ msgid "" msgstr "" "Avbryt sammanslagning?\n" "\n" -"Om du avbryter sammanslagningen kommer *ALLA* ej incheckade ändringar att " -"gÃ¥ förlorade.\n" +"Om du avbryter sammanslagningen kommer *ALLA* ej incheckade ändringar att gÃ¥ " +"förlorade.\n" "\n" "GÃ¥ vidare med att avbryta den aktuella sammanslagningen?" -#: lib/merge.tcl:228 +#: lib/merge.tcl:227 msgid "" "Reset changes?\n" "\n" @@ -1626,98 +1660,110 @@ msgid "" msgstr "" "Ã…terställ ändringar?\n" "\n" -"Om du Ã¥terställer ändringarna kommer *ALLA* ej incheckade ändringar att " -"gÃ¥ förlorade.\n" +"Om du Ã¥terställer ändringarna kommer *ALLA* ej incheckade ändringar att gÃ¥ " +"förlorade.\n" "\n" "GÃ¥ vidare med att Ã¥terställa de aktuella ändringarna?" -#: lib/merge.tcl:239 +#: lib/merge.tcl:238 msgid "Aborting" msgstr "Avbryter" -#: lib/merge.tcl:266 +#: lib/merge.tcl:238 +msgid "files reset" +msgstr "filer Ã¥terställda" + +#: lib/merge.tcl:265 msgid "Abort failed." msgstr "Misslyckades avbryta." -#: lib/merge.tcl:268 +#: lib/merge.tcl:267 msgid "Abort completed. Ready." msgstr "Avbrytning fullbordad. Redo." -#: lib/option.tcl:82 +#: lib/option.tcl:95 msgid "Restore Defaults" msgstr "Ã…terställ standardvärden" -#: lib/option.tcl:86 +#: lib/option.tcl:99 msgid "Save" msgstr "Spara" -#: lib/option.tcl:96 +#: lib/option.tcl:109 #, tcl-format msgid "%s Repository" msgstr "Arkivet %s" -#: lib/option.tcl:97 +#: lib/option.tcl:110 msgid "Global (All Repositories)" msgstr "Globalt (alla arkiv)" -#: lib/option.tcl:103 +#: lib/option.tcl:116 msgid "User Name" msgstr "Användarnamn" -#: lib/option.tcl:104 +#: lib/option.tcl:117 msgid "Email Address" msgstr "E-postadress" -#: lib/option.tcl:106 +#: lib/option.tcl:119 msgid "Summarize Merge Commits" msgstr "Summera sammanslagningsincheckningar" -#: lib/option.tcl:107 +#: lib/option.tcl:120 msgid "Merge Verbosity" msgstr "Pratsamhet för sammanslagningar" -#: lib/option.tcl:108 +#: lib/option.tcl:121 msgid "Show Diffstat After Merge" msgstr "Visa diffstatistik efter sammanslagning" -#: lib/option.tcl:110 +#: lib/option.tcl:123 msgid "Trust File Modification Timestamps" msgstr "Lita pÃ¥ filändringstidsstämplar" -#: lib/option.tcl:111 +#: lib/option.tcl:124 msgid "Prune Tracking Branches During Fetch" msgstr "Städa spÃ¥rade grenar vid hämtning" -#: lib/option.tcl:112 +#: lib/option.tcl:125 msgid "Match Tracking Branches" msgstr "Matcha spÃ¥rade grenar" -#: lib/option.tcl:113 +#: lib/option.tcl:126 msgid "Number of Diff Context Lines" msgstr "Antal rader sammanhang i differenser" -#: lib/option.tcl:114 +#: lib/option.tcl:127 +msgid "Commit Message Text Width" +msgstr "Textbredd för incheckningsmeddelande" + +#: lib/option.tcl:128 msgid "New Branch Name Template" msgstr "Mall för namn pÃ¥ nya grenar" -#: lib/option.tcl:176 +#: lib/option.tcl:192 +msgid "Spelling Dictionary:" +msgstr "Stavningsordlista:" + +#: lib/option.tcl:216 msgid "Change Font" msgstr "Byt teckensnitt" -#: lib/option.tcl:180 +#: lib/option.tcl:220 #, tcl-format msgid "Choose %s" msgstr "Välj %s" -#: lib/option.tcl:186 +#: lib/option.tcl:226 msgid "pt." msgstr "p." -#: lib/option.tcl:200 +#: lib/option.tcl:240 msgid "Preferences" msgstr "Inställningar" -#: lib/option.tcl:235 +#: lib/option.tcl:275 msgid "Failed to completely save options:" msgstr "Misslyckades med att helt spara alternativ:" @@ -1774,8 +1820,8 @@ msgid "" "One or more of the merge tests failed because you have not fetched the " "necessary commits. Try fetching from %s first." msgstr "" -"En eller flera av sammanslagningstesterna misslyckades eftersom du inte " -"har hämtat de nödvändiga incheckningarna. Försök hämta frÃ¥n %s först." +"En eller flera av sammanslagningstesterna misslyckades eftersom du inte har " +"hämtat de nödvändiga incheckningarna. Försök hämta frÃ¥n %s först." #: lib/remote_branch_delete.tcl:207 msgid "Please select one or more branches to delete." @@ -1787,7 +1833,7 @@ msgid "" "\n" "Delete the selected branches?" msgstr "" -"Det kan vara svÃ¥rt att Ã¥terställa grenar.\n" +"Det kan vara svÃ¥rt att Ã¥terställa borttagna grenar.\n" "\n" "Ta bort de valda grenarna?" @@ -1825,6 +1871,43 @@ msgstr "Kan inte skriva genväg:" msgid "Cannot write icon:" msgstr "Kan inte skriva ikon:" +#: lib/spellcheck.tcl:57 +msgid "Unsupported spell checker" +msgstr "Stavningskontrollprogrammet stöds inte" + +#: lib/spellcheck.tcl:65 +msgid "Spell checking is unavailable" +msgstr "Stavningskontroll är ej tillgänglig" + +#: lib/spellcheck.tcl:68 +msgid "Invalid spell checking configuration" +msgstr "Ogiltig inställning för stavningskontroll" + +#: lib/spellcheck.tcl:70 +#, tcl-format +msgid "Reverting dictionary to %s." +msgstr "Ã…terställer ordlistan till %s." + +#: lib/spellcheck.tcl:73 +msgid "Spell checker silently failed on startup" +msgstr "Stavningskontroll misslyckades tyst vid start" + +#: lib/spellcheck.tcl:80 +msgid "Unrecognized spell checker" +msgstr "Stavningskontrollprogrammet känns inte igen" + +#: lib/spellcheck.tcl:180 +msgid "No Suggestions" +msgstr "Inga förslag" + +#: lib/spellcheck.tcl:381 +msgid "Unexpected EOF from spell checker" +msgstr "Oväntat filslut frÃ¥n stavningskontroll" + +#: lib/spellcheck.tcl:385 +msgid "Spell Checker Failed" +msgstr "Stavningskontroll misslyckades" + #: lib/status_bar.tcl:83 #, tcl-format msgid "%s ... %*i of %*i %s (%3i%%)" @@ -1893,3 +1976,5 @@ msgstr "Använd tunt paket (för lÃ¥ngsamma nätverksanslutningar)" msgid "Include tags" msgstr "Ta med taggar" +#~ msgid "Not connected to aspell" +#~ msgstr "Inte ansluten till aspell" diff --git a/git-gui/po/zh_cn.po b/git-gui/po/zh_cn.po index f8697216f7..d2c6866671 100644 --- a/git-gui/po/zh_cn.po +++ b/git-gui/po/zh_cn.po @@ -15,7 +15,7 @@ # fast forward 快速åˆå¹¶(??) # stage ç¼“å˜ (译自 index/cache) # amend ä¿®æ£ -# reset å¤ä½ +# reset å¤ä½ # # 2008-01-06 Eric Miao <eric.y.miao@gmail.com> # FIXME: checkout çš„æ ‡å‡†ç¿»è¯‘ @@ -25,7 +25,7 @@ msgid "" msgstr "" "Project-Id-Version: git-gui\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-11-24 10:36+0100\n" +"POT-Creation-Date: 2008-03-14 07:18+0100\n" "PO-Revision-Date: 2007-07-21 01:23-0700\n" "Last-Translator: Eric Miao <eric.y.miao@gmail.com>\n" "Language-Team: Chinese\n" @@ -33,33 +33,33 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: git-gui.sh:41 git-gui.sh:604 git-gui.sh:618 git-gui.sh:631 git-gui.sh:714 -#: git-gui.sh:733 +#: git-gui.sh:41 git-gui.sh:634 git-gui.sh:648 git-gui.sh:661 git-gui.sh:744 +#: git-gui.sh:763 msgid "git-gui: fatal error" msgstr "git-gui: 致命错误" -#: git-gui.sh:565 +#: git-gui.sh:593 #, tcl-format msgid "Invalid font specified in %s:" msgstr "%s ä¸æŒ‡å®šçš„å—ä½“æ— æ•ˆ:" -#: git-gui.sh:590 +#: git-gui.sh:620 msgid "Main Font" msgstr "主è¦å—体" -#: git-gui.sh:591 +#: git-gui.sh:621 msgid "Diff/Console Font" msgstr "Diff/控制终端å—体" -#: git-gui.sh:605 +#: git-gui.sh:635 msgid "Cannot find git in PATH." msgstr "PATH ä¸æ²¡æœ‰æ‰¾åˆ° git" -#: git-gui.sh:632 +#: git-gui.sh:662 msgid "Cannot parse Git version string:" msgstr "æ— æ³•è§£æž Git 的版本信æ¯:" -#: git-gui.sh:650 +#: git-gui.sh:680 #, tcl-format msgid "" "Git version cannot be determined.\n" @@ -78,79 +78,79 @@ msgstr "" "\n" "是å¦å‡å®š '%s' 为版本 1.5.0?\n" -#: git-gui.sh:888 +#: git-gui.sh:918 msgid "Git directory not found:" msgstr "Git ç›®å½•æ— æ³•æ‰¾åˆ°:" -#: git-gui.sh:895 +#: git-gui.sh:925 msgid "Cannot move to top of working directory:" msgstr "æ— æ³•ç§»åŠ¨åˆ°å·¥ä½œæ ¹ç›®å½•:" -#: git-gui.sh:902 +#: git-gui.sh:932 msgid "Cannot use funny .git directory:" msgstr "æ— æ³•ä½¿ç”¨ .git 目录:" -#: git-gui.sh:907 +#: git-gui.sh:937 msgid "No working directory" msgstr "没有工作目录" -#: git-gui.sh:1054 +#: git-gui.sh:1084 lib/checkout_op.tcl:283 msgid "Refreshing file status..." msgstr "更新文件状æ€..." -#: git-gui.sh:1119 +#: git-gui.sh:1149 msgid "Scanning for modified files ..." msgstr "扫æ修改过的文件 ..." -#: git-gui.sh:1294 lib/browser.tcl:245 +#: git-gui.sh:1324 lib/browser.tcl:246 msgid "Ready." msgstr "就绪" -#: git-gui.sh:1560 +#: git-gui.sh:1590 msgid "Unmodified" msgstr "未修改" -#: git-gui.sh:1562 +#: git-gui.sh:1592 msgid "Modified, not staged" msgstr "修改但未缓å˜" -#: git-gui.sh:1563 git-gui.sh:1568 +#: git-gui.sh:1593 git-gui.sh:1598 msgid "Staged for commit" msgstr "缓å˜ä¸ºæ交" -#: git-gui.sh:1564 git-gui.sh:1569 +#: git-gui.sh:1594 git-gui.sh:1599 msgid "Portions staged for commit" msgstr "部分缓å˜ä¸ºæ交" -#: git-gui.sh:1565 git-gui.sh:1570 +#: git-gui.sh:1595 git-gui.sh:1600 msgid "Staged for commit, missing" msgstr "缓å˜ä¸ºæ交, ä¸å˜åœ¨" -#: git-gui.sh:1567 +#: git-gui.sh:1597 msgid "Untracked, not staged" msgstr "未跟踪, 未缓å˜" -#: git-gui.sh:1572 +#: git-gui.sh:1602 msgid "Missing" msgstr "ä¸å˜åœ¨" -#: git-gui.sh:1573 +#: git-gui.sh:1603 msgid "Staged for removal" msgstr "缓å˜ä¸ºåˆ 除" -#: git-gui.sh:1574 +#: git-gui.sh:1604 msgid "Staged for removal, still present" msgstr "缓å˜ä¸ºåˆ 除, 但ä»å˜åœ¨" -#: git-gui.sh:1576 git-gui.sh:1577 git-gui.sh:1578 git-gui.sh:1579 +#: git-gui.sh:1606 git-gui.sh:1607 git-gui.sh:1608 git-gui.sh:1609 msgid "Requires merge resolution" msgstr "需è¦è§£å†³åˆå¹¶å†²çª" -#: git-gui.sh:1614 +#: git-gui.sh:1644 msgid "Starting gitk... please wait..." msgstr "å¯åŠ¨ gitk... 请ç‰å¾…..." -#: git-gui.sh:1623 +#: git-gui.sh:1653 #, tcl-format msgid "" "Unable to start gitk:\n" @@ -161,295 +161,295 @@ msgstr "" "\n" "%s ä¸å˜åœ¨" -#: git-gui.sh:1823 lib/choose_repository.tcl:35 +#: git-gui.sh:1860 lib/choose_repository.tcl:36 msgid "Repository" msgstr "版本库(repository)" -#: git-gui.sh:1824 +#: git-gui.sh:1861 msgid "Edit" msgstr "编辑" -#: git-gui.sh:1826 lib/choose_rev.tcl:560 +#: git-gui.sh:1863 lib/choose_rev.tcl:561 msgid "Branch" msgstr "分支(branch)" -#: git-gui.sh:1829 lib/choose_rev.tcl:547 +#: git-gui.sh:1866 lib/choose_rev.tcl:548 msgid "Commit@@noun" msgstr "æ交(commit)" -#: git-gui.sh:1832 lib/merge.tcl:121 lib/merge.tcl:150 lib/merge.tcl:168 +#: git-gui.sh:1869 lib/merge.tcl:120 lib/merge.tcl:149 lib/merge.tcl:167 msgid "Merge" msgstr "åˆå¹¶(merge)" -#: git-gui.sh:1833 lib/choose_rev.tcl:556 +#: git-gui.sh:1870 lib/choose_rev.tcl:557 msgid "Remote" msgstr "远端(remote)" -#: git-gui.sh:1842 +#: git-gui.sh:1879 msgid "Browse Current Branch's Files" msgstr "æµè§ˆå½“å‰åˆ†æ”¯ä¸Šçš„文件" -#: git-gui.sh:1846 +#: git-gui.sh:1883 msgid "Browse Branch Files..." msgstr "æµè§ˆåˆ†æ”¯ä¸Šçš„文件..." -#: git-gui.sh:1851 +#: git-gui.sh:1888 msgid "Visualize Current Branch's History" msgstr "图示当å‰åˆ†æ”¯çš„历å²" -#: git-gui.sh:1855 +#: git-gui.sh:1892 msgid "Visualize All Branch History" msgstr "图示所有分支的历å²" -#: git-gui.sh:1862 +#: git-gui.sh:1899 #, tcl-format msgid "Browse %s's Files" msgstr "æµè§ˆ %s 上的文件" -#: git-gui.sh:1864 +#: git-gui.sh:1901 #, tcl-format msgid "Visualize %s's History" msgstr "图示 %s 分支的历å²" -#: git-gui.sh:1869 lib/database.tcl:27 lib/database.tcl:67 +#: git-gui.sh:1906 lib/database.tcl:27 lib/database.tcl:67 msgid "Database Statistics" msgstr "æ•°æ®åº“统计信æ¯" -#: git-gui.sh:1872 lib/database.tcl:34 +#: git-gui.sh:1909 lib/database.tcl:34 msgid "Compress Database" msgstr "压缩数æ®åº“" -#: git-gui.sh:1875 +#: git-gui.sh:1912 msgid "Verify Database" msgstr "验è¯æ•°æ®åº“" -#: git-gui.sh:1882 git-gui.sh:1886 git-gui.sh:1890 lib/shortcut.tcl:7 +#: git-gui.sh:1919 git-gui.sh:1923 git-gui.sh:1927 lib/shortcut.tcl:7 #: lib/shortcut.tcl:39 lib/shortcut.tcl:71 msgid "Create Desktop Icon" msgstr "创建桌é¢å›¾æ ‡" -#: git-gui.sh:1895 lib/choose_repository.tcl:176 lib/choose_repository.tcl:184 +#: git-gui.sh:1932 lib/choose_repository.tcl:177 lib/choose_repository.tcl:185 msgid "Quit" msgstr "退出" -#: git-gui.sh:1902 +#: git-gui.sh:1939 msgid "Undo" msgstr "撤销" -#: git-gui.sh:1905 +#: git-gui.sh:1942 msgid "Redo" msgstr "é‡åš" -#: git-gui.sh:1909 git-gui.sh:2403 +#: git-gui.sh:1946 git-gui.sh:2443 msgid "Cut" msgstr "剪切" -#: git-gui.sh:1912 git-gui.sh:2406 git-gui.sh:2477 git-gui.sh:2549 -#: lib/console.tcl:67 +#: git-gui.sh:1949 git-gui.sh:2446 git-gui.sh:2520 git-gui.sh:2614 +#: lib/console.tcl:69 msgid "Copy" msgstr "å¤åˆ¶" -#: git-gui.sh:1915 git-gui.sh:2409 +#: git-gui.sh:1952 git-gui.sh:2449 msgid "Paste" msgstr "粘贴" -#: git-gui.sh:1918 git-gui.sh:2412 lib/branch_delete.tcl:26 +#: git-gui.sh:1955 git-gui.sh:2452 lib/branch_delete.tcl:26 #: lib/remote_branch_delete.tcl:38 msgid "Delete" msgstr "åˆ é™¤" -#: git-gui.sh:1922 git-gui.sh:2416 git-gui.sh:2553 lib/console.tcl:69 +#: git-gui.sh:1959 git-gui.sh:2456 git-gui.sh:2618 lib/console.tcl:71 msgid "Select All" msgstr "全选" -#: git-gui.sh:1931 +#: git-gui.sh:1968 msgid "Create..." msgstr "新建..." -#: git-gui.sh:1937 +#: git-gui.sh:1974 msgid "Checkout..." msgstr "Checkout..." -#: git-gui.sh:1943 +#: git-gui.sh:1980 msgid "Rename..." msgstr "æ›´å..." -#: git-gui.sh:1948 git-gui.sh:2048 +#: git-gui.sh:1985 git-gui.sh:2085 msgid "Delete..." msgstr "åˆ é™¤..." -#: git-gui.sh:1953 +#: git-gui.sh:1990 msgid "Reset..." msgstr "å¤ä½(Reset)..." -#: git-gui.sh:1965 git-gui.sh:2350 +#: git-gui.sh:2002 git-gui.sh:2389 msgid "New Commit" msgstr "新建æ交" -#: git-gui.sh:1973 git-gui.sh:2357 +#: git-gui.sh:2010 git-gui.sh:2396 msgid "Amend Last Commit" msgstr "ä¿®æ£ä¸Šæ¬¡æ交" -#: git-gui.sh:1982 git-gui.sh:2317 lib/remote_branch_delete.tcl:99 +#: git-gui.sh:2019 git-gui.sh:2356 lib/remote_branch_delete.tcl:99 msgid "Rescan" msgstr "é‡æ–°æ‰«æ" -#: git-gui.sh:1988 +#: git-gui.sh:2025 msgid "Stage To Commit" msgstr "缓å˜ä¸ºæ交" -#: git-gui.sh:1994 +#: git-gui.sh:2031 msgid "Stage Changed Files To Commit" msgstr "缓å˜ä¿®æ”¹çš„文件为æ交" -#: git-gui.sh:2000 +#: git-gui.sh:2037 msgid "Unstage From Commit" msgstr "从本次æ交撤除" -#: git-gui.sh:2005 lib/index.tcl:393 +#: git-gui.sh:2042 lib/index.tcl:395 msgid "Revert Changes" msgstr "撤销修改" -#: git-gui.sh:2012 git-gui.sh:2329 git-gui.sh:2427 +#: git-gui.sh:2049 git-gui.sh:2368 git-gui.sh:2467 msgid "Sign Off" msgstr "ç¾å(Sign Off)" -#: git-gui.sh:2016 git-gui.sh:2333 +#: git-gui.sh:2053 git-gui.sh:2372 msgid "Commit@@verb" msgstr "æ交" -#: git-gui.sh:2027 +#: git-gui.sh:2064 msgid "Local Merge..." msgstr "本地åˆå¹¶..." -#: git-gui.sh:2032 +#: git-gui.sh:2069 msgid "Abort Merge..." msgstr "ä¸æ¢åˆå¹¶..." -#: git-gui.sh:2044 +#: git-gui.sh:2081 msgid "Push..." msgstr "ä¸Šä¼ ..." -#: git-gui.sh:2055 lib/choose_repository.tcl:40 +#: git-gui.sh:2092 lib/choose_repository.tcl:41 msgid "Apple" msgstr "苹果" -#: git-gui.sh:2058 git-gui.sh:2080 lib/about.tcl:13 -#: lib/choose_repository.tcl:43 lib/choose_repository.tcl:49 +#: git-gui.sh:2095 git-gui.sh:2117 lib/about.tcl:14 +#: lib/choose_repository.tcl:44 lib/choose_repository.tcl:50 #, tcl-format msgid "About %s" msgstr "关于 %s" -#: git-gui.sh:2062 +#: git-gui.sh:2099 msgid "Preferences..." msgstr "首选项..." -#: git-gui.sh:2070 git-gui.sh:2595 +#: git-gui.sh:2107 git-gui.sh:2639 msgid "Options..." msgstr "选项..." -#: git-gui.sh:2076 lib/choose_repository.tcl:46 +#: git-gui.sh:2113 lib/choose_repository.tcl:47 msgid "Help" msgstr "帮助" -#: git-gui.sh:2117 +#: git-gui.sh:2154 msgid "Online Documentation" msgstr "在线文档" -#: git-gui.sh:2201 +#: git-gui.sh:2238 #, tcl-format msgid "fatal: cannot stat path %s: No such file or directory" msgstr "致命错误: æ— æ³•èŽ·å–路径 %s çš„ä¿¡æ¯: 该文件或目录ä¸å˜åœ¨" -#: git-gui.sh:2234 +#: git-gui.sh:2271 msgid "Current Branch:" msgstr "当å‰åˆ†æ”¯:" -#: git-gui.sh:2255 +#: git-gui.sh:2292 msgid "Staged Changes (Will Commit)" msgstr "已缓å˜çš„改动 (将被æ交)" -#: git-gui.sh:2274 +#: git-gui.sh:2312 msgid "Unstaged Changes" msgstr "未缓å˜çš„改动" -#: git-gui.sh:2323 +#: git-gui.sh:2362 msgid "Stage Changed" msgstr "缓å˜æ”¹åŠ¨" -#: git-gui.sh:2339 lib/transport.tcl:93 lib/transport.tcl:182 +#: git-gui.sh:2378 lib/transport.tcl:93 lib/transport.tcl:182 msgid "Push" msgstr "ä¸Šä¼ " -#: git-gui.sh:2369 +#: git-gui.sh:2408 msgid "Initial Commit Message:" msgstr "åˆå§‹çš„æ交æè¿°:" -#: git-gui.sh:2370 +#: git-gui.sh:2409 msgid "Amended Commit Message:" msgstr "ä¿®æ£çš„æ交æè¿°:" -#: git-gui.sh:2371 +#: git-gui.sh:2410 msgid "Amended Initial Commit Message:" msgstr "ä¿®æ£çš„åˆå§‹æ交æè¿°:" -#: git-gui.sh:2372 +#: git-gui.sh:2411 msgid "Amended Merge Commit Message:" msgstr "ä¿®æ£çš„åˆå¹¶æ交æè¿°:" -#: git-gui.sh:2373 +#: git-gui.sh:2412 msgid "Merge Commit Message:" msgstr "åˆå¹¶æ交æè¿°:" -#: git-gui.sh:2374 +#: git-gui.sh:2413 msgid "Commit Message:" msgstr "æ交æè¿°:" -#: git-gui.sh:2419 git-gui.sh:2557 lib/console.tcl:71 +#: git-gui.sh:2459 git-gui.sh:2622 lib/console.tcl:73 msgid "Copy All" msgstr "全部å¤åˆ¶" -#: git-gui.sh:2443 lib/blame.tcl:104 +#: git-gui.sh:2483 lib/blame.tcl:107 msgid "File:" msgstr "文件:" -#: git-gui.sh:2545 -msgid "Refresh" -msgstr "刷新" - -#: git-gui.sh:2566 +#: git-gui.sh:2589 msgid "Apply/Reverse Hunk" msgstr "应用/撤消æ¤ä¿®æ”¹å—" -#: git-gui.sh:2572 -msgid "Decrease Font Size" -msgstr "缩å°å—体" - -#: git-gui.sh:2576 -msgid "Increase Font Size" -msgstr "放大å—体" - -#: git-gui.sh:2581 +#: git-gui.sh:2595 msgid "Show Less Context" msgstr "显示更少上下文" -#: git-gui.sh:2588 +#: git-gui.sh:2602 msgid "Show More Context" msgstr "显示更多上下文" -#: git-gui.sh:2602 +#: git-gui.sh:2610 +msgid "Refresh" +msgstr "刷新" + +#: git-gui.sh:2631 +msgid "Decrease Font Size" +msgstr "缩å°å—体" + +#: git-gui.sh:2635 +msgid "Increase Font Size" +msgstr "放大å—体" + +#: git-gui.sh:2646 msgid "Unstage Hunk From Commit" msgstr "从æ交ä¸æ’¤é™¤ä¿®æ”¹å—" -#: git-gui.sh:2604 +#: git-gui.sh:2648 msgid "Stage Hunk For Commit" msgstr "缓å˜ä¿®æ”¹å—为æ交" -#: git-gui.sh:2623 +#: git-gui.sh:2667 msgid "Initializing..." msgstr "åˆå§‹åŒ–..." -#: git-gui.sh:2718 +#: git-gui.sh:2762 #, tcl-format msgid "" "Possible environment issues exist.\n" @@ -464,7 +464,7 @@ msgstr "" "ç”± %s 执行的 Git å进程å¯èƒ½å¿½ç•¥ä¸‹åˆ—环境å˜é‡:\n" "\n" -#: git-gui.sh:2748 +#: git-gui.sh:2792 msgid "" "\n" "This is due to a known issue with the\n" @@ -474,7 +474,7 @@ msgstr "" "这是由 Cygwin å‘布的 Tcl 代ç ä¸ä¸€ä¸ª\n" "已知问题所引起." -#: git-gui.sh:2753 +#: git-gui.sh:2797 #, tcl-format msgid "" "\n" @@ -489,7 +489,7 @@ msgstr "" "%s 的一个很好的替代方案是将 user.name 以åŠ\n" "user.email è®¾ç½®æ”¾åœ¨ä½ çš„ä¸ªäºº ~/.gitconfig 文件ä¸.\n" -#: lib/about.tcl:25 +#: lib/about.tcl:26 msgid "git-gui - a graphical user interface for Git." msgstr "git-gui - Git 的图形化用户界é¢" @@ -501,56 +501,56 @@ msgstr "文件查看器" msgid "Commit:" msgstr "æ交:" -#: lib/blame.tcl:249 +#: lib/blame.tcl:264 msgid "Copy Commit" msgstr "å¤åˆ¶æ交" -#: lib/blame.tcl:369 +#: lib/blame.tcl:384 #, tcl-format msgid "Reading %s..." msgstr "è¯»å– %s..." -#: lib/blame.tcl:473 +#: lib/blame.tcl:488 msgid "Loading copy/move tracking annotations..." msgstr "装载å¤åˆ¶/ç§»åŠ¨è·Ÿè¸ªæ ‡æ³¨..." -#: lib/blame.tcl:493 +#: lib/blame.tcl:508 msgid "lines annotated" msgstr "æ ‡æ³¨è¡Œ" -#: lib/blame.tcl:674 +#: lib/blame.tcl:689 msgid "Loading original location annotations..." msgstr "装载原始ä½ç½®æ ‡æ³¨..." -#: lib/blame.tcl:677 +#: lib/blame.tcl:692 msgid "Annotation complete." msgstr "æ ‡æ³¨å®Œæˆ." -#: lib/blame.tcl:731 +#: lib/blame.tcl:746 msgid "Loading annotation..." msgstr "è£è¼‰æ ‡æ³¨..." -#: lib/blame.tcl:787 +#: lib/blame.tcl:802 msgid "Author:" msgstr "作者:" -#: lib/blame.tcl:791 +#: lib/blame.tcl:806 msgid "Committer:" msgstr "æ交者:" -#: lib/blame.tcl:796 +#: lib/blame.tcl:811 msgid "Original File:" msgstr "原始文件:" -#: lib/blame.tcl:910 +#: lib/blame.tcl:925 msgid "Originally By:" msgstr "最åˆç”±:" -#: lib/blame.tcl:916 +#: lib/blame.tcl:931 msgid "In File:" msgstr "在文件:" -#: lib/blame.tcl:921 +#: lib/blame.tcl:936 msgid "Copied Or Moved Here By:" msgstr "ç”±å¤åˆ¶æˆ–移动至æ¤:" @@ -563,17 +563,17 @@ msgid "Checkout" msgstr "Checkout" #: lib/branch_checkout.tcl:27 lib/branch_create.tcl:35 -#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:281 -#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:172 -#: lib/option.tcl:90 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 +#: lib/branch_delete.tcl:32 lib/branch_rename.tcl:30 lib/browser.tcl:282 +#: lib/checkout_op.tcl:522 lib/choose_font.tcl:43 lib/merge.tcl:171 +#: lib/option.tcl:103 lib/remote_branch_delete.tcl:42 lib/transport.tcl:97 msgid "Cancel" msgstr "å–消" -#: lib/branch_checkout.tcl:32 lib/browser.tcl:286 +#: lib/branch_checkout.tcl:32 lib/browser.tcl:287 msgid "Revision" msgstr "版本" -#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:202 +#: lib/branch_checkout.tcl:36 lib/branch_create.tcl:69 lib/option.tcl:242 msgid "Options" msgstr "选项..." @@ -593,7 +593,7 @@ msgstr "创建分支" msgid "Create New Branch" msgstr "新建分支" -#: lib/branch_create.tcl:31 lib/choose_repository.tcl:375 +#: lib/branch_create.tcl:31 lib/choose_repository.tcl:371 msgid "Create" msgstr "新建" @@ -733,22 +733,22 @@ msgstr "开始..." msgid "File Browser" msgstr "文件æµè§ˆå™¨" -#: lib/browser.tcl:125 lib/browser.tcl:142 +#: lib/browser.tcl:126 lib/browser.tcl:143 #, tcl-format msgid "Loading %s..." msgstr "装载 %s..." -#: lib/browser.tcl:186 +#: lib/browser.tcl:187 msgid "[Up To Parent]" msgstr "[上层目录]" -#: lib/browser.tcl:266 lib/browser.tcl:272 +#: lib/browser.tcl:267 lib/browser.tcl:273 msgid "Browse Branch Files" msgstr "æµè§ˆåˆ†æ”¯æ–‡ä»¶" -#: lib/browser.tcl:277 lib/choose_repository.tcl:391 -#: lib/choose_repository.tcl:482 lib/choose_repository.tcl:492 -#: lib/choose_repository.tcl:989 +#: lib/browser.tcl:278 lib/choose_repository.tcl:387 +#: lib/choose_repository.tcl:474 lib/choose_repository.tcl:484 +#: lib/choose_repository.tcl:987 msgid "Browse" msgstr "æµè§ˆ" @@ -762,7 +762,7 @@ msgstr "èŽ·å– %s 自 %s" msgid "fatal: Cannot resolve %s" msgstr "致命错误: æ— æ³•è§£å†³ %s" -#: lib/checkout_op.tcl:140 lib/console.tcl:79 lib/database.tcl:31 +#: lib/checkout_op.tcl:140 lib/console.tcl:81 lib/database.tcl:31 msgid "Close" msgstr "å…³é—" @@ -819,6 +819,10 @@ msgstr "" msgid "Updating working directory to '%s'..." msgstr "更新工作目录到 '%s'..." +#: lib/checkout_op.tcl:323 +msgid "files checked out" +msgstr "" + #: lib/checkout_op.tcl:353 #, tcl-format msgid "Aborted checkout of '%s' (file level merging is required)." @@ -844,7 +848,7 @@ msgstr "" "\n" "å¦‚æžœä½ æƒ³ä½äºŽæŸåˆ†æ”¯ä¸Š, 从当å‰è„±èŠ‚çš„Checkoutä¸åˆ›å»ºä¸€ä¸ªæ–°åˆ†æ”¯." -#: lib/checkout_op.tcl:446 +#: lib/checkout_op.tcl:446 lib/checkout_op.tcl:450 #, tcl-format msgid "Checked out '%s'." msgstr "'%s' 已被 checkout" @@ -863,7 +867,7 @@ msgstr "æ¢å¤ä¸¢å¤±çš„æ交是比较困难的." msgid "Reset '%s'?" msgstr "å¤ä½ '%s'?" -#: lib/checkout_op.tcl:510 lib/merge.tcl:164 +#: lib/checkout_op.tcl:510 lib/merge.tcl:163 msgid "Visualize" msgstr "图示" @@ -892,15 +896,15 @@ msgstr "选择" msgid "Font Family" msgstr "å—体æ—" -#: lib/choose_font.tcl:73 +#: lib/choose_font.tcl:74 msgid "Font Size" msgstr "å—体大å°" -#: lib/choose_font.tcl:90 +#: lib/choose_font.tcl:91 msgid "Font Example" msgstr "å—ä½“æ ·ä¾‹" -#: lib/choose_font.tcl:101 +#: lib/choose_font.tcl:103 msgid "" "This is example text.\n" "If you like this text, it can be your font." @@ -908,226 +912,226 @@ msgstr "" "è¿™æ˜¯æ ·ä¾‹æ–‡æœ¬.\n" "å¦‚æžœä½ å–œæ¬¢, ä½ å¯ä»¥è®¾ç½®è¯¥å—体." -#: lib/choose_repository.tcl:27 +#: lib/choose_repository.tcl:28 msgid "Git Gui" msgstr "Git Gui" -#: lib/choose_repository.tcl:80 lib/choose_repository.tcl:380 +#: lib/choose_repository.tcl:81 lib/choose_repository.tcl:376 msgid "Create New Repository" msgstr "创建新的版本库" -#: lib/choose_repository.tcl:86 +#: lib/choose_repository.tcl:87 msgid "New..." msgstr "新建..." -#: lib/choose_repository.tcl:93 lib/choose_repository.tcl:468 +#: lib/choose_repository.tcl:94 lib/choose_repository.tcl:460 msgid "Clone Existing Repository" msgstr "克隆已有版本库" -#: lib/choose_repository.tcl:99 +#: lib/choose_repository.tcl:100 msgid "Clone..." msgstr "克隆..." -#: lib/choose_repository.tcl:106 lib/choose_repository.tcl:978 +#: lib/choose_repository.tcl:107 lib/choose_repository.tcl:976 msgid "Open Existing Repository" msgstr "打开已有版本库" -#: lib/choose_repository.tcl:112 +#: lib/choose_repository.tcl:113 msgid "Open..." msgstr "打开..." -#: lib/choose_repository.tcl:125 +#: lib/choose_repository.tcl:126 msgid "Recent Repositories" msgstr "最近版本库" -#: lib/choose_repository.tcl:131 +#: lib/choose_repository.tcl:132 msgid "Open Recent Repository:" msgstr "打开最近版本库" -#: lib/choose_repository.tcl:294 -#, tcl-format -msgid "Location %s already exists." -msgstr "ä½ç½® %s å·²ç»å˜åœ¨." - -#: lib/choose_repository.tcl:300 lib/choose_repository.tcl:307 -#: lib/choose_repository.tcl:314 +#: lib/choose_repository.tcl:296 lib/choose_repository.tcl:303 +#: lib/choose_repository.tcl:310 #, tcl-format msgid "Failed to create repository %s:" msgstr "æ— æ³•åˆ›å»ºç‰ˆæœ¬åº“ %s:" -#: lib/choose_repository.tcl:385 lib/choose_repository.tcl:486 +#: lib/choose_repository.tcl:381 lib/choose_repository.tcl:478 msgid "Directory:" msgstr "目录:" -#: lib/choose_repository.tcl:415 lib/choose_repository.tcl:544 -#: lib/choose_repository.tcl:1013 +#: lib/choose_repository.tcl:412 lib/choose_repository.tcl:537 +#: lib/choose_repository.tcl:1011 msgid "Git Repository" msgstr "Git 版本库" -#: lib/choose_repository.tcl:430 lib/choose_repository.tcl:437 +#: lib/choose_repository.tcl:437 #, tcl-format msgid "Directory %s already exists." msgstr "目录 %s å·²ç»å˜åœ¨." -#: lib/choose_repository.tcl:442 +#: lib/choose_repository.tcl:441 #, tcl-format msgid "File %s already exists." msgstr "文件 %s å·²ç»å˜åœ¨." -#: lib/choose_repository.tcl:463 +#: lib/choose_repository.tcl:455 msgid "Clone" msgstr "克隆" -#: lib/choose_repository.tcl:476 +#: lib/choose_repository.tcl:468 msgid "URL:" msgstr "URL:" -#: lib/choose_repository.tcl:496 +#: lib/choose_repository.tcl:489 msgid "Clone Type:" msgstr "克隆类型:" -#: lib/choose_repository.tcl:502 +#: lib/choose_repository.tcl:495 msgid "Standard (Fast, Semi-Redundant, Hardlinks)" msgstr "æ ‡å‡†æ–¹å¼ (快速, 部分备份, 作硬连接)" -#: lib/choose_repository.tcl:508 +#: lib/choose_repository.tcl:501 msgid "Full Copy (Slower, Redundant Backup)" msgstr "全部å¤åˆ¶ (较慢, åšå¤‡ä»½)" -#: lib/choose_repository.tcl:514 +#: lib/choose_repository.tcl:507 msgid "Shared (Fastest, Not Recommended, No Backup)" msgstr "å…±äº«æ–¹å¼ (最快, ä¸æŽ¨è, ä¸åšå¤‡ä»½)" -#: lib/choose_repository.tcl:550 lib/choose_repository.tcl:597 -#: lib/choose_repository.tcl:738 lib/choose_repository.tcl:808 -#: lib/choose_repository.tcl:1019 lib/choose_repository.tcl:1027 +#: lib/choose_repository.tcl:543 lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:736 lib/choose_repository.tcl:806 +#: lib/choose_repository.tcl:1017 lib/choose_repository.tcl:1025 #, tcl-format msgid "Not a Git repository: %s" msgstr "ä¸æ˜¯ä¸€ä¸ª Git 版本库: %s" -#: lib/choose_repository.tcl:586 +#: lib/choose_repository.tcl:579 msgid "Standard only available for local repository." msgstr "æ ‡å‡†æ–¹å¼ä»…当是本地版本库时有效." -#: lib/choose_repository.tcl:590 +#: lib/choose_repository.tcl:583 msgid "Shared only available for local repository." msgstr "共享方å¼ä»…当是本地版本库时有效." -#: lib/choose_repository.tcl:617 +#: lib/choose_repository.tcl:604 +#, tcl-format +msgid "Location %s already exists." +msgstr "ä½ç½® %s å·²ç»å˜åœ¨." + +#: lib/choose_repository.tcl:615 msgid "Failed to configure origin" msgstr "æ— æ³•é…ç½® origin" -#: lib/choose_repository.tcl:629 +#: lib/choose_repository.tcl:627 msgid "Counting objects" msgstr "清点对象" -#: lib/choose_repository.tcl:630 +#: lib/choose_repository.tcl:628 #, fuzzy msgid "buckets" msgstr "水桶??" -#: lib/choose_repository.tcl:654 +#: lib/choose_repository.tcl:652 #, tcl-format msgid "Unable to copy objects/info/alternates: %s" msgstr "æ— æ³•å¤åˆ¶ objects/info/alternates: %s" -#: lib/choose_repository.tcl:690 +#: lib/choose_repository.tcl:688 #, tcl-format msgid "Nothing to clone from %s." msgstr "没有东西å¯ä»Ž %s 克隆." -#: lib/choose_repository.tcl:692 lib/choose_repository.tcl:906 -#: lib/choose_repository.tcl:918 +#: lib/choose_repository.tcl:690 lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:916 msgid "The 'master' branch has not been initialized." msgstr "'master'分支尚未åˆå§‹åŒ–." -#: lib/choose_repository.tcl:705 +#: lib/choose_repository.tcl:703 msgid "Hardlinks are unavailable. Falling back to copying." msgstr "硬连接ä¸å¯ç”¨. 使用å¤åˆ¶." -#: lib/choose_repository.tcl:717 +#: lib/choose_repository.tcl:715 #, tcl-format msgid "Cloning from %s" msgstr "从 %s 克隆" -#: lib/choose_repository.tcl:748 +#: lib/choose_repository.tcl:746 msgid "Copying objects" msgstr "å¤åˆ¶ objects" -#: lib/choose_repository.tcl:749 +#: lib/choose_repository.tcl:747 msgid "KiB" msgstr "KiB" -#: lib/choose_repository.tcl:773 +#: lib/choose_repository.tcl:771 #, tcl-format msgid "Unable to copy object: %s" msgstr "æ— æ³•å¤åˆ¶ object: %s" -#: lib/choose_repository.tcl:783 +#: lib/choose_repository.tcl:781 msgid "Linking objects" msgstr "链接 objects" -#: lib/choose_repository.tcl:784 +#: lib/choose_repository.tcl:782 msgid "objects" msgstr "objects" -#: lib/choose_repository.tcl:792 +#: lib/choose_repository.tcl:790 #, tcl-format msgid "Unable to hardlink object: %s" msgstr "æ— æ³•ç¡¬é“¾æŽ¥ object: %s" -#: lib/choose_repository.tcl:847 +#: lib/choose_repository.tcl:845 msgid "Cannot fetch branches and objects. See console output for details." msgstr "æ— æ³•èŽ·å–分支和对象. 请查看控制终端的输出." -#: lib/choose_repository.tcl:858 +#: lib/choose_repository.tcl:856 msgid "Cannot fetch tags. See console output for details." msgstr "æ— æ³•èŽ·å–æ ‡ç¾. 请查看控制终端的输出." -#: lib/choose_repository.tcl:882 +#: lib/choose_repository.tcl:880 msgid "Cannot determine HEAD. See console output for details." msgstr "æ— æ³•ç¡®å®š HEAD. 请查看控制终端的输出." -#: lib/choose_repository.tcl:891 +#: lib/choose_repository.tcl:889 #, tcl-format msgid "Unable to cleanup %s" msgstr "æ— æ³•æ¸…ç† %s" -#: lib/choose_repository.tcl:897 +#: lib/choose_repository.tcl:895 msgid "Clone failed." msgstr "克隆失败." -#: lib/choose_repository.tcl:904 +#: lib/choose_repository.tcl:902 msgid "No default branch obtained." msgstr "没有获å–缺çœåˆ†æ”¯" -#: lib/choose_repository.tcl:915 +#: lib/choose_repository.tcl:913 #, tcl-format msgid "Cannot resolve %s as a commit." msgstr "æ— æ³•è§£æž %s 为æ交." -#: lib/choose_repository.tcl:927 +#: lib/choose_repository.tcl:925 msgid "Creating working directory" msgstr "创建工作目录" -#: lib/choose_repository.tcl:928 lib/index.tcl:65 lib/index.tcl:127 +#: lib/choose_repository.tcl:926 lib/index.tcl:65 lib/index.tcl:127 #: lib/index.tcl:193 msgid "files" msgstr "文件" -#: lib/choose_repository.tcl:957 +#: lib/choose_repository.tcl:955 msgid "Initial file checkout failed." msgstr "åˆå§‹çš„文件checkout失败" -#: lib/choose_repository.tcl:973 +#: lib/choose_repository.tcl:971 msgid "Open" msgstr "打开" -#: lib/choose_repository.tcl:983 +#: lib/choose_repository.tcl:981 msgid "Repository:" msgstr "版本库" -#: lib/choose_repository.tcl:1033 +#: lib/choose_repository.tcl:1031 #, tcl-format msgid "Failed to open repository %s:" msgstr "æ— æ³•æ‰“å¼€ç‰ˆæœ¬åº“ %s:" @@ -1148,7 +1152,7 @@ msgstr "本地分支" msgid "Tracking Branch" msgstr "跟踪分支:" -#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:537 +#: lib/choose_rev.tcl:84 lib/choose_rev.tcl:538 msgid "Tag" msgstr "æ ‡ç¾" @@ -1165,11 +1169,11 @@ msgstr "没有选择版本." msgid "Revision expression is empty." msgstr "版本表达å¼ä¸ºç©º." -#: lib/choose_rev.tcl:530 +#: lib/choose_rev.tcl:531 msgid "Updated" msgstr "已更新" -#: lib/choose_rev.tcl:558 +#: lib/choose_rev.tcl:559 msgid "URL" msgstr "URL" @@ -1276,16 +1280,46 @@ msgstr "" "- 第二行: 空行\n" "- 剩余行: 请æè¿°ä¸ºä»€ä¹ˆä½ åšçš„这些改动是好的.\n" -#: lib/commit.tcl:257 +#: lib/commit.tcl:207 +#, tcl-format +msgid "warning: Tcl does not support encoding '%s'." +msgstr "è¦å‘Š: Tcl ä¸æ”¯æŒç¼–ç æ–¹å¼ '%s'." + +#: lib/commit.tcl:221 +msgid "Calling pre-commit hook..." +msgstr "" + +#: lib/commit.tcl:236 +msgid "Commit declined by pre-commit hook." +msgstr "" + +#: lib/commit.tcl:259 +msgid "Calling commit-msg hook..." +msgstr "" + +#: lib/commit.tcl:274 +msgid "Commit declined by commit-msg hook." +msgstr "" + +#: lib/commit.tcl:287 +msgid "Committing changes..." +msgstr "" + +#: lib/commit.tcl:303 msgid "write-tree failed:" msgstr "write-tree 失败:" -#: lib/commit.tcl:275 +#: lib/commit.tcl:304 lib/commit.tcl:348 lib/commit.tcl:368 +#, fuzzy +msgid "Commit failed." +msgstr "克隆失败." + +#: lib/commit.tcl:321 #, tcl-format msgid "Commit %s appears to be corrupt" msgstr "æ交 %s 似乎已æŸå" -#: lib/commit.tcl:279 +#: lib/commit.tcl:326 msgid "" "No changes to commit.\n" "\n" @@ -1299,37 +1333,32 @@ msgstr "" "\n" "é‡æ–°æ‰«æ将自动开始.\n" -#: lib/commit.tcl:286 +#: lib/commit.tcl:333 msgid "No changes to commit." msgstr "没有改动è¦æ交." -#: lib/commit.tcl:303 -#, tcl-format -msgid "warning: Tcl does not support encoding '%s'." -msgstr "è¦å‘Š: Tcl ä¸æ”¯æŒç¼–ç æ–¹å¼ '%s'." - -#: lib/commit.tcl:317 +#: lib/commit.tcl:347 msgid "commit-tree failed:" msgstr "commit-tree 失败:" -#: lib/commit.tcl:339 +#: lib/commit.tcl:367 msgid "update-ref failed:" msgstr "update-ref 失败:" -#: lib/commit.tcl:430 +#: lib/commit.tcl:454 #, tcl-format msgid "Created commit %s: %s" msgstr "创建了 commit %s: %s" -#: lib/console.tcl:57 +#: lib/console.tcl:59 msgid "Working... please wait..." msgstr "工作ä¸... 请ç‰å¾…..." -#: lib/console.tcl:183 +#: lib/console.tcl:186 msgid "Success" msgstr "æˆåŠŸ" -#: lib/console.tcl:196 +#: lib/console.tcl:200 msgid "Error: Command Failed" msgstr "错误: 命令失败" @@ -1435,23 +1464,23 @@ msgstr "* 二进制文件 (ä¸æ˜¾ç¤ºå†…容)." msgid "Error loading diff:" msgstr "装载 diff 错误:" -#: lib/diff.tcl:302 +#: lib/diff.tcl:303 msgid "Failed to unstage selected hunk." msgstr "æ— æ³•å°†é€‰æ‹©çš„ä»£ç 段从缓å˜ä¸åˆ 除." -#: lib/diff.tcl:309 +#: lib/diff.tcl:310 msgid "Failed to stage selected hunk." msgstr "æ— æ³•ç¼“å˜æ‰€é€‰ä»£ç 段." -#: lib/error.tcl:12 lib/error.tcl:102 +#: lib/error.tcl:20 lib/error.tcl:114 msgid "error" msgstr "错误" -#: lib/error.tcl:28 +#: lib/error.tcl:36 msgid "warning" msgstr "è¦å‘Š" -#: lib/error.tcl:81 +#: lib/error.tcl:94 msgid "You must correct the above errors before committing." msgstr "ä½ å¿…é¡»åœ¨æ交å‰ä¿®æ£ä¸Šè¿°é”™è¯¯." @@ -1482,6 +1511,11 @@ msgstr "è§£é” Index" msgid "Unstaging %s from commit" msgstr "从æ交缓å˜ä¸åˆ 除 %s" +#: lib/index.tcl:313 +#, fuzzy +msgid "Ready to commit." +msgstr "缓å˜ä¸ºæ交" + #: lib/index.tcl:326 #, tcl-format msgid "Adding %s" @@ -1497,11 +1531,11 @@ msgstr "撤销文件 %s ä¸çš„改动?" msgid "Revert changes in these %i files?" msgstr "撤销这些 (%i个) 文件的改动?" -#: lib/index.tcl:389 +#: lib/index.tcl:391 msgid "Any unstaged changes will be permanently lost by the revert." msgstr "任何未缓å˜çš„改动将在这次撤销ä¸æ°¸ä¹…丢失." -#: lib/index.tcl:392 +#: lib/index.tcl:394 msgid "Do Nothing" msgstr "ä¸åšæ“作" @@ -1562,8 +1596,8 @@ msgstr "" "\n" "文件 %s 已被修改.\n" "\n" -"ä½ å¿…é¡»å®Œæˆå½“å‰çš„æ交åŽæ‰èƒ½å¼€å§‹åˆå¹¶. 如果需è¦, 这么åšå°†æœ‰åŠ©äºŽ" -"ä¸æ¢ä¸€æ¬¡å¤±è´¥çš„åˆå¹¶.\n" +"ä½ å¿…é¡»å®Œæˆå½“å‰çš„æ交åŽæ‰èƒ½å¼€å§‹åˆå¹¶. 如果需è¦, 这么åšå°†æœ‰åŠ©äºŽä¸æ¢ä¸€æ¬¡å¤±è´¥çš„åˆ" +"并.\n" #: lib/merge.tcl:106 #, tcl-format @@ -1571,28 +1605,28 @@ msgid "%s of %s" msgstr "" #: lib/merge.tcl:119 -#, tcl-format -msgid "Merging %s and %s" +#, fuzzy, tcl-format +msgid "Merging %s and %s..." msgstr "åˆå¹¶ %s å’Œ %s" -#: lib/merge.tcl:131 +#: lib/merge.tcl:130 msgid "Merge completed successfully." msgstr "åˆå¹¶æˆåŠŸå®Œæˆ." -#: lib/merge.tcl:133 +#: lib/merge.tcl:132 msgid "Merge failed. Conflict resolution is required." msgstr "åˆå¹¶å¤±è´¥. 需è¦è§£å†³å†²çª." -#: lib/merge.tcl:158 +#: lib/merge.tcl:157 #, tcl-format msgid "Merge Into %s" msgstr "åˆå¹¶åˆ° %s" -#: lib/merge.tcl:177 +#: lib/merge.tcl:176 msgid "Revision To Merge" msgstr "è¦åˆå¹¶çš„版本" -#: lib/merge.tcl:212 +#: lib/merge.tcl:211 msgid "" "Cannot abort while amending.\n" "\n" @@ -1602,7 +1636,7 @@ msgstr "" "\n" "ä½ å¿…é¡»å…ˆå®Œæˆæœ¬æ¬¡ä¿®æ£æ“作.\n" -#: lib/merge.tcl:222 +#: lib/merge.tcl:221 msgid "" "Abort merge?\n" "\n" @@ -1616,7 +1650,7 @@ msgstr "" "\n" "是å¦è¦ç»§ç»ä¸æ¢å½“å‰çš„åˆå¹¶æ“作?" -#: lib/merge.tcl:228 +#: lib/merge.tcl:227 msgid "" "Reset changes?\n" "\n" @@ -1630,93 +1664,107 @@ msgstr "" "\n" "是å¦è¦ç»§ç»å¤ä½å½“å‰çš„改动?" -#: lib/merge.tcl:239 +#: lib/merge.tcl:238 msgid "Aborting" msgstr "ä¸æ¢" -#: lib/merge.tcl:266 +#: lib/merge.tcl:238 +#, fuzzy +msgid "files reset" +msgstr "文件" + +#: lib/merge.tcl:265 msgid "Abort failed." msgstr "ä¸æ¢å¤±è´¥" -#: lib/merge.tcl:268 +#: lib/merge.tcl:267 msgid "Abort completed. Ready." msgstr "ä¸æ¢å®Œæˆ. 就绪." -#: lib/option.tcl:82 +#: lib/option.tcl:95 msgid "Restore Defaults" msgstr "æ¢å¤é»˜è®¤å€¼" -#: lib/option.tcl:86 +#: lib/option.tcl:99 msgid "Save" msgstr "ä¿å˜" -#: lib/option.tcl:96 +#: lib/option.tcl:109 #, tcl-format msgid "%s Repository" msgstr "%s 版本库" -#: lib/option.tcl:97 +#: lib/option.tcl:110 msgid "Global (All Repositories)" msgstr "全局 (所有版本库)" -#: lib/option.tcl:103 +#: lib/option.tcl:116 msgid "User Name" msgstr "用户å" -#: lib/option.tcl:104 +#: lib/option.tcl:117 msgid "Email Address" msgstr "Email 地å€" -#: lib/option.tcl:106 +#: lib/option.tcl:119 msgid "Summarize Merge Commits" msgstr "概述åˆå¹¶æ交:" -#: lib/option.tcl:107 +#: lib/option.tcl:120 msgid "Merge Verbosity" msgstr "åˆå¹¶å†—余度" -#: lib/option.tcl:108 +#: lib/option.tcl:121 msgid "Show Diffstat After Merge" msgstr "在åˆå¹¶åŽæ˜¾ç¤º Diffstat" -#: lib/option.tcl:110 +#: lib/option.tcl:123 msgid "Trust File Modification Timestamps" msgstr "相信文件的改动时间" -#: lib/option.tcl:111 +#: lib/option.tcl:124 msgid "Prune Tracking Branches During Fetch" msgstr "获å–时清除跟踪分支" -#: lib/option.tcl:112 +#: lib/option.tcl:125 msgid "Match Tracking Branches" msgstr "匹é…跟踪分支" -#: lib/option.tcl:113 +#: lib/option.tcl:126 msgid "Number of Diff Context Lines" msgstr "Diff 上下文行数" -#: lib/option.tcl:114 +#: lib/option.tcl:127 +#, fuzzy +msgid "Commit Message Text Width" +msgstr "æ交æè¿°:" + +#: lib/option.tcl:128 msgid "New Branch Name Template" msgstr "新建分支命å模æ¿" -#: lib/option.tcl:176 +#: lib/option.tcl:192 +msgid "Spelling Dictionary:" +msgstr "" + +#: lib/option.tcl:216 msgid "Change Font" msgstr "更改å—体" -#: lib/option.tcl:180 +#: lib/option.tcl:220 #, tcl-format msgid "Choose %s" msgstr "选择 %s" -#: lib/option.tcl:186 +#: lib/option.tcl:226 msgid "pt." msgstr "磅" -#: lib/option.tcl:200 +#: lib/option.tcl:240 msgid "Preferences" msgstr "首选项" -#: lib/option.tcl:235 +#: lib/option.tcl:275 msgid "Failed to completely save options:" msgstr "æ— æ³•å®Œå…¨ä¿å˜é€‰é¡¹:" @@ -1823,6 +1871,43 @@ msgstr "æ— æ³•ä¿®æ”¹å¿«æ·æ–¹å¼:" msgid "Cannot write icon:" msgstr "æ— æ³•ä¿®æ”¹å›¾æ ‡:" +#: lib/spellcheck.tcl:57 +msgid "Unsupported spell checker" +msgstr "" + +#: lib/spellcheck.tcl:65 +msgid "Spell checking is unavailable" +msgstr "" + +#: lib/spellcheck.tcl:68 +msgid "Invalid spell checking configuration" +msgstr "" + +#: lib/spellcheck.tcl:70 +#, tcl-format +msgid "Reverting dictionary to %s." +msgstr "" + +#: lib/spellcheck.tcl:73 +msgid "Spell checker silently failed on startup" +msgstr "" + +#: lib/spellcheck.tcl:80 +msgid "Unrecognized spell checker" +msgstr "" + +#: lib/spellcheck.tcl:180 +msgid "No Suggestions" +msgstr "" + +#: lib/spellcheck.tcl:381 +msgid "Unexpected EOF from spell checker" +msgstr "" + +#: lib/spellcheck.tcl:385 +msgid "Spell Checker Failed" +msgstr "" + #: lib/status_bar.tcl:83 #, tcl-format msgid "%s ... %*i of %*i %s (%3i%%)" diff --git a/git-merge-one-file.sh b/git-merge-one-file.sh index 9ee3f80452..e1eb963266 100755 --- a/git-merge-one-file.sh +++ b/git-merge-one-file.sh @@ -48,10 +48,11 @@ case "${1:-.}${2:-.}${3:-.}" in ;; "..$3") echo "Adding $4" - test -f "$4" || { + if test -f "$4" + then echo "ERROR: untracked $4 is overwritten by the merge." exit 1 - } + fi git update-index --add --cacheinfo "$7" "$3" "$4" && exec git checkout-index -u -f -- "$4" ;; diff --git a/git-quiltimport.sh b/git-quiltimport.sh index 233e5eae1d..7cd8f7134e 100755 --- a/git-quiltimport.sh +++ b/git-quiltimport.sh @@ -63,7 +63,23 @@ tmp_info="$tmp_dir/info" commit=$(git rev-parse HEAD) mkdir $tmp_dir || exit 2 -for patch_name in $(grep -v '^#' < "$QUILT_PATCHES/series" ); do +while read patch_name level garbage +do + case "$patch_name" in ''|'#'*) continue;; esac + case "$level" in + -p*) ;; + ''|'#'*) + level=;; + *) + echo "unable to parse patch level, ignoring it." + level=;; + esac + case "$garbage" in + ''|'#'*);; + *) + echo "trailing garbage found in series file: $garbage" + exit 1;; + esac if ! [ -f "$QUILT_PATCHES/$patch_name" ] ; then echo "$patch_name doesn't exist. Skipping." continue @@ -113,10 +129,10 @@ for patch_name in $(grep -v '^#' < "$QUILT_PATCHES/series" ); do fi if [ -z "$dry_run" ] ; then - git apply --index -C1 "$tmp_patch" && + git apply --index -C1 ${level:+"$level"} "$tmp_patch" && tree=$(git write-tree) && 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 +done <"$QUILT_PATCHES/series" rm -rf $tmp_dir || exit 5 diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index c2bedd622c..8aa73712ca 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -78,8 +78,8 @@ mark_action_done () { sed -e 1q < "$TODO" >> "$DONE" sed -e 1d < "$TODO" >> "$TODO".new mv -f "$TODO".new "$TODO" - count=$(($(grep -ve '^$' -e '^#' < "$DONE" | wc -l))) - total=$(($count+$(grep -ve '^$' -e '^#' < "$TODO" | wc -l))) + count=$(grep -c '^[^#]' < "$DONE") + total=$(($count+$(grep -c '^[^#]' < "$TODO"))) if test "$last_count" != "$count" then last_count=$count @@ -110,7 +110,7 @@ die_abort () { } has_action () { - grep -vqe '^$' -e '^#' "$1" + grep '^[^#]' "$1" >/dev/null } pick_one () { @@ -218,7 +218,7 @@ nth_string () { make_squash_message () { if test -f "$SQUASH_MSG"; then COUNT=$(($(sed -n "s/^# This is [^0-9]*\([1-9][0-9]*\).*/\1/p" \ - < "$SQUASH_MSG" | tail -n 1)+1)) + < "$SQUASH_MSG" | sed -ne '$p')+1)) echo "# This is a combination of $COUNT commits." sed -e 1d -e '2,/^./{ /^$/d diff --git a/git-rebase.sh b/git-rebase.sh index ff66af3ba8..60c458f201 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -62,7 +62,7 @@ continue_merge () { cmt=`cat "$dotest/current"` if ! git diff-index --quiet HEAD -- then - if ! git-commit -C "$cmt" + if ! git commit --no-verify -C "$cmt" then echo "Commit failed, please do not call \"git commit\"" echo "directly, but instead do one of the following: " diff --git a/git-submodule.sh b/git-submodule.sh index 7171cb60ab..56ec3536e0 100755 --- a/git-submodule.sh +++ b/git-submodule.sh @@ -4,7 +4,9 @@ # # Copyright (c) 2007 Lars Hjemli -USAGE='[--quiet] [--cached] [add <repo> [-b branch]|status|init|update] [--] [<path>...]' +USAGE="[--quiet] [--cached] \ +[add <repo> [-b branch]|status|init|update|summary [-n|--summary-limit <n>] [<commit>]] \ +[--] [<path>...]" OPTIONS_SPEC= . git-sh-setup require_work_tree @@ -230,7 +232,7 @@ cmd_init() shift done - git ls-files --stage -- "$@" | grep -e '^160000 ' | + git ls-files --stage -- "$@" | grep '^160000 ' | while read mode sha1 stage path do # Skip already registered paths @@ -284,7 +286,7 @@ cmd_update() shift done - git ls-files --stage -- "$@" | grep -e '^160000 ' | + git ls-files --stage -- "$@" | grep '^160000 ' | while read mode sha1 stage path do name=$(module_name "$path") || exit @@ -330,7 +332,175 @@ set_name_rev () { ) ) test -z "$revname" || revname=" ($revname)" } +# +# Show commit summary for submodules in index or working tree +# +# If '--cached' is given, show summary between index and given commit, +# or between working tree and given commit +# +# $@ = [commit (default 'HEAD'),] requested paths (default all) +# +cmd_summary() { + summary_limit=-1 + + # parse $args after "submodule ... summary". + while test $# -ne 0 + do + case "$1" in + --cached) + cached="$1" + ;; + -n|--summary-limit) + if summary_limit=$(($2 + 0)) 2>/dev/null && test "$summary_limit" = "$2" + then + : + else + usage + fi + shift + ;; + --) + shift + break + ;; + -*) + usage + ;; + *) + break + ;; + esac + shift + done + + test $summary_limit = 0 && return + + if rev=$(git rev-parse --verify "$1^0" 2>/dev/null) + then + head=$rev + shift + else + head=HEAD + fi + + cd_to_toplevel + # Get modified modules cared by user + modules=$(git diff-index $cached --raw $head -- "$@" | + grep -e '^:160000' -e '^:[0-7]* 160000' | + while read mod_src mod_dst sha1_src sha1_dst status name + do + # Always show modules deleted or type-changed (blob<->module) + test $status = D -o $status = T && echo "$name" && continue + # Also show added or modified modules which are checked out + GIT_DIR="$name/.git" git-rev-parse --git-dir >/dev/null 2>&1 && + echo "$name" + done + ) + + test -n "$modules" && + git diff-index $cached --raw $head -- $modules | + grep -e '^:160000' -e '^:[0-7]* 160000' | + cut -c2- | + while read mod_src mod_dst sha1_src sha1_dst status name + do + if test -z "$cached" && + test $sha1_dst = 0000000000000000000000000000000000000000 + then + case "$mod_dst" in + 160000) + sha1_dst=$(GIT_DIR="$name/.git" git rev-parse HEAD) + ;; + 100644 | 100755 | 120000) + sha1_dst=$(git hash-object $name) + ;; + 000000) + ;; # removed + *) + # unexpected type + echo >&2 "unexpected mode $mod_dst" + continue ;; + esac + fi + missing_src= + missing_dst= + + test $mod_src = 160000 && + ! GIT_DIR="$name/.git" git-rev-parse --verify $sha1_src^0 >/dev/null 2>&1 && + missing_src=t + + test $mod_dst = 160000 && + ! GIT_DIR="$name/.git" git-rev-parse --verify $sha1_dst^0 >/dev/null 2>&1 && + missing_dst=t + total_commits= + case "$missing_src,$missing_dst" in + t,) + errmsg=" Warn: $name doesn't contain commit $sha1_src" + ;; + ,t) + errmsg=" Warn: $name doesn't contain commit $sha1_dst" + ;; + t,t) + errmsg=" Warn: $name doesn't contain commits $sha1_src and $sha1_dst" + ;; + *) + errmsg= + total_commits=$( + if test $mod_src = 160000 -a $mod_dst = 160000 + then + range="$sha1_src...$sha1_dst" + elif test $mod_src = 160000 + then + range=$sha1_src + else + range=$sha1_dst + fi + GIT_DIR="$name/.git" \ + git log --pretty=oneline --first-parent $range | wc -l + ) + total_commits=" ($(($total_commits + 0)))" + ;; + esac + + sha1_abbr_src=$(echo $sha1_src | cut -c1-7) + sha1_abbr_dst=$(echo $sha1_dst | cut -c1-7) + if test $status = T + then + if test $mod_dst = 160000 + then + echo "* $name $sha1_abbr_src(blob)->$sha1_abbr_dst(submodule)$total_commits:" + else + echo "* $name $sha1_abbr_src(submodule)->$sha1_abbr_dst(blob)$total_commits:" + fi + else + echo "* $name $sha1_abbr_src...$sha1_abbr_dst$total_commits:" + fi + if test -n "$errmsg" + then + # Don't give error msg for modification whose dst is not submodule + # i.e. deleted or changed to blob + test $mod_dst = 160000 && echo "$errmsg" + else + if test $mod_src = 160000 -a $mod_dst = 160000 + then + limit= + test $summary_limit -gt 0 && limit="-$summary_limit" + GIT_DIR="$name/.git" \ + git log $limit --pretty='format: %m %s' \ + --first-parent $sha1_src...$sha1_dst + elif test $mod_dst = 160000 + then + GIT_DIR="$name/.git" \ + git log --pretty='format: > %s' -1 $sha1_dst + else + GIT_DIR="$name/.git" \ + git log --pretty='format: < %s' -1 $sha1_src + fi + echo + fi + echo + done +} # # List all submodules, prefixed with: # - submodule not initialized @@ -367,7 +537,7 @@ cmd_status() shift done - git ls-files --stage -- "$@" | grep -e '^160000 ' | + git ls-files --stage -- "$@" | grep '^160000 ' | while read mode sha1 stage path do name=$(module_name "$path") || exit @@ -401,7 +571,7 @@ cmd_status() while test $# != 0 && test -z "$command" do case "$1" in - add | init | update | status) + add | init | update | status | summary) command=$1 ;; -q|--quiet) @@ -416,7 +586,7 @@ do branch="$2"; shift ;; --cached) - cached=1 + cached="$1" ;; --) break @@ -440,8 +610,8 @@ then usage fi -# "--cached" is accepted only by "status" -if test -n "$cached" && test "$command" != status +# "--cached" is accepted only by "status" and "summary" +if test -n "$cached" && test "$command" != status -a "$command" != summary then usage fi diff --git a/git-svn.perl b/git-svn.perl index d8b38c9a47..0c2b791eab 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -958,9 +958,10 @@ sub complete_url_ls_init { "wanted to set to: $gs->{url}\n"; } command_oneline('config', $k, $gs->{url}) unless $orig_url; - my $remote_path = "$ra->{svn_path}/$repo_path/*"; + my $remote_path = "$ra->{svn_path}/$repo_path"; $remote_path =~ s#/+#/#g; $remote_path =~ s#^/##g; + $remote_path .= "/*" if $remote_path !~ /\*/; my ($n) = ($switch =~ /^--(\w+)/); if (length $pfx && $pfx !~ m#/$#) { die "--prefix='$pfx' must have a trailing slash '/'\n"; @@ -3664,7 +3665,7 @@ sub escape_uri_only { my ($uri) = @_; my @tmp; foreach (split m{/}, $uri) { - s/([^\w.-])/sprintf("%%%02X",ord($1))/eg; + s/([^\w.%-]|%(?![a-fA-F0-9]{2}))/sprintf("%%%02X",ord($1))/eg; push @tmp, $_; } join('/', @tmp); diff --git a/git-web--browse.sh b/git-web--browse.sh index 1023b90859..384148a59f 100755 --- a/git-web--browse.sh +++ b/git-web--browse.sh @@ -23,12 +23,18 @@ USAGE='[--browser=browser|--tool=browser] [--config=conf.var] url/file ...' NONGIT_OK=Yes . git-sh-setup +valid_custom_tool() +{ + browser_cmd="$(git config "browser.$1.cmd")" + test -n "$browser_cmd" +} + valid_tool() { case "$1" in firefox | iceweasel | konqueror | w3m | links | lynx | dillo | open) ;; # happy *) - return 1 + valid_custom_tool "$1" || return 1 ;; esac } @@ -122,7 +128,7 @@ else init_browser_path "$browser" - if ! type "$browser_path" > /dev/null 2>&1; then + if test -z "$browser_cmd" && ! type "$browser_path" > /dev/null 2>&1; then die "The browser $browser is not available as '$browser_path'." fi fi @@ -157,4 +163,9 @@ case "$browser" in dillo) "$browser_path" "$@" & ;; + *) + if test -n "$browser_cmd"; then + ( eval $browser_cmd "$@" ) + fi + ;; esac @@ -343,7 +343,7 @@ static void handle_internal_command(int argc, const char **argv) { "revert", cmd_revert, RUN_SETUP | NEED_WORK_TREE }, { "rm", cmd_rm, RUN_SETUP }, { "send-pack", cmd_send_pack, RUN_SETUP }, - { "shortlog", cmd_shortlog, RUN_SETUP | USE_PAGER }, + { "shortlog", cmd_shortlog, USE_PAGER }, { "show-branch", cmd_show_branch, RUN_SETUP }, { "show", cmd_show, RUN_SETUP | USE_PAGER }, { "status", cmd_status, RUN_SETUP | NEED_WORK_TREE }, diff --git a/gitk-git/Makefile b/gitk-git/Makefile index ae2b80b108..f90dfabffa 100644 --- a/gitk-git/Makefile +++ b/gitk-git/Makefile @@ -8,6 +8,7 @@ gitk_libdir ?= $(sharedir)/gitk/lib msgsdir ?= $(gitk_libdir)/msgs msgsdir_SQ = $(subst ','\'',$(msgsdir)) +TCL_PATH ?= tclsh TCLTK_PATH ?= wish INSTALL ?= install RM ?= rm -f @@ -22,6 +23,9 @@ ifdef NO_MSGFMT MSGFMT ?= $(TCL_PATH) po/po2msg.sh else MSGFMT ?= msgfmt + ifneq ($(shell $(MSGFMT) --tcl -l C -d . /dev/null 2>/dev/null; echo $$?),0) + MSGFMT := $(TCL_PATH) po/po2msg.sh + endif endif PO_TEMPLATE = po/gitk.pot diff --git a/gitk-git/gitk b/gitk-git/gitk index f1f21e97bf..84ab02e15f 100644 --- a/gitk-git/gitk +++ b/gitk-git/gitk @@ -82,7 +82,7 @@ proc dorunq {} { proc start_rev_list {view} { global startmsecs global commfd leftover tclencoding datemode - global viewargs viewfiles commitidx viewcomplete vnextroot + global viewargs viewargscmd viewfiles commitidx viewcomplete vnextroot global showlocalchanges commitinterest mainheadid global progressdirn progresscoords proglastnc curview @@ -90,13 +90,23 @@ proc start_rev_list {view} { set commitidx($view) 0 set viewcomplete($view) 0 set vnextroot($view) 0 + set args $viewargs($view) + if {$viewargscmd($view) ne {}} { + if {[catch { + set str [exec sh -c $viewargscmd($view)] + } err]} { + error_popup "Error executing --argscmd command: $err" + exit 1 + } + set args [concat $args [split $str "\n"]] + } set order "--topo-order" if {$datemode} { set order "--date-order" } if {[catch { set fd [open [concat | git log --no-color -z --pretty=raw $order --parents \ - --boundary $viewargs($view) "--" $viewfiles($view)] r] + --boundary $args "--" $viewfiles($view)] r] } err]} { error_popup "[mc "Error executing git rev-list:"] $err" exit 1 @@ -393,6 +403,9 @@ proc readcommit {id} { proc updatecommits {} { global viewdata curview phase displayorder ordertok idpending global children commitrow selectedline thickerline showneartags + global isworktree + + set isworktree [expr {[exec git rev-parse --is-inside-work-tree] == "true"}] if {$phase ne {}} { stop_rev_list @@ -827,6 +840,7 @@ proc makewindow {} { } frame .bleft.top frame .bleft.mid + frame .bleft.bottom button .bleft.top.search -text [mc "Search"] -command dosearch pack .bleft.top.search -side left -padx 5 @@ -854,18 +868,25 @@ proc makewindow {} { checkbutton .bleft.mid.ignspace -text [mc "Ignore space change"] \ -command changeignorespace -variable ignorespace pack .bleft.mid.ignspace -side left -padx 5 - set ctext .bleft.ctext + set ctext .bleft.bottom.ctext text $ctext -background $bgcolor -foreground $fgcolor \ -state disabled -font textfont \ - -yscrollcommand scrolltext -wrap none + -yscrollcommand scrolltext -wrap none \ + -xscrollcommand ".bleft.bottom.sbhorizontal set" if {$have_tk85} { $ctext conf -tabstyle wordprocessor } - scrollbar .bleft.sb -command "$ctext yview" + scrollbar .bleft.bottom.sb -command "$ctext yview" + scrollbar .bleft.bottom.sbhorizontal -command "$ctext xview" -orient h \ + -width 10 pack .bleft.top -side top -fill x pack .bleft.mid -side top -fill x - pack .bleft.sb -side right -fill y - pack $ctext -side left -fill both -expand 1 + grid $ctext .bleft.bottom.sb -sticky nsew + grid .bleft.bottom.sbhorizontal -sticky ew + grid columnconfigure .bleft.bottom 0 -weight 1 + grid rowconfigure .bleft.bottom 0 -weight 1 + grid rowconfigure .bleft.bottom 1 -weight 0 + pack .bleft.bottom -side top -fill both -expand 1 lappend bglist $ctext lappend fglist $ctext @@ -930,9 +951,17 @@ proc makewindow {} { .pwbottom add .bright .ctop add .pwbottom - # restore window position if known + # restore window width & height if known if {[info exists geometry(main)]} { - wm geometry . "$geometry(main)" + if {[scan $geometry(main) "%dx%d" w h] >= 2} { + if {$w > [winfo screenwidth .]} { + set w [winfo screenwidth .] + } + if {$h > [winfo screenheight .]} { + set h [winfo screenheight .] + } + wm geometry . "${w}x$h" + } } if {[tk windowingsystem] eq {aqua}} { @@ -1160,9 +1189,10 @@ proc savestuff {w} { global canv canv2 canv3 mainfont textfont uifont tabstop global stuffsaved findmergefiles maxgraphpct global maxwidth showneartags showlocalchanges - global viewname viewfiles viewargs viewperm nextviewnum + global viewname viewfiles viewargs viewargscmd viewperm nextviewnum global cmitmode wrapcomment datetimeformat limitdiffs global colors bgcolor fgcolor diffcolors diffcontext selectbgcolor + global autoselect if {$stuffsaved} return if {![winfo viewable .]} return @@ -1177,6 +1207,7 @@ proc savestuff {w} { puts $f [list set maxwidth $maxwidth] puts $f [list set cmitmode $cmitmode] puts $f [list set wrapcomment $wrapcomment] + puts $f [list set autoselect $autoselect] puts $f [list set showneartags $showneartags] puts $f [list set showlocalchanges $showlocalchanges] puts $f [list set datetimeformat $datetimeformat] @@ -1199,7 +1230,7 @@ proc savestuff {w} { puts -nonewline $f "set permviews {" for {set v 0} {$v < $nextviewnum} {incr v} { if {$viewperm($v)} { - puts $f "{[list $viewname($v) $viewfiles($v) $viewargs($v)]}" + puts $f "{[list $viewname($v) $viewfiles($v) $viewargs($v) $viewargscmd($v)]}" } } puts $f "}" @@ -1850,7 +1881,7 @@ proc shellsplit {str} { proc newview {ishighlight} { global nextviewnum newviewname newviewperm newishighlight - global newviewargs revtreeargs + global newviewargs revtreeargs viewargscmd newviewargscmd curview set newishighlight $ishighlight set top .gitkview @@ -1858,16 +1889,17 @@ proc newview {ishighlight} { raise $top return } - set newviewname($nextviewnum) "View $nextviewnum" + set newviewname($nextviewnum) "[mc "View"] $nextviewnum" set newviewperm($nextviewnum) 0 set newviewargs($nextviewnum) [shellarglist $revtreeargs] + set newviewargscmd($nextviewnum) $viewargscmd($curview) vieweditor $top $nextviewnum [mc "Gitk view definition"] } proc editview {} { global curview global viewname viewperm newviewname newviewperm - global viewargs newviewargs + global viewargs newviewargs viewargscmd newviewargscmd set top .gitkvedit-$curview if {[winfo exists $top]} { @@ -1877,6 +1909,7 @@ proc editview {} { set newviewname($curview) $viewname($curview) set newviewperm($curview) $viewperm($curview) set newviewargs($curview) [shellarglist $viewargs($curview)] + set newviewargscmd($curview) $viewargscmd($curview) vieweditor $top $curview "Gitk: edit view $viewname($curview)" } @@ -1897,6 +1930,14 @@ proc vieweditor {top n title} { entry $top.args -width 50 -textvariable newviewargs($n) \ -background $bgcolor grid $top.args - -sticky ew -padx 5 + + message $top.ac -aspect 1000 \ + -text [mc "Command to generate more commits to include:"] + grid $top.ac - -sticky w -pady 5 + entry $top.argscmd -width 50 -textvariable newviewargscmd($n) \ + -background white + grid $top.argscmd - -sticky ew -padx 5 + message $top.l -aspect 1000 \ -text [mc "Enter files and directories to include, one per line:"] grid $top.l - -sticky w @@ -1940,7 +1981,7 @@ proc allviewmenus {n op args} { proc newviewok {top n} { global nextviewnum newviewperm newviewname newishighlight global viewname viewfiles viewperm selectedview curview - global viewargs newviewargs viewhlmenu + global viewargs newviewargs viewargscmd newviewargscmd viewhlmenu if {[catch { set newargs [shellsplit $newviewargs($n)] @@ -1964,6 +2005,7 @@ proc newviewok {top n} { set viewperm($n) $newviewperm($n) set viewfiles($n) $files set viewargs($n) $newargs + set viewargscmd($n) $newviewargscmd($n) addviewmenu $n if {!$newishighlight} { run showview $n @@ -1980,9 +2022,11 @@ proc newviewok {top n} { # doviewmenu $viewhlmenu 1 [list addvhighlight $n] \ # entryconf [list -label $viewname($n) -value $viewname($n)] } - if {$files ne $viewfiles($n) || $newargs ne $viewargs($n)} { + if {$files ne $viewfiles($n) || $newargs ne $viewargs($n) || \ + $newviewargscmd($n) ne $viewargscmd($n)} { set viewfiles($n) $files set viewargs($n) $newargs + set viewargscmd($n) $newviewargscmd($n) if {$curview == $n} { run updatecommits } @@ -2058,8 +2102,6 @@ proc showview {n} { set ybot [expr {[lindex $span 1] * $ymax}] if {$ytop < $y && $y < $ybot} { set yscreen [expr {$y - $ytop}] - } else { - set yscreen [expr {($ybot - $ytop) / 2}] } } elseif {[info exists pending_select]} { set selid $pending_select @@ -2120,7 +2162,7 @@ proc showview {n} { set yf 0 set row {} set selectfirst 0 - if {$selid ne {} && [info exists commitrow($n,$selid)]} { + if {[info exists yscreen] && [info exists commitrow($n,$selid)]} { set row $commitrow($n,$selid) # try to get the selected row in the same position on the screen set ymax [lindex [$canv cget -scrollregion] 3] @@ -2844,8 +2886,9 @@ proc dohidelocalchanges {} { # spawn off a process to do git diff-index --cached HEAD proc dodiffindex {} { global localirow localfrow lserial showlocalchanges + global isworktree - if {!$showlocalchanges} return + if {!$showlocalchanges || !$isworktree} return incr lserial set localfrow -1 set localirow -1 @@ -4650,6 +4693,7 @@ proc selectline {l isnew} { global commentend idtags linknum global mergemax numcommits pending_select global cmitmode showneartags allcommits + global autoselect catch {unset pending_select} $canv delete hover @@ -4705,8 +4749,10 @@ proc selectline {l isnew} { set currentid $id $sha1entry delete 0 end $sha1entry insert 0 $id - $sha1entry selection from 0 - $sha1entry selection to end + if {$autoselect} { + $sha1entry selection from 0 + $sha1entry selection to end + } rhighlight_sel $id $ctext conf -state normal @@ -5604,7 +5650,7 @@ proc searchmarkvisible {doall} { proc scrolltext {f0 f1} { global searchstring - .bleft.sb set $f0 $f1 + .bleft.bottom.sb set $f0 $f1 if {$searchstring ne {}} { searchmarkvisible 0 } @@ -7943,7 +7989,7 @@ proc doprefs {} { global maxwidth maxgraphpct global oldprefs prefstop showneartags showlocalchanges global bgcolor fgcolor ctext diffcolors selectbgcolor - global tabstop limitdiffs + global tabstop limitdiffs autoselect set top .gitkprefs set prefstop $top @@ -7973,6 +8019,11 @@ proc doprefs {} { checkbutton $top.showlocal.b -variable showlocalchanges pack $top.showlocal.b $top.showlocal.l -side left grid x $top.showlocal -sticky w + frame $top.autoselect + label $top.autoselect.l -text [mc "Auto-select SHA1"] -font optionfont + checkbutton $top.autoselect.b -variable autoselect + pack $top.autoselect.b $top.autoselect.l -side left + grid x $top.autoselect -sticky w label $top.ddisp -text [mc "Diff display options"] grid $top.ddisp - -sticky w -pady 10 @@ -8463,6 +8514,7 @@ set maxlinelen 200 set showlocalchanges 1 set limitdiffs 1 set datetimeformat "%Y-%m-%d %H:%M:%S" +set autoselect 1 set colors {green red blue magenta darkgrey brown orange} set bgcolor white @@ -8522,8 +8574,9 @@ set mergeonly 0 set revtreeargs {} set cmdline_files {} set i 0 +set revtreeargscmd {} foreach arg $argv { - switch -- $arg { + switch -glob -- $arg { "" { } "-d" { set datemode 1 } "--merge" { @@ -8534,6 +8587,9 @@ foreach arg $argv { set cmdline_files [lrange $argv [expr {$i + 1}] end] break } + "--argscmd=*" { + set revtreeargscmd [string range $arg 10 end] + } default { lappend revtreeargs $arg } @@ -8635,6 +8691,7 @@ set highlight_files {} set viewfiles(0) {} set viewperm(0) 0 set viewargs(0) {} +set viewargscmd(0) {} set cmdlineok 0 set stopped 0 @@ -8643,6 +8700,7 @@ set patchnum 0 set localirow -1 set localfrow -1 set lserial 0 +set isworktree [expr {[exec git rev-parse --is-inside-work-tree] == "true"}] setcoords makewindow # wait for the window to become visible @@ -8650,7 +8708,7 @@ tkwait visibility . wm title . "[file tail $argv0]: [file tail [pwd]]" readrefs -if {$cmdline_files ne {} || $revtreeargs ne {}} { +if {$cmdline_files ne {} || $revtreeargs ne {} || $revtreeargscmd ne {}} { # create a view for the files/dirs specified on the command line set curview 1 set selectedview 1 @@ -8658,6 +8716,7 @@ if {$cmdline_files ne {} || $revtreeargs ne {}} { set viewname(1) [mc "Command line"] set viewfiles(1) $cmdline_files set viewargs(1) $revtreeargs + set viewargscmd(1) $revtreeargscmd set viewperm(1) 0 addviewmenu 1 .bar.view entryconf [mc "Edit view..."] -state normal @@ -8671,6 +8730,7 @@ if {[info exists permviews]} { set viewname($n) [lindex $v 0] set viewfiles($n) [lindex $v 1] set viewargs($n) [lindex $v 2] + set viewargscmd($n) [lindex $v 3] set viewperm($n) 1 addviewmenu $n } diff --git a/gitk-git/po/it.po b/gitk-git/po/it.po new file mode 100644 index 0000000000..d0f4c2e19a --- /dev/null +++ b/gitk-git/po/it.po @@ -0,0 +1,890 @@ +# Translation of gitk +# Copyright (C) 2005-2008 Paul Mackerras +# This file is distributed under the same license as the gitk package. +# Michele Ballabio <barra_cuda@katamail.com>, 2008. +# +# +msgid "" +msgstr "" +"Project-Id-Version: gitk\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2008-03-13 17:29+0100\n" +"PO-Revision-Date: 2008-03-13 17:34+0100\n" +"Last-Translator: Michele Ballabio <barra_cuda@katamail.com>\n" +"Language-Team: Italian\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: gitk:111 +msgid "Error executing git rev-list:" +msgstr "Errore nell'esecuzione di git rev-list:" + +#: gitk:124 +msgid "Reading" +msgstr "Lettura in corso" + +#: gitk:151 gitk:2191 +msgid "Reading commits..." +msgstr "Lettura delle revisioni in corso..." + +#: gitk:275 +msgid "Can't parse git log output:" +msgstr "Impossibile elaborare i dati di git log:" + +#: gitk:386 gitk:2195 +msgid "No commits selected" +msgstr "Nessuna revisione selezionata" + +#: gitk:500 +msgid "No commit information available" +msgstr "Nessuna informazione disponibile sulle revisioni" + +#: gitk:599 gitk:621 gitk:1955 gitk:6423 gitk:7923 gitk:8082 +msgid "OK" +msgstr "OK" + +#: gitk:623 gitk:1956 gitk:6107 gitk:6178 gitk:6275 gitk:6321 gitk:6425 +#: gitk:7924 gitk:8083 +msgid "Cancel" +msgstr "Annulla" + +#: gitk:661 +msgid "File" +msgstr "File" + +#: gitk:663 +msgid "Update" +msgstr "Aggiorna" + +#: gitk:664 +msgid "Reread references" +msgstr "Rileggi riferimenti" + +#: gitk:665 +msgid "List references" +msgstr "Elenca riferimenti" + +#: gitk:666 +msgid "Quit" +msgstr "Esci" + +#: gitk:668 +msgid "Edit" +msgstr "Modifica" + +#: gitk:669 +msgid "Preferences" +msgstr "Preferenze" + +#: gitk:672 gitk:1892 +msgid "View" +msgstr "Vista" + +#: gitk:673 +msgid "New view..." +msgstr "Nuova vista..." + +#: gitk:674 gitk:2133 gitk:8722 +msgid "Edit view..." +msgstr "Modifica vista..." + +#: gitk:676 gitk:2134 gitk:8723 +msgid "Delete view" +msgstr "Elimina vista" + +#: gitk:678 +msgid "All files" +msgstr "Tutti i file" + +#: gitk:682 +msgid "Help" +msgstr "Aiuto" + +#: gitk:683 gitk:1317 +msgid "About gitk" +msgstr "Informazioni su gitk" + +#: gitk:684 +msgid "Key bindings" +msgstr "Scorciatoie da tastiera" + +#: gitk:741 +msgid "SHA1 ID: " +msgstr "SHA1 ID: " + +#: gitk:791 +msgid "Find" +msgstr "Trova" + +#: gitk:792 +msgid "next" +msgstr "succ" + +#: gitk:793 +msgid "prev" +msgstr "prec" + +#: gitk:794 +msgid "commit" +msgstr "revisione" + +#: gitk:797 gitk:799 gitk:2356 gitk:2379 gitk:2403 gitk:4306 gitk:4369 +msgid "containing:" +msgstr "contenente:" + +#: gitk:800 gitk:1778 gitk:1783 gitk:2431 +msgid "touching paths:" +msgstr "che riguarda i percorsi:" + +#: gitk:801 gitk:2436 +msgid "adding/removing string:" +msgstr "che aggiunge/rimuove la stringa:" + +#: gitk:810 gitk:812 +msgid "Exact" +msgstr "Esatto" + +#: gitk:812 gitk:2514 gitk:4274 +msgid "IgnCase" +msgstr "" + +#: gitk:812 gitk:2405 gitk:2512 gitk:4270 +msgid "Regexp" +msgstr "" + +#: gitk:814 gitk:815 gitk:2533 gitk:2563 gitk:2570 gitk:4380 gitk:4436 +msgid "All fields" +msgstr "Tutti i campi" + +#: gitk:815 gitk:2531 gitk:2563 gitk:4336 +msgid "Headline" +msgstr "Titolo" + +#: gitk:816 gitk:2531 gitk:4336 gitk:4436 gitk:4827 +msgid "Comments" +msgstr "Commenti" + +#: gitk:816 gitk:2531 gitk:2535 gitk:2570 gitk:4336 gitk:4763 gitk:5956 +#: gitk:5971 +msgid "Author" +msgstr "Autore" + +#: gitk:816 gitk:2531 gitk:4336 gitk:4765 +msgid "Committer" +msgstr "Revisione creata da" + +#: gitk:845 +msgid "Search" +msgstr "Cerca" + +#: gitk:852 +msgid "Diff" +msgstr "" + +#: gitk:854 +msgid "Old version" +msgstr "Vecchia versione" + +#: gitk:856 +msgid "New version" +msgstr "Nuova versione" + +#: gitk:858 +msgid "Lines of context" +msgstr "Linee di contesto" + +#: gitk:868 +msgid "Ignore space change" +msgstr "Ignora modifiche agli spazi" + +#: gitk:926 +msgid "Patch" +msgstr "Modifiche" + +#: gitk:928 +msgid "Tree" +msgstr "Directory" + +#: gitk:1053 gitk:1068 gitk:6022 +msgid "Diff this -> selected" +msgstr "Diff questo -> selezionato" + +#: gitk:1055 gitk:1070 gitk:6023 +msgid "Diff selected -> this" +msgstr "Diff selezionato -> questo" + +#: gitk:1057 gitk:1072 gitk:6024 +msgid "Make patch" +msgstr "Crea patch" + +#: gitk:1058 gitk:6162 +msgid "Create tag" +msgstr "Crea etichetta" + +#: gitk:1059 gitk:6255 +msgid "Write commit to file" +msgstr "Scrivi revisione in un file" + +#: gitk:1060 gitk:6309 +msgid "Create new branch" +msgstr "Crea un nuovo ramo" + +#: gitk:1061 +msgid "Cherry-pick this commit" +msgstr "Porta questa revisione in cima al ramo attuale" + +#: gitk:1063 +msgid "Reset HEAD branch to here" +msgstr "Aggiorna il ramo HEAD a questa revisione" + +#: gitk:1079 +msgid "Check out this branch" +msgstr "Attiva questo ramo" + +#: gitk:1081 +msgid "Remove this branch" +msgstr "Elimina questo ramo" + +#: gitk:1087 +msgid "Highlight this too" +msgstr "Evidenzia anche questo" + +#: gitk:1089 +msgid "Highlight this only" +msgstr "Evidenzia solo questo" + +#: gitk:1318 +msgid "" +"\n" +"Gitk - a commit viewer for git\n" +"\n" +"Copyright © 2005-2006 Paul Mackerras\n" +"\n" +"Use and redistribute under the terms of the GNU General Public License" +msgstr "" +"\n" +"Gitk - un visualizzatore di revisioni per git\n" +"\n" +"Copyright © 2005-2006 Paul Mackerras\n" +"\n" +"Utilizzo e redistribuzione permessi sotto i termini della GNU General Public " +"License" + +#: gitk:1326 gitk:1387 gitk:6581 +msgid "Close" +msgstr "Chiudi" + +#: gitk:1345 +msgid "Gitk key bindings" +msgstr "Scorciatoie da tastiera di Gitk" + +#: gitk:1347 +msgid "Gitk key bindings:" +msgstr "Scorciatoie da tastiera di Gitk:" + +#: gitk:1349 +#, tcl-format +msgid "<%s-Q>\t\tQuit" +msgstr "<%s-Q>\t\tEsci" + +#: gitk:1350 +msgid "<Home>\t\tMove to first commit" +msgstr "<Home>\t\tVai alla prima revisione" + +#: gitk:1351 +msgid "<End>\t\tMove to last commit" +msgstr "<End>\t\tVai all'ultima revisione" + +#: gitk:1352 +msgid "<Up>, p, i\tMove up one commit" +msgstr "<Up>, p, i\tVai più in alto di una revisione" + +#: gitk:1353 +msgid "<Down>, n, k\tMove down one commit" +msgstr "<Down>, n, k\tVai più in basso di una revisione" + +#: gitk:1354 +msgid "<Left>, z, j\tGo back in history list" +msgstr "<Left>, z, j\tTorna indietro nella cronologia" + +#: gitk:1355 +msgid "<Right>, x, l\tGo forward in history list" +msgstr "<Right>, x, l\tVai avanti nella cronologia" + +#: gitk:1356 +msgid "<PageUp>\tMove up one page in commit list" +msgstr "<PageUp>\tVai più in alto di una pagina nella lista delle revisioni" + +#: gitk:1357 +msgid "<PageDown>\tMove down one page in commit list" +msgstr "<PageDown>\tVai più in basso di una pagina nella lista delle revisioni" + +#: gitk:1358 +#, tcl-format +msgid "<%s-Home>\tScroll to top of commit list" +msgstr "<%s-Home>\tScorri alla cima della lista delle revisioni" + +#: gitk:1359 +#, tcl-format +msgid "<%s-End>\tScroll to bottom of commit list" +msgstr "<%s-End>\tScorri alla fine della lista delle revisioni" + +#: gitk:1360 +#, tcl-format +msgid "<%s-Up>\tScroll commit list up one line" +msgstr "<%s-Up>\tScorri la lista delle revisioni in alto di una riga" + +#: gitk:1361 +#, tcl-format +msgid "<%s-Down>\tScroll commit list down one line" +msgstr "<%s-Down>\tScorri la lista delle revisioni in basso di una riga" + +#: gitk:1362 +#, tcl-format +msgid "<%s-PageUp>\tScroll commit list up one page" +msgstr "<%s-PageUp>\tScorri la lista delle revisioni in alto di una pagina" + +#: gitk:1363 +#, tcl-format +msgid "<%s-PageDown>\tScroll commit list down one page" +msgstr "<%s-PageDown>\tScorri la lista delle revisioni in basso di una pagina" + +#: gitk:1364 +msgid "<Shift-Up>\tFind backwards (upwards, later commits)" +msgstr "<Shift-Up>\tTrova all'indietro (verso l'alto, revisioni successive)" + +#: gitk:1365 +msgid "<Shift-Down>\tFind forwards (downwards, earlier commits)" +msgstr "<Shift-Down>\tTrova in avanti (verso il basso, revisioni precedenti)" + +#: gitk:1366 +msgid "<Delete>, b\tScroll diff view up one page" +msgstr "<Delete>, b\tScorri la vista delle differenze in alto di una pagina" + +#: gitk:1367 +msgid "<Backspace>\tScroll diff view up one page" +msgstr "<Backspace>\tScorri la vista delle differenze in alto di una pagina" + +#: gitk:1368 +msgid "<Space>\t\tScroll diff view down one page" +msgstr "<Space>\t\tScorri la vista delle differenze in basso di una pagina" + +#: gitk:1369 +msgid "u\t\tScroll diff view up 18 lines" +msgstr "u\t\tScorri la vista delle differenze in alto di 18 linee" + +#: gitk:1370 +msgid "d\t\tScroll diff view down 18 lines" +msgstr "d\t\tScorri la vista delle differenze in basso di 18 linee" + +#: gitk:1371 +#, tcl-format +msgid "<%s-F>\t\tFind" +msgstr "<%s-F>\t\tTrova" + +#: gitk:1372 +#, tcl-format +msgid "<%s-G>\t\tMove to next find hit" +msgstr "<%s-G>\t\tTrova in avanti" + +#: gitk:1373 +msgid "<Return>\tMove to next find hit" +msgstr "<Return>\tTrova in avanti" + +#: gitk:1374 +msgid "/\t\tMove to next find hit, or redo find" +msgstr "/\t\tTrova in avanti, o cerca di nuovo" + +#: gitk:1375 +msgid "?\t\tMove to previous find hit" +msgstr "?\t\tTrova all'indietro" + +#: gitk:1376 +msgid "f\t\tScroll diff view to next file" +msgstr "f\t\tScorri la vista delle differenze al file successivo" + +#: gitk:1377 +#, 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:1378 +#, 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:1379 +#, tcl-format +msgid "<%s-KP+>\tIncrease font size" +msgstr "<%s-KP+>\tAumenta grandezza carattere" + +#: gitk:1380 +#, tcl-format +msgid "<%s-plus>\tIncrease font size" +msgstr "<%s-plus>\tAumenta grandezza carattere" + +#: gitk:1381 +#, tcl-format +msgid "<%s-KP->\tDecrease font size" +msgstr "<%s-KP->\tDiminuisci grandezza carattere" + +#: gitk:1382 +#, tcl-format +msgid "<%s-minus>\tDecrease font size" +msgstr "<%s-minus>\tDiminuisci grandezza carattere" + +#: gitk:1383 +msgid "<F5>\t\tUpdate" +msgstr "<F5>\t\tAggiorna" + +#: gitk:1896 +msgid "Gitk view definition" +msgstr "Scelta vista Gitk" + +#: gitk:1921 +msgid "Name" +msgstr "Nome" + +#: gitk:1924 +msgid "Remember this view" +msgstr "Ricorda questa vista" + +#: gitk:1928 +msgid "Commits to include (arguments to git rev-list):" +msgstr "Revisioni da includere (argomenti di git rev-list):" + +#: gitk:1935 +msgid "Command to generate more commits to include:" +msgstr "Comando che genera altre revisioni da visualizzare:" + +#: gitk:1942 +msgid "Enter files and directories to include, one per line:" +msgstr "Inserire file e directory da includere, uno per riga:" + +#: gitk:1989 +msgid "Error in commit selection arguments:" +msgstr "Errore negli argomenti di selezione delle revisioni:" + +#: gitk:2043 gitk:2127 gitk:2583 gitk:2597 gitk:3781 gitk:8688 gitk:8689 +msgid "None" +msgstr "Nessuno" + +#: gitk:2531 gitk:4336 gitk:5958 gitk:5973 +msgid "Date" +msgstr "Data" + +#: gitk:2531 gitk:4336 +msgid "CDate" +msgstr "" + +#: gitk:2680 gitk:2685 +msgid "Descendant" +msgstr "Discendente" + +#: gitk:2681 +msgid "Not descendant" +msgstr "Non discendente" + +#: gitk:2688 gitk:2693 +msgid "Ancestor" +msgstr "Ascendente" + +#: gitk:2689 +msgid "Not ancestor" +msgstr "Non ascendente" + +#: gitk:2924 +msgid "Local changes checked in to index but not committed" +msgstr "Modifiche locali presenti nell'indice ma non nell'archivio" + +#: gitk:2954 +msgid "Local uncommitted changes, not checked in to index" +msgstr "Modifiche locali non presenti né nell'archivio né nell'indice" + +#: gitk:4305 +msgid "Searching" +msgstr "Ricerca in corso" + +#: gitk:4767 +msgid "Tags:" +msgstr "Etichette:" + +#: gitk:4784 gitk:4790 gitk:5951 +msgid "Parent" +msgstr "Genitore" + +#: gitk:4795 +msgid "Child" +msgstr "Figlio" + +#: gitk:4804 +msgid "Branch" +msgstr "Ramo" + +#: gitk:4807 +msgid "Follows" +msgstr "Segue" + +#: gitk:4810 +msgid "Precedes" +msgstr "Precede" + +#: gitk:5093 +msgid "Error getting merge diffs:" +msgstr "Errore nella lettura delle differenze di fusione:" + +#: gitk:5778 +msgid "Goto:" +msgstr "Vai a:" + +#: gitk:5780 +msgid "SHA1 ID:" +msgstr "SHA1 ID:" + +#: gitk:5805 +#, tcl-format +msgid "Short SHA1 id %s is ambiguous" +msgstr "La SHA1 id abbreviata %s è ambigua" + +#: gitk:5817 +#, tcl-format +msgid "SHA1 id %s is not known" +msgstr "La SHA1 id %s è sconosciuta" + +#: gitk:5819 +#, tcl-format +msgid "Tag/Head %s is not known" +msgstr "L'etichetta/ramo %s è sconosciuto" + +#: gitk:5961 +msgid "Children" +msgstr "Figli" + +#: gitk:6018 +#, tcl-format +msgid "Reset %s branch to here" +msgstr "Aggiorna il ramo %s a questa revisione" + +#: gitk:6049 +msgid "Top" +msgstr "Inizio" + +#: gitk:6050 +msgid "From" +msgstr "Da" + +#: gitk:6055 +msgid "To" +msgstr "A" + +#: gitk:6078 +msgid "Generate patch" +msgstr "Genera patch" + +#: gitk:6080 +msgid "From:" +msgstr "Da:" + +#: gitk:6089 +msgid "To:" +msgstr "A:" + +#: gitk:6098 +msgid "Reverse" +msgstr "Inverti" + +#: gitk:6100 gitk:6269 +msgid "Output file:" +msgstr "Scrivi sul file:" + +#: gitk:6106 +msgid "Generate" +msgstr "Genera" + +#: gitk:6142 +msgid "Error creating patch:" +msgstr "Errore nella creazione della patch:" + +#: gitk:6164 gitk:6257 gitk:6311 +msgid "ID:" +msgstr "ID:" + +#: gitk:6173 +msgid "Tag name:" +msgstr "Nome etichetta:" + +#: gitk:6177 gitk:6320 +msgid "Create" +msgstr "Crea" + +#: gitk:6192 +msgid "No tag name specified" +msgstr "Nessuna etichetta specificata" + +#: gitk:6196 +#, tcl-format +msgid "Tag \"%s\" already exists" +msgstr "L'etichetta \"%s\" esiste già " + +#: gitk:6202 +msgid "Error creating tag:" +msgstr "Errore nella creazione dell'etichetta:" + +#: gitk:6266 +msgid "Command:" +msgstr "Comando:" + +#: gitk:6274 +msgid "Write" +msgstr "Scrivi" + +#: gitk:6290 +msgid "Error writing commit:" +msgstr "Errore nella scrittura della revisione:" + +#: gitk:6316 +msgid "Name:" +msgstr "Nome:" + +#: gitk:6335 +msgid "Please specify a name for the new branch" +msgstr "Specificare un nome per il nuovo ramo" + +#: gitk:6364 +#, 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:6369 +msgid "Cherry-picking" +msgstr "" + +#: gitk:6381 +msgid "No changes committed" +msgstr "Nessuna modifica archiviata" + +#: gitk:6404 +msgid "Confirm reset" +msgstr "Conferma git reset" + +#: gitk:6406 +#, tcl-format +msgid "Reset branch %s to %s?" +msgstr "Aggiornare il ramo %s a %s?" + +#: gitk:6410 +msgid "Reset type:" +msgstr "Tipo di aggiornamento:" + +#: gitk:6414 +msgid "Soft: Leave working tree and index untouched" +msgstr "Soft: Lascia la direcory di lavoro e l'indice come sono" + +#: gitk:6417 +msgid "Mixed: Leave working tree untouched, reset index" +msgstr "Mixed: Lascia la directory di lavoro come è, aggiorna l'indice" + +#: gitk:6420 +msgid "" +"Hard: Reset working tree and index\n" +"(discard ALL local changes)" +msgstr "" +"Hard: Aggiorna la directory di lavoro e l'indice\n" +"(abbandona TUTTE le modifiche locali)" + +#: gitk:6436 +msgid "Resetting" +msgstr "git reset in corso" + +#: gitk:6493 +msgid "Checking out" +msgstr "Attivazione in corso" + +#: gitk:6523 +msgid "Cannot delete the currently checked-out branch" +msgstr "Impossibile cancellare il ramo attualmente attivo" + +#: gitk:6529 +#, tcl-format +msgid "" +"The commits on branch %s aren't on any other branch.\n" +"Really delete branch %s?" +msgstr "" +"Le revisioni nel ramo %s non sono presenti su altri rami.\n" +"Cancellare il ramo %s?" + +#: gitk:6560 +#, tcl-format +msgid "Tags and heads: %s" +msgstr "Etichette e rami: %s" + +#: gitk:6574 +msgid "Filter" +msgstr "Filtro" + +#: gitk:6868 +msgid "" +"Error reading commit topology information; branch and preceding/following " +"tag information will be incomplete." +msgstr "" +"Errore nella lettura della topologia delle revisioni: le informazioni sul " +"ramo e le etichette precedenti e seguenti saranno incomplete." + +#: gitk:7852 +msgid "Tag" +msgstr "Etichetta" + +#: gitk:7852 +msgid "Id" +msgstr "Id" + +#: gitk:7892 +msgid "Gitk font chooser" +msgstr "Scelta caratteri gitk" + +#: gitk:7909 +msgid "B" +msgstr "B" + +#: gitk:7912 +msgid "I" +msgstr "I" + +#: gitk:8005 +msgid "Gitk preferences" +msgstr "Preferenze gitk" + +#: gitk:8006 +msgid "Commit list display options" +msgstr "Opzioni visualizzazione dell'elenco revisioni" + +#: gitk:8009 +msgid "Maximum graph width (lines)" +msgstr "Larghezza massima del grafico (in linee)" + +#: gitk:8013 +#, tcl-format +msgid "Maximum graph width (% of pane)" +msgstr "Larghezza massima del grafico (% del pannello)" + +#: gitk:8018 +msgid "Show local changes" +msgstr "Mostra modifiche locali" + +#: gitk:8023 +msgid "Auto-select SHA1" +msgstr "Seleziona automaticamente SHA1 hash" + +#: gitk:8028 +msgid "Diff display options" +msgstr "Opzioni di visualizzazione delle differenze" + +#: gitk:8030 +msgid "Tab spacing" +msgstr "Spaziatura tabulazioni" + +#: gitk:8034 +msgid "Display nearby tags" +msgstr "Mostra etichette vicine" + +#: gitk:8039 +msgid "Limit diffs to listed paths" +msgstr "Limita le differenze ai percorsi elencati" + +#: gitk:8044 +msgid "Colors: press to choose" +msgstr "Colori: premere per scegliere" + +#: gitk:8047 +msgid "Background" +msgstr "Sfondo" + +#: gitk:8051 +msgid "Foreground" +msgstr "Primo piano" + +#: gitk:8055 +msgid "Diff: old lines" +msgstr "Diff: vecchie linee" + +#: gitk:8060 +msgid "Diff: new lines" +msgstr "Diff: nuove linee" + +#: gitk:8065 +msgid "Diff: hunk header" +msgstr "Diff: intestazione della sezione" + +#: gitk:8071 +msgid "Select bg" +msgstr "Sfondo selezione" + +#: gitk:8075 +msgid "Fonts: press to choose" +msgstr "Carattere: premere per scegliere" + +#: gitk:8077 +msgid "Main font" +msgstr "Carattere principale" + +#: gitk:8078 +msgid "Diff display font" +msgstr "Carattere per differenze" + +#: gitk:8079 +msgid "User interface font" +msgstr "Carattere per interfaccia utente" + +#: gitk:8095 +#, tcl-format +msgid "Gitk: choose color for %s" +msgstr "Gitk: scegliere un colore per %s" + +#: gitk:8476 +msgid "" +"Sorry, gitk cannot run with this version of Tcl/Tk.\n" +" Gitk requires at least Tcl/Tk 8.4." +msgstr "" +"Questa versione di Tcl/Tk non può avviare gitk.\n" +" Gitk richiede Tcl/Tk versione 8.4 o superiore." + +#: gitk:8565 +msgid "Cannot find a git repository here." +msgstr "Archivio git non trovato." + +#: gitk:8569 +#, tcl-format +msgid "Cannot find the git directory \"%s\"." +msgstr "Directory git \"%s\" non trovata." + +#: gitk:8612 +#, tcl-format +msgid "Ambiguous argument '%s': both revision and filename" +msgstr "Argomento ambiguo: '%s' è sia revisione che nome di file" + +#: gitk:8624 +msgid "Bad arguments to gitk:" +msgstr "Gitk: argomenti errati:" + +#: gitk:8636 +msgid "Couldn't get list of unmerged files:" +msgstr "Impossibile ottenere l'elenco dei file in attesa di fusione:" + +#: gitk:8652 +msgid "No files selected: --merge specified but no files are unmerged." +msgstr "" +"Nessun file selezionato: è stata specificata l'opzione --merge ma non ci " +"sono file in attesa di fusione." + +#: gitk:8655 +msgid "" +"No files selected: --merge specified but no unmerged files are within file " +"limit." +msgstr "" +"Nessun file selezionato: è stata specificata l'opzione --merge ma i file " +"specificati non sono in attesa di fusione." + +#: gitk:8716 +msgid "Command line" +msgstr "Linea di comando" @@ -8,6 +8,12 @@ #include "exec_cmd.h" #include "common-cmds.h" #include "parse-options.h" +#include "run-command.h" + +static struct man_viewer_list { + void (*exec)(const char *); + struct man_viewer_list *next; +} *man_viewer_list; enum help_format { HELP_FORMAT_MAN, @@ -42,6 +48,102 @@ static enum help_format parse_help_format(const char *format) die("unrecognized help format '%s'", format); } +static int check_emacsclient_version(void) +{ + struct strbuf buffer = STRBUF_INIT; + struct child_process ec_process; + const char *argv_ec[] = { "emacsclient", "--version", NULL }; + int version; + + /* emacsclient prints its version number on stderr */ + memset(&ec_process, 0, sizeof(ec_process)); + ec_process.argv = argv_ec; + ec_process.err = -1; + ec_process.stdout_to_stderr = 1; + if (start_command(&ec_process)) { + fprintf(stderr, "Failed to start emacsclient.\n"); + return -1; + } + strbuf_read(&buffer, ec_process.err, 20); + close(ec_process.err); + + /* + * Don't bother checking return value, because "emacsclient --version" + * seems to always exits with code 1. + */ + finish_command(&ec_process); + + if (prefixcmp(buffer.buf, "emacsclient")) { + fprintf(stderr, "Failed to parse emacsclient version.\n"); + strbuf_release(&buffer); + return -1; + } + + strbuf_remove(&buffer, 0, strlen("emacsclient")); + version = atoi(buffer.buf); + + if (version < 22) { + fprintf(stderr, + "emacsclient version '%d' too old (< 22).\n", + version); + strbuf_release(&buffer); + return -1; + } + + strbuf_release(&buffer); + return 0; +} + +static void exec_woman_emacs(const char *page) +{ + if (!check_emacsclient_version()) { + /* This works only with emacsclient version >= 22. */ + struct strbuf man_page = STRBUF_INIT; + strbuf_addf(&man_page, "(woman \"%s\")", page); + execlp("emacsclient", "emacsclient", "-e", man_page.buf, NULL); + } +} + +static void exec_man_konqueror(const char *page) +{ + const char *display = getenv("DISPLAY"); + if (display && *display) { + struct strbuf man_page = STRBUF_INIT; + strbuf_addf(&man_page, "man:%s(1)", page); + execlp("kfmclient", "kfmclient", "newTab", man_page.buf, NULL); + } +} + +static void exec_man_man(const char *page) +{ + execlp("man", "man", page, NULL); +} + +static void do_add_man_viewer(void (*exec)(const char *)) +{ + struct man_viewer_list **p = &man_viewer_list; + + while (*p) + p = &((*p)->next); + *p = xmalloc(sizeof(**p)); + (*p)->next = NULL; + (*p)->exec = exec; +} + +static int add_man_viewer(const char *value) +{ + if (!strcasecmp(value, "man")) + do_add_man_viewer(exec_man_man); + else if (!strcasecmp(value, "woman")) + do_add_man_viewer(exec_woman_emacs); + else if (!strcasecmp(value, "konqueror")) + do_add_man_viewer(exec_man_konqueror); + else + warning("'%s': unsupported man viewer.", value); + + return 0; +} + static int git_help_config(const char *var, const char *value) { if (!strcmp(var, "help.format")) { @@ -50,6 +152,11 @@ static int git_help_config(const char *var, const char *value) help_format = parse_help_format(value); return 0; } + if (!strcmp(var, "man.viewer")) { + if (!value) + return config_error_nonbool(var); + return add_man_viewer(value); + } return git_default_config(var, value); } @@ -347,9 +454,16 @@ static void setup_man_path(void) static void show_man_page(const char *git_cmd) { + struct man_viewer_list *viewer; const char *page = cmd_to_page(git_cmd); + setup_man_path(); - execlp("man", "man", page, NULL); + for (viewer = man_viewer_list; viewer; viewer = viewer->next) + { + viewer->exec(page); /* will return when unable */ + } + exec_man_man(page); + die("no man viewer handled the request"); } static void show_info_page(const char *git_cmd) diff --git a/log-tree.c b/log-tree.c index 608f697cf3..5b2963998c 100644 --- a/log-tree.c +++ b/log-tree.c @@ -138,10 +138,14 @@ static int has_non_ascii(const char *s) } void log_write_email_headers(struct rev_info *opt, const char *name, - const char **subject_p, const char **extra_headers_p) + const char **subject_p, + const char **extra_headers_p, + int *need_8bit_cte_p) { const char *subject = NULL; const char *extra_headers = opt->extra_headers; + + *need_8bit_cte_p = 0; /* unknown */ if (opt->total > 0) { static char buffer[64]; snprintf(buffer, sizeof(buffer), @@ -169,6 +173,7 @@ void log_write_email_headers(struct rev_info *opt, const char *name, if (opt->mime_boundary) { static char subject_buffer[1024]; static char buffer[1024]; + *need_8bit_cte_p = -1; /* NEVER */ snprintf(subject_buffer, sizeof(subject_buffer) - 1, "%s" "MIME-Version: 1.0\n" @@ -212,6 +217,7 @@ void show_log(struct rev_info *opt, const char *sep) int abbrev_commit = opt->abbrev_commit ? opt->abbrev : 40; const char *extra; const char *subject = NULL, *extra_headers = opt->extra_headers; + int need_8bit_cte = 0; opt->loginfo = NULL; if (!opt->verbose_header) { @@ -255,7 +261,8 @@ void show_log(struct rev_info *opt, const char *sep) if (opt->commit_format == CMIT_FMT_EMAIL) { log_write_email_headers(opt, sha1_to_hex(commit->object.sha1), - &subject, &extra_headers); + &subject, &extra_headers, + &need_8bit_cte); } else if (opt->commit_format != CMIT_FMT_USERFORMAT) { fputs(diff_get_color_opt(&opt->diffopt, DIFF_COMMIT), stdout); if (opt->commit_format != CMIT_FMT_ONELINE) @@ -299,9 +306,11 @@ void show_log(struct rev_info *opt, const char *sep) * And then the pretty-printed message itself */ strbuf_init(&msgbuf, 0); + if (need_8bit_cte >= 0) + need_8bit_cte = has_non_ascii(opt->add_signoff); pretty_print_commit(opt->commit_format, commit, &msgbuf, abbrev, subject, extra_headers, opt->date_mode, - has_non_ascii(opt->add_signoff)); + need_8bit_cte); if (opt->add_signoff) append_signoff(&msgbuf, opt->add_signoff); diff --git a/log-tree.h b/log-tree.h index 0cc9344eab..8946ff377c 100644 --- a/log-tree.h +++ b/log-tree.h @@ -14,6 +14,8 @@ int log_tree_opt_parse(struct rev_info *, const char **, int); void show_log(struct rev_info *opt, const char *sep); void show_decorations(struct commit *commit); void log_write_email_headers(struct rev_info *opt, const char *name, - const char **subject_p, const char **extra_headers_p); + const char **subject_p, + const char **extra_headers_p, + int *need_8bit_cte_p); #endif @@ -636,7 +636,7 @@ void pp_title_line(enum cmit_fmt fmt, const char *subject, const char *after_subject, const char *encoding, - int plain_non_ascii) + int need_8bit_cte) { struct strbuf title; @@ -669,7 +669,7 @@ void pp_title_line(enum cmit_fmt fmt, } strbuf_addch(sb, '\n'); - if (plain_non_ascii) { + if (need_8bit_cte > 0) { const char *header_fmt = "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=%s\n" @@ -718,9 +718,9 @@ void pp_remainder(enum cmit_fmt fmt, } void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit, - struct strbuf *sb, int abbrev, - const char *subject, const char *after_subject, - enum date_mode dmode, int plain_non_ascii) + struct strbuf *sb, int abbrev, + const char *subject, const char *after_subject, + enum date_mode dmode, int need_8bit_cte) { unsigned long beginning_of_body; int indent = 4; @@ -746,13 +746,11 @@ void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit, if (fmt == CMIT_FMT_ONELINE || fmt == CMIT_FMT_EMAIL) indent = 0; - /* After-subject is used to pass in Content-Type: multipart - * MIME header; in that case we do not have to do the - * plaintext content type even if the commit message has - * non 7-bit ASCII character. Otherwise, check if we need - * to say this is not a 7-bit ASCII. + /* + * We need to check and emit Content-type: to mark it + * as 8-bit if we haven't done so. */ - if (fmt == CMIT_FMT_EMAIL && !after_subject) { + if (fmt == CMIT_FMT_EMAIL && need_8bit_cte == 0) { int i, ch, in_body; for (in_body = i = 0; (ch = msg[i]); i++) { @@ -765,7 +763,7 @@ void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit, in_body = 1; } else if (non_ascii(ch)) { - plain_non_ascii = 1; + need_8bit_cte = 1; break; } } @@ -790,7 +788,7 @@ void pretty_print_commit(enum cmit_fmt fmt, const struct commit *commit, /* These formats treat the title line specially. */ if (fmt == CMIT_FMT_ONELINE || fmt == CMIT_FMT_EMAIL) pp_title_line(fmt, &msg, sb, subject, - after_subject, encoding, plain_non_ascii); + after_subject, encoding, need_8bit_cte); beginning_of_body = sb->len; if (fmt != CMIT_FMT_ONELINE) @@ -393,42 +393,123 @@ static void read_config(void) alias_all_urls(); } -struct refspec *parse_ref_spec(int nr_refspec, const char **refspec) +static struct refspec *parse_refspec_internal(int nr_refspec, const char **refspec, int fetch) { int i; + int st; struct refspec *rs = xcalloc(sizeof(*rs), nr_refspec); + for (i = 0; i < nr_refspec; i++) { - const char *sp, *ep, *gp; - sp = refspec[i]; - if (*sp == '+') { + size_t llen, rlen; + int is_glob; + const char *lhs, *rhs; + + llen = rlen = is_glob = 0; + + lhs = refspec[i]; + if (*lhs == '+') { rs[i].force = 1; - sp++; + lhs++; + } + + rhs = strrchr(lhs, ':'); + if (rhs) { + rhs++; + rlen = strlen(rhs); + is_glob = (2 <= rlen && !strcmp(rhs + rlen - 2, "/*")); + rs[i].dst = xstrndup(rhs, rlen - is_glob * 2); } - gp = strchr(sp, '*'); - ep = strchr(sp, ':'); - if (gp && ep && gp > ep) - gp = NULL; - if (ep) { - if (ep[1]) { - const char *glob = strchr(ep + 1, '*'); - if (!glob) - gp = NULL; - if (gp) - rs[i].dst = xstrndup(ep + 1, - glob - ep - 1); - else - rs[i].dst = xstrdup(ep + 1); + + llen = (rhs ? (rhs - lhs - 1) : strlen(lhs)); + if (is_glob != (2 <= llen && !memcmp(lhs + llen - 2, "/*", 2))) + goto invalid; + + if (is_glob) { + llen -= 2; + rlen -= 2; + } + rs[i].pattern = is_glob; + rs[i].src = xstrndup(lhs, llen); + + if (fetch) { + /* + * LHS + * - empty is allowed; it means HEAD. + * - otherwise it must be a valid looking ref. + */ + if (!*rs[i].src) + ; /* empty is ok */ + else { + st = check_ref_format(rs[i].src); + if (st && st != CHECK_REF_FORMAT_ONELEVEL) + goto invalid; + } + /* + * RHS + * - missing is allowed. + * - empty is ok; it means not to store. + * - otherwise it must be a valid looking ref. + */ + if (!rs[i].dst) { + ; /* ok */ + } else if (!*rs[i].dst) { + ; /* ok */ + } else { + st = check_ref_format(rs[i].dst); + if (st && st != CHECK_REF_FORMAT_ONELEVEL) + goto invalid; } } else { - ep = sp + strlen(sp); - } - if (gp) { - rs[i].pattern = 1; - ep = gp; + /* + * LHS + * - empty is allowed; it means delete. + * - when wildcarded, it must be a valid looking ref. + * - otherwise, it must be an extended SHA-1, but + * there is no existing way to validate this. + */ + if (!*rs[i].src) + ; /* empty is ok */ + else if (is_glob) { + st = check_ref_format(rs[i].src); + if (st && st != CHECK_REF_FORMAT_ONELEVEL) + goto invalid; + } + else + ; /* anything goes, for now */ + /* + * RHS + * - missing is allowed, but LHS then must be a + * valid looking ref. + * - empty is not allowed. + * - otherwise it must be a valid looking ref. + */ + if (!rs[i].dst) { + st = check_ref_format(rs[i].src); + if (st && st != CHECK_REF_FORMAT_ONELEVEL) + goto invalid; + } else if (!*rs[i].dst) { + goto invalid; + } else { + st = check_ref_format(rs[i].dst); + if (st && st != CHECK_REF_FORMAT_ONELEVEL) + goto invalid; + } } - rs[i].src = xstrndup(sp, ep - sp); } return rs; + + invalid: + die("Invalid refspec '%s'", refspec[i]); +} + +struct refspec *parse_fetch_refspec(int nr_refspec, const char **refspec) +{ + return parse_refspec_internal(nr_refspec, refspec, 1); +} + +struct refspec *parse_push_refspec(int nr_refspec, const char **refspec) +{ + return parse_refspec_internal(nr_refspec, refspec, 0); } static int valid_remote_nick(const char *name) @@ -459,8 +540,8 @@ struct remote *remote_get(const char *name) add_url_alias(ret, name); if (!ret->url) return NULL; - ret->fetch = parse_ref_spec(ret->fetch_refspec_nr, ret->fetch_refspec); - ret->push = parse_ref_spec(ret->push_refspec_nr, ret->push_refspec); + ret->fetch = parse_fetch_refspec(ret->fetch_refspec_nr, ret->fetch_refspec); + ret->push = parse_push_refspec(ret->push_refspec_nr, ret->push_refspec); return ret; } @@ -473,11 +554,11 @@ int for_each_remote(each_remote_fn fn, void *priv) if (!r) continue; if (!r->fetch) - r->fetch = parse_ref_spec(r->fetch_refspec_nr, - r->fetch_refspec); + r->fetch = parse_fetch_refspec(r->fetch_refspec_nr, + r->fetch_refspec); if (!r->push) - r->push = parse_ref_spec(r->push_refspec_nr, - r->push_refspec); + r->push = parse_push_refspec(r->push_refspec_nr, + r->push_refspec); result = fn(r, priv); } return result; @@ -543,7 +624,8 @@ int remote_find_tracking(struct remote *remote, struct refspec *refspec) if (!fetch->dst) continue; if (fetch->pattern) { - if (!prefixcmp(needle, key)) { + if (!prefixcmp(needle, key) && + needle[strlen(key)] == '/') { *result = xmalloc(strlen(value) + strlen(needle) - strlen(key) + 1); @@ -790,7 +872,9 @@ static const struct refspec *check_pattern_match(const struct refspec *rs, { int i; for (i = 0; i < rs_nr; i++) { - if (rs[i].pattern && !prefixcmp(src->name, rs[i].src)) + if (rs[i].pattern && + !prefixcmp(src->name, rs[i].src) && + src->name[strlen(rs[i].src)] == '/') return rs + i; } return NULL; @@ -805,7 +889,7 @@ int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail, int nr_refspec, const char **refspec, int flags) { struct refspec *rs = - parse_ref_spec(nr_refspec, (const char **) refspec); + parse_push_refspec(nr_refspec, (const char **) refspec); int send_all = flags & MATCH_REFS_ALL; int send_mirror = flags & MATCH_REFS_MIRROR; @@ -989,7 +1073,7 @@ int get_fetch_map(const struct ref *remote_refs, struct ref ***tail, int missing_ok) { - struct ref *ref_map, *rm; + struct ref *ref_map, **rmp; if (refspec->pattern) { ref_map = get_expanded_map(remote_refs, refspec); @@ -1006,10 +1090,20 @@ int get_fetch_map(const struct ref *remote_refs, } } - for (rm = ref_map; rm; rm = rm->next) { - if (rm->peer_ref && check_ref_format(rm->peer_ref->name + 5)) - die("* refusing to create funny ref '%s' locally", - rm->peer_ref->name); + for (rmp = &ref_map; *rmp; ) { + if ((*rmp)->peer_ref) { + int st = check_ref_format((*rmp)->peer_ref->name + 5); + if (st && st != CHECK_REF_FORMAT_ONELEVEL) { + struct ref *ignore = *rmp; + error("* Ignoring funny ref '%s' locally", + (*rmp)->peer_ref->name); + *rmp = (*rmp)->next; + free(ignore->peer_ref); + free(ignore); + continue; + } + } + rmp = &((*rmp)->next); } if (ref_map) @@ -67,7 +67,8 @@ void free_refs(struct ref *ref); */ void ref_remove_duplicates(struct ref *ref_map); -struct refspec *parse_ref_spec(int nr_refspec, const char **refspec); +struct refspec *parse_fetch_refspec(int nr_refspec, const char **refspec); +struct refspec *parse_push_refspec(int nr_refspec, const char **refspec); int match_refs(struct ref *src, struct ref *dst, struct ref ***dst_tail, int nr_refspec, const char **refspec, int all); diff --git a/revision.c b/revision.c index 63bf2c5c2d..196fedc9d1 100644 --- a/revision.c +++ b/revision.c @@ -564,14 +564,39 @@ static void cherry_pick_list(struct commit_list *list, struct rev_info *revs) free_patch_ids(&ids); } -static void add_to_list(struct commit_list **p, struct commit *commit, struct commit_list *n) +/* How many extra uninteresting commits we want to see.. */ +#define SLOP 5 + +static int still_interesting(struct commit_list *src, unsigned long date, int slop) { - p = &commit_list_insert(commit, p)->next; - *p = n; + /* + * No source list at all? We're definitely done.. + */ + if (!src) + return 0; + + /* + * Does the destination list contain entries with a date + * before the source list? Definitely _not_ done. + */ + if (date < src->item->date) + return SLOP; + + /* + * Does the source list still have interesting commits in + * it? Definitely not done.. + */ + if (!everybody_uninteresting(src)) + return SLOP; + + /* Ok, we're closing in.. */ + return slop-1; } static int limit_list(struct rev_info *revs) { + int slop = SLOP; + unsigned long date = ~0ul; struct commit_list *list = revs->commits; struct commit_list *newlist = NULL; struct commit_list **p = &newlist; @@ -591,16 +616,19 @@ static int limit_list(struct rev_info *revs) return -1; if (obj->flags & UNINTERESTING) { mark_parents_uninteresting(commit); - if (everybody_uninteresting(list)) { - if (revs->show_all) - add_to_list(p, commit, list); - break; - } - if (!revs->show_all) - continue; + if (revs->show_all) + p = &commit_list_insert(commit, p)->next; + slop = still_interesting(list, date, slop); + if (slop) + continue; + /* If showing all, add the whole pending list to the end */ + if (revs->show_all) + *p = list; + break; } if (revs->min_age != -1 && (commit->date > revs->min_age)) continue; + date = commit->date; p = &commit_list_insert(commit, p)->next; show = show_early_output; diff --git a/sha1_name.c b/sha1_name.c index 8b6c76f68e..491d2e7ebf 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -407,18 +407,22 @@ static int get_nth_ancestor(const char *name, int len, unsigned char *result, int generation) { unsigned char sha1[20]; - int ret = get_sha1_1(name, len, sha1); + struct commit *commit; + int ret; + + ret = get_sha1_1(name, len, sha1); if (ret) return ret; + commit = lookup_commit_reference(sha1); + if (!commit) + return -1; while (generation--) { - struct commit *commit = lookup_commit_reference(sha1); - - if (!commit || parse_commit(commit) || !commit->parents) + if (parse_commit(commit) || !commit->parents) return -1; - hashcpy(sha1, commit->parents->item->object.sha1); + commit = commit->parents->item; } - hashcpy(result, sha1); + hashcpy(result, commit->object.sha1); return 0; } @@ -544,9 +548,8 @@ static int get_sha1_1(const char *name, int len, unsigned char *sha1) int ret, has_suffix; const char *cp; - /* "name~3" is "name^^^", - * "name~" and "name~0" are name -- not "name^0"! - * "name^" is not "name^0"; it is "name^1". + /* + * "name~3" is "name^^^", "name~" is "name~1", and "name^" is "name^1". */ has_suffix = 0; for (cp = name + len - 1; name <= cp; cp--) { @@ -564,11 +567,10 @@ static int get_sha1_1(const char *name, int len, unsigned char *sha1) cp++; while (cp < name + len) num = num * 10 + *cp++ - '0'; - if (has_suffix == '^') { - if (!num && len1 == len - 1) - num = 1; + if (!num && len1 == len - 1) + num = 1; + if (has_suffix == '^') return get_parent(name, len1, sha1, num); - } /* else if (has_suffix == '~') -- goes without saying */ return get_nth_ancestor(name, len1, sha1, num); } diff --git a/t/diff-lib.sh b/t/diff-lib.sh index 7dc6d7eb1e..28b941c493 100644 --- a/t/diff-lib.sh +++ b/t/diff-lib.sh @@ -21,8 +21,8 @@ compare_diff_raw_z () { # Also we do not check SHA1 hash generation in this test, which # is a job for t0000-basic.sh - tr '\000' '\012' <"$1" | sed -e "$sanitize_diff_raw_z" >.tmp-1 - tr '\000' '\012' <"$2" | sed -e "$sanitize_diff_raw_z" >.tmp-2 + perl -pe 'y/\000/\012/' <"$1" | sed -e "$sanitize_diff_raw_z" >.tmp-1 + perl -pe 'y/\000/\012/' <"$2" | sed -e "$sanitize_diff_raw_z" >.tmp-2 git diff .tmp-1 .tmp-2 && rm -f .tmp-1 .tmp-2 } diff --git a/t/lib-git-svn.sh b/t/lib-git-svn.sh index 9ee35e7901..9decd2e1e8 100644 --- a/t/lib-git-svn.sh +++ b/t/lib-git-svn.sh @@ -49,8 +49,28 @@ poke() { test-chmtime +1 "$1" } -SVN_HTTPD_MODULE_PATH=${SVN_HTTPD_MODULE_PATH-'/usr/lib/apache2/modules'} -SVN_HTTPD_PATH=${SVN_HTTPD_PATH-'/usr/sbin/apache2'} +for d in \ + "$SVN_HTTPD_PATH" \ + /usr/sbin/apache2 \ + /usr/sbin/httpd \ +; do + if test -f "$d" + then + SVN_HTTPD_PATH="$d" + break + fi +done +for d in \ + "$SVN_HTTPD_MODULE_PATH" \ + /usr/lib/apache2/modules \ + /usr/libexec/apache2 \ +; do + if test -d "$d" + then + SVN_HTTPD_MODULE_PATH="$d" + break + fi +done start_httpd () { if test -z "$SVN_HTTPD_PORT" @@ -66,6 +86,7 @@ ServerName "git-svn test" ServerRoot "$GIT_DIR" DocumentRoot "$GIT_DIR" PidFile "$GIT_DIR/httpd.pid" +LockFile logs/accept.lock Listen 127.0.0.1:$SVN_HTTPD_PORT LoadModule dav_module $SVN_HTTPD_MODULE_PATH/mod_dav.so LoadModule dav_svn_module $SVN_HTTPD_MODULE_PATH/mod_dav_svn.so diff --git a/t/t0003-attributes.sh b/t/t0003-attributes.sh index 47f08a46c2..3faf135e38 100755 --- a/t/t0003-attributes.sh +++ b/t/t0003-attributes.sh @@ -11,7 +11,7 @@ attr_check () { git check-attr test -- "$path" >actual && echo "$path: test: $2" >expect && - diff -u expect actual + test_cmp expect actual } diff --git a/t/t0020-crlf.sh b/t/t0020-crlf.sh index 90ea081db6..2bfeac986e 100755 --- a/t/t0020-crlf.sh +++ b/t/t0020-crlf.sh @@ -5,7 +5,7 @@ test_description='CRLF conversion' . ./test-lib.sh q_to_nul () { - tr Q '\000' + perl -pe 'y/Q/\000/' } q_to_cr () { diff --git a/t/t0022-crlf-rename.sh b/t/t0022-crlf-rename.sh index 430a1d1d38..7d1ce2d056 100755 --- a/t/t0022-crlf-rename.sh +++ b/t/t0022-crlf-rename.sh @@ -26,7 +26,7 @@ test_expect_success 'diff -M' ' git diff-tree -M -r --name-status HEAD^ HEAD | sed -e "s/R[0-9]*/RNUM/" >actual && echo "RNUM sample elpmas" >expect && - diff -u expect actual + test_cmp expect actual ' diff --git a/t/t0030-stripspace.sh b/t/t0030-stripspace.sh index 818c8621f2..3ecdd6626a 100755 --- a/t/t0030-stripspace.sh +++ b/t/t0030-stripspace.sh @@ -245,12 +245,12 @@ test_expect_success \ test_expect_success \ 'text plus spaces without newline at end should not show spaces' ' - ! (printf "$ttt$sss" | git stripspace | grep -q " ") && - ! (printf "$ttt$ttt$sss" | git stripspace | grep -q " ") && - ! (printf "$ttt$ttt$ttt$sss" | git stripspace | grep -q " ") && - ! (printf "$ttt$sss$sss" | git stripspace | grep -q " ") && - ! (printf "$ttt$ttt$sss$sss" | git stripspace | grep -q " ") && - ! (printf "$ttt$sss$sss$sss" | git stripspace | grep -q " ") + ! (printf "$ttt$sss" | git stripspace | grep " " >/dev/null) && + ! (printf "$ttt$ttt$sss" | git stripspace | grep " " >/dev/null) && + ! (printf "$ttt$ttt$ttt$sss" | git stripspace | grep " " >/dev/null) && + ! (printf "$ttt$sss$sss" | git stripspace | grep " " >/dev/null) && + ! (printf "$ttt$ttt$sss$sss" | git stripspace | grep " " >/dev/null) && + ! (printf "$ttt$sss$sss$sss" | git stripspace | grep " " >/dev/null) ' test_expect_success \ @@ -282,12 +282,12 @@ test_expect_success \ test_expect_success \ 'text plus spaces at end should not show spaces' ' - ! (echo "$ttt$sss" | git stripspace | grep -q " ") && - ! (echo "$ttt$ttt$sss" | git stripspace | grep -q " ") && - ! (echo "$ttt$ttt$ttt$sss" | git stripspace | grep -q " ") && - ! (echo "$ttt$sss$sss" | git stripspace | grep -q " ") && - ! (echo "$ttt$ttt$sss$sss" | git stripspace | grep -q " ") && - ! (echo "$ttt$sss$sss$sss" | git stripspace | grep -q " ") + ! (echo "$ttt$sss" | git stripspace | grep " " >/dev/null) && + ! (echo "$ttt$ttt$sss" | git stripspace | grep " " >/dev/null) && + ! (echo "$ttt$ttt$ttt$sss" | git stripspace | grep " " >/dev/null) && + ! (echo "$ttt$sss$sss" | git stripspace | grep " " >/dev/null) && + ! (echo "$ttt$ttt$sss$sss" | git stripspace | grep " " >/dev/null) && + ! (echo "$ttt$sss$sss$sss" | git stripspace | grep " " >/dev/null) ' test_expect_success \ @@ -341,11 +341,11 @@ test_expect_success \ test_expect_success \ 'spaces without newline at end should not show spaces' ' - ! (printf "" | git stripspace | grep -q " ") && - ! (printf "$sss" | git stripspace | grep -q " ") && - ! (printf "$sss$sss" | git stripspace | grep -q " ") && - ! (printf "$sss$sss$sss" | git stripspace | grep -q " ") && - ! (printf "$sss$sss$sss$sss" | git stripspace | grep -q " ") + ! (printf "" | git stripspace | grep " " >/dev/null) && + ! (printf "$sss" | git stripspace | grep " " >/dev/null) && + ! (printf "$sss$sss" | git stripspace | grep " " >/dev/null) && + ! (printf "$sss$sss$sss" | git stripspace | grep " " >/dev/null) && + ! (printf "$sss$sss$sss$sss" | git stripspace | grep " " >/dev/null) ' test_expect_success \ diff --git a/t/t0050-filesystem.sh b/t/t0050-filesystem.sh index cd088b37f0..3fbad77811 100755 --- a/t/t0050-filesystem.sh +++ b/t/t0050-filesystem.sh @@ -4,8 +4,8 @@ test_description='Various filesystem issues' . ./test-lib.sh -auml=`perl -CO -e 'print pack("U",0x00E4)'` -aumlcdiar=`perl -CO -e 'print pack("U",0x0061).pack("U",0x0308)'` +auml=`printf '\xc3\xa4'` +aumlcdiar=`printf '\x61\xcc\x88'` test_expect_success 'see if we expect ' ' diff --git a/t/t1000-read-tree-m-3way.sh b/t/t1000-read-tree-m-3way.sh index 6c065bfa21..17f519f547 100755 --- a/t/t1000-read-tree-m-3way.sh +++ b/t/t1000-read-tree-m-3way.sh @@ -214,7 +214,7 @@ test_expect_success '1 - must not have an entry not in A.' " rm -f .git/index XX && echo XX >XX && git update-index --add XX && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -254,7 +254,7 @@ test_expect_success \ cp .orig-A/AN AN && echo extra >>AN && git update-index --add AN && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -271,7 +271,7 @@ test_expect_success \ cp .orig-A/AA AA && git update-index --add AA && echo extra >>AA && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -280,7 +280,7 @@ test_expect_success \ cp .orig-A/AA AA && echo extra >>AA && git update-index --add AA && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -306,7 +306,7 @@ test_expect_success \ cp .orig-A/LL LL && echo extra >>LL && git update-index --add LL && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -314,7 +314,7 @@ test_expect_success \ rm -f .git/index DD && echo DD >DD git update-index --add DD && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -322,7 +322,7 @@ test_expect_success \ rm -f .git/index DM && cp .orig-B/DM DM && git update-index --add DM && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -330,7 +330,7 @@ test_expect_success \ rm -f .git/index DN && cp .orig-B/DN DN && git update-index --add DN && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -347,7 +347,7 @@ test_expect_success \ cp .orig-A/MD MD && git update-index --add MD && echo extra >>MD && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -356,7 +356,7 @@ test_expect_success \ cp .orig-A/MD MD && echo extra >>MD && git update-index --add MD && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -373,7 +373,7 @@ test_expect_success \ cp .orig-A/ND ND && git update-index --add ND && echo extra >>ND && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -382,7 +382,7 @@ test_expect_success \ cp .orig-A/ND ND && echo extra >>ND && git update-index --add ND && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -399,7 +399,7 @@ test_expect_success \ cp .orig-A/MM MM && git update-index --add MM && echo extra >>MM && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -408,7 +408,7 @@ test_expect_success \ cp .orig-A/MM MM && echo extra >>MM && git update-index --add MM && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -434,7 +434,7 @@ test_expect_success \ cp .orig-A/SS SS && echo extra >>SS && git update-index --add SS && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -477,7 +477,7 @@ test_expect_success \ cp .orig-A/NM NM && git update-index --add NM && echo extra >>NM && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -486,7 +486,7 @@ test_expect_success \ cp .orig-A/NM NM && echo extra >>NM && git update-index --add NM && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " test_expect_success \ @@ -512,7 +512,7 @@ test_expect_success \ cp .orig-A/NN NN && echo extra >>NN && git update-index --add NN && - ! git read-tree -m $tree_O $tree_A $tree_B + test_must_fail git read-tree -m $tree_O $tree_A $tree_B " # #16 diff --git a/t/t1004-read-tree-m-u-wf.sh b/t/t1004-read-tree-m-u-wf.sh index d609a551ae..570d3729bd 100755 --- a/t/t1004-read-tree-m-u-wf.sh +++ b/t/t1004-read-tree-m-u-wf.sh @@ -116,4 +116,126 @@ test_expect_success 'three-way not complaining on an untracked file' ' git read-tree -m -u --exclude-per-directory=.gitignore branch-point master side ' +test_expect_success '3-way not overwriting local changes (setup)' ' + + git reset --hard && + git checkout -b side-a branch-point && + echo >>file1 "new line to be kept in the merge result" && + git commit -a -m "side-a changes file1" && + git checkout -b side-b branch-point && + echo >>file2 "new line to be kept in the merge result" && + git commit -a -m "side-b changes file2" && + git checkout side-a + +' + +test_expect_success '3-way not overwriting local changes (our side)' ' + + # At this point, file1 from side-a should be kept as side-b + # did not touch it. + + git reset --hard && + + echo >>file1 "local changes" && + git read-tree -m -u branch-point side-a side-b && + grep "new line to be kept" file1 && + grep "local changes" file1 + +' + +test_expect_success '3-way not overwriting local changes (their side)' ' + + # At this point, file2 from side-b should be taken as side-a + # did not touch it. + + git reset --hard && + + echo >>file2 "local changes" && + test_must_fail git read-tree -m -u branch-point side-a side-b && + ! grep "new line to be kept" file2 && + grep "local changes" file2 + +' + +test_expect_success 'funny symlink in work tree' ' + + git reset --hard && + git checkout -b sym-b side-b && + mkdir -p a && + >a/b && + git add a/b && + git commit -m "side adds a/b" && + + rm -fr a && + git checkout -b sym-a side-a && + mkdir -p a && + ln -s ../b a/b && + git add a/b && + git commit -m "we add a/b" && + + git read-tree -m -u sym-a sym-a sym-b + +' + +test_expect_success 'funny symlink in work tree, un-unlink-able' ' + + rm -fr a b && + git reset --hard && + + git checkout sym-a && + chmod a-w a && + test_must_fail git read-tree -m -u sym-a sym-a sym-b + +' + +# clean-up from the above test +chmod a+w a +rm -fr a b + +test_expect_success 'D/F setup' ' + + git reset --hard && + + git checkout side-a && + rm -f subdir/file2 && + mkdir subdir/file2 && + echo qfwfq >subdir/file2/another && + git add subdir/file2/another && + test_tick && + git commit -m "side-a changes file2 to directory" + +' + +test_expect_success 'D/F' ' + + git checkout side-b && + git read-tree -m -u branch-point side-b side-a && + git ls-files -u >actual && + ( + a=$(git rev-parse branch-point:subdir/file2) + b=$(git rev-parse side-a:subdir/file2/another) + echo "100644 $a 1 subdir/file2" + echo "100644 $a 2 subdir/file2" + echo "100644 $b 3 subdir/file2/another" + ) >expect && + test_cmp actual expect + +' + +test_expect_success 'D/F resolve' ' + + git reset --hard && + git checkout side-b && + git merge-resolve branch-point -- side-b side-a + +' + +test_expect_success 'D/F recursive' ' + + git reset --hard && + git checkout side-b && + git merge-recursive branch-point -- side-b side-a + +' + test_done diff --git a/t/t1005-read-tree-reset.sh b/t/t1005-read-tree-reset.sh index 8c4556408e..b0d31f5a9b 100755 --- a/t/t1005-read-tree-reset.sh +++ b/t/t1005-read-tree-reset.sh @@ -24,7 +24,7 @@ test_expect_success 'setup' ' test_expect_success 'reset should work' ' git read-tree -u --reset HEAD^ && git ls-files >actual && - diff -u expect actual + test_cmp expect actual ' test_done diff --git a/t/t1300-repo-config.sh b/t/t1300-repo-config.sh index 4928a57114..b36a9012ec 100755 --- a/t/t1300-repo-config.sh +++ b/t/t1300-repo-config.sh @@ -657,12 +657,12 @@ Qsection.sub=section.val4 Qsection.sub=section.val5Q EOF -git config --null --list | tr '\000' 'Q' > result +git config --null --list | perl -pe 'y/\000/Q/' > result echo >>result test_expect_success '--null --list' 'cmp result expect' -git config --null --get-regexp 'val[0-9]' | tr '\000' 'Q' > result +git config --null --get-regexp 'val[0-9]' | perl -pe 'y/\000/Q/' > result echo >>result test_expect_success '--null --get-regexp' 'cmp result expect' diff --git a/t/t1410-reflog.sh b/t/t1410-reflog.sh index 24476bede5..73f830db23 100755 --- a/t/t1410-reflog.sh +++ b/t/t1410-reflog.sh @@ -202,22 +202,4 @@ test_expect_success 'delete' ' ' -test_expect_success 'prune --expire' ' - - before=$(git count-objects | sed "s/ .*//") && - BLOB=$(echo aleph | git hash-object -w --stdin) && - BLOB_FILE=.git/objects/$(echo $BLOB | sed "s/^../&\//") && - test $((1 + $before)) = $(git count-objects | sed "s/ .*//") && - test -f $BLOB_FILE && - git reset --hard && - git prune --expire=1.hour.ago && - test $((1 + $before)) = $(git count-objects | sed "s/ .*//") && - test -f $BLOB_FILE && - test-chmtime -86500 $BLOB_FILE && - git prune --expire 1.day && - test $before = $(git count-objects | sed "s/ .*//") && - ! test -f $BLOB_FILE - -' - test_done diff --git a/t/t2200-add-update.sh b/t/t2200-add-update.sh index 24f892f793..b664341926 100755 --- a/t/t2200-add-update.sh +++ b/t/t2200-add-update.sh @@ -62,7 +62,7 @@ test_expect_success 'cache tree has not been corrupted' ' sed -e "s/ 0 / /" >expect && git ls-tree -r $(git write-tree) | sed -e "s/ blob / /" >current && - diff -u expect current + test_cmp expect current ' diff --git a/t/t3001-ls-files-others-exclude.sh b/t/t3001-ls-files-others-exclude.sh index b4297bacf2..55f057cebe 100755 --- a/t/t3001-ls-files-others-exclude.sh +++ b/t/t3001-ls-files-others-exclude.sh @@ -97,7 +97,7 @@ cat > expect << EOF EOF test_expect_success 'git-status honours core.excludesfile' \ - 'diff -u expect output' + 'test_cmp expect output' test_expect_success 'trailing slash in exclude allows directory match(1)' ' diff --git a/t/t3050-subprojects-fetch.sh b/t/t3050-subprojects-fetch.sh index 34f26a8d9e..2b21b1070d 100755 --- a/t/t3050-subprojects-fetch.sh +++ b/t/t3050-subprojects-fetch.sh @@ -26,7 +26,7 @@ test_expect_success clone ' cd cloned && (git rev-parse HEAD; git ls-files -s) >../actual ) && - diff -u expected actual + test_cmp expected actual ' test_expect_success advance ' @@ -46,7 +46,7 @@ test_expect_success fetch ' git pull && (git rev-parse HEAD; git ls-files -s) >../actual ) && - diff -u expected actual + test_cmp expected actual ' test_done diff --git a/t/t3060-ls-files-with-tree.sh b/t/t3060-ls-files-with-tree.sh index 68eb266d73..3ce501bb97 100755 --- a/t/t3060-ls-files-with-tree.sh +++ b/t/t3060-ls-files-with-tree.sh @@ -66,6 +66,6 @@ test_expect_success 'git -ls-files --with-tree should succeed from subdir' ' cd .. test_expect_success \ 'git -ls-files --with-tree should add entries from named tree.' \ - 'diff -u expected output' + 'test_cmp expected output' test_done diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh index 38a90adad6..cb5f7a4441 100755 --- a/t/t3200-branch.sh +++ b/t/t3200-branch.sh @@ -153,16 +153,6 @@ test_expect_success 'test tracking setup via config' \ test $(git config branch.my3.remote) = local && test $(git config branch.my3.merge) = refs/heads/master' -test_expect_success 'avoid ambiguous track' ' - git config branch.autosetupmerge true && - git config remote.ambi1.url = lalala && - git config remote.ambi1.fetch = refs/heads/lalala:refs/heads/master && - git config remote.ambi2.url = lilili && - git config remote.ambi2.fetch = refs/heads/lilili:refs/heads/master && - git branch all1 master && - test -z "$(git config branch.all1.merge)" -' - test_expect_success 'test overriding tracking setup via --no-track' \ 'git config branch.autosetupmerge true && git config remote.local.url . && @@ -224,4 +214,14 @@ test_expect_success \ test -f .git/logs/refs/heads/g/h/i && diff expect .git/logs/refs/heads/g/h/i' +test_expect_success 'avoid ambiguous track' ' + git config branch.autosetupmerge true && + git config remote.ambi1.url lalala && + git config remote.ambi1.fetch refs/heads/lalala:refs/heads/master && + git config remote.ambi2.url lilili && + git config remote.ambi2.fetch refs/heads/lilili:refs/heads/master && + git branch all1 master && + test -z "$(git config branch.all1.merge)" +' + test_done diff --git a/t/t3201-branch-contains.sh b/t/t3201-branch-contains.sh index 9ef593f0e1..b4cf628d22 100755 --- a/t/t3201-branch-contains.sh +++ b/t/t3201-branch-contains.sh @@ -31,7 +31,7 @@ test_expect_success 'branch --contains=master' ' { echo " master" && echo "* side" } >expect && - diff -u expect actual + test_cmp expect actual ' @@ -41,7 +41,7 @@ test_expect_success 'branch --contains master' ' { echo " master" && echo "* side" } >expect && - diff -u expect actual + test_cmp expect actual ' @@ -51,7 +51,7 @@ test_expect_success 'branch --contains=side' ' { echo "* side" } >expect && - diff -u expect actual + test_cmp expect actual ' diff --git a/t/t3300-funny-names.sh b/t/t3300-funny-names.sh index 98c133db50..24a00a9df1 100755 --- a/t/t3300-funny-names.sh +++ b/t/t3300-funny-names.sh @@ -54,7 +54,7 @@ echo 'just space no-funny tabs ," (dq) and spaces' >expected test_expect_success 'git ls-files -z with-funny' \ - 'git ls-files -z | tr \\000 \\012 >current && + 'git ls-files -z | perl -pe y/\\000/\\012/ >current && git diff expected current' t1=`git write-tree` @@ -83,11 +83,11 @@ test_expect_success 'git diff-tree with-funny' \ echo 'A tabs ," (dq) and spaces' >expected test_expect_success 'git diff-index -z with-funny' \ - 'git diff-index -z --name-status $t0 | tr \\000 \\012 >current && + 'git diff-index -z --name-status $t0 | perl -pe y/\\000/\\012/ >current && git diff expected current' test_expect_success 'git diff-tree -z with-funny' \ - 'git diff-tree -z --name-status $t0 $t1 | tr \\000 \\012 >current && + 'git diff-tree -z --name-status $t0 $t1 | perl -pe y/\\000/\\012/ >current && git diff expected current' cat > expected <<\EOF diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh index 049aa37538..9cf873f7eb 100755 --- a/t/t3404-rebase-interactive.sh +++ b/t/t3404-rebase-interactive.sh @@ -122,8 +122,8 @@ test_expect_success 'reflog for the branch shows state before rebase' ' test_expect_success 'exchange two commits' ' FAKE_LINES="2 1" git rebase -i HEAD~2 && - test H = $(git cat-file commit HEAD^ | tail -n 1) && - test G = $(git cat-file commit HEAD | tail -n 1) + test H = $(git cat-file commit HEAD^ | sed -ne \$p) && + test G = $(git cat-file commit HEAD | sed -ne \$p) ' cat > expect << EOF @@ -146,11 +146,10 @@ EOF test_expect_success 'stop on conflicting pick' ' git tag new-branch1 && ! git rebase -i master && - diff -u expect .git/.dotest-merge/patch && - diff -u expect2 file1 && + test_cmp expect .git/.dotest-merge/patch && + test_cmp expect2 file1 && test 4 = $(grep -v "^#" < .git/.dotest-merge/done | wc -l) && - test 0 = $(grep -ve "^#" -e "^$" < .git/.dotest-merge/git-rebase-todo | - wc -l) + test 0 = $(grep -c "^[^#]" < .git/.dotest-merge/git-rebase-todo) ' test_expect_success 'abort' ' diff --git a/t/t3405-rebase-malformed.sh b/t/t3405-rebase-malformed.sh index e4e2e649ed..e5ad67c643 100755 --- a/t/t3405-rebase-malformed.sh +++ b/t/t3405-rebase-malformed.sh @@ -41,8 +41,8 @@ test_expect_success rebase ' git rebase master side && git cat-file commit HEAD | sed -e "1,/^\$/d" >F1 && - diff -u F0 F1 && - diff -u F F0 + test_cmp F0 F1 && + test_cmp F F0 ' test_done diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh index 332b2b2feb..5391080943 100755 --- a/t/t3406-rebase-message.sh +++ b/t/t3406-rebase-message.sh @@ -37,7 +37,7 @@ test_expect_success 'rebase -m' ' git rebase -m master >report && sed -n -e "/^Already applied: /p" \ -e "/^Committed: /p" report >actual && - diff -u expect actual + test_cmp expect actual ' diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh index c8dc1ac241..77c90f6fa0 100755 --- a/t/t3701-add-interactive.sh +++ b/t/t3701-add-interactive.sh @@ -24,7 +24,7 @@ EOF test_expect_success 'diff works (initial)' ' (echo d; echo 1) | git add -i >output && sed -ne "/new file/,/content/p" <output >diff && - diff -u expected diff + test_cmp expected diff ' test_expect_success 'revert works (initial)' ' git add file && @@ -57,7 +57,7 @@ EOF test_expect_success 'diff works (commit)' ' (echo d; echo 1) | git add -i >output && sed -ne "/^index/,/content/p" <output >diff && - diff -u expected diff + test_cmp expected diff ' test_expect_success 'revert works (commit)' ' git add file && diff --git a/t/t3800-mktag.sh b/t/t3800-mktag.sh index f2803206f1..278075823b 100755 --- a/t/t3800-mktag.sh +++ b/t/t3800-mktag.sh @@ -15,7 +15,7 @@ check_verify_failure () { expect="$2" test_expect_success "$1" ' ( ! git-mktag <tag.sig 2>message ) && - grep -q "$expect" message + grep "$expect" message ' } diff --git a/t/t3902-quoted.sh b/t/t3902-quoted.sh index 73da45f18c..fe4fb5116a 100755 --- a/t/t3902-quoted.sh +++ b/t/t3902-quoted.sh @@ -78,28 +78,28 @@ EOF test_expect_success 'check fully quoted output from ls-files' ' - git ls-files >current && diff -u expect.quoted current + git ls-files >current && test_cmp expect.quoted current ' test_expect_success 'check fully quoted output from diff-files' ' git diff --name-only >current && - diff -u expect.quoted current + test_cmp expect.quoted current ' test_expect_success 'check fully quoted output from diff-index' ' git diff --name-only HEAD >current && - diff -u expect.quoted current + test_cmp expect.quoted current ' test_expect_success 'check fully quoted output from diff-tree' ' git diff --name-only HEAD^ HEAD >current && - diff -u expect.quoted current + test_cmp expect.quoted current ' @@ -111,28 +111,28 @@ test_expect_success 'setting core.quotepath' ' test_expect_success 'check fully quoted output from ls-files' ' - git ls-files >current && diff -u expect.raw current + git ls-files >current && test_cmp expect.raw current ' test_expect_success 'check fully quoted output from diff-files' ' git diff --name-only >current && - diff -u expect.raw current + test_cmp expect.raw current ' test_expect_success 'check fully quoted output from diff-index' ' git diff --name-only HEAD >current && - diff -u expect.raw current + test_cmp expect.raw current ' test_expect_success 'check fully quoted output from diff-tree' ' git diff --name-only HEAD^ HEAD >current && - diff -u expect.raw current + test_cmp expect.raw current ' diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh index aa282e1bc1..2d3ee3b78c 100755 --- a/t/t3903-stash.sh +++ b/t/t3903-stash.sh @@ -34,7 +34,7 @@ EOF test_expect_success 'parents of stash' ' test $(git rev-parse stash^) = $(git rev-parse HEAD) && git diff stash^2..stash > output && - diff -u output expect + test_cmp output expect ' test_expect_success 'apply needs clean working directory' ' diff --git a/t/t4020-diff-external.sh b/t/t4020-diff-external.sh index 888293361d..637b4e19d5 100755 --- a/t/t4020-diff-external.sh +++ b/t/t4020-diff-external.sh @@ -99,11 +99,12 @@ test_expect_success 'no diff with -diff' ' git diff | grep Binary ' -echo NULZbetweenZwords | tr Z '\000' > file +echo NULZbetweenZwords | perl -pe 'y/Z/\000/' > file test_expect_success 'force diff with "diff"' ' echo >.gitattributes "file diff" && - git diff | grep -a second + git diff >actual && + test_cmp ../t4020/diff.NUL actual ' test_done diff --git a/t/t4020/diff.NUL b/t/t4020/diff.NUL Binary files differnew file mode 100644 index 0000000000..db2f89090c --- /dev/null +++ b/t/t4020/diff.NUL diff --git a/t/t4021-format-patch-signer-mime.sh b/t/t4021-format-patch-signer-mime.sh index 67a70fadab..ba43f18549 100755 --- a/t/t4021-format-patch-signer-mime.sh +++ b/t/t4021-format-patch-signer-mime.sh @@ -32,11 +32,19 @@ test_expect_success 'format with signoff without funny signer name' ' test_expect_success 'format with non ASCII signer name' ' - GIT_COMMITTER_NAME="$B$O$^$N(B $B$U$K$*$&(B" \ + GIT_COMMITTER_NAME="ã¯ã¾ã® ãµã«ãŠã†" \ git format-patch -s --stdout -1 >output && grep Content-Type output ' +test_expect_success 'attach and signoff do not duplicate mime headers' ' + + GIT_COMMITTER_NAME="ã¯ã¾ã® ãµã«ãŠã†" \ + git format-patch -s --stdout -1 --attach >output && + test `grep -ci ^MIME-Version: output` = 1 + +' + test_done diff --git a/t/t4022-diff-rewrite.sh b/t/t4022-diff-rewrite.sh index 6de4acbd44..bf996fc414 100755 --- a/t/t4022-diff-rewrite.sh +++ b/t/t4022-diff-rewrite.sh @@ -8,7 +8,10 @@ test_expect_success setup ' cat ../../COPYING >test && git add test && - tr 'a-zA-Z' 'n-za-mN-ZA-M' <../../COPYING >test + tr \ + "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" \ + "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM" \ + <../../COPYING >test ' diff --git a/t/t4023-diff-rename-typechange.sh b/t/t4023-diff-rename-typechange.sh index 255604effd..4dbfc6e8b7 100755 --- a/t/t4023-diff-rename-typechange.sh +++ b/t/t4023-diff-rename-typechange.sh @@ -57,7 +57,7 @@ test_expect_success 'cross renames to be detected for regular files' ' echo "R100 foo bar" echo "R100 bar foo" } | sort >expect && - diff -u expect actual + test_cmp expect actual ' @@ -68,7 +68,7 @@ test_expect_success 'cross renames to be detected for typechange' ' echo "R100 foo bar" echo "R100 bar foo" } | sort >expect && - diff -u expect actual + test_cmp expect actual ' @@ -79,7 +79,7 @@ test_expect_success 'moves and renames' ' echo "R100 foo bar" echo "T100 foo" } | sort >expect && - diff -u expect actual + test_cmp expect actual ' diff --git a/t/t4024-diff-optimize-common.sh b/t/t4024-diff-optimize-common.sh index 3c66102f7a..c4d733f5db 100755 --- a/t/t4024-diff-optimize-common.sh +++ b/t/t4024-diff-optimize-common.sh @@ -150,7 +150,7 @@ test_expect_success 'diff -U0' ' do git diff -U0 file-?$n done | zc >actual && - diff -u expect actual + test_cmp expect actual ' diff --git a/t/t4025-hunk-header.sh b/t/t4025-hunk-header.sh index 9ba06b74ce..7a3dbc1ea2 100755 --- a/t/t4025-hunk-header.sh +++ b/t/t4025-hunk-header.sh @@ -37,7 +37,7 @@ test_expect_success 'hunk header truncation with an overly long line' ' echo " A $N$N$N$N$N$N$N$N$N2" echo " L $N$N$N$N$N$N$N$N$N1" ) >expected && - diff -u actual expected + test_cmp actual expected ' diff --git a/t/t4027-diff-submodule.sh b/t/t4027-diff-submodule.sh index 3d2d0816a3..1fd3fb74d7 100755 --- a/t/t4027-diff-submodule.sh +++ b/t/t4027-diff-submodule.sh @@ -37,17 +37,17 @@ test_expect_success setup ' test_expect_success 'git diff --raw HEAD' ' git diff --raw --abbrev=40 HEAD >actual && - diff -u expect actual + test_cmp expect actual ' test_expect_success 'git diff-index --raw HEAD' ' git diff-index --raw HEAD >actual.index && - diff -u expect actual.index + test_cmp expect actual.index ' test_expect_success 'git diff-files --raw' ' git diff-files --raw >actual.files && - diff -u expect actual.files + test_cmp expect actual.files ' test_done diff --git a/t/t4028-format-patch-mime-headers.sh b/t/t4028-format-patch-mime-headers.sh new file mode 100755 index 0000000000..204ba673cb --- /dev/null +++ b/t/t4028-format-patch-mime-headers.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +test_description='format-patch mime headers and extra headers do not conflict' +. ./test-lib.sh + +test_expect_success 'create commit with utf-8 body' ' + echo content >file && + git add file && + git commit -m one && + echo more >>file && + git commit -a -m "two + + utf-8 body: ñ" +' + +test_expect_success 'patch has mime headers' ' + rm -f 0001-two.patch && + git format-patch HEAD^ && + grep -i "content-type: text/plain; charset=utf-8" 0001-two.patch +' + +test_expect_success 'patch has mime and extra headers' ' + rm -f 0001-two.patch && + git config format.headers "x-foo: bar" && + git format-patch HEAD^ && + grep -i "x-foo: bar" 0001-two.patch && + grep -i "content-type: text/plain; charset=utf-8" 0001-two.patch +' + +test_done diff --git a/t/t4103-apply-binary.sh b/t/t4103-apply-binary.sh index 7c25634fc2..1b58233da6 100755 --- a/t/t4103-apply-binary.sh +++ b/t/t4103-apply-binary.sh @@ -24,10 +24,10 @@ git update-index --add --remove file1 file2 file4 git-commit -m 'Initial Version' 2>/dev/null git-checkout -b binary -tr 'x' '\000' <file1 >file3 +perl -pe 'y/x/\000/' <file1 >file3 cat file3 >file4 git add file2 -tr '\000' 'v' <file3 >file1 +perl -pe 'y/\000/v/' <file3 >file1 rm -f file2 git update-index --add --remove file1 file2 file3 file4 git-commit -m 'Second Version' diff --git a/t/t4105-apply-fuzz.sh b/t/t4105-apply-fuzz.sh index 0e8d25f18b..3266e39400 100755 --- a/t/t4105-apply-fuzz.sh +++ b/t/t4105-apply-fuzz.sh @@ -9,7 +9,7 @@ dotest () { test_expect_success "$name" " git checkout-index -f -q -u file && git apply $* && - diff -u expect file + test_cmp expect file " } diff --git a/t/t4116-apply-reverse.sh b/t/t4116-apply-reverse.sh index b1d35ab04d..c3f4579007 100755 --- a/t/t4116-apply-reverse.sh +++ b/t/t4116-apply-reverse.sh @@ -12,14 +12,14 @@ test_description='git apply in reverse test_expect_success setup ' for i in a b c d e f g h i j k l m n; do echo $i; done >file1 && - tr "ijk" '\''\000\001\002'\'' <file1 >file2 && + perl -pe "y/ijk/\\000\\001\\002/" <file1 >file2 && git add file1 file2 && git commit -m initial && git tag initial && for i in a b c g h i J K L m o n p q; do echo $i; done >file1 && - tr "mon" '\''\000\001\002'\'' <file1 >file2 && + perl -pe "y/mon/\\000\\001\\002/" <file1 >file2 && git commit -a -m second && git tag second && diff --git a/t/t4125-apply-ws-fuzz.sh b/t/t4125-apply-ws-fuzz.sh index d6f15be671..3b471b641b 100755 --- a/t/t4125-apply-ws-fuzz.sh +++ b/t/t4125-apply-ws-fuzz.sh @@ -56,7 +56,7 @@ test_expect_success nofix ' git apply --whitespace=nowarn patch-1 && # The result should obviously match. - diff -u file-1 file + test_cmp file-1 file ' test_expect_success 'withfix (forward)' ' @@ -70,7 +70,7 @@ test_expect_success 'withfix (forward)' ' git apply --whitespace=fix patch-0 && git apply --whitespace=fix patch-1 && - diff -u file-fixed file + test_cmp file-fixed file ' test_expect_success 'withfix (backward)' ' @@ -91,12 +91,12 @@ test_expect_success 'withfix (backward)' ' sed -e /h/d file-fixed >fixed-head && sed -e /h/d file >file-head && - diff -u fixed-head file-head && + test_cmp fixed-head file-head && sed -n -e /h/p file-fixed >fixed-tail && sed -n -e /h/p file >file-tail && - ! diff -u fixed-tail file-tail + ! test_cmp fixed-tail file-tail ' diff --git a/t/t4150-am-subdir.sh b/t/t4150-am-subdir.sh index 929d2cbd87..52069b469b 100755 --- a/t/t4150-am-subdir.sh +++ b/t/t4150-am-subdir.sh @@ -22,14 +22,14 @@ test_expect_success 'am regularly from stdin' ' git checkout initial && git am <patchfile && git diff master >actual && - diff -u expect actual + test_cmp expect actual ' test_expect_success 'am regularly from file' ' git checkout initial && git am patchfile && git diff master >actual && - diff -u expect actual + test_cmp expect actual ' test_expect_success 'am regularly from stdin in subdirectory' ' @@ -41,7 +41,7 @@ test_expect_success 'am regularly from stdin in subdirectory' ' git am <../patchfile ) && git diff master>actual && - diff -u expect actual + test_cmp expect actual ' test_expect_success 'am regularly from file in subdirectory' ' @@ -53,7 +53,7 @@ test_expect_success 'am regularly from file in subdirectory' ' git am ../patchfile ) && git diff master >actual && - diff -u expect actual + test_cmp expect actual ' test_expect_success 'am regularly from file in subdirectory with full path' ' @@ -66,7 +66,7 @@ test_expect_success 'am regularly from file in subdirectory with full path' ' git am "$P/patchfile" ) && git diff master >actual && - diff -u expect actual + test_cmp expect actual ' test_done diff --git a/t/t4200-rerere.sh b/t/t4200-rerere.sh index eeff3c9c07..3cbfee704e 100755 --- a/t/t4200-rerere.sh +++ b/t/t4200-rerere.sh @@ -129,7 +129,7 @@ test_expect_success 'rerere kicked in' "! grep ======= a1" test_expect_success 'rerere prefers first change' 'git diff a1 expect' rm $rr/postimage -echo "$sha1 a1" | tr '\012' '\000' > .git/rr-cache/MERGE_RR +echo "$sha1 a1" | perl -pe 'y/\012/\000/' > .git/rr-cache/MERGE_RR test_expect_success 'rerere clear' 'git rerere clear' diff --git a/t/t4201-shortlog.sh b/t/t4201-shortlog.sh index 6d12efb74d..405b971191 100755 --- a/t/t4201-shortlog.sh +++ b/t/t4201-shortlog.sh @@ -45,6 +45,11 @@ A U Thor (5): EOF -test_expect_success 'shortlog wrapping' 'diff -u expect out' +test_expect_success 'shortlog wrapping' 'test_cmp expect out' + +git log HEAD > log +GIT_DIR=non-existing git shortlog -w < log > out + +test_expect_success 'shortlog from non-git directory' 'test_cmp expect out' test_done diff --git a/t/t5300-pack-object.sh b/t/t5300-pack-object.sh index cd3c149800..c955fe44f5 100755 --- a/t/t5300-pack-object.sh +++ b/t/t5300-pack-object.sh @@ -15,7 +15,7 @@ test_expect_success \ 'rm -f .git/index* for i in a b c do - dd if=/dev/zero bs=4k count=1 | tr "\\000" $i >$i && + dd if=/dev/zero bs=4k count=1 | perl -pe "y/\\000/$i/" >$i && git update-index --add $i || return 1 done && cat c >d && echo foo >>d && git update-index --add d && diff --git a/t/t5302-pack-index.sh b/t/t5302-pack-index.sh index 67b9a7b84a..b88b5bbd02 100755 --- a/t/t5302-pack-index.sh +++ b/t/t5302-pack-index.sh @@ -103,7 +103,7 @@ test_expect_success \ test_expect_success \ '[index v1] 2) create a stealth corruption in a delta base reference' \ '# this test assumes a delta smaller than 16 bytes at the end of the pack - git show-index <1.idx | sort -n | tail -n 1 | ( + git show-index <1.idx | sort -n | sed -ne \$p | ( read delta_offs delta_sha1 && git cat-file blob "$delta_sha1" > blob_1 && chmod +w ".git/objects/pack/pack-${pack1}.pack" && @@ -141,7 +141,7 @@ test_expect_success \ test_expect_success \ '[index v2] 2) create a stealth corruption in a delta base reference' \ '# this test assumes a delta smaller than 16 bytes at the end of the pack - git show-index <1.idx | sort -n | tail -n 1 | ( + git show-index <1.idx | sort -n | sed -ne \$p | ( read delta_offs delta_sha1 delta_crc && git cat-file blob "$delta_sha1" > blob_3 && chmod +w ".git/objects/pack/pack-${pack1}.pack" && diff --git a/t/t5304-prune.sh b/t/t5304-prune.sh index 6560af756e..47090c4cf5 100644 --- a/t/t5304-prune.sh +++ b/t/t5304-prune.sh @@ -29,4 +29,53 @@ test_expect_success 'prune stale packs' ' ' +test_expect_success 'prune --expire' ' + + before=$(git count-objects | sed "s/ .*//") && + BLOB=$(echo aleph | git hash-object -w --stdin) && + BLOB_FILE=.git/objects/$(echo $BLOB | sed "s/^../&\//") && + test $((1 + $before)) = $(git count-objects | sed "s/ .*//") && + test -f $BLOB_FILE && + git prune --expire=1.hour.ago && + test $((1 + $before)) = $(git count-objects | sed "s/ .*//") && + test -f $BLOB_FILE && + test-chmtime -86500 $BLOB_FILE && + git prune --expire 1.day && + test $before = $(git count-objects | sed "s/ .*//") && + ! test -f $BLOB_FILE + +' + +test_expect_success 'gc: implicit prune --expire' ' + + before=$(git count-objects | sed "s/ .*//") && + BLOB=$(echo aleph_0 | git hash-object -w --stdin) && + BLOB_FILE=.git/objects/$(echo $BLOB | sed "s/^../&\//") && + test $((1 + $before)) = $(git count-objects | sed "s/ .*//") && + test -f $BLOB_FILE && + test-chmtime -$((86400*14-30)) $BLOB_FILE && + git gc && + test $((1 + $before)) = $(git count-objects | sed "s/ .*//") && + test -f $BLOB_FILE && + test-chmtime -$((86400*14+1)) $BLOB_FILE && + git gc && + test $before = $(git count-objects | sed "s/ .*//") && + ! test -f $BLOB_FILE + +' + +test_expect_success 'gc: refuse to start with invalid gc.pruneExpire' ' + + git config gc.pruneExpire invalid && + test_must_fail git gc + +' + +test_expect_success 'gc: start with ok gc.pruneExpire' ' + + git config gc.pruneExpire 2.days.ago && + git gc + +' + test_done diff --git a/t/t5400-send-pack.sh b/t/t5400-send-pack.sh index 2d0c07fd6a..2b6b6e3f71 100755 --- a/t/t5400-send-pack.sh +++ b/t/t5400-send-pack.sh @@ -120,7 +120,7 @@ test_expect_success \ cd .. && git-clone parent child && cd child && git-push --all && cd ../parent && - git-branch -a >branches && ! grep -q origin/master branches + git-branch -a >branches && ! grep origin/master branches ' rewound_push_setup() { diff --git a/t/t5505-remote.sh b/t/t5505-remote.sh index 2822a651b5..004a8dc5ed 100755 --- a/t/t5505-remote.sh +++ b/t/t5505-remote.sh @@ -24,7 +24,7 @@ setup_repository () { tokens_match () { echo "$1" | tr ' ' '\012' | sort | sed -e '/^$/d' >expect && echo "$2" | tr ' ' '\012' | sort | sed -e '/^$/d' >actual && - diff -u expect actual + test_cmp expect actual } check_remote_track () { @@ -73,7 +73,7 @@ test_expect_success 'add another remote' ' sed -e "/^refs\/remotes\/origin\//d" \ -e "/^refs\/remotes\/second\//d" >actual && >expect && - diff -u expect actual + test_cmp expect actual ) ' @@ -93,7 +93,7 @@ test_expect_success 'remove remote' ' git for-each-ref "--format=%(refname)" refs/remotes | sed -e "/^refs\/remotes\/origin\//d" >actual && >expect && - diff -u expect actual + test_cmp expect actual ) ' @@ -237,4 +237,14 @@ test_expect_success 'update default (overridden, with funny whitespace)' ' ' +test_expect_success '"remote show" does not show symbolic refs' ' + + git clone one three && + (cd three && + git remote show origin > output && + ! grep HEAD < output && + ! grep -i stale < output) + +' + test_done diff --git a/t/t5510-fetch.sh b/t/t5510-fetch.sh index 9b948c14e6..6946557c67 100755 --- a/t/t5510-fetch.sh +++ b/t/t5510-fetch.sh @@ -249,7 +249,7 @@ test_expect_success 'bundle should record HEAD correctly' ' do echo "$(git rev-parse --verify $h) $h" done >expect && - diff -u expect actual + test_cmp expect actual ' diff --git a/t/t5511-refspec.sh b/t/t5511-refspec.sh new file mode 100755 index 0000000000..670a8f1c99 --- /dev/null +++ b/t/t5511-refspec.sh @@ -0,0 +1,72 @@ +#!/bin/sh + +test_description='refspec parsing' + +. ./test-lib.sh + +test_refspec () { + + kind=$1 refspec=$2 expect=$3 + git config remote.frotz.url "." && + git config --remove-section remote.frotz && + git config remote.frotz.url "." && + git config "remote.frotz.$kind" "$refspec" && + if test "$expect" != invalid + then + title="$kind $refspec" + test='git ls-remote frotz' + else + title="$kind $refspec (invalid)" + test='test_must_fail git ls-remote frotz' + fi + test_expect_success "$title" "$test" +} + +test_refspec push '' invalid +test_refspec push ':' invalid + +test_refspec fetch '' +test_refspec fetch ':' + +test_refspec push 'refs/heads/*:refs/remotes/frotz/*' +test_refspec push 'refs/heads/*:refs/remotes/frotz' invalid +test_refspec push 'refs/heads:refs/remotes/frotz/*' invalid +test_refspec push 'refs/heads/master:refs/remotes/frotz/xyzzy' + + +# These have invalid LHS, but we do not have a formal "valid sha-1 +# expression syntax checker" so they are not checked with the current +# code. They will be caught downstream anyway, but we may want to +# have tighter check later... + +: test_refspec push 'refs/heads/master::refs/remotes/frotz/xyzzy' invalid +: test_refspec push 'refs/heads/maste :refs/remotes/frotz/xyzzy' invalid + +test_refspec fetch 'refs/heads/*:refs/remotes/frotz/*' +test_refspec fetch 'refs/heads/*:refs/remotes/frotz' invalid +test_refspec fetch 'refs/heads:refs/remotes/frotz/*' invalid +test_refspec fetch 'refs/heads/master:refs/remotes/frotz/xyzzy' +test_refspec fetch 'refs/heads/master::refs/remotes/frotz/xyzzy' invalid +test_refspec fetch 'refs/heads/maste :refs/remotes/frotz/xyzzy' invalid + +test_refspec push 'master~1:refs/remotes/frotz/backup' +test_refspec fetch 'master~1:refs/remotes/frotz/backup' invalid +test_refspec push 'HEAD~4:refs/remotes/frotz/new' +test_refspec fetch 'HEAD~4:refs/remotes/frotz/new' invalid + +test_refspec push 'HEAD' +test_refspec fetch 'HEAD' +test_refspec push 'refs/heads/ nitfol' invalid +test_refspec fetch 'refs/heads/ nitfol' invalid + +test_refspec push 'HEAD:' invalid +test_refspec fetch 'HEAD:' +test_refspec push 'refs/heads/ nitfol:' invalid +test_refspec fetch 'refs/heads/ nitfol:' invalid + +test_refspec push ':refs/remotes/frotz/deleteme' +test_refspec fetch ':refs/remotes/frotz/HEAD-to-me' +test_refspec push ':refs/remotes/frotz/delete me' invalid +test_refspec fetch ':refs/remotes/frotz/HEAD to me' invalid + +test_done diff --git a/t/t5512-ls-remote.sh b/t/t5512-ls-remote.sh index 6ec5f7c48b..c0dc94909b 100755 --- a/t/t5512-ls-remote.sh +++ b/t/t5512-ls-remote.sh @@ -24,28 +24,28 @@ test_expect_success setup ' test_expect_success 'ls-remote --tags .git' ' git ls-remote --tags .git >actual && - diff -u expected.tag actual + test_cmp expected.tag actual ' test_expect_success 'ls-remote .git' ' git ls-remote .git >actual && - diff -u expected.all actual + test_cmp expected.all actual ' test_expect_success 'ls-remote --tags self' ' git ls-remote --tags self >actual && - diff -u expected.tag actual + test_cmp expected.tag actual ' test_expect_success 'ls-remote self' ' git ls-remote self >actual && - diff -u expected.all actual + test_cmp expected.all actual ' diff --git a/t/t6000lib.sh b/t/t6000lib.sh index 180633e1e0..c0baaa5360 100755 --- a/t/t6000lib.sh +++ b/t/t6000lib.sh @@ -97,7 +97,13 @@ check_output() # from front and back. name_from_description() { - tr "'" '-' | tr '~`!@#$%^&*()_+={}[]|\;:"<>,/? ' '-' | tr -s '-' | tr '[A-Z]' '[a-z]' | sed "s/^-*//;s/-*\$//" + perl -pe ' + s/[^A-Za-z0-9.]/-/g; + s/-+/-/g; + s/-$//; + s/^-//; + y/A-Z/a-z/; + ' } diff --git a/t/t6004-rev-list-path-optim.sh b/t/t6004-rev-list-path-optim.sh index 80d71988b8..5dabf1c5e3 100755 --- a/t/t6004-rev-list-path-optim.sh +++ b/t/t6004-rev-list-path-optim.sh @@ -45,7 +45,7 @@ test_expect_success 'further setup' ' test_expect_success 'path optimization 2' ' ( echo "$side"; echo "$initial" ) >expected && git rev-list HEAD -- a >actual && - diff -u expected actual + test_cmp expected actual ' test_done diff --git a/t/t6009-rev-list-parent.sh b/t/t6009-rev-list-parent.sh index be3d238d99..c8a96a9a99 100755 --- a/t/t6009-rev-list-parent.sh +++ b/t/t6009-rev-list-parent.sh @@ -27,11 +27,11 @@ test_expect_success setup ' git log --pretty=oneline --abbrev-commit ' -test_expect_failure 'one is ancestor of others and should not be shown' ' +test_expect_success 'one is ancestor of others and should not be shown' ' git rev-list one --not four >result && >expect && - diff -u expect result + test_cmp expect result ' diff --git a/t/t6027-merge-binary.sh b/t/t6027-merge-binary.sh index a7358f75b1..92ca1f0f8c 100755 --- a/t/t6027-merge-binary.sh +++ b/t/t6027-merge-binary.sh @@ -45,7 +45,7 @@ test_expect_success resolve ' false else git ls-files -s >current - diff -u current expect + test_cmp current expect fi ' @@ -60,7 +60,7 @@ test_expect_success recursive ' false else git ls-files -s >current - diff -u current expect + test_cmp current expect fi ' diff --git a/t/t6029-merge-subtree.sh b/t/t6029-merge-subtree.sh index 35d66e8044..43f5459c35 100755 --- a/t/t6029-merge-subtree.sh +++ b/t/t6029-merge-subtree.sh @@ -25,7 +25,7 @@ test_expect_success 'subtree available and works like recursive' ' git merge -s subtree side && for i in mundo $s world; do echo $i; done >expect && - diff -u expect hello + test_cmp expect hello ' diff --git a/t/t6030-bisect-porcelain.sh b/t/t6030-bisect-porcelain.sh index 4908e878fe..f471c1526f 100755 --- a/t/t6030-bisect-porcelain.sh +++ b/t/t6030-bisect-porcelain.sh @@ -219,7 +219,7 @@ test_expect_success 'bisect run & skip: cannot tell between 2' ' add_line_into_file "6: Yet a line." hello && HASH6=$(git rev-parse --verify HEAD) && echo "#"\!"/bin/sh" > test_script.sh && - echo "tail -1 hello | grep Ciao > /dev/null && exit 125" >> test_script.sh && + echo "sed -ne \\\$p hello | grep Ciao > /dev/null && exit 125" >> test_script.sh && echo "grep line hello > /dev/null" >> test_script.sh && echo "test \$? -ne 0" >> test_script.sh && chmod +x test_script.sh && @@ -244,8 +244,8 @@ test_expect_success 'bisect run & skip: find first bad' ' add_line_into_file "7: Should be the last line." hello && HASH7=$(git rev-parse --verify HEAD) && echo "#"\!"/bin/sh" > test_script.sh && - echo "tail -1 hello | grep Ciao > /dev/null && exit 125" >> test_script.sh && - echo "tail -1 hello | grep day > /dev/null && exit 125" >> test_script.sh && + echo "sed -ne \\\$p hello | grep Ciao > /dev/null && exit 125" >> test_script.sh && + echo "sed -ne \\\$p hello | grep day > /dev/null && exit 125" >> test_script.sh && echo "grep Yet hello > /dev/null" >> test_script.sh && echo "test \$? -ne 0" >> test_script.sh && chmod +x test_script.sh && diff --git a/t/t6031-merge-recursive.sh b/t/t6031-merge-recursive.sh new file mode 100755 index 0000000000..c8310aee4f --- /dev/null +++ b/t/t6031-merge-recursive.sh @@ -0,0 +1,49 @@ +#!/bin/sh + +test_description='merge-recursive: handle file mode' +. ./test-lib.sh + +test_expect_success 'mode change in one branch: keep changed version' ' + : >file1 && + git add file1 && + git commit -m initial && + git checkout -b a1 master && + : >dummy && + git add dummy && + git commit -m a && + git checkout -b b1 master && + chmod +x file1 && + git add file1 && + git commit -m b1 && + git checkout a1 && + git merge-recursive master -- a1 b1 && + test -x file1 +' + +test_expect_success 'mode change in both branches: expect conflict' ' + git reset --hard HEAD && + git checkout -b a2 master && + : >file2 && + H=$(git hash-object file2) && + chmod +x file2 && + git add file2 && + git commit -m a2 && + git checkout -b b2 master && + : >file2 && + git add file2 && + git commit -m b2 && + git checkout a2 && + ( + git merge-recursive master -- a2 b2 + test $? = 1 + ) && + git ls-files -u >actual && + ( + echo "100755 $H 2 file2" + echo "100644 $H 3 file2" + ) >expect && + test_cmp actual expect && + test -x file2 +' + +test_done diff --git a/t/t7003-filter-branch.sh b/t/t7003-filter-branch.sh index 6e14bf1c7f..6827249da5 100755 --- a/t/t7003-filter-branch.sh +++ b/t/t7003-filter-branch.sh @@ -4,7 +4,7 @@ test_description='git-filter-branch' . ./test-lib.sh make_commit () { - lower=$(echo $1 | tr A-Z a-z) + lower=$(echo $1 | tr '[A-Z]' '[a-z]') echo $lower > $lower git add $lower test_tick @@ -78,7 +78,7 @@ test_expect_success 'filter subdirectory only' ' test_expect_success 'subdirectory filter result looks okay' ' test 2 = $(git rev-list sub | wc -l) && git show sub:new && - ! git show sub:subdir + test_must_fail git show sub:subdir ' test_expect_success 'setup and filter history that requires --full-history' ' @@ -100,7 +100,7 @@ test_expect_success 'subdirectory filter result looks okay' ' test 3 = $(git rev-list -1 --parents sub-master | wc -w) && git show sub-master^:new && git show sub-master^2:new && - ! git show sub:subdir + test_must_fail git show sub:subdir ' test_expect_success 'use index-filter to move into a subdirectory' ' @@ -114,7 +114,7 @@ test_expect_success 'use index-filter to move into a subdirectory' ' test_expect_success 'stops when msg filter fails' ' old=$(git rev-parse HEAD) && - ! git-filter-branch -f --msg-filter false HEAD && + test_must_fail git-filter-branch -f --msg-filter false HEAD && test $old = $(git rev-parse HEAD) && rm -rf .git-rewrite ' @@ -151,8 +151,8 @@ test_expect_success "remove a certain author's commits" ' ' test_expect_success 'barf on invalid name' ' - ! git filter-branch -f master xy-problem && - ! git filter-branch -f HEAD^ + test_must_fail git filter-branch -f master xy-problem && + test_must_fail git filter-branch -f HEAD^ ' test_expect_success '"map" works in commit filter' ' @@ -174,7 +174,7 @@ test_expect_success 'Name needing quotes' ' git add foo && git commit -m "Adding a file" && git filter-branch --tree-filter "rm -fr foo" && - ! git ls-files --error-unmatch "foo/$name" && + test_must_fail git ls-files --error-unmatch "foo/$name" && test $(git rev-parse --verify rerere) != $(git rev-parse --verify A) ' diff --git a/t/t7010-setup.sh b/t/t7010-setup.sh index bc8ab6a619..02cf7c5c9d 100755 --- a/t/t7010-setup.sh +++ b/t/t7010-setup.sh @@ -18,7 +18,7 @@ test_expect_success 'git add (absolute)' ' git add "$D/a/b/c/d" && git ls-files >current && echo a/b/c/d >expect && - diff -u expect current + test_cmp expect current ' @@ -32,7 +32,7 @@ test_expect_success 'git add (funny relative)' ' ) && git ls-files >current && echo a/e/f >expect && - diff -u expect current + test_cmp expect current ' @@ -43,7 +43,7 @@ test_expect_success 'git rm (absolute)' ' git rm -f --cached "$D/a/b/c/d" && git ls-files >current && echo a/e/f >expect && - diff -u expect current + test_cmp expect current ' @@ -57,7 +57,7 @@ test_expect_success 'git rm (funny relative)' ' ) && git ls-files >current && echo a/b/c/d >expect && - diff -u expect current + test_cmp expect current ' @@ -67,7 +67,7 @@ test_expect_success 'git ls-files (absolute)' ' git add a && git ls-files "$D/a/e/../b" >current && echo a/b/c/d >expect && - diff -u expect current + test_cmp expect current ' @@ -80,7 +80,7 @@ test_expect_success 'git ls-files (relative #1)' ' git ls-files "../b/c" ) >current && echo c/d >expect && - diff -u expect current + test_cmp expect current ' @@ -93,7 +93,7 @@ test_expect_success 'git ls-files (relative #2)' ' git ls-files --full-name "../e/f" ) >current && echo a/e/f >expect && - diff -u expect current + test_cmp expect current ' @@ -126,13 +126,13 @@ test_expect_success 'log using absolute path names' ' git log a/b/c/d >f1.txt && git log "$(pwd)/a/b/c/d" >f2.txt && - diff -u f1.txt f2.txt + test_cmp f1.txt f2.txt ' test_expect_success 'blame using absolute path names' ' git blame a/b/c/d >f1.txt && git blame "$(pwd)/a/b/c/d" >f2.txt && - diff -u f1.txt f2.txt + test_cmp f1.txt f2.txt ' test_expect_success 'setup deeper work tree' ' diff --git a/t/t7201-co.sh b/t/t7201-co.sh index 63915cd87b..3111baa9e3 100755 --- a/t/t7201-co.sh +++ b/t/t7201-co.sh @@ -83,13 +83,13 @@ test_expect_success "checkout with unrelated dirty tree without -m" ' fill 0 1 2 3 4 5 6 7 8 >same && cp same kept git checkout side >messages && - diff -u same kept + test_cmp same kept (cat > messages.expect <<EOF M same EOF ) && touch messages.expect && - diff -u messages.expect messages + test_cmp messages.expect messages ' test_expect_success "checkout -m with dirty tree" ' @@ -106,19 +106,19 @@ test_expect_success "checkout -m with dirty tree" ' M one EOF ) && - diff -u expect.messages messages && + test_cmp expect.messages messages && fill "M one" "A three" "D two" >expect.master && git diff --name-status master >current.master && - diff -u expect.master current.master && + test_cmp expect.master current.master && fill "M one" >expect.side && git diff --name-status side >current.side && - diff -u expect.side current.side && + test_cmp expect.side current.side && : >expect.index && git diff --cached >current.index && - diff -u expect.index current.index + test_cmp expect.index current.index ' test_expect_success "checkout -m with dirty tree, renamed" ' @@ -136,7 +136,7 @@ test_expect_success "checkout -m with dirty tree, renamed" ' git checkout -m renamer && fill 1 3 4 5 7 8 >expect && - diff -u expect uno && + test_cmp expect uno && ! test -f one && git diff --cached >current && ! test -s current @@ -161,7 +161,7 @@ test_expect_success 'checkout -m with merge conflict' ' git diff master:one :3:uno | sed -e "1,/^@@/d" -e "/^ /d" -e "s/^-/d/" -e "s/^+/a/" >current && fill d2 aT d7 aS >expect && - diff -u current expect && + test_cmp current expect && git diff --cached two >current && ! test -s current ' @@ -178,7 +178,7 @@ If you want to create a new branch from this checkout, you may do so HEAD is now at 7329388... Initial A one, A two EOF ) && - diff -u messages.expect messages && + test_cmp messages.expect messages && H=$(git rev-parse --verify HEAD) && M=$(git show-ref -s --verify refs/heads/master) && test "z$H" = "z$M" && diff --git a/t/t7401-submodule-summary.sh b/t/t7401-submodule-summary.sh new file mode 100755 index 0000000000..0f3c42ab35 --- /dev/null +++ b/t/t7401-submodule-summary.sh @@ -0,0 +1,195 @@ +#!/bin/sh +# +# Copyright (c) 2008 Ping Yin +# + +test_description='Summary support for submodules + +This test tries to verify the sanity of summary subcommand of git-submodule. +' + +. ./test-lib.sh + +add_file () { + sm=$1 + shift + owd=$(pwd) + cd "$sm" + for name; do + echo "$name" > "$name" && + git add "$name" && + test_tick && + git commit -m "Add $name" + done >/dev/null + git rev-parse --verify HEAD | cut -c1-7 + cd "$owd" +} +commit_file () { + test_tick && + git commit "$@" -m "Commit $*" >/dev/null +} + +test_create_repo sm1 && +add_file . foo + +head1=$(add_file sm1 foo1 foo2) + +test_expect_success 'added submodule' " + git add sm1 && + git submodule summary >actual && + diff actual - <<-EOF +* sm1 0000000...$head1 (2): + > Add foo2 + +EOF +" + +commit_file sm1 && +head2=$(add_file sm1 foo3) + +test_expect_success 'modified submodule(forward)' " + git submodule summary >actual && + diff actual - <<-EOF +* sm1 $head1...$head2 (1): + > Add foo3 + +EOF +" + +commit_file sm1 && +cd sm1 && +git reset --hard HEAD~2 >/dev/null && +head3=$(git rev-parse --verify HEAD | cut -c1-7) && +cd .. + +test_expect_success 'modified submodule(backward)' " + git submodule summary >actual && + diff actual - <<-EOF +* sm1 $head2...$head3 (2): + < Add foo3 + < Add foo2 + +EOF +" + +head4=$(add_file sm1 foo4 foo5) && +head4_full=$(GIT_DIR=sm1/.git git rev-parse --verify HEAD) +test_expect_success 'modified submodule(backward and forward)' " + git submodule summary >actual && + diff actual - <<-EOF +* sm1 $head2...$head4 (4): + > Add foo5 + > Add foo4 + < Add foo3 + < Add foo2 + +EOF +" + +test_expect_success '--summary-limit' " + git submodule summary -n 3 >actual && + diff actual - <<-EOF +* sm1 $head2...$head4 (4): + > Add foo5 + > Add foo4 + < Add foo3 + +EOF +" + +commit_file sm1 && +mv sm1 sm1-bak && +echo sm1 >sm1 && +head5=$(git hash-object sm1 | cut -c1-7) && +git add sm1 && +rm -f sm1 && +mv sm1-bak sm1 + +test_expect_success 'typechanged submodule(submodule->blob), --cached' " + git submodule summary --cached >actual && + diff actual - <<-EOF +* sm1 $head4(submodule)->$head5(blob) (3): + < Add foo5 + +EOF +" + +rm -rf sm1 && +git checkout-index sm1 +test_expect_success 'typechanged submodule(submodule->blob)' " + git submodule summary >actual && + diff actual - <<-EOF +* sm1 $head4(submodule)->$head5(blob): + +EOF +" + +rm -f sm1 && +test_create_repo sm1 && +head6=$(add_file sm1 foo6 foo7) +test_expect_success 'nonexistent commit' " + git submodule summary >actual && + diff actual - <<-EOF +* sm1 $head4...$head6: + Warn: sm1 doesn't contain commit $head4_full + +EOF +" + +commit_file +test_expect_success 'typechanged submodule(blob->submodule)' " + git submodule summary >actual && + diff actual - <<-EOF +* sm1 $head5(blob)->$head6(submodule) (2): + > Add foo7 + +EOF +" + +commit_file sm1 && +rm -rf sm1 +test_expect_success 'deleted submodule' " + git submodule summary >actual && + diff actual - <<-EOF +* sm1 $head6...0000000: + +EOF +" + +test_create_repo sm2 && +head7=$(add_file sm2 foo8 foo9) && +git add sm2 + +test_expect_success 'multiple submodules' " + git submodule summary >actual && + diff actual - <<-EOF +* sm1 $head6...0000000: + +* sm2 0000000...$head7 (2): + > Add foo9 + +EOF +" + +test_expect_success 'path filter' " + git submodule summary sm2 >actual && + diff actual - <<-EOF +* sm2 0000000...$head7 (2): + > Add foo9 + +EOF +" + +commit_file sm2 +test_expect_success 'given commit' " + git submodule summary HEAD^ >actual && + diff actual - <<-EOF +* sm1 $head6...0000000: + +* sm2 0000000...$head7 (2): + > Add foo9 + +EOF +" + +test_done diff --git a/t/t7501-commit.sh b/t/t7501-commit.sh index 361886c3d6..c0288f345f 100755 --- a/t/t7501-commit.sh +++ b/t/t7501-commit.sh @@ -203,7 +203,7 @@ test_expect_success 'sign off (1)' ' git var GIT_COMMITTER_IDENT | sed -e "s/>.*/>/" -e "s/^/Signed-off-by: /" ) >expected && - diff -u expected actual + test_cmp expected actual ' @@ -223,7 +223,7 @@ $existing" && git var GIT_COMMITTER_IDENT | sed -e "s/>.*/>/" -e "s/^/Signed-off-by: /" ) >expected && - diff -u expected actual + test_cmp expected actual ' @@ -240,7 +240,7 @@ test_expect_success 'multiple -m' ' echo echo three ) >expected && - diff -u expected actual + test_cmp expected actual ' @@ -301,12 +301,12 @@ test_expect_success 'same tree (merge and amend merge)' ' git merge -s ours side -m "empty ok" && git diff HEAD^ HEAD >actual && : >expected && - diff -u expected actual && + test_cmp expected actual && git commit --amend -m "empty really ok" && git diff HEAD^ HEAD >actual && : >expected && - diff -u expected actual + test_cmp expected actual ' @@ -323,7 +323,7 @@ test_expect_success 'amend using the message from another commit' ' git commit --allow-empty --amend -C "$old" && git show --pretty="format:%ad %s" "$old" >expected && git show --pretty="format:%ad %s" HEAD >actual && - diff -u expected actual + test_cmp expected actual ' @@ -341,7 +341,7 @@ test_expect_success 'amend using the message from a commit named with tag' ' git commit --allow-empty --amend -C tagged-old && git show --pretty="format:%ad %s" "$old" >expected && git show --pretty="format:%ad %s" HEAD >actual && - diff -u expected actual + test_cmp expected actual ' diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh index b780fddc08..284c941247 100755 --- a/t/t7502-commit.sh +++ b/t/t7502-commit.sh @@ -85,7 +85,7 @@ test_expect_success 'verbose' ' git add negative && git status -v | sed -ne "/^diff --git /p" >actual && echo "diff --git a/negative b/negative" >expect && - diff -u expect actual + test_cmp expect actual ' @@ -95,7 +95,7 @@ test_expect_success 'cleanup commit messages (verbatim,-t)' ' { echo;echo "# text";echo; } >expect && git commit --cleanup=verbatim -t expect -a && git cat-file -p HEAD |sed -e "1,/^\$/d" |head -n 3 >actual && - diff -u expect actual + test_cmp expect actual ' @@ -104,7 +104,7 @@ test_expect_success 'cleanup commit messages (verbatim,-F)' ' echo >>negative && git commit --cleanup=verbatim -F expect -a && git cat-file -p HEAD |sed -e "1,/^\$/d">actual && - diff -u expect actual + test_cmp expect actual ' @@ -113,7 +113,7 @@ test_expect_success 'cleanup commit messages (verbatim,-m)' ' echo >>negative && git commit --cleanup=verbatim -m "$(cat expect)" -a && git cat-file -p HEAD |sed -e "1,/^\$/d">actual && - diff -u expect actual + test_cmp expect actual ' @@ -124,7 +124,7 @@ test_expect_success 'cleanup commit messages (whitespace,-F)' ' echo "# text" >expect && git commit --cleanup=whitespace -F text -a && git cat-file -p HEAD |sed -e "1,/^\$/d">actual && - diff -u expect actual + test_cmp expect actual ' @@ -135,7 +135,7 @@ test_expect_success 'cleanup commit messages (strip,-F)' ' echo sample >expect && git commit --cleanup=strip -F text -a && git cat-file -p HEAD |sed -e "1,/^\$/d">actual && - diff -u expect actual + test_cmp expect actual ' @@ -150,7 +150,7 @@ test_expect_success 'cleanup commit messages (strip,-F,-e)' ' { echo;echo sample;echo; } >text && git commit -e -F text -a && head -n 4 .git/COMMIT_EDITMSG >actual && - diff -u expect actual + test_cmp expect actual ' diff --git a/t/t7502-status.sh b/t/t7502-status.sh index e00607490b..cd08516e6d 100755 --- a/t/t7502-status.sh +++ b/t/t7502-status.sh @@ -33,7 +33,7 @@ test_expect_success 'setup' ' test_expect_success 'status (1)' ' - grep -e "use \"git rm --cached <file>\.\.\.\" to unstage" output + grep "use \"git rm --cached <file>\.\.\.\" to unstage" output ' @@ -146,7 +146,7 @@ cat <<EOF >expect EOF test_expect_success 'status of partial commit excluding new file in index' ' git status dir1/modified >output && - diff -u expect output + test_cmp expect output ' test_done diff --git a/t/t7505-prepare-commit-msg-hook.sh b/t/t7505-prepare-commit-msg-hook.sh index 7ddec99a64..802aa624d0 100755 --- a/t/t7505-prepare-commit-msg-hook.sh +++ b/t/t7505-prepare-commit-msg-hook.sh @@ -25,8 +25,9 @@ export FAKE_EDITOR HOOKDIR="$(git rev-parse --git-dir)/hooks" HOOK="$HOOKDIR/prepare-commit-msg" mkdir -p "$HOOKDIR" -cat > "$HOOK" <<'EOF' -#!/bin/sh +echo "#!$SHELL_PATH" > "$HOOK" +cat >> "$HOOK" <<'EOF' + if test "$2" = commit; then source=$(git-rev-parse "$3") else diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh index 5d166280cb..56869aceed 100755 --- a/t/t7600-merge.sh +++ b/t/t7600-merge.sh @@ -108,7 +108,7 @@ create_merge_msgs() { } verify_diff() { - if ! diff -u "$1" "$2" + if ! test_cmp "$1" "$2" then echo "$3" false @@ -165,7 +165,7 @@ verify_mergeheads() { fi && while test $# -gt 0 do - head=$(head -n $i .git/MERGE_HEAD | tail -n 1) + head=$(head -n $i .git/MERGE_HEAD | sed -ne \$p) if test "$1" != "$head" then echo "[OOPS] MERGE_HEAD $i != $1" @@ -371,7 +371,7 @@ test_expect_success 'override config option -n' ' git merge --summary c2 >diffstat.txt && verify_merge file result.1-5 msg.1-5 && verify_parents $c1 $c2 && - if ! grep -e "^ file | *2 +-$" diffstat.txt + if ! grep "^ file | *2 +-$" diffstat.txt then echo "[OOPS] diffstat was not generated" fi @@ -386,7 +386,7 @@ test_expect_success 'override config option --summary' ' git merge -n c2 >diffstat.txt && verify_merge file result.1-5 msg.1-5 && verify_parents $c1 $c2 && - if grep -e "^ file | *2 +-$" diffstat.txt + if grep "^ file | *2 +-$" diffstat.txt then echo "[OOPS] diffstat was generated" false diff --git a/t/t8003-blame.sh b/t/t8003-blame.sh index db51b3a6bb..966bb0a61a 100755 --- a/t/t8003-blame.sh +++ b/t/t8003-blame.sh @@ -112,7 +112,7 @@ test_expect_success 'blame wholesale copy' ' echo mouse-Second echo mouse-Third } >expected && - diff -u expected current + test_cmp expected current ' @@ -125,7 +125,7 @@ test_expect_success 'blame wholesale copy and more' ' echo cow-Fifth echo mouse-Third } >expected && - diff -u expected current + test_cmp expected current ' diff --git a/t/t9001-send-email.sh b/t/t9001-send-email.sh index cbbfa9cb49..c0973b4e6e 100755 --- a/t/t9001-send-email.sh +++ b/t/t9001-send-email.sh @@ -81,7 +81,7 @@ test_expect_success 'Show all headers' ' -e "s/^\(Message-Id:\).*/\1 MESSAGE-ID-STRING/" \ -e "s/^\(X-Mailer:\).*/\1 X-MAILER-STRING/" \ >actual-show-all-headers && - diff -u expected-show-all-headers actual-show-all-headers + test_cmp expected-show-all-headers actual-show-all-headers ' z8=zzzzzzzz diff --git a/t/t9112-git-svn-md5less-file.sh b/t/t9112-git-svn-md5less-file.sh index 08313bb545..646a5f0cdb 100755 --- a/t/t9112-git-svn-md5less-file.sh +++ b/t/t9112-git-svn-md5less-file.sh @@ -1,3 +1,5 @@ +#!/bin/sh + test_description='test that git handles an svn repository with missing md5sums' . ./lib-git-svn.sh diff --git a/t/t9116-git-svn-log.sh b/t/t9116-git-svn-log.sh index 902ed4145d..e1e8bdf0e3 100755 --- a/t/t9116-git-svn-log.sh +++ b/t/t9116-git-svn-log.sh @@ -55,74 +55,74 @@ printf 'r1 \nr2 \nr4 \n' > expected-range-r1-r2-r4 test_expect_success 'test ascending revision range' " git reset --hard trunk && - git svn log -r 1:4 | grep '^r[0-9]' | cut -d'|' -f1 | diff -u expected-range-r1-r2-r4 - + git svn log -r 1:4 | grep '^r[0-9]' | cut -d'|' -f1 | test_cmp expected-range-r1-r2-r4 - " printf 'r4 \nr2 \nr1 \n' > expected-range-r4-r2-r1 test_expect_success 'test descending revision range' " git reset --hard trunk && - git svn log -r 4:1 | grep '^r[0-9]' | cut -d'|' -f1 | diff -u expected-range-r4-r2-r1 - + git svn log -r 4:1 | grep '^r[0-9]' | cut -d'|' -f1 | test_cmp expected-range-r4-r2-r1 - " printf 'r1 \nr2 \n' > expected-range-r1-r2 test_expect_success 'test ascending revision range with unreachable revision' " git reset --hard trunk && - git svn log -r 1:3 | grep '^r[0-9]' | cut -d'|' -f1 | diff -u expected-range-r1-r2 - + git svn log -r 1:3 | grep '^r[0-9]' | cut -d'|' -f1 | test_cmp expected-range-r1-r2 - " printf 'r2 \nr1 \n' > expected-range-r2-r1 test_expect_success 'test descending revision range with unreachable revision' " git reset --hard trunk && - git svn log -r 3:1 | grep '^r[0-9]' | cut -d'|' -f1 | diff -u expected-range-r2-r1 - + git svn log -r 3:1 | grep '^r[0-9]' | cut -d'|' -f1 | test_cmp expected-range-r2-r1 - " printf 'r2 \n' > expected-range-r2 test_expect_success 'test ascending revision range with unreachable upper boundary revision and 1 commit' " git reset --hard trunk && - git svn log -r 2:3 | grep '^r[0-9]' | cut -d'|' -f1 | diff -u expected-range-r2 - + git svn log -r 2:3 | grep '^r[0-9]' | cut -d'|' -f1 | test_cmp expected-range-r2 - " test_expect_success 'test descending revision range with unreachable upper boundary revision and 1 commit' " git reset --hard trunk && - git svn log -r 3:2 | grep '^r[0-9]' | cut -d'|' -f1 | diff -u expected-range-r2 - + git svn log -r 3:2 | grep '^r[0-9]' | cut -d'|' -f1 | test_cmp expected-range-r2 - " printf 'r4 \n' > expected-range-r4 test_expect_success 'test ascending revision range with unreachable lower boundary revision and 1 commit' " git reset --hard trunk && - git svn log -r 3:4 | grep '^r[0-9]' | cut -d'|' -f1 | diff -u expected-range-r4 - + git svn log -r 3:4 | grep '^r[0-9]' | cut -d'|' -f1 | test_cmp expected-range-r4 - " test_expect_success 'test descending revision range with unreachable lower boundary revision and 1 commit' " git reset --hard trunk && - git svn log -r 4:3 | grep '^r[0-9]' | cut -d'|' -f1 | diff -u expected-range-r4 - + git svn log -r 4:3 | grep '^r[0-9]' | cut -d'|' -f1 | test_cmp expected-range-r4 - " printf -- '------------------------------------------------------------------------\n' > expected-separator test_expect_success 'test ascending revision range with unreachable boundary revisions and no commits' " git reset --hard trunk && - git svn log -r 5:6 | diff -u expected-separator - + git svn log -r 5:6 | test_cmp expected-separator - " test_expect_success 'test descending revision range with unreachable boundary revisions and no commits' " git reset --hard trunk && - git svn log -r 6:5 | diff -u expected-separator - + git svn log -r 6:5 | test_cmp expected-separator - " test_expect_success 'test ascending revision range with unreachable boundary revisions and 1 commit' " git reset --hard trunk && - git svn log -r 3:5 | grep '^r[0-9]' | cut -d'|' -f1 | diff -u expected-range-r4 - + git svn log -r 3:5 | grep '^r[0-9]' | cut -d'|' -f1 | test_cmp expected-range-r4 - " test_expect_success 'test descending revision range with unreachable boundary revisions and 1 commit' " git reset --hard trunk && - git svn log -r 5:3 | grep '^r[0-9]' | cut -d'|' -f1 | diff -u expected-range-r4 - + git svn log -r 5:3 | grep '^r[0-9]' | cut -d'|' -f1 | test_cmp expected-range-r4 - " test_done diff --git a/t/t9120-git-svn-clone-with-percent-escapes.sh b/t/t9120-git-svn-clone-with-percent-escapes.sh new file mode 100755 index 0000000000..9a4eabe523 --- /dev/null +++ b/t/t9120-git-svn-clone-with-percent-escapes.sh @@ -0,0 +1,31 @@ +#!/bin/sh +# +# Copyright (c) 2008 Kevin Ballard +# + +test_description='git-svn clone with percent escapes' +. ./lib-git-svn.sh + +test_expect_success 'setup svnrepo' " + mkdir project project/trunk project/branches project/tags && + echo foo > project/trunk/foo && + svn import -m '$test_description' project '$svnrepo/pr ject' && + rm -rf project && + start_httpd +" + +if test "$SVN_HTTPD_PORT" = "" +then + test_expect_failure 'test clone with percent escapes - needs SVN_HTTPD_PORT set' 'false' +else + test_expect_success 'test clone with percent escapes' ' + git svn clone "$svnrepo/pr%20ject" clone && + cd clone && + git rev-parse refs/remotes/git-svn && + cd .. + ' +fi + +stop_httpd + +test_done diff --git a/t/t9200-git-cvsexportcommit.sh b/t/t9200-git-cvsexportcommit.sh index 58c59ed5ae..42b144b1b3 100755 --- a/t/t9200-git-cvsexportcommit.sh +++ b/t/t9200-git-cvsexportcommit.sh @@ -37,7 +37,7 @@ check_entries () { else printf '%s\n' "$2" | tr '|' '\012' >expected fi - diff -u expected actual + test_cmp expected actual } test_expect_success \ @@ -257,8 +257,8 @@ test_expect_success '-w option should work with relative GIT_DIR' ' (cd "$GIT_DIR" && GIT_DIR=. git cvsexportcommit -w "$CVSWORK" -c $id && check_entries "$CVSWORK/W" "file1.txt/1.1/|file2.txt/1.1/" && - diff -u "$CVSWORK/W/file1.txt" ../W/file1.txt && - diff -u "$CVSWORK/W/file2.txt" ../W/file2.txt + test_cmp "$CVSWORK/W/file1.txt" ../W/file1.txt && + test_cmp "$CVSWORK/W/file2.txt" ../W/file2.txt ) ' @@ -279,9 +279,9 @@ test_expect_success 'check files before directories' ' git cvsexportcommit -w "$CVSWORK" -c $id && check_entries "$CVSWORK/E" "DS/1.1/|newfile5.txt/1.1/" && check_entries "$CVSWORK" "DS/1.1/|release-notes/1.2/" && - diff -u "$CVSWORK/DS" DS && - diff -u "$CVSWORK/E/DS" E/DS && - diff -u "$CVSWORK/release-notes" release-notes + test_cmp "$CVSWORK/DS" DS && + test_cmp "$CVSWORK/E/DS" E/DS && + test_cmp "$CVSWORK/release-notes" release-notes ' @@ -293,7 +293,7 @@ test_expect_success 'commit a file with leading spaces in the name' ' id=$(git rev-parse HEAD) && git cvsexportcommit -w "$CVSWORK" -c $id && check_entries "$CVSWORK" " space/1.1/|DS/1.1/|release-notes/1.2/" && - diff -u "$CVSWORK/ space" " space" + test_cmp "$CVSWORK/ space" " space" ' diff --git a/t/t9400-git-cvsserver-server.sh b/t/t9400-git-cvsserver-server.sh index 0a20971ebb..b91b151417 100755 --- a/t/t9400-git-cvsserver-server.sh +++ b/t/t9400-git-cvsserver-server.sh @@ -54,7 +54,7 @@ test_expect_success 'setup' ' test_expect_success 'basic checkout' \ 'GIT_CONFIG="$git_config" cvs -Q co -d cvswork master && test "$(echo $(grep -v ^D cvswork/CVS/Entries|cut -d/ -f2,3,5 | head -n 1))" = "empty/1.1/" - test "$(echo $(grep -v ^D cvswork/CVS/Entries|cut -d/ -f2,3,5 | tail -n 1))" = "secondrootfile/1.1/"' + test "$(echo $(grep -v ^D cvswork/CVS/Entries|cut -d/ -f2,3,5 | sed -ne \$p))" = "secondrootfile/1.1/"' #------------------------ # PSERVER AUTHENTICATION @@ -94,7 +94,7 @@ EOF test_expect_success 'pserver authentication' \ 'cat request-anonymous | git-cvsserver pserver >log 2>&1 && - tail -n1 log | grep -q "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU$"' test_expect_success 'pserver authentication failure (non-anonymous user)' \ 'if cat request-git | git-cvsserver pserver >log 2>&1 @@ -103,11 +103,11 @@ test_expect_success 'pserver authentication failure (non-anonymous user)' \ else true fi && - tail -n1 log | grep -q "^I HATE YOU$"' + sed -ne \$p log | grep "^I HATE YOU$"' test_expect_success 'pserver authentication (login)' \ 'cat login-anonymous | git-cvsserver pserver >log 2>&1 && - tail -n1 log | grep -q "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU$"' test_expect_success 'pserver authentication failure (login/non-anonymous user)' \ 'if cat login-git | git-cvsserver pserver >log 2>&1 @@ -116,7 +116,7 @@ test_expect_success 'pserver authentication failure (login/non-anonymous user)' else true fi && - tail -n1 log | grep -q "^I HATE YOU$"' + sed -ne \$p log | grep "^I HATE YOU$"' # misuse pserver authentication for testing of req_Root @@ -146,15 +146,15 @@ test_expect_success 'req_Root failure (relative pathname)' \ else true fi && - tail log | grep -q "^error 1 Root must be an absolute pathname$"' + tail log | grep "^error 1 Root must be an absolute pathname$"' test_expect_success 'req_Root failure (conflicting roots)' \ 'cat request-conflict | git-cvsserver pserver >log 2>&1 && - tail log | grep -q "^error 1 Conflicting roots specified$"' + tail log | grep "^error 1 Conflicting roots specified$"' test_expect_success 'req_Root (strict paths)' \ 'cat request-anonymous | git-cvsserver --strict-paths pserver $SERVERDIR >log 2>&1 && - tail -n1 log | grep -q "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU$"' test_expect_success 'req_Root failure (strict-paths)' ' ! cat request-anonymous | @@ -163,7 +163,7 @@ test_expect_success 'req_Root failure (strict-paths)' ' test_expect_success 'req_Root (w/o strict-paths)' \ 'cat request-anonymous | git-cvsserver pserver $WORKDIR/ >log 2>&1 && - tail -n1 log | grep -q "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU$"' test_expect_success 'req_Root failure (w/o strict-paths)' ' ! cat request-anonymous | @@ -181,7 +181,7 @@ EOF test_expect_success 'req_Root (base-path)' \ 'cat request-base | git-cvsserver --strict-paths --base-path $WORKDIR/ pserver $SERVERDIR >log 2>&1 && - tail -n1 log | grep -q "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU$"' test_expect_success 'req_Root failure (base-path)' ' ! cat request-anonymous | @@ -192,14 +192,14 @@ GIT_DIR="$SERVERDIR" git config --bool gitcvs.enabled false || exit 1 test_expect_success 'req_Root (export-all)' \ 'cat request-anonymous | git-cvsserver --export-all pserver $WORKDIR >log 2>&1 && - tail -n1 log | grep -q "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU$"' test_expect_success 'req_Root failure (export-all w/o whitelist)' \ '! (cat request-anonymous | git-cvsserver --export-all pserver >log 2>&1 || false)' test_expect_success 'req_Root (everything together)' \ 'cat request-base | git-cvsserver --export-all --strict-paths --base-path $WORKDIR/ pserver $SERVERDIR >log 2>&1 && - tail -n1 log | grep -q "^I LOVE YOU$"' + sed -ne \$p log | grep "^I LOVE YOU$"' GIT_DIR="$SERVERDIR" git config --bool gitcvs.enabled true || exit 1 @@ -216,7 +216,7 @@ test_expect_success 'gitcvs.enabled = false' \ else true fi && - cat cvs.log | grep -q "GITCVS emulation disabled" && + grep "GITCVS emulation disabled" cvs.log && test ! -d cvswork2' rm -fr cvswork2 @@ -237,7 +237,7 @@ test_expect_success 'gitcvs.ext.enabled = false' \ else true fi && - cat cvs.log | grep -q "GITCVS emulation disabled" && + grep "GITCVS emulation disabled" cvs.log && test ! -d cvswork2' rm -fr cvswork2 diff --git a/t/test-lib.sh b/t/test-lib.sh index 6aea0ea0a5..870b255f13 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -42,6 +42,7 @@ export GIT_MERGE_VERBOSITY export GIT_AUTHOR_EMAIL GIT_AUTHOR_NAME export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME export EDITOR VISUAL +GIT_TEST_CMP=${GIT_TEST_CMP:-diff -u} # Protect ourselves from common misconfiguration to export # CDPATH into the environment @@ -302,6 +303,23 @@ test_must_fail () { test $? -gt 0 -a $? -le 128 } +# test_cmp is a helper function to compare actual and expected output. +# You can use it like: +# +# test_expect_success 'foo works' ' +# echo expected >expected && +# foo >actual && +# test_cmp expected actual +# ' +# +# This could be written as either "cmp" or "diff -u", but: +# - cmp's output is not nearly as easy to read as diff -u +# - not all diff versions understand "-u" + +test_cmp() { + $GIT_TEST_CMP "$@" +} + # Most tests can use the created repository, but some may need to create more. # Usage: test_create_repo <directory> test_create_repo () { @@ -378,7 +396,12 @@ fi # Test repository test=trash -rm -fr "$test" +rm -fr "$test" || { + trap - exit + echo >&5 "FATAL: Cannot prepare test area" + exit 1 +} + test_create_repo $test cd "$test" diff --git a/test-sha1.sh b/test-sha1.sh index bf526c8f5e..0f0bc5d02f 100755 --- a/test-sha1.sh +++ b/test-sha1.sh @@ -10,7 +10,7 @@ do { test -z "$pfx" || echo "$pfx" dd if=/dev/zero bs=1048576 count=$cnt 2>/dev/null | - tr '\000' 'g' + perl -pe 'y/\000/g/' } | ./test-sha1 $cnt ` if test "$expect" = "$actual" @@ -55,7 +55,7 @@ do { test -z "$pfx" || echo "$pfx" dd if=/dev/zero bs=1048576 count=$cnt 2>/dev/null | - tr '\000' 'g' + perl -pe 'y/\000/g/' } | sha1sum | sed -e 's/ .*//' ` diff --git a/unpack-trees.c b/unpack-trees.c index be89d52e8c..a59f47557a 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -54,13 +54,14 @@ static void unlink_entry(char *name, char *last_symlink) } static struct checkout state; -static void check_updates(struct unpack_trees_options *o) +static int check_updates(struct unpack_trees_options *o) { unsigned cnt = 0, total = 0; struct progress *progress = NULL; char last_symlink[PATH_MAX]; struct index_state *index = &o->result; int i; + int errs = 0; if (o->update && o->verbose_update) { for (total = cnt = 0; cnt < index->cache_nr; cnt++) { @@ -90,12 +91,13 @@ static void check_updates(struct unpack_trees_options *o) if (ce->ce_flags & CE_UPDATE) { ce->ce_flags &= ~CE_UPDATE; if (o->update) { - checkout_entry(ce, &state, NULL); + errs |= checkout_entry(ce, &state, NULL); *last_symlink = '\0'; } } } stop_progress(&progress); + return errs != 0; } static inline int call_unpack_fn(struct cache_entry **src, struct unpack_trees_options *o) @@ -123,7 +125,7 @@ static int unpack_index_entry(struct cache_entry *ce, struct unpack_trees_option int traverse_trees_recursive(int n, unsigned long dirmask, unsigned long df_conflicts, struct name_entry *names, struct traverse_info *info) { int i; - struct tree_desc t[3]; + struct tree_desc t[MAX_UNPACK_TREES]; struct traverse_info newinfo; struct name_entry *p; @@ -327,8 +329,8 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options { static struct cache_entry *dfc; - if (len > 4) - die("unpack_trees takes at most four trees"); + if (len > MAX_UNPACK_TREES) + die("unpack_trees takes at most %d trees", MAX_UNPACK_TREES); memset(&state, 0, sizeof(state)); state.base_dir = ""; state.force = 1; @@ -336,6 +338,8 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options state.refresh_cache = 1; memset(&o->result, 0, sizeof(o->result)); + if (o->src_index) + o->result.timestamp = o->src_index->timestamp; o->merge_size = len; if (!dfc) @@ -367,7 +371,8 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options return unpack_failed(o, "Merge requires file-level merging"); o->src_index = NULL; - check_updates(o); + if (check_updates(o)) + return -1; if (o->dst_index) *o->dst_index = o->result; return 0; @@ -593,16 +598,19 @@ static int verify_absent(struct cache_entry *ce, const char *action, static int merged_entry(struct cache_entry *merge, struct cache_entry *old, struct unpack_trees_options *o) { + int update = CE_UPDATE; + if (old) { /* * See if we can re-use the old CE directly? * That way we get the uptodate stat info. * - * This also removes the UPDATE flag on - * a match. + * This also removes the UPDATE flag on a match; otherwise + * we will end up overwriting local changes in the work tree. */ if (same(old, merge)) { copy_cache_entry(merge, old); + update = 0; } else { if (verify_uptodate(old, o)) return -1; @@ -615,7 +623,7 @@ static int merged_entry(struct cache_entry *merge, struct cache_entry *old, invalidate_ce_path(merge, o); } - add_entry(o, merge, CE_UPDATE, CE_STAGEMASK); + add_entry(o, merge, update, CE_STAGEMASK); return 1; } diff --git a/unpack-trees.h b/unpack-trees.h index e8abbcd037..50453ed20f 100644 --- a/unpack-trees.h +++ b/unpack-trees.h @@ -1,6 +1,8 @@ #ifndef UNPACK_TREES_H #define UNPACK_TREES_H +#define MAX_UNPACK_TREES 8 + struct unpack_trees_options; typedef int (*merge_fn_t)(struct cache_entry **src, diff --git a/wt-status.c b/wt-status.c index 701d13da7c..b3fd57b79d 100644 --- a/wt-status.c +++ b/wt-status.c @@ -269,27 +269,14 @@ static void wt_status_print_untracked(struct wt_status *s) static void wt_status_print_verbose(struct wt_status *s) { struct rev_info rev; - int saved_stdout; - - fflush(s->fp); - - /* Sigh, the entire diff machinery is hardcoded to output to - * stdout. Do the dup-dance...*/ - saved_stdout = dup(STDOUT_FILENO); - if (saved_stdout < 0 ||dup2(fileno(s->fp), STDOUT_FILENO) < 0) - die("couldn't redirect stdout\n"); init_revisions(&rev, NULL); setup_revisions(0, NULL, &rev, s->reference); rev.diffopt.output_format |= DIFF_FORMAT_PATCH; rev.diffopt.detect_rename = 1; + rev.diffopt.file = s->fp; + rev.diffopt.close_file = 0; run_diff_index(&rev, 1); - - fflush(stdout); - - if (dup2(saved_stdout, STDOUT_FILENO) < 0) - die("couldn't restore stdout\n"); - close(saved_stdout); } void wt_status_print(struct wt_status *s) diff --git a/xdiff-interface.c b/xdiff-interface.c index bba236428a..61dc5c5470 100644 --- a/xdiff-interface.c +++ b/xdiff-interface.c @@ -152,8 +152,8 @@ int read_mmfile(mmfile_t *ptr, const char *filename) if ((f = fopen(filename, "rb")) == NULL) return error("Could not open %s", filename); sz = xsize_t(st.st_size); - ptr->ptr = xmalloc(sz); - if (fread(ptr->ptr, sz, 1, f) != 1) + ptr->ptr = xmalloc(sz ? sz : 1); + if (sz && fread(ptr->ptr, sz, 1, f) != 1) return error("Could not read %s", filename); fclose(f); ptr->size = sz; |